progress on FAT16 support
This commit is contained in:
130
OperatingSystem/monitor_v2/include/cmd_io.s
Normal file
130
OperatingSystem/monitor_v2/include/cmd_io.s
Normal file
@@ -0,0 +1,130 @@
|
||||
OP_IO_IN:
|
||||
push DE
|
||||
pop HL
|
||||
call DHEX_TO_BYTE
|
||||
ld c,a ;store result in b
|
||||
ld a,e ;check for error
|
||||
and a
|
||||
jp nz, ERR_SYNTAX
|
||||
in a,(c)
|
||||
push af
|
||||
call print_newLine
|
||||
pop af
|
||||
call print_a_hex
|
||||
ret
|
||||
|
||||
OP_IO_OUT:
|
||||
push DE
|
||||
pop HL
|
||||
call DHEX_TO_BYTE
|
||||
ld c,a ;store result in b
|
||||
ld a,e ;check for error
|
||||
and a
|
||||
jp nz, ERR_SYNTAX
|
||||
inc hl
|
||||
inc hl
|
||||
ld a,(hl)
|
||||
cp ' '
|
||||
jp nz, ERR_SYNTAX
|
||||
inc hl
|
||||
call DHEX_TO_BYTE
|
||||
push af
|
||||
ld a,e ;check for error
|
||||
and a
|
||||
jp nz, ERR_SYNTAX
|
||||
pop af
|
||||
out (c),a
|
||||
ret
|
||||
|
||||
OP_IIC_OUT:
|
||||
push DE
|
||||
pop HL
|
||||
call DHEX_TO_BYTE ;load start addr
|
||||
ld (var_scratch+1),A ;store result in ram
|
||||
ld a,e ;check for error
|
||||
and a
|
||||
jp nz, ERR_SYNTAX
|
||||
inc hl
|
||||
inc hl
|
||||
LD BC,[var_scratch + 2]
|
||||
XOR A
|
||||
LD (var_scratch),A
|
||||
_OP_IIC_OUT_LOOP:
|
||||
ld a,(hl)
|
||||
cp 0 ;if 0 then end
|
||||
jp z,_OP_IIC_OUT_SEND
|
||||
cp ' '
|
||||
jp nz, ERR_SYNTAX
|
||||
inc hl ;next byte
|
||||
|
||||
call DHEX_TO_BYTE
|
||||
ld (bc),a
|
||||
inc bc ;incerement pointer
|
||||
ld a,(var_scratch)
|
||||
inc a ;increment counter
|
||||
ld (var_scratch),a
|
||||
inc HL
|
||||
inc HL
|
||||
jr _OP_IIC_OUT_LOOP
|
||||
_OP_IIC_OUT_SEND:
|
||||
ld hl,[var_scratch + 2]
|
||||
ld a,(var_scratch) ;load amount of bytes
|
||||
ld b,a
|
||||
ld a,(var_scratch+1) ;load start addr
|
||||
ld c,a
|
||||
call iic_send_buffer
|
||||
or a
|
||||
jp nz, _OP_IIC_ACK_ERR
|
||||
ret
|
||||
|
||||
_OP_IIC_ACK_ERR:
|
||||
LD HL,[_OP_IIC_ACK_ERR_str]
|
||||
call print_str
|
||||
ret
|
||||
_OP_IIC_ACK_ERR_str:
|
||||
db 10,13,"bus-error: no ACK",0
|
||||
|
||||
OP_IIC_IN:
|
||||
push DE
|
||||
pop HL
|
||||
call DHEX_TO_BYTE ;load start addr
|
||||
ld C,a ;store start addr to B
|
||||
ld a,e ;check for error
|
||||
and a
|
||||
jp nz, ERR_SYNTAX
|
||||
inc hl
|
||||
inc hl
|
||||
ld a,(hl)
|
||||
cp ' '
|
||||
jp nz, ERR_SYNTAX
|
||||
inc hl
|
||||
call DHEX_TO_BYTE ;read length
|
||||
ld b,a ;store length in B
|
||||
push bc
|
||||
ld a,e ;check for error
|
||||
and a
|
||||
jp nz, ERR_SYNTAX
|
||||
ld hl,[var_scratch]
|
||||
call iic_receive_buffer
|
||||
pop bc
|
||||
or a
|
||||
jp nz, _OP_IIC_ACK_ERR
|
||||
ld hl,[_OP_IIC_IN_LOOP_TEXT]
|
||||
call print_str
|
||||
ld hl,[var_scratch]
|
||||
;print data
|
||||
_OP_IIC_IN_LOOP:
|
||||
ld a,(hl)
|
||||
call print_a_hex
|
||||
ld a, ' '
|
||||
call print_char
|
||||
inc hl
|
||||
djnz _OP_IIC_IN_LOOP
|
||||
ret
|
||||
|
||||
_OP_IIC_IN_LOOP_TEXT:
|
||||
db 10,13,"rec-buff: ",0
|
||||
|
||||
OP_CLR:
|
||||
call print_clear
|
||||
ret
|
||||
Reference in New Issue
Block a user