progress on FAT16 support
This commit is contained in:
201
OperatingSystem/monitor_v2/include/cmd_date.s
Normal file
201
OperatingSystem/monitor_v2/include/cmd_date.s
Normal file
@@ -0,0 +1,201 @@
|
||||
ADDR_RTC .equ 0xD0
|
||||
|
||||
OP_RTIME:
|
||||
call print_newLine
|
||||
_OP_RTIME_NN:
|
||||
;set pointer
|
||||
ld hl,[_OP_RTIME_RD_CMD]
|
||||
ld b, 1
|
||||
ld c, ADDR_RTC
|
||||
call iic_send_buffer
|
||||
or a
|
||||
jp nz, _OP_IIC_ACK_ERR
|
||||
;read RTC data
|
||||
ld hl,[var_scratch]
|
||||
ld b,8
|
||||
ld c, ADDR_RTC
|
||||
call iic_receive_buffer
|
||||
or a
|
||||
jp nz, _OP_IIC_ACK_ERR
|
||||
;process display hours
|
||||
ld a,(var_scratch+2)
|
||||
and 00110000b
|
||||
RRA
|
||||
RRA
|
||||
RRA
|
||||
RRA
|
||||
call print_bcd
|
||||
ld a,(var_scratch+2)
|
||||
and 00001111b
|
||||
call print_bcd
|
||||
ld a,':'
|
||||
call print_char
|
||||
;display minutes
|
||||
ld a,(var_scratch+1)
|
||||
and 01110000b
|
||||
RRA
|
||||
RRA
|
||||
RRA
|
||||
RRA
|
||||
call print_bcd
|
||||
ld a,(var_scratch+1)
|
||||
and 00001111b
|
||||
call print_bcd
|
||||
ld a,':'
|
||||
call print_char
|
||||
;display seconds
|
||||
ld a,(var_scratch+0)
|
||||
and 01110000b
|
||||
RRA
|
||||
RRA
|
||||
RRA
|
||||
RRA
|
||||
call print_bcd
|
||||
ld a,(var_scratch+0)
|
||||
and 00001111b
|
||||
call print_bcd
|
||||
ld a,' '
|
||||
call print_char
|
||||
;display date
|
||||
ld a,(var_scratch+4)
|
||||
and 00110000b
|
||||
RRA
|
||||
RRA
|
||||
RRA
|
||||
RRA
|
||||
call print_bcd
|
||||
ld a,(var_scratch+4)
|
||||
and 00001111b
|
||||
call print_bcd
|
||||
ld a,'.'
|
||||
call print_char
|
||||
ld a,(var_scratch+5)
|
||||
and 00010000b
|
||||
RRA
|
||||
RRA
|
||||
RRA
|
||||
RRA
|
||||
call print_bcd
|
||||
ld a,(var_scratch+5)
|
||||
and 00001111b
|
||||
call print_bcd
|
||||
ld a,'.'
|
||||
call print_char
|
||||
ld a,'2'
|
||||
call print_char
|
||||
ld a,'0'
|
||||
call print_char
|
||||
ld a,(var_scratch+6)
|
||||
and 11110000b
|
||||
RRA
|
||||
RRA
|
||||
RRA
|
||||
RRA
|
||||
call print_bcd
|
||||
ld a,(var_scratch+6)
|
||||
and 00001111b
|
||||
call print_bcd
|
||||
|
||||
RET
|
||||
_OP_RTIME_RD_CMD:
|
||||
db 0x00
|
||||
|
||||
_OP_STIME_STR_DAY: db 10,13,"Enter Date (00-31) : ",0
|
||||
_OP_STIME_STR_MON: db 10,13,"Enter Month (00-12) : ",0
|
||||
_OP_STIME_STR_YEAR: db 10,13,"Enter Year (00-99) : ",0
|
||||
_OP_STIME_STR_HOUR: db 10,13,"Enter Hours (00-23) : ",0
|
||||
_OP_STIME_STR_MIN: db 10,13,"Enter Minutes (00-59) : ",0
|
||||
_OP_STIME_STR_SEC: db 10,13,"Enter Seconds (00-59) : ",0
|
||||
_OP_STIME_INVALID: db " invaild input. Retry!",0
|
||||
;HL contains pointer to stack
|
||||
;BC returns value (BCD)
|
||||
_OP_STIME_PROMPT:
|
||||
push hl
|
||||
call print_str
|
||||
pop hl
|
||||
call read_bcd
|
||||
cp 0xFF ;if failed
|
||||
jp Z, _OP_STIME_PROMPT_ERR
|
||||
ld b,a
|
||||
call read_bcd
|
||||
cp 0xFF ;if failed
|
||||
jp Z, _OP_STIME_PROMPT_ERR
|
||||
ld c,a
|
||||
ret
|
||||
_OP_STIME_PROMPT_ERR:
|
||||
push HL
|
||||
ld hl, [_OP_STIME_INVALID]
|
||||
call print_str
|
||||
pop hl
|
||||
jp _OP_STIME_PROMPT
|
||||
|
||||
|
||||
|
||||
OP_STIME:
|
||||
xor a
|
||||
ld (var_scratch),a ;set pointer
|
||||
;date
|
||||
ld hl, [_OP_STIME_STR_DAY]
|
||||
call _OP_STIME_PROMPT
|
||||
ld a,b
|
||||
call _shift4
|
||||
and 00110000b ;mask bits; bit6 low -> 24h mode
|
||||
or c ;add second digit
|
||||
ld (var_scratch+5),a
|
||||
;month
|
||||
ld hl, [_OP_STIME_STR_MON]
|
||||
call _OP_STIME_PROMPT
|
||||
ld a,b
|
||||
call _shift4
|
||||
and 00010000b ;mask bits; bit6 low -> 24h mode
|
||||
or c ;add second digit
|
||||
ld (var_scratch+6),a
|
||||
;year
|
||||
ld hl, [_OP_STIME_STR_YEAR]
|
||||
call _OP_STIME_PROMPT
|
||||
ld a,b
|
||||
call _shift4
|
||||
and 11110000b ;mask bits; bit6 low -> 24h mode
|
||||
or c ;add second digit
|
||||
ld (var_scratch+7),a
|
||||
;hours
|
||||
ld hl, [_OP_STIME_STR_HOUR]
|
||||
call _OP_STIME_PROMPT
|
||||
ld a,b
|
||||
call _shift4
|
||||
and 00110000b ;mask bits; bit6 low -> 24h mode
|
||||
or c ;add second digit
|
||||
ld (var_scratch+3),a
|
||||
; minutes
|
||||
ld hl, [_OP_STIME_STR_MIN]
|
||||
call _OP_STIME_PROMPT
|
||||
ld a,b
|
||||
call _shift4
|
||||
and 01110000b ;mask bits
|
||||
or c ;add second digit
|
||||
ld (var_scratch+2),a
|
||||
; seconds
|
||||
ld hl, [_OP_STIME_STR_SEC]
|
||||
call _OP_STIME_PROMPT
|
||||
ld a,b
|
||||
call _shift4
|
||||
and 01110000b ;mask bits / bit6 low -> 24h mode (enable clock)
|
||||
or c ;add second digit
|
||||
ld (var_scratch+1),a
|
||||
inc de ;next
|
||||
|
||||
ld c, ADDR_RTC
|
||||
ld b, 8
|
||||
ld hl,[var_scratch]
|
||||
call iic_send_buffer
|
||||
or a
|
||||
jp nz, _OP_IIC_ACK_ERR
|
||||
|
||||
ret
|
||||
|
||||
_shift4:
|
||||
RLCA
|
||||
RLCA
|
||||
RLCA
|
||||
RLCA
|
||||
ret
|
||||
Reference in New Issue
Block a user