;Modified by Chester Wilson, 71 Galatea St, Charleville, Australia. ;18-Aug-83, CGW-1 ; Unstack a loc before a call to FINIS, to tidy stack. Otherwise ; prang monitor if using TT I/O wih co-routines & type-ahead. ; Make the caret prompt on all BLOCK 0 requests. .MCALL .MODULE .MODULE TT,RELEASE=V05,VERSION=00,COMMENT=,AUDIT=YES ; COPYRIGHT (c) 1983 BY ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. ; ALL RIGHTS RESERVED. ; ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE ; INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER ; COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY ; OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY ; TRANSFERRED. ; ; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE ; AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT ; CORPORATION. ; ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL. .MCALL .TTINR,.DRBEG,.DREND MONLOW = 54 OFFSET = 270 TTPS = 310 TTPB = 312 TTDSIZ = 0 TTSTS = 4 EOF$ = 20000 .IF DF MMG$T .IIF NE MMG$T, .ERROR .ENDC .IIF NDF MMG$T, MMG$T = 0 .IIF NDF ERL$G, ERL$G = 0 .IIF NDF TIM$IT,TIM$IT = 0 .IIF NDF RTE$M, RTE$M = 0 .IIF NDF PDT$OP, PDT$OP = 0 .DRBEG TT,0,TTDSIZ,TTSTS .ENABL LSB TTINT: BR TTSET BR TTRD TST TTCQE BEQ OIGNR JSR R2,@PC ADD #RING+2-.,R2 MOV R4,-(SP) TST -2(R5) BEQ 1$ TST WAITPR BNE COMX 1$: CLR (PC)+ WAITPR: .WORD 1 ADD @R4,R4 TST @R4 BMI DON1 TST OPFLG BPL COMX TT2: TST 20.(R4) BNE DONE 2$: TST (R2)+ BEQ 4$ TSTB @(R2) BEQ 3$ MOV R2,R5 BR COMX 3$: INC @R2 DEC -(R2) BR 2$ 4$: MOV R4,R5 ADD #16.,R5 BR DONE DON1: MOV TTCQE,R2 CLR 10(R2) DONE: JSR PC,FINIS MOV PC,R2 ADD #RING+2-.,R2 MOV @SP,R4 ADD @R4,R4 TST @R2 BNE TT2 CLRB 1(R4) COMX: MOV (SP)+,R4 MOV (SP)+,R2 OIGNR: TST (R4)+ RTS R4 .DSABL LSB TTRD: TST TTCQE BEQ OIGNR JSR R2,@PC ADD #RING+4-.,R2 MOV R4,-(SP) ADD @R4,R4 TST @R4 BMI DON1 1$: JSR R4,GETCHR BR COMX BR 1$ BR DONE .ENABL LSB TTSET: JSR R2,@PC ADD #RING-.,R2 MOV R4,-(SP) MOV R3,-(SP) MOV @#MONLOW,R3 MOV TTCQE,R4 mov (r4),ctflg ;CGW-1 Make all block 0's give caret CMP (R4)+,(R4)+ MOV (R4)+,(R2)+ MOV @R4,@R2 MOV @R2,-(SP) BGT 1$ BEQ 5$ NEG @R2 MOV SP,WAITPR BR 2$ 1$: TST EFFLG BEQ 2$ CLR EFFLG MOV TTCQE,R2 BIS #EOF$,@-(R2) BR 5$ 2$: ASL (R2)+ MOV -(R4),(R2)+ MOV @R4,@R2 ADD -4(R2),@R2 MOV @SP,(PC)+ OPFLG: .WORD 0 BMI 3$ TST (PC)+ CTFLG: .WORD 0 BNE 7$ 22$: BITB #100,@TTPS(R3) BNE 22$ MOV #'^,@TTPB(R3) 3$: .IF EQ PDT$OP BIS #100,@TTPS(R3) .IFF MOV #100,@TTPS(R3) .ENDC 7$: TST (SP)+ BMI 6$ TST -(R2) 4$: JSR R4,GETCHR BR 6$ BR 4$ br 555$ ;CGW-1 Unstack 1 forgotten loc, as otherwise 5$: tst (sp)+ ;CGW-1 co-routine I/O with type-ahead prangs 555$: ;CGW-1 the monitor. JSR PC,FINIS 6$: MOV (SP)+,R3 MOV (SP)+,R4 MOV (SP)+,R2 RTS PC .DSABL LSB .ENABL LSB GETCHR: MOV R0,-(SP) CLR CTFLG TST OPFLG BLE CHRET .TTINR BCS CHRET TST (R4)+ CMP R0,#'Z&77 BEQ 11$ MOVB R0,@(R2)+ INC -2(R2) CMP @R2,-(R2) BEQ 4$ BR CHRET 11$: MOV SP,CTFLG 1$: CMP (R2)+,@R2 BHIS 3$ CLRB @-(R2) INC @R2 BR 1$ 3$: MOV SP,(PC)+ EFFLG: .WORD 0 4$: TST (R4)+ CHRET: MOV (SP)+,R0 RTS R4 .DSABL LSB RING: .WORD 0,0,0,0 FINIS: CLR OPFLG CLR RING+2 MOV PC,R4 ADD #TTCQE-.,R4 TST @R4 BEQ 1$ MOV @#MONLOW,R2 JSR PC,@OFFSET(R2) 1$: RTS PC .DREND TT .END