.LIST TTM .TITLE P11WTT .NLIST BEX,SYM,TOC ; ; .PSECT ADDED TO ALLOW DATA TO BE PLACED IN ROOT .PSECT WTTDAT, D, GBL ; MUST BE IN ROOT SEGMENT BUFF: .BLKB 132. EOLN: .WORD FALSE EOF: .WORD FALSE IORES: .WORD 1 ;OK FILETP: .WORD TEXT+TTY TT: .WORD BUFF ; TTY^ CNT: .WORD 132. ; .PSECT PASRUN ; MAY BE PLACED IN OVERLAY SEGMENT ; .MCALL QIO$S,WTSE$S ; ; ; WTTINT:: MOV #TT,-(SS) ; WRITE( TTY, N:5 ) MOV 4(SS),-(SS) MOV #5,-(SS) CALLSS WRI ADD #4,SS RTS PC ; ; ; WTTERR:: MOV #TT,-(SS) ; WRITE( TTY, MOV #ERRMESS,-(SS) ; 'ERROR IN LINE ', MOV #14.,-(SS) MOV @SS,-(SS) CALLSS WRS MOV 4(SS),-(SS) ; N:6' MOV #6,-(SS) CALLSS WRI MOV #':,-(SS) ; ':' ) ; MOV #1,-(SS) CALLSS WRCHA ADD #4,SS RTS PC ; ; ; WTTEOL:: MOV #TT,-(SS) ; WRITELN( TTY ) ; CALLSS PUTLN ADD #2,SS RTS PC ; ; ; PROC WTTHEAD( VAR HDR,DAY,TIM: ALFA ); ; WTTHEA:: MOV #TT,-(SS) ; WRITELN( TTY, MOV #HEAD,-(SS) ; 'PASCAL PDP-11 VERSION ', MOV #24.,-(SS) MOV @SS,-(SS) CALLSS WRS MOV 8.(SS),-(SS) ; HDR ) ; INC @SS MOV #10.,-(SS) MOV @SS,-(SS) CALLSS WRS CALLSS PUTLN MOV 2(SS),@SS ; CALLSS TIME MOV 2(SS),-(SS) CALLSS DATE MOV #TT,-(SS) ; WRITELN(TTY, MOV 4(SS),-(SS) ; DAY, INC @SS MOV #10.,-(SS) MOV @SS,-(SS) CALLSS WRS MOV 2(SS),-(SS) ; TIM ); INC @SS MOV #12.,-(SS) MOV #8.,-(SS) CALLSS WRS CALLSS PUTLN CMP (SS)+,(SS)+ TST (SS)+ RTS PC ; ; ; PROCEDURE WTTSTAT( E:BOOLEAN; P,D,DD,T: INTEGER ) ; ; WTTSTAT:: MOV #TT,-(SS) ; WRITELN( TTY, TST 12.(SS) BEQ 1$ MOV #"**,ERRM2 1$: MOV #ERRM2,-(SS) ; '** ERROR DETECTED' ) ; MOV #17.,-(SS) MOV @SS,-(SS) CALLSS WRS CALLSS PUTLN MOV #TT,-(SS) ; WRITELN( TTY, MOV #STAT1,-(SS) ; 'TOTAL PROGRAM SIZE: ', MOV #28.,-(SS) MOV @SS,-(SS) CALLSS WRS MOV 10.(SS),-(SS) ; P:7:O ) ; MOV #7,-(SS) CALLSS WROCT CALLSS PUTLN MOV #TT,-(SS) ; WRITELN( TTY, MOV #STAT2,-(SS) ; 'OUTERMOST DATA SIZE: ', MOV #28.,-(SS) MOV @SS,-(SS) CALLSS WRS MOV 6.(SS),-(SS) ; DD:7:O ) ; MOV #7,-(SS) CALLSS WROCT CALLSS PUTLN MOV #TT,-(SS) ; WRITELN( TTY, MOV #STAT3,-(SS) ; 'RESERVED STACK & HEAP SIZE: ', MOV #28.,-(SS) MOV @SS,-(SS) CALLSS WRS MOV 8.(SS),-(SS) ; D:7:O ) ; MOV #7,-(SS) CALLSS WROCT CALLSS PUTLN MOV #TT,-(SS) ; WRITELN( TTY, MOV #RUNTM,-(SS) ; 'RUNTIME: ', MOV #9.,-(SS) MOV @SS,-(SS) CALLSS WRS MOV 4(SS),-(SS) ; T:8, BGE 2$ ADD #28800.,(SS) ; (* 8 HOUR WRAP AROUND *) 2$: MOV #8.,-(SS) CALLSS WRI MOV #SEC,-(SS) ; ' SECONDS' ) ; MOV #9.,-(SS) MOV @SS,-(SS) CALLSS WRS CALLSS PUTLN ADD #12.,SS RTS PC ; ; ; PROCEDURE RTT ( VAR LINE: LINEBUFF; VAR LEN: INTEGER ); ; RTT:: MOV #TT,-(SS) ; WRITE( TTY, MOV #PROMPT,-(SS) ; 'PAS>' ); MOV #4,-(SS) ; MOV @SS,-(SS) CALLSS WRS CALLSS BRKLN ; BREAK; TST -(SS) ADD #1,6(SS) ; (* ARRAY (.1..80.) *) QIO$S #IO.RVB,#5,#5,,SS,,<6(SS),#80.> WTSE$S #5 ; READLN; READ(LINE); MOV 2(SS),@4(SS) CMPB @SS,#IE.EOF BNE 9$ CALLSS EXITP 9$: ADD #8.,SS RTS PC ; ; ; .ENABL LC ERRMESS: .ASCII /ERROR IN LINE / HEAD: .ASCII /PASCAL PDP-11 VERSION / PROMPT: .ASCII /PAS>/ .EVEN ERRM2: .ASCII /NO ERROR DETECTED/ STAT1: .ASCII /TOTAL PROGRAM SIZE: / STAT2: .ASCII /OUTERMOST DATA SIZE: / STAT3: .ASCII /RESERVED STACK & HEAP SIZE: / RUNTM: .ASCII /RUNTIME: / SEC: .ASCII / SECONDS/ .EVEN ; ; .END