AXR$. . ARCTEQUFS . . AINFOEQUFS . SSUPS EQU 0 . RCTSSUPS SCBSP EQU 1 . RCTSCBSP SJCBSP EQU 2 . RCTSJCBSP SCPU EQU 3 . RCTSCPU SCCER EQU 4 . RCTSCPU SAPGS EQU 5 . RCTSAPGS SACDS EQU 6 . RCTSACDS SCDRD EQU 7 . RCTSCDRD SLINE EQUF 7,,W . RCTSLINE (T1) R$B2 EQUF 8,,S1 . R$DT BITS 2 R$RD EQUF 8,,S2 . R$DT READ BITS P$B2 EQUF 8,,S3 . P$DT BITS 2 PSIZE EQUF 8,,H2 . LAST PROGRAM SIZE SSPGS EQUF 9,,H2 . RCTSSPGS . BRK EQUF 10,,H1 . RCTSTDBRK . ABRK EQUF 10,,H2 . RCTACTBRK IPERC EQUF 11,,W . RCTIPERC (T1) RT EQUF 11,,S3 . REAL TIME COUNT GENSEC EQUF 11,,H2 . BBA CEASE EQUF 12,,S1 . RCEASE PMDFL EQUF 12,,S2 . RPMDFL DI EQUF 12,,S3 . RCTDI TAL EQUF 12,,S4 . CTAL LTAL EQUF 12,,S5 . CLTAL QHL EQUF 12,,S6 . CQHL ISUPS EQU 13 . RCTISUPS ICBSP EQU 14 . RCTICBSP IJCBSP EQU 15 . RCTIJCBSP ICPU EQU 16 . RCTICPU ICCER EQU 17 . RCTICPU IAPGS EQU 18 . RCTIAPGS IACDS EQU 19 . RCTIACDS ICDRD EQU 20 . RCTICDRD ILINE EQUF 20,,W . RCTILINE (T1) PROG EQU 21 . RCTPROG PSTRT EQU 23 . RCTPSTRT ISPGS EQU 24 . RCTISPGS RCTBITS EQU 25 . NEXT WORD PRIOR EQUF 25,,S1 . RPRIOR TYPE EQUF 25,,S2 . RTYPE TCT EQUF 25,,S3 . RTCT ACQE EQUF 25,,H2 . RCQLNK RUNID EQU 26 . RRUNID MAXS EQU 27 . RCTMAXS MAXP EQU 28 . RCTMAXP MAXC EQU 29 . RCTMAXC RSTRT EQU 30 . RCTRSTRT ACNT EQU 31 . RCTACNT PROJ EQU 33 . RCTPROJ ROPTS EQU 35 . RCTROPTS CQEBITS EQU 36 . NEXT WORD ABORT EQUF 36,,S1 . CABORT DAFLG EQUF 36,,S2 . CQFLG PCTFLG EQUF 36,,S3 . CRS ARCT EQUF 36,,H2 . QRCT APCT EQU 37 . QPCT SITEID EQU 38 . AINFOEQUFS* PROC *0,0 . END . CQE EQUF 4,,H2 . CQE POINTER AP EQU *013 . SUPS AQ EQU *014 . CBSUPS CC EQU *026 . CPU CI EQUF *027,,H1 . REAL TIME COUNT NX EQU *0206 . CC & ER IOSUPS EQU *0174 . TAPE SECONDS IK EQUF *0166,,H2 . PROGRAM SIZE AR1 EQUF *012,,H1 . LINK TO JPL BUFFER PCTCBSUPS EQU *27 . JPL BUFFER, JPL SUPS PCTR$DT EQUF *12,,H2 . JPL BUFFER , LINK TO R$DT IMGCNT EQU *012 . R$DT CARDS READ RDTLEN EQU 017 . LENGTH OF R$DT STDBRK EQUF *4,,H1 . P$DT SINCE BREAKPOINT ACTBRK EQUF *4,,H2 . P$DT SINCE BREAKPOINT CURLINE EQUF *5,,W . P$DT LINE NUMBER (REALLY T2) STDPGS EQU *011 . P$DT STANDARD PAGES ACTPGS EQU *012 . P$DT ACTUAL PAGES ACTCDS EQU *013 . P$DT ACTUAL CARDS SCTB2 EQUF *2,,H2 . P$DT BITS RDBITS EQUF *4,,S2 . R$DT BITS (T1) . PBREAK EQU 004 . BREAKPOINTED CSMODE EQU 020 . CONTROL MODE . MAXBDI EQU 0500 . EXECDBANK EQU (MAXBDI+4)*2 . BDI OF EXEC DBANK /. CTAL EQUF *1,,S2 . CURRENT QUEUE PRIORITY CLTAL EQUF *1,,S3 . LAST OR PERMANANT QUEUE PRIORITY CBLP EQUF *4,,H2 . LINK TO BANK LOAD PACKETS CABORT EQUF *5,,S1 . PROGRAM IS ABORTED FLAG ECABT EQU 01 . 'E' KEYIN OR @@X T ABORT XCABT EQU 02 . 'X' KEYIN ABORT CQFLG EQUF *5,,S2 . SET IF CQE IS ON DA'S QUEUES CRS EQUF *5,,S3 . STATE OF PCT QRCT EQUF *5,,H2 . ADDRESS OF RCT QPCT EQU *6 . ADDRESS OF PCT (IF INCORE) CQHL EQUF *10,,S5 . HIGHEST LEVEL ALLOWED . RCEASE EQUF *0,,S1 . NON-ZERO MEANS HOLD RUN RPMDFL EQUF *0,,S2 . PMD FLAG NOPMDS EQU 001 . PMD NOT ALLOWED NOPT EQU 002 . YOPY EQU 004 . DIAG EQU 010 . DIAGS TAKEN THIS TASK WOPT EQU 020 . RPRIOR EQUF *1,,S1 . ACTUAL PRIORITY OF RUN RTYPE EQUF *1,,S2 . TYPE OF RUN DEMAND EQU 4 . DEADLINE EQU 5 . BATCH EQU 6 . RTCT EQUF *1,,S3 . TASK CONTROL TAGS BABT EQU 001 . BINC EQU 002 . BHLD EQU 004 . BCKP EQU 010 . BFIN EQU 020 . BFAC EQU 040 . RCQLNK EQUF *1,,H2 . RRUNID EQU *4 . RUNID RCTDI EQUF *5,,S1 . DEPTH INTO BLOCK ON LOG CHAIN RCTFL EQUF *5,,H2 . LINK TO NEXT RCT BBA EQUF *6,,H2 . ADDRESS OF CURRENT LOG CHAIN . QR$SDF EQUF *4,,H1 . LINK TO R$ SDF BUFFER FROM CQE SCTADR EQUF *016,,H1 . LINK TO R$DT FROM R$ SDFBUF . ABOVE IS PCT RELATIVE RSISCT EQUF *5,,H1 . LINK TO RSI FCT FROM SDFBUF SACTWD EQUF *4,,H2 . LINK TO SYMACT ENTRY FROM FCT /. RCTILOAD EQU 07 . START OF INITIAL LOAD SECTION RCTIPERC EQUF *7,,H1 . % FULL BILLING AT PROG LOAD (T1) . ABOVE INCLUDES RT RCTRT EQUF *7,,S3 . REAL TIME ACTIVITY COUNT (T1) RCTRILNK EQUF *7,,H2 . LINK TO RUN IDEN EXTEN RCTISUPS EQUF *010 . INITIAL LOAD ACTUAL SUPS RCTICBSP EQUF *011 . INITIAL LOAD CORE BLOCK SUPS RCTIJCBSP EQUF *012 . INITIAL LOAD JPL CBSUPS RCTICPU EQUF *013 . INITIAL LOAD CPU TIME RCTICCER EQUF *014 . INITIAL LOAD CC/ER TIME RCTIAPGS EQUF *015 . INITIAL LOAD ACTUAL PAGES RCTIACDS EQUF *016 . INITIAL LOAD ACTUAL CARDS RCTICDRD EQUF *017 . INITIAL LOAD CARDS READ RCTILINE EQUF *017,,W . INITIAL LOAD START LINE (T1) RCTPROG EQU *020 . PROGRAM OR NAME$ NAME RCTPSTRT EQU *022 . PROGRAM START TIME RCTISPGS EQU *023 . INITIAL LOAD STANDARD PAGES RCTSWAP EQU 024 . START OF PROGRAM SWAP SECTION RCTSSUPS EQUF *024 . LAST SWAP ACTUAL SUPS RCTSCBSP EQUF *025 . LAST SWAP CORE BLOCK SUPS RCTSJCBSP EQUF *026 . LAST SWAP JPL CBSUPS RCTSCPU EQUF *027 . LAST SWAP CPU TIME RCTSCCER EQUF *030 . LAST SWAP CC/ER TIME RCTSAPGS EQUF *031 . LAST SWAP ACTUAL PAGES RCTSACDS EQUF *032 . LAST SWAP ACTUAL CARDS RCTSCDRD EQUF *033 . LAST SWAP CARDS READ RCTSLINE EQUF *033,,W . LAST SWAP START LINE (T1) RCTR$B2 EQUF *034,,S1 . R$DT BITS 2 RCTR$RD EQUF *034,,S2 . R$DT READ BITS RCTP$B2 EQUF *034,,S3 . P$DT BITS 2 RCTPSIZE EQUF *034,,H2 . LAST PROGRAM SIZE RCTSTDBRK EQUF *035,,H1 . P$DT STD PAGES SINCE @BRKPT RCTACTBRK EQUF *035,,H2 . P$DT ACT PAGES SINCE @BRKPT RSTSPGS EQU *036 . STANDARD PAGES . RCTMAXS EQU *0 . MAX SUPS FROM RCT ID EXT RCTMAXP EQU *1 . MAX PAGE FROM RCT ID EXT RCTMAXC EQU *2 . MAX CARD FROM RCT ID EXT RCTRSTRT EQU *3 . RUN START FROM RCT ID EXT RCTACNT EQU *4 . ACCOUNT # FROM RCT ID EXT RCTPROJ EQU *6 . PROJECT ID FROM RCT ID EXT RCTROPTS EQU *8 . RUN OPTIONS FROM RCT ID EXT ARCTEQUFS* PROC *0,0 . END . . . . . USER PASSES BUFFERS WHICH ARE FILLED WITH SYSTEM INFO . OR FORMATED INTO AN OUTPUT IMAGE . . . L,U A0,BUFFER . PASS A 9 WORD DATA AREA . LXI,U X11,TIMER$ . BANK NAME . LIJ X11,TIMNG$ . PUT INFO INTO BUFFER . . USES MINOR SET (EXCEPT A0-A2) . GETS SUPS;CBSUPS;JCBSUPS;CPU;CCER . SPGS;APGS;ACDS;LINE,CDRD . . . . . . . . DL A0,PACKET . PASS GOOD INFO . LXI,U X11,TIMER$ . BANK NAME . LIJ X11,FMTIM$ . FORMAT INFO INTO OUTPUT BUF . . USES MINOR SET (EXCEPT R3) . . PACKET: . :-----------------------------------------------------: . 0 : BUFSTART : BUFEND : . :-----------------------------------------------------: . 1 : BITS :CHAR: LENGTH : OUTBUF : . :-----------------------------------------------------: . . BUFEND ADDRESS OF 9 WORD PACKET CONTAINING STOP TIMES . IF NEGATIVE OF ADDRESS THEN FETCH OCCURS FIRST . BUFSTART 0 OR ADDRESS OF 9 WORD PACKET CONTAINING START TIMES . IF NEGATIVE OF ADDRESS THEN FETCH OCCURS FIRST . OUTBUF ADDRESS OF WHERE TO PUT OUTPUT IMAGE . ON RETURN POINTER TO WHERE BLANK FILL STARTED . LENGTH LENGTH OF OUTPUT IMAGE AREA . ON RETURN LENGTH REMAINING WHEN BLANK FILL STARTED . CHAR CHARACTER POSITION TO START WITH (S1=0,S6=5) . ON RETURN CHAR POSITION WHEN BLANK FILL STARTED . BITS TO CONTROL THE ACTIONS OF COMMON BANK . ON RETURN IS ZERO DOCBSUP EQU 0001 . FORMAT CORE TIME PRODUCT DOSUP EQU 0002 . FORMAT SUPS DOCPU EQU 0004 . FORMAT CPU TIME DOIO EQU 0010 . COMPUTE AND FORMAT IO TIME DOCCER EQU 0020 . FORMAT CONTROL CARD & ER TIME DOPAGE EQU 0040 . FORMAT PAGE/BREAKPOINT DOCARD EQU 0100 . FORMAT CARDS READ/PUNCHED DOSTND EQU 0200 . DO STANDARD PAGES NOT ACTUAL MONEY EQU 0400 . FORMAT BUCKS FOR TIME ENTRIES SETRET EQU 01000000000 . INTERNAL USE ONLY SINGLESP EQU 0200000000 DEFAULTS EQU DOCBSUP+DOSUP+DOCPU . DEFAULT THINGS TO FORMAT . . . . ENTRY POINT JUMP VECTOR FOLLOWS...ORDER DEPENDANT . TIMNG$* J OUR$TIME$ . FETCH ENTRY FMTIM$* J FMT$TIME$ . FORMAT ENTRY CSNDEM EQU 0 . SET TO FIX CSNDEM ERROR . OUR$TIME$ DS A1,R2 . SAVE REGS SZ A2 . FETCH PCT DATA & STORE OFF A0 OUR$TIME SSC A2,18 . SAVE POSSIBLE RETURN L A3,A0 . SAVE BUFFER ADDRESS L A0,(2,INFOX) . ACCESS WORD FOR INFO$ ER INFO$ /. GET$PCT L,U A1,INFOY L A4,0,A1 . CURRENT VALUE OF SUPS S A4,SSUPS,A3 . SAVE SUPS L A4,2,A1 . CURRENT CBSUPS S A4,SCBSP,A3 . SAVE CBSUPS L A4,3,A1 . CURRENT CPU SUPS S A4,SCPU,A3 . SAVE CPU L A4,4,A1 . CURRENT IO SUPS S A4,SJCBSP,A3 . USE JPL CELL TO SAVE IO SUPS L A4,5,A1 . CURRENT ER AND CONTROL CARD S A4,SCCER,A3 . SAVE CCER L A0,A3 . RESTORE BUFFER POINTER L A3,A2 . SAVE POSSIBLE RETURN DL A1,R2 . RESTORE REGS TNE,U A3,0,A3 . RETURN SPECIFIED LMJ X11,0,X11 SSL A3,18 J 0,A3 . INTERNAL CALL FMT$TIME$ . FORMAT FROM OFF A0 & STORE OFF A1 DS A0,R1 . SAVE INPUT SSA A0,18 . ISOLATE START TIMES (IF ANY) JP A0,GOTSTART . SKIP FETCH IF TIMES AVAILABLE LMJ A2,OUR$TIME . FETCH START TIMES LN A0,R1 . FETCH OLD BUFFERS LXM A0,R1 . FLIP START BUFFER TO POSITIVE S A0,R1 . REPLACE GOTSTART LXI A0,R1 . REFETCH BUFFERS SSA A0,18 . ISOLATE ENDING TIMES BUFFER JP A0,GOTEND . SKIP FETCH IF TIMES AVAILABLE LN A0,A0 . SET PROPER SIGN L A1,R1 . FETCH BUFFERS LXM A1,A0 . SET NEW VALUE L R1,A1 . SAVE LMJ A2,OUR$TIME . FETCH END TIMES GOTEND DL A0,R1 . TIMES NOW FETCHED (IF NECESSARY) . . SSC A0,18 . SWAP BUFFERS TZ,U 0,A0 . IF AN INITIAL BUFFER WAS GIVEN AN,U A0,ISUPS . BIAS FOR ONE BUFFER EQUFS SSC A0,18 . SWAP BUFFERS BACK SZ A5 . CLEAR THEM BITS WB04120 L A4,A1 . COPY THE BITS LDSC A4,9 . ISOLATE THEM TNZ A5 . ARE ANY BITS SET? L,U A5,DEFAULTS . NO/ SET DEFAULT BITS FINSETUP L R2,A5 . SAVE BITS SZ A3 . CLEAR REGISTER LDSL A3,3 . GET CHARACTER POSITION SSL A4,30 . ISOLATE WORD LENGTH TG,U A3,6 . VERIFY CHAR POSITION L,U A3,0 . CLEAR DUMB POSITION TNZ A4 . WAS A LENGTH SPECIFIED? L,U A4,14 . NO/ SET THE DEFAULT LXI A1,A4 . TO TRAP IMAGE OVERFLOW L A2,(1,CHARSTORE) . CHARACTER POINTER A A2,A3 . BUMP TO USER POSITION /. TRYCBSUP L A5,R2 . GET BITS TOP,U A5,DOCBSUP . FORMAT CBSUP? J TRYSUP . NO/ TRY SUPS TEP,U A5,MONEY . FORMATTING MONEY? J DOTOT . YES/ GO TO IT DIRECTLY L,U R1,4 . YES/ SET LENGTH OF LABEL L A4,('CTP= ') . START WITH CBSUP LMJ A3,SETALPHA . SET INTO BUFFER L A5,SCBSP,A0 . FETCH ENDING CBSUP TNE,U A0,0,A0 . IS THERE A INITIAL CBSUP? J GOTCTP . NO/ CONTINUE SSC A0,18 . POINT TO OTHER BUFFER AN A5,ICBSP,A0 . GET DIFFERENCE SSC A0,18 . POINT BACK TO ENDING BUFFER GOTCTP SZ A4 . SET FOR CONVERSION TP A5 . INSURE AGAINST NEG L,U A5,0 . ZOT IT DI,U A4,5*64 . CONVERT TO KW/HRS LXI,U A3,TIMESCALE . CONVERSION NUMBER TABLE LMJ A3,FMTDIGITS . FORMAT IT UP LMJ A3,TWOBLANKS . SET SPACER /. TRYSUP L A5,R2 . TOP,U A5,DOSUP . SHOULD WE FORMAT SUPS? J TRYCPU . NO/ TRY CPU L A4,('SUP= ') . SEPERATOR TEP,U A5,MONEY . FORMATTING MONEY? DOTOT L A4,('CTP= ') . YES/ CHANGE LABEL L,U R1,4 . LENGTH LMJ A3,SETALPHA . ADD TO OUTPUT L A5,SSUPS,A0 . FETCH ENDING SUPS TNE,U A0,0,A0 . IS THERE A INITIAL SUPS? J GOTSUP . NO/ CONTINUE SSC A0,18 . POINT TO OTHER BUFFER AN A5,ISUPS,A0 . GET DIFFERENCE SSC A0,18 . POINT BACK TO ENDING BUFFER GOTSUP SZ A4 . SET FOR DIVIDE TP A5 . INSURE AGAINST NEG L,U A5,0 . ZOT IT DI,U A4,5 . SCALE LXI,U A3,TIMESCALE . CONVERSION NUMBER TABLE LMJ A3,FMTDIGITS . FORMAT IT UP LMJ A3,TWOBLANKS . SET SPACER /. TRYCPU L A5,R2 . TOP,U A5,DOCPU . SHOULD WE FORMAT CPU? J TRYIO . NO/ TRY IO L A4,('CPU= ') . SEPERATOR L,U R1,4 . LENGTH LMJ A3,SETALPHA . ADD TO OUTPUT L A5,SCPU,A0 . FETCH ENDING CPU TNE,U A0,0,A0 . IS THERE A INITIAL CPU? J GOTCPU . NO/ CONTINUE SSC A0,18 . POINT TO OTHER BUFFER AN A5,ICPU,A0 . GET DIFFERENCE SSC A0,18 . POINT BACK TO ENDING BUFFER GOTCPU SZ A4 . SET FOR DIVIDE TP A5 . INSURE AGAINST NEG L,U A5,0 . ZOT IT DI,U A4,5 . SCALE LXI,U A3,TIMESCALE . CONVERSION NUMBER TABLE LMJ A3,FMTDIGITS . FORMAT IT UP LMJ A3,TWOBLANKS . SET SPACER /. TRYIO L A5,R2 . TOP,U A5,DOIO . SHOULD WE FORMAT IO? J TRYCCER . NO/ TRY CCER L A4,('IO= ') . SEPERATOR L,U R1,3 . LENGTH LMJ A3,SETALPHA . ADD TO OUTPUT L A5,SJCBSP,A0 . FETCH ENDING IO SUPS TNE,U A0,0,A0 . IS THERE A INITIAL IO? J GOTIO . NO/ CONTINUE SSC A0,18 . POINT TO OTHER BUFFER AN A5,IJCBSP,A0 . GET DIFFERENCE SSC A0,18 . POINT BACK TO ENDING BUFFER GOTIO SZ A4 . SET FOR DIVIDE TP A5 . INSURE AGAINST NEG L,U A5,0 . ZOT IT DI,U A4,5 . SCALE LXI,U A3,TIMESCALE . CONVERSION NUMBER TABLE LMJ A3,FMTDIGITS . FORMAT IT UP LMJ A3,TWOBLANKS . SET SPACER /. TRYCCER L A5,R2 . TOP,U A5,DOCCER . SHOULD WE FORMAT CCER? J TRYPAGE . NO/ TRY PAGES L A4,('CC-ER=') . SEPERATOR L,U R1,6 . LENGTH LMJ A3,SETALPHA . ADD TO OUTPUT L A5,SCCER,A0 . FETCH ENDING CCER TNE,U A0,0,A0 . IS THERE A INITIAL CCER? J GOTCCER . NO/ CONTINUE SSC A0,18 . POINT TO OTHER BUFFER AN A5,ICCER,A0 . GET DIFFERENCE SSC A0,18 . POINT BACK TO ENDING BUFFER GOTCCER SZ A4 . SET FOR DIVIDE TP A5 . INSURE AGAINST NEG L,U A5,0 . ZOT IT DI,U A4,5 . SCALE LXI,U A3,TIMESCALE . CONVERSION NUMBER TABLE LMJ A3,FMTDIGITS . FORMAT IT UP LMJ A3,TWOBLANKS . SET SPACER /. TRYPAGE . BLANKFILL L,U A5,0,A2 . COMPUTE CHARACTER POSITION AN,U A5,CHARSTORE . LSSL A5,24 . POSITION A A5,A1 . ADD ON LENGTH,ADDRESS L A4,R2 . A A4,(SETRET) . SET TO RETURN LENGTH S A4,R2 . SAVE OPTIONS L A4,(' ') . BLANK FILL L,U R1,378+1 . FILL BUFFER LMJ A3,SETALPHA . . SHOULD NOT RETURN FROM ABOVE CALL BUT WILL JUMP TO RETURN RETURN L A4,R2 . GET BITS TEP A4,(SETRET) . COMPUTED ALREADY? J DORET . YES/ KICK OUT L,U A5,0,A2 . COMPUTE CHARACTER POSITION AN,U A5,CHARSTORE . LSSL A5,24 . POSITION A A5,A1 . ADD ON LENGTH,ADDRESS DORET L A1,A5 . YES/ DO IT TO IT LMJ X11,0,X11 . RETURN /. ALPHALOOP LSSC A4,6 . GET NEXT CHARACTER EX 0,*A2 . SET INTO BUFFER SETALPHA JGD R1,ALPHALOOP . SET CHARACTERS INTO BUFFER J 0,A3 . RETURN . NONBLOOP SZ A4 . CLEAR REG FOR TEST LDSL A4,6 . MOVE NEXT CHAR IN TE,U A4,' ' . DON'T PRINT BLANKS EX 0,*A2 . SET THE NON-BLANK SETNONBL JGD R1,NONBLOOP . SET NON-BLANKS INTO BUFFER J 0,A3 . RETURN . TWOBLANKS L,U A4,' ' . EX 0,*A2 . SET ONE ONEBLANK L A4,R2 . GET BITS TEP A4,(SINGLESP) . SINGLE SPACE? J 0,A3 . YES/ RETURN L,U A4,' ' . NO/ SET ANOTHER BLANK EX 0,*A2 . J 0,A3 . . . CHARETURN S,S6 A4,0,A1 . BUMP WORD POINTER A A1,(0777777,0) . BUMP POINTER LOWER COUNT TNE,U A1,0,A1 . COUNT WOUND DOWN YET? J RETURN . YES/ GO HOME LMJ A2,0,A2 . RETURN CHARSTORE S,S1 A4,0,A1 . SET CHARACTER S,S2 A4,0,A1 . SET CHARACTER S,S3 A4,0,A1 . SET CHARACTER S,S4 A4,0,A1 . SET CHARACTER S,S5 A4,0,A1 . SET CHARACTER LMJ A2,CHARETURN . TRAP LAST CHARACTER /. FMTDIGITS L A5,R2 . GET BITS TOP,U A5,MONEY . FORMAT MONEY? J NO$ . NOPE/CONTINUE MI A4,SJCBSP,A0 . * JPL CBSUPS DI A4,SSUPS,A0 . / SUPS LSSL A5,1 . DOUBLE REMAINDER TG A5,SSUPS,A0 . ROUNDING NEEDED? A,U A4,1 . YES/ ROUND UP L R1,CP22 . RATE FOR TIME GETCENTS L A5,A3 . SAVE A3 SZ A3 . SET FOR DIVIDE DI,U A3,1000 . GET PROPER UNITS L A4,A3 . MOVE QUOTIENT L,U A3,0233 . LCF A3,A4 . CONVERT TO FLOATING PT L A3,A4 . MOVE A4 FM A3,R1 . MULTIPLY BY THE RATE L,U A4,'$' . SET THE DELIMITER EX 0,*A2 . INTO BUFFER SZ A4 . ZOT A4 DSL A3,27 . SEPERATE EXPONENT AN,U A3,0200 . GET REAL EXPONENT L R1,A5 . RESAVE A3 DSL A4,36 . LDSL A4,0,A3 . CONVERT TO DECIMAL CENTS L A3,R1 . RESTORE A3 LXI,U A3,DOLSCALE . FORMAT WITH DOLLARS NO$ SSC A3,18 . GET TABLE ADDRESS L A5,A4 . MOVE TO A5 TN A5 . IS INPUT POSITIVE? J SLOOP+1 . YES/ GO TO IT LN A5,A5 . NO/ MAKE POSITIVE L,U A4,'-' . SET A MINUS SIGN EX 0,*A2 . SET THE CHARACTER J SLOOP+1 . GO TO IT SLOOP A,U A3,2 . BUMP TO NEXT TABLE ENTRY TLE A5,0,A3 . RIGHT SCALE? J SLOOP . NO/ LOOK SOME MORE LM A4,0,A3 . YES/ GET ABS VALUE TLE A5,A4 . WOULD TEST HAVE FAILED WITH ABS? J SETDELIM . YES/ GET DELIMITER LOOP LM A4,0,A3 . GET THE DIVISOR JZ A4,DONE . END OF TABLE? L R1,A4 . SAVE DIVISOR SZ A4 . SET FOR DIVIDE DI A4,R1 . SCALE THE NUMBER A,U A4,'0' . CONVERT TO FIELDATA EX 0,*A2 . SET CHARACTER SETDELIM L A4,1,A3 . GET POSSIBLE DELIMITER TZ A4 . WAS THERE ONE? EX 0,*A2 . YES/SET CHARACTER A,U A3,2 . BUMP THE TABLE ENTRY J LOOP . CONTINUE DONE SSC A3,18 . RESTORE RETURN ADDRESS J 0,A3 . RETURN /. . DOLSCALE + 10000000 . $100,000.00 + 0 . + 1000000 . $10,000.00 + 0 . + 100000 . $1,000.00 + ',' . + 10000 . $100.00 + 0 . + 1000 . $10.00 + 0 . - 100 . $1.00 + '.' . - 10 . $.10 + 0 . - 1 . $.01 + 0 . + 0 . END OF TABLE . . TIMESCALE + 864000000 . 10 00:00:00.000 + 0 . + 86400000 . 1 00:00:00.000 + 'D' . DAYS DELIMITER + 36000000 . 10:00:00.000 + 0 . + 3600000 . 1:00:00.000 + ':' . HOURS DELIMITER + 600000 . 10:00.000 + 0 . + 60000 . 1:00.000 + ':' . MINUTES DELIMITER + 10000 . 10.000 + 0 . - 1000 . 1.000 + '.' . SECONDS DELIMITER LINSCALE - 100 . .100 + 0 . - 10 . .010 + 0 . - 1 . .001 + 0 . + 0 . END OF TABLE /. SECSCALE + 864000 . 10 00:00:00 + 0 . + 86400 . 1 00:00:00 + ' ' . DAYS DELIMITER + 36000 . 10:00:00 + 0 . + 3600 . 1:00:00 + ':' . HOURS DELIMITER + 600 . 10:00 + 0 . - 60 . 1:00 + ':' . MINUTES DELIMITER - 10 . 10 + 0 . - 1 . 1 + 0 . + 0 . NUMSCALE + 10000000 . 10,000,000 + 0 . + 1000000 . 1,000,000 + ',' . + 100000 . 100,000 + 0 . + 10000 . 10,000 + 0 . + 1000 . 1,000 + ',' . + 100 . 100 + 0 . - 10 . 10 + 0 . - 1 . 1 + 0 . + 0 . END OF TABLE /. MSECSCALE - 36000000 . HH:MM:SS + 0 . - 3600000 . + ':' . - 600000 . + 0 . - 60000 . + ':' . - 10000 . + 0 . - 1000 . + 0 . + 0 . . NUM2SCALE + 10000000 . 10000000 + 0 . + 1000000 . 1000000 + 0 . + 100000 . 100000 + 0 . + 10000 . 10000 + 0 . + 1000 . 1000 + 0 . + 100 . 100 + 0 . - 10 . 10 + 0 . - 1 . 1 + 0 . + 0 . END OF TABLE CP22 + 0.22 . RATE FOR TIME CP1 + 0.1 . RATE FOR TAPE INFOX +0700,0 +7,INFOY INFOY RES 8 /. END .