/SUBROUTINE COPY GIVES HARD COPY OF DISPLAY FILE ON 'X-Y' RECORDER. / START DISPLAY FILE AT FILER (FIRST WORD MUST BE PARAMETER MODE. ) / CHANGE ABOVE --- FILER POINTS TO START OF DISPLAY FILE /THE SUBROUTINE RETURNS ON A STOP CODE OR RETURNS TO FILER OR FINDS /AN ERROR. ERRORS - 0 SLAVE MODE WORD FOUND. / - 2 SUBROUTINE OPCODE 00 FOUND. / - 4 X OR Y ADDRESS EXCEEDS SCREEN LIMITS. /ERRORS ARE TYPED ON TTY AS ERR 'X' @ NNNNN / WHERE NNNNN IS ADDRESS OF ERROR / /THE TIMER IS PROPORTIONAL TO ((2**-SPEED)+BIAS) . SPEED AND BIAS /ARE PROGRAM PARAMETERS. / /DEFINITIONS: ORCS=702105 DJP=400000 EEM=707702 STCODE=2000 IDLA=700606 RB17UP=0 RB17DN=1 STPCOD=2000 UPDNWT / / / .GLOBL COPY,FILER,PLOT,SWITCH COPY XX JMS SHIFTN /DISPLAY IS INITIALLY IN 'SHIFT IN' DZM PENPOS LAC SWITCH /SHORT CIRCUIT 'SWITCH' TO ALLOW DAC SAVADR# /PEN CONTROL FROM 'COPY' ISZ SAVADR LAC* SAVADR /GET CONTENTS OF 'SWITCH+1' DAC SAVCON# /SAVE IT LAC SWITCH AND (17777 /CHOP TO 13 BITS XOR (JMP* DAC* SAVADR /INSERT 'JMP* SWITCH' AT 'SWITCH+1' LAC (RB17UP ORCS /PUT PEN UP / AN EXITSW. DZM MODE# DZM PRMODE# INITPL LAS SNA /NO SETUP OF PLOTTER ACC=0 JMP PROC DAC SAVE# RCR AND (1776 /TRUNCATE TO PREVENT DATA OVER-RANGE DAC XREGST DAC YREGST JMS PLOTT LAS SAD SAVE JMP .-2 JMP INITPL PROC DZM XREGST DZMX=PROC DZMY DZM YREGST JMS PLOTT DZM SAVE DZM XLAST# DZM YLAST# PROCED LAC* FILER DAC ADDRES# /RUNNING FILE POINTER. LAC* ADDRES DAC SAVEFR# LAC (STPCOD DAC* ADDRES LAC SAVEFR JMP PARMTR+1 DECODE LAC MODE AND (7 TAD (JMP* MODETB /SET UP BRANCH INST. DAC .+1 XX MODETB PARMTR /MODE = 0 POINT / 1 ERROR0 / 2 (SLAVE) CHARAT / 3 VECTOR / 4 VECT1 / 5 (VECTOR CONTINUE) INCREM / 6 SUBROT / 7 / / / GO JMS WRITE /MOVE PEN LAC PRMODE SAD (JMP* MODETB+1 /WAS MODE = POINT JMP PNTCHK /YES LAC SAVE# SAD (2 /IS THIS A SUBROUTINE RETURN. JMP SUBRET /YES GET ISZ ADDRES /SHIFT POINTER TO NEXT WORD. CHECK LAC ADDRES SAD* FILER /IS IT THE INITIAL ADDRESS. JMP EXIT /YES. STOP JMP DECODE /NO. / / / PNTCHK DZM PRMODE /ZERO PRESENT WORD REGISTER. LAC DOTIT# SZA /IS PEN-DOWN FLAG SET? JMS PENDWN /YES. NOP JMP GET /CONTINUE / SUBRET DZM SAVE /WE HAVE A SUBROUTINE RETURN. LAC ASR# /JUMP, ADDRESS OF NEXT INST. DAC ADDRES /IS IN ASR. JMP CHECK / EXIT LAC* FILER DAC ADDRES LAC SAVEFR DAC* ADDRES /REPLACE FILER BEFORE STARTING /DISPLAY LAC ADDRES IDLA EXIT1 JMS PENUP LAC* FILER DAC ADDRES LAC SAVEFR DAC* ADDRES /REPLACE FILER IF ENTER @ EXIT1 LAC (7 LAC SAVCON /RESTORE 'SWITCH+1' DAC* SAVADR JMP* COPY / /THIS IS THE ENTRY POINT OF THE CLOCK INTERRUPT (API ONLY) / CLOCK LAC MKLOCK# /THIS MARKER TELLS US WHERE /TO RETURN SMA JMP CLO1 /NOT MINUS --- TRY AGAIN! / MKLOCK=-1 WE HAVE AN X-Y MOVE TO MAKE /LOAD XREGST (THEN YREGST ) ADJUST POSITION IN ACC ADD CHANNEL / NUMBER AND SIGN THEN PUSH THRU THE D-A. JMS PLOTT JMP* WRITE PLOTT XX JMS* PLOT JMP* PLOTT XREGST YREGST KPEN KPEN 1 / CLO1 SZA JMP CLO2 /NOT ZERO TRY AGAIN /MKLOCL=0 --- WE HAVE A PEN POSITION CHANGE ( UP OR DOWN ). LAC PENPOS AND (RB17DN /CREATE OUTPUT WORD ORCS /PUT ONTO RELAYS. LAW -40 DAC UPDNWT ISZ UPDNWT JMP .-1 JMP PENRET CLO2 SAD (1 /IS IT THE INIT. JMP CLO3 /YES SAD (77 /IS IT THE ERROR DIAGNOSTIC JMP WRTERR /YES, GO WRITE ERROR MESSAGE /MKLOCK=7 IT IS THE EXIT JMP* COPY JMP CLOCK /MKLOCK=1 IT IS THE INITIALIZING ROUTINE CLO3 JMP PROCED / / / ERROR0 LAC (201404 SKP ERROR2 LAC (201444 SKP ERROR4 LAC (201504 DAC ERR+4 / LAC ADDRES CLL LRS+14 AND (7 TAD (60 RTL RTL LLS+3 TAD (60 RTL RTL TAD (6 DAC ERR+6 LLS+3 AND (7 CLL RTL RTL LLS+3 TAD (60 RTL RTL LLS+3 TAD (60 RAL DAC ERR+7 /MUST WAIT FOR CLOCK HERE LAC (77 /FLAG FOR ERROR DIAGNOSTIC ROUTINE DAC MKLOCK# JMP CLOCK / /RETURN HERE WHEN CLOCK EXPIRES WRTERR DBK EEM .WRITE -3,2,ERR,10 .WAIT -3 LAC (201404 /CHECK FOR POSSIBILITY OF ERROR 0 SAD ERR+4 JMP EXIT /IF ERROR 0, RESTART DISPLAY JMP EXIT1 / / ERR .ASCII ' ERROR 1 @ 57777 '<015>' ' / / /SUBROUTINE WRITE (MOVES PEN) / WRITE XX LAC INTENS# SNA JMS PENUP /PUT PEN UP IF INTENSITY = 0 . LAC XREGST AND (1777 SAD XREGST /WAS IT LEGIT ADDRES SKP!CLL JMP ERROR4 /NO. DAC XLAST# LAC YREGST AND (1777 SAD YREGST SKP!CLL JMP ERROR4 DAC YLAST# CLC DAC MKLOCK# /SET MARKER FOR WRITE ROUTINE. JMP CLOCK / PENUP XX DAC SAVACC# LACQ DAC SAVMQ# /SAVE MQ TOO. LAC PENPOS# /0=UP, -1=DOWN SNA!CLA JMP PENRET /RETURN ---PEN IS UP NOW. PENGO DAC PENPOS DZM MKLOCK# /SET MARKER TO PEN POSN CHANGE JMP CLOCK / PENDWN XX ISZ .-1 DAC SAVACC LACQ DAC SAVMQ LAC PENDWN DAC PENUP /PENUP WILL BE USED AS THE /RETURN POINTER. LAC PENPOS SZA!CMA JMP PENRET /PEN IS NOW DOWN. JMP PENGO /GO WAIT FOR CLOCK PENRET LAC SAVMQ /RESTORE MQ LMQ LAC SAVACC /GET ACC JMP* PENUP / /PARAMETER MODE / PARMTR LAC* ADDRES LRS +15 DAC MODE LACQ RTL SPA JMP STOP /STOP CODE FOUND LLS +4 DAC SAVACC LLS +3 SMA JMP SCALES RTL /REQUIRES A CHANGE IN INTENSITY RTL RAL AND (7 DAC INTENS# SCALES LAC SAVACC SMA JMP GET RTL /REQUIRES A CHANGE IN SCALE RTL AND (3 DAC SCALEF# / /CREATE SCALE=1,2,4,!8 FOR INCREMENT MODE / TAD (LLS!CLQ DAC .+3 CLA!STL RAL XX DAC SCALE# / JMP GET / /ON STOP INTERRUPT, MAY HAVE TO CHANGE BANKS FOR NEXT PIECE OF DISPLAY /FILE / STOP RAL SMA JMP EXIT /NOT STOP INTERRUPT ISZ ADDRES LAC* ADDRES /IF STOP INTERRUPT, CHECK FOR BANK CHANGE SNA JMP EXIT /NO BANK CHANGE - ERROR AND (77777 DAC ADDRES /GET NEW 15 BIT ADDRESS DZM MODE JMP CHECK /POINT MODE / POINT DAC PRMODE /SAVE IT. JMS PENUP /PEN IS UP WHILE MOVING IN POINT MODE. LAC (DAC XREGST DAC XORY LAC* ADDRES RTL SZL!RTL /IS IT VERTICLE? ISZ XORY /YES,CHANGE LOAD INST. RTL DAC MODE RTL SZL!CLA /IS INTENSIFY BIT ON? CMA /YES SET DOTIT=-1 DAC DOTIT LAC* ADDRES AND (001777 XORY DAC XREGST /ASSUMES ORDER OF(XREGST,YREGST) JMP GO /INCREMENT MODE / INCREM LAC (-4 /SET UP COUNTER DAC INCNTR# LAC* ADDRES /GET WORD RAL SZL /IS ESCAPE BIT SET? JMS ESCAPE SPA /IS INTENSIFY BIT SET? JMS PENDWN /YES JMS PENUP /NO INCYCL RTL /MOVE X BIT TO LINK DAC INTEMP# /SAVE WORD SNL!RAL JMP YSTART /DO NOT MOVE X LAC SCALE SZL /MOVE LEFT OR RIGHT JMS TWOCMA /LEFT TAD XREGST DAC XREGST YSTART LAC INTEMP RTL DAC INTEMP SNL!RAL JMP YEND LAC SCALE SZL JMS TWOCMA TAD YREGST DAC YREGST YEND JMS WRITE LAC INTEMP ISZ INCNTR JMP INCYCL CLA SAD MODE /IS MODE SET TO ZERO? JMP GET-3 /YES. CHECK FOR SUBROUTINE RETURN ISZ ADDRES JMP INCREM / /CHARACTER MODE / CHARAT NOP /SET TO SHIFT IN ? / SET UP SCALING ROUTINE LAC SCALEF /GET SCALE=0,1,2,OR 3 RAR /SET LINK TO "1" BIT LMQ /SAVE OTHER BIT LAC (NOP SZL LAC (CLL!RAL /MULTIPLIES BY 2 IF "1" IS SET DAC CHISCA+1 LACQ /RETREIVE "2" BIT RAR LAC (NOP SZL LAC (CLL!RAL /MULTIPLIES BY 4 IF "2" BIT IS SET DAC CHISCA+2 DAC CHISCA+3 / CHICYC LAC (-3 DAC CHICNT# /SET CHARACTER COUNTER FOR 3 PER WORD LAC* ADDRES /GET WORD, 3 CHARS. RTL /ROTATE TO GET FIRST CHAR. RTL RTL DAC CHISAV# /SAVE OTHER CHARS. RAL AND (77 /WE NOW HAVE A CHAR. SAD (37 /ESCAPE JMP CHIEND SAD (34 /CARRAGE RETURN JMP CR SAD (35 /SHIFT IN JMP SIN SAD (36 /SHIFT OUT JMP SOUT CLL RAR /DIVIDE BY 2 TAD (LAC CHIPNT /LINK_0 IF WE WANT FIRST HALF /POINTER DAC .+1 XX DZM MARKER /MARKS FIRST- OR SECOND-HALF PEN MOVE SNL LRS +11 AND (777 TAD (LAC CHITBL-1 DAC .+2 NXTWRD ISZ .+1 /ENTER HERE TO GET 2 MORE MOVES XX NXTMOV SPA!RAL /INTENSIFY? JMS PENDWN /YES JMS PENUP LRSS +16 /SIGNED SHIFT TO GET X MOVE SAD (-7 /JUMP JMP JUMP SAD (-10 /ESCAPE JMP NXTCHI JMS CHISCA / FOR SHIFT IN FOR SHIFT OUT S0 NOP /JMP Y1 X1 TAD XREGST DAC XREGST NOP /JMP Y2 CY LACQ /GET Y MOVE LRSS +16 JMS CHISCA Y0 JMP Y1 /CMA TAD (1 JMP X1 Y1 TAD YREGST DAC YREGST NOP /JMP CY / Y2 LACQ /SAVE MQ DAC SAVEMQ JMS WRITE LAC MAR#KER CMA DAC MARKER /SET MARKER SMA /HAVE DONE BOTH MOVES IF =0 JMP NXTWRD LAC SAVEMQ# JMP NXTMOV /GO DECIFER THIS ONE / CR DZM XREGST /CARRAGE RETURN JMS WRITE JMP NXTCHI / SIN JMS SHIFTN /SHIFT IN JMP NXTCHI / SHIFTN XX /SETS UP FOR HORIZONTAL CHARACTERS. LAC (NOP DAC S0 DAC CY-1 DAC Y2-1 LAC (JMP Y1 DAC Y0 LAC DZMX DAC CR JMP* SHIFTN / SOUT LAC (JMP Y1 /SHIFT OUT,FOR VERTICLE CHARACTERS DAC S0 LAC (JMP Y2 DAC CY-1 LAC (CMA DAC Y0 LAC (JMP CY DAC Y2-1 LAC DZMY DAC CR JMP NXTCHI / CHISCA XX /SCALES THE MOVES NOP /OR CLL!RAL IF BIT 1=1 NOP /OR CLL!RAL IF BIT 2=1 NOP /OR CLL!RAL IF BIT 2=1 JMP* CHISCA / /GO GET NEXT CHARACTER NXTCHI ISZ CHICNT /IS IT THIRD CHAR.? JMP .+3 /NO ISZ ADDRES /YES,INCREMENT POINTER & GET JMP CHICYC /A WORD. LAC CHISAV /GET REMAINING CHARACTERS JMP CHICYC+3 /AND DECODE. / CHIEND JMS ESCAPE /WE ESCAPE FROM CHARACTERS NOW. JMP GET-3 / JUMP CLA /A JUMP IN THE CHARACTER TABLE LLS +4 POINTER=NXTMOV-1 TAD POINTER /ADD Y TO POINTER DAC POINTER DZM MARKER /SET MARKER=FIRST HALF JMP POINTER / / TABLE OF PEN MOVES FOR EACH CHARACTER / P0=2 P1=20 ESCP=10 JMP.=11 .DEFINE KL,I1,X1,Y1,I2,X2,Y2 A=X1 B=Y1 C=X2 D=Y2 .IFNEG X1 A=20X1 .ENDC .IFNEG Y1 B=20Y1 .ENDC .IFNEG X2 C=20X2 .ENDC .IFNEG Y2 D=20Y2 .ENDC I1*P1+A*P1+B*P0+I2*P1+C*P1+D .ENDM / TABLE NOW STARTS AA=. CHITBL KL 1,2,6,1,2,-6 /0 A KL 0,-3,+3,1,2,0 /1 KL 0,3,-3,0,ESCP,0 /2 BB=. KL 0,0,+3,1,+3,0 /3 B KL 1,1,-1,1,0,-1 /4 KL 0,-1,2,1,1,+1 /5 KL 1,0,1,1,JMP.,+2 /6 DD=. KL 0,4,1,1,0,4 /7 D KL 1,-1,1,1,-3,0 /10 KL 1,0,-6,1,3,0 /11 KL 1,1,1,0,2,-1 /12 KL 0,ESCP,0,0,0,0 /13 GG=. KL 0,3,3,1,1,0 /14 G KL 1,0,-2,1,JMP.,6 /15 QQ=. KL 0,2,2,1,+2,-2 /16 Q KL 0,-4,0,0,0,0 /17 O0=. KL 0,4,5,1,0,-4 /20 O KL 1,JMP.,2,0,0,0 /21 CC=. KL 0,4,1,1,0,0 /22 C KL 1,-1,-1,1,-2,0 /23 KL 1,-1,+1,1,0,4 /24 KL 1,1,1,1,2,0 /25 KL 1,1,-1,0,2,-5 /26 KL 0,ESCP,0,0,0,0 /27 EE=. KL 0,4,0,1,-4,0 /30 E FF=. KL 1,0,6,1,4,0 /31 F KL 0,-4,-3,1,3,0 /32 KL 0,3,-3,0,ESCP,0 /33 LF=. KL 0,0,-6,0,0,-5 /34 LINE FEED KL 0,ESCP,0,0,0,0 /35 SPACE=. KL 0,6,0,0,ESCP,0 /36 SPACE HH=. KL 1,0,6,0,0,-3 KL 1,4,0,0,0,3 KL 1,0,-6,0,2,0 KL 0,ESCP,0,0,0,0 TT=. KL 0,0,6,1,4,0 KL 0,-4,-6,0,0,0 II=. KL 0,2,6,1,0,-6 KL 0,4,0,0,ESCP,0 UU=. KL 0,0,6,1,0,-5 KL 1,JMP.,2,0,0,0 JJ=. KL 0,0,1,1,0,0 KL 1,1,-1,1,2,0 KL 1,1,1,1,0,5 KL 0,2,-6,0,ESCP,0 KK=. KL 1,0,6,0,4,0 KL 1,-4,-3,1,4,-3 KL 0,2,0,0,ESCP,0 LL=. KL 0,0,6,1,0,-6 KL 1,4,0,0,2,0 KL 0,ESCP,0,0,0,0 MM=. KL 1,0,6,0,4,0 KL 1,0,-6,0,-4,0 VV=. KL 0,0,6,1,2,-6 KL 1,2,6,0,2,-6 KL 0,ESCP,0,0,0,0 NN=. KL 1,0,6,1,4,-6 KL 1,0,6,0,2,-6 KL 0,ESCP,0,0,0,0 RR=. KL 0,2,3,1,2,-3 KL 0,-4,0,1,0,0 PP=. KL 1,0,6,1,3,0 KL 1,1,-1,1,0,-1 KL 1,-1,-1,1,-3,0 KL 0,6,-3,0,ESCP,0 EIG=. KL 0,4,5,1,0,-1 KL 1,-1,-1,0,-2,0 KL 1,-1,-1,1,0,-1 KL 1,JMP.,4,0,0,0 DOLL=. KL 0,2,6,1,0,-6 KL 0,-2,1,1,JMP.,2 SS=. KL 0,0,1,0,0,0 KL 1,1,-1,1,2,0 KL 1,1,1,1,0,1 KL 1,-1,1,1,-2,0 KL 1,-1,1,1,0,1 KL 1,1,1,1,2,0 KL 1,1,-1,0,2,-5 KL 0,ESCP,0,0,0,0 TWO=. KL 0,4,0,1,-4,0 KL 1,0,1,1,3,2 KL 1,JMP.,16,0,0,0 QUST=. KL 0,2,0,1,0,1 KL 0,0,1,1,0,1 KL 1,JMP.,12,0,0,0 NINE=. KL 0,0,1,1,1,-1 KL 1,2,0,1,1,1 KL 1,0,3,0,-4,1 KL 1,0,-1,1,1,-1 KL 1,2,0,1,JMP.,6 THREE=. KL 0,0,1,1,1,-1 KL 1,2,0,1,1,1 KL 1,0,1,1,-1,1 KL 0,-1,0,1,0,0 KL 1,1,0,1,0,0 KL 1,1,1,1,0,1 KL 1,-1,1,1,-2,0 KL 1,-1,-1,0,6,-5 KL 0,ESCP,0,0,0,0 WW=. KL 0,0,6,1,1,-6 KL 1,1,6,1,1,-6 KL 1,1,6,0,2,-6 KL 0,ESCP,0,0,0,0 XX=. KL 1,4,6,0,-4,0 KL 1,4,-6,0,2,0 KL 0,ESCP,0,0,0,0 YY=. KL 0,0,6,1,2,-3 KL 1,2,3,0,-2,-3 KL 1,0,-3,0,4,0 KL 0,ESCP,0,0,0,0 ZZ=. KL 0,4,0,1,-4,0 SEV=. KL 1,4,6,1,-4,0 KL 0,6,-6,0,ESCP,0 ONE=. KL 0,1,0,1,2,0 KL 0,-1,0,1,0,6 KL 1,-1,-1,0,5,-5 KL 0,ESCP,0,0,0,0 FOUR=. KL 0,3,0,1,0,6 KL 1,-3,-4,1,4,0 KL 0,2,-2,0,ESCP,0 FIVE=. KL 0,4,6,1,-4,0 KL 1,0,-3,1,JMP.,4 SIX=. KL 0,0,1,1,0,4 KL 1,1,1,1,2,0 KL 1,1,-1,0,-4,-2 KL 1,1,1,1,2,0 KL 1,1,-1,1,0,-2 KL 1,-1,-1,1,-2,0 KL 1,-1,1,0,6,-1 KL 0,ESCP,0,0,0,0 STAR=. KL 0,0,1,1,4,4 KL 0,0,-4,1,-4,4 KL 0,0,-5,0,0,0 PLUS=. KL 0,2,1,1,0,4 KL 0,-2,-5,0,0,0 MINUS=. KL 0,0,3,1,4,0 KL 0,2,-3,0,ESCP,0 SLASH=. KL 1,4,6,0,2,-6 KL 0,ESCP,0,0,0,0 PERC=. KL 1,4,6,1,-4,0 KL 1,0,-1,1,1,0 KL 1,0,1,0,3,-6 KL 1,0,1,1,-1,0 KL 1,0,-1,1,1,0 KL 0,2,0,0,ESCP,0 OR=. KL 0,2,6,1,0,-4 KL 0,0,-1,1,0,-1 KL 0,4,0,0,ESCP,0 NUMB=. KL 0,1,1,1,0,4 KL 0,2,0,1,0,-4 KL 0,-3,-1,0,0,0 EQ=. KL 0,0,2,1,4,0 KL 0,0,2,1,-4,0 KL 0,6,-4,0,ESCP,0 OPEN=. KL 0,3,0,1,-2,2 KL 1,0,2,1,2,2 KL 0,3,-6,0,ESCP,0 CLOSE=. KL 0,1,0,1,2,2 KL 1,0,2,1,-2,2 KL 0,5,-6,0,ESCP,0 LT=. KL 0,4,0,1,-3,3 KL 1,3,3,0,2,-6 KL 0,ESCP,0,0,0,0 GT=. KL 1,3,3,1,-3,3 KL 0,6,-6,0,ESCP,0 QUOTE=. KL 0,1,6,1,0,-1 KL 0,2,1,1,0,-1 KL 0,3,-5,0,ESCP,0 COMMA=. KL 0,2,1,1,0,-1 KL 0,-2,0,0,JMP.,6 SEMI=. KL 0,2,1,1,0,-1 KL 0,-2,0,0,0,0 COLON=. KL 0,2,4,1,0,1 KL 1,-1,0,1,0,-1 KL 1,1,0,0,-2,-4 PER=. KL 0,2,1,1,0,1 KL 1,-1,0,1,0,-1 KL 1,1,0,0,4,-1 KL 0,ESCP,0,0,0,0 `- ANDS=. ANDS=. KL 0,4,0,1,-4,5 KL 1,1,1,1,1,0 KL 1,1,-1,1,-3,-3 KL 1,0,-1,1,1,-1 KL 1,3,3,0,2,-3 KL 0,ESCP,0,0,0,0 AT=. KL 0,3,1,1,-1,-1 KL 1,-1,0,1,-1,1 KL 1,0,3,1,1,1 KL 1,1,0,1,1,-1 KL 1,0,-2,1,-2,0 KL 1,0,1,1,1,0 KL 1,0,-1,0,4,-2 KL 0,ESCP,0,0,0,0 APOST=. KL 0,2,4,1,0,2 KL 1,-1,0,1,0,-1 KL 1,1,0,0,4,-5 KL 0,ESCP,0,0,0,0 PF=1000 .DEFINE NM,ONE,TWO ONE-CHITBL*PF+TWO-CHITBL .ENDM / / POINTER TABLE / CHIPNT NM AT,AA /@,A NM BB,CC /B,C NM DD,EE /D,E NM FF,GG /F,G NM HH,II /H,I NM JJ,KK /J,K NM LL,MM /L,M NM NN,O0 /N,O NM PP,QQ /P,Q NM RR,SS /R,S NM TT,UU /T,U NM VV,WW /V,W NM XX,YY /X,Y NM ZZ,LF /Z,LF 0 /CR SI 0 /S0 ES NM SPACE,OR / ,! NM QUOTE,NUMB /",# NM DOLL,PERC /$,% NM ANDS,APOST /&,' NM OPEN,CLOSE /(,) NM STAR,PLUS /*,+ NM COMMA,MINUS /,,- NM PER,SLASH /.,/ NM O0,ONE /0,1 NM TWO,THREE /2,3 NM FOUR,FIVE /4,5 NM SIX,SEV /6,7 NM EIG,NINE /8,9 NM COLON,SEMI /:,; NM LT,EQ /<,= NM GT,QUST />,? / / / / PATCH FOR VECTOR CONTINUE / VECT1 JMS ESCAPE JMP GET / /THAT IS ALL / /VECTOR MODE / VECTOR LAC* ADDRES DAC DELTAX# RAL SZL!RAL /SKIP IF NO ESCAPE BIT. JMS ESCAPE SZL /TEST FOR INT. BIT AND EXECUTE. JMS PENDWN /THIS OR JMS PENUP /THIS. DZM SNDY# /SET SIGN DELTA Y + (ARBITRARY) SPA!RAL /IF SIGN = 1 ISZ SNDY /SET NEGATIVE. LMQ LLS +7 AND (000177 DAC DELTAY# LACQ RAL /SIGN DELTAX TO LINK LAC SCALEF /GET SCALE FACTOR (0-3) TAD (LLS!CLQ DAC SCINST LAC DELTAX /MODIFY DELTA X AND Y BY SCALE FACTOR. AND (177 /DELETE GARBAGE XCT SCINST SZL JMS TWOCMA TAD XREGST DAC XREGST LAC SNDY RAR LAC DELTAY SCINST LLS SZL JMS TWOCMA TAD YREGST DAC YREGST JMP GO TWOCMA XX CMA TAD (1 JMP* TWOCMA / /SUBROUTINE MODE / SUBROT LAC* ADDRES LRS +15 DAC MODE LAC* ADDRES AND (17777 DAC TADDRS# LAC ADDRES AND (60000 /GET BANK BITS XOR TADDRS /MAKE CORRECT 15 BIT ADDRESS DAC TADDRS LAC* ADDRES RAL SNL!RAL /CHECK FIRST BIT OF OPCODE. JMP DDS /OPCOD 0 - INDICATES DDS. SNL JMP DJPCOD /OPCD 10 = DJP DJS ISZ ADDRES /OPCD 11, INCREMENT RETURN ADDRESS. LAC (1 DAC SAVE /ENTER SUBROUTINE MODE. LAC ADDRES AND (17777 /ASR IS ONLY 13 BITS DAC ASR /SAVE RETURN ADDRESS LAC TADDRS DAC ADDRES /ADDRESS OF NEXT WORD JMP CHECK DJPCOD LAC TADDRS /OPCODE=10 DAC ADDRES /ADDRESS OF NEXT WORD. JMP CHECK DDS SNL JMP ERROR2 /OPCODE =00 IS ILLEGAL DZM SAVE /CLEAR SUBROUTINE INDICATOR LAC (DJP /OPCODE=01, FORM RETURN. XOR ASR /JUMP INSTRUCTION DAC* TADDRS /STORE RETURN JMP JMP GET / /ESCAPE - MARKS RETURN JUMP FROM DISPLAY SUBROUTINES / ESCAPE XX DZM MODE /SET MODE TO PARAMETER DAC SAVACC LAC SAVE SZA ISZ SAVE LAC SAVACC JMP* ESCAPE XREGST 0 YREGST 0 .END