IMD 1.16: 2/09/2008 14:37:31 84-93737-01 a000 f73701 6502 microprocessor firmware assembler (source, object, binary and jcl) 6aug82  ž� ªªž @0‚|†ø)®wÂwЀЀÎtQº®q¦l) ˆ " ž}‚gÿA ¢`œ�žúž½žä×_l M@’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’IOS4 €MÁÚF182080609410104820806140046 820806140046EF73701 VOL6502 MICROPROCESSOR FIRMWARE ASSEMBLER 84-93737-XX A000   ’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’Ižúž½žä×_l M@†i¾øG€ÿìÆy†y ¾õG€ÿæG‚ÿñ‚ÿðG�ÿÜ`HÂZ@ †b G€ÿÚ`ú^žƒ¾ÿž©ÒY¾ü žáe‡ †IÂQ¾¤¾æ ¾ïÀˆÆBÆBp@€„†;€…†:€††9€ƒ †:Â7P@ G€ÿµÆ:à‰æÙ¾‹N¾Ò ¾ìžùž8‚!¢0ŸÐÆ.ž¶ *•¦ÿ C¦'¾¿Ÿx¢«„C# b# ž}€BŸÒ× @0DAJ÷LÆ ¢w+™ЀЀΖQA1¹" ¦ † †¦†¤¾¥i€„Žœ� žŸ} šŸ}ˆªªžö @¬E°E¨F¤F)¤D¾‘ÄE‚Û„Fž8 æÑŸ} ¦ÔŸ} ÆÌŸ} ž* `jU�BˆB¾Œ I,Ÿv ¾‡°¾…€B¾ƒ I,žº ž# @ G€ÿ9Æáæ¬HÿÆàÆà@pÆÜ¾³Ÿrâ�èCHùC €ˆC ˜GãTºà€q` †Lg€ÿ"ž�g�ÿò‘æEX¾C P¢Žâ‰+ì„s=è„胾Pž¿ÞžÂ+âc fžQ¾�žN ‚¦p ž‹¾$R†¡ŸxÆn†j‚Ê ž¢žû Þž‚ÞÞ”žniæâZ悌¾ ތ⊞ì ¦Ÿ} ¦Ÿ}ÿÿŠHŠG¾Âž�†§¾¬žÄ¾ë ¦¡ÂŸ@AúœLèSÃ)"$ C ž‰žkžëª2žâŠ0žjŠ.ž�žh†( ’ªÂ+¢$`îƒæ%ꂜ€\ÿö1 !¦Mž' ²y‚ žˆò%€À'+ò²oŸsæ…¾âƒ)žsžY ‡eÞdŸ|Ÿ{ @ž8 ož½ Ož¶ mž´ Jž² Kž° iž¿ gž½†N ž)V% tž¹ž%ì„sLè„n`" E¾  F.¹¾  F„ Dž>)žÿ ¾=`¾;nrgŸy ¾w"¾GÞ,ž{žK¾q1 ¾AÞ&ž}žE¾*`¾(t¾ž@¾% ²;¾c ¾ Þ7Þ6Þ5žy¦3ž4¾ž2¾ü¾(ž.OS:: SYSž¦ž"ªªiüþŒþ‹Âwþ‹þŠÂvc Bc A@6<# þ�Ic B# ÞgIþjHÀc r‡ŸC 6502 MICROPROCESSOR FIRMWARE ASSEMBLER 84-93737-10 A000 IMPLICIT INTEGER(A-Z) C C C C C--- ASSEMBLER FOR THE MOS TECHNOLOGY MCS-650X SERIES C--- OF MICRO PROCESSORS. C C--- WRITTEN BY MARK S SIMS - 1978 C--- SOUTHERN METHODIST UNIVERSITY C--- C--- COPYRIGHT 1978 BY MARK S. SIMS ALL RIGHTS RESERVED. C C--- REVISED MAY 1979 FOR CAI FORTRAN C C C C--- DEFINITION OF COMMON BLOCK VARIABLES C C C--- BLOCK /LNKLST/ C--- AVLIST: ARRAY IS A LINKED LIST USED FOR FREE STORAGE C---  FOR VARIOUS STACKS AND THE XREF CHAINS IN THE SYMBOL TABLE. C--- AVSIZE: THE MAXIMUM SIZE OF THE AVAILABLE LIST C C C--- BLOCK /OPTIONS/ C C--- NOLIST: THIS IS THE FLAG AS TO WHETHER OR NOT THE SOURCE LISTING C--- IS TO BE PRODUCED. 0=LIST, 1=DO NOT LIST. C--- NOOBJ: FLAGS WHETEHER OR NOT THE OBJECT FILE IS TO BE PRODUCED. C--- 0=PRODUCE OBJECT FILE. 1=DO NOT PRODUCE OBJECT FILE. C--- NOXREF: FLAGS WHETHER OR NOT A CROSS REFERENCE AND SYMBOL TABLE C--- DUMP ARE TO BE GENERATED. 0=PRODUCE CROSS REFERENCE. C--- 1=DO NOT PRODUCE CROSS REFERENCE. C--- NOGEN: 1=DO NOT LIST MULTIPLE LINES OF DATA GENERATION PSEUDO C--- OPS. 0=LIST ALL LINES OF DATA GENERATED DATA. C C C C--- BLOCK /STA TUS/ - VARIOUS ASSEMBLER STATUS WORDS C C C--- CARD: THE LINE NUMBER OF THE CURRENT LINE OF SOURCE TEXT AS C--- PRINTED ONTO THE SOURCE LISTING AND USED IN PRODUCING C--- THE CROSS REFERENCE LISTING. C--- PASS: THE CURRENT PASS OF THE ASSEMBLER. PASS=0 MEANS IN PASS 1 C--- BUT WE ARE GOING TO BE EVALUATING EXPRESSIONS FOR CERTAIN C--- THAT MUST HAVE ALL SYMBOLS DEFINED (EQU, BSS, ORG, ETC.) C--- PASS=1 MEANS PASS 1. PASS=2 MEANS PASS 2. C--- PCOUNT: THE VALUE OF THE LOCATION COUNTER. C--- AVAIL: THE POINTER TO THE CURRENT TOP OF THE AVAILABLE STORAGE C--- POOL. (FROM WHICH ALL STORAGE FOR ANY OF THE DYNAMIC LISTS C--- IS ALLOCATED) C--- ERRNUM: THE ERROR NUMBER WORD. UP TO 4 4-BIT ERROR NUMBER CODES C--- ARE PACKED INTO THE WORD. ERRORS GENERATED IN PASS 1 ARE C--- SENT TO PASS 2 THROUGH THE SCRATCH FILE. C--- ERRCNT: A COUNTER OF THE NUMBER OF ERROR MESSAGES PRINTED. C C C C--- BLOCK /FIELDS/ - THE VARIOUS FIELDS OF THE INPUT CARD AS RETURNED C--- BY THE PARSER. C--- ARRAY LABEL - THE LABEL FIELD C---  ARRAY OPCODE - THE OPCODE FIELD C--- ARRAY SYMBOL - THE OPERAND FIELD C--- OPTR - THE NUMBER OF CHARACTERS IN THE OPCODE FIELD C--- LABPTR - THE NUMBER OF CHARACTERS IN THE LABEL FIELD C--- SYMPTR - THE NUMBER OF CHARACTERS IN THE OPERAND FIELD. C C C C--- BLOCK /FILES/ - FILE ASSIGNMENT NUMBERS. C C--- INFILE: SOURCE FILE NUMBER (5) C--- OUTFIL: LISTING FILE NUMBER (6) C--- OBJ: OBJECT FILE NUMBER (8) C C C--- BLOCK /SYMBLK/ - THE SYMBOL TABLE VARIABLES C C--- SYMTAB: THIS ARRAY IS THE SYMBOL TABLE C--- SYMLEN: THE NUMBER OF CHARACTERS LONG A SYMBOL CAN BE. C--- MAXSYM: THE MAXIMUM NUMBER OF SYMBOLS THAT CAN BE DEFINED. C C C--- BLOCK /HEAD/ - PAGE HEADING AND CONTROL INFORMATION C C--- TITLE: CONTAINS THE CURRENT TITLE WHICH IS TO BE PRINTED AT C--- THE TOP OF EACH PAGE (IN 80A1 FORMAT). C--- LINENO: CONTAINS THE LINE NUMBER OF THE NEXT LINE TO BE C--- PRINTED ON THE PAGE. C--- PAGE: CONTAINS THE PAGE NUMBER OF THE CURREN PAGE OF SOURCE C--- LISTING C--- COMCOL: THE COLUMN IN WHICH THE OPERAND MUST BEGIN IN BEFORE C--- BEING CONSIDERED A COMMENT C--- MAXLIN: THE NUMBER OF LINES LONG A PAGE IS. RESETABLE C--- VIA THE 'PAGE' PSEUDO OP. C C C--- BLOCK /PTRS/ - ARRAY 'PTR' CONTAINS THE LIST OF POINTERS C--- TO THE BEGINNING AND END OF EACH FIELD (PARAMETER) C---  IN THE OPERAND (USUALLY) ARRAY. FUNCTION 'SETPTR' C--- IS CALLED TO LOAD THIS ARRAY WITH THE POINTERS. C---  THE START OF THE N'TH FIELD IS IN PTR(N,1) AND THE END C--- OF THE N'TH FIELD IS POINTED TO BY PTR(N,2). IF A FIELD C--- IS A NULL FIELD THEN PTR(N,1) WILL BE SET \ PTR(N,2) (OR TO C--- ZERO). C C C C--- BLOCK /BUFFER/ - ARRAY 'LINE' CONTAINS THE CURRENT SOURCE CARD C--- IMAGE BEING ASSEMBLED (80A1 FORMAT). THE IMAGE IS OBTAIND C---  FROM EITHE THE SOURCE FILE OR THE SCRATCH FILE. C C C C C C C--- THE AVAILABLE STORAGE POOL FOR THE DYNAMIC LISTS IS STORED IN BLANK C--- COMMON C COMMON/LNKLST/ AVLIST(2000,2), AVSIZE COMMON/OPTIONS/ NOLIST,NOOBJ,NOXREF,NOGEN COMM ON/STATUS/ CARD,PASS,PCOUNT,AVAIL,ERRNUM,ERRCNT COMMON/FILES/ INFILE,OUTFIL,SCR1,OBJ COMMON /SYMBLK/ SYMTAB(400,9), MAXSYM, SYMLEN, LASTSYM COMMON/HEAD/ TITLE(80),LINENO,PAGE,COMCOL,MAXLIN C DATA TITLE/0,26*1H ,1HM,1HC,1HS,1H-,1H6,1H5,1H0,1HX,1H ,1HM,1HA, +1HC,1HR,1HO,1H ,1HA,1HS,1HS,1HE,1HM,1HB,1HL,1HE,1HR,29*1H / C DATA SYMTAB/3600*0/ DATA MAXSYM/400/ DATA SYMLEN/7/ DATA LASTSYM/0/ C C DATA AVSIZE/2000/ DATA AVLIST/4000*0/ C DATA LINENO/100/ DATA PAGE/0/ DATA COMCOL/29/ DATA MAXLIN/59/ C DATA INFILE /5/ DATA OUTFIL /6/ DATA OBJ /4/ C DATA PASS/1/ DATA ERRCNT/0/ DATA PCOUNT/0/ DATA CARD/0/ C C--- LISTING/OUTPUT OPTIONS C  DATA NOLIST/0/ DATA NOOBJ/0/ DATA NOXREF/0/ DATA NOGEN/0/ C C C--- INITIALIZE THE AVAILABLE LIST FOR STACKS AND XREF CHAINS C DO 20 I=1,AVSIZE AVLIST(I,1)=0 AVLIST(I,2)=I+1 20 CONTINUE AVLIST(AVSIZE,2)=0  AVAIL=1 C C C--- INITIALIZE FILES C REWIND INFILE REWIND OUTFIL REWIND OBJ PAGE=0 CARD=0 C C--- START THE ASSEMBLY C 100 CONTINUE CALL PASS1 IF(ERRCNT.NE.0) CALL HEADING(0,0) C C C--- GENERATE THE XREF LISTING C 200 CONTINUE CARD=0 CALL PASS2 CALL SYMOUT C C--- PRINT THE STATISTICS C CALL HEADING(-3,1) CALL HEADING(1,1) WRITE(OUTFIL,300) ERRCNT 300 FORMAT(I6,' ERROR MESSAGES WERE PRINTED.') C REWIND INFILE  REWIND OUTFIL REWIND OBJ IF(ERRCNT .EQ. 0) STOP STOP 9999 END SUBROUTINE PASS1 IMPLICIT INTEGER (A-Z) COMMON/LNKLST/ AVLIST(2000,2), AVSIZE COMMON/FILES/ INFILE,OUTFIL,SCR1,OBJ COMMON/PTRS/ PTR(41,2) COMMON/STATUS/ CARD,PASS,PCOUNT,AVAIL,ERRNUM,ERRCNT COMMON/BUFFER/ LINE(80) COMMON /SYMBLK/ SYMTAB(400,9), MAXSYM, SYMLEN, LASTSYM COMMON/FIELDS/ LABEL(7),OPCODE(7),SYMBOL(80),OPTR,LABPTR,SYMPTR COMMON/HEAD/ TITLE(80),LINENO,PAGE,COMCOL,MAXLIN COMMON/OPTIONS/ NOLIST,NOOBJ,NOXREF,NOGEN C LOGICAL STATE,QUOTE C C C--- THIS PROGRAM PERFORMS PASS 1 ONE THE ASSEMBLER. C C C C--- INITIALIZE FILES AND VARIABLES C C C--- READ IN A CARD AND PARSE IT C C 1 CONTINUE PASS=1 TYPE=0 ERRNUM=0 CALL PARSE C C--- LOOK UP THE OPCODE IN THE OPCODE TABLE C IN=OPLOOK(OPCODE,1,OPTR,TYPE2,OPVALU) IF(IN.GT.0) GO TO 60 LEN=0 CALL ADDLAB(PCOUNT) GO TO 82 C C--- THE OPCODE WAS IN THE OPCODE TABLE C 60 CONTINUE TYPE=(-TYPE2) C C--- SEE IF IT WAS AN END PSEUDO OP C IF(TYPE.EQ.5) GO TO 500 IF(TYPE2.LT.0) GO TO 90 C C--- OPCODE WAS A MACHINE INSTRUCTION, UPDATE PCOUNTER C CALL ADDLAB(PCOUNT)  LEN=TYPE2 IF(TYPE2.EQ.0) LEN=2 IF(LEN.EQ.3) GO TO 82 C 81 CONTINUE PCOUNT=PCOUNT+LEN GO TO 5000 C C--- SEE IF A 3 BYTE OPCODE CAN BE FORCED INTO A TWO BYTE ONE C 82 CONTINUE TEMP=OPTR+1 IF(TEMP.GT.7) GO TO 81  OPCODE(TEMP)=1HZ C I=OPLOOK(OPCODE,1,TEMP,TYPE2,OPVALU) IF(I.LE.0) GO TO 81 IF(TYPE2.NE.2) GO TO 81 TEMPERR=ERRNUM ERRNUM=0 I=EVAL(SYMBOL,1,SYMPTR) J=ERRNUM ERRNUM=TEMPERR C IF(J.NE.0) GO TO 81   CALL BYTES(I,IHI,ILO) IF(IHI.NE.0) GO TO 81 LEN=2 GO TO 81 C C C--- OPCODE WAS A PSEUDO OP, SO BRANCH TO THE CORRECT SERVICE ROUTINE C C 90 CONTINUE GO TO (100,200,300,400,500,100,100,100,900,1000,1000,800, + 100,100,100,100,100,100,1900,100,100,100,2200,100, + 100,100,100,100,100,2800,100,100,100,100,100),TYPE C C--- PSEUDO OPS THAT REQUIRE NO PASS1 ACTION EXCEPT LABELS C 100 CONTINUE CALL ADDLAB(PCOUNT) GO TO 5000 C C--- ORG, RESET PROGRAM COUNTER C 200 CONTINUE PASS=0 PCOUNT=EVAL(SYMBOL,1,SYMPTR) CALL ADDLAB(PCOUNT) PASS=1 GO TO 5000 C C--- BSS, ADD OPERAND TO PCOUNTER C 300 CONTINUE CALL ADDLAB(PCOUNT) PASS=0 PCOUNT=PCOUNT+EVAL(SYMBOL,1,SYMPTR) PASS=1 GO TO 5000 C C--- EQU, INSERTS LABEL WITH VALUE EQUAL TO THE OPERAND C 400 CONTINUE IF(LABPTR.EQ.1.AND.LABEL(LABPTR).EQ.1H.) GO TO 200 PASS=0 NUM=EVAL(SYMBOL,1,SYMPTR) CALL ADDLAB(NUM) PASS=1  GO TO 5000 C C--- END, RETURN TO MAIN PROGRAM FOR PASS2 C 500 CONTINUE CALL ADDLAB(PCOUNT) RETURN C C---  ROM LOADER CHECKSUM BYTE C 800 CONTINUE CALL ADDLAB(PCOUNT) PCOUNT = PCOUNT + 1 GOTO 5000 C C--- DB, INCREMENT PCOUNTER BY ONE FOR EACH OPERAND C 900 CONTINUE CALL ADDLAB(PCOUNT) J=SETPTR(SYMBOL,1,SYMPTR) PCOUNT=PCOUNT+J GO TO 5000 C C--- DW AND DA, INCREMENT PCOUNTER BY TWO FOR EACH OPERAND C 1000 CONTINUE CALL ADDLAB(PCOUNT) J=SETPTR(SYMBOL,1,SYMPTR) PCOUNT=PCOUNT+2*J GO TO 5000 C C--- PAGE, SET THE PAGE LENGTH C 1900 CONTINUE PASS=0 MAXLIN=EVAL(SYMBOL,1,SYMPTR) IF(MAXLIN.LE.5) MAXLIN=59 PASS=1 GO TO 5000 C C C--- END OF FILE PSEUDO OP (..) C C 2200 CONTINUE RETURN C C C--- TITLE PSEUDO OP, MOVE TITLE TO HEADING BUFFER C C 2300 CONTINUE CALL ADDLAB(PCOUNT) IF(TITLE(1).NE.0) GO TO 5000 DO 2320 I=1,80 TITLE(I)=1H 2320 CONTINUE IF(SYMPTR.LE.2) GOTO 5000 K=SYMPTR-1 DO 2340 I=2,K TITLE(I-1)=SYMBOL(I) 2340 CONTINUE GO TO 5000 C C C C C--- ASC - DEFINE AN ASCII CHARACTER STRING C C 2800 CONTINUE CALL ADDLAB(PCOUNT) PCOUNT=PCOUNT+MAX0(0,SYMPTR-2) GO TO 5000 C C C C--- WRITE LINE TO THE SCRATCH FILE AND GO GET ANOTHER C C 5000 CONTINUE IF(ERRNUM.EQ.0) GO TO 1 CALL OUTPUT(0,0,4,0) GO TO 1 END SUBROUTINE PASS2 IMPLICIT INTEGER (A-Z) COMMON/FILES/ INFILE,OUTFIL,SCR1,OBJ COMMON/OPTIONS/ NOLIST,NOOBJ,NOXREF,NOGEN COMMON/PTRS/ PTR(41,2) COMMON/STATUS/ CARD,PASS,PCOUNT,AVAIL,ERRNUM,ERRCNT COMMON/BUFFER/ LINE(80) COMMON /SYMBLK/ SYMTAB(400,9), MAXSYM, SYMLEN, LASTSYM COMMON/FIELDS/ LABEL(7),OPCODE(7),SYMBOL(80),OPTR,LABPTR,SYMPTR COMMON/HEAD/ TITLE(80),LINENO,PAGE,COMCOL,MAXLIN C LOGICAL QUOTE C C REWIND INFILE 5 CONTINUE PASS=2 PCOUNT=0 C C--- READ IN A LINE AND PARSE IT C 10 CONTINUE CALL PARSE C C--- CHECK THE OPCODE TO SEE IF A PSEUDO OP OR A MACHINE INSTRUCTION C II=OPLOOK(OPCODE,1,OPTR,TYPE2,OPVALU) IF(II.LE.0) GO TO 11 IF(TYPE2.LT.0) GO TO 100 IF(SYMPTR.NE.0) GOTO 11 IF(TYPE2.EQ.1) GOTO 11   ERRNUM=ERRNUM*16+1 C C--- IT WAS A MACHINE INSTRUCTION C 11 CONTINUE VAL=0 IF(SYMPTR.NE.0.AND.TYPE2.NE.1) VAL=EVAL(SYMBOL,1,SYMPTR) IF(II.LE.0) GO TO 15 IF(TYPE2.EQ.0) GO TO 30 IF(TYPE2.EQ.3) GO TO 15 C 12 CONTINUE IF(II.LE.0) GO TO 1500 CALL BYTES(VAL,J,IDUMMY) IF(TYPE2.EQ.2.AND.J.NE.0.AND.J.NE.255) ERRNUM=ERRNUM*16+2  CALL OUTPUT(OPVALU,VAL,TYPE2,EXPTYP) GO TO 10 C C--- SEE IF A THREE BYTE OPCODE CAN BE FORCED INTO A 2 BYTE ONE C 15 CONTINUE CALL BYTES(VAL,J,IDUMMY) IF(J.NE.0) GO TO 12 TEMP=OPTR+1 IF(TEMP.GT.7) GO TO 12 OPCODE(TEMP)=1HZ C I=OPLOOK(OPCODE,1,TEMP,TTYPE2,TOPVAL) IF(I.LT.0) GO TO 12 IF(TTYPE2.NE.2) GO TO 12 C TYPE2=TTYPE2 OPVALU=TOPVAL II=1 GO TO 12 C C--- THE INSTRUCTION WAS A PC RELATIVE BRANCH C 30 CONTINUE VAL2=VAL-PCOUNT-2 CALL BYTES(VAL2,I,J) IF(I.NE.0.AND.I.NE.255) ERRNUM=ERRNUM*16+2 CALL OUTPUT(OPVALU,J,2,0)  GO TO 10 C C C--- THE OPCODE WAS A PSEUDO OP C--- BRANCH TO THE CORRECT SERVICE ROUTINE C 100 CONTINUE TYPE=(-TYPE2) GO TO (600,200,300,900,1300,700,500,1100,400,400,400, + 1000,600,920,600,600,600,100,1900,600,600,600,1400,  + 600,600,600,600,600,1200,1600,600,600,600,600,600),TYPE C C C--- ORG C C 200 CONTINUE CALL PUSH(PCOUNT,ORGPTR)  I=EVAL(SYMBOL,1,SYMPTR) PCOUNT=I CALL OUTPUT(0,PCOUNT,4,0) GO TO 10 C C C--- BSS - RESERVE STORAGE BLOCK C C 300 CONTINUE I=EVAL(SYMBOL,1,SYMPTR) CALL OUTPUT(0,PCOUNT,4,0) PCOUNT=PCOUNT+I GO TO 10 C C C--- DB, DW, AND DA C C 400 CONTINUE TEMP=NOLIST LEN=2 IF(TYPE.EQ.9) LEN=1 C NUM=SETPTR(SYMBOL,1,SYMPTR)  IF(NUM.LE.0) GO TO 460 C C--- EVALUATE EACH PARAMETER IN THE PARAMETER LIST C DO 440 I=1,NUM VALUE=EVAL(SYMBOL,PTR(I,1),PTR(I,2)) CALL BYTES(VALUE,PCH,PCL) IF(PCH.NE.0.AND.PCH.NE.255.AND.LEN.EQ.1) +ERRNUM=ERRNUM*16+2 C C--- OUTPUT THE PARAMETER C IF(TYPE.EQ.9) CALL OUTPUT(PCL,0,1,EXPTYP) N=PCL*256+PCH IF(TYPE.EQ.11) CALL OUTPUT(0,N,7,EXPTYP) IF(TYPE.EQ.10) CALL OUTPUT(1,VALUE,7,EXPTYP) LABPTR=0 C C--- SET THE LISTING FLAG FOR THE REMAINING PARAMETERS C IF(NUM.EQ.1) GO TO 440 IF(I.NE.1) GO TO 440 IF(NOLIST.EQ.1) GO TO 440 NOLIST=NOGEN C C---  BLANK THE LINE C DO 420 N=1,80 LINE(N)=1H 420 CONTINUE 440 CONTINUE NOLIST=TEMP GO TO 10 C C--- NO OPERAND WAS GIVEN C 460 CONTINUE ERRNUM=ERRNUM*16+3 CALL OUTPUT(0,0,5,0) GO TO 10 C C C--- TITLE C C 500 CONTINUE DO 510 I=1,80 TITLE(I)=1H 510 CONTINUE IF(SYMPTR.LE.2) GO TO 580 J=SYMPTR-1 DO 540 I=2,J TITLE(I-1)=SYMBOL(I) 540 CONTINUE C 580 CONTINUE GO TO 10 C C C--- PSEUDO OPS THAT REQUIRE NO PASS 2 ACTION C C 600 CONTINUE CALL OUTPUT(0,0,5,0) GO TO 10 C C C--- OPTIONS C C 700 CONTINUE J=SETPTR(SYMBOL,1,SYMPTR) IF(J.LE.0) GO TO 460 C C--- PROCESS EACH PARAMETER C DO 760 I=1,J IF(PTR(I,1).GT.PTR(I,2)) GO TO 760  K=0 IF(SYMBOL(PTR(I,2)).EQ.1H-) K=1 IF(SYMBOL(PTR(I,1)).EQ.1HL) NOLIST=K IF(SYMBOL(PTR(I,1)).EQ.1HO) NOO BJ=K IF(SYMBOL(PTR(I,1)).EQ.1HG) NOGEN=K IF(SYMBOL(PTR(I,1)).EQ.1HX) NOXREF=K 760 CONTINUE CALL OUTPUT(0,0,5,0) GO TO 10 C C C C--- EQU - EQUATE SYMBOL C 900 CONTINUE IF(LABPTR.EQ.1.AND.LABEL(LABPTR).EQ.1H.) GO TO 200 920 CONTINUE I=EVAL(SYMBOL,1,SYMPTR) CALL OUTPUT(0,I,6,EXPTYP) GO TO 10 C C C--- GENERATE LOADER ROM CHECKSUM WORD C C 1000 CONTINUE WRITE(OBJ,1020) PCOUNT 1020 FORMAT(1X,'C',Z4,' 00') CALL OUTPUT(0,0,4,0) PCOUNT = PCOUNT + 1 GO TO 10 C C C C C--- PAGE EJECT C C 1100 CONTINUE CALL HEADING(0,0) GO TO 10 C C C--- SPACE C C 1200 CONTINUE I=EVAL(SYMBOL,1,SYMPTR) I=MAX0(1,I) CALL HEADING(-I,0) GO TO 10 C C C--- END CARD C C 1300 CONTINUE CALL OUTPUT(0,0,5,0) RETURN C C C--- END OF FILE CARD C C 1400 CONTINUE RETURN C C C--- A BAD OPCODE WAS FOUND C C 1500 CONTINUE ERRNUM=ERRNUM*16+4 CALL OUTPUT(0,0,5,0) GO TO 10 C C C--- ASCII STRINGS C C 1600 CONTINUE IF(SYMPTR.LE.2) GO TO 460 TEMP=NOLIST J=SYMPTR-1 C C--- OUTPUT THE STRING C DO 1640 I=2,J CALL OUTPUT(ASCII(SYMBOL(I)),0,1,0) LABPTR=0 IF(J.EQ.2) GO TO 1640 IF(I.NE.2) GO TO 1640 C C--- BLANK THE LISTING LINE C IF(NOLIST.EQ.1) GO TO 1640 DO 1620 K=1,80 LINE(K)=1H 1620 CONTINUE NOLIST=NOGEN 1640 CONTINUE NOLIST=TEMP GO TO 10 C C--- PAGE - SET PAGE LENGTH C C 1900 CONTINUE MAXLIN=EVAL(SYMBOL,1,SYMPTR) IF(MAXLIN.LE.5) MAXLIN=59 GO TO 10 C END SUBROUTINE ADDLAB(VALUE) IMPLICIT INTEGER(A-Z) COMMON/FIELDS/LABEL(7),OPCODE(7),SYMBOL(80),OPTR,LABPTR,SYMPTR COMMON /SYMBLK/ SYMTAB(400,9), MAXSYM, SYMLEN, LASTSYM COMMON/STATUS/ CARD,PASS,PCOUNT,AVAIL,ERRNUM,ERRCNT C C--- THIS SUBROUTINE IS USED TO INSERT A LABEL (IF IT EXISTS) INTO C--- THE SYMBOL TABLE. THE LABEL IS ASSIGNED A VALUE EQUAL TO THE C--- PARAMETER 'VALUE'. C C--- THE FIRST WORD OF THE ATTRIBUTE INFO FOR THE LABEL IS C--- THE LABEL'S VALUE. THE SECOND WORD IS USED AS A POINTER C--- TO THE LABEL'S XREF CHAIN C C IF(LABPTR.EQ.0) RETURN IF(LABPTR.EQ.1.AND.LABEL(1).EQ.1H.) RETURN ATTR=VALUE XPTR=0 IN=MANGER(LABEL,1,LABPTR,ATTR,XPTR,0) IF(IN.NE.(-1)) RETURN ERRNUM=ERRNUM*16+6 RETURN END INTEGER FUNCTION SETPTR(LINE,START,FINISH) IMPLICIT INTEGER(A-Z) COMMON/PTRS/ PTR(41,2) COMMON/STATUS/ CARD,PASS,PCOUNT,AVAIL,ERRNUM,ERRCNT DIMENSION LINE(80) C C C--- THIS FUNCTION WILL CONSTRUCT AN ARRAY CONTAINING POINTERS C--- TO THE BEGINNING AND END OF EACH PARAMETER IN A C--- PARAMETER LIST CONTAINED IN FORMAL PARAMETER ARRAY 'LINE'. C--- PARAMETERS ARE SEPARATED BY ,'S NOT ENCLOSED WITHIN A LEVEL C--- OF PARENTHESIS. C--- THE FUNCTION IS RETURNED AS THE NUMBER OF PARAMETERS FOUND C--- ARRAY 'PTRS' CONTAINS THE POINTERS TO THE PARAMETERS C--- IF A PARAMETER IS A NULL FIELD, THEN THAT PARAMETER WILL C--- BE GIVEN A STARTING LOCATION GREATER THAN THE THE ENDING LOCATION C--- A MAXIMUM OF 40 PARAMETERS CAN BE POINTED TO. C C C LOGICAL QUOTE QUOTE=.FALSE. J=0 PAREN=0 S=START I=START-1 C C--- SCAN FOR COMMAS C  10 CONTINUE I=I+1 IF(I.GT.FINISH) GO TO 30 IF(LINE(I).EQ.1H') QUOTE=.NOT.QUOTE IF(QUOTE) GO TO 10  IF(LINE(I).EQ.1H() PAREN=PAREN+1 IF(LINE(I).EQ.1H).AND.PAREN.GT.0) PAREN=PAREN-1 IF(PAREN.NE.0) GO TO 10 IF(LINE(I).NE.1H,) GO TO 10 C C--- STORE POINTER IN THE POINTER ARRAY C 30 CONTINUE J=J+1 IF(J.GT.40) GO TO 40  PTR(J,1)=S PTR(J,2)=I-1 IF(LINE(S).EQ.1H() PTR(J,1)=PTR(J,1)+1 IF(LINE(S).EQ.1H() PTR(J,2)=PTR(J,2)-1  S=I+1 IF(I.LE.FINISH) GOTO 10 GO TO 45 C C--- ZERO OUT ANY OTHER PARAMETERS C 40 CONTINUE ERRNUM=ERRNUM*16+5 45 CONTINUE J=MIN0(J+1,41) DO 50 I=J,41 PTR(I,1)=0 PTR(I,2)=0 50 CONTINUE SETPTR=J-1  RETURN END SUBROUTINE PARSE IMPLICIT INTEGER(A-Z) COMMON/FIELDS/LABEL(7),OPCODE(7),SYMBOL(80),OPTR,LABPTR,SYMPTR COMMON/HEAD/ TITLE(80),LINENO,PAGE,COMCOL,MAXLIN COMMON/STATUS/ CARD,PASS,PCOUNT,AVAIL,ERRNUM,ERRCNT  COMMON/FILES/ INFILE,OUTFIL,SCR1,OBJ COMMON/BUFFER/ LINE(80) COMMON/FMT/OUT(110),LABST,LABEND,OPCST,OPCEND,OPRST,OPREND,COMST LOGICAL QUOTE, LABFLG, LABERR, PSEUDO, OPERR, OPEN C C--- THIS SUBROUTINE WILL OBTAIN A LINE OF SOURCE TEXT AND THEN C--- BREAK IT UP INTO THE VARIOUS FIELDS OF THE ASSEMBLER COMMANDS. C C--- THE LABEL FIELD IS PUT INTO ARRAY 'LABEL' AND VARIABLE 'LABPTR' C--- CONTAINS THE NUMBER OF CHARACTERS IN THE LABEL. C C--- THE OPCODE (WITH APPROPRIATE ADDRESSING MODE INFORMATION C--- IF SYNATCTICALLY DEFINED) IS PUT INTO ARRAY 'OPCODE' AND C--- VARIABLE 'OPTR' IS SET TO THE LENGTH OF THE OPCODE. C C C--- THE OPERAND FIELD (LESS ANY ADDRESSING MODE CHARACTERS C--- USED BY SYNTACTICALLY DEFINED OPCODES) IS PUT INTO ARRAY C--- 'SYMBOL' AND VARIABLE 'SYMPTR' IS SET TO THE NUMBER OF C--- CHARACTERS IN THE OPERAND FIELD. C C---  IF AN END OF FILE IS READ, A DUMMY '..' PSEUDO OP IS C--- GENERATED. C C C--- ADDRESSING MODE INFORMATION IS EXTRACTED FROM THE OPERAND C--- FIELD AND MOVED TO THE OPCODE FIELD BY: C--- 1) DELETING ('S C--- 2) MOVING )'S TO THE OPCODE FIELD C--- 3) DELETING ,'S AND MOVING THE CHARACTER FOLLOWING THE ',' C--- TO THE OPCODE FIELD. C--- 4) IF THE OPERAND FIELD IS NULL THEN A '*' IS APPENDED TO C--- THE OPCODE FIELD C--- 5) MOVING A LEADING '#' IN THE OPERAND TO THE OPCODE FIELD C--- THUS THE LINE: C--- LAB LDA (BUFFER),X C--- WOULD SET ARRAY LABEL TO 'LAB' AND VARIABLE LABPTR=3 C--- ARRAY OPCODE TO 'LDA)X' AND VARIABLE OPTR TO 5 C--- ARRAY SYMBOL TO 'BUFFER' AND VARIABLE SYMPTR=6 C C--- NOTE THAT IF A LABEL IS TERMINATED BY A ':' THE ':' IS NOT C--- MOVED TO THE ARRAY 'LABEL'. C C C C C--- INITIALIZE VARIABLES C LABFLG=.FALSE.  OPERR=.FALSE. LABERR=.FALSE. QUOTE=.FALSE. OPEN=.FALSE. ERRNUM=0 PSEUDO=.TRUE. OPTR=0  LABPTR=0 SYMPTR=0 PAREN=0 LABST=0 LABEND=0 OPCST=0 OPCEND=0 OPRST=0 OPREND=0 COMST=0 C C--- GET THE LINE FROM THE SOURCE FILE C C IF(PASS.EQ.2) GO TO 8 READ(INFILE,2,END=500) LINE  GO TO 10 2 FORMAT(80A1) C C--- PASS 2 READ C 8 CONTINUE READ(INFILE,2,END=600) LINE C C--- CHECK FOR A LABE L OR COMMENT C 10 CONTINUE I=0 CARD=CARD+1 IF(LINE(1).EQ.1H;) GO TO 300 IF(LINE(1).EQ.1H*) GO TO 300  IF(LINE(1).EQ.1H ) GO TO 30 LABST=1 C C--- A LABEL IS PRESENT. MOVE IT TO THE LABEL BUFFER C 20 CONTINUE  I=I+1 IF(I.GT.80) GO TO 300 IF(LINE(I).EQ.1H ) GO TO 30 LABEND=I IF(LINE(I).EQ.1H:) GO TO 30 IF(LABPTR.GE.7) LABERR=.TRUE. IF(LABERR) GO TO 20 LABPTR=LABPTR+1 LABEL(LABPTR)=LINE(I) GO TO 20 C C--- END OF LABEL. SPAN BLANKS TO THE OPCODE FIELD C 30 CONTINUE I=I+1 IF(I.GT.80) GO TO 300 IF(LINE(I).EQ.1H ) GO TO 30 OPCST=I I=I-1 C C--- MOVE THE OPCODE FIELD TO THE OPCODE BUFFER C 40 CONTINUE I=I+1 IF(I.GT.80) GO TO 300 IF(LINE(I).EQ.1H ) GO TO 60 IF(LINE(I).EQ.1H;) GO TO 290 OPCEND=I IF(OPTR.GE.7) OPERR=.TRUE. IF(OPERR) GO TO 40 OPTR=OPTR+1 OPCODE(OPTR)=LINE(I) GO TO 40 C C--- END OF OPCODE. SPAN BLANKS TO THE OPERAND FIELD C 60 CONTINUE I=I+1 IF(I.GT.80) GOTO 300 IF(LINE(I).EQ.1H ) GO TO 60 C C--- SEE IF THE OPCODE CAN BE A SYNTACTICALLY DEFINED MACHINE OP C 65 CONTINUE OPRST=I I=I-1 IF(OPTR.NE.3) GO TO 100  J=OPLOOK(OPCODE,1,OPTR,TYPE2,OPVALU) IF(J.LE.0.OR.TYPE2.GE.1) PSEUDO=.FALSE. IF(TYPE2.NE.1) GO TO 100 OPRST=0 OPREND=0 I=I+1 GOTO 290 C C--- SCAN THE OPERAND FIELD, MOVING THE INFORMATION TO THE C--- OPCODE OR OPERAND BUFFERS AS NEEDED C 100 CONTINUE I=I+1 IF(I.GT.80) GO TO 300 IF(LINE(I).EQ.1H') QUOTE=.NOT.QUOTE IF(QUOTE) GO TO 220 IF(PAREN.NE.0) GO TO 200 IF(LINE(I).EQ.1H ) GO TO 260 IF(LINE(I).EQ.1H;) GO TO 295 OPREND=I IF(PSEUDO) GO TO 200 C C--- WE HAVE WHAT IS MOST LIKELY A SYNTACTIACLLY DEFINED MACHINE OP. C--- MOVE SYNTAX INFORMATION TO THE OPCODE FIELD. C IF(LINE(I).EQ.1H#) GO TO 120 IF(LINE(I).EQ.1H() GO TO 130 IF(LINE(I).EQ.1H)) GO TO 120 IF(LINE(I).NE.1H,) GO TO 200 C I=I+1 IF(I.GT.80) OPERR=.TRUE. IF(OPERR) GO TO 100 OPREND=I C C--- MOVE CHARACTER TO THE OPCODE FIELD C 120 CONTINUE IF(OPTR.GE.7) OPERR=.TRUE. IF(OPERR) GO TO 100  OPTR=OPTR+1 OPCODE(OPTR)=LINE(I) IF(LINE(I).EQ.1H#) PSEUDO=.TRUE. GO TO 100 C 130 CONTINUE IF(OPEN) GO TO 200 OPEN=.TRUE. GO TO 100 C C--- MOVE CHARACTER TO THE OPERAND BUFFER C 200 CONTINUE IF(LINE(I).EQ.1H() PAREN=PAREN+1 IF(LINE(I).EQ.1H)) PAREN=PAREN-1 IF(PAREN.LT.0) ERRNUM=ERRNUM*16+9 C 220 CONTINUE SYMPTR=SYMPTR+1 SYMBOL(SYMPTR)=LINE(I) GO TO 100 C C--- FIND START OF COMMENT C 260 CONTINUE I=I+1 IF(I.GT.80) GOTO 300 IF(LINE(I).EQ.1H ) GOTO 260 GOTO 295 C C C--- END OF SCAN. CHECK FOR SPECIAL OPERANDS. C C 290 CONTINUE PSEUDO=.FALSE. C 295 CONTINUE COMST=I 300 CONTINUE IF(PSEUDO.AND.OPTR.NE.0) GO TO 350 IF(SYMPTR.NE.1) GOTO 350 IF(SYMBOL(SYMPTR).NE.1HA) GOTO 350 IF(OPTR.GE.7) OPERR=.TRUE. IF(OPERR) GO TO 350 OPTR=OPTR+1 OPCODE(OPTR)=1HA C C--- EXIT PARSE BY CHECKING FOR SCAN ERRORS AND COMMENT LINES C 350 CONTINUE IF(OPTR.EQ. 0) OPCODE(1)=1H* IF(OPTR.EQ.0) OPTR=1 IF(OPERR) ERRNUM=ERRNUM*16+7 IF(LABERR) ERRNUM=ERRNUM*16+8 IF(PAREN.NE.0) ERRNUM=ERRNUM*16+9 RETURN C C--- IF THE END OF FILE ON PASS 1 THEN CREATE A .. PSEUDO OP C 500 CONTINUE LINE(1)=1H LINE(2)=1H. OPCODE(1)=1H. LINE(3)=1H. OPCODE(2)=1H. OPTR=2 LABPTR=0 RETURN C C--- PASS 2 END OF FILE. CREATE A DUMMY END PSEUDO OP C 600 CONTINUE OPCODE(1)=1H. OPCODE(2)=1HE OPCODE(3)=1HN OPCODE(4)=1HD OPTR=4 LABPTR=0 SYMPTR=0 RETURN C END SUBROUTINE ERROR IMPLICIT INTEGER(A-Z) COMMON/STATUS/ CARD,PASS,PCOUNT,AVAIL,ERRNUM,ERRCNT COMMON/FIELDS/LABEL(7),OPCODE(7),SYMBOL(80),OPTR,LABPTR,SYMPTR COMMON/FILES/ INFILE,OUTFIL,SCR1,OBJ LOGICAL DIDIT(15) C C--- THIS SUBROUTINE HANDLES THE PRINTING OF ERROR MESSAGES C IF(ERRNUM.EQ.0) RETURN DO 5 I=1,15 DIDIT(I)=.FALSE. 5 CONTINUE C CALL HEADING(1,1) CALL HEADING(-1,1) C WRITE(OUTFIL,777) LABPTR,LABEL,OPTR,OPCODE,SYMPTR,SYMBOL C777 FORMAT(1X,I5,1X,7A1,/,1X,I5,1X,7A1,/,1X,I5,1X,80A1) C C--- LOOP FOR THE ERRORS IN THE ERROR WORD C 10 CONTINUE IF(ERRNUM.EQ.0) RETURN ERRCNT=ERRCNT+1 ERR=ERRNUM-ERRNUM/16*16 ERR=IABS(ERR) ERRNUM=ERRNUM/16 ERRNUM=IABS(ERRNUM) CALL HEADING(1,1) GO TO (500,1000,1200, + 1400,1800,1900,2000,2100,2200,2400, + 2500,2700,10,10),ERR C C 500 CONTINUE  IF(DIDIT(1)) GO TO 10 WRITE(OUTFIL, 550 ) DIDIT(1)=.TRUE. GO TO 10 550 FORMAT(' *** ERROR. REQUIRED FIELD IS MISSING. CARD IS IGN', + 'ORED.') C C 1000 CONTINUE IF(DIDIT(2)) GO TO 10 WRITE(OUTFIL, 1050 ) DIDIT(2)=.TRUE. GO TO 10 1050 FORMAT(' *** ERROR. OPERAND IS OUT OF RANGE. ONLY LOW ORDER', + ' BITS ARE USED.') C C 1200 CONTINUE IF(DIDIT(3)) GO TO 10 WRITE(OUTFIL, 1250 ) DIDIT(3)=.TRUE. GO TO 10 1250 FORMAT(' *** ERROR. REQUIRED FIELD IS MISSING.') C C 1400 CONTINUE IF(DIDIT(4)) GO TO 10 WRITE(OUTFIL, 1450 ) DIDIT(4)=.TRUE. GO TO 10 1450 FORMAT(' *** ERROR. INVALID OPCODE AND/OR ADDRESSING MODE CO', + 'NFLICT.') C C C 1800 CONTINUE  IF(DIDIT(5)) GO TO 10 WRITE(OUTFIL, 1850 ) DIDIT(5)=.TRUE. GO TO 10 1850 FORMAT(' *** ERROR. TOO MANY FIELDS IN OPERAND. EXCESS ARE ', + 'IGNORED.') C C 1900 CONTINUE IF(DIDIT(6)) GO TO 10 WRITE(OUTFIL, 1950 )  DIDIT(6)=.TRUE. GO TO 10 1950 FORMAT(' *** ERROR. DUPLICATE SYMBOL DEFINITION. FIRST DEFI', + 'NITION HOLDS.') C C 2000 CONTINUE IF(DIDIT(7)) GO TO 10 WRITE(OUTFIL, 2050 ) DIDIT(7)=.TRUE. GO TO 10 2050 FORMAT(' *** ERROR. OPCODE TRANSLATION WAS TOO LONG. EXCESS', + ' TRUNCATED.') C C 2100 CONTINUE IF(DIDIT(8)) GO TO 10  WRITE(OUTFIL, 2150 ) DIDIT(8)=.TRUE. GO TO 10 2150 FORMAT(' *** ERROR. LABEL WAS TOO LONG. EXCESS IS TRUNCATED.') C C 2200 CONTINUE IF(DIDIT(9)) GO TO 10 WRITE(OUTFIL, 2250 ) DIDIT(9)=.TRUE. GO TO 10 2250 FORMAT(' *** ERROR. UNBALANCED PARENTHESIS.') C C 2400 CONTINUE IF(DIDIT(10)) GO TO 10 WRITE(OUTFIL, 2450 ) DIDIT(10  )=.TRUE. GO TO 10 2450 FORMAT(' *** ERROR. SYMBOL HAS NOT YET BEEN DEFINED IN THIS ', + 'ASSEMBLY.') C C 2500 CONTINUE IF(DIDIT(11)) GO TO 10 WRITE(OUTFIL, 2550 ) DIDIT(11)=.TRUE. GO TO 10 2550 FORMAT(' *** ERROR. INVALID DIGIT IN NUMERIC CONSTANT') C C 2700 CONTINUE WRITE(OUTFIL,2750) 2750 FORMAT(' *** ERROR. SYMBOL TABLE FULL. ALL FOLLOWING ', +'SYMBOL DEFINITIONS IGNORED.') GO TO 10 END SUBROUTINE HEADING(VALUE,FORCE) IMPLICIT INTEGER(A-Z) COMMON/OPTIONS/ NOLIST,NOOBJ,NOXREF,NOGEN COMMON/FILES/ INFILE,OUTFIL,SCR1,OBJ COMMON/HEAD/ TITLE(80),LINENO,PAGE,COMCOL,MAXLIN C C--- THIS SUBROUTINE WILL PRINTS OUT A HEADING AT THE TOP OF A PAGE C--- AND CONTROLS SPACING OF LINES, ETC. C C--- PARAMETER 'VALUE' IS A FUNCTION CODE. IF 0 THEN (-VALUE) BLANK C--- LINES WILL BE PRINTED. IF VALUE = 0, THEN A PAGE EJECT WILL OCCUR. C--- IF 'VALUE' \ 0, THEN THE LINE COUNTER WILL BE INCREMENTED BY C--- 'VALUE' LINES AND ANY NECESSARY PAGING WILL BE TAKEN IF THE C--- LINE COUNT IS \ THE MAXIMUM NUMBER OF LINES ON A PAGE. C C C--- CHECK LISTING OPTIONS AND FORCED OVERIDE PARAMETER ('FORCE'=1 C--- MEANS TO FORCE PRINTING OF HEADERS REGARDLESS OF LISTING OPTIONS). C IF(NOLIST.EQ.1.AND.FORCE.EQ.0) RETURN IF(VALUE.LT.0) GO TO 200 IF(VALUE.EQ.0) LINENO=10000 C C--- BUMP THE LINE COUNT C LINENO=LINENO+VALUE IF(LINENO.LT.MAXLIN) RETURN C C--- PRINT A PAGE EJECT AND A HEADER LINE C 50 CONTINUE PAGE=PAGE+1 LINENO=3 WRITE(OUTFIL,100) PAGE,TITLE 100 FORMAT('1PAGE ',I5,16X,80A1,//) RETURN C C--- PRINT BLANK LINES C 200 CONTINUE VAL=IABS(VALUE) LINENO=LINENO+VAL IF(LINENO.GT.MAXLIN-1) GO TO 50 DO 240 I=1,VAL WRITE(OUTFIL,220) 220 FORMAT(' ') 240 CONTINUE RETURN END INTEGER FUNCTION ASCII(CHAR) IMPLICIT INTEGER(A-Z) ASCII=IAND(CHAR,:7F00)/256 RETURN END INTEGER FUNCTION EVAL(LINE,START,FINISH) IMPLICIT INTEGER(A-Z) C C C--- THIS FUNCTION IS CALLED TO EVALUATE AN EXPRESSION. THE VALUE C--- OF THE EXPRESSION IN ARRAY 'LINE' STARTING AT COLUMN 'START' AND C--- ENDING IN COLUMN 'FINISH' IS RETURNED THROUGH THE FUNCTION NAME. C C--- THE EXPRESSION CAN HAVE ANY NUMBER OF PARENTHESES NESTED, ETC. C--- THE ALLOWABLE OPERATORS AND THEIR PRECEDENCE IS AS FOLLOWS: C--- C--- * - MULTIPLICATION - 8 C--- / - DIVISION - 8 C--- + - ADDITION - 7 C--- - - SUBTRACTION - 7 C--- < - LESS THAN - 6 C--- = - EQUAL TO - 6 C--- > - GREATER THAN - 6 C--- >= - GREATER THAN OR C--- => EQUAL TO -6 C--- <= - LESS THAN OR C--- =< EQUAL TO - 6 C--- <> - NOT EQUAL TO C--- >< - 6 C--- ** - AND - 5 C--- ++ - OR - 4 C--- // - EXCLUSIVE OR - 4 C--- - - UNARY MINUS - 3 C--- + - UNARY PLUS - 3 C--- -- - LOGICAL NOT - 2 C C DIMENSION LINE(80), OPTAB(10), PRCTAB(17) LOGICAL QUOTE DATA OPTAB/1H),1H(,1H+,1H-,1H*,1H/,1H',1H<,1H=,1H>/ DATA PRCTAB/1,2,7,7,8,8,-1,6,6,6,6,6,6,4,5,3,4/ F=FINISH EXPSTK=0 OPSTAK=0 QUOTE=.FALSE. I=START-1 N=I S=START C C--- START  SCAN OF STRING C 10 CONTINUE I=N+1 N=I IF(I.GT.F) GO TO 500 IF(QUOTE) GO TO 300 DO 20 J=1,10  IF(LINE(I).NE.OPTAB(J)) GO TO 20 OPER=J GO TO 40 20 CONTINUE GO TO 10 C C--- OPERATOR FOUND C 40 CONTINUE GO TO (400,100,180,180,180,180,300,110,110,110),OPER C C--- OPEN PAREN FOUND. PUSH ON OPSTACK C 100 CONTINUE  CALL PUSH(2,OPSTAK) S=I+1 GO TO 10 C C--- RELATIONAL OPERATOR C 110 CONTINUE IF(I.EQ.F) GO TO 100  J=I+1 IF(LINE(I).EQ.1H<.AND.LINE(J).EQ.1H=) OPER=11 IF(LINE(I).EQ.1H<.AND.LINE(J).EQ.1H>) OPER=13 IF(LINE(I).EQ.1H=.AND.LINE(J).EQ.1H>) OPER=12 IF(LINE(I).EQ.1H=.AND.LINE(J).EQ.1H<) OPER=11 IF(LINE(I).EQ.1H>.AND.LINE(J).EQ.1H=) OPER=12 IF(LINE(I).EQ.1H>.AND.LINE(J).EQ.1H<) OPER=13 IF(OPER.GE.11) N=J GO TO 200 C C--- LOGICAL OPERATOR C 180 CONTINUE IF(I.EQ.F) GO TO 200 J=I+1 IF(LINE(I).EQ.1H+.AND.LINE(J).EQ.1H+) OPER=14 IF(LINE(I).EQ.1H*.AND.LINE(J).EQ.1H*) OPER=15 IF(LINE(I).EQ.1H-.AND.LINE(J).EQ.1H-) OPER=16 IF(LINE(I).EQ.1H/.AND.LINE(J).EQ.1H/) OPER=17 IF(OPER.LT.14) GO TO 200 N=J GO TO 200 C C--- GET OPERATOR PRECEDENCE C 200 CONTINUE PRCD=PRCTAB(OPER) C C--- SEE IF UNARY OP C IF(OPER.NE.3.AND.OPER.NE.4.AND.OPER.NE.16) GO TO 245 IF(OPER.EQ.16) GO TO 245 IF(I.EQ.START) CALL PUSH(0,EXPSTK) IF(I.NE.START.AND.LINE(I-1).EQ.1H() CALL PUSH(0,EXPSTK) IF(I.EQ.START) GO TO 250 IF(I.NE.START.AND.LINE(I-1).EQ.1H() GO TO 250 245 CONTINUE C C--- CHECK PRECEDENCE OF TOP OF OPSTACK C 240  CONTINUE IF(S.GT.I-1) GO TO 250 OP=POP(OPSTAK) CALL PUSH(OP, OPSTAK) STKPRCD=0 IF(OP.NE.0) STKPRCD=PRCTAB(OP) VAL=TERM(LINE,S,I-1) CALL PUSH(VAL,EXPSTK) C C--- SEE IF OPERATION CAN BE GENERATED C 250 CONTINUE OP=POP(OPSTAK) STKPRCD=0 IF(OP.NE.0) STKPRCD=PRCTAB(OP) IF(STKPRCD.LT.PRCD) GO TO 260 CALL GENOP(OP,EXPSTK) GO TO 250 C C--- STACK PRECDENCE WAS LESS THAN OPERATOR PRECEDNCE C 260 CONTINUE CALL PUSH(OP,OPSTAK) S=N+1 CALL PUSH(OPER,OPSTAK) GO TO 10 C C--- QUOTE C 300 CONTINUE IF(.NOT.QUOTE) S=I IF(LINE(I).EQ.1H') QUOTE=.NOT.QUOTE IF(QUOTE) GO TO 10 C C--- END OF QUOTED TOKEN C VAL=TERM(LINE,S,I) CALL PUSH(VAL,EXPSTK) S=I+1 GO TO 10 C C--- CLOSE PAREN. START POPPING OPSTACK UNTIL AN OPEN PAREN C 400 CONTINUE VAL=0 IF(S.GT.I-1) GO TO 420 VAL=TERM(LINE,S,I-1) CALL PUSH(VAL,EXPSTK) 420 CONTINUE S=I+1 OP=POP(OPSTAK) IF(OP.EQ.0) GO TO 600 IF(OP.EQ.2) GO TO 10 CALL GENOP(OP,EXPSTK) GO TO 400 C C--- END OF LINE C 500 CONTINUE C IF(LINE(F).EQ.1H)) GO TO 520 IF(LINE(F).EQ.1H') GO TO 520 VAL=TERM(LINE,S,F) CALL PUSH(VAL,EXPSTK) C C--- FINISH OFF OPERATOR STACK C 520 CONTINUE OP=POP(OPSTAK) IF(OP.LE.2) GO TO 600 CALL GENOP(OP,EXPSTK) GO TO 520 C C--- RETURN A VALUE C 600 CONTINUE EVAL=POP(EXPSTK) RETURN END SUBROUTINE GENOP(OP,STACK) IMPLICIT INTEGER(A-Z) C C C--- THIS SUBROUTINE GENERATES OPERATIONS UPON THE NUMBERS C--- STORED  IN THE STACK POINTED TO BY PARAMETER 'STACK'. C C--- THE RESULT OF THE OPERATION IS PUT BACK ON THE STACK. C--- THE DESIRED OPERATION CODE IS PASSED IN PARAMETER 'OP'. C--- SEE THE COMMENTS IN THE ROUTINE FOR THE POSSIBLE OPERATIONS. C C OP2=POP(STACK) OP1=POP(STACK) VAL=0 GO TO (100,100,300,400,500,600,100,800,900,1000,1100, + 1200,1300,1400,1500,1600,1700),OP C C--- DUMMY OPS C 100 CONTINUE CALL PUSH(OP1,STACK) CALL PUSH(OP2,STACK) RETURN C C--- ADD C 300 CONTINUE VAL=OP1+OP2 GO TO 2000 C C--- SUBTRACT C 400 CONTINUE VAL=OP1-OP2 GO TO 2000 C C--- MULTIPLY C 500 CONTINUE VAL=OP1*OP2 GO TO 2000 C C--- DIVIDE C 600 CONTINUE IF(OP2.NE.0) VAL=OP1/OP2 GO TO 2000 C C--- LESS THAN C 800 CONTINUE IF(OP1.LT.OP2) VAL=(-1) GO TO 2000 C C--- EQUAL C 900 CONTINUE IF(OP1.EQ.OP2) VAL=(-1) GO TO 2000 C C--- GREATER THAN C 1000 CONTINUE IF(OP1.GT.OP2) VAL=(-1)  GO TO 2000 C C--- LESS THAN OR EQUAL C 1100 CONTINUE IF(OP1.LE.OP2) VAL=(-1) GO TO 2000 C C--- GREATER THAN OR EQUAL TO C 1200 CONTINUE IF(OP1.GE.OP2) VAL=(-1) GO TO 2000 C C--- NOT EQUAL TO C 1300 CONTINUE IF(OP1.NE.OP2) VAL=(-1) GO TO 2000 C C--- OR C 1400 CONTINUE VAL=IOR(OP1,OP2) GO TO 2000 C C--- AND C 1500 CONTINUE VAL=IAND(OP1,OP2) GO TO 2000 C C--- NOT C 1600 CONTINUE VAL=INOT(OP2) CALL PUSH(OP1,STACK) GO TO 2000 C C--- EXCLUSIVE OR C 1700 CONTINUE VAL=IEOR(OP1,OP2) GO TO 2000 C C--- PUT RESULT BACK ON THE STACK AND RETURN C 2000 CONTINUE CALL PUSH(VAL,STACK) RETURN END FUNCTION NUMVAL(LINE,START,FINISH) IMPLICIT INTEGER(A-Z) COMMON/STATUS/ CARD,PASS,PCOUNT,AVAIL,ERRNUM,ERRCNT DIMENSION LINE(80) C C--- THIS FUNCTION EVALUATES A NUMERIC CONSTANT IN ARRAY *LINE* FROM C--- COLUMNS *START* TO *FINISH*. BOTH PREFIXED RADIX OR C--- OR OPTIONAL POSTFIXING CAN BE HANDLED. C C--- IF AN INVALID NUMBER IS FOUND, A ERROR MESSAGE IS GENERATED C--- AND 'NUMVAL' IS RETURNED AS ZERO (0). C C--- BINARY (BASE 2) CONSTANTS CAN BE POSTFIXED WITH A 'B' OR 'S' C--- OCTAL (BASE 8) CONSTANTS CAN BE POSTFIXED WITH A 'O' OR 'Q' C--- DECIMAL (BASE 10) CONSTANTS CAN BE POSTFIXED WITH A 'D' C--- HEX (BASE 16) CONSTANTS CAN BE POSTFIXED WITH A 'H' OR 'Z' OR C--- CAN BE PREFIXED WITH A '$', A ':', OR A 0 (ZERO). C--- EXPLICIT BASE (BASE X) CAN BE POSTFIXED WITH A 'R' FOLLOWED BY C--- A SINGLE CHARACTER RADIX DIGIT (2-F) C C NUMVAL=0 BASE=10 I=START FIN=FINISH C C--- SEE IF PREFIXED RADIX C IF(LINE(I).EQ.1H$) BASE=16 IF(LINE(I).EQ.1H:) BASE=16 IF(BASE.NE.10) GO TO 110 C C--- SEE IF POSTFIXED RADIX C IF(LINE(FINISH-1).EQ.1HR) GO TO 300 IF(LINE(FINISH).EQ.1HS) BASE=2 IF(LINE(FINISH).EQ.1HB.AND.LINE(START).NE.1H0) BASE=2 IF(LINE(FINISH).EQ.1HQ) BASE=8 IF(LINE(FINISH).EQ.1HO) BASE=8 IF(LINE(FINISH).EQ.1HZ) BASE=16 IF(LINE(FINISH).EQ.1HH) BASE=16 IF(BASE.NE.10) GO TO 100 IF(LINE(FINISH).EQ.1HD.AND.LINE(START).NE.1H0) GO TO 100 C C--- IF A LEADING ZERO AND NO POSTFI  X THEN ASSUME BASE 16 C IF(LINE(START).EQ.1H0) BASE=16 GO TO 120 C C--- ADJUST ENDING CHARACTER FOR POSTFIXED RADIX C 100 CONTINUE FIN=FINISH-1 GO TO 120 C C--- CONSTANT EVALUATION LOOP (USES SHIFTED POLYNOMIAL TECHNIQUE) C 110 CONTINUE I=I+1 120 CONTINUE IF(I.GT.FIN) RETURN IF(BASE.NE.16) GO TO 140 IF(LINE(I).GT.1HF) GO TO 140 DIGIT=HEXVAL(LINE(I)) GO TO 150 140 CONTINUE DIGIT=HEXVAL(LINE(I)) 150 CONTINUE IF(DIGIT.GE.BASE) GO TO 200 IF(DIGIT.LT.0) GO TO 200 NUMVAL=NUMVAL*BASE+DIGIT GO TO 110 C C--- ERROR EXIT C 200 CONTINUE ERRNUM=ERRNUM*16+11 NUMVAL=0 RETURN C C--- EXPLICITLY NAMED BASE C 300 CONTINUE BASE=HEXVAL(LINE(FINISH)) IF(BASE.LT.2) GO TO 200 IF(BASE.GT.15) GO TO 200 FIN=FINISH-2 GO TO 120 END INTEGER FUNCTION TERM(LINE,START,FINISH) IMPLICIT INTEGER(A-Z) DIMENSION LINE(80) COMMON/OPTIONS/ NOLIST,NOOBJ,NOXREF,NOGEN COMMON /SYMBLK/ SYMTAB(400,9), MAXSYM, SYMLEN, LASTSYM COMMON/FIELDS/ LABEL(7),OPCODE(7),SYMBOL(80),OPTR,LABPTR,SYMPTR COMMON/FILES/ INFILE,OUTFIL,SCR1,OBJ COMMON/HEAD/ TITLE(80),LINENO,PAGE,COMCOL,MAXLIN COMMON/STATUS/ CARD,PASS,PCOUNT,AVAIL,ERRNUM,ERRCNT C C--- THIS SUBROUTINE DETERMINES THE TYPE OF A TERM IN AN EXPRESSION C--- AND CALLS THE APPROPRIATE ROUTINE(S) TO OBTAIN ITS C--- BINARY VALUE. C C--- THE TERM TO BE EVALUATED IS CONTAINED IN PARAMETER ARRAY C--- 'LINE' FROM COLUMNS 'START' TO 'FINISH'. C C C C NUMBER=0 TERMTYP=2 S=START I=FINISH+1 IF(LINE(S).EQ.1H$) GO TO 200 IF(LINE(S).EQ.1H:) GO TO 200 IF(1H0.LE.LINE(S).AND.LINE(S).LE.1H9) GO TO 200 IF(LINE(S).EQ.1H') GO TO 300 IF(START.EQ.FINISH.AND. LINE(START).EQ.1H.) GO TO 400 C C--- SYMBOLIC DATA C N=I-1 TEMP=MANGER(LINE,S,N,SYMVAL,XPTR,1) IF(TEMP) 150,150,130 130 CONTINUE NUMBER=SYMVAL C C--- ADD AN XREF ENTRY TO THE XREF CHAIN FOR THE LABEL C IF(NOXREF.EQ.1.OR.PASS.NE.2) GO TO 500 CALL PUSH(CARD,XPTR) N=I-1 TEMP=MANGER(LINE,S,N,SYMVAL,XPTR,2) GO TO 500 C C--- UNDEFINED SYMBOL C 150 CONTINUE ERRNUM=ERRNUM*16+10 NUMBER=0  GO TO 500 C C--- NUMERIC DATA C 200 CONTINUE NUMBER=NUMVAL(LINE,S,I-1) GO TO 500 C C--- QUOTED ASCII DATA C 300 CONTINUE J=START+1 K=MIN0(FINISH-1,J+1) DO 320 I=J,K NUMBER=NUMBER*256+ASCII(LINE(I)) 320 CONTINUE GO TO 500 C C--- SYMBOL IS PROGRAM COUNTER CHARACTER C 400 CONTINUE NUMBER=PCOUNT C 500 CONTINUE TERM=NUMBER RETURN END INTEGER FUNCTION HEXVAL(ARG) IMPLICIT INTEGER(A-Z) INTEGER CNV(16) DATA CNV/1H0,1H1,1H2,1H3,1H4,1H5,1H6,1H7,1H8,1H9,1HA,1HB,1HC, + 1HD,1HE,1HF/ DO 10 I=1,16 HEXVAL=I-1 IF(ARG.EQ.CNV(I)) RETURN 10 CONTINUE HEXVAL=(-1) RETURN END SUBROUTINE PUSH(DATA,LIST) IMPLICIT INTEGER(A-Z) COMMON/LNKLST/ AVLIST(2000,2), AVSIZE COMMON/STATUS/ CARD,PASS,PCOUNT,AVAIL,ERRNUM,ERRCNT COMMON/BUFFER/ LINE(80) C C C--- THIS SUBROUTINE WILL PUSH PARAMETER 'DATA' ONTO THE LINKED C--- STACK POINTED TO BY PARAMETER 'LIST'. C C---   SEE IF THERE IS ANY FREE SPACE IN THE AVAIL LIST C C P=AVAIL IF(P.EQ.0) ERRNUM=15 IF(P.EQ.0) CALL ERROR C C--- PUSH THE DATA ONTO THE STACK C AVAIL=AVLIST(P,2) AVLIST(P,1)=DATA AVLIST(P,2)=LIST LIST=P RETURN END INTEGER FUNCTION POP(STACK) IMPLICIT INTEGER(A-Z) COMMON/LNKLST/ AVLIST(2000,2), AVSIZE COMMON/STATUS/ CARD,PASS,PCOUNT,AVAIL,ERRNUM,ERRCNT C C--- THIS FUNCTION WILL POP A DATA WORD OFF OF THE STACK C--- POINTED TO BY PARAMETER 'STACK' AND RETURN IT. 'STACK' C--- IS SET TO 0 WHEN THE STACK BECOMES EMPTY. ANY ATTEMPT C--- TO POP AN EMPTY STACK WILL RETURN A DATA VALUE OF 0. C C C P=STACK POP=0 IF(STACK.LE.0) RETURN STACK=AVLIST(P,2)  POP=AVLIST(P,1) AVLIST(P,2)=AVAIL AVAIL=P RETURN END SUBROUTINE OUTPUT(OP,VAL,TYPE,REL) IMPLICIT INTEGER(A-Z) C C C--- THIS SUBROUTINE CONTROLS THE GENERATION OF THE OUTPUT FILES. C--- (BOTH SOURCE AND OBJECT) C C--- PARAMETER 'OP' IS THE OPCODE TO OUTPUT C--- PARAMETER 'VAL' IS THE OPERAND TO OUTPUT C--- PARAMETER 'TYPE' IS THE TYPE OF OUTPUT TO PERFORM C--- TYPE=1: OUTPUT 1 BYTE (OPCODE) C--- TYPE=2: OUTPUT 2 BYTES (OPCODE,VAL) C--- TYPE=3: OUTPUT 3 BYTES (OPCODE,VAL) C--- TYPE=4: OUTPUT SOURCE LINE ONLY C--- TYPE=5: OUTPUT SOURCE LINE AND VAL ON LISTING ONLY C--- TYPE=6: OUTPUT SOURCE LINE AND VAL BUT DO NO PHASE ERROR C--- CHECKING ON THE LABEL IF IT IS PRESENT C--- TYPE=7: OUTPUT 2 BYTES OF DATA IN PARAMETER 'VAL' C C COMMON/STATUS/ CARD,PASS,PCOUNT,AVAIL,ERRNUM,ERRCNT COMMON/FIELDS/ LABEL(7),OPCODE(7),SYMBOL(80),OPTR,LABPTR,SYMPTR COMMON/HEAD/ TITLE(80),LINENO,PAGE,COMCOL,MAXLIN  COMMON/FILES/ INFILE,OUTFIL,SCR1,OBJ COMMON /SYMBLK/ SYMTAB(400,9), MAXSYM, SYMLEN, LASTSYM COMMON/BUFFER/ LINE(80) COMMON/OPTIONS/ NOLIST,NOOBJ,NOXREF,NOGEN COMMON/FMT/OUT(110),LABST,LABEND,OPCST,OPCEND,OPRST,OPREND,COMST C C--- DETERMINE IF LISTING FLAG IS TO BE SET TO SOME CHARACTER C FLAG=1H LEN=TYPE IF(LEN.GT.3) LEN=0 IF(LABPTR.EQ.0) GO TO 3 C C--- CHECK FOR A LABEL PHASE ERROR BETWEEN PASS1 AND PASS 2 C K=MANGER(LABEL,1,LABPTR,SYMVAL,XPTR,1) I=SYMVAL IF(I.NE.PCOUNT.AND.TYPE.NE.6.AND.K.GT.0) FLAG=1HP C 3 CONTINUE C--- FIRST PRINT ANY ERROR MESSAGES C 10 CONTINUE CALL ERROR C C--- DETERMINE THE CORECT OUTPUT GROUP C 20 CONTINUE IF(NOLIST.EQ.1) GO TO 2000  CALL HEADING(1,0) J=IABS(TYPE) GO TO (100,200,300,500,400,500,150),J C C--- 1 BYTE OUTPUT C 100 CONTINUE  CALL REFORM WRITE(OUTFIL,110) CARD,FLAG,PCOUNT,OP,OUT 110 FORMAT(1X,I5,'.',1X,A1,1X,Z4,2X,Z2,9X,110A1) GO TO 1000 C C--- 2 BYTE DATA WORDS C 150 CONTINUE LEN=2 CALL BYTES(VAL,N1,N2) CALL REFORM WRITE(OUTFIL,160) CARD,FLAG,PCOUNT,N1,N2,OUT 160 FORMAT(1X,I5,'. ',A1,1X,Z4,5X,Z2,1X,Z2,3X,110A1) GO TO 1000 C C--- 2 BYTE C 200 CONTINUE CALL REFORM WRITE(OUTFIL,210) CARD,FLAG,PCOUNT,OP,VAL,OUT 210 FORMAT(1X,I5,'. ',A1,1X,Z4,2X,Z2,1X,Z2,6X,110A1) GO TO 1000 C C--- 3 BYTE C 300 CONTINUE CALL BYTES(VAL,PCH,PCL) CALL REFORM WRITE(OUTFIL,310) CA RD,FLAG,PCOUNT,OP,PCL,PCH,OUT 310 FORMAT(1X,I5,'. ',A1,1X,Z4,2X,Z2,1X,Z2,1X,Z2,3X,110A1) GO TO 1000 C C--- SOURCE LINE ONLY C 400 CONTINUE WRITE(OUTFIL,410) CARD,FLAG,LINE 410 FORMAT(1X,I5,'. ',A1,18X,80A1) GO TO 2000 C C--- SOURCE LINE AND VAL ONLY C 500 CONTINUE CALL REFORM WRITE(OUTFIL,510) CARD,FLAG,VAL,OUT 510 FORMAT(1X,I5,'. ',A1,10X,'(',Z4,')',2X,110A1) GO TO 2000 C C--- BUMP CARD COUNTER C 1000 CONTINUE C C--- GENERATE THE OBJECT MODULE ENTRY C 2000 CONTINUE IF(LEN.EQ.0) GO TO 2500 IF(NOOBJ.EQ.1) GO TO 2500 CALL BYTES(VAL,PCH,PCL) P1=PCOUNT+1  P2=PCOUNT+2 IF(TYPE.NE.7) GO TO 2020 P1=PCOUNT P2=PCOUNT+1 I=PCL PCL=PCH PCH=I GO TO 2300 C C--- GENERATE THE FIRST BYTE OF OBJECT CODE C 2020 CONTINUE IF(LEN.NE.0.AND.IABS(TYPE).LE.3) WRITE(OBJ,2030) PCOUNT,OP 2030 FORMAT(' T',Z4,1X,Z2) C C--- SEE IF ANY MORE DATA TO OUTPUT C IF(LEN.EQ.1) GO TO 2500 IF(LEN.NE.2) GO TO 2300 C C--- OUTPUT THE SECOND BYTE OF A 2 BYTE OPCODE OR DATA WORD C WRITE(OBJ,2030) P1,PCL GO TO 2500 C C--- GENERATE THE SECOND AND THIRD BYTES OF A THREE BYTE OPCODE C C 2300 CONTINUE WRITE(OBJ,2030) P1,PCL WRITE(OBJ,2030) P2,PCH GO TO 2500 C C--- UPDATE THE PCOUNTER C 2500 CONTINUE PCOUNT=PCOUNT+LEN RETURN END  SUBROUTINE REFORM IMPLICIT INTEGER(A-Z) COMMON /FIELDS/ LABEL(7),OPCODE(7),SYMBOL(80),OPTR,LABPTR,SYMPTR COMMON/FMT/OUT(110),LABST,LABEND,OPCST,OPCEND,OPRST,OPREND,COMST COMMON/BUFFER/ LINE(80) C C C--- REFORM THE OUTPUT LINE TO GET A PRETTY LISTING REGARDLESS C--- OF HOW THE KLUTZ TYPED IT IN!!! C C DO 10 I=1,110 OUT(I)=1H 10 CONTINUE C C--- DO THE LABEL FIELD C END=0 LAST=30 FLD=1 IF(LABST.LE.0) GO TO 40 END=LABEND DO 20 I=LABST,END OUT(FLD+I-1)=LINE(I) 20 CONTINUE C C--- DO THE OPCODE C 40 CONTINUE IF(OPCST.LE.0) GOTO 100 FLD=MAX0(END+1,10) END=OPCEND IF(END.LE.0) GOTO 100 DO 60 I=OPCST,END OUT(I-OPCST+FLD)=LINE(I) 60 CONTINUE C C--- DO THE OPERAND C 100 CONTINUE IF(OPRST.LE.0) GOTO 200 FLD=MAX0(END+1,15) END=OPREND IF(END.LE.0) GOTO 200 DO 120 I=OPRST,END OUT(I+FLD-OPRST)=LINE(I) LAST=I+FLD-OPRST+2 120 CONTINUE C C--- DO THE COMMENT C 200 CONTINUE IF(COMST.LE.0) GOTO 300 FLD=MAX0(30,LAST) DO 220 I=COMST,80 OUT(I-COMST+FLD)=LINE(I) 220 CONTINUE C C--- EXIT C 300 CONTINUE RETURN END SUBROUTINE SYMOUT IMPLICIT INTEGER(A-Z) COMMON/FILES/ INFILE,OUTFIL,SCR1,OBJ COMMON/OPTIONS/ NOLIST,NOOBJ,NOXREF,NOGEN COMMON/SYMBLK/ SYMTAB(400,9), MAXSYM, SYMLEN, LASTSYM COMMON/HEAD/ TITLE(80),LINENO,PAGE,COMCOL,MAXLIN DIMENSION OUT(20) C C C--- THIS SUBROUTINE PRINTS OUT THE SYMBOL TABLE AND XREF CHAINS C C IF(NOXREF.EQ.1) RETURN IF(LASTSYM.EQ.0) RETURN C C--- ITERATE FOR EACH ENTRY IN THE MAIN SYMBOL TABLE C CALL HEADING(0,1) DO 1000 I=1,LASTSYM 10 FORMAT(' SYMBOL TABLE AND CROSS REFERENCE MAP',// +' SYMBOL ADDR REFERENCES',/) C C--- CHECK IF THERE IS AN ENTRY IN THE SYMBOL TABLE FOR THE  LINK C--- FOLLOW THE CHAIN IF THERE IS C ADDR=SYMTAB(I,SYMLEN+1) TEMP=SYMTAB(I,SYMLEN+2) C C--- REVERSE THE LIST C CHAIN=0 20 CONTINUE REF=POP(TEMP) CALL PUSH(REF,CHAIN) IF(TEMP.NE.0) GOTO 20 DEFINED=POP(CHAIN) IF(CHAIN.EQ.0) GOTO 200 K=0 C DO 40 J=1,13 LINE=POP(CHAIN) IF(LINE.LT.DEFINED) GOTO 44 CALL PUSH(LINE,CHAIN) LINE=0-DEFINED DEFINED=32767 44 CONTINUE OUT(J)=LINE K=K+1 IF(CHAIN.NE.0) GO TO40 IF(DEFINED.EQ.32767) GOTO 50 CALL PUSH(0-DEFINED,CHAIN) DEFINED=32767 40 CONTINUE 50 CONTINUE C IF(LINENO.GT.MAXLIN-5) CALL HEADING(0,1) IF(LINENO.EQ.3) WRITE(OUTFIL,10) IF(LINENO.EQ.3) LINENO=5 CALL HEADING(1,1) WRITE(OUTFIL,60) (SYMTAB(I,JJ),JJ=1,SYMLEN),ADDR,(OUT(J),J=1,K) 60 FORMAT(2X,7A1,2X,Z4,2X,17(1X,I5))  IF(CHAIN.EQ.0) GO TO 1000 C C--- GENERATE THE FOLLOWING LINES OF OUTPUT C 70 CONTINUE K=0 DO 80 J=1,13 LINE=POP(CHAIN) IF(LINE.LT.DEFINED) GOTO 74 CALL PUSH(LINE,CHAIN) LINE=0-DEFINED DEFINED=32767 74 CONTINUE OUT(J)=LINE K=K+1 IF(CHAIN.NE.0) GO TO 80 IF(DEFINED.EQ.32767) GOTO 90 CALL PUSH(0-DEFINED,CHAIN) DEFINED=32767 80 CONTINUE 90 CONTINUE C IF(LINENO.GT.MAXLIN-5) CALL HEADING(0,1) IF(LINENO.EQ.3) WRITE(OUTFIL,10) IF(LINENO.EQ.3) LINENO=5 CALL HEADING(1,1) WRITE(OUTFIL,100)(OUT(J),J=1,K) 100 FORMAT(17X,17(1X,I5)) IF(CHAIN.NE.0) GO TO 70 GO TO 1000 C C--- NO REFERENCES C 200 CONTINUE IF(LINENO.GT.MAXLIN-5) CALL HEADING(0,1) IF(LINENO.EQ.3) WRITE(OUTFIL,10) IF(LINENO.EQ.3) LINENO=5 CALL HEADING(1,1) DEFINED=0-DEFINED WRITE(OUTFIL,220) (SYMTAB(I,JJ),JJ=1,SYMLEN),ADDR,DEFINED 220 FORMAT(2X,7A1,2X,Z4,3X,I5,6X,'NO REFERENCES') 1000 CONTINUE RETURN END SUBROUTINE BYTES(VALUE,UPPER,LOWER) IMPLICIT INTEGER(A-Z) C C C--- THIS SUBROUTINE RETURNS THE LOWER EIGHT BITS OF *VALUE* C--- IN PARAMETER *LOWER* AND THE NEXT EIGHT BITS IN *UPPER*. C C LOWER=IAND(VALUE,:FF) UPPER=IAND(VALUE,:7F00)/256 IF(VALUE.LT.0) UPPER=IOR(UPPER,:80) RETURN END INTEGER FUNCTION MANGER(NAME,START,FINISH,ATTR,XPTR,CODE) IMPLICIT INTEGER(A-Z) COMMON/LNKLST/ AVLIST(2000,2), AVSIZE COMMON/SYMBLK/ SYMTAB(400,9), MAXSYM, SYMLEN, LASTSYM COMMON/STATUS/ CARD,PASS,PCOUNT,AVAIL,ERRNUM,ERRCNT INTEGER NAME(80),FNAME(7) C C C C--- THIS FUNCTION IS THE SYMBOL TABLE MANAGER. C--- IT CONTROLS ALL ACCESSES AND UPDATES TO THE TABLE. C C--- THE TABLE IS A SORTED LINEAR LIST ... C C--- PARAMETER 'NAME' IS THE NAME OF AN ARRAY WHICH CONTAINS C--- THE SYMBOL TO MANIPULATE. C C--- PARAMETERS 'START' AND 'FINISH' POINT TO THE BEGINNING AND C--- ENDING CHARACTERS OF THE SYMBOL WITHIN THE ARRAY 'NAME'. C C C C--- PARAMETER 'ATTR' IS THE ATTRRIBUTE ASSOCITAED WITH THE C--- ACCESS. C C--- PARAMETER 'XPTR' IS THE POINTER TO THE SYMBOL'S XREF CHAIN. C C--- PARAMETER 'CODE' IS THE FUNCTION TO BE PERFORMED UPON THE C---  TABLE. C--- CODE = 0: INSERT THE SYMBOL AND ATTRIBUTE C--- CODE = 1: RETREIVE THE ATTRIBUTE C--- CODE = 2: CHANGE T HE ATTRIBUTE C C--- THE FUNCTION RETURNS A POSITIVE NUMBER IF THE TABLE ACCESS C--- WAS SUCCESSFUL. THIS NUMBER IS THE LOCATION OF THE SYMBOL C--- IN THE LINKED LIST ARRAY. OTHER POSSIBLE VALUES RETURNED ARE: C--- MANGER = (-1): DUPLICATE SYMBOL DEFINITION AND CODE ='ED 0 C--- MANGER = (-3): SYMBOL WAS UNDEFINED ON A RETREIVE. C--- MANGER = (0) : TABLE HAS OVERFLOWED. C C C C MANGER=0 C C--- MOVE NAME TO ARRAY 'FNAME' FOR PROCESSING. BLANK FILL. C DO 10 I=1,SYMLEN FNAME(I)=1H J=START+I-1 IF(J.GT.FINISH) GO TO 10 FNAME(I)=NAME(J) 10 CONTINUE IP=1 IF(LASTSYM.EQ.0) GO TO 100 C C--- SEARCH FOR FNAME IN THE SYMBOL TABLE C L=1 U=LASTSYM LASTI=0 C 50 CONTINUE I=(L+U)/2  IF(I.EQ.LASTI) GO TO 100 LASTI=I IF(U.LT.I) GO TO 100 C DO 60 J=1,SYMLEN IF(FNAME(J)-SYMTAB(I,J)) 64,60,66 60 CONTINUE C C--- SYMBOL FOUND C GO TO 200 C C--- SYMBOL < TABLE C 64 CONTINUE U=I-1 IP=U  GO TO 50 C C--- SYMBOL > TABLE C 66 CONTINUE L=I+1 IP=L GO TO 50 C C--- SYMBOL NOT FOUND. SEE WHAT THE CALLER WANTS TO DO. C 100 CONTINUE IF(CODE.EQ.0) GO TO 120 MANGER=(-3) RETURN C C--- INSERT THE SYMBOL AT 'IP' IN THE LIST C 120 CONTINUE IF(LASTSYM.GE.MAXSYM) RETURN LASTSYM=LASTSYM+1 IF(LASTSYM.GE.MAXSYM) ERRNUM=ERRNUM*16+15 IF(LASTSYM.LE.1) GO TO 144 SLP2=SYMLEN+2 K=IP DO 140 J=K,LASTSYM DO 130 L=1,SLP2 SYMTAB(LASTSYM-J+K,L)=SYMTAB(LASTSYM-J+K-1,L) 130 CONTINUE 140 CONTINUE C C--- PUT IT IN C 144 CONTINUE DO 150 J=1,SYMLEN SYMTAB(IP,J)=FNAME(J) 150 CONTINUE MANGER=IP SYMTAB(IP,SYMLEN+1)=ATTR XPTR=0 CALL PUSH(CARD,XPTR) SYMTAB(IP,SYMLEN+2)=XPTR RETURN C C--- SYMBOL FOUND. ERROR IF NOT RETREVING OR MODIFYING C 200 CONTINUE IF(CODE.NE.0) GO TO 220 MANGER=(-1) RETURN C C--- RETREVING??? C 220 CONTINUE IF(CODE.NE.1) GO TO 260 ATTR=SYMTAB(I,SYMLEN+1) XPTR=SYMTAB(I,SYMLEN+2) MANGER=I RETURN C C--- MODIFYING ??? C 260 CONTINUE MANGER=I SYMTAB(I,SYMLEN+1)=ATTR SYMTAB(I,SYMLEN+2)=XPTR RETURN END INTEGER FUNCTION OPLOOK(NAME,START,FINISH,TYPE2,OPVALU) IMPLICIT INTEGER(A-Z) INTEGER NAME(80) INTEGER FOP(5) INTEGER OP1(7,10) INTEGER OP2(7,10) INTEGER OP3(7,10) INTEGER OP4(7,10) INTEGER OP5(7,11) INTEGER OP6(7,10) INTEGER OP7(7,10) INTEGER OP8(7,10) INTEGER OP9(7,10) INTEGER OP10(7,10) INTEGER OP11(7,10)  INTEGER OP12(7,10) INTEGER OP13(7,10) INTEGER OP14(7,10) INTEGER OP15(7,10) INTEGER OP16(7,10)  INTEGER OP17(7,10) INTEGER OP18(7,10) INTEGER OP19(7,10) INTEGER OP20(7,1) C C C--- THIS FUNCTION IS CALLED TO SEARCH THE OPCODE TABLE C--- FOR THE OPCODE CONTAINED IN ARRAY 'NAME' FROM COLUMNS C--- 'START' TO 'FINISH'. C C C---  THE FIRST WORD OF A TABLE ENTRY IS THE SYMBOL (IN A FORMAT) C--- THE FOLLOWING WORDS ARE THE ATTRIBUTE VECTOR FOR THE SYMBOL. C C--- FOR MACHINE OPS THE ATTRIBUTE VECTOR IS DEFINE AS FOLLOWS C--- WORD 1: THE OPCODE VALUE C--- WORD 2: THE INSTRUCT IONS LENGTH. A LENGTH OF ZERO MEANS THE OPCODE C--- IS A TWO BYTE PC RELATIVE BRANCH. C C--- FOR PSEUDO OPS THE ATTRIBUTE VECTOR IS DEFINED AS FOLLOWS: C--- WORD 1: ALWAYS ZERO FOR PSEUDO OPS C--- WORD 2: THIS IS THE PSEUDO OP INDEX CODE. IT IS ALWAYS NEGATIVE C C DIMENSION OPDAT(7,192) EQUIVALENCE (OP1,OPDAT(1,1)) EQUIVALENCE (OP2,OPDAT(1,11)) EQUIVALENCE (OP3,OPDAT(1,21)) EQUIVALENCE (OP4,OPDAT(1,31)) EQUIVALENCE (OP5,OPDAT(1,41)) EQUIVALENCE (OP6,OPDAT(1,52)) EQUIVALENCE (OP7,OPDAT(1,62)) EQUIVALENCE (OP8,OPDAT(1,72)) EQUIVALENCE (OP9,OPDAT(1,82)) EQUIVALENCE (OP10,OPDAT(1,92)) EQUIVALENCE (OP11,OPDAT(1,102)) EQUIVALENCE (OP12,OPDAT(1,112)) EQUIVALENCE (OP13,OPDAT(1,122)) EQUIVALENCE (OP14,OPDAT(1,132)) EQUIVALENCE (OP15,OPDAT(1,142)) EQUIVALENCE (OP16,OPDAT(1,152)) EQUIVALENCE (OP17,OPDAT(1,162)) EQUIVALENCE (OP18,OPDAT(1,172)) EQUIVALENCE (OP19,OPDAT(1,182)) EQUIVALENCE (OP20,OPDAT(1,192)) DATA NUMOP / 192/ DATA OPLEN/5/ DATA OP1/ +1H*, 1H , 1H , 1H , 1H , 0, -1, +1H., 1H., 1H , 1H , 1H , 0, -23, +1H., 1HD, 1HA, 1H , 1H , 0, -11, +1H., 1HD, 1HB, 1H , 1H , 0, -9, +1H., 1HD, 1HW, 1H , 1H , 0, -10, +1H., 1HE, 1HN, 1HD, 1H , 0, -5, +1H=, 1H , 1H , 1H , 1H , 0, -4, +1HA, 1HD, 1HC, 1H , 1H , 109, 3, +1HA, 1HD, 1HC, 1H#, 1H , 105, 2, +1HA, 1HD, 1HC, 1H), 1HY, 113, 2/ DATA OP2/ +1HA, 1HD, 1HC, 1HX, 1H , 125, 3, +1HA, 1HD, 1HC, 1HX, 1H), 97, 2, +1HA, 1HD, 1HC, 1HX, 1HZ, 117, 2, +1HA, 1HD, 1HC, 1HY, 1H , 121, 3, +1HA, 1HD, 1HC, 1HZ, 1H , 101, 2, +1HA, 1HD, 1HC, 1HZ, 1HX, 117, 2, +1HA, 1HD, 1HD, 1HR, 1H , 0, -11, +1HA, 1HN, 1HD, 1H , 1H , 45, 3, +1HA, 1HN, 1HD, 1H#, 1H , 41, 2, +1HA, 1HN, 1HD, 1H), 1HY, 49, 2/ DATA OP3/ +1HA, 1HN, 1HD, 1HX, 1H , 61, 3, +1HA, 1HN, 1HD, 1HX, 1H), 33, 2, +1HA, 1HN, 1HD, 1HX, 1HZ, 53, 2, +1HA, 1HN, 1HD, 1HY, 1H , 57, 3, +1HA, 1HN, 1HD, 1HZ, 1H , 37, 2, +1HA, 1HN, 1HD, 1HZ, 1HX, 53, 2, +1HA, 1HS, 1HC, 1HI, 1HI, 0, -30, +1HA, 1HS, 1HL, 1H , 1H , 14, 3, +1HA, 1HS, 1HL, 1HA, 1H , 10, 1, +1HA, 1HS, 1HL, 1HX, 1H , 30, 3/ DATA OP4/ +1HA, 1HS, 1HL, 1HX, 1HZ, 22, 2, +1HA, 1HS, 1HL, 1HZ, 1H , 6, 2, +1HA, 1HS, 1HL, 1HZ, 1HX, 22, 2, +1HB, 1HC, 1HC, 1H , 1H , 144, 00, +1HB, 1HC, 1HS, 1H , 1H , 176, 00, +1HB, 1HE, 1HQ, 1H , 1H , 240, 00, +1HB, 1HI, 1HT, 1H , 1H , 44, 3, +1HB, 1HI, 1HT, 1HZ, 1H , 36, 2, +1HB, 1HM, 1HI, 1H , 1H , 48, 00, +1HB, 1HN, 1HE, 1H , 1H , 208, 0/ DATA OP5/ +1HB, 1HP, 1HL, 1H , 1H , 16, 00, +1HB, 1HR, 1HK, 1H , 1H , 0, 1, +1HB, 1HS, 1HS, 1H , 1H , 0, -3, +1HB, 1HV, 1HC, 1H , 1H , 80, 00, +1HB, 1HV, 1HS, 1H , 1H , 112, 00, +1HB, 1HY, 1HT, 1HE, 1H , 0, -9, +1HC, 1HK, 1HS, 1HU, 1HM, 0, -12, +1HC, 1HL, 1HC, 1H , 1H , 24, 1, +1HC, 1HL, 1HD, 1H , 1H , 216, 1, +1HC, 1HL, 1HI, 1H , 1H , 88, 1, +1HC, 1HL, 1HV, 1H , 1H , 184, 1/ DATA OP6/ +1HC, 1 HM, 1HP, 1H , 1H , 205, 3, +1HC, 1HM, 1HP, 1H#, 1H , 201, 2, +1HC, 1HM, 1HP, 1H), 1HY, 209, 2, +1HC, 1HM, 1HP, 1HX, 1H , 221, 3, +1HC, 1HM, 1HP, 1HX, 1H), 193, 2, +1HC, 1HM, 1HP, 1HX, 1HZ, 213, 2, +1HC, 1HM, 1HP, 1HY, 1H , 217, 3, +1HC, 1HM, 1HP, 1HZ, 1H , 197, 2, +1HC, 1HM, 1HP, 1HZ, 1HX, 213, 2, +1HC, 1HP, 1HX, 1H , 1H , 236, 3/ DATA OP7/ +1HC, 1HP, 1HX, 1H#, 1H , 224, 2, +1HC, 1HP, 1HX, 1HZ, 1H , 228, 2, +1HC, 1HP, 1HY, 1H , 1H , 204, 3, +1HC, 1HP, 1HY, 1H#, 1H , 192, 2, +1HC, 1HP, 1HY, 1HZ, 1H , 196, 2, +1HD, 1HE, 1HC, 1H , 1H , 206, 3, +1HD, 1HE, 1HC, 1HX, 1H , 222, 3, +1HD, 1HE, 1HC, 1HX, 1HZ, 214, 2, +1HD, 1HE, 1HC, 1HZ, 1H , 198, 2, +1HD, 1HE, 1HC, 1HZ, 1HX, 214, 2/ DATA OP8/ +1HD, 1HE, 1HX, 1H , 1H , 202, 1, +1HD, 1HE, 1HY, 1H , 1H , 136, 1, +1HE, 1HJ, 1HE, 1HC, 1HT, 0, -8, +1HE, 1HN, 1HD, 1H , 1H , 0, -5, +1HE, 1HN, 1HD, 1H , 1H , 0, -5, +1HE, 1HO, 1HR, 1H , 1H , 77, 3, +1HE, 1HO, 1HR, 1H#, 1H , 73, 2, +1HE, 1HO, 1HR, 1H), 1HY, 81, 2, +1HE, 1HO, 1HR, 1HX, 1H , 93, 3, +1HE, 1HO, 1HR, 1HX, 1H), 65, 2/ DATA OP9/ +1HE, 1HO, 1HR, 1HX, 1HZ, 85, 2, +1HE, 1HO, 1HR, 1HY, 1H , 89, 3, +1HE, 1HO, 1HR, 1HZ, 1H , 69, 2, +1HE, 1HO, 1HR, 1HZ, 1HX, 85, 2, +1HE, 1HQ, 1HU, 1H , 1H , 0, -4, +1HH, 1HE, 1HD, 1H , 1H , 0, -7, +1HI, 1HN, 1HC, 1H , 1H , 238, 3, +1HI, 1HN, 1HC, 1HX, 1H , 254, 3, +1HI, 1HN, 1HC, 1HX, 1HZ, 246, 2, +1HI, 1HN, 1HC, 1HZ, 1H , 230, 2/ DATA OP10/ +1HI, 1HN, 1HC, 1HZ, 1HX, 246, 2, +1HI, 1HN, 1HX, 1H , 1H , 232, 1, +1HI, 1HN, 1HY, 1H , 1H , 200, 1, +1HJ, 1HM, 1HP, 1H , 1H , 76, 3, +1HJ, 1HM, 1HP, 1H), 1H , 108, 3, +1HJ, 1HS, 1HR, 1H , 1H , 32, 3, +1HL, 1HD, 1HA, 1H , 1H , 173, 3, +1HL, 1HD, 1HA, 1H#, 1H , 169, 2, +1HL, 1HD, 1HA, 1H), 1HY, 177, 2, +1HL, 1HD, 1HA, 1HX, 1H , 189, 3/ DATA OP11/ +1HL, 1HD, 1HA, 1HX, 1H), 161, 2, +1HL, 1HD, 1HA, 1HX, 1HZ, 181, 2, +1HL, 1HD, 1HA, 1HY, 1H , 185, 3, +1HL, 1HD, 1HA, 1HZ, 1H , 165, 2, +1HL, 1HD, 1HA, 1HZ, 1HX, 181, 2, +1HL, 1HD, 1HX, 1H , 1H , 174, 3, +1HL, 1HD, 1HX, 1H#, 1H , 162, 2, +1HL, 1HD, 1HX, 1HY, 1H , 190, 3, +1HL, 1HD, 1HX, 1HY, 1HZ, 182, 2, +1HL, 1HD, 1HX, 1HZ, 1H , 166, 2/ DATA OP12/ +1HL, 1HD, 1HX, 1HZ, 1HY, 182, 2, +1HL, 1HD, 1HY, 1H , 1H , 172, 3, +1HL, 1HD, 1HY, 1H#, 1H , 160, 2, +1HL, 1HD, 1HY, 1HX, 1H , 188, 3, +1HL, 1HD, 1HY, 1HX, 1HZ, 180, 2, +1HL, 1HD, 1HY, 1HZ, 1H , 164, 2, +1HL, 1HD, 1HY, 1HZ, 1HX, 180, 2, +1HL, 1HS, 1HR, 1H , 1H , 78, 3, +1HL, 1HS, 1HR, 1HA, 1H , 74, 1, +1HL, 1HS, 1HR, 1HX, 1H , 94, 3/ DATA OP13/ +1HL, 1HS, 1HR, 1HX, 1HZ, 86, 2, +1HL, 1HS, 1HR, 1HZ, 1H , 70, 2, +1HL, 1HS, 1HR, 1HZ, 1HX, 86, 2, +1HN, 1HO, 1HP, 1H , 1H , 234, 1, +1HO, 1HP, 1HT, 1H , 1H , 0, -6, +1HO, 1HR, 1HA, 1H , 1H , 13, 3, +1HO, 1HR, 1HA, 1H#, 1H , 9, 2, +1HO, 1HR, 1HA, 1H), 1HY, 17, 2, +1HO, 1HR, 1HA, 1HX,  1H , 29, 3, +1HO, 1HR, 1HA, 1HX, 1H), 1, 2/ DATA OP14/ +1HO, 1HR, 1HA, 1HX, 1HZ, 21, 2, +1HO, 1HR, 1HA, 1HY, 1H , 25, 3, +1HO, 1HR, 1HA, 1HZ, 1H , 5, 2, +1HO, 1HR, 1HA, 1HZ, 1HX, 21, 2, +1HO, 1HR, 1HG, 1H , 1H , 0, -2, +1HP, 1HA, 1HG, 1HE, 1H , 0, -19, +1HP, 1HH, 1HA, 1H , 1H , 72, 1, +1HP, 1HH, 1HP, 1H , 1H , 8, 1, +1HP, 1HL, 1HA, 1H , 1H , 104, 1, +1HP, 1HL, 1HP, 1H , 1H , 40, 1/ DATA OP15/ +1HR, 1HO, 1HL, 1H , 1H , 46, 3, +1HR, 1HO, 1HL, 1HA, 1H , 42, 1, +1HR, 1HO, 1HL, 1HX, 1H , 62, 3, +1HR, 1HO, 1HL, 1HX, 1HZ, 54, 2, +1HR, 1HO, 1HL, 1HZ, 1H , 38, 2, +1HR, 1HO, 1HL, 1HZ, 1HX, 54, 2, +1HR, 1HO, 1HR, 1H , 1H , 110, 3, +1HR, 1HO, 1HR, 1HA, 1H , 106, 1, +1HR, 1HO, 1HR, 1HX, 1H , 126, 3, +1HR, 1HO, 1HR, 1HX, 1HZ, 118, 2/ DATA OP16/ +1HR, 1HO, 1HR, 1HZ, 1H , 102, 2, +1HR, 1HO, 1HR, 1HZ, 1HX, 118, 2, +1HR, 1HT, 1HI, 1H , 1H , 64, 1, +1HR, 1HT, 1HS, 1H , 1H , 96, 1, +1HS, 1HB, 1HC, 1H , 1H , 237, 3, +1HS, 1HB, 1HC, 1H#, 1H , 233, 2, +1HS, 1HB, 1HC, 1H), 1HY, 241, 2, +1HS, 1HB, 1HC, 1HX, 1H , 253, 3, +1HS, 1HB, 1HC, 1HX, 1H), 225, 2, +1HS, 1HB, 1HC, 1HX, 1HZ, 245, 2/ DATA OP17/ +1HS, 1HB, 1HC, 1HY, 1H , 249, 3, +1HS, 1HB, 1HC, 1HZ, 1H , 229, 2, +1HS, 1HB, 1HC, 1HZ, 1HX, 245, 2, +1HS, 1HE, 1HC, 1H , 1H , 56, 1, +1HS, 1HE, 1HD, 1H , 1H , 248, 1, +1HS, 1HE, 1HI, 1H , 1H , 120, 1, +1HS, 1HP, 1HA, 1HC, 1HE, 0, -29, +1HS, 1HT, 1HA, 1H , 1H , 141, 3, +1HS, 1HT, 1HA, 1H), 1HY, 145, 2, +1HS, 1HT, 1HA, 1HX, 1H , 157, 3/ DATA OP18/ +1HS, 1HT, 1HA, 1HX, 1H), 129, 2, +1HS, 1HT, 1HA, 1HX, 1HZ, 149, 2, +1HS, 1HT, 1HA, 1HY, 1H , 153, 3, +1HS, 1HT, 1HA, 1HZ, 1H , 133, 2, +1HS, 1HT, 1HA, 1HZ, 1HX, 149, 2, +1HS, 1HT, 1HX, 1H , 1H , 142, 3, +1HS, 1HT, 1HX, 1HY, 1HZ, 150, 2, +1HS, 1HT, 1HX, 1HZ, 1H , 134, 2, +1HS, 1HT, 1HX, 1HZ, 1HY, 150, 2, +1HS, 1HT, 1HY, 1H , 1H , 140, 3/ DATA OP19/ +1HS, 1HT, 1HY, 1HX, 1HZ, 148, 2, +1HS, 1HT, 1HY, 1HZ, 1H , 132, 2, +1HS, 1HT, 1HY, 1HZ, 1HX, 148, 2, +1HT, 1HA, 1HX, 1H , 1H , 170, 1, +1HT, 1HA, 1HY, 1H , 1H , 168, 1, +1HT, 1HI, 1HT, 1HL, 1HE, 0, -7, +1HT, 1HS, 1HX, 1H , 1H , 186, 1, +1HT, 1HX, 1HA, 1H , 1H , 138, 1, +1HT, 1HX, 1HS, 1H , 1H , 154, 1, +1HT, 1HY, 1HA, 1H , 1H , 152, 1/ DATA OP20/ +1HW, 1HO, 1HR, 1HD, 1H , 0, -10/ C C C--- SEARCH THE TABLE FOR THE NAME (BLANK FILLED) C C DO 10 I=1,OPLEN FOP(I)=1H J=START+I-1 IF(J.GT.FINISH) GO TO 10 FOP(I)=NAME(J) 10 CONTINUE C OPLOOK=(-1) L=1 U=NUMOP LASTI=0 C C--- DO A BINARY SEARCH C 100 CONTINUE I=(L+U)/2 IF(I.EQ.LASTI) RETURN LASTI=I IF(U.LT.I) RETURN C DO 120 J=1,OPLEN  IF(FOP(J)-OPDAT(J,I)) 130,120,140 120 CONTINUE C C--- OPCODE FOUND C OPLOOK=I OPVALU=OPDAT(OPLEN+1,I) TYPE2=OPDAT(OPLEN+2,I) RETURN C C--- NAME < TABLE C 130 CONTINUE U=I-1 GO TO 100 C C--- NAME > TABLE C 14 0 CONTINUE L=I+1 GO TO 100 END OPLOOK=(-1) L=1 U=NUMOP LASTI=0 C C--- DO A BINARY SEARCH C 100 CONTINUE I=(L+U)/2 IF(I.EQ.LASTI) RETURN LASTI=I IF(U.LT.I) RETURN C DO 120 J=1,OPLEN  IF(FOP(J)-OPDAT(J,I)) 130,120,140 120 CONTINUE C C--- OPCODE FOUND C OPLOOK=I OPVALU=OPDAT(OPLEN+1,I) TYPE2=OPDAT(OPLEN+2,I) RETURN C C--- NAME < TABLE C 130 CONTINUE U=I-1 GO TO 100 C C--- NAME > TABLE C 14OVicEdDanoT£)¹QÜ" 7üGŸRöGôH2HKH“G�GžGŸ9~GðGñGòGó9‰9Š9Œ9„9ˆ9…9ƒ99€9�9‚9†9‡9‹G P  M C S - 6 5 0 X M A C R O A S S E M B L E R  9�  G��GžGŸ9~Ð)Þ   GðdGñGòGó;9‰9Š9Œ9„9ˆ9…9ƒ99€9�9‚GõQÜ)" H¥I 7üIpIwI~GŸRöIÒJOwO•OÑOÜOö9„9‡IÏ9…IÑIÐGó9~9‰9Š9‹9Œ9ƒ9†9ˆG�GžGŸGðGñGò99€9�9‚HLQÜ*)H¥I 7üIpIwI~GŸRöIÒJO•OÑOöP;OÜH2PP9‰9„9…IÏIÑ9‡9IÐ9‚9€9�9ŒGó9Š9‹9ƒ9†9ˆG�GžGŸGðGñGòOxQÜ�IpIwI~7üRöPZIÐ9‡IÏIÑG�GžGŸ9ƒ9„9…9†9ˆOÝQܶ H¥OâRö9‡9ƒ9„9…9†9ˆIÓQÜ: IpIwI~GŸI PŠRöJ9‡IÏIÐIÑPùPúPûPüPýPþPÿ9„9‰9ƒGðGñGòGó9…9†9ˆ9Š9‹9ŒQQÜIpIwI~QRöH29‡9ˆ9Š9ƒ9„9…9†IÏIÐIÑ9‰9‹9ŒH3QÜ Š GŸRö9GðGóGñ9Š9€9�9‚9‰9‹9ŒGòPQQÜ èRöO–QÜ úO›O´O¾RöP;Q,Q?Q{Oµ ) ( + - * / ' < = > O¿ÿÿQ|QÜ çRöQ,P;Q‹QÜ ƒ Q�RöQ£9‡9ƒ9„9…9†9ˆQ@QÜQ#QE7üIpIwI~GŸRöPZP;QŠPP9�9„9ƒ9‡9…99€9‚G�GžGŸIÏIÐIÑ9‰9Š9‹9ŒGðGñGòGó9†9ˆQ¤QÜQ®RöQ¯0 1 2 3 4 5 6 7 8 9 A B C D E F P<QÜ" " I RöQ9†9‡9~9ƒ9„9…9ˆQ-QÜE " Rö9†9~9ƒ9„9…9‡9ˆO÷QÜg,IpIwI~GŸ7üI PŠRöPZQH2Q¿OÑIÐ9…99Š9ƒ9€9Œ9„9†9‡9ˆIÏIÑGðGñGòGó9‰9‹G�GžGŸ9�9‚PùPúPûPüPýPþPÿQÀQÜPIpIwI~PŠI RöPùPúPûPüPýPþPÿIÏIÐIÑH”QÜÏ7üGŸH¹RöH2Q,P;9�GŸGžGðGó9Š9‰9‹9Œ99€9‚G�GñGòOÒQÜ–RöP[Qܲ " 7üP`PRöP;GžGŸG�9‡9ƒ9~9„9…9†9ˆJQÜ› J OpJ)JoJµJûKAKŽKÔLL`L¦LìM2MxM¾NNJN�NÖOObJ)RöJ*ÀJ+J1F* ÿÿ. . ÿé. D A ÿõ. D B ÿ÷. D W ÿö. E N D ÿû= ÿüA D C mA D C # iA D C ) Y qJwFA D C X }A D C X ) aA D C X Z uA D C Y yA D C Z eA D C Z X uA D D R ÿõA N D -A N D # )A N D ) Y 1J½FA N D X =A N D X ) !A N D X Z 5A N D Y 9A N D Z %A N D Z X 5A S C I I ÿâA S L A S L A A S L X KFA S L X Z A S L Z A S L Z X B C C �B C S °B E Q ðB I T ,B I T Z $B M I 0B N E  ÐKIMB P L B R K B S S ÿýB V C PB V S pB Y T E ÿ÷C K S U M ÿôC L C C L D ØC L I XC L V ¸K–FC M P ÍC M P # ÉC M P ) Y ÑC M P X ÝC M P X ) ÁC M P X Z ÕC M P Y ÙC M P Z ÅC M P Z X ÕC P X ìKÜFC P X # àC P X Z äC P Y ÌC P Y # ÀC P Y Z ÄD E C ÎD E C X ÞD E C X Z ÖD E C Z ÆD E C Z X ÖL"FD E X ÊD E Y ˆE J E C T ÿøE N D  ÿûE N D ÿûE O R ME O R # IE O R ) Y QE O R X ]E O R X ) ALhFE O R X Z UE O R Y YE O R Z EE O R Z X UE Q U ÿüH E D ÿùI N C îI N C X þI N C X Z öI N C Z æL®FI N C Z X öI N X èI N Y ÈJ M P LJ M P ) lJ S R L D A ­L D A # ©L D A ) Y ±L D A X ½LôFL D A X ) ¡L D A X Z µL D A Y ¹L D A Z ¥L D A Z X µL D X ®L D X # ¢L D X Y ¾L D X Y Z ¶L D X Z ¦M:FL D X Z Y ¶L D Y ¬L D Y #  L D Y X ¼L D Y X Z ´L D Y Z ¤L D Y Z X ´L S R  NL S R A JL S R X ^M€FL S R X Z VL S R Z FL S R Z X VN O P êO P T ÿúO R A O R A # O R A ) Y O R A X O R A X ) MÆFO R A X Z O R A Y O R A Z O R A Z X O R G ÿþP A G E ÿíP H A HP H P P L A hP L P (N FR O L .R O L A *R O L X >R O L X Z 6R O L Z &R O L Z X 6R O R nR O R A jR O R X ~R O R X Z vNRFR O R Z fR O R Z X vR T I @R T S `S B C íS B C # éS B C ) Y ñS B C X ýS B C X ) áS B C X Z õN˜FS B C Y ù S B C Z åS B C Z X õS E C 8S E D øS E I xS P A C E ÿãS T A �S T A ) Y ‘S T A X �NÞFS T A X ) �S T A X Z •S T A Y ™S T A Z …S T A Z X •S T X ŽS T X Y Z –S T X Z †S T X Z Y –S T Y ŒO$FS T Y X Z ”S T Y Z „S T Y Z X ”T A X ªT A Y ¨T I T L E ÿùT S X ºT X A  ŠT X S šT Y A ˜OjW O R D ÿöQÛRöQÝQÜRRˆRÃR=IR‡RÁÿöS‹RÄQÜR÷QÜT£F:MAIN þ+)¤e ª…Ç ˆeª…Ç e+ �R³ ¡Rª…Ç …b�Wþ�Xþ�Yþ …T…] Kþ�[ Lþ;FB …] Mþ Nþ Lþ Lþ�Xþ€[þþ(I6,' ERROR MESSAGES WERE PRINTED.')] �Wþ�Xþ�Yþ�[€ þgÂj‚þªÑªÍlÐ'ªÅm j‚ƒn'ÿØo)¯,ÿÃ/ÿÀ2ÿ½^ÿ‘aÿŽdÿ‹pé8ÿ¸qƒ=ÿ´Kÿ¦Qÿ r žEÿ­s7Hÿ«t&Wÿ�u [ÿšvŸ\ÿšw^iÿŽkÿŒxu@yyAzzN{{ÿýO||T}}U~~PASS1 ƒ!þ …W „p…X Pþ)t „} Qþ΀=23„q „t RþÀž›H¤€r„p û€r€ RþÀ€r„t€ „t²Âµ€t ý€t‰Z…Zž£ž˜·D¼ ‰Y„uºžžÀž�Ážv‚ u…Ì)t „} QþÊ€=523„v€Ó¤Ô€r þ€Ö¡× �X„w …X)t „}ž¨wàžªöឃÿÞ⪋ÿ×ãA’ÿÑÊÿ™äŸŸÿŬÿ¸å…ßž†æ SþÌ=„v�X„x€w…X€x€ó„ô  Tþ¨69:€y€ý „tž8ážž&€pþ#&& & &&&&&&&&&&&&&&&&!&"&#&$&%&& Rÿ=Àž,, …W)t „}ž»Ÿ÷+Ÿ‡3ü÷4ž¿ºõ5‚ó6Z àŸÖ7çÿÐ8 þõÿÃ9š2ž‡: Sÿ|Ì=…Z Rÿ!À …WŸiJJ RÿÀ …W)t „} SÿaÌ=‰Z…Z …WŸRaa�\ ÿ€¡\�ËŽcÄgh …W)t „} SÿHÌ=„{ Rþ€; žÿû}À|ž�~…WŸ3€7€€ RþÀà@# ‡‡ RþÀÝZŸ$ �� RþÀ)t „} UþÌ=„x‰Z…ZŸ £ ££ RþÀ)t „} UþÌ=„x‰Z…Zž¸¸ …W)t „} SþÌ=…]ºžžÇž�É ;…]Èž‚Ë …WžÎÎà@#  RþÀ)�΀)¤v‚…Î+ °¹�[žfŽûâ. wÿë�ÿáˆÿÚ�ÿÒ¤ÿ¾Ñÿ‘ã…×Ìäž™ÿË­ÿ·åºáž„溞žžèž�ê�[ ÿ„|)¤v�Í*ÿ…Πv+ Œ|·ž øø RÿiÀ�[ þ„}þ =‰Z…Zž·žÐÍžº÷ž�ž€3䞣瞠鞞�X   VþžÆºÌÚ‚¹ 溮¿ÿÖ þ Mžÿ—= ÿ�蟇…Ÿƒ…–Îë?Z  s!!�""±##Ã$$%%&& ''(())*PASS2 7'þ�Xþ …Y …Z Oþ)t E Pþ΀E12„p€€q€�\€€q ÿ�]1 …]RËVÇYD^ „s�\€q ÿ)t E QþÌE„saPdMr€p€€q€q ý€p€ Rþ¨345€q þ€€t �]1 …]ˆD„ȆF�žTùŽžsÛ�žuZ�ž7ÿÙ‘ªxY’ž:ÿØ“ézÙ”žAÿÓ•AIÿÌ–Ÿ�ž‰—  Sþª2316ž �ž�’ž�   Rþ¨345€t€¨�© ‰[„wºžž­ž�®žJ¯‚ w…Ë)t E Pÿ]Ê€E79:„x€Â€y þ€Å€y„q€z„r „pž-�ž»Ì€s�Z þ„{ Rþ¨;84€x �]1 …]ØFÚDßžkÿôà þ|ÿä¡ÿ¿Ñÿ�ášÁàâžÄÞ㞎ŸÕ䔟Ðå˜ÿÍæèßž‡ç  Sÿ} 24žäðð€q„|þ#ðö  Tþà=)t Ež¬º÷$¯‚õ%Z #ž‚& Qÿ8ÌE„x…Z Sÿ50ž÷88)t E Qÿ!ÌE„x Sÿ0�Zˆx…ZžýQþQÿQQ �^„w „~€| ÷€ „~WÂZ)t E UþÌE„€)¤xžïŸû7Ÿ³PŸšk@óÿølÀÿÓm&gÆnžjž„o,)t E x+)tF+)tG QþüEFG@ Rþ¨@ABA €~ ÿ€�]1 …]–Ä‘I“G› €| ÷€ Sþ‚B6�ȦBOùG€@AC€| õ€ Sþ"C6²È» €| ö€ Sþ"@6½ÈÆ …_€ ÿ€x ÿ€�^ ÿ�`…^)'C‚…È+ °¸ÊQÍÎÐKÜž`ÿüݺnŸïÞ€ÿÞß þ‰ÿÖàšÜž„á x+ Œ€€w…^ŸÞéé �]1 …] Sþžûöö )¤x‚…Í+ °¹�\ºžžžž� �\ ÿ„t)¤x�Ì*ÿ…Í x+ Œt·ž�ž�žõ      SþžúžŸÿû´ÿæ¿ÿÛîÿ¬ÿˆèåöžÖ‚Æø‚¤ žƒ)t E Uÿ8ÌE„t€,)¤x+)�Ç+)¹Çžž2ž�4 D x+R¡Ç�ÌŽ€ D<Ã@  x+)¡Ç�ÌŽ€D…^EÃI  x+)¡Ç�ÌŽ€D…aNÃR  x+)¡Ç�ÌŽ€D…`WÃ[  x+)¡Ç�ÌŽ€D…b`Ã3ž°d x+ž+ûgžõŸòŸ×ŸÎh@ÿºéiŸÍjifž„k Œt€ Sÿ+Ÿqøww�_ ÿ€¡_�ÊŽyÄ~~)t E QþÌE„x Sÿ"86ŸT””�cþ.€Zþþ. (1X,'C',Z4,' 00') ›  SþÝZŸBü¦¦žmù§ž;Žì¨- }k©žDŽåªL MŽÝ«O VŽÕ¬G _ŽÍ­X ¦ž‡® VþŸ3µµ)t E QþÌE„xþ 8„xF Vþ€FŸùÒÒ  Sþà@#  ÜÜà@# åÞÞ �]1 …] Sþžëë�\ºžžžîž�ð�^„w�\ ÿ„t)¤xž|Žûø. „ÿô»ÿ½ù þ•ÿäú ™ÿáûŸšÿáü^œÿàÓÿ©ãÿ™ý詟Ôþ¯ÿÏÌÿ²ÿ ž÷žˆ)t E WþÀEF Sÿ p€F …_€t þ€x þ€�^ ÿ)'D‚…È+ °¸�`…^QÎK) x+ Œtˆ€w…^ž11)t EžÂÿô7=êŸÍ0Ÿ‡8@ìºÌ9íŸÌïŸÊ:é6ž„;  Qÿ<ÌE…dºžžDž�F ;…dEž‚HŸo!‚§I Cº†óJJtJØJèJJ©G€ KÿÆL ìMMMoNN¼OOíPPîQQ+RR3SS5TT6UUBVVIWWKXXLYYdZZ£[[¤\\·]]¹^^Â__Ä``ñaaòbbôccddeeff(ggrhhsiiujjˆkk�ll‘mmŸnn oo¡pp¢qq²rr³ss¿ttÅuuÐvvÖww×xxÙyyæzzç{{é||}}~~@€€�ADDLAB …þ�N€à@# ˆÂ‹ �N ÿ€)�ÈŽ€à@# �Ƒ”�G„Z „[)t„] Mþ΀„\ à@# ¨B«�O1 …Oà@# �Ž ±. …ÿ¬²ª�ÿ•³¶¡´´¥µµ¶SETPTR ºþ€G ÿ„K‚„T „U„V�H„W ÿ„XÜX€X¹IžžÌž�ΠX�ËŽ€€T „TÑÃÕ€T€Ö±× X�ËŽ€ÜVÚÂÝ X�ËŽ€€V€ ÿ„VàÄâÂå€V€æ¡ç X�ËŽ€ê�Íž�ëÜU€Uºžžïž�ñ€W U+)…Ê€X ÿ+)…Ê W�ËŽ€ U+)ÝÊüÄ  W�ËŽ€ U+R�Ê ÿ…ÊÅ  ˆX„W€X¹Ižžžž�ž8ž6žðž¢�M1 …Mž„ ˆU„Yþ€„U U¤X +)…Ê+)…Ê X+ ×µ€U ÿ„Sà@# ¿‚ñ1ÐŽá2' ÙŽÙûŽ·ޝ3( ߎÔ4) ºÿú5ªéŽÌ6, îºÈ7(ÿ�8 99):PARSE Aþ‚„g„h„i„j„k …O‚„l …P…Q…R„m…S…T…U…V…W…X…Y�Z þ�[þ$>)t Âþþž>(80A1)[Lh�[þ$>)t Âþþgž‹s „nÝ\)�ËŽ)�ËŽ)�ËŽ …SÜn€nºžž‰ž�‹ n�ËŽ€n…T n�ËŽ�Qºžž˜ž€™‚„i—žƒ›€i€œ¨�ÝQ n�Ë¡Q…Çža‚aŽU”O¤Ün€nºžž¨ž�ª n�ËŽ­6®€n…U ÿ„nÜn€nžz{¶ž~x·žAÿö¸ªC‚õ¹K‚ ºÿÿ]ÿÝiÿÑ»ûdÂ×pÂˈº³§º”¼Peÿ×qÿ˽sfÿ×rÿ˾^µž‰¿º|žžÀž� n�ËŽ n�ËŽ€n…V�PºžžÏž€Ð‚i„hΞƒÒ€h€ÓžÔÝP n�Ë¡P…ÈžWÅUÛÜn€nº]žžßž�á n�ËŽä6å €n…W ÿ„n�P ý€)t„ržyŽ÷Èލñ; }Žôò* �Žñ�Žå¬ŽÆÄŽ®ãŽ�ó ÉjôžŠŸêõ“Žâö: –ºàͺ©÷©ŸÎøëÍùž¶ŸÃú·ŸÃûðž‹ü Nþ΀201„o€€pºžž ž€Ä ‚-„l žƒ  €p ÿ€ …W…XÜnžùžœÆÜn€nº"žžž� n�ËŽ€€j „jÃ#€j€€m € n�ËŽI n�ËŽC€n…X€l€ n�ËŽ n�ËŽ nžÁŸû=àŸÝ>$Ú?ž&Ù@ž*VAž.SBž2ÐCžôŸÏD6NEž:KFž<žŠG�ËŽ n�ËŽ€Ün€nºžžžSž�U‚„hRž„Tž‚W€h€Y€n…XEž•IQ[�Pºžž^ž€_‚„h]žƒa€h€c ÝP n�Ë¡P…ÈŽ€‚„ljÂmž(Fž§n€k€‚„kž#@ž²Cž¯MåoÃs n�ËŽ€žýÿúxŸºðyŸäzXâ{žŸà|ŽÞ}' bÛ~ž5ŽÉiŽ•# vÉ€žwž‰�Üm€ž‚ƒ n�ËŽ€€m ÿ„m†ÃŠ€m�O1 …O‹D?žÐ�ÝR n�Ë¡R…ÉžAžÕ—Ün€nºžž›ž�� n�ËŽ 6¡žz¢D¢¢‚„l¡ž‚Bžá¤€n…Yú¦û¦õ¦ø¦=¦>¦|¦œž‰¦�P€l€§Bª �R ÿ€¡R�ÉŽ€�Pž9Žùu޽³( HŽë…Ž®´) LŽèµ, Qºäšº›¶PU‚á_‚×k‚Ëp‚Æ·ÿÿ©Î¸ž¬Ì¹ž°Éºž²žˆ»ºžž½ž€¾‚x„h¼žƒÀ€h€ÝP‚¡P…ȸžŽ¹ž�ºžŒÁÅÇ�P€‚)…ÈÈÃÌ�P€ …PÍÂЀh�O1 …OÑDÖ€i�O1 …O×DÜ€m�O1 …OÝDâà@# _ää‚)…Ë‚)…Ë)…È)…Ë)…È …P …Qà@# köö‚)…È‚)…È‚)…È‚)…È …P …Q…Rà@# ŸŽé䂤  ¢‚ç ¯ŽÛÄ‚Æ A »ºÐ ɂà * 炦ö‚—. ù‚•E ü‚“N –Ÿúÿ‚’D ERROR  —þ�M€à@#  šÂ �)¤Z‚„Û+ ñ¹ Lþ Lþ�M€à@#  ²Â µÝN�MOüG�@„k1�M„[ ÁA Ä[€k…M ÆA È…M Lþ€[þ ± ± Ò à à)€Û€ ⎠ã�Oþþ‚)„ÛžE (' *** ERROR. REQUIRED FIELD IS MISSING. CARD IS IGN','ORED.') Ó ì ì)€Û€ î‚ ï�Oþ8þ‚)„Ûž98&(' *** ERROR. OPERAND IS OUT OF RANGE. ONLY LOW ORDER',' BITS ARE USED.')  Ô ø ø)€Û€ û�Oþ^þ‚)„Ûž-^(' *** ERROR. REQUIRED FIELD IS MISSING.')  Õ  )€Û€ �Oþtþ‚)„Ûž!t"(' *** ERROR. INVALID OPCODE AND/OR ADDRESSING MODE CO','NFLICT.')  Ö  )€Û€ ž —ÿü ª Ÿ‚õ  ¦ÿï ¬ÿé ÊÿË  ž úÜ ž Ñ ž ÐÿÈ À Ç ž ž‡ �Oþ–þ‚)„Ûž –"(' *** ERROR. TOO MANY FIELDS IN OPERAND. EXCESS ARE ','IGNORED.') × $ $)€Û€ '�Oþ¸þ‚)„Ûž¸%(' *** ERROR. DUPLICATE SYMBOL DEFINITION. FIRST DEFI','NITION HOLDS.')  Ø 0 0)€Û€ 3�OþÝþ‚)„ÛžÝ$(' *** ERROR. OPCODE TRANSLATION WAS TOO LONG. EXCESS',' TRUNCATED.')  Ù < <)€Û€ ?�Oþ þ‚)„Ûž (' *** ERROR. LABEL WAS TOO LONG. EXCESS IS TRUNCATED.') Ú H H) €Û€ K�Oþ þ‚) „Ûž (' *** ERROR. UNBALANCED PARENTHESIS.') Û T T) €Û€ W�Oþ 2þ‚) „Ûž 2#(' *** ERROR.  SYMBOL HAS NOT YET BEEN DEFINED IN THIS ','ASSEMBLY.')  Ü ` `ž äÿü ðÿð üÿä ÿØ ÿÄ (ÿ¸ 4ÿ¬  @ÿ  Lÿ” Xÿˆ a  &û bž çÿû óÿï ÿÿã ÿ× ÿà +ÿ· 7ÿ« CÿŸ Oÿ“ [ÿ‡ c^ è‚û ô‚ï ‚ã ‚× ‚à ,‚· 8‚« D‚Ÿ P‚“ \‚‡ dÿÿ 2ò ež >ç fž JÜ gž VÑ hž `žˆ i) €Û€ l�Oÿs Uÿr‚r) „Ûž U(' *** ERROR. INVALID DIGIT IN NUMERIC CONSTANT') Ý u u�Oÿj nÿi n)(' *** ERROR. SYMBOL TABLE FULL. ALL FOLLOWING ','SYMBOL DEFINITIONS IGNORED.')  zž ¹G�À { kÐ |ž ;ŸÁ GŸµ SŸ© _Ÿ� tŸˆ zŸ‚ } ± bŸ› ~ ± eŸ™  ± fŸ™ € ± gŸ™ � ± hŸ™ ‚ ± |Ÿ† ƒ ± © „ „ ª … … ¯ † †ÿÿ ° ‡ ‡ Í ˆ ˆ Î ‰ ‰ ŠHEADIN  ž þ�K ÿ€�H€à@#  ¢Ä ¤Â §�G€�G€‚…L ªÂ ­�G‰L…L¹Mžžž ±ž‚ ´à@#  ²žƒ ³ž‚ ¶ÝN …L�Oþ Ž€Nþ)t Âþþ Ž ('1PAGE ',I5,16X,80A1,//)  Æà@#  ¨ß È�G ÉA Ë„W‰L…L�M ÿ¹Lžž Òž€ Ñžd Ó)¤X�Oþ ›þ ›(' ')  Ú X+ ŒWµà@#  «‚µ á' Þ âP žÿÄ ãª »ÿ¨ Öÿ� ä  ¿ÿ¥ åŸ Äÿ¡ æs Åÿ¡ Ùÿ� ç^ èASCII  ì þ�G–OüG�@„Ià@#  ï–‡ ÷ ñG� ø ìÿŒ ùª úEVAL  þþ€G ÿ„J �I„S „T„U‚„V�H ÿ„W„X�H„Y ˆX„W„X€W¸Sžž ž�  €V€)¤Z W�Ê ZŒß€€Z„[ž à $ Z+ ö²žf #ž† * €[þ  . 7 7  Nþ  ˆW„YžO 4 A 5 A 6 A A€WŒS C3 D ˆW„Z W�ÊŽ€ Z�ÊŽ€ „[ JÆ N Q W�ÊŽ€ž ü Vž þÿØ Wª ‚Ï X TÄ Yž Už„ Z Z�ÊŽ€ „[ Yž† ] `  W�ÊŽ€ Z�ÊŽ€ „[ cÆ g j  W�ÊŽ€ Z�ÊŽ€ „[ mÆ q t  W�ÊŽ€ Z�ÊŽ€ „[ wÆ { ~  W�ÊŽ€ Z�ÊŽ€ „[ �Æ … ˆ€[ºžž ‹ž€ Œ€Z„X Šžƒ Žž / � 0 � 1 � 2 � �€WŒSž Ÿû “ +ÿè ”À 8ÿÜ •& IŽÌ SŽÂ pŽ¥ „Ž‘ –<  MŽÉ bŽ´ lŽª zŽœ —=  ‘F ˜ž ’ž† ™ ˆW„Z W�ÊŽ€ Z�ÊŽ€ „[ ŸÆ £Â ¦  W�ÊŽ€ Z�ÊŽ€ „[ ©Æ ­Â °  W�ÊŽ€ Z�ÊŽ€ „[ ³Æ ·Â º  W�ÊŽ€ Z�ÊŽ€ „[ ½Æ Á Ā[ºžž Çž€ È€Z„Xž Žž¼ Êž€ ˜ž² Æž„ Ë [€é„\€[ ýž VŸû Ò \Žö fŽì vŽÜ €ŽÒ Ó>  ‰ºÊ Ô  ÐD Õž Ñž„ Ö€[ ü€[ ð€ Õž† ØC Ü €[ ð€W�H€ Nÿ1  áÆ è€W�H W*ÿ�ÊŽ€ Nÿ#  êK ïÆ ö €W�H€W�H W*ÿ�ÊŽ ûE Ûå Þb €W ÿ¸Yžž ž€  Oþ€„] Nÿ  „^Œ] ]€é„^ C ž žŽû ¢Ž÷ +  ¨Žò ¬Žî *  ²Žé ¶Žå -  ød ž ¼Žá ÀŽÝ /  ^ ž ÅºÚ  ž‡ !€W ÿ„{ Pþè;„_ Nþ  ž” ž’ ž­ 2  Oþ€„] „^Œ] ]€é„^ ;C ?€^¸\žž Bž€ C Qþ žh Ažˆ J Nþ  ˆX„Y Nþ ž 3 Z Ò Z Z€V€€W„Y [ ^ W�ÊŽ€€V „V aà e€V€ gž îŽù ÿŽè h(  ÿá 3ÿµ iI %ÿÄ jU fÄ k ž -ÿ¾ Kÿ  Tÿ— l& gž… m Pÿ{è„_ Nÿu  ˆW„Yž -   „_€W ÿ¸Yžž …ž€ †€W ÿ„{ Pÿ_è;„_ NÿY  „ž’ — ˆW„Y OÿM€„] þ £ Qþ žU “ ª ª S�ÊŽ S�ÊŽ Pÿ6è„_ž Dÿö ¤ÿ– » ë YŸâ ~Ÿ½ ¼  `ŽÜ °ŽŒ ½'   ] ¾ž ¢\ ¿ž kŸÔ À  ­S Áž ±P ž ºžˆ àNÿ'  Áž‡ ž† É  Oÿ€„]ºžžž Ñž� Ó Qÿf žo ¾ž› О‰ Òž‡ Ú Oÿ €„Rà@#  ¬޵ â)  Ϻ“ ; ã ã ¿Ÿ¤ ä  æ å å ô æ æ çGENOP  ë$þ JþÀ„L JþÀ„M „N�Gþ þ  ÿ     Kþ°  Kþ° à@#    €LˆM„Nž  ! !€MŒL„Nž  % %€MOùG @„Nž  , ,€L€MOüG @„N -F 4ž  5 5€M¸Lžžž 7ž‚ :ÿ„N 8žƒ 9ž‚ <ž  = =€MŒL€ÿ„N ? Bž  C C€M¸Lžžž Fž� Hÿ„N Ež„ Gž‚ Jž  K K€M¸Lžž Mž� Oÿ„N Nž‚ Qž  R R€M¸Lžž Už€ Vÿ„N Tžƒ Xž  Y Y€MŒLÿ„N [B ^ž  _ _€M´L„Nž  c c€M”L„Nž  g gž ëÿü hª îÿú ôÿô iI üÿí jÀ ÿÚ ÿÔ k& ŸË $ŸÇ +ŸÀ 4Ÿ· <Ÿ¯ BŸ© JŸ¡ QŸš XŸ“ ^Ÿ� bŸ‰ fŸ… l gž… m €L „N Kÿy° Ÿu  w w€M˜L„NŸq l { { Kÿn°à@#  ƒNUMVAL  ‡þ€G ÿ„J „S „T�H„U�I„V U�ÊŽ€ „T — š U�ÊŽ€ „T �  €T ö€¡I*ÿ�ÊŽ¡I�ÊŽ€ „T «Â ® ¡I�ÊŽ€¡H�ÊŽ „T ±Æ µB ¸¡I�ÊŽ€ „T »Â ¾¡I�ÊŽ€ „T Á ġI�ÊŽ€ „T Ç ʡI�ÊŽ€ „T Í Р€T ö€¡I�ÊŽ€¡H�ÊŽ€ ÖÄ Û¡H�ÊŽž ¢ü ßž §x àž ‡ÿ٠᪠ÒÏ âž –ŽÌ ã$  ÚÉ äž œŽÈ å:  Þž‡ æ€ „T æÂ éž âž‡ äž… ê�I ÿ„Vž ßžŽ îÜU 鞆 íž‚ ð€U¸Vžžž óž� õ€Sà@#  òž… ôžƒ ø€T ð€ U�ʺžž þž�  Ut „X LþÀ„Wž úÐ ÿž‹   Ut „X LþÀ„W žŠ€W¸Tžžžž‚€W€€TOùG@ž ¦Žû"R  ªŽø#S  °Žó$B  ´Žð ÙŽË ÝŽÇ%0  ºŽë&Q  ÀŽæ'O  ÆŽá(Z  ÌŽÜ)H  ÕŽÔ*D Ï+ž àŸË,!ž‹-ˆW„Sž>ž—ž–+ž„0�M1 …M „Sà@# ,88 ¡It „X LþÀ„TºžžDž€CžlE€TºžžGž�HžgI�I þ„Vž# ýºÏMF Bº‹NFºˆOÿÊÿ¿=ÿ’P QTERM Uþ€G ÿ„J „n „o�H„p ‰I„q p�ÊŽ p�ÊŽ‚ p¹Êžžnž�p�ʺžžžsž�ož…u  p�ÊŽ�H�I€¡H�ÊŽ{Ä€!€q ÿ„r Qþê€0245„s€€t„n�U ÿ�V þ€ Rþà5€q ÿ„ržfz¡žjw¢žxj£žd¤žŽÖ¥ž“R¦žUÿѧª–ѨžeŽÃ©$ iŽÀª:  žŠ«  Qþê€0245„sž¥ž‘·�X1 …X „nž¡žœ¢ž›ržËtžÉ¾ €q ÿ„x Sþè08„nž£ž¦Ê ‰H„v�I ÿ„x ˆv„yþ 89„w v¤q€nOùG€@„z  t „{žk‚ùå0 qºôæ9 wŽïç' ~Žéè. „ÿä¬ÿ¼é¶˜ÿÑê&¤ŸÆë¦ŸÅ쨟Äíäž‰î  TþÀ;ˆz„n q+ Œw žëûû�Y„n¶žÆ½ž¿Éž³úž‚ìýíýý€n„mà@# ÝG€"Âÿ¿ ‡Óÿ¯ ïÿ” 쌴HEXVAL  þ  )¤K€K ÿ„J�GŒË€€Jà@# à  K+ ð±ÿ„Jà@#  ÿ•!ª"PUSH &þ�M„T€ …N*Â-€T€ Lþ.Ã2 Tª�É…M�Gª…É�Hª…É€T…Hà@# 3ªŒ@ 7ª‰Aø0:ª‡BÐ&ÿœCª0ÿ“D —EPOP I þ�G„R „Q�G€€Qà@# PÃT Rª�È…Gª�È„Q�Jª…È€R…J€Qà@# Uª�c Xª‹dø0\ªˆeÐIÿœfªgOUTPUT è þ‚„w�I„xºžžžðž�ò „xïž„ñž‚ô�X)t D Sþ΀D:;„y€z„|�Y�I ú€y€‚„w G Dõ[ Tþ�Z ÿ Uþ�IA  „}þ#** Vþ�[þk€\þ 7bþ€Yþ€Gþ)tÂþþk(1X,I5,'.',1X,A1,1X,Z4,2X,Z2,9X,110A1)@ž)AA „x Wþè>? Vþ�[þ~ž{RžèÿêSªê‚éT îºæUüÿÙV¶‚ÇWP Qž†X€\þ 7bþ€Yþ >bþ ?bþ)tÂþþ~(1X,I5,'. ',A1,1X,Z4,5X,Z2,1X,Z2,3X,110A1)kž$ll Vþ�[þ“€\þ 7bþ€Yþ€Gþ€Hþ)tÂþþ“(1X,I5,'. ',A1,1X,Z4,2X,Z2,1X,Z2,6X,110A1)„ž%…… Wþè@Ažÿú� —ÿõŽ ž!ÿí�À+ÿäKÿÄmÿ¢�T.ÿâNÿÂpÿ ‘ 2ÿß5ÿÜ7ÿÚ9ÿØYÿ¸\ÿµ^ÿ³aÿ°dÿ­tÿ�wÿšyÿ˜{ÿ–}ÿ”’Ÿ=ÂÕhª�‘“n>ÿÕiÿª‚ÿ‘”s?ÿÕjÿªƒÿ‘•^@ŸÕkŸª„Ÿ‘–DÿÒ†ÿ�—šŒž‹˜ Vÿv�[ÿt¨€\ÿq 7bÿn€Yÿl€Gÿj Abÿg @bÿd)tÂaÿaÿa¨(1X,I5,'. ',A1,1X,Z4,2X,Z2,1X,Z2,1X,Z2,3X,110A1)´Ÿa'µµ�[ÿZÀ €\ÿW 7bÿT)tÂÿQÿQÀ (1X,I5,'. ',A1,18X,80A1)Äž&Å(ÅÅ VÿI�[ÿGÌ€\ÿDžRŸüÏΞ�Ð 7bÿ?€Hÿ=)tÂ:ÿ:ÿ:Ì(1X,I5,'. ',A1,10X,'(',Z4,')',2X,110A1) Ûž–ÜÄž—Ûž€ÏÜÜ(€x�] ÿ Wÿ4è@A ‰YB ‰YC�I ù€�YB CA„|@A€|@žòÑ€x�IA ºžž ž� �^ÿà€Yÿ€GþÿO ž‰à(' T',Z4,1X,Z2) €x ÿžÝ{žàyžÁÂÙPDžž„€x þ€�^þà Bbþ Abþþžž¨Ì,�^þà Bbþ Abþþ�^þà Cbþ @bþþž+ž—Bž€ž©ž¨ž¦C€x‰Y…Yà@#  º¾Hÿµ&ÿ¢)ÿŸ2ÿ–5ÿ“=ÿ‹@ÿˆIŸ!ÿ¨-ÿœ8ÿ‘J *ÿ 6ÿ”Aÿ‰K^LLMMNNOOPREFORM T"þ)¤W‚…Ê+ ’¹ „X „Y „Z�M€�N„X¡M¤W€WˆZ ÿ„[�Ë […Ê W+ ŒX³eÐv�O€ ˆX„[þ€„Z�P„X€¡O¤W€W�OˆZ„[�Ë […Ê W+ ŒX³wڃΒ�Q€ ˆX„[þ€„Z�R„X€¡Q¤W€WˆZ�Q„[�Ë […Ê€[ „Y W+ ŒX°“ݟѱ�S€þ ! „Z¡S¤W€W�SˆZ„[�Ë […Ê W+ °³²ÔÇà@# X‚ðÉ Tÿõʪ{ÿÏ—ÿ³³ÿ—Ë=ÌÌ ›ÍͶÎÎÏSYMOUT &þ�N ÿ€à@# *Â-�O€à@# .Â1 Kþ)¤]Ó)('  SYMBOL TABLE AND CROSS REFERENCE MAP',//' SYMBOL ADDR REFERENCES',/)9¡P€]'€ª�Ç„^ª�Ç„_ „` Lþ€„a Mþ ! €_€R²S Lþ€ „b€` „c)¤d Lþ€ „e¸bžžgž€h  Mþ % Œb„e‚„bfžŒs€e d„æÜc€`€€bŽ Œb„{ Mþ ; ‚„byΈ d+ ó‘|P��R û¹Qžžž�ž‚“žZy”ž&ÿ2ÿã– ž;'€Z=ªÙ@ªÖ—�FÿÑTÿÃ`ÿ·˜ILÿÌiÿ¯�ÿ—™&“ž†š Kÿz‘žŽ’ž� �Q ý€�SþÓþ¢Å¨�Q ý€ …QªÂ­  Kÿg�Sþü)¤f€]'€ÿÛtþ f+ �P´ bþ)¤d4&þ d+ Œc·þü(2X,7A1,2X,Z4,2X,17(1X,I5)) Ò€` „c)¤d Lÿ>€ „e¸bžžàž€á  Mÿ6 % Œb„e‚„bßžŒìžq‚û{Žñ†‚æê‚‚íÿÓZîž”ŸÚï¤ÿË´ÿ»ð §ÿÉÑÿŸñ^ìž…ò€e d„æÜc€`€€bŽr Œb„{ Mÿ ; ‚g„bøÎ d+ ó‹ûP �R û¹Qžžžž‚ Kÿž‡ž†�Q ý€�SÿSÓÿQÅ �Q ý€ …Q"Â%  Kþ�SÿC  )¤d4&þ d+ Œc·ÿ7 (17X,17(1X,I5)) :ž¾ÿüÆÿôËÿï3ÿ‡;ŸîŸÍ<:ž‚=€`€?žï@@�R û¹QžžžCž‚F KþDž‡Ež†L�Q ý€�SÿÓÿNÅT�Q ý€ …QVÂY  Kþ Œb„b�Sÿ )¤f€]'€ÿ,tÿM f+ �P´ bÿE "bÿBþ(2X,7A1,2X,Z4,3X,I5,6X,'?ÿÿÿÿÿÿe820806094101820806094101820806094101eÚ@€820806094101820806094101820806122918" e820806094101820806094101820806094101e820806094101820806094101820806094101820806094101820806094101820806094101eü38208061013065082080610132725820806113637e¸nË8208061018370082080611054825820806113736eƒWÖæ¾8208061124235082080611285925820806113821 eó# i8208061050457582080610504700820806113842$ % & ' ( ) * + . ASM6502 FTNASM6502 OBJASM6502 BIN ASM6502 JCL, JF:MAIN O0SEGMENTOFORTRAN OF:FORT::OLNKLST OOPTION OSTATUS OFILES OSYMBLK OHEAD OPASS1:::OHEADIN::OPASS2:::OSYMOUT::ooo&o¡oooooTooooKF:XRDA KF:XFDA KF:RREW KPASS1 KHEADIN KPASS2 KSYMOUT KF:RWEF KF:RIOL KF:RETF KF:RSTO KF:RFZ KF:RSTU itdÿÿdø/ÿÿdþoÿÿdÿÿÿÿtd ÿÿd ÿÿd ÿÿd ÿÿdÿÿdÿÿdÿÿd ÿÿdPÿÿdQÿÿdRÿÿdSÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿiF:MAIN gKF:RSTU þi                          M C S - 6 5 0 X  M A C R O  A S S E M B L E R                              ii- . / 0 1 ii�iiiiii Ðii2 3 4 5 6 7 iiPdiiQiiRiiS;iiiiiiiiiiiiiiiiiiiiiii)¤e ª…Ç ˆeª…Ç e+ �R³ ¡Rª…Ç …b�Wþ�Xþ�Yþ …T…] Kþ�[ Lþ;FB …] Mþ Nþ Lþ Lþ�Xþ€[þþ(I6,' ERROR MESSAGES WERE PRINTED.')]�Wþ�Xþ�Yþ�[€ þgÂj‚þªÑlªÍlÐ'ªÅm j‚ƒn'ÿØot ,ÿÃp/ÿÀp8 2ÿ½p^ÿ‘paÿŽpdÿ‹pt8ÿ¸qt=ÿ´rKÿ¦rQÿ rtEÿ­stHÿ«ttWÿ�ut[ÿšvt\ÿšwt iÿŽxkÿŒxt @yyAzzN{{ÿýO||T}}U~~JPASS1 O0SEGMENTOFORTRAN OPASS1:::OLNKLST OFILES OPTRS OSTATUS OBUFFER OSYMBLK OFIELDS OHEAD OOPTION OPARSE:::OOPLOOK::OADDLAB::OEVAL::::OBYTES:::OSETPTR::OOUTPUT::oo«o>o¡ooRooPooaoTooooooooKF:XRDA KF:XFDA KPARSE KOPLOOK KADDLAB KEVAL KBYTES KF:RCGO KSETPTR KMAX0 KOUTPUT itdÿÿdø/ÿÿdÿÖÿÿdÿÿÿÿdþoÿÿd ÿÿÿÿd ÿÿd ÿÿd ÿÿÿÿtd ÿÿd ÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿd ^ÿÿdÿÿd `ÿÿd _ÿÿd Sÿÿd ÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿd Pÿÿd Qÿÿd Rÿÿd ÿÿd ÿÿd ÿÿd ÿÿiPASS1 gKF:RGMY þ …W „p…X Pþ)t „} Qþ΀=23„q „t RþÀžH%€r„p û€r€ RþÀ€r„t€ „t3Â6€t ý€t‰Z…Zž$ž˜=8D= ‰Y„uºžžAž�C9Bžv9C‚ u…Ì)t „} QþÊ€=523„v€9T¤9U€r þ€9W¡9X�X„w …X)t „}ž)waž+öbžÿÞct  ÿ×dtÿÑeKÿ™et ÿÅf-ÿ¸ft`ž†g SþÌ=„v�X„x€w…X€x€9t„9u Tþ¨69:€y€9~ „tž8bžž�€pþ#„§§‰§§Š§§‹§§�§§‘§§’§§“§§”§§•§§—§§˜§§™§§›§§œ§§�§§ž§§Ÿ§§ §§¢§§£§§¤§§¥§§¦§§ Rÿ=Àž…­­ …W)t „}ž<Ÿ÷´¬Ÿ‡´}÷µž@ºõ¶C‚ó·Z aŸÖ¸hÿйtvÿút³ž‡» Sÿ|Ì=…Z Rÿ!À …WŸi†ËË RÿÀ …W)t „} SÿaÌ=‰Z…Z …WŸR‡ââ�\ ÿ€¡\�ËŽäÄé­è­é …W)t „} SÿHÌ=„{ Rþ€; ž‚ÿûþtýž�ÿ…WŸ3ˆ¸ RþÀà@# � RþÀÝZŸ$Œ RþÀ)t „} UþÌ=„x‰Z…ZŸ�$$Ž$$ RþÀ)t „} UþÌ=„x‰Z…Zž–99 …W)t „} SþÌ=…]º9 žžHž�J ;…]Iž‚L …WžšOOà@#  RþÀ)�΀)¤v‚…Î+  °¹�[žçŽûc. øÿëdÿád ÿÚdÿÒd%ÿ¾dRÿ‘dtXÌežÿËf.ÿ·ftbž„gºžžžiž�k�[ ÿ„|)¤v�Í*ÿ…Πv+ Œ|·ž¡yy RÿiÀ�[ þ„}þ =‰Z…Zž8žÐ‰Nžº‰xž�‰ˆž€‰´‰‰ež£‰hž ‰jžž‰�X‹ VþžGºÌ”[‚¹• gº®–@ÿÖ—tŠM˜ž�ÿ—™t Œÿ�št “Ÿ‡›˜Ÿƒœ��OžžlŸŸÀ  Û¡¡ô¢¢££2¤¤D¥¥„¦¦�§§�¨¨‘©©’ªªÿÿJPASS2 O0SEGMENTOFORTRAN OPASS2:::OFILES OOPTION OPTRS OSTATUS OBUFFER OSYMBLK OFIELDS OHEAD OPARSE:::OOPLOOK::OEVAL::::OBYTES:::OOUTPUT::OPUSH::::OSETPTR::OHEADIN::OASCII:::ooWoHoooRooPooaoToooooooooKF:XRDA KF:XFDA KF:RREW KPARSE KOPLOOK KEVAL KBYTES KOUTPUT KF:RCGO KPUSH KSETPTR KF:RWEF KF:RIOL KF:RETF KHEADIN KMAX0 KASCII KF:RFZ itdÿÿdÿÖÿÿdÿÿÿÿdþoÿÿd ÿÿÿÿd ÿÿd ÿÿd ÿÿÿÿtd ÿÿd ÿÿd ÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿd ^ÿÿd `ÿÿdÿÿdÿÿd _ÿÿdÿÿdÿÿdÿÿdÿÿd Sÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿd Pÿÿd Qÿÿd RÿÿiPASS2  gKF:RGMY þ�Xþ …Y …Z Oþ)t E Pþ΀E12„p€€q€�\€€q ÿ�]1 …](Ë4,Ç4/D4 „s�\€q ÿ)t E QþÌE„s7PH:MH€p€€q€q ý€p€ Rþ¨345€q þ€€t �]1 …]^DcZÈc\Fcž*ùdžIÛežKZfž ÿÙgtNYhžÿØitPÙjžÿÓktÿÌltcž‰m Sþª2316ž ež�vhž�v Rþ¨345€t€O~�O ‰[„wºžžƒž�…O„žJO…‚ w…Ë)t E Pÿ]Ê€E79:„x€O˜€y þ€O›€y„q€z„r „pž-fž»¢€s�Z þ„{ Rþ¨;84€x �]1 …]®Fµ°DµžAÿô¶tRÿä·wÿ¿·§ÿ�·t—พšÞ¹ždŸÕºjŸÐ»nÿͼtµž‡½ Sÿ} 24žºÆÆ€q„|þ#ÆÌ: îî Tþà=)t Ež‚º÷ú…‚õûZ ùž‚ü Qÿ8ÌE„x…Z Sÿ50žÍ)t E Qÿ!ÌE„x Sÿ0�Zˆx…ZžÓ''Ô''Õ''�^„w „~€| ÷€ „~-Â0)t E UþÌE„€)¤xžÅŸûA Ÿ³A&ŸšAÉÿøBtïÿÓCt =ÆDž@ž„E)t E x+)tF+)tG QþüEFG@ Rþ¨@ABA €~ ÿ€�]1 …]lÄqgIqiGq€| ÷€ Sþ‚B6sÈ|BOùG€@AC€| õ€ Sþ"C6ˆÈ‘€| ö€ Sþ"@6“Èœ …_€ ÿ€x ÿ€�^ ÿ�`…^)'C‚…È+  °¸ Q²£Î²¦K²ž6ÿü³t DŸï´VÿÞµt_ÿÖ¶t²ž„· x+ Œ€€w…^Ÿ´¿¿�]1 …] SþžÑÌÌ)¤x‚…Í+  °¹�\ºžžž×ž�Ù�\ ÿ„t)¤x�Ì*ÿ…Í x+ Œt·Öž�æØž�æžËçç×ççÙççÚççÛççÞççßççàççâççãççäççåççæççéççêççëççìççíçç SþžÐððžuÿûñŠÿæñ•ÿÛñÄÿ¬ñèÿˆñt»öòž¬‚Æó΂¤ó ðžƒô)t E Uÿ8ÌE„t€¿)¤x+)�Ç+)¹Çžžž�  D x+R¡Ç�ÌŽ€ Dàx+)¡Ç�ÌŽ€D…^àx+)¡Ç�ÌŽ€D…a$Ã( x+)¡Ç�ÌŽ€D…`-Ã1 x+)¡Ç�ÌŽ€D…b6Ã: ž°: x+žû=žËŸò>æŸ×>ïŸÎ>Õºé?òŸÍ@?<ž„A Œt€ Sÿ+ŸqÎMM�_ ÿ€¡_�ÊŽOÄTîTØTT)t E QþÌE„x Sÿ"86ŸTÖjj�cþ€Zþþ(1X,'C',Z4,' 00') q SþÝZŸBÒ||žCù}žŽì~- SkžŽå€L #ŽÝ�O ,ŽÕ‚G 5ŽÍƒX |ž‡„ VþŸ3ç‹‹)t E QþÌE„xþ 8„xF Vþ€FŸÏ¨¨ Sþà@# á²²à@# »´´�]1 …] SþžèÁÁ�; \ºžžžÄž�Æ¿Æ�^„w�\ ÿ„t)¤xžRŽûÎ. ZÿôÏ‘ÿ½ÏtkÿäÐt oÿáÑt pÿáÒt rÿàÓ©ÿ©Ó¹ÿ™ÓtŸÔÔî…ÿÏÕ¢ÿ²ÕtÍžˆÖt E WþÀEF Sÿp€F …_€t þ€x þ€�^ ÿ)'D‚…È+  °¸�`…^íQÿðÎÿóKÿ x+ Œtˆ€w…^žÝ)t Ež˜ÿô tÀŸÍŸ‡ÂºÌßÌÅŸÊ¿ ž„ Qÿ<ÌE…dºžžž� ;…dž‚Ÿo÷‚§ º† É  í  J  ®  ¾  G€ !ÛÿÆ"t###E$$’%%Ã&&Ä''(( )) ** ++,,--!.."//:00y11z22�33�44˜55š66Ç77È88Ê99ë::ì;;î<<þ==H>>I??K@@^AAeBBgCCuDDvEEwFFxGGˆHH‰II•JJ›KK¦LL¬MM­NN¯OO¼PP½QQ¿RRæSSçTTèUUVVÿÿJADDLAB O0SEGMENTOFORTRAN OADDLAB::OFIELDS OSYMBLK OSTATUS OMANGER::oo5ooaoooKF:XRDA KF:XFDA KMANGER itdÿÿdÿÿÿÿdÿÿd ÿÿdþoÿÿtdÿÿd_ÿÿdÿÿd^ÿÿd`ÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿiADDLAB gKF:RGMY þ�N€à@#  �N ÿ€)�ÈŽ€à@#  ÆÂ�G„Z „[)t„] Mþ΀„\ à@# 'B*�O1 …Oà@# Ž 0. ÿ¬1tÿ•2t 33$44ÿÿJSETPTR O0SEGMENTOFORTRAN OSETPTR::OPTRS OSTATUS oo„ooRoKF:XRDA KF:XFDA KMIN0 itdÿÿdÿÖÿÿdÿÿtdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿiSETPTR gKF:RGMY þ€G ÿ„K‚„T „U„V�H„W ÿ„XÜX€X¹Ižžž� X�ËŽ€€T „TÀT€ ±! X�ËŽ€ÜV$Â' X�ËŽ€€V€ ÿ„V*Ä/,Â/€V€0¡1 X�ËŽ€4�5ž�5ÜU€Uºžž9ž�;€W U+)…Ê€X ÿ+)…Ê W�ËŽ€ U+)ÝÊFÄK W�ËŽ€ U+R�Ê ÿ…ÊNÅT ˆX„W€X¹IžžžZž�\Yž8[ž6\ž:ž¢]�M1 …M\ž„a ˆU„Yþ€„U U¤X < +)…Ê+)…Ê X+  ×µ€U ÿ„Sà@#  ‚ñ{Žá|' #ŽÙ}EŽ·}Mޝ}( )ŽÔ~) ÿút3ŽÌ€, 8ºÈ�(dÿ�‚thƒƒ)ÿÿJPARSE O0SEGMENTOFORTRAN OPARSE:::OFIELDS OHEAD OSTATUS OFILES OBUFFER OFMT OOPLOOK::ooÚo3oaoToooPouoKF:XRDA KF:XFDA KF:RREF KF:RIUS KF:RETF KOPLOOK itdÿÿdÿÿÿÿdÿÿd ÿÿdÿÿÿÿdÿÿÿÿdÿÿÿÿtd ÿÿdÿÿd^ÿÿd_ÿÿd`ÿÿdnÿÿdoÿÿdpÿÿdqÿÿdrÿÿdsÿÿdtÿÿdÿÿdÿÿdÿÿdPÿÿdQÿÿdRÿÿdSÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿiPARSE gKF:RGMY þ‚„g„h„i„j„k …O‚„l …P…Q…R„m…S…T…U…V…W…X…Y�Z þ�[þ$)t Âþþž(80A1).!L.�[þ$)t Âþþ-ž‹9 „nÝ\)�ËŽ)�ËŽ)�ËŽ …SÜn€nºžžOž�Q n�ËŽ€n…T n�ËŽ�Qºžž^ž€_‚„i]žƒa€i€Kb¨KcÝQ n�Ë¡Q…ÇžaHajTUjZOjÜn€nºžžnž�p n�ËŽjs6jt€n…U ÿ„nÜn€nž@{|žDx}žÿö~t ‚õ‚î€_‚ €ÿÿ#ÿÝ�/ÿÑ�t*Âׂ6ÂË‚Nº³‚mº”‚P+ÿ׃7ÿ˃t,ÿׄ8ÿË„t{ž‰…º|žž†ž�ˆ n�ËŽ n�ËŽ€n…V�Pºžž•ž€–‚i„h”žƒ˜€h€x™žxšÝP n�Ë¡P…ÈžW‹U¡Ün€nº]žž¥ž�§ n�ËŽ¡ª6¡«€n…W ÿ„n�P ý€)t„rž?Ž÷·Žލ·; CŽô¸* GŽñ¹SŽå¹rŽÆ¹ŠŽ®¹©Ž�¹ �jºžPŸê»YŽâ¼: \ºà½“º©½oŸÎ¾±Í¿ž|ŸÃÀ}ŸÃÁ¶ž‹Â Nþ΀201„o€€pºžžÐž€ÑÌÄÑ‚-„lÏžƒÓ€p ÿ€ …W…XÜnž¿žœÜÕÆÜÜn€nº"žžàž�â n�ËŽ€€j „jåÃé€j€€m€ n�ËŽI n�ËŽC€n…X€l€ n�ËŽ n�ËŽ nž‡Ÿû¦ŸÝêÚžìÙžðVžôSžøÐ žºŸÏ üN žK žžŠ �ËŽ n�ËŽ€Ün€nºžžžž�‚„hž„ž‚€h€Ü€n…X ž•!Q!�Pºžž$ž€%‚„h#žƒ'€h€Ü)ÝP n�Ë¡P…ÈŽ€‚„l0Â3ž( ž§4€k€‚„kž#ž²9 ž¯9å95Ã9 n�ËŽ€žÃÿú>tκð?ÛŸä@âAžáŸàBäŽÞC' (ÛDž= ûŽÉE/Ž•E# <ÉFž=ž‰GÜmFž‚I n�ËŽ€€m ÿ„mLÃP€m�O1 …OQDVžÐVÝR n�Ë¡R…ÉžžÕ]Ün€nºžžaž�c n�ËŽ]f6]gž@hh hh‚„lgž‚jžáj€n…YÀllÁll»ll¾llllllBllbž‰l�P€l€mBp�R ÿ€¡R�ÉŽ€�PžÿŽùy;޽y( ŽëzKŽ®z) Žè{, ºä|`º›|P‚á}%‚×}1‚Ë}6‚Æ}ÿÿoÎ~žrÌžvÉ€žxžˆ�ºžžƒž€„‚x„h‚žƒ†€h€ÝP‚¡P…È~žŽ�ž��€žŒ�‡Å��P€‚)…ÈŽÃ’�P€ …P“–€h�O1 …O—Dœ€i�O1 …O�D¢€m�O1 …O£D¨à@# %ªª‚)…Ë‚)…Ë)…È)…Ë)…È …P …Qà@# 1¼¼‚)…È‚)…È‚)…È‚)…È …P …Q…Rà@# eŽéϪ‚¤Ï h‚çÐuŽÛÑŠ‚ÆÑA �ºÐÒ�‚ÃÓ* ­‚¦Ô¼‚—Ô. ¿‚•ÕE ‚“ÖN \Ÿú×ÜÅ‚’ØD ÇÙÙÿÿJERROR O0SEGMENTOFORTRAN OERROR:::OSTATUS OFIELDS OFILES OHEADIN::oovo,ooaooKF:XRDA KF:XFDA KHEADIN KF:RCGO KF:RWEF KF:RETF itdÿÿdÿÿÿÿdÿÿd ÿÿdÿÿtdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿd^ÿÿd_ÿÿd`ÿÿdÿÿdÿÿdÿÿiERROR ƒgKF:RGMY þ�M€à@# †Â‰)¤Z‚„Û+  ñ¹ Lþ Lþ�M€à@# žÂ¡ÝN�MOüG�@„k1�M„[­A¯„[€k…M²A´…M Lþ€[þ��¾ÌÌ)€Û€�ÎŽ�Ï�Oþþ‚)„ÛžE(' *** ERROR.  REQUIRED FIELD IS MISSING.  CARD IS IGN','ORED.')Ø¿ØØ)€Û€�Ú‚�Û�Oþ$þ‚)„Ûž9$(' *** ERROR.  OPERAND IS OUT OF RANGE.  ONLY LOW ORDER',' BITS ARE USED.') äÀää)€Û€�ç�OþJþ‚)„Ûž-J(' *** ERROR.  REQUIRED FIELD IS MISSING.') ðÁðð)€Û€�ó�Oþ`þ‚)„Ûž!`(' *** ERROR.  INVALID OPCODE AND/OR ADDRESSING MODE CO','NFLICT.') üÂüü)€Û€�ÿžƒÿüt‹‚õ’ÿï˜ÿé¶ÿËtæ> ÜžòÑž¼ÿÈtþÇžÿž‡�Oþ‚þ‚)„Ûž ‚(' *** ERROR.  TOO MANY FIELDS IN OPERAND. EXCESS ARE ','IGNORED.')Ã)€Û€��Oþ¤þ‚)„Ûž¤(' *** ERROR.  DUPLICATE SYMBOL DEFINITION.  FIRST DEFI','NITION HOLDS.') Ä)€Û€��OþÉþ‚)„ÛžÉ(' *** ERROR.  OPCODE TRANSLATION WAS TOO LONG.  EXCESS',' TRUNCATED.') (Å(()€Û€�+�Oþíþ‚)„Ûží(' *** ERROR.  LABEL WAS TOO LONG. EXCESS IS TRUNCATED.')4Æ44) €Û€�7�Oþ þ‚) „Ûž (' *** ERROR.  UNBALANCED PARENTHESIS.')@Ç@@) €Û€�C�Oþþ‚) „Ûž(' *** ERROR.  SYMBOL HAS NOT YET BEEN DEFINED IN THIS ','ASSEMBLY.') LÈLLžÐÿüMÜÿðMèÿäMôÿØMÿÄMÿ¸M ÿ¬M,ÿ M8ÿ”MDÿˆMtûNžÓÿûOßÿïOëÿãO÷ÿ×O ÿÃOÿ·O#ÿ«O/ÿŸO;ÿ“OGÿ‡OtÔ‚ûPà‚ïPì‚ãPø‚×P ‚ÃP‚·P$‚«P0‚ŸP<‚“PH‚‡PÿÿòQž*çRž6ÜSžBÑTžLžˆU) €Û€�X�OÿsAÿr‚r) „ÛžA(' *** ERROR.  INVALID DIGIT IN NUMERIC CONSTANT')aÉaa�OÿjZÿiZ(' *** ERROR.  SYMBOL TABLE FULL.  ALL FOLLOWING ','SYMBOL DEFINITIONS IGNORED.') fž¥G�ÀgWÐhž'ŸÁi3Ÿµi?Ÿ©iKŸ�i`ŸˆifŸ‚i�NŸ›j�QŸ™k�RŸ™l�SŸ™m�TŸ™n�hŸ†o�•pp–qq›rrÿÿœss¹ttºuuÿÿJHEADIN O0SEGMENTOFORTRAN OHEADIN::OOPTION OFILES OHEAD oo^ooooTKF:XRDA KF:XFDA KF:RWEF  KF:RIOL KF:RIUS KF:RETF KF:RFZ itdÿÿdÿÿÿÿtdÿÿdPÿÿdSÿÿdQÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdRÿÿiHEADIN gKF:RGMY þ�K ÿ€�H€à@# ÄÂ�G€�G€‚…L Â#�G‰L…L¹Mžžž'ž‚*à@# (žƒ,)ž‚,ÝN …L�Oþ€Nþ)t Âþþ('1PAGE ',I5,16X,80A? 1,//) <à@# ß>�G?AA„W‰L…L�M ÿ¹LžžHž€I,Gžd,I)¤X�Oþþ(' ') P X+ ŒWµà@# !‚µW'9žXPÿÄYt1ÿ¨ZLÿ�Zt5ÿ¥[t:ÿ¡\t;ÿ¡]Oÿ�]tÿÿJASCII O0SEGMENTOFORTRAN OASCII:::ooo KF:XRDA KF:XFDA itdÿÿtiASCII gKF:RGMY þ�G–OüG�@„Ià@# –‡ G�ÿŒtÿÿJEVAL O0SEGMENTOFORTRAN OEVAL::::OPUSH::::OPOP:::::OTERM::::OGENOP:::ooío<ooooKF:XRDA KF:XFDA KF:RCGO KPUSH KPOP KTERM KGENOP itdÿÿdÿÿdÿÿd)ÿÿtdÿÿdÿÿdÿÿdÿÿiEVAL gKF:RGMY þ€G ÿ„Ji ) ( + - * / ' < = > i i*ÿÿi �I„S „T„U‚„V�H ÿ„W„X�H„Y ˆX„W„X€W¸Sžžž�€V€)¤Z W�Ê ZŒß€€Z„[ž&Ã* Z+  ö²žf)ž†0€[þ 4== Nþ  ˆW„YžO:GG;GG<GG€WŒS=I3=J ˆW„Z W�ÊŽ€ Z�ÊŽ€ „[PÆWTÂW W�ÊŽ€žü\žÿØ]t‚Ï^ZÄ_ž[ž„` Z�ÊŽ€ „[_ž†fcÂf W�ÊŽ€ Z�ÊŽ€ „[iÆpmÂp W�ÊŽ€ Z�ÊŽ€ „[sÆzwÂz W�ÊŽ€ Z�ÊŽ€ „[}Æ„�„ W�ÊŽ€ Z�ÊŽ€ „[‡ÆŽ‹ÂŽ€[ºžž‘ž€’€Z„X�žƒ”ž5••6••7••8••€WŒSžŸû™1ÿèšt>ÿÜ›tOŽÌœYŽÂœvŽ¥œŠŽ‘œ< SŽÉ�hŽ´�rŽª�€Žœ�= —Fžž˜ž†Ÿ ˆW„Z W�ÊŽ€ Z�ÊŽ€ „[¥Æ¬©Â¬ W�ÊŽ€ Z�ÊŽ€ „[¯Æ¶³Â¶ W�ÊŽ€ Z�ÊŽ€ „[¹ÆÀ½ÂÀ W�ÊŽ€ Z�ÊŽ€ „[ÃÆÊÇÂÊ€[ºžžÍž€Î€Z„Xž”ž¼ÑО€Ñžž²ÑÌž„Ñ [€é„\€[ ýž\ŸûØbŽöÙlŽìÙ|ŽÜÙ†ŽÒÙ> �ºÊÚ ÖD۞מ„Ü€[ ü€[ ð€Ûž†âÞCâ€[ ð€W�H€ Nÿ1 çÆî€W�H W*ÿ�ÊŽ€ Nÿ# ðKüõÆü€W�H€W�H W*ÿ�ÊŽEáåäb€W ÿ¸Yžž ž€  Oþ€„] Nÿ  „^Œ] ]€é„^Cž¤Žû ¨Ž÷ @ + ®Žò!²Žî!* ¸Žé"¼Žå"- þd#žÂŽá$ÆŽÝ$/ ^%žËºÚ&ž‡'€W ÿ„{ Pþè;„_ Nþ #ž”8%ž’8 ž­8 Oþ€„] „^Œ] ]€é„^ACE€^¸\žžHž€I Qþ žhGžˆP Nþ  ˆX„Y Nþ ž9``Ø``€V€€W„YaÂd W�ÊŽ€€V „VgÃk€V€mžôŽùnŽèn(  ÿáo9ÿµot+ÿÄptlÄqž3ÿ¾rQÿ rZÿ—rtmž…s Pÿ{è„_ Nÿu  ˆW„Yž3…… „_€W ÿ¸Yžž‹ž€Œ€W ÿ„{ Pÿ_è;„_ NÿY Šž’� ˆW„Y OÿM€„] þ© Qþ žU™°° S�ÊŽ S�ÊŽ Pÿ6è„_žJÿöÁªÿ–Át_Ÿâ„Ÿ½ÂfŽÜÃ¶ŽŒÃ' ¦]Äž¨\ÅžqŸÔƳSÇž·PÈžÀžˆÉ Nÿ' Çž‡ÏÈž†Ï Oÿ€„]ºžžž×ž�Ù Qÿf žoÄž›àÖž‰àØž‡à Oÿ €„Rà@# ²޵è) Õº“éAééÅŸ¤êìëëúììÿÿJGENOP O0SEGMENTOFORTRAN OGENOP:::OPOP:::::OPUSH::::ooœoooKF:XRDA KF:XFDA KPOP KF:RCGO KPUSH itdÿÿtdÿÿdÿÿiGENOP gKF:RGMY þ JþÀ„L JþÀ„M „N�Gþ(((((( Kþ°  Kþ° à@# 66€LˆM„Nž::€MŒL„Nž>>€MOùG @„NžEE€L€MOüG @„NFFMžNN€M¸LžžžPž‚Sÿ„NQžƒURž‚UžVV€MŒL€ÿ„NXÂ[ž \\€M¸Lžžž_ž�aÿ„N^ž„c`ž‚cž!dd€M¸Lžžfž�hÿ„Ngž‚jž"kk€M¸Lžžnž€oÿ„Nmžƒqž#rr€MŒLÿ„NtBwž$xx€M´L„Nž%||€M”L„Nž&€€žÿü�tÿú‚ ÿô‚tÿíƒt)ÿÚ„/ÿÔ„t9ŸË…=ŸÇ…DŸÀ…MŸ·…UŸ¯…[Ÿ©…cŸ¡…jŸš…qŸ“…wŸ�…{Ÿ‰…Ÿ……€ž…†€L „N Kÿy° Ÿu'��€M˜L„NŸq…”” Kÿn°à@# ÿÿJNUMVAL O0SEGMENTOFORTRAN ONUMVAL::OSTATUS OHEXVAL::ooÎoooKF:XRDA KF:XFDA KHEXVAL itdÿÿA dÿÿtdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿiNUMVAL gKF:RGMY þ€G ÿ„J „S „T�H„U�I„V U�ÊŽ€ „T U�ÊŽ€ „T€T ö€¡I*ÿ�ÊŽ¡I�ÊŽ€ „T(Â+¡I�ÊŽ€¡H�ÊŽ „T.Æ52B5¡I�ÊŽ€ „T8Â;¡I�ÊŽ€ „T>ÂA¡I�ÊŽ€ „TDÂG¡I�ÊŽ€ „TJÂM€T ö€¡I�ÊŽ€¡H�ÊŽ€SÄX¡H�ÊŽžü\ž$x]žÿÙ^tOÏ_žŽÌ`$ WÉažŽÈb: [ž‡c€ „TcÂfž_ž‡gaž…g�I ÿ„Vž\žŽkÜUfž†mjž‚m€U¸Vžžžpž�r€Sà@# ož…uqžƒu€T ð€ U�ʺžž{ž�} Ut „X LþÀ„WžwЈ|ž‹ˆ Ut „X LþÀ„W‡žŠ’€W¸Tžžž”ž‚—€W€€TOùG@ž#ŽûŸR 'Žø S -Žó¡B 1Žð¢VŽË¢ZŽÇ¢0 7Žë£Q =Žæ¤O CŽá¥Z IŽÜ¦H RŽÔ§D ˜Ï¨ž]ŸË©žž‹ªˆW„Sž>•ž—­–ž–­¨ž„­�M1 …M „Sà@# ©µµ¡It „X LþÀ„TºžžÁž€Â­Àžl­Â€TºžžÄž�Æ­Åžg­Æ�I þ„Vž#zºÏÊF ¿º‹ËúˆÌ‚ÿÊÍ�ÿ¿Íºÿ’ÍtÿÿJTERM O0SEGMENTOFORTRAN OTERM::::OOPTION OSYMBLK OFIELDS OFILES OHEAD OSTATUS OMANGER::OPUSH::::ONUMVAL::OASCII:::oo¶o<oooaooToooooKF:XRDA KF:XFDA KMANGER KPUSH KNUMVAL KMIN0 KASCII  itdÿÿdÿÿdþoÿÿdÿÿÿÿdÿÿd ÿÿdÿÿÿÿtd ÿÿd ÿÿd ÿÿd ÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿd^ÿÿd_ÿÿd`ÿÿdÿÿdÿÿdÿÿdÿÿdPÿÿdQÿÿdRÿÿdSÿÿdÿÿdÿÿiTERM gKF:RGMY þ€G ÿ„J „n „o�H„p ‰I„q p�ÊŽ p�ÊŽ‚ p¹Êžžž��ʺžžž"ž�$ž…$ p�ÊŽ�H�I€¡H�ÊŽ*Ä/€q ÿ„r Qþê€0245„s€€t„n�U ÿ�V þ€ Rþà5€q ÿ„ržzPžwQž'jRž.dSž=ÖTžBRUžÿÑVtEÑWžŽÃX$ ŽÀY: OžŠZ Qþê€0245„sžTž‘f�X1 …X „nžPžœmQž›m!žËm#žÉm€q ÿ„x Sþè08„nžRž¦y ‰H„v�I ÿ„x ˆv„yþ 89„w v¤q€nOùG€@„zt „{ž‚ù”0  ºô•9 &Žï–' -B Žé—. 3ÿä˜[ÿ¼˜tGÿÑ™tSŸÆšUŸÅ›WŸÄœ“ž‰� TþÀ;ˆz„n q+ Œw žšªª�Y„nežÆ¬lž¿¬xž³¬©ž‚¬›¬¬œ¬¬€n„mà@# ŒG€"°qÿ¿±t‚ÿ¯²tžÿ”³t;´´cµµÿÿJHEXVAL  O0SEGMENTOFORTRAN OHEXVAL::oooKF:XRDA KF:XFDA itdÿÿd ÿÿtiHEXVAL gKF:RGMY þi 0 1 2 3 4 5 6 7 8 9 A B C D E F i)¤K€K ÿ„J�GŒË€€Jà@#  àK+  ð±ÿ„Jà@# ÿ•tÿÿJPUSH O0SEGMENTOFORTRAN OPUSH::::OLNKLST OSTATUS OBUFFER OERROR:::oo#oo¡ooPoKF:XRDA KF:XFDA KERROR itdÿÿdø/ÿÿdÿÿÿÿtdÿÿdÿÿdÿÿd ÿÿdÿÿdÿÿdÿÿdÿÿiPUSH gKF:RGMY þ�M„T€ …N €T€ Lþ àTª�É…M�Gª…É�Hª…É€T…Hà@# ªŒ ª‰ø0ª‡ Ðÿœ!tÿ“"tÿÿJPOP O0SEGMENTOFORTRAN OPOP:::::OLNKLST OSTATUS oo"oo¡oKF:XRDA KF:XFDA itdÿÿdø/ÿÿtdÿÿd ÿÿdÿÿdÿÿdÿÿdÿÿdÿÿiPOP gKF:RGMY þ�G„R „Q�G€€Qà@#  àRª�È…Gª�È„Q�Jª…È€R…J€Qà@# ª� ª‹ø0ªˆ Ðÿœ!tÿÿJOUTPUT O0SEGMENTOFORTRAN OOUTPUT::OSTATUS OFIELDS OHEAD OFILES OSYMBLK OBUFFER OOPTION OFMT OMANGER::OERROR:::OHEADIN::OREFORM::OBYTES:::ooéoEooaoToooPoouoooooKF:XRDA KF:XFDA KMANGER KERROR KHEADIN KF:RCGO KREFORM KF:RWEF KF:RIOL KF:RIUS KF:RETF KBYTES KF:RFZ itdÿÿdÿÿÿÿdÿÿd ÿÿdÿÿÿÿdþoÿÿdÿÿÿÿd ÿÿÿÿtd ÿÿd ÿÿd ÿÿdÿÿdÿÿd_ÿÿdÿÿd ÿÿdÿÿdÿÿd ÿÿdÿÿdÿÿdÿÿdÿÿdÿÿd^ÿÿd`ÿÿdPÿÿdQÿÿdRÿÿdSÿÿdÿÿdÿÿdÿÿdÿÿdÿÿd ÿÿd ÿÿd nÿÿd oÿÿd pÿÿd qÿÿd rÿÿd sÿÿd tÿÿiOUTPUT �gKF:RGMY þ‚„w�I„xºžžž‰ž�‹ „xˆž„�Šž‚��X)t D Sþ΀D:;„y€z„|�Y�I ú€y€‚„w§Âª¢Gª¥DªŽ[ª Tþ�Z ÿ Uþ�I·A¹„}þ¼ÃàVþ�[þ€\þ 7bþ€Yþ€Gþ)tÂþþ(1X,I5,'.',1X,A1,1X,Z4,2X,Z2,9X,110A1)ÙžÂÚÚ „x Wþè>? Vþ�[þž¯{ëž�ÿêìt ƒ‚éí ‡ºæî•ÿÙït¨‚ÇðP Ꞇñ€\þ 7bþ€Yþ >bþ ?bþ)C tÂþþ(1X,I5,'. ',A1,1X,Z4,5X,Z2,1X,Z2,3X,110A1)ž½ Vþ�[þ,€\þ 7bþ€Yþ€Gþ€Hþ)tÂþþ,(1X,I5,'. ',A1,1X,Z4,2X,Z2,1X,Z2,6X,110A1)ž¾ Wþè@Až«ÿú&t±ÿõ'tºÿí(tÄÿä)äÿÄ)ÿ¢)tÇÿâ*çÿÂ* ÿ *tËÿß+ÎÿÜ+ÐÿÚ+ÒÿØ+òÿ¸+õÿµ+÷ÿ³+úÿ°+ýÿ­+ ÿ�+ÿš+ÿ˜+ÿ–+ÿ”+tÖÂÕ,ª,‘,n×ÿÕ-ÿª-ÿ‘-t ØÿÕ.ÿª.ÿ‘.t ÙŸÕ/Ÿª/Ÿ‘/ÝÿÒ0ÿ�0t %ž‹1 Vÿv�[ÿtA€\ÿq 7bÿn€Yÿl€Gÿj Abÿg @bÿd)tÂaÿaÿaA(1X,I5,'. ',A1,1X,Z4,2X,Z2,1X,Z2,1X,Z2,3X,110A1)MŸaÀNN�[ÿZY€\ÿW 7bÿT)tÂÿQÿQY(1X,I5,'. ',A1,18X,80A1)]ž¿^^Á^^ VÿI�[ÿGe€\ÿDžëŸühgž�i 7bÿ?€Hÿ=)tÂ:ÿ:ÿ:e(1X,I5,'. ',A1,10X,'(',Z4,')',2X,110A1) tž/uu]ž—utž€uhuu€x�] ÿ Wÿ4è@A ‰YB ‰YC�I ù€�YB CA„|@A€|@ž‹Ñ�€x�I A¢ºžž£ž�¥�^ÿy€Yÿ€GþÿžO®¤ž‰®y(' T',Z4,1X,Z2) ®€x ÿžv{²žyy³žZÂÙ´P°Dµž±ž„¶€x þ€�^þy Bbþ Abþþžœž¨Å¸ÌÅ�^þy Bbþ Abþþ�^þy Cbþ @bþþžÄž—ÜÛž€Ü²ž©Ü³ž¨Üµž¦Ü€x‰Y…Yà@# ¢º¾á¬ÿµâ¿ÿ¢âÂÿŸâËÿ–âÎÿ“âÖÿ‹âÙÿˆâtºÿ¨ãÆÿœãÑÿ‘ãtÃÿ äÏÿ”äÚÿ‰ät ™åå�ææ´ççµèèÿÿJREFORM O0SEGMENTOFORTRAN OREFORM::OFIELDS OFMT OBUFFER ooooaouoPKF:XRDA KF:XFDA KMAX0 itdÿÿdÿÿÿÿdÿÿd ÿÿdÿÿÿÿdÿÿÿÿtdnÿÿdoÿÿdpÿÿdqÿÿdrÿÿdsÿÿdtÿÿd^ÿÿd_ÿÿd`ÿÿiREFORM gKF:RGMY þ)¤W‚…Ê+  ’¹ „X „Y „Z�M€�N„X¡M¤W€WˆZ ÿ„[�Ë […Ê W+ ŒX³Ð&�O€ ˆX„[þ€„Z�P„X€¡O¤W€W�OˆZ„[�Ë […Ê W+ ŒX³'ÚB3ÎB�Q€ ˆX„[þ€„Z�R„X€¡Q¤W€WˆZ�Q„[�ËD  […Ê€[ „Y W+ ŒX°CÝaOÑa�S€þ „Z¡S¤W€W�SˆZ„[�Ë […Ê W+  °³bÔwà@# ‚ðy ÿõzt+ÿÏ{Gÿ³{cÿ—{t/|| K}}f~~ÿÿJSYMOUT O0SEGMENTOFORTRAN OSYMOUT::OFILES OOPTION OSYMBLK OHEAD OHEADIN::OPOP:::::OPUSH::::ooÇo<ooooToooKF:XRDA KF:XFDA KHEADIN KPOP KPUSH KF:RWEF KF:RETF KF:RIOL KF:RFZ itdÿÿdþoÿÿdÿÿÿÿd&ÿÿtdÿÿdÿÿd ÿÿdÿÿdÿÿdÿÿdPÿÿdSÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿdQÿÿdRÿÿiSYMOUT WgKF:RGMY þ�N ÿ€à@# [Â^�O€à@# _Âb Kþ)¤]('   SYMBOL TABLE AND CROSS REFERENCE MAP',//' SYMBOL  ADDR   REFERENCES',/)j¡P€]'€ª�Ç„^ª�Ç„_ „` Lþ€„a Mþ ! €_€vƒ²v„ Lþ€ „b€` „c)¤d Lþ€ „e¸bžž˜ž€™ Mþ %  Œb„e‚„b—žŒ¤€e d„æÜc€`€€bŽ Œb„{ Mþ ; ‚„bªÎ¹ d+  ó‘­P¾�R û¹QžžžÁž‚Äž‹yÅžWÿîÆt cÿãÇtl'€ZÈnªÙÈqªÖÈ�wÿÑÉ…ÿÃÉ‘ÿ·Ét}ÿÌÊšÿ¯Ê²ÿ—ÊtÄž†Ë KÿzžŽÑÞ�Ñ�Q ý€�SþþÓÅÙ�Q ý€ …QÛÂÞ Kÿg�Sþ-)¤f€]'€ÿÛtþ f+ �P´ bþ)¤d4&þ d+ Œc·þ-(2X,7A1,2X,Z4,2X,17(1X,I5)) €` „c)¤d Lÿ>€ „e¸bžžž€ Mÿ6 %  Œb„e‚„bžŒž¢‚û¬Žñ·‚æ‚‚ÿZžÅŸÚ ÕÿË!åÿ»!tØÿÉ"ÿŸ"tž…#€e d„æÜc€`€€bŽr Œb„{ Mÿ ; ‚g„b)Î8 d+  ó‹,P=�R û¹Qžžž@ž‚C KÿAž‡IBž†I�Q ý€�SÿSÿQKÅQ�Q ý€ …QSÂV Kþ�SÿC;)¤d4&þ d+ Œc·ÿ7;(17X,17(1X,I5)) kžïÿül÷ÿôlüÿïldÿ‡ltŸÍmkž‚n€`€pž qq�R û¹Qžžžtž‚w Kþuž‡}vž†}�Q ý€�SÿÿÅ…�Q ý€ …Q‡ÂŠ Kþ Œb„b�Sÿ C)¤f€]'€ÿ,tE ÿM f+ �P´ bÿE "bÿBþC(2X,7A1,2X,Z4,3X,I5,6X,'NO REFERENCES') «pžº«m««žoü¬žWÿÕ­xÿ´­‹ÿ¡­t«ž‚® ]+ �O€à@# ²Âµžªÿ‹¶t¬ŸŠ·µŸ‚¸if¹¹gººÏ»»Ð¼¼â½½ã¾¾G¿¿HÀÀZÁÁ[ÂÂ{ÃÃ|ÄÄŽÅÅ�ÆÆÿÿJBYTES O0SEGMENTOFORTRAN OBYTES:::ooo KF:XRDA KF:XFDA itdÿÿtiBYTES gKF:RGMY þ�G–…I�G–OüG�@…H�G�H¶…HCà@# –�ÿ –�¶…€ G� ÿ–tÿÿJMANGER O0SEGMENTOFORTRAN OMANGER::OLNKLST OSYMBLK OSTATUS OPUSH::::ooéo1o¡oooKF:XRDA KF:XFDA KPUSH itdÿÿdø/ÿÿdþoÿÿdÿÿd%ÿÿtdÿÿdÿÿdÿÿdÿÿdÿÿdÿÿd ÿÿdÿÿdÿÿdÿÿdÿÿiMANGER gKF:RGMY þ€G ÿ„O „])¤^‚„å€^‰H ÿ„_¹Ižžž� _�Ï ^„åž„ ^+ �S­ „`�T „a�T„b „c€aˆbOüG�@„^Œc€^„c¸bžž5ž�7)¤_€^'€¤m _€å m�΀ _+ �S°žBÆI€^ ÿ„b„`ž[ALN ˆ^„a„`žV"pS1aS6žœS�Lý„]à@# TDY�T¹Užž\ž€]€]à@# [ž„`ÝT�T¹Užžež€f�V1 …Vdž…j�Tºžžžmž�o ‰S„d€`„e e¤_)¤a�TŒ_ˆe„m€aOùG€žÿü�t ‚ô‚ €ž‚ƒ@„nˆm„o€m ÿˆn„p p�Πo…Πa+ Œd£ _+ �Tœlž¬™nžª™)¤_€`'€¤m _€å m…Π_+ �S²€`„]¡S'€�Jª…Î …K¤n Rþð �K nª…΀]à@# Hž÷À�L€ÿ„]à@# ÁÄÆ�L ÿ€¡S€^'€ª�Î…Jª�Î…K€^„]à@# ÈÎ×€^„]¡S'€�Jª…Î�Kª…΀]à@# kºùå:'€ªæ~G€fæœ'€Hæ«'€9殪·æ»ªªæË'€æÍª˜æÐª•æÚ'€ æÝªˆæàª…æ�,G�¹ç´ÿ³ètÿÿJOPLOOK O0SEGMENTOFORTRAN OOPLOOK::ooiorKF:XRDA KF:XFDA itdÿÿdÿÿdkÿÿd$ÿÿdjÿÿd°ÿÿdöÿÿd<ÿÿd‰ÿÿdÏÿÿdÿÿd[ÿÿd¡ÿÿdçÿÿd-ÿÿdsÿÿd¹ÿÿdÿÿÿdEÿÿd‹ÿÿdÑÿÿdÿÿd]ÿÿd$ÿÿtiOPLOOK gKF:RGMY þ€G ÿ„Li%Ài i&i i,*     ÿÿ. .    ÿé. D A   ÿõ. D B   ÿ÷. D W F   ÿö. E N D  ÿû=     ÿüA D C   mA D C #  iA D C ) Y qi irA D C X  }A D C X ) aA D C X Z uA D C Y  yA D C Z  eA D C Z X uA D D R  ÿõA N D   -A N D #  )A N D ) Y 1i i¸A N D X  =A N D X ) !A N D X Z 5A N D Y  9A N D Z  %A N D Z X 5A S C I I ÿâA S L   A S L A   A S L X  i iþA S L X Z A S L Z  A S L Z X B C C   �B C S   °B E Q   ðB I T   ,B I T Z  $B M I   0B N E   Ði iDB P L   B R K   B S S   ÿýB V C   PB V S   pB Y T E  ÿ÷C K S U M ÿôC L C   C L D   ØC L I   XC L V   ¸i i‘C M P   ÍC M P #  ÉC M P ) Y ÑC M P X  ÝC M P X ) ÁC M P X Z ÕC M P Y  ÙC M P Z  ÅC M P Z X ÕC P X   ìi i×C P X #  àC P X Z  äC P Y   ÌC P Y #  ÀC P Y Z  ÄD E C   ÎD E C X  ÞD E C X Z ÖD E C Z  ÆD E C Z X Öi iD E X   ÊD E Y   ˆE J E C T ÿøE N D   ÿûE N D   ÿûE O R   ME O R #  IE O R ) Y QE O R X  ]E O R X ) Ai icE O R X Z UE O R Y   YE O R Z  EE O R Z X UE Q U   ÿüH E D   ÿùI N C   îI N C X  þI N C X Z öI N C Z  æi i©I N C Z X öI N X   èI N Y   ÈJ M P   LJ M P )  lJ S R    G L D A   ­L D A #  ©L D A ) Y ±L D A X   ½i iïL D A X ) ¡L D A X Z µL D A Y  ¹L D A Z  ¥L D A Z X µL D X   ®L D X #  ¢L D X Y  ¾L D X Y Z ¶L D X Z  ¦i i5L D X Z Y ¶L D Y   ¬L D Y #   L D Y X  ¼L D Y X Z ´L D Y Z  ¤L D Y Z X ´L S R   NL S R A  JL S R X  ^i i{L S R X Z VL S R Z  FL S R Z X VN O P   êO P T   ÿúO R A    O R A #   O R A ) Y O R A X  O R A X ) i iÁO R A X Z O R A Y  O R A Z  O R A Z X O R G   ÿþP A G E  ÿíP H A   HP H P   P L A   hP L P   (i iR O L   .R O L A  *R O L X  >R O L X Z 6R O L Z  &R O L Z X 6R O R   nR O R A  jR O R X  ~R O R X Z vi iMR O R Z  fR O R Z X vR T I   @R T S   `S B C   íS B C #  éS B C ) Y ñS B C X  ýS B C X ) áS B C X Z õi i“S B C Y  ùS B C Z  åS B C Z X õS E C   8S E D   øS E I   xS P A C E ÿãS T A   �S T A ) Y ‘S T A X  �i iÙS T A X ) �S T A X Z •S T A Y  ™S T A Z  …S T A Z X •S T X   ŽS T X Y Z –S T X Z  †S T X Z Y –S T Y   Œi iS T Y X Z ”S T Y Z  „S T Y Z X ”T A X   ªT A Y   ¨T I T L E ÿùT S X   ºT X A   ŠT X S  H   šT Y A   ˜i ieW O R D  ÿöi )¤g‚…Í€g‰H ÿ„h¹Ižžž� h�Ì g…Íž„ g+ Œf­ÿ„d „i€e„j „k€iˆjOüG�@„gŒk€€dà@# -Ã1€g„k¸jžžž5ž�7€dà@# 4ž…:6žƒ:)¤h g€h'€'q h�Í'qŒä€ h+ Œf­€g„d g€f'€+€ä…K+€ä…J€dà@# HÔ]€g ÿ„jžDGYa ˆg„iž@ ‚Ùe (G�<f>'€'gR'€gÿãhtÿÿ+ Œf­ÿ„d „i€e„j „k€iˆjOüG�@„gŒk€€dà@# -Ã1€g„k¸jžžž5ž�7€dà@# 4ž…:6žƒ:)¤h g€h'€'q h�Í'qŒä€ h+ Œf­€g„dNO REFERENCES') ?žº<zzž>ü{ž&ÿÕGÿ´Zÿ¡| žzž‚} ]+ �O€à@# �„žyÿ‹…^{ŸŠ†Ô„Ÿ‚‡85ˆˆ6‰‰žŠŠŸ‹‹±ŒŒ²��ŽŽ��)��*‘‘J’’K““]””^••–BYTES šþ�G–…I�G–OüG�@…H�G�H¶…H§C«à@# �–�­ÿ –�®©¶…¯€¢G� °šÿ–±ª²MANGER ¶þ€G ÿ„O „])¤^‚„å€^‰H ÿ„_¹IžžÆž�È _�Ï ^„åÇž„Ì ^+ �S­ „`�T „a�T„b „c€aˆbOüG�@„^Œc€^„c¸bžžçž�é)¤_€^'€¤m _€å m�΀ _+ �S°žôÆû€^ ÿ„b„`ž[óL ˆ^„a„`žVÔpãaèžœ�Lý„]à@# D �T¹Užžž€€]à@#  ž„ÝT�T¹Užžž€�V1 …Vž…�Tºžžžž�! ‰S„d€`„e e¤_)¤a�TŒ_ˆe„m€aOùG€ž¶ÿü3ª¿‚ô4 2ž‚5@„nˆm„o€m ÿˆn„p p�Πo…Πa+ Œd£ _+ �Tœž¬ žªK')¤_€`'€¤m _€å m…Π_+ �S²€`„]¡S'€�Jª…Î …K¤n Rþð �K nª…΀]à@# úž÷r�L€ÿ„]à@# sÄx�L ÿ€¡S€^'€ª�Î…Jª�Î…K€^„]à@# zΉ€^„]¡S'€�Jª…Î�Kª…΀]à@# ºù—ì'€ª0G€fN'€H]'€9`ª·mªª}'€ª˜‚ª•Œ'€ �ªˆ’ª…˜�ÞG�¹™fÿ³š&›OPLOOK Ÿþ€G ÿ„L¤ )¤g‚…Í€g‰H ÿ„h¹Ižž­ž�¯ h�Ì g…Í®ž„³ g+ Œf­ÿ„d „i€e„j „k€iˆjOüG�@„gŒk€€dà@# ÈÃÌ€g„k¸jžžžÐž�Ò€dà@# Ïž…ÑžƒÕ#)¤h g€h'€'q h�Í'qŒä€ h+ Œf­€g„d g€f'€+€ä…K+€ä…J€dà@# ãÔø€g ÿ„jžDâYü ˆg„iž@¦‚Ù ÃG�<Ù'€'í'€Ÿÿãª0MIN0 MIN1  A*ÿ €G„ÿõ ž† A*ÿ €G„ÿñ „˜Ä‚ÿœ€DÁŸ˜ÿ–þŒ„Yž…ÿ’þˆ¸Y„YÜDžy€Yà@# €XEGV @# �G#  7s *70MAX0 MAX1  A*ÿ €G„ÿõ ž† A*ÿ €G„ÿñ „˜Ä‚ÿœ€DÁŸ˜ÿ–þŒ„Yž…ÿ’þˆ¸Yž�„YÜDžy€Yà@# €XEGV @# �G#  7s *jG„Ÿ“G„Ÿ�G„$Ÿ�G„*Ÿ‰G„2Ÿ‡G„9Ÿ„G„=Ÿ�#¼#Ã?ARGUMENT TOO LARGEBOTH ARGUMENTS ZERO DIVISION BY ZERONUMBER OF ARGUMENTS NEGATIVE ARGUMENT SINGULARITY OVERFLOWÀ p €I ¸€Až…  € pœ€ OG„ÄBG„ Ÿ€#¼COMPUTED GO TOINDEX OUT OF RANGEå REWIND AG„ÿùÄ‚„�  w„�' IŸ€ _û AG„—Ä‚ ¢„�   Ta„Rž‹ AG„•Ä‚ ¦„�    K1C,À€ÄK„E=b„Q,Ù€K ÿ„K $‘ ÑRAÂ’ÄR'Ta@#RÁ¤R€E6Þƒý IŸ€ _< AÄ’G„7Ä‚„‘   žŠ AÄ’G„9Ä‚„‘  „E= IŸ€ _þ÷€EŒ„E€JCÉÀE@6F@¬ÄE½DIŸ€ _+þÚI)ž™þÖI)ž•þÒI )ž‘þÍI)žŒþÉI)žˆþÅI)ž„NþÀI)@„MÄN¤OþÅÆ€FˆM„FÜLžy IŸ€ _þ³I)ž‘þ¯I)ž�þ«I)ž‰þ§I)ž…Iž[þ¡I)ÄN¤Oþ£IŸ€ _ *ÿÀ€þ�@AÄbÈà „S€L„WIŸ€ _þ‡@AÄL„F# þ‚„F#  Aä€` # „Z„[„\ N*ÿ�Æ„Ù2<€JBŸ€€O ž� ž… žƒ I ž‚ !I„bÄcÉŸ€Ü „bŸ€4 # €g ÿ„gT€E=M„Ee ÿ„g m¤n nªš €ü€LžpLžxLž‘ÀE@�6Æ nª� À€@�6H nªˆ €ü€LžYLž[# XmB€fÜf žŽº�ž�žƒ„hÀgÄi '4E€o„‰€g„€žã “Ÿ€©(€f ÿâL '4EÀ€JÿSÄÄ€À‰Äož–„fž”€h „f ÿ '4E€i„€€‰„o ÀE@�6CþÆLž‚I# žº ”Ÿ€©€ELž‚€E<„E¥ m¤nI# e„b ž”e„b ÀlL.ž�žŒež‰e„b€l .ž�ž˜e„c€o ÿ„ož�€E\„Ež‰ÀE€g @_6Á„e@]ÄEI# I# ’I# €E6E½Dž‚6BIž�I# €g •ž„€E6à –Ÿ€’· 'žƒÒžy· 'žy€o ÿ„oI# €E6à –Ÿ€’·ÒI# €gA ˆ^„^I# €gà •Ÿ€’þ÷ ÿ�^¸^žƒ¸_ž�„_€o ÿ„oI# ÀN„Wˆbˆ^„^ „S€E6Ì” € ÀF SîÜSÜWžuž‰ÀF SàÈ ÜSÜWžwžÛ€E6Ëžƒ6 Ï€dŒ^º„b „cž‡€^ˆbŒdÃD ž� # „^€E6ÆÖ ž‚# €JÌ ^*ÿÚ@JÔQÅ  ^*ÿè €E6J€^Á ¸dž�€d„dôž…ÖS # „Sþ½ Ð1˺ŒAžˆÀSG€ÁSA†ÄSžr€S# ÿ€E6G€JР` ,þæÜ`ž‹€k ,žŠ€JÆþŠ €ž… ,žƒžz€`„^ I# €^Œ`à €„k# €^¸džƒ €žƒ þ¸Ü^„k# þ‘ ž}(ë¤W¢‹À€Xÿ@QC*ÿÜWžy W !¤m# WA oÀJÜoþ¥„l# €^¸_€_„^# €^„aˆb„`# À^Ì`SDÀaÌ^RAžƒÜ^#  ^þ”Ü^# €QˆR„Q# @ ødž‚ž‡ÀQ`H%€À'`H# # @ ødž‚ž†ÀQ`H%„À'`H# þ·Æþ–$µ„Vþ‚€V# þ™ „`ÀJQÁ „^# þ¦Åþ�þ„$ã,Äd#  w„�$„ƒ€Q„‚# „_€R„d€E6K¯6I€R„W Q‚…„€+ÜWž|# €E/6Ì w„� „‚'+ ÃÜKž� # ) „Ó*ÿ3=# HX'T/AZILFEGD)(P-+*$,#¨¦¦¦¦¦yy~y‰‰‰‰E/›—¤pm¤Ôàºè«ú`Ó4WpÜyXREAD INTERNAL FORMATTED WRITE INTERNAL FORMATTEDREAD EXTERNAL FORMATTED WRITE EXTERNAL FORMATTEDÓ „XÀO ž† ž‚Ÿ€.Ÿ€³€E6ì „Y¤X” 0 к�Až†ÀYG€ÜÏÄYžr 0 ,ž„ €ž‚Ÿ€µ €YJB€XÆG„Ë#„„YŸ€¢ ÿ€YC„X„Y€` ÿ„^ÀcQÁI@AÄT© 0Q ÜTžyÿ„T€S5€XC -Q€^ ŒaŸ€+Ÿ€Fà €O ž�žù€E6× „X„Y” €žÞ ,žÜ Tžƒ Fžƒžuÿ„Y” €žÑ ,žÏžy€` ÿ„^)T€YÁ)F QŸ€+ÀE6ê€b„WþÏ”# ,ž— €ž• 0 ÐЄS ÷Æ øË ûI „SþÁ€Sˆ\„\ÜWžgž�ž± N#„S*ÿ�Ó…Æ2<Ÿ€z €N„Wˆbˆ^„^þ§º‰ž�  0ÈÜWžwŸ€z €Y X1A…FŸ€z „SÀYG�#ÄYQÂIÄS# —ž� �Ÿ€’$ „Y„Z„[„\#  Y /1„T€Y Z/1„Y€Z [/1„Z€[ \/1„[¤\€T# INPUT OVERFLOWÜBŸ€’ €E6Ç€O ž� žÍŸ€‡ ÀO�LœLœ„E'G=J  Ü€c„D F'=G €pãŒca€Y´Z´[´\\€b ü„b€cŒp„DÜ€cŒDF€p(ÿG À`KÄ`ÀbKÄb ž‚Ÿ€+Ÿ€FÜŸ€ BŸ€’€E6Ò€O ž… žƒ Iž‚ I'9„�ă  E |žÎ|Þ „D€pF€pÀcRAIÄD)ž‘ Až¡€E6i}ÀcÄDÖ(ÿ€pÀYQAˆeG ž‚Ÿ€+Ÿ€FAžˆ€E6P�ž‰BŸ€’€E6Fœ}ÞŸ€ €O žƒ Iž‚ I'9„�ă E }€e¤E˜BŸ€’$€O ž‘ ž�¤L F€Y„€€Z„�€O žÑ€[„‚€\„ƒžÌGNO„Y@À[NÈG„Z ÀOL Àv@RkSÌÀXQhG޹ä€O Qá'ž¨@AÄT'JðSCIÐTž‚ÄTIJÿN0C /ÀTR3ÀXQU@  O,ž‚ž� @AQÁ ž‹G„ø#à ÀX'† QÂ'†@ …F€O) ÅÆŸ€zÿÿÿ€€O û —ž� # ÀeREÈcRôÀcÄDž…ÌcJÿRn@AÄD€eF€YD€pŒe„p€e(ûþ¥ ž¡ EÀE@Ÿ6Á DÈ€pÄp -ž� +È p '�È„p 0È€p 0ÈŸ€+߀F„SA „V¤UÃ#€DÀUQÉŒVA „WÂÀVžŒÀDžŠ´V ž� „W@ÈDÈVÌU€`C X1A ÿ„^¸až­ X1C -ÈÀWQFJÿÄW 0Èžx€SÆ› €S ÿ„S:€US€D „W .ÈžŠ€SFÜS 0Èž‚› ÜWžt ž� # €Y/©.I¤Y 0ÈŸ€Àf&m€v €„TF )1f*ÿ„Ùž| ÿ¸Tž• \€[./I¤\/™€Z/Y¤[/‰€Y/i¤Z €�Ta´T´X„Yž‹G„)#à ‚‡´X„Yÿ„Z„[„\# ÿÞ€pˆeŸ€Fv€E}„E)¤X¤p¤v€YAÜX´Z´[´\x€O ž™ ž—) ž�) ¤vGD @AQÁ  „Y@ „ZNÐNÄ[ž™ \/A. ¤\/I€[/™. ¤[/Y€Z/‰. ¤Z/i€Y/i. . ¤Yÿ €„vþ… „pžÔ# €E6Þ(ü¤W'¤S€vD „v„XžŽ ñÄÜSÜWž{ž� ÿ0Hÿ N�SD…S ÜSÜWž{# ˆD„q é€Yg'GA €p�q„p‚ž„Y „Z„[„\ „v p3D !mžz€v ü„U „vZÜUž|'AF€q„pž‚# P „]— €vºšžŠž„€Y–—T  mžsF .+®žl ü„WÜvZÜWž{# 0„rÃ!¤Xþñþø€s„p€k .žƒ€cž‚þï ŒtŒrˆp„p€k €žŠ ,žˆþ©€k €ž„ ,ž‚ �ž¡ „vf[ <„v „]— p1P3G !m€v ‚Çžv®€v ~Ažp „p'9þé # €k Ež… Džƒ€^ ÿ„^2€Em1Al„E'GAþ–þžþ¥‚ÏÀYôZô[ \.È@'QÁ€\ÀE@o6Áˆrˆp„p'AGÄSþ‚þ�þ€€€…S+ÜS# „t„s„Y„Z„[„\# ”' ž�ž„  J18ž„ кšAž—„WÜs€Y––D–“¬ÿ•ªÿ’€\ˆW„\)€ÙE–Š„ÙÜØ*ÿ1¹Ütž\# ðøÿÀÔÉ ¤T)6ÁÜÙ�ÔˆÙÿ–Š„Ù*ÿ376Åü„YÜvž‚# ÿ)  ´Ù „Ù+,ž�žw# )€ÙÃ*ÿ1¼€Y# *ú2Á)+€p"„p€v#„v'¤‡€€„T  Y'¤Y Z./'¤Z [./'¤[ \./'¤\)/'¤])€ÙÂ5½ž�€Yï6M)€Ùÿ–ˆ„Ù*ÿ39€v ÿ„vžp# ÿ*ú2Á)+€v "„v€p#„pþˆ�Y�Z�[�\„]žW žƒ'¤<€€„T  \þ–¤\ [þ“¤[ Zþ�¤Z Yþ�¤Y# „T  \þ† [þ„ Zþ‚ Yž€' ÿ–ƒ. # ÿINTEGER INPUT OVERFLOWREAL INPUT OVERFLOW }q 5= þÈ) -ž„ +žƒþÇž� ü# þ¾þ€E?6Å” *ž|þº€EO6Å” $ž�þ²# €a„^þ©€^ þ„^ÀE@O6ÄŒaÐ $þ™€E?6É€aŒ^F ÿ„W *þ�ÜWž|Ÿ€z€a„^Œ`„W ?ÈÜWž{Ÿ€zÈ€^ þ„^# ” ž|# €k €žƒ€^ ÿ„^# c STOPPAUSE G„ÿúþ� w'\BŸ€#½ à@# ñ@QCG„ÿéþ‚Ÿ€#½# Aä€Ä‚` pÀ�JÿÄC'WIŸÄ�Ăă@  þ�„j G� 0%…ê' *ÿQ·GW Ÿ€#Ä6à  ÿ# )µ ª)ä€`p�AÜAÀAÄ…JþăÁ@Ü@` @QÙW„D+¤F ÿCÁEÜE ¡ESA¨@N6Á €¥FÜEÜFÜDžp€E p„�# G„Ÿ€#¼ NUMBER OF ARGUMENTS àä€`p€B ÿ„ƒ�BÜB ÿÍÁBÜB�BÜB` SA¨@NSA €¤G# G„` Ÿ€#¼vNUMBER OF ARGUMENTS ä€`p�@Ü@„„ÀAÄ…Jÿă` +¤F ÿCÁEÜE )N6Ç¡EÜESA¨@N6Á €¥FÜFÜDžm€E p„�# ä€`p�AÜAÀAJþă„„` IÄE# p€�„G€EÀF ÿCÁGÜG ¡GÜGSA¨@N6Á €„EÄF°G p„�# ¤D A*ÿ €ä€` p �*ÿ¤C)¤B @+ €# ÄDÀGQA…G„VÃÀHQ힆mÀDLžªÀIQæ€GæK ' Á€VÀ€QM@QHÀ�N 6Á+ B+žt@ Kž�'`I C ‚‘„€*ÿJÿS:ÀV'] ªGW#¼- pÄ€à@# STATUS = :XXXX, IOÁ‚�# Á‚�# ¤Fþ‰þˆ.z¥FÜFþ„þƒ.z¥F# O0º…ž�  0/x#  Áûÿÿ END OF FILE  I/O HALTED NOT READY  WRITE PROTECT TIME OUT POWER FAILDDT NOT AVAILABLE VOLUME NOT ON UNITVOLUME NOT FOUND LOGICAL UNIT NOT RELEASED A BAD CHECK SUM BUNASSIGNED DEVICE CLUN NOT IN UATDREACHED END OF MEDIAEHARDWAREF!ILLEGAL OPERATION FOR THIS DEVICE GNON-EXISTANT MEMORY ADDRESS HMEMORY ADDRESS IN SYSTEM AREA IDIRECTORY FULLJDISK NOT LABELEDKFILE ADDRESS OVERFLOW L ILLEGAL AUM AU NOT FOUNDNWRITE DIRECT HIT END OF FILEONOT EXTENDABLEPILLEGAL FILE ADDRESSQALLOCATION TABLE FOULED UPRSYSTEM USAGE ONLY S FCB CHAIN BAD T FILE OPEN U FILE NOT OPEN VOLD OR NEW WRONGVILLEGAL FILE POINTERWUNIT NOT GIVENXUNASSIGNED FCBYBUFFER HAS WRITE PENDINGZNO MORE FREE SPACE[ BAD TYPE CODE \ABORT RTX €ACCESS�FORMAT‚INVALID TRAILING COUNTƒUNABLE TO BACKSPACE „PAST EOF…TOO MANY UNITS†READ AFTER WRITE‡CANNOT BACKSPACE NEW UNIT ˆFILE ALREADY OPEN ‰INVALID FILE NAME ŠFILE NOT FOUND‹INVALID LEADING COUNT ŒNON-EXISTANT UNIT �FILE ALREADY EXISTS ŽCANNOT DELETE PHYSICAL UNIT �LOGICAL UNIT (UF) NOT ASSIGNED�ILLEGAL INPUT CHARACTER ‘CANNOT DELETE UNNAMED FILE’ILLEGAL CHARACTER IN FORMAT “%TOO MANY NESTED PARENTHESES IN FORMAT ”%UNMATCHED RIGHT PARENTHESIS IN FORMAT •ILLEGAL REPEAT COUNT IN FORMAT–HOLLERITH INPUT —NUMERIC/LOGICAL TYPE MISMATCH ˜ILLEGAL MAG TAPE ACCESS OR FORM ™#INVALID DIRECT ACCESS RECORD NUMBER šLINE SIZE ERROR #¼þ† A ·$zŸ€$x9  A ¸ä€` „EÄDþé ÿ¯ @€‚Eþì ,þü þú€DAþåÀE@6C„€þß„�þÜÀE„€@/6„~ @þ“€E6ÍþÆ @ €@ €€ @F„tþ†þ¼ Fžuà@# $O6¤Fþ¾ FÀƒ€E/-„E6Êü„B G�l/8ÜBžz@ ž‚ €Ì‚ü„B O0ºßž�  0þ´ÜBžw€E?6G„Pþš F €€‚þ–  A ·„‚„G„�„ƒŸ€$µ $V@' „C# þ˜'þˆ>„Bþ„þ‰ÜBž|#  H%�Ç'ÜH#  J%…É'ÜJÜC# )6à  ÿ#  ERROR AT : LINE  CALLED FROM : IN SL $xŸ€$zä�` €y„N z¤O€€È$ `„� „‚&E O+ÜNžq àM# (É(n×I 'ÈÕ¤M€€ÿ”Í �1K€�ÄÀ�XÿN ž�I MÄ› ž„ šž‚À› à@# '® 逆 žœÀ…LžŽ�C„K(<Þ�C„„ÀB)Ø(<ž•(¡(bÐ�C„„ÀB)žŠ'˜Ç�CÀ„(ÄÀB)à@# '® Až¾€† ž­À…Lž�($ õ@�µÂÿž°ÄGÄ„�C(ÄÄJÀB)æ€JC)_á($ÞÌGQÙž›(MØQÖ(¡�CÀB)LÀXÄ„žŽ'ˆË�CÀ„(ÄÀB)žƒ ‚ž� †Ÿ€'»)¥(ÉI'µФL€† žˆ „K([Ç(<ž„€„„K'˜à@# (ÉI'µͤL€† ž…($ÆÄ„ž„€„„K'ˆŸ€'»(É  L€€„R$„T�CÀJLž‡(¿UÀB)ž‘À†Lž‡(¿KÀB)ž‡@ÈKÄKÄ„ÀB)à@# (É L€€„R$„TÀ†Lž•€J žŒ€KC)_Æ($ÃÌ„QA ‚ž‡(<Â(Fž� à@# )ª)«)¬(É(nEŸ€&9Ÿ€&;y€DE�D�o ž� „†€EH�E�gG�E�e žƒ ž� „…€FB�FÁ €„„¤LI '„€Jÿ+R<€C LΞΠÿ„x „wÿÁ LÁžÌ€\Êÿ¼1 LžÎ€�A ‰  L„\€BA�B„H�·N€ZL€„„` „^ „_ÿ¥ LÀHÏ«QÁ\€€„^ÿž LeHùÄGÀZQL H€€+ H„’+ÜGžx L€‡l„‡€\„™€]„š'úž›ž•&L B )¨)© Šž‰ ‰ž‡ …ž‡ ˆž… �ž� �HÿÄ€à@# )§(É(nÂiž¬€BÄÀ‡@6Dž†�B�pÃIÄHž‚IÄH)i+ÜÀHLž•€‡O6Ïo6Ë€™„\€š„]$„ZÿŽÆ Šž… ‘žƒ Žž� HÿÄ€ž� à@# (É(nI`'ÈÛÀ‡@6Ã) ž�€…  ž…ƒ‘„K(<ž†„…(¡Ç(bÄ€‡<„‡ à@# )¥(É(nÃAžÎžÏI@'ÈAžÏÀ‡@6Å) AžÈž¸€… ž¡(MAžÀþ)_ü($ ù@�¹O€‡?6dÄG@ )_ì($éÌGQæþ)_&ž”€‘M „‘6Õ¤Lý„GG& G'G& G' +ÜGžy L€‡-=„‡ ž‰ ƒž‡ …ž… ‡HÿÄ€ž� ‹à@# )¥(É(nXÃÿ„€ž”I@'ÈÑÀ‡@6Ä) Ëž…IG')–€‡=-„‡ à@# (É(nS€… žŠ€† ž‰ „†�B„ƒÆ ž‡ �ž… €žƒ ™ž� …à@# (É(nNKÀBQCÀƒKÅBÀCQBÀ„ÅC žƒÿ„€ Œà@# ä€` ‚›(nI)'ÈÓG„ )WG )Z%€Dx Cž„ ¨°ÿž� à@# OC CX>ä€` Ày zÿ„€+KS¼à@# Àƒ€ˆ@ž�ž‰Jÿ G G')cž�ÿ# Àƒ€ˆ@žŠÄˆ G G')eÀƒJÿ G G'Ÿ€)c(É(nI)Ÿ€'ÈÄJ(nI*Ÿ€'È@@KQÆÀ†LžƒÀ‡@<ćÁÀ„à@#  …ž®€…@6Æ ž¦ ž‰ ž‡@6Æ žž žœ „…€†@o6à ž—@<@?6É ž†@_6À‡?6I „†€‡6Âþ‰ž‡ ž… „žƒ �ž� €# )gä(ÍÀ‡@6É€† ž™€… ž– ž”žŽ€† ž‹)] I��ЂG!AKĈÀ‡@ć ž…)i ˜HÿÄ€# (MÒQÐ G )Ë€K�‹Å€‡<„‡ÿžƒ ž� †ÀK# )¥(bÅ G )ÀK# G ) ÀK# €‡6H/6Æ-„‡)] Iž‚ I# À‡@/6Ÿ€)] # €‡6B/6 ž„,„‡Ÿ€)e#  zÀyÄGIÄHÀ€SD¤IIÄHž‚@QM+ÜGžuÀHLž… I(� žƒ ž�ÿEÀ€ÄRG$ÄT# „€ IG'„ƒ €„„ „… „†  „‡Ÿ€)–ý„G¤LG& �‹ÐŒ+ÜGž{ L€‡6E/6Ã)]ÊG&G' €‘=„‘ # ÀK(ÄzÄK# @SBBI# ä€` �A# ¤LÀ‡@M@}怀ÿ”Ñ �1O€�A ‰€„ LÀ‡x Dž„ Mž�žƒ@|@Lć L# I8žå I)žâI3žàÄWIžÝÄWIþÚÄ€VþÆA # ÄWIžÑÄWIþÎèQWÀ€Î£QÔ„P¤L‚Ÿÿ=1A �¤Q‚›ÿ81A �¬Q1C‚•„Rþ» L€€„R€P# )pSLOC)µcGG„] þ…GÄWI ž™ÄWIž–ÄWIž“I'žŒI!žŠI#žˆI ž†I"ž„I0ž‡I1ž…ÄUÀ‡@O6Bž˜ÄU„Vž�ž’€YÄ? ž…žŒ žsž‰€U@ ÝDJÞQBÿž� # ¤Lü„G IG' +ÜGž{ LL ÿ„‘# ÿÿ/*DEOLNEDICOUN ?)¯↠„@ A ·Ÿ‚)¸'}mF1EBE5E3--E3E1# ¤LÀ‡@M@}怀ÿ”Ñ �1O€�A ‰€„ LÀ‡x Dž„ Mž�žƒ@|@Lć L# I8žå I)žâI3žàÄWIžÝÄWIþÚÄ€VþÆA # ÄWIžÑÄWIþÎèQWÀ€Î£QÔ„P¤L‚Ÿÿ=1A �¤Q‚›ÿ81A �¬Q1C‚•„Rþ» L€€„R€P# )pSLOC)µcGG„] þ…GÄWI ž™ÄWIž–ÄWIž“I'žŒI!žŠI#žˆI ž†I"ž„/ / COMPILE AND LINK THE 6502 FIRMWARE ASSEMBLER PROGRAM / FORTRAN ASM6502 JOB LINK ASM6502+FORTRAN+OS4 820806094101820806094101820806094101’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I