From 93245434c070984d76db47aa1677a13750222951 Mon Sep 17 00:00:00 2001 From: b1ackmai1er Date: Sun, 19 Feb 2023 21:47:51 +0800 Subject: [PATCH] Device display optimizations --- Source/HBIOS/hbios.asm | 54 +++++++++++++----------------------------- 1 file changed, 16 insertions(+), 38 deletions(-) diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 1acbc65d..6766e870 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -6546,7 +6546,7 @@ PS_DISK: LD B,BF_DIODEVICE ; FUNC=GET DEVICE INFO, UNIT NUM STILL IN C RST 08 ; DE:=DEVTYP/NUM, H:=DISK ATTRIBUTES PUSH BC ; SAVE ATTRIBUTES - LD HL,PS_DDSTRREF ; POINT TO DISK DEVICE TYPE NAME TABLE + LD HL,PS_DDMD ; POINT TO DISK DEVICE TYPE NAME TABLE CALL PS_PRTDEV ; PRINT DISK DEVICE NMEMONIC PADDED TO FIELD WIDTH POP DE ; RECOVER ATTRIBUTES TO DE PUSH DE ; SAVE ATTRIBUTES AGAIN @@ -6666,7 +6666,7 @@ PS_SERIAL: LD B,BF_CIODEVICE ; FUNC=GET DEVICE INFO, UNIT NUM STILL IN C RST 08 ; DE:=DEVTYP/NUM, C:=DEVICE ATTRIBUTES PUSH BC ; SAVE ATTRIBUTES - LD HL,PS_SDSTRREF ; POINT TO SERIAL DEVICE TYPE NAME TABLE + LD HL,PS_SDUART ; POINT TO SERIAL DEVICE TYPE NAME TABLE CALL PS_PRTDEV ; PRINT SERIAL DEVICE NMEMONIC PADDED TO FIELD WIDTH POP BC ; RECOVER ATTRIBUTES PUSH BC ; SAVE ATTRIBUTES AGAIN @@ -6816,7 +6816,7 @@ PS_VIDEO: LD B,BF_VDADEV ; FUNC=GET DEVICE INFO, UNIT NUM STILL IN C RST 08 ; DE:=DEVTYP/NUM, H:=DISK ATTRIBUTES PUSH BC ; SAVE ATTRIBUTES - LD HL,PS_VDSTRREF ; POINT TO VIDEO DEVICE TYPE NAME TABLE + LD HL,PS_VDVDU ; POINT TO VIDEO DEVICE TYPE NAME TABLE CALL PS_PRTDEV ; PRINT VIDEO DEVICE NMEMONIC PADDED TO FIELD WIDTH POP DE ; RECOVER ATTRIBUTES PUSH DE ; SAVE ATTRIBUTES AGAIN @@ -6920,23 +6920,16 @@ PS_SOUND: ; PRINT DEVICE NMEMONIC, DEVTYP/NUM SPECIFIED IN DE ; PS_PRTDEV: - LD A,D - RRCA ; TYPE IS IN UPPER NIBBLE, MOVE TO LOWER NIBBLE - RRCA - RRCA - RRCA - RLCA ; X2 FOR WORD OFFSET IN STRING TABLE - CALL ADDHLA - LD A,(HL) - INC HL - LD H,(HL) - LD L,A - CALL PS_PRT ; PRINT $ TERM STRING AT (HL), C:=CHARS PRINTED - LD A,E ; NUM + EX DE,HL + LD C,H + LD A,11110000B ; TYPE IS IN UPPER NIBBLE + CALL PRTIDXMSK + LD A,L ; UNIT NUMBER CALL PRTDECB ; PRINT NUM, ASSUME 1 CHAR CALL PC_COLON ; PRINT COLON - LD A,12 - 2 ; 12 CHAR FIELD - 1 POS FOR UNIT NUM AND 1 POS FOR COLON - SUB C + LD A,(PRTIDXCNT) + SUB 12-2+1 ; 12 CHAR FIELD - 1 POS FOR UNIT NUM AND 1 POS FOR COLON + NEG CALL PS_PAD ; PAD N SPACES (SPECIFIED IN A) RET ; @@ -6946,11 +6939,9 @@ PS_PRTNUL: LD HL,PS_STRNUL ; FALL THRU TO PS_PRT ; +; PRINT STRING AT (HL), $ TERM, RETURN CHARS PRINTED IN C ; -; -PS_PRT: - ; PRINT STRING AT (HL), $ TERM, RETURN CHARS PRINTED IN C - LD C,0 ; INIT CHAR COUNT +PS_PRT: LD C,0 ; INIT CHAR COUNT PS_PRT1: LD A,(HL) ; GET CHAR INC HL ; BUMP INDEX @@ -6960,11 +6951,9 @@ PS_PRT1: INC C ; BUMP COUNTER JR PS_PRT1 ; AND LOOP ; +; PAD N SPACES SPECIFIED IN A ; -; -PS_PAD: - ; PAD N SPACES SPECIFIED IN A - LD B,A +PS_PAD: LD B,A LD A,' ' PS_PAD1: CALL COUT @@ -6981,10 +6970,6 @@ PS_STRNUL .TEXT "--$" ; DISPLAY STRING FOR NUL VALUE ; ; DISK DEVICE STRINGS ; -PS_DDSTRREF: - .DW PS_DDMD, PS_DDFD, PS_DDRF, PS_DDIDE, PS_DDATAPI, PS_DDPPIDE - .DW PS_DDSD, PS_DDPRPSD, PS_DDPPPSD, PS_DDHDSK -; PS_DDMD .TEXT "MD$" PS_DDFD .TEXT "FD$" PS_DDRF .TEXT "RF$" @@ -7030,10 +7015,6 @@ PS_FLP_DSTR: .TEXT "SD$" ; PS_FLPSD ; ; CHARACTER DEVICE STRINGS ; -PS_SDSTRREF: - .DW PS_SDUART, PS_SDASCI, PS_SDTERM, PS_SDPRPCON, PS_SDPPPCON - .DW PS_SDSIO, PS_SDACIA, PS_SDPIO, PS_SDUF, PS_SDDUART, PS_SDZ2U, PS_SDLPT -; PS_SDUART .TEXT "UART$" PS_SDASCI .TEXT "ASCI$" PS_SDTERM .TEXT "TERM$" @@ -7064,9 +7045,6 @@ PIO_MODE_STR: .TEXT "Output$" ; ; VIDEO DEVICE STRINGS ; -PS_VDSTRREF: - .DW PS_VDVDU, PS_VDCVDU, PS_VDGDC, PS_VDTMS, PS_VDVGA -; PS_VDVDU .TEXT "VDU$" PS_VDCVDU .TEXT "CVDU$" PS_VDGDC .TEXT "GDC$" @@ -7312,7 +7290,7 @@ SLACK .EQU BNKTOP - $ #ENDIF ; #IF (CCP_SIZ > SLACK) - .ECHO "*** ERROR: Insufficient space for CBIOS Cache.\n" + .ECHO "*** ERROR: Insufficient space for CCP cache.\n" !!! ; FORCE AN ASSEMBLY ERROR #ENDIF ;