*20 EJECT / D I A L A S S E M B L E R - - - V E R S I O N 2 / / /COPYRIGHT 1969, DIGITAL EQUIPMENT CORPORATION, MAYNARD MASSACHUSSETS, 01754 / /PDP-12 DIAL ASSEMBLER(P0710),VERSION 2. / / / THIS ASSEMBLER HAS TWO MODES OF OPERATION. / ONE MODE IS FOR A STANDARD PDP-12 WITH 4K OF CORE / THE SECOND MODE IS FOR AN 8K MACHINE. / IN ADDITION, THE 8K MODE CHECKS FOR / THE PRESENCE OF A LINE PRINTER FOR OUTPUT. / / / ADDITIONAL FEATURES TO THE ASSEMBLER: / / ABILITY TO SAVE AND LOAD PARTS OF THE SYMBOL TABLE. / CONDITIONAL ASSEMBLY OF VARIOUS LINES. / ABILITY TO LIST BETWEEN LINE NUMBERS. / A "QUICK LIST" ENTRY POINT WHICH REMOVES COMMENTS AND LINE NUMBERS, / AND WHICH REPLACES TABS BY BLANKS. / / / / EJECT / 4 K L O A D E R M A P / / / /0000-0177 PAGE 0: COMMON LITERALS AND POINTERS. /0200-0377 BANK CHECK ROUTINE; SYMBOL SEARCH ROUTINE /0400-0577 SYMBOL TABLE GETTER ROUTINE /0600-0777 ROUTINE TO GET A SYMBOL FROM SYMBOL TABLE( OR ADD ON). / SDECO4 IS ACTIVE, SDECO8 IS NOT USED. / SDECO4 USES 6777-6000 FOR USER SYMBOLS. / 5400-5777 IS USED FOR USER SYMBOLS AND FOR A SWAPPING BUFFER/ / IF MORE THEN 300 SYMBOLS . EXTRA SYMBOLS GO OUT ON UNIT 1. /1000-1177 GENERAL RECURSIVE EXPRESION EVALUATOR. /1200-1377 RECURSIVE ADDRESS EVALUATOR. /1400-1577 /CENTRAL PROCESSING LOOP. MAIN START OF ASSEMBLER AFTER INITILIZATION. /1600-1777 /TEXT PROCESSOR,CURRENT LINE TESTER, PLUS MINOR SUPPORT ROUTINES. /2000-2177 AN INPUT CHARACTER SCANNER ROUTINE, THE PRINTER BUF ROUTINE, AND TAB ROUTINE. /2200-2377 NUMBER CONVERSIONS, TYPE CHECKS. /2400-2577 SYMBOL SORT FOR OUTPUT. TTY ROUTINE. /2600-2777 SYMBOL OUTPUT AND VALUE ROUTINE, OCTAL PRINT ROUTINE, FIELD CHANGE ROUTINE, AND WORK AREA. /3000-3177 OUTPUT LIST ROUTINE, 8K PSEUDO OP INITIALIZATION(DESTROYED AND NEVER UESED). WORK AREA. /3200-3377 ERROR MESSAGE PROCESSOR, TYPE EVALUATOR, SYSTEM SYMBOL TABLE SWAPPER, / FAIRLY LOW LEVEL CHARACTER GETTER, AND ROUTINE TO SKIP IF NOT PASS2 OR NOT IN LIST MODE. /3400-3577 INPUT CHARACTER CONVERTOR TO INTERNAL FORM. PLUS PAGE CHECKERS, OTHER / LITTLE ROUTINES. /3600-3777 INTERNAL TO EXTERNAL CHARACTER CONVERTOR, SYMBOL TABLE TYPE GETTERS AND SETTERS, / LOW LEVEL CHARACTER GETTER, COMMENT PROCESSOR, LIST AND NOLIST PROCESSORS. / / /T HE FOLLOWING LOCATIONS ARE IN A S S E M T W O ! / / /4000-4177 GENERAL TAPE IO CALL ROUTINES, INITILIAZTION FOR TAPE ROUTINES, PLUS EXTRA LITTLE STUFF. /4200-4377 MORE TAPE I/O ROUTINES, PSEUDO OP PROCESSOR(FOR PAGED IN PSEUDO OPS), AND LOADER CORE MAP. /4400-4777 INPUT BUFFER+SWAPPED IN AND OUT WORK AREA FOR SAVSYM AND LODSYM. /5000-5377 OUTPUT BUFFER, PLUS INITIALIZATION FOR ENTIRE ASSEMBLER AFTER IT S FIRST LOADED IN / AND THIS ALSO CONTAINS THE SWAPPED IN PSEUDO OP PROCESSOR. NOTE: WHEN THINGS ARE SWAPPED IN, / THE PREVIOUS CONTENTS OF THE LOCATIONS ARE FIRST SWAPPED OUT TO PRESERVE THEM. /5400-5777 USER SYMBOLS IF < 300 SYMBOLS, ELSE IT S BUFFER AREA FOR SWAPPING SYMBOLS FROM TAPE 1. /6000-6777 USER SYMBOLS(FIRST 200 OF THEM ANYWAY). /7000-7377 MODE SYMBOLS(EITHER PMODE OR LMODE TABLE, DEPENDING ON MODE.). /7400-7577 PSEUDO OP TABLE PLUS SPECIAL CHARACTER DEFINITION TABLE. /7600-7777 SUPPOSEDLY UNUSED, BUT WHEN PSEUDO OP TABLE IS LOADED, IT S LENGTH / OF 400 WORDS OVERLAYS IT. / / / /****-**** E N D O F 4 K M A P / / / EJECT / 8 K L O A D E R M A P / / /THIS MAP SHOWS ONLY CHANGES TO 4K MAP. / / / / /0600-0777 SDECO8 IS NOW ACTIVE AND SDECO4 IS PASSIVE. SDECO8 USES THE UPPER 4K OF CORE / FOR THE SYMBOL TABLE. THUS IT STORES NO USER SYMBOLS ON UNIT1(EXCEPT IF A SAVSYM IS GIVEN). /5000-5377 PSEUDO OP TABLE IS NO LINGER PAGED IN HERE. SEE 7000-7377. /5400-5777 OVERLAPPED READ ROUTINES FOR READING WHILE CALCULATING. /6000-6177 LINE PRINTER CHECKER AND BASIC LINE PRINTER ROUTINE. /6200-6377 OVERLAPPED TAPE OUTPUT ROUTINES PLUS COMMON READ-WRITE ROUTINES. /6400-6777 INPUT BUFFER NO .2 /7000-7377 RESIDENT PSEUDO OP PROCESSOR. NOTE THAT IT CAN RESIDE IN TWO SEPERATE PAGES(FOR 4 OR 8K). /7400-7777 INPUT BUFFER NO.1 FOR TAPE. / / / F I E L D 1 R E F E R E N C E S / / /10000-16777 USER DEFINED SYMBOLS. /17000-17377 SYSTEM MODE SYMBOLS(LMODE OR PMODE). /17400-17577 PSEUDO OPS AND SPECIAL CHARACTER TABLE. / / / / / E N D O F 8 K M A P / / EJECT / T A P E I / O / / / / ALL TAPE I/O IS DONE WITH APPROXIMATELY THE SAME SET OF STATMENTS. / / / A TYPICAL SET IN THE LISTING LOOKS LIKE: /LINCC4, JMS I LTREAD / LMODE / RDC / XXXXXX (SOME BLOCK AND FIELD) / CLR / PDP / PMODE / / / /NOW THIS IS HOW IT LOOKS IN 8K. IN CALLS THE OVERLAPPED READ ROUTINE TO DO A "PHOONEY" READ /DEPENDING ON THE UNIT AND BLOCK NUMBER. THE READ ROUTINE WILL INTERPRET THE NEXT TWO STATEMETNS AFTER THE CALL /AND WILL RETURN TO THE THIRD STATEMETN IN 8 MODE. BUT THE CLR AND PDP ARE JUST "AND" INSTRUCTIONS, /AND SINCE READ CLEARS THE AC, THEY HAVE NO EFFECT AT ALL. / / / /IF YOU RE RUNNING IN 4K, HOWEVER, THE MAIN INITIALIZATION ROUTINE MAKES THE /JMS INSTRUCTION (LINCC4) INTO A "LINC" INSTRUCTION(6141). THUS THE CODE IS THEN / DIRECTLY EXECUTED. / / / EJECT / T H E P S E U D O O P P R O C E S S O R / / / / / THE PSEUDO OP PROCESSOR IS A 400 LOCATION ROUTINE WHICH IS PAGED IN ON THE 4K MODE AND RESIDENT IN THE 8K MODE. /AFTER THE DESIRED PSEUDO OP IS FOUND IN THE TABLE BY "EXPR" IT THEN JMPS TO AN ISZ CHAIN /THE ISZ CHAIN IS A BUNCH OF SEQUENTIAL ISZ S OF LOCATION "OP1". AFTER FALLING THROUGH THE ISZ S OP1 CONTAINS / THE DESIRED PSEUDO OP NUMBER. THE ROUTINE THEN PAGES IN THE PSEUDO OP PROCESSOR(IF 4K, ELSE IT S RESIDENT), THEN JMS / TO IT WITH THE DESIRED OPERATION NUMBER IN THE AC. WHEN FINISHED THE PSEUDO OP PROCESSOR RETURNS AND IT S SWAPPED BAC /K OUT. IN THE 8K VERSION IT S RESIDENT AND IS NOT SWAPPED IN OR OUT. / / / / / EJECT / S Y M B O L T A B L E O R G A N I Z A T I O N / / / /A SYMBOL TABLE ENTRY IS COMPOSED OF 4 WORDS. THE FIRST THREE ARE THE NAME AND THE LAST IS THE VALUE /IF THE SYMBOL IS A PSEUDO OP THEN THE LAST WORD CONTAINS A POINTER TO THE ROUTINE WHICH WILL PROCESS /THE PSEUDO OP AND THE REST OF THE STAATEMENT. / / /THE NAME IS COMPOSED OF SIX CHARACTERS. /THESE CHARACTERS ARE USUALLY THE 26 LETTERS PLUS 10 NUMBERS PLUS A NULL CHARACTER IF LESS THEN 6 LETTERS LONG. /THIS GIVES YOU 45 OCTAL POSSIBLE CHARACTERS FOR THE LEFT OR THE RIGHT HALF OF A WORD. /IF YOU USE SIXBIT NOTATION, YOU LL WASTE 23 POSSIBLE POSITIONS ON THE CHARACTER. THEREFORE, SIXBIT IS NOT USED. /NOW, SINCE THE FIRST CHARACTER OF A NAME MUST BE A LETTER, THIS LEAVES ONLY 32 OCTAL /CONBINATIONS FOR THE FIRST CHARACTER. THUS IF WE MULTIPLY THE LEFT /CHARACTERS OF A WORD BY 45, WE WILL HAVE 2 FREE BITS IN THE FIRST WORD OF A NAME./ /(32*45+45<2000 OCTAL). THESE TWO LEFT BITS ARE USED AS FOLLOWS: / / / / 00: SPECIAL CHARACTER / 01: UNDEFINED / 10: DEFINED / 11: PSEUDO OPERATION / / / EJECT / NOW LOAD IN SAVED SYMBOLS AND START THIS ASSEMBLY ROLLING. / / LODSYM /GO GET UM! / / VERSION=15 /THIS IS USED IN CHECKING TAPE 1. /EVERY TIME YOU ASSEMBLE AND CHANGE THE MAJOR SYMBOL LOCATIONS, UP THIS BY 1. / / / UNITAS=4777 /PLACE TO GET UNIT FROM E7=0 D6=300 D7=370 D8=410 D9=446 PTHREE=7325 /CLA CLL CML IAC RAL /GENERATES A +3 IN AC WHEN EXECUTED MTWO=7344 /CLA CLL CMA RAL /GENERATES A -2 IN AC WHEN EXECUTED. MTHREE=7346 /CLA CLL CMA RTL /GENERATES A -3 IN AC WHEN EXECUTED. / / / / / / TERMC=00 /SET TERMC TO 44 IF DOLLAR SIGN IS THE END OF FILE CHAR. / / / / EJECT /PDP-12 ASSEMBLER PAGE 0 PMODE *1 DECOUT, TYPO ERTOT, 0 LISTWD, 0 CNTLPI, CNTRLP MICROB, 0 EQRETI, 7777 TEMP, 0 /VARIABLES *10 BINPTR, 2000+D7+10 BINBLK, 0 CURLIN, 0 M40, -40 TYPEA, 0 P11, 11 /16 AND 17 ARE USED /FOR AUTO-INDEXING. *20 ANY, 0 /WAS THIS AN INSTRUCTION TYPE, 0 /HOLDS TYPE OF CURRENT SYMBOL VADR, 0 /VALUE OF CURRENT SYMBOL SADR, 0 /POINTER OF FIRST WORD OF CURRENT SYMBOL VAL, 0 /VALUE OF CURRENT SYMBOL VALK, 0 SCURR, 0 /CURRENT SYMBOL NUMBER SEND, 140 /POINTER TO FIRST FREE REGISTER AFTER SYMBOL TABLE AADR, 0 /ACTUAL CURRENT ADDRESS APAGE, 0 /ORIGIN OF CURRENT PAGE - ACTUAL PERMA, 140 /FIRST REGISTER AFTER PERMANENT SYMBOL TABLE EVAL, 0 /HOLDS ADDRESS PORTION DURING CALCULATION SGN, 0 PASS, 0 /7777 IF PASS 2 FLDWD, 0 /7777 IF EXTENDED MEMORY MODE, 0 /7777 IF PDP-8; 0 IF LINC TEM1A, 0 0 0 CURR, 0 CHARX, 0 CHARX2, 0 ABANK, 0 POINT, 0 /PUSH DOWN LIST IN, 0 /TELLS WHETHER SYMBOL WAS ACCEPTED ITEM, 0 HIC, 0 LWC, 0 MICROL, 0 INST, 0 /- IF SYMBOLIC A MICRO INST. MICRO, 0 CHARAC, 0 INIT1, INIT /POINTERS EMPTY1, EMPTY SOPS, OPS RESET1, RESETL BIT6A, BIT6 PASSEK, PASSER CURSKA, CURSKP GETCHR, SYSIN CHEKER, PAGSET SYMLST, LSTSYM MAINEX, MAIN INAS, CJMP1 MOVE1, MOVE8 SKIP, SKIP2 ERR1, ERROR EXPR1, EXPR TYCARI, TYCAR MAIN1, MAINSE PAGE1, RESET B21, B2 IDX1, IDX PUSH1, PUSH2 POPU1, POPUP1 GETSY1, GETSYM GETAS1, GETASY TYPAD1, TYPADD SDECO1, SDECO8 SRITIC, SWRC SYB, SYMBU SRD1, SREAD1 RET1, RETURN MON, MONIT PUNON1, PUNONE M1000, -1000 M43, -43 M33, -33 P400, 400 M45, -45 M67, -67 P76, 76 LINENO, JBTEST P3777, 3777 SCLEAR, CLEARR M47, -47 P240, 240 M4, -4 P6000, 6000 PM60A, M60A *140 /FOR TRAP HANDLER LOWTMP, 0 /MAY BE USED ONLY FOR IMM. TEMP. NEVER USED IF YOU LEAVE ROUTINE. 0 0 *143 P5000, 5000 P300, 300 P1777, 1777 P177, 177 M200=. P7600, 7600 P200, 200 P4000, 4000 M215, -215 M42, -42 P2000, 2000 P212, 212 P215, 215 P7400, 7400 P777, 777 P7, 7 P77, 77 TEM1, 0 /FIRST TEM2, 0 /SECOND TEM3, 0 /THIRD WORD OF CURRENT SYMBOL CON, 0 /HOLDS ACCUMULATED VALUE OF WORD ADR, 0 /HOLD FULL 12 BIT ADDRESS IND, 0 /400 IF INDIRECT OTHERWISE 0 ERRCNT, 0 SWITCH, 0 SNUM, 0 EMPTRA, 0 SY, SYMBUF TBCONT, 0 BINTAB, 2000+D7 EJECT /PDP-12 ASSEMBLER PAGE 1 *200 BANKCH, JMS I EXPR1 TAD ANY SZA CLA JMP BANKEM CMA TAD AADR TAD P2000 AND P6000 DCA AADR BANKHR, JMS I RESET1 JMS I PAGE1 TAD AADR DCA EVAL JMS I PASSEK JMS I CURSKA JMP I MAIN1 BANKEM, TAD EVAL AND P4A DCA FLDWD TAD EVAL RTR RAR JMP BANKHR-2 P4A, 4 CURREN, 0 JMS I RESTO1 JMS I MOVEAA TAD MODE SMA CLA JMP LKADD TAD AADR CDA, 6211 DCA I VADR CDB, 6201 JMS I TYPAD1 4000 JMP I MAIN1A MOVEAA, ERR2 RESTO1, RESTOR MAIN1A, MAINSE+3 LKADD, TAD AADR AND P1777 CDC, 6211 DCA I VADR CDD, 6201 TAD AADR AND P6000 CLL RTR TAD P4000 DCA .+2 JMS I TYPAD1 0 JMP I MAIN1A SAVE1, SAVE SEARCH, 0 JMS I SAVE1 DCA SCURR CDE, 6211 SEARC1, TAD SCURR JMS I SDECO1 CLA CMA TAD SADR DCA 16 TAD I 16 AND P1777 CIA TAD TEM1 SZA CLA JMP IND1 TAD I 16 AND P3777 CIA TAD TEM2 SZA CLA JMP IND1 TAD I 16 AND P3777 CIA TAD TEM3 SZA CLA JMP IND1 /NO MATCH. TAD TOP CIA TAD SADR SMA CLA JMP PSUD TAD PERMA CIA TAD SCURR SPA DCA INST /- IF INSTRUCTION CLA CLL PSUD, TAD I 16 DCA VALK TAD 16 DCA VADR MTHREE TAD 16 DCA 16 TAD I 16 AND P4000 DCA TEMP TAD I 16 AND P4000 RAR CLL TAD TEMP TAD VALK DCA VAL TAD MODE SMA CLA JMS I IND1B JMS I GETYE ISZ SEARCH JMS I IND1C TAABA, 6201 JMP I SEARCH IND1B, LNINST GETYE, GETYPE IND1C, ANYY TOP, 7374 IND1, ISZ SCURR TAD SCURR CIA TAD SEND SZA CLA JMP SEARC1 ISZ ANY JMP TAABA EJECT /PDP-12 ASSEMBLER PAGE 2 *400 GETSYM, 0 TAD CHARX SNA JMP SPECAL TAD M33 SPA JMP GETLET TAD M12A SMA CLA JMP SPECAL JMS I DPCVOP /DIGIT JMP I B11 M12A, -12 DPCVOP, DPCV SPECAL, TAD CHARX2 DCA TEM3 DCA TEM2 DCA TEM1 JMS I SCH1 JMP B11+1 TAD TYPE TAD P2000 SNA CLA JMP I VAL TAD VAL DCA TYPE JMP GSTART SCH1, SEARCH B11, B1 PTHREE JMS I ERR1 JMS I IDX1 JMP GETSYM+1 GETLET, JMS I GETAS1 /GET SYMBOL TAD TYPE TAD P2000 SNA CLA JMP I VAL /PSEUDO OP. GSTART, TAD I GETSYM AND P177 DCA CURR TAD GETSYM AND P7600 TAD CURR DCA CURR TAD I GETSYM AND P7600 SZA JMP GTYPOT TAD CURR DCA GETSYM JMP GSTART GTYPOT, CIA TAD TYPE SNA CLA JMP I CURR TAD I GETSYM AND P7600 TAD P200 SNA CLA JMP I CURR ISZ I GETSY1 JMP GSTART PAGEC, JMS I EXPR1 TAD ANY SZA CLA JMP PAGEM CMA TAD AADR TAD P200 AND P7600 DCA AADR PAGHER, JMS I PAGE1 TAD AADR DCA EVAL JMS I PASSEK JMS I CURSKA JMP I MAIN1 PAGEM, TAD EVAL /MULTIPLY BY 200 RTR RTR RTR JMP PAGHER-2 M1,-1 MOVE8, 0 TAD M1 DCA 16 CMA TAD I MOVE8 DCA 17 ISZ MOVE8 TAD I MOVE8 ISZ MOVE8 DCA MOVA TAD P777 DCA TEMP MOVB, TAD TEMP CLL CML RAL DCA TEMP SZL JMP I MOVE8 MOVA, 0 TAD I 16 AND TEMP AND P3777 CDFF, 6201 DCA I 17 JMP MOVB / DOLIST, CLA SKP /LIST ENTRY PSEUDO. PLIST, CLA CMA /NOLIST PSEUDO. DCA MOVE8 /IN TEMPORARY. TAD PASS /IS THIS PASS2? SNA CLA JMP DOPOUT /NO. IGNORE IT. TAD MOVE8 /0=LIST,7777=NOLIST DCA I JJSTART /FUDGE JBTEST PARAMS. TAD MOVE8 CMA DCA I JJEND /SET UP LINE NUMBER LIMITS. DOPOUT, JMP I B21 /CLEAN UP SYSTEM. JJSTART, JSTART JJEND, JEND *573 0 0 0 /FIVE SPACES HERE OR SOMEWHERE IN 0 /SEGMNT 0 FOR DISK DIAL 0 EJECT /PDP-12 ASSEMBLER PAGE 3 *600 /SYMBOL NUMBER DECODER SDECO8, 0 /CONVERT A SYMBOL NUMBER TO AN ADDRESS DCA SNUM /SAVE THE NUMBER TAD SNUM AND P6000 SZA CLA JMP I ERSY /TOO MANY SYMS TAD SNUM CLL RTL CIA TAD STAB /STAB IS TOP OF SYMBOL TABLE DCA SADR /ADDRESS OF FIRST WORD OF SYMBOL PTHREE TAD SADR DCA VADR /POINTS TO SYMBOL VALUE JMP I SDECO8 TYPADD, 0 CLA TAD I TYPADD DCA TYPEA TAD TYPEA DCA TYPE CDG, 6211 TAD I SADR AND P1777 DCA I SADR TAD TYPE AND P6000 TAD I SADR DCA I SADR ISZ SADR TAD I SADR AND P3777 DCA I SADR TAD TYPE RTL AND P4000 TAD I SADR DCA I SADR ISZ SADR TAD I SADR AND P3777 DCA I SADR TAD TYPE RTL RAL AND P4000 TAD I SADR DCA I SADR MTWO TAD SADR DCA SADR TAD TYPE AND P6000 DCA TYPE CDH, 6201 ISZ TYPADD JMP I TYPADD SDECO4, 0 DCA SNUM TAD SNUM TAD P7440 SMA CLA JMP SVIRTL TAD SNUM CMA RTL AND M4 /7774 IAC TAD STAB DCA SADR PTHREE TAD SADR DCA VADR JMP I SDECO4 SVIRTL, TAD SNUM TAD P7440 CLL RTR RTR RTR AND P77 TAD BLKTAB DCA BLKPTR TAD SNUM TAD P240 /REALLY 40 BUT ONLY 6 BITS MATTER. AND P77 CMA RTL AND M4 /SEE SEDOC4 + 6 ABOVE TAD P6000 DCA SADR PTHREE TAD SADR DCA VADR TAD BLKPTR CIA TAD BLKTBS SNA CLA JMP I SDECO4 TAD BLKTBS JMS I SRIT1 TAD PASS /IS IT PASS 2 SPA CLA DCA .-3 /YES. ZAP OUT WRITE INSTRUCTION TAD BLKPTR DCA BLKTBS TAD BLKTBS CIA TAD P416 SPA CLA JMP I ERSY TAD BLKPTR JMS I SRD1 JMP I SDECO4 P7440,7440 P416,3000+D9 M12,-12 BLKTBS, 3000+D8+22 BLKTAB, 3000+D8+22 BLKPTR,0 SRIT1, SWRIT1 ERSY,STEXD STAB, 7574 / / / SKIP2, 0 DCA SDECO4 /SAVE SKIP COUNT TAD P240 JMS I DECOUT ISZ SDECO4 JMP .-3 JMP I SKIP2 / / / EJECT *1000 SCOLON=200 COMMA=600 SYMB=4000 EQUALS=1400 USYMB=2000 EXCLAM=2200 ANDS=3400 PLUS=4600 MINUS=5200 SPACE=5600 ALL=7600 /PDP-12 ASSEMBLER PAGE 4 EXPR, 0 TAD CON JMS I PUSH1 DCA CON TAD INST JMS I PUSH1 DCA INST TAD MICROL JMS I PUSH1 DCA MICROL TAD SGN JMS I PUSH1 TAD CRIOR /OR DCA SGN TAD H6 JMS I PUSH1 DCA H6 TAD EXPR JMS I PUSH1 SKP A, JMS I IDX1 JMS I GETSY1 B-1000+USYMB B-1000+SYMB A-1000+SPACE C-1000+PLUS C+3-1000+MINUS C+5-1000+EXCLAM G-1000+SCOLON C+7-1000+ANDS G-1000+ALL TAD VAL JMP .+3 B1, CLA TAD LWC JMS I SGN SKP JMS I IDX1 B2, JMS I GETSY1 C+5-1000+SPACE GET-1-1000+COMMA B1-2-1000+SYMB B1-2-1000+USYMB ERONE-1000+EQUALS A+5-1000 C, TAD CRIOR+1 /PLUS DCA SGN JMP B2-1 TAD CRIOR+2 /MINUS JMP C+1 TAD CRIOR /OR JMP C+1 TAD CRIOR+3 /AND JMP C+1 H, TAD MODE SMA CLA JMP LINKI TAD P400 TAD H6 DCA H6 JMP A+1 H6, 0 B, TAD VAL JMS I SGN JMS I GETSY1 EQU-1000+EQUALS GET-1000+SPACE B2+1-1000 LINKI, TAD P10 UN, TAD P10 JMP H+4 JMS I DEFIN1 GET, JMS I GETAD1 TAD ADR JMS I CRIOR G, JMS I POPU1 DCA EXPR TAD CON DCA EVAL TAD H6 DCA IND JMS I POPU1 DCA H6 JMS I POPU1 DCA SGN TAD MICROL DCA MICROB JMS I POPU1 DCA MICROL TAD INST DCA MICRO JMS I POPU1 DCA INST JMS I POPU1 DCA CON JMP I EXPR ERONE, JMS I ERR1 JMP I MAIN1 EQU, TAD I REPUN1 DCA CRIOR-1 DCA EQRETI JMS I IDX1 JMS I EXPR1 CLA CMA DCA EQRETI TAD CRIOR-1 JMS I SDECO1 TAD EVAL CDI, 6211 DCA I VADR CDJ, 6201 JMS I TYPAD1 SYMB JMS I PASSEK JMS I CURSKA JMP I MAIN1 0 CRIOR, RIOR RADD RSUB RAND REPUN1, RESTOR-2 GETAD1, GETADR P10, 10 DEFIN1, CURREN STEXD,TAD P7 JMS I ERR1 JMP I MON EJECT /PDP-12 ASSEMBLER PAGE 5 *1200 GETADR, 0 JMS I IDX1 TAD GETADR JMS I PUSH1 JMS I EXPR1 TAD MODE SMA CLA JMP LNKOR TAD MICRO SMA CLA JMP CHKLA TAD CON CLL RTL RTL AND P7 TAD M6A SMA CLA JMP LEVEL+1 CHKLA, TAD EVAL AND P7600 SNA JMP AWAY+1 CIA TAD APAGE SNA CLA JMP AWAY IAC JMS I NUPAGE JMP LEAVE DCA ADR LEAVE, JMS I POPU1 DCA GETADR JMP I GETADR AWAY, TAD P200 DCA TEMP TAD EVAL AND P177 TAD TEMP TAD IND JMP LEAVE-1 LNKOR, TAD MICROB SMA CLA JMP CHKL TAD EVAL AND P1777 TAD IND LEVEL, DCA EVAL TAD EVAL JMP LEAVE-1 M6A, -6 P600, 600 NUPAGE, UNDERR 0 CHKL, TAD TYPEA RTL AND P6000 SZA CLA JMP LEVEL-3 TAD EVAL TAD IND JMP LEVEL LDT, 0 TAD CHARX SNA JMP I LDT DCA NUPAGE+1 TAD NUPAGE+1 TAD M45 SMA CLA JMP NOTLDT IXS, ISZ IN /LETTER OR DIGIT JMS I IDX1 TAD NUPAGE+1 JMP I LDT NOTLDT, DCA CHARX JMP I LDT A1W, 0 JMS LDT DCA NUPAGE+1 TAD NUPAGE+1 CLL RTL DCA VAL /CHR. *4 TAD VAL RTL RAL /CHR. *32 TAD VAL TAD NUPAGE+1 /CHR *1 DCA VAL JMS LDT TAD VAL JMP I A1W AAS, 0 JMS A1W DCA TEM1 JMS A1W DCA TEM2 JMS A1W DCA TEM3 JMS LDT SNA CLA JMP I AAS JMP .-3 ORGIC, JMS I IDX1 JMS I EXPR1 TAD MODE SMA CLA JMP LINKIC TAD EVAL DCA AADR TAD EVAL AND P7600 CIA TAD APAGE SNA CLA JMP LNRT JMS I PAGE1 TAD AADR DCA EVAL LNRT, JMS I PASSEK JMS I CURSKA LKRETT, JMP I MAIN1 LINKIC, TAD EVAL AND P1777 TAD ABANK DCA AADR JMP LNRT EJECT /PDP-12 ASSEMBLER PAGE 6 *1400 MAIN, JMP PASS1 /SWITCH PASS1, TAD PERMA DCA SEND DCA PASS DCA MODE JMS SETORG TAD CJMP1+1 PASS1P, DCA MAIN JMS I OCTS1 /SET TADIX TO OCTAL MAINSE, JMS I LINENO JMS I CNTLPI JMS I CLENUP JMS I IDX1 TAD LIST1 DCA POINT DCA ANY DCA IND JMP I PSINTER DOCAL, JMS I EXPR1 TAD ANY SNA CLA JMP MAINSA /NOTHING TO BE ASSEMBLED TAD EVAL JMS ONEREG TACK, JMS I EMPTY1 JMP MAINSE ONEREG, 0 DCA EVAL JMS I PUNON1 ISZ AADR TAD MODE SMA CLA JMP LNKREG TAD AADR AND P177 SZA CLA JMP I ONEREG JMS I PAGE1 /END OF PAGE LNKREG, JMP I ONEREG CLENUP, CLEARR /SYMBOLIC ASSEMBLY SAVE ROUTINE LSTSYM, 0 TAD LISTWD SPA CLA JMP I LSTSYM TAD ITEM TAD M43 SNA CLA JMP I LSTSYM TAD ITEM ISZ SWOT JMP DOLEFT TAD I SYMBU DCA I SYMBU ISZ SYMBU LSRTE, ISZ CHARAC JMP I LSTSYM DOLEFT, CLL RTL RTL RTL DCA I SYMBU CMA DCA SWOT JMP LSRTE SYMBU, SYMBUF MAINSA, ISZ PASS JMP MAINSC CLA CMA DCA PASS TAD LISTWD SPA CLA JMP MAINSE TAD ERRCNT SZA CLA JMP TACK JMS I PASSEK JMS I CURSKA JMP MAINSE SETORG, 0 TAD P4000 DCA AADR TAD P4000 DCA APAGE TAD P4000 DCA EVAL TAD P4000 DCA ABANK DCA ERTOT DCA FLDWD DCA ERRCNT JMP I SETORG OCTS1, OCTS PUNONE+1 PASS2, CLA CMA DCA PASS TAD M1000 DCA I OCTS1+1 JMS SETORG JMS I INIT1 TAD CJMP1 JMP PASS1P CJMP1, JMP PASS1 JMP PASS2 RESET, 0 TAD AADR AND P7600 DCA APAGE JMP I RESET MAINSC, CLA DCA PASS JMP MAINSE SWOT, 0 LIST1, LISTA LNINST, 0 TAD INST SMA CLA JMP .+7 TAD VAL AND P6000 SNA CLA JMP .+3 CMA DCA MICROL TAD VALK DCA VAL JMP I LNINST PSINTER, DOCAL EJECT /PDP-12 ASSEMBLER PAGE 7 *1600 RIOR, 0 DCA VAL TAD CON CMA AND VAL TAD CON DCA CON JMP I RIOR / / STRING, JMS I GENINI CIA DCA VAL JMS STGET JMP STNODUMP JMP STINTO STLOOP, JMS STGET JMP STDUMP TAD EVAL JMS I ONEREI JMS I PASSEK JMS I TYCARI STINTO, TAD ITEM AND P77 CLL RTL RTL RTL DCA EVAL JMS STGET JMP STDUMP TAD ITEM AND P77 TAD EVAL DCA EVAL JMP STLOOP / STGET, 0 JMS I GENINI TAD VAL SZA CLA ISZ STGET TAD M43 TAD ITEM SZA CLA JMP STNOT JMS I PASSEK JMS I CURSKA JMS I SCLEAR JMS I LINENO JMP I STGET STNOT, TAD ITEM /GET THE CHAR. ASMIFZ TERMC-44 /DO WE WANT A DOLLAR SIGN AT THE END. TAD STM44 /YEP. ADD IT IN. SZA CLA JMP I STGET JMS I SQERR JMS I SQERR JMP I MON / STDUMP, TAD EVAL JMS I ONEREI JMS I PASSEK JMS I TYCARI STNODUMP, TAD ITEM TAD M43 SNA CLA JMP I SQFDRT JMS I GENINI JMP STNODUMP+1 / / / ASMIFZ TERMC-44 /DO WE WANT THE LITTERAL IN??? STM44, -44 /YEP. ASSEMBLE IT IN. SQFDRT, FDRT SQERR, ERROR GENINI, GETIN CONVRI, CONVRT ONEREI, ONEREG JBTEST, 0 ISZ CURLIN CLA CLL CLA CMA DCA LISTWD TAD CURLIN CLL CML CMA IAC TAD JSTART SNL SZA CLA JMP I JBTEST TAD JEND CLL CML CMA IAC TAD CURLIN SZL SNA CLA JNOP, DCA LISTWD JMP I JBTEST JSTART,0 JEND, 7777 M1A, -1 MOVE4, 0 TAD M1A DCA 16 CMA TAD I MOVE4 DCA 17 TAD I 16 AND P1777 DCA I 17 TAD I 16 AND P3777 DCA I 17 TAD I 16 AND P3777 DCA I 17 ISZ MOVE4 ISZ MOVE4 JMP I MOVE4 SAVE, 0 TAD SCURR DCA RESTOR-2 TAD TYPEA DCA RESTOR-3 TAD TYPE DCA RESTOR-1 JMP I SAVE 0 0 0 RESTOR, 0 TAD RESTOR-2 JMS I SDECO1 TAD RESTOR-3 DCA TYPEA TAD RESTOR-1 DCA TYPE JMP I RESTOR / / / / EJECT /PDP-12 ASSEMBLER PAGE 8 *2000 ENTS, 0 TAD SEND JMS I SDECO1 CDK, 6211 TAD VAL DCA I VADR TAD TEM1 DCA I SADR ISZ SADR TAD TEM2 DCA I SADR ISZ SADR TAD TEM3 DCA I SADR MTWO TAD SADR DCA SADR CDL, 6201 TAD I ENTS DCA .+2 JMS I TYPAD1 0 ISZ ENTS ISZ SEND JMP I ENTS M57, -57 GETS, GETIN COMS, COMMEN IDX, 0 JMS I GETS TAD M57 SNA CLA JMP I COMS TAD ITEM ASMIFZ TERMC-44 /IS END OF FILE CHAR A 44?? TAD M44 /YEP. ASSEMBLE IT IN NOW. SNA CLA JMP I FINEND BIT, JMS I BIT6A DCA CHARX TAD CHARX DCA CHARX2 JMP I IDX EMPTY, 0 TAD LISTWD SPA CLA JMP EMLEVE+1 TAD PASS SMA CLA JMP I EMPTY TAD CHARAC SNA JMP EMLEVE CIA DCA CHARAC DCA TBCONT TAD M60 DCA 16 TAD SY DCA EMPTRA SKP TWOCHR, ISZ EMPTRA TAD I EMPTRA RTR RTR RTR AND P77 DCA TEMP CMA DCA SWITCH TAD TEMP TAD M47 SNA CLA NOTAB1, JMP OUTTAB JMS OUTTP DRHT, ISZ CHARAC JMP .+2 JMP EMLEVE JMS I LNCKA TAD I EMPTRA AND P77 DCA TEMP DCA SWITCH TAD TEMP TAD M47 SNA CLA NOTAB2, JMP OUTTAB /REPLACED BY A TAD M7 JMS OUTTP DLFT, ISZ CHARAC JMP TWOCH EMLEVE, JMS I TYCARI JMP I EMPTY CLEARR, 0 DCA CHARAC DCA I SWOTA TAD ERRCNT TAD ERTOT DCA ERTOT DCA ERRCNT TAD SY DCA I SYB JMP I CLEARR TWOCH, JMS I LNCKA JMP TWOCHR LNCKA, LNCK OUTTP, 0 TAD TEMP JMS I ONVRT JMS I DECOUT ISZ TBCONT JMP I OUTTP ONVRT, CONVRT OUTTAB, TAD TBCONT TAD M10 SMA JMP .-2 JMS I KLUG2 TABR, JMS I SKIP DCA TBCONT ISZ SWITCH JMP DLFT JMP DRHT KLUG2, SPACK M10, -10 M44, -44 SWOTA, SWOT M60, -60 FINEND, ENDMS M7TWO, -7 EJECT /PDP-12 ASSEMBLER PAGE 9 *2200 DPCV, 0 ISZ ANY DCA HIC /CLEAR HIGH AND LOW PARTS DCA LWC TAD CHARX2 / GET THE NEXT CHARACTER TAD M67 SNA JMP DPCS TAD DPCVM2 SNA CLA DPCS, JMS I IDX1 /INDEX CHARACTER POINTER TAD CHARX2 TAD M45 SMA JMP I DPCV TAD P12 /IF LESS OR EQUAL TO 9 CHECK FOR GR SPA /EQ. ZERO JMP I DPCV /LESS THAN ZERO, EXIT NOT DIGIT DCA MTDG JMS MT10 JMP DPCS DECIM, JMS DECIMS JMP I B21 OCT, JMS OCTS JMP I B21 DECIMS, 0 TAD MTSW+4 DCA MTSW JMP I DECIMS OCTS, 0 TAD M1000 DCA MTSW JMP I OCTS P12, 12 DPCVM2, -2 /MULTIPLY LWC BY 10. MT10, 0 TAD LWC AND P777 DCA TIC JMS MTRL JMS MTRL MTSW, JMS MTAD /NOP FOR OCTAL, JMS MTAD FOR DECIMAL JMS MTRL TAD MTDG DCA TIC JMS MTAD JMP I MT10 /ROTATE LWC LEFT 1 MTRL, 0 CLL CLA TAD LWC RAL DCA LWC JMP I MTRL /ADD LWC TO TIC MTAD, 0 CLL CLA TAD LWC TAD TIC DCA LWC JMP I MTAD /SOME DATA STORAGE MTDG, 0 TIC, 0 ERR2, 0 TAD TYPE TAD P6000 SNA CLA JMP I ERR2 TAD TYPEA CLL RTL AND P6000 CDFM, 6211 TAD I VADR CDFN, 6201 CIA TAD AADR SNA CLA JMP I ERR2 CLA CLL CML RTL JMS I ERR1 JMP I ERR2 UNDERR, 0 ISZ PASS JMP EQCHK DCA TEMP CMA DCA PASS TAD TEMP JMS I ERR1 CLA CMA DCA PASS JMP I UNDERR EQCHK, TAD M4 SNA CLA JMS I EQCHKI CLA CMA DCA EQRETI JMP EQCHK-2 EQCHKI, EQUCHK PUSH2, 0 DCA ERR2 TAD P5000 TAD POINT SMA CLA JMP ERR12 TAD ERR2 DCA I POINT ISZ POINT JMP I PUSH2 CNTRLP, 0 KSF JMP I CNTRLP KRB TAD M215 SNA CLA JMP I MON JMP I CNTRLP ERR12, TAD P11 JMS I ERR1 JMP I MON ANYY, 0 TAD TYPE TAD P6000 SNA ISZ ANY TAD P6000 SNA CLA ISZ ANY JMP I ANYY EJECT /PDP-12 ASSEMBLER PAGE 10 *2400 HIGH, 0 0 0 ORIGT, 0 0 0 WORK, 0 0 0 ALPHA, 0 JMS I TYCARI DCA ORIGT DCA ORIGT+1 DCA ORIGT+2 DCA FOUND TAD SEND DCA SCURR TAD P1777 /MAX SYMBOL VALUE DCA HIGH CLA CMA DCA HIGH+1 CLA CMA DCA HIGH+2 TAD CORIGT JMS I MOVE1 TEM1 CDO, 6201 AEND, CLA CMA TAD SCURR DCA SCURR TAD SCURR JMS I SDECO1 TAD PERMA CIA TAD SCURR SPA CLA JMP NTAB CDP, 6211 JMS I FOUND+1 CDQ, 6201 TAD TYPE TAD P4000 SZA CLA JMP AEND TAD SADR JMS I MOVE1 CWORK, WORK CDR, 6211 JMS TRIPLE SNL CLA JMP AEND TAD CHIGH JMS I MOVE1 TEM1 CDS, 6201 JMS TRIPLE SZL CLA JMP AEND-4 TAD CWORK JMS I MOVE1 CHIGH, HIGH CDT, 6201 ISZ FOUND TAD SCURR DCA NTEM JMP AEND-4 FOUND, 0 GETYPE NTAB, TAD FOUND SNA CLA JMP I ALPHA TAD NTEM JMS I SDECO1 TAD SADR JMS I MOVE1 TEM1A CDU, 6211 CDV, 6211 TAD I 16 CDW, 6201 DCA VAL JMS I NTEM+1 TAD CHIGH JMS I MOVE1 CORIGT, ORIGT CDX, 6201 JMP ALPHA+5 NTEM, 0 OSANDV TRIPLE, 0 TAD TEM1 CMA CLL TAD WORK DCA TEMPA ISZ TEMPA JMP I TRIPLE TAD TEM1+1 CMA TAD WORK+1 DCA TEMPA ISZ TEMPA JMP I TRIPLE TAD TEM1+2 CMA TAD WORK+2 JMP I TRIPLE TYCAR, 0 TAD P215 JMS I DECOUT TAD P212 JMS I DECOUT JMS I CHEKER JMS I CNTLPI /TEST FOR CARRAGE RETURN JMP I TYCAR CURSKP, 0 TAD CURLIN JMS I SOPS TAD M22 JMS I SKIP JMS I EMPTY1 JMP I CURSKP TYPO, 0 TSF JMP .-1 TLS CLA JMP I TYPO M22, -22 TEMPA=TYCAR EJECT /PDP-12 ASSEMBLER PAGE 11 /OUTPUT A SYMBOL AND ITS VALUE *2600 OSANDV, 0 JMS OSYM /OUTPUT SYMBOL TAD TBCONT TAD M7 JMS I SKIP /OUTPUT TAB JMS I LINK8 TAD VAL JMS OPS /OUTPUT NUMBER JMS I TYCARI JMS I CNTLPI JMP I OSANDV OSYM, 0 DCA TBCONT TAD TEM1A JMS OX TAD TEM1A+1 JMS OX TAD TEM1A+2 JMS OX JMP I OSYM LINK8, LINK8A OX, 0 DCA LWC DCA HIC TAD LWC SNA JMP I OSYM TAD M45 SPA JMP DV3 ISZ HIC JMP .-4 DV3, TAD P45 DCA LWC TAD HIC JMS UNTRAN TAD LWC JMS UNTRAN JMP I OX UNTRAN, 0 SNA JMP I OSYM TAD M33 SPA TAD P53 TAD P260 JMS I DECOUT ISZ TBCONT JMP I UNTRAN /OCTAL PRINT SUBROUTINE OPS, 0 DCA OSYM TAD M4 DCA TBCONT TAD OSYM RTL RAL DCA OSYM TAD OSYM RAL AND P7 TAD P260 JMS I DECOUT ISZ TBCONT JMP OPS+4 JMP I OPS P45, 45 M7, -7 P53, 53 P260, 260 FLDUP, JMS I EXPR1 TAD MODE SMA CLA JMP FDRT TAD ANY SZA CLA JMP FIELDM FDRT, JMS I PASSEK JMS I CURSKA JMP I MAIN1 FIELDM, TAD EVAL SPA CLA JMP FDRT MTWO TAD EVAL SMA CLA JMP FDRT TAD EVAL DCA FLDWD JMP FDRT LISTA=. EJECT /PDP-12 ASSEMBLER PAGE 12 *3000 OPS PUNONE, 0 JMP I PUNONE /NOP FOR PASS 2 TAD AADR AND P7400 CLL RTL RTL RAL TAD BINTAB DCA BINPTR TAD FLDWD SNA CLA JMP BINCK TAD BINPTR TAD P20 DCA BINPTR BINCK, TAD BINPTR CIA TAD BINBLK SZA CLA JMS I NOTBL1 TAD AADR AND P377 TAD P5000 DCA LOWTMP TAD EVAL DCA I LOWTMP TAD LISTWD SPA CLA JMP I PUNONE TAD ERRCNT SZA CLA JMP NONER ABNOP1, TAD CURLIN ABNOP2, JMS I PUNONE-1 ABNOP3, TAD M6 ABNOP4, JMS I SKIP NONER, TAD MODE SMA CLA JMP LNKA TAD AADR AADRL, JMS I PUNONE-1 MTWO JMS I SKIP TAD EVAL JMS I PUNONE-1 MTWO JMS I SKIP LINKA1, JMP I PUNONE LNKA, TAD AADR AND P6000 CIA TAD ABANK SNA CLA JMP SAMES TAD AADR AND P3777 JMP AADRL SAMES, TAD AADR AND P1777 JMP AADRL NOTBL1, NOTBLK P377, 377 P20, 20 M6, -6 SYMBUF=. / / / INITIALIZATION FOR 8K PSEUDO OPS / CALLED ONCE, THEN CAN BE ZAPPED! PS8K, 0 JMS I PSRDIN TAD PLEUDO DCA I PPPSEUDO DCA I SPNOP1 DCA I SPNOP2 DCA I SPNOP3 DCA I SPNOP4 DCA I SPNOP5 DCA I SPNOP6 JMP I PS8K SPNOP1, PSNOP1 SPNOP2, PSNOP2 SPNOP3, PSNOP3 SPNOP4, PSNOP4 SPNOP5, PSNOP5 SPNOP6, PSNOP6 PLEUDO, PSEUDO PPPSEUDO, PPSEUDO PSRDIN, REDOP / / / / / LMODE / / / / / JBSETU, LDF 1 BCL I -10 ADM SYMUNT+2000 LDF 2 STA JBI1+2000 STA JBI2+2000 LIF 2 JMP 0 / / PMODE / / / / / / / / / EJECT /PDP-12 ASSEMBLER PAGE 13 *3200 TABLE ERROR, 0 TAD .-2 DCA UNREF-1 TAD CURLIN JMS I SOPS MTWO JMS I SKIP ERTA, TAD I UNREF-1 AND P77 TAD P300 JMS I DECOUT TAD I UNREF-1 RTR RTR RTR AND P77 TAD P300 JMS I DECOUT MTWO JMS I SKIP ISZ ERRCNT JMS I PASSEK SKP JMS I TYCARI JMP I ERROR 0 UNREF, UNDERR AAS GETASY, 0 CLA DCA IN JMS I GETASY-1 TAD IN SNA CLA JMP I GETASY JMS I SEAR1 SKP CLA JMP CKUN /FOUND DCA VAL JMS I ENTS1 USYMB CLA CLL IAC RTL /4 /US JMS I GETASY-2 JMP I GETASY CKUN, TAD TYPE TAD P6000 SZA CLA JMP I GETASY JMP CKUN-3 ENTS1, ENTS SEAR1, SEARCH /TABLE OF ERROR MESSAGES TABLE, 0511 /IE ILLEGAL EQUALS 2211 /II ILLEGAL INDIRECT 0411 /ID ILLEGAL REDEFINITION 0311 /IC ILLEGAL CHARACTER 2325 /US REFERENCE TO UNDEFINED SYMBOL 0604 /DF SYSTEMS DEVICE FULL 0504 /DE SYSTEMS DEVICE ERROR 0523 /SE SYSBOL TABLE EXCEEDED 0127 /WA WORKING AREA EXCEEDED 2320 /PS PUSH DOWN LIST EXCEEDED LNKMOD, CLA SKP PDP8MD, CLA CMA DCA MODE TAD MODE TAD P6321 DCA INSYM LINC LMODE LDFA, LDF 7 NOP9, PDP PMODE NOP7, JMS I SYMSWP LMODE SYMUNT, RDC 0 INSYM, 0 PMODE NOP8, LINC LMODE CLR LDF 3 PDP PMODE JMS I RESET1 JMS I PAGE1 JMP I B21 /CLEAN UP THE SYSTEM. WE RE DONE WITH THIS ONE. P6321, 6000+D6+42 SYSIN, 0 CLA CLL ISZ WDHALF JMP LEFTHF TAD I PTBUFP AND P77 DCA TEMP ISZ PTBUFP ISZ CHRC JMP RTHFT TAD P7400 DCA CHRC TAD PTBUFF DCA PTBUFP JMS I BUFI RTHFT, TAD TEMP JMP I SYSIN LEFTHF, CMA DCA WDHALF TAD I PTBUFP RTR RTR RTR AND P77 JMP I SYSIN BUFI, BUFIN WDHALF, 0 PTBUFP, 0 PTBUFF, 4400 CHRC, 0 PASSER, 0 TAD LISTWD SPA CLA JMP .+4 TAD PASS SPA CLA JMP I PASSER ISZ PASSER JMP I PASSER EQUCHK,0 ISZ EQRETI JMS I ERR1 JMP I EQUCHK SYMSWP, READ / / / / EJECT / / / / / / / / / E N D O F A S S E M O N E ! ! ! ! ! ! ! ! ! ! ! / / / / / / / SAVSYM 2 /SAVE ALL SYMBOLS FOR ASSEMTWO / / / / / / / / / NOW GO AND ASSEMBLE ASSEMTWO! / / / / / EJECT