TITLE TV SCREEN PLOTTER P=17 Q=16 A=1 B=2 C=3 D=4 E=5 F=6 G=7 X=10 Z=11 Y=12 X0=13 Y0=14 POS=15 IN==1 OUT==2 TI==3 TO==4 ERRI==5 NSLPP==19. ;NUM SCAN LINES/PAGE WDPSL==53. ;NUM WDS/SCAN LINE, INCLUDING HEADER NPGS==72. BUFL==20000 INOP: SIXBIT / &DSK/ 0 SIXBIT /PLS/ FRMSNM: 0 OUTP: 7,,0 0 0 TOSSNM: 0 TTIPN: SIXBIT / TTY/(30) 0 0 TTOPN: 1,,(SIXBIT/TTY/) 0 0 NMSWT: 0 ;FILE NAME SWITCH FRMTSW: 0 ;FROM-TO SWITCH QDL: "! BLOCK 100. PDL: BLOCK 40 START: .OPEN TI,TTIPN .VALUE .OPEN TO,TTOPN .VALUE SETZM GOTONE TTINR: SETZM OUTP+1 SETZM OUTP+2 SETZB A,TOSSNM HRRM A,OUTP .IOT TO,[15] .IOT TO,[12] .IOT TO,[52] SETZM NMSWT SETOM FRMTSW MOVE Q,[-100,,QDL] MOVE P,[-40,,PDL] AGAST: .IOT TI,A ;ASSEMBLE ONE LINE OF INPUT CAIN A,^R ;REPEAT LAST DRAWING JRST REPETR CAIN A,30 JRST CNTRLX CAIN A,77 ;QUESTION HELP JRST HELPME CAIE A,177 ;RUBOUT JRST NOOUT POP Q,A CAIN A,"! JRST KILLIT .IOT TO,A CAMGE Q,[-100,,QDL] MOVE Q,[-100,,QDL] JRST AGAST NOOUT: PUSH Q,A SKIPL Q JRST KILLIT CAIE A,15 ;RETURN CARRIAGE JRST AGAST .IOT TO,[15] .IOT TO,[12] HRRZ Q,Q CAMN Q,QDL+1 JRST TTINR ;HE DID RET CAR ONLY MOVEI Q,QDL+1 AGAIN: SETZM B RLOP: MOVE A,(Q); GET A CHARACTER AOS Q CAIN A,40; TEST IT JRST SPACE CAIN A,72 ;COLON JRST COLON CAIN A,137 JRST ARROW CAIN A,15 JRST RETCR CAIN A,73 JRST SMCLN SUBI A,40 LSH B,F IOR B,A JRST RLOP; NOTHING SPECIAL, GET NEXT LFTJST: SKIPN B ;LEFT ADJUST ROUTINE POPJ P, TLNE B,770000 POPJ P, LSH B,F JRST LFTJST SPACE: PUSHJ P,SPCOUT JRST AGAIN SPCOUT: PUSHJ P,LFTJST SKIPN B POPJ P, SKIPE NMSWT; SKIP IF FIRST FILE NAME JRST NM2 SKIPE FRMTSW; SKIP IF 'TO' FILE NAME JRST TOOWRD MOVEM B,OUTP+1 JRST AGAINS TOOWRD: MOVEM B,INOP+1 JRST AGAINS NM2: SKIPE FRMTSW JRST TOWORD MOVEM B,OUTP+2 JRST AGAINS TOWORD: MOVEM B,INOP+2 JRST AGAINS AGAINS: SETOM NMSWT; SWITCH TO SECOND N POPJ P, COLON: PUSHJ P,LFTJST SKIPE FRMTSW JRST TODVC HLRM B,OUTP JRST AGAIN TODVC: HLRM B,INOP JRST AGAIN ARROW: PUSHJ P,SPCOUT SETOM FRMTSW SETZM NMSWT JRST AGAIN SMCLN: PUSHJ P,LFTJST SKIPE FRMTSW JRST TOSNM MOVEM B,TOSSNM JRST AGAIN TOSNM: MOVEM B,FRMSNM JRST AGAIN KILLIT: .IOT TO,[77] JRST TTINR RETCR: PUSHJ P,SPCOUT SKIPN OUTP+1 PUSHJ P,COPYF HRLZI F,7 CAMN F,OUTP PUSHJ P,COPYD SKIPN TOSSNM PUSHJ P,COPAR ALLOV: .SUSET [.SSNAM,,FRMSNM] .OPEN IN,INOP JRST OPINFL MOVEI A,+NPGS .CORE (A) .VALUE MOVE A,[-BUFL,,BUF] .IOT IN,A HRLI C,-NPGS MOVEI A,BUF MOVEI POS,BBUF MN1: PUSH P,C HRLI B,-NSLPP MOVEM POS,PSV1 MN2: MOVEM POS,PSV PUSH P,B PUSHJ P,GETLN POP P,B MOVE POS,PSV' ADDI POS,WDPSL AOBJN B,MN2 POP P,C MOVE POS,PSV1' ADDI POS,2000 AOBJN C,MN1 JRST FINSH GETLN: SOSL NT JRST REP MOVEM POS,OLDLIN' PUSHJ P,LINGT MOVEI B,2 MOVEM B,NT' POPJ P, REP: HRL B,OLDLIN HRR B,POS BLT B,WDPSL(POS) POPJ P, LINGT: HRLI A,-18. ;NUMBER OF WORDS/TV LINE MOVE C,[4000,,20] ;IMAGE+BLACK STRIPE MOVEM C,(POS) AOS POS LOOP2: MOVE C,(A) PUSH P,A PUSHJ P,WR POP P,A AOBJN A,LOOP2 POPJ P, WR: MOVE D,[440300,,E] MOVSI A,-32. LSH C,-4 LOOP: MOVEI B, TRNE C,1 MOVNI B,1 IDPB B,D LSH C,-1 AOBJN A,LOOP MOVE A,E LSH A,-4 DPB A,[242000,,2(POS)] LSH A,-20 DPB A,[042000,,2(POS)] LSHC E,28. MOVE A,E DPB A,[242000,,1(POS)] LSH A,-20 DPB A,[042000,,1(POS)] LSH F,-28. LSHC F,24. DPB F,[242000,,(POS)] LSH F,-20 DPB F,[042000,,(POS)] ADDI POS,3 POPJ P, REPETR: SKIPL GOTONE JRST TTINR ;HAVENT MADE ANY YET,CANT REPEAT IT FINSH: SETOM GOTONE' .CLOSE IN, MOVEI G,[SIXBIT /STARTING!/] PUSHJ P,TYPIT MOVE A,[NPGS,,] .CALL XGP JRST XGPLOS JRST TTINR XGPLOS: MOVEI G,[SIXBIT /XGP LOSSAGE!/] PUSHJ P,TYPIT JRST TTINR XGP: SETZ SIXBIT /XGPIM/ SETZ A TYPIT: .IOT TO,[15] .IOT TO,[12] MOVE F,TEMP MOVEM F,BYTPNT MORTP: ILDB A,BYTPNT CAIN A,1 POPJ P, ADDI A,40 .IOT TO,1 JRST MORTP OPINFL: MOVEI G,[SIXBIT /OPEN OF INPUT FAILED!/] JRST TTINN OPOUFL: MOVEI G,[SIXBIT /OPEN OF OUTPUT FAILED!/] .CLOSE IN, TTINN: PUSHJ P,TYPIT .OPEN ERRI,ERRO .VALUE TTINN1: .IOT ERRI,A CAIN A,14 JRST TTINR .IOT TO,A JRST TTINN1 ERRO: (SIXBIT /ERR/) 1 0 COPYF: MOVE F,INOP+1 MOVEM F,OUTP+1 MOVE F,INOP+2 MOVEM F,OUTP+2 POPJ P, COPYD: HRRZ F,INOP HRRM F,OUTP POPJ P, COPAR: MOVE F,FRMSNM MOVEM F,TOSSNM POPJ P, BYTPNT: 0 TEMP: 440600+G,,0 STATUS: 0 CNTRLX: .VALUE KILLCD KILLCD: ASCIZ /:KILL / HELPME: MOVEI D,EXPTBL TYPMRE: MOVE G,(D) AOS D SKIPN G JRST TTINR PUSHJ P,TYPIT JRST TYPMRE EXPTBL: 0 CONSTA VARIAB BUF: BLOCK BUFL ZZ=.&776000 LOC ZZ+2000 BBUF: END START