Compare commits

...
2 Commits
Author SHA1 Message Date
maddiebaka 9013cff6b1 Move buffers out of zero page 2026-08-15 17:58:12 -04:00
maddiebaka 35843dff63 Commit partial changes. vars should be DS 2026-07-23 05:21:36 -04:00
+80 -9
View File
@@ -14,6 +14,8 @@ bdos equ 0005h
conout equ 02h conout equ 02h
conin equ 01h conin equ 01h
char_idx equ 10h
start: start:
call init_lcd call init_lcd
call init_siob call init_siob
@@ -39,7 +41,9 @@ start:
main: main:
call read_char_b call read_char_b
call print_char_to_lcd call parse_char
;call lcd_delay
;call print_char_to_lcd
ld c,11 ld c,11
call bdos call bdos
or a or a
@@ -88,6 +92,10 @@ delay1:
jr nz,delay1 jr nz,delay1
ret ret
convert_to_hpa:
ld a,(pressure)
ret
read_char_b: read_char_b:
wait: wait:
in a,(siob_ctrl) in a,(siob_ctrl)
@@ -97,7 +105,72 @@ wait:
in a,(siob_data) in a,(siob_data)
ret ret
parse_char: ; char should be in register a
cp a,25h ; percent sign (end of transmission)
jr z,print_telem_to_lcd
cp a,0dh ; carriage return
jr z,null_term
cp a,0ah ; new line
jr z,parse_char_done
cp a,054h ; T character
jr z,set_char_idx_t ; point the char_idx to the temperature buffer
cp a,050h ; P character
jr z,set_char_idx_p ; point the char_idx to the pressure buffer
cp a,048h ; H character
jr z,set_char_idx_h ; point the char_idx to the humidity buffer
ld bc,(char_idx) ; get address stored in char_idx
ld (bc),a ; deref that address and store char
inc bc
ld (char_idx),bc ; store incremented address in char_idx
;out (lcd_data),a
parse_char_done:
ret
print_telem_to_lcd:
call move_to_tempaddr
ld hl,temperature
call print_str_to_lcd
call move_to_presaddr
ld hl,pressure
call print_str_to_lcd
call move_to_humidaddr
ld hl,humidity
call print_str_to_lcd
ld a,1h
out (0),a
ret
null_term: ; null terminate end of parsed string in memory
ld a,00h
ld bc,(char_idx)
ld (bc),a
jr parse_char_done
set_char_idx_t:
ld bc,temperature
ld (char_idx),bc
ret
set_char_idx_p:
ld bc,pressure
ld (char_idx),bc
ret
set_char_idx_h:
ld bc,humidity
ld (char_idx),bc
ret
print_char_to_lcd: print_char_to_lcd:
cp a,00h ; null byte
jr z,lcd_done
cp a,0dh ; carriage return cp a,0dh ; carriage return
jr z,lcd_done jr z,lcd_done
cp a,0ah ; new line cp a,0ah ; new line
@@ -129,27 +202,25 @@ move_to_tempaddr:
ld a,85h ld a,85h
out (lcd_ctrl),a out (lcd_ctrl),a
ld a,c ld a,c
call lcd_delay
ret ret
move_to_presaddr: move_to_presaddr:
ld a,0c1h ld a,0c1h
out (lcd_ctrl),a out (lcd_ctrl),a
call lcd_delay
ret ret
move_to_humidaddr: move_to_humidaddr:
ld a,99h ld a,99h
out (lcd_ctrl),a out (lcd_ctrl),a
ret call lcd_delay
print_char:
ld e,a
ld c,conout
call bdos
ret ret
clabel: DB 'degree C',0 clabel: DB 'degree C',0
plabel: DB 'pascal',0 plabel: DB 'pascal',0
hlabel: DB '% RH',0 hlabel: DB '% RH',0
end start temperature: DS 16
humidity: DS 16
pressure: DS 16