0% found this document useful (0 votes)
139 views

Csos201 Asm

This document describes code for the CSOS 2.01 operating system. It was developed by disassembling IBM CSOS executables and includes modifications to make it compatible with CSOS 1.13. The code performs initialization tasks like setting up memory pools and updating system call tables.

Uploaded by

kgrhoads
Copyright
© © All Rights Reserved
Available Formats
Download as DOC or read online on Scribd
0% found this document useful (0 votes)
139 views

Csos201 Asm

This document describes code for the CSOS 2.01 operating system. It was developed by disassembling IBM CSOS executables and includes modifications to make it compatible with CSOS 1.13. The code performs initialization tasks like setting up memory pools and updating system call tables.

Uploaded by

kgrhoads
Copyright
© © All Rights Reserved
Available Formats
Download as DOC or read online on Scribd
You are on page 1/ 106

CSOS201 IDNT 1,0

NOFORMAT
NOPAGE
OPT A,FRL,BRL,MEX,NOMD,MC
*******************************************************************************
* This code was developed by dis-assembly of IBM INSTRUMENTS CSOS executables.
* CSOS20.BIN, various CSOS v2.0 and CSOS v1.13 utilities and portions of the
* CSOS v1.13 ROM code were used as bases for this version of CSOS v2.01.
*
* To make CSOS v2 more compatible with CSOS v1.13 a number of modifications
* were made: .EXE's load high not low, a `HOT' BOOT mode was added, and
* support for SET SM=nn (via HOT BOOT) was added.
*
* The original code is covered by various copyrights held by IBM.
* The modifications are placed in the public domain.
*
* PORTIONS COPYRIGHT (C) IBM INSTRUMENTS 1984
*
*******************************************************************************
* ORIGINAL block limits are $0000E000 to $00012194
NOLIST
BREAKEXIT MACRO
* CMP.B #$FF,$43B0 CTRL-Break Byte
DC.W $0C38,$00FF CMPI.B #$FF,$43B0 CHECK CTRL-Break BYTE
DC.W $43B0
BNE OVER\@
TRAP #0 SYSCALL
DC.W 43 EXIT
OVER\@ EQU *
ENDM
CMDFMTERR EQU $0FC0FDA
BADCOMMAND EQU $0FC1002
*
START EQU *
H_00E000 MOVEM.L D0/D4-D5/A0-A1/A5-A6,-(A7)
SUBA.L #$14,A7 set up MIB on stack
MOVEA.L A7,A6
MOVE.W #$0000,D7
H_00E014 MOVE.B #$00,0(A6,D7.W)
ADDQ.W #1,D7
H_00E01C CMPI.W #+019,D7
BLE.S H_00E014
MOVEQ #7,D4 INQMEM
MOVE.L #'USRM',D5
TRAP #00 $0 SYSCALL
DC.W $0039 MEM_MGR
BRA.L H_00E032
OS2_HERE LEA V2ALREDY(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0013 PrtErMsg*
ADDA.L #$14,A7
BRA.L H_00E108
H_00E032 CMPI.W #$6005,D7 error - pool does not exist
BNE.S OS2_HERE
* INQ_MEM SYSM POOL
MOVEQ #007,D4 INQMEM
MOVE.L #'SYSM',D5
TRAP #00 $0 SYSCALL
DC.W $0039 MEM_MGR
NOP
NOP
MOVE.L 16(A6),D2 SAVE LARGEST FREE CONTINUOUS IN D2
ADDA.L #$014,A7
H_00E04C TRAP #00 $0 SYSCALL
DC.W $0020 SysLev
CMPI.L #$01010019,D0
BEQ.S H_00E066
LEA OLD_ROMS(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0013 PrtErMsg*
BRA.L H_00E108
H_00E066 BSR.L CLSH
LEA CSOS20MS(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0012 PrtMsg*
LEA COPYR_MS(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0012 PrtMsg*
MOVEA.L #$00ABCDEF,A0 | supmode
TRAP #05 |
SUBA.L #$014,A7
MOVEA.L A7,A6
MOVE.W #$0000,D0
H_00E08E CLR.B 0(A6,D0.W)
ADDQ.W #1,D0
H_00E094 CMPI.W #+019,D0
BLE.S H_00E08E
LEA END_RES_CODE(PC),A0
LEA BEG_RES_CODE(PC),A1
SUBA.L A1,A0
ADDQ.L #2,A0
ADDA.L #4102,A0 reserve space for system stack
MOVE.L A0,D0
MOVE.L D0,4(A6)
MOVE.L D0,D1
ADD.L #$6000,D1 MAKE SURE ENOUGH LEFT FOR NORMAL OPERATIONS
EXG.L D0,D2 LARGEST FREE CONT. IN D0, SAVE D0 IN D2
CMP.L D0,D1
BCS.S ENUF_MEM ENOUGH MEMORY IN SYSM POOL
ADD.L #1023,D1 D1 HAS NUMBER OF BYTES NEEDED, ROUND UP
LSR.L #8,D1 AND CONVERT TO NUMBER OF 1K BLOCKS NEEDED
LSR.L #2,D1
MOVE.L D1,D0
TRAP #0 SYSCALL
DC.W 53 MODSYSM - ADD BLOCKS TO SYSM
ENUF_MEM MOVE.L D2,D0
MOVEQ #005,D4 GETMEM
MOVE.L #'SYSM',D5
TRAP #00 $0 SYSCALL
DC.W $0039 MEM_MGR
NOP
NOP
*
* BRA.L H_00E0F2 NOT ?? why not ??
LIST
H_00E0BE EQU *
CMPI.W #+000,D7
BNE.S H_00E0F2
MOVE.L 012(A6),D6 -- get start/bottom address of new block
ADDI.L #4096,D6 -- offset 4096 for system stack
AND.L #$0FFFFFC,D6 | ON EVEN ADDRESS (& DIVISIBLE BY FOUR)
*
MOVE.L SSTACK-BEG_RES_CODE,A2 COPY STACK TOP VALUE INTO SSTACK
ADDA.L D6,A2 ACCOUNTING FOR RELOCATION
MOVE.L D6,(A2)
*
MOVE.L D6,A1 -- System Stack top in A1
*
ADDQ.L #4,A1 | 4 byte pad between stack top and code
**
* LEA MOVING(PC),A6
* TRAP #00 $0 SYSCALL
* DC.W $0012 PrtMsg*
* have acquired memory - move the resident
*
LEA END_RES_CODE(PC),A0
MOVE.L A0,D1
LEA BEG_RES_CODE(PC),A0 @E21A
MOVE.L A0,D0
AND.L #$0FFFFFE,D0
SUB.L D0,D1
MOVE.L D0,A0
MOVEQ #000,D0 amount moved so far
MOVE.L #$4E714E71,-4(A1)
*
H_00E0DA MOVE.W 0(A0,D0.L),0(A1,D0.L) new code moves 2 bytes/shot
ADDQ.L #2,D0 doesn't zero source
H_00E0E8 CMP.L D1,D0
BLE.S H_00E0DA *-016
**
* LEA REL_COMP(PC),A6
* TRAP #00 $0 SYSCALL
* DC.W $0012 PrtMsg*
*
LEA BLANK_(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0012 PrtMsg*
*
JMP 2(A1) all moved - jump to (relocate) BEG_RES_CODE+2
*
* this is `ordinary' exit -- used if CSOS 2 can't be installed for some reason
*H_00E0EE BRA.S H_00E0FA
H_00E0F2 LEA NO_MEMRY(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0013 PrtErMsg*
*H_00E0FA EQU *
ADDA.L #$014,A7
MOVEA.L #$00FEDCBA,A0
*H_00E106 EQU *
TRAP #05 out of supervisor mode
H_00E108 MOVEM.L (A7)+,D0/D4-D5/A0-A1/A5-A6
RTS
*
* THIS is the `sudden death' exit - for unrecoverable errors
H_00E23E LEA DIE_DIE_(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0012 PrtMsg*
TRAP #00 $0 SYSCALL
DC.W $000C PrtErr*
* I/O address $00F0000D is PPI2 Port C - hndshk/status INTEL 8255
H_00E24A BTST #01,$00F0000D Wait for key press ...
BEQ.S H_00E24A
* I/O address $00F0000B is PPI2 Port B - Keyboard I/O m1 INTEL 8255
MOVE.B $00F0000B,D7
BOOT TRAP #00 $0 SYSCALL
DC.W $0030 SUP MODE
BRA.L COLDBOOT
DIE_DIE_ DC.B 'UNRECOVERABLE ERROR! HIT ANY KEY TO COLD START',$D
DS.W 0
*
*
CSOS20MS DC.B 'IBM SYSTEM 9000 CSOS Version 2.01 09/18/87',$D
COPYR_MS DC.B 'Copyright (c) IBM Instruments, Inc. 1984,1987'
BLANK_ DC.B $D
*MOVING DC.B 'Relocating Operating System Code',$D
*REL_COMP DC.B 'Relocation completed.',$D
H_00E16A DC.B 'LICENSED MATERIAL - PROPERTY OF IBM INSTRUMENTS, INC'
NO_MEMRY DC.B 'NOT ENOUGH MEMORY TO INSTALL CSOS 2.0',$D
V2ALREDY DC.B 'CSOS 2.0 ALREADY INSTALLED',$D
OLD_ROMS DC.B 'CSOS 2.0 CAN ONLY BE INSTALLED USING THE CSOS'
DC.B ' 1.13 ROM SET',$D
DS.W 0
*
**********************************************************
* NOTHING BEFORE HERE WILL BE COPIED/RELOCATED *
**********************************************************
SUP_STACK EQU * 4096 (or more) BYTES FOR SUPERVISOR STACK after
DC.L 0 relocation, 4 byte pad between stack top and code
*
*
NOP |
NOP | more padding
NOP |
NOP |
*
BEG_RES_CODE EQU * this is called after code is moved (to do initialization)
*
* this is also called by HBOOT after it hacks memory control blocks
*
H_00E21A EQU *
NOP |
NOP | more padding
NOP |
NOP |
*
LEA INIT_MESS(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0012 PrtMsg*
LEA INIT_MESS(PC),A6
MOVE.B #'R',(A6)
MOVE.B #'e',1(A6)
*
BSR.L CH_SC_TBL H_00E29C updates System Call table
* and resident command table
*
BSR.L H_0103DE LOTS OF MEMMGR CALLS
CMPI.W #+000,D7 any errors?
*
NOP
NOP
INIT_DIE BNE.L H_00E23E this gets NOPed out after initial use
NOP on HBOOT the memory control blocks get
NOP hacked up, there will be errors at this
* stage and they are meaningless
*
BSR.L H_0104FE DOES MEMMGR SC JUMP UPDATE
BSR.L H_00F9E8 DOES LOADB SC JUMP UPDATE
BSR.L H_010AA0 DOES SYSLEV SC JUMP UPDATE
BSR.L H_010D54 ADDS LODMGR AND FMTNAM
*
LEA.L TRAPB(PC),A0 add new TRAP B handler
MOVE.L A0,$AC
LEA.L TRAPC(PC),A0 add new TRAP C handler
MOVE.L A0,$B0
*
LEA.L ALT_TRAP(PC),A0
MOVE.L A0,$0A30 Prep Alternate Trap Error Handler
* this is the CRASH interceptor
*
MOVEA.L #$3BEC,A1
MOVEA.L (A1),A0
H_FCB96E CMPA.L #$00000000,A0
BEQ.S H_FCB990
CMP.L #'USRM',(A0)
BNE.S N_USRM
LEA.L USRM_PTR(PC),A1
MOVE.L A0,(A1)
BRA.S N_SYSM
N_USRM CMP.L #'SYSM',(A0)
BNE.S N_SYSM
LEA.L SYSM_PTR(PC),A1
MOVE.L A0,(A1)
N_SYSM MOVEA.L +00004(A0),A0
BRA.S H_FCB96E
H_FCB990 EQU *
MOVEA.L SYSM_PTR(PC),A0
MOVEA.L 12(A0),A0
MOVE.L (A0),D0
SUBQ.L #4,D0
LEA.L USR_SV_ADR(PC),A0
CMP.L (A0),D0
BCS.L NUML_BREAK
MOVE.L D0,(A0)
*
NUML_BREAK EQU *
*
* GET CTRL BREAK AND CTRL NUML ADDRESSES - doesn't work properly, so
* we will fake it
*
* LEA.L CONFPKT(PC),A6 Get CTRL-Break and CTRL-NumLock addresses
* MOVEQ.L #$F6,D5 LUN for CON
* TRAP #6 SYSIO
* DC.W 6 FUNC
* NOP
* NOP
LEA.L CTRLBREAK(PC),A0
MOVE.L #$043B0,(A0) $43B0 is CTRL-BREAK byte
LEA.L CTRLNUML(PC),A0
MOVE.L #$043B1,(A0) $43B1 is CTRL-NUML byte
*
*
* end of initialization process - show resident commands and drive search list
*
LEA.L KBD_CMD_INT(PC),A0
MOVE.L A0,(A7)+
BRA.L IN_RES(PC)
*
INIT_MESS DC.B ' Initializing CSOS 2.01 ....',$D
DS.W 0
NOLIST
*
** FIRST INITIALIZATION SUBROUTINE
** updates System Call table and resident commmand table
CH_SC_TBL EQU *
H_00E29C LEA H_00EBAE(PC),A0
MOVE.W #$0000,D0
H_00E2A8 MOVE.B #$00,+000(A0,D0.W) clear mem block
ADDQ.W #1,D0
H_00E2B0 CMPI.W #+173,D0
BLE.S H_00E2A8
LEA H_00EA5E(PC),A0
LEA H_00EBA2(PC),A1
H_00E2BE CMPA.L A0,A1
BLE.S H_00E2CC
MOVE.L #$00000000,(A0)+
BRA.S H_00E2BE
H_00E2CC LEA H_00EC5C(PC),A0 UNMARK "MAGIC" BYTE (ALLOWS .BIN LOAD)
MOVE.B #$00,(A0)
LEA KBD_CMD_INT(PC),A0
DC.W $21C8,$0EB8 MOVE.L A0,$0EB8
*
LEA H_00E7CC(PC),A6
MOVEM.L D0/A0,-(A7)
TRAP #00 $0 SYSCALL
DC.W $003D GETSCTAB
*
MOVE.W #$0031,D0 enter (new) SC50 into table
ASL.W #2,D0
MOVE.L A6,+000(A0,D0.W) enter new value
*
LEA H_00FE6A(PC),A6 @FE6A
MOVE.W #$0018,D0 update SC25, GETPCB
ASL.W #2,D0
MOVE.L A6,+000(A0,D0.W) enter new value
*
LEA H_010172(PC),A6
MOVE.W #$0019,D0 update SC26, GIVPCB
ASL.W #2,D0
MOVE.L A6,+000(A0,D0.W) enter new value
LEA NEW_SC01(PC),A6 UPDATE SC01
MOVE.L A6,(A0) enter new value
*
LEA H_010306(PC),A6
MOVE.W #$002F,D0 enter (new) SC48 into table
ASL.W #2,D0
MOVE.L A6,+000(A0,D0.W) enter new value
*
LEA H_0102F8(PC),A6
MOVE.W #$0030,D0 enter (new) SC49 into table
ASL.W #2,D0
MOVE.L A6,+000(A0,D0.W) enter new value
*
LEA H_010314(PC),A6
MOVE.W #$002B,D0 enter (new) SC44 RUNTASK
ASL.W #2,D0
MOVE.L A6,+000(A0,D0.W) enter new value
*
LEA H_010384(PC),A6
MOVE.W #$002C,D0 enter (new) SC45 KILL
ASL.W #2,D0
MOVE.L A6,+000(A0,D0.W) enter new value
*
LEA H_010A76(PC),A6
MOVE.W #$000B,D0 update SC11, CHAIN
SUBQ.W #1,D0 compute SC TABLE offset
ASL.W #2,D0
MOVE.L +000(A0,D0.W),-(A7) push old entry
MOVE.L A6,+000(A0,D0.W) enter new value
MOVEA.L (A7)+,A6 pop old entry
CMPA.L #$0FC0000,A6
BLS.S N_CHAIN
*
MOVE.W #$0005,D0 update SC05, now CHAIN
SUBQ.W #1,D0 compute SC TABLE offset
ASL.W #2,D0
MOVE.L A6,+000(A0,D0.W) enter new value
*
N_CHAIN LEA H_0103D6(PC),A6
MOVE.W #$0035,D0 update SC53, MODSYSM
SUBQ.W #1,D0 compute SC TABLE offset
ASL.W #2,D0
MOVE.L +000(A0,D0.W),-(A7) push old entry
MOVE.L A6,+000(A0,D0.W) enter new value
MOVEA.L (A7)+,A6 pop old entry
CMPA.L #$0FC0000,A6
BLS.S N_MOD
*
MOVE.W #$0007,D0 update SC07, now MODSYSM
SUBQ.W #1,D0 compute SC TABLE offset
ASL.W #2,D0
MOVE.L A6,+000(A0,D0.W) enter new value
*
* UPDATE RESIDENT COMMAND TABLE
*
N_MOD MOVEM.L (A7)+,D0/A0
LEA ALIAS(PC),A0
MOVE.L #'ALIA',D1
MOVE.L #'S ',D2
BSR.L ADD__CMD
LEA H_00F06C(PC),A0
MOVE.L #'ATCH',D1
MOVE.L #'DRV ',D2
BSR.L ADD__CMD
LEA ATCHDRVB(PC),A0
MOVE.L #'ATCH',D1
MOVE.L #'DRVB',D2
BSR.L ADD__CMD
LEA ATCHDRVB(PC),A0
MOVE.L #'ATCH',D1
MOVE.L #'DRB ',D2
BSR.L ADD__CMD
LEA BEEP(PC),A0
MOVE.L #'BEEP',D1 short beep
MOVE.L #' ',D2
BSR.L ADD__CMD
LEA BLANK(PC),A0
MOVE.L #'BLAN',D1 BLANK SCREEN
MOVE.L #'K ',D2
BSR.L ADD__CMD
LEA UNBLANK(PC),A0
MOVE.L #'UNBL',D1 UNBLANK SCREEN
MOVE.L #'ANK ',D2
BSR.L ADD__CMD
LEA COLDBOOT(PC),A0
MOVE.L #'CBOO',D1 power on tests
MOVE.L #'T ',D2
BSR.L ADD__CMD
LEA HBOOT(PC),A0
MOVE.L #'HBOO',D1 power on tests
MOVE.L #'T ',D2
BSR.L ADD__CMD
LEA CCNSL0(PC),A0
MOVE.L #'CCNS',D1
MOVE.L #'L0 ',D2
BSR.L ADD__CMD
LEA COMMAND(PC),A0
MOVE.L #'COMM',D1 list resident commands
MOVE.L #'AND ',D2
BSR.L ADD__CMD
LEA H_00E71E(PC),A0
MOVE.L #'DIAG',D1 manual (ROM) diagnostics
MOVE.L #' ',D2
BSR.L ADD__CMD
LEA CRASH_TOL(PC),A0
MOVE.L #'CRAS',D1
MOVE.L #'HTOL',D2
BSR.L ADD__CMD
LEA H_00F2BC(PC),A0
MOVE.L #'DIR ',D1
MOVE.L #' ',D2 |
BSR.L ADD__CMD | aliases for DIR
MOVE.L #'DRI ',D1 |
MOVE.L #' ',D2 |
BSR.L ADD__CMD |
MOVE.L #'DOR ',D1 |
MOVE.L #' ',D2 |
BSR.L ADD__CMD |
MOVE.L #'DIOR',D1 |
MOVE.L #' ',D2 |
BSR.L ADD__CMD |
MOVE.L #'DOIR',D1 |
MOVE.L #' ',D2 |
BSR.L ADD__CMD |
MOVE.L #'DUR ',D1 |
MOVE.L #' ',D2 |
BSR.L ADD__CMD |
MOVE.L #'DIUR',D1 |
MOVE.L #' ',D2 | aliases for DIR
BSR.L ADD__CMD |
MOVE.L #'DUIR',D1 |
MOVE.L #' ',D2 |
BSR.L ADD__CMD |
MOVE.L #'DI ',D1 |
MOVE.L #' ',D2 |
BSR.L ADD__CMD |
LEA H_00F264(PC),A0
MOVE.L #'DTCH',D1
MOVE.L #'DRV ',D2
BSR.L ADD__CMD
LEA HEXOF(PC),A0
MOVE.L #'HEX ',D1
MOVE.L #' ',D2
BSR.L ADD__CMD
LEA HEXOF(PC),A0
MOVE.L #'HEXO',D1
MOVE.L #'F ',D2
BSR.L ADD__CMD
LEA WBOOT(PC),A0
MOVE.L #'WBOO',D1
MOVE.L #'T ',D2
BSR.L ADD__CMD
LEA HOWL(PC),A0
MOVE.L #'HOWL',D1 continuous beep
MOVE.L #' ',D2
BSR.L ADD__CMD
LEA QUIET(PC),A0
MOVE.L #'HUSH',D1 RESIDENT QUERY
MOVE.L #' ',D2
BSR.L ADD__CMD
LEA INVERSE(PC),A0
MOVE.L #'INVE',D1 TOGGLE VIDEO MODE
MOVE.L #'RSE ',D2
BSR.L ADD__CMD
LEA RESIDENT(PC),A0
MOVE.L #'LIST',D1 list resident commands
MOVE.L #'CMD ',D2
BSR.L ADD__CMD
LEA C_LOAD(PC),A0
MOVE.L #'LOAD',D1
MOVE.L #' ',D2
BSR.L ADD__CMD
LEA C_UNLOAD(PC),A0
MOVE.L #'UNLO',D1
MOVE.L #'AD ',D2
BSR.L ADD__CMD
LEA MAKRES(PC),A0
MOVE.L #'MAKE',D1 load .EXE and make command
MOVE.L #'RES ',D2
BSR.L ADD__CMD
LEA MAKRES(PC),A0
MOVE.L #'MAKR',D1 load .EXE and make command
MOVE.L #'ES ',D2
BSR.L ADD__CMD
LEA MODULES(PC),A0
MOVE.L #'MODU',D1 RESIDENT QUERY ALIAS
MOVE.L #'LES ',D2
BSR.L ADD__CMD
LEA NO(PC),A0
MOVE.L #'NO ',D1 KILL SCRNPRNT
MOVE.L #' ',D2
BSR.L ADD__CMD
LEA NORMAL(PC),A0
MOVE.L #'NORM',D1 NORMAL VIDEO MODE
MOVE.L #'AL ',D2
BSR.L ADD__CMD
LEA WHAT_PATH(PC),A0
MOVE.L #'PATH',D1
MOVE.L #' ',D2
BSR.L ADD__CMD
LEA QUERY(PC),A0 |
MOVE.L #'QUER',D1 | RESIDENT QUERY
MOVE.L #'Y ',D2 |
BSR.L ADD__CMD |
* LEA QUERY(PC),A0 |
MOVE.L #'QEUR',D1 | RESIDENT QUERY
MOVE.L #'Y ',D2 |
BSR.L ADD__CMD |
* LEA QUERY(PC),A0 |
MOVE.L #'QUEY',D1 | RESIDENT QUERY
MOVE.L #'R ',D2 |
BSR.L ADD__CMD |
LEA QUIET(PC),A0 stop howl
MOVE.L #'QUIE',D1
MOVE.L #'T ',D2
BSR.L ADD__CMD
LEA REVERSE(PC),A0
MOVE.L #'REVE',D1 REVERSE VIDEO MODE
MOVE.L #'RSE ',D2
BSR.L ADD__CMD
LEA H_00EE42(PC),A0
MOVE.L #'RUN ',D1
MOVE.L #' ',D2
BSR.L ADD__CMD
LEA H_00EE42(PC),A0
MOVE.L #'RUNT',D1
MOVE.L #'ASK ',D2
BSR.L ADD__CMD
LEA ROM_SAVE(PC),A0
MOVE.L #'ROMS',D1 save w/o address validity checks
MOVE.L #'AVE ',D2
BSR.L ADD__CMD
LEA ROM_SAVE(PC),A0
MOVE.L #'SAVE',D1 save w/o address validity checks
MOVE.L #'ROM ',D2
BSR.L ADD__CMD
LEA SET_PATH(PC),A0
MOVE.L #'SETP',D1
MOVE.L #'ATH ',D2
BSR.L ADD__CMD
LEA CLSH(PC),A0
MOVE.L #'CLSH',D1 CLS & Home cursor
MOVE.L #' ',D2
BSR.L ADD__CMD
* LEA CLSH(PC),A0
MOVE.L #'CLS ',D1 CLS & Home cursor
MOVE.L #' ',D2
BSR.L ADD__CMD
LEA SYSMAP(PC),A0 |
MOVE.L #'SYSM',D1 | RESIDENT SYSMAP
MOVE.L #'AP ',D2 |
BSR.L ADD__CMD |
* LEA SYSMAP(PC),A0 |
MOVE.L #'SYSA',D1 | RESIDENT SYSMAP
MOVE.L #'MP ',D2 |
BSR.L ADD__CMD |
* LEA SYSMAP(PC),A0 |
MOVE.L #'SYSM',D1 | RESIDENT SYSMAP
MOVE.L #'PA ',D2 |
BSR.L ADD__CMD |
LEA POOLS(PC),A0
MOVE.L #'POOL',D1 RESIDENT SYSMAP ALIAS
MOVE.L #'S ',D2
BSR.L ADD__CMD
LEA O_LOADB(PC),A0
MOVE.L #'LOAD',D1 LOAD Bin file
MOVE.L #'B ',D2
BSR.L ADD__CMD
LEA RSTDSK(PC),A0
MOVE.L #'RSTD',D1 reset floppies
MOVE.L #'SK ',D2
BSR.L ADD__CMD
LEA INIT_DONE(PC),A0
MOVE.L #'EXIT',D1
MOVE.L #' ',D2
BSR.L ADD__CMD
LEA UNLOADB(PC),A0
MOVE.L #'UNLO',D1 dealloc. memory after loadb
MOVE.L #'ADB ',D2
BSR.L ADD__CMD
LEA H_00F7AA(PC),A0
MOVE.L #'SET ',D1
MOVE.L #' ',D2
BSR.L ADD__CMD
LEA SUBMIT(PC),A0
MOVE.L #'SUBM',D1 extended SUBMIT, if no filename ext.
MOVE.L #'IT ',D2 looks for .SUB then .BAT
BSR.L ADD__CMD
LEA KBD_CMD_INT(PC),A0
MOVE.L #'CLI ',D1
MOVE.L #' ',D2
BSR.L ADD__CMD
LEA MAKECMD(PC),A0
MOVE.L #'MAKE',D1
MOVE.L #'CMD ',D2
BSR.L ADD__CMD
LEA P_B_(PC),A0
MOVE.L #'PB ',D1
MOVE.L #' ',D2
BSR.L ADD__CMD
LEA FUNC(PC),A0
MOVE.L #'FUNC',D1
MOVE.L #' ',D2
BSR.L ADD__CMD
LEA SUP_MODE(PC),A0
MOVE.L #'SUPM',D1
MOVE.L #'ODE ',D2
BSR.L ADD__CMD
LEA USR_MODE(PC),A0
MOVE.L #'USRM',D1
MOVE.L #'ODE ',D2
BSR.L ADD__CMD
LEA TELL_SR(PC),A0
MOVE.L #'SR ',D1
MOVE.L #' ',D2
BSR.L ADD__CMD
LEA TELL_USP(PC),A0
MOVE.L #'USP ',D1
MOVE.L #' ',D2
BSR.L ADD__CMD
LEA TELL_SSP(PC),A0
MOVE.L #'SSP ',D1
MOVE.L #' ',D2
BSR.L ADD__CMD
LEA TELL_SPS(PC),A0
MOVE.L #'SP ',D1
MOVE.L #' ',D2
BSR.L ADD__CMD
LEA TELL_USRM(PC),A0
MOVE.L #'USRM',D1
MOVE.L #' ',D2
BSR.L ADD__CMD
LEA TELL_SYSM(PC),A0
MOVE.L #'SYSM',D1
MOVE.L #' ',D2
BSR.L ADD__CMD
LEA RESET_PR(PC),A0
MOVE.L #'RSTP',D1
MOVE.L #'R ',D2
BSR.L ADD__CMD
LEA RLNFD(PC),A0
MOVE.L #'RLNF',D1
MOVE.L #'D ',D2
BSR.L ADD__CMD
LEA LNFD(PC),A0
MOVE.L #'LNFD',D1
MOVE.L #' ',D2
BSR.L ADD__CMD
LEA FMFD(PC),A0
MOVE.L #'FMFD',D1
MOVE.L #' ',D2
BSR.L ADD__CMD
LEA RED(PC),A0
MOVE.L #'RED ',D1
MOVE.L #' ',D2
BSR.L ADD__CMD
LEA GREEN(PC),A0
MOVE.L #'GREE',D1
MOVE.L #'N ',D2
BSR.L ADD__CMD
LEA BLUE(PC),A0
MOVE.L #'BLUE',D1
MOVE.L #' ',D2
BSR.L ADD__CMD
LEA BLACK(PC),A0
MOVE.L #'BLAC',D1
MOVE.L #'K ',D2
BSR.L ADD__CMD
LEA DO_KOLOR(PC),A0
MOVE.L #'COLO',D1
MOVE.L #'R ',D2
BSR.L ADD__CMD
LEA ANYCOLOR(PC),A0
MOVE.L #'ANYC',D1
MOVE.L #'OLOR',D2
BSR.L ADD__CMD
LEA LFON(PC),A0
MOVE.L #'LFON',D1
MOVE.L #' ',D2
BSR.L ADD__CMD
LEA FFON(PC),A0
MOVE.L #'FFON',D1
MOVE.L #' ',D2
BSR.L ADD__CMD
LEA LFOFF(PC),A0
MOVE.L #'LFOF',D1
MOVE.L #'F ',D2
BSR.L ADD__CMD
LEA FFOFF(PC),A0
MOVE.L #'FFOF',D1
MOVE.L #'F ',D2
BSR.L ADD__CMD
LEA TYPE(PC),A0
MOVE.L #'TYPE',D1
MOVE.L #' ',D2
BSR.L ADD__CMD
* LEA TYPE(PC),A0
MOVE.L #'LIST',D1
MOVE.L #' ',D2
BSR.L ADD__CMD
LEA SYSLEVEL(PC),A0
MOVE.L #'SYSL',D1
MOVE.L #'EVEL',D2
BSR.L ADD__CMD
* LEA SYSLEVEL(PC),A0
MOVE.L #'VER ',D1
MOVE.L #' ',D2
BSR.L ADD__CMD
LEA.L SCREEN0(PC),A0
MOVE.L #'SCRE',D1
MOVE.L #'EN0 ',D2
BSR.L ADD__CMD
* LEA.L SCREEN0(PC),A0
MOVE.L #'SCRN',D1
MOVE.L #'0 ',D2
BSR.L ADD__CMD
LEA.L SCREEN1(PC),A0
MOVE.L #'SCRE',D1
MOVE.L #'EN1 ',D2
BSR.L ADD__CMD
* LEA.L SCREEN1(PC),A0
MOVE.L #'SCRN',D1
MOVE.L #'1 ',D2
BSR.L ADD__CMD
LEA.L SWITCH_SCREENS(PC),A0
MOVE.L #'SCRE',D1
MOVE.L #'ENX ',D2
BSR.L ADD__CMD
* LEA.L SWITCH_SCREENS(PC),A0
MOVE.L #'SWAP',D1
MOVE.L #'S ',D2
BSR.L ADD__CMD
*
* REPLACE SCHDRA ENTRIES W/ SCHDRA_X
TRAP #00 $0 SYSCALL
DC.W $003D GETSCTAB
MOVE.L 4(A0),D0 SCHDRA in D0
LEA SCHDRA_X(PC),A1
MOVEQ #68,D1
SC_TST_L CMP.L (A0),D0
BNE.S SC_NO_RPL
MOVE.L A1,(A0)
SC_NO_RPL ADDQ.L #4,A0
DBRA D1,SC_TST_L
RTS

*
*
* SECOND INITIALIZATION SUBROUTINE
H_0103DE SUBA.L #$00000014,A7
MOVEA.L A7,A6
MOVE.W #019,D0
H_0103F0 MOVE.B #$00,+000(A6,D0.W)
DBRA D0,H_0103F0
MOVE.L #'USRM',+00004(A6)
MOVEQ #001,D4 atachmpd = USRM
MOVE.L #2,8(A6) alloc mem from high to low
TRAP #00 $0 SYSCALL
DC.W $0039 MEM_MGR
NOP
NOP
ADDA.L #$00000014,A7
CMPI.W #$6002,D7
BNE.S NOT_6002
MOVE.W #0,D7
NOT_6002 CMPI.W #+000,D7
BNE.L H_010496
TRAP #00 $0 SYSCALL
DC.W $0034 GBasPtr
MOVE.L #$0000DC00,D1
MOVE.L D1,4(A5)
SUBA.L #$00000014,A7
MOVEA.L A7,A6
MOVE.W #019,D0
H_01043C MOVE.B #$00,+000(A6,D0.W)
DBRA D0,H_01043C
MOVE.L D1,+00004(A6)
MOVE.L +00008(A5),D0 app end
MOVE.L D0,D2
MOVEA.L SYSM_PTR(PC),A4
CMPA.L #0,A4
BEQ.S NO_SYSM
MOVEA.L 12(A4),A4
MOVE.L (A4),D2
SUBQ.L #4,D2
NO_SYSM CMP.L #0,D0
BEQ.S USE_D2
CMP.L 12(A5),D0
BCC.S USE_D2
CMP.L D0,D2
BCS.S USE_D0
USE_D2 MOVE.L D2,D0
USE_D0 LEA USR_SV_ADR(PC),A4
SUBI.L #$04,D0
MOVE.L D0,(A4)
SUBI.L #$00FFC,D0
BRA.S D0_OK
AG_ CMP.W #$600A,D7
BNE.S AFT_
MOVE.L USR_SV_ADR(PC),D0
SUBI.L #$00FFC,D0
BLE.S AFT_
D0_OK SUB.L D1,D0
BCLR #00,D0
LSR.L #5,D0
LSR.L #5,D0
CLR.L D7
MOVE.L D0,+00008(A6)
MOVEQ #003,D4 atachmsp
MOVE.L #'USRM',D5
TRAP #00 $0 SYSCALL
DC.W $0039 MEM_MGR
BRA.L AG_
AFT_ ADDA.L #$00000014,A7
CMPI.W #+000,D7
BNE.S H_010496
CLR.L D0
MOVE.L D0,+00008(A5)
MOVE.L D0,+00004(A5)
H_010496 LEA SSR_SV_ADDR(PC),A4
* MOVE.L SSTACK(PC),A2
LEA.L SUP_STACK(PC),A2
MOVE.L A2,(A4)
LEA.L SSTACK(PC),A4
MOVE.L A2,(A4)
H_0104FC RTS
* END OF SECOND INITIALIZATION SUBROUTINE
*
*
* THIRD INITIALIZATION SUBROUTINE
* updates SC JUMP table entry for MEMMGR
H_0104FE LEA H_010614(PC),A6
LEA H_0105EE(PC),A0
MOVE.L A6,+00032(A0)
LEA H_0107A0(PC),A6
LEA H_0105EE(PC),A0
MOVE.L A6,+00020(A0)
LEA H_01053A(PC),A6
MOVEM.L D0/A0,-(A7)
TRAP #00 $0 SYSCALL
DC.W $003D GETSCTAB
MOVE.W #$0038,D0 SC57 - MEMMGR
ASL.W #2,D0
MOVE.L +000(A0,D0.W),-(A7) push old entry
MOVE.L A6,+000(A0,D0.W) enter new value
MOVEA.L (A7)+,A6 pop old entry
CMPA.L #$0FC0000,A6
BLS.S N_MEMMGR
MOVE.W #$0008,D0 update SC08, now MEMMGR
SUBQ.W #1,D0 compute SC TABLE offset
ASL.W #2,D0
MOVE.L A6,+000(A0,D0.W) enter new value
N_MEMMGR MOVEM.L (A7)+,D0/A0
RTS
* END OF THIRD INITIALIZATION SUBROUTINE
** FOURTH INITIALIZATION SUBROUTINE
*
*
** UPDATES LOADB ENTRY IN SC JUMP TABLE
H_00F9E8 LEA H_00FA0C(PC),A6
MOVEM.L D0/A0,-(A7)
TRAP #00 $0 SYSCALL
DC.W $003D GETSCTAB
MOVE.W #$000D,D0 SC14 - LOADB
ASL.W #2,D0
MOVE.L +000(A0,D0.W),-(A7) push old entry
MOVE.L A6,+000(A0,D0.W) enter new value
MOVEA.L (A7)+,A6 pop old entry
CMPA.L #$0FC0000,A6
BLS.S N_LOADB
MOVE.W #$0006,D0 update SC06, now LOADB
SUBQ.W #1,D0 compute SC TABLE offset
ASL.W #2,D0
MOVE.L A6,+000(A0,D0.W) enter new value
N_LOADB MOVEM.L (A7)+,D0/A0
RTS
** END OF FOURTH INITIALIZATION SUBROUTINE
** FIFTH INITIALIZATION SUBROUTINE
*
*
** UPDATES SYSLEV ENTRY IN SC JUMP TABLE
H_010AA0 LEA NEW_SC32(PC),A6
MOVEM.L D0/A0,-(A7)
TRAP #00 $0 SYSCALL
DC.W $003D GETSCTAB
MOVE.W #$001F,D0 new SC32 SYSLEV
ASL.W #2,D0
MOVE.L A6,+000(A0,D0.W) enter new value
MOVEM.L (A7)+,D0/A0
RTS
** END OF FIFTH INITIALIZATION SUBROUTINE
*
*
** SIXTH INITIALIZATION SUBROUTINE
** ADDS LODMGR AND FMTNAM TO SC JUMP TABLE
H_010D54 LEA H_010DA2(PC),A6
MOVEM.L D0/A0,-(A7)
TRAP #00 $0 SYSCALL
DC.W $003D GETSCTAB
MOVE.W #$003F,D0 new SC64 LODMGR
ASL.W #2,D0
MOVE.L A6,+000(A0,D0.W) enter new value
LEA H_01200C(PC),A6
TRAP #00 $0 SYSCALL
DC.W $003D GETSCTAB
MOVE.W #$003E,D0 NEW SC63 FMTNAM
ASL.W #2,D0
MOVE.L A6,+000(A0,D0.W) enter new value
MOVEM.L (A7)+,D0/A0
* SUBA.L #$000000AE,A7
* MOVEA.L A7,A6
* MOVEA.L A6,A0
* MOVEA.L A6,A5
* MOVE.L #$000000AD,D0 PRE-LOAD DEBUG.EXE, & ENTER INTO RES_CMD_TABLE
*D_CLR_LCB CLR.B (A0)+
* DBF D0,D_CLR_LCB
* MOVE.L #'DEBU',+00006(A6)
* MOVE.L #'G ',+00010(A6)
* MOVE.W #'EX',+00014(A6)
* MOVE.B #'E',+00016(A6)
* MOVE.B #$03,+00018(A6)
* MOVEQ #008,D4 load W/SEARCH
* TRAP #00 $0 SYSCALL
* DC.W $0040 2-LodMgr
* BRA.L EXIT6
* MOVE.L 72(A5),A0
* MOVE.L #0,D0
* MOVE.L #'DEBU',D1
* MOVE.L #'G ',D2
* TRAP #0
* DC.W 50
*EXIT6 ADDA.L #$000000AE,A7
SUBA.L #$000000AE,A7 ------------|
MOVEA.L A7,A6 |
MOVEA.L A6,A0 |
MOVEA.L A6,A5 |
MOVE.L #$000000AD,D0 |PRE-LOAD DIR.EXE
R_CLR_LCB CLR.B (A0)+ |
DBF D0,R_CLR_LCB |
MOVE.L #'DIR ',+00006(A6) |
MOVE.L #' ',+00010(A6) |
MOVE.W #'EX',+00014(A6) |
MOVE.B #'E',+00016(A6) |
MOVE.B #$03,+00018(A6) |
MOVEQ #008,D4 load W/SEARCH |
TRAP #00 $0 SYSCALL |
DC.W $0040 2-LodMgr |
NOP |
NOP |
* ADDA.L #$000000AE,A7 -----------|
* SUBA.L #$000000AE,A7 ----------|
MOVEA.L A7,A6 |
MOVEA.L A6,A0 |
MOVEA.L A6,A5 |
MOVE.L #$000000AD,D0 | PRE-LOAD DEBUG.EXE,
D_CLR_LCB CLR.B (A0)+ | & ENTER INTO RES_CMD_TABLE
DBF D0,D_CLR_LCB |
MOVE.L #'DEBU',+00006(A6) |
MOVE.L #'G ',+00010(A6) |
MOVE.W #'EX',+00014(A6) |
MOVE.B #'E',+00016(A6) |
MOVE.B #$03,+00018(A6) |
MOVEQ #008,D4 load W/SEARCH|
TRAP #00 $0 SYSCALL |
DC.W $0040 2-LodMgr |
BRA.L EXIT6 |
MOVE.L 72(A5),A0 |
MOVE.L #0,D0 |
MOVE.L #'DEBU',D1 |
MOVE.L #'G ',D2 |
TRAP #0 |
DC.W 50 |
EXIT6 ADDA.L #$000000AE,A7 --------|
LEA.L NEWPRTSC(PC),A0
TRAP #0
DC.W 62
CMPA.L #$0FC2BAC,A0
BNE.S PRTSC_OVER
LEA.L NEWPRTSC(PC),A0
PRTSC_OVER MOVEA.L A0,A1
TRAP #0
DC.W 62
LEA.L PRTSC_VEC(PC),A0
MOVE.L A1,(A0)
MOVE.L A1,A0
MOVE.L #'PRTS',D1
MOVE.L #'C ',D2
BSR.L ADD__CMD
LEA.L N_TRAP0(PC),A0
MOVE.L A0,$080
RTS
** END OF SIXTH INITIALIZATION SUBROUTINE
*
END_TRANS EQU *
DCB.L 16,0
*
*
SYS_LEV_IND EQU *
H_00E298 DC.L $02010011 SYS_LEVEL INDICATOR; level 2, version 01
* internal level 0017
PRTSC_VEC DC.L 0
*
*
**
CONDIB EQU *
CNVOL DC.B '#CON '
CNDTD DC.B 1
CNTRN DC.B 0
DC.L 0,0
DC.W 0
CNFPKT DC.L 0
DC.L 0
*
CONFPKT DC.W 8
CTRLBREAK EQU *
DC.W 0,0,9
CTRLNUML EQU *
DC.W 0,0,0,0
RSTCONB DC.W 7,0
*
*
ADD__CMD MOVEQ #000,D0 add command
* SUBA.L #40,A7
TRAP #00 $0 SYSCALL
DC.W $0032 RES_CMD
* ADDA.L #40,A7
RTS
*
*****************************************************************************
* New TRAP 0 handler
N_TRAP0 EQU *
MOVE.L A0,-(A7)
MOVEA.L 6(A7),A0
CMPI.W #70,(A0) New TRAP #0 handler - check for
BCC.S SC_BAD syscall number out of range, if
CMPI.W #0,(A0) so - make it exit
BGT.S SC_OUT
SC_BAD MOVE.W #43,(A0)
SC_OUT MOVEA.L (A7)+,A0
JMP $FC413E
MAYBEGM LEA H_00EBAE(PC),A6
CMPI.B #4,88(A6)
BEQ.S NO_GIVIT
RTS
NO_GIVIT CMP.L #0,26(A6)
BEQ.S NONO_NO2
MOVEQ #5,D4 LMRETMEM
TRAP #0 SYSCALL
DC.W 64 LOD_MGR
NOP
NOP
MOVE.L 76(A6),26(A6)
CMP.L #0,26(A6)
BEQ.S NONO_NO2
MOVEQ #5,D4 LMRETMEM
TRAP #0 SYSCALL
DC.W 64 LOD_MGR
NOP
NOP
RTS
NONO_NO2 MOVEQ #2,D4 INQLOAD
TRAP #0 SYSCALL
DC.W 64 LOD_MGR
RTS
NOP
MOVEQ #5,D4 LMRETMEM
TRAP #0 SYSCALL
DC.W 64 LOD_MGR
NOP
NOP
RTS
FREEIT MOVE SR,D0
TRAP #00 $0 SYSCALL
DC.W $0030 2 SUP MODE
MOVEM.L D0/D5/A1/A4/A6,-(A7)
SUBA.L #$00000014,A7
MOVEA.L A7,A4
MOVEQ #020,D0
UL0E75E MOVE.B #$00,+000(A4,D0.W)
DBRA D0,UL0E75E
* MOVE.L UL_CONST(PC),012(A4)
MOVEA.L A4,A6
LEA H_00EBAE(PC),A4
MOVE.L 40(A4),12(A6)
F_GM_L MOVEQ #006,D4 GIVMEM
MOVE.L #'USRM',D5
TRAP #00 $0 SYSCALL
DC.W $0039 MEM_MGR
NOP
NOP
BRA.L F_OUT
F_T_SETS LEA.L UL_DO_SET(PC),A0
CMP.W #1,(A0)
BNE.L F_OUT
MOVEA.L USRM_PTR(PC),A4
MOVEA.L 12(A4),A4
MOVEA.L 12(A4),A0
CMPA.L #$0DC00,A0
BEQ.L F_OUT
MOVEA.L #$0DC00,A2
F_T_L ANDI.L #$0FFFFFE,4(A2)
MOVEA.L 4(A2),A1
CMPA.L A0,A1
BEQ.S F_SETDC00
CMPA.L #0,A1
BEQ.S F_SETBOTH
CMPA.L $0A10,A1
BCC.L F_OUT
MOVEA.L A1,A2
BRA F_T_L
F_SETBOTH MOVE.L A0,4(A2)
F_SETDC00 MOVE.L #$0DC00,12(A4)
MOVE.L #$DC00,A0
F_OUT_3 LEA.L 4(A0),A1
MOVE.L 4(A0),A0
CMPA.L #0,A0
BEQ.L F_OUT
CMPA.L #$0DC00,A0
BNE F_OUT_3
MOVE.L #0,(A1)
BRA.L F_OUT
FREEIT2 MOVE SR,D0
TRAP #00 $0 SYSCALL
DC.W $0030 2 SUP MODE
MOVEM.L D0/D5/A1/A4/A6,-(A7)
SUBA.L #$00000014,A7
MOVEA.L A7,A4
MOVEQ #020,D0
ULTE75E MOVE.B #$00,+000(A4,D0.W)
DBRA D0,ULTE75E
MOVEA.L A4,A6
LEA H_00EBAE(PC),A4
MOVE.L 40(A4),012(A4)
MOVE.L 44(A4),4(A6)
MOVE.L 40(A4),A4
MOVE.L -8(A4),D1
CMP.L 4(A6),D1
BEQ.S F_GM_L2
BRA.S F_GM_N
F_GM_L2 MOVEQ #006,D4 GIVMEM
MOVEA.L USRM_PTR(PC),A2
MOVE.L #2,8(A2)
F_GM_L3 MOVE.L #'USRM',D5
MOVE.L D0,-(A7)
TRAP #00 $0 SYSCALL
DC.W $0039 MEM_MGR
BRA.L F_ERR
MOVE.L (A7)+,D0
F_GM_N MOVEA.L USRM_PTR(PC),A4
MOVEA.L 12(A4),A4
CMPI.L #$0DC00,(A4)
BEQ.S F_T_OTHER
CMPI.L #$0,(A4)
BEQ F_T_SETS
F_GME_L MOVE.L (A4),4(A6)
LEA.L 8(A4),A4
MOVE.L A4,12(A6)
BRA F_GM_L2
F_T_OTHER MOVEA.L $0DC04,A4
CMPA.L #$0,A4
BEQ F_T_SETS
MOVE.L (A4),4(A6)
LEA.L 8(A4),A4
MOVE.L A4,12(A6)
BRA F_GM_L2
F_OUT ADDA.L #$00000014,A7
MOVEM.L (A7)+,D0/D5/A1/A4/A6
MOVE D0,SR
RTS
F_ERR_TOL DC.L 5
F_ERR MOVE.L (A7)+,D0
ADDQ.L #1,D0
CMP.L F_ERR_TOL(PC),D0
BCC F_T_SETS
MOVEA.L USRM_PTR(PC),A2
CMP.L #0,8(A2)
BNE.S F_GRONK
MOVE.L #2,8(A2)
BRA F_GME_L
F_GRONK MOVE.L #0,8(A2)
BRA F_GM_L3
BAS_SET MOVE.L D0,-(A7)
MOVE SR,D0
TRAP #0
DC.W 48 SUPMODE
MOVEM.L D0-D7/A0-A6,-(A7)
LEA.L UL_FOO(PC),A3
MOVE.L #0,(A3)
MOVEQ #007,D4 INQMEM
MOVE.L #'USRM',D5
LEA.L SM_0E33A(PC),A6
TRAP #0 SYSCALL
DC.W $0039 MEM_MGR
BRA.L UL_SKIP
MOVE.L SM_0E34A(PC),D0 cont. free
TRAP #0 SYSCALL
DC.W 0052 GBASTPR
MOVE.L #$0DC08,D1
CMP.L #0,4(A5)
BNE.S UL_SK1
MOVE.L D1,4(A5)
UL_SK1 ADD.L D1,D0
SUBQ.L #2,D0
CMP.L #0,8(A5)
BEQ.S UL_DO
CMP.L 8(A5),D0
BCS.S UL_SK2
UL_DO MOVE.L D0,8(A5)
UL_SK2 ADDQ.L #2,D0
MOVE.L D0,(A3)
UL_SKIP MOVEM.L (A7)+,D0-D7/A0-A6
MOVE D0,SR
MOVE.L (A7)+,D0
RTS
*
*
UL_FOO DC.L 0
USRM_PTR DC.L 0
SYSM_PTR DC.L 0
*
USR_SV_ADDR EQU *
USP_SV_ADDR EQU *
H_010D9A DC.L 0
*
SSR_SV_ADDR EQU *
SSP_SV_ADDR EQU *
H_010D9E DC.L 0
*
SR_SAVE DC.W 0
*
SSTACK DC.L 0
*
*
SETDD LEA +01108(A1),A2
MOVE.L A2,+00400(A1)
MOVE.B #247,D5
BSR SUB_CLOSE
SUBA.L #74,A7
MOVEA.L A7,A6
MOVEA.L +00400(A1),A4
MOVE.W #73,D0
SETDD_1 MOVE.B #0,0(A6,D0.W)
DBRA D0,SETDD_1
TRAP #0
DC.W 15 FMTDIB
MOVE.L #'DIR ',38(A6)
MOVE.L #' ',42(A6)
MOVE.W #'DI',46(A6)
MOVE.B #'R',48(A6)
LEA SETDD_PKT(PC),A5
MOVE.L A5,18(A6)
MOVE.B #1,6(A6)
ORI.W #$040,016(A6)
MOVE.B #247,D5
BSR SUB_OPEN
CMPI.W #0,D7
BNE KBD_ERR_
LEA SETDD_PKT(PC),A6
MOVE.B #247,D5
TRAP #6
DC.W 6 FUNC
BRA.L KBD_ERR_
MOVE.B #242,D5
BSR SUB_CLOSE
ADDA.L #66,A7
BRA INIT_DONE
SETDD_PKT DC.W 23,0,0,0
*
RST_NXTOK MOVE.L D0,-(A7)
MOVE SR,D0
TRAP #0 SYSCALL
DC.W $0030 2-SUPMODE
MOVEM.L D0/A1-A2/A5,-(A7)
TRAP #0 SYSCALL
DC.W $0034 GBasPtr
MOVEA.L 016(A5),A1
LEA 01108(A1),A2
MOVE.L A2,0400(A1)
MOVEM.L (A7)+,D0/A1-A2/A5
MOVE D0,SR
MOVE.L (A7)+,D0
RTS
CRT_CR DC.B 8
DC.B 0
IS_SUBMIT DC.B 0
DS.W 0
*
*----------------------------------- KEYBOARD COMMAND. INTERPRETER
* KEYBOARD COMMAND INTERPRETER
C_B_KBD_CMD_INT EQU *
DC.W $40C6 MOVE SR,D6
MOVE.L A0,-(A7)
C_B_INT EQU *
TRAP #00 $0 SYSCALL
DC.W $0030 SUP MODE
MOVE.L A5,-(A7)
TRAP #00 $0 SYSCALL
DC.W $0034 GBasPtr
MOVEA.L +00016(A5),A1
MOVEA.L (A7)+,A5
MOVE.B #0,1286(A1)
MOVEI.B #$F5,D5 | LUN $F5 is used by SUBMIT for input file
LEA.L 0,A6 | no FUNPKT
TRAP #6 |I/O MANAGER
DC.W 2 |CLOSE
BRA.L NOT_SUBMIT - if error, was not in SUBMIT, go Clear Ctrl-Break
LEA IS_SUBMIT(PC),A0
MOVEI.B #0,(A0)
NOT_SUBMIT MOVEI.B #0,$43B0 Clear Ctrl-BREAK indicator
IS_SUBM_ MOVE.L (A7)+,A0
BRA.S IN_KBD_CMD
*
KBD_ERR_ CMPI.W #$6FFF,D7
BLS.S NOT_L_ERR
BSR.L LOD_ERR_PRT
BRA.S KBD_CMD_INT
NOT_L_ERR TRAP #0 SYSCALL
DC.W 12 PRTERR
*
KBD_CMD_INT EQU *
H_00E4D6 DC.W $40C6 MOVE SR,D6
IN_KBD_CMD TRAP #00 $0 SYSCALL
DC.W $0031 USERMODE
LEA USR_SV_ADR(PC),A6 @10D9A
MOVEA.L (A6),A7
TRAP #00 $0 SYSCALL
DC.W $0030 SUP MODE
MOVE #$2000,SR
LEA L_SEARCH(PC),A6
MOVE.B #$FF,(A6) - NO SEARCH IN LODMGR
LEA SUP_STACK(PC),A7
MOVE.W P_B_PCBNO(PC),D0
TRAP #0 SYSCALL
DC.W 27 GSTAT
CMP.L #'PBTA',D1
BNE.S KBD_CONT
CLR.B D0 THERE IS A PBTASK
MOVEQ #2,D1 DELAY US BY 2 TICKS
TRAP #0
DC.W 29
BRA KBD_CMD_INT
KBD_CONT MOVEA.L #$0EB2,A6 - TRAP INDICATOR
CMP.B #0,(A6)
BEQ.S NON_NEG
BMI.S TRP_ZAP
SUB.B #1,(A6) - DECREMENT TRAP INDIC.
BCC.S NON_NEG
TRP_ZAP MOVE.B #0,(A6) - IF NEG. ZERO IT
LEA.L TRAPB(PC),A0 |
MOVE.L A0,$AC | restore trap vectors
LEA.L TRAPC(PC),A0 |
MOVE.L A0,$B0 |
LEA.L ALT_TRAP(PC),A0 |
MOVE.L A0,$0A30 |Prep Alternate Trap Error Handler
NON_NEG DC.W $46C6 MOVE D6,SR restore original SR for moment
BSR.L H_00E72E CHECK FOR POST .BIN CLEANUP
MOVE.L A5,-(A7)
TRAP #00 $0 SYSCALL
DC.W $0034 GBasPtr
MOVEA.L +00016(A5),A1
MOVEA.L (A7)+,A5
MOVE.L A0,-(A7)
LEA IS_SUBMIT(PC),A0
CMP.B #$FF,(A0)
BEQ.S SKIP_SUBMIT
MOVE SR,D6 save SR in D6
TRAP #0 SYSCALL
DC.W 48 SUPMODE
* CMP.B #$FF,$43B0 CTRL-Break Byte
DC.W $0C38,$00FF CMPI.B #$FF,$43B0 CHECK CTRL-Break BYTE
DC.W $43B0
BEQ C_B_INT
MOVE D6,SR
SKIP_SUBMIT EQU *
MOVE.L (A7)+,A0
MOVE.B #$FF,+01285(A1)
TRAP #00 $0 SYSCALL
DC.W $002A GetCmdE*
MOVE.L D0,-(A7)
TRAP #0 SYSCALL |
DC.W 55 INQCRTCR |
OR.B CRT_CR(PC),D0 | RESET THE CRT
TRAP #0 SYSCALL |
DC.W 54 SETCRTCR |
MOVE.L (A7)+,D0
MOVE SR,D6 save SR in D6
TRAP #0 SYSCALL
DC.W 48 SUPMODE
* CMP.B #$FF,$43B0 CTRL-Break Byte
DC.W $0C38,$00FF CMPI.B #$FF,$43B0 CHECK CTRL-Break BYTE
DC.W $43B0
BEQ C_B_KBD_CMD_INT
MOVE.B LEDS_(PC),$0F00001
MOVEQ #0,D0 |
LEA 01108(A1),A2 | make upper case and then parse
UC_LOOP CMPI.B #'a',0(A2,D0) |
BLT.S UCL_E576 |
CMPI.B #'z',0(A2,D0) |
BGT.S UCL_E576 |
ANDI.B #$DF,0(A2,D0) |
UCL_E576 CMPI.B #13,0(A2,D0) |
BEQ.S UCL_OUT |
ADDQ.W #1,D0 |
CMPI.W #80,D0 |
BCS UC_LOOP |
UCL_OUT LEA 01108(A1),A2
MOVE.L A2,0400(A1)
MOVEA.L A2,A3
MOVE.B #$FF,01285(A1)
MOVE D6,SR restore original SR
CLI_NXT TRAP #00 $0 SYSCALL
DC.W $0010 NxTok*
MOVE.B #$00,01285(A1)
MOVE.B 0411(A1),D2
MOVEA.L 0400(A1),A4
CMPI.B #+001,D2 is name?
BEQ.S H_00E582 Yes
CMPI.B #+003,D2 is number?
BNE.S H_00E552 No
MOVE.B #$01,D1 ;number as input
H_00E532 MOVE.B (A4)+,D2
CMPI.B #':',D2
BNE.S H_00E540
MOVE.B (A4)+,D2
CMPI.B #13,D2
BEQ SETDD
BRA.L TRY_LOAD
H_00E540 ADDQ.B #1,D1
H_00E542 CMPI.B #+006,D1
BLE.S H_00E532
MOVEA.L #BADCOMMAND,A6
BRA.S H_00E57A
H_00E552 CMPI.B #+013,D2 Not name or number ...
BEQ KBD_CMD_INT if was CR, try again
CMPI.B #'?',(A3)
BEQ.L RESIDENT
CMPI.B #3,(A3) HBOOT on Control-C
BEQ.L HBOOT
DC.W $40C6 MOVE SR,D6
TRAP #00 $0 SYSCALL
DC.W $0030 SUP MODE
CMPI.B #' ',(A3) |
BGE.S CMD_ERR | IF IT STARTS WITH CONTROL CHAR. MAKE IT A SPACE
MOVE.B #' ',(A3) | AND TRY AGAIN, ELSE AN ERROR
BRA UCL_OUT |
CMD_ERR MOVEA.L #CMDFMTERR,A6
H_00E57A TRAP #00 $0 SYSCALL
DC.W $0013 PrtErMsg*
MOVE D6,SR restore original SR
BRA KBD_CMD_INT
*
H_00E582 MOVEA.L +00400(A1),A4 ;name as input
CMPI.B #'.',(A4)
BEQ.L TRY_LOAD
CMPI.W #8,0408(A1) was cmpi.w #7, (wrong)
BGT.L TRY_LOAD
CMPI.B #':',(A4)+
BNE.S TRY_RESC
CMPI.B #13,(A4)
BEQ SETDD
CMPI.B #' ',(A4)
BEQ SETDD
BRA.L TRY_LOAD
TRY_RESC LEA RES_CMD_TABLE(PC),A5
H_00E59C CMPI.B #+255,(A5)
BEQ.L TRY_LOAD
IS_RES_CMD EQU *
MOVEA.L +00404(A1),A4
MOVE.W +00408(A1),D1
MOVE.W #$0000,D3
H_00E5B0 MOVE.B (A4)+,D2
CMP.B +000(A5,D3.W),D2
BEQ.S H_00E5BE
MOVE.B #$00,D2
H_00E5BE ADDQ.W #1,D3
CMP.W D3,D1
BEQ.S H_00E5CA
CMPI.B #+000,D2
BNE.S H_00E5B0
H_00E5CA CMPI.B #+000,D2
BEQ.S H_00E5E6
CMPI.B #8,D3
BEQ.S KC_IS_NUL
CMPI.B #' ',0(A5,D3.W)
BNE.S H_00E5E6
KC_IS_NUL CMPI.L #0,8(A5)
BEQ.S TRY_LOAD
BSR BAS_SET
MOVEA.L 08(A5),A1
MOVE.L (A5),D0
MOVE.L 4(A5),D1
BSR.L KBD_LCB
TRAP #0
DC.W 48
LEA.L NONONO(PC),A0
MOVE.L A0,-(A7)
MOVE SR_SAVE(PC),SR
CMPI.L #0,060(A4)
BEQ.S KC_0E6C8
CMPI.L #2,060(A4)
BLE.S KC_0E6C8
MOVE.L 048(A4),D3
ADD.L 052(A4),D3
ADD.L 056(A4),D3
ADD.L 060(A4),D3
SUBQ.L #4,D3
MOVEA.L D3,A7
KC_0E6C8 MOVE.L A0,-(A7)
JSR (A1) DO INTERNAL COMMAND
BRA.L NONONO CLEANUP W/O UNLOADING
H_00E5E6 ADDA.L #$0C,A5 TRY NEXT ENTRY IN KBD_CMD_TABLE
BRA H_00E59C
*
* Keyboard Command Interpreter, Phase 2
* COULDN'T FIND AS RESIDENT COMMAND, NEXT TRY LOAD FILE
TRY_LOAD LEA +01108(A1),A2
MOVE.L A2,+00400(A1)
MOVE.B #$FF,+01298(A1)
MOVEM.L D0/D6/A0,-(A7)
DC.W $40C6 MOVE SR,D6
BTST #13,D6
BNE.S H_00E60E
TRAP #00 $0 SYSCALL
DC.W $0030 SUP MODE
H_00E60E LEA H_00EBAE(PC),A0
MOVE.W #0173,D0
H_00E61A MOVE.B #$00,+000(A0,D0.W)
DBRA D0,H_00E61A
DC.W $46C6 MOVE D6,SR
MOVEM.L (A7)+,D0/D6/A0
BSR.L H_00EC60 LOAD IT! even if BIN
TRAP #00 $0 SYSCALL
DC.W $0034 GBasPtr
MOVEA.L +00016(A5),A1
CLR.B +01298(A1)
CMPI.W #0,D7
BNE.L TRY_SUBM
DC.W $40C0 MOVE SR,D0
BTST #13,D0
BNE.S H_00E65A
TRAP #00 $0 SYSCALL
DC.W $0030 2 SUP MODE
H_00E65A EQU *
LEA L_SEARCH(PC),A6
MOVE.B #0,(A6) - DO SEARCH IN LODMGR
LEA H_00EBAE(PC),A4
MOVE.B #03,-2(A4) ANOTHER UNLOAD INDIC.
DC.W $46C0 MOVE D0,SR
TST.L +00412(A1)
BEQ.L TRY_SUBM
MOVEA.L 412(A1),A1
LEA H_00EBAE(PC),A4
MOVEM.L A0,-(A7)
MOVEA.L 040(A4),A0
ADDA.L 044(A4),A0
CMPA.L 040(A4),A1
BLT.S H_00E68C
CMPA.L A1,A0
BGT.S H_00E69A
H_00E68C LEA BADXFER(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0013 PrtErMsg*
CLR.W D7
BRA KBD_CMD_INT
H_00E69A MOVEM.L (A7)+,A0
TRAP #0
DC.W 48
MOVE SR_SAVE(PC),SR
CMPI.B #04,088(A4)
BNE.S CLI_IS_BIN
BSR BAS_SET
CMPI.L #0,060(A4)
BLE.S H_00E6C8
CMPI.L #2,060(A4)
BEQ.S H_00E6C8
MOVE.L 048(A4),D0
ADD.L 052(A4),D0
ADD.L 056(A4),D0
ADD.L 060(A4),D0
SUBQ.L #4,D0
MOVEA.L D0,A7
H_00E6C8 MOVE.L 030(A4),D0
MOVE.L 034(A4),D1
JSR (A1)
H_00E6D2 TRAP #00 $0 SYSCALL
DC.W $002B Exit
CLI_IS_BIN BSR FREEIT MARK MEMORY AS FREE FOR FURTHER LOADS
BRA.S H_00E6C8
BADXFER EQU *
H_00E6D6 DC.B 'BAD TRANSFER ADDRESS',$D,$0
DS.W 0
H_00E6EC: DC.W +00000
*
* Keyboard Command Interpreter, phase 3
* NOT LOAD FILE, TRY SUBMIT FILE ...
TRY_SUBM CMPI.B #+000,+01286(A1)
BNE H_00E68C
LEA +01108(A1),A2
MOVE.L A2,+00400(A1)
BSR.L SUBMIT
CMPI.B #0,D7
BEQ H_00E6D2
MOVE.L #249,D5
TRAP #00 $0 SYSCALL
DC.W 0010 DPrtErr
BRA H_00E6D2
*
*****************************************************************************
C_DIAG EQU * this code implements the resident command DIAG
H_00E71E MOVEA.L #$00ABCDEF,A0 get into SupMode
TRAP #05
* address $00F2000C is ROM - Addr pointer- Man. DIAG
MOVEA.L $00F2000C,A0
JMP (A0) Bye!
*
*****************************************************************************
UNLOADBS TRAP #00 SYSCALL
DC.W $0030 2 SUP MODE
LEA H_00EC5C(PC),A0
MOVE.B #255,(A0)
LEA H_00EBAE(PC),A6
CMPI.B #1,088(A6) FULL CLEANUP?
BNE.S UNLOADBN
BSR FREEIT
UNLOADBN BSR FREEIT2
TRAP #00 $0 SYSCALL
DC.W $0031 2 usr MODE
BSR.S UNLOADBE
RTS
UL_CONST DC.L $E000
UL_DO_SET DC.W 0
*
UNLOADB PEA.L SYSMAP(PC)
TRAP #0
DC.W 48
PEA.L SYSMAP(PC)
BSR.L GET_NUM
LEA.L UL_DO_SET(PC),A0
MOVE.W #1,(A0)
CMP.L #15,D0
BCC.S ULB_OK
MOVEQ.L #15,D0
MOVE.W #0,(A0)
ULB_OK LEA.L F_ERR_TOL(PC),A0
MOVE.L D0,(A0)
BSR UNLOADBS
LEA.L UL_DO_SET(PC),A0
CMP.W #1,(A0)
BNE.S H_00E72A
BSR FREEIT2
H_00E72A BRA.L SYSMAP
H_00E72E LEA H_00EC5C(PC),A0 check for post .BIN cleanup
CMPI.B #+255,(A0) was "magic" byte set?
BEQ.S UNLOADBE YES! do cleanup
LEA H_00EBAE(PC),A6
CMPI.B #+001,+00088(A6)
BEQ.S UNLOADBE
CMPI.B #3,-2(A6)
BEQ.S UNLOADBE
BRA.L H_00E7CA
*
UNLOADBE MOVEM.L D0/D4-D5/A0/A4-A6,-(A7) yes! do cleanup
TRAP #00 $0 SYSCALL
DC.W $0030 2 SUP MODE
LEA H_00EBAE(PC),A6
CMPI.B #4,088(A6)
BNE.S H_00E750
BSR MAYBEGM
BRA.S H_00E7A4
H_00E750 SUBA.L #$00000014,A7
MOVEA.L A7,A4
MOVEQ #000,D0
H_00E75E MOVE.B #$00,+000(A4,D0.W)
ADDQ.L #1,D0
H_00E766 CMPI.L #$00000013,D0
BLE.S H_00E75E
MOVE.L +00040(A6),+00012(A4)
MOVEA.L A4,A6
MOVEQ #006,D4 GIVMEM
MOVE.L #'USRM',D5
TRAP #00 $0 SYSCALL
DC.W $0039 MEM_MGR
NOP
NOP
H_00E786 ADDA.L #$00000014,A7
BRA.S H_00E7BA
H_00E7A4 TRAP #00 $0 SYSCALL
DC.W $0034 GBasPtr
MOVE.L #$00000000,4(A5)
MOVE.L #$00000000,8(A5)
CMP.L #0,76(A6)
BEQ.S UL_NOT
MOVE.L 76(A6),26(A6)
UL_NOT MOVEQ #001,D4 unload
TRAP #0 SYSCALL
DC.W $0040 2-LodMgr
BRA.L H_00E7B4
H_00E7AE BRA.S H_00E7BA
H_00E7B4 TRAP #00 $0 SYSCALL
DC.W $000C PrtErr*
H_00E7BA LEA H_00EC5C(PC),A0 UNMARK "MAGIC" BYTE (.BIN LOAD)
MOVE.B #$00,(A0)
LEA B_UL(PC),A0 UNMARK OTHER CLEANUP INDICATOR
MOVE.B #0,(A0)
MOVE.B #0,90(A0)
LEA UL_CONST(PC),A0
MOVE.L #$E000,(A0)
LEA.L P_B_PCBNO(PC),A0
MOVE.W #0,(A0)
TRAP #00 $0 SYSCALL 2
DC.W $0031 2 USERMODE
MOVEM.L (A7)+,D0/D4-D5/A0/A4-A6
H_00E7CA MOVEM.L D5/A6,-(A7)
LEA CAPS_ON(PC),A6
MOVE.B #246,D5
TRAP #6 IOMGR
DC.W 6 FUNC
BSR.L OPE246
MOVE.B #247,D5
BSR SUB_CLOSE
MOVE.B #241,D5
BSR SUB_CLOSE
MOVEM.L (A7)+,D5/A6
BSR BAS_SET
RTS
CAPS_ON DC.W 24,0,0
OPE246 SUBA.L #74,A7
MOVEA.L A7,A6
MOVE.W #73,D0
OPE246_1 MOVE.B #0,0(A6,D0.W)
DBRA D0,OPE246_1
MOVE.L #'#CON',(A6)
MOVE.W #' ',4(A6)
MOVE.W #$0101,6(A6)
ORI.W #$0040,16(A6)
MOVE.B #246,D5
BSR.L SUB_OPEN
ADDA.L #74,A7
RTS
*
*****************************************************************************
NEW_SC50 EQU *
H_00E7CC CLR.W D7
CMPI.W #+000,D0 D0=0 ADD COMMAND
BNE.S H_00E7DE
BSR.S H_00E814
BRA.S H_00E80E
H_00E7DE CMPI.W #+001,D0 D0=1 DELETE COMMAND
BNE.S H_00E7EE
MOVE.L D3,-(A7)
MOVE.L D0,D3
BSR.L H_00E870
MOVE.L (A7)+,D3
BRA.S SC50_BYE
H_00E7EE CMPI.W #+002,D0 D0=2 LOOKUP COMMAND
BNE.S SC50_IS3
BSR.L SC50D02
BRA.S SC50_BYE
SC50_IS3 CMPI.W #+003,D0 D0=3 DELETE COMMAND ONLY FROM USRM
BNE.S H_00E7FE
MOVE.L D3,-(A7)
MOVE.L D0,D3
BSR.L H_00E870
MOVE.L (A7)+,D3
CMP.W #0,D7
BNE.S SC50_BYE
BSR.L UN_ALIAS
BRA.S SC50_BYE
SC50_IS4 CMPI.W #+004,D0 D0=4 return SSP_TOP value in D0
BNE.S SC50_IS5
* MOVE.L SSTACK(PC),A0
LEA SUP_STACK(PC),A0
MOVE.L A0,4(A7)
BRA.S H_00E80E
SC50_IS5 CMPI.W #+005,D0 D0=5 UNALIAS
BNE.S H_00E7FE
BSR.L UN_ALIAS
BRA.S SC50_BYE
H_00E7FE MOVE.W #$4100,D7
SC50_BYE EQU *
H_00E802 CMPI.W #+000,D7
BNE.S H_00E80E
MOVE.L A0,+00036(A7)
H_00E80E MOVE.W D7,+00034(A7)
RTS
*
*NEW SC50 D0=0 when entered should have NAME (8 char) in D1/D2
* & address in A0 = ENTERS RESIDENT COMMAND INTO TABLE
H_00E814 MOVE.L A0,-(A7)
BSR.L H_00E8C0
CMPI.W #+000,D7 command already in table?
BNE.S H_00E828 NO - go add it, if room enough
CMPA.L #0,A0 null command - place holder?
BNE.S ADD_CMD_BAD no
MOVE.L (A7)+,-4(A1) yes - is null
RTS
ADD_CMD_BAD MOVE.W #$4103,D7
MOVEA.L (A7)+,A0
BRA.S H_00E86E
H_00E828 MOVEA.L (A7)+,A0
LEA RES_CMD_TABLE(PC),A1
MOVE.W #255,D7
H_00E82E CMPI.L #$FFFFFFFF,8(A1)
BNE.S H_00E842
CMP.W #255,D7 NO FREE SLOTS - TRY AGAIN W/O SKIPPING
BNE.S SC50_PS2 OVER NULL PLACEHOLDERS
LEA RES_CMD_TABLE(PC),A1
MOVE.W #256,D7
BRA.S H_00E842
SC50_PS2 MOVE.W #$4101,D7
BRA.S H_00E86E
H_00E842 CMPI.L #0,(A1)
BEQ.S H_00E84A
CMP.W #256,D7
BNE.S H_00E864
H_00E84A CMPI.L #0,+00004(A1)
BEQ.S H_00E852
CMP.W #256,D7
BNE.S H_00E864
CMP.L #0,8(A1)
BNE.S H_00E864
H_00E852 CLR.W D7
MOVE.L D1,(A1)
MOVE.L D2,4(A1)
MOVE.L A0,8(A1)
H_00E864 LEA 12(A1),A1
H_00E868 CMPI.W #255,D7
BEQ.S H_00E82E
CMPI.W #256,D0
BEQ.S H_00E82E
H_00E86E RTS
*
*NEW SC50 D0=1 = ? DELETE RESIDENT COMMAND FROM TABLE
H_00E870 LEA RES_CMD_TABLE(PC),A1
MOVEQ #255,D7
H_00E876 CMPI.L #$FFFFFFFF,+00008(A1)
BNE.S H_00E88A
MOVE.W #$4102,D7
BRA.S H_00E8B8
H_00E88A CMP.L (A1),D1
BNE.S H_00E8B4
CMP.L 4(A1),D2
BNE.S H_00E8B4
MOVE.W #$4104,D7
MOVEA.L 8(A1),A0
CMP.B #1,D3 IF D3=1 DELETE IT
BEQ.S SC50D1_DOIT ELSE CHECK THAT
MOVEM.L A5,-(A7) ENTRY NOT IN SYSTEM
LEA.L USR_SV_ADR(PC),A5
MOVE.L (A5),D3
MOVEM.L (A7)+,A5
CMPA.L D3,A0
BHI.S NO_GO_
SC50D1_DOIT MOVE.L #0,8(A1)
MOVE.W #0,D7
H_00E8B4 LEA +00012(A1),A1
H_00E8B8 CMPI.W #+65535,D7
BEQ.S H_00E876
RTS
NO_GO_ MOVEQ #0,D1
MOVEA.L D1,A0
BRA H_00E8B4
*
*NEW SC50 D0=2 = LOOKUP RESIDENT COMMAND IN TABLE
SC50D02 BSR.S H_00E8C0
CMPA.L #0,A0
BEQ.S H_00E8CE
RTS
H_00E8C0 LEA RES_CMD_TABLE(PC),A1
MOVEQ #255,D7
H_00E8C6 CMPI.L #$FFFFFFFF,(A1)
BNE.S H_00E8D8
H_00E8CE MOVE.W #$4102,D7
RTS
H_00E8D8 CMP.L (A1),D1
BNE.S H_00E8EC
CMP.L 4(A1),D2
BNE.S H_00E8EC
CLR.W D7
MOVEA.L 8(A1),A0
H_00E8EC LEA 12(A1),A1
H_00E8F0 CMPI.W #+65535,D7
BEQ.S H_00E8C6
RTS
UN_ALIAS CMPA.L #0,A0
BNE.S OK_UN_ALIAS
RTS
OK_UN_ALIAS LEA RES_CMD_TABLE(PC),A1
UN_A_LOOP CMP.L #-1,8(A1)
BNE.S UN_A_CONT
RTS
UN_A_CONT CMPA.L 8(A1),A0
BNE.S NEXT
MOVE.L #0,8(A1)
NEXT ADDA.L #12,A1
BRA UN_A_LOOP
DS.W 0
*
RES_CMD_TABLE EQU * contains "null" entries for filling after load
H_00E94A EQU * this keeps listcmd output in alphabetical order
DC.B 'ALIAS '
DC.L 0
DC.B 'ALINK '
DC.L 0
DC.B 'ANYCOLOR'
DC.L 0
DC.B 'ARRGH '
DC.L $0FC000F
DC.B 'ATCHDEV '
DC.L $00FC2958
DC.B 'ATCHDRB '
DC.L 0
DC.B 'ATCHDRVB'
DC.L 0
DC.B 'ATCHDRV '
DC.L 0
DC.B 'BASIC '
DC.L 0
DC.B 'BEEP '
DC.L 0
DC.B 'BLACK '
DC.L 0
DC.B 'BLANK '
DC.L 0
DC.B 'BLUE '
DC.L 0
DC.B 'C '
DC.L 0
DC.B 'CAT '
DC.L 0
DC.B 'CBOOT '
DC.L 0
DC.B 'CC '
DC.L 0
DC.B 'CCNSL0 '
DC.L 0
DC.B 'CLEAR '
DC.L $00FC2886
DC.B 'CLI '
DC.L 0
DC.B 'CLS '
DC.L 0
DC.B 'CLSH '
DC.L 0
DC.B 'COLOR '
DC.L 0
DC.B 'COMMAND '
DC.L 0
DC.B 'COPY '
DC.L 0
DC.B 'CRASH '
DC.L $0FC000F
DC.B 'CRASHTOL'
DC.L 0
DC.B 'DEBUG '
DC.L 0
DC.B 'DEL '
DC.L $0FC12EA
DC.B 'DELETE '
DC.L $0FC12EA
DC.B 'DELAY '
DC.L $00FC3FD4
DC.B 'DIAG '
DC.L 0
DC.B 'DI '
DC.L 0
DC.B 'DIR '
DC.L 0
DC.B 'DIOR '
DC.L 0
DC.B 'DIUR '
DC.L 0
DC.B 'DISKCOPY'
DC.L 0
DC.B 'DLE '
DC.L $0FC12EA
DC.B 'DOR '
DC.L 0
DC.B 'DOIR '
DC.L 0
DC.B 'DRI '
DC.L 0
DC.B 'DUR '
DC.L 0
DC.B 'DUIR '
DC.L 0
DC.B 'DTCHDEV '
DC.L $00FC2968
DC.B 'DTCHDRB '
DC.L $00FC2978
DC.B 'DTCHDRVB'
DC.L $00FC2978
DC.B 'DTCHDRV '
DC.L 0
DC.B 'DUALFMT '
DC.L 0
DC.B 'E000 '
DC.L $0E000
DC.B 'ED '
DC.L 0
DC.B 'ERA '
DC.L $0FC12EA
DC.B 'ERASE '
DC.L $0FC12EA
DC.B 'EXIT '
DC.L 0
DC.B 'FFOFF '
DC.L 0
DC.B 'FFON '
DC.L 0
DC.B 'FMFD '
DC.L 0
DC.B 'FMU '
DC.L 0
DC.B 'FORMAT '
DC.L 0
DC.B 'FORTRAN '
DC.L 0
DC.B 'FUNC '
DC.L 0
DC.B 'GREEN '
DC.L 0
DC.B 'HBOOT '
DC.L 0
DC.B 'HELP '
DC.L 0
DC.B 'HEX '
DC.L 0
DC.B 'HEXOF '
DC.L 0
DC.B 'HOWL '
DC.L 0
DC.B 'HUSH '
DC.L 0
DC.B 'INVERSE '
DC.L 0
DC.B 'JUMP '
DC.L $0FC12BA
DC.B 'KILL '
DC.L $0FC3DFC
DC.B 'LIST '
DC.L 0
DC.B 'LISTCMD '
DC.L 0
DC.B 'LISTDEV '
DC.L $00FC28BE
DC.B 'LFOFF '
DC.L 0
DC.B 'LFON '
DC.L 0
DC.B 'LNFD '
DC.L 0
DC.B 'LOAD '
DC.L 0
DC.B 'LOADB '
DC.L 0
DC.B 'MAKECMD '
DC.L 0
DC.B 'MAKERES '
DC.L 0
DC.B 'MAKRES '
DC.L 0
DC.B 'MODULES '
DC.L 0
DC.B 'MORE '
DC.L 0
DC.B 'N '
DC.L $00FC1C0A
DC.B 'NO '
DC.L 0
DC.B 'NORMAL '
DC.L 0
DC.B 'PAGE '
DC.L $00FC2874
DC.B 'PARK '
DC.L 0
DC.B 'PASCAL '
DC.L 0
DC.B 'PASS2 '
DC.L 0
DC.B 'PATH '
DC.L 0
DC.B 'PB '
DC.L 0
DC.B 'PE '
DC.L 0
DC.B 'PEX '
DC.L 0
DC.B 'POOLS '
DC.L 0
DC.B 'PRI '
DC.L $0FC3E84
DC.B 'PRTSC '
DC.L 0
DC.B 'Q '
DC.L $00FC1C0A
DC.B 'QEURY '
DC.L 0
DC.B 'QUERY '
DC.L 0
DC.B 'QUEYR '
DC.L 0
DC.B 'QUIET '
DC.L 0
DC.B 'RED '
DC.L 0
DC.B 'REN '
DC.L $00FC1516
DC.B 'RENAME '
DC.L $00FC1516
DC.B 'REPAIR '
DC.L 0
DC.B 'RESETP '
DC.L 0
DC.B 'RESUME '
DC.L $00FC3FBC
DC.B 'REVERSE '
DC.L 0
DC.B 'RLNFD '
DC.L 0
DC.B 'ROMSAVE '
DC.L 0
DC.B 'RSTDSK '
DC.L 0
DC.B 'RSTPR '
DC.L 0
DC.B 'RUN '
DC.L 0
DC.B 'RUNTASK '
DC.L 0
DC.B 'SAVE '
DC.L $00FC1C24
DC.B 'SAVEROM '
DC.L 0
DC.B 'SCREEN0 '
DC.L 0
DC.B 'SCREEN1 '
DC.L 0
DC.B 'SCREENX '
DC.L 0
DC.B 'SCRN0 '
DC.L 0
DC.B 'SCRN1 '
DC.L 0
DC.B 'SECURE '
DC.L $00FC1E50
DC.B 'SET '
DC.L 0
DC.B 'SETPATH '
DC.L 0
DC.B 'SETSM '
DC.L 0
DC.B 'SETSTACK'
DC.L 0
DC.B 'SHIPDISK'
DC.L 0
DC.B 'SHOW '
DC.L $00FC401C
DC.B 'SPOOL '
DC.L $00FC2EE4
DC.B 'SPOOLQ '
DC.L $00FC2F34
DC.B 'SPOOLC '
DC.L $00FC301E
DC.B 'SP '
DC.L 0
DC.B 'SR '
DC.L 0
DC.B 'SSP '
DC.L 0
DC.B 'SYSLEVEL'
DC.L 0
DC.B 'SYSM '
DC.L 0
DC.B 'STAT '
DC.L 0
DC.B 'SYSMAP '
DC.L 0
DC.B 'SYSAMP '
DC.L 0
DC.B 'SYSMPA '
DC.L 0
DC.B 'SUBMIT '
DC.L 0
DC.B 'SUPMODE '
DC.L 0
DC.B 'SWAPS '
DC.L 0
DC.B 'TASKS '
DC.L $00FC3B1C
DC.B 'TIME '
DC.L $00FC2678
DC.B 'TYPE '
DC.L 0
DC.B 'UNBLANK '
DC.L 0
DC.B 'UNLOAD '
DC.L 0
DC.B 'UNLOADB '
DC.L 0
DC.B 'USP '
DC.L 0
DC.B 'USRM '
DC.L 0
DC.B 'USRMODE '
DC.L 0
DC.B 'VER '
DC.L 0
DC.B 'WBOOT '
DC.L 0
DC.B 'Y '
DC.L $00FC1C0A
* FROM HERE TO EBA2 CLEARED @ E2BE - this area set aside to extend above
H_00EA5E DCB.W 0288,0 LEAVE SPACE FOR 24 MORE COMMANDS
H_00EBA2 DCB.W 016,-1 $FFFF
*
B_UL DC.W 0
*
*
* 174 BYTES BEGINNING HERE CLEARED @ H_00E29C - CH_SC_TBL
H_00EBAE DCB.W 87,0 * USED FOR LCB BY LOAD COMMAND &C
H_00EC5C DC.W $B400 A "MAGIC" BYTE
DC.W 0
*
*ALTERNATE LOAD ENTRY POINT USED BY KBD_CMD_INTerpreter - D3=0 MEANS
* DON'T DISPLAY TRANSFER ADDRESS MESSAGE - also means don't make resident
*
LEDS_ DC.W $FD00
H_00EC60 CLR.B D3
BRA.S H_00EC6A
*
*****************************************************************************
C_LOAD EQU * this code implements the resident command LOAD
BSR.S H_00EC66
BRA.L SYSMAP
H_00EC66 MOVE.B #$01,D3
H_00EC6A BSR.L H_00ED02
CMPI.W #+000,D7
BNE.L H_00ECE8
TRAP #0 SYSCALL
DC.W $0E LoadB
CMPI.W #+000,D7
BEQ.S H_00ECA0
CMPI.B #+000,+01298(A3) KBD_CMD_INT CALLED US?
BEQ.S H_00EC98 YES - NO MESSAGES
CMPI.B #+130,D7 resident command LOAD
BEQ.L H_00ECE8
CMPI.W #$70FE,D7
BNE.S H_00EC98
BSR RST_NXTOK
BSR UNLOAD
CMPI.W #0,D7
BNE.S H_00EC98
BSR RST_NXTOK
BRA H_00EC6A
H_00EC98 BSR.L LOD_ERR_PRNT
H_00EC9C BRA.S H_00ECE8
H_00ECA0 MOVE.L A2,+00412(A3)
BEQ.S H_00ECE8
CMPI.B #+001,D3 KBD_CMD_INT CALLED US?
BNE.S H_00ECE8 YES - NO MESSAGE
LINK A3,#-00036
MOVEA.L A7,A6
MOVEA.L A6,A5 resident command LOAD
LEA $00FC1C0C,A4
MOVE.W #$0001,D0
H_00ECC4 MOVE.B (A4)+,(A5)+
ADDQ.W #1,D0
H_00ECC8 CMPI.W #+024,D0
BLE.S H_00ECC4
MOVE.L A2,D0
* address $00FC61B0 is Plug in tray ROM
JSR $00FC61B0 .L CONVERT TO HEX
MOVE.B #$0D,(A5) resident command LOAD
TRAP #00 $0 SYSCALL
DC.W $0012 PrtMsg*
MOVE.B #$0D,(A6)
TRAP #00 $0 SYSCALL
DC.W $0012 PrtMsg*
UNLK A3
LEA H_00EBAE(PC),A4
CMP.B #4,88(A4)
BNE.S H_00ECEA
MOVE.L 30(A4),D1
MOVE.L 34(A4),D2
MOVE.L 72(A4),A2
MOVEA.L A2,A0
MOVEQ #0,D0
* SUBA.L #40,A7
TRAP #0
DC.W 50
* ADDA.L #40,A7
H_00ECE8 RTS
*
H_00ECEA MOVE SR,D0 IF .BIN MARK FOR CLEANUP!
TRAP #0
DC.W 48 SUPMODE
MOVE.B #3,-2(A4)
MOVE D0,SR
BRA.L UNHYPE
H_00ED02 TRAP #00 $0 SYSCALL
DC.W $0034 GBasPtr
MOVEA.L +00016(A5),A3
LEA +00416(A3),A6 resident command LOAD
MOVE.W #073,D0
MOVE.L D3,-(A7)
H_00ED16 MOVE.B #$00,+000(A6,D0.W)
DBRA D0,H_00ED16
MOVE.B #$01,+00006(A6)
MOVE.L #$000000F7,D5
BSR.L SUB_CLOSE
CLR.W D7
TRAP #00 $0 SYSCALL
DC.W $000F FmtDib*
CMPI.W #+00260,D7 resident command LOAD
BEQ.S H_00ED38
CMPI.W #2,D7
BNE.L H_00EDB8
H_00ED38 DC.W $40C6 MOVE SR,D6
TRAP #00 $0 SYSCALL 2
DC.W $0030 2 SUP MODE
MOVE.W D6,-(A7)
LEA H_010128(PC),A4
MOVE.W #$0000,D0 resident command LOAD
H_00ED62 MOVE.B +000(A6,D0.W),+000(A4,D0.W)
ADDQ.W #1,D0
CMPI.W #+073,D0
BLE.S H_00ED62
CMPI.W #+00260,D7
BEQ.S CL_DOBOTH
LEA 046(A6),A2
CMP.B #'B',(A2)
BEQ.S CL_EXE
CMP.B #'E',(A2)
BEQ.S CL_BIN
BRA.S CL_EXE
CL_DOBOTH LEA 046(A4),A2
CL_EXE MOVE.B #'E',(A2)+
MOVE.B #'X',(A2)+
MOVE.B #'E',(A2)
CMPI.W #+00260,D7
BNE.S CL_D2
LEA 046(A6),A2
CL_BIN MOVE.B #'B',(A2)+
MOVE.B #'I',(A2)+
MOVE.B #'N',(A2) resident command LOAD
CL_D2 MOVEQ #0,D3
EXG A6,A4
EXG.L A5,D5
LEA CL_FIRST(PC),A5
MOVE.L A6,(A5)
EXG.L A5,D5
MOVE.L #$000000F7,D5
C_L_EXIST ORI.W #$0040,+00016(A6)
MOVE.L D3,-(A7)
BSR.L SUB_OPEN
TST.W D7
BNE.S H_00ED80
BSR.L SUB_CLOSE
MOVE.L (A7)+,D3
MOVE.W #073,D7 resident command LOAD
CL_COPY MOVE.B +000(A6,D7.W),+000(A4,D7.W)
DBRA D7,CL_COPY
LEA.L CL_FIRST(PC),A6
MOVEA.L (A6),A6
MOVEQ #0,D7
MOVE.L #$000000F7,D5
BRA.S H_00EDB0
H_00ED80 MOVE.L (A7)+,D3
CMPI.W #10,D7
BEQ.S CL_ALT_DRV
CMPI.W #$8600,D7
BEQ.S CL_ALT_DRV
CMPI.W #130,D7
BNE.S H_00EDBA
CMPA.L CL_FIRST(PC),A6
BEQ.S TRY_BIN
CL_ALT_DRV BSR.L DRV_SERCH
CMP.W #0,D7
BNE.S H_00EDBA
MOVE.B (A6),(A4)
MOVE.B 1(A6),1(A4)
MOVE.B 2(A6),2(A4)
MOVE.B 3(A6),3(A4)
MOVE.B 4(A6),4(A4)
MOVE.B 5(A6),5(A4)
CMPA.L CL_FIRST(PC),A6
BEQ C_L_EXIST
*
TRY_BIN EXG A6,A4
NT_BIN BRA.L C_L_EXIST
H_00EDB0 DC.W $46DF MOVE (A7)+,SR
BRA.S H_00EDCC
H_00EDB8 CMPI.W #+002,D7
BEQ.S H_00EDCC
BRA.S CL_ERR_
H_00EDBA MOVE.B #' ',(A6)
MOVE.B #' ',(A4)
DC.W $46DF MOVE (A7)+,SR
CL_ERR_ MOVE.L (A7)+,D3
CMPI.B #01,D3
BEQ.S CL_ERR_OK
RTS
CL_ERR_OK MOVE.L D3,-(A7)
LEA CL_ERR_MS(PC),A6
TRAP #00 $0 SYSCALL
DC.W 0018 PRTMSG
MOVE.L #249,D5
TRAP #00 $0 SYSCALL
DC.W 0010 DPRTERR
BRA.S H_00EDCE
*
CL_ERR_MS DC.B 'LOAD COMMAND: ',$4
DS.W 0
H_00EDBE MOVE.B #' ',(A6)
MOVE.B #' ',(A4)
DC.W $46DF MOVE (A7)+,SR
MOVE.W #$0101,D7
BRA CL_ERR_
H_00EDCC CLR.L D7
H_00EDCE MOVE.L (A7)+,D3
RTS END OF CODE FOR resident command LOAD
*
*
CL_FIRST DC.L 0,0
*
UNLOAD EQU * this code implements the resident command UNLOAD
MOVE SR,D6
TRAP #00 $0 SYSCALL 2 SUP MODE
DC.W $0030 2 SUP MODE
MOVE.W D6,-(A7)
CLR.W D7
LEA H_00EBAE(PC),A4
MOVE.W #173,D0
H_00EDE6 MOVE.B #0,0(A4,D0.W)
DBRA D0,H_00EDE6
LEA +00030(A4),A6 resident command UNLOAD
TRAP #00 $0 SYSCALL
DC.W $003F 2-FmtNam
CMPI.W #+001,D7
BLS.S H_00EE12
BRA.S H_00EE1E
H_00EE12 MOVEA.L A4,A6
MOVEQ #010,D4 unload - IGNORING $6012 ERRORS
TRAP #00 $0 SYSCALL
DC.W $0040 2-LodMgr
NOP
NOP
H_00EE1E CMPI.W #+000,D7 resident command UNLOAD
BEQ.S H_00EE2A
BSR.L LOD_ERR_PRNT
BRA.S C_UL_BYE
H_00EE2A MOVE.L 30(A4),D1 IF NO ERRORS - MAKE SURE
MOVE.L 34(A4),D2 IT IS DELETED FROM COMMAND TABLE
MOVEQ #3,D0 DELETE ENTRY BUT NOT FROM SYSTEM SPACE
MOVEA.L #0,A0
TRAP #0 SYSCALL
DC.W 50 RESCMD
C_UL_BYE DC.W $46DF MOVE (A7)+,SR
RTS
*
****************************************************************************
C_UNLOAD EQU * this code implements the resident command UNLOAD
BSR UNLOAD
BRA.L SYSMAP
* END OF CODE FOR resident command UNLOAD
DS.W 0
*
*****************************************************************************
C_RUNTASK EQU * this code implements the resident commands RUN, RUNTASK
H_00EE42 DC.W $40C6 MOVE SR,D6
TRAP #00 $0 SYSCALL 2
DC.W $0030 2 SUP MODE
MOVE.W D6,-(A7)
BSR.L H_00ED02
TRAP #01 EnterMon
CMPI.W #+000,D7
BNE.S H_00EEB2
CLR.W D7
MOVEM.L D0/A0-A2,-(A7)
MOVE.L +00038(A6),D1
H_00EE62 BSR.L H_01025E
BSR.L H_0102BC
CMPI.B #+000,D0 resident commands RUN, RUNTASK
BNE.S H_00EE62
LEA H_00EBAE(PC),A2
MOVE.W #$0000,D0
H_00EE7C MOVE.B #$00,+000(A2,D0.W)
ADDQ.W #1,D0
H_00EE84 CMPI.W #+173,D0
BLE.S H_00EE7C
BSET #00,+00020(A2)
BSET #01,+00020(A2)
MOVE.L D1,+00030(A2)
MOVE.L D2,+00034(A2) resident commands RUN, RUNTASK
MOVE.L #'USRM',+00022(A2)
MOVE.L +00038(A6),D1
MOVE.L +00042(A6),D2
MOVEM.L (A7)+,D0/A0-A2
H_00EEB2 CMPI.W #+000,D7
BNE.S H_00EED8
BSR.L H_00FA30
MOVE.L A2,+00412(A3)
LEA H_00EBAE(PC),A2
MOVE.B #$00,+00020(A2)
CMPI.W #+000,D7
BEQ.S H_00EED8
BSR.L LOD_ERR_PRNT
H_00EED8 CMPI.W #+000,D7 resident commands RUN, RUNTASK
BNE.S H_00EF20
TST.L +00412(A3)
BNE.S H_00EEF8
LEA H_00F24A(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0013 PrtErMsg*
MOVE.W #$00FF,D7
BRA.S H_00EF20
H_00EEF8 MOVEA.L +00412(A3),A1
LEA H_00EBAE(PC),A4
MOVEA.L +00040(A4),A0
ADDA.L +00044(A4),A0 resident commands RUN, RUNTASK
CMPA.L +00040(A4),A1
BLT.S H_00EF14
CMPA.L A1,A0
BGT.S H_00EF20
H_00EF14 LEA H_00E6D6(PC),A6
TRAP #00 $0 SYSCALL
DC.W $000C PrtErr*
MOVE.W #$0192,D7
H_00EF20 CMPI.W #+000,D7
BNE.S H_00EF88
MOVEA.L +00412(A3),A6
TRAP #00 $0 SYSCALL
DC.W $0010 NxTok* resident commands RUN, RUNTASK
CMPI.B #+004,+00410(A3)
BEQ.S H_00EF46
MOVEQ #001,D0
TRAP #00 $0 SYSCALL
DC.W $001B GStat
SUBQ.B #1,D0
BRA.S H_00EF88
H_00EF46 TRAP #00 $0 SYSCALL
DC.W $0010 NxTok*
CMPI.B #+003,+00411(A3)
BEQ.S H_00EF60
MOVE.W #$0101,D7 resident commands RUN, RUNTASK
TRAP #00 $0 SYSCALL
DC.W $0009 CPRTERR
MOVE.W #$00FF,D7
H_00EF60 CMPI.W #+000,D7
BNE.S H_00EF88
MOVE.L +00412(A3),D0
CMPI.L #$00000001,D0
BLT.S H_00EF7C
CMPI.L #$0000007F,D0
BLE.S H_00EF88
H_00EF7C MOVE.W #$0107,D7
TRAP #00 $0 SYSCALL
DC.W $0009 CPRTERR resident commands RUN, RUNTASK
MOVE.W #$00FF,D7
H_00EF88 CMPI.W #+000,D7
BNE.S H_00EFF4
LEA H_00EBAE(PC),A2
MOVE.L +00030(A2),D1
MOVE.L +00034(A2),D2
MOVE.L A6,-(A7)
SUBA.L #$0000000A,A7
LEA H_00F059(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0012 PrtMsg*
MOVEA.L A7,A6 resident commands RUN, RUNTASK
MOVE.L D1,(A6)
MOVE.L D2,+00004(A6)
MOVE.B #$0D,+00009(A6)
TRAP #00 $0 SYSCALL
DC.W $0012 PrtMsg*
ADDA.L #$0000000A,A7
MOVEA.L (A7)+,A6
TRAP #00 $0 SYSCALL
DC.W $0019 GetPCB
TST.B D0
BEQ.S H_00EFF4
CMPI.B #+001,D0 resident commands RUN, RUNTASK
BNE.S H_00EFE8
LEA H_00F03C(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0013 PrtErMsg*
MOVE.W #$00FF,D7
BRA.S H_00EFF4
H_00EFE8 LEA H_00F03C(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0013 PrtErMsg*
MOVE.W #$00FF,D7
H_00EFF4 CMPI.W #+000,D7
BEQ.S H_00F00E
MOVE.L D7,-(A7) resident commands RUN, RUNTASK
LEA H_00EBAE(PC),A6
MOVEQ #001,D4 unload
TRAP #00 $0 SYSCALL
DC.W $0040 2-LodMgr
NOP
NOP
H_00F00C MOVE.L (A7)+,D7
H_00F00E TRAP #02 ExitMon
DC.W $46DF MOVE (A7)+,SR
RTS END OF CODE FOR resident commands RUN, RUNTASK
H_00F014 ORI.B #$00,D0
HEX_DIGITS EQU *
H_00F018 DC.B '0123456789ABCDEFDUPLICATE TASK NAME',$D
*H_00F058 EQU *+00000028
H_00F03C DC.B 'NO MORE TASKS MAY BE STARTED',$D
H_00F059 DC.B ' STARTING TASK ',$4
DS.W 0
H_00F06A: DC.W +00000
*
*****************************************************************************
C_ATCHDRV EQU * this code implements the resident command ATCHDRV
H_00F06C CLR.W D7
MOVE.B #$FF,D0
BSR.L H_00F1E8
CMPI.W #+00260,D7
BNE.S H_00F094
LEA +00046(A6),A2
MOVE.B #'D',(A2)+
MOVE.B #'R',(A2)+
MOVE.B #'V',(A2)
CLR.W D7
BRA.S H_00F0AA
H_00F094 CMPI.W #+002,D7 resident command ATCHDRV
BNE.S H_00F0A2
CLR.W D7
BRA.S H_00F0AA
H_00F0A2 MOVE.W #$0101,D7
TRAP #00 $0 SYSCALL CPRTERR
DC.W $0009 CPRTERR
H_00F0AA CMPI.W #+000,D7
BNE.L H_00F144
MOVE.B #$01,+00006(A6)
LEA +00746(A3),A4
MOVE.W #0015,D0
H_00F0C4 MOVE.B #$00,+000(A4,D0.W)
DBRA D0,H_00F0C4
LEA +00490(A3),A2
MOVE.L A2,+00004(A4)
MOVE.B #$F7,D5
DC.W $40C0 MOVE SR,D0
TRAP #00 $0 SYSCALL
DC.W $0030 2 SUP MODE
MOVEM.L D0-D1/A0-A2/A5,-(A7)
TRAP #00 $0 SYSCALL
DC.W $0034 GBasPtr
MOVEA.L +00016(A5),A1 resident command ATCHDRV
LEA +01108(A1),A1
LEA H_00EBAE(PC),A2
MOVE.L #'SYSM',+00022(A2)
CLR.B +00020(A2)
LEA +00092(A2),A2
MOVE.W #0079,D1
H_00F110 MOVE.B +000(A1,D1.W),+000(A2,D1.W)
DBRA D1,H_00F110
MOVEM.L (A7)+,D0-D1/A0-A2/A5
MOVE.W D0,-(A7)
BSR.L H_00FA30
MOVE.W (A7)+,D0
MOVE.W D7,-(A7)
DC.W $46C0 MOVE D0,SR
CMPI.W #+00256,D7 resident command ATCHDRV
BLT.S H_00F138
TRAP #00 $0 SYSCALL
DC.W $0009 CPRTERR
BRA.S H_00F144
H_00F138 CMPI.W #+000,D7
BEQ.S H_00F14A
BSR.L LOD_ERR_PRNT
H_00F144 CMPI.W #0,D7
BNE.S H_00F1D0
H_00F14A CMPA.L #0,A2
BEQ.S H_00F1C6
MOVEA.L #$0ABCDEF,A0
TRAP #5 resident command ATCHDRV
LEA H_00EBAE(PC),A6
MOVE.L 06(A6),D0
MOVE.L 10(A6),D1
MOVE.L A6,-(A7)
JSR (A2)
MOVEA.L (A7)+,A6
NOP
CMPI.W #+000,D7
BNE.S H_00F1BA
ROL.L #8,D0
CMPI.B #+035,D0 resident command ATCHDRV
BNE.S H_00F1BA
ROR.L #8,D0
LEA H_00EBAE(PC),A6
MOVE.L +00006(A6),+00030(A6)
MOVE.L +00010(A6),+00034(A6)
MOVE.L D0,+00006(A6)
MOVE.L D1,+00010(A6)
BSET #00,+00020(A6)
MOVEQ #003,D4 modify
TRAP #00 $0 SYSCALL
DC.W $0040 2-LodMgr
NOP
NOP
H_00F1AE CMPI.W #+000,D7 resident command ATCHDRV
BEQ.S H_00F1BA
BSR.L LOD_ERR_PRNT
H_00F1BA MOVEA.L #$00FEDCBA,A0
TRAP #05
BRA.S H_00F1D0
H_00F1C6 LEA H_00F24A,A6
TRAP #00 $0 SYSCALL
DC.W $0013 PrtErMsg*
H_00F1D0 CMPI.W #+000,D7
BEQ.S H_00F1E6
LEA H_00EBAE(PC),A6
MOVEQ #001,D4 unload
TRAP #00 $0 SYSCALL
DC.W $0040 2-LodMgr
NOP
NOP
H_00F1E6 RTS resident command ATCHDRV
H_00F1E8 TRAP #00 $0 SYSCALL
DC.W $0034 GBasPtr
MOVEA.L +00016(A5),A3
LEA +00416(A3),A6
MOVEA.L A6,A5
MOVE.W #$0019,D1
H_00F1FA CLR.B (A5)+
DBF D1,H_00F1FA
TRAP #00 SYSCALL
DC.W $000F FmtDib*
CMPI.B #+000,D0
BNE.S H_00F244
CMPI.W #+000,D7 resident command ATCHDRV
BNE.S H_00F238
TRAP #00 SYSCALL
DC.W $0010 NxTok*
CMPI.B #+013,+00411(A3)
BNE.S H_00F22C
MOVE.L (A6),D0
MOVE.W +00004(A6),D1
BRA.S H_00F248
H_00F238 EQU *
H_00F22C MOVE.W #$0101,D7 resident command ATCHDRV
TRAP #00 $0 SYSCALL
DC.W $0009 CPRTERR
H_00F234 EQU *
H_00F240 BRA.S H_00F248
H_00F244 NOP
NOP
H_00F248 RTS END OF CODE FOR resident command ATCHDRV
H_00F24A DC.B 'NO FILE TRANSFER ADDRESS',$D,$0
DS.W 0
*
*****************************************************************************
C_DTCHDRV EQU * this code implements the resident command DTCHDRV
H_00F264 CLR.B D0
BSR.S H_00F1E8
TRAP #08 $8 IOMGR8
DC.W $0006 DTACHDRV
NOP
NOP
H_00F270 MOVE.L D7,-(A7)
TRAP #00 $0 SYSCALL 2
DC.W $0030 2 SUP MODE
LEA H_00EBAE(PC),A6
MOVE.W #$0000,D2
H_00F282 MOVE.B #$00,+000(A6,D2.W) resident command DTCHDRV
ADDQ.W #1,D2
H_00F28A CMPI.W #+173,D2
BLE.S H_00F282
MOVE.L D0,+00030(A6)
MOVE.W D1,+00034(A6)
MOVE.W #$2020,+00036(A6)
TRAP #00 $0 SYSCALL 2
DC.W $0031 2 USERMODE
MOVEQ #001,D4 unload
TRAP #00 $0 SYSCALL 2
DC.W $0040 2-LodMgr
NOP
NOP
H_00F2AC MOVE.L (A7)+,D7
CMPI.W #+000,D7
BEQ.S H_00F2BA
BSR.L LOD_ERR_PRNT
H_00F2BA RTS END OF CODE FOR resident command DTCHDRV
*
*****************************************************************************
C_DIR EQU * this code implements the resident command dir
H_00F2BC TRAP #00 $0 SYSCALL
DC.W $0034 GBasPtr
MOVEA.L +00016(A5),A2
LEA H_00F7A6(PC),A6
MOVE.B #$F6,D5
TRAP #06 $6 IOMGR6/SYSIO
DC.W $0006 FUNC
BRA.L H_00F2D6
H_00F2D4 BRA.S H_00F2DC
H_00F2D6 TRAP #00 $0 SYSCALL
DC.W $000C PrtErr*
RTS
H_00F2DC CLR.B D4
LINK A3,#-00204 resident command DIR
MOVEA.L A7,A5
LEA +00024(A5),A6
MOVEQ #073,D2
H_00F2EA CLR.B (A6)+
DBF D2,H_00F2EA
LEA +00416(A2),A6
MOVEQ #073,D2
H_00F2F6 CLR.B (A6)+
DBF D2,H_00F2F6
LEA +00746(A2),A6
MOVEQ #015,D2
H_00F302 CLR.B (A6)+ resident command DIR
DBF D2,H_00F302
LEA +00746(A2),A6
LEA +00490(A2),A0
MOVE.L A0,+00004(A6)
MOVE.W #$0100,+00008(A6)
LEA +00416(A2),A6
TRAP #00 $0 SYSCALL
DC.W $0010 NxTok*
CMPI.B #+013,+00411(A2)
BNE.S H_00F332
BSR.L H_00F714
BRA.L H_00F470
H_00F332 CMPI.B #+044,+00411(A2) resident command DIR
BEQ.S H_00F342
CMPI.B #+059,+00411(A2)
BNE.S H_00F348
H_00F342 BSR.L H_00F714
BRA.S H_00F38E
H_00F348 MOVE.L +00404(A2),+00400(A2)
TRAP #00 $0 SYSCALL
DC.W $000F FmtDib*
CMPI.W #+002,D7
BEQ.S H_00F370
CMPI.W #+003,D7
BEQ.S H_00F370
CMPI.W #+001,D7 resident command DIR
BEQ.S H_00F36A
BRA.L H_00F6DC
H_00F368 BRA.S H_00F36E
H_00F36A BSR.L H_00F720
H_00F36E BRA.S H_00F38A
H_00F370 CMPI.W #+003,D7
BNE.S H_00F37A
BSET #02,D4
H_00F37A MOVE.L +00038(A6),(A5)
MOVE.L +00042(A6),+00004(A5)
MOVE.L +00046(A6),+00008(A5)
H_00F38A TRAP #00 $0 SYSCALL
DC.W $0010 NxTok* resident command DIR
H_00F38E CMPI.B #+044,+00411(A2)
BNE.L H_00F41E
LEA +00024(A5),A6
TRAP #00 $0 SYSCALL
DC.W $000F FmtDib*
CMPI.W #+000,D7
BEQ.S H_00F3AA
BRA.L H_00F6DC
H_00F3AA CMPI.L #'#SCR',(A6)
BNE.S H_00F3BC
CMPI.W #+20016,+00004(A6)
BNE.S H_00F3BC
BRA.S H_00F41A
H_00F3BC CMPI.L #'#SCR',(A6) resident command DIR
BEQ.S H_00F408
CMPI.L #'#FD0',(A6)
BEQ.S H_00F408
CMPI.L #'#HD0',(A6)
BEQ.S H_00F408
CMPI.L #'#CNS',(A6)
BEQ.S H_00F408
LEA +00098(A5),A4
MOVE.L #$000D0400,(A4)
MOVE.W #$0050,+00008(A4)
MOVE.B #$01,+00007(A6)
ORI.W #$0040,+00016(A6) resident command DIR
MOVE.B #$02,D5
TRAP #06 $6 IOMGR6/SYSIO
DC.W $0001 OPEN
BRA.L H_00F6D4
H_00F404 BSET #01,D4
H_00F408 BTST #01,D4
BNE.S H_00F41A
LEA H_00F751(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0013 PrtErMsg*
BRA.L H_00F6D8
H_00F41A TRAP #00 $0 SYSCALL
DC.W $0010 NxTok* resident command DIR
H_00F41E CMPI.B #+059,+00411(A2)
BNE.S H_00F464
MOVEA.L +00400(A2),A0
CMPI.B #+013,(A0)
BNE.S H_00F434
BRA.L H_00F6DC
H_00F434 CMPI.B #+013,(A0)
BEQ.S H_00F462
CMPI.B #+069,(A0)
BNE.S H_00F446
BSET #03,D4
BRA.S H_00F45E
H_00F446 CMPI.B #+083,(A0) resident command DIR
BNE.S H_00F452
BSET #04,D4
BRA.S H_00F45E
H_00F452 MOVE.W #$0102,D7
TRAP #00 $0 SYSCALL
DC.W $0009 CPRTERR
BRA.L H_00F6A2
H_00F45E ADDQ.L #1,A0
BRA.S H_00F434
H_00F462 BRA.S H_00F470
H_00F464 CMPI.B #+013,+00411(A2)
BEQ.S H_00F470
BRA.L H_00F6DC
H_00F470 LEA +00416(A2),A6 resident command dir
MOVE.L H_00F79E(PC),+00038(A6)
MOVE.L H_00F7A2(PC),+00042(A6)
MOVE.B H_00F79E(PC),+00046(A6)
MOVE.B H_00F79F(PC),+00047(A6)
MOVE.B H_00F7A0(PC),+00048(A6)
MOVE.B #$01,+00006(A6)
MOVE.W #$000C,+00012(A5)
CLR.W +00022(A5)
LEA +00012(A5),A4
MOVE.L A4,+00018(A6)
MOVE.L (A6),D1
MOVE.W +00004(A6),D2
ORI.W #$0040,+00016(A6)
MOVE.B #$01,D5
BSR.L SUB_OPEN
H_00F4C2 CMPI.W #+000,D7
BEQ.S H_00F4CC
BRA.L H_00F6A2
H_00F4CC LEA H_00F750(PC),A6
BSR.L H_00F6E6
CMPI.W #+000,D7 resident command dir
BEQ.S H_00F4DE
BRA.L H_00F6A2
H_00F4DE LEA H_00F732(PC),A6
BSR.L H_00F6E6
LEA +01108(A2),A6
MOVE.B +00021(A5),(A6)
MOVE.B #$04,+00001(A6)
BSR.L H_00F6E6
LEA H_00F746(PC),A6
BSR.L H_00F6E6
LEA +01108(A2),A6
LEA +00416(A2),A4 resident command dir
MOVE.L (A4),(A6)
MOVE.W +00004(A4),+00004(A6)
MOVE.B #$0D,+00006(A6)
BSR.L H_00F6E6
LEA H_00F750(PC),A6
BSR.L H_00F6E6
CMPI.W #+000,D7
BEQ.S H_00F52C
BRA.L H_00F6A2
H_00F52C BTST #03,D4
BNE.S H_00F53C
BTST #04,D4 resident command dir
BNE.S H_00F53C
BRA.L H_00F5D0
H_00F53C LEA +00416(A2),A6
MOVE.L D1,(A6)
MOVE.W D2,+00004(A6)
SUBA.L #$000000AE,A7
MOVEA.L A7,A6
MOVEA.L A6,A0
MOVE.L #$000000AD,D0
H_00F556 CLR.B (A0)+
DBF D0,H_00F556
MOVE.L D4,D0 resident command dir
MOVE.L #'DIR ',+00006(A6)
MOVE.L #' ',+00010(A6)
MOVE.W #'EX',+00014(A6)
MOVE.B #'E',+00016(A6)
MOVE.B #$03,+00018(A6)
MOVEQ #007,D4 load W/O SEARCH
C_D_LOD TRAP #00 $0 SYSCALL
DC.W $0040 2-LodMgr
NOP
NOP
CMPI.W #$70FE,D7 MODULE ALREADY EXISTS?
BEQ.S C_D_INQ YES - LOOK IT UP
CMP.B #8,D4 HAVE WE TRIED LOAD W/ SEARCH
BEQ.S H_00F58A YES - LEAVE
MOVE.B #8,D4 PREPARE FOR LOAD W/ SEARCH
CMPI.W #0,D7 ERRORS?
BEQ.S H_00F590 NO - LEAVE
BRA C_D_LOD YES - TRY AGAIN W/ SEARCH
C_D_INQ MOVE.L 6(A6),$1E(A6) COULDN'T LOAD - MODULE ALREADY EXISTS
MOVE.L 10(A6),$22(A6) SO LOOK IT UP VIA INQLOAD
CLR.B $14(A6)
MOVEQ #2,D4
BRA C_D_LOD
H_00F58A CMPI.W #+000,D7
BNE.S H_00F5B0
H_00F590 MOVE.L D0,D4
MOVE.L #'POLY',D3 resident command dir
MOVEA.L +00072(A6),A1
MOVE.L A6,-(A7)
JSR (A1)
MOVEA.L (A7)+,A6
H_00F5AE BRA.S H_00F5C6
H_00F5B0 CMPI.W #+130,D7
BNE.S H_00F5C2
LEA H_00F767(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0013 PrtErMsg* resident command dir
BRA.S H_00F5C6
H_00F5C2 TRAP #00 $0 SYSCALL
DC.W $0009 CPRTERR
H_00F5C6 ADDA.L #$000000AE,A7
BRA.L H_00F6A6
H_00F5D0 LEA (A5),A0
MOVEQ #001,D2
H_00F5D4 LEA +00746(A2),A6
MOVEQ #001,D5
TRAP #00 $0 SYSCALL
DC.W $0028 SrcDir
CMPI.W #+000,D7 resident command dir
BEQ.S H_00F5E8
BRA.L H_00F6A2
H_00F5E8 CMPA.L #$00000000,A1
BEQ.L H_00F676
MOVEA.L A1,A6
MOVE.B +00010(A1),+00011(A1)
MOVE.B +00009(A1),+00010(A1)
MOVE.B +00008(A1),+00009(A1)
MOVE.B #$2E,+00008(A1)
MOVE.L D2,D3
ADDQ.L #1,D2
LSR.B #1,D3 resident command dir
BCS.S H_00F620
LSR.B #1,D3
BCS.S H_00F620
MOVE.B #$0D,+00012(A1)
BRA.S H_00F64A
H_00F620 MOVE.B #$04,+00012(A1)
BSR.L H_00F6E6
CMPI.W #+000,D7
BEQ.S H_00F632
CLR.L D2
H_00F632 LEA +01108(A2),A6
MOVE.L #' ',(A6) resident command dir
MOVE.L #' ',+00004(A6)
MOVE.B #$04,+00008(A6)
H_00F64A BSR.L H_00F6E6
CMPI.W #+000,D7
BEQ.S H_00F656
CLR.L D2
H_00F656 DC.W $0C38,$0000 CMPI.B #+000,$43B0 CHECK CTRL-Break BYTE
DC.W $43B0
BEQ.S H_00F662
CLR.L D2
BRA.S H_00F674
H_00F662 DC.W $0C38,$0000 CMPI.B #+000,$43B1 CHECK CTRL-NumLock Byte
DC.W $43B1 resident command dir
BEQ.S H_00F674
CLR.L D0
MOVEQ #001,D1
TRAP #00 $0 SYSCALL
DC.W $001D Delay
BRA.S H_00F662
H_00F674 BRA.S H_00F68A
H_00F676 CMPI.L #$00000001,D2
BNE.S H_00F688
MOVE.W #$0103,D7
TRAP #00 $0 SYSCALL
DC.W $0009 CPRTERR resident command dir
CLR.W D7
H_00F688 CLR.L D2
H_00F68A CMPI.L #$00000000,D2
BNE.L H_00F5D4
LEA H_00F750(PC),A6
BSR.S H_00F6E6
LEA H_00F750(PC),A6
BSR.S H_00F6E6
BRA.S H_00F6A6
H_00F6A2 TRAP #00 $0 SYSCALL
DC.W $000C PrtErr*
H_00F6A6 BTST #01,D4 resident command dir
BEQ.S H_00F6BC
DC.W $4DF8,$0000 LEA $0000,A6
MOVE.B #$02,D5
TRAP #06 $6 IOMGR6/SYSIO
DC.W $0002 CLOSE
BRA.L H_00F6BE
H_00F6BC BRA.S H_00F6C2
H_00F6BE TRAP #00 $0 SYSCALL
DC.W $000C PrtErr*
H_00F6C2 DC.W $4DF8,$0000 LEA $0000,A6
MOVE.B #$01,D5
TRAP #06 $6 IOMGR6/SYSIO
DC.W $0002 CLOSE
BRA.L H_00F6D8
H_00F6D2 BRA.S H_00F6D8
H_00F6D4 TRAP #00 $0 SYSCALL
DC.W $000C PrtErr*
H_00F6D8 UNLK A3
RTS
H_00F6DC MOVE.W #$0101,D7
TRAP #00 $0 SYSCALL
DC.W $0009 CPRTERR
BRA.S H_00F6A6
H_00F6E6 BTST #01,D4 resident command dir
BNE.S H_00F6F2
TRAP #00 $0 SYSCALL
DC.W $0012 PrtMsg*
RTS
H_00F6F2 MOVEA.L A6,A4
LEA +00098(A5),A6
MOVE.L A4,+00004(A6)
CLR.W +00010(A6)
MOVE.B #$02,D5
TRAP #06 $6 IOMGR6/SYSIO WRITE
DC.W $0004 WRITE resident command dir
BRA.L H_00F70E
H_00F70C RTS
H_00F70E TRAP #00 $0 SYSCALL
DC.W $000C PrtErr*
H_00F712 RTS
H_00F714 MOVE.L #' ',(A6)
MOVE.W #' ',+00004(A6)
H_00F720 BSET #02,D4
LEA H_00F79A(PC),A0
LEA (A5),A1
MOVEQ #003,D0
TRAP #00 $0 SYSCALL
DC.W $0014 FMTS resident command dir
RTS
H_00F746 EQU *+00000020
H_00F732 DC.B 'DIRECTORY OF DRIVE=',$4,' VOLUME=',$4
H_00F750 DC.B $0D
H_00F751 DC.B 'ILLEGAL OUTPUT DEVICE',$D
H_00F767 DC.B 'DIR.EXE NEEDED TO PROCESS OPTIONS',$D
DS.W 0
H_00F79A DC.B '*.*',$0
H_00F79F EQU *+01
H_00F7A0 EQU *+02
H_00F7A2 EQU *+04
H_00F79E: DC.B 'DIR '
H_00F7A6 DC.L $00070000 ORI.B #$00,D7 $00F7A6
*
*****************************************************************************
C_SET EQU * this code implements the resident command SET
H_00F7AA BSR.S H_00F7C2
CMPI.W #+00400,D7
BNE.S H_00F7C0
LEA H_010B04(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0013 PrtErMsg*
CLR.W D7 this code implements the resident command SET
H_00F7C0 RTS
H_00F7C2 TRAP #00 $0 SYSCALL
DC.W $0034 GBasPtr
MOVEA.L +00016(A5),A2
LEA +00416(A2),A6
MOVEA.L A6,A0
MOVEQ #073,D1
H_00F7D2 CLR.B (A0)+
DBF D1,H_00F7D2
LEA +00490(A2),A5
LEA +00746(A2),A4
TRAP #00 $0 SYSCALL
DC.W $0010 NxTok*
CMPI.B #+001,+00411(A2)
BNE.S H_00F7F6
CMPI.W #+002,+00408(A2) code for resident command SET
BEQ.S H_00F7FC
* address $00FC2474 is Plug in tray ROM
H_00F7F6 JMP $00FC2474 $101 syntax error
H_00F7FC MOVEA.L +00404(A2),A0
MOVE.B (A0),D1
ASL.W #8,D1
MOVE.B +00001(A0),D1
* address $00FC24AE is Plug in tray ROM
LEA $00FC24AE,A0
H_00F80E CMP.W (A0),D1
BEQ.S H_00F828
ADDA.L #$00000012,A0
TST.W (A0) code for resident command SET
BNE.S H_00F826
* address $00FC247E is Plug in tray ROM
JMP $00FC247E .L
H_00F826 BRA.S H_00F80E
H_00F828 TRAP #00 $0 SYSCALL
DC.W $0010 NxTok*
CMPI.B #'=',+00411(A2)
BEQ.S H_00F850
CMPI.B #+013,+00411(A2)
BNE.S H_00F84A
* address $00FC1FCE is Plug in tray ROM
JMP $00FC1FCE .L code for resident command SET
H_00F846 BRA.S H_00F850
* address $00FC2474 is Plug in tray ROM
H_00F84A JMP $00FC2474 .L
H_00F850 CMPI.W #'NT',D1
BEQ.S H_00F85E
CMPI.W #'SM',D1
BEQ.L SETSM
* address $00FC217A is Plug in tray ROM
JMP $00FC217A .L
H_00F85E TRAP #00 $0 SYSCALL
DC.W $0010 NxTok*
CMPI.B #+045,+00411(A2)
BNE.S H_00F886
TRAP #00 $0 SYSCALL
DC.W $0010 NxTok* code for resident command SET
CMPI.B #+003,+00411(A2)
BEQ.S H_00F87E
* address $00FC2484 is Plug in tray ROM
JMP $00FC2484 .L
H_00F87E MOVE.L +00412(A2),D0
NEG.L D0
BRA.S H_00F8A6
H_00F886 CMPI.B #+043,+00411(A2)
BNE.S H_00F892
TRAP #00 $0 SYSCALL
DC.W $0010 NxTok*
H_00F892 CMPI.B #+003,+00411(A2) code for resident command SET
BEQ.S H_00F8A2
* address $00FC2484 is Plug in tray ROM
JMP $00FC2484 .L
H_00F8A2 MOVE.L +00412(A2),D0
H_00F8A6 TRAP #00 $0 SYSCALL
DC.W $0010 NxTok*
CMPI.B #+013,+00411(A2)
BEQ.S H_00F8BA
* address $00FC2474 is Plug in tray ROM
JMP $00FC2474 .L
H_00F8BA CMPI.W #+003,D0 code for resident command SET
BLE.S H_00F8C8
CMPI.W #+064,D0
BLE.S H_00F8CE
* address $00FC2484 is Plug in tray ROM
H_00F8C8 JMP $00FC2484 .L
H_00F8CE MOVEM.L D0-D7/A0-A6,-(A7)
DC.W $2278,$0A56 MOVEA.L $0A56,A1
ADDA.L #$000005DC,A1
DC.W $3E38,$0A54 MOVE.W $0A54,D7
SUBQ.W #3,D7
CLR.L D1
H_00F8E4 TST.B +00008(A1) code for resident command SET
BEQ.S H_00F8F0
TST.L (A1)
BEQ.S H_00F8F0
ADDQ.B #1,D1
H_00F8F0 ADDA.L #$000002EE,A1
DBF D7,H_00F8E4
TST.B D1
BEQ.S H_00F908
MOVEM.L (A7)+,D0-D7/A0-A6
* address $00FC2490 is Plug in tray ROM
JMP $00FC2490 .L
H_00F908 MOVE.W D0,D1 code for resident command SET
MULU #$02EE,D1
SUBA.L #$00000014,A7
MOVEA.L A7,A6
MOVE.L D1,+00004(A6)
CLR.L +00008(A6)
CLR.L (A6)
CLR.L +00016(A6)
MOVEQ #005,D4 GETMEM
MOVE.L #'SYSM',D5
TRAP #00 $0 SYSCALL
DC.W $0039 MEM_MGR
NOP
NOP
H_00F934 MOVEA.L 012(A6),A1 code for resident command SET
ADDA.L #$014,A7
CMPI.W #0,D7
BEQ.S H_00F94E
MOVEM.L (A7)+,D0-D7/A0-A6
* address $00FC249C is Plug in tray ROM
JMP $00FC249C .L
H_00F94E DC.W $40C1 MOVE SR,D1
TRAP #00 $0 SYSCALL 2
DC.W $0030 2 SUP MODE
DC.L $007C0700 ORI.W #$0700,SR
DC.W $2F38,$0A56 MOVE.L $0A56,-(A7)
DC.W $2078,$0A56 MOVEA.L $0A56,A0
DC.W $21C9,$0A56 MOVE.L A1,$0A56
DC.W $31C0,$0A54 MOVE.W D0,$0A54
* address $00FC02FE is Plug in tray ROM
JSR $00FC02FE .L code for resident command SET
MOVE.W #$02ED,D7
H_00F972 MOVE.B (A0)+,(A1)+
DBF D7,H_00F972
MOVEA.L (A7)+,A1
MOVEA.L +00086(A1),A3
SUBA.L A1,A3
DC.W $2078,$0A56 MOVEA.L $0A56,A0
ADDA.L A0,A3
MOVE.L A3,+00086(A0)
DC.W $0CB8 CMPI.L #$00000000,$0A18
DC.W 0,0
DC.W $0A18 code for resident command SET
BEQ.S H_00F9A2
DC.W $2678,$0A18 MOVEA.L $0A18,A3
SUBA.L A1,A3
DC.W $D7F8,$0A56 ADDA.L $0A56,A3
DC.W $21CB,$0A18 MOVE.L A3,$0A18
H_00F9A2 DC.W $0CB8 CMPI.L #$00000000,$0A1C
DC.L 0
DC.W $0A1C
BEQ.S H_00F9BA
DC.W $2678,$0A1C MOVEA.L $0A1C,A3
SUBA.L A1,A3 code for resident command SET
DC.W $D7F8,$0A56 ADDA.L $0A56,A3
DC.W $21CB,$0A1C MOVE.L A3,$0A1C
H_00F9BA DC.W $46C1 MOVE D1,SR
MOVEA.L A1,A0
* address $00FD60BA is Plug in tray ROM
JSR $00FD60BA .L
MOVEM.L (A7)+,D0-D7/A0-A6
RTS code for resident command SET
*
*****************************************************************************
NEW_SC14 EQU * NEW CODE FOR SysCall 14 LOADB
H_00FA0C LEA H_00EBAE(PC),A4
MOVE.L #'USRM',+00022(A4)
CLR.B 020(A4)
BSET #01,020(A4)
BSR.S H_00FA30
MOVE.L A2,044(A7)
MOVE.W D7,034(A7)
RTS
H_00FA30 MOVEA.L #0,A2
CLR.L D7
SUBA.L #$06,A7
MOVE.W #$0002,(A7) NEW CODE FOR SysCall 14 LOADB
CLR.W 04(A7)
MOVE.L A7,018(A6)
ORI.W #$0040,016(A6)
BSR.L SUB_OPEN
H_00FA58 MOVE.W 02(A7),D0
ADDA.L #$06,A7
CMPI.W #0,D7
BNE.L H_00FB42
CMPI.W #02,D0 NEW CODE FOR SysCall 14 LOADB
BNE.S H_00FB30
LEA H_00EBAE(PC),A4
MOVE.B 049(A6),088(A4)
CMPI.B #4,+00049(A6)
BNE.S H_00FAEA
BSR.L SUB_CLOSE
H_00FA96 MOVE.W #5,D0 NEW CODE FOR SysCall 14 LOADB
H_00FAA0 MOVE.B 0(A6,D0.W),0(A4,D0.W)
DBRA D0,H_00FAA0
MOVE.W #7,D0
H_00FAB6 MOVE.B +038(A6,D0.W),+006(A4,D0.W)
DBRA D0,H_00FAB6
MOVE.W #02,D0 NEW CODE FOR SysCall 14 LOADB
H_00FACC MOVE.B +046(A6,D0.W),+014(A4,D0.W)
DBRA D0,H_00FACC
CMPI.W #0,D7
BNE.S H_00FAE6
BSR.L H_00FDAA
H_00FAE6 BRA.S H_00FB2C
H_00FAEA CMPI.B #01,+00049(A6)
BCS.S H_00FB16
LEA.L B_UL(PC),A5 SET UNLOAD INDIC
MOVE.B #3,(A5) AND LOAD .BIN ANYWAY!
TRAP #00 $0 SYSCALL
DC.W $0034 GBasPtr
MOVEA.L +00016(A5),A5 NEW CODE FOR SysCall 14 LOADB
SC14_BIN BSR.S H_00FB52
H_00FB12 BRA.S H_00FB1A
H_00FB16 MOVE.W #$0151,D7
H_00FB1A MOVE.W D7,-(A7) NEW CODE FOR SysCall 14 LOADB
BSR.L CLOS_SUB
H_00FB2A MOVE.W (A7)+,D7
H_00FB2C BRA.S H_00FB42
H_00FB30 BSR.L CLOS_SUB
H_00FB3E MOVE.W #$0151,D7
H_00FB42 CMPI.W #+000,D7 NEW CODE FOR SysCall 14 LOADB
BEQ.S H_00FB50
MOVEA.L #$00000000,A2
H_00FB50 RTS
H_00FB52 MOVEM.L D0/D4-D5/A4-A6,-(A7)
MOVE.W +00026(A6),D0
MULU #$00FC,D0
MOVE.L D0,+00044(A4)
MOVE.B D5,+00018(A4)
SUBA.L #$00000014,A7
MOVEA.L A7,A6
MOVEQ #019,D0
H_00FB74 MOVE.B #0,0(A6,D0.W) NEW CODE FOR SysCall 14 LOADB
DBRA D0,H_00FB74
MOVE.L #$0E000,012(A6) START
MOVE.L 044(A4),04(A6) LEN
MOVE.L D5,-(A7)
MOVEQ #8,D4 NEW MEMMGR FUNCTION
MOVE.L #'USRM',D5
TRAP #00 $0 SYSCALL
DC.W $0039 MEM_MGR
NOP
NOP
H_00FBA4 MOVE.L (A7)+,D5
CMPI.W #+000,D7 NEW CODE FOR SysCall 14 LOADB
BNE.L H_00FD68
MOVE.L A6,-(A7)
TRAP #0 SYSCALL
DC.W $0034 GBasPtr
MOVE.L 012(A6),040(A4) START
MOVE.L 004(A6),044(A4) LEN
MOVEA.L 012(A6),A0 START
MOVE.L 004(A6),D0 LEN
LEA 0(A0,D0.L),A1
SUBA.L #$014,A7
MOVEA.L A7,A6
MOVE.W #19,D0 NEW CODE FOR SysCall 14 LOADB
H_00FBDC CLR.B 0(A6,D0.W)
DBRA D0,H_00FBDC
MOVE.L #$0110,04(A6)
MOVE.L D5,-(A7)
MOVEQ #5,D4 GETMEM
MOVE.L #'SYSM',D5
TRAP #0 SYSCALL
DC.W $0039 MEM_MGR
NOP
NOP
H_00FC02 MOVE.L (A7)+,D5 NEW CODE FOR SysCall 14 LOADB
CMPI.W #+000,D7
BNE.L H_00FD40
MOVE.L A6,-(A7)
MOVEA.L +00012(A6),A6
LEA +00016(A6),A5
MOVE.W #$0000,D6
H_00FC1A MOVE.L A5,+00004(A6)
MOVE.W #$0001,+00008(A6)
BSR.L H_00FD74
CMPI.W #+000,D7
BNE.L H_00FCEA
CMPI.B #+003,(A5) NEW CODE FOR SysCall 14 LOADB
BNE.S H_00FC6C
MOVE.W #$0006,+00008(A6)
BSR.L H_00FD74
CMPI.W #+000,D7
BNE.S H_00FC68
MOVEA.L (A5),A3
MOVE.W +00004(A5),D1
BSR.L H_00FD92
CMPI.W #+000,D7
BNE.S H_00FC68
MOVE.L A3,+00004(A6)
MOVE.W D1,+00008(A6) NEW CODE FOR SysCall 14 LOADB
BSR.L H_00FD74
H_00FC68 BRA.S H_00FCE6
H_00FC6C CMPI.B #+002,(A5)
BNE.S H_00FCAA
MOVE.W #$0005,+00008(A6)
BSR.L H_00FD74
CMPI.W #+000,D7
BNE.S H_00FCA6
MOVEA.L (A5),A3
CLR.W D1
MOVE.B +00004(A5),D1
BSR.L H_00FD92
CMPI.W #+000,D7 NEW CODE FOR SysCall 14 LOADB
BNE.S H_00FCA6
MOVE.L A3,+00004(A6)
MOVE.W D1,+00008(A6)
BSR.L H_00FD74
H_00FCA6 BRA.S H_00FCE6
H_00FCAA CMPI.B #+022,(A5)
BNE.S H_00FCE2
MOVE.W #$0004,+00008(A6)
BSR.L H_00FD74
CMPI.W #+000,D7
BNE.S H_00FCEC
MOVEA.L (A5),A2
CMPA.L A2,A0 NEW CODE FOR SysCall 14 LOADB
BGT.S H_00FCD0
CMPA.L A2,A1
BGE.S H_00FCDA
H_00FCD0 MOVE.W #$0152,D7
MOVEA.L #$00000000,A2
H_00FCDA MOVE.L A2,+00072(A4)
H_00FCDE BRA.S H_00FCEC
H_00FCE2 MOVE.B #$FF,D6
H_00FCE6 BRA.S H_00FCEC
H_00FCEA MOVE.W D7,D6
H_00FCEC CMPI.W #+000,D6
BEQ.L H_00FC1A
CMPI.W #+000,D7 NEW CODE FOR SysCall 14 LOADB
BNE.S H_00FD26
CMPA.L #$00000000,A2
BEQ.S H_00FD22
TRAP #00 $0 SYSCALL
DC.W $0034 GBasPtr
MOVE.L A0,+00004(A5)
SUBA.L #$00000002,A1
MOVE.L A1,+00008(A5)
ADDA.L #$00000002,A1
BRA.S H_00FD26
H_00FD22 MOVE.W #$0153,D7
H_00FD26 MOVEA.L (A7)+,A6 NEW CODE FOR SysCall 14 LOADB
MOVE.L D7,-(A7)
MOVE.L D5,-(A7)
MOVEQ #006,D4 GIVMEM
MOVE.L #'SYSM',D5
TRAP #00 $0 SYSCALL
DC.W $0039 MEM_MGR
NOP
NOP
H_00FD3C MOVE.L (A7)+,D5
MOVE.L (A7)+,D7
H_00FD40 ADDA.L #$00000014,A7
MOVEA.L (A7)+,A6
CMPI.W #+000,D7 NEW CODE FOR SysCall 14 LOADB
BEQ.S H_00FD68
MOVE.L D7,-(A7)
MOVE.L D5,-(A7)
MOVEQ #006,D4 GIVMEM
MOVE.L #'USRM',D5
TRAP #00 $0 SYSCALL
DC.W $0039 MEM_MGR
NOP
NOP
H_00FD64 MOVE.L (A7)+,D5
MOVE.L (A7)+,D7
H_00FD68 ADDA.L #$00000014,A7
MOVEM.L (A7)+,D0/D4-D5/A4-A6
RTS NEW CODE FOR SysCall 14 LOADB
H_00FD74 CLR.W 010(A6)
TRAP #06 IOMGR6/SYSIO
DC.W $0003 READ
NOP
NOP
H_00FD80 CMPI.W #+133,D7
BNE.S H_00FD90
CLR.W D7
CLR.B (A5)
MOVE.B #$FF,D6
H_00FD90 RTS
H_00FD92 MOVE.L A4,-(A7)
LEA +000(A3,D1.W),A4
CMPA.L A3,A0 NEW CODE FOR SysCall 14 LOADB
BGT.S H_00FDA2
CMPA.L A4,A1
BGE.S H_00FDA6
H_00FDA2 MOVE.W #$0153,D7
H_00FDA6 MOVEA.L (A7)+,A4
RTS
H_00FDAA MOVEM.L D0/D4/A4/A6,-(A7)
TRAP #00 $0 SYSCALL
DC.W $0034 GBasPtr
MOVEA.L +00016(A5),A0
LEA +01108(A0),A1
MOVE.L +00400(A0),D0 NEW CODE FOR SysCall 14 LOADB
SUB.L A1,D0
MOVEM.L D1-D3,-(A7)
MOVE.L D0,D3
MOVE.B +000(A1,D0.W),D2
CLR.L D1
CMPI.B #+032,D2
BEQ.S H_00FE0E
H_00FDD4 CMPI.W #+080,D0
BLT.S H_00FDE2
MOVE.B #$FF,D1
MOVE.B D3,D0
H_00FDE2 MOVE.B +000(A1,D0.W),D2
CMPI.B #+032,D2 NEW CODE FOR SysCall 14 LOADB
BNE.S H_00FDF2
MOVE.B #$FF,D1
H_00FDF2 CMPI.B #+013,D2
BNE.S H_00FDFE
MOVE.B #$FF,D1
H_00FDFE CMPI.B #+255,D1
BEQ.S H_00FE08
ADDQ.W #1,D0
H_00FE08 CMPI.B #+255,D1
BNE.S H_00FDD4
H_00FE0E MOVEM.L (A7)+,D1-D3
MOVE.W D0,+00172(A4) NEW CODE FOR SysCall 14 LOADB
LEA +00092(A4),A5
MOVE.W #$0000,D0
H_00FE22 MOVE.B +000(A1,D0.W),+000(A5,D0.W)
ADDQ.W #1,D0
H_00FE2A CMPI.W #+079,D0
BLE.S H_00FE22
MOVE.B D5,+00018(A4)
MOVEA.L A4,A6
MOVEQ #000,D4 load
TRAP #00 $0 SYSCALL
DC.W $0040 2-LodMgr
BRA.L H_00FE5E NEW CODE FOR SysCall 14 LOADB
MOVEA.L 072(A6),A2
CMPA.L #$00000000,A2
BNE.S H_00FE64
MOVEA.L +00040(A6),A2
H_00FE5A BRA.S H_00FE64
H_00FE5E MOVEA.L #$00000000,A2
H_00FE64 MOVEM.L (A7)+,D0/D4/A4/A6
RTS END OF NEW CODE FOR SysCall 14 LOADB
*
*****************************************************************************
NEW_SC25 EQU * NEW CODE FOR GETPCB SysCall
H_00FE6A DC.W $3C38,$0A54 MOVE.W $0A54,D6
DC.W $2278,$0A56 MOVEA.L $0A56,A1
CLR.L D7
DC.W $40E7 MOVE SR,-(A7)
TRAP #01 MASK OFF INTs 0,1
CMPI.B #+001,D0
BGE.S H_00FE88
MOVE.B #$02,D0
MOVE.B #$FF,D7
H_00FE88 CMPI.B #+000,D7
BNE.S H_00FEAA
ROR.W #8,D0
CMPI.B #+000,D0 NEW CODE FOR GETPCB SysCall
BEQ.S H_00FEA8
MOVE.W +00066(A7),D3
BTST #13,D3
BNE.S H_00FEA8
CLR.B D0
H_00FEA8 ROR.W #8,D0
H_00FEAA CMPI.B #+000,D7
BNE.S H_00FEF2
MOVE.W #$0001,D6
H_00FEB6 CMPI.B #+000,D7 NEW CODE FOR GETPCB SysCall
BNE.S H_00FEF2
DC.W $BC78,$0A54 CMP.W $0A54,D6
BGT.S H_00FEF2
CMPI.B #+000,+00008(A1)
BEQ.S H_00FEE8
CMP.L (A1),D1
BNE.S H_00FEE8
CMP.L +00004(A1),D2
BNE.S H_00FEE8
MOVE.B #$FF,+00009(A7)
MOVE.B #$FF,D7 NEW CODE FOR GETPCB SysCall
H_00FEE8 ADDA.L #$000002EE,A1
ADDQ.W #1,D6
BRA.S H_00FEB6
H_00FEF2 CMPI.B #+000,D7
BNE.S H_00FF56
MOVE.W #$0001,D6
DC.W $2278,$0A56 MOVEA.L $0A56,A1
CLR.L D5
H_00FF04 CMPI.B #+000,D7
BNE.S H_00FF4A
DC.W $BC78,$0A54 CMP.W $0A54,D6
BGT.S H_00FF4A
CMPI.B #+000,+00008(A1)
BNE.S H_00FF26
MOVE.W D6,D5 NEW CODE FOR GETPCB SysCall
MOVEA.L A1,A5
BRA.S H_00FF40
H_00FF26 DC.W $BC78,$0A54 CMP.W $0A54,D6
BLT.S H_00FF40
CMPI.W #+000,D5
BNE.S H_00FF40
MOVE.B #$01,+00009(A7)
MOVE.B #$FF,D7
H_00FF40 ADDA.L #$000002EE,A1
ADDQ.W #1,D6
BRA.S H_00FF04
H_00FF4A CMPI.B #+000,D7 NEW CODE FOR GETPCB SysCall
BNE.S H_00FF56
MOVEA.L A5,A1
MOVE.W D5,D6
H_00FF56 CMPI.B #+000,D7
BNE.L H_010076
MOVE.B D6,+00013(A7)
MOVE.W #0749,D6
H_00FF6A MOVE.B #0,0(A1,D6.W)
DBRA D6,H_00FF6A
CLR.B +00009(A7) NEW CODE FOR GETPCB SysCall
MOVE.L D1,(A1)
MOVE.L D2,+00004(A1)
MOVE.B D0,+00009(A1)
MOVE.B #$01,+00008(A1)
MOVEM.L D0-D2,-(A7)
TRAP #00 $0 SYSCALL
DC.W $0017 GetTim
MOVE.B D2,+00019(A1)
LSR.L #8,D2
MOVE.B D2,+00018(A1)
LSR.L #8,D2 NEW CODE FOR GETPCB SysCall
MOVE.B D2,+00017(A1)
MOVE.B D1,+00016(A1)
LSR.L #8,D1
MOVE.B D1,+00015(A1)
LSR.L #8,D1
MOVE.B D1,+00014(A1)
MOVEM.L (A7)+,D0-D2
CLR.L +00010(A1)
LEA +00750(A1),A2
MOVE.L A6,-(A2)
ROR.W #8,D0 NEW CODE FOR GETPCB SysCall
LEA H_01007A(PC),A6
MOVE.W #0173,D6
H_00FFD0 MOVE.B #0,0(A6,D6.W)
DBRA D0,H_00FFD0
MOVE.L D1,030(A6)
MOVE.L D2,034(A6)
MOVEQ #002,D4 inqload
TRAP #0 SYSCALL
DC.W $0040 2-LodMgr
BRA.L H_010046
H_00FFFF EQU *+07
CMPI.L #0,060(A6)
BLE.S H_010042
MOVE.L 048(A6),D6
ADD.L 052(A6),D6
ADD.L 056(A6),D6
ADD.L 060(A6),D6
SUBQ.L #4,D6
MOVEA.L D6,A6
CMPI.B #+000,D0 NEW CODE FOR GETPCB SysCall
BNE.S H_010030
MOVE.W #0,-(A2)
MOVE.L A6,090(A1)
MOVE.L A2,086(A1)
BRA.S H_010066
H_010030 MOVE.L (A2)+,-(A6)
MOVE.W #$2000,-(A6)
MOVE.L A6,086(A1)
MOVE.L #0,090(A1)
H_010042 BRA.S H_010066
H_010046 CMPI.B #0,D0 NEW CODE FOR GETPCB SysCall
BNE.S H_010056
MOVE.W #0,-(A2)
BRA.S H_01005A
H_010056 MOVE.W #$2000,-(A2)
H_01005A MOVE.L A2,086(A1)
MOVE.L #0,090(A1)
H_010066 MOVE.L D1,026(A1)
MOVE.L D2,030(A1)
ROR.W #8,D0 NEW CODE FOR GETPCB SysCall
* address $00FD10A4 is Plug in tray ROM
JSR $00FD10A4 .L
H_010076 DC.W $46DF MOVE (A7)+,SR
RTS END OF NEW CODE FOR GETPCB SysCall
H_010128 EQU *+00000174
H_01007A DCB.W 00124,+00000
*
*****************************************************************************
NEW_SC26 EQU * NEW CODE FOR GIVPCB SysCall
H_010172 CLR.L D7
DC.W $2278,$0A1C MOVEA.L $0A1C,A1
CMPI.B #+000,D0
BEQ.S H_0101C4
SUBQ.B #1,D0
CMPI.B #+000,D0
BNE.S H_010194
MOVE.B #$04,+00007(A7)
MOVE.B #$FF,D7
H_010194 CMPI.B #+001,D0
BLE.S H_0101A2
DC.W $B038,$0A55 CMP.B $0A55,D0
BLT.S H_0101AC
H_0101A2 MOVE.B #$01,+00007(A7)
MOVE.B #$FF,D7 NEW CODE FOR GIVPCB SysCall
H_0101AC CMPI.W #+000,D7
BNE.S H_0101C0
DC.W $2278,$0A56 MOVEA.L $0A56,A1
EXT.W D0
MULU #$02EE,D0
ADDA.L D0,A1
H_0101C0 BRA.S H_0101E8
H_0101C4 MOVE.L #'SYST',D1
MOVE.L #'EM ',D2
CMP.L (A1),D1 NEW CODE FOR GIVPCB SysCall
BNE.S H_0101E8
CMP.L +00004(A1),D2
BNE.S H_0101E8
MOVE.B #$04,+00007(A7)
MOVE.B #$FF,D7
H_0101E8 CMPI.B #+000,D7
BNE.S H_01024E
TRAP #01 ?? EnterMon ??
LEA H_01007A(PC),A6
MOVE.W #$0000,D6 NEW CODE FOR GIVPCB SysCall
H_0101FE MOVE.B #$00,+000(A6,D6.W)
ADDQ.W #1,D6
H_010206 CMPI.W #+173,D6
BLE.S H_0101FE
MOVE.L (A1),+00030(A6)
MOVE.L +00004(A1),+00034(A6)
MOVEM.L A6,-(A7)
BSR.S H_010250
MOVEM.L (A7)+,A6 NEW CODE FOR GIVPCB SysCall
MOVEQ #001,D4 unload
TRAP #00 $0 SYSCALL
DC.W $0040 2-LodMgr
NOP
NOP
H_01022C CLR.W D7
DC.W $B3F8,$0A1C CMPA.L $0A1C,A1
BNE.S H_01023C
* address $00FC0CD2 is Plug in tray ROM
JMP $00FC0CD2 .L
H_01023C CMPI.B #+000,+00008(A1)
BEQ.S H_01024C
MOVE.B #$00,+00007(A7)
H_01024C TRAP #02 ?? ExitMon ??
H_01024E RTS NEW CODE FOR GIVPCB SysCall
H_010250 MOVE.L A0,-(A7)
MOVEA.L A1,A0
* address $00FD669A is Plug in tray ROM
JSR $00FD669A .L
MOVEA.L (A7)+,A0
RTS
H_01025E MOVEM.L D0/D3-D4/A0,-(A7)
MOVE.W #$0001,D0
* BRA.S H_010280
H_01026A ROL.L #8,D1
CMPI.B #+032,D1 NEW CODE FOR GIVPCB SysCall
BLS.S H_01027A
CMPI.B #+127,D1
BLS.S H_01027E
H_01027A MOVE.B #$30,D1
H_01027E ADDQ.W #1,D0
H_010280 CMPI.W #+004,D0
BLE.S H_01026A
LEA H_00F014(PC),A0
MOVE.L (A0),D0
ADDI.L #$00000001,D0
MOVE.L D0,(A0) NEW CODE FOR GIVPCB SysCall
LEA HEX_DIGITS(PC),A0
MOVE.W #$0001,D3
H_0102A0 MOVE.B D0,D4
ANDI.W #$000F,D4
MOVE.B +000(A0,D4.W),D2
ROL.W #4,D0
ROL.L #8,D2
ADDQ.W #1,D3
H_0102B0 CMPI.W #+004,D3
BLE.S H_0102A0
MOVEM.L (A7)+,D0/D3-D4/A0
RTS NEW CODE FOR GIVPCB SysCall
H_0102BC DC.W $2278,$0A56 MOVEA.L $0A56,A1
TRAP #01 ?? EnterMon ??
MOVE.W #$0001,D0
BRA.S H_0102EC
H_0102CA CMP.L (A1),D1
BNE.S H_0102E6
CMP.L +00004(A1),D2
BNE.S H_0102E6
CMPI.B #+000,+00008(A1)
BEQ.S H_0102E6
TRAP #02 ?? ExitMon ??
RTS NEW CODE FOR GIVPCB SysCall
H_0102E6 ADDA.W #$02EE,A1
ADDQ.W #1,D0
H_0102EC DC.W $B078,$0A54 CMP.W $0A54,D0
BLE.S H_0102CA
CLR.B D0
TRAP #02 ?? ExitMon ??
RTS END OF NEW CODE FOR GIVPCB SysCall
*
*
*****************************************************************************
NEW_SC01 EQU * CODE FOR SysCall 01 -- user defined
MOVE.L 4(A7),D0
CMPI.W #0,D0 subsidiary call number in D0.W
BGE.S SC01_NXTT MUST be greater or equal to 0
RTS
SC01_NXTT CMPI.W #11,D0 call number less or equal to 10
BCS.S SC01_VALD
RTS
SC01_VALD EQU *
LSL.L #2,D0
LEA.L USER_TABLE(PC),A0
MOVEA.L 0(A0,D0.L),A1
LEA.L USER_0(PC),A0
JMP 0(A0,A1.L)
USER_TABLE DC.L 0 LOAD SR FROM D1.W D0=0
DC.L USER_1-USER_0 SW. STACKS IF SUP MODE D0=1
DC.L USER_2-USER_0 SW. STACKS IF USR MODE D0=2
DC.L USER_3-USER_0 RET. USP_TOP IN D0 D0=3
DC.L USER_4-USER_0 RET. SSP_TOP IN D0 D0=4
DC.L USER_5-USER_0 SET PRTSC KOLOR FROM D1 D0=5
DC.L USER_6-USER_0 SET PRTSC KOLOR to RED D0=6
DC.L USER_7-USER_0 SET PRTSC KOLOR to Green D0=7
DC.L USER_8-USER_0 SET PRTSC KOLOR to Blue D0=8
DC.L USER_9-USER_0 SET PRTSC KOLOR TO BLACK D0=9
DC.L USER_A-USER_0 SET PrtSc color to use currentD0=10
DC.L USER_B-USER_0 KILL PRTSC IN PROGRESS D0=11
*
USER_0 EQU * LOAD D1.W INTO SR
MOVE.W 64(A7),D2
EOR.W D1,D2
BTST #13,D2
MOVE.W D1,064(A7)
BEQ.S USER_0RET
BTST #13,D1
BEQ.S USER_IN1
BRA.S USER_IN2
USER_0RET RTS
*
USER_1 EQU * IF USR RTS / IF SUP SWITCH STACKS
MOVE.W 64(A7),D0
BTST #13,D0
BEQ.S USER_0RET
BCLR #13,D0
USER_IN1 MOVE.W D0,64(A7)
MOVE SR,D0
ORI #$2700,SR
LEA.L 70(A7),A6
MOVE A6,USP
* MOVE.L SSTACK(PC),A7
LEA SUP_STACK(PC),A7
USR_ST_CP MOVE.L -(A6),-(A7)
MOVE.W -(A6),-(A7)
MOVEQ #15,D1
USER_1_LOOP MOVE.L -(A6),-(A7)
DBRA D1,USER_1_LOOP
MOVE D0,SR
USER_1RET RTS
*
USER_2 EQU * IF SUP RTS / IF USR SWITCH STACKS
MOVE.W 64(A7),D0
BTST #13,D0
BNE.S USER_1RET
BSET #13,D0
MOVE.W D0,64(A7)
USER_IN2 MOVE SR,D0
ORI #$2700,SR
LEA.L 70(A7),A6
MOVE USP,A7
BRA USR_ST_CP
*
USER_3 EQU *
LEA.L USP_SV_ADDR(PC),A0 RETURNS USP_TOP IN D0
MOVE.L (A0),D0 & USP_TOP_PTR IN A0
MOVE.L D0,4(A7)
MOVE.L A0,36(A7)
RTS
*
USER_4 EQU *
LEA.L SSP_SV_ADDR(PC),A0 RETURNS SSP_TOP IN D0
MOVE.L (A0),D0 & SSP_TOP_PTR IN A0
MOVE.L D0,4(A7)
MOVE.L A0,36(A7)
RTS
*
USER_5 EQU *
* MOVE.L 8(A7),D1
ANDI.W #$0F,D1 0 .. 3 = RED .. BLACK, >3 == USE CURRENT COLOR
MOVE.L D1,D0
IN_USER_5 EQU *
BSR.L KOLOR_SET
RTS
*
USER_6 EQU * SET PrtSc COLOR TO RED
MOVEQ.L #$00,D0
BRA IN_USER_5
*
USER_7 EQU * SET PrtSc COLOR TO GREEN
MOVEQ.L #$01,D0
BRA IN_USER_5
*
USER_8 EQU * SET PrtSc COLOR TO BLUE
MOVEQ.L #$02,D0
BRA IN_USER_5
*
USER_9 EQU * SET PrtSc COLOR TO BLACK
MOVEQ.L #$03,D0
BRA IN_USER_5
*
USER_A EQU * SET PrtSc COLOR to use current color
MOVEQ.L #$08,D0
BRA IN_USER_5
*
USER_B EQU * KILL PRTSC
MOVE.L #'SCRN',D1
MOVE.L #'PRNT',D2
TRAP #0 SYSCALL
DC.W 45 KILL
RTS
*
*****************************************************************************
NEW_SC49 EQU * CODE FOR SysCall 49 - >user mode
H_0102F8 MOVE.W 064(A7),D0
BCLR #13,D0
MOVE.W D0,064(A7)
RTS
*
*****************************************************************************
NEW_SC48 EQU * CODE FOR SysCall 48 - >supervisor mode
H_010306 MOVE.W 064(A7),D0
BSET #13,D0
MOVE.W D0,064(A7)
RTS
*
*****************************************************************************
NEW_SC44 EQU * CODE FOR SysCall 44 RUNTASK
H_010314 CLR.W D7
MOVEA.L A0,A6
MOVEQ #000,D4 load
TRAP #00 $0 SYSCALL
DC.W $0040 2-LodMgr
NOP
NOP
H_010322 CMPI.W #+000,D7
BNE.S H_01037E
MOVE.L +00030(A0),D1
MOVE.L +00034(A0),D2
MOVE.W D0,D3 CODE FOR SysCall 44 RUNTASK
CMPI.B #+000,D0
BNE.S H_010348
MOVEQ #001,D0
TRAP #00 $0 SYSCALL
DC.W $001B GStat
SUBQ.B #1,D0
MOVE.B D0,D3
MOVE.W D3,D0
H_010348 ANDI.W #$FF00,D3
BEQ.S H_010360
MOVE.W +00064(A7),D3
BTST #13,D3 CODE FOR SysCall 44 RUNTASK
BNE.S H_010360
ANDI.W #$00FF,D0
H_010360 MOVEA.L +00072(A0),A6
TRAP #00 $0 SYSCALL
DC.W $0019 GetPCB
CMPI.W #+000,D7
BEQ.S H_01037E
MOVE.W D7,-(A7)
MOVEQ #001,D4 unload
TRAP #00 $0 SYSCALL
DC.W $0040 2-LodMgr
NOP
NOP
H_01037C MOVE.W (A7)+,D7
H_01037E MOVE.L D7,+00032(A7)
RTS END OF CODE FOR SysCall 44 RUNTASK
*
*****************************************************************************
NEW_SC45 EQU * CODE FOR SysCall 45 KILL
H_010384 CLR.W D7
DC.W $2078,$0A56 MOVEA.L $0A56,A0
CLR.L D0
MOVEQ #001,D6
H_01038E CMPI.W #+000,D0
BNE.S H_0103BC
DC.W $BC78,$0A54 CMP.W $0A54,D6
BGT.S H_0103BC
CMP.L (A0),D1
BNE.S H_0103B2
CMP.L +00004(A0),D2
BNE.S H_0103B2
MOVE.W D6,D0 CODE FOR SysCall 45 KILL
BRA.S H_01038E
H_0103B2 ADDQ.W #1,D6
ADDA.L #$000002EE,A0
H_0103BA BRA.S H_01038E
H_0103BC CMPI.W #+000,D0
BLE.S H_0103CC
TRAP #00 $0 SYSCALL
DC.W $001A GivPCB
BRA.S H_0103D0
H_0103CC MOVE.B #$FF,D7 CODE FOR SysCall 45 KILL
H_0103D0 MOVE.L D7,+00032(A7)
RTS END OF CODE FOR SysCall 45 KILL
*
*****************************************************************************
NEW_SC53 EQU * NEW CODE FOR MODSYSM SysCall 53
H_0103D6 MOVE.W #$0190,+00034(A7)
RTS
*
****************************************************************************
NEW_SC57 EQU * NEW CODE FOR MEMMGR SysCall 57
H_01053A DC.W $40E7 MOVE SR,-(A7)
H_01053C LEA H_010612(PC),A0
TAS (A0)
BEQ.S H_010554
MOVEQ #002,D1
CLR.B D0
TRAP #00 $0 SYSCALL
DC.W $001D Delay
MOVEQ #255,D7
BRA.S H_010556
H_010554 CLR.W D7
H_010556 DC.W $BE78,$0000 CMP.W $0000,D7
BNE.S H_01053C
CLR.L D7
CMPI.W #+001,D4
BLT.S H_0105A8
CMPI.W #+08,D4 WAS 36 SHOULD BE 8
BGT.S H_0105A8
MOVE.L A6,D6
DC.W $BCB8,$0A24 CMP.L $0A24,D6
BLT.S H_0105A0
DC.W $BCB8,$0A28 CMP.L $0A28,D6
BGE.S H_0105A0
BTST #00,D6
BNE.S H_010598
LSL.W #2,D4
LEA H_0105EE(PC),A0
MOVEA.L +000(A0,D4.W),A0
JSR (A0)
BRA.S H_0105AC
H_010598 EQU *
H_0105A0 MOVE.B #$11,D7
H_01059C EQU *
H_0105A4 BRA.S H_0105AC
H_0105A8 MOVE.B #$0F,D7
H_0105AC ANDI.L #$000000FF,D7
CMPI.B #+000,D7
BNE.S H_0105C6
ADDI.L #$00000004,+00068(A7)
BRA.S H_0105E0
H_0105C6 ORI.W #$6000,D7
DC.W $2078,$0A1C MOVEA.L $0A1C,A0
MOVE.W D7,+00138(A0)
MOVE.L #'MEMM',+00124(A0)
MOVE.W #$4752,+00128(A0)
H_0105E0 LEA H_010612(PC),A0
CLR.B (A0)
MOVE.L D7,+00034(A7)
DC.W $46DF MOVE (A7)+,SR
RTS
* MEMMGR JUMP TABLE
H_0105EE EQU *
DC.L $0000000 +0
DC.L $0FCB94C MEMMGR fn 1 - ATACHMPD +4
DC.L $0FCB9EC MEMMGR fn 2 - DTACHMPD +8
DC.L $0FCBA6C MEMMGR fn 3 - ATACHMSP +12
DC.L $0FCBEE8 MEMMGR fn 4 - ? (DTACHMSP?) +16
DC.L $0FCC258 MEMMGR fn 5 - GETMEM +20
* above is modified during init to point to H_0107A0
DC.L $0FCC4FE MEMMGR fn 6 - GIVMEM +24
DC.L $0FCC6EA MEMMGR fn 7 - INQMEM +28
DC.L 0 MEMMGR fn 8 - new ????? loaded during init w/H_010614
H_010612 EQU *
DC.W 0
*
H_010614 MOVEM.L D0-D6/A0-A6,-(A7) new (added) mem-mgr function #8
CMPI.L #$00000000,D5
BEQ.S H_01065E
DC.W $2078,$3BEC MOVEA.L $3BEC,A0
CLR.L D6
H_010628 CMPI.B #+255,D6
BEQ.S H_01065A
CMPA.L #$00000000,A0
BEQ.S H_010650
CMP.L (A0),D5
BNE.S H_010648
MOVE.B #$FF,D6
BRA.S H_010628
H_010648 MOVEA.L +00004(A0),A0
H_01064C BRA.S H_010628
H_010650 MOVE.B #$FF,D6
MOVE.B #$05,D7 (added) mem-mgr function #8
H_010658 BRA.S H_010628
H_01065A BRA.S H_010662
H_01065E MOVE.B #$01,D7
H_010662 CMPI.B #+000,D7
BNE.S H_010698
CMPI.L #$00000008,+00004(A6)
BLT.S H_010690
MOVE.L +00004(A6),D0
BTST #00,D0
BEQ.S H_010698
ADDI.L #$00000001,D0
MOVE.L D0,+00004(A6)
H_01068C BRA.S H_010698
H_010690 MOVE.L #$00000008,+00004(A6)
H_010698 CMPI.B #+000,D7 (added) mem-mgr function #8
BNE.L H_01079A
CLR.B D6
MOVEA.L +00012(A0),A1
H_0106A6 CMPI.B #+255,D6
BEQ.L H_01079A
CMPA.L #$00000000,A1
BEQ.L H_01078E
CLR.B D5
MOVEA.L +00012(A1),A2
LEA +00012(A1),A3
H_0106C2 CMPI.B #+255,D5
BEQ.L H_010786
CMPA.L #$00000000,A2
BEQ.L H_01077E
MOVE.L (A2),D0 (added) mem-mgr function #8
CMP.L +00004(A6),D0
BLT.L H_010772
MOVEM.L D0-D3,-(A7)
MOVE.L +00012(A6),D0
MOVE.L D0,D1
ADD.L +00004(A6),D1
MOVE.L A2,D2
ADDQ.L #8,D2
MOVE.L D2,D3
ADD.L (A2),D3
CMP.L D0,D2
BGT.S H_01073A
CMP.L D1,D3
BLT.S H_01073A
CLR.L D4 (added) mem-mgr function #8
MOVEM.L D5-D6/A4,-(A7)
MOVE.L D3,D6
SUB.L D1,D6
MOVE.L #$00001008,D5
SUB.L D5,D6
CMPI.L #$00000008,D6
BLE.S H_010732
SUB.L D5,D3
SUBQ.L #8,D5
MOVEA.L D3,A4
MOVE.L D5,(A4)
MOVE.L +00004(A2),+00004(A4)
MOVE.L A4,+00004(A2)
SUB.L D2,D3
MOVE.L D3,(A2) (added) mem-mgr function #8
H_010732 MOVEM.L (A7)+,D5-D6/A4
BRA.S H_01073E
H_01073A MOVE.B #$FF,D4
H_01073E MOVEM.L (A7)+,D0-D3
CMPI.B #+000,D4
BNE.S H_010766
MOVE.B #$FF,D5
MOVE.B #$FF,D6
MOVE.L +00004(A2),(A3)
MOVE.L (A2),+00004(A6)
LEA +00008(A2),A4
MOVE.L A4,+00012(A6)
BRA.S H_010782
H_010766 LEA +00004(A2),A3
MOVEA.L +00004(A2),A2 (added) mem-mgr function #8
H_01076E BRA.S H_010782
H_010772 LEA +00004(A2),A3
MOVEA.L +00004(A2),A2
H_01077A BRA.S H_010782
H_01077E MOVE.B #$FF,D5
H_010782 BRA.L H_0106C2
H_010786 MOVEA.L +00008(A1),A1
BRA.S H_010796
H_01078E MOVE.B #$FF,D6
MOVE.B #$10,D7
H_010796 BRA.L H_0106A6
H_01079A MOVEM.L (A7)+,D0-D6/A0-A6
RTS end of code for (added) mem-mgr function #8
*
H_0107A0 MOVEM.L D0-D6/A0-A6,-(A7) new (modified) mem-mgr fn 5 (GETMEM)
CMPI.L #$00000000,D5
BEQ.S H_0107EA
DC.W $2078,$3BEC MOVEA.L $3BEC,A0
CLR.L D6
H_0107B4 CMPI.B #+255,D6
BEQ.S H_0107E6
CMPA.L #$00000000,A0
BEQ.S H_0107DC
CMP.L (A0),D5
BNE.S H_0107D4
MOVE.B #$FF,D6
BRA.S H_0107B4
H_0107D4 MOVEA.L +00004(A0),A0
H_0107D8 BRA.S H_0107B4
H_0107DC MOVE.B #$FF,D6 (modified) mem-mgr fn 5 (GETMEM)
MOVE.B #$05,D7
H_0107E4 BRA.S H_0107B4
H_0107E6 BRA.S H_0107EE
H_0107EA MOVE.B #$01,D7
H_0107EE CMPI.B #+000,D7
BNE.S H_010840
CMPI.L #$00000008,+00004(A6)
BLT.S H_010838
MOVE.L +00004(A6),D0
BTST #00,D0
BEQ.S H_010818
ADDI.L #$00000001,D0
MOVE.L D0,+00004(A6) (modified) mem-mgr fn 5 (GETMEM)
H_010818 MOVE.L +00008(A6),D0
BTST #00,D0
BEQ.S H_010834
CMPI.L #$00010000,+00004(A6)
BLT.S H_010840
MOVE.B #$0D,D7
H_010834 BRA.S H_010840
H_010838 MOVE.L #$00000008,+00004(A6)
H_010840 CMPI.B #+000,D7
BNE.L H_010A70
CLR.B D6
MOVEA.L +00012(A0),A1
H_01084E CMPI.B #+255,D6
BEQ.L H_010A70
CMPA.L #$00000000,A1
BEQ.L H_010A64
CLR.B D5
MOVEA.L +00012(A1),A2
LEA +00012(A1),A3 (modified) mem-mgr fn 5 (GETMEM)
H_01086A CMPI.B #+255,D5
BEQ.L H_010A5C
CMPA.L #$00000000,A2
BEQ.L H_010A54
MOVE.L (A2),D0
CMP.L +00004(A6),D0
BLT.L H_010A48
CLR.L D4
MOVEM.L D0-D3/D5-D6/A4,-(A7)
MOVE.L +00008(A6),D3
BTST #00,D3
BEQ.L H_010970
MOVE.L +00008(A0),D0
BTST #01,D0
BNE.S H_010912
MOVE.L A2,D0
ADDQ.L #8,D0 (modified) mem-mgr fn 5 (GETMEM)
MOVE.L +00004(A6),D1
MOVE.L (A2),D2
ADD.L D0,D1
ADD.L D0,D2
SWAP D0
SWAP D1
CMP.W D0,D1
BEQ.S H_01090E
ADDI.W #+001,D0
MOVE.W D0,D1
SWAP D1
CLR.W D1
ADD.L +00004(A6),D1 (modified) mem-mgr fn 5 (GETMEM)
CMP.L D1,D2
BLT.S H_01090A
SWAP D0
CLR.W D0
SUB.L D0,D2
SUBQ.L #8,D0
MOVEA.L D0,A4
MOVE.L D0,D1
SUB.L A2,D1
CMPI.L #$00000008,D1
BLT.S H_010902
SUBQ.L #8,D1
MOVE.L D1,(A2)
MOVE.L D2,(A4)
MOVE.L +00004(A2),+00004(A4)
MOVE.L A4,+00004(A2) (modified) mem-mgr fn 5 (GETMEM)
LEA +00004(A2),A3
MOVEA.L (A3),A2
BRA.S H_010970
H_010902 ADD.L D1,+00004(A6)
H_010906 BRA.S H_010970
H_01090A MOVE.B #$FF,D4
H_01090E BRA.S H_010970
H_010912 MOVE.L A2,D0
ADDQ.L #8,D0
MOVE.L D0,D2
ADD.L (A2),D2
MOVE.L D2,D1
SUB.L +00004(A6),D1
SWAP D1
SWAP D2 (modified) mem-mgr fn 5 (GETMEM)
CMP.W D1,D2
BEQ.S H_010970
SWAP D2
MOVE.L D2,D1
CLR.W D1
SUB.L +00004(A6),D1
CMP.L D1,D0
BGE.S H_01096C
MOVE.L D2,D1
CLR.W D2
MOVEA.L D2,A4
SUB.L D2,D1
CMPI.L #$00000008,D1
BLT.S H_010964
SUBQ.L #8,D1
MOVE.L D1,(A4) (modified) mem-mgr fn 5 (GETMEM)
MOVEA.L D2,A4
SUB.L D0,D2
MOVE.L D2,(A2)
MOVE.L +00004(A2),+00004(A4)
MOVE.L A4,+00004(A2)
BRA.S H_010970
H_010964 ADD.L D1,+00004(A6)
H_010968 BRA.S H_010970
H_01096C MOVE.B #$FF,D4
H_010970 MOVEM.L (A7)+,D0-D3/D5-D6/A4
MOVE.L (A2),D0
CMPI.B #+000,D4
BNE.L H_010A3C
MOVE.B #$FF,D5
MOVE.B #$FF,D6 (modified) mem-mgr fn 5 (GETMEM)
MOVE.L +00004(A6),D1
MOVE.L D0,D2
SUBQ.L #8,D2
SUB.L D1,D2
CMPI.L #$00000008,D2
BGE.S H_0109AE
MOVE.L +00004(A2),(A3)
MOVE.L (A2),+00004(A6)
LEA +00008(A2),A4
MOVE.L A4,+00012(A6)
BRA.S H_0109F6
H_0109AE MOVE.L +00008(A0),D4
BTST #01,D4
BNE.S H_0109DE
LEA +008(A2,D1.L),A4
MOVE.L D2,(A4) (modified) mem-mgr fn 5 (GETMEM)
MOVE.L D1,(A2)
MOVE.L +00004(A2),+00004(A4)
MOVE.L A4,(A3)
MOVE.L #$00000000,+00004(A2)
LEA +00008(A2),A2
MOVE.L A2,+00012(A6)
BRA.S H_0109F6
H_0109DE LEA +008(A2,D2.L),A4
MOVE.L D1,(A4)
MOVE.L D2,(A2)
MOVE.L #$00000000,+00004(A4)
LEA +00008(A4),A4
MOVE.L A4,+00012(A6)
H_0109F6 MOVEA.L +00012(A6),A4
MOVE.L +00008(A6),D0 (modified) mem-mgr fn 5 (GETMEM)
BTST #01,D0
BNE.S H_010A38
MOVEM.L D0-D1/A0-A1,-(A7)
MOVE.L +00004(A6),D0
MOVE.L D0,D1
ANDI.W #$FFFC,D0
MOVEA.L A4,A0
MOVEA.L A4,A1
ADDA.L D0,A1
H_010A1A CMPA.L A0,A1
BLE.S H_010A24
CLR.L (A0)+
BRA.S H_010A1A
H_010A24 ANDI.W #$0003,D1
ADDA.W D1,A1 (modified) mem-mgr fn 5 (GETMEM)
H_010A2A CMPA.L A0,A1
BLE.S H_010A34
CLR.B (A0)+
BRA.S H_010A2A
H_010A34 MOVEM.L (A7)+,D0-D1/A0-A1
H_010A38 BRA.S H_010A58
H_010A3C LEA +00004(A2),A3
MOVEA.L +00004(A2),A2
H_010A44 BRA.S H_010A58
H_010A48 LEA +00004(A2),A3 (modified) mem-mgr fn 5 (GETMEM)
MOVEA.L +00004(A2),A2
H_010A50 BRA.S H_010A58
H_010A54 MOVE.B #$FF,D5
H_010A58 BRA.L H_01086A
H_010A5C MOVEA.L +00008(A1),A1
BRA.S H_010A6C
H_010A64 MOVE.B #$FF,D6
MOVE.B #$10,D7
H_010A6C BRA.L H_01084E
H_010A70 MOVEM.L (A7)+,D0-D6/A0-A6
RTS end of code for (modified) mem-mgr
fn 5 (GETMEM)
*
****************************************************************************
NEW_SC11 EQU * NEW CODE FOR CHAIN SysCall 11
H_010A76 EQU *
TRAP #0 SYSCALL
DC.W $000E LoadB (OLD LOADB IS NOW SC6)
CMPI.W #+000,D7
BEQ.S SC11_COOL
TRAP #0 SYSCALL
DC.W $0006 OLD LOADB
CMPI.W #+000,D7
BNE.S H_010A9A
SC11_COOL DC.L $007C0100 ORI.W #$0100,SR
MOVE.W +00064(A7),D0
LEA +00070(A7),A7
DC.W $46C0 MOVE D0,SR
MOVE.L +00038(A6),D0
MOVE.L +00042(A6),D1
MOVEQ #0,D7
JSR (A2)
H_010A9A MOVE.W D7,+00034(A7)
BRA.L PT_MESS
H_010A9E RTS END OF NEW CODE FOR CHAIN SysCall 11
*
****************************************************************************
NEW_SC32 EQU * NEW CODE FOR SYSLEV SysCall 32
H_010AC4 MOVE.L H_00E298(PC),+00004(A7)
RTS
*
* LOOKUP AND PRINT ERROR MESSAGE FOR FILE LOAD/LODMGR
LOD_ERR_PRNT EQU *
H_010ACC LEA LOAD_ERROR_TABLE(PC),A6
H_010AD0 MOVE.B (A6)+,D0
LSL.W #8,D0
MOVE.B (A6)+,D0
CMP.W D0,D7
BNE.S H_010AE4
TRAP #00 $0 SYSCALL
DC.W $0013 PrtErMsg*
BRA.S H_010AEA
H_010AE4 CMPI.B #+013,(A6)+
BNE.S H_010AE4
H_010AEA CMP.W D0,D7
BEQ.S H_010AF4
CMPI.W #+000,D0
BNE.S H_010AD0
H_010AF4 CMPI.W #+000,D0
BNE.S H_010B00
TRAP #00 $0 SYSCALL
DC.W $0009 CPRTERR
H_010B00 RTS
LOAD_ERROR_TABLE EQU *
H_010B02 DC.W $0190
H_010B04 DC.B 'FUNCTION NO LONGER SUPPORTED',$D
H_010B21 DC.B $01,$91
H_010B23 DC.B 'LOAD NOT SUPPORTED FOR BIN FILES',$D
H_010B44 DC.W $0192
H_010B46 DC.B 'TRANSFER ADDRESS OUT OF RANGE',$D
H_010B64 DC.B $70,$01,'LCB ERROR - ODD ADDRESS',$D
H_010B7E DC.B $70,$0F,'LOAD FUNCTION NOT SUPPORTED',$D
*H_010BBC EQU *+00000032
H_010B9C DC.B $70,$11,'INVALID MAGIC NUMBER IN HEADER',$D
H_010BBD DC.B $70,$12,'INVALID EXTENDED HEADER SIZE',$D
*H_010BF8 EQU *+00000028
H_010BDC DC.B $70,$13,'INVALID CPU TYPE IN HEADER',$D
H_010BF9 DC.B $70,$14,'INVALID RELOC/SYMBOL FORMAT DESCRIPTOR',$D
H_010C22 DC.B $70,$15,'INVALID RUN-TIME ENVIRONMENT DESCRIPTOR',$D
H_010C4C DC.B $70,$32,'TEXT RELOCATION ERROR',$D
H_010C64 DC.B $70,$33,'DATA RELOCATION ERROR',$D
H_010C7C DC.B $70,$34,'SYMBOL TABLE RELOCATION ERROR',$D
*H_010CC8 EQU *+00000044
H_010C9C DC.B $70,$66,'CANNOT UNLOAD - MODULE IS AN ACTIVE DEVICE',$D
H_010CC9 DC.B $70,$67,'CANNOT UNLOAD - MODULE IS AN ACTIVE TASK',$D
H_010CF4 DC.B $70,$71,'MEMORY DEALLOCATION ERROR',$D
H_010D10 DC.B $70,$FE,'MODULE ALREADY EXISTS',$D
H_010D2A EQU *+2
H_010D28 DC.B $70,$FD,'IMVALID MODULE NAME',$D
H_010D3E DC.B $70,$FF,'MODULE NOT FOUND',$D,$0
H_010D52: DC.W +00000
*
****************************************************************************
NEW_SC64 EQU * CODE FOR LODMGR SysCall 64
H_010DA2 DC.W $40E7 MOVE SR,-(A7)
H_010DA4 LEA H_0120A2(PC),A0
TAS (A0)
BEQ.S H_010DBC
MOVEQ #002,D1
CLR.B D0
TRAP #00 $0 SYSCALL
DC.W $001D Delay
MOVEQ #255,D7
BRA.S H_010DBE
H_010DBC CLR.W D7
H_010DBE DC.W $BE78,$0000 CMP.W $0000,D7
BNE.S H_010DA4
CLR.L D7 CODE FOR LODMGR SysCall 64
CMPI.W #+000,D4
BLT.S H_010E10
CMPI.W #+10,D4 should be 6 not 27 !?!
BGT.S H_010E10
MOVE.L A6,D6
DC.W $BCB8,$0A24 CMP.L $0A24,D6
BLT.S H_010E08
DC.W $BCB8,$0A28 CMP.L $0A28,D6
BGE.S H_010E08
BTST #00,D6 CODE FOR LODMGR SysCall 64
BNE.S H_010E00
LSL.W #2,D4
LEA ERR_6012(PC),A0
MOVE.W #$6012,(A0)
LEA H_010E52(PC),A0
ADDA.L +000(A0,D4.W),A0
JSR (A0)
BRA.S H_010E14
H_010E00 EQU * CODE FOR LODMGR SysCall 64
H_010E08 MOVE.W #$7001,D7
H_010E04 EQU *
H_010E0C BRA.S H_010E14
H_010E10 MOVE.W #$700F,D7
H_010E14 ANDI.L #$0000FFFF,D7
CMPI.W #+000,D7 COMMON LM RET PT - IS D7=0? $701x = not .exe
BNE.S H_010E2E x = 1 means bad magic number
ADDI.L #$00000004,+00068(A7)
BRA.S H_010E44
H_010E2E DC.W $2078,$0A1C MOVEA.L $0A1C,A0
MOVE.W D7,+00138(A0)
MOVE.L #'LODM',+00124(A0)
MOVE.W #$4752,+00128(A0)
H_010E44 MOVE.L D7,+00034(A7)
DC.W $46DF MOVE (A7)+,SR
LEA H_0120A2(PC),A0
CLR.B (A0) CODE FOR LODMGR SysCall 64
RTS
ERR_6012 DC.W $6012
L_SEARCH DC.W 0
* LODMGR DISPATCH OFFSET TABLE
H_010E52 DC.L LM_0_LOAD-H_010E52 LOAD - SEARCH OR NOT AS SET
DC.L LM_1_UNLOAD-H_010E52 UNLOAD
DC.L LM_2_INQLOAD-H_010E52 INQLOAD
DC.L LM_3_MODIFY-H_010E52 MODIFY
DC.L LM_4_LMREQMEM-H_010E52 LMREQMEM
DC.L LM_5_LMRETMEM-H_010E52 LMRETMEM
DC.L LM_6_LMINQMEM-H_010E52 LMINQMEM
DC.L LM_7_LOAD-H_010E52 LOAD - NO DRIVE SEARCH
DC.L LM_8_LOAD-H_010E52 LOAD - W/ DRIVE SEARCH
DC.L LM_9_UNLOAD-H_010E52 UNLOAD W/O MESSING COMMAND TABLE
DC.L LM_10_UNLOAD-H_010E52 UNLOAD W/O STOPPING FOR $6012 ERR
*
LM_7_LOAD EQU * NO SEARCH
LEA L_SEARCH(PC),A4
MOVE.B #$FF,(A4)
BRA.S LM_0_LOAD
*
LM_8_LOAD EQU * DO SEARCH
LEA L_SEARCH(PC),A4
MOVE.B #0,(A4)
*
LM_0_LOAD BSR.S LM0LOAD
CMPI.W #0,D7
BNE.S LM0_RET
MOVE.L #0,26(A6)
LM0_RET RTS
*
LM0LOAD MOVEA.L A6,A4 CODE FOR LODMGR - fn 0 LOAD
CMPI.L #$00000000,(A4)
BNE.S H_010E90
CMPI.W #+000,+00004(A4)
BNE.S H_010E90
MOVE.L #' ',(A4)
MOVE.W #' ',+00004(A4)
H_010E90 MOVE.L +00014(A4),D0
ASR.L #8,D0 CODE FOR LODMGR - fn 0 LOAD
MOVE.B D0,D1
ASL.L #8,D0
MOVE.B D1,D0
CMPI.L #$00000000,D0
BEQ.S H_010EAE
CMPI.L #' ',D0
BNE.S H_010EB6
H_010EAE MOVE.L #'EXE ',+00014(A4)
H_010EB6 CLR.L D7 CODE FOR LODMGR - fn 0 LOAD
LEA +00006(A4),A0
BSR.L H_01191A
CMPI.W #+000,D7
BNE.S H_010EEE
BTST #00,+00020(A4)
BEQ.S H_010EEA
LEA +00030(A4),A0
BSR.L H_01191A
CMPI.W #+65535,D7
BNE.S H_010EEA
MOVE.W #$70FD,D7 CODE FOR LODMGR - fn 0 LOAD
BRA.L H_0113C0
H_010EEA BRA.S H_010EF8
H_010EEE MOVE.W #$70FD,+00090(A4)
BRA.L H_0113C0
H_010EF8 BTST #00,+00020(A4)
BEQ.S H_010F0A
LEA +00030(A4),A0
BRA.S H_010F0E
H_010F0A LEA +00006(A4),A0
H_010F0E LEA H_0120A4(PC),A5
BSR.L H_011C04 ?search for modules
CMPI.W #+000,D7 CODE FOR LODMGR - fn 0 LOAD
BNE.S H_010F2C
MOVE.L #$000070FE,D7 MODULE ALREADY EXISTS
MOVE.W D7,+00090(A4)
BRA.L H_0113C0
H_010F2C BSR.L H_011786 FILE OPEN SUBR
CMPI.W #+000,D7
BEQ.S H_010F3E
MOVE.W D7,+00090(A4)
BRA.L H_0113C0
H_010F3E MOVE.L #$000000A2,D0
MOVE.L #'SYSM',D5
CLR.B D1 CODE FOR LODMGR - fn 0 LOAD
BSR.L H_011EF8
CMPI.W #+000,D7
BEQ.S H_010F60
MOVE.B #$21,+00089(A4)
BRA.L H_0113B8
H_010F60 MOVEA.L A6,A5
MOVE.W #$0000,D0
H_010F6A MOVE.B #$00,+000(A5,D0.W)
ADDQ.W #1,D0
H_010F72 CMPI.W #+161,D0
BLE.S H_010F6A
LEA (A4),A0 CODE FOR LODMGR - fn 0 LOAD
LEA +00004(A5),A1
MOVE.W #$0000,D0
H_010F86 MOVE.B (A0)+,(A1)+
ADDQ.W #1,D0
H_010F8A CMPI.W #+016,D0
BLE.S H_010F86
BTST #00,+00020(A4)
BEQ.S H_010FA2
LEA +00030(A4),A0
BRA.S H_010FA6
H_010FA2 LEA +00006(A4),A0
H_010FA6 LEA +00030(A5),A1
MOVE.W #$0000,D0 CODE FOR LODMGR - fn 0 LOAD
H_010FB2 MOVE.B (A0)+,(A1)+
ADDQ.W #1,D0
H_010FB6 CMPI.W #+007,D0
BLE.S H_010FB2
CMPI.L #$00000000,+00022(A4)
BEQ.S H_010FD2
CMPI.L #' ',+00022(A4)
BNE.S H_010FDA
H_010FD2 MOVE.L #'USRM',+00022(A4)
H_010FDA MOVE.L +00022(A4),+00022(A5)
LEA +00092(A4),A0
LEA +00080(A5),A1
MOVE.W #$0000,D7 CODE FOR LODMGR - fn 0 LOAD
H_010FF0 MOVE.B (A0)+,(A1)+
ADDQ.W #1,D7
H_010FF4 CMPI.W #+080,D7
BLE.S H_010FF0
MOVE.W +00172(A4),+00160(A5)
MOVE.B #$10,+00089(A4)
SUBA.L #$00000034,A7
MOVEA.L A7,A0
MOVEQ #052,D0
BSR.L H_01182A
CMPI.W #+000,D7 CODE FOR LODMGR - fn 0 LOAD
BNE.L H_0110D8
MOVE.W (A0),D0
CMPI.W #+00518,D0
BEQ.S H_01102C
MOVE.W #$7011,D7
BRA.S H_01107C
H_01102C MOVE.W +00002(A0),D0
CMPI.W #+020,D0
BEQ.S H_01103E
MOVE.W #$7012,D7
BRA.S H_01107C
H_01103E MOVE.B +00028(A0),D0
CMPI.B #+133,D0 CODE FOR LODMGR - fn 0 LOAD
BEQ.S H_011052
MOVE.W #$7013,D7
BRA.S H_01107C
H_011052 MOVE.B +00029(A0),D0
CMPI.B #+000,D0
BEQ.S H_011064
MOVE.W #$7014,D7
BRA.S H_01107C
H_011064 MOVE.W +00030(A0),D0
MOVE.W D0,D3
MOVE.W #$0008,D1
NOT.W D1 CODE FOR LODMGR - fn 0 LOAD
AND.W D1,D0
CMPI.W #+16480,D0
BEQ.S H_01107C
MOVE.W #$7015,D7
H_01107C CMPI.W #+000,D7
BNE.S H_0110D4
MOVE.L +00004(A0),+00044(A5)
MOVE.L +00008(A0),+00052(A5)
MOVE.L +00012(A0),+00056(A5)
MOVE.L +00016(A0),+00068(A5)
LEA H_0120A8(PC),A1
MOVE.L +00020(A0),(A1) CODE FOR LODMGR - fn 0 LOAD
MOVE.L +00024(A0),+00072(A5)
LEA H_0120AC(PC),A1
MOVE.L +00032(A0),(A1)
LEA H_0120B0(PC),A1
MOVE.L +00036(A0),(A1)
LEA H_0120B4(PC),A1
MOVE.L +00040(A0),(A1)
LEA H_0120B8(PC),A1
MOVE.L +00044(A0),(A1)
MOVE.L +00048(A0),+00060(A5)
BRA.S H_0110D8
H_0110D4 MOVE.B D7,+00089(A4)
H_0110D8 ADDA.L #$00000034,A7
CMPI.W #+000,D7 CODE FOR LODMGR - fn 0 LOAD
BEQ.S H_0110EA
BRA.L H_0113A2
H_0110EA MOVE.L +00044(A5),D0
CMPI.L #$00000000,D0
BEQ.S H_011116
CLR.B D1
MOVE.L +00022(A5),D5
BSR.L H_011EF8
CMPI.W #+000,D7
BEQ.S H_011112
MOVE.B #$22,+00089(A4)
BRA.L H_011372
H_011112 BRA.S H_011118
H_011116 MOVEA.L D0,A6 CODE FOR LODMGR - fn 0 LOAD
H_011118 MOVE.L A6,+00040(A5)
MOVE.L +00052(A5),D0
ADD.L +00056(A5),D0
ANDI.W #$0008,D3
CMPI.W #+000,D3
BEQ.S H_011138
ADD.L +00060(A5),D0
BRA.S H_01116C
H_011138 MOVE.L +00022(A5),D5
BSR.L H_011FA6
CMP.L D1,D0
BCC.S H_01116A
SUB.L D0,D1 CODE FOR LODMGR - fn 0 LOAD
LSR.L #1,D1
BCLR #00,D1
CMP.L +00060(A5),D1
BCS.S H_011164
MOVE.L D1,+00060(A5)
SUB.L D0,+00060(A5)
ADD.L D1,D0
BRA.S H_01116C
H_011164 EQU *
H_011166 EQU *
H_01116A MOVEQ #255,D0
H_01116C CMPI.L #$00000000,D0
BEQ.S H_011194
MOVE.L +00022(A5),D5
CLR.B D1 CODE FOR LODMGR - fn 0 LOAD
BSR.L H_011EF8
CMPI.W #+000,D7
BEQ.S H_011190
MOVE.B #$24,+00089(A4)
BRA.L H_01138A
H_011190 BRA.S H_011196
H_011194 MOVEA.L D0,A6
H_011196 MOVE.L A6,+00048(A5)
MOVE.L +00068(A5),D0
CMPI.L #$00000000,D0
BEQ.S H_0111C6
CLR.B D1 CODE FOR LODMGR - fn 0 LOAD
MOVE.L +00022(A5),D5
BSR.L H_011EF8
CMPI.W #+000,D7
BEQ.S H_0111C2
MOVE.B #$24,+00089(A4)
BRA.L H_0113A2
H_0111C2 BRA.S H_0111C8
H_0111C6 MOVEA.L D0,A6
H_0111C8 MOVE.L A6,+00064(A5)
MOVEA.L +00040(A5),A0
MOVE.L +00044(A5),D0
BSR.L H_011892
CMPI.W #+000,D7 CODE FOR LODMGR - fn 0 LOAD
BEQ.S H_0111E8
MOVE.B #$42,+00089(A4)
BRA.L H_011362
H_0111E8 MOVEA.L +00048(A5),A0
MOVE.L +00052(A5),D0
BSR.L H_011892
CMPI.W #+000,D7
BEQ.S H_011204
MOVE.B #$43,+00089(A4)
BRA.L H_011362
H_011204 MOVEA.L +00064(A5),A0
MOVE.L +00068(A5),D0
BSR.L H_011892
CMPI.W #+000,D7 CODE FOR LODMGR - fn 0 LOAD
BEQ.S H_011220
MOVE.B #$45,+00089(A4)
BRA.L H_011362
H_011220 MOVEA.L +00064(A5),A1
MOVEA.L +00068(A5),A3
ADDA.L A1,A3
CLR.W D5
H_01122C CMPA.L A1,A3
BLE.S H_011274
CMPI.W #+000,D7
BNE.S H_011274
BSR.L H_0114F0
CMPI.W #+65535,D7 CODE FOR LODMGR - fn 0 LOAD
BNE.S H_011272
MOVE.W D7,D5
LEA H_0113C6(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0012 PrtMsg*
LEA H_0120D0(PC),A6
H_011254 CMPI.B #+000,(A0)
BEQ.S H_011260
MOVE.B (A0)+,(A6)+
BRA.S H_011254
H_011260 MOVE.B #$22,(A6)+ CODE FOR LODMGR - fn 0 LOAD
MOVE.B #$0D,(A6)+
LEA H_0120D0(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0012 PrtMsg*
CLR.W D7
H_011272 BRA.S H_01122C
H_011274 CMPI.W #+000,D5
BEQ.S H_01127E
MOVE.W #$7034,D7
H_01127E CMPI.W #+000,D7 CODE FOR LODMGR - fn 0 LOAD
BEQ.S H_01128E
MOVE.B #$34,+00089(A4)
BRA.L H_011362
H_01128E MOVEA.L +00040(A5),A3
MOVE.L H_0120AC(PC),D0
BSR.L H_0113E6
CMPI.W #+000,D7
BEQ.S H_0112B4
CMPI.W #+65535,D7
BNE.S H_0112AA
MOVE.W #$7032,D7 CODE FOR LODMGR - fn 0 LOAD
H_0112AA MOVE.B #$32,+00089(A4)
BRA.L H_011362
H_0112B4 MOVE.L +00072(A5),D0
ADD.L A3,D0
MOVE.L D0,+00072(A5)
MOVE.L +00076(A5),D0
ADD.L A3,D0
MOVE.L D0,+00076(A5)
MOVEA.L +00048(A5),A3
MOVE.L H_0120B0(PC),D0
BSR.L H_0113E6
CMPI.W #+000,D7
BEQ.S H_0112EE
CMPI.W #+65535,D7 CODE FOR LODMGR - fn 0 LOAD
BNE.S H_0112E4
MOVE.W #$7033,D7
H_0112E4 MOVE.B #$33,+00089(A4)
BRA.S H_011362
H_0112EE BTST #00,+00020(A4)
BNE.S H_011312
LEA +00030(A5),A0
LEA +00030(A4),A1
MOVE.W #$0000,D0
H_011308 MOVE.B (A0)+,(A1)+
ADDQ.W #1,D0
H_01130C CMPI.W #+007,D0 CODE FOR LODMGR - fn 0 LOAD
BLE.S H_011308
H_011312 MOVE.L +00040(A5),+00040(A4)
MOVE.L +00044(A5),+00044(A4)
MOVE.L +00048(A5),+00048(A4)
MOVE.L +00052(A5),+00052(A4)
MOVE.L +00056(A5),+00056(A4)
MOVE.L +00060(A5),+00060(A4)
MOVE.L +00064(A5),+00064(A4)
MOVE.L +00068(A5),+00068(A4)
MOVE.L +00072(A5),+00072(A4)
MOVE.L +00076(A5),+00076(A4)
LEA H_0120A4(PC),A0
LEA (A5),A1 CODE FOR LODMGR - fn 0 LOAD
MOVE.L (A0),(A1)
MOVE.L A1,(A0)
MOVEQ #000,D7
MOVE.B D7,+00089(A4)
BRA.S H_0113B8
H_011362 MOVE.W D7,+00090(A4)
MOVEA.L +00040(A5),A6
BSR.L H_011F52
BRA.S H_011376
H_011372 MOVE.W D7,+00090(A4)
H_011376 MOVEA.L +00048(A5),A6
BSR.L H_011F52
CMPI.W #+000,D7 CODE FOR LODMGR - fn 0 LOAD
BEQ.S H_011386
MOVE.L D7,D0
H_011386 BRA.S H_01138E
H_01138A MOVE.W D7,+00090(A4)
H_01138E MOVEA.L +00064(A5),A6
BSR.L H_011F52
CMPI.W #+000,D7
BEQ.S H_01139E
MOVE.L D7,D0
H_01139E BRA.S H_0113A6
H_0113A2 MOVE.W D7,+00090(A4)
H_0113A6 MOVEA.L A5,A6 CODE FOR LODMGR - fn 0 LOAD
BSR.L H_011F52
CMPI.W #+000,D7
BEQ.S H_0113BC
MOVE.L D7,D0
H_0113B4 BRA.S H_0113BC
H_0113B8 MOVE.W D7,+00090(A4)
H_0113BC BSR.L H_011876
H_0113C0 MOVE.W +00090(A4),D7
RTS
H_0113C6 DC.B ' RELOCATION ERROR ON SYMBOL "',$4,$0
DS.W 0
H_0113E6 MOVE.L D0,D3 CODE FOR LODMGR - fn 0 LOAD
MOVE.L #'USRM',D5
CLR.B D1
BSR.L H_011EF8
CMPI.W #+000,D7
BNE.S H_01143A
MOVE.L A6,-(A7)
MOVEA.L A6,A0
MOVE.L D3,D0
BSR.L H_011892
CMPI.W #+000,D7
BNE.S H_01142A
MOVEA.L A0,A1 CODE FOR LODMGR - fn 0 LOAD
ADDA.L D3,A1
H_011410 CMPA.L A0,A1
BLE.S H_01142A
CMPI.W #+000,D7
BNE.S H_01142A
BSR.S H_01143C
ADDA.L #$00000008,A0
BRA.S H_011410
H_01142A MOVE.W D7,D1
MOVEA.L (A7)+,A6
BSR.L H_011F52
CMPI.W #+000,D7 CODE FOR LODMGR - fn 0 LOAD
BNE.S H_01143A
MOVE.W D1,D7
H_01143A RTS
H_01143C MOVE.W (A0),D1
ANDI.W #$C000,D1
CMPI.W #+49152,D1
BNE.S H_01148C
BTST #02,+00020(A4)
BNE.S H_011486
MOVEA.L +00004(A0),A2
ADDA.L A3,A2
MOVE.W (A0),D1
ANDI.W #$3000,D1
CMPI.W #+08192,D1 CODE FOR LODMGR - fn 0 LOAD
BNE.S H_011480
MOVE.W +00002(A0),D0
BSR.L H_011714
CMPI.W #+000,D7
BNE.S H_0114EE
MOVE.L +00004(A6),(A2)
H_01147C BRA.S H_0114EE
H_011480 MOVEQ #255,D7
H_011482 BRA.S H_0114EE
H_011486 MOVEQ #255,D7
H_011488 BRA.S H_0114EE
H_01148C CMPI.W #+000,D1 CODE FOR LODMGR - fn 0 LOAD
BNE.S H_0114A0
MOVE.L +00040(A5),D2
SUB.L H_0120B4(PC),D2
BRA.S H_0114CA
H_0114A0 CMPI.W #+16384,D1
BNE.S H_0114B4
MOVE.L +00048(A5),D2
SUB.L H_0120B8(PC),D2
BRA.S H_0114CA
H_0114B4 CMPI.W #+32768,D1
BNE.S H_0114C8
MOVE.L +00048(A5),D2
SUB.L H_0120B8(PC),D2
BRA.S H_0114CA
H_0114C8 MOVEQ #255,D7 CODE FOR LODMGR - fn 0 LOAD
H_0114CA CMPI.W #+000,D7
BNE.S H_0114EE
MOVE.W (A0),D1
ANDI.W #$3000,D1
CMPI.W #+08192,D1
BNE.S H_0114EC
MOVE.L +00004(A0),D0
ADD.L D2,+000(A3,D0.L)
BRA.S H_0114EE
H_0114EC MOVEQ #255,D7
H_0114EE RTS
H_0114F0 BSR.L H_0115C0
ANDI.W #$001F,D1 CODE FOR LODMGR - fn 0 LOAD
CMPI.W #+001,D1
BNE.S H_011506
ADDQ.L #6,A1
BRA.L H_0115B8
H_011506 CMPI.W #+000,D1
BNE.S H_011558
LEA +00006(A1),A0
MOVE.B +00020(A4),D3
DC.W $C638,$0004 AND.B $0004,D3
CMPI.W #+000,D1
BNE.S H_011552
CMPI.B #+000,D3
BNE.S H_011552
BSR.L H_01160E
CMPI.W #+000,D7 CODE FOR LODMGR - fn 0 LOAD
BNE.S H_011548
SUBA.L #$00000002,A1
MOVE.W D6,D1
ANDI.W #$001F,D1
BSR.S H_0115D8
MOVE.L A6,D1
H_011548 ADDA.L #$00000002,A1
BRA.S H_0115A6
H_011552 MOVEQ #255,D7
H_011554 BRA.S H_0115A6
H_011558 CMPI.W #+002,D1 CODE FOR LODMGR - fn 0 LOAD
BNE.S H_01156C
MOVE.L +00040(A5),D0
SUB.L H_0120B4(PC),D0
BRA.S H_011596
H_01156C CMPI.W #+003,D1
BNE.S H_011580
MOVE.L +00048(A5),D0
SUB.L H_0120B8(PC),D0
BRA.S H_011596
H_011580 CMPI.W #+004,D1
BNE.S H_011594
MOVE.L +00048(A5),D0
SUB.L H_0120B8(PC),D0
BRA.S H_011596
H_011594 MOVEQ #255,D7 CODE FOR LODMGR - fn 0 LOAD
H_011596 ADDA.L #$00000002,A1
MOVE.L A1,-(A7)
BSR.S H_0115C8
ADD.L D0,D1
MOVEA.L (A7)+,A1
H_0115A6 CMPI.W #+000,D7
BEQ.S H_0115B4
ADDQ.L #4,A1
BRA.S H_0115B8
H_0115B4 BSR.S H_0115EA
H_0115B8 CMPI.B #+000,(A1)+
BNE.S H_0115B8
RTS CODE FOR LODMGR - fn 0 LOAD
H_0115C0 MOVE.B (A1)+,D1
ROL.W #8,D1
MOVE.B (A1)+,D1
RTS
H_0115C8 MOVEM.L D0,-(A7)
BSR.S H_0115C0
SWAP D1
BSR.S H_0115C0
MOVEM.L (A7)+,D0
RTS
H_0115D8 MOVEM.L D0/D2,-(A7)
MOVE.W #$0001,D2 CODE FOR LODMGR - fn 0 LOAD
BSR.S H_0115FC
MOVEM.L (A7)+,D0/D2
RTS
H_0115EA MOVEM.L D0/D2,-(A7)
MOVE.W #$0003,D2
BSR.S H_0115FC
MOVEM.L (A7)+,D0/D2
RTS
H_0115FC MOVE.W #$0000,D0
BRA.S H_011608
H_011602 ROL.L #8,D1
MOVE.B D1,(A1)+
ADDQ.W #1,D0 CODE FOR LODMGR - fn 0 LOAD
H_011608 CMP.W D2,D0
BLE.S H_011602
RTS
H_01160E MOVEM.L D0-D1/A0-A3/A5,-(A7)
MOVEA.L A0,A2
CLR.W D7
LEA H_0120A4(PC),A5
H_01161A MOVEA.L (A5),A5
CMPA.L #$00000000,A5
BEQ.S H_011650
MOVEA.L +00064(A5),A1
MOVEA.L +00068(A5),A0
CMPA.L #$00000000,A1
BEQ.S H_01164C
CMPA.L #$00000000,A0
BEQ.S H_01164C
ADDA.L A1,A0 CODE FOR LODMGR - fn 0 LOAD
BSR.S H_01167C
BRA.S H_011650
H_01164C MOVE.W #$FFFF,D7
H_011650 CMPI.W #+000,(A5)
BEQ.S H_01165C
CMPI.W #+000,D7
BNE.S H_01161A
H_01165C CMPA.L #$00000000,A5
BNE.S H_011674
MOVE.W #$FFFF,D7
MOVEA.L #$00000000,A6
BRA.S H_011676
H_011674 MOVEA.L A3,A6 CODE FOR LODMGR - fn 0 LOAD
H_011676 MOVEM.L (A7)+,D0-D1/A0-A3/A5
RTS
H_01167C BSR.L H_0115C0
MOVE.W D1,D6
BSR.L H_0115C0
BSR.L H_0115C8
MOVEA.L D1,A3
BSR.S H_0116D6
CMPI.W #+000,D7
BNE.S H_01169A
MOVEA.L A1,A0
H_01169A CMPA.L A1,A0
BGT.S H_01167C
CMPI.W #+000,D0 CODE FOR LODMGR - fn 0 LOAD
BNE.S H_0116D4
MOVE.W D6,D0
ANDI.W #$0020,D0
CMPI.W #+000,D0
BEQ.S H_0116D0
MOVE.W D6,D0
ANDI.W #$001F,D0
CMPI.W #+001,D0
BLT.S H_0116C8
CMPI.W #+004,D0
BLE.S H_0116D4
H_0116C8 EQU * CODE FOR LODMGR - fn 0 LOAD
H_0116CC EQU *
H_0116D0 MOVE.W #$FFFF,D7
H_0116D4 RTS
H_0116D6 CLR.L D7
CLR.L D0
MOVE.L A2,-(A7)
H_0116DC MOVE.B (A1)+,D1
MOVE.B (A2)+,D2
CMP.B D1,D2
BEQ.S H_0116EC
MOVE.W #$FFFF,D7
MOVE.W D7,D0 CODE FOR LODMGR - fn 0 LOAD
H_0116EC CMPI.B #+000,D1
BEQ.S H_0116FA
CMPI.B #+000,D2
BNE.S H_0116FE
H_0116FA MOVE.W #$FFFF,D0
H_0116FE CMPI.W #+000,D0
BEQ.S H_0116DC
H_011704 CMPI.B #+000,D1
BEQ.S H_011710
MOVE.B (A1)+,D1
BRA.S H_011704
H_011710 MOVEA.L (A7)+,A2 CODE FOR LODMGR - fn 0 LOAD
RTS
H_011714 MOVEM.L D1/A1-A2,-(A7)
MOVE.W D0,D7
CMPI.L #$00000000,+00068(A5)
BEQ.S H_011776
CMPI.L #$00000000,+00064(A5)
BEQ.S H_011776
MOVEA.L +00064(A5),A1
MOVEA.L +00068(A5),A2
ADDA.L A1,A2
H_01173C CMPA.L A1,A2
BLE.S H_01175E
CMPI.W #+000,D7 CODE FOR LODMGR - fn 0 LOAD
BEQ.S H_01175E
ADDA.L #$00000008,A1
H_011750 CMPI.B #+000,(A1)+
BEQ.S H_01175A
BRA.S H_011750
H_01175A SUBQ.W #1,D7
BRA.S H_01173C
H_01175E MOVEA.L A1,A6
CMPI.W #+000,D7
BEQ.S H_011780
MOVE.W #$FFFF,D7
MOVEA.L #$00000000,A6
H_011772 BRA.S H_011780
H_011776 MOVE.W #$FFFF,D7 CODE FOR LODMGR - fn 0 LOAD
MOVEA.L #$00000000,A6
H_011780 MOVEM.L (A7)+,D1/A1-A2
RTS
H_011786 SUBA.L #$0000005A,A7
MOVEA.L A7,A6
MOVE.W #$0000,D7
H_011796 MOVE.B #$00,+000(A6,D7.W)
ADDQ.W #1,D7
H_01179E CMPI.W #+089,D7
BLE.S H_011796
LEA (A4),A2 CODE FOR LODMGR - fn 0 LOAD
MOVE.W #$0000,D7
H_0117AE MOVE.B (A2)+,+000(A6,D7.W)
ADDQ.W #1,D7
H_0117B4 CMPI.W #+005,D7
BLE.S H_0117AE
LEA +00006(A4),A2
MOVE.W #$0000,D7
H_0117C6 MOVE.B (A2)+,+038(A6,D7.W)
ADDQ.W #1,D7
H_0117CC CMPI.W #+007,D7 CODE FOR LODMGR - fn 0 LOAD
BLE.S H_0117C6
LEA +00014(A4),A2
MOVE.W #$0000,D7
H_0117DE MOVE.B (A2)+,+046(A6,D7.W)
ADDQ.W #1,D7
H_0117E4 CMPI.W #+002,D7
BLE.S H_0117DE
MOVE.L D3,-(A7)
BTST #0,L_SEARCH(PC)
BNE.S LM_0_NS
MOVEQ #0,D3
CMP.B #' ',(A6)
BEQ.S LM_F0_RE
CMP.B #0,(A6)
BEQ.S LM_F0_RE
LM_0_NS MOVEQ #13,D3
LM_F0_RE MOVE.B #$01,+00006(A6)
CLR.L D7 CODE FOR LODMGR - fn 0 LOAD
MOVE.B +00018(A4),D5
ORI.W #$0040,+00016(A6)
MOVE.L D3,-(A7)
BSR.L SUB_OPEN
MOVE.L (A7)+,D3
H_011804 CMPI.W #+000,D7
BEQ.S L_FILEOK
L_TRYIT BSR.L DRV_SERCH
CMP.W #0,D7
BEQ LM_F0_RE
BRA.S H_011822
L_FILEOK LEA H_0120BC(PC),A0
MOVE.W +00026(A6),(A0)
LEA H_0120BE(PC),A0
MOVE.W +00028(A6),(A0)
MOVE.B +00049(A6),+00088(A4)
H_011822 MOVE.L (A7)+,D3
ADDA.L #$0000005A,A7
RTS
H_01182A MOVEM.L A0,-(A7) CODE FOR LODMGR - fn 0 LOAD
MOVE.B +00018(A4),D5
LEA H_0120C0(PC),A6
MOVE.B #$00,(A6)
MOVE.B #$00,+00001(A6)
MOVE.B #$00,+00002(A6)
MOVE.L A0,+00004(A6)
MOVE.W D0,+00008(A6)
MOVE.W #$0000,+00010(A6)
MOVE.L #$00000000,+00012(A6)
CLR.L D7
TRAP #06 $6 IOMGR6/SYSIO
DC.W $0003 READ
NOP
NOP
H_011866 CMPI.W #+000,D7 CODE FOR LODMGR - fn 0 LOAD
BEQ.S H_011870
MOVE.W D7,D0
H_011870 MOVEM.L (A7)+,A0
RTS
H_011876 MOVE.B +00018(A4),D5
BSR.L CLOS_SUB
H_011888 CMPI.W #+000,D7
H_011890 RTS CODE FOR LODMGR - fn 0 LOAD
H_011892 MOVEM.L D0-D1/A0,-(A7)
MOVE.L D0,D1
H_011898 CMPI.L #$00000000,D1
BLE.S H_0118C4
CMPI.L #$0000FFFF,D1
BLT.S H_0118B0
MOVE.L #$0000FFFF,D0
BRA.S H_0118B2
H_0118B0 MOVE.L D1,D0
H_0118B2 SUB.L D0,D1
BSR.S H_01182A
CMPI.W #+000,D7 CODE FOR LODMGR - fn 0 LOAD
BEQ.S H_0118C0
BRA.S H_0118C4
H_0118C0 ADDA.L D0,A0
BRA.S H_011898
H_0118C4 MOVEM.L (A7)+,D0-D1/A0
RTS END OF CODE FOR LODMGR - fn 0 LOAD
*
LM_3_MODIFY EQU * CODE FOR LODMGR - fn 3 MODIFY
H_0118CA MOVEA.L A6,A4
CLR.L D7
LEA +00006(A4),A0
BSR.S H_01191A
CMPI.W #+001,D7
BHI.S H_0118FC
LEA +00030(A4),A0
LEA H_0120A4(PC),A5
BSR.L H_011C04 ?? search for modules
CMPI.W #+000,D7
BEQ.S H_0118F8
MOVE.L #$000070FF,D7
H_0118F8 BRA.S H_011902
H_0118FC MOVE.L #$000070FD,D7
H_011902 CMPI.W #+000,D7 CODE FOR LODMGR - fn 3 MODIFY
BNE.S H_011918
BTST #00,+00020(A4)
BEQ.S H_011918
BSR.L H_011AB4
H_011918 RTS
H_01191A MOVEM.L D0-D1/D4-D6/A0-A1,-(A7) SUB USED BY LOAD, MODIFY
BSR.L H_0119EE
CMPI.W #+000,D7
BNE.S H_01199E
MOVEA.L A0,A1
LEA +00008(A1),A1
MOVE.B (A0)+,D5
BSR.L H_011A3A
CMPI.W #+000,D7 CODE FOR LODMGR - fn 3 MODIFY
BEQ.S H_011988
CMPI.B #+035,D5
BNE.S H_011982
MOVE.B (A0)+,D5
BSR.L H_011A3A
CMPI.W #+000,D7
BEQ.S H_01195A
MOVEQ #255,D7
BRA.S H_01197E
H_01195A CMPI.W #+006,D4
BGT.S H_01197C
MOVE.W #$0004,D6
MOVE.W #$0003,D1 CODE FOR LODMGR - fn 3 MODIFY
BSR.S H_0119A4
CMPI.W #+65535,D7
BEQ.S H_01199E
MOVEQ #001,D7
H_011978 BRA.S H_01199E
H_01197C EQU *
H_01197E EQU *
H_011982 MOVEQ #255,D7
H_011984 BRA.S H_01199E
H_011988 MOVE.W #$0007,D6
MOVE.W #$0001,D1
BSR.S H_0119A4
CMPI.W #+65535,D7 CODE FOR LODMGR - fn 3 MODIFY
BEQ.S H_01199E
MOVEQ #000,D7
H_01199E MOVEM.L (A7)+,D0-D1/D4-D6/A0-A1
RTS
H_0119A4 CLR.W D4
CLR.W D0
CLR.W D7
H_0119AA CMP.W D0,D6
BLE.S H_0119D2
CMPI.W #+65535,D7
BEQ.S H_0119D2
MOVE.B (A0)+,D5 CODE FOR LODMGR - fn 3 MODIFY
BSR.S H_011A3A
CMP.W D7,D1
BCC.S H_0119CE
CMPI.B #+032,D5
BEQ.S H_0119CE
MOVEQ #255,D7
H_0119CE ADDQ.W #1,D0
BRA.S H_0119AA
H_0119D2 CMPA.L A0,A1
BLE.S H_0119EC
CMPI.W #+65535,D7
BEQ.S H_0119EC
CMPI.B #+032,(A0)+
BEQ.S H_0119EA
MOVEQ #255,D7 CODE FOR LODMGR - fn 3 MODIFY
H_0119EA BRA.S H_0119D2
H_0119EC RTS
H_0119EE CLR.W D4
CLR.W D7
CMPI.B #+032,(A0)
BEQ.S H_011A34
MOVE.W #$0000,D0
H_011A02 MOVE.B +000(A0,D0.W),D5
CMPI.B #+032,D5
BNE.S H_011A1C
CMPI.W #+000,D4
BNE.S H_011A18
MOVE.W D0,D4 CODE FOR LODMGR - fn 3 MODIFY
H_011A18 BRA.S H_011A28
H_011A1C CMPI.W #+000,D4
BEQ.S H_011A28
MOVE.W #$FFFF,D7
H_011A28 ADDQ.W #1,D0
H_011A2A CMPI.W #+007,D0
BLE.S H_011A02
BRA.S H_011A38
H_011A34 MOVE.W #$FFFF,D7
H_011A38 RTS
H_011A3A CMPI.B #+065,D5
BLT.S H_011A4E
CMPI.B #+090,D5 CODE FOR LODMGR - fn 3 MODIFY
BGT.S H_011A4E
MOVE.W #$0000,D7
BRA.S H_011AB2
H_011A4E CMPI.B #+048,D5
BLT.S H_011A62
CMPI.B #+057,D5
BGT.S H_011A62
MOVE.W #$0001,D7
BRA.S H_011AB2
H_011A62 CMPI.B #+013,D5
BNE.S H_011A70
MOVE.W #$0002,D7
BRA.S H_011AB2
H_011A70 CMPI.B #+032,D5 CODE FOR LODMGR - fn 3 MODIFY
BNE.S H_011A7E
MOVE.W #$0002,D7
BRA.S H_011AB2
H_011A7E CMPI.B #+044,D5
BNE.S H_011A8C
MOVE.W #$0002,D7
BRA.S H_011AB2
H_011A8C CMPI.B #+059,D5
BNE.S H_011A9A
MOVE.W #$0002,D7
BRA.S H_011AB2
H_011A9A CMPI.B #+032,D5 CODE FOR LODMGR - fn 3 MODIFY
BLS.S H_011AAE
CMPI.B #+126,D5
BHI.S H_011AAE
MOVE.W #$0003,D7
BRA.S H_011AB2
H_011AAE MOVE.W #$FFFF,D7
H_011AB2 RTS
H_011AB4 MOVE.L A5,-(A7)
LEA +00006(A4),A0
LEA H_0120A4(PC),A5
BSR.L H_011C04 ?? search for modules
MOVEA.L (A7)+,A5 CODE FOR LODMGR - fn 3 MODIFY
CMPI.W #+000,D7
BNE.S H_011AD6
MOVE.L #$000070FE,D7
BRA.S H_011AF8
H_011AD6 LEA +00006(A4),A0
LEA +00030(A4),A3
LEA +00030(A5),A1
MOVE.W #$0000,D0
H_011AEA MOVE.B (A0),(A3)+
MOVE.B (A0)+,(A1)+
ADDQ.W #1,D0 CODE FOR LODMGR - fn 3 MODIFY
H_011AF0 CMPI.W #+007,D0
BLE.S H_011AEA
CLR.L D7
H_011AF8 RTS END OF CODE FOR LODMGR - fn 3 MODIFY
*
LM_2_INQLOAD EQU * CODE FOR LODMGR - fn 2 INQLOAD
H_011AFA MOVEA.L A6,A4
LEA H_0120A4(PC),A5
MOVE.B +00020(A4),D0
ANDI.B #$01,D0
BNE.S H_011B18
LEA +00030(A4),A0
BSR.L H_011C04 search for modules
BRA.S H_011B20
H_011B18 MOVE.W +00038(A4),D0
BSR.L H_011BCA
H_011B20 MOVE.W D0,+00038(A4)
CMPI.W #+000,D7 CODE FOR LODMGR - fn 2 INQLOAD
BNE.L H_011BC4
LEA +00030(A5),A0
LEA +00030(A4),A1
MOVE.W #$0000,D0
H_011B3C MOVE.B (A0)+,(A1)+
ADDQ.W #1,D0
H_011B40 CMPI.W #+007,D0 CODE FOR LODMGR - fn 2 INQLOAD
BLE.S H_011B3C
LEA +00004(A5),A0
LEA (A4),A1
MOVE.W #$0000,D0
H_011B54 MOVE.B (A0)+,(A1)+
ADDQ.W #1,D0
H_011B58 CMPI.W #+016,D0 CODE FOR LODMGR - fn 2 INQLOAD
BLE.S H_011B54
MOVE.L +00040(A5),+00040(A4)
MOVE.L +00044(A5),+00044(A4)
MOVE.L +00048(A5),+00048(A4)
MOVE.L +00052(A5),+00052(A4)
MOVE.L +00056(A5),+00056(A4)
MOVE.L +00060(A5),+00060(A4)
MOVE.L +00064(A5),+00064(A4)
MOVE.L +00068(A5),+00068(A4)
MOVE.L +00072(A5),+00072(A4)
MOVE.L +00022(A5),+00022(A4)
MOVE.L +00026(A5),+00026(A4)
LEA +00080(A5),A0
LEA +00092(A4),A1
MOVE.W #$0000,D0 CODE FOR LODMGR - fn 2 INQLOAD
H_011BB0 MOVE.B (A0)+,(A1)+
ADDQ.W #1,D0
H_011BB4 CMPI.W #+080,D0
BLE.S H_011BB0
MOVE.W +00160(A5),+00172(A4)
BRA.S H_011BC8
H_011BC4 MOVE.W #$70FF,D7
H_011BC8 RTS
H_011BCA CMPA.L #$00000000,A5
BNE.S H_011BDA
MOVE.W #$FFFF,D7
RTS
H_011BDA MOVE.W #$0000,D1 CODE FOR LODMGR - fn 2 INQLOAD
BRA.S H_011BF6
H_011BE2 MOVEA.L (A5),A5
CMPA.L #$00000000,A5
BNE.S H_011BF4
MOVE.W #$FFFF,D7
RTS
H_011BF4 ADDQ.W #1,D1
H_011BF6 CMP.W D0,D1
BLE.S H_011BE2
LEA +00030(A5),A0
ADDQ.W #1,D0
CLR.W D7 CODE FOR LODMGR - fn 2 INQLOAD
RTS
H_011C04 CLR.W D0 search for modules, a5 points to list (@ 120A4)
H_011C06 CMPI.L #$00000000,(A5)
BNE.S H_011C18
MOVE.W #$FFFF,D7
BRA.S H_011C26
H_011C18 ADDQ.W #1,D0
MOVEA.L A5,A3
MOVEA.L (A5),A5
LEA +00030(A5),A1
BSR.S H_011C36
H_011C26 CMPI.W #+000,D7 CODE FOR LODMGR - fn 2 INQLOAD
BEQ.S H_011C34
CMPI.L #$00000000,(A5)
BNE.S H_011C06
H_011C34 RTS
H_011C36 CLR.W D7
MOVEM.L D0-D1,-(A7)
MOVE.W #$0000,D0
H_011C44 MOVE.B +000(A0,D0.W),D1
CMP.B +000(A1,D0.W),D1
BEQ.S H_011C54
MOVE.W #$FFFF,D7
H_011C54 ADDQ.W #1,D0
H_011C56 CMPI.W #+007,D0 CODE FOR LODMGR - fn 2 INQLOAD
BLE.S H_011C44
MOVEM.L (A7)+,D0-D1
RTS END OF CODE FOR LODMGR - fn 2 INQLOAD
*
LM_10_UNLOAD EQU * CODE FOR LODMGR - fn 10 UNLOAD disregarding
* mem_mgr error $6012
MOVE.L A0,-(A7)
LEA.L ERR_6012(PC),A0
MOVE.W #0,(A0)
MOVE.L (A7)+,A0
*
LM_1_UNLOAD EQU * CODE FOR LODMGR - fn 1 UNLOAD
H_011C62 MOVEM.L D0-D6/A1-A3/A6,-(A7)
MOVE.L 6(A6),D1 when unloading - make sure that commands
MOVE.L 10(A6),D2 made resident are deleted from the system
MOVE.L #3,D0 resident command table. Check for both
* SUBA.L #40,A7 the file name and the module name.
TRAP #0
DC.W 50
MOVE.L $1E(A6),D1
MOVE.L $22(A6),D2
MOVE.L #3,D0
TRAP #0
DC.W 50
* ADDA.L #40,A7
MOVEM.L (A7)+,D0-D6/A1-A3/A6
MOVEQ.L #0,D7
*
LM_9_UNLOAD EQU *
MOVEA.L A6,A4
MOVE.B #$00,089(A4)
LEA H_0120A4(PC),A5
LEA 030(A4),A0
BSR.L H_011C04
CMPI.W #+000,D7
BNE.S H_011D0C
BSR.L H_011D1A
CMPI.W #+000,D7
BNE.S H_011D08
MOVEA.L 040(A5),A6
BSR.L H_011F52
CMPI.W #+000,D7 CODE FOR LODMGR - fn 1 UNLOAD
BEQ.S H_011CA2
MOVE.B #$55,089(A4)
BRA.S H_011D08
H_011CA2 MOVEA.L 048(A5),A6
BSR.L H_011F52
CMPI.W #+000,D7
BEQ.S H_011CBC
MOVE.B #$53,89(A4)
BRA.S H_011D08
H_011CBC MOVEA.L 064(A5),A6
BSR.L H_011F52
CMPI.W #+000,D7 CODE FOR LODMGR - fn 1 UNLOAD
BEQ.S H_011CD6
MOVE.B #$54,+00089(A4)
BRA.S H_011D08
H_011CD6 MOVEA.L +00026(A5),A0
MOVEA.L A5,A6
MOVE.L (A5),(A3)
BSR.L H_011F52
CMPI.W #+000,D7
BEQ.S H_011CF4
MOVE.B #$51,+00089(A4)
BRA.S H_011D08
H_011CF4 MOVEA.L A0,A6 CODE FOR LODMGR - fn 1 UNLOAD
BSR.L H_011FDE
CMPI.W #+000,D7
BEQ.S H_011D08
MOVE.B #$55,+00089(A4)
H_011D08 BRA.S H_011D14
H_011D0C MOVE.W #$70FF,D7
MOVE.B D7,+00089(A4)
H_011D14 MOVE.W D7,+00090(A4)
RTS
H_011D1A BSR.S H_011D40
CMPI.W #+000,D7
BEQ.S H_011D2E
MOVE.W #$7067,D7 CODE FOR LODMGR - fn 1 UNLOAD
BRA.S H_011D3E
H_011D2E BSR.S H_011D92
CMPI.W #+000,D7
BEQ.S H_011D3E
MOVE.W #$7066,D7
H_011D3E RTS
H_011D40 CLR.L D7
MOVE.L +00030(A5),D1
MOVE.L +00034(A5),D2
DC.W $2278,$0A56 MOVEA.L $0A56,A1
MOVE.W #$0001,D6
H_011D52 CMPI.B #+000,D7 CODE FOR LODMGR - fn 1 UNLOAD
BNE.S H_011D90
DC.W $BC78,$0A54 CMP.W $0A54,D6
BGT.S H_011D90
CMP.L (A1),D1
BNE.S H_011D86
CMP.L +00004(A1),D2
BNE.S H_011D86
CMPI.B #+000,+00008(A1)
BEQ.S H_011D86
CMPI.B #+000,+00140(A1)
BNE.S H_011D86
MOVEQ #255,D7
H_011D86 ADDA.L #$000002EE,A1
ADDQ.W #1,D6 CODE FOR LODMGR - fn 1 UNLOAD
BRA.S H_011D52
H_011D90 RTS
H_011D92 CLR.W D7
MOVE.L +00030(A5),D0
MOVE.W +00034(A5),D1
ROL.L #8,D0
CMPI.B #+035,D0
BNE.S H_011DBE
ROR.L #8,D0
* address $00FD1892 is Plug in tray ROM
JSR $00FD1892 .L
CMPI.W #+000,D7 CODE FOR LODMGR - fn 1 UNLOAD
BNE.S H_011DBC
MOVEQ #255,D7
BRA.S H_011DBE
H_011DBC CLR.W D7
H_011DBE RTS END OF CODE FOR LODMGR - fn 1 UNLOAD
*
LM_4_LMREQMEM EQU * CODE FOR LODMGR - fn 4 LMREQMEM
BSR.S H_011DC0
CMP.W #0,D7
BNE.S LM_4_RET
MOVEM.L D0-D1/A4,-(A7)
LEA H_00EBAE(PC),A4
MOVE.L 6(A4),D0
MOVE.L 10(A4),D1
CMP.L 6(A6),D0
BNE.S LM4_TLMN
CMP.L 10(A6),D0
BEQ.S LM4_DOIT
LM4_TLMN CMP.L 30(A6),D0
BNE.S LM4_IS76
CMP.L 34(A6),D1
BNE.S LM4_IS76
LM4_DOIT CMP.L #0,26(A4)
BNE.S LM4_76A4
MOVE.L 26(A6),26(A4)
BRA.S LM4_IS76
LM4_76A4 CMP.L #0,76(A4)
BNE.S LM4_IS76
MOVE.L 26(A6),76(A4)
LM4_IS76 CMP.L #0,76(A6)
BNE.S LM4_UNDO
MOVE.L 26(A6),76(A6)
LM4_UNDO MOVEM.L (A7)+,D0-D1/A4
MOVE.W #0,D7
LM_4_RET RTS
*
H_011DC0 MOVEA.L A6,A4
CLR.B +00089(A4)
LEA +00030(A4),A0
LEA H_0120A4(PC),A5
BSR.L H_011C04
CMPI.W #+000,D7
BNE.S H_011E12
MOVE.L +00026(A4),D0
CLR.L D1
MOVE.B +00020(A4),D1
MOVE.L +00022(A5),D5
BSR.L H_011EF8
CMPI.W #+000,D7 CODE FOR LODMGR - fn 4 LMREQMEM
BNE.S H_011E0A
SUBA.L #$00000008,A6
MOVE.L +00026(A5),+00004(A6)
MOVE.L A6,+00026(A5)
ADDA.L #$00000008,A6
H_011E0A MOVE.L A6,+00026(A4)
BRA.S H_011E16
H_011E12 MOVE.W #$70FF,D7
H_011E16 CMPI.W #+000,D7
BEQ.S H_011E24
MOVE.B #$70,+00089(A4)
H_011E24 MOVE.W D7,+00090(A4)
RTS END OF CODE FOR LODMGR - fn 4 LMREQMEM
*
LM_5_LMRETMEM EQU * CODE FOR LODMGR - fn 5 LMRETMEM
H_011E2A MOVEA.L A6,A4
CLR.B +00089(A4)
LEA +00030(A4),A0
LEA H_0120A4(PC),A5
BSR.L H_011C04
CMPI.W #+000,D7
BNE.S H_011E92
MOVEA.L +00026(A4),A6
MOVEA.L A6,A0
SUBA.L #$00000008,A0
LEA +00026(A5),A1
H_011E54 CMPA.L (A1),A0
BEQ.S H_011E6A
CMPI.W #+000,(A1) CODE FOR LODMGR - fn 5 LMRETMEM
BEQ.S H_011E6A
MOVEA.L (A1),A1
LEA +00004(A1),A1
BRA.S H_011E54
H_011E6A CMPI.L #$00000000,(A1)
BEQ.S H_011E8A
MOVEA.L +00004(A0),A2
BSR.L H_011F52
CMPI.W #+000,D7
BNE.S H_011E96
MOVE.L A2,(A1)
H_011E86 BRA.S H_011E96
H_011E8A MOVE.W #$7071,D7 CODE FOR LODMGR - fn 5 LMRETMEM
H_011E8E BRA.S H_011E96
H_011E92 MOVE.W #$70FF,D7
H_011E96 CMPI.W #+000,D7
BEQ.S H_011EA4
MOVE.B #$72,+00089(A4)
H_011EA4 MOVE.W D7,+00090(A4)
RTS END OF CODE FOR LODMGR - fn 5 LMRETMEM
*
LM_6_LMINQMEM EQU * CODE FOR LODMGR - fn 6 LMINQMEM
H_011EAA MOVEA.L A6,A4
CLR.B +00089(A4)
LEA +00030(A4),A0
LEA H_0120A4(PC),A5
BSR.L H_011C04
CMPI.W #+000,D7
BNE.S H_011EE0
MOVE.L +00022(A5),D5
BSR.L H_011FA6 *+00222
CMPI.W #+000,D7
BNE.S H_011EDC *+00012
MOVE.L D1,+00084(A4)
MOVE.L D2,+00080(A4)
H_011EDC BRA.S H_011EE4
H_011EE0 MOVE.W #$70FF,D7 CODE FOR LODMGR - fn 6 LMINQMEM
H_011EE4 CMPI.W #+000,D7
BEQ.S H_011EF2
MOVE.B #$73,+00089(A4)
H_011EF2 MOVE.W D7,+00090(A4)
RTS
H_011EF8 CMPI.L #$00000008,D0
BGE.S H_011F04
MOVEQ #008,D0
H_011F04 SUBA.L #$00000014,A7
MOVEA.L A7,A6
MOVE.W #$0000,D7 CODE FOR LODMGR - fn 6 LMINQMEM
H_011F14 MOVE.B #$00,+000(A6,D7.W)
ADDQ.W #1,D7
H_011F1C CMPI.W #+019,D7
BLE.S H_011F14
MOVE.L D0,+00004(A6)
MOVE.L D1,+00008(A6)
MOVEQ #005,D4 GETMEM
TRAP #00 $0 SYSCALL
DC.W $0039 MEM_MGR
NOP
NOP
H_011F34 CMPI.W #+000,D7 CODE FOR LODMGR - fn 6 LMINQMEM
BNE.S H_011F44
MOVEA.L +00012(A6),A6
BRA.S H_011F4A
H_011F44 MOVEA.L #$00000000,A6
H_011F4A ADDA.L #$00000014,A7
RTS
H_011F52 CLR.W D7
CMPA.L #$00000000,A6
BEQ.S H_011FA4
MOVEM.L A0,-(A7)
SUBA.L #$00000008,A6
MOVEA.L (A6),A0 CODE FOR LODMGR - fn 6 LMINQMEM
ADDA.L #$00000008,A6
CMPA.L #$00000000,A0
BEQ.S H_011FA0
MOVEA.L A6,A0
SUBA.L #$00000014,A7
MOVEA.L A7,A6
MOVE.L A0,+00012(A6)
CLR.L +00004(A6)
CLR.L +00008(A6) CODE FOR LODMGR - fn 6 LMINQMEM
MOVEQ #006,D4 GIVMEM
TRAP #00 $0 SYSCALL
DC.W $0039 MEM_MGR
BRA.L H_011F94
BRA.S H_011F9A
H_011F94 CMP.W #$6012,D7
BNE.S H_011F9A
MOVE.W ERR_6012(PC),D7
H_011F9A ADDA.L #$00000014,A7
H_011FA0 MOVEM.L (A7)+,A0
H_011FA4 RTS
H_011FA6 SUBA.L #$00000014,A7
MOVEA.L A7,A6
MOVE.W #$0000,D7
H_011FB6 MOVE.B #$00,+000(A6,D7.W)
ADDQ.W #1,D7 CODE FOR LODMGR - fn 6 LMINQMEM
H_011FBE CMPI.W #+019,D7
BLE.S H_011FB6
MOVEQ #007,D4 INQMEM
TRAP #00 $0 SYSCALL
DC.W $0039 MEM_MGR
NOP
NOP
H_011FCE MOVE.L +00016(A6),D1
MOVE.L +00012(A6),D2
ADDA.L #$00000014,A7
RTS
H_011FDE MOVEM.L A0,-(A7)
MOVEA.L A6,A0 CODE FOR LODMGR - fn 6 LMINQMEM
CLR.W D7
H_011FE6 CMPA.L #$00000000,A0
BEQ.S H_012006
CMPI.W #+000,D7
BNE.S H_012006
LEA +00008(A0),A6
MOVEA.L +00004(A0),A0
BSR.L H_011F52
BRA.S H_011FE6
H_012006 MOVEM.L (A7)+,A0
RTS END OF CODE FOR LODMGR - fn 6 LMINQMEM
*
*****************************************************************************
NEW_SC63 EQU * CODE FOR FMTNAM SysCall 63
H_01200C MOVEA.L A6,A2
TRAP #00 $0 SYSCALL GBasPtr
DC.W $0034 GBasPtr
MOVEA.L +00016(A5),A5
MOVEA.L +00400(A5),A0
H_01201A CMPI.B #+032,(A0)
BNE.S H_012026
MOVE.B (A0)+,D0
BRA.S H_01201A
H_012026 MOVEA.L A0,A1 CODE FOR FMTNAM SysCall 63
H_012028 MOVE.B (A0)+,D5
BSR.L H_011A3A
CMPI.W #+002,D7
BNE.S H_012028
SUBA.L #$00000001,A0
MOVEA.L A0,A3
SUBA.L A1,A0 CODE FOR FMTNAM SysCall 63
CMPA.L #$00000008,A0
BGT.S H_01209A
MOVE.W A0,D0
SUBQ.W #1,D0
SUBA.L #$00000008,A7
MOVEA.L A7,A4
MOVE.L #' ',(A4)
MOVE.L #' ',+00004(A4)
MOVE.W #$0000,D1
BRA.S H_012072
H_01206A MOVE.B +000(A1,D1.W),+000(A4,D1.W)
ADDQ.W #1,D1
H_012072 CMP.W D0,D1 CODE FOR FMTNAM SysCall 63
BLE.S H_01206A
MOVEA.L A4,A0
BSR.L H_01191A
CMPI.W #+001,D7
BHI.S H_012090
MOVE.L (A4),(A2)
MOVE.L +00004(A4),+00004(A2)
MOVE.L A3,+00400(A5)
H_012090 ADDA.L #$00000008,A7
BRA.S H_01209C
H_01209A MOVEQ #255,D7
H_01209C MOVE.L D7,+00032(A7)
RTS CODE FOR FMTNAM SysCall 63
H_012150 EQU *+00000174
H_0120D0 EQU *+00000046
H_0120C0 EQU *+00000030
H_0120BE EQU *+00000028
H_0120BC EQU *+00000026
H_0120B8 EQU *+00000022
H_0120B4 EQU *+00000018
H_0120B0 EQU *+00000014
H_0120AC EQU *+00000010
H_0120A8 EQU *+00000006
H_0120A4 EQU *+00000002
H_0120A2 DCB.W 00087,+00000
*
**************************************************************************
ROM_SAVE EQU *
LEA.L $0ABCDEF,A0
TRAP #5
LEA.L $0ABCDEF,A0
TRAP #0
DC.W 60 MODADRCK
S_FC1C24 DC.W $2678 MOVEA.L $0A14,A3
DC.W $0A14
LEA +00416(A3),A6
MOVEA.L A6,A5
MOVE.W #$0049,D0
S_FC1C34 CLR.B (A5)+
DBF D0,S_FC1C34
LEA +00746(A3),A5
MOVE.W #$000F,D0
S_FC1C42 CLR.B (A5)+
DBF D0,S_FC1C42
TRAP #00 $0 SYSCALL
DC.W $000F FmtDib*
CMPI.W #+002,D7
BEQ.S S_FC1C60
CMPI.W #+003,D7
BGT.S S_FC1C5C
MOVE.W #$0184,D7
S_FC1C5C BRA.L S_FC1DF8
S_FC1C60 TRAP #00 $0 SYSCALL
DC.W $0010 NxTok*
CMPI.B #+044,+00411(A3)
BNE.L S_FC1DF4
TRAP #00 $0 SYSCALL
DC.W $0010 NxTok*
CMPI.B #+003,+00411(A3)
BNE.L S_FC1DF4
MOVEA.L +00412(A3),A1
TRAP #00 $0 SYSCALL
DC.W $0010 NxTok*
CMPI.B #+044,+00411(A3)
BNE.L S_FC1DF4
TRAP #00 $0 SYSCALL
DC.W $0010 NxTok*
CMPI.B #+003,+00411(A3)
BNE.L S_FC1DF4
MOVEA.L +00412(A3),A2
S_FC1CB6 TRAP #00 $0 SYSCALL
DC.W $0010 NxTok*
CMPI.B #+013,+00410(A3)
BEQ.S S_FC1D08
CMPI.B #+044,+00411(A3)
BNE.L S_FC1DF4
TRAP #00 $0 SYSCALL
DC.W $0010 NxTok*
CMPI.B #+003,+00411(A3)
BNE.L S_FC1DF4
MOVE.L +00412(A3),D0
LSR.L #1,D0
BCS.L S_FC1E04
MOVEA.L +00412(A3),A0
CMPA.L A0,A1
BGT.S S_FC1CF0
CMPA.L A0,A2
BGT.S S_FC1CF4
S_FC1CF0 BRA.L S_FC1E04
S_FC1CF4 TRAP #00 $0 SYSCALL NxTok*
DC.W $0010 NxTok*
CMPI.B #+013,+00411(A3)
BNE.L S_FC1DF4
MOVE.B #$01,+00049(A6)
S_FC1D08 MOVE.W #$8800,+00016(A6)
SUBA.L A1,A2
ADDQ.L #1,A2
MOVE.L A2,D0
MOVE.L D0,D1
CMPI.W #+21337,+00046(A6)
BNE.S S_FC1D3C
CMPI.B #+083,+00048(A6)
BNE.S S_FC1D3C
DIVU #$0100,D0
ANDI.L #$0000FFFF,D0
ADDQ.L #2,D0
MOVE.L D0,+00066(A6)
ORI.W #$1000,+00016(A6)
S_FC1D3C ORI.W #$0040,+00016(A6)
MOVE.B #$01,D5
TRAP #06 $6 IOMGR6/SYSIO
DC.W $0001 OPEN
BRA.L S_FC1DFE
S_FC1D4E MOVE.B +00049(A6),D0
LEA +00746(A3),A6
LEA +00490(A3),A4
CMPI.B #+001,D0
BNE.S S_FC1D6C
MOVE.B #$16,(A4)
MOVE.W #$0005,+00008(A6)
BSR.S S_FC1DBC
S_FC1D6C MOVEA.L A1,A0
MOVE.L #$0000FFFF,D2
S_FC1D74 CMP.L D1,D2
BLE.S S_FC1D7A
MOVE.W D1,D2
S_FC1D7A BSR.S S_FC1DA6
MOVE.L A0,+00004(A6)
MOVE.W D2,+00008(A6)
BSR.S S_FC1DDA
ADDA.L #$0000FFFF,A0
SUBI.L #$0000FFFF,D1
BGT.S S_FC1D74
S_FC1D94 DC.W $4DF8,$0000 LEA $0000,A6
MOVE.B #$01,D5
TRAP #06 $6 IOMGR6/SYSIO
DC.W $0002 CLOSE
BRA.L S_FC1DFE
S_FC1DA4 BRA.L NEW_SV_EXIT
S_FC1DA6 MOVE.B #$03,(A4)
MOVE.W D2,D0
MOVE.B D0,+00006(A4)
ROR.W #8,D0
MOVE.B D0,+00005(A4)
MOVE.W #$0007,+00008(A6)
S_FC1DBC MOVE.L A0,D0
ROL.L #8,D0
MOVE.B D0,+00001(A4)
ROL.L #8,D0
MOVE.B D0,+00002(A4)
ROL.L #8,D0
MOVE.B D0,+00003(A4)
ROL.L #8,D0
MOVE.B D0,+00004(A4)
MOVE.L A4,+00004(A6)
S_FC1DDA CLR.W +00010(A6)
MOVE.B #$01,D5
TRAP #06 $6 IOMGR6/SYSIO WRITE
DC.W $0004 WRITE
BRA.L S_FC1DEC
S_FC1DEA RTS
S_FC1DEC ADDQ.L #4,A7
TRAP #00 $0 SYSCALL
DC.W $000C PrtErr*
BRA.S S_FC1D94
S_FC1DF4 MOVE.W #$0101,D7
S_FC1DF8 TRAP #00 $0 SYSCALL
DC.W $0009 CPRTERR
BRA.S NEW_SV_EXIT
S_FC1DFE TRAP #00 $0 SYSCALL
DC.W $000C PrtErr*
BRA.S NEW_SV_EXIT
S_FC1E04 LEA S_FC1E36,A6
S_FC1E0A TRAP #00 $0 SYSCALL
DC.W $0013 PrtErMsg*
BRA.S NEW_SV_EXIT
S_FC1E10 DC.B 'ENDING ADDRESS IS TOO LOW OR TOO HIGH',$D
S_FC1E36 DC.B 'INVALID TRANSFER ADDRESS',$D,$0
DS.W 0
NEW_SV_EXIT EQU *
*
**************************************************************************
LIST
UNHYPE EQU *
LEA.L $FEDCBA,A0
TRAP #0 SYSCALL
DC.W 60 MODADRCK
*
INIT_DONE EQU *
*
TRAP #0 SYSCALL
DC.W 48 SUPMODE
LEA $43B0,A0 Clear CTRL-Break and CTRL-NumLock ...
MOVE.W #0,(A0)
*
TRAP #00 $0 SYSCALL
DC.W $002B Exit
* END OF CODE FOR ROM_SAVE
*
NOLIST
**************************************************************************
MODULES EQU *
BSR.L CLSH
*
QUERY EQU *
MOVEA.L #$0ABCDEF,A0
TRAP #5
MOVEA.L #$0ABCDEF,A0
TRAP #0
DC.W 60 MODADRCK
Q_00E0DC SUBA.L #$000000AE,A7
MOVEA.L A7,A4
MOVE.W #173,D7
Q_00E104 MOVE.B #$00,+000(A4,D7.W)
DBRA D7,Q_00E104
LEA +00030(A4),A6
TRAP #00 $0 SYSCALL
DC.W $003F 2-FmtNam
CMPI.W #+65535,D7
BNE.S Q_00E152
CLR.B D0
TRAP #00 $0 SYSCALL
DC.W $001B GStat
TRAP #00 $0 SYSCALL
DC.W $0010 NxTok*
CMPI.B #+013,+00011(A5)
BNE.S Q_00E13E
BSR.S Q_00E168
BRA.S Q_00E156
Q_00E13E LEA Q_00E3D2(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0012 PrtMsg*
LEA Q_00E3ED(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0013 PrtErMsg*
Q_00E14E BRA.S Q_00E156
Q_00E152 BSR.L Q_00E1DC
Q_00E156 ADDA.L #$000000AE,A7
LEA Q_00E588(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0012 PrtMsg*
BRA.L NEW_SV_EXIT
Q_00E168 MOVE.B #$01,+00020(A4)
MOVEA.L A4,A6
MOVEQ #002,D4 INQLOAD
TRAP #00 $0 SYSCALL 2
DC.W $0040 2-LodMgr
NOP
NOP
Q_00E17A CMPI.W #+000,D7
BNE.S Q_00E1C4
LEA +00030(A4),A0
LEA Q_00E589(PC),A1
MOVE.B #' ',(A1)+
MOVE.B #' ',(A1)+
MOVE.W #$0000,D0
Q_00E19A CMPI.B #+032,(A0)
BGE.S Q_00E1AC
MOVE.B #'.',(A1)+
ADDQ.L #1,A0
BRA.S Q_00E1AE
Q_00E1AC MOVE.B (A0)+,(A1)+
Q_00E1AE ADDQ.W #1,D0
Q_00E1B0 CMPI.W #+007,D0
BLE.S Q_00E19A
MOVE.B #$0D,(A1)
LEA Q_00E589(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0012 PrtMsg*
BRA.S Q_00E168
Q_00E1C4 MOVE.W +00038(A4),D0
LEA Q_00E42F(PC),A0
ADDQ.L #6,A0
BSR.L Q_HEXDO
LEA Q_00E42F(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0012 PrtMsg*
RTS
Q_00E1DC MOVE.B #$00,+00020(A4)
MOVEA.L A4,A6
MOVEQ #002,D4 INQLOAD
TRAP #00 $0 SYSCALL
DC.W $0040 2-LodMgr
NOP
NOP
Q_00E1EE CMPI.W #+000,D7
BNE.L Q_00E2B2
MOVE.L +00040(A4),D0
LEA Q_00E44A(PC),A6
BSR.L Q_00E2D8
MOVE.L +00044(A4),D0
LEA Q_00E465(PC),A6
BSR.L Q_00E2D8
LEA Q_00E588(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0012 PrtMsg*
MOVE.L +00048(A4),D0
LEA Q_00E482(PC),A6
BSR.L Q_00E2D8
MOVE.L +00052(A4),D0
LEA Q_00E49D(PC),A6
BSR.L Q_00E2D8
LEA Q_00E588(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0012 PrtMsg*
LEA Q_00E564(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0012 PrtMsg*
MOVE.L +00056(A4),D0
LEA Q_00E4BA(PC),A6
BSR.L Q_00E2D8
LEA Q_00E588(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0012 PrtMsg*
LEA Q_00E564(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0012 PrtMsg*
MOVE.L +00060(A4),D0
LEA Q_00E4D7(PC),A6
BSR.S Q_00E2D8
LEA Q_00E588(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0012 PrtMsg*
MOVE.L +00064(A4),D0
LEA Q_00E4F4(PC),A6
BSR.S Q_00E2D8
MOVE.L +00068(A4),D0
LEA Q_00E50F(PC),A6
BSR.S Q_00E2D8
LEA Q_00E588(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0012 PrtMsg*
MOVE.L +00072(A4),D0
LEA Q_00E52C(PC),A6
BSR.S Q_00E2D8
BSR.S Q_00E2BC - COMPUTE ACQUIRED MEMORY
LEA Q_00E547(PC),A6
BSR.S Q_00E2D8
LEA Q_00E588(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0012 PrtMsg*
BRA.S Q_00E2BA
Q_00E2B2 LEA Q_00E40F(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0012 PrtMsg*
Q_00E2BA RTS
Q_00E2BC CLR.L D0
LEA 026(A4),A1
** MOVE.L SSTACK(PC),A3
* LEA SUP_STACK(PC),A3
Q_00E2C2 CMPI.L #$00000000,(A1)
BEQ.S Q_00E2D6
ANDI.L #$0FFFFFE,(A1) PREVENT ADDR TRAP - REPAIR IS SCREWY
MOVEA.L (A1),A1
ANDI.L #$0FFFFFE,(A1) REPAIR IS SCREWY
ADD.L (A1),D0
LEA +00004(A1),A1
BRA.S Q_00E2C2
Q_00E2D6 RTS
Q_00E2D8 MOVEM.L A0/A6,-(A7)
TRAP #00 $0 SYSCALL
DC.W $0012 PrtMsg*
LEA Q_00E589(PC),A0
BSR.S Q_DOHEX
LEA Q_00E589(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0012 PrtMsg*
MOVEM.L (A7)+,A0/A6
RTS
Q_DOHEX EQU *
BSR.S SM_DOHEX
MOVE.B #$04,(A0)+
RTS
SM_DOHEX EQU *
Q_00E2F6 MOVEM.L D0-D2/D7/A1,-(A7)
LEA HEX_DIGITS(PC),A1
CLR.L D7
MOVE.W #$0001,D2
Q_00E306 ROL.L #4,D0
MOVE.B D0,D1
ANDI.W #$000F,D1
CMPI.B #+000,D7
BNE.S Q_00E334
CMPI.B #+000,D1
BNE.S Q_00E326
MOVE.B #' ',(A0)+
BRA.S Q_00E338
Q_00E326 MOVE.B #'$',(A0)+
MOVE.B +000(A1,D1.W),(A0)+
MOVEQ #255,D7
Q_00E330 BRA.S Q_00E338
Q_00E334 MOVE.B +000(A1,D1.W),(A0)+
Q_00E338 ADDQ.W #1,D2
Q_00E33A CMPI.W #+008,D2
BLE.S Q_00E306
CMPI.B #+000,D7
BNE.S Q_00E35A
SUBA.L #$00000002,A0
MOVE.B #'<',(A0)+
MOVE.B #'0',(A0)+
MOVE.B #'>',(A0)+
Q_00E35A MOVEM.L (A7)+,D0-D2/D7/A1
RTS
Q_HEXDO MOVEM.L D0-D2/A1,-(A7)
LEA HEX_DIGITS(PC),A1
MOVE.W #$0064,D2
BSR.S Q_00E3A2
BSR.S Q_00E3B8
MOVE.W #$000A,D2
BSR.S Q_00E3A2
BSR.S Q_00E3B8
ANDI.W #$000F,D0
MOVE.B +000(A1,D0.W),(A0)+
MOVEM.L (A7)+,D0-D2/A1
RTS
Q_00E3A2 MOVE.W #$FFFF,D7
Q_00E3A6 CMPI.B #+000,D0
BLT.S Q_00E3B4
MOVE.B D0,D1
ADDQ.W #1,D7
SUB.B D2,D0
BRA.S Q_00E3A6
Q_00E3B4 MOVE.B D1,D0
RTS
Q_00E3B8 ANDI.W #$000F,D7
CMPI.B #+000,D7
BNE.S Q_00E3CC
MOVE.B #' ',(A0)+
BRA.S Q_00E3D0
Q_00E3CC MOVE.B +000(A1,D7.W),(A0)+
Q_00E3D0 RTS
Q_00E3D2 DC.B 'Usage: QUERY [modulename]',$D
Q_00E3ED DC.B 'Invalid Module Name',$D
Q_00E401 DC.B 'NAME TOO LONG',$D
Q_00E40F DC.B 'Module Not Found',$D
Q_00E420 DC.B 'INTERNAL ERROR',$D
Q_00E42F DC.B ' Module(s) Found.',$D
Q_00E44A DC.B ' TEXT SEGMENT ADDRESS = ',$4
Q_00E465 DC.B ' TEXT SEGMENT SIZE = ',$4
Q_00E482 DC.B ' DATA SEGMENT ADDRESS = ',$4
Q_00E49D DC.B ' INITIALIZED DATA SIZE = ',$4
Q_00E4BA DC.B ' BSS SIZE = ',$4
Q_00E4D7 DC.B ' STACK SIZE = ',$4
Q_00E4F4 DC.B ' SYMBOL TABLE ADDRESS = ',$4
Q_00E50F DC.B ' SYMBOL TABLE SIZE = ',$4
Q_00E52C DC.B ' ENTRY POINT ADDRESS = ',$4
Q_00E547 DC.B ' ACQUIRED MEMORY = ',$4
Q_00E564 DC.B ' . . . . . . . . . . . . . . . . .',$4
Q_00E589 EQU *+1
Q_00E588 DC.B $D,' ',$D
DC.W +00000
BCHG D0,D4 $0144
* END OF CODE FOR QUERY
*
**************************************************************************
POOLS EQU *
BSR.L CLSH
*
**************************************************************************
SYSMAP EQU *
SM_0E000 EQU *
SM_0E034 EQU *
MOVEA.L #$0ABCDEF,A0
TRAP #5 SUPMODE
MOVEA.L #$0ABCDEF,A0
TRAP #0 SYSCALL
DC.W 60 MODADRCK
SM_0E0D4 MOVEQ #007,D4 INQMEM
MOVE.L #'USRM',D5
LEA SM_0E33A(PC),A6
TRAP #0 SYSCALL
DC.W $0039 MEM_MGR
BRA.L SM_0E1AE
SM_0E102 MOVE.L SM_0E342(PC),D0
LEA SM_0E24B(PC),A0
BSR.L SM_DOHEX(PC)
MOVE.L SM_0E346(PC),D0
LEA SM_0E297(PC),A0
BSR.L SM_DOHEX(PC)
MOVE.L SM_0E34A(PC),D0
LEA SM_0E2E3(PC),A0
BSR.L SM_DOHEX(PC)
MOVEQ #007,D4 INQMEM
MOVE.L #'SYSM',D5
LEA SM_0E33A(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0039 MEM_MGR
BRA.L SM_0E1AE
SM_0E148 MOVE.L SM_0E342(PC),D0
LEA SM_0E272(PC),A0
BSR.L SM_DOHEX(PC)
MOVE.L SM_0E346(PC),D0
LEA SM_0E2BE(PC),A0
BSR.L SM_DOHEX(PC)
MOVE.L SM_0E34A(PC),D0
LEA SM_0E30A(PC),A0
BSR.L SM_DOHEX(PC)
TRAP #00 $0 SYSCALL
DC.W $0034 GBasPtr
MOVE.L +00012(A5),D0
LEA SM_0E32F(PC),A0
BSR.L SM_DOHEX(PC)
LEA SM_0E230(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0012 PrtMsg*
LEA SM_0E27C(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0012 PrtMsg*
LEA SM_0E2C8(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0012 PrtMsg*
LEA SM_0E314(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0012 PrtMsg*
BRA.S SM_0E1B2
SM_0E1AE TRAP #00 $0 SYSCALL
DC.W $000C PrtErr*
SM_0E1B2 BRA.L NEW_SV_EXIT
SM_0E272 EQU *+00000066
SM_0E230 DC.B ' TOTAL USER MEMORY '
SM_0E24B DC.B ' TOTAL SYSTEM MEMORY ',$D
SM_0E2BE EQU *+00000066
SM_0E27C DC.B ' TOTAL FREE USER MEMORY '
SM_0E297 DC.B ' TOTAL FREE SYSTEM MEMORY ',$D
SM_0E30A EQU *+00000066
SM_0E2C8 DC.B ' LARGEST CONTIGUOUS BLOCK '
SM_0E2E3 DC.B ' LARGEST CONTIGUOUS BLOCK ',$D
SM_0E32F EQU *+00000027
SM_0E339 EQU *+00000037
SM_0E314 DC.B ' END OF RAM ',$D,$0
DS.W 0
SM_0E34A EQU *+00000016
SM_0E346 EQU *+00000012
SM_0E342 EQU *+00000008
SM_0E33A DCB.W 00012,+00000
BCHG D0,D4 $0144
WORDS37 DCB.W 00037,+00000
*
**************************************************************************
COLDBOOT EQU *
MOVEA.L #$0ABCDEF,A0
TRAP #5
NOP
NOP
MOVEQ.L #0,D0
MOVEA.L D0,A0
MOVEA.L (A0)+,A7
MOVEA.L (A0),A0
JMP (A0)
BSR.L INIT_DONE
*
**************************************************************************
O_LOADB EQU *
MOVEA.L #$0ABCDEF,A0
TRAP #5
MOVEA.L #$0ABCDEF,A0
TRAP #0
DC.W 60 MODADRCK
TRAP #00 $0 SYSCALL
DC.W $0034 GBasPtr
MOVEA.L +00016(A5),A1 16(A5) = USRPAG ($D400)
MOVE.B #$FF,+01298(A1) MAGIC BYTE - TELLS LOAD TO DO BIN
JSR H_00EC66(PC)
TRAP #00 $0 SYSCALL
DC.W $0034 GBasPtr
MOVEA.L +00016(A5),A1
CLR.B +01298(A1) CLEAR MAGIC BYTE
BRA.L UNHYPE
*
**************************************************************************
RESIDENT EQU *
BSR.L CLSH
*
**************************************************************************
COMMAND EQU *
MOVEA.L #$0ABCDEF,A0 supervisor mode
TRAP #5
MOVEA.L #$0ABCDEF,A0 turn off address checking
TRAP #0
DC.W 60 MODADRCK
MOVE.L #' ',D1
BSR.L INPUT_SUB
CMPI.L #' ',D1
BEQ.S GTO_RES
MOVEQ #2,D0 LOOKUP
TRAP #0 SYSCALL
DC.W 50 RES_CMD
CMP.W #0,D7
BEQ.S CMD__OK
GTO_RES BRA.S IN_RES no command in specific - list all
*
CMD__OK CMPA.L #0,A0 whereis a specific command
BEQ.S GTO_RES
MOVE.L A0,D0
LEA ALIASE(PC),A0
MOVE.L D1,(A0)
MOVE.L D2,4(A0)
LEA GUNK(PC),A0
BSR.L SM_DOHEX
MOVE.B #$D,(A0)
LEA.L ALIASE(PC),A6
TRAP #0 SYSCALL
DC.W 18 PRTMSG
BRA.L UNHYPE
* *
IN_RES MOVEA.L #$0ABCDEF,A0 |GET INTO SYSTEM MODE
TRAP #5 |
MOVEA.L #$0ABCDEF,A0 |
TRAP #0 | TURN OFF ADDRESS CHECKING
DC.W 60 MODADRCK |
LEA.L RES_C_MES(PC),A6
TRAP #0
DC.W 18
LEA.L CHAR13(PC),A6
TRAP #0
DC.W 18
LEA.L RES_CMD_TABLE(PC),A0
LEA.L WORDS37(PC),A6
LEA H_00EBA2(PC),A2
RES_LOOP EQU *
MOVEA.L A6,A1
MOVEQ.L #5,D0
IN_LOOP MOVE.L #' ',(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,D1
CMPI.L #$000,D1
BNE.S RC_NOT_0
ADDQ.L #1,D0 is 0 = null entry, skipit!
SUBQ.L #6,A1
SUBQ.L #6,A1
RC_NOT_0 CMPI.L #-1,D1
DBEQ D0,IN_LOOP
MOVE.B #$D,(A1)+
TRAP #0 SYSCALL
DC.W 18 PRTMSG
CMPA.L A0,A2
BLS.S RES_OUT
CMPI.L #-1,D1
BNE.S RES_LOOP
RES_OUT BRA.L WHAT_PATH
RES_C_MES DC.B 'Resident commands are: '
CHAR13 DC.B $D
DS.W 0
*
****************************************************************************
RSTDSK EQU *
MOVEA.L #$0ABCDEF,A0
TRAP #5
MOVEA.L #$0ABCDEF,A0
TRAP #0
DC.W 60 MODADRCK
LEA RST_DIB(PC),A6
LEA FUNPKT(PC),A5
MOVE.W #16,(A5)
MOVE.L 0,2(A5)
MOVE.L #0,FP_ADD-RST_DIB-10(A6)
MOVE.L #0,FP_ADD-RST_DIB-6(A6)
MOVE.W #$C000,FP_ADD-RST_DIB-2(A6)
MOVE.L A5,FP_ADD-RST_DIB(A6)
MOVE.L #'#FD0',(A6)
MOVE.W #'0 ',4(A6)
MOVE.B #1,6(A6)
MOVEQ.L #73,D5
MOVEQ.L #3,D0
RSTLOOP EQU *
MOVEM.L D5/D7/A5/A6,-(A7)
TRAP #6
DC.W 1 OPEN
NOP
NOP
MOVEM.L (A7)+,D5/D7/A5/A6
MOVEM.L D5/D7/A5/A6,-(A7)
MOVE.W #16,(A5)
MOVE.L 0,2(A5)
EXG A5,A6
TRAP #6
DC.W 2 FUNC
NOP
NOP
MOVEM.L (A7)+,D5/D7/A5/A6
MOVE.W #16,(A5)
MOVE.L 0,2(A5)
EXG A5,A6
ADDI.B #1,4(A6)
ADDQ.L #1,D5
DBRA D0,RSTLOOP
BRA.L UNHYPE
FUNPKT DC.W 16,0,0,0
RST_DIB DC.B '#FD00 '
DC.B 1,0
DC.L 0,0
DC.W $C000
FP_ADD DC.L FUNPKT
DC.L 0,0
*
****************************************************************************
GET_NUM MOVEM.L D2-D5/A5/A6,-(A7)
MOVEQ #0,D0
TRAP #0
DC.W 27 GSTAT
CMPA.L #0,A5
BNE.S GN__PARSE
GN__ERR MOVEQ #0,D0
MOVE.B #13,D1
BRA.S GN__EX
GN__OK CMP.B #3,11(A5)
BEQ.S GN__OUT
MOVEQ #0,D0
CMP.B #13,11(A5)
BEQ.S GN__OUT2
CMP.B #0,11(A5)
BEQ.S GN__ERR
GN__PARSE TRAP #0
DC.W 16 NXTOK
MOVE.B 11(A5),D1
BRA GN__OK
GN__OUT MOVE.L 12(A5),D0
GN__OUT2 MOVE.B 11(A5),D1
MOVE.L 4(A5),A6
CMP.B #'-',-1(A6)
BNE.S GN__EX
NEG.L D0
GN__EX MOVEM.L (A7)+,D2-D5/A5/A6
RTS
*
****************************************************************************
BEEP EQU *
BSR GET_NUM
CMP.W #31,D0
BLS.S BEEP_OK
MOVE.W #31,D0
BEEP_OK MOVE.L D0,D2
MOVEA.L #$0ABCDEF,A0
TRAP #5
LEA LEDS_(PC),A0
MOVE.B #$FD,(A0)
MOVEQ.L #0,D0
MOVEQ.L #1,D1
BEEP_L MOVE.B #$FC,$0F00001
TRAP #0
DC.W 29 DELAY
DBRA D2,BEEP_L
BRA.L UNHYPE
*
****************************************************************************
HOWL MOVEA.L #$0ABCDEF,A0
TRAP #5
LEA LEDS_(PC),A0
MOVE.B #$FF,$0F00001
MOVE.B #$FF,(A0)
BRA.L UNHYPE
*
****************************************************************************
QUIET EQU *
SHUSH MOVE SR,D0
MOVEA.L #$0ABCDEF,A0
TRAP #5
LEA LEDS_(PC),A0
MOVE.B #$FD,(A0)
MOVE.B #$FD,$0F00001
MOVE D0,SR
RTS
****************************************************************************
* CODE BELOW AS POSITION INDEPENDENT CODE SO CAN BE MOVED TO CSOS
* SYSM MEMORY POOL
*
*TRAP 12 HANDLER
TRAPC EQU *
* If already in Supervisor state, just return
BTST.B #5,(A7)
BNE.S RTELOC
* Prep for switch to supervisor state, by updating stacked SR
ORI.W #$2000,(A7)
* SWITCH STACKS AND RETURN
SWSTACK EQU *
* Turn off interrupts for stack switch
ORI.W #$0700,SR
* save contants of A0 register & ESTABLISH ADDRESSING
MOVE.L A0,-(A7)
LEA.L A0SAVESX(PC),A0
MOVE.L (A7)+,(A0)
* save A1
MOVE.L A1,4(A0)
* get User's SP, and move SR, PC from SSP to USP data areas
MOVE.L USP,A1
MOVE.W (A7)+,12(A0)
MOVE.L (A7)+,8(A0)
MOVE.L 8(A0),-(A1)
MOVE.W 12(A0),-(A1)
* store SSP as USP
MOVE.L A7,USP
* restore User's SP as SP (now SSP)
MOVEA.L A1,A7
* restore A0 & A1
MOVEA.L 4(A0),A1
MOVEA.L (A0),A0
RTELOC RTE
DS.W 1
A0SAVESX DS.L 1
A1SAVESX DS.L 1
DS.L 1
SPTEMPSX DS.W 1
DS.L 1
*
*
*TRAP 11 HANDLER
TRAPB EQU *
* If already in USER state, just return
BTST.B #5,(A7)
BEQ.S RTELOC
* Prep for switch to USER state, by updating stacked SR
ANDI.W #$D0FF,(A7)
BRA.S SWSTACK
*
*****************************************************************************
SUBMIT BSR RESET_SUB_INDIC
MOVEA.L $0A14,A1
LEA $FC2674,A6
MOVE.B #$F6,D5
TRAP #06 IOMGR6/SYSIO
DC.W $0006 FUNC
BRA.L PRT_ERR_
SBFC258A EQU *
*SBFC258A BRA.S SBFC2592
*PRT_ERR_ TRAP #0 SYSCALL
* DC.W $0009 CPrtErr*
* BRA.L UNHYPE
SBFC2592 LEA +00762(A1),A6
MOVEQ #073,D0
SBFC259A CLR.B (A6)+
DBF D0,SBFC259A
LEA +00762(A1),A6
LEA +01092(A1),A5
MOVEQ #015,D0
SBFC25AC CLR.B (A5)+
DBF D0,SBFC25AC
LEA +01092(A1),A5
MOVE.B #$01,+00006(A6)
LEA +00836(A1),A2
MOVE.L A2,+00004(A5)
TRAP #00 $0 SYSCALL
DC.W $000F FmtDib*
CMPI.W #+002,D7
BNE.S SBFC25CE
BSR SET_SUB_INDIC
JMP $0FC25E4
SBFC25CE CMPI.W #+00260,D7
BNE.L SB_SYNTAX
MOVEQ #0,D3
SB_T_SUB LEA +00046(A6),A2
MOVE.B #'S',(A2)+
MOVE.B #'U',(A2)+
MOVE.B #'B',(A2)
SBFC25E4 ORI.W #$0040,+00016(A6)
MOVE.B #$01,+00006(A6)
MOVE.B #$F5,D5
TRAP #06 $6 IOMGR6/SYSIO
DC.W $0001 OPEN
BRA.L SBFC2648
LEA +00762(A1),A6
LEA +01092(A1),A5
BSR SET_SUB_INDIC
JMP $0FC25F6
SBFC2648 CMPI.W #10,D7
BEQ.S SB_ALT_DRV
CMPI.W #$8600,D7
BEQ.S SB_ALT_DRV
CMPI.W #$8500,D7
BEQ.S SB_CLOSE
SB_TRY_ LEA +00046(A6),A2
CMPI.B #'S',(A2)
BEQ.S SB_T_BAT
BRA.S SB_NEXT
SB_T_BAT MOVE.B #'B',(A2)+
MOVE.B #'A',(A2)+
MOVE.B #'T',(A2)
SB_CLOSE MOVE.B #$F5,D5
BSR.L SUB_CLOSE
LEA +00762(A1),A6
LEA +01092(A1),A5
MOVEQ #0,D7
BRA.S SBFC25E4
SB_ALT_DRV EQU *
SB_NEXT BSR.L DRV_SERCH
CMP.W #0,D7
BEQ SB_T_SUB
BRA PRT_ERR_
SB_SYNTAX MOVE.W #$0101,D7
PRT_ERR_ EQU *
TRAP #00 $0 SYSCALL
DC.W $0009 CPRTERR
BSR RESET_SUB_INDIC
BRA.L UNHYPE
*
*-------------------------------------------------------------------------
SET_SUB_INDIC EQU *
MOVEM.L D6/A0,-(A7)
MOVE SR,D6
TRAP #0 SYSCALL
DC.W 48 SUPMODE
LEA IS_SUBMIT(PC),A0
MOVE #$FF,(A0)
MOVE D6,SR
MOVEM.L (A7)+,D6/A0
RTS
*
*-------------------------------------------------------------------------
RESET_SUB_INDIC EQU *
MOVEM.L D6/A0,-(A7)
MOVE SR,D6
TRAP #0 SYSCALL
DC.W 48 SUPMODE
LEA IS_SUBMIT(PC),A0
MOVE #0,(A0)
MOVE D6,SR
MOVEM.L (A7)+,D6/A0
RTS
*
*****************************************************************************
MR_US_MESS DC.B 'Usage: MAKERES file [where file is any '
DC.B 'EXE file, becomes a resident command]',$D
DS.W 0
MR_USAGE LEA MR_US_MESS(PC),A6
BRA.L W_P_P
*
MAKRES EQU *
MOVEA.L #$0ABCDEF,A0
TRAP #5 SUPMODE
MOVEA.L #$0ABCDEF,A0
TRAP #0 SYSCALL
DC.W 60 MODADRCK
* BSR USRM_DOWN
MOVE.B #247,D5
BSR.L SUB_CLOSE
TRAP #00 $0 SYSCALL
DC.W $0034 GBasPtr
MOVEA.L +00016(A5),A3
LEA +00416(A3),A6
MOVEQ.L #0,D7
MOVEQ #073,D0
MRFC259A CLR.B (A6)+
DBF D0,MRFC259A
LEA +00416(A3),A6
MOVE.B #$01,+00006(A6)
TRAP #00 $0 SYSCALL
DC.W $000F FmtDib*
CMPI.W #+002,D7 fully spec'd filename
BEQ.S MRFC25E4
MRFC25CE CMPI.W #+00260,D7 filename w/o extension
BNE MR_USAGE
LEA 46(A6),A2
MOVE.B #'R',(A2)+
MOVE.B #'E',(A2)+
MOVE.B #'S',(A2)
MRFC25E4 LEA +00038(A6),A2
LEA 0,A0
MOVEQ #2,D0 LOOKUP
MOVE.L (A2)+,D1
MOVE.L (A2),D2
TRAP #0 SYSCALL
DC.W 50 RES_CMD
MOVEQ #0,D3
CMP.W #0,D7 - didn't find command
BNE.S MR_NOT_FND
CMPA.L #0,A0 - found command w/ dummy ep
BEQ.S MR_NOT_FND
MOVE.W #$4101,D7
BRA.S MR_GTO_PE
MR_NOT_FND EQU *
LEA 416(A3),A6
MOVE.B #247,D5
TRAP #0 SYSCALL
DC.W 14 LOADB
CMP.W #0,D7
BEQ.S MAK_RES_COOL
BSR DRV_SERCH
CMP.W #0,D7
BEQ.S MR_NOT_FND
CMP.B #'R',46(A6)
BNE.S MR_GTO_PE
MOVE.W #'EX',46(A6)
MOVE.B #'E',48(A6)
MOVEQ #0,D3
BRA MR_NOT_FND
MR_GTO_PE LEA H_00EC5C(PC),A0 SET "MAGIC" BYTE - FORCES CLEANUP
MOVE.B #$FF,(A0)
BRA.L PRT_ERR_
MAK_RES_COOL EQU *
MOVE.L A2,-(A7)
LEA 38(A6),A2
MOVE.L (A2)+,D1
MOVE.L (A2),D2
CMP.L #'DIR ',D1
BNE.S MR_OK_2
BRA SYSMAP
MR_OK_2 MOVE.L (A7)+,A0
LEA MR_MES(PC),A6
MOVE.L D1,(A6)
MOVE.L D2,4(A6)
MOVEQ.L #0,D7
MOVEQ.L #0,D0 ADD_CMD
TRAP #00 $0 SYSCALL
DC.W $0032 RES_CMD
CMP.W #0,D7
BNE MR_GTO_PE
LEA H_00EBAE(PC),A6
MOVE.W #173,D0
MR_Z_LCB MOVE.B #0,0(A6,D0.W)
DBRA D0,MR_Z_LCB
LEA MR_MES(PC),A6
TRAP #0
DC.W 18 PRTMSG
BRA SYSMAP
MR_MES DC.B ' now resident.',$D
*
****************************************************************************
HOME MOVEQ.L #255,D6
BRA.S IN_CLSH
CLSH MOVEQ.L #0,D6
IN_CLSH MOVE.B #249,D5
CLSH_LOOP LEA CLSH_PKT(PC),A6
TRAP #06 $6 IOMGR6/SYSIO
DC.W $0006 FUNC
NOP
NOP
ADDQ #2,D5
CMP.B #251,D5
BEQ.S CLSH_LOOP
CMP.B #$FF,D6
BEQ.S CLSH_OVER
JSR $0FC2886
CLSH_OVER RTS
*
CCN_PKT DC.W 3,0
CLSH_PKT DC.W 40,0,0,0,0
*
*****************************************************************************
CCNSL0 MOVE.B #250,D5
LEA CCN_PKT(PC),A6
TRAP #06 $6 IOMGR6/SYSIO
DC.W $0006 FUNC
NOP
NOP
BRA UNHYPE
*
*****************************************************************************
SP_ DC.B 'Usage: SETPATH Dklmn... [where klmn... = '
DC.B 'STRING OF DRIVE NUMBERS]',$0D
SET_PATH TRAP #0 SYSCALL
DC.W 48 SUP MODE
MOVEA.L #$0ABCDEF,A0
TRAP #0 SYSCALL
DC.W 60 MODADRCK
MOVE.L #' ',D1
BSR.L INPUT_SUB
ORI.L #' ',D1
CMP.L #' ',D1
BNE.S SP_DOIT
LEA SP_(PC),A6
BRA.S W_P_P
SP_DOIT LEA.L DS_(PC),A6
MOVE.L D1,(A6)
MOVE.L D2,4(A6)
MOVE.L #0,10(A6)
MOVEQ #07,D1
SP_CHECK CMP.B #'/',0(A6,D1.L)
BLS.S SP_BAD
CMP.B #'9',0(A6,D1.L)
BLS.S SP_GOOD
SP_BAD MOVE.B #' ',0(A6,D1.L)
SP_GOOD DBRA D1,SP_CHECK
WHAT_PATH LEA.L DS__(PC),A6
W_P_P TRAP #0 SYSCALL
DC.W 18 PRTMSG
BRA.L UNHYPE
*
DRV_SERCH CMPI.W #0,D7
BEQ.S DRV__SRCH
CMPI.W #0130,D7
BEQ.S DRV__SRCH
CMPI.W #10,D7
BEQ.S DRV__SRCH
CMPI.W #$8600,D7
BEQ.S DRV__SRCH
CMPI.W #$0151,D7
BEQ.S DRV__SRCH
RTS
DRV__SRCH EQU *
BREAKEXIT -- EXIT IF CTRL BREAK
MOVE.L A5,-(A7)
LEA.L DS_(PC),A5
MOVEQ #0,D7
CMP.W #13,D3
BLS.S DS_LOOKUP
DS_ZAP MOVEQ #0,D3
MOVE.L D3,10(A5)
DS_LOOKUP MOVE.B 0(A5,D3.W),(A6)
ADDQ.W #1,D3
CMP.B #0,(A6)
BEQ.S DS_BAD
CMP.B #13,(A6)
BEQ.S DS_BAD
CMP.B #' ',(A6)
BEQ DS_LOOKUP
CMP.W #15,D3
BHI.S DS_BAD
BRA.S DS_COOL
DS_BAD MOVE.W #0130,D7
MOVE.B #' ',(A6)
DS_COOL MOVE.B #' ',1(A6)
MOVE.B #' ',2(A6)
MOVE.B #' ',3(A6)
MOVE.B #' ',4(A6)
MOVE.B #' ',5(A6)
CMP.W #0,D7
BNE.S DS_OUT
BSR.L SUB_CLOSE
MOVEQ.L #0,D7
DS_OUT MOVE.L (A7)+,A5
RTS
DS__ DC.B 'Drive search list '
DS.W 0
DS_ DC.B '84501962 '
DC.W $2020
DS_0 DC.W 0,0
DC.B $D,$D,$D,$D
*
*-------------------------------------------------------------------------
G_NAME MOVEM.L D0/A4-A6,-(A7)
MOVEQ #0,D0
TRAP #0
DC.W 27
MOVE.L #' ',D1
MOVE.L #' ',D2
CMPA.L #0,A5
BNE.S NM_OK
NM_RET MOVEM.L (A7)+,D0/A4-A6
RTS
NM_OK TRAP #0
DC.W 16
CMP.B #0,11(A5)
BEQ NM_RET
CMP.B #13,11(A5)
BEQ NM_RET
CMP.B #1,11(A5)
BNE NM_OK
LEA TEMPGUNK(PC),A4
MOVEA.L 4(A5),A6
MOVEQ.L #0,D0
MOVE.L D1,(A4)
MOVE.L D1,4(A4)
NM_LEN MOVE.B 0(A6,D0.W),0(A4,D0.W)
ADDQ.L #1,D0
CMPI.B #',',0(A6,D0.W)
BEQ.S NM_OUT
CMPI.B #13,0(A6,D0.W)
BEQ.S NM_OUT
CMPI.W #8,D0
BCS.S NM_LEN
NM_OUT MOVE.L (A4),D1
MOVE.L 4(A4),D2
BRA NM_RET
TEMPGUNK DCB.B 10,' '
DC.W $0404
*
*-------------------------------------------------------------------------
INPUT_SUB MOVEM.L D0/D3/D7/A2-A6,-(A7)
BSR.S INP___SUB
MOVEM.L (A7)+,D0/D3/D7/A2-A6
RTS
INP___SUB TRAP #00 $0 SYSCALL
DC.W $0034 GBasPtr
MOVEA.L 016(A5),A3
LEA 416(A3),A6
MOVEQ.L #0,D7
MOVEQ #073,D0
ISFC259A CLR.B (A6)+
DBF D0,ISFC259A
LEA 416(A3),A6
MOVE.B #$01,+00006(A6)
TRAP #00 $0 SYSCALL
DC.W $000F FmtDib*
CMPI.W #110,D7
BEQ.S TRY_NXT
CMPI.W #184,D7
BEQ.S TRY_NXT
CMPI.W #0,D7
BEQ.S DO_DEV
CMPI.W #1,D7
BEQ.S DO_VOL
LEA 38(A6),A2
MOVE.L (A2)+,D1
MOVE.L (A2),D2
I_S_STORE LEA ALIASE(PC),A2
MOVE.L D1,(A2)
MOVE.L D2,4(A2)
RTS
*
*-------------------------------------------------------------------------
TRY_NXT TRAP #00 $0 SYSCALL
DC.W $0034 GBasPtr
MOVEA.L 016(A5),A3
LEA 416(A3),A6
LEA 490(A3),A5
LEA 746(A3),A4
TRAP #00 $0 SYSCALL
DC.W $0010 NxTok*
MOVE.L #' ',D1
MOVE.L D1,D2
BRA.S I_S_STORE
*
*-------------------------------------------------------------------------
DO_VOL LEA.L ALIASE(PC),A2
MOVEQ #5,D0
DO_VOL_2 MOVE.B 0(A6,D0.W),0(A2,D0.W)
DBRA D0,DO_VOL_2
MOVE.L (A2),D1
MOVE.W 4(A2),D2
SWAP D2
MOVE.W #' ',D2
BRA I_S_STORE
*
*-------------------------------------------------------------------------
DO_DEV LEA.L ALIASE(PC),A2
MOVEQ #4,D0
DO_DEV_2 MOVE.B 1(A6,D0.W),0(A2,D0.W)
DBRA D0,DO_DEV_2
MOVE.B #' ',5(A2)
MOVE.L (A2),D1
MOVE.W 4(A2),D2
SWAP D2
MOVE.W #' ',D2
BRA I_S_STORE
*
*****************************************************************************
AL_US_MES DC.B 'Usage: ALIAS command,alias [where command '
DC.B 'is any resident command]',$D
DS.W 0
ALIAS_USAGE LEA AL_US_MES(PC),A6
BRA W_P_P
ALIAS MOVEA.L #$0ABCDEF,A0 | SUPERVISOR MODE
TRAP #5 |
MOVEA.L #$0ABCDEF,A0 | TURN OFF ADDRESS CHECKING
TRAP #0 |
DC.W 60 MODADRCK |
ALIAS_01 BSR.L G_NAME
CMP.L #' ',D1
BEQ.S ALIAS_USAGE
LEA ALIASE(PC),A0
MOVE.L D1,(A0)
MOVE D2,4(A0)
ALIAS_5OK LEA 0,A0
MOVEQ #2,D0 LOOKUP
TRAP #0 SYSCALL
DC.W 50 RES_CMD
CMP.W #0,D7
BEQ.S ALIAS_2OK
LEA ALIASE(PC),A6
TRAP #0
DC.W 18 PRTMSG
AL_GTO_ERR BRA.L PRT_ERR_
ALIAS_2OK LEA.L ALIASADR(PC),A1
MOVE.L A0,(A1)
BSR.L G_NAME
CMPI.L #' ',D1
BNE.S ALIAS_6OK
MOVE.W #$0101,D7
BRA.S AL_GTO_ERR
ALIAS_6OK MOVEQ #0,D0 ADD_CMD
MOVEA.L ALIASADR(PC),A0
TRAP #0 SYSCALL
DC.W 50 RES_CMD
CMP.W #0,D7
BNE.L PRT_ERR_
* BRA.L UNHYPE
ALIAS_AG BSR.L G_NAME
CMPI.L #' ',D1
BNE.S ALIAS_7OK
BRA.L UNHYPE
ALIAS_7OK MOVEQ #0,D0 ADD_CMD
MOVEA.L ALIASADR(PC),A0
TRAP #0 SYSCALL
DC.W 50 RES_CMD
CMP.W #0,D7
BNE.L UNHYPE
BRA ALIAS_AG
ALIASE DCB.B 10,' '
GUNK DCB.B 10,' '
DC.B $D,$D
ALIASADR DC.L 0
*
*
SET_CRT MOVEA.L #$0ABCDEF,A0
TRAP #5
LEA.L CRT_CR(PC),A0
MOVE.B D0,(A0)
BRA UNHYPE
*
*****************************************************************************
INVERSE TRAP #0 SYSCALL
DC.W 55 INQCRTCR
ORI.B #$C,D0
TRAP #0 SYSCALL
DC.W 54 SETCRTCR
BRA SET_CRT
*
*****************************************************************************
NORMAL TRAP #0 SYSCALL
DC.W 55 INQCRTCR
ANDI.B #$FB,D0
ORI.B #8,D0
TRAP #0 SYSCALL
DC.W 54 SETCRTCR
BRA SET_CRT
*
*****************************************************************************
REVERSE TRAP #0 SYSCALL
DC.W 55 INQCRTCR
EORI.B #4,D0
ORI.B #8,D0
TRAP #0 SYSCALL
DC.W 54 INQCRTCR
BRA SET_CRT
*
*****************************************************************************
UNBLANK TRAP #0 SYSCALL
DC.W 55 INQCRTCR
ORI.B #8,D0
TRAP #0 SYSCALL
DC.W 54 INQCRTCR
BRA SET_CRT
*
*****************************************************************************
BLANK TRAP #0 SYSCALL
DC.W 55 INQCRTCR
ANDI.B #$F7,D0
TRAP #0 SYSCALL
DC.W 54 INQCRTCR
MOVE.W D0,D6
BSR GET_NUM
EXG D0,D6
CMP.W #0,D6
BNE SET_CRT
BRA.L INIT_DONE
*
*****************************************************************************
ATCHDRVB EQU *
MOVEA.L #$0ABCDEF,A0
TRAP #5 SUPMODE
LEA H_00EC5C(PC),A5
MOVE.B #$FF,(A5) "MAGIC" BYTE
TRAP #0 SYSCALL
DC.W 52 GBASPTR
MOVEA.L +00016(A5),A5
MOVE.B #$FF,1298(A5) ANOTHER "MAGIC" BYTE
JSR $0FC2988
BRA UNHYPE
*
CLOS_SUB MOVEA.L #0,A6
SUB_CLOSE MOVE.L A2,-(A7)
MOVE.L A6,-(A7)
MOVEA.L #0,A6
TRAP #6 SYSIO
DC.W 2 CLOSE
NOP
NOP
MOVEA.L (A7)+,A6
CMP.W #$8300,D7
BNE.S CLO_RET
MOVE.W #0,D7
CLO_RET MOVEA.L (A7)+,A2
RTS
*
SUB_OPEN MOVEM.L D0-D6/A0-A6,-(A7)
MOVEQ #0,D0
SUB_O MOVE.W #0,D7
TRAP #6 SYSIO
DC.W 1 OPEN
NOP
NOP
ADDQ.W #1,D0
CMPI.W #$8500,D7
BEQ.S CLO_OPEN
CMP.W #$8100,D7
BEQ.S CLO_OPEN
CMP.W #18,D7
BEQ.S CLO_OPEN
S_O_RET MOVEM.L (A7)+,D0-D6/A0-A6
RTS
CLO_OPEN BSR SUB_CLOSE
TST.W D7
BNE.S S_O_RET
CMP.W #3,D0
BLS SUB_O
BRA S_O_RET
*
*****************************************************************************
WBOOT TRAP #0 SYSCALL
DC.W 48 SUP MODE
JMP $0FC00A4
TOO_MANY DC.B 'TOO MANY CRASHES!',$D
DS.W 0
ALT_TRAP EQU * this prints out trap error message, but then
C_TOL_1 EQU *+2 instead of re-booting it does EXIT syscall
CMPI.B #5,$0EB2 (OR calls DEBUG if it is resident)
BCS.S A_T_FIRST
BRA COLDBOOT IF PAST TOLERANCE & CRASHED - COLDBOOT
A_T_FIRST EQU *
ADD.B #2,$0EB2
MOVE.L (A7)+,A0
CMPA.L #$FC096A,A0
BNE.S REG
MOVE.L (A7)+,A0
MOVEM.L D0-D7/A0-A7,-(A7)
SUBA.L #$0000000E,A7
MOVEA.L A7,A0
JSR $0FC0A66
SUBA.L #$00000050,A7
MOVEA.L A7,A6
MOVE.W +00082(A0),D0
MOVE.L #'FNC=',(A6)+
JSR $0FC0ABE
MOVE.W #' ',(A6)+
MOVE.L +00084(A0),D0
MOVE.L #'ADD=',(A6)+
JSR $0FC0AB0
MOVE.W #' ',(A6)+
MOVE.W +00088(A0),D0
MOVE.L #'INR=',(A6)+
JSR $0FC0ABE
MOVE.B #$0D,(A6)
JSR $0FC0A90
MOVEA.L A7,A6
TRAP #00 SYSCALL
DC.W $0012 PrtMsg*
BRA.S REG_CONT
REG MOVE.L (A7)+,A0
MOVEM.L D0-D7/A0-A7,-(A7)
SUBA.L #$0000000E,A7
MOVEA.L A7,A0
JSR $0FC0A66
SUBA.L #$00000050,A7
REG_CONT MOVEA.L A7,A6
CLR.L D0
TRAP #00 $0 SYSCALL
DC.W $001B GStat
MOVE.L $0FC0B60,(A6)+
MOVE.W $0FC0B64,(A6)+
MOVE.L D1,(A6)+
MOVE.L D2,(A6)+
MOVE.W $0FC0B66,(A6)+
CLR.L D0
MOVE.B D5,D0
JSR $0FC0AC6
MOVE.W #' ',(A6)+
MOVE.L +00078(A0),(A6)+
MOVEA.L #$0FC0B54,A5
** dbw MOVE.L (A5)+,(A6)+
DCB.W 00003,+11485
JSR $0FC0A90
MOVEA.L A7,A6
TRAP #00 $0 SYSCALL
DC.W $0012 PrtMsg*
JSR $0FC0AE2
C_TOL_2 EQU *+2
CMPI.B #5,$0EB2 IF TOO MANY TRAPS - DISPLAY, THEN WARM BOOT
BCS.S A_T_RCVR NOT YET EXCEEDED TOLERANCE, TRY RECOVERY
LEA TOO_MANY(PC),A6
TRAP #00 SYSCALL
DC.W $0012 PrtMsg*
MOVEA.L #$0FC06A4,A6
TRAP #00 SYSCALL
DC.W $0013 PrtErMsg*
JMP $0FC007C
A_T_RCVR LEA.L A_T_RECOVER(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0012 PrtMsg*
MOVEQ #0,D0 try killing current task
TRAP #0 if we are SYSTEM task it will fail
DC.W 26 else it exits
MOVE.L #'DEBU',D1
MOVE.L #'G ',D2
MOVEQ.L #2,D0 LOOKUP
TRAP #0 SYSCALL
DC.W 50 RES CMD
CMPI.W #0,D7
BNE.S A_T_EXIT
CMPA.L #0,A0
BEQ.S A_T_EXIT
ANDI #0,SR - USER MODE, TRAPS ENABLED
MOVEA.L USP_SV_ADDR(PC),A7
JSR (A0)
TRAP #0
DC.W 48 SUP MODE
MOVEA.L SSP_SV_ADDR(PC),A7
PEA INIT_DONE(PC)
A_T_EXIT BRA TELL_TOL
A_T_RECOVER DC.B 'TRAP ERROR INTERCEPTED, CRASH AVERTED',$D
*
C_TOL_M DC.B 'REBOOT ON CRASH NUMBER $'
C_TOL_NUM DC.B ' '
DC.B ' CURRENT LEVEL IS '
C_LEV_NUM DC.B ' ',$D,$D
DS.W 0
*
*****************************************************************************
CRASH_TOL TRAP #0
DC.W 48 SUP MODE
BSR GET_NUM
CMP.B #13,D1
BEQ.S TELL_TOL
CMP.L #0,D0
BNE.S SET_TOL
TELL_TOL MOVEQ #0,D0
MOVE.W C_TOL_2(PC),D0
SUBQ.B #1,D0
LEA C_TOL_NUM(PC),A5
JSR $0FC61B0
MOVEQ #0,D0
MOVE.B $0EB2,D0
CMP.B #0,D0
BEQ C_T_T0
SUBQ.B #1,D0
C_T_T0 LEA C_LEV_NUM(PC),A5
JSR $0FC61B0
LEA C_TOL_M(PC),A6
BRA W_P_P
SET_TOL CMP.L #15,D0
BCS.S C_T_N_HI
MOVEQ #15,D0
C_T_N_HI ADDQ.W #1,D0
C_T_N_0 LEA C_TOL_1(PC),A5
MOVE.W D0,(A5)
LEA C_TOL_2(PC),A5
MOVE.W D0,(A5)
BRA TELL_TOL
*
*------------------------------------------------------------------------
KBD_LCB MOVEM.L D0-D7/A0-A6,-(A7)
MOVE SR,D2
TRAP #00 $0 SYSCALL
DC.W $0030 SUP MODE
LEA LCB_A6(PC),A3
MOVE.L A1,4(A3)
MOVE.L D0,12(A3)
MOVE.L D1,16(A3)
LEA USR_SV_ADR(PC),A4
MOVEA.L (A4),A5
LEA H_00EBAE(PC),A4
MOVE.L A4,(A3)
MOVE.L A4,8(A3)
MOVE.W #0173,D7
LCB_E61A MOVE.B #$00,+000(A4,D7.W)
DBRA D7,LCB_E61A
CMPA.L A1,A5 is it built-in command?
BCS.S LCB_BYE YES - return
MOVE.L D0,$1E(A4) not built-in; was made resident by MAKERES
MOVE.L D1,$22(A4) let's do up the LCB
MOVE.L D0,6(A4)
MOVE.L D1,10(A4)
MOVE.L #'USRM',22(A4)
LEA H_00EC5C(PC),A6
CLR.B (A6)
MOVEA.L A4,A6
MOVEQ #2,D4 INQLOAD can we fill in LCB?
TRAP #0 SYSCALL
DC.W 64 LOD_MGR
BRA.L NOT_MOD CAN'T FILL LCB!! -- ?? ERROR, PROCEED W/CAUTION
LEA LCB_A6(PC),A3
MOVE.L A6,(A3)
MOVE.W D2,-(A7)
BSR.S LCB_MV_CMD copy command line into msg buffer
MOVE.W (A7)+,D2
LEA B_UL(PC),A3
MOVE.B #4,(A3)
LCB_BYE MOVE D2,SR
MOVEM.L (A7)+,D0-D7/A0-A6
LEA LCB_A6(PC),A6
MOVEA.L 4(A6),A2 A2 = epa
MOVEA.L 8(A6),A4 A4 -> LCB
MOVE.L 12(A6),D0 D0/D1 = module name padded w/ blanks
MOVE.L 16(A6),D1
MOVEA.L (A6),A6 A6 -> LCB
RTS
LCB_A6 DC.L 0,0,0,0,0
NOT_MOD MOVEQ #0,D7
LEA H_00EBAE(PC),A4
MOVE.L A1,$28(A4)
CLR.B 88(A4)
BRA LCB_BYE
LCB_MV_CMD MOVEA.L A1,A2
TRAP #00 $0 SYSCALL
DC.W $0034 GBasPtr
MOVEA.L +00016(A5),A0
MOVE.L A1,412(A0)
LEA +01108(A0),A1
MOVE.L +00400(A0),D0
SUB.L A1,D0
MOVE.L D0,D3
LCB_FE0E MOVE.W D0,+00172(A4)
LEA +00092(A4),A5
MOVE.W #79,D0
LCB_FE22 MOVE.B +000(A1,D0.W),+000(A5,D0.W)
DBRA D0,LCB_FE22
MOVEA.L A4,A6
MOVE.B #0,$14(A6)
MOVEQ #3,D4 MODIFY
TRAP #0 SYSCALL
DC.W 64 LOD_MGR
NOP
NOP
LCB_FE64 RTS
NONONO MOVEA.L #$0ABCDEF,A0
TRAP #5
LEA.L H_00EC5C(PC),A5
MOVE.B #0,(A5)
BSR MAYBEGM
TRAP #0 SYSCALL
DC.W 52 GBASPTR
LEA 16(A5),A5
MOVE.B #0,1298(A5)
LEA.L H_00EBAE(PC),A5
MOVE.W #173,D0
NO_LOOP MOVE.B #0,0(A5,D0.W)
DBRA D0,NO_LOOP
BRA INIT_DONE
CMAGIC2 MOVEM.L D0-D7/A0-A6,-(A7)
LEA.L H_00EC5C(PC),A5
MOVE.B (A5),D7
TRAP #0 SYSCALL
DC.W 52 GBASPTR
LEA 16(A5),A5
OR.B 1298(A5),D7
BRA.S IMAGIC2
SMAGIC2 MOVEM.L D0-D7/A0-A6,-(A7)
MOVE.B #255,D7
BRA.S IMAGIC2
RMAGIC2 MOVEM.L D0-D7/A0-A6,-(A7)
MOVE.B #0,D7
IMAGIC2 MOVE SR,D0
MOVEA.L #$0ABCDEF,A0
TRAP #5
TRAP #0 SYSCALL
DC.W 52 GBASPTR
LEA 16(A5),A0
MOVE.B D7,1298(A0)
XMAGIC MOVE D0,SR
MOVEM.L (A7)+,D0-D7/A0-A6
RTS
SMAGIC1 MOVEM.L D0-D7/A0-A6,-(A7)
MOVE.B #255,D7
BRA.S IMAGIC2
RMAGIC1 MOVEM.L D0-D7/A0-A6,-(A7)
MOVE.B #0,D7
IMAGIC1 MOVE SR,D0
MOVEA.L #$0ABCDEF,A0
TRAP #5
LEA.L H_00EC5C(PC),A0
MOVE.B D7,(A0)
BRA XMAGIC
***************************************************************************
NO MOVE.L #'SCRN',D1
MOVE.L #'PRNT',D2
TRAP #0 SYSCALL
DC.W 45 KILL
BRA.L RESET_PR
*
****************************************************************************
SCHDRA_X MOVEA.L #$0FC41C6,A6
TRAP #0 SYSCALL
DC.W $12 PrtMsg
PT_MESS LEA P_T_(PC),A6
TRAP #0 SYSCALL
DC.W $12 PrtMsg
BRA INIT_DONE
P_T_ DC.B 'Program terminated.',$D
*
*****************************************************************************
HEXOF MOVEQ.L #0,D2
HEX_LOOP BSR GET_NUM
CMPI.B #13,D1
BEQ.S HEX_RET
ADD.L D0,D2
SUBA.L #12,A7
MOVE.L A7,A5
MOVE.B #'$',(A5)+
JSR $0FC61B0
MOVE.B #13,(A5)
MOVE.L A7,A6
TRAP #0
DC.W 18 PRTMSG
ADDA.L #12,A7
BRA HEX_LOOP
HEX_RET SUBA.L #16,A7
MOVE.L D2,D0
MOVE.L A7,A5
MOVE.L #'SUM=',(A5)+
MOVE.B #'$',(A5)+
JSR $0FC61B0
MOVE.B #13,(A5)
MOVE.L A7,A6
TRAP #0
DC.W 18 PRTMSG
ADDA.L #16,A7
RTS
*
*****************************************************************************
M_C_MESS DC.B 'Usage: MAKECMD name,address [enters name as '
DC.B 'command executing at address',$D
DS.W 0
M_C_USAGE LEA M_C_MESS(PC),A6
BRA W_P_P
MAKECMD MOVEA.L #$0ABCDEF,A0
TRAP #5
BSR G_NAME
CMPI.L #' ',D1
BEQ M_C_USAGE
MOVEM.L D1-D2,-(A7)
BSR GET_NUM
CMPI.B #13,D1
BEQ.S M_C_RET
MOVEA.L D0,A0
MOVEM.L (A7)+,D1-D2
* SUBA.L #40,A7
MOVEQ #1,D0
CMPA.L #0,A0
BEQ.S M_C_SC50
MOVEQ #0,D0
M_C_SC50 TRAP #0
DC.W 50
* ADDA.L #40,A7
M_C_RET BRA UNHYPE
*
*****************************************************************************
P_B_UNDO MOVEA.L PRTSC_VEC(PC),A0
MOVEA.L A0,A1
TRAP #0
DC.W 62
CMPA.L A0,A1
BNE UNHYPE
P_B_USAGE LEA P_B_MESS(PC),A6
BRA W_P_P
P_B_MESS DC.B 'Usage: PB (name) [IF name absent/not '
DC.B 'found, restores PrtSc; else PrtSc = name]',$D
DS.W 0
P_B_ MOVEA.L #$0ABCDEF,A0
TRAP #5
BSR G_NAME
CMPI.L #' ',D1
BEQ P_B_UNDO
LEA.L P_B_NAME(PC),A2
MOVE.L D1,(A2)+
MOVE.L D2,(A2)
MOVEQ #2,D0
TRAP #0
DC.W 50
CMP.W #0,D7
BNE P_B_UNDO
CMP.L #0,A0
BEQ P_B_UNDO
LEA.L KBD_CMD_INT(PC),A1
CMPA.L A1,A0
BEQ P_B_UNDO
LEA.L P_B_ADDR(PC),A1
MOVE.L A0,(A1)
LEA.L P_B_DOIT(PC),A0
TRAP #0 SYSCALL
DC.W 62 CHPRTSC change PRinT SCreen vector
BRA UNHYPE
P_B_ADDR DC.L 0
P_B_NAME DC.L 0,0
P_B_DOIT EQU *
MOVEM.L D0-D2/A6,-(A7)
MOVE.L #'SK ',D2
P_B_AG MOVE.L #'PBTA',D1
MOVE.W #$FF65,D0
LEA.L P_B_TASK(PC),A6
TRAP #0 SYSCALL
DC.W 25 GETPCB
CMP.B #0,D0
BNE.S P_B_NOGO
P_B_X MOVE.B D1,D0 FORCE NEW TASK READY
LEA.L P_B_PCBNO(PC),A6
MOVE.W D1,(A6)
TRAP #0 SYSCALL
DC.W 30 WAKEUP
MOVEM.L (A7)+,D0-D2/A6
RTS
P_B_NOGO CMP.B #$FF,D0
BNE P_B_AG
ADD.L #$0100,D2
CMP.L #'SZ ',D2
BCS P_B_AG
BRA P_B_X
P_B_PCBNO DC.W 0
*
P_B_TASK MOVE.L #246,D5
SUBA.L #0,A7
MOVEA.L A7,A6
MOVE.L #'#CON',(A6)
MOVE.W #' ',4(A6)
MOVE.W #$0101,6(A6)
MOVE.L #0,8(A6)
MOVE.L #0,12(A6)
MOVE.W #0,16(A6)
MOVE.L #0,18(A6)
MOVE.L #0,22(A6)
BSR SUB_OPEN
LEA.L CLSH_PKT(PC),A0
MOVE.L A0,18(A6)
MOVE.L #'#SCR',(A6)
MOVE.W #'N0',4(A6)
MOVE.W #$0001,6(A6)
MOVE.B #249,D5
BSR SUB_OPEN
LEA.L CLSH_PKT(PC),A0
MOVE.L A0,18(A6)
MOVE.L #'#CNS',(A6)
MOVE.W #'L0',4(A6)
MOVE.W #$0001,6(A6)
MOVE.B #250,D5
BSR SUB_OPEN
ADDA.L #30,A7
JSR $0FC2886 cls
MOVEA.L P_B_ADDR(PC),A6
LEA.L P_B_NAME(PC),A0
MOVE.L (A0)+,D0
MOVE.L (A0),D1
JSR (A6)
TRAP #0
DC.W 43
*
*****************************************************************************
FUNC BSR GET_NUM
ANDI.L #$0FF,D0
MOVE.L D0,D5
SUBA.L #512,A7
MOVEA.L A7,A6
FUNC_LOOP BSR GET_NUM
CMP.B #13,D1
BEQ.S FUNC_DOIT
MOVE.W D0,(A6)+
BRA FUNC_LOOP
FUNC_DOIT MOVE.W #0,(A6)+
MOVE.W #0,(A6)+
MOVEA.L A7,A6
TRAP #6
DC.W 6
BRA.L KBD_ERR_
ADDA.L #512,A7
RTS
*
*****************************************************************************
SM_VAL DC.L 0
SETSM TRAP #0 SYSCALL
DC.W 48 SUPMODE
BSR GET_NUM
LEA.L SM_VAL(PC),A0
MOVE.L D0,(A0)
BRA.S HBOOTS
*
*****************************************************************************
LIST
HBOOT TRAP #0 SYSCALL
DC.W 48 SUPMODE
LEA.L SM_VAL(PC),A0
MOVE.L #0,(A0)
HBOOTS MOVEQ #3,D1
* MOVEA.L #$0ABCDEF,A0 | TURN OFF ADDRESS CHECKING
* TRAP #0 |
* DC.W 60 MODADRCK |
HB_KILL MOVE.L D1,D0
TRAP #0 SYSCALL
DC.W 26 GIVPCB
ADDQ.W #1,D1
CMPI.W #16,D1
BCS HB_KILL
MOVEA.L PRTSC_VEC(PC),A0 | RESET PrtSc VECTOR
TRAP #0 SYSCALL |
DC.W 62 CHPRTSCR |
LEA.L CRTFPKT(PC),A6
MOVE.B #249,D5
TRAP #6
DC.W 6
NOP
NOP
JSR $0FC2886 cls
MOVE.L A7,-(A7)
SUBA.L #174,A7
MOVEA.L A7,A6
MOVE.L #87,D0
HBOOT_1 MOVE.W #0,(A6)+
DBRA D0,HBOOT_1
MOVEA.L A7,A6
HB_UL_L MOVE.B #1,20(A6) |
MOVE.L #2,D4 | UNLOAD ALL LOADED MODULES
TRAP #0 SYSCALL |
DC.W 64 LodMgr |
BRA.L HBOOT_OUT |
MOVE.W 38(A6),-(A7) |
MOVE.L #1,D4 |
TRAP #0 SYSCALL |
DC.W 64 LodMgr |
NOP
NOP
MOVE.W (A7)+,38(A6)
BRA HB_UL_L
HBOOT_OUT MOVEA.L USRM_PTR(PC),A0 |DIDDLE MEMORY CONTROL BLOCKS
MOVEA.L 12(A0),A1 | USRM block must be removed
MOVE.L #0,12(A0) | Re-Initialization will restore it
MOVE.L #'USRM',D5 | AFTER USRM destroyed, SYSM is
MOVE.L #2,D4 | hacked back to pre-CSOS 2 condition
MOVEM.L A0-A1,-(A7) |
TRAP #0 SYSCALL |
DC.W 57 MemMgr |
NOP |
NOP |
LEA.L SR_SAVE(PC),A0 |
MOVE.W #0,(A0) |
MOVEA.L SYSM_PTR(PC),A0 3D40 => A0
MOVEA.L 12(A0),A0 3C08 => A0
MOVEA.L (A0),A0 Beg Addr of SYSM => A0
CMPI.B #0,(A0) |
BEQ.S SYSM_OK |
MOVE.W #0,(A0) |
SYSM_OK MOVEM.L (A7)+,A0-A1 |
MOVE.L #0,(A0) |
MOVE.L A1,A0 |
MOVEQ.L #3,D0 |
HB_L2 MOVE.L #0,(A1)+ |
DBRA D0,HB_L2 |
MOVEA.L #$03BF0,A1 |
ADDQ.L #1,(A1) |
MOVE.L 4(A1),8(A0) |
MOVE.L A0,4(A1) |
MOVE.L #$0DC00,$0A08 |
MOVEA.L SYSM_PTR(PC),A0 |
MOVEA.L 12(A0),A0 |
MOVE.L (A0),D0 |
MOVE.L #0,A0 |
SUBQ.L #2,D0 |
CMP.L $0A0C,D0 |
BCS.S DON_T1 |
MOVE.L D0,$0A0C |
*
LEA.L INIT_DIE(PC),A0 | since memory control blocks hacked, there
MOVE.W #$4E71,(A0) | may be errors - IGNORE THEM FOR HBOOT
MOVE.W #$4E71,2(A0) | turn Bcc.L into two NOPs
DON_T1 MOVE.L SM_VAL(PC),D0 |HBOOT and new MODSYSM share code
CMP.L #0,D0 |if HBOOT only skip MODSYSM
BEQ.S DON_T |
TRAP #0 |
DC.W 7 OLD MODSYSM |
*
*
LEA $43B0,A0 Clear CTRL-Break and CTRL-NumLock ...
MOVE.W #0,(A0)
DON_T BRA.L BEG_RES_CODE(PC) when all done re-initialize CSOS v2
NOLIST
*
*****************************************************************************
SUP_MODE TRAP #0 SYSCALL
DC.W 48 SUPMODE
LEA.L SR_SAVE(PC),A0
MOVE.W #$2000,(A0)
BRA.L KBD_CMD_INT(PC)
*
* JMP $0FC3F24
USR_MODE TRAP #0 SYSCALL
DC.W 48 SUPMODE
LEA.L SR_SAVE(PC),A0
MOVE.W #0,(A0)
BRA.L KBD_CMD_INT(PC)
* JMP $0FC3F2E
*
T3LLMESS DC.B ' ',$D,$D
TELLMESS DC.B ' '
DC.W $2020,$0D0D
*
*****************************************************************************
TELL_SR MOVEQ #0,D0
MOVE SR,D0
MOVE.L #'SR ',D1
MOVE.L #'is $',D2
IN_TELL TRAP #0
DC.W 48
LEA.L TELLMESS(PC),A5
MOVEA.L A5,A6
MOVE.L D1,(A5)+
MOVE.L D2,(A5)+
JSR $0FC61B0
BRA W_P_P
*
*****************************************************************************
TELL_USP MOVE.L USR_SV_ADDR(PC),D0
MOVE.L #'USP ',D1
MOVE.L #'is $',D2
BRA IN_TELL
*
****************************************************************************
TELL_SSP MOVE.L SSR_SV_ADDR(PC),D0
MOVE.L #'SSP ',D1
MOVE.L #'is $',D2
BRA IN_TELL
*
****************************************************************************
TELL_SYSM MOVE.L SYSM_PTR(PC),D0
LEA.L T3LLMESS(PC),A5
MOVEA.L A5,A6
TRAP #0
DC.W 48
MOVE.L #'SYSM',(A5)+
MOVE.W #' ',(A5)+
MOVE.L #'MPD ',(A5)+
MOVEA.L D0,A0
JSR $0FC61B0
MOVE.L 12(A0),D0
LEA.L TELLMESS(PC),A5
MOVE.L #' ',(A5)+
MOVE.L #'MSP ',(A5)+
JSR $0FC61B0
BRA W_P_P
*
****************************************************************************
TELL_USRM MOVE.L USRM_PTR(PC),D0
LEA.L T3LLMESS(PC),A5
MOVEA.L A5,A6
TRAP #0
DC.W 48
MOVE.L #'USRM',(A5)+
MOVE.W #' ',(A5)+
MOVE.L #'MPD ',(A5)+
MOVEA.L D0,A0
JSR $0FC61B0
MOVE.L 12(A0),D0
LEA.L TELLMESS(PC),A5
MOVE.L #' ',(A5)+
MOVE.L #'MSP ',(A5)+
JSR $0FC61B0
BRA W_P_P
*
****************************************************************************
TELL_SPS TRAP #0
DC.W 48
LEA.L T3LLMESS(PC),A5
MOVEA.L A5,A6
MOVE.L #'USP ',(A5)+
MOVE.L #'is $',(A5)+
MOVE.L USR_SV_ADDR(PC),D0
JSR $0FC61B0
* LEA.L TELLMESS(PC),A5
* MOVE.W #' ',-2(A5)
MOVE.W #' ',(A5)+
MOVE.L #'SSP ',(A5)+
MOVE.L #'is $',(A5)+
MOVE.L SSR_SV_ADDR(PC),D0
JSR $0FC61B0
MOVE.W #$0D0D,(A5)+
BRA W_P_P
*
*-------------------------------------------------------------------------
OPEN_ EQU * DevName IN D0.L, D1 (high)
SUBA.L #30,A7 DTD IN D1 MIDLO, TRN IN D1 LO
MOVEA.L A7,A6 UNIT IN D5.B
SUBA.L #4,A7 D2 = -1 for byte I/O
MOVE.L D0,(A6)
MOVE.L D1,4(A6)
MOVE.L #0,8(A6)
MOVE.L #0,12(A6)
MOVE.W #0,16(A6)
MOVE.L #0,18(A6)
MOVE.L D2,22(A6)
TRAP #6
DC.W 1
NOP
NOP
MOVE.L 22(A6),D2
ADDA.L #34,A7
RTS
*-------------------------------------------------------------------------
FUNC_ EQU * D5.B = UNIT, A6.L = FUNCLIST
TRAP #6
DC.W 6
NOP
NOP
RTS
*-------------------------------------------------------------------------
BWRITE_ EQU * D0.B = BYTE, A6.L = ByteIOPTR
MOVEM.L D1,-(A7)
MOVEQ #0,D1
BW_LOOP TRAP #6
DC.W 9
BRA.L BW_ERROR
BW_RET MOVEM.L (A7)+,D1
RTS
BW_ERROR CMP.W #$8A00,D7
BNE BW_RET
ADDQ.W #1,D1
CMP #100,D1
BCS BW_LOOP
BRA BW_RET
*-------------------------------------------------------------------------
OPEN_PR EQU *
MOVE.L #'#PR ',D0
MOVE.W #' ',D1
SWAP D1
MOVE.W #0,D1
MOVE.L #0241,D5
MOVE.L #-1,D2
BSR OPEN_
CMP.W #0,D7
BNE.S PR_BYE
RTS
PR_MESS EQU *
MOVE.L A6,-(A7)
LEA.L PR_WARN(PC),A6
TRAP #0 SYSCALL
DC.W 18 PRTMSG
MOVE.L (A7)+,A6
RTS
PR_WARN DC.B 'Printer MUST be ON',$D
DS.W 0
*-------------------------------------------------------------------------
CLOSE_PR MOVE.L #0241,D5
PR_BYE BSR SUB_CLOS
TRAP #0
DC.W 43
*-------------------------------------------------------------------------
RESET_PR BSR OPEN_PR
SUBA.L #10,A7
MOVEA.L A7,A6
SUBA.L #4,A7
MOVE.W #30,(A6)
MOVE.L #0,2(A6)
BSR FUNC_
ADDA.L #14,A7
BRA CLOSE_PR
*
*****************************************************************************
LNFD BSR OPEN_PR
BSR GET_NUM
SUBQ.W #1,D0
BPL.S LNFD_OK
MOVEQ #0,D0
LNFD_OK SUBA.L #10,A7
MOVEA.L A7,A6
SUBA.L #4,A7
MOVE.W #26,(A6)
MOVE.L #0,2(A6)
BSR PR_MESS
LNFD_L BSR FUNC_
DBRA D0,LNFD_L
ADDA.L #14,A7
BRA CLOSE_PR
*
*****************************************************************************
RLNFD BSR OPEN_PR
BSR GET_NUM
ADD.W D0,D0
BPL.S RLNFD_OK
MOVEQ #0,D0
RLNFD_OK SUBA.L #10,A7
MOVEA.L A7,A6
SUBA.L #4,A7
BSR PR_MESS
MOVE.W #24,(A6)
MOVE.L #$2FFE4,2(A6)
MOVE.L #0,6(A6)
BSR FUNC_
MOVE.W #26,(A6)
MOVE.L #$20000,2(A6)
RLNFD_L BSR FUNC_
DBRA D0,RLNFD_L
ADDA.L #14,A7
BRA CLOSE_PR
*
*****************************************************************************
FMFD BSR OPEN_PR
MOVEA.L D2,A6
MOVEQ #12,D0
BSR PR_MESS
BSR BWRITE_
BRA CLOSE_PR
*
*****************************************************************************
KOLOR DC.W 0
KOLOR_MESS DC.B 'Usage: COLOR n [PrtSc color; 0=Red 1=Green 2=Blue 3=Black '
KOLOR_USAGE LEA.L KOLOR_MESS(PC),A6
BRA W_P_P
DO_KOLOR BSR GET_NUM
CMP.B #13,D1
BEQ.S KOLOR_USAGE
TRAP #0 SYSCALL
DC.W 48 SUPMODE
BSR.S KOLOR_SET
BRA UNHYPE
*
KOLOR_SET EQU *
ANDI.W #$0F,D0
LEA.L KOLOR(PC),A6
MOVE.W D0,(A6)
RTS
*
****************************************************************************
RED BSR OPEN_PR
SUBA.L #10,A7
MOVEA.L A7,A6
SUBA.L #4,A7
MOVE.W #6,(A6)
MOVE.L #0,2(A6)
BSR PR_MESS
BSR FUNC_
BSR FUNC_
ADDA.L #14,A7
TRAP #0
DC.W 48
LEA.L KOLOR(PC),A6
MOVE.W #0,(A6)
BRA CLOSE_PR
*
****************************************************************************
GREEN BSR OPEN_PR
SUBA.L #10,A7
MOVEA.L A7,A6
SUBA.L #4,A7
MOVE.W #6,(A6)
MOVE.L #$10000,2(A6)
BSR PR_MESS
BSR FUNC_
BSR FUNC_
ADDA.L #14,A7
TRAP #0
DC.W 48
LEA.L KOLOR(PC),A6
MOVE.W #1,(A6)
BRA CLOSE_PR
*
****************************************************************************
BLUE BSR OPEN_PR
SUBA.L #10,A7
MOVEA.L A7,A6
SUBA.L #4,A7
MOVE.W #6,(A6)
MOVE.L #$20000,2(A6)
BSR PR_MESS
BSR FUNC_
BSR FUNC_
ADDA.L #14,A7
TRAP #0
DC.W 48
LEA.L KOLOR(PC),A6
MOVE.W #2,(A6)
BRA CLOSE_PR
*
****************************************************************************
BLACK BSR OPEN_PR
SUBA.L #10,A7
MOVEA.L A7,A6
SUBA.L #4,A7
MOVE.W #6,(A6)
MOVE.L #$30000,2(A6)
BSR PR_MESS
BSR FUNC_
BSR FUNC_
ADDA.L #14,A7
TRAP #0
DC.W 48
LEA.L KOLOR(PC),A6
MOVE.W #3,(A6)
BRA CLOSE_PR
*
****************************************************************************
ANYCOLOR BSR OPEN_PR
SUBA.L #10,A7
MOVEA.L A7,A6
SUBA.L #4,A7
MOVE.W #6,(A6)
MOVE.L #$30000,2(A6)
BSR PR_MESS
BSR FUNC_
BSR FUNC_
ADDA.L #14,A7
TRAP #0
DC.W 48
LEA.L KOLOR(PC),A6
MOVE.W #8,(A6)
BRA CLOSE_PR
*
****************************************************************************
LFON BSR OPEN_PR
SUBA.L #10,A7
MOVEA.L A7,A6
SUBA.L #4,A7
MOVE.W #31,(A6)
MOVE.L #$10000,2(A6)
BSR PR_MESS
BSR FUNC_
BSR FUNC_
ADDA.L #14,A7
BRA CLOSE_PR
*
****************************************************************************
LFOFF BSR OPEN_PR
SUBA.L #10,A7
MOVEA.L A7,A6
SUBA.L #4,A7
MOVE.W #31,(A6)
MOVE.L #0,2(A6)
BSR FUNC_
BSR FUNC_
ADDA.L #14,A7
BRA CLOSE_PR
*
****************************************************************************
FFON BSR OPEN_PR
SUBA.L #10,A7
MOVEA.L A7,A6
SUBA.L #4,A7
MOVE.W #33,(A6)
MOVE.L #$10000,2(A6)
BSR FUNC_
BSR FUNC_
ADDA.L #14,A7
BRA CLOSE_PR
*
****************************************************************************
FFOFF BSR OPEN_PR
SUBA.L #10,A7
MOVEA.L A7,A6
SUBA.L #4,A7
MOVE.W #33,(A6)
MOVE.L #0,2(A6)
BSR FUNC_
BSR FUNC_
ADDA.L #14,A7
BRA CLOSE_PR
*
*
****************************************************************************
NEWPRTSC EQU *
ALTPRTSC EQU *
PRTSCBAC MOVEM.L D0-D2/A6,-(A7)
PRTSCBB0 MOVE.L #'SCRN',D1
MOVE.L #'PRNT',D2
MOVE.W #$FF64,D0
LEA PRTSCBD4(PC),A6
TRAP #00 $0 SYSCALL
DC.W $0019 GetPCB
CMP.W #01,D0
BEQ.S PRTSCBB0
MOVEM.L (A7)+,D0-D2/A6
RTS
* The code above launches the PrtSc task, the code below actually performs the
* PrtSc ...; modified to change ribbon color according to the color value in
* the KOLOR word. 0 .. 3 are valid, outside that range the color is NOT set
PRTSCBD4 EQU *
MOVEA.L #$0EC4,A0
MOVEA.L A0,A1
MOVEQ #001,D0
PRTSCBE4 MOVE.B #$00,(A1)+
ADDQ.L #1,D0
PRTSCBEA CMPI.L #$0000001A,D0
BLE.S PRTSCBE4
LEA (A0),A1
MOVE.L #'#PR ',(A1)+
MOVE.W #' ',(A1)+
MOVE.W #$0000,+00016(A0)
MOVEA.L A0,A6
ORI.W #$0040,+00016(A6)
MOVE.B #$0A,D5
TRAP #06 $6 IOMGR6/SYSIO
DC.W $0001 OPEN
BRA.L PRTSC_BAD
BRA.S PRTSCC2A
PRTSC_BAD JMP $0FC2DBE
*
PRTSCC2A EQU *
MOVEA.L #$01228,A0
MOVE.W #$0006,(A0)+ set color
MOVE.L A1,-(A7)
LEA.L KOLOR(PC),A1
CMP.W #4,(A1)
BCS.S KOLOR_OK
SUBA.L #2,A0
BRA.S ANY_KOLOR
KOLOR_OK MOVE.W (A1),(A0)+
ANY_KOLOR MOVE.L (A7)+,A1
JMP $0FC2C38
*
****************************************************************************
TYPE EQU *
TRAP #0 SYSCALL
DC.W 48 SUPMODE
LEA.L BUFADDR(PC),A1 DTCB has field in which buffer address is
* LEA.L TYPEBUF(PC),A2 specified, this loads it with correct (ie.
* MOVE.L A2,(A1) post-relocation) value
MOVE.L #$DD00,(A1)
MOVEQ.L #0,D0
TYPE_TRY EQU *
LEA.L FILEDIB(PC),A6
TRAP #0 SYSCALL
DC.W 15 FMTDIB
CMP.W #2,D7 is it unambiguous filename?
BEQ.S TYPE_GOTIT yes
ADDQ.L #1,D0
CMP.L #3,D0
BLT.S TYPE_TRY
*
TYPE_ERR EQU *
LEA.L TYPE_MSG_ERR(PC),A6
TRAP #0 SYSCALL
DC.W 18 PRTMSG*
TYPE_EXIT EQU *
BRA UNHYPE
*
TYPE_GOTIT EQU *
LEA.L BUFLEN(PC),A1
MOVE.W #16,(A1) set buffer length = 16 bytes
MOVE.W #0,2(A1) set buffer offset = 0
LEA.L FILEDIB(PC),A6
MOVEQ.L #10,D5 LUN = 10 for file
TRAP #6 SYSIO
DC.W 1 OPEN
BRA.L TYPE_ERR
*
MOVE.B FTYP(PC),D0
CMP.B #3,D0
BEQ.S TYPE_TEXT
LEA.L TYPE_NOT_TEXT(PC),A6
TRAP #0 SYSCALL
DC.W 18 PRTMSG*
MOVEQ.L #5,D2 | do 5 times
MOVEQ.L #0,D0 | ?50 mSec per unit delay
MOVEQ #3,D1 | delay 3 units
TYPE_BEEP_LOOP EQU *
MOVE.B #$FC,$0F00001 beep on
TRAP #00 SYSCALL
DC.W $001D Delay
DBRA D2,TYPE_BEEP_LOOP
MOVE.B #$FD,$0F00001 beep off
*
TYPE_TEXT EQU *
LEA.L CRTFPKT(PC),A6 Clear screen, Home cursor
MOVEQ.L #249,D5 LUN for CRT #SCRN0
TRAP #6 SYSIO
DC.W 6 FUNC
NOP long branch to error handler faked out by 2 NOPs
NOP
BSR RST_C_B reset Ctrl-Break
*
LEA.L BUFOFF(PC),A0
MOVEQ.L #0,D0
TYPE_LOOP EQU *
MOVE.L D0,(A0)
LEA.L TYPEDTCB(PC),A6
MOVEQ.L #10,D5
TRAP #6 SYSIO
DC.W 3 SREAD
BRA.L READ_ERR
*
BSR CHK_CB_CN
*
TYP_L1X MOVE.L D0,(A0)
LEA.L TYPEDTCB(PC),A6
MOVEQ.L #249,D5
TRAP #6 SYSIO
DC.W 4 SWRITE
BRA.L TYPE_ERR
*
BSR CHK_CB_CN
BRA TYPE_LOOP
*
READ_ERR EQU *
CMP.W #$085,D7
BNE.L TYPE_ERR
*
MOVE.W BUFOFF(PC),D1
* LEA.L TYPEBUF(PC),A1
LEA.L $DD00,A1
ADDQ.W #1,D1
MOVE.B #$0A,0(A1,D1)
MOVE.B #$0D,1(A1,D1)
MOVE.B #$0D,2(A1,D1)
ADDQ.W #2,D1
LEA.L BUFLEN(PC),A1
MOVE.W D1,(A1)
MOVEI.W #0,2(A1)
*
LEA.L TYPEDTCB(PC),A6
MOVEQ.L #249,D5
TRAP #6 SYSIO
DC.W 4 SWRITE
NOP
NOP
MOVEI.W #16,(A1)
MOVEI.W #0,2(A1)
MOVEI.L #0,(A6)
BRA.L TYPE_EXIT
*
*-----------------------------------------------------------------------
RST_C_B EQU * RESETS CTRL-BREAK INDICATOR BYTE
TRAP #0 SYSCALL
DC.W 48 SUPMODE
MOVEI.B #0,$43B0 Reset Ctrl-Break indicator
RTS
*
*
*-----------------------------------------------------------------------
RST_C_N EQU * RESETS CTRL-NUML INDICATOR BYTE
TRAP #0 SYSCALL
DC.W 48 SUPMODE
MOVEI.B #0,$43B1 Reset Ctrl-NumLock indicator
RTS
*
*
*-----------------------------------------------------------------------
CHK_CB_CN EQU * Checks CTRL-Break and CTRL-NumLock BYTES
* exit via UNHYPE if ctrl break
* freeze on Ctrl-NumLock
TRAP #0 SYSCALL
DC.W 48 SUPMODE
*
CHK_L2 EQU *
* CMP.B #$FF,$43B0 CTRL-Break Byte
DC.W $0C38,$00FF CMPI.B #$FF,$43B0 CHECK CTRL-Break BYTE
DC.W $43B0
BEQ.L UNHYPE
* CMP.B #$FF,$43B1 CTRL-NumLock Byte
DC.W $0C38,$00FF CMPI.B #$FF,$43B1 CHECK CTRL-NumLock Byte
DC.W $43B1
BNE.S CHCK_EXIT
MOVEM.L D0/D1,-(A7)
MOVEQ #0,D0
MOVEQ #1,D1
TRAP #00 $0 SYSCALL
DC.W $001D Delay
MOVEM.L (A7)+,D0/D1
BRA.S CHK_L2
CHCK_EXIT EQU *
RTS
*
**************************************************************************
SL_0E0AA MOVEM.L D0-D1/A1,-(A7)
LEA SL_0E0C4(PC),A1
SUBA.L D1,A1
SUBA.L D1,A1
SL_0E08E ANDI.L #$0000FFFF,D0
DIVU (A1)+,D0
ADDI.B #+048,D0
MOVE.B D0,(A0)+
SWAP D0
SUBI.W #+001,D1
BNE.S SL_0E08E
MOVEM.L (A7)+,D0-D1/A1
RTS
*-------------------------------------------------------------------------
SYSLEVEL EQU *
SL_0E000 EQU *
TRAP #0
DC.W 48 SUPMODE
TRAP #00 $0 SYSCALL SysLev
DC.W $0020 SysLev
LEA.L SL_0E050(PC),A0
MOVE.L D0,(A0)
CLR.L D0
MOVE.B SL_0E050(PC),D0
MOVEQ #002,D1
LEA.L SL_0E062(PC),A0
BSR SL_0E0AA
MOVE.B SL_0E051(PC),D0
LEA.L SL_0E06D(PC),A0
BSR SL_0E0AA
MOVEQ #004,D1
MOVE.W SL_0E052(PC),D0
LEA.L SL_0E07F(PC),A0
BSR SL_0E0AA
LEA.L SL_0E054(PC),A6
TRAP #00 $0 SYSCALL PrtMsg*
DC.W $0012 PrtMsg*
BRA UNHYPE
*
LIST
**************************************************************************
SWITCH_SCREENS EQU *
TRAP #0 SYSCALL
DC.W 55 INQCRTCR - INQuire CRT Control Register
EORI.B #1,D0
TRAP #0 SYSCALL
DC.W 54 SETCRTCR - SET CRT Control Register
BRA SET_CRT
*
**************************************************************************
SCREEN0 EQU *
TRAP #0 SYSCALL
DC.W 55 INQCRTCR - INQuire CRT Control Register
ANDI.B #$FE,D0
TRAP #0 SYSCALL
DC.W 54 SETCRTCR - SET CRT Control Register
BRA SET_CRT
*
**************************************************************************
SCREEN1 EQU *
TRAP #0 SYSCALL
DC.W 55 INQCRTCR - INQuire CRT Control Register
ORI.B #1,D0
TRAP #0 SYSCALL
DC.W 54 SETCRTCR - SET CRT Control Register
BRA SET_CRT
*
*-------------------------------------------------------------------------
* STORAGE FOR SYSLEVEL
*
SL_0E051 EQU *+01
SL_0E052 EQU *+02
SL_0E050 DC.L 0
*
SL_0E054 DC.B 'RELEASE LEVEL '
SL_0E062 DC.B '??, VERSION '
SL_0E06D DC.B '??, INTERNAL LEVEL '
SL_0E07F DC.B '??',$D,$D,$D,$D
DS.W 0
*
SL_0E0BA MOVE.L (A0),-(A3)
SL_0E0BC DC.W $3E8
SL_0E0BE DC.W 100
SL_0E0C0 DC.W +00010
SL_0E0C2 DC.W 0001
SL_0E0C4 DC.W 0000
*
****************************************************************************
* STORAGE FOR TYPE
*
TYPE_MSG_ERR DC.B 'TYPE: Error, aborting.',$D
TYPE_NOT_TEXT DC.B 'TYPE: FILE IS NOT A TEXT FILE!',$D
FILEDIB EQU *
FVOL DS.B 6
FDTD DC.B 1
FTRN DC.B 0
DC.L 0,0
DC.W 0
DC.L 0,0
FILEDIBX EQU *
DS.W 2
DC.L 0,0
FNAM DS.B 8
FEXT DS.B 3
FTYP DS.B 1
FACS DS.B 1
DC.B 0
DC.W 0
DC.L 0
DC.W 0
DC.L 0
DC.W 0
DC.L 0,0
*
CRTFPKT DC.W 6,0,3,0,40,0,0,0,0
*
TYPEDTCB EQU *
TYPESTA DS.B 1
DC.B 0,0,0
BUFADDR DC.L TYPEBUF this value is incorrect after relocation
BUFLEN DC.W 16
BUFOFF DC.W 0
*
TYPEBUF EQU *
DS.B 16
DC.B $D,$D
DC.L 0
*
END_RES_CODE EQU *
END START

You might also like