ASMB,R,B,L,Z,C RTE ASSEMBLER SEPT 1976 * * NAME: ASMB * SOURCE: 92060-18022 * RELOC: 92060-16022 * PGMR: C.C.H * MODIFIED BY EARL STUTES 1976-09-20-1600 * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1975. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT* * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * * *************************************************************** IFN HED * DOS ASMB XXXXX-XXXXX * (C) HEWLETT-PACKARD COMPANY 1975. XIF IFZ HED * RTE ASMB 92060-18022 * (C) HEWLETT-PACKARD COMPANY 1975. XIF NAM ASMB,3,99 92060-16022 REV.B 760924 * ******************************* * * NOTE: ON CONTROL STATEMENT; * * * N = DISK O.S. USAGE * * * Z = REAL TIME USAGE * * ******************************* * ********************************************* * * ASSEMBLER CONTROL STATEMENT OPTIONS * * * * * * A = ABSOLUTE ASSEMBLY * * * B = PUNCH BINARY OBJECT TAPE * * * C = SCHEDULE 'XREF' FOR XREF TABLE * * * F = FLOATING POINT HDWE. INSTRUCTIONS * * * L = LIST OUTPUT * * * N = ASSEMBLE STATEMENTS WITHIN 'IFN' * * * R = RELOCATABLE ASSEMBLY * * * T = LIST SYMBOL TABLE (END OF PASS 1) * * * X = NON-EAU INSTRUCTIONS * * * Z = ASSEMBLE STATEMENTS WITHIN 'IFZ' * * ********************************************* * ENT ASMB EXT ?HA3Z,?LITI,?AREC,?BREC,?ART,?LKLI EXT ?CMQ,?ENP,?EXP,?INSR,?INS?,EXEC ENT ?ASCN,?ASMB,?BNCN,?BPKU,?CHOP,?CHPI,?DCOD ENT ?ENDS,?ERPR,?MSYS,?GETC,?MOVE,?MSYM,?RLUN ENT ?AFLG,?LSTL,?LUNI,?RFLG,?Z,?ASM1,?LABE ENT ?OKOL,?ORRP,?PNLE,?SETM,?SUP,?LPER,?PERL ENT ?LOUT,?LTFL,?DRFL,?LTSA,?LTSB,?ORGS,?CNTR ENT ?TSTR,?ASII,?ICSA,?FLGS,?BFLG,?LFLG,?TFLG ENT ?X,?MESX,?ASCI,?LINC,?LINS,?LIST,?LUNP ENT ?OPLK,?OPER,?PKUP,?PLIT,?PNCH,?PRNT,?RSTA ENT ?LWA,?RDSC,?WEOF,?WRIF,?LGFL ENT ?SEGM,?SYMK,?V,?ARTL,?LST,?PLIN,?PCOM,?SECT ENT ?NEAU,?HA38,?XRFI ENT ?FPT,?FP,?ENER,?PRPG ENT ?BPSV,?BASF,?GETA ENT ?NDOP,?NDSY,?SYML,?SYMT SUP SUPPRESS EXTENDED LISTING * ****************************** * * OPCODE AND PSEUDO-OP TABLE * * ****************************** OPT OCT 40502,51421,0, 40504,40416,42001 ABS/ADA OCT 40504,41016,46001, 40514,43060,31700 ADB/ALF OCT 40514,51060,31400, 40514,51460,31000 ALR/ALS OCT 40516,42016,12001, 40522,51460,31100 AND/ARS OCT 40523,41407,0, 41114,43060,25700 ASC/BLF OCT 41114,51060,25400, 41114,51460,25000 BLR/BLS OCT 41122,51460,25100, 41123,51412,0 BRS/BSS OCT 41503,40461,53400, 41503,41061,47400 CCA/CCB OCT 41503,42463,42300, 41514,40461,52400 CCE/CLA OCT 41514,41061,46400, 41514,41450,106700 CLB/CLC OCT 41514,42463,0, 41514,43052,103100 CLE/CLF OCT 41515,40461,53000, 41514,47430,103101 CMA/CLO OCT 41515,41061,47000, 41515,42463,42200 CMB/CME OCT 41517,46403 COM DEF ?CMQ OCT 41520,40416,52001, 41520,41016,56001 CPA/CPB OCT 42105,41410,0, 42105,43020,0 DEC/DEF OCT 42105,54025,0, 41131,52043,0 DEX/BYT OCT 42514,40460,131600, 42516,52004 ELA/ENT DEF ?ENP OCT 42514,41060,125600, 42516,42014,0 ELB/END OCT 42522,40460,131500, 42521,52413,0 ERA/EQU OCT 42522,41060,125500, 42530,52005 ERB/EXT DEF ?EXP OCT 44114,52051,102000,46111,40450,102500 HLT/LIA OCT 46111,41050,106500,46511,40450,102400 LIB/MIA SKP * ?FPT EQU * < FLOATING POINT SUBROUTINE/MACRO OPCODES > * OCT 43101,42006 FAD DEF ?HA38 OCT 43104,53006 FDV DEF ?HA38 OCT 43115,50006 FMP DEF ?HA38 OCT 43123,41006 FSB DEF ?HA38 * OCT 44516,40466,52004, 44516,41066,46004 INA/INB OCT 44517,51016,32001, 44523,55016,36000 IOR/ISZ OCT 45115,50016,26000, 45123,41016,16000 JMP/JSB OCT 46104,40416,62001, 46104,41016,66001 LDA/LDB OCT 46511,41050,106400, 47101,46415,0 MIB/NAM OCT 47117,50030,0, 47503,52011,0 NOP/OCT OCT 47524,40450,102600, 47522,43401 OTA/ORG DEF ORGP OCT 47524,41050,106600, 47522,51002 OTB/ORR DEF ORRP OCT 51101,46060,31200, 51101,51060,31300 RAL/RAR OCT 51102,46060,25200, 51102,51060,25300 RBL/RBR OCT 51120,46032,0 RPL OCT 51123,51470,42001, 51505,55062,42040 RSS/SEZ OCT 51506,41452,102200, 51506,51452,102300 SFC/SFS OCT 51514,40465,10010, 51514,41065,4010 SLA/SLB OCT 51517,41453,102201, 51517,51453,102301 SOC/SOS OCT 51523,40464,52020, 51523,41064,46020 SSA/SSB OCT 51524,40416,72000, 51524,41016,76000 STA/STB OCT 51524,41450,102700, 51524,43052,102100 STC/STF OCT 51524,47430,102101, 51532,40467,52002 STO/SZA OCT 51532,41067,46002, 54117,51016,22001 SZB/XOR OCT 47522,41000 ORB DEF ORBP OCT 46123,52024,0, 51513,50022,0 LST/SKP OCT 51525,50040,1, 44105,42017 SUP/HED DEF HEDSB OCT 52516,46024,1, 51105,50035 UNL/REP DEF REPSB OCT 52516,51440,0, 44506,47031,116 UNS/IFN OCT 54111,43031,0, 44506,55031,132 XIF/IFZ OCT 51520,41423,0, 46511,41500,0 SPC/MIC * SKP * * * * 21MX INSTRUCTION SET * * * * OCT 41501,54030,101741, 41501,54430,101751 CAX/CAY OCT 41502,54030,105741, 41502,54430,105751 CBX/CBY OCT 54101,54030,101747, 54101,54430,101757 XAX/XAY OCT 54102,54030,105747, 54102,54430,105757 XBX/XBY OCT 44523,54030,105760, 44523,54430,105770 ISX/ISY OCT 42123,54030,105761, 42123,54430,105771 DSX/DSY OCT 46104,54110,105745, 46104,54510,105755 LDX/LDY OCT 45114,54511,105762, 45120,54513,105772 JLY/JPY OCT 46101,54111,101742, 46101,54511,101752 LAX/LAY OCT 46102,54111,105742, 46102,54511,105752 LBX/LBY OCT 51501,54111,101740, 51501,54511,101750 SAX/SAY OCT 51502,54111,105740, 51502,54511,105750 SBX/SBY OCT 51524,54111,105743, 51524,54511,105753 STX/STY OCT 40504,54110,105746, 40504,54510,105756 ADX/ADY OCT 41530,40430,101744, 41530,41030,105744 CXA/CXB OCT 41531,40430,101754, 41531,41030,105754 CYA/CYB OCT 46102,52030,105763, 51502,52030,105764 LBT/SBT OCT 51506,41030,105767, 52102,51515,105775 SFB/TBS OCT 51502,51515,105773, 41502,51515,105774 SBS/CBS OCT 41502,52114,105766, 46502,52114,105765 CBT/MBT OCT 46526,53514,105777, 41515,53514,105776 MVW/CMW OCT 42102,46041,0, 42102,51042,1 DBL/DBR * * * * * 21MX - MEU INSTRUCTIONS * * * * OCT 42112,50111,105732, 42112,51511,105733 DJP/DJS OCT 45122,51515,105715 JRS OCT 46106,40430,101727, 46106,41030,105727 LFA/LFB OCT 46502,43030,105703, 46502,44430,105702 MBF/MBI OCT 46502,53430,105704, 46527,43030,105706 MBW/MWF OCT 46527,44430,105705, 46527,53430,105707 MWI/MWW OCT 50101,40430,101712, 50101,41030,105712 PAA/PAB OCT 50102,40430,101713, 50102,41030,105713 PBA/PBB OCT 51123,40430,101730, 51123,41030,105730 RSA/RSB OCT 51126,40430,101731, 51126,41030,105731 RVA/RVB OCT 51512,50111,105734, 51512,51511,105735 SJP/SJS OCT 51523,46511,105714 SSM OCT 51531,40430,101710, 51531,41030,105710 SYA/SYB OCT 52512,50111,105736, 52512,51511,105737 UJP/UJS OCT 52523,40430,101711, 52523,41030,105711 USA/USB OCT 54103,40511,101726, 54103,41111,105726 XCA/XCB OCT 54114,40511,101724, 54114,41111,105724 XLA/XLB OCT 54115,40430,101722, 54115,41030,105722 XMA/XMB OCT 54115,46430,105720, 54115,51430,105721 XMM/XMS OCT 54123,40511,101725, 54123,41111,105725 XSA/XSB * ?NEAU EQU * * START OF NON-EAU OPTABLE SWAP AREA * * OCT 42111,53026,100400, 42114,42026,104200 DIV/DLD OCT 42123,52026,104400, 46520,54426,100200 DST/MPY OCT 40523,46027,100020, 40523,51027,101020 ASL/ASR OCT 46123,46027,100040, 46123,51027,101040 LSL/LSR OCT 51122,46027,100100, 51122,51027,101100 RRL/RRR OCT 51527,50030,101100,51101,46451,105000 SWP/RAM * ?FP EQU * * OCT 0,54030,105100,43114,52030,105120 FIX/FLT OCT 0 ********* END OF OPCODE TABLE *********** SKP * ************************************* * * PUT OUT A MESSAGE TO THE OPERATOR * * ************************************* MESSX NOP STA MESS SET MESSAGE LOCN STB MESS+1 SET MESSAGE LENGTH JSB EXEC DEF *+5 DEF .1+1 OUTPUT REQ. CODE DEF .1 OUTPUT ON SYSTEM TTY DEF MADDR MESSAGE ADDRESS DEF MSGLN MESSAGE LENGTH JSB EXEC GO SET EOT ON INPUT DEVICE DEF *+3 DEF .1+2 DEF EOTIN SETS EOT STATUS ON INPUT DEVICE JMP MESSX,I EXIT SEGNM ASC 3,ASMB MADDR ASC 7, /ASMB: $END MESS ASC 2, MESSAGE EXTENSION MSGLN DEC 9 TELOP ASC 4, /ASMB: XREF ASC 3,XREF ASC 5,SCHEDULED ?XRFI NOP CROSS REFERENCE INPUT FLAG. * ******************************* * * GO TO LOAD THE NEXT SEGMENT * * ******************************* SEGMT STA SEGNM+2 SET CORRECT DIGIT (1,2,OR 3) JSB EXEC DEF *+3 DEF .8 SEGMENT REQ. CODE DEF SEGNM LOC'N OF 5 CHAR SEGM'T NAME SPC 1 * *********************** * * EXIT FROM ASSEMBLER * * *********************** ABORT LDA *+4 SET UP END MESSAGE FOR EOF ABORT LDB *+4 JSB MESSX GO PRINT KESSAGE JMP ASMEX GO TO COMPLETION ASC 2,XEND ASMBX LDA CFLAG SZA,RSS IS CROSS REF TABLE REQUESTED? JMP ASMEX NO LDA DRFLG SZA IS DISK OK FOR XREF USAGE? JMP ASMEX NO, GO TO PROGRAM COMPLETION. IFZ LDA ?XRFI GET XREF INPUT FLAG ( 0 OR 2 ) LDB TSTRT GET SOURCE LUN/START-TRACK CODE CMB,INB FORM CODE: XREF INPUT=WORK-TRACKS CPA .1+1 IS SOURCE FROM DISC-FILE ? RSS YES, GO TO SCHEDULE "XREF" STB ?XRFI NO. SOURCE= ASMB WORK-TRACKS. XIF LDA LINC+1 GET CURRENT PAGE NUMBER. CMA,INA NEGATE FOR SIGNAL TO 'XREF'. STA LINC+1 SAVE: 'XREF' SCHED. PARAMETER. LDA PLINE GET THE NEGATED NO. LINES/PAGE. CMA,INA MAKE THE VALUE POSITIVE. STA PLINE SAVE IT FOR 'XREF'. * JSB EXEC INFORM THE DEF *+5 OPERATOR THAT DEF .1+1 THE CROSS-REFERENCE DEF .1 GENERATOR DEF TELOP HAS BEEN DEF .12 SCHEDULED. * JSB EXEC SCHEDULE XREF GENERATOR DEF *+8 RETURN ADDRESS DEF .9 SCHEDULE WITH WAIT DEF XREF PROGRAM NAME DEF ?XRFI SOURCE INPUT POINTER DEF ZERO NO CHARACTER LIMITS DEF LINC+1 -LAST ASSEMBLER PAGE NUMBER. DEF PLINE NUMBER OF LINES PER PAGE. DEF LUNPR PRINTER LOGICAL UNIT * ASMEX EQU * * IFZ JSB EXEC GO RELEASE ALL TRACKS DEF *+3 DEF .1+4 RCODE =5 DEF ..M1 -1 = RELEASE ALL TRACKS XIF LDA BLNS BLANK-OUT LDB BLNS MESSAGE EXTENSION, AND JSB MESSX PRINT: " /ASMB: $END " * * JSB EXEC PROGRAM COMPLETION DEF *+2 DEF .1+5 COMPLETION REQ CODE .8 DEC 8 * SKP * ********************************************* * * OPLK: OPCODE TABLE LOOKUP - WALDY HACCOU * * * CALLING SEQUENCE: L JSB OPLK,I * * * L+1 ERROR RETURN * * * L+2 NORMAL RETURN * * * OUTPUT VALUES: VALUE IN A REG. AND 'CODE'* * * INSTR.FORMAT IN B AND 'INST'* * ********************************************* DOPL DEF TEMP+5 DEF OPT LOC'N OF OPCODE TABLE OPLK NOP JSB BPKUP GET OPCODE POSN STB SCN1+1 CLA STA TEMP+6 CLEAR TEMP+6 STA MFLAG CLEAR SUPPLEMENTAL TABLE FLAG LDA 1 B REG TO A REG JSB GETA GET OPCODE ADDRESS STB *+4 LDA ...1+2 (3) LDB DOPL L(TEMP+5) JSB MOVE NOP MOVE ORIGIN HERE LDB DOPL+1 L(OPCODE TABLE) OPLGO LDA 1,I GET NEXT ENTRY INB CPA TEMP+5 CHECK 1ST 2 CHARS. JMP K J ADB ...1+1 (2) LDA 1,I SZA END OF TABLE? JMP OPLGO NO-PICK UP NEXT ENTRY LDA MFLAG YES- SZA REACHED END OF SUPPL. TABLE? JMP OPMIC YES-CHECK FOR 'MIC' LDB ?NDOP NO-SET POINTER TO TABLE STB MFLAG SET SUPPLEMENTAL TABLE FLAG CPB ?LWA ANY ENTRIES IN SUPPLEMENTAL TABLE? JMP OPMIC NO--INVALID OPCODE; CHECK 'MIC'. JMP OPLGO GO TO CHECK NEXT ENTRY OPMIC LDA CODE GET OPCODE I.D. NO. CPA B100 CODE =100B (MIC)? JMP OPLK,I YES-O.K., RETURN. * * * ERROR EXIT HERE * * LDA .OP 'OP' OPCODE ERROR JSB ERPR CLA FORCE A 'NOP' FOR STA INST INVALID OPCODE'S INSTRUCTION. JMP OPLK,I EXIT HERE ON 'OP' ERROR K LDA 1,I CHECK LAST CHAR OF OPCODE AND UMSK CPA TEMP+6 COMPARE IT JMP *+2 OPCODE FOUND ,SKIP JMP J NOT FOUND, TRY NEXT ENTRY LDA 1,I AND LMASK SET 'A' = OPCODE TYPE INB LDB 1,I STB INST = INSTRUCTION FORMAT STA CODE = VALUE OF CODE ISZ OPLK JMP OPLK,I EXIT ALPHA+2 * MFLAG NOP SUPPLEMENTAL-OPCODE-TABLE FLAG * SKP * ****************************************************** * * EVALUATE OPERAND; TEST/PROCESS 'C' OR 'I' MODIFIER * * ****************************************************** * CLER DEF RELC START OF 5 WORD CLEAR AREA CHOP NOP * * * ON ENTRY A = MODIF.PARAMETER (I,C,0=NONE,2=ASC) * * * B= MASK NECESSARY FOR I OR C MODIFIER * * STA FLAG STB FLAQ SPC 1 * * CLEAR CHOP PARAMS IN T, RELC, SIGN, SUMP & TERM.. * LDA ...1+4 (5) LDB CLER START OF CLEAR AREA JSB SETM ZERO NOP TO SET MEMORY TO ZERO STA XORD INITIALIZE XORD =0. ISZ SIGN SET SIGN = + (+1=+,-1=-) LDA SCN1+2 OPER.POSN. STA PNTR SZA,RSS JMP HD22 ERROR**NO OPERAND * * * GET THE 1ST CHARACTER * JSB GETC CPA L+3 PLUS? JMP HD32+2 YES CPA L+5 MINUS? JMP HD32 YES JMP HD32+3 NO * * * PROCESS AN ASTERISK '*' * HD26 CLA,INA SET A=1 CPA SYMP IS THE '*' ALONE? RSS YES - GOOD JMP HD22 NO - IT'S AN ERROR ADA ?BASF SET A = CURRENT RELOCATION TYPE. LDB AFLAG GET ABS. ASSMBL. FLAG SZB IS THIS AN ABS. ASSEMBLY? CLA YES, CLEAR A(WILL BE RELOC. BIT) LDB PLCN PROG LOCN CNTR TO B REG STB SAVB SAVE PLCN VALUE-TEMPORARILY. JMP HD50A * * * CHOP LOOP PROCESSING HERE * HD30 LDA PEEK CPA L+4 TEST PEEK FOR A JMP HD36 COMMA, GO TO TEST MODIFIERS CPA BLNK JMP HD40 =BLNK CLB,INB SET 'SIGN' FOR + CPA L+3 PLUS? RSS YES * * * PROCESS SIGNS HERE * HD32 CCB SET 'SIGN' FOR - STB SIGN (HD32+1) ISZ PNTR * * * PICK UP NEXT SET OF CHARS.IN BUFFER * JSB BPKUP GET POSN OF NXT NON-BLNK CHAR.HD32+3 STA PEEK STB PASCN SAVE PNTR FOR ASCN RTN JSB MSYMS MEAS.SYMBOL, SET SYMP/SYMN ADA PNTR STA PNTR * * * TEST FOR NUMERIC OR SYMBOLIC SET * LDA PEEK FIRST CHAR OF SET TO A FOR TESTING LDB TEST STB PEEK SAVE CHAR.FOR LATER TEST CPA L+2 ASTERISK? JMP HD26 TO '*' PROC ADA .M58 -58 SSA,RSS TEST FOR SYMBOLIC TERM JMP HD50 PROCESS THE SYMBOL ADA LPDG+3 (10) SSA JMP HD50 PROCESS THE SYMBOL * * * PROCESS NUMERIC SET HERE * LDB SYMP ADB ..M1 LDA LAST IS B LAST - CPA .B CHARACTER? JMP *+2 * * SET B REG FOR ASCN ROUTINE ADB .401B LDA PASCN JSB ASCN TO AXCII CONVERSION TO BINARY JMP CHOP,I ERROR EXIT FROM ASCII CONV. JMP HD61+1 A REG CONTAINS THE VALUE * * * TEST INFORMATION FOLLOWING COMMA, IF LEGAL * * -USES FLAG AND FLAQ * * -IF C OR I, SET CORRECT BIT IN INSTRUC. USING FLAQ AS MASK * HD36 LDB FLAG SZB,RSS IS COMMA LEGAL JMP HD37 -NO- ERROR CPB ...1+1 'ASC'? JMP HD40 -YES- ISZ PNTR POINT TO CHAR.FOLLOWING COMMA JSB BPKUP SEARCH FOR NON-BLANK JSB MSYM MEASURE SYMBOL CPA ...1 1 CHAR SYMBOL? JMP *+3 YES * * NO - ERROR HD37 JSB OPERR OPERAND ERROR JMP HD40 LDA TEST CPA BLNK BLANK TERMINATOR? JMP *+2 -YES- JMP HD37 -NO- ERROR LDA LAST CHAR TO A CPA FLAG =I/C? RSS YES, O.K. JMP HD37 ERROR: NOT 'I' OR 'C' MODIFIER! LDA INST IOR FLAQ SET I OR C BIT STA INST LDA CODE CPA L+2 STF OR CLF? (52) JMP HD37 -YES- ERROR * * * CHOP TERMINATION PROCESSOR * * HD40 CLA INITIALIZE THE STA SIGN OFFSET FLAG TO ZERO. LDA RELC A=RELOCATION CODE LDB CODE B=INSTRUCTION I.D. SZA ABSOLUTE OPERAND? JMP RELOC NO, CHECK RELOCATABLE. HD40A LDA SUMP YES, GET OPERAND VALUE. SSA NEGATIVE? CPB .12+5 YES. IS IT ABS (21B)? JMP HD42 YES-OK- CPB .32B NO. IS IT RPL (32B)? JMP HD42 YES-OK- JMP HD22 NO. *ERROR* * * * VALUE IS RELOCATABLE, TEST FOR VALIDITY * * RELOC LDA T IS RELOC. NUMBER SZA CANCELLED? JMP HD40B NO. CHECK FOR LEGAL RELOC. STA RELC YES, SET RELOCATION CODE =0. JMP HD40A GO TO CHECK FOR NEGATIVE OPERAND. HD40B CPA ...1 LEGAL RELOC? (+1) RSS -YES- SKIP JMP HD22 NO,ERROR. CPB ...1 ORG? JMP E -YES * * * CHECK: EQU,END,ORG,DEF,HED,& I/O EXT * * ADB .M11 -11 SSB CODE <13B? JMP HD22 YES, ERROR ADB ..M1+5 -6 SSB CODE > 20B ? JMP E NO. CHECK FOR EXTERNAL. ADB .M27B YES. CODE LESS THAN SSB 50B ? JMP HD22 YES. ERROR: NOT I/O! ADB ..M1+2 CODE GREATER THAN SSB,RSS 52B ? JMP HD22 YES. ERROR: NOT I/O! CLB FORCE ERROR IF NON-EXT I/O. E LDA RELC GET RELOC. CODE. CPA ...1+3 EXTERNAL ? JMP HD41 YES. CHECK VALIDITY. LDA SUMP GET VALUE OF OPERAND. SSA,RSS ERROR, IF NEGATIVE. SZB,RSS RELOC. VALID FOR THIS OPCODE? JMP HD22 NO. * 'M' ERROR * JMP HD42 VALID RELOC. GO TO FINISH. * * * TEST FOR EXT W/OFFSET; SET SIGN & OFFSET VALUE * * HD41 LDA TERM GET NUMBER OF OPERAND TERMS. CPA .1 SINGLE EXTERNAL REFERENCE ? JMP HD42 YES, NO MORE CHECKING NEEDED. ADB .1+5 (6) TEST FOR EQU. SZB,RSS EQU TO EXTERNAL, WITH OFFSET ? JMP HD22 YES, *ERROR* LDA SUMP GET COMBINED OPERAND VALUE. LDB XORD GET EXTERNAL ORDINAL NUMBER. STB SIGN SET OFFSET FLAG = EXT ORDINAL #. CMB,INB NEGATE ORDINAL VALUE. ADA B SUBTRACT EXTERNAL ORDINAL VALUE. STA SUMP SAVE OFFSET VALUE. * * * NORMAL EXIT FROM CHOP, HERE * * HD42 LDA RELC RELOCATION CODE IN (A) AND LDB SUMP SUM IN (B) ON EXIT. ISZ CHOP JMP CHOP,I EXIT ALPHA+2 * * *CHOP ERROR EXIT* * HD22 LDA .MBLN 'M' FOR M TERM ERROR JSB ERPR ERROR PRINT CLA CLEAR THE STA SIGN OFFSET FLAG. JMP CHOP,I EXIT ALPHA+1 * * * PROCESS SYMBOLIC TERM HERE * * HD50 JSB SYMK GO TO SYMBOL TABLE LOOKUP JMP HD6 ERR0R STB SAVB SAVE VALUE FOUND IN B. LDB FLEX GET FIRST WORD OF SYMBOL ENTRY. SSB IS THIS AN UNDEFINED 'ENT' ? JMP HD6 YES * ERROR * HD50A AND .1+6 TYPE MASK SZA,RSS RELOCATABLE TYPE? JMP HD61 NO, ABSOLUTE. * SKP * * * TEST FOR EXTERNAL EQU (RELC=5) * CPA ...1+4 RELOC=5? LDA ...1+3 YES, SET FOR 4 * * * TEST FOR REPLACEMENT CODE SYMBOL (RELC=6) * * LDB CODE GET OPCODE I.D. CPA .1+5 REPLACEMENT CODE SYMBOL ? CPB .32B YES, IS OPCODE RPL ? RSS YES, CONTINUE. JMP HD22 NO *ERROR* LDB RELC GET OPERAND RELOC. CODE. SZB,RSS FIRST SYMBOL ENCOUNTERED ? STA RELC YES,SET OPERAND RELOC. CODE. CPA RELC NO, TEST FOR SAME RELOC. TYPE. CPB .1+3 SAME. ANOTHER EXTERNAL ? JMP HD22 *ERROR* DIFFERENT OR 2 EXT'S. LDB SAVB GET SYMBOL'S VALUE. CPA .1+3 IF SYMBOL IS AN EXTERNAL, STB XORD SAVE THE ORDINAL NUMBER. * * *UPDATE SIGN SAVER * LDB SIGN COMPUTE ALGEBRAIC RUNNING SUM ADB T OF SYMBOLIC TERM'S SIGNS. STB T END RESULT=0/+1,ELSE 'M' ERROR. HD61 LDA SAVB VALUETO A ISZ TERM UPDATE NO OF TERMS LDB SIGN SSB IS SIGN NEGATIVE? CMA,INA -YES- COMPLEMENT ADA SUMP -UPDATE RUNNING SUM STA SUMP JMP HD30 * * * UNDEFINED SYMBOL EXIT * * HD6 LDA .UN 'UN' UNDEFINED SYMBOL JMP HD22+1 TO ERPR .M11 DEC -11 .M27B OCT -27 .401B OCT 401 .32B OCT 32 .50 DEC 50 .M58 DEC -58 XORD NOP TEMP. STORAGE: EXTERNAL ORDN'L NO. * SKP