File: PLSUBS.RA of Tape: Various/Decus/decus-4
(Source file text)
/ PLSUBS - SUBROUTINES USED BY "CALCOM", THE FORTRAN / PROGRAM WHICH REPRODUCES SCREEN DISPLAYS SAVED BY / "TKPLOT" ON A LOCAL INCREMENTAL (CALCOMP) PLOTTER. / THIS MODULE CONTAINS TWO SUBROUTINES, "PLINIT" AND / "PLREED". "PLINIT" IS CALLED WITH TWO ARGUMENTS, / THE ARRAY INTO WHICH "PLREED" WILL STORE THE / VALUES RETRIEVED FROM THE FILE, AND A VARIABLE / WHICH INDICATES END OF FILE. THESE ADDRESSES / ARE ACQUIRED AND STORED, THE LENGTH OF THE INPUT / FILE IS GOTTEN FROM THE DSRN TABLE, NEGATED, -1 IS / ADDED (BECAUSE WE PRE-INCREMENT) AND STORED IN XR4 / SO "PLREED" CAN DETECT END OF FILE. / "PLREED" CHECKS FOR END OF FILE; IF FOUND, IT / SETS THE INDICATOR VARIABLE TO ZERO AND RETURNS; / IF NOT, IT READS THE NEXT BLOCK OF 85 "FLOATING / POINT" VALUES FROM THE FILE. EACH OF THESE VALUES / IS REALLY THREE 12 BIT WORDS, SO THEY ARE / CONVERTED TO THREE WORD FLOATING POINT VALUES AND / STORED IN THE 255 LOCATIONS OF THE ARRAY. SECT PLINIT ENTRY PLREED EXTERN #RUO /UNFORMATTED READ LOCS EXTERN #RSVO EXTERN #RENDO JA #ST /GO START EXECUTION #XR, ORG .+10 /INDEX REGISTERS NAME, TEXT +PLINIT+ /NAME FOR TRACEBACK #RET, SETX #XR SETB #BASE JA .+3 #BASE, ORG .+6 /BASE PAGE IAR, ORG .+3 /ARG ADDRESSES ENDFIL, ORG .+3 NAME2, TEXT +PLREED+ /FOR TRACEBACK ORG #BASE+30 FNOP /RETURN TO US JA #RET FNOP /RETURN TO CALLER #GOBAK, 0;0 #ARGS, ORG .+3 #LIT9, F 9.0 /LITERAL #RTN, BASE #BASE JA #GOBAK #ST, STARTD 0210 /GET RETURN FSTA #GOBAK,0 /STORE 0200 /GET ARG POINTER SETX #XR /SET OUR INDEX REGS SETB #BASE /AND BASE PAGE LDX 0,1 FSTA #BASE /STORE ARG POINTER FSTA #ARGS FLDA% #BASE,1+ /GET AND STORE FSTA IAR / ARG ADDRESSES FLDA% #BASE,1+ FSTA ENDFIL STARTF SETX 04363 /GET FILE LENGTH XTA 0 /FROM DSRN TABLE SETX #XR FNEG /NEGATE ATX 4 /STORE IN XR4 ADDX -1,4 /ADD -1 FLDA NAME2 /CHANGE TRACEBACK FSTA NAME /NAME JA #RTN /RETURN PLREED, STARTD /ENTRY 0210 /GET RETURN FSTA #GOBAK,0 /STORE 0200 /GET NEXT LOCN SETX #XR /SET OUR INDEX REGS SETB #BASE /AND BASE PAGE FSTA #BASE STARTF /NO ARGS JXN NXTBUF,4+ /JUMP UNLESS FCLA /END OF FILE FSTA% ENDFIL /STORE ZERO JA #RTN /RETURN NXTBUF, LDX -1,3 /ARRAY INDEX LDX -125,2 /COUNTER (-85) TRAP3 #RUO /INITIALIZE READ JA #LIT9 /I/O UNIT 9 READ1, TRAP3 #RSVO /GET ONE VALUE FSTA #XR+5 /STORE IN XR'S XTA 5 /CONVERT 3 12-BIT TO FSTA% IAR,3+ /3 FLOATING POINT & XTA 6 /STORE IN ARRAY FSTA% IAR,3+ XTA 7 FSTA% IAR,3+ JXN READ1,2+ /REPEAT UNLESS DONE TRAP3 #RENDO /TERMINATE READ JA #RTN /RETURN