~~ I>~~~~~~~~~ q ~~; SYSTEM BOOTSTRAP .TITLE DKBOOT .ENT DKBOOT .EXTN SSINI,SIFUL ; FIRST LOCATION OF SYSTEM .EXTN CLI  ;LOAD CLI .TXTM 1 ; PACK RIGHT/LEFT DKBOOT= .  ; DUMMY ENTRY (FOR LIBRARY LOAD) .LOC CADZ CA: .BLK 1 LA: .BLK 1 SYSFL: SIFUL  ;FULL INIT SYSST: SSINI  ;PARTIAL KEY: "D*400+"K .ZREL BLKSZ: SCWPB CNT: .BLK 1 TIME: .BLK 1 C377: 377 CORAD: 377  ;FIRST DATA ADDRESS MBLK: 200  ;MAX NUMBER OF BLOCKS TO READ ; READ IN THE SYSTEM. RDSYS: IORST  ;ZONK RDLP: LDA 1,CORAD ;ADDRESS LDA 2,CA ;CURRENT ADDRESS JSR DSKRD ;READ A BLOCK JMP RDER ;ERROR DSZ MBLK ;TOO MANY BLOCKS ? JMP .+2 JMP DONE MOV 1,2 LDA 0,BLKSZ ADD 0,2 STA 2,CORAD ;NEW ADDRESS LDA 0,0,2 MOV# 0,0,SNR JMP RDER COM# 0,0,SNR JMP RDER LDA 1,LA MOV 1,3 ANDZL 0,3 ADD 0,1 SUB 3,1,SNR ;NEXT ADDRESS JMP DONE ;ALL DONE LDA 0,CA STA 0,LA STA 1,CA JMP RDLP DONE: JSR PRMSG ;PRINT DONE MESSAGE M2*2 HALT JMP@ SYSST ;START SYSTEM RDER: JSR PRMSG ;FATAL ERROR M3*2 HALT JMP RDER ; DISK COMMUMICATION SUBROUTINE ; INPUT: CORE ADDRESS IN AC1 ; DISK ADDRESS IN AC2 ; CALLING SEQUENCE: ; JSR DSKRD  ; READ DISK ; ^ERROR RETURN ; ^NORMAL RETURN ; AC1, AC2 ARE PRESERVED DSKRD: LDA 0,RETRY  ; RETRY COUNT STA 0,CNT DSKLP: SUBC 0,0  ; CLEAR AC0, SAVE CARRY AS IS STA 0,TIME  ; INITIALIZE TIMEOUT WORD DOB 1,DSK  ; CORE ADDRESS DOAS 2,DSK  ; YES TME: ISZ TIME  ; TIMEOUT? JMP .+5  ; NO JSR PRMSG  ; YES??!! M1+M1 HALT JMP RDSYS SKPDN DSK  ; GET DONE DISK JMP TME  ; TIME IT DIAC 0,DSK  ; READ THE STATUS MOVR# 0,0,SNC  ; ERROR? JMP 1,3  ; NO DSZ CNT  ; YES, COUNT THE TRYS JMP DSKLP  ; TRY AGAIN JMP 0,3  ; YOU'VE HAD ENOUGH CHANCES RETRY: 3   ; TRY THREE TIMES ; PRINT MESSAGE ROUTINE ; CALLING SEQUENCE: ; JSR PRMSG ; _TEXT BYTE POINTER TERMINATED BY NULL ; ^RETURN PRMSG: LDA 1,0,3  ; GET BYTE POINTER PRMS1: MOVZR 1,2  ; FORM CORE ADDRESS LDA 0,0,2  ; GET TWO BYTES LDA 2,C377  ; MASK OF RIGHT BYTE MOV# 0,0,SNC  ; RIGHT HALF? MOVS 0,0  ; NO AND 2,0,SNR  ; MASK AND TERMINATE ON NULL JMP 1,3 SKPBZ TTO JMP .-1 DOAS 0,TTO  ; PRINT THE CHATACTER INC 1,1 JMP PRMS1  ; LOOP TILL NULL ; MESSAGE STORAGE M1: .TXT *<15><12>DISK CONTROLLER ERROR<15><12>* M2: .TXT *<15><12>DOS REV 05.<15><12>* M3: .TXT *DISK READ ERROR!<15><12>* .LOC 375 JMP RDSYS NIOS DSK 377 .END *U*U*U*Unom