
* PAG
*********************************************************
*       DATE - SET AND EXAMINE DATE UTILITY            *
*********************************************************
* OPT PAG
*
* 'DATE' UTILITY COPYRIGHT (C), 1979 BY
*
* TECHNICAL SYSTEMS CONSULTANTS, INC.
* BOX 2570
* WEST LAFAYETTE, INDIANA 47906
* USA
* BY FLD ON 15-10-2011 FOR VEGAS
* DISASSEMBLY BY DYNAMITE OF 1.DATE.CMD
* MODIFIED FOR Y2K ON 24-11-11
 
* STANDARD PRE-NAMED LABEL EQUATES
SYSFCB EQU $C840
EOLCHR EQU $CC02
SYSMTH EQU $CC0E
SYSDAY EQU $CC0F
SYSYR EQU $CC10
LSTTRM EQU $CC11
WARMS EQU $CD03
TCHR EQU $CD18
PCRLF EQU $CD24
OUTDEC EQU $CD39
RPTERR EQU $CD3F
INDEC EQU $CD48
 
* ASCII CODE EQUATES
 
NUL EQU $00
 
 
 ORG $C100
 
CMDADR BRA DATE1
 FCB $01 VERSION NUMBER
 DATA1 FCB $00
 DATA2 FCB $00
 DATE1 LDA LSTTRM CHECK TERM CHAR
 CMPA #$0D IS IT CR?
 BEQ PDAT
 CMPA EOLCHR IS IT EOL?
 BEQ PDAT
 BSR GETDAT INPUT NUMBER
 BCS DATE2 ERROR?
 CMPA #$1F GREATER THAN 31?
 BHI DATE2
 STA SYSDAY SAVE DAY
 BSR GETDAT INPUT NUMBER
 BCS DATE2 ERROR?
 CMPA #$0C GREATER THAN 12?
 BHI DATE2
 STA SYSMTH SAVE MONTH
 BSR GETDAT GET YEAR NUMBER
 BCS DATE2 ERROR?
 CMPA #99 GREATER THAN 99?
 BHI DATE2
 STA SYSYR SAVE YEAR
 JMP WARMS RETURN TO FLEX
 DATE2 LDX #SYSFCB POINT TO FCB
 LDB #$1A SET UP ERROR NUMBER
 STB 1,X STUFF IN FCB
 JSR RPTERR REPORT ERROR
 JMP WARMS RETURN TO FLEX
* INPUT DATE DIGIT
GETDAT JSR INDEC INPUT NUMBER
 BCS GETDA3 ERROR?
 TSTB NUMBER THERE?
 BEQ GETDA2
 STX DATA1 SAVE VALUE
 LDA DATA2 GET LS PART
 ANDCC #$FE CLEAR ERRORS
 RTS
GETDA2 ORCC #1 SET ERRORS
GETDA3 RTS
* PRINT DATE
PDAT JSR PCRLF OUTPUT CR & LF
 CLR DATA1 CLEAR BUFFER 1
 LDA SYSDAY GET DAY NUMBER
 STA DATA2 STORE DAY IN BUFFER 2
 LDX #DATA1 POINT TO DATE
 CLRB
 JSR OUTDEC PRINT DAY
 LDA #$20 OUTPUT SPACE
 JSR TCHR
 LDA SYSMTH GET MONTH
 LDX #MONTH POINT TO TABLE
PDAT2 DECA CHECK DATE
 BEQ PDAT4
PDAT3 LEAX 1,X FIND MONTH STRING
 TST 0,X
 BNE PDAT3
 LEAX 1,X
 BRA PDAT2
PDAT4 BSR PST PRINT IT
*
* Check for and convert full year
*
* 1975: $7B7 -> 75
* 1999: $7CF -> 99
*
* 2000: $7D0 -> 0
* 2047: $7FF -> 47
*
* 2048: $800 -> 48
* 2074: $81A -> 74
*
* IF YEAR > 100 THEN SUBSTRACT 100
* TO COMPLY WITH EMULATORS
*
 LDX #CST1 PRINT CENTURY 1900
 LDA SYSYR GET YEAR
 CMPA #100
 BLO PDAT6 CONTINUE IF LOWER THAN 100
 SUBA #100 SUBSTRACT 100
PDAT6 STA DATA2 STORE YEAR IN BUFER 2
 CMPA #75
 BHI PDAT5
 LDX #CST2 PRINT CENTURY 2000
PDAT5 BSR PST
 CLRB
 LDX #DATA1
 JSR OUTDEC PRINT YEAR
 JMP WARMS RETURN TO FLEX
 
PST LDA 0,X 0,X GET CHARACTER
 BEQ PST2 IS IT NULL?
 JSR TCHR OUTPUT CHARACTER
 LEAX 1,X BUMP TO NEXT
 BRA PST REPEAT
PST2 RTS
* TEXT STRINGS
CST1 FCC ", 19"
 FCB 0
CST2 FCC ", 20"
 FCB 0
MONTH FCC "JANVIER"
 FCB 0
 FCC "FEVRIER"
 FCB 0
 FCC "MARS"
 FCB 0
 FCC "AVRIL"
 FCC 0
 FCC "MAI"
 FCB 0
 FCC "JUIN"
 FCB 0
 FCC "JUILLET"
 FCB 0
 FCC "AOUT"
 FCB 0
 FCC "SEPTEMBRE"
 FCB 0
 FCC "OCTOBRE"
 FCB 0
 FCC "NOVEMBRE"
 FCB 0
 FCC "DECEMBRE"
 FCB 0
 
 END CMDADR



