mirror of
https://github.com/elliotnunn/mac-rom.git
synced 2024-12-26 18:29:56 +00:00
4325cdcc78
Resource forks are included only for .rsrc files. These are DeRezzed into their data fork. 'ckid' resources, from the Projector VCS, are not included. The Tools directory, containing mostly junk, is also excluded.
449 lines
13 KiB
Plaintext
449 lines
13 KiB
Plaintext
;
|
|
; File: BootAlerts.a
|
|
;
|
|
; Contains: deep shit alerts for booting
|
|
;
|
|
; Copyright: © 1986-1991 by Apple Computer, Inc., all rights reserved.
|
|
;
|
|
; This file is used in these builds: BigBang
|
|
;
|
|
; Change History (most recent first):
|
|
;
|
|
; <17> 6/12/91 LN removed #include 'HardwareEqu.a'
|
|
; <16> 6/11/91 gbm Take out conditional for Regatta
|
|
; <15> 4/2/91 SAM Changed the Boot strings for the Regatta build.
|
|
; <14> 3/4/91 dba dty: get rid of SysVers conditionals
|
|
; <13> 1/14/91 stb & JDR; reword MacsBug installed and Extensions off.
|
|
; <12> 12/11/90 stb tweak message extensions disabled
|
|
; <11> 8/6/90 stb add message for ÒSystem x.x needs more memory to start up.Ó for
|
|
; 7.0 and later
|
|
; <10> 8/1/90 SAM Reverted MissingPatchMessage to the way it was in rev 7 of this
|
|
; file. See brain-fade.
|
|
; <9> 7/30/90 SAM Reworded MissingPatchMessage (again).
|
|
; <8> 7/30/90 SAM Reworded MissingPatchMessage.
|
|
; <7> 7/10/90 BA Fixed length of dssSwitch button string. This fixes some bugs
|
|
; related to the 24/32 bit mode alert.
|
|
; <6> 5/30/90 dba capitalize the D in ÒExtensions Disabled.Ó; change RAM parity
|
|
; message to match the messages in UserAlerts
|
|
; <5> 4/10/90 dba added message for ÒExtensions disabled.Ó; added alert for Òneed
|
|
; to write boot blocks, but the disk is write-protectedÓ; got rid
|
|
; of a few alerts for 7.0 that are only used from UserAlerts.a
|
|
; since the boot code cleanup makes the loading time consistent
|
|
; between different ROMs
|
|
; <4> 1/30/90 dba get rid of warnings when assembling; put in fancier messages;
|
|
; conditionalize out stuff needed only on systems that do not
|
|
; support 32-bit addressing
|
|
; <3> 1/12/90 CCH added include of ÒHardwarePrivateEqu.aÓ
|
|
; <2> 12/28/89 dba changed from PROC to MAIN so we get dead code stripping
|
|
; <1.4> 10/11/89 dba changed IDs to conform with UserAlerts; improved icons
|
|
; <1.3> 8/15/89 dba NEEDED FOR 6.0.4: expunged references to Ò32-Bit ModeÓ for the
|
|
; greater good of humanity
|
|
; <1.2> 8/11/89 dba NEEDED FOR 6.0.4: changed text for alerts; improved ShutDown
|
|
; code used when ShutDown Manager is not present; added duplicate
|
|
; button lists to handle case where ResumeProc is not NIL; added
|
|
; system version to text of some alerts
|
|
; <1.1> 5/15/89 CCH Added alert for memory parity error. (#101)
|
|
; <1.0> 11/16/88 CCH Added to EASE.
|
|
; 3/20/88 EKH Added SysErr #98 (dsNoPatch) for RomNoPatch, so it has it's very
|
|
; own SysErr number. Also, I changed the proc ID from 90 to 91 to
|
|
; match UserAlerts.a <EKH 20Mar88 S429> Also, modified proc ID 80
|
|
; to seperate the eject code so I use it. This is paralleled in
|
|
; the UserAlerts.a code.
|
|
; 1/17/88 EKH Added Alert for "needed resource can't be loaded" error at boot
|
|
; time (SysErr #99). This error is generated by PTCH id -1, and
|
|
; anyone else who can not load a "do or die" resource from the
|
|
; system file. <EKH 14Jan88 S359> ALSO, I documented the file so
|
|
; it is MUCH easier to add SysErrs!
|
|
; 3/30/87 jdt Removed the HD20 Startup alert. It now resides in the user alert
|
|
; table.
|
|
; 7/23/86 DLD Converted source to MPW.
|
|
;
|
|
|
|
string asis
|
|
|
|
load 'StandardEqu.d'
|
|
include 'ShutDownEqu.a'
|
|
include 'HardwarePrivateEqu.a'
|
|
|
|
ShutDownTrapNumber equ $95 ; _ShutDown
|
|
UnimplementedTrapNumber equ $9F ; _Unimplemented
|
|
|
|
macro
|
|
dcSystemVersion
|
|
gblc &SysVersion
|
|
dc.b '&SysVersion'
|
|
endm
|
|
|
|
; ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
|
|
BootAlerts main
|
|
|
|
; ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
;
|
|
; Icon numbering:
|
|
;
|
|
; The internal icon numbers are also used as resource IDs for color icons,
|
|
; so they must be assigned like all other reserved resource IDs.
|
|
; Also, like all the other numbers below, they must steer clear of system errors.
|
|
; For this reason we use negative numbers lower than -10000.
|
|
|
|
dsiBomb equ -16397
|
|
dsiStop equ -16400
|
|
|
|
dsiPicasso equ -16396
|
|
|
|
; ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
;
|
|
; Numbering scheme:
|
|
;
|
|
; These IDs must not conflict with actual system errors.
|
|
; For this reason, we use negative numbers lower than -10000 (we start at -20000).
|
|
|
|
; for text
|
|
|
|
dstMissingPatch equ -20000
|
|
dstParityError equ -20001
|
|
dstSystemDamaged equ -20002
|
|
|
|
dst32BitMode equ -20100
|
|
dstGreeting equ -20101
|
|
dstMacsBugInstalled equ -20102
|
|
dstOldSystem equ -20103
|
|
dstNeedToWriteBootBlocks equ -20104
|
|
dstExtensionsDisabled equ -20105
|
|
dstNotEnoughRAMToBoot equ -20106
|
|
|
|
|
|
; for procedures
|
|
|
|
dspRestart equ -21000
|
|
|
|
dspSwitch equ -21100
|
|
|
|
; for button lists
|
|
|
|
dsbRestart equ -22001 ; also uses -22000
|
|
|
|
dsb32BitMode equ -22101 ; also uses -22100
|
|
|
|
; for button strings
|
|
|
|
dssRestart equ -23000
|
|
|
|
dssSwitch equ -23100
|
|
|
|
; ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
;
|
|
; Entry count: bump 1 for each new item.
|
|
|
|
NumEntries: set 21 ; 8 alerts, 2 icons, 7 texts, 1 proc, 2 button lists, 1 button string
|
|
|
|
dc.w NumEntries
|
|
|
|
; ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
;
|
|
; Alert definitions.
|
|
;
|
|
; (word) error ID
|
|
; (word) 10 (length of remaining items)
|
|
; (word) primary text definition ID
|
|
; (word) secondary text definition ID
|
|
; (word) icon definition ID
|
|
; (word) procedure definition ID
|
|
; (word) button definition ID
|
|
|
|
; greetings
|
|
|
|
dc.w dsGreeting,10,dstGreeting,0,dsiPicasso,0,0
|
|
dc.w dsMacsBugInstalled,10,dstMacsBugInstalled,0,0,0,0
|
|
dc.w dsDisassemblerInstalled,10,0,0,0,0,0
|
|
dc.w dsExtensionsDisabled,10,dstExtensionsDisabled,0,0,0,0
|
|
|
|
; errors
|
|
|
|
dc.w dsOldSystem,10,dstOldSystem,0,dsiStop,0,dsbRestart
|
|
dc.w dsNeedToWriteBootBlocks,10,dstNeedToWriteBootBlocks,0,dsiStop,0,dsbRestart
|
|
|
|
; errors in both BootAlerts and UserAlerts
|
|
; (boot 2 resource fixes it so that only BadPatch is needed before UserAlerts take over)
|
|
|
|
dc.w dsBadPatch,10,dstSystemDamaged,0,dsiStop,0,dsbRestart
|
|
|
|
dc.w dsNotEnoughRAMToBoot,10,dstNotEnoughRAMToBoot,0,dsiStop,0,dsbRestart
|
|
|
|
; ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
;
|
|
; Text definitions.
|
|
;
|
|
; (word) text definition ID
|
|
; (word) length of rest of definition
|
|
; (long) location (point) - global coordinates
|
|
; (??) ASCII text
|
|
; (byte) null character
|
|
|
|
GreetingMessage
|
|
dc.w dstGreeting,@end-@rest
|
|
@rest
|
|
dc.w 108,192
|
|
DC.B 'Welcome to Macintosh.'
|
|
DC.B 0
|
|
align
|
|
@end
|
|
|
|
MacsBugInstalledMessage
|
|
dc.w dstMacsBugInstalled,@end-@rest
|
|
@rest
|
|
dc.w 126,192
|
|
DC.B 'Debugger installed.'
|
|
DC.B 0
|
|
align
|
|
@end
|
|
|
|
ExtensionsDisabledMessage
|
|
dc.w dstExtensionsDisabled,@end-@rest
|
|
@rest
|
|
dc.w 126,192
|
|
DC.B 'Extensions off.'
|
|
DC.B 0
|
|
align
|
|
@end
|
|
|
|
OldSystemMessageMessage
|
|
dc.w dstOldSystem,@end-@rest
|
|
@rest
|
|
dc.w 94,114
|
|
dc.b 'This startup disk will not work on this Macintosh/'
|
|
dc.b 'model. Use the latest Installer to update this disk/'
|
|
dc.b 'for this model. (System '
|
|
dcSystemVersion
|
|
dc.b ' does not work on/'
|
|
dc.b 'this model; you need a newer version that does.)'
|
|
dc.b 0
|
|
align
|
|
@end
|
|
|
|
NeedToWriteBootBlocksMessage
|
|
dc.w dstNeedToWriteBootBlocks,@end-@rest
|
|
@rest
|
|
dc.w 94,114
|
|
dc.b 'This disk must be unlocked in order to perform/'
|
|
dc.b 'one-time housekeeping. If you wish to use this/'
|
|
dc.b 'disk to start your Macintosh, unlock it.'
|
|
dc.b 0
|
|
align
|
|
@end
|
|
|
|
SystemDamagedMessage
|
|
dc.w dstSystemDamaged,@end-@rest
|
|
@rest
|
|
dc.w 94,114
|
|
DC.B 'The ÒSystemÓ file on this startup disk may be/'
|
|
dc.b 'damaged. The Installer can be used to repair this/'
|
|
dc.b 'disk.'
|
|
DC.B 0
|
|
align
|
|
@end
|
|
|
|
NotEnoughRAMToBootMessage
|
|
dc.w dstNotEnoughRAMToBoot,@end-@rest
|
|
@rest
|
|
dc.w 94,114
|
|
dc.b 'System '
|
|
dcSystemVersion
|
|
dc.b ' needs more memory to start up.'
|
|
dc.b 0
|
|
align
|
|
@end
|
|
|
|
; ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
;
|
|
; icon definitions
|
|
;
|
|
; (word) icon definition ID (used as resource ID for cicn)
|
|
; (word) length of rest of definition
|
|
; (8 bytes) location (rectangle) - global coordinates
|
|
; (128 bytes) icon data
|
|
|
|
; Picasso Macintosh icon
|
|
|
|
PicassoIcon
|
|
dc.w dsiPicasso,@end-@rest
|
|
@rest
|
|
dc.w 89,56,121,88
|
|
|
|
dc.l $0007FF80, $00080000, $00087E20, $00080120
|
|
dc.l $00080120, $04080120, $0C080120, $08080120
|
|
dc.l $66080120, $99080120, $8108FE20, $80080020
|
|
dc.l $80080020, $4A001F20, $34000020, $00FC0020
|
|
dc.l $03000000, $0401FFF0, $04000008, $03E01FE4
|
|
dc.l $00100552, $001000A9, $00200001, $002001FE
|
|
dc.l $00180000, $00040000, $0000C000, $00012000
|
|
dc.l $00025000, $00008800, $00000800, $00001000
|
|
@end
|
|
|
|
; stop icon
|
|
|
|
DSStopIcon
|
|
dc.w dsiStop,@end-@rest
|
|
@rest
|
|
dc.w 81,60,113,92
|
|
dc.l $00FFFF00, $01FFFF80, $03FFFFC0, $07FEFFE0
|
|
dc.l $0FFC7FF0, $1FEC67F8, $3FC447FC, $7FC447FE
|
|
dc.l $FF4447FF, $FE4447FF, $FE4447FF, $FE4447FF
|
|
dc.l $FE4447FF, $FE4447FF, $FE40071F, $FE00061F
|
|
dc.l $FE00061F, $FE00043F, $FE00003F, $FE00007F
|
|
dc.l $FE00007F, $FE0000FF, $FE0000FF, $FE0001FF
|
|
dc.l $FE0001FF, $7E0403FE, $3F0207FC, $1FFFFFF8
|
|
dc.l $0FFFFFF0, $07FFFFE0, $03FFFFC0, $01FFFF80
|
|
@end
|
|
|
|
; ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
;
|
|
; button lists
|
|
;
|
|
; (word) button definition ID
|
|
; (word) length of rest of definition
|
|
; (word) number of buttons
|
|
; (word) string ID
|
|
; (4 words) button location (rectangle)
|
|
; (word) procedure definition ID
|
|
|
|
; Restart button list
|
|
; this is the copy used if there is no ResumeProc
|
|
; note that these two are identical
|
|
|
|
RestartButtons1
|
|
dc.w dsbRestart,@end-@rest
|
|
@rest
|
|
dc.w 1
|
|
dc.w dssRestart,154,404,174,463,dspRestart
|
|
@end
|
|
|
|
; Restart button list
|
|
; this is the copy used if there is a ResumeProc
|
|
; note that these two are identical
|
|
|
|
RestartButtons2
|
|
dc.w dsbRestart+1,@end-@rest
|
|
@rest
|
|
dc.w 1
|
|
dc.w dssRestart,154,404,174,463,dspRestart
|
|
@end
|
|
|
|
; ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
;
|
|
; button strings
|
|
;
|
|
; (word) string ID
|
|
; (word) length of string (rounded to next word)
|
|
; (??) ASCII characters
|
|
;
|
|
|
|
dc.w dssRestart,8
|
|
DC.B 'Restart '
|
|
|
|
; ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
;
|
|
; Procedures.
|
|
;
|
|
; (word) procedure definition ID
|
|
; (word) length of rest of definition
|
|
; (??) procedure code
|
|
|
|
; ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
;
|
|
; DoRestart is used to restart.
|
|
|
|
dc.w dspRestart,EndDoRestart-DoRestart
|
|
|
|
DoRestart
|
|
|
|
; restart the machine, first try to use the shutdown manager, then do our own restart
|
|
|
|
bsr.s ShutDownManagerInstalled ; is there a ShutDown Manager?
|
|
bz.s @noShutDownManager
|
|
_SDRestart ; use the ShutDown Manager
|
|
|
|
; This code is executed on machines without ShutDown Managers in ROM.
|
|
|
|
@noShutDownManager
|
|
bsr.s DoUnmount ; unmount all of the volumes
|
|
|
|
Move.L ROMBase,a0 ; point to the ROM
|
|
Lea ROMHeader.ReStart(a0),a0 ; point to the restart routine
|
|
|
|
btst #6,ROM85 ; old machines only need reset
|
|
bz.s @tooNewForReset
|
|
reset
|
|
@tooNewForReset
|
|
|
|
Jmp (a0) ; exit thru the restart routine
|
|
|
|
; ShutDownManagerInstalled
|
|
;
|
|
; This determines if the ShutDown Manager is installed.
|
|
; It returns NZ if there is a ShutDown Manager and Z if there is not.
|
|
|
|
ShutDownManagerInstalled
|
|
Move.W #UnimplementedTrapNumber, D0
|
|
_GetTrapAddress ; get Unimplemented
|
|
Move.L A0, A1 ; save result
|
|
Move.W #ShutDownTrapNumber, D0
|
|
_GetTrapAddress ; get ShutDown
|
|
Cmp.L A0, A1 ; compare the two
|
|
rts
|
|
|
|
; The following routines (DoUnmount and ZapVCBQueue) are copied from the ShutDown Manager:
|
|
;
|
|
; DoUnmount - Unmount all of the Volumes on line, so the disks will be
|
|
; updated before our power off.
|
|
;
|
|
; Entry: No parameters.
|
|
|
|
DoUnmount
|
|
Sub #ioQElSize,SP ; allocate pBlock
|
|
|
|
; Go through the VCB Queue to Flush and eject all volumes.
|
|
|
|
Move.L SP,A0 ; point to the parameter block.
|
|
Clr.L ioVNPtr(A0)
|
|
Clr.W ioRefNum(A0)
|
|
Move.L VCBQHdr+QHead,A1 ; get the queue header
|
|
Move.L VCBQHdr+QTail,D2 ; get the tail too.
|
|
Beq.S @AllFlushed
|
|
Bsr.S ZapVCBQueue ; wipe out the whole Queue
|
|
|
|
@AllFlushed
|
|
Add #ioQElSize,SP ; deallocate pBlock
|
|
Rts
|
|
|
|
; ZapVCBQueue - This ReEntrant routine goes through the VCB Queue, and calls
|
|
; UnmountVol for each entry.
|
|
; Entry: A0 - IOParam Block
|
|
; A1 - Pointer to current Entry
|
|
; D2 - Tail entry Pointer.
|
|
; Exit: A1 - Pointer to next Entry.
|
|
; D1 - Preserved.
|
|
|
|
ZapVCBQueue
|
|
Move.W D1,-(SP) ; save for re-entrancy.
|
|
|
|
Move.W vcbVRefNum(A1),D1 ; get a VRefNum
|
|
Move.L QLink(A1),-(SP) ; go on to the next VCB
|
|
Cmp.L D2,A1
|
|
Move.L (SP)+,A1
|
|
Beq.S @FlushTime ; have we reached the end?
|
|
Bsr.S ZapVCBQueue ; not yet, save the VRefNum, call self.
|
|
@FlushTime
|
|
Move.W D1,ioVRefNum(A0) ; set up the refNum in the PBlock.
|
|
_Eject
|
|
_HUnmountVol ; shut the volume down.
|
|
Move.W (SP)+,D1 ; restore crucial VRefNum
|
|
Rts ; for reentrancy.
|
|
|
|
EndDoRestart
|
|
|
|
; ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
|
|
end
|