diff options
author | Leo C | 2020-03-16 14:11:37 +0100 |
---|---|---|
committer | Leo C | 2020-03-16 14:11:37 +0100 |
commit | e8a98308cd28da296993a9085df28dc5957de86d (patch) | |
tree | 6d8d5993ad2b663c9962da1658e53f1c1411d7da | |
parent | e8b62d9ac855de6439580c15ee12f496a94c5e5d (diff) | |
download | z180-stamp-cpm3-e8a98308cd28da296993a9085df28dc5957de86d.zip |
refactor print utils
-rw-r--r-- | cbios/Makefile | 12 | ||||
-rw-r--r-- | cbios/boot.180 | 10 | ||||
-rw-r--r-- | cbios/cfio.180 | 67 | ||||
-rw-r--r-- | cbios/misc.180 | 13 | ||||
-rw-r--r-- | cbios/sdio.180 | 63 | ||||
-rw-r--r-- | cbios/utils.180 | 140 |
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
|