.TITLE UTIL Mount, dismount, boot... PROVOL interface .IDENT /1/ ; ; This software is intended to act as an interface to PROVOL ; one of the callable system routines ; .MCALL GMCR$,DIR$,EXIT$S,QIOW$S ; ; UTIL op devstring ; ; Op is one of WRITE ; BOOT ; MOUNT ; DISMOUNT ; DMOUNT ; FOREIGN ; TABLE: .BYTE 'D,2 .BYTE 'B,10. .BYTE 'W,11. .BYTE 'M,0 .BYTE 'F,1 .BYTE 0,0 GMCR: GMCR$ PARAM: .WORD 6 .WORD STATUS,REQUES,0,TEXTL,0,ATTRL STATUS: .BLKW 8. REQUES: .WORD 0 TEXTL: .WORD 0 ATTRL: .WORD 0 .ENABL LC M1: .ASCII "Get command line failed" M1L=.-M1 M2: .ASCII "Unrecognised command (B,M,W,F,D)" M2L=.-M2 M3: .ASCII "Failure - Status is" M3L=.-M3 .EVEN START: DIR$ #GMCR BCC 1$ QIOW$S #IO.WLB,#5,#5,,,,<#M1,#M1L,#40> EXIT$S 1$: MOV @#$DSW,R0 CLR GMCR ADD #GMCR+2,R0 ; point over end CLRB (R0) ; MOV R0,R1 ; now step back over text 2$: CMPB -(R1),#40 ; was that a space BHI 2$ ; R1 now points at the space before the code TSTB (R1)+ ; if eq illegal BEQ 99$ MOV R1,PARAM+6 SUB R1,R0 MOV R0,TEXTL DEC R1 ; point back to the space 3$: CMPB -(R1),#40 BHI 3$ INC R1 MOV #TABLE,R2 5$: CMPB (R2)+,(R1) ; was it this command BEQ 6$ INC R2 TSTB (R2) BNE 5$ 99$: QIOW$S #IO.WLB,#5,#5,,,,<#M2,#M2L,#40> EXIT$S 6$: MOVB (R2),REQUES MOV #PARAM,R5 CALL PROVOL CMP STATUS,#1 BEQ 100$ QIOW$S #IO.WLB,#5,#5,,,,<#M3,#M3L,#44> MOV STATUS,R0 CALL OUT MOV STATUS+2,R0 CALL OUT 100$: EXIT$S BUFF: .BLKB 80. OUT: MOV R0,-(SP) MOV #BUFF,R0 MOV (SP),R1 CALL $CBOMG SUB #BUFF,R0 QIOW$S #IO.WLB,#5,#5,,,,<#BUFF,R0,#0> MOV (SP)+,R0 RTS PC .END START