.TITLE DATE .SBTTL DETERMINE CREATION DATE AND TIME ;************************************************************************ ; ; DETERMINE CREATION DATE AND TIME FROM THE 1ST RECORD OF CIL ; INPUT R1 = ADDRESS OF DATE/TIME STRING ; ;************************************************************************ DATE:: PUSH R2 ;SAVE REGS PUSH R3 ; ; NOW CALCULATE TIME ADD #11.,R1 ;SKIP UP TO TIME SECTION MOV (R4)+,R3 ;GET DOUBLE WORD TIME MOV (R4)+,R2 ; PUSH R4 ;SAVE DIV #60.,R2 ;MAKE TICKS SECONDS MOV R2,R3 ;GET TOTAL SECONDS CLR R2 ;INIT DIV #60.,R2 ;SEPARATE SECONDS AND MINUTES MOV R2,R4 ;SAVE MINUTES MOV R3,R2 ;GET SECONDS DECASC R2,R3 ;CONVERT TO ASCII MOVB R2,6(R1) ;STORE SECONDS MOVB R3,7(R1) ; MOV R4,R3 ;GET MINUTES BACK CLR R2 ; DIV #60.,R2 ;SEPARATE MINUTES AND HOURS MOV R2,R4 ;SAVE HOURS MOV R3,R2 ;GET MINUTES DECASC R2,R3 ;CONVERT TO ASCII MOVB R2,3(R1) ;STORE MINUTES MOVB R3,4(R1) ; MOV R4,R2 ;GET HOURS DECASC R2,R3 ;CONVERT TO ASCII MOVB R2,(R1) ;STORE HOURS MOVB R3,1(R1) ; .PAGE ; NOW CALCULATE DATE SUB #11.,R1 ;GO TO DATE POP R4 ; MOV (R4)+,R3 ;GET DATE WORD PUSH R4 ;SAVE AGAIN MOV YEAR,R2 ;INIT DIV #1000.,R2 ;SEPARATE DAYS AND YEARS MOV #28.,MONTH+4 ;ASSUME NORMAL YEAR ADD #70.,R2 ;BASE IS 1970 MOV R2,R4 ;GET YEAR BIC #177774,R4 ;ONLY 2 BITS CMP #3,R4 ;LEAP YEAR? BNE .+6 ;NO INC MONTH+4 ;YES, 29 DAYS IN FEB MOV R3,R4 ;SAVE DAYS TEMP DECASC R2,R3 ;CONVERT YEAR TO ASCII MOVB R2,7(R1) ;STORE YEAR MOVB R3,10(R1) ; MOV R4,R3 ;RECOVER DAYS MOV #MONTH,R4 ;PTR TO MONTH TABLE 1$: SUB (R4)+,R3 ;COUNT OFF DAYS IN MONTHS CMP R3,(R4) ;DOWN TO A PARTIAL MONTH? BGT 1$ ;NO, SO LOOP SUB #MONTH,R4 ;CALC MONTH NUMBER ASR R4 ; DEC R4 ; MOV R3,R2 ;GET DAYS IN THIS MONTH DECASC R2,R3 ;CONVERT DAYS TO ASCII MOVB R2,(R1) ;STORE DAYS MOVB R3,1(R1) ; MOV R4,R3 ;GET MONTH NUMBER MUL #3,R3 ;GET OFFSET INTO MONTH STRING TABLE ADD #MONSTR,R3 ; MOVB (R3)+,3(R1) ;SAVE MONTH STRING MOVB (R3)+,4(R1) ; MOVB (R3),5(R1) ; POP R4 ;RETRIEVE REGS POP R3 ; POP R2 ; RETURN ;*************************************************************************** ; ; MONTH DATA TABLES ; ;*************************************************************************** MONTH: .WORD 0,31.,28.,31.,30.,31.,30.,31.,31.,30.,31.,30.,31. MONSTR: .ASCII /JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC/ .EVEN .END