Apple IIGS ROM 00, Woz Limited Edition – technical note on ROM differences

Apple IIGS ROM 00, Woz Limited Edition – technical note on ROM differences

Last week I picked up an Apple IIGS, Woz Limited Edition.  As I am completley new to the Apple IIgs, I couldn’t tell a friend what ROM revision it was.  We found it was a ’00’ which is a true original IIgs with revisions taking us through ROM 0, 1 and 3.

Below is a compilation of information on the differences between each ROM in a simple FAQ style section and then the original techinical note from Apple.

Source: http://mirrors.apple2.org.za/ground.icaen.uiowa.edu/MiscInfo/Empson/gsrom00v01

Paul W. Good <good@primus.ca> wrote:

> What differences are there in the IIGS ROM0 and ROM1 machines?
> 
>      1.  In the ROMs themselves?

Lots of little odds and ends.

The main difference is that ROM 01 has newer versions of the low-level
toolsets (version 2.0 of toolsets 1 through 13, instead of version 1.0),
incorporating a lot of bug fixes.  The majority of these are also fixed
on a ROM 00 machine by running new enough system software (System 2.0 or
later), because the system software loads the patches into RAM at
startup time.

If you are running old system software, the main benefit of ROM 01 is
that it will free up some RAM that would otherwise be occupied by these
patches, and the same bugs are fixed if you run System 1.0 or 1.1 on a
ROM 01.

There is a technical note (TN.IIGS.026) which summarises the changes in
ROM 01 (which it confusingly calls "ROM 2.0").  Apart from toolbox
changes, the other significant ones I can spot from a quick glance
include:

- Detection of disk changes in the Apple 3.5 Drive works correctly.
- AppleTalk bug fixes.
- Applesoft handles horizontal tabbing correctly in 80-column mode.
- Maximum RAM disk size increased to almost 8 MB (instead of 4 MB).
- Interrupt handler bug fixes.
- New monitor command (#) to enable some debugging desk accessories.
- New monitor command (Ctrl-N) to set native mode.
- Serial firmware bug fixes and improvements.
- SmartPort (slot 5) firmware has some bug fixes and better performance.

The most significant difference between ROM 00 and 01 is the fact that
System 4.0 and later (all system software based on GS/OS) will not run
on ROM 00 - it requires ROM 01 (or ROM 3, which has a different
motherboard).

You may run into some old software which only works on ROM 00, because
the software broke the rules about how to use the firmware, or relied on
old bugs which were fixed.

>      2.  In the motherboards?

No difference at all.  All that changed was the ROM chip itself.

There is one point worth mentioning here: early IIgs machines also had a
faulty Video Graphics Controller chip, which could also be upgraded for
free at the same time as the ROM 01 upgrade.

The symptom of the VGC fault was that monochrome double hi-res graphics
mode produced pink fringing effects (it should have been pure black and
white) and/or flickering pixels.  Some machines (including mine)
exhibited the same symptoms in 80-column text mode, with variable
effects depending on the foreground and background colours.

> The location of a file on the Internet describing the differences
> would be great.

If you can find an archive of the Apple II technical notes out there,
have a look for TN.IIGS.026 (in the IIGS folder).  (I have no idea
whether anyone has them online - I have the full set on my Mac's hard
drive, and I only ever accessed them on Apple's FTP site, but they
removed them several years ago.)


If you got your version numbers muddled up and were actually wondering
about the differences between ROM 01 and ROM 3, then that is a different
kettle of fish.  There have been discussions posted here on the subject
in the past, and I could dig through my archives to find one of my
earlier postings.



Apple II Technical Notes

Apple IIGS

Developer Technical Support

#26: ROM Revision Summary

Revised by: Matt Deatherage September 1989 Written by: Rilla Reynolds October 1987

This Technical Note summarizes revisions to the Apple IIGS ROM.

Changes since November 1988: Revised to cover ROM 3.

Apple currently supports two configurations of the Apple IIGS ROM, ROM 1 and ROM

3. In August 1989, Apple IIGS computers began shipping with a 256K ROM, referred to as version 3 or ROM 3 (ROM 2 was skipped since there was already enough confusion about the first version, ROM 0, and the second version, ROM 1). System Software continues to support ROM 1, but it no longer supports ROM 0. Authorized Apple dealers can upgrade older systems (i.e., machines with serial numbers lower than E704…) to ROM 1 upon request.

ROM 1 requires System Software 2.0 or later, while ROM 3 requires System Software

5.0 or later. Although applications may work using older system software releases, they may not function properly due to the coordination of system software and ROM revisions.

Changes from ROM 0 to ROM 1

ADB

  • Absolute ADB devices are now supported correctly.
  • ADB fatal system error code is now $0911 instead of $0400.
  • ADBReset routine now delays about 160 microseconds before reading the buttons.

  • ADBStatus TRUE is now $FFFF instead of $0001.

  • All ADB error codes now include the tool number.
  • SRQrmv no longer crashes when you make the call with a command pending.

    AppleDisk 3.5

  • AppleDisk 3.5 Macintosh block reads and writes now work as documented.
  • Extended status call now returns bit 0 = 1 if AppleDisk 3.5 media has been switched since the last READ, WRITE, or FORMAT.
  • New AppleDisk 3.5 status calls have been implemented to get internal variable and work buffer starting addresses.

    AppleTalk

  • Link Access Protocol (LAP) inter-packet gap now handles added SCC delay.
  • Name Binding Protocol (NBP) now considers uppercase and lowercase characters identical.
  • A nonexistent protocol no longer hangs the dispatcher.

    Desk Manager

  • SaveScreen and RestoreScreen now work.

    Event Manager

  • Now auto-key events are not posted in the queue unless the queue is empty.
  • EMStartUp and EMShutDown code has been optimized.

  • Event Manager now returns an error instead of crashing when there is an attempt to post an invalid event.

    Integer Math

    New Changes:

  • Optimized the multiply routine.

    RAM patches moved to ROM:

  • Changes to FixMul, FixRatio, and SDivide.
  • SDivide recovers from a divide by zero operation.

  • New calls: FracMul, FixDiv, FracDiv, FixRound, FracSqrt, FracCos, FracSin, FixATan2, HiWord, LoWord, Long2Fix, Fix2Long, Fix2Frac, Frac2Fix, Fix2X, Frac2X, X2Fix, X2Frac.

    Memory Manager

  • Optimized Purge and Compact for banks 0 and 1 and moved from RAM to ROM.
  • RAM patches and enhancements moved to ROM.
  • RAMdisk now returns bytes transferred count on DIB call.
  • SetHandleSize makes a handle temporarily unpurgeable while changing handle size.

    Miscellaneous Tools

    RAM patches and enhancements moved to ROM:

  • AbsClamp fixes.

  • Battery RAM routines work if data bank is set to a bank other than bank data is in.
  • Firmware entry calls now return processor status in high byte instead of low byte.
  • GetAddr with ref number $000E returns SerFlag address for SCC interrupts (useful if not using serial firmware).

  • ID manager can reuse discarded IDs.
  • Keyboard interrupts now enable VBL interrupts.
  • Munger now works with 1-char strings and returns with A=0.

  • New SysBeep call.
  • PackBytes and UnpackBytes return with A=0.

  • ReadBParam and ReadBRAM error codes corrected.

  • WriteBParam and WriteBRAM do not return error codes (this is a documentation change).

  • WriteTimeHex Bad Parameter error code is now $0301.

    Monitor

  • 80-column screens maintained if break occurs and Pascal protocol in effect.
  • AppleSoft tabbing in 80-column mode now works correctly.
  • Control Panel’s Maximum RAM Disk Size increased to 8128K instead of 4096K.
  • Firmware version number returned is $1 instead of $0.
  • Interrupts now disabled during paddle read routines.
  • Interrupts re-enabled after fatal system error (for debug DAs).
  • Mouse clamps with positive minimum and negative maximum works (e.g., $6000 min,$8000 max).
  • New monitor command, pound sign (#), installs monitor entry and memory peeker classic desk accessories (unless already installed), accessible via the Control Panel. Reinstalled automatically on reset; disabled by power off only.
  • New monitor command, Control-N, clears m, e, and x bits for native mode. (Control-R still switches to 8-bit, emulation mode.)
  • RESET entry point at $00FA62 sets state register to $0C and shadow register to $08.

  • Shadowing of the Super Hi-Res area in Bank 1 is no longer enabled automatically.
  • WAIT routine now always exits with C=1.

    QuickDraw II

    RAM patches and enhancements moved to ROM:

  • 640-mode pen masks now work when portRect origin not a multiple of 8.
  • Arcs, ovals, and round rects can be drawn across bank boundaries.
  • Changes to round drawing routines: PPToPort, GetFontLore, GetROMFont, and

    InflateTextBuffer.

  • Current bank bytes 100…106 no longer modified by scaling and mapping calls.
  • FontFlags 1 and 2 added for pen width and color control.

  • FramePoly returns with A=0.

  • GetPort returns all four bytes of GrafPort.

  • HideCursor and ShowCursor work correctly with obscured cursor.

  • MapRgn now works on rectangular regions.

  • Pixel painting routines support QuickDraw Auxiliary Tool Set stretching and shrinking.
  • PPToPort now clips correctly to the current portRect.

  • QDStartUp and QDShutDown save and restore the scan line interrupt vector.

  • RectInRgn bug fixed.

  • ScrollRect works when the ClipRgn and VisRgn are not rectangular.

  • SetSysFont works.

  • StdPixels now returns with A=0 if the pen is not visible.

  • Text underline bug fixed.
  • TextBounds works.

    New QuickDraw changes:

  • Busy flag now maintained correctly by ClosePort, OffsetRgn, InsetRgn, KillPoly, FillRect, FrameOval, PaintOval, EraseOval, InvertOval, FillOval, FrameArc, PaintArc, EraseArc, InvertArc, FillArc, FrameRRect, PaintRRect, EraseRRect, InvertRRect, and FillRRect.
  • Cursor appears in correct Super Hi-Res mode as determined by the low byte’s bit 7(320/640) of the MasterSCB.

    SANE

  • Elems now can be called from any part of memory.

  • HALT exception jumping through the incorrect vector fixed.

  • Integer overflow during conversion reported.
  • STATUS call moved to ROM.

    Scheduler

  • Scheduler now accepts a flush function call.
  • Task-handling RAM patch (on System Disk 1.0 and later) moved to ROM.

    Serial I/O

  • First character after an XON is no longer trashed when buffering is not enabled.
  • If serial mode bit 17 = 1, parity and framing error suppression are defeated.
  • Parity, baud, and data format commands work with buffering.
  • STATUS call will not report that a character is ready if the character arrives with a parity or framing error.

  • STATUS call works correctly with XON/XOFF protocol.

    SmartPort

  • PR#5, following a PR#5 with I/O error (i.e., no disk in drive), now boots as expected.

  • SmartPort manipulates only Slot 6 motor on detect so the IWM can run in fast mode.

    Sound

  • Fixed bug in FFStopSound call.
  • Fixed low-level RAM read/write bug.
  • Interrupts are disabled when the internal bell is active.
  • Interrupts no longer need to be disabled when accessing sound RAM.
  • New sound diagnostics with the following error codes: $0C001 = failed RAM data test,$0C002 = RAM address test, $0C003 = register data test, and $0C004 = control register test.
  • Sound Manager RAM patches and enhancements moved to ROM.

    Text Tools

    RAM patches moved to ROM:

  • RAM patches moved to ROM for Writing and ErrorWriting routines.
  • TextInit Illegal device error now is in 16-bit mode instead of 8.

    Tool Locator

  • Optimized tool dispatcher.
  • ROM tools present on a memory expansion card are installed.

    Changes from ROM 1 to ROM 3

    ROM 3 is 256K (double the size of ROM 1) and contains several tools which do not exist in ROM 1. The patch file TS3 fixes known bugs in ROM 3 which were discovered after it was frozen. ROM 3 tools are basically System Software 5.0 tools, and the System Software 5.0 documentation covers these tools in detail. This Note only documents non- tool changes.

    AppleDisk 3.5 and SmartPort

  • Use new routines for all block reads to fast RAM to eliminate double buffering.
  • The extended DIB status call returns the device subtype byte $C1.
  • Fixed anomalies described in SmartPort Technical Note #6, Apple IIGS SmartPort Errata.
  • Fixed a ROM 1 bug that caused Write Protected to be returned with higher priority than Device Offline for the ProDOS STATUS call.

    AppleTalk

  • AppleTalk moved to slots 1 and 2 from slot 7.

    Control Panel CDA

  • The original Options menu is now the Keyboard menu and does not contain mouse parameters.
  • A new Mouse menu is present. The new keyboard microcontroller allows finer control of mouse tracking, so a selection procedure better than yes or no is present. Parameters are also available to set the keyboard mouse feature, which allows the numeric keypad to emulate a mouse.
  • Added an option to resize the RAM disk on the next reset in the RAM Disk menu. This option resets to No after one reboot and resizing so the RAM disk is not accidently reformatted on every boot thereafter.
  • If slot 7 is set to AppleTalk, the Control Panel displays a warning if neither slot 1 nor slot 2 is similarly set.
  • The Printer Port and Modem Port menus now display only those parameters that may be changed if AppleTalk is the selection for those ports.
  • The RAM disk no longer has minimum and maximum settings, but rather one RAM disk size setting.

    Monitor

  • Enhanced memory searching commands to automatically cross bank boundaries.
  • Added Step and Trace debugging functions.
  • Now provide vectors for the same functionality as the GS/OS System Service calls

    MEMORY_MOVER, DYN_SLOT_ARBITER and SET_SYS_SPEED in bank $E1.

  • Now resize the RAM disk when the system is rebooted with the Control-Open Apple- Shift-Reset key combination.
  • Handle text page 2 shadowing and power-up bits in the new CYA chip.
  • Flash the border if the sound volume is set to zero and a beep is necessary.
  • In ROM 1 and earlier, the Miscellaneous Tools mouse firmware called the 8-bit mouse routines in the $C400 space to do the work. In ROM 3, the 8-bit routines call the 16-bit routines to read the hardware. This change effectively means those programs which use 16-bit mouse calls (including desktop applications through the Event Manager) may use the mouse when slot 4 is set to Your Card.
  • Slots 1 and 2 may now be set to Printer, Modem, AppleTalk, or Your Card. With System Software 5.0, slot 7 does not need to be set to AppleTalk to use an AppleTalk network, although one can do it for compatibility. There is no transparent printing firmware in slot 7.
  • The Alternate Display Mode CDA no longer sets the system to fast speed when normal speed is selected in the Control Panel.
  • Added a new command, {val}=V, to set the video screen display I/O switches when resuming a program.
  • Control-T command now works as a toggle—executing it once changes to text mode, but now executing it again switches back to the previous video mode You may change this saved video mode with the =V command.
  • Battery RAM value $59 now controls the presence of the Visit Monitor and Memory Peeker CDAs. If this byte has the high bit set at boot time, the CDAs are automatically installed.
  • The Monitor and Memory Peeker both allow the use of Control-X to terminate a long display (i.e., a handle list or memory dump).

    Serial I/O

  • XON and XOFF are no longer sent with the high bit set when buffering is enabled.
  • Terminal mode cursor is more consistent with the rest of the system.
  • Extended Interface calls now return errors in the carry and the accumulator.

    Toolbox

    The following tools are now in ROM:

    • Window Manager
    • Menu Manager
    • Control Manager
    • Line Edit
    • Dialog Manager
    • Scrap Manager
    • Font Manager
    • List Manager

      Further Reference

  • Apple IIGS Firmware Reference

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s