.TITLE BOOTUP .SBTTL RSX11M ROLLIN .PSECT IMPURE,D,LCL,OVR ; ; ; SYSTEM MACRO DEFINITION ; ; ; .MCALL OPEN$R,READ$,QIOW$S,CLOSE$,EXIT$S,FDBDF$,FDRC$A,FDBK$A .MCALL FDOP$A,FDBF$A,WAIT$ ; ; ; DATA ; ; ; .NLIST BEX ERM1: .ASCII /ERROR ON OPENING INPUT FILE/ ERM1S =<.-ERM1> .EVEN ERM2: .ASCII /ERROR DURING READING BOOT/ ERM2S =<.-ERM2> .EVEN ERM3: .ASCII /ERROR DURING WRITING THE BOOT/ ERM3S =<.-ERM3> .EVEN ; ; ; DIRECTIVE PARAMETER BLOCK ; ; ; BOTFDB: FDBDF$ FDRC$A FD.RWM FDBK$A BOOT,BOSIZE,,,BOTIOS FDOP$A BOTLUN,IDSETD,,FO.RD FDBF$A IDSETD: IDSIZ,IDEV IUSIZ,IUIC INSIZ,INAME IDEV: .ASCII /LB:/ IDSIZ =.-IDEV IUIC: .ASCII /[1,1]/ IUSIZ =.-IUIC INAME: .ASCII /ROLMAG.ROL/ INSIZ =.-INAME .EVEN BOTIOS: .BLKW 2 ;I/O STATUS RETURN .LIST BEX .PSECT ; ; ; PROGRAM PROPER ; ; ; BOOTUP::CALL $SAVAL ;SAVE REGISTERS MOV #BOTFDB,R0 ;BOOT FDB TO R0 OPEN$R R0 ;OPEN BOOT FILE BCS ERROR ;IF ERROR ON OPENING FILE READ$ R0,#BOOT,#BOSIZE,,#20.,#BOTIOS,,1$ MOVB F.ERR(R0),R4 BMI 1$ WAIT$ R0,#20.,#BOTIOS,1$ BCC WRTBOT ;YES GO WRITE IT 1$: QIOW$S #IO.WVB,#TTYLUN,,,,,<#ERM2,#ERM2S,#60> JMP ERREXT WRTBOT: MOV #OUTFDB,R4 ;OUTPUT FDB TO R4 MOVB F.LUN(R4),R3 ;LUN TO R3 MOV F.BKST(R4),R5 ;I/O STATUS POINTER TO R5 QIOW$S #IO.WLB,R3,R3,,R5,,<#BOOT,#BOTSIZ> CMPB #IS.SUC,(R5) ;WAS WRITE SUCCESSFUL BNE ERROR1 ;NO ERROR QIOW$S #IO.WLB,R3,R3,,R5,,<#BOTIMG,#BIMSIZ> CMPB #IS.SUC,(R5) ;WAS THIS WRITE A SUCCESS BNE ERROR1 ;NO ERROR JMP EXIT ERROR: QIOW$S #IO.WVB,#TTYLUN,,,,,<#ERM1,#ERM1S,#60> JMP ERREXT ERROR1: QIOW$S #IO.WVB,#TTYLUN,,,,,<#ERM3,#ERM3S,#60> ERREXT: CLOSE$ #BOTFDB ;CLOSE INPUT FILE JMP RSTART EXIT: CLOSE$ #BOTFDB ;CLOSE INPUT FILE RETURN .END