.TITLE SWAP V02.02 ; SWITCH CONSOLE TO & FROM A SECOND DL11 ;MODIFIES THE MONITOR TO USE A SECOND DL AS CONSOLE ; CHECKS IF A FOREGROUND PROGRAM IS RUNNING AND ABORTS ; .MCALL .EXIT,.PRINT DL1VEC=60 DL2VEC=300 TT1KS=177560 TT2KS=176500 BITMAP=326 START: MOV @#54,R0 ADD #300,R0 ; MONITOR CONFIGURATION WORD BIT #200,@R0 ; BIT 7 = 1 IF FG JOB PRESENT BEQ GO .PRINT #FORGND ; PRINT MESSAGE .EXIT GO: ADD #4,R0 ; NOW AT OFFSET 304 CMP @R0,#177560 ; TEST IF AT SCREEN BNE DL2 ; TST TT2KS .PRINT #CONTR2 MOV @#54,R0 .IF EQ,DL2VEC-&10 VCMSK =360 .IFF VCMSK =17 .ENDC BISB #VCMSK,BITMAP+(R0) ADD #304,R0 1$: BIT #100,@4(R0) BNE 1$ BIC #100,@(R0) MOV #TT2KS,(R0)+ MOV #TT2KS+2,(R0)+ MOV #TT2KS+4,(R0)+ MOV #TT2KS+6,(R0)+ SUB #10,R0 TSTB @2(R0) BIS #100,@(R0) MOV #DL2VEC,R0 MOV #BUFF,R1 .REPT 4 MOV (R0)+,(R1)+ .ENDM ; MOV #DL1VEC,R0 MOV #DL2VEC,R1 .REPT 4 MOV (R0)+,(R1)+ .ENDM ; MOV #BUFF,R0 MOV #DL1VEC,R1 .REPT 4 MOV (R0)+,(R1)+ .ENDM MOV #0,@#56 .PRINT #NEWCON .EXIT ; ; COME HERE IF GOING FROM PRINTER TO SCREEN ; DL2: TST TT1KS .PRINT #CONTR1 MOV @#54,R0 .IF EQ,DL1VEC-&10 VCMSK =360 .IFF VCMSK =17 .ENDC BISB #VCMSK,BITMAP+(R0) ADD #304,R0 3$: BIT #100,@4(R0) BNE 3$ BIC #100,@(R0) MOV #TT1KS,(R0)+ MOV #TT1KS+2,(R0)+ MOV #TT1KS+4,(R0)+ MOV #TT1KS+6,(R0)+ SUB #10,R0 TSTB @2(R0) BIS #100,@(R0) MOV #DL1VEC,R0 MOV #BUFF,R1 .REPT 4 MOV (R0)+,(R1)+ .ENDM ; MOV #DL2VEC,R0 MOV #DL1VEC,R1 .REPT 4 MOV (R0)+,(R1)+ .ENDM ; MOV #BUFF,R0 MOV #DL2VEC,R1 .REPT 4 MOV (R0)+,(R1)+ .ENDM MOV #0,@#56 .PRINT #NEWCON .EXIT ; BUFF: .WORD .WORD .WORD .WORD .NLIST BEX CONTR1: .ASCIZ /CONTROL TRANSFERRED TO SCREEN/ CONTR2: .ASCIZ /CONTROL TRANSFERRED TO PRINTER/ NEWCON: .ASCIZ <7>/RT-11 V3B/ FORGND: .ASCIZ <7><7>/- MUST STOP & UNLOAD FOREGROUND JOB/ .EVEN .END START