.TITLE DSD FLOPPY BOOTSTRAP ; BOOTSTRAP LOADER FORMAT FLOPPY BOOTSTRAP WITH AUTO-START ; FLPBOT.MAC 11-MAR-77 ; WHEN ASSEMBLED INTO A SAVE FILE AND PUNCHED ONTO PAPER TAPE ; THIS FILE PRODUCES A TAPE IN BOOTSTRAP LOADER FORMAT THAT CAN ; BE LOADED ON AN LSI-11 BY TYPING "177560L" TO THE ; RESIDENT ODT. THE PROGRAM IS SELF STARTING AND SHOULD ; HAVE RT-11 BOOTED WITHIN 10 SECONDS OF THE TAPE STOPPING. ; LOAD SAME AS ABSLDR PAPER TAPE. ; ASSEMBLED AS IF LOADED INTO 1K MEMORY ; BOOTSTRAP LOADER DEFS RXCS=177170 DEVICE=3776 LODPTR=DEVICE-24 .MCALL .REGDEF .REGDEF .ASECT .=DEVICE-600 .REPT 201 .BYTE 0 .ENDM .REPT 200 .BYTE 351 .ENDM .BYTE BOTDEC-1&377 ; LOAD ADDRESS RE X7400 ; DEC LSI-11 BOOTSTRAP FOR RT-11 ; READS SECTOR 1 TRACK 1 INTO CORE STARTING AT 0. ; STARTS AT 0 WITH R0 = 1 IF UNIT 0, R0 = 0 IF UNIT 1. BOTDEC: MOV #100247, R2 ; UNIT 0 READ, GO ; USE 100267 FOR UNIT 1 RESTRT: MOV #RXCS, R1 BITB R2, (R1) ; TEST DONE BEQ .-2 MOVB #7, R3 ; SEQUENCE COUNTER FOR SECTOR,TRACK MOV R1, R0 ; SET UP RXDB POINTER MOV R2, (R0)+ ; EXECUTE READ+ R0 = RXDB PTR BR .+6 2$: MOV #1, (R0) ; SECTOR, TRACK INTO RXDB ASR R3 ; SET = 3 BCS .+6 ; SET TO LOAD SECTOR, TRACK MOVB (PC)+, (R1) ; GIVE EMPTY BUF COMMAND. [OR ] 3$: MOVB (R0), (R3)+ ; LOAD DATA INTO CORE IF CARRY CLEAR BIT R2, (R1) ; ERROR, DONE, OR TRANSFER REQ BEQ .-2 ; WAIT FOR ONE OF ABOVE? BMI RESTRT ; ERROR - RETRY FROM BEG. BCS 2$ ; R3= 3+C - LOAD SECTOR ; 1+C - LOAD TRACK ; 0+C - LOADS ANOTHER 1 (IGNORED) ; THEN LOADS EMPTY BUF COMMAND AT 3$ TSTB (R1) ; TRANSFER REQUEST IN EMP BUF. BMI 3$ ; READ ANOTHER BYTE. CLR R0 ; BUF EMPTY, MUST BE DONE. CMP #240, (R0) ; CHECK THE DATA. BNE RESTRT ; NOT GOOD - RETRY. CMPB #247, R2 ; IS UNIT = 0? (SETS CARRY) ADC R0 ; R0 = 0 IF UNIT 0, = 1 IF UNIT 1. CLR PC ; START AT 0. .WORD 0 .REPT DEVICE-52-. .BYTE 0 .ENDM RESTOR: MOV #352, LODPTR MOV #765, DEVICE-2 JMP BOTDEC ; INITIALIZE STUFF TO BOOTSTRAP LOADER FOR DISPATCH MOV DEVICE, R1 MOV (PC)+, R2 .BYTE 373 ; INIT LODPTR FOR LOAD AT DEVICE-2 .BYTE RESTOR-DEVICE/2&377 ; LOADS LOW BYTE OF BRANCH .REPT 120. .BYTE 0 .ENDM .END