;PROGRAM TO SEND A BREAK TO ANY TERMINAL ; ;NOTE THAT REGISTER ADDRESSES AND BITS ARE HARD CODED, AND THIS ;PROGRAM MUST BE EDITED IF HARDWARE CONFIGURATION CHANGES ; ; ;CALLING PROCEEDURE: ; ;MCR>BRE 23 TO CAUSE BREAK AT TERM 23 (OCTAL) ;OR ;MCR>BRE TO CAUSE BREAK AT TI: ; .MCALL GMCR$,EXST$,DIR$,MRKT$,WTSE$ BREAK: DIR$ #GETMCR ;GET MCR COMMAND LINE CMP @#0,#3. ;TERMINAL SPECIFIED ? BGT 1$ ;BRANCH IF YES MOV @#.CRTSK,R5 ;ELSE DEFAULT TO TI MOV A.TI(R5),R5 ;AS BREAK TERMINAL BR DOIT 1$: MOV #GETMCR+G.MCRB+4,R4 ;POINT TO START OF ASCII NUMBER MOVB (R4)+,R5 ;GET NUMBER BIC #60,R5 ;CONVERT FROM ASCII->OCTAL CMPB (R4),#60 ;ANOTHER DIGIT THERE ? BLT 2$ ;BR IF NOT MOVB (R4),R4 ;GET SECOND DIGIT BIC #60,R4 ;CONVERT FROM ASCII->OCTAL MUL #10,R5 ;MULTIPLY HIGHER DIGIT ADD R4,R5 ;NOW HAVE TERM # IN R5 2$: MOV #"TT,R4 ;DEVICE NAME IN R4 CLR R0 ;NOT TASK SPECIFIC JSR PC,..FDEV ;FIND PUD FOR DEVICE DOIT: CMP U.DN(R5),#"TT ;BETTER HAVE A TT DEVICE BEQ 1$ ;BR IF OK DIR$ #EXITNG ;ELSE DO BAD EXIT 1$: MOVB U.UN(R5),R0 ;GET DEVICE # CMP R0,#5 ;IS IT A DZ ? BLT 2$ ;BR IF NOT CMP R0,#34 BGT 2$ ;HANDLE DZ DIFFERENTLY ASL R0 ;MAKE IT A WORD OFFSET ;WE CANT USE BIS/BIC ON DZ REGISTER MOVB BRBIT(R0),@BRADD(R0) ;SET THE BREAK BIT ON DIR$ #MARK ;MARK TIME FOR 1 SECOND DIR$ #WAIT ;WAIT FOR IT CLRB @BRADD(R0) ;AND CLEAR BREAK BIT DIR$ #EXITOK ;DO GOOD EXIT ;FOR DL AND DC INTERFACES 2$: ASL R0 ;MAKE IT A WORD OFFSET BIS BRBIT(R0),@BRADD(R0) ;SET THE BREAK ON DIR$ #MARK ;MARK TIME FOR 1 SECOND DIR$ #WAIT ;WAIT FOR IT BIC BRBIT(R0),@BRADD(R0) ;AND CLEAR IT DIR$ #EXITOK ;DO GOOD EXIT .PAGE ; ;DIRECTIVE PARAMETER BLOCKS ; ;EXITS ; EXITOK: EXST$ EX$SUC EXITNG: EXST$ EX$SEV ; ;GET MCR ; GETMCR: GMCR$ ; ;MARK TIME AND WAIT FOR IT ; MARK: MRKT$ 6,20,1 ;MARK TIME FOR 20 TICKS WAIT: WTSE$ 6 ;WAIT FOR IT ; ; ; TABLE OF BREAK BITS FOR 3 DL'S, 2 DC'S, 3 DZ'S ; BRBIT: .WORD 1,1,1 ;3 DL'S, (XMIT STATUS REGISTER BIT) .WORD 2,2 ;2 DC'S, (REC STATUS REGISTER BIT) ;DZ BITS, XMIT DATA REGISTER UPPER BYTE .WORD 1,2,4,10,20,40,100,200 .WORD 1,2,4,10,20,40,100,200 .WORD 1,2,4,10,20,40,100,200 .WORD 1 ;FINAL DL ; ;BREAK ADDRESS REGISTER ; BRADD: .WORD 177564 ;CONSOLE .WORD 175614,175624 ;2 DL'S .WORD 174000,174010 ;2 DC'S ;3 DZ'S .WORD 160017,160017,160017,160017,160017,160017,160017,160017 .WORD 160027,160027,160027,160027,160027,160027,160027,160027 .WORD 160037,160037,160037,160037,160037,160037,160037,160037 .WORD 176510 ;FINAL DL .END BREAK