Skip to main content
Home Documents Lisa Lisa Boot ROM RM248.E.TEXT
Lisa Boot ROM RM248.E.TEXT

Lisa Boot ROM RM248.E.TEXT

Lisa · 1983 · TEXT
FilenameLisa_Boot_ROM_RM248.E.TEXT
Size0.08 MB
Year1983
Subsection firmware
Downloads2
Enjoying MacTrove? Anonymous downloads are free and unlimited. Create a free account to track favorites, contribute metadata corrections, and join the community chat.
Contents
.NOLIST
;===============================================================================;
;									        ;
;		     LL	       II    SSSSSSS	   AAA			        ;
;		     LL	       II    SS		  AA AA			        ;
;		     LL	       II    SSSSSSS	 AAAAAAA		        ;
;		     LL	       II	  SS    AA     AA		        ;
;		     LLLLLLL   II    SSSSSSS   AA       AA		        ;
;									        ;
;									        ;
;   BBBBBB     OOOOO	 OOOOO	  TTTTTTTT      RRRRRR	   OOOOO    MMM	  MMM   ;
;   BB	 BB   OO   OO   OO   OO	     TT	        RR   RR	  OO   OO   MM M M MM   ;
;   BBBBBB    OO   OO   OO   OO	     TT	        RRRRRR	  OO   OO   MM  M  MM   ;
;   BB	 BB   OO   OO   OO   OO	     TT	        RR RR	  OO   OO   MM	   MM   ;
;   BBBBBB     OOOOO	 OOOOO	     TT	        RR   RR	   OOOOO    MM	   MM   ;
;									        ;
;									        ;
;       Copyright 1983, 1984 Apple Computer Inc.			        ;
;       Revision 2H							        ;
;									        ;
;===============================================================================;
;
; Filename:  RMXXX.Y.TEXT, XXX = ROM VERSION # (e.g., 200 for 2.00)
;			     Y = E (equates)
;			       = K (kernel tests)
;			       = S (secondary tests)
;			       = B (bootstrap code)
;			       = M (monitor code)
;			       = G (graphics, icon and message display)
;
; Function:  Initializes LISA system for use and performs preliminary
;	     diagnostic checks.	 If all tests pass, the system then
;	     does a keyboard scan to check for user input.  If any key
;	     is hit other than caps lock or the mouse button,
;	     a menu is displayed on the screen showing the available
;	     boot devices.  If a valid COMMAND key sequence is detected,
;	     a boot from an alternate device is attempted (see below).
;	     If no keyboard input is detected, the system first checks
;	     parameter memory for a valid boot device and, if none, defaults
;	     to booting from a Profile attached to the builtin parallel port
;	     for Lisa 1 systems.
;
;	     For Lisa 2 systems, a check is first made to verify a disk
;	     (internal or external) is connected before defaulting to the
;	     hard disk boot.  If no disk is detected, the system defaults
;	     to booting from the floppy drive.
;
;
;
; Inputs:    Checks for keyboard input from the user.  Currently, the following
;	     key sequences are honored if input after the system "clicks" the
;	     speaker (CMD refers to the Apple key on the keyboard):
;
;	        CMD/1 - boot from Twiggy drive #1 or integral hard disk
;	        CMD/2 - boot from Twiggy drive #2 or SONY drive
;	        CMD/3 - boot from Profile attached to parallel port or integral hard disk
;	        CMD/4 - boot from I/O slot #1, port 1
;	        CMD/5 - boot from I/O slot #1, port 2
;	        CMD/6 - boot from I/O slot #2, port 1
;	        CMD/7 - boot from I/O slot #2, port 2
;	        CMD/8 - boot from I/O slot #3, port 1
;	        CMD/9 - boot from I/O slot #3, port 2
;	        CMD/ENTER (on key pad) - abort boot, branch to ROM monitor
;	        CMD/SHIFT/P - abort boot, do power cycling
;
;  OUTPUTS:  Saves various results and contents of system registers in memory
;	     for examination by system programs or with the ROM monitor.
;
;	        $180-183 : Power-up status (x0000000 = ok)
;	        $184-185 : Memory sizing error results
;	        $186-1A5 : Results of memory read/write tests
;	        $1A6-1A9 : Parity error memory address (if error during mem test)
;	        $1AA-1AB : Memory error address latch
;	        $1AC-1AF : D7 save on exception errors
;	        $1B0-1B1 : Results of MMU tests (context/data bits)
;	        $1B2	 : Keyboard ID (00 = no ID received)
;	        $1B3	 : Boot device ID
;	        $1B4-1B9 : Boot failure data
;	        $1BA-1BF : Clock setting (Ey,dd,dh,hm,ms,st)
;	        $1C0-1DF : Data reg save area (D0 - D7)
;	        $1E0-1FF : Address reg save area (A0 - A7, A7 = USP)
;	        $240-260 : System serial #
;	        $260-267 : Scratch area
;	        $268-26B : Suspected (logical) memory error address for parity error
;	        $26C-26F : Save of data written to suspected error address
;	        $270-273 : Actual (logical) error address found during search
;	        $274-277 : Save of data read during parity error search
;	        $278-27B : (Physical) error address read from parity error address latch
;	        $27C	 : Error row for parity chip failure (0 = first row, 7 = last row)
;	        $27D	 : Error column for parity chip failure (9 or 14)
;	        $27E-280 : Reserved
;	        $280-293 : Exception data save area
;			    (FC/EXCADR/IR/SR/PC/EXCTYPE/SSP)
;			    44 = NMI or other interrupt
;			    45 = bus error
;			    46 = address error
;			    47 = other exception/interrupt
;			    48 = illegal instruction error
;			    49 = line 1010 or 1111 trap
;			    50 = bus error accessing keyboard VIA
;			    51 = bus error accessing parallel port VIA
;			    57 = bus error accessing disk controller
;	        $294-297 : Maximum physical memory address + 1
;	        $298-299 : I/O slot 1 card id (0 = no card present)
;	        $29A-29B : I/O slot 2 card id
;	        $29C-29D : I/O slot 3 card id
;	        $29E	 : Reserved
;	        $29F	 : Reserved
;	        $2A0	 : Reserved
;	        $2A1	 : Disk ROM id
;	        $2A2-2A3 : Reserved
;	        $2A4-2A7 : Minimum physical address
;	        $2A8-2AB : Total memory (Max-Min)
;	        $2AC	 : SCC test results
;	        $2AD	 : Slot # of memory board if memory error
;	        $2AE	 : Result of disk controller self-test
;	        $2AF	 : System type (0 = Lisa 1, 1 = Lisa 2, 2 = Lisa 2 with external hard disk,
;				        3 = Lisa 2 with internal hard disk)
;	        $2B0-2BF : Keyboard queue (16 bytes)
;	        $2C0-480 : ROM scratchpad/stack area
;	        $480-800 : Reserved for ROM local variable usage
;
;	     Also saves data in special parameter memory area reserved for boot ROM use if error
;	     encountered.  Usage is as follows:
;
;	        $FCC161	    : Error code
;	        $FCC163-165 : Contents of memory error address latch if parity error
;	        $FCC167	    : Memory board slot # if memory error
;	        $FCC169-173 : Last value read from clock
;	        $FCC175-17B : Reserved
;	        $FCC17D-17F : Checksum
;
;
; Originator:  Rich Castro  7/30/81 - Version 0.0 released to manufacturing
;
; Modified by: Rich Castro  7/30 - 11/3/81 - Made the following changes:
;				       1) Twiggy bootstrap capability
;				       2) Initial COPS test and keyboard scan
;				       3) Moved parallel card to slot 2
;				       4) Changed ROM interrupt/exception vectors,
;				       5) Created jump table for ROM routines
;
;			    11/3/81  - Version 0.7 released to the world
;
;			    11/4/81 - 1/15/82 - Made the following changes:
;				       1) Added support for new memory cards
;				       2) Added warm-start capability and jump
;					  table for ROM subroutine usage
;				       3) Modified MMU reset routine to support
;					  single step board usage
;				       4) Added full memory initialization
;				       5) Added 256K memory parity test
;				       6) Modified COPS initialization so that
;					  keyboard commands can be sensed more
;					  reliably
;				       7) Added error code display routines and
;					  display of CPU and IO ROM versions
;				       8) Added preliminary disk controller test
;				       9) Updated warm-start check
;				      10) Modified disk interface test
;				      11) Changed low memory assignments
;				      12) Made corrections for no I/O board, disk
;					  interface error and contrast setting
;				      13) Modified memory sizing routine to
;					  catch memory errors
;				      14) Modify MMU test to avoid context 0
;					  destruction, add contrast setting for
;					  new machines, correct disk error and
;					  CPU ROM messages
;				      15) Move stack so old memory test still runs
;
;			        1/15/82 - Release version 0.16
;			        1/18/82 - Fix stack problem and release vrsn 0.17
;			        1/19/82 - Change stack for call routine and version
;					  to 0.18
;			        1/27/82 - Change MMU error routine to do address
;					  and data line toggling
;			        1/28/82 - Add video circuitry test
;			        1/30/82 - Add write wrong parity test
;			        1/31/82 - Move run time stack to $180
;			        2/6/82  - Add Profile bootstrap with upgrade for
;					  OS use (add jump table entries also)
;			        2/15/82 - Update Twiggy bootstrap and add entry
;					  for OS use; also add MMU test to
;					  conditional assembly and add context
;					  saving to MMUTST2 routine
;			        2/17/82 - Add correction to memory test for
;					  reboot problem and leave parity on
;			        2/24/82 - Add code for clock test and special
;					  burn-in cycling
;			        2/25/82 - Add code to simulate soft on switch
;					  pressed for COPS problem
;			        3/1/82  - Removed all changes since ROM 0.18
;					  release except for parity enabling,
;					  no reset feature, memory sizing change
;					  and Profile booting
;			        3/1/82  - Restore default stack ptr loc to $300
;			        3/1/82  - Move default stack to $0400, restore
;					  everything except MMU testing
;			        3/4/82  - Add MMU initialization and modify
;					  Twiggy, Profile boot routines for new
;					  load point
;			        3/10/82 - Add change for new I/O addresses and
;					  fix for Twiggy routine
;			        3/10/82 - Change contrast value for new I/O's
;			        3/15/82 - Add correction for Profile and COPS
;					  routines and display msg when booting
;			        3/17/82 - Restore version # at end of file
;			        3/18/82 - Release version 0.22
;
;			        4/5/82  - Make initial 2732 version (1.00); add
;					  following changes:
;					    1) correct MMU error routine bug
;					    2) change stack for CALL to $0400
;					    3) add parity disable to WWP routine
;					    4) change MMU I/O space code to '9'
;					    5) add invalid boot code message
;			        4/6/82  - Add speaker click after COPS check
;			        4/7/82  - Add jump table entry for speaker
;					  routine, 1 second delay before "click"
;					  and alpha lock key check
;
;			        4/8/82  - Release version 1.00
;
;			        5/5/82  - Add I/O slot configuration check and
;					  I/O slot booting.  Also add change to
;					  Profile read routine for PCR setting.
;			        5/12/82 - Add burnin power-cycling routine as
;					  boot option invoked by CMD/P.
;			        5/13/82 - Add changes for COPS command timing,
;					  Twiggy timeout, Twiggy booting, and
;					  add power-cycling routine.
;			        5/14/82 - Add fixes for booting via parameter
;					  memory and COPS timing experiment.
;			        5/17/82 - Add display of loop count and run time,
;					  and alter parameter memory useage for
;					  power-cycling option.
;			        5/18/82 - Add display of Twiggy errors, change
;					  COPS routine for precheck code.
;			        5/20/82 - Add contrast reset for "warm start",
;					  add cycle value display, restore COPS
;					  timeout code.
;
;			        5/21/82 - Release version 1.02
;
;			        5/26/82 - Begin addition of ROM monitor; set
;					  default to Apple if PM = 00.
;			        6/1/82  - Make following changes:
;					  1) Memory sizing retry count to 64
;					  2) Save results on memory sizing errors
;					  3) Update NMI routine to check for parity
;					     errors.
;					  4) Restore default NMI vector after
;					     memory test.
;					  5) Create read clock subroutine and call
;					     when doing clock display.
;					  6) Add boot fix to save device id.
;			        6/1/82  - Change to new sizing algorithm and retry
;					  count back to 32.
;			        6/3/82  - Convert to version 1.03
;			        6/3/82  - Made following changes:
;					   1)Localize message display to TSTCHK
;					   2)Do clear screen only in INITVCT and
;					     in TSTCHK and second monitor level.
;					   3)Change default video page to last.
;					   4)Complete first edition of monitor.
;			        6/7/82  - Modify monitor level2 user interface.
;			        6/10/82 - Made following changes:
;					   1)Add boot from Apple as CMD/A.
;					   2)Clear screen and display only in
;					     routine TSTCHK.
;					   3)Add ROM checksum error bit.
;					   4)Add exception error check to TSTCHK.
;					   5)Add speaker click just before
;					     keyboard scan.
;					   6)Reset to first video page for boot
;					     from Apple.
;					   7)Merge in changes from 1.03 file.
;					   8)Add parity error check to TSTCHK
;					   9)Change power-cycling so that double
;					     bus fault used to restart diags
;			        6/11/82 - Made following changes:
;					   1)Increase Twiggy timeout to 2 mins.
;					   2)Add 5 sec delay in power-cycle mode
;					     before shutting down.
;
;			        6/14/82 - Release version 1.04
;
;			        6/22/82 - Add loop after COPS test if error
;					  since keyboard not accessible.  Also add
;					  fix for NMI restore after memory test.
;			        6/30/82 - Made following changes:
;					   1)Add parameter memory and I/O boot
;					     checksum routines.
;					   2)Remove boot id save to parameter
;					     memory, except for power-cycle.
;					   3)Change to new boot device id's.
;			        7/1/82  -  1)Add changes for new Twiggy firmware.
;					   2)Add fixes for bugs in 1.04:
;					    a)Add row setting before error display
;					      to avoid writing over menu line.
;					    b)Set device codes for Profile and
;					      I/O slots to allow display if error.
;					    c)Enable setting of timeout for Twiggy
;					      reads.
;					    d)Save error codes for I/O boot in
;					      memory.
;					    e)Add option of clearing memory in
;					      INITMON routine.
;			        7/7/82  - Made following changes:
;					   1)Modify checksum routines
;					   2)Add keyboard/mouse check/reset code
;			        7/13/82 - Add speed parameter for new Twiggy code
;			        7/14/82 - Add check for DSKDIAG in disk test,
;					  change to new Twiggy error codes
;			        7/15/82 - Made following changes:
;					   1)Add Profile routine updates.
;					   2)Restore old boot id codes - new ones
;					     used only when new Twiggy code
;					     released.
;					   3)Upgrade burnin code for new parameter
;					     memory usage.
;					   4)Attempt to enable keyboard after MMU
;					     errors.
;					   5)Remove I/O boot checksum code until
;					     conversion to new Twiggy code.
;					   6)Add video pattern display code..
;					   7)Remove characters from table and
;					     make other changes to save bytes.
;					   8)Upgrade service mode display option
;					     to handle count up to $FFFF.
;
;			        7/16/82 - Create version 1.05
;			        7/19/82 - Add bug fixes for MMU testing, power-
;					  cycle memory testing, Profile boot
;					  and service mode display option.
;
;			        7/19/82 - Create version 1.06
;			        7/20/82 - Add fix for MMU testing to properly
;					  record context in error
;
;			        7/20/82 - Release version 1.07
;
;			        7/21/82 - Make keyboard/mouse reset code changes
;					  and move check to before first "click"
;			        7/23/82 - Add extended memory tests
;			        7/27/82 - Add screen memory test and VIA tests.
;					  Change default boot for new Twiggy code
;					  to upper Twiggy.  Add conditionals for
;					  Apple code.
;			        7/29/82 - Add SCC test, optimize code.
;			        7/30/82 - Add RAM address uniqueness test.
;			        8/4/82  - Added the following:
;					   1)Twiggy mods for interleave
;					   2)Monitor options CONTINUE and LOOP
;					   3)Exception routine for line 1111 and
;					     line 1010 errors.
;			        8/9/82  - Add Twiggy mod for disk clamp, add mods
;					  for kernel test failures such as screen
;					  flash on MMU error.
;			        8/11/82 - Add memory sizing fix, increase delay
;					  for COPS and change default boot to
;					  TWIGGY!!
;			        8/12/82 - Begin code changes for new user interface
;					  and add hooks for icon display.
;			        8/14/82 - Add mods for Twiggy changes to monitor
;					  DSKDIAG line and add initial timeout.
;					  Continue user interface changes.
;			        8/18/82 - Add mouse, cursor code and changes for
;					  Customer mode to use mouse.
;			        8/23/82 - Add controls for 2716 version of ROM.
;					  Add changes for Service mode to use
;					  pull down menu, eliminate keyboard
;					  queuing while awaiting input.
;			        8/24/82 - Add dialog box, and window to service
;					  mode with modified scroll and character
;					  output routines.
;			        8/25/82 - Add icons along with routines to display
;					  during test and for errors.
;			        8/27/82 - Add routines for displaying and using
;					  boot icon menu.
;			        8/30/82 - Add auto boot from Applenet.
;			        8/31/82 - Add minor additions to Service mode
;					  for Set and Loop options.
;
;			        8/31/82 - Create and do internal release of
;					  2716 (0.24), 2732 (1.15) and 2764 (2.00)
;					  ROM versions.
;
;			        9/8/82  - Add fixes for I/O slot icon display
;					  and Profile icon display.
;			        9/9/82  - Add fix for reboot problem in 2716 ROM.
;					  Add serial # read routine and test for
;					  2732 and 2764 ROM versions.  Expand
;					  stack for serial read routine.
;			        9/10/82 - Add fix for device code display for ROM
;					  versions 0.24 and 1.15.
;
;			        9/10/82 - Create and do internal release of new
;					  ROM versions 0.25, 1.16 and 2.01.
;
;			        9/13/82 - Add fixes for memory sizing and I/O
;					  slot booting.
;
;			        9/14/82 - Create and release ROM versions 0.26,
;					  1.17 and 2.02.
;
;			        9/22/82 - Add fixes and code for:
;					   1)Default video latch setting
;					   2)Mask for I/O and exception errors
;					   3)Message display on external calls
;					      to ROM monitor
;					   4)Contrast setting before screen test
;					   5)Disable of NMI key on power-up
;					   6)Boot failure after first load
;					   7)Error tones for failures
;					   8)Loop mode setting of NMI key
;			        9/23/82 - Add
;					   1)Power cycling
;					   2)Full service mode menu
;					   3)Loop mode test choice display
;			        9/24/82 - Add dump memory option to service mode
;			        9/25/82 - Modify display memory option to allow
;					  count and address data on same line
;			        9/29/82 - Add jump table entry for READMMU
;			        9/30/82 - Add:
;					   1)"No reset" feature
;					   2)Verify Disk option for service mode
;					   3)Optimize cursor routines and
;					     remove unused CursorShield routine.
;					   4)Invert rectangles when selected from
;					     keyboard.
;					   5)Display boot menu only if down keycode
;					     detected.
;			        10/5/82 - Add:
;					   1)Memory error decoding to board level
;					   2)New size and position for alert box
;					   3)New test icon display
;					   4)Diskette # for Twiggy errors
;			        10/6/82 - Add:
;					   1)Continue keyboard scan after COPS
;					     errors
;					   2)Set extended memory test bit for
;					     loop on memory test option
;					   3)Display I/O slot card # on errors
;					   4)Change boot menu to "pull-down" format
;					   5)Change to new icons
;			        10/7/82 - Add:
;					   1)SCC test
;					   2)Error if no serial # (allow continue)
;					   3)Two passes of memory tests for extended
;					     mode, one for regular mode
;			        10/9/82 - Create version 2.03
;			        10/10/82 - Add bug fixes and I/O slot ROM check in
;					   config scan.
;
;			        10/12/82 - Create and release version 2.04.
;
;			        10/13/82 - Make following changes:
;					    1)Add keyboard reset code
;					    2)Remove SCC test
;					    3)Add bug fixes for making alert box
;					      and displaying bad keyboard
;			        10/14/82 - Add display of check marks for test icons
;			        10/18/82 - Add fixes for…

Showing first 20,000 characters of 85,415 total. Open the full document →

mp.ls