LEX 'PLOTLEX' ID #5F MSG 0 POLL 0 ENTRY COLORr CHAR #D ENTRY CSIZEr CHAR #D ENTRY DRAWr CHAR #D ENTRY HOMEr CHAR #D ENTRY LBLr CHAR #D ENTRY LDIRr CHAR #D ENTRY LTYPr CHAR #D ENTRY MOVEr CHAR #D ENTRY PLTr CHAR #D ENTRY RDRAWr CHAR #D ENTRY RESETr CHAR #D ENTRY RMOVEr CHAR #D ENTRY STORGr CHAR #D KEY 'COLOR' TOKEN 1 KEY 'CSIZE' TOKEN 2 KEY 'DRAW' TOKEN 3 KEY 'HOME' TOKEN 4 KEY 'LABEL' TOKEN 5 KEY 'LDIR' TOKEN 6 KEY 'LTYPE' TOKEN 7 KEY 'MOVE' TOKEN 8 KEY 'PLOTTER' TOKEN 9 KEY 'RDRAW' TOKEN 10 KEY 'RESET' TOKEN 11 KEY 'RMOVE' TOKEN 12 KEY 'SETORG' TOKEN 13 ENDTXT * Two important equates required for RESET PLOTTER LEXID EQU #5F must be the LEX ID of this LEX PTOKEN EQU 9 must be the token # for PLOTTER in this LEX * definition of xternal labels =GTEXT+ EQU #05199 =OUTEL1 EQU #05300 =WRDSCN EQU #02C2A =tXWORD EQU #EF =REST* EQU #03035 =IS-PLT EQU #2F7A2 =MLFFLG EQU #2F870 =STMTR0 EQU #2F871 =STMTR1 EQU #2F881 =pPRTCL EQU #0E =PLOTt EQU #3 =eXWORD EQU #0023 =POLL EQU #12337 =ATNFLG EQU #2F442 =FLGREG EQU #2F6E9 =eIVARG EQU #0B =STRGCK EQU #036BA =REV$ EQU #1B38E =DSPBUF EQU #09723 =D1=AVE EQU #18651 =CSRC4 EQU #1B41E =CSLC6 EQU #1B432 =ARGST- EQU #0E910 =RJUST EQU #12AE2 =BSERR EQU #0939A =MGOSUB EQU #1AF01 =BF2DSP EQU #01C0E =DSPCHC EQU #01C3C =NXTSTM EQU #08A48 =FIXDC EQU #05493 =CSRC6 EQU #1B418 =OUTELA EQU #05303 =FIXP EQU #02A6E =NUMCK EQU #0369D =IVPARe EQU #02E3F =tCOMMA EQU #F1 =EXPEXC EQU #0F186 =RESPTR EQU #03172 =POP1R EQU #0E8FD mgosub GOVLNG =MGOSUB d1=ave GOVLNG =D1=AVE numck GOVLNG =NUMCK comck1 P= 0 LC(2) =tCOMMA ?A=C B RTNYES RTN * parse routines PLTp GOSUB JUMPER CON(5) #7468 RTN RESETp GOSBVL =WRDSCN CON(2) =tXWORD CON(2) LEXID CON(2) PTOKEN REL(3) OK CON(2) #00 GOVLNG =REST* OK RTNCC P2p GOSUB numck GOSUB comck1 GONC perr P1p GOVLNG =FIXP P0p RTNCC STRp GOSBVL =STRGCK GOVLNG =RESPTR perr GOVLNG =IVPARe * decompile routines PLTd GOSUB JUMPER CON(5) #7B3E RTN RESETd ST=0 9 GOSBVL =GTEXT+ GOVLNG =OUTEL1 EXPd GOVLNG =FIXDC P0d GOVLNG =OUTELA * This subroutine pops an integer off stack (Abs<1E3) & returns its three * digits in C[14:12] with the sign in C[S] GETARG GOSBVL =ARGST- GOC ivarge D1=D1+ 16 LCHEX #003 A=A+1 XS A=A-1 XS GOC ARG10 ?A>=C X GOYES ivarge ARG10 B=A S GOSBVL =RJUST C=A W GOSBVL =CSRC4 C=B S SETHEX RTN ivarge LC(4) =eIVARG bserr GOVLNG =BSERR * This subroutine sends the ASCII representation of an integer (refer to GETARG * for the format) to the loop * SNDARG R2=C ST=0 6 ?C=0 S GOYES SND10 LCASC '-' GOSUB sndchc C=R2 SND10 SETHEX ST=0 4 P= 5 LCHEX #2 SND20 CSL W P= 0 CPEX 6 C=P 5 R2=C ?C#0 S GOYES SND30 ?ST=0 4 GOYES SND40 SND30 ST=1 4 P= 0 LCHEX #3 CSLC GOSUB sndchc C=R2 SND40 P= 5 C=C-1 P GONC SND20 P= 0 ?ST=1 4 RTNYES LCASC '0' GONC sndchc sndcom LCASC ',' sndchc GOSUB JUMPER CON(5) #6AAE RTNNC errorx ?P= 0 GOYES error1 ?P= 1 GOYES error1 ?P= 2 GOYES error1 ?P# 4 GOYES error0 GOSUB JUMPER CON(5) #3B62 ?ST=0 12 GOYES noabrt RSTK=C CD0EX D0=(5) =ATNFLG C=DAT0 S D0=C C=RSTK ?C=0 S GOYES noabrt C=C+1 S GONC error- noabrt GOSUB JUMPER CON(5) #6791 GONC error- ?P# 4 GOYES error1 error- P= 4 error0 C=P 0 P= 3 error1 C=P 1 P= 2 LC(2) #FF P= 0 GOTO bserr P0Gr GOSUB setup GOSUB GR?+ C=RSTK D1=C C=DAT1 A GOSUB sndchc term GOTO TERM P1r GOSUB mgosub CON(5) =EXPEXC GOSUB d1=ave GOSUB GETARG R3=C GOSUB setup GOSUB GR? C=RSTK D1=C C=DAT1 A GOSUB sndchc C=R3 GOSUB SNDARG ?ST=1 5 GOYES term LC(2) #0D GOSUB sndchc LC(2) 17 GOTO TERMC P1Gr GOSUB mgosub CON(5) =EXPEXC GOSUB d1=ave GOSUB GETARG R3=C GOSUB setup GOSUB GR?+ C=RSTK D1=C C=DAT1 A GOSUB sndchc GOTO TERM1 P2Gr GOSUB mgosub CON(5) =EXPEXC GOSUB d1=ave GOSUB GETARG R3=C GOSUB GETARG R4=C GOSUB setup GOSUB GR?+ C=RSTK D1=C C=DAT1 A GOSUB sndchc C=R4 GOSUB SNDARG GOSUB sndcom TERM1 C=R3 GOSUB SNDARG TERM LC(2) #0D TERMC GOSUB sndchc GOSUB JUMPER CON(5) #1022 GOTO nxtstm GR? GOSUB MODE ?ST=1 5 RTNYES LC(2) 18 GOTO sndchc MODE D1=(5) (=FLGREG)+14 C=DAT1 B ST=C RTN GR?+ GOSUB GR? GRsub GOSUB MODE ST=1 5 C=ST DAT1=C B RTN * run routines REL(5) EXPd REL(5) P2p MOVEr GOSUB P2Gr NIBASC 'M' REL(5) EXPd REL(5) P2p DRAWr GOSUB P2Gr NIBASC 'D' REL(5) EXPd REL(5) P2p RMOVEr GOSUB P2Gr NIBASC 'R' REL(5) EXPd REL(5) P2p RDRAWr GOSUB P2Gr NIBASC 'J' REL(5) P0d REL(5) P0p STORGr GOSUB P0Gr NIBASC 'I' REL(5) EXPd REL(5) P1p COLORr GOSUB P1r NIBASC 'C' REL(5) EXPd REL(5) P1p CSIZEr GOSUB P1r NIBASC 'S' REL(5) P0d REL(5) P0p HOMEr GOSUB P0Gr NIBASC 'H' REL(5) RESETd REL(5) RESETp RESETr GOSUB setup GOSUB MODE ST=0 5 C=ST DAT1=C B LC(2) 18 GOSUB sndchc LCASC 'A' GOTO TERMC REL(5) EXPd REL(5) STRp LBLr GOSUB mgosub CON(5) =EXPEXC GOSUB setup GOSUB GR?+ LCASC 'P' GOSUB sndchc GOSUB d1=ave GOSBVL =REV$ D1=D1+ 1 C=DAT1 S ?C#0 S GOYES term. D1=D1+ 1 A=DAT1 A ASRB D1=D1+ 14 ST=0 8 GOSUB JUMPER CON(5) #691A GONC term. GOTO errorx term. GOTO TERM REL(5) EXPd REL(5) P1p LDIRr GOSUB P1Gr NIBASC 'Q' REL(5) EXPd REL(5) P1p LTYPr GOSUB P1Gr NIBASC 'L' REL(5) PLTd REL(5) PLTp PLTr LC(5) =IS-PLT GOSUB JUMPER CON(5) #10D6 RTN setup D0=(5) =IS-PLT C=DAT0 7 D0=(4) (=STMTR1)+2 DAT0=C 7 D0=(4) =MLFFLG NIBHEX 31F CON(1) =PLOTt DAT0=C B GOSBVL =POLL CON(2) =pPRTCL GOC Err ?XM=0 GOYES OKAY LC(4) =eXWORD Err GOTO bserr OKAY D1=(5) (=STMTR0)+1 C=DAT1 A D1=C D1=D1- 5 A=DAT1 A LC(5) #5 ?A=C A GOYES nxtstm GOSUB JUMPER CON(5) #3B62 RTNCC nxtstm GOVLNG =NXTSTM * JUMPER - Jump to a routine in HP-IL ROM =JUMPER * =SNAPBF EQU #2F7F0 =bLEX EQU #BFC =I/OFND EQU #118BA =LEXPIL EQU #FF * RSTK=C CD1EX D1=(5) =SNAPBF DAT1=C A D1=(2) (=SNAPBF)+5 C=RSTK DAT1=C W D1=(4) (=SNAPBF)+21 DAT1=A W D1=(2) (=SNAPBF)+37 C=B A CPEX 5 P= 6 C=0 P GONC JUMP05 C=C-1 P JUMP05 P= 7 C=0 P C=C-1 P DAT1=C 8 SETHEX P= 0 LC(3) =bLEX GOSBVL =I/OFND GONC JUMP90 LC(2) =LEXPIL B=C A A=0 A A=A+1 A JUMP10 C=DAT1 6 ?C=0 B GOYES JUMP90 ?B#C B GOYES JUMP20 CSR W CSR A ?A