ASMB,R,L,C HED RTE-M FORTRAN MAIN NAM FTN 92064-16045 REV.1650 761118 SUP * * * ********************************************************* * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1976. * * * * * * ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM MAY BE * * * PHOTOCOPIED, REPRODUCED, OR TRANSLATED TO ANOTHER * * * PROGRAM LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF * * * HEWLETT-PACKARD COMPANY. * * ********************************************************* * * RTE-M FORTRAN IS SCHEDULED USING THE FOLLOWING FORMAT: * * ON, * RU,FTN [,FI,LE,NM [,NN]] * [,LU ] * * WHERE: * * FI,LE,NM IS THE NAME OF AN ANSWER FILE CONTAINING ANSWERS TO * FORTRAN QUERIES. * * LU IS THE LOGICAL UNIT NUMBER OF A CONSOLE DEVICE WHICH * FORTRAN WILL COMMUNICATE WITH FOR ANSWERS TO ITS QUERIES. * DEFAULT IS THE LU FORTRAN WAS SCHEDULED FROM. * * NN IS THE NUMBER OF LINES PER PAGE(056? JMP FTN11 YES.USE 56 LDB PBUFF+3 NO.USE PARAMETER RSS FTN11 EQU * LDB .56 SET LINES/PAGE=56 CMB,INB NEGATE LINES PER PAGE STB LINES AND SAVE IN COMMON LDA .M24 CLEAR STA VAL COMMON CLA AREA LDB PNT07 USED FTN12 EQU * FOR THE STA B,I GTFIL INB ARRAYS ISZ VAL JMP FTN12 SKP LDA PNT06 INITIALIZE FMP ERROR STA NAME FILE NAME POINTER JSB GTFIL GET INPUT, DEF FTN00 OUTPUT,LIST, DEF GOPTS AND SCRATCH DEF ERRS FILES DEF PBUFF DEF AI DEF AO DEF AL DEF * DEF AS1 FTN00 EQU * SSA ERROR OCCUR? JMP FMPER YES.GO REPORT IT LDA B410 INITIALIZE STA OPTS1 OPEN LDA B210 OPTIONS STA OPTS2 LDA B110 STA OPTS3 LDA PNT02 INITIALIZE FMP ERROR STA NAME FILE NAME POINTER JSB OPEN ATTEMPT DEF FTN01 TO OPEN DEF IDCB0 INPUT DEF ERRS FILE PNT02 DEF AI+1 DEF OPTS1 DEF AI+5 DEF AI FTN01 EQU * SSA ERROR OCCUR? JMP FMPER YES.GO REPORT IT LDA PNT03 INITIALIZE FMP ERROR STA NAME FILE NAME POINTER JSB OPEN ATTEMPT TO DEF FTN08 OPEN THE OUTPUT DEF IDCB2 FILE USING THE DEF ERRS LIST FILE DCB PNT03 DEF AO+1 DEF OPTS3 DEF AO+5 DEF AO FTN08 EQU * SSA,RSS ERROR OCCUR? JMP FTN09 NO.GO ON TO OPEN LIST(CLOSE OUTPUT) LDA ERRS YES.IS CMA,INA IT FMP CPA B6 ERROR -006? RSS YES JMP FMPER NO.GO REPORT IT SKP JSB CREAT ATTEMPT TO DEF FTN10 CREATE THE DEF IDCB2 OUTPUT FILE AS DEF ERRS A TYPE 5 FILE DEF AO+1 USING THE LIST DEF .20 FILE DCB DEF .5 DEF AO+5 DEF AO FTN10 EQU * SSA ERROR OCCUR? JMP FMPER YES.GO REPORT IT FTN09 EQU * LDA PNT04 INITIALIZE FMP ERROR STA NAME FILE NAME POINTER JSB OPEN ATTEMPT DEF FTN02 TO OPEN DEF IDCB2 LIST FILE DEF ERRS (AND CLOSE THE PNT04 DEF AL+1 OUTPUT FILE) DEF OPTS2 DEF AL+5 DEF AL FTN02 EQU * SSA,RSS ERROR OCCUR? JMP FTN03 NO.GO ON TO SCRATCH FILE LDA ERRS YES.IS CMA,INA IT FMP CPA B6 ERROR -006? RSS YES JMP FMPER NO.GO REPORT FMP ERROR JSB CREAT ATTEMPT TO DEF FTN04 CREATE THE DEF IDCB2 LIST FILE DEF ERRS AS A TYPE DEF AL+1 4 FILE DEF .64 DEF .4 DEF AL+5 DEF AL FTN04 EQU * SSA ERROR OCCUR? JMP FMPER YES.GO REPORT IT SKP FTN03 EQU * LDA PNT05 INITIALIZE FMP ERROR STA NAME FILE NAME POINTER JSB OPEN ATTEMPT DEF FTN05 TO OPEN DEF IDCB3 SCRATCH FILE DEF ERRS PNT05 DEF AS1+1 DEF OPTS3 DEF AS1+5 DEF AS1 FTN05 EQU * SSA,RSS ERROR OCCUR? JMP FTN06 NO.GO ON LDA ERRS YES.IS CMA,INA IT FMP CPA B6 ERROR -006? RSS YES JMP FMPER NO.GO REPORT FMP ERROR JSB CREAT ATTEMPT TO DEF FTN07 CREATE THE DEF IDCB3 SCRATCH FILE DEF ERRS AS A TYPE DEF AS1+1 5 FILE DEF .20 DEF .5 DEF AS1+5 DEF AS1 FTN07 EQU * SSA ERROR OCCUR? JMP FMPER YES.GO REPORT IT FTN06 EQU * LDA PNT06 INITIALIZE FMP ERROR STA NAME FILE NAME POINTER JSB SEGLD LOAD SEGMENT 1 AND DEF FMPER EXECUTE IT FOR PASS 1 DEF SEG1 EXECUTION,ELSE BRANCH DEF ERRS TO ERROR ROUTINE FMPER * * EXIT THE MAIN TO GO TO EXECUTION OF PASS 1. INPUT,LIST * AND SCRATCH FILES ARE OPEN. * HED RTE-M FORTRAN MAIN ROUTINES * F M P E R * * REPORTS THE FMP ERROR DEFINED BY THE NEGATIVE NUMBER * IN COMMON LOCATION "ERRS" AND TERMINATES FTN. EXPECTS * A POINTER TO THE FILE NAME IN COMMON LOCATION "NAME". * FMPER EQU * LDA B6 INITIALIZE CONVERSION ROUTINE LDB PNT01 TO OUTPUT 6 CHARACTERS EVEN JSB XPUTI THOUGH IT WILL ONLY OUTPUT 5 LDA ERRS CONVERT ERROR NUMBER CMA,INA TO ASCII JSB XDCAS IN ERROR MESSAGE LDA NAME,I MOVE FILE STA FNAME NAME INTO ISZ NAME ERROR LDA NAME,I MESSAGE STA FNAME+1 ISZ NAME LDA NAME,I STA FNAME+2 JSB IMESS REPORT FMP DEF TERM ERROR ON DEF .2 SESSION DEF ERR CONSOLE DEF .13 TERM EQU * JSB IMESS WRITE "$FTN- DEF END ABORTED" ON DEF .2 ON SESSION DEF ABORT CONSOLE DEF B6 END EQU * JSB EXEC TERMINATE DEF *+2 FTN DEF B6 SKP * X P U T I/X P U T * * PACK CHARACTERS IN DESTINATION BUFFER: * * INIT CALL: INIT DESTINATION BUFFER * LDA * LDB * JSB XPUTI * * XPUT CALL: STUFF A CHAR * LDA * JSB XPUT * P+1 * P+2 * XPUTI NOP STA XDLNG STB XDADR CLA STA XDCNT JMP XPUTI,I * XPUT NOP LDB XDCNT CPB XDLNG EOB ? JMP XPUT,I YES, LEAVE STA XPUTI LDA XDADR,I GET CURRENT WORD SLB,RSS EVEN COUNT ? ALF,ALF YES, POSITION AND M400 CLEAR EXCESS IOR XPUTI MERGE CHARACTER SLB,RSS EVEN COUNT ? ALF,ALF YES, POSITION STA XDADR,I SLB,INB ODD COUNT ? ISZ XDADR YES, BUMP ADDRESS STB XDCNT BUMP COUNT LDA XPUTI ISZ XPUT JMP XPUT,I SKP * X C V A S/X D C A S * * INTEGER TO ASCII CONVERSION ROUTINES. FUNCTIONALLY * SIMILAR TO HP PART # 25311-80045. * * XCVAS CALL: TO ASCII * * LDA * LDB <+/- RADIX> * +RADIX: UNSIGNED 16 BIT INTEGER * -RADIX: SIGNED 15 BIT INTEGER * CLE * CCE * JSB XCVAS * P+1 * P+2 * * XDCAS CALL: DECIMAL TO ASCII, UNSIGNED * * GENERATE LEADING ZEROES. * LDA * JSB XDCAS * P+1 * * R.FAJARDO, 731214 * XDCAS NOP LDB .10 RADIX=10, UNSIGNED # CCE GENERATE LEADING 0'S JSB XCVAS NOP JMP XDCAS,I * XCVAS NOP SEZ SUPPRESS LEADING 0'S ? ISZ LDING NO, GIVE THEM TOO STA VAL STB RADIX SSB,RSS SIGNED ? JMP XCV2 CMB,INB YES, FORCE STB RADIX + RADIX SSA,RSS + VALUE? JMP XCV2 CMA,INA NO, FORCE + STA VAL LDA B55 & GIVE "-" JSB XPUT JMP XCVAS,I EOB, EXIT P+1 SKP XCV2 LDA RADIX FIND LARGEST MPY RADIX DIGIT POSITION SZB,RSS JMP *-3 DIV RADIX SAVE AS DIVISOR STB FDIG XCV3 STA DIVSR LDA VAL EXTRACT NEXT DIGIT CLB DIV DIVSR STB VAL SZA ISZ LDING WORRY ABOUT LEADING 0'S LDB LDING SZB,RSS JMP XCV4 IGNORE THEM ISZ FDIG SSA IN CASE OF -DIVISOR CMA,INA ADA B60 MAKE ASCII CHARACTER JSB XPUT JMP XCVAS,I EOB, LOSE EXIT XCV4 CLB LDA DIVSR FIND NEXT DIGIT POSITION DIV RADIX SZA JMP XCV3 STA LDING LDA FDIG SZA JMP *+4 LDA B60 JSB XPUT JMP XCVAS,I ISZ XCVAS JMP XCVAS,I HED CONSTANTS,LINKS,STORAGE & MESSAGES .10 DEC 10 .13 DEC 13 .2 DEC 2 .20 DEC 20 .4 DEC 4 .5 DEC 5 .56 DEC 56 .64 DEC 64 .M24 DEC -24 .M57 DEC -57 ABORT ASC 6,$FTN-ABORTED B110 OCT 110 B210 OCT 210 B410 OCT 410 B55 OCT 55 B6 OCT 6 B60 OCT 60 BNAME ASC 3, BLANK FILE NAME DIVSR NOP DIVISOR FOR XDCAS ERR ASC 6,FMP ERROR - ERR# ASC 2,0000 5 DIGIT FMP ERROR OCT 30040 CODE STUFFED HERE ASC 1, FNAME ASC 3, FILE NAME STUFFED HERE FDIG NOP HOLDS DIGITS FOR XDCAS GOPTS OCT 425 GTFIL OPTIONS LDING NOP LEADING ZEROS FOR XDCAS M400 OCT -400 PBUFF BSS 5 BUFFER FOR RMPAR PARAMETERS PNT01 DEF ERR# LINK TO FMP ERROR # IN ERROR MSG. PNT06 DEF BNAME LINK TO BLANK FILE NAME PNT07 DEF AI LINK TO 1ST GTFIL ARRAY IN COMMON RADIX NOP NUMBER BASE FOR XDCAS SEG1 ASC 3,FTN1 VAL NOP ACCUMULATOR FOR XDCAS XDADR NOP DESTINATION BUFFER ADDRESS XDCNT NOP DESTINATION CHARACTER COUNT XDLNG NOP DESTINATION CHARACTER LENGTH END FTN0