Interdata_v6/usr/source/boot/mdl.s
NORX3
TITLE REGISTER DEFINITIONS
R0 EQU 0
R1 EQU 1
R2 EQU 2
R3 EQU 3
R4 EQU 4
R5 EQU 5
R6 EQU 6
R7 EQU 7
R8 EQU 8
R9 EQU 9
RA EQU 10
RB EQU 11
RC EQU 12
RD EQU 13
RE EQU 14
RF EQU 15
TITLE MULTI MEDIA DIAGNOSTIC COMMON DISC BOOT LOADER
*
*
*
* BEFORE THIS BOOT LOADER IS EXECUTED THE DEVICE DEFINITION
* TABLE MUST BE SET UP AS FOLLOWS.
*
* LOCATIONS
* DEVICE X'78' X'7A' X'7C'
*
* MAG TAPE& DDA1 0000 0000
* CASSETTE
*
*
* DISC YYZZ DDTT CCSS
*
*
* WHERE: DD= THE DEVICE WITH THE MAGNETIC MEDIA
* CC= THE CONTROLLER ADDRESS IF DD IS A DISC
* TT= DISC TYPE INDICATOR
* OO=2.5 MB DISC
* 01=10 MB DISC
*
* SS= THE DISC SELCH ADDRESS
* YY= THE DEVICE ADDRESS OF THE DISC BOOT
* LOADING DEVICE.
* ZZ= THE READ COMMAND FOR THE BOOT LOAD DEVICE
*
* 99= READER PUNCH
* 94= TTY
*
*
*
*
low equ *
dc y'8000',disbt start psw
org low+x'60' 'OS' entry point
lpsw low halt at entry
org low+x'100'
DISBT EQU *
LB R1,X'7D' GET SELCH ADDRESS
LIS R4,8 LOAD THE SELCH STOP COMMAND
OCR R1,R4 STOP THE SELCH
LB R2,X'7A' GET THE DEVICE ADDRESS
LB R3,X'7C' GET THE CONTROLLER ADDRESS
LHI R8,X'C1' LOAD THE RESTORE COMMAND
OCR R2,R8 RESTORE THE FILE
BAL RF,FRSRWN WAIT FOR COMPLETE
LIS R7,0 SET THE CYLINDER ADDRESS
LIS RD,0 SET THE SECTOR OR HEAD NUMBER
AIS R8,1 MAKE THE RESTORE COMMAND A SEEK COMMAND
BAL RE,READ READ THE DIRECTORY
*
LIS R5,8 SET POINTER
*
* LH RE,X'7E' GET THE LOADER INDICATOR
* BZS LD16 16 BIT BRANCH
AIS R5,8 32 BIT-BUMP POINTER
LD16 LH R7,PDB+4(R5) LOAD THE CYLINDER NUMBER
LB R9,PDB+7(R5) GET THE HEAD NUMBER
SLHL R9,5
LB RD,PDB+6(R5) GET THE SECTOR NUMBER
OAR RD,R9
BAL RE,READ READ THE PROGRAM DEFINITION BLOCK
*
LB R5,PDB+19
SLHL R5,8
LB R6,PDB+20
OAR R5,R6 R5=THE STARTING ADDRESS
LH R6,PDB+22 R6= THE
CLHI RD,23 END OF TRACK?
BNES CONT1
LHI RD,X'1F' SET HEAD1 SECTOR 0
CONT1 AIS RD,1 BUMP TO NEXT SECTOR
BAL RE,READ1 GO READ THE LOADER
*
*CALCULATE CHKSUM
*
LDAR R7,R5
XAR RA,RA ZERO THE CHKSUM ACCUMULATOR
CKLP LB RB,0(R7)
XAR RA,RB
AIS R7,1
CLAR R7,R6
BLS CKLP
BES CKLP
LB R7,PDB+24 GET THE CHKSUM BYTE
CLAR R7,RA
BER R5 CHKSUM OK PASS CONTROL TO THE PROGRAM
*
LHI R1,X'EE00'
LIS RA,1 DISPLAY
LHI RB,X'40'
OCR RA,RB THE CHKSUM
WHR RA,R1
XAR RE,RE ERROR CODE
WHR RA,RE
LHI RB,X'80'
OCR RA,RB
HERE B HERE
*
*
READ LA R5,PDB SET UP THE SELCH ***
LA R6,PDB+30 ADDRESSES ***
READ1 WHR R2,R7 SET UP THE FILE
OCR R2,R8 SEEK
BAL RF,FRSRWN
LIS RB,1 LOAD THE DISC READ COMMAND
LHI RA,X'30' LOAD THE SELCH READ COMMAND
WHR R2,R7 SET UP THE FILE
WDR R3,RD SET UP THE CONTROLLER
ST R5,SELCHAD START ADDRESS ***
WD R1,SELCHAD+1 SET UP THE SELCH ***
WH R1,SELCHAD+2 ***
ST R6,SELCHAD END ADDRESS ***
WD R1,SELCHAD+1 SET UP THE SELCH ***
WH R1,SELCHAD+2 ***
* WHR R1,R5 SET UP THE SELCH ***
* WHR R1,R6 SET UP THE SELCH ***
OCR R3,RB START THE CONTROLLER
OCR R1,RA START THE SELCH
SSR R1,R0 WAIT FOR SELCH
BTBS 8,1 NOT BUSY
OCR R1,R4 STOP THE SELCH
SSR R3,R0 WAIT FOR CONTROLLER
BFBS 2,1 IDLE
BR RE
*
FRSRWN EQU *
SSR R3,R0 WAIT FOR CONTROLLER
BFBS 2,1 IDLE
SSR R2,R0 WAIT FOR FILE
BTBS 15,1 STATUS = 0
BR RF
*
ALIGN 4
SELCHAD DC A(*-*) FOR SELCH ADDRESS ***
PDB DS 32
DISBTE EQU *
*
END DISBT