diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 6766e870..4210ffd9 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -6564,25 +6564,14 @@ PS_PRTDT: LD A,E ; ATTRIBUTES TO A BIT 7,A ; FLOPPY BIT SET? LD HL,PS_DTFLOP ; ASSUME FLOPPY - JR NZ,PS_PRTDT1 ; IF FLOPPY, JUMP AHEAD - RRCA ; SHIFT TYPE BITS - RRCA - RRCA - AND $07 ; AND ISOLATE THEM - RLCA ; X2 FOR WORD OFFSET IN STRING TABLE - LD HL,PS_DTSTRREF + 2 ; POINT TO STR REF TABLE (SKIP FLOPPY STRING) - CALL ADDHLA - LD A,(HL) - INC HL - LD H,(HL) - LD L,A -; -PS_PRTDT1: - CALL PS_PRT ; PRINT $ TERM STRING AT (HL), C:=CHARS PRINTED - LD A,18 ; 18 CHAR FIELD - SUB C - CALL PS_PAD ; PAD N SPACES (SPECIFIED IN A) - RET + JP NZ,PS_PRT18 ; IF FLOPPY, JUMP AHEAD + + LD C,E + LD DE,PS_DTHARD + LD A,00111000B + CALL PRTIDXMSK + CALL PS_PAD18 ; PAD TO 18 SPACES + RET ; ; PRINT DISK CAPACITY (UNIT IN C, ATTRIBUTE IN E) ; @@ -6683,23 +6672,17 @@ PS_SERIAL: PS_PRTST: LD HL,PS_STPPT BIT 6,C - JR NZ,PS_PRTST1 ; PARALLEL TYPE? + JP NZ,PS_PRT18 ; PARALLEL TYPE? LD HL,PS_STRS232 ; ASSUME RS-232 BIT 7,C ; 0=RS-232, 1=TERMINAL - JR Z,PS_PRTST1 ; HANDLE TERMINAL TYPE + JP Z,PS_PRT18 ; HANDLE TERMINAL TYPE LD HL,PS_STTERM ; TYPE IS TERMINAL -; -PS_PRTST1: - CALL PS_PRT ; PRINT $ TERM STRING AT (HL), C:=CHARS PRINTED - LD A,18 ; 18 CHAR FIELD - SUB C - CALL PS_PAD ; PAD N SPACES (SPECIFIED IN A) - RET + JP PS_PRT18 ; ; PRINT SERIAL CONFIG (UNIT IN E, ATTRIBUTE IN C) ; PS_PRTSC: - BIT 6,C ; PARALLEL TYPE? + BIT 6,C ; PARALLEL TYPE? JR NZ,PSPRTPC0 BIT 7,C ; 0=RS-232, 1=TERMINAL @@ -6832,11 +6815,7 @@ PS_VIDEO: ; PS_PRTVT: LD HL,PS_VTCRT ; ASSUME CRT - CALL PS_PRT ; PRINT $ TERM STRING AT (HL), C:=CHARS PRINTED - LD A,18 ; 18 CHAR FIELD - SUB C - CALL PS_PAD ; PAD N SPACES (SPECIFIED IN A) - RET + JP PS_PRT18 ; PRINT ; ; PRINT VIDEO CONFIG (UNIT IN C, ATTRIBUTE IN E) ; @@ -6887,19 +6866,14 @@ PS_SOUND: LD B,BF_SNDQUERY ; FUNC=GET DEVICE INFO, UNIT NUM STILL IN C LD E,BF_SNDQ_DEV RST 08 - LD A,B - RLCA - RLCA - RLCA - RLCA - AND $0F + PUSH BC + LD C,B + LD A,11110000B ; TYPE IS IN UPPER NIBBLE LD DE,PS_SDSN76489 - CALL PRTIDXDEA - LD A,(PRTIDXCNT) - SUB 18 ; SUBTRACT FIELD WIDTH - NEG ; MAKE IT A POSITIVE NUMBER - CALL PS_PAD ; PAD AS NEEDED - + CALL PRTIDXMSK + CALL PS_PAD18 + POP BC +; ; DEVICE CHARACTERISTICS ; LD B,BF_SNDQUERY ; FUNC=GET DEVICE INFO, UNIT NUM STILL IN C @@ -6951,6 +6925,22 @@ PS_PRT1: INC C ; BUMP COUNTER JR PS_PRT1 ; AND LOOP ; +; PAD 18 CHARACTER FIELD +; +PS_PAD18: + LD A,(PRTIDXCNT) + LD C,A + JR PS_PRT18A +; +; PRINT STRING AT HL IN 18 CHARACTER FIELD +; +PS_PRT18: + CALL PS_PRT ; PRINT $ TERM STRING AT (HL), C:=CHARS PRINTED +PS_PRT18A: + LD A,18 ; 18 CHAR FIELD + SUB C +; CALL PS_PAD ; PAD N SPACES (SPECIFIED IN A) +; ; PAD N SPACES SPECIFIED IN A ; PS_PAD: LD B,A @@ -6983,10 +6973,6 @@ PS_DDHDSK .TEXT "HDSK$" ; ; DISK TYPE STRINGS ; -PS_DTSTRREF: - .DW PS_DTFLOP, PS_DTHARD, PS_DTCF, PS_DTSD - .DW PS_DTUSB, PS_DTROM, PS_DTRAM, PS_DTRF, PS_DTFSH -; PS_DTFLOP .TEXT "Floppy Disk$" PS_DTHARD .TEXT "Hard Disk$" PS_DTCF .TEXT "CompactFlash$" diff --git a/Source/HBIOS/util.asm b/Source/HBIOS/util.asm index 0c914540..328edc65 100644 --- a/Source/HBIOS/util.asm +++ b/Source/HBIOS/util.asm @@ -140,8 +140,9 @@ PRTSTRD: ; PRINT A STRING INDIRECT: REFERENCED BY INDIRECT POINTER AT TOP OF STACK ; STRING MUST BE TERMINATED BY '$' ; USAGE: -; CALL PRTSTRI(MYSTRING) ; MYSTRING .DB "HELLO$" +; CALL PRTSTRI(MYSTRING) +; .DW MYSTRING ; PRTSTRI: EX (SP),HL @@ -366,13 +367,13 @@ WRITESTR: WRITESTR1: LD A,(DE) CP '$' ; TEST FOR STRING TERMINATOR - JP Z,WRITESTR2 + JR Z,WRITESTR2 CALL COUT LD A,(PRTIDXCNT) INC A LD (PRTIDXCNT),A INC DE - JP WRITESTR1 + JR WRITESTR1 WRITESTR2: POP AF RET