Apple II Technical Notes _____________________________________________________________________________ Developer Technical Support Apple IIc #5: Memory Expansion on the Apple IIc Revised by: Matt Deatherage November 1988 Written by: Cameron Birse October 1986 This Technical Note describes some important differences in the "memory- expandable" Apple IIc which you should take into account to ensure compatibility. _____________________________________________________________________________ Beginning with the third Apple IIc, which was announced in September 1986, all new IIc models differ significantly from their predecessors. The most notable of these differences is the addition of a memory expansion capability. The memory expansion card for the IIc is functionally identical to the card for the IIe, but the IIc card "lives" in slot 4 and the firmware is included in the ROM on the IIc motherboard. This architecture means that you cannot depend upon the firmware ID bytes to tell if a card is installed, since unlike other "peripheral cards" in the IIc, the memory expansion card is not necessarily present. For this particular case, you need to interrogate the card and see how many blocks of memory are available. If there are no available blocks, there is no card. SmartPort Do a STATUS call with a statcode = $03 to get the Device Information Block (DIB). This call returns a value of $000000 in the device size fields if there is no RAM card. In version 3 of the IIc ROM, the value resulting from a status call to device 0 implies that there is always a real card connected; the ROM version 4 returns device connected only when there is RAM card present. ProDOS When you do an ON_LINE call to the ProDOS MLI and there is no RAM on the Memory Expansion Card, you get an error $2D. This error is not a ProDOS error, rather it is a SmartPort error. The error is BADBLOCK, and basically tells you that the block requested was not available. If you try to catalog the RAM disk from BASIC, you will get a PATH NOT FOUND error. Pascal Formatting the RAM disk (unit #9) with no memory on the card returns no error. Doing a UnitStatus call will return zero blocks available, and trying to read the volume directory will result in an IORESULT of 8, which means no room is available on the volume. Doing the V(ols command from the F(iler will result in a and # of blocks = 0. DOS 3.3 If there is no memory on the card and you initialize it with an IN#4 (which returns a slash, appearing to have successfully initialized the RAM disk), you will get an I/O error (ONERR code = 8) if you try to read from or write to the RAM disk. Important: Another significant ramification of the memory expansion capability is that the mouse firmware has been moved to slot 7. This change means that programs should scan the slots just as they would on a IIe to find what peripherals are installed. Since most programs have a scan routine in them for the IIe, it should be a relatively minor change to call this routine for whatever machine you are on. In fact, we strongly recommend that programs always scan the slots for peripheral devices regardless of the machine on which they are running. The firmware ID bytes for this version of the machine are: Original Expandable IIc $FBB3--$06 $FBC0--$00 $FBBF--$03 Revised Expandable IIc $FBB3--$06 $FBC0--$00 $FBBF--$04 Apple IIc Plus $FBB3--$06 $FBC0--$00 $FBBF--$05 Further Reference o Apple IIc Technical Note #6, Buffering Blues o Apple IIc Technical Note #7, Existing Versions o Apple II Miscellaneous Technical Note #2, Apple II Family Identification Routines 2.1 o Apple II Miscellaneous Technical Note #7, Apple II Family Identification o Apple II Miscellaneous Technical Note #8, Pascal 1.1 Firmware Protocol ID Bytes