File PAL8.PA (PAL assembler source file)

Directory of image this file is from
This file as a plain text file

/PAL8 ASSEMBLER FOR PS8 MONITOR SYSTEM

/NOVEMBER 5, 1970	VERSION 2

/MARK BRAMHALL

/COPYRIGHT 1970,1971 DIGITAL EQUIPMENT CORP.

/COMMAND DECODER RULES: /*BINARY(.BN),LISTING(.LS)<SOURCE(.PA),... /OPTIONS: /S NO SYMBOL TABLE - ONLY IF LISTING /N NO LISTING - ONLY IF LISTING /L LOAD AFTER - "PAL8BN.TM" CREATED IF NO BINARY /G LOAD+GO AFTER - SAME AS /L /D DDT TYPE SYMBOL - ONLY IF LISTING /T CR-LF NOT FF - ONLY IF LISTING (CR-LF AUTOMATIC FOR TTY) /H NO PAGING - ONLY IF LISTING /PSEUDO-OPS: /DECIMAL RADIX TO BASE 10 /DEVICE 2 WORD DEVICE CODE /EJECT SAME AS FF IN LISTING /ENPUNCH ENABLE PUNCHING /EXPUNGE REMOVE ALL SYMBOLS /FIELD SET FIELD /FILENAME 4 WORD FILE CODE /FIXMRI DEFINE FIXED MEMORY REFERENCE INSTRUCTION /FIXTAB MAKE SYMBOLS PERMANENT /IFDEF CONDITIONAL ON DEFINITION /IFNDEF CONDITIONAL ON UNDEFINED /IFNZRO CONDITIONAL ON NON-ZERO /IFZERO CONDITIONAL ON ZERO /NOPUNCH INHIBIT PUNCHING /OCTAL RADIX TO BASE 8 /PAGE DEFINE CURRECT LOCATION /PAUSE NOP /TEXT 6 BIT TEXT /XLIST TOGGLE LISTING INHIBIT /ZBLOCK ZERO BLOCK /SYMBOL LAYOUT: / WORD 1 BIT 0 FIXTABED / BIT 1 "I" OR "Z" / BITS 3-11 CHARS 1 AND 2 / / WORD 2 BIT 0 FIXMRI / BITS 2-11 CHARS 3 AND 4 / / WORD 3 BIT 0 PSEUDO-OP / BITS 2-11 CHARS 5 AND 6 / / WORD 4 BITS 0-11 OCTAL VALUE / /CHARS ARE STORED AS: / A TO Z ARE 01 TO 32 / 0 TO 9 ARE 33 TO 44 / / CHAR1^45+CHAR2
/DEFINTIONS MDATE=7666 MPARAM=7643 DCB=7760 JSBITS=7746 IZ="I-240^100+"Z-240 /ILLEGAL PAGE ZERO REFERENCE US="U-240^100+"S-240 /UNDEFINED SYMBOL IP="R-240^100+"D-240 /G.B. SE="S-240^100+"E-240 /SYMBOL TABLE EXCEEDED ZE="Z-240^100+"E-240 /PAGE ZERO EXCEEDED PE="P-240^100+"E-240 /SAME PAGE EXCEEDED IC="I-240^100+"C-240 /ILLEGAL CHARACTER ID="I-240^100+"D-240 /ILLEGAL DEFINITION BE="B-240^100+"E-240 /PUSH-DOWN OVERFLOW DE="D-240^100+"E-240 /DEVICE ERROR DF="D-240^100+"F-240 /DEVICE FULL LD="L-240^100+"D-240 /NO "ABSLDR.SV" FOUND IE="I-240^100+"E-240 /ILLEGAL EQUATE PH="P-240^100+"H-240 /PHASE ERROR II="I-240^100+"I-240 /ILLEGAL INDIRECT RD="R-240^100+"D-240 /REDEFINITION UO="U-240^100+"S-240 /GEORGE BERRY
/PAGE ZERO FIELD 0 *10 PDLXR, PDLST /PUSH-DOWN XREG TAGXR, 0 /TAG INDEX REG XREG1, 0 /GENERAL XREG XREG2, 0 /GENERAL XREG LAST1, 0 /LAST DEFINED SYMBOL LAST2, 0 LAST3, 0 LAST4, 0 *20 TAG1, 0 /TAG STORAGE TAG2, 0 TAG3, 0 LITPTR, 200 /LITERAL POINTER RADIX, 0 /NON-ZERO IF DECIMAL MODE PUNCHX, 0 /NON-ZERO IF NO PUNCHING XLISTX, 0 /NON-ZERO IF NO LISTING LOC, 200 /CURRECT LOCATION OP, 0 VALUE, 0 /EXPRESSION VALUE VALUE2, 0 /EXPRESSION OPERAND TXTSWT, 0 TXTPTR, 0 /TEXT POINTER CHAR, 0 /CURRENT CHARACTER THISPG, 0 /OVERFLOW PAGE EDITPG, 0 TEMP, 0 /TEMPORARY TEMP1, 0 TEMP2, 0 TEMP3, 0 OCHAR, OUTPUT /OUTPUT ROUTINE ICHAR, INPUT /INPUT ROUTINE OERROR, OTYPEO /1=OTYPEO; 2=OTYPEO; 3=LISTOUT PASS, -1 /-1; 0; 1 IOMON, 200 CONDSW, 0 EXPIND, 0 CHKSUM, 0 IZIND, 0 THISTG, 0 HIGHTG, 136 LINCNT, 0 ALPHAI, 0 GETCI, 0 LSTCNT, 0 UNDFSW, 0 INCTL, 601 LINKSW, 0 LININD, 0
PAGE /GET A TAG AND FIND IT IN THE TABLE ROUTINE /CALL WITH AN ALPHEBETIC CHARACTER IN "CHAR" /IT BUILDS THE TAG AND FINDS IT IN THE TABLE /THE RESULT IS STORED IN "TAG1","TAG2",ETC. /IF THE TAG IS NOT IN THE TABLE "THISTG" POINTS / TO WHERE IT SHOULD BE /"VALUE2" HAS THE TAG'S VALUE /"THISTG" IS LEFT WITH THE TAG'S NUMBER NAME1, JMP I .+2 /BUILDING AREA NAME2, JMP I .+2 NAME3, BEGIN GETTA2, BEGIN+1 /BUILDING SWITCH AND OVERFLOW PROTECT GETTAG, 0 DCA NAME1 /ZERO BUILD AREA DCA NAME2 DCA NAME3 TAD [NAME1-1 DCA GETTA4 /SET POINTER FOR BUILDING DCA GETTA2 /ZERO SWITCH GETTG1, TAD CHAR /GET THE CHARACTER AND [77 /MAKE IT 01-32 OR 60-71 TAD (-32 SMA SZA /A TO Z WILL SKIP TAD (-25 /MAKE 60-71 INTO 33-44 TAD (32 /IT IS NOW 01-32 OR 33-44 ISZ GETTA2 /LEFT SIDE? JMP GETTA3 /YES TAD I GETTA4 /NO - RIGHT SIDE DCA I GETTA4 /BUILD THE WORD GETTA1, JMS I [GETC JMS I [TSTALN /TEST ALPHANUMERIC JMP GETTG1 /IT IS SO KEEP BUILDING TAD HIGHTG /NUMBER OF HIGHEST TAG CLL RAR /DIVIDE BY 2 DCA TEMP2 /SAVE DIFFERENCE DCA THISTG /START AT TAG ZERO CLL CML /LINK MUST BE ON INITIALLY DCA TEMP1 GETTG2, SZL JMP GETTG3 GETTG4, DCA TEMP1 SNL ISZ TEMP1 TAD TEMP2 SNL CIA TAD THISTG DCA THISTG TAD TEMP2 CLL RAR SNA ISZ TEMP1 SNA IAC DCA TEMP2 GETTG6, JMS I [FINDTG /GET THE TAG TAD [1777 /MASK AND TAG1 /GET WORD 1 CLL CIA TAD NAME1 /CHECK IT SZA CLA JMP GETTG2 /NOGO CLL CLA CMA RAR AND TAG2 /WORD 2 CLL CIA TAD NAME2 SZA CLA JMP GETTG2 /NOGO CLL CLA CMA RAR AND TAG3 CLL CIA TAD NAME3 SZA CLA JMP GETTG2 /NOGO ISZ GETTAG JMP I GETTAG /EXIT GETTG3, CLL CLA CMA RAL TAD TEMP1 SZA CLA JMP GETTG4 ISZ THISTG DCA VALUE2 DCA TAG1 DCA TAG2 DCA TAG3 JMP I GETTAG GETTA3, ISZ GETTA4 /BUMP POINTER DCA I GETTA4 /SAVE TIMES 1 TAD I GETTA4 CLL RTL /TIMES 4 DCA GETTA2 /SAVE TIMES 4 TAD GETTA2 CLL RTL /TIMES 20 RAL /TIMES 40 TAD GETTA2 /40+4 = TIMES 44 TAD I GETTA4 /44+1 = TIMES 45 DCA I GETTA4 /SET LEFT SIDE TAD GETTA4 TAD (-GETTA2 RAL CLA CML CMA RAL /-1 IF TOO MANY; -2 IF O.K. DCA GETTA2 ISZ GETTA2 JMP GETTA1 CLA CMA TAD GETTA4 DCA GETTA4 /BACK UP POINTER JMP GETTA1 GETTA4, NAME1-1
/IGNORE SPACES ROUTINE SPNOR, 0 TAD CHAR /GET THE CHARACTER TAD [-" /IS IT A SPACE? SZA CLA JMP I SPNOR /NO - EXIT JMS I [GETC /YES - GET NEXT JMP SPNOR+1 /LOOP /DECIMAL AND OCTAL AND PAUSE ROUTINES DECIMX, CLA IAC /NON-ZERO FOR DECIMAL OCTALX, DCA RADIX /ZERO FOR OCTAL PAUSEX, JMP I [LOOKEX /EXIT FROM LOOK /XLIST ROUTINE XLISTY, TAD XLISTX CMA DCA XLISTX JMP I [LOOKEX /NOPUNCH AND ENPUNCH ROUTINES NOPUNX, CLA IAC /NON-ZERO FOR NO PUNCH ENPUNX, DCA PUNCHX /ZERO FOR PUNCHING JMP I [LOOKEX /EXIT FROM LOOK RTL6, 0 CLL RTL RTL RTL JMP I RTL6
PAGE /EJECT ROUTINE EJECTX, ISZ THISPG /OVERFLOW PAGE TAD PASS SMA SZA CLA JMS I [FORMFD /DO A FORM FEED JMP I [LOOKEX /EXIT FROM LOOK /ZBLOCK ROUTINE ZBLOCX, JMS I [SPNOR /IGNORE SPACES JMS I [EXP /GET THE EXPRESSION TAD VALUE CIA SNA JMP I [LOOKEX DCA TEMP3 ZBLOCY, JMS I [PUNBIN TAD PASS SMA SZA CLA DCA I (PUNMOD ISZ TEMP3 JMP ZBLOCY TAD (JMS I [PUNONE DCA I (PUNMOD JMP I [LOOKEX /FIELD ROUTINE FIELDX, JMS I [SPNOR JMS I [DUMPS /DUMP SAME PAGE LITERALS JMS I [DUMPZ /DUMP PAGE ZERO LITERALS JMS I [EXP /GET EXPRESSION TAD PASS SZA CLA JMP FIELDY TAD VALUE AND [7 CLL RTL RAL /GET FOR PUNCHING TAD [7700 JMS I OCHAR /OUTPUT THE FIELD FIELDY, JMS I [CLEAN /CLEAN UP THINGS TAD [200 /SET ORIGIN OF 0200 JMP STAR1 /PAGE ROUTINE PAGEX, JMS I [DUMPS /DUMP SAME PAGE LITERALS JMS I [SPNOR TAD CHAR SPA CLA /ANY EXPRESSION? JMP PAGEY /NO JMS I [EXP /GET EXPRESSION TAD VALUE JMS I [RTL6 JMP STAR1-1 PAGEY, TAD LOC TAD [177 AND [7600 /FIND NEXT PAGE STAR1, JMS I [PUNORG JMS I [FINDSP TAD [LITBUF DCA TEMP TAD I TEMP DCA LITPTR DCA LAST1 JMP I [LOOKEX
EQUAL, ISZ ALPHAI SKP JMS I [INSRTG EQUAL3, JMS I [GETC TAD THISTG JMS I [PUSHA TAD ALPHAI JMS I [PUSHA JMS I [SPNOR JMS I [EXP TAD I PDLXR DCA ALPHAI TAD I PDLXR DCA THISTG JMS I [FINDTG ISZ UNDFSW JMP .+3 JMS I [ERROR IE TAD ALPHAI SNA CLA JMP EQUAL2 EQUAL1, TAD VALUE CIA TAD VALUE2 SNA CLA JMP EQUAL2 TAD TAG1 SMA CLA JMP EQUAL2 JMS I [ERROR RD EQUAL2, TAD VALUE DCA VALUE2 JMS I [PUTTAG JMP I [LOOKEX FIXMRX, JMS I [SPNOR JMS I [TSTALP JMP FIXMR1 JMS I [ERROR IC TAD CHAR SPA CLA JMP I [LOOKEX JMS I [GETC JMP FIXMRX+1 FIXMR1, JMS I [GETTAG JMP FIXMR3 CLA CMA DCA ALPHAI CLL CLA CMA RAR AND TAG2 TAD [4000 DCA TAG2 JMS I [PUTTAG JMS I [SPNOR FIXMR2, TAD CHAR SPA CLA JMP I [LOOKEX TAD CHAR TAD [-"= SNA CLA JMP EQUAL3 JMS I [ERROR IC JMS I [GETC JMP FIXMR2 FIXMR3, JMS I [INSRTG JMP FIXMR1+3
PAGE /GET A CHARACTER ROUTINE /READS FROM THE INPUT FILES AND PASSES THE MODIFIED CHARACTERS /TO THE PROGRAM /IT ALSO PRINT THE LATEST LINE IF IT HAS NOT BEEN PRINTED GETC, 0 ISZ TXTPTR /POINT TO NEXT GETC7, TAD I TXTPTR /GET NEXT CHARACTER SZA /IS IT 0? JMP GETC8 /NO - MORE ARE IN THIS LINE TAD PASS SPA SNA CLA JMP GETC1 TAD [LINBUF DCA TXTPTR /RESET POINTER TO BEGINNING TAD I TXTPTR /GET 1ST CHARACTER SNA /IS IT 0? JMP GETC1 /YES - LINE HAS BEEN PRINTED TAD [-215 /IS IT 215? SNA CLA JMP GETC2 /YES - DO NOT PRINT THE SPACES TAD [211 JMS I OERROR TAD [211 JMS I OERROR GETC2, JMS LINPRT /NOW PRINT THE LINE GETC1, TAD (-121 DCA TXTSWT TAD (LINBUF-1 DCA TXTPTR /RESET POINTER ISZ TXTPTR GETC6, JMS I ICHAR /GET INPUT JMP GETC4 /215 DCA I TXTPTR /STORE THE CHARACTER ISZ TXTSWT /TOO MANY? JMP GETC6-1 /NO CLA CMA /YES DCA TXTSWT JMP GETC6 GETC4, DCA I TXTPTR /SET END ISZ TXTPTR DCA I TXTPTR /SET END OF LINE TAD [LINBUF DCA TXTPTR /RESET POINTER CLA CMA DCA TXTSWT /RESET SWITCH JMP GETC7 /GET THAT CHARACTER GETC8, TAD [-215 SNA JMP GETC12 TAD GETCI TAD (215-"/ SNA JMP GETC13 /"/" IS END TAD ("/-"; SNA JMP GETC12 /";" IS END TAD (";-211 SNA JMP GETC10 /TAB IS SPACE TAD (211-" SZA CLA JMP GETC9 /NOT ANYTHING SPECIAL GETC10, ISZ TXTSWT /2ND OCCURANCE? JMP GETC+1 /YES - IGNORE TAD [" DCA CHAR /NO - GIVE A SPACE JMP I GETC GETC16, ISZ CONDSW JMP GETC15 GETC17, TAD [LINBUF+120 DCA TXTPTR GETC12, CLL CLA CML RAR GETC9, TAD I TXTPTR DCA CHAR /SET THE CHARACTER CLA CMA DCA TXTSWT /SET THE SWITCH JMP I GETC GETC13, TAD CONDSW SNA CLA JMP GETC17 GETC15, ISZ TXTPTR TAD I TXTPTR TAD [-215 SNA JMP GETC17 TAD (215-"> SNA JMP GETC16 TAD (">-"< SZA CLA JMP GETC15 CLA CMA TAD CONDSW DCA CONDSW JMP GETC15
LINPRT, 0 /PRINT THE LINE TAD (LINBUF-1 DCA XREG1 /POINT TO LINE LINPR1, TAD I XREG1 SNA JMP LINPR2 /YES END JMS I OERROR /OUTPUT IT JMP LINPR1 LINPR2, DCA I [LINBUF /0 MEANS THAT IT HAS BEEN PRINTED JMP I LINPRT PHASE, TAD (PH MONERR, DCA MONER1 TAD (OTYPEO DCA OERROR JMS I [ERROR MONER1, 0 JMP I [7600 FINDSP, 0 TAD LOC AND [7600 JMS I [RTL6 JMP I FINDSP OUFILE, ZBLOCK 5
PAGE LISOUT, 0 ISZ LISCNT JMP LISOU1 ISZ LINCNT JMP LISOU1 DCA LISOU2 ISZ THISPG HSWIT1, JMS I [FORMFD /0 IF /H ISZ LINCNT TAD LISOU2 LISOU1, TAD [-215 SNA JMP LISOU3 TAD [215 JMS I OCHAR JMP I LISOUT LISOU3, CLA CMA DCA LISCNT JMS CRLF JMP I LISOUT LISOU2, 0 LISCNT, -1
FORMFD, 0 HSWITC, JMP FORMF1 /0 IF /T OR TTY:; JMP FORMF3 IF /H TAD LINCNT TAD [-4 DCA LINCNT JMS CRLF ISZ LINCNT JMP CRLF1 TAD (-6 DCA LINCNT TAD ["- JMS I OCHAR ISZ LINCNT JMP .-3 TAD [-4 DCA LINCNT FORMF2, JMS CRLF ISZ LINCNT JMP CRLF1 TAD (-70 DCA LINCNT FORM22, TAD [HEADER-1 DCA XREG2 TAD [40 DCA LSTCNT FORM30, TAD I XREG2 SNA JMP FORM20 JMS I OCHAR TAD LSTCNT TAD [-100 SZA CLA JMP FORM30 TAD [40 JMP FORM22 FORM20, TAD EDITPG JMS FORMF4 TAD THISPG SNA CLA FORM21, JMP FORMF3 TAD ["- JMS I OCHAR TAD THISPG JMS FORMF4 FORMF3, JMS CRLF JMS CRLF JMP I FORMFD FORMF4, 0 DCA FORMF6 TAD (FORMF8 DCA CRLF CLL CLA CMA RTL DCA FORM11 FORM12, DCA FORMF7 JMP .+3 FORMF5, DCA FORMF6 ISZ FORMF7 TAD FORMF6 TAD I CRLF SMA JMP FORMF5 CLA ISZ CRLF TAD FORMF7 SNA JMP FORM10 FORMF9, TAD ["0 JMS I OCHAR CLL CLA CML RAR FORM10, ISZ FORM11 JMP FORM12 TAD FORMF6 TAD ["0 JMS I OCHAR JMP I FORMF4 FORMF6, 0 FORMF7, 0 FORMF1, CLL CLA CMA DCA LINCNT CLA CMA JMP FORMF2
DECIMAL FORMF8, -1000 -100 -10 OCTAL CRLF, 0 TAD [215 JMS I OCHAR CRLF1, TAD [212 JMS I OCHAR JMP I CRLF FORM11, PUNORG, 0 DCA LOC TAD PASS SZA CLA JMP I PUNORG TAD LOC CLL CML JMS I [PUNOUT JMP I PUNORG STAR2, TAD OP JMS I [PUNORG DCA LAST1 JMP I [LOOKEX
PAGE PUNBIN, 0 DCA VALUE JMS I [FINDSP TAD [LITBUF DCA TEMP2 TAD LOC AND [177 DCA TEMP TAD I TEMP2 CIA TAD TEMP ISZ TEMP SPA CLA JMP ONEOK TAD TEMP DCA I TEMP2 JMS I [FINDSP SZA CLA JMP .+4 JMS I [ERROR ZE JMP ONEOK JMS I [ERROR PE ONEOK, JMS I [FINDSP TAD [TPINST DCA TEMP2 TAD TEMP CIA TAD I TEMP2 SMA CLA JMP .+3 TAD TEMP DCA I TEMP2 PUNMOD, JMS I [PUNONE TAD TEMP AND [177 SZA CLA JMP ONEOK2 JMS I [FINDSP TAD [LITBUF DCA TEMP2 TAD I TEMP2 DCA LITPTR ONEOK2, ISZ LOC NOP JMP I PUNBIN
HEADER=. OUFIGR, 0 SNL CLA TAD [400 TAD OUFDEV DCA I OUFINP TAD I OUFINP CLL RAR CIA TAD OU3501 JMP I OUFIGR OU3501, 3501 OUFDEV, OUDEVH OUFINP, INBUFP EXPUA1, EXPUN2 EXPUA2, EXPUNY EXPUA3, EXPUN1 EXPUA4, CLL CLA CML RTR AND TAG1 SNA CLA JMP .+5 EXPUNZ, TAD I EXPUA1 DCA THISTG JMS I [PUTTAG ISZ I EXPUA1 ISZ I EXPUA3 ISZ TEMP3 JMP I EXPUA2 CLA CMA TAD I EXPUA1 DCA HIGHTG JMP I [LOOKEX *HEADER+40 " ;" ;"P;"A;"L;"8;" ;" DATE, " ;" ;" ;" ;" ;" ;" ;" " ;" ;"P;"A;"G;"E;" ;0 PDLND=.
PAGE LINBUF=.+14 PDLST=LINBUF-1 LITBUF=LINBUF+122 TPINST=LITBUF+40 LITBF1=TPINST+40-17 LITBF2=LITBF1+200-17 IFNZRO LITBF2&177 < THIS IS AN ERROR!! > BEGIN, SKP CLA JMP NOCD CIF 10 JMS I IOMON 5 2001 NOCD, CDF 10 TAD I (7604 SNA TAD (216 DCA I (7604 TAD I (7611 SNA TAD (1423 DCA I (7611 TAD I (MPARAM CDF AND (400 SNA CLA JMP BEGIN1 DCA I (DSWIT3 /D DCA I (DSWIT4 JMP .+3 BEGIN1, DCA I (DSWIT1 DCA I (DSWIT2 TAD I (JSBITS AND (6777 TAD (1000 DCA I (JSBITS CDF 10 TAD I (MPARAM+1 CDF AND (20 SNA CLA JMP BEGINA DCA I (HSWITC /T JMP BEGIN2 BEGINA, TAD [7605 JMS I (OTYPE AND (770 SNA CLA DCA I (HSWITC /TTY: BEGIN2, CDF 10 TAD I (MPARAM+1 CDF AND (40 SZA CLA DCA I (SSWITC /S BEGIN3, CDF 10 TAD I (MPARAM+1 CDF AND (2000 SNA CLA JMP BEGIN4 DCA I (NSWITC /N JMP BEGIN4+6 /ALSO /H BEGIN4, CDF 10 TAD I (MPARAM CDF AND (20 SNA CLA JMP BEGINB TAD I (FORM21 /H DCA I (HSWITC DCA I (HSWIT1 BEGINB, CDF 10 TAD I (MDATE CDF SNA JMP BEGINZ DCA TEMP TAD (DATE-1 DCA XREG1 TAD TEMP CLL RTL RTL RAL JMS I (BEGINC TAD TEMP RTR RAR JMS I (BEGINC TAD ("7 DCA I XREG1 TAD TEMP AND [7 TAD ["0 DCA I XREG1 BEGINZ, TAD [7600 JMS I (OTYPE SMA CLA TAD (-70 TAD (-10 DCA I (LEADER JMP I (BEGIN5
PAGE BEGIN5, CDF TAD I BLK1 CDF 10 DCA I BLK2 ISZ BLK1 ISZ BLK2 ISZ BLK3 JMP BEGIN5 CDF DCA I [LINBUF+120 DCA I (LINBUF+121 TAD [7600 JMS I (OTYPE DCA BLK1 TAD BLK1 AND (770 TAD (-20 SNA CLA DCA I (PTPSW TAD BLK1 SPA CLA JMP .+3 TAD (TAD [77 DCA I (DIRSW TAD [7605 JMS I (OTYPE AND (770 TAD (-20 SNA CLA DCA I (PTPSW1 TAD [7605 JMS I (OTYPE SPA CLA JMP .+3 TAD (TAD [77 DCA I (DIRSW1 JMP I (BEGINF BEGINC, 0 AND (37 DCA TEMP1 DCA TEMP2 JMP .+3 ISZ TEMP2 DCA TEMP1 TAD TEMP1 TAD (-12 SMA JMP .-5 CLA TAD TEMP2 SNA JMP .+3 TAD ["0 DCA I XREG1 TAD TEMP1 TAD ["0 DCA I XREG1 TAD ("/ DCA I XREG1 JMP I BEGINC BEGING, CDF 10 TAD I (MPARAM CDF AND (41 SNA CLA JMP I (START CDF 10 TAD I [7600 SZA CLA JMP YESBIN BINLOP, TAD PALBIN DCA I PALBIX ISZ BINLOP ISZ PALBIX ISZ BINCNT JMP BINLOP CDF TAD (-10 DCA I (LEADER YESBIN, CDF CIF 10 CLA IAC JMS I IOMON 2 LOAD, PLOAD BINCNT, -5 JMP NOLOAD TAD LOAD DCA I (CHAIN DCA I (LSWITC JMP I (START NOLOAD, JMS I [ERROR LD JMP I (START BLK1, SYMS BLK2, 7600+SYMS-SYME BLK3, SYMS-SYME PALBIX, 7600 PALBIN, 1 TEXT /PAL8BNTMABSLDRSV/ PLOAD=PALBIN+5
PAGE OTYPE, 0 DCA TEMP CDF 10 TAD I TEMP AND [17 TAD (DCB-1 DCA TEMP TAD I TEMP CDF JMP I OTYPE BEGINF, CDF 10 TAD I (MPARAM CDF RTR SNL CLA JMP FLD1+3 CDF 50 JMS FLD2 JMP FLD1-1 CDF 40 JMS FLD2 JMP FLD1 CDF 30 JMS FLD2 JMP FLD1+1 CDF 20 JMS FLD2 JMP FLD1+2 JMP FLD1+3 TAD [177 /IF 5 FIELDS, ALLOW 4095 SYMBOLS FLD1, TAD (1740 /OTHERWISE ALLOW 1740*(NR OF FIELDS) TAD (1740 TAD (1740 TAD (1740 DCA I (TAGMAX TAD I (TAGMAX CLL RAL SZL SPA CLA JMP I (BEGING OPTIM4, TAD I OPTIM1 ISZ OPTIM1 DCA I OPTIM2 ISZ OPTIM2 ISZ OPTIM3 JMP OPTIM4 OPTIM8, TAD I OPTIM5 ISZ OPTIM5 DCA I OPTIM6 ISZ OPTIM6 ISZ OPTIM7 JMP OPTIM8 JMP I (BEGING FLD2, 0 TAD (FLD3 DCA I (FLD4 FLD3, CLA TAD I (FLD4 NOP CDF TAD (-FLD3 SZA CLA JMP FLD5 TAD IOMON TAD [-200 SNA CLA JMP I FLD2 TAD [200 DCA IOMON FLD5, ISZ FLD2 JMP I FLD2 FLD4, IOMON OPTIM1, OPTIMA OPTIM2, SETFLD+1 OPTIM3, -5 OPTIM5, OPTIMB OPTIM6, GETTG5 OPTIM7, -21 OPTIMA, CLL CMA RTL TAD [-202 DCA TAGXR CDF 10 SETFLD&177+5600 OPTIMB, TAD HIGHTG SETFLD&177+4200 TAD TAGXR DCA XREG1 TAD XREG1 TAD [4 DCA XREG2 TAD THISTG SETFLD&177+4200 TAD I XREG2 DCA I XREG1 TAD XREG1 CIA TAD TAGXR SZA CLA GETTG5+11&177+5200 CDF
PAGE OUTPT1, PUNCHX /2=PUNCHX; 3=XLISTX OUTPUT, 0 AND [377 DCA OUTPT2 TAD I OUTPT1 SNA TAD OUTINH SZA CLA JMP I OUTPUT TAD OUTPT2 AND [200 SNA CLA TAD OUTPT2 TAD CHKSUM DCA CHKSUM TAD OUTPT2 TAD (-211 SNA CLA JMP OUTPT3 JMS OUTPUX TAD OUTPT2 TAD (-212 SZA CLA JMP I OUTPUT TAD [4 DCA LSTCNT JMP I OUTPUT OUTPT3, TAD [" DCA OUTPT2 JMS OUTPUX TAD LSTCNT AND [7 SZA CLA JMP .-4 JMP I OUTPUT OUTPUX, 0 OUCHAR, ISZ OUJMP OUJMP, HLT JMP OCHAR1 JMP OCHAR2 OCHAR3, TAD OUTPT2 CLL RTL RTL AND [7400 TAD I OUPOLD DCA I OUPOLD TAD OUTPT2 CLL RTR RTR RAR AND [7400 TAD I OUPTR DCA I OUPTR TAD OUJMPE DCA OUJMP ISZ OUPTR ISZ OUDWCT JMP OUCHLV TAD [200 JMS I (OUTDMP JMS I (OUSETP JMP OUCHLV OCHAR2, TAD OUPTR DCA OUPOLD ISZ OUPTR OCHAR1, TAD OUTPT2 DCA I OUPTR OUCHLV, TAD OUTPT2 JMS I (TEXT1 ISZ LSTCNT JMP I OUTPUX OUPOLD, 0 OUPTR, 0 OUJMPE, JMP OUJMP OUDWCT, 0 OUTINH, 0 OUTPT2, 0 SYSER2, TAD (DF JMP I [MONERR
DEVICX, JMS I [SPNOR TAD [-5 JMP DEVIC1 FILENX, JMS I [SPNOR TAD (-7 JMS FILE1 TAD CHAR TAD [-". SNA CLA JMS I [GETC CLL CLA CMA RTL DEVIC1, JMS FILE1 JMP I [LOOKEX FILE1, 0 DCA FILE6 DCA I (TEXT6 FILE4, JMS I [TSTALN SKP JMP FILE5 ISZ FILE6 JMP FILE3 CLA CMA DCA FILE6 JMP FILE2 FILE3, TAD CHAR JMS I (TEXT2 FILE2, JMS I [GETC JMP FILE4 FILE5, ISZ FILE6 SKP JMP I FILE1 JMS I (TEXT2 JMP FILE5 FILE6, 0 OPTABL, OP0 OP1 OP2 OP3 OP4 OP5
PAGE TEXTX, CLL CLA CML RAR DCA GETCI JMS TEXT1A JMP TEXT8 TAD [-" SNA JMP TEXT8 TAD [" CIA DCA VALUE2 DCA TEXT6 TEXT3, JMS I [GETC JMS TEXT1A JMP TEXT9 TAD VALUE2 SNA CLA JMP TEXT4 TAD CHAR JMS TEXT2 JMP TEXT3 TEXT4, DCA GETCI JMS I [GETC CLA JMS TEXT2 JMS TEXT2 DCA GETCI JMP I [LOOKEX TEXT8, JMS I [GETC JMP TEXTX+2 TEXT9, JMS I [ERROR IC JMP TEXT3 TEXT1, 0 AND (140 SNA JMP .+3 TAD (-140 SNA CLA ISZ TEXT1 JMP I TEXT1 TEXT1A, 0 TAD CHAR SPA SNA JMP TEXT4+2 JMS TEXT1 ISZ TEXT1A TAD CHAR JMP I TEXT1A TEXT2, 0 AND [77 ISZ TEXT6 JMP TEXT5 TAD TEXT7 JMS I [PUNBIN JMP I TEXT2 TEXT5, JMS I [RTL6 DCA TEXT7 CLA CMA DCA TEXT6 JMP I TEXT2 TEXT6, 0 TEXT7, 0
FIXTBX, TAD PASS SMA CLA JMP I [LOOKEX TAD HIGHTG CMA DCA TEMP3 DCA THISTG FIXTAX, JMS I [FINDTG CLL CLA CMA RAR AND TAG1 TAD [4000 DCA TAG1 JMS I [PUTTAG ISZ THISTG ISZ TEMP3 JMP FIXTAX JMP I [LOOKEX EXPUNX, TAD PASS SMA CLA JMP I [LOOKEX DCA EXPUN1 DCA EXPUN2 TAD HIGHTG CMA DCA TEMP3 EXPUNY, TAD EXPUN1 DCA THISTG JMS I [FINDTG TAD TAG3 SPA CLA JMP I (EXPUNZ JMP I (EXPUA4 IOPEN, 0 CLA CMA DCA I (INCHCT ISZ I (INEOF TAD (7617 DCA I (INFPTR ISZ I (FORMSW TAD [LINBUF+120 DCA TXTPTR JMP I IOPEN EXPUN1=TEXT6 EXPUN2=TEXT7 PUNOUT, 0 DCA PUNOU1 TAD PUNOU1 RTR RTR RTR AND [177 JMS I OCHAR TAD PUNOU1 AND [77 JMS I OCHAR JMP I PUNOUT PUNOU1, 0
PAGE /MAINLINE CODE LOOKE2, 0 TAD CHAR TAD (-"> SNA JMP CONEND TAD ("> SMA CLA JMP I LOOKE2 LOOKE1, JMS I [GETC MAIN, TAD [200 KRS TAD (-203 SNA CLA KSF JMP MAIN1 JMP I [7600 MAIN1, JMS I [SPNOR TAD CHAR TAD [-"$ /CHECK FOR $ END SNA JMP I (ENDPAS /END THIS PASS TAD ("$-"* SNA CLA JMP STAR /IT IS * JMS I [TSTALP JMP ALPHA JMS LOOKE2 TOEXP, JMS I [EXP TAD LININD DCA LINKSW TAD VALUE JMS I [PUNBIN LOOKEX, JMS I [SPNOR /IGNORE TRAILING SPACES JMS LOOKE2 ILCHAR, JMS I [ERROR IC JMP CONEN1 CONEND, TAD CONDSW /ARE WE INTO CONDITIONALS SNA JMP ILCHAR /NO - > IS ILLEGAL IAC /ONE LESS CONDITIONAL DCA CONDSW CONEN1, JMS I [GETC /GO BY THE CHARACTER JMP LOOKEX /AND TRY FOR END AGAIN STAR, JMS I [GETC /BY THE * JMS I [SPNOR JMS I [EXP /GET THE EXPRESSION ISZ UNDFSW JMP .+3 JMS I [ERROR UO TAD VALUE DCA OP TAD LOC AND [7600 CIA TAD OP AND [7600 SNA CLA JMP I (STAR2 JMS I [DUMPS TAD OP JMP I (STAR1 ALPHA, JMS I [GETTAG /GET THE TAG CLA CMA DCA ALPHAI TAD TAG3 SPA CLA JMP I VALUE2 /IT IS PSEUDO - GO TO IT TAD CHAR TAD (-", SNA JMP COMMA /DEFINE THE SYMBOL TAD (",-"= SNA CLA JMP I (EQUAL /EQUATE THE SYMBOL CLL CLA CML RAR JMP TOEXP COMMA, JMS I [GETC ISZ ALPHAI JMP COMMA2 TAD LOC DCA VALUE2 JMS I [INSRTG COMMA1, TAD TAG1 DCA LAST1 TAD TAG2 DCA LAST2 TAD TAG3 DCA LAST3 TAD VALUE2 DCA LAST4 JMP MAIN COMMA2, TAD LOC CIA TAD VALUE2 SNA CLA JMP COMMA1 JMS I [ERROR ID JMP MAIN OP5, OP3, TAD VALUE2 AND VALUE CMA AND VALUE2 JMP I (OP0+1 QUOTE, ISZ TXTPTR TAD I TXTPTR TAD [-215 SNA CLA JMP I (QUOTE1 TAD I TXTPTR DCA VALUE2 JMS I [GETC JMP I (NUMBE1+1
PAGE /EXPRESSION ROUTINE EXP, 0 DCA EXPIND /SET INDICATOR (NOT 0 IF NO FIXMRI) DCA LININD DCA VALUE /START WITH "VALUE" = 0 DCA UNDFSW TAD EXP JMS I [PUSHA /SAVE RETURN ADDRESS DCA OP /OP=0; ADD TAD EXPIND SPA CLA JMP I (EXPINT TAD CHAR TAD [-"+ SNA JMP EXP1-1 /UNARY + TAD ["+-"- SZA CLA JMP EXP1+1 /OTHER ISZ OP /UNARY - (OP=1) JMS I [GETC EXP1, ISZ EXPIND TAD CHAR TAD [-". SNA JMP PERIOD /GET CURRECT LOCATION TAD (".-"" SNA JMP I (QUOTE /GET ASCII VALUE TAD (""-"[ SNA JMP I (LITZ /PAGE 0 LITERAL TAD ("[-"( SNA CLA JMP I (LITS /SAME PAGE LITERAL JMS I [TSTALP JMP I (ALPHA1 /ALPHA JMS I [TSTNUM JMP NUMBER /NUMERIC EXP2, JMS ENDCHK /CHECK FOR END JMP EXP1+1 /NOGO - RETRY TAD OP TAD [-5 /IS OP SPACE (5) SNA CLA JMP I (EXPXIT DCA CHAR /MAKE AN ILLEGAL CHARARACTER JMP EXP2 ENDCHK, 0 TAD CHAR TAD (-"] SZA TAD ("]-") SZA TAD (")-"> SZA TAD (">-"< SNA JMP ENDCH1 TAD ("< SPA CLA JMP ENDCH1 JMS I [ERROR IC JMS I [GETC JMP I ENDCHK ENDCH1, ISZ ENDCHK JMP I ENDCHK NUMBER, DCA TEMP NUMBE2, TAD RADIX SNA CLA TAD CHAR TAD (-"8 SMA CLA JMP NUMBE3 TAD TEMP CLL RAL CLL RAL DCA TEMP2 TAD RADIX SZA CLA TAD TEMP TAD TEMP2 CLL RAL TAD CHAR TAD [-"0 DCA TEMP NUMBE4, JMS I [GETC JMS I [TSTNUM JMP NUMBE2 TAD TEMP NUMBE1, DCA VALUE2 TAD OP TAD (OPTABL DCA TEMP TAD I TEMP DCA TEMP JMP I TEMP NUMBE3, JMS I [ERROR IC JMP NUMBE4 PERIOD, JMS I [GETC TAD LOC JMP NUMBE1 QUOTE1, JMS I [ERROR IC CLA CMA DCA CHAR JMP I (EXPXIT
PAGE ALPHA1, JMS I [GETTAG CLA CMA DCA ALPHAI TAD TAG3 SMA CLA JMP .+3 JMS I [ERROR IP ISZ ALPHAI JMP .+7 ISZ UNDFSW TAD PASS SPA CLA JMP .+3 JMS I [ERROR US TAD TAG2 SMA CLA JMP I (NUMBE1+1 TAD CHAR TAD [-" SZA CLA JMP I (NUMBE1+1 JMS I [SPNOR TAD CHAR SPA CLA JMP I (NUMBE1+1 TAD EXPIND SZA CLA JMP I (NUMBE1+1 DCA IZIND TAD VALUE2 JMS I [PUSHA ALPHA6, JMS I [TSTALP SKP JMP ALPHA4 JMS I [GETTAG CLA CMA DCA ALPHAI CLL CLA CML RTR AND TAG1 SNA CLA JMP ALPHA5 TAD VALUE2 SNA ISZ IZIND TAD IZIND DCA IZIND JMS I [SPNOR JMP ALPHA6 EXPINT, TAD EXPIND TAD [4000 DCA EXPIND JMP ALPHA1+3 ALPHA5, TAD IZIND JMS I [PUSHA CLL CLA CML RAR JMP ALPHA4+2 ALPHA4, TAD IZIND JMS I [PUSHA IAC JMS I [EXP TAD I PDLXR DCA IZIND TAD I PDLXR DCA VALUE2 DCA LININD TAD IZIND AND [77 SNA CLA JMP FIX1 TAD VALUE AND [7600 SNA CLA JMP FIX4 JMS I [ERROR IZ FIX1, TAD VALUE AND [7600 SNA JMP FIX4 CIA TAD LOC AND [7600 SNA CLA JMP FIX2 TAD VALUE JMS I (FINDS DCA VALUE TAD [0700 DCA LININD TAD [400 FIX2, TAD [200 TAD VALUE2 DCA VALUE2 FIX4, TAD IZIND AND [7700 SNA CLA JMP FIX3 TAD VALUE2 AND [400 SNA CLA JMP FIX5 JMS I [ERROR II JMP FIX3 FIX5, TAD [400 TAD VALUE2 DCA VALUE2 FIX3, TAD VALUE AND [177 TAD VALUE2 DCA VALUE JMP I [POPJ OTYPEO, 0 JMS I (OTYPE1 TAD [200 KRS TAD (-217 SNA CLA KSF OTYPE3, JMP I OTYPEO JMP I (OTYPE2
PAGE OP0, TAD VALUE2 TAD VALUE DCA VALUE EXP3, TAD CHAR TAD [-"+ SNA JMP EXP4+5 TAD ["+-"- SNA JMP EXP4+4 TAD [7 /"--"& = 255-246 = 7 SNA JMP EXP4+3 TAD ("&-"! SNA JMP EXP4+2 TAD ("!-"^ SNA JMP EXP4+1 TAD ("^-" SNA CLA JMP EXP4 JMS I (ENDCHK JMP EXP3 EXPXIT, TAD UNDFSW SNA CLA JMP I [POPJ CLA CMA DCA UNDFSW DCA VALUE JMP I [POPJ EXP4, IAC IAC IAC IAC IAC DCA OP JMS I [GETC JMP I (EXP1 OP2, TAD VALUE AND VALUE2 JMP OP0+2 OP4, TAD VALUE CIA DCA TEMP TAD VALUE2 ISZ TEMP JMP .-2 JMP OP0+2
LSTCH9, SZA TAD (-177 SZA TAD (177-13 SZA IAC SNA JMP I (INPUT+1 TAD [12-32 SNA JMP I (ENDCHR TAD (32-15 SNA JMP LSTCHR IAC SNA JMP FORCHR ISZ I (INPUT LSTCH2, TAD [14+200 DCA LSTCH5 TAD PASS SPA SNA CLA JMP LSTCH4 ISZ LSTCH6 JMP LSTCH3 CLA CMA DCA LSTCH6 LSTCH4, TAD I (INPUT DCA TEMP TAD LSTCH5 JMP I TEMP LSTCH3, ISZ LSTCH7 TAD LSTCH5 DCA I LSTCH7 JMP LSTCH4 LSTCH5, 0 LSTCH6, -40 LSTCH7, HEADER-1 LSTCHR, TAD FORMSW SNA CLA JMP LSTCH1 DCA FORMSW ISZ EDITPG DCA THISPG TAD PASS SMA SZA CLA JMS I [FORMFD LSTCH1, TAD [215 DCA LSTCH5 JMP LSTCH4-2 FORCHR, ISZ FORMSW JMP I (INPUT+1 FORMSW, 1 OTYPE1, 0 TLS TSF JMP .-1 TAD [-215 SZA CLA JMP I OTYPE1 TAD [212 JMP OTYPE1+1 OTYPE4, TAD [215 JMS OTYPE1 DCA OTYPE1+1 DCA OTYPE1+3 JMP I (OTYPE3
PAGE OCTPRT, 0 DCA OCTPR1 TAD [-4 DCA OCTPR3 OCTPR2, TAD OCTPR1 CLL RTL RAL DCA OCTPR1 TAD OCTPR1 RAL AND [7 TAD ["0 JMS I OERROR ISZ OCTPR3 JMP OCTPR2 JMP I OCTPRT OCTPR1, 0 OCTPR3, 0 SYMPR3, 0 SYMPRT, 0 ISZ THISPG JMS I [FORMFD DSWIT1, DCA I (HSWIT1 /0 IF NOT /D DSWIT3, JMP SYMPR1 /0 IF /D TAD [-200 DCA SYMPR3 TAD [200 JMS I OERROR ISZ SYMPR3 JMP .-3 TAD [377 JMS I OERROR SYMPR1, TAD [215 JMS I OERROR DCA THISTG TAD HIGHTG CMA DCA TEMP3 TAD [-5 DCA SYMPR3 SYMPR4, JMS I [FINDTG TAD TAG1 SPA CLA JMP SYMPR8 TAD TAG3 SPA CLA JMP SYMPR8 TAD [1777 AND TAG1 JMS I (DIV45 CLL CLA CMA RAR AND TAG2 JMS I (DIV45 CLL CLA CMA RAR AND TAG3 JMS I (DIV45 TAD [" JMS I OERROR TAD VALUE2 JMS OCTPRT DSWIT2, JMP SYMPR6 /0 IF NOT /D ISZ SYMPR3 JMP SYMPR7 TAD [-5 DCA SYMPR3 SYMPR6, TAD [215 JMS I OERROR JMP SYMPR8 SYMPR7, JMS I (ERROR1 JMS I (ERROR1 SYMPR8, ISZ THISTG ISZ TEMP3 JMP SYMPR4 DSWIT4, JMP I SYMPRT /0 IF /D TAD (204 JMS I OERROR TAD [377 JMS I OERROR TAD [-200 DCA SYMPR3 TAD [200 JMS I OERROR ISZ SYMPR3 JMP .-3 DCA LINCNT JMP I SYMPRT
PUNONE, 0 TAD PASS SNA JMP PUNON2 SPA CLA JMP PUNON1+2 TAD LOC JMS OCTPRT JMS I (ERROR1 TAD VALUE JMS OCTPRT TAD I [LINBUF SNA CLA JMP PUNON1 TAD LINKSW JMS I (ERROR1 JMS I (LINPRT JMP PUNON1+2 PUNON1, TAD [215 JMS I OERROR DCA LINKSW JMP I PUNONE PUNON2, TAD VALUE CLL JMS I [PUNOUT JMP PUNON1+2
PAGE ERROR, 0 TAD I ERROR ISZ ERROR JMS ERROR1 TAD (JMP I [7600 DCA I (LSWITC TAD PASS SMA SZA CLA JMP ERROR4 JMS ERROR1 TAD [1777 AND LAST1 SNA JMP ERROR3 JMS I (DIV45 CLL CLA CMA RAR AND LAST2 JMS I (DIV45 CLL CLA CMA RAR AND LAST3 JMS I (DIV45 TAD LAST4 CIA ERROR3, TAD LOC SNA JMP ERROR4 ERROR7, DCA ERROR5 TAD ("+ JMS I OERROR TAD ERROR5 JMS I (OCTPRT ERROR4, TAD [215 JMS I OERROR JMP I ERROR ERROR1, 0 DCA ERROR5 TAD ERROR5 JMS I [RTL6 RAL JMS ERROR2 TAD ERROR5 JMS ERROR2 JMP I ERROR1 ERROR2, 0 AND [77 TAD [" JMS I OERROR JMP I ERROR2
ERROR5, CLEAN, 0 TAD (LITBUF-1 DCA XREG1 TAD (TPINST-1 DCA XREG2 TAD [-40 DCA TEMP TAD [200 DCA I XREG1 DCA I XREG2 ISZ TEMP JMP .-4 DCA LAST1 JMP I CLEAN DUMPS, 0 JMS I [FINDSP SNA JMP I DUMPS TAD [LITBUF DCA DUMPS1 TAD LITPTR CIA TAD I DUMPS1 SMA JMP DUMPS4 DCA DUMPS2 TAD LOC AND [7600 TAD I DUMPS1 JMS I [PUNORG TAD I DUMPS1 TAD [LITBF1 DCA DUMPS1 DUMPS3, TAD I [LINBUF JMS I [PUSHA DCA I [LINBUF TAD I DUMPS1 DCA VALUE JMS I [PUNONE ISZ LOC ISZ DUMPS1 ISZ DUMPS2 JMP DUMPS3+3 TAD I PDLXR DCA I [LINBUF DUMPS4, CLA JMP I DUMPS DUMPZ, 0 TAD DUMPZ DCA DUMPS TAD [200 CIA TAD I [LITBUF SMA JMP DUMPS4 DCA DUMPS2 TAD I [LITBUF TAD (LITBF2 DCA DUMPS1 TAD I [LITBUF JMS I [PUNORG JMP DUMPS3 DUMPS1=ERROR DUMPS2=DUMPZ OTYPE2, TAD ("^ JMS I (OTYPE1 KRB TAD [100 JMS I (OTYPE1 JMP I (OTYPE4
PAGE INSRTG, 0 /INSERT A TAG TAD VALUE2 JMS I [PUSHA ISZ HIGHTG /YES - INSERT THIS TAG TAD TAGMAX CLL CIA /GET LIMIT TAD HIGHTG SZL JMP GETTG7 /SYMBOL OVERFLOW TAD TAGMAX TAD (-1340 SZL CLA JMP GETTG5 /NO TAD [7700 DCA IOMON /NON-RESIDENT 'USR' ADDRESS CLL CLA CMA RAL AND I (JSBITS DCA I (JSBITS /SAVE 'USR' CORE ON A CALL GETTG5, TAD THISTG DCA TEMP2 TAD HIGHTG IAC DCA THISTG GETTG8, CLL CLA CMA RAL TAD THISTG DCA THISTG JMS I [FINDTG ISZ THISTG TAD THISTG CIA TAD TEMP2 SNA CLA JMP GETTG9 JMS I [PUTTAG JMP GETTG8 GETTG9, TAD I (NAME1 DCA TAG1 TAD I (NAME2 DCA TAG2 TAD I (NAME3 DCA TAG3 TAD I PDLXR DCA VALUE2 JMS I [PUTTAG JMP I INSRTG TAGMAX, 1740 /12K=3740, ... GETTG7, CLA TAD (SE JMP I [MONERR
DIV45, 0 DCA DIV45B DCA DIV45C JMP DIV45D DIV45A, ISZ DIV45C DCA DIV45B DIV45D, TAD DIV45B TAD (-45 SMA JMP DIV45A TAD (45 JMS DIV45E DCA DIV45B TAD DIV45C JMS DIV45E JMS I [RTL6 TAD DIV45B JMS I (ERROR1 JMP I DIV45 DIV45B, 0 DIV45C, 0 DIV45E, 0 SNA JMP I DIV45E TAD (-33 SMA TAD (20-40-33 TAD (33+40 JMP I DIV45E
SETFLD, 0 CLA /SETFLD CALLED WITH AC RANDOM DCA SETFL1 /INITIALIZE FIELD TAD THISTG SETFLP, ISZ SETFL1 CLL TAD (-1740 /PUT 1740 SYMBOLS IN EACH FIELD SZL /IS THE DIVIDE THROUGH? JMP SETFLP /NO - CONTINUE CLL CMA RTL /AC CONTAINED REM-1740; THIS MAKES IT INTO TAD (-1 /7573-4*REM WHICH IS THE ADDRESS WE WANT DCA TAGXR /TO STICK INTO AN AUTO-XR TAD SETFL1 CLL RTL RAL TAD SETFL2 DCA SETFL1 SETFL1, HLT JMP I SETFLD FINDTG, 0 TAD THISTG JMS SETFLD TAD I TAGXR DCA TAG1 TAD I TAGXR DCA TAG2 TAD I TAGXR DCA TAG3 TAD I TAGXR DCA VALUE2 SETFL2, CDF JMP I FINDTG
PAGE START2, ISZ PASS NOP START, JMS I (IOPEN DCA GETCI DCA XLISTX DCA PUNCHX DCA I [LINBUF DCA RADIX TAD (PDLST DCA PDLXR DCA EDITPG DCA CONDSW JMS I [CLEAN TAD [200 DCA LITPTR TAD [200 JMS I [PUNORG JMP I (LOOKE1 ENDPAS, JMS I [DUMPS JMS I [DUMPZ TAD PASS SNA JMP ENDPA2 SPA CLA JMP START1 TAD I [LINBUF SNA CLA JMP ENDPA1 TAD [211 JMS I OERROR TAD [211 JMS I OERROR JMS I (LINPRT ENDPA1, DCA XLISTX SSWITC, JMS I (SYMPRT /0 IF /S TAD I (FORM21 DCA I (FORM22 JMS I [FORMFD JMS I (OCLOSE LSWITC, JMP I [7605 /0 IF /L OR /G TAD (7616 DCA XREG1 CDF 10 TAD I [7600 AND [17 DCA I XREG1 TAD BINSRT DCA I XREG1 DCA I XREG1 CDF TAD I (JSBITS RAR CLL CML RAL DCA I (JSBITS CIF 10 JMS I IOMON 6 CHAIN, 0 BINSRT, 0 ENDPA2, DCA PUNCHX TAD CHKSUM DCA TXTPTR TAD CHKSUM JMS I [RTL6 RAL AND [77 JMS I OCHAR TAD TXTPTR AND [77 JMS I OCHAR TAD LEADER DCA TXTPTR TAD [200 JMS I OCHAR ISZ TXTPTR JMP .-3 JMS I (OCLOSE TAD (LISOUT DCA OERROR ISZ I (OUTPT1 JMS I (OOPEN JMP LSWITC TAD PTPSW1 DCA I (PTPSW TAD DIRSW1 DCA I (DIRSW NSWITC, JMP START2 /0 IF /N JMP ENDPA1 DIRSW1, TAD [177 PTPSW1, TAD [232 START1, JMS I (OOPEN NOP TAD I (OUBLK DCA BINSRT DCA PUNCHX TAD LEADER DCA TXTPTR TAD [200 JMS I OCHAR ISZ TXTPTR JMP .-3 JMP START2 LEADER, -10 OP1, TAD VALUE2 CIA JMP I (OP0+1 PUSHA1, TAD (BE JMP I [MONERR
PAGE LITS, CLA CMA LITZ, DCA LITS1 JMS I [GETC JMS I [SPNOR TAD EXPIND JMS I [PUSHA TAD OP JMS I [PUSHA TAD VALUE JMS I [PUSHA TAD LITS1 JMS I [PUSHA JMS I [EXP TAD I PDLXR DCA LITS1 TAD VALUE ISZ LITS1 JMP .+3 JMS FINDS SKP JMS FIND0 DCA VALUE2 TAD LITS1 CMA DCA LITS1 TAD I PDLXR DCA VALUE TAD I PDLXR DCA OP TAD I PDLXR DCA EXPIND TAD CHAR TAD (-") ISZ LITS1 TAD (")-"] SNA CLA JMS I [GETC JMP I (NUMBE1+1 LITS1, 0
FINDS, 0 DCA FINDS1 TAD LOC AND [7600 SNA JMP FIND01 DCA FINDS2 TAD [LITBF1 DCA FIND0 TAD LITPTR FIND02, DCA FINDS3 TAD FINDS2 JMS I [RTL6 TAD [LITBUF DCA TEMP TAD FIND0 TAD I TEMP DCA TEMP2 TAD FINDS3 CIA TAD I TEMP SNA JMP FINDS6 DCA FINDS3 FINDS4, TAD I TEMP2 CIA TAD FINDS1 SNA CLA JMP FINDS5 ISZ TEMP2 ISZ FINDS3 JMP FINDS4 FINDS6, TAD FINDS2 JMS I [RTL6 TAD [TPINST DCA FINDS3 TAD I TEMP CIA TAD I FINDS3 SPA CLA JMP FINDS7 FIND03, TAD FINDS2 SNA CLA JMP .+4 JMS I [ERROR PE JMP FINDS8 JMS I [ERROR ZE FINDS8, CLA CMA JMP FINDS9 FINDS7, CLA CMA TAD I TEMP AND [7760 SNA CLA JMP FIND03 CLA CMA TAD I TEMP DCA I TEMP FINDS9, TAD I TEMP TAD FIND0 DCA TEMP2 TAD FINDS1 DCA I TEMP2 FINDS5, TAD FIND0 CIA TAD TEMP2 TAD FINDS2 JMP I FINDS FIND0, 0 DCA FINDS1 TAD FIND0 DCA FINDS FIND01, DCA FINDS2 TAD (LITBF2 DCA FIND0 TAD [200 JMP FIND02 FINDS1, 0 FINDS2, 0 FINDS3, 0 POPJ, TAD I PDLXR DCA TEMP JMP I TEMP
PAGE IF0, TAD [10 IFN0, TAD IFSZA DCA IFTST1 JMS I [SPNOR JMS I [EXP IFTST3, TAD CHAR TAD (-"< SNA CLA JMP IFTST2 JMS I [ERROR IC JMS I [GETC IFTST9, JMS I [SPNOR JMP IFTST3 IFTST2, JMS I [GETC TAD CONDSW CIA DCA CONDTM CLA CMA TAD CONDSW DCA CONDSW TAD VALUE IFTST1, HLT JMP I (MAIN IFTST5, TAD CONDSW TAD CONDTM SMA CLA JMP I (MAIN TAD CHAR TAD (-"< SNA JMP IFTST6 TAD ("<-"> IFSZA, SZA CLA JMP IFTST4 CLL CLA CMA RAL IFTST6, CMA TAD CONDSW DCA CONDSW IFTST4, JMS I [GETC JMP IFTST5 IFD, TAD [10 IFND, TAD IFSZA DCA IFTST1 JMS I [SPNOR IFTST7, JMS I [TSTALP JMP IFTST8 JMS I [ERROR IC TAD CHAR TAD (-"< SNA CLA JMP IFTST2 JMS I [GETC JMP IFTST7 IFTST8, JMS I [GETTAG CLA CMA DCA VALUE TAD TAG3 SMA CLA JMP IFTST9 JMS I [ERROR IP JMP IFTST9
CONDTM, PUTTAG, 0 TAD THISTG JMS I (SETFLD TAD TAG1 DCA I TAGXR TAD TAG2 DCA I TAGXR TAD TAG3 DCA I TAGXR TAD VALUE2 DCA I TAGXR CDF JMP I PUTTAG
PUSHA, 0 DCA TEMP CLA CMA TAD PDLXR DCA PDLXR TAD PDLXR TAD (-PDLND SPA CLA JMP I (PUSHA1 TAD TEMP DCA I PDLXR CLA CMA TAD PDLXR DCA PDLXR JMP I PUSHA
/TEST NUMERIC ROUTINE /CALL WITH CHARACTER TO TEST IN "CHAR" /SKIPS IF THE CHARACTER IS NOT NUMERIC TSTNUM, 0 TAD CHAR /GET THE CHARACTER TAD [-"0 SPA /SKIPS IF >= 0 JMP TSTNU1 /NOT A NUMBER TAD ("0-"9 SMA SZA CLA /SKIPS IF <=9 TSTNU1, ISZ TSTNUM /2ND EXIT - NOT A NUMBER CLA JMP I TSTNUM /EXIT /TEST ALPHANUMERIC ROUTINE /CALL WITH CHARACTER IN "CHAR" /SKIPS IF CHARACTER IS NOT ALPHANUMERIC TSTALN, 0 JMS I [TSTNUM /IS IT NUMERIC JMP I TSTALN /YES JMS I [TSTALP /IS IT ALPHEBETIC JMP I TSTALN /YES ISZ TSTALN /NEITHER JMP I TSTALN /TEST ALPHEBETIC ROUTINE /CALL WITH CHARACTER IN "CHAR" /SKIPS IF NOT ALPHEBETIC TSTALP, 0 TAD CHAR TAD (-"A SPA /SKIP IF =>A JMP TSTAL1 /<A TAD ("A-"Z SMA SZA CLA /SKIP IF <=Z TSTAL1, ISZ TSTALP /NO GOOD - 2ND EXIT CLA JMP I TSTALP
PAGE INPUT, 0 ISZ INCHCT JMP I CHARLV TAD INEOF SZA CLA JMP ENDCHR INGBUF, TAD INCTLA AND [7600 JMS I [RTL6 TAD INCTR SNL DCA INCTR SZL ISZ INEOF CLL CML CMA RTR RTR RTR TAD INCTLA DCA INCTLW JMS I INHNDL INCTLW, 0 INBUFP, INBUF INREC, 0 JMP INERRX INBREC, TAD INCTLA AND [7600 JMS I [RTL6 TAD INREC DCA INREC TAD INCTLW AND [7600 CLL RAL TAD INCTLW AND [7600 CIA DCA INCHCT TAD INBUFP DCA INPTR ICHAR1, TAD I INPTR JMS CHARLV ICHAR2, TAD I INPTR ISZ INPTR AND [7400 DCA INCTLW TAD I INPTR JMS CHARLV ICHAR3, TAD I INPTR ISZ INPTR AND [7400 CLL RTR RTR TAD INCTLW RTR RTR JMS CHARLV JMP ICHAR1 INERRX, ISZ INEOF SMA CLA JMP INBREC SYSERR, TAD (DE JMP I [MONERR INCHCT, -1 INEOF, 1 INPTR, 0 INCTR, 0 INCTLA, 0 INFPTR, 7617 ENDCHR, TAD PASS SPA SNA CLA JMP NXTFLE TAD [-40 DCA INCTR TAD [HEADER-1 DCA INEOF TAD [211 ISZ INEOF DCA I INEOF ISZ INCTR JMP .-4 TAD [-40 DCA I (LSTCH6 TAD [HEADER-1 DCA I (LSTCH7 DCA LSTCNT NXTFLE, TAD (INDEVH+1 DCA INHNDL CDF 10 TAD I INFPTR CDF SNA JMP I (PHASE NEWFLE, CIF 10 JMS I IOMON 1 INHNDL, 0 HLT TAD INHNDL AND [7600 TAD (-INDEVH SZA CLA TAD [200 TAD INCTL DCA INCTLA CDF 10 TAD I INFPTR AND [7760 SZA TAD [17 CLL CML RTR RTR DCA INCTR ISZ INFPTR TAD I INFPTR DCA INREC ISZ INFPTR DCA INEOF CDF JMP INGBUF CHARLV, 0 AND [177 JMP I (LSTCH9
PAGE OOPEN, 0 TAD (OUDEVH+1 DCA OUHNDL TAD (OUFILE DCA OUBLK TAD [-5 DCA OUELEN CDF 10 TAD I OUFPTR CDF DCA I OUBLK ISZ OUBLK ISZ OUFPTR ISZ OUELEN JMP .-7 TAD (OUFILE IAC DCA OUBLK TAD OUBLK DCA OUCNAM CIF 10 JMS I IOMON 13 TAD I (OUFILE AND [17 SNA JMP ONOFIL CIF 10 JMS I IOMON 1 OUHNDL, 0 HLT OUENTR, TAD I (OUFILE CIF 10 JMS I IOMON 3 OUBLK, 0 OUELEN, 0 JMP OEFAIL DCA OUCCNT DCA I (OUTINH JMS OUSETP TAD OUHNDL CLL TAD [200 JMS I (OUFIGR DCA INCTL ISZ OOPEN JMP I OOPEN OEFAIL, TAD I (OUFILE AND [7760 SNA CLA JMP I (SYSERR TAD I (OUFILE AND [17 DCA I (OUFILE JMP OUENTR ONOFIL, ISZ I (OUTINH JMP I OOPEN OCLOSE, 0 TAD I (OUTINH SZA CLA JMP I OCLOSE PTPSW, TAD [232 /0 IF PTP: JMS I OCHAR JMS I OCHAR FILLLP, JMS I OCHAR DIRSW, TAD [177 /TAD [77 IF NOT DIRECTORY AND I (OUDWCT SZA CLA JMP FILLLP TAD I (OUDWCT TAD [200 SZA JMS OUTDMP NODUMP, TAD I (OUFILE CIF 10 JMS I IOMON 4 OUCNAM, 0 OUCCNT, 0 JMP I (SYSERR JMP I OCLOSE OUTDMP, 0 TAD [4000 DCA OUCTLW TAD OUBLK TAD OUCCNT DCA OUREC TAD OUCTLW CLL RTL RTL RTL AND [17 TAD OUCCNT DCA OUCCNT TAD OUCCNT CLL CML TAD OUELEN SNL SZA CLA JMP I (SYSER2 JMS I OUHNDL OUCTLW, 0 OUBUF OUREC, 0 JMP I (SYSERR JMP I OUTDMP OUFPTR, 7600 OUSETP, 0 TAD [7600 DCA I (OUDWCT TAD (OUBUF DCA I (OUPTR TAD I (OUJMPE DCA I (OUJMP JMP I OUSETP
PAGE INBUF=. OUBUF=. OUDEVH=.+400 INDEVH=7200
SYMS, 5777 3777 5777 0000 "Z-300^45+"B-300+4000 /ZBLOCK "L-300^45+"O-300 "C-300^45+"K-300+4000 ZBLOCX "Z-300^45+4000+2000 /Z 0 0 0000 "X-300^45+"L-300+4000 /XLIST "I-300^45+"S-300 "T-300^45+4000 XLISTY "T-300^45+"S-300+4000 /TSF "F-300^45 0 TSF "T-300^45+"P-300+4000 /TPC "C-300^45 0 TPC "T-300^45+"L-300+4000 /TLS "S-300^45 0 TLS "T-300^45+"E-300+4000 /TEXT "X-300^45+"T-300 4000 TEXTX "T-300^45+"C-300+4000 /TCF "F-300^45 0 TCF "T-300^45+"A-300+4000 /TAD "D-300^45+4000 0 TAD 0 "S-300^45+"Z-300+4000 /SZL "L-300^45 0 SZL "S-300^45+"Z-300+4000 /SZA "A-300^45 0 SZA "S-300^45+"T-300+4000 /STL "L-300^45 0 STL "S-300^45+"T-300+4000 /STA "A-300^45 0 STA "S-300^45+"P-300+4000 /SPA "A-300^45 0 SPA "S-300^45+"N-300+4000 /SNL "L-300^45 0 SNL "S-300^45+"N-300+4000 /SNA "A-300^45 0 SNA "S-300^45+"M-300+4000 /SMA "A-300^45 0 SMA "S-300^45+"K-300+4000 /SKP "P-300^45 0 SKP "R-300^45+"T-300+4000 /RTR "R-300^45 0 RTR "R-300^45+"T-300+4000 /RTL "L-300^45 0 RTL "R-300^45+"S-300+4000 /RSF "F-300^45 0 RSF "R-300^45+"R-300+4000 /RRB "B-300^45 0 RRB "R-300^45+"M-300+4000 /RMF "F-300^45 0 RMF "R-300^45+"I-300+4000 /RIF "F-300^45 0 RIF "R-300^45+"I-300+4000 /RIB "B-300^45 0 RIB "R-300^45+"F-300+4000 /RFC "C-300^45 0 RFC "R-300^45+"D-300+4000 /RDF "F-300^45 0 RDF
"R-300^45+"A-300+4000 /RAR "R-300^45 0 RAR "R-300^45+"A-300+4000 /RAL "L-300^45 0 RAL "P-300^45+"S-300+4000 /PSF "F-300^45 0 PSF "P-300^45+"P-300+4000 /PPC "C-300^45 0 PPC "P-300^45+"L-300+4000 /PLS "S-300^45 0 PLS "P-300^45+"C-300+4000 /PCF "F-300^45 0 PCF "P-300^45+"A-300+4000 /PAUSE "U-300^45+"S-300 "E-300^45+4000 PAUSEX "P-300^45+"A-300+4000 /PAGE "G-300^45+"E-300 4000 PAGEX "O-300^45+"S-300+4000 /OSR "R-300^45 0 OSR "O-300^45+"P-300+4000 /OPR "R-300^45 0 OPR "O-300^45+"C-300+4000 /OCTAL "T-300^45+"A-300 "L-300^45+4000 OCTALX "N-300^45+"O-300+4000 /NOPUNCH "P-300^45+"U-300 "N-300^45+"C-300+4000 NOPUNX "N-300^45+"O-300+4000 /NOP "P-300^45 0 NOP "L-300^45+"A-300+4000 /LAS "S-300^45 0 LAS "K-300^45+"S-300+4000 /KSF "F-300^45 0 KSF
"K-300^45+"R-300+4000 /KRS "S-300^45 0 KRS "K-300^45+"R-300+4000 /KRB "B-300^45 0 KRB "K-300^45+"C-300+4000 /KCC "C-300^45 0 KCC "J-300^45+"M-300+4000 /JMS "S-300^45+4000 0 JMS 0 "J-300^45+"M-300+4000 /JMP "P-300^45+4000 0 JMP 0 "I-300^45+"S-300+4000 /ISZ "Z-300^45+4000 0 ISZ 0 "I-300^45+"O-300+4000 /IOT "T-300^45 0 IOT "I-300^45+"O-300+4000 /ION "N-300^45 0 ION "I-300^45+"O-300+4000 /IOF "F-300^45 0 IOF "I-300^45+"F-300+4000 /IFZERO "Z-300^45+"E-300 "R-300^45+"O-300+4000 IF0 "I-300^45+"F-300+4000 /IFNZRO "N-300^45+"Z-300 "R-300^45+"O-300+4000 IFN0 "I-300^45+"F-300+4000 /IFNDEF "N-300^45+"D-300 "E-300^45+"F-300+4000 IFND "I-300^45+"F-300+4000 /IFDEF "D-300^45+"E-300 "F-300^45+4000 IFD "I-300^45+"A-300+4000 /IAC "C-300^45 0 IAC "I-300^45+4000+2000 /I 0 0 0400
"H-300^45+"L-300+4000 /HLT "T-300^45 0 HLT "G-300^45+"L-300+4000 /GLK "K-300^45 0 GLK "F-300^45+"I-300+4000 /FIXTAB "X-300^45+"T-300 "A-300^45+"B-300+4000 FIXTBX "F-300^45+"I-300+4000 /FIXMRI "X-300^45+"M-300 "R-300^45+"I-300+4000 FIXMRX "F-300^45+"I-300+4000 /FILENAME "L-300^45+"E-300 "N-300^45+"A-300+4000 FILENX "F-300^45+"I-300+4000 /FIELD "E-300^45+"L-300 "D-300^45+4000 FIELDX "E-300^45+"X-300+4000 /EXPUNGE "P-300^45+"U-300 "N-300^45+"G-300+4000 EXPUNX "E-300^45+"N-300+4000 /ENPUNCH "P-300^45+"U-300 "N-300^45+"C-300+4000 ENPUNX "E-300^45+"J-300+4000 /EJECT "E-300^45+"C-300 "T-300^45+4000 EJECTX "D-300^45+"T-300+4000 /DTXA "X-300^45+"A-300 0 DTXA "D-300^45+"T-300+4000 /DTSF "S-300^45+"F-300 0 DTSF "D-300^45+"T-300+4000 /DTRB "R-300^45+"B-300 0 DTRB "D-300^45+"T-300+4000 /DTRA "R-300^45+"A-300 0 DTRA "D-300^45+"T-300+4000 /DTLB "L-300^45+"B-300 0 DTLB "D-300^45+"T-300+4000 /DTCA "C-300^45+"A-300 0 DTCA "D-300^45+"S-300+4000 /DSAC "A-300^45+"C-300 0 DSAC "D-300^45+"M-300+4000 /DMAW "A-300^45+"W-300 0 DMAW "D-300^45+"M-300+4000 /DMAR "A-300^45+"R-300 0 DMAR
"D-300^45+"M-300+4000 /DMAC "A-300^45+"C-300 0 DMAC "D-300^45+"F-300+4000 /DFSE "S-300^45+"E-300 0 DFSE "D-300^45+"F-300+4000 /DFSC "S-300^45+"C-300 0 DFSC "D-300^45+"E-300+4000 /DEVICE "V-300^45+"I-300 "C-300^45+"E-300+4000 DEVICX "D-300^45+"E-300+4000 /DECIMAL "C-300^45+"I-300 "M-300^45+"A-300+4000 DECIMX "D-300^45+"E-300+4000 /DEAL "A-300^45+"L-300 0 DEAL "D-300^45+"E-300+4000 /DEAC "A-300^45+"C-300 0 DEAC "D-300^45+"C-300+4000 /DCMA "M-300^45+"A-300 0 DCMA "D-300^45+"C-300+4000 /DCEA "E-300^45+"A-300 0 DCEA "D-300^45+"C-300+4000 /DCA "A-300^45+4000 0 DCA 0 "C-300^45+"M-300+4000 /CML "L-300^45 0 CML "C-300^45+"M-300+4000 /CMA "A-300^45 0 CMA "C-300^45+"L-300+4000 /CLL "L-300^45 0 CLL "C-300^45+"L-300+4000 /CLA "A-300^45 0 CLA "C-300^45+"I-300+4000 /CIF "F-300^45 0 CIF "C-300^45+"I-300+4000 /CIA "A-300^45 0 CIA "C-300^45+"D-300+4000 /CDF "F-300^45 0 CDF "A-300^45+"N-300+4000 /AND "D-300^45+4000 0 AND 0 4001 0000 4000 0000 SYME=.
$-$-$



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search