TITLE IPL JOB WTTIME==30. ;MAXIMUM WAITING TIME IN SECONDS FOR CLI INTERRUPT PLTC==1 ;PLT CHANNEL USRC==2 ;USR CHANNEL LPDL==40 ;PDL LENGTH LXYPDL==40 ;X,Y PDL LENGTH LSPDL==10 ;SCALE PDL LENGTH LCPDL==40 ;CHARACTER SET PDL LENGTH LDPDL==10 ;DIRECTION PDL LENGTH LPLTB==100 ;MINIMUM PLT BUFFER LENGTH .PU==20 ;PLOTTER PEN UP .PD==40 ;PLOTTER PEN DOWN .RT==1 .UP==10 .LT==2 .DN==4 .UR==.UP\.RT .UL==.UP\.LT .DL==.DN\.LT .DR==.DN\.RT PWIDTH==4000 Z=0 X=1 Y=2 SC=3 T=SC+1 A=5 B=A+1 C=B+1 D=C+1 E=D+1 F=E+1 P=17 XYP=P-1 SP=P-2 CP=P-3 DP=P-4 ;FLAGS IN LEFT HALF OF Z PENP==400000 ;1==>PEN DOWN, 0==>PEN UP NOPENF==200000 ;1==>NO PEN MODE AXCF==20000 ;1==>PLOTTING COORDINATE SYSTEM AXEF==10000 ;1==>EXPONENT FORMAT (SCIENTIFIC NOTATION) FOR AXIS LABELING AXSYME==4000 ;1==>AXIS HASH MARKS EXTENDED ON BOTH SIDES OF AXIS, EVEN IF AXSYMF IS 0 AXSYMF==2000 ;1==>AXIS HASH MARKS EXTENDED ON BOTH SIDES OF AXIS AXPLTF==1000 ;1==>AXIS PLOTTING LNGF==400 ;1==>ONLY WANT LENGTH, DON'T DO ANY PLOTTING SVSF==200 ;1==> X .GE. Y IN MAGNITUDE FOR VECTOR (SEE SVST1) SCPSTF==100 ;1==>PROCESSING PSTART OR PSTARTL SCPLF==40 ;1==>PSTRTL SCCASF==20 ;1==>SCOPE LOWER CASE SCDIRF==10 ;1==>SCOPE VERTICAL MODE SNXTMF==4 ;1==>NEXT SCOPE MODE A LOSER SCXF==2 ;1==>NEW SCOPE X POSITION KNOWN AND NOT PLOTTED SCYF==1 ;1==>NEW SCOPE Y POSITION KNOWN AND NOT PLOTTED START: .OPEN PLTC,PLTO .LOGOUT ;LOGOUT IF CAN'T GET PLOTTER .SUSET [.SMASK,,[400000]] ;ENABLE CLI INTERRUPT MOVEI 17,30.*WTTIME .SLEEP 17, ;WAIT FOR CLI INTERRUPT LOGOUT: .LOGOUT ;LOGOUT IF NO CLI INTERRUPT OCCURS WITHIN MAXIMUM WAITING TIME PLTO: 3,,(SIXBIT /PLT/) ;BLOCK ASCII MODE OUTPUT SIXBIT /IPLJOB/ SIXBIT /OUTPUT/ CLAO: 6,,(SIXBIT /CLA/) ;BLOCK IMAGE MODE INPUT SIXBIT /IPLJOB/ SIXBIT /INPUT/ PDL: BLOCK LPDL XYPDL: BLOCK LXYPDL ;X,Y PDL SPDL: BLOCK LSPDL ;SCALE PDL CPDL: BLOCK LCPDL ;CHARACTER SET PDL DPDL: BLOCK LDPDL ;DIRECTION PDL ZZ==. LOC 41 JSR UUOH JSR INT LOC ZZ USRO: (SIXBIT /USR/) ;WORD AT A TIME MODE, SET TO BLOCK MODE IF DEFINING CHARACTER SET UNAME: 0 ;UNAME OF IPL USER JNAME: 0 ;JNAME OF IPL USER UUOH: 0 MOVEM A,UUOA LDB A,[331100,,40] CAIL A,UUOMIN CAIL A,NUUO JRST ILUUO JRST @UUOTAB-UUOMIN(A) ;UUOTAB: REPEAT NUUO-UUOMIN,CONC UUO,\UUOMIN+.RPCNT, UUORET: MOVE A,UUOA JRST 2,@UUOH UUOA: 0 DEFINE CONC A,B A!B!TERMIN UUOMIN==1 NUUO==UUOMIN DEFINE UUOGEN U .!U=NUUO_33 IF2,CONC UUO,\NUUO,==A!U NUUO==NUUO+1 TERMIN INT: 0 0 EXCH T,INT TRNE T,400000 JRST CLI ;CLI INTERRUPT TRNE T,20000 JRST MPV ;MEMORY PROTECTION VIOLATION TRNE T,200000 JRST PDLOV ;PDL OVERFLOW TRNN T,1000 .LOGOUT ;LOGOUT IF STRANGE INTERRUPT USRMPV: TLNE Z,SCPSTF ;MEMORY PROTECTION VIOLATION ON USR DEVICE .DISMISS [PSCPDC] ;HAPPENED WHILE PROCESSING PSTART OR PSTARTL TLNE Z,AXPLTF .DISMISS [AXDONE] ;HAPPENED WHILE READING CRUFT FOR AXIS PLOTTING MOVE T,@INT+1 ;HAPPENED WHILE DEFINING CHARACTER OR CHARACTER SET EXCH T,INT SETZM @INT JRST AOSDIS ILUUO: SKIPA C,[ASCII \ILUUO\] ;WRITE OUT "ILUUO" ON PLOTTER PDLOV: MOVE C,[ASCII \PDLOV\] ;WRITE OUT "PDLOV" ON PLOTTER LUZ: MOVEI SC,3 MOVEI Z,0 MOVEI A,NASC HRRM A,CPLOT MOVE A,LOGOUT ;THEN LOGOUT MOVEM A,RDWD1 JRST RDCH MPV: SOS T,INT+1 MOVE T,(T) TLZ T,777 CAME T,[IDPB PLTBP] JRST MPV1 MPVC: MOVSI T,-PLTL ;OTHERWISE, PLOT OUT WHOLE BUFFER PUSHJ P,PLT3 ;RESET PLTBP MOVE T,INT ;AND RETURN TO THE IDPB .DISMISS INT+1 MPV1: CAME T,[IDPB CHDBYT] .LOGOUT PUSHJ P,COREXP MOVE T,INT DPB T,CHDBYT AOSDIS: AOS INT+1 .DISMISS INT+1 CLI: .OPEN CLAO .LOGOUT ;LOGOUT IF CLA OPEN FAILS MOVE A,[-2,,UNAME] .IOT A ;GET UNAME,JNAME OF IPL USER MOVE P,[-LPDL,,PDL-1] MOVEI SC,2 MOVEI Z,1 PUSHJ P,INIT1 MOVEI Y,4000 .SUSET [.SMASK,,[221440]] ;ENABLE INTERRUPTS, INCLUDING ALL REASONABLE ONES OF CLASS 2 .DISMISS [RDWD] RDWD: PUSHJ P,PLTOUT ;OUTPUT PLT BUFFER BEFORE GETTING NEXT COMMAND RDWD1: HRROI A,C .IOT A JUMPL A,LOGOUT ;LOGOUT IF END OF FILE REACHED TRZE C,1 JRST PSPEC RDCH: JUMPE C,RDWD MOVEI B,0 RDCH1: LSHC B,7 JUMPE B,RDCH1 PUSH P,[RDCH] CPLOT: MOVE D,NASC(B) ;PLOT CHARACTER IN B, DON'T USE C CPLOTA: TLNE D,40 JRST @D TLNE D,7300 ;SEE IF CHARACTER VECTOR-DEFINED OR SIX-BIT-DEFINED JRST CPLOT1 ;YES NEXTI: ILDB A,D JUMPE A,CPOPJ PUSH P,[NEXTI] TRNN A,10 JRST PEN GODIRS: MOVE B,SC ;DIRECTION IN A, SC FOR NUMBER OF STEPS GODIRA: XCT XTAB-10(A) XCT YTAB-10(A) GODIR: TLNE Z,LNGF ;DIRECTION IN A, NUMBER OF STEPS IN B POPJ P, MOVE A,CVRTAB-10(A) CVRROT: ROT A,0 ANDI A,17 IDPB A,PLTBP SOJG B,.-1 POPJ P, PEN: TLNE Z,LNGF ;EXECUTE PEN COMMAND POPJ P, CAIN A,DD JRST DOT CAIN A,PD JRST PENDN CAIN A,PU JRST PENUP ADOT: TLNE Z,LNGF ;COMMAND 70 POPJ P, DOT: PUSHJ P,PENDN ;PLOT A DOT MOVE A,[DT] DOT1: ILDB B,A JUMPE B,PENUP MOVE B,CVRTAB-10(B) IDPB B,PLTBP JRST DOT1 PSPEC: PUSH P,[RDWD] SPEC: TRZN C,2 ;PLOT COMMAND IN C JRST XYFORM TRZN C,4 JRST DEFCH TRZN C,10 JRST PSCOPE TRZN C,20 JRST AXPLOT TRZN C,40 JRST SET SPCHAR: MOVEI B,0 ;PLOT SPECIAL CHARACTERS IN C JUMPE C,CPOPJ LSHC B,6 JUMPE B,.-1 PUSH P,[SPCHAR] SPLOT: MOVE A,B ;PLOT SPECIAL CHARACTER IN B, DON'T USE C ANDI A,7 LSH B,-3 JRST .+1(B) JRST SZERO JRST ADSC JRST SUBSC JRST DIR JRST PORP JRST MDSC JRST GO SSEVEN: JRST .+1(A) ;COMMANDS 70-77 JRST ADOT JRST OLDASC JRST NEWASC JRST CHI JRST CHI JRST CHI JRST CHI INIT: MOVEI SC,1 ;COMMAND 77: INITIALIZE (X=Y=0, SC=1, DIRECTION=0, SCOPE TO PARAMETER MODE, RESET PDL'S) AND Z,[LNGF,,] INIT1: SETZB X,Y MOVEI T,SPARAM HRRM T,NXTMOD MOVE XYP,[-LXYPDL,,XYPDL-1] MOVE SP,[-LSPDL,,SPDL-1] MOVE CP,[-LCPDL,,CPDL-1] MOVE DP,[-LDPDL,,DPDL-1] DPB Z,[20300,,CVRROT] JRST PENUP1 SZERO: XCT SZEROT-1(A) ;COMMANDS 1-7 POPJ P, SZEROT: JRST PENDN JRST SUBSCR JRST PENUP JRST SUPSCR ENOPEN: TLO Z,NOPENF ;COMMAND 5: ENTER MODE IN WHICH NO PEN COMMANDS ARE EXECUTED LNOPEN: TLZ Z,NOPENF ;COMMAND 6: LEAVE THIS MODE ZEROSC: MOVEI SC,0 ;COMMAND 7: ZERO SCALE PENDN: TLNN Z,NOPENF+LNGF ;PEN DOWN (COMMAND 1) TLOE Z,PENP POPJ P, MOVEI B,.PD IDPB B,PLTBP POPJ P, NPENUP: TLOA Z,NOPENF PENUP: TLNN Z,NOPENF+LNGF ;PEN UP (COMMAND 3) TLZN Z,PENP POPJ P, PENUP1: MOVEI B,.PU IDPB B,PLTBP POPJ P, SUBSCR: MOVNI B,3 ;SUBSCRIPT (COMMAND 2) JRST VSCY SUPSCR: MOVEI B,3 ;SUPERSCRIPT (COMMAND 4) JRST VSCY ADSC: MOVEI B,1 ;COMMANDS 10-17: ADD TO SCALE LSH B,(A) ADD SC,B POPJ P, SUBSC: MOVEI B,1 ;COMMANDS 20-27: SUBTRACT FROM SCALE LSH B,(A) SUB SC,B POPJ P, DIR0: MOVEI A,0 DIR: MOVEI T,PWIDTH ;COMMANDS 30-37: CHANGE DIRECTION JUMPN A,DIRA TRZE Z,4 SUBM T,X MOVN A,Z ANDI A,3 DIRA: HRRZ B,A ANDI A,3 TRNN Z,4 XCT DIRC1(A) XCT DIRC2(A) TRNE Z,4 XCT DIRC1(A) TRNE B,4 SUBM T,X ADD A,Z ANDI A,3 XOR Z,B TRZ Z,777773 ADD Z,A DPB Z,[20300,,CVRROT] POPJ P, DIRC1: JFCL EXCH X,Y SUBM T,X EXCH X,Y DIRC2: JFCL SUBM T,Y SUBM T,Y SUBM T,X PORP: XCT PORPT(A) ;COMMANDS 40-47 POPJ P, PORPT: JRST PUSHXY PUSHD: PUSH DP,Z ;COMMAND 41: PUSH DIRECTION PUSHS: PUSH SP,SC ;COMMAND 42: PUSH SCALE JRST PUSHC JRST POPXY JRST POPD POPS: POP SP,SC ;COMMAND 46: POP SCALE JRST POPC PUSHXY: PUSH XYP,X ;COMMAND 40: PUSH COORDINATES PUSH XYP,Y POPJ P, POPXY: PUSH P,C ;COMMAND 44: POP COORDINATES POP XYP,D POP XYP,C PUSHJ P,GOXY POPCJ: POP P,C POPJ P, POPD: PUSHJ P,DIR0 ;COMMAND 45: POP DIRECTION POP DP,A JRST DIR PUSHC: PUSH CP,CPLOT ;COMMAND 43: PUSH CHARACTER SET PUSH CP,HTAB PUSH CP,LF PUSH CP,VTAB1 POPJ P, POPC: POP CP,VTAB1 ;COMMAND 47: POP CHARACTER SET POP CP,LF POP CP,HTAB POP CP,CPLOT POPJ P, MDSC: XCT MDSC1(A) ;COMMANDS 50-57 POPJ P, MDSC1: ASH SC,1 ;COMMAND 50: MULTIPLY SCALE BY 2 IMULI SC,3 ; 51: 3 IMULI SC,5 ; 52: 5 IMULI SC,7 ; 53: 7 ASH SC,-1 ;COMMAND 54: DIVIDE SCALE BY 2 IDIVI SC,3 ; 55: 3 IDIVI SC,5 ; 56: 5 IDIVI SC,7 ; 57: 7 GO: TRO A,10 ;COMMANDS 60-67: GO ONE SCALED UNIT IN SPECIFIED DIRECTION JRST GODIRS OLDASC: MOVEI A,OASC ;COMMAND 71: USE OLD ASCII CHARACTER SET HRRM A,CPLOT MOVEI A,9 HRRM A,LF MOVEI A,40 HRRM A,HTAB HRRM A,VTAB1 POPJ P, NEWASC: MOVEI A,NASC ;COMMAND 72: USE NEW ASCII CHARACTER SET CHCAR0: HRRM A,CPLOT MOVEI A,6*10 HRRM A,HTAB MOVEI A,10. HRRM A,LF MOVEI A,10.*10 HRRM A,VTAB1 POPJ P, CHI: ASH A,7 ;COMMANDS 73-76: USE USER DEFINED CHARACTER SET I ADDI A,CH0-3*200 HRRM A,CPLOT POPJ P, DEFCH: ;DEFINE CHARACTER / CHARACTER SET LDB A,[31100,,C] ;GET CHARACTER TO BE DEFINED ADDI A,CH0 TRNN C,1770 JRST DEFCHS LDB T,[140200,,C] ;GET CODE MOVE T,DCHT(T) JUMPE T,DEFEQ .OPEN USRC,USRO POPJ P, TRZ C,37777 CAIE T,6 JRST DCH1 LDB D,[160400,,C] ;GET TOP 4 BITS OF BYTE POINTER IDIVI D,3 SKIPE E TRO C,20000 DCH1: MOVE D,T MOVSS C DPB D,[300600,,C] PUSHJ P,DCH2 DRELOC: HRRZ A,CHDBYT HRRM A,CPLTBP HRRM A,PLT2A AOS A HRRM A,PLT3 DREL1: SUBI A,PLTE HRRM A,MPVC ADDI A,LPLTB JUMPLE A,CPOPJ PUSHJ P,COREXP MOVE A,MPVC SUBI A,2000 HRRM A,MPVC DRELE: .CLOSE USRC, POPJ P, COREXP: AOS .+1 .CORE PLTE_-12 JRST .-1 MOVEI T,2000 ADDM T,DREL1 POPJ P, DCHT: 4 14 6 0 DEFC: MOVEI C,0 EXCH C,(A) TLZ C,77 ;IGNORE INDIRECT AND INDEX BITS LDB D,[300600,,C] ;GET BYTE LENGTH JUMPE D,DEFEQ1 CAIE D,4 CAIN D,14 JRST DCH2 CAIN D,6 POPJ P, DCH2: DPB D,[300600,,CHDBYT] MOVE T,CHDBYT MOVEM T,(A) IBP C .ACCESS USRC,C MOVEI E,0 JRST DCH2B DCH2A: IBP C CAIE E,-B(C) DCH2B: .IOT USRC,B HRRI C,B LDB T,C IDPB T,CHDBYT CAIN D,14 ANDI T,7776 JUMPN T,DCH2A POPJ P, DEFEQ1: TLZA C,-1 DEFEQ: HLRES C ADDI C,CH0 CAIL C,OASC CAIL C,CH0+4*200 POPJ P, ;CHARACTER NOT IN RANGE POP C,(A) POPJ P, DEFCHS: MOVSI T,2 ;BLOCK MODE BIT XORM T,USRO .OPEN USRC,USRO POPJ P, XORM T,USRO HLRZM C,T .ACCESS USRC,T HRLI A,-200 MOVE T,A .IOT USRC,T JUMPE T,DRELE .OPEN USRC,USRO POPJ P, PUSHJ P,DEFC AOBJN A,.-1 JRST DRELOC CHDBYT: LASTBY SET: HLRE B,C ;HALF-WORD FORMAT LSH C,-6 ANDI C,7777 CAIG C,MXSET XCT SETTBL(C) POPJ P, SETTBL: HRRZM B,SC ;0: SET SCALE HRRM B,HTAB ;1: SET HORIZONTAL TAB HRRM B,LF ;2: SET LINE FEED HRRM B,VTAB1 ;3: SET VERTICAL TAB MOVEM B,X ;4: SET X MOVEM B,Y ;5: SET Y JRST GOX ;6: GO TO X=B JRST GOY ;7: GO TO Y=B JRST VECTX ;10: PLOT VECTOR (B,0) JRST VECTY ;11: PLOT VECTOR (0,B) JRST VSCX ;12: PLOT VECTOR (B*SC,0) JRST VSCY ;13: PLOT VECTOR (0,B*SC) MXSET==.-SETTBL ;SIMULATE 340 PSCOPE: PUSH SP,SC PUSH DP,Z PUSHJ P,PUSHC LDB B,[110700,,C] SKIPN B SKIPA D,[40,,SCDOT] XCT CPLOT MOVEM D,PTCHAR PUSH P,X PUSH P,Y TLO Z,LNGF SETZB X,Y MOVEI SC,1 PUSHJ P,CPLOTA MOVE SC,(SP) MOVE A,X MOVE B,Y POP P,Y POP P,X TLZ Z,LNGF JUMPE A,PSCP1 ;IF WIDTH 0, NOT A REAL CHARACTER JUMPN B,PSCP1 ;IF HEIGHT NOT 0, NOT A REAL CHARACTER SUBI A,2 ;CORRECT FOR 2-UNIT SPACE BETWEEN CHARACTERS MOVEI B,6 ;SET UP REAL HEIGHT PSCP1: MOVEM A,PTCHX MOVEM B,PTCHY MOVEI A,SCOPEC ;SET UP SCOPE CHARACTER SET PUSHJ P,CHCAR0 TRNE C,400 MOVEI SC,2 MOVEM SC,SCSC MOVE A,SC IMULI A,1777 MOVEM A,SCEDGE TRNE C,200 PUSHJ P,DIR0 TRNE C,100 PUSHJ P,SCINIT PSC1: TLNE Z,SNXTMF JRST PSCPD ;RETURN IF NEXT MODE A LOSER TRNE C,40 JRST PSTART MOVE F,C PUSHJ P,NXTMOD JRST PSCPD TRNN C,20 JRST PSCPD SCRDWD: PUSHJ P,PLTOUT ;OUTPUT PLT BUFFER BEFORE GETTING NEXT SCOPE WORD HRROI A,F .IOT A JUMPL A,LOGOUT PUSHJ P,NXTMOD JRST PSCPD MOVSS F PUSHJ P,NXTMOD JRST PSCPD JRST SCRDWD PSTART: .OPEN USRC,USRO ;SIMULATE .DSTART OR .DSTRTL JRST PSCPD TLO Z,SCPSTF TRNE C,20 TLOA Z,SCPLF TLZ Z,SCPLF HLRZM C,T .ACCESS USRC,T .IOT USRC,A JUMPL A,SCNLNK ;NO LINK PST0: HRRZM A,PSTLNK HLRZS A JUMPE A,PSTLK .ACCESS USRC,A .IOT USRC,A TLNN Z,SCPLF JRST PST0A SOS A .ACCESS USRC,A .IOT USRC,A PST0A: JUMPE A,PSTLK PST1: HLROM A,PSTCNT TLNN Z,SCPLF AOS A .ACCESS USRC,A PST2: .IOT USRC,F PUSHJ P,NXTMOD JRST PSTLK1 MOVSS F PUSHJ P,NXTMOD JRST PSTLK1 PUSHJ P,PLTOUT AOSE PSTCNT JRST PST2 PSTLK: SKIPN A,PSTLNK JRST PSCPDC .ACCESS USRC,A .IOT USRC,A JRST PST0 PSTLK1: PUSHJ P,SCINIT JRST PSTLK SCNLNK: SETZM PSTLNK JRST PST1 PSCPDC: .CLOSE USRC, TLZ Z,SCPSTF PSCPD: POP SP,SC PUSHJ P,POPC JRST POPD SCINIT: MOVEI T,SPARAM ;SIMULATE CONO DIS,100 HRRM T,NXTMOD TLZ Z,SNXTMF+SCCASF+SCDIRF POPJ P, PTCHAR: 0 ;CHARACTER TO BE USED FOR POINT PLOTTING PTCHX: 0 ;LENGTH OF PT CHARACTER PTCHY: 0 ;HEIGHT OF PT CHARACTER SCSC: 0 ;SCOPE SCALE 0 SCX: 0 ;X COORDINATE OF SCOPE POSITION SCY: 0 ;Y COORDINATE OF SCOPE POSITION SCEDGE: 0 ;COORDINATE OF EDGE OF SCOPE (1777*SCSC) PSTLNK: 0 ;NEXT LINK IN PSTART OR PSTRTL PSTCNT: 0 ;BLKO COUNT FOR PSTART OR PSTRTL NXTMOD: JRST SPARAM ;SCOPE PARAMETER MODE SPARAM: TLNN F,100 JRST SNOSC LDB T,[260200,,F] MOVE SC,SCSC ASH SC,(T) ;SET SCALE SNOSC: TLNN F,10 JRST SNOINT TLNE F,7 TLZA Z,NOPENF ;IF NON-ZERO INTENSITY, LEAVE NO PEN MODE PUSHJ P,NPENUP ;IF ZERO INTENSITY, PUT PEN UP AND ENTER NO PEN MODE SNOINT: TLNE F,2000 JRST SCDUN ;IF STOP FLAG, RETURN NEWMOD: LDB T,[370300,,F] MOVE T,SCMODT(T) JUMPL T,SCDUN ;IF ILLEGAL MODE, RETURN SNXMOD: HRRM T,NXTMOD POPJ1: AOS (P) POPJ P, SCDUN: TLZ Z,NOPENF ;LEAVE NO PEN MODE TLO Z,SNXTMF ;SET NEXT MODE LOSES FLAG JRST PENUP ;RETURN WITH PEN UP, DON'T SKIP SCMODT: SPARAM ;PARAMETER MODE SPOINT ;POINT MODE -1 SCHAR ;CHARACTER MODE SVECT ;VECTOR MODE SVECTC ;VECTOR CONTINUE MODE SINC ;INCREMENT MODE -1 ;SCOPE POINT MODE SPOINT: MOVS T,F ANDI T,1777 IMUL T,SCSC TLNE F,200000 JRST SPTY SPTX: MOVEM T,SCX TLO Z,SCXF JRST SPT1 SPTY: MOVEM T,SCY TLO Z,SCYF SPT1: TLNN F,2000 ;INTENSIFY? JRST NEWMOD ;NO, GET NEXT MODE SPTINT: PUSHJ P,GETSXY ;YES PUSH P,[NEWMOD] ;SET UP FOR RETURN TO GET NEXT MODE TLNE F,100000 ;CHECK IF NEXT MODE VECTOR, VECTOR CONTINUE, OR INCREMENT JRST SPT2 MOVE A,PTCHX IMUL A,SC MOVE B,PTCHY IMUL B,SC ASH A,-1 ASH B,-1 SUB C,A SUB D,B PUSHJ P,USGOXY MOVE D,PTCHAR JRST CPLOTA ;PLOT POINT CHARACTER, RETURN TO GET NEXT MODE SPT2: PUSHJ P,USGOXY ;GO TO NEW COORDINATES SCDOT: PUSHJ P,PENDN ;PLOT DOT, LEAVING PEN DOWN EXCH SC,ONE MOVE D,[DT] PUSHJ P,NEXTI EXCH SC,ONE POPJ P, ONE: 1 ;SAVE SCALE HERE GETSXY: MOVE C,X ;GET SCOPE COORDINATES MOVE D,Y TLNE Z,SCXF MOVE C,SCX TLNE Z,SCYF MOVE D,SCY POPJ P, ;SCOPE CHARACTER MODE SCHAR: PUSHJ P,GETSXY PUSHJ P,USGOXY TLNE Z,SCDIRF PUSHJ P,SCVT1 HLLO C,F SCH1: MOVEI B,0 LSHC B,6 TLNE Z,SCCASF TRO B,100 PUSHJ P,CPLOT TRNE C,-1 JRST SCH1 SCHARE: AOS (P) TLNN Z,SCDIRF POPJ P, JRST SCHZ1 ;SCOPE VECTOR MODE SVECT: TLNN F,77577 JRST SVECTE ;IF (0,0), EXIT PUSHJ P,GETSXY MOVEM C,SCX MOVEM D,SCY LDB A,[220700,,F] LDB B,[320700,,F] IMUL A,SC IMUL B,SC TLNE F,200 ;SIGN-MAGNITUDE LOSSAGE MOVNS A TLNE F,100000 MOVNS B TLNN F,200000 ;INTENSIFY? JRST SVECTN ;NO, GET NEW COORDINATES, EXIT TLNE Z,SCXF+SCYF ;YES JRST SVST ;MUST GO TO NEW COORDINATES ADD C,A ;ALREADY THERE ADD D,B SVECT1: PUSHJ P,PENDN PUSHJ P,GOXY SVECTE: TLNN F,400000 JRST POPJ1 SGPAR: MOVEI T,SPARAM ;ESCAPE TO PARAMETER MODE JRST SNXMOD SVECTN: ADDM A,SCX ADDM B,SCY SVINC: TLO Z,SCXF+SCYF JRST SVECTE SVST: ADDM A,SCX ADDM B,SCY PUSHJ P,SVST1 JRST SVECT1 SVCST: EXCH C,SCX EXCH D,SCY SVST1: LDB T,[220700,,F] ;VECTORS DON'T DISPLAY CURRENT POINT LDB A,[320700,,F] CAML T,A TLOA Z,SVSF EXCH T,A MOVE B,T ASHC A,-1 DIV A,T LSH A,1 MUL A,SC ;DON'T CHANGE TO MULM--USES SETZ HACK MOVE B,SC TLZE Z,SVSF EXCH A,B TLNE F,200 MOVNS A TLNE F,100000 MOVNS B ADD C,A ADD D,B PUSHJ P,USGOXY MOVE C,SCX MOVE D,SCY POPJ P, ;SCOPE VECTOR CONTINUE MODE SVECTC: TLNN F,77577 JRST SGPAR ;IF (0,0), EXIT PUSHJ P,GETSXY MOVEM C,SCX MOVEM D,SCY LDB A,[220700,,F] LDB B,[320700,,F] MOVE E,SCEDGE TLNN F,200 SUBM E,C HRLZS C SKIPN A TLOA A,377777 IDIVM C,A TLNN F,100000 SUBM E,D HRLZS D SKIPN B TLOA B,377777 IDIVM D,B CAMLE A,B MOVE A,B AOS E,A LDB C,[220700,,F] LDB D,[320700,,F] IMUL C,E IMUL D,E HLRZS C HLRZS D TLNE F,200 MOVNS C TLNE F,100000 MOVNS D ADD C,SCX ADD D,SCY TLNN F,200000 ;INTENSIFY? JRST SVCTCN ;NO TLNE Z,SCXF+SCYF ;YES PUSHJ P,SVCST ;MUST GO TO NEW COORDINATES SVCTC1: PUSHJ P,PENDN ;ALREADY THERE PUSHJ P,GOXY MOVE C,X MOVE D,Y SVCTCN: CAIE C,0 CAMN C,SCEDGE TDC C,SCEDGE MOVEM C,SCX CAIE D,0 CAMN D,SCEDGE TDC D,SCEDGE MOVEM D,SCY TLO Z,SCXF+SCYF JRST SGPAR ;SCOPE INCREMENT MODE SINC: PUSHJ P,GETSXY TLNN F,200000 ;INTENSIFY? JRST SINCNI ;NO TLNE Z,SCXF+SCYF ;YES PUSHJ P,USGOXY MOVE T,[420400,,F] MOVEI E,4 SINCI: ILDB A,T SKIPN A,INCTAB(A) JRST SINCI1 PUSHJ P,GODIRS PUSHJ P,PENDN SINCI1: SOJG E,SINCI JRST SVECTE SINCNI: MOVE T,[420400,,F] MOVEI E,4 MOVEM X,SCX MOVEM Y,SCY MOVE X,C MOVE Y,D MOVE B,SC SINCN1: ILDB A,T SKIPN A,INCTAB(A) JRST SINCN2 XCT XTAB-10(A) XCT YTAB-10(A) SINCN2: SOJG E,SINCN1 EXCH X,SCX EXCH Y,SCY JRST SVINC INCTAB: 0 0 UP DN 0 0 UP DN RT RT UR DR LT LT UL DL .INSRT SYSENG;AXPLOT > XYFORM: MOVS D,C ;X,Y FORMAT COMMANDS MOVE B,D ANDI B,3 ASH C,-24 ASH D,-24 JRST .+1(B) JRST SETXY JRST GOXY JRST VECTXY VSCXY: IMUL C,SC ;PLOT VECTOR (C*SC,D*SC) IMUL D,SC JRST VECTXY SETXY: MOVEM C,X ;SET (X,Y) TO (C,D) MOVEM D,Y CPOPJ: POPJ P, USGOXY: PUSHJ P,PENUP SGOXY: TLZ Z,SCXF+SCYF ;GO TO (C,D) GOXY: SUB C,X SUB D,Y VECTXY: ADD X,C ;PLOT VECTOR (C,D) ADD Y,D TLNE Z,LNGF POPJ P, SKIPGE C SKIPA A,CVRTAB+LT-10 MOVE A,CVRTAB+RT-10 ROT A,@CVRROT ANDI A,17 MOVMS C SKIPGE D SKIPA B,CVRTAB+DN-10 MOVE B,CVRTAB+UP-10 ROT B,@CVRROT ANDI B,17 MOVMS D CAMLE C,D JRST VECT1 JUMPE D,CPOPJ EXCH C,D EXCH A,B VECT1: MOVE E,C ASHC D,-1 DIV D,C MOVSI E,100000 VECT2: ADD E,D MOVE T,A TLZE E,200000 TDO T,B IDPB T,PLTBP SOJG C,VECT2 POPJ P, VSCX: IMUL B,SC ;PLOT VECTOR (B*SCALE,0) JRST VECTX GOX: SUB B,X ;GO TO (B,Y) VECTX: JUMPE B,CPOPJ ;PLOT VECTOR (B,0) ADD X,B MOVEI A,RT JUMPGE B,GODIR MOVNS B MOVEI A,LT JRST GODIR VSCY: IMUL B,SC ;PLOT VECTOR (0,B*SC) JRST VECTY GOY: SUB B,Y ;GO TO (X,B) VECTY: JUMPE B,CPOPJ ;PLOT VECTOR (0,B) ADD Y,B MOVEI A,UP JUMPGE B,GODIR MOVNS B MOVEI A,DN JRST GODIR CPLOT1: PUSH P,C MOVEM D,TEMPBP' TLNN D,1000 ;SEE IF CHARACTER SIX-BIT-DEFINED JRST CSPLOT ;YES CVPLOT: ILDB T,TEMPBP ;ROUTINE FOR INTERPRETING VECTOR-DEFINED CHARACTERS TRNE T,1 PUSHJ P,PENDN TRZN T,1 PUSHJ P,PENUP JUMPE T,POPCJ LDB C,[60500,,T] LDB D,[10500,,T] TRNE C,20 ORCMI C,17 TRNE D,20 ORCMI D,17 IMUL C,SC IMUL D,SC TRNE T,4000 JRST CVPL1 SKIPL C AOS C SKIPL D AOS D ASH C,-1 ASH D,-1 CVPL1: PUSHJ P,VECTXY JRST CVPLOT CSPLOT: ILDB B,TEMPBP ;ROUTINE FOR INTERPRETING SIX-BIT-DEFINED CHARACTERS JUMPE B,POPCJ PUSHJ P,SPLOT JRST CSPLOT CNTRL: MOVE D,[CTL] ;CONTROL CHARACTER PUSH P,B PUSHJ P,NEXTI POP P,B TRO B,100 JRST CPLOT BACKSP: JUMPLE X,CPOPJ ;BACKSPACE MOVNI B,6 IMUL B,SC JRST VECTX HTAB: MOVEI B,6*10 ;HORIZONTAL TAB IMUL B,SC MOVE A,B IDIVM X,B AOS B IMUL B,A JRST GOX LF: MOVNI B,10. ;LINE FEED IMUL B,SC JRST VECTY VTAB: JUMPLE Y,CPOPJ ;VERTICAL TAB VTAB1: MOVEI B,10.*10 IMUL B,SC MOVE A,B SOS B IDIVM Y,B IMUL B,A JRST GOY FF: ANDI Y,3777 ;FORM FEED ADDI Y,4400 MOVEI B,4000 JRST GOY CR0: MOVEI B,0 ;CARRIAGE RETURN JRST GOX SCSHFO: TLOA Z,SCCASF ;SCOPE SHIFT OUT SCSHFI: TLZ Z,SCCASF ;SCOPE SHIFT IN POPJ P, SCESC: MOVEI T,SCHARE-1 ;SCOPE ESCAPE CHARACTER MOVEM T,(P) ;SGPAR SKIPS JRST SGPAR SCHORZ: TLZN Z,SCDIRF ;SCOPE HORIZONTAL POPJ P, SCHZ1: MOVEI A,3 JRST DIR SCVERT: TLOE Z,SCDIRF ;SCOPE VERTICAL POPJ P, SCVT1: MOVEI A,1 JRST DIR DEFINE CVTBG D,A W==0 IRP B,,[A] W==W_4+B TERMIN CVTB!D=.OP W,8 CVTB!D TERMIN CVRTAB: CVTBG RT,[.RT,.UP,.LT,.DN,.LT,.DN,.RT,.UP] CVTBG UP,[.UP,.LT,.DN,.RT,.UP,.LT,.DN,.RT] CVTBG LT,[.LT,.DN,.RT,.UP,.RT,.UP,.LT,.DN] CVTBG DN,[.DN,.RT,.UP,.LT,.DN,.RT,.UP,.LT] CVTBRT\CVTBUP CVTBUP\CVTBLT CVTBLT\CVTBDN CVTBDN\CVTBRT XTAB: ADD X,B JFCL SUB X,B JFCL ADD X,B SUB X,B SUB X,B ADD X,B YTAB: JFCL ADD Y,B JFCL SUB Y,B ADD Y,B ADD Y,B SUB Y,B SUB Y,B LENGTH: TLO Z,LNGF ;GET NET LENGTH AND HEIGHT OF CHARACTER IN B PUSH P,X PUSH P,Y PUSHJ P,CPLOT MOVE A,X MOVE B,Y POP P,X POP P,Y TLZ Z,LNGF SUB A,X SUB B,Y POPJ P, ;AND RETURN RESULTS IN A AND B RESPECTIVELY PLTOUT: MOVE T,PLTBP ;OUTPUT CURRENT BUFFER OF PLOTTER COMMANDS TO PLT DEVICE IN BLOCK MODE MOVEI A,0 ;LAST WORD MUST BE FILLED OUT WITH 0'S PLT1: TLNN T,760000 JRST PLT2 IDPB A,T JRST PLT1 PLT2: MOVNS T PLT2A: MOVSI T,PLTBUF-1(T) JUMPE T,CPOPJ PLT3: HRRI T,PLTBUF .IOT PLTC,T MOVE T,CPLTBP MOVEM T,PLTBP POPJ P, UUOTAB: REPEAT NUUO-UUOMIN,CONC UUO,\UUOMIN+.RPCNT, VARIABLES CONSTANTS CPLTBP: 700,,PLTBUF-1 PLTBP: IPLTBP ;BUFFER BYTE POINTER DEFINE TBGN A3,A4 A3!A4 IF1,A3!A4==0 TERMIN OASC: REPEAT 200,TBGN OC,\.RPCNT REPEAT 200,TBGN OCL,\.RPCNT NASC: REPEAT 140,TBGN NC,\.RPCNT REPEAT 40,TBGN NCL,\.RPCNT+100 CH0: BLOCK 1000 SCOPEC: REPEAT 100,TBGN SC,\.RPCNT REPEAT 100,TBGN SCL,\.RPCNT AXC: REPEAT 100,TBGN AX,\.RPCNT DEFINE I A1,A5,A2 A1!A5=. IRP A,,[A2] A TERMIN 0 TERMIN DEFINE J A1,A5,A2 A1!A5=<.&770000777777>\1400000000 IRP A,,[A2] A TERMIN 0 0 0 0 TERMIN DEFINE TBGN2 A NC!A=40,,CNTRL TERMIN DEFINE AEQB A1,A2,B1,B2 A1!A2=B1!B2 TERMIN DD==1 PU==2 PD==4 RT==10 UP==11 LT==12 DN==13 UR==14 UL==15 DL==16 DR==17 .BYTE 4 DT: IRP A,,[UP,DR,LT,LT,UR,DN,DN,UL,RT,RT,DL,UP,0] \A TERMIN CTL: IRP A,,[DL,PD,UP,UP,UP,UP,UP,UP,UP,UP,RT,RT,RT,RT,RT,PU,DL,DL,DL,DL,DN,DN,DN,0] \A TERMIN ; I NC,\"A,[PD,UP,UP,UP,UP,UR,UR,DR,DR,DN,DN,LT,LT,LT,LT,RT,RT,RT,RT,DN,DN,PU,RT,RT] I NC,\"B,[UP,UP,UP,PD,RT,RT,RT,UR,UP,UL,LT,LT,LT,DN,DN,DN,DN,DN,DN,RT,RT,RT,UR,UP,UL,PU,DR,DR,DR] I NC,\"C,[UR,UR,UR,UR,UP,PD,UL,LT,LT,DL,DN,DN,DN,DN,DR,RT,RT,UR,PU,DR,RT] I NC,\"D,[PD,UP,UP,UP,UP,UP,UP,RT,RT,RT,DR,DN,DN,DN,DN,DL,LT,LT,LT,PU,RT,RT,RT,RT,RT,RT] I NC,\"E,[UR,UR,UR,UR,UP,UP,PD,LT,LT,LT,LT,DN,DN,DN,RT,RT,RT,LT,LT,LT,DN,DN,DN,RT,RT,RT,RT,PU,RT,RT] I NC,\"F,[PD,UP,UP,UP,RT,RT,RT,LT,LT,LT,UP,UP,UP,RT,RT,RT,RT,PU,DR,DR,DN,DN,DN,DN] I NC,\"G,[UR,UR,UR,UR,UP,PD,UL,LT,LT,DL,DN,DN,DN,DN,DR,RT,RT,UR,DN,UP,UP,UP,LT,LT,PU,DR,DR,DR,RT] I NC,\"H,[PD,UP,UP,UP,UP,UP,UP,DN,DN,DN,RT,RT,RT,RT,UP,UP,UP,DN,DN,DN,DN,DN,DN,PU,RT,RT] I NC,\"I,[RT,PD,RT,RT,LT,UP,UP,UP,UP,UP,UP,LT,RT,RT,PU,DR,DR,DR,DN,DN,DN] I NC,\"J,[UP,UP,PD,DN,DR,RT,RT,UR,UP,UP,UP,UP,UP,PU,DR,DR,DN,DN,DN,DN] I NC,\"K,[PD,UP,UP,UP,UP,UP,UP,DN,DN,DN,DN,UR,,UR,UR,UR,DL,DL,DL,DR,DR,DR,PU,RT,RT] I NC,\"L,[UP,UP,UP,UP,UP,UP,PD,DN,DN,DN,DN,DN,DN,RT,RT,RT,RT,PU,RT,RT] ; I NC,\"M,[PD,UP,UP,UP,UP,UP,UP,DR,DR,UR,UR,DN,DN,DN,DN,DN,DN,PU,RT,RT] ; I NC,\"N,[PD,UP,UP,UP,UP,UP,UP,DR,DR,DR,DR,UP,UP,UP,UP,DN,DN,DN,DN,DN,DN,PU,RT,RT] I NC,\"O,[RT,PD,UL,UP,UP,UP,UP,UR,RT,RT,DR,DN,DN,DN,DN,DL,LT,LT,PU,RT,RT,RT,RT,RT] I NC,\"P,[PD,UP,UP,UP,UP,UP,UP,RT,RT,RT,DR,DN,DL,LT,LT,LT,PU,DR,DR,DR,RT,RT,RT] I NC,\"Q,[RT,PD,UL,UP,UP,UP,UP,UR,RT,RT,DR,DN,DN,DN,DN,DL,LT,LT,PU,UR,RT,PD,DR,PU,RT,RT] ; I NC,\"R,[PD,UP,UP,UP,UP,UP,UP,RT,RT,RT,DR,DN,DL,LT,LT,LT,RT,DR,DR,DR,PU,RT,RT] I NC,\"S,[UP,PD,DR,RT,RT,UR,UP,UL,LT,LT,UL,UP,UR,RT,RT,DR,PU,DR,DR,DN,DN,DN] I NC,\"T,[RT,RT,PD,UP,UP,UP,UP,UP,UP,LT,LT,RT,RT,RT,RT,PU,DR,DR,DN,DN,DN,DN] I NC,\"U,[UP,UP,UP,UP,UP,UP,PD,DN,DN,DN,DN,DN,DR,RT,RT,UR,UP,UP,UP,UP,UP,PU,DR,DR,DN,DN,DN,DN] ; I NC,\"V,[UP,UP,UP,UP,UP,UP,PD,DN,DN,DN,DN,DR,DR,UR,UR,UP,UP,UP,UP,PU,DR,DR,DN,DN,DN,DN] ; I NC,\"W,[UP,UP,UP,UP,UP,UP,PD,DN,DN,DN,DN,DN,DN,UR,UR,DR,DR,UP,UP,UP,UP,UP,UP,PU,DR,DR,DN,DN,DN,DN] ; I NC,\"X,[PD,UP,UR,UR,UR,UR,UP,DN,DL,DL,UL,UL,UP,DN,DR,DR,DR,DR,DN,PU,RT,RT] ; I NC,\"Y,[UP,UP,UP,UP,UP,UP,PD,DN,DN,DR,DR,DN,DN,UP,UP,UR,UR,UP,UP,PU,DR,DR,DN,DN,DN,DN] ; I NC,\"Z,[UP,UP,UP,UP,UP,UP,PD,RT,RT,RT,RT,DN,DL,DL,DL,DL,DN,RT,RT,RT,RT,PU,RT,RT] I NCL,\"A,[UP,UP,UP,PD,UR,RT,RT,DR,DN,DN,DL,LT,LT,UL,UR,RT,RT,RT,DN,DN,PU,RT,RT] I NCL,\"B,[PD,UP,UP,UP,UP,UP,UP,DN,DN,DN,UR,RT,RT,DR,DN,DN,DL,LT,LT,UL,PU,DR,RT,RT,RT,RT,RT] I NCL,\"C,[UR,UR,UR,RT,PD,UL,LT,LT,DL,DN,DN,DR,RT,RT,UR,PU,DR,RT] I NCL,\"D,[RT,RT,RT,RT,PD,UP,UP,UP,UP,UP,UP,DN,DN,DN,UL,LT,LT,DL,DN,DN,DR,RT,RT,UR,PU,DR,RT] I NCL,\"E,[UP,UP,PD,RT,RT,RT,RT,UP,UL,LT,LT,DL,DN,DN,DR,RT,RT,UR,PU,DR,RT] I NCL,\"F,[RT,PD,UP,UP,UP,LT,RT,RT,RT,LT,LT,UP,UP,UR,RT,DR,PU,DR,DR,DN,DN,DN] I NCL,\"G,[DN,PD,DR,RT,RT,UR,UP,UP,UP,UP,UL,LT,LT,DL,DN,DN,DR,RT,RT,UR,PU,DR,RT] I NCL,\"H,[PD,UP,UP,UP,UP,UP,UP,DN,DN,DN,UR,RT,RT,DR,DN,DN,DN,PU,RT,RT] I NCL,\"I,[RT,PD,RT,RT,LT,UP,UP,UP,UP,LT,PU,UR,DD,DR,DR,DR,DR,DN] I NCL,\"J,[DN,PD,DR,RT,UR,UP,UP,UP,UP,UP,PU,UP,DD,DR,DR,DR,DN,DN] I NCL,\"K,[RT,PD,UP,UP,UP,UP,UP,UP,DN,DN,DN,DN,DN,UR,,UR,UR,DL,DL,DR,DR,PU,RT,RT] I NCL,\"L,[RT,PD,RT,RT,LT,UP,UP,UP,UP,UP,UP,LT,PU,DR,DR,DR,DR,DR,DN] I NCL,\"M,[PD,UP,UP,UP,UP,DN,UR,DR,DN,DN,DN,UP,UP,UP,UR,DR,DN,DN,DN,PU,RT,RT] I NCL,\"N,[PD,UP,UP,UP,UP,DN,UR,RT,RT,DR,DN,DN,DN,PU,RT,RT] I NCL,\"O,[RT,PD,UL,UP,UP,UR,RT,RT,DR,DN,DN,DL,LT,LT,PU,RT,RT,RT,RT,RT] I NCL,\"P,[UP,PD,DR,RT,RT,UR,UP,UP,UL,LT,LT,DL,UP,DN,DN,DN,DN,DN,DN,PU,UR,UR,RT,RT,RT,RT] I NCL,\"Q,[UR,RT,RT,RT,PD,DL,LT,LT,UL,UP,UP,UR,RT,RT,DR,UP,DN,DN,DN,DN,DN,DN,PU,UR,UR] I NCL,\"R,[RT,PD,UP,UP,UP,UP,DN,UR,RT,DR,PU,DR,DR,DN] I NCL,\"S,[UP,PD,DR,RT,RT,UR,UL,LT,LT,UL,UR,RT,RT,DR,PU,DR,DR,DN] I NCL,\"T,[UR,UR,UR,UP,PD,LT,LT,LT,RT,UP,DN,DN,DN,DN,DR,RT,UR,PU,DR,RT] I NCL,\"U,[UP,UP,UP,UP,PD,DN,DN,DN,DR,RT,RT,UR,DN,UP,UP,UP,UP,PU,DR,DR,DN,DN] ; I NCL,\"V,[UP,UP,UP,UP,PD,DN,DN,DR,DR,UR,UR,UP,UP,PU,DR,DR,DN,DN] ; I NCL,\"W,[UP,UP,UP,UP,PD,DN,DN,DN,DN,UR,UR,DR,DR,UP,UP,UP,UP,PU,DR,DR,DN,DN] I NCL,\"X,[PD,UR,UR,UR,UR,DL,DL,UL,UL,DR,DR,DR,DR,PU,RT,RT] ; I NCL,\"Y,[UP,UP,UP,UP,PD,DN,DN,DR,DR,DL,DL,UR,UR,UR,UR,UP,UP,PU,DR,DR,DN,DN] I NCL,\"Z,[UP,UP,UP,UP,PD,RT,RT,RT,RT,DL,DL,DL,DL,RT,RT,RT,RT,PU,RT,RT] I NC,\"@,[UR,UR,UR,PD,DL,LT,UP,UR,RT,DN,DN,UR,UP,UL,LT,LT,DL,DN,DN,DR,RT,RT,UR,PU,DR,DR] I NC,\"0,[UP,PD,UR,UR,UR,UR,UL,LT,LT,DL,DN,DN,DN,DN,DR,RT,RT,UR,UP,UP,UP,UP,PU,DR,DR,DN,DN,DN] I NC,\"1,[RT,PD,RT,RT,LT,UP,UP,UP,UP,UP,UP,DL,PU,DR,DR,DR,DR,DR] ; I NC,\"2,[UP,UP,UP,UP,UP,PD,UR,RT,RT,DR,DN,DL,DL,DL,DL,RT,RT,RT,RT,PU,RT,RT] I NC,\"3,[UP,PD,DR,RT,RT,UR,UP,UL,LT,LT,RT,RT,UR,UP,UL,LT,LT,DL,PU,DR,DR,DR,DR,DR,RT] ; I NC,\"4,[RT,RT,RT,RT,PD,UP,UP,UP,UP,UP,UP,DL,DL,DL,DL,RT,RT,RT,RT,PU,DR,DR] I NC,\"5,[UP,PD,DR,RT,RT,UR,UP,UP,UL,LT,LT,DL,UP,UP,UP,RT,RT,RT,RT,PU,DR,DR,DN,DN,DN,DN] ; I NC,\"6,[UP,UP,UP,PD,RT,RT,RT,DR,DN,DL,LT,LT,UL,UP,UP,UP,UP,UR,RT,RT,DR,PU,DR,DR,DN,DN,DN] ; I NC,\"7,[RT,PD,UP,UP,UR,UR,UR,UP,LT,LT,LT,LT,PU,DR,DR,DR,DR,DR,DR] I NC,\"8,[UR,UP,UP,PD,RT,RT,UR,UP,UL,LT,LT,DL,DN,DR,DL,DN,DR,RT,RT,UR,UP,UL,PU,DR,DR,DR] ; I NC,\"9,[UP,PD,DR,RT,RT,UR,UP,UP,UP,UP,UL,LT,LT,DL,DN,DR,RT,RT,RT,PU,DR,DR,DN] I NC,\" ,[RT,RT,RT,RT,RT,RT] I NC,\"!,[RT,DD,UP,PD,UP,UP,UP,UP,UP,PU,DR,DR,DR,DR,DR,DN] I NC,\"",[UR,UP,UP,UP,PD,UP,UP,PU,RT,RT,PD,DN,DN,PU,DR,DR,DR,DN] I NC,\"#,[UR,PD,UP,UP,UP,UP,DN,LT,RT,RT,RT,RT,LT,UP,DN,DN,DN,DN,UP,RT,LT,LT,LT,LT,PU,DR,DR,RT,RT,RT,RT] I NC,\"$,[UP,UP,PD,DR,RT,RT,UR,UL,LT,LT,UL,UR,RT,RT,DR,UL,LT,UP,DN,DN,DN,DN,DN,DN,PU,RT,RT,RT,RT] I NC,\"%,[UP,PD,UR,UR,UR,UR,PU,LT,LT,PD,UL,DL,DR,UR,PU,DR,DN,DN,PD,DL,DR,UR,UL,PU,DR,DR,RT] I NC,\"&,[UR,UR,RT,RT,PD,DL,DL,LT,UL,UP,UR,RT,UR,UP,UL,DL,DN,DN,DR,DR,DR,PU,RT,RT] I NC,\"',[UR,UP,UP,UP,UP,PD,UR,UR,PU,DR,DR,DR,DN,DN,DN,DN] ; I NC,\"(,[RT,RT,RT,PD,UL,UP,UP,UP,UP,UR,PU,DR,DR,DR,DN,DN,DN] ; I NC,\"),[RT,PD,UR,UP,UP,UP,UP,UL,PU,DR,DR,DR,DR,DR,DN] ; I NC,\"*,[UP,PD,UR,UR,UR,UR,DL,DL,UP,UP,DN,DN,DN,DN,UP,UP,RT,RT,LT,LT,LT,LT,RT,RT,UL,UL,DR,DR,DR,DR,PU,DR,RT] I NC,\"+,[UR,RT,PD,UP,UP,UP,UP,DN,DN,LT,LT,RT,RT,RT,RT,PU,DR,DR,DN] I NC,\",,[DR,PD,UR,UP,LT,DN,RT,PU,RT,RT,,RT,RT] I NC,\"-,[UP,UP,UP,PD,RT,RT,RT,RT,PU,DR,DR,DN] I NC,\".,[RT,PD,UP,RT,DN,LT,PU,RT,RT,RT,RT,RT] ; I NC,\"/,[UP,PD,UR,UR,UR,UR,PU,DR,DR,DN,DN,DN] I NC,\":,[UR,PD,RT,DN,LT,UP,PU,UR,UP,PD,UP,LT,DN,RT,PU,DR,DR,DR,RT] I NC,\";,[DR,PD,UR,UP,LT,DN,RT,PU,UP,UP,UP,PD,UP,LT,DN,RT,PU,DR,DR,DR,RT] ; I NC,\"<,[UR,RT,RT,PD,UL,UL,UR,UR,PU,DR,DR,DR,DN,DN] I NC,\"=,[UR,UR,UR,UR,PD,LT,LT,LT,LT,PU,DN,DN,PD,RT,RT,RT,RT,PU,DR,DR] ; I NC,\">,[UR,PD,UR,UR,UL,UL,PU,DR,DR,DR,DR,DR] I NC,\"?,[RT,RT,DD,UP,PD,UP,UR,UR,UP,UL,LT,LT,DL,PU,DR,DR,DR,DR,DR,RT] I NC,133,[RT,RT,RT,PD,LT,UP,UP,UP,UP,UP,UP,RT,PU,DR,DR,DR,DN,DN,DN] ; I NC,\"\,[UP,UP,UP,UP,UP,PD,DR,DR,DR,DR,PU,DR,RT] I NC,135,[RT,PD,RT,UP,UP,UP,UP,UP,UP,LT,PU,DR,DR,DR,DR,DR,DN] I NC,\"^,[UP,UP,UP,UP,UP,PD,UR,UR,DR,DR,PU,DR,DR,DN,DN,DN] I NC,\"_,[DL,PD,RT,RT,RT,RT,RT,RT,PU,UR] I NCL,\"@,[UR,UP,UP,UP,UP,UP,UP,PD,DR,DR,PU,DR,DR,DR,DN,DN] I NCL,133,[RT,RT,RT,PD,UL,UP,UL,UR,UP,UR,PU,DR,DR,DR,DN,DN,DN] I NCL,\"\,[RT,RT,PD,UP,UP,UP,UP,UP,UP,PU,DR,DR,DR,DR,DN,DN] I NCL,135,[RT,PD,UR,UP,UR,UL,UP,UL,PU,DR,DR,DR,DR,DR,DN] I NCL,\"^,[UP,UP,UP,UP,UP,UP,PD,UR,DR,DR,UR,PU,DR,DR,DN,DN,DN,DN] I NCL,137,[UP,PD,UP,UP,UP,UP,RT,RT,RT,RT,DN,DN,DN,DN,LT,LT,LT,LT,PU,DR,RT,RT,RT,RT,RT] REPEAT 40,TBGN2 \.RPCNT I NC,7,[UR,RT,PD,UP,LT,LT,UP,UR,UP,RT,UP,DN,RT,DN,DR,DN,LT,LT,PU,DR,DR,RT,RT] I NC,33,[RT,RT,PD,UP,UL,DR,UR,UL,DN,DN,UR,UL,UL,UR,DN,DN,UL,UR,DR,UL,UP,RT,DR,DN,DN,DN,DN,DL,LT,LT,UL,UP,UP,UP,UP,UR,RT,PU,DR,DR,DR,DR,DN,DN] I SC,\"',[UR,UR,UP,UP,PD,UP,UP,PU,DR,DR,DR,DR,DN,DN] I SCL,41,[UP,UP,PD,UR,UR,DR,DR,PU,DR,DR] I SCL,42,[UP,UP,UP,UP,PD,DR,DR,UR,UR,PU,DR,DR,DN,DN] I SCL,43,[UP,UP,UP,PD,UR,DR,DR,UR,PU,DR,DR,DN] I SCL,44,[UP,PD,RT,RT,RT,UR,UP,UP,UL,LT,LT,LT,PU,DR,DR,DR,DR,DR,RT] I SCL,45,[UR,UR,UR,UR,UP,PD,LT,LT,LT,DL,DN,DN,DR,RT,RT,RT,PU,DR,RT] I SCL,46,[UR,RT,PD,UP,UP,UP,UP,DL,UR,DR,PU,DR,DR,DR,DN] I SCL,47,[UP,UP,UP,PD,RT,RT,RT,RT,UL,DR,DL,PU,DR,DR,RT] I SCL,50,[UR,UR,UP,UP,UP,PD,DN,DN,DN,DN,UL,DR,UR,PU,DR,DR,RT] I SCL,51,[UR,UP,PD,UL,UR,DL,RT,RT,RT,RT,PU,DR,DR,DN] I SCL,57,[UR,UR,UR,PD,UP,LT,DN,RT,PU,DR,DR,DR,RT] I SCL,60,[DN,PD,RT,RT,RT,RT,PU,UR,RT] I SCL,61,[UP,UP,UP,UP,UP,UP,UP,PD,RT,RT,RT,RT,PU,DR,DR,DN,DN,DN,DN,DN] I SCL,64,[UL,UL,UL,UL,UL,UP,DD,RT,RT,DD,DR,DR,DR,DN,DN,DN] I SCL,65,[UL,UL,UL,UL,UL,UP,PD,UR,UR,PU,DR,DR,DR,DN,DN,DN,DN,DN] I SCL,66,[UL,UL,UL,UL,UL,UP,UP,UP,PD,DR,DR,PU,DR,DR,DR,DN,DN,DN] I SCL,67,[UL,UL,UL,UL,UL,UL,PD,UR,UR,DR,DR,PU,DR,DR,DN,DN,DN,DN] I SCL,70,[PD,RT,RT,RT,RT,RT,RT,PU,RT] I SCL,71,[PD,UP,UP,UP,UP,UP,UP,UP,UP,UP,UP,PU,UP] I SCL,75,[DL,DL,DL,DL,DL,DL,DN,DN,DN,DN,DN] I AX,\"*,[UR,UP,PD,UR,UR,PU,LT,LT,PD,DR,DR,PU,DR,DR,RT] I AX,\".,[DD,RT,RT] .BYTE .BYTE 1,5,5,1 J NC,\"A,[1,2,6,1,1,2,-6,1,1,-3,2,0,1,2,0,1,1,3,-2,0] J NC,\"M,[1,0,6,1,1,2,-4,1,1,2,4,1,1,0,-6,1,1,2,0,0] J NC,\"N,[1,0,6,1,1,4,-6,1,1,0,6,1,1,2,-6,0] J NC,\"R,[1,0,6,1,1,3,0,1,1,1,-1,1,1,0,-1,1,1,-1,-1,1,1,-3,0,1,1,2,0,1,1,2,-3,1,1,2,0,0] J NC,\"V,[1,0,6,0,1,2,-6,1,1,2,6,1,1,2,-6,0] J NC,\"W,[1,0,6,0,1,1,-6,1,1,1,4,1,1,1,-4,1,1,1,6,1,1,2,-6,0] J NC,\"X,[1,4,6,1,1,-4,0,0,1,4,-6,1,1,2,0,0] J NC,\"Y,[1,2,0,0,1,0,3,1,1,-2,3,1,1,4,0,0,1,-2,-3,1,1,4,-3,0] J NC,\"Z,[1,0,6,0,1,4,0,1,1,-4,-6,1,1,4,0,1,1,2,0,0] J NCL,\"V,[1,0,4,0,1,2,-4,1,1,2,4,1,1,2,-4,0] J NCL,\"W,[1,0,4,0,1,1,-4,1,1,1,3,1,1,1,-3,1,1,1,4,1,1,2,-4,0] J NCL,\"Y,[1,0,-2,0,1,1,0,1,1,3,6,1,1,-4,0,0,1,2,-4,1,1,4,0,0] J NC,\"2,[1,0,5,0,1,1,1,1,1,2,0,1,1,1,-1,1,1,0,-1,1,1,-1,-1,1,1,-2,-1,1,1,-1,-1,1,1,0,-1,1,1,4,0,1,1,2,0,0] J NC,\"4,[1,3,0,0,1,0,6,1,1,-3,-4,1,1,4,0,1,1,2,-2,0] J NC,\"6,[1,0,2,0,1,1,1,1,1,2,0,1,1,1,-1,1,1,0,-1,1,1,-1,-1,1,1,-2,0,1,1,-1,1,1,1,0,2,1,1,1,2,1,1,2,1,1,1,3,-6,0] J NC,\"7,[1,1,0,0,1,3,6,1,1,-4,0,1,1,6,-6,0] J NC,\"9,[1,1,0,0,1,2,1,1,1,1,2,1,1,0,2,1,1,-1,1,1,1,-2,0,1,1,-1,-1,1,1,0,-1,1,1,1,-1,1,1,2,0,1,1,1,1,1,1,2,-4,0] J NC,\"(,[1,3,0,0,1,-1,2,1,1,0,2,1,1,1,2,1,1,3,-6,0] J NC,\"),[1,1,0,0,1,1,2,1,1,0,2,1,1,-1,2,1,1,5,-6,0] J NC,\"*,[1,2,1,0,1,0,4,1,1,2,-1,0,1,-4,-2,1,1,0,2,0,1,4,-2,1,1,2,-2,0] J NC,\"/,[1,4,6,1,1,2,-6,0] J NC,\"<,[1,4,5,0,1,-4,-2,1,1,4,-2,1,1,2,-1,0] J NC,\">,[1,0,1,0,1,4,2,1,1,-4,2,1,1,6,-5,0] J NC,\"\,[1,0,6,0,1,4,-6,1,1,2,0,0] REPEAT 33,AEQB OC,\.RPCNT+100,NC,\.RPCNT+100 REPEAT 33,AEQB SC,\.RPCNT,NC,\.RPCNT+100 REPEAT 7,AEQB SC,\.RPCNT+40,NC,\.RPCNT+40 REPEAT 30,AEQB SC,\.RPCNT+50,NC,\.RPCNT+50 REPEAT 32,AEQB SCL,\.RPCNT+1,NCL,\.RPCNT+101 REPEAT 12,AEQB AX,\.RPCNT+60,NC,\.RPCNT+60 AEQB AX,\"+,NC,\"+ AEQB AX,\"-,NC,\"- NC10=(40)BACKSP NC11=(40)HTAB NC12=(40)LF NC13=(40)VTAB NC14=(40)FF NC15=(40)CR0 SC33=NC12 SC34=NC15 SC35=(40)SCSHFI SC36=(40)SCSHFO SC37=(40)SCESC SCL33=SC33 SCL34=SC34 SCL35=SC35 SCL36=SC36 SCL37=SC37 SCL40=SC40 SCL52=NC134 SCL53=NC133 SCL54=NC135 SCL55=NCL133 SCL56=NCL135 SCL62=NCL134 SCL63=NC7 SCL72=NC10 SCL73=(40)SUBSCR SCL74=(40)SCHORZ SCL76=(40)SCVERT SCL77=(40)SUPSCR AX2=(40)AXUSUP AX4=(40)AXSUP LASTBY=. .BYTE PLTBUF: .BYTE 7 ;BUFFER FOR BLOCK ASCII MODE OUTPUT TO PLT DEVICE .PD .PU REPEAT 2222.,.DN REPEAT 80.,.UP .BYTE IPLTBP=700,,.-1 PLTE=<<.+1777>_<-12>>_12 PLTL==PLTE-PLTBUF END START