ASMB,R,L,C HED "TODAY" RTE UTIL TO FORM STRING OF TODAY'S DATE AND TIME (DLB) * NAM TODAY,7 PRE-REL 3-26-76 (DLB) NAM TODAY,7 09570-16293 REV. A 761013 * *-------------------------------------------------------- * * RELOC. 09570-16293 * SOURCE 09570-18293 * * D. BASKINS 13 OCT 76 REV. A * *--------------------------------------------------------- ENT TODAY EXT EXEC SPC 1 A EQU 0 B EQU 1 SUP SPC 1 * PURPOSE: * TO BUILD CALLERS 14 WORD BUFFER INTO A DATE/TIME MESSAGE IN * THE FOLLOWING FORM: * * "FRI 26 MAR 1976 18:24:30.09" * ---- ------ * WHERE: * TODAYS DATE IS FRIDAY, MARCH 26, 1976 AND THE TIME IS * 6:24 PM & 30.09 SECONDS. * * NOTES: * THE 1ST 2 WORDS MAY BE STRIPED OFF THE BUFFER AND THE LAST * THREE WORDS MAY BE STRIPPED OFF TO LOOK LIKE THIS: * * "26 MAR 1976 18:24" * * CALLING & EXAMPLE PROGRAM: * * FTN,L * PROGRAM DATE * DIMENSION IB(14),IP(5) * CALL RMPAR(IP) * 1 CALL TODAY(IB) * CALL EXEC (2,IP,IB,14) * CALL EXEC (2,IP,IB(3),9) * IB(13) = IB(13) - 14 * CALL EXEC (2,IP,IB,13) * END * * WHERE: IBUF IS A 14 WORD BUFFER AND IS STORED INTO BY * THE TODAY SUBROUTINE. SPC 1 YEAR NOP TMSEC NOP SEC NOP MIN NOP HOUR NOP DAY NOP TODAY NOP ENTRY POINT LDB TODAY,I ISZ TODAY GET PARAMETER ADDRESS LDA TODAY STB TODAY SAVE RETURN ADDRESS LDA A,I TRACK DOWN DIRECT PARAMETER RAL,CLE,SLA,ERA JMP *-2 CLE,ELA CALCULATE STARTING CHARACTOR STA CHRAD OF THE CALLERS BUFFER JSB EXEC NOW GET TIME FROM SYSTEM DEF *+4 DEF D11 CALL EXEC (11,IBUF,IYEAR) DEF TMSEC DEF YEAR LDA YEAR GET THE DAY OF WEEK ADA OM1 ARS,ARS WATCH OUT FOR LEAP YEAR ADA YEAR ADA DAY CLB DIV O7 RBL CALCULATE BUFFER ADDRESS ADB DAYWK POINT TO BUFFER JSB PUT2A PUT 4 CHARS FROM B-REG TO CALLERS BUF JSB PUT2A PUT THE NEXT TWO LDB DAY ADB DM60 SUBTRACT 2 MONTHS LDA YEAR GET YEAR AND O3 CHECK IF LEAP YEAR SZA LEAP YEAR? SSB OR BEFORE THE 29 FEB ADB OM1 NO, LEAP YEAR OR BEFORE FEB 29 SSB ADB D366 MAR 1 OR LATER ANY YEAR ADB D31 LDA B MPY BY 5 MPY O5 DIV D153 LIKE MAGIC, HUH! RAL MPY BY 2 ADA DEFMO GET MONTH ADDRESS STA PUT2A AND SAVE FOR LATER USE LDA B GET REMAINDER CLB AND DIVIDE BY 5 DIV O5 TO GET DAY OF MONTH INA MINUS ONE JSB PUT2# PUT 2 DIGIT NUMBER IN BUFFER LDB PUT2A GET MONTH ADDRES JSB PUT2A AND MOVE 4 CHARS JSB PUT2A AND THE NEXT TWO LDA O40 PUT IN SPACE JSB PUTCR IN BETWEEN MONTH & YEAR LDA YEAR CLB DIV D100 STB PUT2A SAVE FRACTION CENTURY FOR LATER JSB PUT2# PUT TWO DIGIT 19 IN BUFFER LDA PUT2A RETRIVE THE 76 JSB PUT2# AND PUT FRACTION OF CENTURY IN BUFFER ISZ CHRAD CHEAT BY BUMPING PAST SPACE IN BUFFER LDA O40 PUT SPACE IN BUFFER JSB PUTCR FOR TWO SPACES LDA HOUR JSB PUT2# SET IN HOUR LDA COLON JSB PUTCR PUT IN COLON LDA MIN JSB PUT2# SET IN MINUTES LDA COLON PUT IN COLON JSB PUTCR LDA SEC JSB PUT2# SET IN SECONDS LDA PEROD GET DECEMAL POINT JSB PUTCR LDA TMSEC JSB PUT2# SET IN TENS OF MILLISECONDS JMP TODAY,I RETURN DONE SPC 1 CHRAD NOP HOLDS CURRENT CHARACTOR ADDRESS PUTC1 NOP PUTCR NOP ENTRY A=CHARACTOR TO PUT AND O377 MASK OFF HIGH CHARACTOR STB PUTC1 SAVE THE B-REG LDB CHRAD GET CHARACTOR ADDRESS TO PUT CLE,ERB CONVERT TO WORD ADDRESS ISZ CHRAD SEZ,RSS ALF,SLA,ALF POSITION IF NECESSARY XOR B,I MERGE IN OLD XOR O40 PUT IN/TAKE OUT SPACE STA B,I AND PUT IN BUFFER LDB PUTC1 RESTORE B-REG JMP PUTCR,I RETURN DONE SPC 1 PUT2A NOP MOVE 4 CHARACTORS FROM ADDRESS LDA B,I GET 1ST CHAR ALF,ALF POSITION JSB PUTCR AND PUT LDA B,I GET 2ND CHAR JSB PUTCR INB BUMP TO NEXT WORD JMP PUT2A,I RETURN SPC 1 PUT2# NOP CONVERT AND PUT 2 DIGIT # IN A-REG CLB FIRST CONVERT DIV D10 NUMBER TO BASE TEN ADB O60 CONVERT TO ASCII ADA O60 CONVERT TO ASCII JSB PUTCR PUT HIGH DIGIT LDA B JSB PUTCR PUT LOW DIGIT JMP PUT2#,I RETURN SPC 1 OM1 OCT -1 DM60 DEC -60 O3 OCT 3 O5 OCT 5 O7 OCT 7 D10 DEC 10 D11 DEC 11 D31 DEC 31 O40 OCT 40 PEROD OCT 56 COLON OCT 72 O60 OCT 60 D100 DEC 100 D153 DEC 153 O377 OCT 377 D366 DEC 366 DAYWK DEF *+1 ASC 14,FRI SAT SUN MON TUE WED THU DEFMO DEF *-1 ASC 12, MAR APR MAY JUN JUL AUG ASC 12, SEP OCT NOV DEC JAN FEB ORR END