Apple II History Part 10: The Apple IIGS
Compiled and written by Steven Weyhrich
(C) Copyright 1991, Zonker Software
(PART 10 -- THE APPLE IIGS) [v1.0 :: 06 Dec 91]
THE APPLE II EVOLVES
While the capabilities of the AppleII slowly advanced as it changed from the II up through the IIc, the one thing that remained essentially unchanged was the 6502 microprocessor that controlled it. Even though the 65c02 had more commands than the 6502, as an 8-bit processor it was inherently limited to directly addressing no more than 64K of memory at one time. (As an 8-bit processor, the 6502 could handle only 8 bits, or one byte at a time. However, its address bus was 16 bits wide, which made for a maximum address of 1111 1111 1111 1111 in binary, $FFFF in hexadecimal, or 65535 in decimal. If you divide 65536 bytes by 1024 bytes per "K", you get 64K as the largest memory size). When Wozniak designed it, 64K was considered to be a massive amount of memory, even for some mainframe computers. (For example, the old mainframe on which I learned programming during college back in 1975 was a ten-year-old IBM 1130 with 8K of memory; this was used for both the operating system AND user programs!) Most hackers of the time would not have known what to DO with four megabytes of memory, even if it had been possible (or affordable) to install that much. Consequently, programs of the day were compact, efficient, and primarily text-based.
The non-AppleII computer world had developed and advanced, and Apple grudgingly allowed the AppleII to make its small, incremental advances. Occasionally, efforts were made within Apple to make a more powerful AppleII, but the lure of "better" computers always turned the attention of management away from allowing such a project to actually make any progress. First the AppleIII, then Lisa, and finally Macintosh swallowed the research and development dollars that Apple's cash cow, the AppleII, continued to produce. The latter two computers were based around the 16-bit Motorola 68000 microprocessor, which had the capability to address far more than 64K of memory. The AppleII could make use of more memory only through complicated switching schemes (switching between separate 64K banks). Although "Mac-envy" hit many AppleII enthusiasts both inside and outside of Apple, causing them to move away from the II, there were still many others who continued to press for more power from the II.
Eventually, a company called Western Design Center revealed plans to produce a new microprocessor called the 65816. This chip would have all of the assembly language opcodes (commands) of the 65c02 through an "emulation" mode. However, it would be a true 16-bit processor, with the ability handle 16 bits (two bytes) at a time and to address larger amounts of continuous memory. The address bus was enlarged from 16 to 24 bits, making the 65816 capable of addressing 256 times more memory, or 16 megabytes. The power to make a better AppleII was finally available.
THE RETURN OF WOZNIAK
Back in early 1981, Steve Wozniak was involved with several projects at Apple. He had helped write some fast math routines for a spreadsheet product that Apple had planned to release in competition with Visicalc. Also, Steve Jobs had managed to convince Wozniak to participate with his fledgling Macintosh project. Then, in early February, Wozniak's private plane crashed. He was injured with a concussion that temporarily made it impossible to form new memories. He could not recall that he had an accident; he did not remember playing games with his computer in the hospital; he did not remember who visited him earlier in the day. When he finally did recover from the concussion, he decided it was time to take a leave of absence from Apple. Wozniak married, and returned to college at Berkley under the name "Rocky Clark" (a combination of his dog's name and his wife's maiden name). He decided he wanted to finally graduate, and get his degree in electrical engineering and computer science. When he was done with that, he formed a corporation called "UNUSON" (which stood for "Unite Us In Song") to produce educational computer materials, wanting to make computers easier for students to use. He also decided use UNUSON to sponsor a couple of rock music events, and called them the "US Festival".<1> Held on Labor Day weekend in 1982 and 1983, these music and technology extravaganzas were invigorating for Wozniak, but he lost a bundle of money on both occasions. Though nowhere near drying up the value of his Apple Computer stock, he decided that he was ready to return to work. In June of 1983, Wozniak entered the building on the Apple campus where the AppleII division was housed and asked for something to do.
THE APPLE IIX
When Wozniak returned, he discovered the latest of the AppleII modernization projects, which was code-named "IIx". When he saw what the 65816 could do, he became excited about the potential of the new AppleII and immediately got involved. It was a tremendous boost in morale for the division to have their founder return to work. However, the IIx project was plagued by several problems. Western Design Center was late in delivering samples of the 65816 processor. First promised for November 1983, they finally arrived in February 1984--and didn't work. The second set that came three weeks later also failed.
Other problems came out of the engineering mindset that still existed at Apple at the time. Recall that people there liked designing boxes that would do neat things, but there was not enough of a unified focus from above to pull things together. The marketing department wanted the IIx to have a co-processor slot to allow it to run different microprocessors. The code name of the project by this time was "Brooklyn" and "Golden Gate" (referring to the ability to make it a bridge between the AppleII and Macintosh). The co-processor slot could allow the IIx to easily do what third party companies had done for the original AppleII with their Z-80 boards (which allowed them to run CP/M software). Co-processor boards considered were ones for the Motorola 68000 (the chip used in the Macintosh), and the Intel 8088 (used in the IBM PC). The IIx project got so bogged down in trying to become other computers, they forgot it was supposed to be an advanced AppleII. Politically it also had problems at Apple, because it was being aimed as a high-end business machine, which was where they wanted the Macintosh to go.<2>,<3> Wozniak lost interest as things ran slower and slower, and eventually the project was dropped.
THE 16-BIT APPLE II RETURNS
When the IIx project was cancelled in March 1983, some of the AppleII engineers were assigned the task of reducing the cost of the AppleII. Engineers Dan Hillman and Jay Rickard managed to put almost the entire AppleII circuitry onto a single chip they called the MegaII. Meanwhile, after the "AppleII Forever" event that introduced the IIc, interest in the AppleII revived and sales were quite good. Management saw that sales of the open IIe were better than the sales of the closed IIc, so they were agreeable to the idea of another try at the 16-bit AppleII, possibly utilizing the MegaII chip. By late summer 1984 it was revived with the code name "Phoenix" (rising from the ashes of the IIx project).<3>
THE APPLE IIGS: GOALS OF THE DEVELOPMENT TEAM
The people involved in the Phoenix project were very knowledgeable about the AppleII, from the days of the ][ through the //c. They knew what THEY wanted in a new computer. It should primarily be an AppleII, not just something NEW that tried to be all things to all people.<4> Dan Hillman, who had also been involved as the engineering manager for the IIx project, stated in an interview, "Our mission was very simple. First we wanted to preserve the AppleII as it exists today. It had to work with AppleIIe software and AppleIIc software. That was goal number 1. But we recognized that the AppleII was an old computer. It had limitations. The new machine needed to address those limitations, break through those barriers--and the barriers were very obvious: We needed to increase the memory size. We had to make it run faster. We needed better graphics. And we had to have better sound. That was our mission." Since advanced graphics and sound were what would make this new Apple really shine, the name eventually assigned to the final product was "AppleIIGS".<3>
Having learned from their experience in building the AppleIIe and IIc, they knew what would make the new 16-bit AppleII more powerful. The AppleIIc was easy to use because the most commonly needed peripherals were already built-in. The AppleIIe, however, excelled in its ability to be easily expanded (via the slots) to do things that were NOT commonly needed or built-in. Harvey Lehtman, system software manager for the project, stated, "We... wanted the AppleIIGS to be easy to set up, like the IIc, and easy to expand, like the IIe."<3>
THE APPLE IIGS: ARCHITECTURE
Wozniak was quite involved in designing the general layout of the IIGS. Insisting on keeping it simple, he recommended AGAINST a built-in co-processor (as they tried to do with the IIx). He also wanted to keep the 8-bit part of the machine separate from the 16-bit part. To accomplish this, he and the other engineers decided to design it so the memory in the lower 128K of the machine was "slow RAM", which made it possible for it to function just as it did on the older AppleII's. This included the memory allocation for the odd addressing schemes used in the text and graphics modes and (which made sense in 1976, but not in 1986). The rest of the available memory space would be fast, and could be expanded to as much as 16 megabytes. With a faster microprocessor, it would also be possible to run programs more quickly than on the older AppleII's.<3>
THE APPLE IIGS: GRAPHICS
One area they decided to focus on was bringing the quality of graphics on the new AppleII up to modern standards. Rob Moore, the Phoenix project hardware group manager, helped define the new graphics modes of the IIGS. Because a change that increased the vertical resolution from 200 dots to 400 dots would make the computer too expensive (it would require a special slow-phosphor monitor), they purposely decided not to go in that direction. Instead, they increased the horizontal resolution, and created two new graphics modes (called "super hi-res"); one was 320 x 200 and the other was 640 x 200. This decision also made it easier to keep compatibility with older graphics modes.<3>
As mentioned above, the text and graphics addressing on the old AppleII was odd, from a programming standpoint. When Wozniak originally designed the II, he made the memory allocation for text and graphics to be "non-linear", since this saved several hardware chips and made it less expensive to build. This meant that calculating the memory address of a specific dot on the hi-res graphics screen or a character on the text screen was not as simple as most programmers wanted. The hi-res screen began at $2000 in memory, and the first line on the hi-res screen (line 0) started at that address. Each line on the hi-res screen was made up of 40 bytes of 8 bits each, and seven bits of each byte represented a dot or pixel on the screen, giving a possible 280 dots horizontally. Since 40 bytes is $28 in hex, line 0 then ran from $2000 to $2027 in memory. However, the second line (line 1) of the hi-res screen did NOT start at $2028 as one would expect, but at $2080. The hi-res screen line represented by memory locations $2028 to $204F was line 8, and $2050 to $2077 was line 16. The last eight bytes of this 128 byte section of memory was unused. The next 128 bytes were allocated to screen lines 1, 9, and 17, and so on.
Because this complicated things considerably for programmers, the design team for the IIGS wanted linear addressing, which would allow the memory addresses of line 0 to be followed by the addresses for line 1, and so on. Because the graphics resolution and range of available colors planned was much greater than either of the older graphics modes (hi-res or double hi-res), they needed 32K of continuous memory to use. Because they planned on a minimum memory configuration of 256K for the IIGS as it would be shipped, they could not come up with that much memory in one single block. Engineer Larry Thompson designed a special Video Graphics Controller (VGC) to solve the problem. The chip combined two separate 16K blocks of memory and make it appear as a single continuous 32K block of memory, as far as the graphics programmer was concerned.<3>
The new super hi-res graphics modes also gave far more color choices than either the old hi-res mode (which had six unique colors) or even the double hi-res mode (which had sixteen colors). In the 320 x 200 super hi-res mode, each line could have sixteen colors out of a possible 4,096, and in the 640 x 200 mode, each line could have four colors out of 4,096. This gave graphics power that was not even available on a Macintosh (which was still black and white at the time).
THE APPLE IIGS: SOUND
The second major area of focus for enhancements over the old AppleII was sound reproduction. The original sound chip that had been proposed for the IIGS would have given it the sound quality of a typical arcade game. However, this was no better than what other computers in 1986 could do. Rob Moore suggested using a sound chip made by Ensoniq, one that was used in the Mirage music synthesizer. He had to push hard to get this included in the final design, but was able to convince management of its importance because he told them it would be "enabling technology" (borrowing a phrase from a Macintosh marketing book). He told them "it would enable people to do things they'd never dreamed of doing."<3>
The Ensoniq chip was capable of synthesizing FIFTEEN simultaneous musical voices. To help it in doing such complex sound reproduction, they gave the chip a separate 64K block of RAM memory dedicated specifically for that purpose.
THE APPLE IIGS: MEMORY
The 65816 is designed to address up to 16 MB of memory. The IIGS, however, was designed to support only 8 MB of RAM, and up to 1 MB of ROM (in high memory). With cards specially designed by third-party companies, up to 12 MB of RAM could be added, but the memory manager in ROM was only aware of the first 8 MB. A special patch was needed to allow the system to use memory beyond that point.
Building on the traditional memory organization from 6502 days, memory in the IIGS was usually referred to in banks, from $00 through $FF. Each bank refers to a 64K chunk of memory. The lowest bank, $00, was identical to the 64K memory space in the original AppleII. The next bank, $01, was the same as the auxiliary memory bank used on the AppleIIe and IIc. (Additionally, the super hi-res graphics display was found in 32K of the memory in bank $00, from $2000 to $9FFF). The banks from $02-$7F were also for RAM storage, and covered things up to the 8 MB limit. Banks $80-$DF could be used for another 4.25 MB of RAM, but as mentioned above they were unusable (without a patch) because the memory manager didn't know how to access it.
The memory expansion slot designed for the IIGS only had two lines to decode addresses. This allowed for direct access to each of four 256K RAM chips, or four 1 MB RAM chips. In order to make use of the next 4 MB of RAM some special logic was needed to find and use it. RAM cards with more than 4 MB were never directly supported by Apple.<5>
Banks $E0 and $E1 were a special part of RAM that was used to duplicate ("shadow") banks $00 and $01. This RAM was designed as "slow" RAM, and would better be able to run some of the older 8-bit AppleII software. When shadowing was active, anything a program did to addresses in banks $00 and $01 was duplicated in banks $E0 and $E1. Although it appeared to a program that it was running in the lower two banks, it was really running in the slow RAM in banks $E0 and $E1.<6>
Banks $E2-$EF were undefined. The last one MB from $F0-$FF was allocated to ROM. The lower 512K (banks $F0-$F7) were set aside for a ROMdisk. (A ROMdisk is just like a RAMdisk, except it will not lose its contents when power is turned off). For a ROMdisk to be installed, a device driver for the disk had to be located at the beginning of bank $F0 (at address $F0/0000), and the driver had to start with the phrase "ROMDISK". The most common way this was used by third-party hardware providers was to take some of the GS memory, protect it with a battery (so its contents didn't disappear when the computer was turned off), and designate it properly to the IIGS as a ROMdisk (even though it was simply protected RAM, and not true ROM).<7>
The rest of the space from $F8-$FF was reserved for system ROM. The original IIGS had ROM code only from $FE-$FF, while later versions expanded this space to include $FC and $FD.
NEXT INSTALLMENT: The Apple IIGS, cont.
NOTES
<1> Miller, Jonathan. "The Life And Times Of Rocky Clark", SOFTALK, June 1982, pp. 141-144.
<2> Pinella, Paul. "In The Beginning: An Interview With Harvey Lehtman", APPLE IIGS: GRAPHICS AND SOUND, Fall/Winter 1986, pp. 38-44.
<3> Duprau, Jeanne, and Tyson, Molly. "The Making Of The Apple IIGS", A+ MAGAZINE, Nov 1986, pp. 57-74.
<4> Hogan, Thom. "Apple: The First Ten Years", A+ MAGAZINE, Jan 1987, p. 45.
<5> Regan, Joe. A2PRO ROUNDTABLE, Oct 1991, Category 16, Topic 2.
<6> Williams, Gregg. "The Apple IIGS", BYTE, Oct 1986, pp. 84-98.
<7> Nolan, Sean. "GS Memory Cards Compared", CALL-A.P.P.L.E., Aug 1987, pp. 10-17.