ASMB,R,L,C HED ** RTE-M ASMB - SEGMENT D ** * * * 9/24/76 * * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY. 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. * * *************************************************************** * * * NAME : ASMBD * SOURCE: 92064-18132 * RELOC : 92064-16050 * PRGMR : C.H., H.C., S.K. * NAM ASMBD,5,99 92064-16050 REV.1650 761001 * ENT ASMBD * EXT ?ASMB,?BPKU,?PKUP,?RSTA,?SETM,?SEGM,?ASM1 EXT ?MESX,?FLGS,?AFLG EXT ?X,?Z,?LWA,?RFLG,?ICSA,?LSTL EXT ?XRFI,?NEAU,?HA38 EXT ?FP,?FPT,?NDSY,?FMPE,LSTLU,OUTLU * EXT AI EXT DCBI EXT ?ERR EXT OPEN EXT OPTNI EXT AL EXT DCBL EXT OPTNL EXT CREAT EXT DCBO EXT AO EXT OPTNO * * * **************************** * * TEMPORARY AND FLAG REGION* * **************************** * * COM TEMP(7) COM ...1(7) COM .12(6) COM ..M1(6) COM L(7) COM .9 COM .29 COM .M8 COM .M15 COM .M29 COM BLNK COM .IL COM .MBLN COM .NO COM .OP COM .OV COM .UN COM BLNS COM TW10 COM .1000 COM BIT15 COM .E COM .B(2) COM RC(5) COM NAMI COM NAME(40) COM IOBF(63B) COM PBUF(72B) *************************** * A EQU 0 B EQU 1 DATA DEF *+1 * ...1 DEC 1,2,3,4,5,6,7 * .12 DEC 12,13,14,15,16,17 * ..M1 DEC -1,-2,-3,-4,-5,-6 * L OCT 50,51,52,53,54,55,56 ( ) * + , - . * .9 DEC 9 * .29 DEC 29 (35B) * .M8 DEC -8 * .M15 DEC -15 * .M29 DEC -29 * BLNK OCT 40 LOWER BLANK,UPPER 0 (=40B) * .IL ASC 1,IL * .MBLN ASC 1,M * .NO ASC 1,NO * .OP ASC 1,OP * .OV ASC 1,OV * .UN ASC 1,UN * BLNS ASC 1, * TW10 OCT 176000 ADDRESS MASK * .1000 OCT 1000 * BIT15 OCT 100000 * .E OCT 105 * .B OCT 102 DEF RC ADR OF RC * RC ASC 5,E R B C X .1 EQU ...1 * NAMI DEF NAME LOC'N FOR TEMP SYMBOL STORAGE * NAME OCT 0,0,0,0 OPLK USAGE DATAE DEF * # EQU TEMP SAME AS DATA ORIGIN .4 EQU TEMP+10 PASS EQU #+115B PASS FLAG(0=PASS 1 AND 1=PASS2) PLCN EQU #+117B PROGRAM LOCATION COUNTER PLEN EQU #+120B LIT LENGTH PASS 1/LIT ORG PASS 2 PNTR EQU #+121B POINTS AT LAST OR CURRENT CHAR. * * I/O STATEMENT BUFFER * * *(INPUXFFER(BUFF) STARTS IN 11TH WORD)* BUFF EQU IOBF+12B * CON DEF *+1 * PBUF OCT 10400,20000,0 START OF PUNCH BUFR(NAM FMT) ASC 3, OCT 0,0,0,0,143,0,0,0,0,0,0 ASMB0 OCT 5757 FOR ASMB CHECK ATEMP DEF TEMP+7 CNT DEC -17 APBUF DEF PBUF LSIZE DEC 64 .M2 EQU TEMP+21 * * ASMBD LDB DATA ADR OF COMMON - INITIALIZE LDA B,I COMMON BY MOVING A BLOCK OF STA ATEMP,I DATA INTO IT ISZ ATEMP INB CPB DATAE RSS JMP *-6 * LDB APBUF LDA CON,I STA B,I INB ISZ CON ISZ CNT JMP *-5 CLA EXTRA WORD FOR BUFFER OVERFLOW STA PBUF+60 * OPIN JSB OPEN OPEN SOURCE FILE DEF *+7 DEF DCBI INPUT DCB DEF ?ERR ERROR WORD DEF AI+1 NAME FROM GTFIL DEF OPTNI OPEN OPTIONS DEF AI+5 SECURITY CODE DEF AI CR # SSA,RSS TEST FOR OPEN ERRORS JMP CRLST NO ERRORS JSB ?FMPE FMP ERROR ROUTINE DEF AI+1 * CRLST LDA LSTLU IS LIST FILE AN LU? SZA JMP OPLST YES, THEN DO NOT CREATE IT JSB CREAT CREATE LIST FILE DEF *+8 DEF DCBL LIST FILE DCB DEF ?ERR ERROR WORD DEF AL+1 LIST FILE NAME DEF LSIZE SIZE OF LIST FILE DEF .4 TYPE OF LIST FILE DEF AL+5 SECURITY CODE DEF AL DRN OR -LU# SSA,RSS ERRORS? JMP OPLST NO CPA .M2 DUPLICATE FILE NAME? JMP OPLST YES THEN OPEN FILE JSB ?FMPE FMP ERROR ROUTINE DEF AL+1 LIST FILE NAME JMP CRLST CREATE FILE AGAIN OPLST JSB OPEN OPEN LIST FILE DEF *+7 DEF DCBL LIST DCB DEF ?ERR ERROR CODE DEF AL+1 NAME FROM GTFIL DEF OPTNL OPTION WORD DEF AL+5 SECURITY CODE DEF AL CR # SSA,RSS ERRORS? JMP ASMD1 NO JSB ?FMPE YES DEF AL+1 LIST FILE NAME * ASMD1 LDA ?ICSA CMA,INA STA ?LSTL CLA STA PASS SET PASS FLAG=0 (PASS 1) JSB ?RSTA READ AND PRINT CONTROL STATEMENT * * * TEST FOR 'ASMB' IN FIRST 4 POSITIONS * * LDA BUFF CMA,INA ADA BUFF+1 CPA ASMB0 =5757B (I.E. =ASMB?) JMP COPS YES * * * CONTROL STATEMENT ERROR ROUTINE * * CSER LDA .CS 'CONTROL' STATEMENT'ERROR LDB .CS+1 JSB ?MESX PRINT MESSAGE JMP ?ASMB ASSEMBLER EXIT * * * TEST FOR CONTROL OPTIONS (A,B,C,F,L,N,R,T,X,Z) * * COPS LDA .1+4 (5) STA PNTR SET PNTR = 5 CLA INITIALIZE STA XFOPT X OR F OPTION COUNT COPUP JSB ?PKUP GET NEXT CHARACTER CPA BLNK DONE ? JMP G YES SZA,RSS CHAR=0? JMP G YES, 0K CPA L+4 COMMA? RSS -YES- JMP CSER -NO- ERROR JSB ?BPKU SKIP BLANKS LDB ?FLGS LOC'N OF CONTROL CHAR SET CPA .B =B? JMP BCON1 YES, IGNORE IT, READ NEXT CHAR CPA .L =L? (LIST) JMP BCON YES CPA .R =R? (RELOC.-NOT NECESSARY) ADB ...1 YES CPA .T =T? (SYMBOL TABLE PRINT) ADB ...1+1 YES CPA .N IS IT FOR IFN? ADB ...1+2 YES CPA .Z IS IT FOR IFZ? ADB .1+2 YES CPA .A =A? (ABSOLUTE ASSEMBLY?) ADB .1+3 YES CPA .C =C? (CROSS REF. TABLE?) ADB .1+4 YES CPB ?FLGS SKIP IF ANY OPTION FOUND JMP XTST NO NICE MATCH SO FAR BCON STA 1,I SET OPTION FLAG BCON1 ISZ PNTR BUMP PNTR FOR NEXT CHAR. JMP COPUP GO FOR NEXT OPTION .L OCT 114 ASCII 'L' .N OCT 116 'N' .R OCT 122 'R' .T OCT 124 'T' .Z OCT 132 'Z' .A OCT 101 'A' .C OCT 103 'C' .X OCT 130 'X' .F OCT 106 'F' XFOPT DEC 0 'X' OR 'F' OPTION COUNT CNTX DEC -12 LENGTH OF FLOATING POINT OPCODE ENTRIES DESTN DEF ?FP LOC'N OF HDWE. 'FIX/FLT' OPCODES AS.FI OCT 43111 ASCII 'FI' TO ENABLE 'FIX/FLT' OPCODES DESLO DEF ?FPT LOC'N OF FLOATING POINT OPCODE ENTRIES * MVLC DEF *+1 FLOATING POINT OPCODE TBL. VALUES * * ****** FAD ******* ****** FDV ******* OCT 43101,42026,105000,43104,53026,105060 * * ****** FMP ******* ****** FSB ******* OCT 43115,50026,105040,43123,41026,105020 * * * END OF FLOATING POINT ENTRIES * * SKP CS.CK NOP LDA XFOPT LOAD A WITH OPTION FLAG SZA SKIP IF FLAG 0 JMP CSER IF 1 PRINT CS ERROR INA INCREMENT VALUE OF FLAG STA XFOPT SAVE IN FLAG POSITION JMP CS.CK,I RETURN * FMOVE JSB CS.CK GO CHECK LEGAL OPTION LDB DESTN LOAD B WITH TABLE POINTER RBL,CLE,SLB,ERB CLEAR INDIRECT BIT, IF ANY. LDB B,I PUT POINTER ADDR. IN B LDA AS.FI LOAD A WITH ASCII "FI" STA B,I STORE IN FIX PART OF TABLE LDB DESLO LOAD B WITH SECOND TABLE POINTER RBL,CLE,SLB,ERB CLEAR INDIRECT BIT, IF ANY. LDB B,I PUT POINTER ADDR. IN B TMOV2 LDA MVLC,I LOAD FIRST WORD STA B,I STORE IN TABLE ISZ MVLC INCREMENT TO NEXT WORD INB INCREMENT POINTER ISZ CNTX INCREMENT COUNT, SKIP IF 0 JMP TMOV2 RETURN FOR NEXT WORD JMP BCON+1 RETURN * XTST CPA .F IS OPTION =F JMP FMOVE YES, GO CHANGE TABLE CPA .X IS OPTION =X JMP TMOVE YES, GO CHANGE TABLE JMP CSER NO, PRINT CONTROL STATEMENT ERROR! TMOVE JSB CS.CK CHECK IF F BEFORE LDB DESLC MOVE N-EAU OPCODE VALUES RBL,CLE,SLB,ERB CLEAR INDIRECT BIT, IF ANY. LDB B,I PUT POINTER ADDRESS IN B TMOV1 LDA MOVLC,I OPCODE TABLE IN ASMB.. RAL,CLE,SLA,ERA CLEAR INDIRECT BIT, IF ANY. LDA A,I GET DIRECT ADDRESS. STA B,I STORE NEW VALUE INTO OPCODE TBL. ISZ MOVLC INB BUMP TABLE POINTER ISZ COUNX IS TABLE ALL MOVED? JMP TMOV1 NO, GO MOVE ANOTHER WORD. JMP BCON+1 COUNX DEC -13 LENGTH OF NEW TABLE DESLC DEF ?NEAU LOCATION OF OPCODE VALUE DESTIN. * MOVLC DEF *+1 NON-EAU OPCODE VALUES FOR TABLE. OCT 42111,53006 DIV DEF ?HA38 OCT 42114,42006 DLD DEF ?HA38 OCT 42123,52006 DST DEF ?HA38 OCT 46520,54406 MPY DEF ?HA38 OCT 0 END OF NEW TABLE * * TEST FOR COMPATABILITY AMONG THE OPTIONS * * G LDB ?AFLG LDA ?RFLG SZB,RSS 'A' SET? JMP *+3 NO SZA YES-IS 'R' SET? JMP CSER YES - CONTROL CONFLICT LDA ?X GET FWA OF AVAILABLE CORE SZB 'A' SET? LDA ?Z YES - GET FWA FOR ABS. ASSMBLY. CMA,INA ADA ?LWA LWA-FWA AVAIL MEM. IN A INA A NOW = SYMBOL TBL LENGTH * * * CLEAR SYMBOL TABLE * * CCE E=1 SZB ABS. ASSY? CLE YES - E=0 LDB ?Z GET FWA OF ABSOL ASSY. SEZ SKIP IF ABS. ASSY. LDB ?X FWA OF SYM TBL TO 'B' STB ?NDSY SET ADDRESS OF END OF SYMBOL TABLE JSB ?SETM NOP SET SYMBOL TABLE TO ZERO * ********************* * * START PASS 1 HERE * * ********************* CLA NO STA ?XRFI SET XREF INPUT FLAG... LDA TW10 STA ?ASM1 SET FLAG FOR 'INIT' PROCESSING CLA STA PASS SET PASS FLAG FOR PASS 1 STA PLCN INITIALIZE PROG LOC'N COUNTER STA PLEN CLEAR LITERAL LENGTH FLAG LDA EXTLN GET LENGTH OF NAM EXTENSION AREA. LDB EXTAD GET FWA OF NAM EXTENSION. JSB ?SETM GO SET BLANKS INTO THE AREA. OCT 20040 DUAL ASCII BLANKS. LDA OUTLU CREATE AND OPEN OUTPUT FILES SZA IS OUTPUT FILE AN LU? JMP OPOUT YES, THEN DONT CREATE JUST OPEN LDB .7 FILE TYPE FOR ABSOLUTE FILE LDA ?AFLG ABSOLUTE OR RELOCATABLE OUTPUT? SZA,RSS LDB .5 RELOCATABLE OUTPUT FILE TYPE STB FLTYP JSB CREAT CREATE OUTPUT FILE DEF *+8 DEF DCBO OUTPUT FILE DCB DEF ?ERR ERROR WORD DEF AO+1 OUTPUT FILE NAME DEF .20 FILE SIZE DEF FLTYP FILE TYPE DEF AO+5 SECURITY CODE DEF AO DRN OR -LU SSA,RSS ERRORS? JMP OPOUT NO, THEN OPEN FILE CPA .M2 DUPLICATE FILE NAME? JMP OPOUT YES, OPEN EXISTING FILE JSB ?FMPE FMP ERROR ROUTINE DEF AO+1 FILE NAME * OPOUT JSB OPEN OPEN OUTPUT FILE DEF *+7 DEF DCBO OUTPUT FILE DCB DEF ?ERR ERROR WORD DEF AO+1 OUTPUT FILE NAME DEF OPTNO OPTION WORD DEF AO+5 SECURITY CODE DEF AO DRN OR -LU SSA,RSS ERRORS? JMP SGLD NO, LOAD NEXT SEGMENT JSB ?FMPE FMP ERROR ROUTINE DEF AO+1 FILE NAME * SGLD LDA ABSA SEG. CALL FOR ABSOLUTE LDB ?AFLG GET ABSOLUTE-ASSEMBLY FLAG. SZB,RSS ABS. ASSY? - SKIP IF TRUE. LDA *+2 PICK UP CODE FOR ASMB1 JMP ?SEGM GO TO LOAD THE NEXT SEGMENT ASC 1,1 ASCII '1 ' FOR RELOC. ASSEMBLY-'ASMB1' ABSA ASC 1,3 ASCII '3 ' FOR ABS. ASSEMBLY-'ASMB3' .CS ASC 2,CS ASCII 'CS' FOR CONTROL STMT. ERROR MSG. .20 DEC 20 .5 EQU TEMP+11 .7 EQU TEMP+13 FLTYP NOP EXTAD DEF PBUF+17 FWA OF NAM EXTENSION AREA. EXTLN EQU L+4 (54B) LENGTH OF NAM EXTENSION AREA. * END ASMBD