X-Git-Url: http://gitweb.hachti.de/?a=blobdiff_plain;f=sw%2Fos8%2Fv3d%2Fsources%2Fsystem%2Fdectapes%2Fdectape2%2FFORT.PA;fp=sw%2Fos8%2Fv3d%2Fsources%2Fsystem%2Fdectapes%2Fdectape2%2FFORT.PA;h=fde72a04749338c6f6ddecb3480cedb740627170;hb=7af5ad59491ddf2066641aef1e0025a337c0f247;hp=0000000000000000000000000000000000000000;hpb=919757fd611e482003ce51f366f6783cab73dea3;p=pdp8.git diff --git a/sw/os8/v3d/sources/system/dectapes/dectape2/FORT.PA b/sw/os8/v3d/sources/system/dectapes/dectape2/FORT.PA new file mode 100644 index 0000000..fde72a0 --- /dev/null +++ b/sw/os8/v3d/sources/system/dectapes/dectape2/FORT.PA @@ -0,0 +1,4535 @@ +/OS8 FORTRAN II COMPILER V5 +/ +/ +/ +/ +/ +/ +/ +// +/ +/ +/ +/ +/COPYRIGHT (C) 1971,1974,1975 +/DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. +/ +/ +/ +/THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A +/SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE INCLU- +/SION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE, OR ANT OTHER +/COPIES THEREOF, MAY NOT BR PROVIDED OR OTHERWISE MADE AVAILABLE +/TO ANY OTHER PERSON EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO +/AGREES TO THESE LICENSE TERMS. TITLE TO AND OWNERSHIP OF THE +/SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC. +/ +/ +/THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT +/NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL +/EQUIPMRNT COROPATION. +/ +/DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS +/SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. +/ +/ +/ +/ +/ +/ + / +/ SYMBOL TABLE FOR FORTRAN COMPILER (8K- PDP-8) +/ FOR USE WITH DISK/DECTAPE MONITOR SYSTEM +/ CHANGE LOCATION 'XFINI' TO A 'JMP I LFINI' THEN +/ASSEMBLE AND SAVE +/ .PAL FORT.PA +/ .PAL FPATCH.PA +/ +/ .LO FORT.BN$FPATCH.BN$ +/ +/ .SA SYS FORT +/ +/ + + FIELD 0 + *200 +INBUF, TEXT /PDP-8 FORTRAN DEC-08-A2B1-5A/ + + *1000 +BEGIN, PLS /INITIALIZATION ROUTINE + TLS + RFC + CDF 00 + TAD CM1300 /SET SYMBOL TABLE TO ZEROS (6300-7577 FIELD 1) + DCA INDX + TAD BSYMP + DCA TPTT +LP, DCA I TPTT + ISZ INDX + JMP LP + TAD CM60 + DCA INDX + TAD BTTAB + DCA TPTT + DCA I TPTT /ZERO OUT TEMPORARY TABLES IN FIELD 0 + ISZ INDX + JMP .-2 + CDF 10 + TAD MIN104 /ZERO EVERYTHING FROM ZERO TO 107 + DCA INDX + TAD CP6 + DCA TPTT +LPP, DCA I TPTT + ISZ INDX + JMP LPP + TAD TPT /MOVE DATA FROM TABLE TO FIELD 0 + DCA TPTT +REP, CDF 00 + TAD I TPTT + SNA /END OF FIELD 0 INITIALIZATION? + JMP DN /YES + DCA LOC + TAD I TPTT + CDF 10 + DCA I LOC + JMP REP +DN, TAD I TPTT /MOVE DATA FROM TABLE TO FIELD 1 + SNA /END FIELD 1 INITIALIZATION + JMP DNN /YES + DCA LOC + TAD I TPTT + DCA I LOC + JMP DN +DNN, CIF 10 + JMP I STRT +LOC, 0 +INDX, 0 +MIN104, L7-ASSIGN +CP6, L7-1 +CM1300, -1300 +CM60, -60 +BTTAB, ITTAB-1 +BSYMP, BSYM-1 /BOTTOM OF TEMPORARY SYMBOL TABLE +STRT, FORST /STARTING POINT AFTER INITIALIZATION +TPTT=10 +TPT, TABLE-1 +TABLE, +PUNCH + LTTYPE +15 + DOEND +45 + FTTAB +51 + ITTAB +47 + TSYM-3 +50 + TSYM +55 + -25 +56 + BSYM +57 + BSYM +71 + 5777 +74 + 3000 +MIKE4 + 3377 +POINTZ + 3377 +BASE + INBUF +BASE2 + INBUF+100 +SCOUNT + 0 +SCOUNT+1 + 0 +SCOUNT+2 + 0 +QONE + 0 +QONE+1 + 0 +QONE+2 + 0 +QONE+3 + 0 +QONE+4 + 0 +QONE+5 + 0 +QONE+6 + 0 +0 /THIS TERMINATES FIELD ZERO INITIALIZATION +2375 + 4000 +2376 + 4000 +2377 + 4000 +0 + + / ERROR MESSAGE TABLE AND TEXT + +ELIST, -ERR1-1; EMSG1 /ILLEGAL CONTINUATION + -ERR2-1; IE /ILLEGAL ARITHMETIC EXPRESSION + -ERR3-1; IE + -ERR6-1; IE + -ERR9-1; EMSG3 + -ERR10-1; EMSG4 + -ERR12-1; EMSG4 + -ERR14-1; EMSG4 + -ERR15-1; EMSG3 + -ERR16-1; EMSG5 + -ERR17-1; EMSG6 + -ERR18-1; SE /SYNTAX ERROR + -ERR28-1; SE + -ERR29-1; SE + -ERR30-1; EMSG8 /ILLEGAL VARIABLE + -ERR31-1; SE + -ERR35-1; SE + -ERR36-1; EMSG36 + -ERR37-1; CE + -ERR38-1; EMSG9 /ILLEGAL DO NESTING + -ERR39-1; SE + -ERR40-1; IE + -ERR41-1; EMSG10 /EXPRESSION TOO BIG + -ERR42-1; IE + -ERR43-1; EMSG11 /MIXED MODE + -ERR44-1; EMSG9 + -ERR47-1; SF /SUBR. OR FUNCT. STMT. NOT FIRST + -ERR48-1; SE + -ERR50-1; SE + -ERR51-1; SE + -ERR52-1;IE + -ERR53-1; EMSG12 /ILLEGAL SUBSCRIPT + -ERR54-1; EMSG13 /ILLEGAL EQUIVALENCING + -ERR59-1; SE + -ERR60-1; EMSG3 + 0; EMSG14 /COMPILER MALFUNCTION + +EMSG1, TEXT /ILLEGAL CONTINUATION/ +IE, TEXT /ILLEGAL ARITHMETIC EXPRESSION/ +EMSG3, TEXT /ILLEGAL STATEMENT/ +EMSG4, TEXT /ILLEGAL CONSTANT/ +EMSG5, TEXT /ILLEGAL STATEMENT NUMBER/ +EMSG6, TEXT /SYMBOL TABLE EXCEEDED/ +SE, TEXT /SYNTAX ERROR/ +EMSG8, TEXT /ILLEGAL VARIABLE/ +EMSG9, TEXT /ILLEGAL OR EXCESSIVE DO NESTING/ +EMSG10, TEXT /ARITHMETIC EXPRESSION TOO COMPLEX/ +EMSG11, TEXT /MIXED MODE EXPRESSION/ +EMSG12, TEXT /EXCESSIVE SUBSCRIPTS/ +EMSG13, TEXT /ILLEGAL EQUIVALENCING/ +EMSG14, TEXT /COMPILER MALFUNCTION/ +CE, TEXT /UNBALANCED QUOTES/ +SF, TEXT /SUBR. OR FUNCT. STMT. NOT FIRST/ +EMSG36, TEXT /ARRAY TOO LARGE/ + ITTAB=710 +FTTAB=ITTAB+30 +DOEND=2377 +BSYM=6300 +TSYM=7600 + +/ THE STATEMENT TYPE TABLE FOLLOWS + *2600 +STYPE, 7361 /-DO + 0000 + LDO + 6672 /-IF + 0000 + LIF + 7061 /-GO + 5361 /-TO + LGOTO + 7477 /-CA + 6364 /-LL + CAL + 5573 /-RE + 5353 /-TU + LRET + 7461 /-CO + 6154 /-NT + LCONT + 5454 /-ST + 6060 /-OP + LSTOP + 5777 /-PA + 5255 /-US + LPAUSE + 5573 /-RE + 7674 /-AD + LREAD + 5056 /-WR + 6654 /-IT + LWRIT + 7161 /-FO + 5563 /-RM + LFRMAT + 7262 /-EN + 7400 /-D + LLAST + 7461 /-CO + 6263 /-MM + LCOMON + 7367 /-DI + 6273 /-ME + LDIMEN + 7257 /-EQ + 5267 /-UI + + EQUI + -0611 /-FI + -1611 /-NI + LFIN +XXSUBR, 5453 /-SU + 7556 /-BR + LSUB + 7153 /-FU + 6175 /-NC + LFUNC + 0000 /THIS IS THE END OF LIST +AREA1, 0 +AREA2, 0 + +/ THE PRECEDENCE TABLE FOLLOWS, NON-ZERO PREC. OPERATORS APPEAR + -45 / PREC('%') = 7 NOTE: '%' REPLACES '**' + 700 + -52 / PREC('*') = 5 + 500 + -57 / PREC('/') = 5 + 500 + -53 / PREC('+') = 4 + 400 + -55 / PREC('-') = 4 + 400 + -75 / PREC('=') = 1 + 100 + -74 / PREC('<') = 1 NOTE: '<' IMPLIES SUBSCRIPTED ASSIGNMENT + 100 + 1 /THIS IS THE END OF THE TABLE +THOU, -1750 + -144 + -12 + -1 + +/ THE PERMANENT SYMBOL TABLE BEGINS HERE + *6000 + 1501 /MAIN + 1116 + 0001 + 0601 /FAD + 0400 + 0001 + 2324 /STO + 1700 + 0001 + 0623 /FSB + 0200 + 0001 + 0615 /FMP + 2000 + 0001 + 0604 /FDV + 2600 + 0001 + 1520 /MPY + 3100 + 0001 + 0411 /DIV + 2600 + 0001 + 2205 /READ + 0104 + 0001 + 2722 /WRITE + 1124 + 0501 + 1117 /IOH + 1000 + 0001 + 5060 /(0 + 0000 + 0001 + 1215 /JMP + 2000 + 0001 + 1617 /NOP + 2000 + 0001 + 0516 /ENTRY + 2422 + 3101 + 0501 /EAP + 2000 + 0001 + 2001 /PAUSE + 2523 + 0501 +OPTADI, 2401 /TAD I + 0440 + 1101 +OPTAD, 2401 /TAD + 0400 + 0001 +OPDCA, 0403 /DCA + 0100 + 0001 +OPJMPI, 1215 /JMP I + 2040 + 1101 + 2205 /RETRN + 2422 + 1601 + 0320 /CPAGE + 0107 + 0501 +OPSNA, 2316 /SNA + 0100 + 0001 + 2320 /SPC + 0300 + 0001 + 0301 /CALL + 1414 + 0001 + 0313 /CKIO + 1117 + 0001 + 1014 /HLT + 2400 + 0001 +OPCLA, 0314 /CLA + 0100 + 0001 + 0614 /FLOT + 1724 + 0001 + 1106 /IFAD + 0104 + 0001 + 0311 /CIA + 0100 + 0001 + 0310 /CHS + 2300 + 0001 + 0611 /FIX + 3000 + 0001 + 1123 /ISTO + 2417 + 0001 + 2001 /PAGE + 0705 + 0001 +BLCK, 0214 /BLOCK + 1703 + 1301 + 0516 /END + 0400 + 0001 + 1401 /LAP + 2000 + 0001 + 0317 /COMMN + 1515 + 1601 + 1123 /ISZ + 3200 + 0001 + 2325 /SUBSC + 0223 + 0301 +DUMMY, 0425 /DUMMY + 1515 + 3101 + 0122 /ARG + 0700 + 0001 + 0314 /CLEAR + 0501 + 2201 + 1111 /IIPOW + 2017 + 2701 + 0611 /FIPOW + 2017 + 2701 + 1106 /IFPOW + 2017 + 2701 + 0606 /FFPOW + 2017 + 2701 + 0403 /DCA I + 0140 + 1101 + 0103 /ACH + 1000 + 0001 +OPEN, 1720 /OPEN + 0516 + 0001 + 0522 /ERROR + 2217 + 2201 + 1116 /INC + 0300 + 0001 +FORTR, 0617 /FORTR + 2224 + 2201 +OPCMA, 0315 /CMA + 0100 + 0001 +OPIAC, 1101 /IAC + 0300 + 0001 +EXIT, 0530 /EXIT + 1124 + 0001 + FIELD 1 + *0 +FIRSTF, 1 + *7 +L7, 0 +L10, 0 +L11, 0 +L12, 0 /LAST LINE'S CONTENTS FOR OPTOMIZATION + 0 +L14, 0 +L15, 2377 /POINTER INTO DOEND LIST +L16, 0 +L17, 0 +L20, 0 /FLAG, NON-ZERO IF '=' SEEN +L21, 0 +L22, 0 /SUBSCRIPT NESTING LEVEL +L23, 0 /USED BY "DUMARG" AND "IOHAR" PATCH +L24, 0 /LINE POINTER +L25, 0 /HIGHEST SUBSCRIPT TEMP USED +L26, 0 /USED FOR DIMENSION INFORMATION + 0 /UNUSED +L30, 0 /FOLLOWING EIGHT LOCS ARE USED BY ENTITY +L31, 0 +L32, 0 +L33, 0 +L34, 0 +L35, 0 +L36, 0 +L37, 0 +L40, 0 /CONTAINS THE CURRENT TRIPLE NUMBER +L41, 0 /THIS IS THE POINTER INTO THE PUSH DOWN LIST +L42, 0 /THESE TWO LOCATIONS ARE USED BY THE TRIPLE PROCESSOR +L43, 0 / +L44, 0 /CONTAINS ONE FOR RIGHT OF EQUALS, ZERO FOR LEFT +L45, FTTAB /CONTAINS LARFEST FLOATING POINT TEMPORARY NUMBER USED +L46, 0 /CONTAINS NUMBER OF THE TRIPLE CURRENTLY IN THE AC +L47, 7575 /CONTAINS THREE LESS THAN START OF FCON TABLE +L50, 7600 /CONTAINS START OF DIMENSION TABLE +L51, ITTAB /CONTAINS LARGEST INTEGER TEMPORARY NUMBER USED +L52, 0 /CONTAINS ONE IF RETURN FROM GENER IS DESIRED FOR BALANCE +L53, 0 /CONTAINS THE LAST CREATED LABEL +L54, 0 /CONTAINS THE LABEL FOR THE CURRENT STATEMENT +L55, -25 /CONTAINS THE MAXIMUM ALLOWABLE NUMBER OF UNENDED DOS +L56, 6300 /CONTAINS BEGINNING OF SYMBOL TABLE +L57, 6300 /CONTAINS END OF SYMBOL TABLE +L60, 0 /"INDIRECT =" FLAG FOR S.S LEFT OF EQUALS SIGN +L61, 0 /NON-ZERO IF LAST STMT READ IS A COMMENT +L62, 0 /NEXT FOUR LOCATIONS USED BY GENER AND ENTITY +L63, 0 /CONTAINS THE CURRENT OPERATOR +L64, 0 /POINTS TO THE LAST OPERATOR IN THE STACK +L65, 0 /CONTAINS THE PRECEDENCE OF THE CURRENT OPERATOR +BPAREN, 0 /PARENTHESIS COUNTER +L67, 0 /ONE FOR FUNCTION AND ZERO FOR SUBROUTINE +L70, 0 /CONTAINS POINTER TO SUBPROGRAM NAME +L71, 5777 /BEGINNING OF PUSHDOWN LIST +L72, 0 /SET TO ONE IF SUBSCRIPT IS ENCOUNTERED +L73, 0 / +L74, 3000 /BEGINNING OF ERASABLE LOCATIONS USED FOR PARAMETERS +L75, 0 /SET TO ONE SUPPRESS /OUTPUT FROM COMPILER +L76, 0 / +L77, 0 /CONTAINS ADDRESS OF LAST ENTRY INTO FCON OR SYMBOL TABLE + /THE FOLLOWING THREE LOCS ARE USED BY THE + /LITERAL COLLECTER +COUNT2, 0 /NUMBER OF DIGITS TO RIGHT OF DECIMAL POINT +ESIGN, 0 /0 MEANS POSITIVE EXPONENT, 1 MEANS NEGATIVE +FPSW, 0 /0 MEANS INTEGER CONSTANT, 1 MEANS FLOATING POINT +MIKE4,MA, 3377 +MIKE8,TOTAL, 0 +INTA, 0 +INTB,MIKE7, 0 +SNUM,MB, 0 +POINTZ, 3377 +CHK, 0 +IMPDO, 0 /"IMPLIED DO-LOOP IN PROGRESS" FLAG +KOUNT, 0 +ASSIGN, LASIGN /ROUTINE TO PROCESS ASSIGNMENT STATEMENTS +PUTCH, LPUTCH /ROUTINE TO PUT A CHARACTER BACK IN THE INPUT BUFFER +PROP, LPROP /PRINTS OPCODES +PRCRL, LPRCRL /PRINTS CREATED LABELS +PRINT, LPRINT /PRINTS ONE ASCII CHAR +P2, LP2 /PRINT TWO PACKED ASCII CHARS +GETCH, LGETCH /GETS ONE CHARACTER OUT OF THE INPUT BUFFER +LUNCH, LLUNCH /PRINTS ERROR COMMENTS +MODE, LMODE /DETERMINES THE MODE OF THE ARGUMENT +LOOK, LLOOK /CHECKS FOR THE REST OF THE INPUT STATEMENT +ZZZ, LZZZ /PRINTS OUT STATEMENT LABELS +ENTITY, LENTT /GETS THE NEXT LOGICAL INPUT PARAMETER +SYMTAB, LSYMTB /ENTERS SYMBOLS INTO THE SYMBOL TABLE +DUMARG, LDMARG /SEES IF PARAMETER IS A DUMMY ARG OR SUBSCRIPT +PRSYM, LPRSYM /PRINTS SYMBOLS +CREATE, LCREAT /CREATES LABELS +PROTAC, LPRTAC /PRINTS CONTENTS OF AC IN OCTAL +PLAB, LPLAB /PRINTS LABELS +PIFF, LPIFF /PUTS OUT AN IFF FOR THE CONTENTS OF THE AC +TRIPL, LTRIPL /PROCESSES THE TRIPLES GENERATED FROM AN EXPRESSION +GENER, LGENER /GENERATES THE TRIPLES +LCHNG, CHNG /TEST FOR DUMMY ARG AND REPLACE +CLAB, LCLAB /HANGS A CREATED LABEL ON THE NEXT LINE +STORE, LSTORE /STORES THE CONTENTS OF THE AC +FPROP, LFPROP /PUT OUT CALLS TO F.P. ROUTINES +ZER, LZER +DUM, LDUM /PROCESSES OCCURRANCES OF DUMMY ARGUMENTS IN LISTS +DIM, LDIM /LOOKS UP DIMENSION INFORMATION ON VARIABLES +PUNCH, LTTYPE /ADDRESS OF CURRENT OUTPUT ROUTINE +C2, 2 +C3, 3 + C40, 40 +C7240, 5440 /THIS WAS COLON-SPACE NOW ITS COMMA-SPACE +C77, 77 +CM40, -40 +CM4046, -4046 +CM50, -50 +CM51, -51 +CM54, -54 +CM2, -2 +CM3, -3 +CHECK, LCHECK +SMODE, LSMODE +BSS, LBSS +ARG, LARG +C54, 54 +BASE, INBUF +BASE2, INBUF+100 +C4000, 4000 +GNB, LGNB + *177 +START, CLA /COME HERE AT BEGINNING OF EACH STMT + DCA FIRSTF +START1, TAD IMPDO + SZA CLA + JMP ERR1 /IF IMPDO<>0 THEN WE MUST HAVE SCREWED UP ON + /CONTINUATIONS (I THINK) + ISZ CHK /IS THERE A STMT IN THE BUFFER? + JMP .+3 + JMS I SWAP /YES, SWITCH BUFFER POINTERS + JMP .+3 + TAD BASE + JMS I RCD /NO, READ THE NEXT LINE +TEST, TAD L15 + TAD CM3 + DCA L16 /SET UP XR FOR DO TERMINATION TEST + TAD L54 + CIA + TAD I L16 + SZA CLA /ARE WE TERMINATING A DO? + JMP ATRY + JMS LDNEXT /TERMINATE DO LOOP + JMP TEST /SEE IF THERE IS ANY MORE... +ATRY, TAD L61 + SZA CLA /A COMMENT? + JMP CMNT + TAD CHK + SZA CLA /ILLEGAL CONTINUATION? +ERR1, JMS I LUNCH + JMS I STMT /GET THE STMT NR... + TAD L32 + SNA + JMP .+4 /NO STMT NUMBER + CIA + TAD L12 + SZA CLA /CAN WE OMIT A TERMINAL JMP? + JMS I PRINT + DCA L24 +FLST, JMS LIST /PUNCH SOURCE STMT + JMS I WIPE /ZERO THE SUBSCRIPT TEMP. TABLE + TAD L32 + DCA L54 + TAD CM2 + DCA L64 + SKP +ACA, DCA I BAREA1 + JMS I GETCH + JMP ALPH + NOP + JMS I PUTCH /PUT CHARACTER BACK +ALPH, RTL CLL + RTL + RTL + DCA L65 + JMS I GETCH + JMP ALPH2 + NOP + JMS I PUTCH /PUT CHARACTER BACK +ALPH2, TAD L65 + ISZ L64 + JMP ACA + DCA I BAREA2 + DCA CHK + TAD SSTYP /COMPARE THESE CHARS WITH DISPATCH TABLE + DCA L17 +TRY, TAD I L17 + SNA /END OF THE TABLE? + JMP I ASSIGN /YES, MUST BE ARITHMETIC STMT + TAD I BAREA1 + SZA CLA + JMP NOHIT2 + TAD I BAREA2 + TAD I L17 + SZA CLA + JMP NOHIT1 + TAD I L17 /FOUND A MATCH, GO TO PROPER HANDLER... + DCA L30 + JMP I L30 +NOHIT2, ISZ L17 +NOHIT1, ISZ L17 + JMP TRY /DOESN'T MATCH, TRY AGAIN + +LDNEXT, 0 + TAD L15 /RESET THE DO END POINTER + TAD CM3 + DCA L15 + TAD L15 + IAC + DCA L16 + CMA + TAD L55 + DCA L55 + JMS I PROP /PUNCH 'JMP