summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeo C2020-03-16 14:11:37 +0100
committerLeo C2020-03-16 14:11:37 +0100
commite8a98308cd28da296993a9085df28dc5957de86d (patch)
tree6d8d5993ad2b663c9962da1658e53f1c1411d7da
parente8b62d9ac855de6439580c15ee12f496a94c5e5d (diff)
downloadz180-stamp-cpm3-e8a98308cd28da296993a9085df28dc5957de86d.zip
refactor print utils
-rw-r--r--cbios/Makefile12
-rw-r--r--cbios/boot.18010
-rw-r--r--cbios/cfio.18067
-rw-r--r--cbios/misc.18013
-rw-r--r--cbios/sdio.18063
-rw-r--r--cbios/utils.180140
6 files changed, 134 insertions, 171 deletions
diff --git a/cbios/Makefile b/cbios/Makefile
index e1d1875..c9878ad 100644
--- a/cbios/Makefile
+++ b/cbios/Makefile
@@ -69,10 +69,10 @@ LN_DATA = F000
.suffixes:
#.suffixes: .180 .rel
-.phony: all
+.PHONY: all
all: sys
-.phony: sys bios map asym ldr
+.PHONY: sys bios map asym ldr
sys: $(SYSFILE)
bios: bnkbios3.spr
map: $(MAPFILE)
@@ -101,7 +101,7 @@ ccpline = $(CPMEMU) $(1) -$(subst $(space),$(comma),$(strip $(2)))
define cpm-asm =
COMMAND="$(AS) -$(basename $<)/$(AS_OPT)"; \
OUTPUT=$$(mktemp); echo $${COMMAND}; \
-$${COMMAND} > $${OUTPUT}; \
+$${COMMAND} > $${OUTPUT} < $<; \
grep -q '^ 0 Error(s) Detected' $${OUTPUT}; ERROR=$$? ; \
if [ "$${ERROR}" != "0" ]; then cat $${OUTPUT}; rm -f $@; fi ; \
exit $${ERROR}
@@ -175,11 +175,11 @@ bnkbios3.spr : $(OBJ)
@$(cpm-asm)
-.phony: bin-dist
+.PHONY: bin-dist
bin-dist: $(SYSFILE) $(MAPFILE) cpmldr.com
$(ZIP) -9 $(DIST_NAME_BIN) $(SYSFILE) $(MAPFILE) $(ASYMFILE) cpmldr.com
-.phony: dist
+.PHONY: dist
dist: $(SYSFILE) $(MAPFILE) $(ASYMFILE) cpmldr.com
$(GIT) archive --format=zip --prefix=$(PREFIX)/ -9 -o $(DIST_NAME) HEAD^{tree}
@mkdir -p $(PREFIX)
@@ -188,7 +188,7 @@ dist: $(SYSFILE) $(MAPFILE) $(ASYMFILE) cpmldr.com
@$(RM) -r $(PREFIX)
-.phony: clean realclean
+.PHONY: clean realclean
clean:
$(RM) $(ALLOBJ) $(ALLLST) *.sym
diff --git a/cbios/boot.180 b/cbios/boot.180
index 9594459..ee32505 100644
--- a/cbios/boot.180
+++ b/cbios/boot.180
@@ -73,10 +73,10 @@ hwinit:
ld (@cbnk),a ; right now in bank 0
call pr.inln ; print signon message
- db 13,10,13,10,'CP/M Version 3.0, Z180-Stamp BIOS v'
+ db 13,10,13,10,'CP/M Version 3.1, Z180-Stamp BIOS v'
defvers
db 13,10
- db 'Estimated CPU clock [Hz]: ',0
+ dc 'Estimated CPU clock [Hz]: '
ld hl,(f_cpu)
ld de,(f_cpu+2)
@@ -115,12 +115,12 @@ hwinit:
; now, copy CCP to bank 0 for reloading
- ld bc,2*256 + tpa$bank ; c: src$bnk, b: dst$bnk
+ ld bc,2*256 + tpa$bank ; b: dst$bnk, c: src$bnk
jr mov_ccp
; just copy in the other direction
?rlccp:
- ld bc,tpa$bank*256 + 2 ; c: src$bnk, b: dst$bnk
+ ld bc,tpa$bank*256 + 2 ; b: dst$bnk, c: src$bnk
mov_ccp:
call ?xmove
ld hl,0100h
@@ -132,7 +132,7 @@ mov_ccp:
no$ccp: ; here if we couldn't find the file
call pr.inln ; report this...
- db 13,10,'BIOS Err on A: No CCP.COM file',0
+ dc 13,10,'BIOS Err on A: No CCP.COM file'
call ?conin ; get a response
jr ?ldccp ; and try again
diff --git a/cbios/cfio.180 b/cbios/cfio.180
index bd31aa4..c5960cb 100644
--- a/cbios/cfio.180
+++ b/cbios/cfio.180
@@ -26,7 +26,7 @@
extrn pr.inln ; print inline message
extrn pr.decl ; print 32 bit decimal number
extrn pr.errors ; print BIOS disk error header
- extrn ?cono ; console out
+ extrn ?pchar ; console out
extrn bnk2phy ; translate banked to physical linear address
extrn add_hla ; add <A> to <HL>
extrn gstimer ; get timer short (16 bit)
@@ -193,7 +193,7 @@ dpbsimhd512:
cf$init0:
call pr.inln ;
- db 'cfio: CompactFlash Memory Card driver',0
+ dc 'cfio: CompactFlash Memory Card driver'
ld hl,parttbl ; Clear partition table
ld b,PARTENTRY_SIZE*MAXDISKS
@@ -263,7 +263,7 @@ pend:
nocard:
call pr.inln
- db ": No Card",cr,lf,0
+ dc ': No Card',cr,lf
ret
@@ -365,24 +365,11 @@ cfi_error:
pr_char_nlbl:
bit 0,b
- jr z,pr_char
+ jp z,?pchar
cp ' '
ret z
res 0,b
- ; fall thru
-
-; print character, saving hl, de, bc
-
-pr_char:
- push hl
- push de
- push bc
- ld c,a
- call ?cono
- pop bc
- pop de
- pop hl
- ret
+ jp ?pchar
;-------------------------------------------------------------------------------
@@ -502,23 +489,23 @@ prn_lp1:
prnt_info:
call pr.inln
- db cr,lf,' Model: ',0
+ dc cr,lf,' Model: '
ld hl,tmpsecbuf + 27*2 ; Model number
ld c,20*2 ; max character count
call pr_id ;
call pr.inln
- db ', S/N: ',0
+ dc ', S/N: '
ld hl,tmpsecbuf + 10*2 ; Serial number
ld c, 10*2
call pr_id
call pr.inln
- db ', Rev: ',0
+ dc ', Rev: '
ld hl,tmpsecbuf + 23*2 ; Firmware revision
ld c, 4*2
call pr_id
call pr.inln
- db cr,lf,' Size: ',0
+ dc cr,lf,' Size: '
ld hl,(tmpsecbuf+60*2) ;Total Sectors Addressable in LBA Mode
ld de,(tmpsecbuf+61*2) ;
push hl
@@ -526,7 +513,7 @@ prnt_info:
ld bc,1
call pr.decl
call pr.inln
- db ' Sectors (',0
+ dc ' Sectors ('
pop de
pop hl
srl d
@@ -536,7 +523,7 @@ prnt_info:
ld bc,1
call pr.decl
call pr.inln
- db ' KiB)',cr,lf,0
+ dc ' KiB)',cr,lf
ret
; Print partition table info
@@ -553,14 +540,14 @@ prp_lp:
ret z
push bc
- call pr.inln
- db ' ',0
ld a,(@adrv)
add a,c
add a,'A'
- call pr_char
+ ld (prp_dm),a
call pr.inln
- db ': CP/M partition at: ',0
+ db ' '
+prp_dm: db 'A'
+ dc ': CP/M partition at: '
ld l,(ix+PTAB_START+0)
ld h,(ix+PTAB_START+1)
ld e,(ix+PTAB_START+2)
@@ -568,7 +555,7 @@ prp_lp:
ld bc,1
call pr.decl
call pr.inln
- db ', size: ',0
+ dc ', size: '
ld l,(ix+PTAB_SIZE+0)
ld h,(ix+PTAB_SIZE+1)
ld e,(ix+PTAB_SIZE+2)
@@ -580,7 +567,7 @@ prp_lp:
ld bc,1
call pr.decl
call pr.inln
- db 'KiB',cr,lf,0
+ dc 'KiB',cr,lf
ld bc,PARTENTRY_SIZE
add ix,bc
pop bc
@@ -801,16 +788,16 @@ errm1:
; error message components
msg$drq:
- db 'DRQ, ',0
-
-b7$msg: db ' Bad Block detected,',0
-b6$msg: db ' Uncorrectable Data Error,',0
-b5$msg: db ' Media Changed,',0
-b4$msg: db ' Sector ID Not Found,',0
-b3$msg: db ' Media Change Requst,',0
-b2$msg: db ' Aborted Command,',0
-b1$msg: db ' Track 0 Not Found,',0
-b0$msg: db ' AM Not Found (or general error),',0
+ dc 'DRQ, '
+
+b0$msg: dc ' AM Not Found (or general error),'
+b1$msg: dc ' Track 0 Not Found,'
+b2$msg: dc ' Aborted Command,'
+b3$msg: dc ' Media Change Requst,'
+b4$msg: dc ' Sector ID Not Found,'
+b5$msg: dc ' Media Changed,'
+b6$msg: dc ' Uncorrectable Data Error,'
+b7$msg: dc ' Bad Block detected,'
db 0
;-------------------------------------------------------------------------------
diff --git a/cbios/misc.180 b/cbios/misc.180
index 3c36572..58122f8 100644
--- a/cbios/misc.180
+++ b/cbios/misc.180
@@ -3,7 +3,7 @@
public cpu_frq
public get_tmr
- extrn div32_r,?pmsg
+ extrn div32_r,pr.inln
extrn msg.sm,msg.recv,hwl2phy
maclib z180reg.inc
@@ -67,16 +67,13 @@ sp.i.1:
add a,'0'
ld (spi$nr),a
- ld hl,spi$msg
- call ?pmsg
-sp.i.2:
- halt
- jr sp.i.2
-
-spi$msg:
+ call pr.inln
db 13,10,'Spurious Int: '
spi$nr: db '0'
db 0
+sp.i.2:
+ halt
+ jr sp.i.2
;--------------------------------------------------------------------
;
diff --git a/cbios/sdio.180 b/cbios/sdio.180
index 8803874..cc81bab 100644
--- a/cbios/sdio.180
+++ b/cbios/sdio.180
@@ -22,9 +22,8 @@
; Utility routines
extrn ?wboot ; warm boot vector
- extrn ?pmsg ; print message @<HL>
extrn pr.idx ; print indexed message
- extrn pr.inln,pr.crlf ; print inline message, print <cr><lf>
+ extrn pr.inln ; print inline message
extrn pr.errors ; print BIOS disk error header
extrn bnk2phy ; translate banked to physical linear address
extrn msg.sm ; send message to AVR
@@ -142,7 +141,7 @@ dpbsimhd512:
sd$init0:
call pr.inln ;
- db 'sdio: SD Card driver'cr,lf,0
+ dc 'sdio: SD Card driver',cr,lf
ret
sd$init1:
@@ -317,7 +316,7 @@ fatfs_err:
ret z ; no fatfs error
call pr.inln
- db 'FatFs: ',0
+ dc 'FatFs: '
ld hl,fr$msg0 ; point at first FatFs message
ld a,(recv_msg_rc+1)
@@ -357,38 +356,38 @@ recv_msg_len equ $ - recv_msg
; error message components
; general driver errors
-drvmsg0: db 'Unknown Error, ',0
-drvmsg1: db 'Invalid Parameter(s), ',0
-drvmsg2: db 'Invalid Drive, ',0
-drvmsg3: db 'Bus Timeout, ',0
-drvmsg4: db 'Access beyond disk size, ',0
-drvmsg5: db 'Write protected, ',0
-drvmsg6: db 'No media, ',0
+drvmsg0: dc 'Unknown Error, '
+drvmsg1: dc 'Invalid Parameter(s), '
+drvmsg2: dc 'Invalid Drive, '
+drvmsg3: dc 'Bus Timeout, '
+drvmsg4: dc 'Access beyond disk size, '
+drvmsg5: dc 'Write protected, '
+drvmsg6: dc 'No media, '
db 0
; fat file system errors
-fr$msg0: db 'Unknown Error,',0
-fr$msg1: db 'DISK_ERR,',0
-fr$msg2: db 'INT_ERR,',0
-fr$msg3: db 'NOT_READY,',0
-fr$msg4: db 'NO_FILE,',0
-fr$msg5: db 'NO_PATH,',0
-fr$msg6: db 'INVALID_NAME,',0
-fr$msg7: db 'DENIED,',0
-fr$msg8: db 'EXIST,',0
-fr$msg9: db 'INVALID_OBJECT,',0
-fr$msg10: db 'WRITE_PROTECTED,',0
-fr$msg11: db 'INVALID_DRIVE,',0
-fr$msg12: db 'NOT_ENABLED,',0
-fr$msg13: db 'NO_FILE_SYSTEM,',0
-fr$msg14: db 'MKFS_ABORTED,',0
-fr$msg15: db 'TIMEOUT,',0
-fr$msg16: db 'LOCKED,',0
-fr$msg17: db 'NOT_ENOUGH_CORE,',0
-fr$msg18: db 'TOO_MANY_OPEN_FILES,',0
-fr$msg19: db 'FR_INVALID_PARAMETER,',0
-fr$msg20: db 'short read/write,',0
+fr$msg0: dc 'Unknown Error,'
+fr$msg1: dc 'DISK_ERR,'
+fr$msg2: dc 'INT_ERR,'
+fr$msg3: dc 'NOT_READY,'
+fr$msg4: dc 'NO_FILE,'
+fr$msg5: dc 'NO_PATH,'
+fr$msg6: dc 'INVALID_NAME,'
+fr$msg7: dc 'DENIED,'
+fr$msg8: dc 'EXIST,'
+fr$msg9: dc 'INVALID_OBJECT,'
+fr$msg10: dc 'WRITE_PROTECTED,'
+fr$msg11: dc 'INVALID_DRIVE,'
+fr$msg12: dc 'NOT_ENABLED,'
+fr$msg13: dc 'NO_FILE_SYSTEM,'
+fr$msg14: dc 'MKFS_ABORTED,'
+fr$msg15: dc 'TIMEOUT,'
+fr$msg16: dc 'LOCKED,'
+fr$msg17: dc 'NOT_ENOUGH_CORE,'
+fr$msg18: dc 'TOO_MANY_OPEN_FILES,'
+fr$msg19: dc 'FR_INVALID_PARAMETER,'
+fr$msg20: dc 'short read/write,'
db 0
end
diff --git a/cbios/utils.180 b/cbios/utils.180
index 08c5fd0..4b74750 100644
--- a/cbios/utils.180
+++ b/cbios/utils.180
@@ -12,7 +12,7 @@
; print utils
- public ?pmsg ; print message
+ public ?pchar,?pmsg ; print char <A>, print message (<HL>)
public pr.idx ; print message from table indexed by <A>
public pr.inln,pr.crlf ; print message inline, print newline
public phex2,phex4 ; print 2 digit hex <A> or 4 digit hex <HL>
@@ -213,76 +213,62 @@ div_no_restore: ;
ret
;-------------------------------------------------------------------------------
-; print message @<HL> up to a null
-; saves <BC> & <DE>
-
-?pmsg:
- push bc
- push de
-pmsg$loop:
- ld a,(hl)
- inc hl
- or a
- jr z,pmsg$exit
- ld c,a
- push hl
- call ?cono
- pop hl
- jr pmsg$loop
-pmsg$exit:
- pop de
- pop bc
- ret
-
-;-------------------------------------------------------------------------------
; print message from table @<HL>, indexed by <A>
; saves <BC> & <DE>
pr.idx:
push bc
- push de
push hl ; put pointer to first message on stack
- ld e,a ; save message number
+ ld b,a ; save message number
+ or a
+ jr z,pdc_done
xor a
- ld b,a
- ld c,a
- inc e
-pdc_nxt_str:
- dec e
- ex (sp),hl
- jr z,pdc_found
- ex (sp),hl
- cpir
+pdc_skip:
+ bit 7,(hl)
+ inc hl
+ jr z,pdc_skip
cp (hl)
- jr nz,pdc_nxt_str
- ; End of List, msg not found.
- ; Print first msg.
-pdc_found:
- pop hl
- call ?pmsg
- pop de
+ jr z,pdc_done ; End of List, msg not found. Print first msg.
+ djnz pdc_skip
+ ex (sp),hl ; Remove first msg from stack
+pdc_done:
+ pop hl ; Get msg. to print
pop bc
+ ;fall thru
+
+;-------------------------------------------------------------------------------
+; print message @<HL> up to a null
+; saves <BC> & <DE>
+
+?pmsg:
+ ld a,(hl)
+ inc hl
+ and 07fh
+ ret z
+ call ?pchar
+ dec hl
+ bit 7,(hl)
+ inc hl
+ jr z,?pmsg
ret
;-------------------------------------------------------------------------------
; print message inline up to a null
-; saves all registers
+; saves <BC>, <DE>, <HL>
pr.inln:
ex (sp),hl
- push af
call ?pmsg
- pop af
ex (sp),hl
ret
;-------------------------------------------------------------------------------
; print <CR><LF>
-; saves all registers
+; saves <BC>, <DE>, <HL>
pr.crlf:
call pr.inln
- db cr,lf,0
+ dc cr,lf
ret
;-------------------------------------------------------------------------------
@@ -309,32 +295,32 @@ phex2:
pop af
print.digit:
- push hl
- push de
- push bc
- push af
- and 00fh
- cp 10
- jr c,prd_1
- add a,007h
-prd_1:
- add a,'0'
+ daa
+ add a,0a0h
+ adc a,040h
+ ;fall thru
+
+;-------------------------------------------------------------------------------
+; print character in a
+; saves <BC>, <DE>, <HL>
+?pchar:
+ push bc
+ push de
+ push hl
ld c,a
call ?cono
- pop af
- pop bc
- pop de
pop hl
+ pop de
+ pop bc
ret
-
;-------------------------------------------------------------------------------
; print decimal 16 bit number from HL
;
; HL: unsigned binary number to print
; C: minimum print field width
-; number is prined right-aligned
+; number is printed right-aligned
; B: pad character, typically ' ' or '0'
pr.dec:
@@ -349,7 +335,7 @@ pr.dec:
;
; DEHL: unsigned binary number to print
; C: minimum print field width
-; number is prined right-aligned
+; number is printed right-aligned
; B: pad character, typically ' ' or '0'
pr.decl:
@@ -408,28 +394,22 @@ prd_out:
;-------------------------------------------------------------------------------
?pderr:
- ld hl,drive$msg
- call ?pmsg ; error header
ld a,(@adrv)
add a,'A'
- ld c,a
- call ?cono ; drive code
- ld hl,track$msg
- call ?pmsg ; track header
+ ld (msg_drv),a
+ call pr.inln ; error header
+ db cr,lf,bell,'BIOS Error on '
+msg_drv:
+ db 'A'
+ dc ': T-'
ld c,0
ld hl,(@trk)
call pr.dec ; track number
- ld hl,sector$msg
- call ?pmsg ; sector header
+ call pr.inln ; sector header
+ dc ', S-'
ld hl,(@sect)
jp pr.dec ; sector number
- ; error message components
-drive$msg: db cr,lf,bell,'BIOS Error on ',0
-track$msg: db ': T-',0
-sector$msg: db ', S-',0
-
-
;-------------------------------------------------------------------------------
; get console input, echo it, and shift to upper case
; save hl,de,bc
@@ -490,7 +470,7 @@ pre1:
pre2:
; prompt for retry
call pr.inln
- db ' Retry (Y/N) ? ',0
+ dc ' Retry (Y/N) ? '
call uciecho ; get operator response
cp 'Y'
@@ -498,9 +478,9 @@ pre2:
op$msg:
- db ', Unknown op, ',0
- db ', Read, ',0
- db ', Write, ',0
+ dc ', Unknown op, '
+ dc ', Read, '
+ dc ', Write, '
db 0
end