
* PAG
************************************************************
* DISASSEMBLY BY DYNAMITE OF 1.HORLOGE.CMD                *
************************************************************
* OPT PAG
*
* 'HOLOGE' UTILITY FOR VEGAS 6809 HARDWARE
*
* BY FLD ON 15-10-2011 FOR VEGAS
* DISASSEMBLY BY DYNAMITE OF 1.HORLOGE.CMD
* MODIFIED FOR Y2K ON 24-11-11

* STANDARD PRE-NAMED LABEL EQUATES
       
SYSMTH  EQU    $CC0E
SYSDAY  EQU    $CC0F
SYSYR   EQU    $CC10
WARMS   EQU    $CD03
GETCHR  EQU    $CD15
TCHR    EQU    $CD18
PSTRNG  EQU    $CD1E
PCRLF   EQU    $CD24
OUTDEC  EQU    $CD39
                     
* ASCII CODE EQUATES

EOT     EQU    $04
                     
* EXTERNAL LABEL EQUATES
                     
HOR10S  EQU    $F641
                     
                     
 ORG    $C100
                     
CMDADR  BRA    HORLO1
 FCB    $03
TEMP1   FCB    $00
TEMP2   FCB    $00,$8D,$71
BUF10S  FCB    $27
BUFUSE  FCB    $36
BUFTSE  FCB    $BD
BUFUMI  FCB    $CD
BUFTMI  FCB    $27
BUFUHO  FCB    $81
BUFTHO  FCB    $57
BUFUDA  FCB    $27
BUFTDA  FCB    $15
BUFWDA  FCB    $81
BUFUMO  FCB    $77
BUFTMO  FCB    $27
BUFYRS  FCB    $11
HORLO1  LDX    #HOR10S   GET THE FIRST REGISTER OF THE RTC
 LDY    #BUF10S   GET THE FIRST BUFFER REGISTER
 LDB    #$0D      INITIALIZE FOR 13 REGISTER COPY
 LDA    0,X
HORLO2  LDA    0,X+      COPY THE 13 VALUES INTO THE BUFFER
 ANDA   #$0F      CUT THE 4 HIGHEST BITS
 STA    0,Y+
 DECB             NEXT REGISTER
 BNE    HORLO2    LOOP
 LDA    BUF10S    TEST THE FIRST REGISTER
 CMPA   #$0F
 BNE    HORLO3    SKIP IF OK
 LDA    BUFYRS    TEST THE LAST REGISTER
 CMPA   #$0F
 LBEQ   ERROR     SKIP IF OK
 BRA    HORLO1    RETRY ON ERROR
HORLO3  CMPA   BUFYRS    TEST THE LAST REGISTER
 BNE    HORLO1    RETRY ON ERROR
 LDX    #BUF10S
 LDA    0,X+      LOAD 10S OF SEC
 CMPA   #$0A      TEST > 10
 LBCC   ERROR     ON ERROR GO TO MANUAL TIME SETTING
 LDA    0,X+      LOAD UNIT OS SEC
 CMPA   #$0A      TEST > 10
 LBCC   ERROR     ON ERROR GO TO MANUAL TIME SETTING
 LDA    0,X+      LOAD TEN OS SEC
 CMPA   #7        TEST > 7
 LBCC   ERROR     ON ERROR GO TO MANUAL TIME SETTING
 LDA    0,X+      LOAD UNIT OF MIN
 CMPA   #$0A      TEST > 10
 LBCC   ERROR     ON ERROR GO TO MANUAL TIME SETTING
 LDA    0,X+      LOAD TEN OF MIN
 CMPA   #7        TEST > 7
 LBCC   ERROR     ON ERROR GO TO MANUAL TIME SETTING
 LDA    0,X+      LOAD UNIT OF HOUR
 CMPA   #$0A      TEST > 10
 LBCC   ERROR     ON ERROR GO TO MANUAL TIME SETTING
 LDA    0,X+      LOAD TEN OF HOUR
 CMPA   #3        TEST > 3
 LBCC   ERROR     ON ERROR GO TO MANUAL TIME SETTING
 LDA    0,X+      LOAD UNIT OF DAY
 CMPA   #$0A      TEST > 10
 LBCC   ERROR     ON ERROR GO TO MANUAL TIME SETTING
 LDA    0,X+      LOAD TEN OF DAY
 CMPA   #4        TEST > 4
 LBCC   ERROR     ON ERROR GO TO MANUAL TIME SETTING
 LDA    0,X+      LOAD WEEK DAY
 CMPA   #8        TES > 8
 LBCC   ERROR     ON ERROR GO TO MANUAL TIME SETTING
 LDA    0,X+      LOAD UNIT OF MONTH
 LDB    0,X+      LOAD TEN OF MONTH
 CMPA   #$0A      TEST > 10
 LBCC   ERROR     ON ERROR GO TO MANUAL TIME SETTING
 NOP
 NOP
 LBEQ   ERROR     ON ERROR GO TO MANUAL TIME SETTING
 CMPB   #2        TEST > 2
 LBCC   ERROR     ON ERROR GO TO MANUAL TIME SETTING
 CMPB   #1        TST > 1
 LBNE   HORLO4    ON ERROR GO TO MANUAL TIME SETTING
 CMPA   #3        TEST > 3
 LBCC   ERROR     ON ERROR GO TO MANUAL TIME SETTING
HORLO4  LDA    BUFWDA    GET THE WEEK DAY
 LDX    #WEKDAY-9 PINPOINT TO THE TABLE
 LDB    #9
 MUL
 LEAX   D,X
 JSR    PSTRNG    PRINT THE WEEK DAY
 LDA    #$20      SPACE
 JSR    TCHR      PRINT SPACE
 BRA    HORLO5
WEKDAY  FCC    "   LUNDI",EOT   
 FCC    "   MARDI",EOT
 FCC    "   MERCREDI",EOT
 FCC    "   JEUDI",EOT
 FCC    "   VENDREDI",EOT
 FCC    "   SAMEDI",EOT
 FCC    "   DIMANCHE",EOT
HORLO5  LDX    #BUFUDA   GET THE DAY
 JSR    FORDAY
 LDB    #1
 JSR    OUTDEC    PRINT THE DAY
 LDA    #$20
 JSR    TCHR
 LDA    BUFTDA
 STA    SYSDAY    STORE IN SYSTEM DAY
 LDX    #BUFUMO   GET HE MONTH 
 JSR    FORDAY
 LDA    BUFTMO    GET THE MONTH
 LDX    #MONTH-10 PINPOINT TO THE TABLE
 LDB    #$0A
 MUL
 LEAX   D,X
HORLO6  LDA    0,X+
 CMPA   #4        CHAR EOT
 BEQ    HORLO7
 JSR    TCHR
 BRA    HORLO6
MONTH   FCC    "JANVIER",EOT
 FCC    "  FEVRIER",EOT
 FCC    "  MARS",EOT
 FCC    "     AVRIL",EOT
 FCC    "    MAI",EOT
 FCC    "      JUIN",EOT
 FCC    "     JUILLET",EOT
 FCC    "  AOUT",EOT
 FCC    "     SEPTEMBRE",EOT
 FCC    "OCTOBRE",EOT
 FCC    "  NOVEMBRE",EOT
 FCC    " DECEMBRE",EOT
 FCB    $20
HORLO7  LDA    BUFTMO    LOAD MONTH
 STA    SYSMTH    STORE IN SYSTEM MONTH
 LDA    #$20      SPACE
 JSR    TCHR      PRINT SPACE
 LDA    SYSYR     LOAD SYSTEM YEAR
* MODIFICATION FOR Y2K
 CMPA   #100      COMPARE TO 100
 BLO    Y2K1      CONTINUE IF LOWER THAN 100
 SUBA   #100      SUBSTRACT 100
Y2K1    STA    TEMP2     STORE lo PART
 CLR    TEMP1     CLEAR hi PART
 CMPA   #75       COMPARE TO YR 75
 BHI    Y2K2      IF HIGHER LOAD 1900
 LDD    #$07D0    2000
 JMP    Y2K3
Y2K2    LDD    #$076C    1900
Y2K3    LDX    TEMP1     TAKE THE YEAR
 LEAX   D,X       ADD 1900
 STX    TEMP1     STORE IN TEMP1
 LDX    #TEMP1
 LDB    #1
 JSR    OUTDEC    PRINT THE YEAR
 LDA    #$20      SPACE
 JSR    TCHR      PRINT 3 SPACES
 JSR    TCHR
 JSR    TCHR
 LDA    BUFTHO    GET THE TEN OF HOURS
 ORA    #$30
 JSR    TCHR      PRINT IT
 LDA    BUFUHO    GET THE UNIT OF HOURS
 ORA    #$30
 JSR    TCHR      PRINT IT 
 LDA    #$3A      PRINT SEPARATOR
 JSR    TCHR
 LDA    BUFTMI    GET THE TEN OF MINUTES
 ORA    #$30
 JSR    TCHR      PRINT IT
 LDA    BUFUMI    GET THE UNIT OF MINUTES
 ORA    #$30
 JSR    TCHR      PRINT IT
 LDA    #$3A      PRINT SEPARATOR
 JSR    TCHR
 LDA    BUFTSE    GET THE TEN OF SECONDS
 ORA    #$30
 JSR    TCHR      PRINT IT
 LDA    BUFUSE    GET THE UNIT OF SECONDS
 ORA    #$30
 JSR    TCHR      PRINT IT
 JSR    PCRLF     PRINT CR & LF
 JMP    WARMS     RETURNS TO FLEX
FORDAY  LDA    #$0A
 LDB    1,X
 MUL
 ADDB   0,X
 CLRA
 STD    0,X
 RTS
MAKBYT  LDA    #$0A
 LDB    0,X
 MUL
 ADDB   1,X
 CLRA
 STD    0,X
 RTS
            
* ON ERROR SET THE DATE MANUALLY
ERROR   LDX    #NORTC    GET ERROR MESSAGE
 JSR    PSTRNG    PRINT IT
 LDX    #NORTC1   GET ERROR MESSAGE
 JSR    PSTRNG    PRINT IT
  LDX    #BUF10S   PINPOINT TO THE BUFFER
ERROR1  JSR    GETCHR    GET THE CHARACTER
 CMPX   #BUF10S
 BEQ    ERROR2
 CMPA   #8        LOOP 8 TIMES
 BNE    ERROR2
 LEAX   -1,X
 BRA    ERROR1
ERROR2  STA    0,X+
 CMPX   #BUFTDA
 BNE    ERROR1
 LDA    BUF10S
 ANDA   #7        FILTER 3 LAST BITS
 STA    BUF10S
 LDA    BUFUSE
 ANDA   #$0F      FILTER 4 LAST BITS
 STA    BUFUSE
 LDX    #BUF10S   COMPUTE THE DAY
 JSR    MAKBYT
 LDA    BUFUSE
 STA    SYSDAY    STORE IN SYSTEM DAY
 LDA    BUFUMI
 ANDA   #1        FILTER LESS THAN 1
 STA    BUFUMI
 LDA    BUFTMI
 ANDA   #$0F      FILTER 4 LAST BITS
 STA    BUFTMI
 LDX    #BUFUMI   COMPUTE THE MONTH
 JSR    MAKBYT
 LDA    BUFTMI
 STA    SYSMTH    STORE IN SYSTEM MONTH
 LDA    BUFTHO
 ANDA   #$0F      FILTER 4 LAST BITS
 STA    BUFTHO
 LDA    BUFUDA
 ANDA   #$0F      FILTER 4 LAST BITS
 STA    BUFUDA
 LDX    #BUFTHO   COMPUTE THE YEAR
 JSR    MAKBYT
 LDA    BUFUDA
 STA    SYSYR     STORE IN SYSTEM YEAR
 JMP    WARMS
NORTC   FCC    "HORLOGE ABSENTE OU HEURE"
 FCC    " ERRONEE ",EOT
NORTC1  FCC    "DATE (JJ/MM/AA) ? ",EOT
 END    CMDADR





