Apple IIGS 'Woz' edition - Photo credit: Tony Diaz
THE APPLE II EVOLVES
While the capabilities of the Apple II 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, which 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-Apple II computer world had developed and advanced, and Apple grudgingly allowed the Apple II to make its small, incremental advances. Occasionally, efforts were made within Apple to make a more powerful Apple II, 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 Apple III, then Lisa, and finally Macintosh swallowed the research and development dollars that Apple’s cash cow, the Apple II, 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 Apple II could make use of more memory only through complicated switching schemes (switching between separate 64K banks). Although “Mac-envy” hit many Apple II 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 Apple II 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”  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 Apple II division was housed and asked for something to do.
THE APPLE IIX
When Wozniak returned, he discovered the latest of the Apple II modernization projects, which was code-named “IIx”. When he saw what the 65816 could do, he became excited about the potential of the new Apple II 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.
The motherboard had the usual eight slots of an Apple IIe, with two auxiliary slots. One of these was lined up with slot 0; the other was closer to the power supply land was called slot “-1”. By the time it got to this point in the design process, it had developed code-names of “Brooklyn” and “Golden Gate”; it even had a “GG” show up at the top of the screen where “Apple” would usually show up when it was powered on. The thinking was to use the slot “-1” for a co-processor card, to allow the IIx to easily do what third-party companies had done for the original Apple II with their Z-80 boards (which allowed execution of CP/M software). Other co-processor cards that were considered included a Motorola 68000 card (the same processor used in the Macintosh), or an Intel 8088 (such as what was used in the IBM PC). With the 68000 processor, the plan was to create a Unix-like operating system, non-GUI, capable of multi-threaded processes.
As with other projects at Apple at this time, there were people who liked designing boxes that would do neat things, but did not have a unified focus from above to pull things together. The marketing department jumped on the concept of a co-processor, and the idea came up that with the 68000 this could possibly run Macintosh software also. The IIx project got so bogged down in trying to become other computers, they forgot it was supposed to be an advanced Apple II. 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.,  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 1984, some of the Apple II engineers were assigned the task of reducing the cost of the Apple II. Engineers Dan Hillman and Jay Rickard managed to put almost the entire Apple II circuitry onto a single chip they called the Mega II. Meanwhile, after the “Apple II Forever” event that introduced the IIc, interest in the Apple II 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 Apple II, possibly utilizing the Mega II chip. By late summer 1984 it was revived with the code name “Phoenix” (rising from the ashes of the IIx project). 
GOALS OF THE DEVELOPMENT TEAM
The people involved in the Phoenix project were very knowledgeable about the Apple II, from the days of the original Apple II through the Apple IIc. They knew what they wanted in a new computer. It should primarily be an Apple II, not just something new that tried to be all things to all people.  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 Apple II as it exists today. It had to work with Apple IIe software and Apple IIc software. That was goal number 1. But we recognized that the Apple II 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 “Apple IIGS“. 
Having learned from their experience in building the Apple IIe and IIc, they knew what would make the new 16-bit Apple II more powerful. The Apple IIc was easy to use because the most commonly needed peripherals were already built-in. The Apple IIe, 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 Apple IIGS to be easy to set up, like the IIc, and easy to expand, like the IIe.” 
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 Apple II models. This included the memory allocation for the odd addressing schemes used in the text and graphics modes, 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 Apple II models. 
One area they decided to focus on was bringing the quality of graphics on the new Apple II 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. 
As mentioned above, the text and graphics addressing on the old Apple II 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 were 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 for the shipping IIGS to be 256K, 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 to make it appear as a single continuous 32K block of memory, as far as the graphics programmer was concerned. 
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 exceeded even the Macintosh, which at that time was still limited to a black and white screen.
The second major area of focus for enhancements over the old Apple II 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.” 
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 65816 was designed to be able to address up to 16 MB of memory. The IIGS, however, was built to support only 8 MB of RAM, and up to 1 MB of ROM (in high memory). Memory cards built by third-party companies could potentially add up to 12 MB of RAM, but the memory manager in the IIGS ROM was only aware of the first 8 MB. A special software patch would be needed to allow the system to use memory beyond that point. Such a patch was mentioned in publications back when the IIGS was new, but apparently was not reliable or possible, as no large 12 MB RAM card ever appeared. When they became affordable, 4 and 8 MB memory expansion cards were commonly sold to increase power for this computer.
Building on the traditional memory organization from the 6502 days, memory in the IIGS was usually referred to in banks, from $00 through $FF. Each bank referred to a 64K chunk of memory. The lowest bank, $00, was identical to the 64K memory space in the original Apple II. The next bank, $01, was the same as the auxiliary memory bank used in the Apple IIe and IIc. (Additionally, the super hi-res graphics display was found in 32K of the memory in bank $01, 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 would be 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. Apple never chose to directly support RAM cards with more than 4 MB.
Banks $E0 and $E1 were a special part of RAM that was used to duplicate (or “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 Apple II 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. 
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). 
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.