Reformat with z80fmt
This commit is contained in:
+226
-226
@@ -1,226 +1,226 @@
|
||||
org 100h
|
||||
|
||||
siob_data equ 083h
|
||||
siob_ctrl equ 082h
|
||||
|
||||
lcd_data equ 0dbh
|
||||
lcd_ctrl equ 0dah
|
||||
|
||||
celcius_offset equ 08ah
|
||||
pressure_offset equ 0cah
|
||||
humid_offset equ 09eh
|
||||
|
||||
bdos equ 0005h
|
||||
conout equ 02h
|
||||
conin equ 01h
|
||||
|
||||
char_idx equ 10h
|
||||
|
||||
start:
|
||||
call init_lcd
|
||||
call init_siob
|
||||
call lcd_delay
|
||||
|
||||
ld a,celcius_offset ; write celcius label
|
||||
out (lcd_ctrl),a
|
||||
call lcd_delay
|
||||
ld hl,clabel
|
||||
call print_str_to_lcd
|
||||
|
||||
ld a,pressure_offset ; write pressure label
|
||||
out (lcd_ctrl),a
|
||||
call lcd_delay
|
||||
ld hl,plabel
|
||||
call print_str_to_lcd
|
||||
|
||||
ld a,humid_offset ; write humidity label
|
||||
out (lcd_ctrl),a
|
||||
call lcd_delay
|
||||
ld hl,hlabel
|
||||
call print_str_to_lcd
|
||||
|
||||
main:
|
||||
call read_char_b
|
||||
call parse_char
|
||||
;call lcd_delay
|
||||
;call print_char_to_lcd
|
||||
ld c,11
|
||||
call bdos
|
||||
or a
|
||||
jr z,main
|
||||
ret
|
||||
|
||||
init_siob:
|
||||
ld a,018h ; channel reset
|
||||
out (siob_ctrl),a
|
||||
|
||||
ld a,04h
|
||||
out (siob_ctrl),a ; wr4 baud settings
|
||||
ld a,0c4h
|
||||
out (siob_ctrl),a
|
||||
|
||||
ld a,03h
|
||||
out (siob_ctrl),a ; rx enable
|
||||
ld a,0c1h
|
||||
out (siob_ctrl),a
|
||||
|
||||
ld a,05h
|
||||
out (siob_ctrl),a ; tx settings
|
||||
ld a,0eah
|
||||
out (siob_ctrl),a
|
||||
|
||||
ret
|
||||
|
||||
init_lcd:
|
||||
ld a,38h
|
||||
out (lcd_ctrl),a ; function 8 bit, 2 lines, 5x8 dot font
|
||||
call lcd_delay
|
||||
ld a,0ch
|
||||
out (lcd_ctrl),a ; display on, cursor off, no blink
|
||||
call lcd_delay
|
||||
ld a,01h
|
||||
out (lcd_ctrl),a ; clear display
|
||||
|
||||
ret
|
||||
|
||||
lcd_delay:
|
||||
ld bc,500
|
||||
delay1:
|
||||
dec bc
|
||||
ld a,b
|
||||
or c
|
||||
jr nz,delay1
|
||||
ret
|
||||
|
||||
convert_to_hpa:
|
||||
ld a,(pressure)
|
||||
ret
|
||||
|
||||
read_char_b:
|
||||
wait:
|
||||
in a,(siob_ctrl)
|
||||
bit 0,a
|
||||
jr z,wait
|
||||
|
||||
in a,(siob_data)
|
||||
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:
|
||||
cp a,00h ; null byte
|
||||
jr z,lcd_done
|
||||
cp a,0dh ; carriage return
|
||||
jr z,lcd_done
|
||||
cp a,0ah ; new line
|
||||
jr z,lcd_done
|
||||
cp a,054h ; T character
|
||||
call z,move_to_tempaddr
|
||||
cp a,050h ; P character
|
||||
call z,move_to_presaddr
|
||||
cp a,048h ; H character
|
||||
call z,move_to_humidaddr
|
||||
out (lcd_data),a
|
||||
lcd_done:
|
||||
ret
|
||||
|
||||
print_str_to_lcd: ; place memory address in hl first
|
||||
ld a,(hl)
|
||||
or a
|
||||
jr z,print_done
|
||||
|
||||
out (lcd_data),a
|
||||
call lcd_delay
|
||||
inc hl
|
||||
jr print_str_to_lcd
|
||||
print_done:
|
||||
ret
|
||||
|
||||
move_to_tempaddr:
|
||||
ld c,a
|
||||
ld a,85h
|
||||
out (lcd_ctrl),a
|
||||
ld a,c
|
||||
call lcd_delay
|
||||
ret
|
||||
|
||||
move_to_presaddr:
|
||||
ld a,0c1h
|
||||
out (lcd_ctrl),a
|
||||
call lcd_delay
|
||||
ret
|
||||
|
||||
move_to_humidaddr:
|
||||
ld a,99h
|
||||
out (lcd_ctrl),a
|
||||
call lcd_delay
|
||||
ret
|
||||
|
||||
clabel: DB 'degree C',0
|
||||
plabel: DB 'pascal',0
|
||||
hlabel: DB '% RH',0
|
||||
|
||||
temperature: DS 16
|
||||
humidity: DS 16
|
||||
pressure: DS 16
|
||||
org 100h
|
||||
|
||||
siob_data equ 083h
|
||||
siob_ctrl equ 082h
|
||||
|
||||
lcd_data equ 0dbh
|
||||
lcd_ctrl equ 0dah
|
||||
|
||||
celcius_offset equ 08ah
|
||||
pressure_offset equ 0cah
|
||||
humid_offset equ 09eh
|
||||
|
||||
bdos equ 0005h
|
||||
conout equ 02h
|
||||
conin equ 01h
|
||||
|
||||
char_idx equ 10h
|
||||
|
||||
start:
|
||||
call init_lcd
|
||||
call init_siob
|
||||
call lcd_delay
|
||||
|
||||
ld a,celcius_offset ; write celcius label
|
||||
out (lcd_ctrl),a
|
||||
call lcd_delay
|
||||
ld hl,clabel
|
||||
call print_str_to_lcd
|
||||
|
||||
ld a,pressure_offset ; write pressure label
|
||||
out (lcd_ctrl),a
|
||||
call lcd_delay
|
||||
ld hl,plabel
|
||||
call print_str_to_lcd
|
||||
|
||||
ld a,humid_offset ; write humidity label
|
||||
out (lcd_ctrl),a
|
||||
call lcd_delay
|
||||
ld hl,hlabel
|
||||
call print_str_to_lcd
|
||||
|
||||
main:
|
||||
call read_char_b
|
||||
call parse_char
|
||||
;call lcd_delay
|
||||
;call print_char_to_lcd
|
||||
ld c,11
|
||||
call bdos
|
||||
or a
|
||||
jr z,main
|
||||
ret
|
||||
|
||||
init_siob:
|
||||
ld a,018h ; channel reset
|
||||
out (siob_ctrl),a
|
||||
|
||||
ld a,04h
|
||||
out (siob_ctrl),a ; wr4 baud settings
|
||||
ld a,0c4h
|
||||
out (siob_ctrl),a
|
||||
|
||||
ld a,03h
|
||||
out (siob_ctrl),a ; rx enable
|
||||
ld a,0c1h
|
||||
out (siob_ctrl),a
|
||||
|
||||
ld a,05h
|
||||
out (siob_ctrl),a ; tx settings
|
||||
ld a,0eah
|
||||
out (siob_ctrl),a
|
||||
|
||||
ret
|
||||
|
||||
init_lcd:
|
||||
ld a,38h
|
||||
out (lcd_ctrl),a ; function 8 bit, 2 lines, 5x8 dot font
|
||||
call lcd_delay
|
||||
ld a,0ch
|
||||
out (lcd_ctrl),a ; display on, cursor off, no blink
|
||||
call lcd_delay
|
||||
ld a,01h
|
||||
out (lcd_ctrl),a ; clear display
|
||||
|
||||
ret
|
||||
|
||||
lcd_delay:
|
||||
ld bc,500
|
||||
delay1:
|
||||
dec bc
|
||||
ld a,b
|
||||
or c
|
||||
jr nz,delay1
|
||||
ret
|
||||
|
||||
convert_to_hpa:
|
||||
ld a,(pressure)
|
||||
ret
|
||||
|
||||
read_char_b:
|
||||
wait:
|
||||
in a,(siob_ctrl)
|
||||
bit 0,a
|
||||
jr z,wait
|
||||
|
||||
in a,(siob_data)
|
||||
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:
|
||||
cp a,00h ; null byte
|
||||
jr z,lcd_done
|
||||
cp a,0dh ; carriage return
|
||||
jr z,lcd_done
|
||||
cp a,0ah ; new line
|
||||
jr z,lcd_done
|
||||
cp a,054h ; T character
|
||||
call z,move_to_tempaddr
|
||||
cp a,050h ; P character
|
||||
call z,move_to_presaddr
|
||||
cp a,048h ; H character
|
||||
call z,move_to_humidaddr
|
||||
out (lcd_data),a
|
||||
lcd_done:
|
||||
ret
|
||||
|
||||
print_str_to_lcd: ; place memory address in hl first
|
||||
ld a,(hl)
|
||||
or a
|
||||
jr z,print_done
|
||||
|
||||
out (lcd_data),a
|
||||
call lcd_delay
|
||||
inc hl
|
||||
jr print_str_to_lcd
|
||||
print_done:
|
||||
ret
|
||||
|
||||
move_to_tempaddr:
|
||||
ld c,a
|
||||
ld a,85h
|
||||
out (lcd_ctrl),a
|
||||
ld a,c
|
||||
call lcd_delay
|
||||
ret
|
||||
|
||||
move_to_presaddr:
|
||||
ld a,0c1h
|
||||
out (lcd_ctrl),a
|
||||
call lcd_delay
|
||||
ret
|
||||
|
||||
move_to_humidaddr:
|
||||
ld a,99h
|
||||
out (lcd_ctrl),a
|
||||
call lcd_delay
|
||||
ret
|
||||
|
||||
clabel: DB 'degree C',0
|
||||
plabel: DB 'pascal',0
|
||||
hlabel: DB '% RH',0
|
||||
|
||||
temperature: DS 16
|
||||
humidity: DS 16
|
||||
pressure: DS 16
|
||||
|
||||
Reference in New Issue
Block a user