.include "time.inc"
.include "cbm510.inc"
- .include "extzp.inc"
+ .include "extzp.inc"
- .import sys_bank, restore_bank
- .importzp tmp1, tmp2
+ .import sys_bank, restore_bank
+ .importzp tmp1, tmp2
;----------------------------------------------------------------------------
.code
-.proc __systime
+.proc __systime
; Switch to the system bank
- jsr sys_bank
+ jsr sys_bank
; Read the clock
- ldy #CIA::TODHR
- lda (cia2),y
- bpl AM
- and #%01111111
- sed
- clc
- adc #$12
- cld
-AM: jsr BCD2dec
- sta TM + tm::tm_hour
- ldy #CIA::TODMIN
- lda (cia2),y
- jsr BCD2dec
- sta TM + tm::tm_min
- ldy #CIA::TODSEC
- lda (cia2),y
- jsr BCD2dec
- sta TM + tm::tm_sec
- ldy #CIA::TOD10
- lda (cia2),y ; Dummy read to unfreeze
+ ldy #CIA::TODHR
+ lda (cia2),y
+ bpl AM
+ and #%01111111
+ sed
+ clc
+ adc #$12
+ cld
+AM: jsr BCD2dec
+ sta TM + tm::tm_hour
+ ldy #CIA::TODMIN
+ lda (cia2),y
+ jsr BCD2dec
+ sta TM + tm::tm_min
+ ldy #CIA::TODSEC
+ lda (cia2),y
+ jsr BCD2dec
+ sta TM + tm::tm_sec
+ ldy #CIA::TOD10
+ lda (cia2),y ; Dummy read to unfreeze
; Restore the bank
- jsr restore_bank
+ jsr restore_bank
; Convert to a time
- lda #<TM
- ldx #>TM
- jmp _mktime
+ lda #<TM
+ ldx #>TM
+ jmp _mktime
.endproc
;----------------------------------------------------------------------------
; dec = (((BCD>>4)*10) + (BCD&0xf))
-.proc BCD2dec
+.proc BCD2dec
- tax
- and #%00001111
- sta tmp1
- txa
+ tax
+ and #%00001111
+ sta tmp1
+ txa
and #%11110000 ; *16
lsr ; *8
sta tmp2
; TM struct with date set to 1970-01-01
.data
-TM: .word 0 ; tm_sec
+TM: .word 0 ; tm_sec
.word 0 ; tm_min
.word 0 ; tm_hour
.word 1 ; tm_mday