From a3a4e849656f67d0d19bc68806964d9a13639789 Mon Sep 17 00:00:00 2001 From: b1ackmai1er Date: Sun, 1 Sep 2019 13:55:28 +0800 Subject: [PATCH 1/3] Refactor of device summary --- Source/HBIOS/hbios.asm | 192 ++++++++++++++++++++++++----------------- Source/HBIOS/pio.asm | 39 ++++----- Source/HBIOS/util.asm | 27 +++++- 3 files changed, 156 insertions(+), 102 deletions(-) diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 79020f5d..01eead8f 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -1357,18 +1357,23 @@ HB_SPDTST: PRTX(STR_PLATFORM) ; LD A,(HB_CPUTYPE) ; GET CPU TYPE - OR A ; SET FLAGS - LD DE,HB_STRZ80 ; Z80 - JR Z,HB_PCPU ; IF Z80, PRINT IT - DEC A ; NEXT CPU TYPE - LD DE,HB_STRZ180 ; Z80180 - JR Z,HB_PCPU ; IF Z80180, PRINT IT - DEC A ; NEXT CPU TYPE - LD DE,HB_STRZS180K ; Z8S180 REV K - JR Z,HB_PCPU ; IF Z8S180-K, PRINT IT - LD DE,HB_STRZS180N ; Z8S180 REV N + LD DE,HB_CPU_STR ; DISPLAY IT + CALL PRTIDXDEA +; OR A ; SET FLAGS +; LD DE,HB_STRZ80 ; Z80 +; JR Z,HB_PCPU ; IF Z80, PRINT IT +; DEC A ; NEXT CPU TYPE +; LD DE,HB_STRZ180 ; Z80180 +; JR Z,HB_PCPU ; IF Z80180, PRINT IT +; DEC A ; NEXT CPU TYPE +; LD DE,HB_STRZS180K ; Z8S180 REV K +; JR Z,HB_PCPU ; IF Z8S180-K, PRINT IT +; LD DE,HB_STRZS180N ; Z8S180 REV N + + JR HB_PCPU ; PRINT Z8S180-N ; +HB_CPU_STR: HB_STRZ80 .TEXT " Z80$" HB_STRZ180 .TEXT " Z80180$" HB_STRZS180K .TEXT " Z8S180-K$" @@ -3016,7 +3021,6 @@ PRTD3M2: CALL COUT PRTD3M3: RET -; ;================================================================================================== ; DISPLAY SUMMARY OF ATTACHED UNITS/DEVICES ;================================================================================================== @@ -3026,58 +3030,100 @@ PRTSUM: LD DE,PS_STRHDR ; POINT TO HEADER CALL WRITESTR ; PRINT IT ; - ; PRINT DISK DEVICES - LD B,BF_SYSGET ; FUNC: SYSTEM INFO GET - LD C,BF_SYSGET_DIOCNT ; SUBFUNC: DISK UNIT COUNT - RST 08 ; E := DISK UNIT COUNT - LD B,E ; MOVE TO B FOR LOOP COUNT - LD A,E ; MOVE TO ACCUM - OR A ; SET FLAGS - JR Z,PRTSUM1A ; IF NONE, BYPASS - LD C,0 ; C WILL BE UNIT INDEX -PRTSUM1: - PUSH BC ; SAVE LOOP CONTROL - CALL PS_DISK ; PRINT DISK INFO - POP BC ; RESTORE LOOP CONTROL - INC C ; BUMP DISK UNIT INDEX - DJNZ PRTSUM1 ; LOOP THRU ALL DISK DEVICES + LD C,BF_SYSGET_CIOCNT ; CHARACTER DEVICES + LD HL,PS_SERIAL + CALL PRT_ALLD ; -PRTSUM1A: - ; PRINT SERIAL DEVICES - LD B,BF_SYSGET ; FUNC: SYSTEM INFO GET - LD C,BF_SYSGET_CIOCNT ; SUBFUNC: SERIAL UNIT COUNT - RST 08 ; E := SERIAL UNIT COUNT - LD B,E ; MOVE TO B FOR LOOP COUNT - LD A,E ; MOVE TO ACCUM - OR A ; SET FLAGS - JR Z,PRTSUM2A ; IF NONE, BYPASS - LD C,0 ; C WILL BE UNIT INDEX -PRTSUM2: - PUSH BC ; SAVE LOOP CONTROL - CALL PS_SERIAL ; PRINT SERIAL INFO - POP BC ; RESTORE LOOP CONTROL - INC C ; BUMP SERIAL UNIT INDEX - DJNZ PRTSUM2 ; LOOP THRU ALL SERIAL DEVICES + LD C,BF_SYSGET_DIOCNT ; DISK DRIVES + LD HL,PS_DISK + CALL PRT_ALLD + + LD C,BF_SYSGET_VDACNT ; VIDEO DEVICES + LD HL,PS_VIDEO + CALL PRT_ALLD + RET ; -PRTSUM2A: - ; PRINT VIDEO DEVICES +PRT_ALLD: LD B,BF_SYSGET ; FUNC: SYSTEM INFO GET - LD C,BF_SYSGET_VDACNT ; SUBFUNC: VIDEO UNIT COUNT - RST 08 ; E := SERIAL UNIT COUNT + RST 08 ; E := UNIT COUNT LD B,E ; MOVE TO B FOR LOOP COUNT LD A,E ; MOVE TO ACCUM OR A ; SET FLAGS - JR Z,PRTSUM3A ; IF NONE, BYPASS + JR Z,PRT_ALLD1 ; IF NONE, BYPASS LD C,0 ; C WILL BE UNIT INDEX -PRTSUM3: +PRT_ALLD1: PUSH BC ; SAVE LOOP CONTROL - CALL PS_VIDEO ; PRINT VIDEO INFO + PUSH DE + PUSH HL + CALL JPHL ; CALL THE ROUTINE PASSED IN HL + POP HL + POP DE POP BC ; RESTORE LOOP CONTROL - INC C ; BUMP VIDEO UNIT INDEX - DJNZ PRTSUM3 ; LOOP THRU ALL VIDEO DEVICES + INC C ; BUMP DISK UNIT INDEX + DJNZ PRT_ALLD1 ; LOOP THRU ALL DISK DEVICES + RET ; -PRTSUM3A: - RET ; DONE +;================================================================================================== +; DISPLAY SUMMARY OF ATTACHED UNITS/DEVICES +;================================================================================================== +; +;PRTSUM: +; CALL NEWLINE2 ; SKIP A LINE +; LD DE,PS_STRHDR ; POINT TO HEADER +; CALL WRITESTR ; PRINT IT +; +; ; PRINT DISK DEVICES +; LD B,BF_SYSGET ; FUNC: SYSTEM INFO GET +; LD C,BF_SYSGET_DIOCNT ; SUBFUNC: DISK UNIT COUNT +; RST 08 ; E := DISK UNIT COUNT +; LD B,E ; MOVE TO B FOR LOOP COUNT +; LD A,E ; MOVE TO ACCUM +; OR A ; SET FLAGS +; JR Z,PRTSUM1A ; IF NONE, BYPASS +; LD C,0 ; C WILL BE UNIT INDEX +;PRTSUM1: +; PUSH BC ; SAVE LOOP CONTROL +; CALL PS_DISK ; PRINT DISK INFO +; POP BC ; RESTORE LOOP CONTROL +; INC C ; BUMP DISK UNIT INDEX +; DJNZ PRTSUM1 ; LOOP THRU ALL DISK DEVICES +; +;PRTSUM1A: +; ; PRINT SERIAL DEVICES +; LD B,BF_SYSGET ; FUNC: SYSTEM INFO GET +; LD C,BF_SYSGET_CIOCNT ; SUBFUNC: SERIAL UNIT COUNT +; RST 08 ; E := SERIAL UNIT COUNT +; LD B,E ; MOVE TO B FOR LOOP COUNT +; LD A,E ; MOVE TO ACCUM +; OR A ; SET FLAGS +; JR Z,PRTSUM2A ; IF NONE, BYPASS +; LD C,0 ; C WILL BE UNIT INDEX +;PRTSUM2: +; PUSH BC ; SAVE LOOP CONTROL +; CALL PS_SERIAL ; PRINT SERIAL INFO +; POP BC ; RESTORE LOOP CONTROL +; INC C ; BUMP SERIAL UNIT INDEX +; DJNZ PRTSUM2 ; LOOP THRU ALL SERIAL DEVICES +; +;PRTSUM2A: +; ; PRINT VIDEO DEVICES +; LD B,BF_SYSGET ; FUNC: SYSTEM INFO GET +; LD C,BF_SYSGET_VDACNT ; SUBFUNC: VIDEO UNIT COUNT +; RST 08 ; E := SERIAL UNIT COUNT +; LD B,E ; MOVE TO B FOR LOOP COUNT +; LD A,E ; MOVE TO ACCUM +; OR A ; SET FLAGS +; JR Z,PRTSUM3A ; IF NONE, BYPASS +; LD C,0 ; C WILL BE UNIT INDEX +;PRTSUM3: +; PUSH BC ; SAVE LOOP CONTROL +; CALL PS_VIDEO ; PRINT VIDEO INFO +; POP BC ; RESTORE LOOP CONTROL +; INC C ; BUMP VIDEO UNIT INDEX +; DJNZ PRTSUM3 ; LOOP THRU ALL VIDEO DEVICES +; +;PRTSUM3A: +; RET ; DONE ; ; PRINT ONE LINE DISK UNIT/DEVICE INFO, DISK UNIT INDEX IN C ; @@ -3348,32 +3394,16 @@ PSPRTPC0: JP Z,PS_PRTNUL ; $FF == NO CONFIG DEFINED ; PS_PRTPC0: - LD A,E - RLCA - RLCA + LD A,E ; CONVERT THE TYPE TO + RLCA ; A TABLE INDEX 0..5 + RLCA ; AND DISPLAY THE TYPE AND 00000011B - JR NZ,PSPRTPC1 - PRTS("Output$") - RET -PSPRTPC1: - DEC A - JR NZ,PSPRTPC2 - PRTS("Input$") - RET -PSPRTPC2: - DEC A - JR NZ,PSPRTPC3 - PRTS("Bidirectional$") - RET -PSPRTPC3: - DEC A - JR NZ,PSPRTPC4 - PRTS("BitCtrl$") - RET -PSPRTPC4: - PRTS("Undefined$") + PUSH DE + LD DE,PIO_MODE_STR + CALL PRTIDXDEA + POP DE RET - +; PS_PRTSC1: ; PRINT TERMINAL CONFIG LD A,C ; GET ATTRIBUTE VALUE @@ -3578,10 +3608,14 @@ PS_STTERM .TEXT "Terminal$" PS_STPPT .TEXT "Parallel$" ; PS_STPARMAP .DB "NONENMNS" - ; -; SERIAL TYPE STRINGS +; PIO TYPE STRINGS ; +PIO_MODE_STR: + .TEXT "Output$" + .TEXT "Input$" + .TEXT "Bidirectional$" + .TEXT "BitCtrl$" ; ; VIDEO DEVICE STRINGS ; diff --git a/Source/HBIOS/pio.asm b/Source/HBIOS/pio.asm index 9baf014d..f9967606 100644 --- a/Source/HBIOS/pio.asm +++ b/Source/HBIOS/pio.asm @@ -24,8 +24,8 @@ ; would be required to support this configuration. As the HBIOS only has an allocation of ; 16, a full implmentation is impractical. ; -; The compromise solution is to allow 4 interrupts for the PIO driver.; All remaining PIO's -; are limited to Bit mode or blind read and writed to the input/output ports. +; The compromise solution is to allow 4 interrupts for the PIO driver. All remaining PIO's +; are limited to Bit mode or blind read and write to the input/output ports. ; ; Zilog PIO reset state: ; @@ -130,7 +130,7 @@ PIO_PREINIT0: ; PUSH HL ; SAVE IT ; POP IY ; ... TO IY - CALL IDXCFG + CALL IDXCFG LD (HL),C @@ -215,8 +215,12 @@ SKPINIT:DJNZ PIO_PREINIT0 ; LOOP UNTIL DONE XOR A ; SIGNAL SUCCESS RET ; AND RETURN ; -; X24 +; INDEX INTO THE CONFIG TABLE +; ON ENTRY C = UNIT NUMBER +; ON EXIT IY = CONFIG DATA POINTER +; ON EXIT DE = CONFIG TABLE START ; +; EACH CONFIG TABLE IS 24 BYTES LONG ; CFG_SIZ .EQU 24 ; @@ -778,14 +782,9 @@ PIO_PRTCFG: ; PRINT THE PIO TYPE CALL PC_SPACE ; FORMATTING LD A,(IY+1) ; GET PIO TYPE BYTE - RLCA ; MAKE IT A WORD OFFSET - LD HL,PIO_TYPE_MAP ; POINT HL TO TYPE MAP TABLE - CALL ADDHLA ; HL := ENTRY - LD E,(HL) ; DEREFERENCE - INC HL ; ... - LD D,(HL) ; ... TO GET STRING POINTER - CALL WRITESTR ; PRINT IT -; + LD DE,PIO_TYPE_STR ; POINT HL TO TYPE MAP TABLE + CALL PRTIDXDEA + ; ALL DONE IF NO PIO WAS DETECTED LD A,(IY+1) ; GET PIO TYPE BYTE OR A ; SET FLAGS @@ -812,16 +811,11 @@ PIO_DEV .DB 0 ; DEVICE NUM USED DURING INIT ; ; DESCRIPTION OF DIFFERENT PORT TYPES ; -PIO_TYPE_MAP: - .DW PIO_STR_NONE - .DW PIO_STR_PIO - .DW PIO_STR_8255 - .DW PIO_STR_PORT - -PIO_STR_NONE .DB "$" -PIO_STR_PIO .DB "Zilog PIO$" -PIO_STR_8255 .DB "i8255 PPI$" -PIO_STR_PORT .DB "IO Port$" +PIO_TYPE_STR: +PIO_STR_NONE .TEXT "$" ; IDX 0 +PIO_STR_PIO .TEXT "Zilog PIO$" ; IDX 1 +PIO_STR_8255 .TEXT "i8255 PPI$" ; IDX 2 +PIO_STR_PORT .TEXT "IO Port$" ; IDX 3 ; ; Z80 PIO PORT TABLE - EACH ENTRY IS FOR 1 CHIP I.E. TWO PORTS ; @@ -974,6 +968,7 @@ PIO_INIT1: ; POP AF ; CALL ADDHLA ; HL := ENTRY ADDRESS ; PUSH HL ; COPY CFG DATA PTR +; POP IY ; ... TO IY ; POP IY ; ... TO IY CALL IDXCFG diff --git a/Source/HBIOS/util.asm b/Source/HBIOS/util.asm index ad14ef6e..4e09b63d 100644 --- a/Source/HBIOS/util.asm +++ b/Source/HBIOS/util.asm @@ -295,7 +295,32 @@ DB_CONTD: JP DB_BLKRD ; DB_END: - RET ; + RET +; +; PRINT THE nTH STRING IN A LIST OF STRINGS WHERE EACH IS TERMINATED BY $ +; A REGISTER DEFINES THE nTH STRING IN THE LIST TO PRINT AND DE POINTS +; TO THE START OF THE STRING LIST. +; +; SLOW BUT IMPROVES CODE SIZE, READABILITY AND ELIMINATES THE NEED HAVE +; LIST OF POINTERS OR A LIST OF CONDITIONAL CHECKS. +; +PRTIDXDEA: + PUSH BC + LD C,A ; INDEX COUNT + OR A +PRTIDXDEA1: + JR Z,PRTIDXDEA3 +PRTIDXDEA2: + LD A,(DE) ; LOOP UNIT + INC DE ; WE REACH + CP '$' ; END OF STRING + JR NZ,PRTIDXDEA2 + DEC C ; AT STRING END. SO GO + JR PRTIDXDEA1 ; CHECK FOR INDEX MATCH +PRTIDXDEA3: + POP BC +; CALL WRITESTR ; FALL THROUGH TO WRITESTR +; RET ; ; OUTPUT A '$' TERMINATED STRING AT DE ; From 4cc4fc0ffe67b6c996429f6b43a9eb7de38cec10 Mon Sep 17 00:00:00 2001 From: b1ackmai1er Date: Sun, 1 Sep 2019 15:36:04 +0800 Subject: [PATCH 2/3] Refactor of device summary floppy --- Source/HBIOS/hbios.asm | 102 +++++++++++++++++++++++------------------ Source/HBIOS/util.asm | 24 ++++++++++ 2 files changed, 82 insertions(+), 44 deletions(-) diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 01eead8f..f3a8ee6b 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -3223,51 +3223,65 @@ PS_PRTDC1: ; PS_PRTDC2: LD C,E ; ATTRIBUTE TO C FOR SAFE KEEPING - ; PRINT FLOPPY TYPE - LD A,C ; ATTRIBUTE TO ACCUM - RLCA ; ISOLATE FORM FACTOR BITS - RLCA - RLCA - AND $03 - LD DE,PS_FLP8 ; ASSUME 8" - CP 0 - JR Z,PS_PRTDC2A - LD DE,PS_FLP5 ; ASSUME 5.25" - CP 1 - JR Z,PS_PRTDC2A - LD DE,PS_FLP3 ; ASSUME 3.5" - CP 2 - JR Z,PS_PRTDC2A - LD DE,PS_FLPN ; ASSUME OTHER" -PS_PRTDC2A: - CALL WRITESTR - ; PRINT FLOPPY SIDES - LD A,C ; ATTRIBUTE TO ACCUM - LD DE,PS_FLPSS ; ASSUME SINGLE SIDED - BIT 4,A ; DS? - JR Z,PS_PRTDC2B - LD DE,PS_FLPDS ; DOUBLE SIDED -PS_PRTDC2B: - CALL WRITESTR - ; PRINT FLOPPY DENSITY - LD A,C ; ATTRIBUTE TO ACCUM - RRCA ; ISOLATE DENSITY BITS - RRCA - AND $03 - LD DE,PS_FLPSD ; SINGLE DENSITY - CP 0 - JR Z,PS_PRTDC2C - LD DE,PS_FLPDD ; DOUBLE DENSITY - CP 1 - JR Z,PS_PRTDC2C - LD DE,PS_FLPHD ; HIGH DENSITY - CP 2 - JR Z,PS_PRTDC2C - LD DE,PS_FLPED ; EXTENDED DENSITY - CP 3 - JR Z,PS_PRTDC2C +; + LD A,01100000B ; DISPLAY FORM FACTOR + LD DE,PS_FLP8 ; WHICH IS DEFINED IN + CALL PRTIDXMSK ; BITS 5 AND 6. +; + LD A,00010000B ; DISPLAY SIDES + LD DE,PS_FLPSS ; WHICH IS DEFINED + CALL PRTIDXMSK ; IN BIT 4 +; + LD A,00001100B ; DISPLAY DENSITY + LD DE,PS_FLPSD ; WHICH IS DEFINED IN + CALL PRTIDXMSK ; BITS 1 AND 2. +; +; ; PRINT FLOPPY TYPE +; LD A,C ; ATTRIBUTE TO ACCUM +; RLCA ; ISOLATE FORM FACTOR BITS +; RLCA +; RLCA +; AND $03 +; LD DE,PS_FLP8 ; ASSUME 8" +; CP 0 +; JR Z,PS_PRTDC2A +; LD DE,PS_FLP5 ; ASSUME 5.25" +; CP 1 +; JR Z,PS_PRTDC2A +; LD DE,PS_FLP3 ; ASSUME 3.5" +; CP 2 +; JR Z,PS_PRTDC2A +; LD DE,PS_FLPN ; ASSUME OTHER" +;PS_PRTDC2A: +; CALL WRITESTR +;; ; PRINT FLOPPY SIDES +; LD A,C ; ATTRIBUTE TO ACCUM +; LD DE,PS_FLPSS ; ASSUME SINGLE SIDED +; BIT 4,A ; DS? +; JR Z,PS_PRTDC2B +; LD DE,PS_FLPDS ; DOUBLE SIDED +;PS_PRTDC2B: +; CALL WRITESTR +; ; PRINT FLOPPY DENSITY +; LD A,C ; ATTRIBUTE TO ACCUM +; RRCA ; ISOLATE DENSITY BITS +; RRCA +; AND $03 +; LD DE,PS_FLPSD ; SINGLE DENSITY +; CP 0 +; JR Z,PS_PRTDC2C +; LD DE,PS_FLPDD ; DOUBLE DENSITY +; CP 1 +; JR Z,PS_PRTDC2C +; LD DE,PS_FLPHD ; HIGH DENSITY +; CP 2 +; JR Z,PS_PRTDC2C +; LD DE,PS_FLPED ; EXTENDED DENSITY +; CP 3 +; JR Z,PS_PRTDC2C PS_PRTDC2C: - CALL WRITESTR +; CALL WRITESTR +; CALL PC_COMMA PRTS("CHS$") ; FOR NOW, WE ASSUME HARD DISK DOES LBA ; diff --git a/Source/HBIOS/util.asm b/Source/HBIOS/util.asm index 4e09b63d..d4bd7f49 100644 --- a/Source/HBIOS/util.asm +++ b/Source/HBIOS/util.asm @@ -298,6 +298,30 @@ DB_END: RET ; ; PRINT THE nTH STRING IN A LIST OF STRINGS WHERE EACH IS TERMINATED BY $ +; C REGISTER CONTAINS THE INDEX TO THE STRING TO BE DISPLAYED. +; A REGISTER CONTAINS A MASK TO BE APPLIED TO THE INDEX +; THE INDEX IS NORMALIZED TO A RANGE 0..N USING THE MASK AND THEN THE nTH +; STRING IS PRINTED IN A LIST DEFINED BY DE +; +; C = ATTRIBUTE +; A = MASK +; DE = STRING LIST +; +PRTIDXMSK: + PUSH BC +PRTIDXMSK0: + BIT 0,A + JR NZ,PRTIDXMSK1 + SRL A + SRL C + JR PRTIDXMSK0 +PRTIDXMSK1: + LD B,A + LD A,C + AND B + POP BC +; +; PRINT THE nTH STRING IN A LIST OF STRINGS WHERE EACH IS TERMINATED BY $ ; A REGISTER DEFINES THE nTH STRING IN THE LIST TO PRINT AND DE POINTS ; TO THE START OF THE STRING LIST. ; From 0307fe1aa909c6fa4f25fd7268c9605573786b0f Mon Sep 17 00:00:00 2001 From: b1ackmai1er Date: Sun, 1 Sep 2019 21:51:31 +0800 Subject: [PATCH 3/3] Refactor of device summary cleanup --- Source/HBIOS/hbios.asm | 194 ++++++----------------------------------- Source/HBIOS/pio.asm | 8 +- Source/HBIOS/uf.asm | 10 +-- 3 files changed, 38 insertions(+), 174 deletions(-) diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index f3a8ee6b..69a0989d 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -1359,28 +1359,6 @@ HB_SPDTST: LD A,(HB_CPUTYPE) ; GET CPU TYPE LD DE,HB_CPU_STR ; DISPLAY IT CALL PRTIDXDEA -; OR A ; SET FLAGS -; LD DE,HB_STRZ80 ; Z80 -; JR Z,HB_PCPU ; IF Z80, PRINT IT -; DEC A ; NEXT CPU TYPE -; LD DE,HB_STRZ180 ; Z80180 -; JR Z,HB_PCPU ; IF Z80180, PRINT IT -; DEC A ; NEXT CPU TYPE -; LD DE,HB_STRZS180K ; Z8S180 REV K -; JR Z,HB_PCPU ; IF Z8S180-K, PRINT IT -; LD DE,HB_STRZS180N ; Z8S180 REV N - - - JR HB_PCPU ; PRINT Z8S180-N -; -HB_CPU_STR: -HB_STRZ80 .TEXT " Z80$" -HB_STRZ180 .TEXT " Z80180$" -HB_STRZS180K .TEXT " Z8S180-K$" -HB_STRZS180N .TEXT " Z8S180-N$" -; -HB_PCPU: - CALL WRITESTR ; PRINT IT ; PRTS(" @ $") LD HL,(CB_CPUKHZ) @@ -3059,72 +3037,10 @@ PRT_ALLD1: POP HL POP DE POP BC ; RESTORE LOOP CONTROL - INC C ; BUMP DISK UNIT INDEX - DJNZ PRT_ALLD1 ; LOOP THRU ALL DISK DEVICES + INC C ; BUMP UNIT INDEX + DJNZ PRT_ALLD1 ; LOOP THRU ALL DEVICES RET ; -;================================================================================================== -; DISPLAY SUMMARY OF ATTACHED UNITS/DEVICES -;================================================================================================== -; -;PRTSUM: -; CALL NEWLINE2 ; SKIP A LINE -; LD DE,PS_STRHDR ; POINT TO HEADER -; CALL WRITESTR ; PRINT IT -; -; ; PRINT DISK DEVICES -; LD B,BF_SYSGET ; FUNC: SYSTEM INFO GET -; LD C,BF_SYSGET_DIOCNT ; SUBFUNC: DISK UNIT COUNT -; RST 08 ; E := DISK UNIT COUNT -; LD B,E ; MOVE TO B FOR LOOP COUNT -; LD A,E ; MOVE TO ACCUM -; OR A ; SET FLAGS -; JR Z,PRTSUM1A ; IF NONE, BYPASS -; LD C,0 ; C WILL BE UNIT INDEX -;PRTSUM1: -; PUSH BC ; SAVE LOOP CONTROL -; CALL PS_DISK ; PRINT DISK INFO -; POP BC ; RESTORE LOOP CONTROL -; INC C ; BUMP DISK UNIT INDEX -; DJNZ PRTSUM1 ; LOOP THRU ALL DISK DEVICES -; -;PRTSUM1A: -; ; PRINT SERIAL DEVICES -; LD B,BF_SYSGET ; FUNC: SYSTEM INFO GET -; LD C,BF_SYSGET_CIOCNT ; SUBFUNC: SERIAL UNIT COUNT -; RST 08 ; E := SERIAL UNIT COUNT -; LD B,E ; MOVE TO B FOR LOOP COUNT -; LD A,E ; MOVE TO ACCUM -; OR A ; SET FLAGS -; JR Z,PRTSUM2A ; IF NONE, BYPASS -; LD C,0 ; C WILL BE UNIT INDEX -;PRTSUM2: -; PUSH BC ; SAVE LOOP CONTROL -; CALL PS_SERIAL ; PRINT SERIAL INFO -; POP BC ; RESTORE LOOP CONTROL -; INC C ; BUMP SERIAL UNIT INDEX -; DJNZ PRTSUM2 ; LOOP THRU ALL SERIAL DEVICES -; -;PRTSUM2A: -; ; PRINT VIDEO DEVICES -; LD B,BF_SYSGET ; FUNC: SYSTEM INFO GET -; LD C,BF_SYSGET_VDACNT ; SUBFUNC: VIDEO UNIT COUNT -; RST 08 ; E := SERIAL UNIT COUNT -; LD B,E ; MOVE TO B FOR LOOP COUNT -; LD A,E ; MOVE TO ACCUM -; OR A ; SET FLAGS -; JR Z,PRTSUM3A ; IF NONE, BYPASS -; LD C,0 ; C WILL BE UNIT INDEX -;PRTSUM3: -; PUSH BC ; SAVE LOOP CONTROL -; CALL PS_VIDEO ; PRINT VIDEO INFO -; POP BC ; RESTORE LOOP CONTROL -; INC C ; BUMP VIDEO UNIT INDEX -; DJNZ PRTSUM3 ; LOOP THRU ALL VIDEO DEVICES -; -;PRTSUM3A: -; RET ; DONE -; ; PRINT ONE LINE DISK UNIT/DEVICE INFO, DISK UNIT INDEX IN C ; PS_DISK: @@ -3225,62 +3141,16 @@ PS_PRTDC2: LD C,E ; ATTRIBUTE TO C FOR SAFE KEEPING ; LD A,01100000B ; DISPLAY FORM FACTOR - LD DE,PS_FLP8 ; WHICH IS DEFINED IN + LD DE,PS_FLP_FSTR ; WHICH IS DEFINED IN CALL PRTIDXMSK ; BITS 5 AND 6. ; LD A,00010000B ; DISPLAY SIDES - LD DE,PS_FLPSS ; WHICH IS DEFINED + LD DE,PS_FLP_SSTR ; WHICH IS DEFINED CALL PRTIDXMSK ; IN BIT 4 ; LD A,00001100B ; DISPLAY DENSITY - LD DE,PS_FLPSD ; WHICH IS DEFINED IN - CALL PRTIDXMSK ; BITS 1 AND 2. -; -; ; PRINT FLOPPY TYPE -; LD A,C ; ATTRIBUTE TO ACCUM -; RLCA ; ISOLATE FORM FACTOR BITS -; RLCA -; RLCA -; AND $03 -; LD DE,PS_FLP8 ; ASSUME 8" -; CP 0 -; JR Z,PS_PRTDC2A -; LD DE,PS_FLP5 ; ASSUME 5.25" -; CP 1 -; JR Z,PS_PRTDC2A -; LD DE,PS_FLP3 ; ASSUME 3.5" -; CP 2 -; JR Z,PS_PRTDC2A -; LD DE,PS_FLPN ; ASSUME OTHER" -;PS_PRTDC2A: -; CALL WRITESTR -;; ; PRINT FLOPPY SIDES -; LD A,C ; ATTRIBUTE TO ACCUM -; LD DE,PS_FLPSS ; ASSUME SINGLE SIDED -; BIT 4,A ; DS? -; JR Z,PS_PRTDC2B -; LD DE,PS_FLPDS ; DOUBLE SIDED -;PS_PRTDC2B: -; CALL WRITESTR -; ; PRINT FLOPPY DENSITY -; LD A,C ; ATTRIBUTE TO ACCUM -; RRCA ; ISOLATE DENSITY BITS -; RRCA -; AND $03 -; LD DE,PS_FLPSD ; SINGLE DENSITY -; CP 0 -; JR Z,PS_PRTDC2C -; LD DE,PS_FLPDD ; DOUBLE DENSITY -; CP 1 -; JR Z,PS_PRTDC2C -; LD DE,PS_FLPHD ; HIGH DENSITY -; CP 2 -; JR Z,PS_PRTDC2C -; LD DE,PS_FLPED ; EXTENDED DENSITY -; CP 3 -; JR Z,PS_PRTDC2C -PS_PRTDC2C: -; CALL WRITESTR + LD DE,PS_FLP_DSTR ; WHICH IS DEFINED IN + CALL PRTIDXMSK ; BITS 2 AND 3. ; CALL PC_COMMA PRTS("CHS$") ; FOR NOW, WE ASSUME HARD DISK DOES LBA @@ -3408,15 +3278,11 @@ PSPRTPC0: JP Z,PS_PRTNUL ; $FF == NO CONFIG DEFINED ; PS_PRTPC0: - LD A,E ; CONVERT THE TYPE TO - RLCA ; A TABLE INDEX 0..5 - RLCA ; AND DISPLAY THE TYPE - AND 00000011B - PUSH DE - LD DE,PIO_MODE_STR - CALL PRTIDXDEA - POP DE - RET + LD C,E ; DISPLAY PIO TYPE + LD A,11000000B ; WHICH IS DEFINE BY + LD DE,PIO_MODE_STR ; BITS 6 AND 7 + JP PRTIDXMSK +; RET ; TRICK RETURN ; PS_PRTSC1: ; PRINT TERMINAL CONFIG @@ -3547,7 +3413,10 @@ PS_PAD1: DJNZ PS_PAD1 RET ; -; +HB_CPU_STR: .TEXT " Z80$" ; HB_STRZ80 + .TEXT " Z80180$" ; HB_STRZ180 + .TEXT " Z8S180-K$" ; HB_STRZS180K + .TEXT " Z8S180-N$" ; HB_STRZS180N ; PS_STRNUL .TEXT "--$" ; DISPLAY STRING FOR NUL VALUE ; @@ -3586,20 +3455,20 @@ PS_DTOTHER .TEXT "???$" ; ; FLOPPY ATTRIBUTE STRINGS ; -PS_FLP8 .TEXT "8\",$" -PS_FLP5 .TEXT "5.25\",$" -PS_FLP3 .TEXT "3.5\",$" -PS_FLPN .TEXT "???\",$" +PS_FLP_FSTR: .TEXT "8\",$" ; PS_FLP8 + .TEXT "5.25\",$" ; PS_FLP5 + .TEXT "3.5\",$" ; PS_FLP3 + .TEXT "???\",$" ; PS_FLPN ; -PS_FLPSS .TEXT "SS/$" -PS_FLPDS .TEXT "DS/$" +PS_FLP_SSTR: .TEXT "SS/$" ; PS_FLPSS + .TEXT "DS/$" ; PS_FLPDS ; -PS_FLPSD .TEXT "SD$" -PS_FLPDD .TEXT "DD$" -PS_FLPHD .TEXT "HD$" -PS_FLPED .TEXT "ED$" +PS_FLP_DSTR: .TEXT "SD$" ; PS_FLPSD + .TEXT "DD$" ; PS_FLPDD + .TEXT "HD$" ; PS_FLPHD + .TEXT "ED$" ; PS_FLPED ; -; SERIAL DEVICE STRINGS +; CHARACTER DEVICE STRINGS ; PS_SDSTRREF: .DW PS_SDUART, PS_SDASCI, PS_SDTERM, @@ -3615,7 +3484,7 @@ PS_SDACIA .TEXT "ACIA$" PS_SDPIO .TEXT "PORT$" PS_SDUF .TEXT "UF$" ; -; SERIAL TYPE STRINGS +; CHARACTER SUB TYPE STRINGS ; PS_STRS232 .TEXT "RS-232$" PS_STTERM .TEXT "Terminal$" @@ -3623,10 +3492,9 @@ PS_STPPT .TEXT "Parallel$" ; PS_STPARMAP .DB "NONENMNS" ; -; PIO TYPE STRINGS +; PARALLEL TYPE STRINGS ; -PIO_MODE_STR: - .TEXT "Output$" +PIO_MODE_STR: .TEXT "Output$" .TEXT "Input$" .TEXT "Bidirectional$" .TEXT "BitCtrl$" @@ -3646,10 +3514,6 @@ PS_VDVGA .TEXT "VGA$" ; PS_VTCRT .TEXT "CRT$" ; -; VIDEO CONFIG STRINGS -; -; -; ; 0 1 2 3 4 5 6 7 ; 01234567890123456789012345678901234567890123456789012345678901234567890123456789 PS_STRHDR .TEXT "Unit Device Type Capacity/Mode\r\n" diff --git a/Source/HBIOS/pio.asm b/Source/HBIOS/pio.asm index f9967606..349858a2 100644 --- a/Source/HBIOS/pio.asm +++ b/Source/HBIOS/pio.asm @@ -812,10 +812,10 @@ PIO_DEV .DB 0 ; DEVICE NUM USED DURING INIT ; DESCRIPTION OF DIFFERENT PORT TYPES ; PIO_TYPE_STR: -PIO_STR_NONE .TEXT "$" ; IDX 0 -PIO_STR_PIO .TEXT "Zilog PIO$" ; IDX 1 -PIO_STR_8255 .TEXT "i8255 PPI$" ; IDX 2 -PIO_STR_PORT .TEXT "IO Port$" ; IDX 3 + .TEXT "$" ; IDX 0 + .TEXT "Zilog PIO$" ; IDX 1 + .TEXT "i8255 PPI$" ; IDX 2 + .TEXT "IO Port$" ; IDX 3 ; ; Z80 PIO PORT TABLE - EACH ENTRY IS FOR 1 CHIP I.E. TWO PORTS ; diff --git a/Source/HBIOS/uf.asm b/Source/HBIOS/uf.asm index d19f3925..4b13ecab 100644 --- a/Source/HBIOS/uf.asm +++ b/Source/HBIOS/uf.asm @@ -56,15 +56,15 @@ UF_INITUNIT: ; UF_INIT: CALL NEWLINE ; PRINT DEVICE - PRTS("USB-FIFO: $") - PRTS("IO=0x$") + CALL PRTSTRD + .TEXT "USB-FIFO: IO=0x$") LD A,UFBASE ; PRINT PORT CALL PRTHEXBYTE LD A,(UF_USB_ACTIVE) ; PRINT CONNECTION STATUS OR A ; REQUIRES TERMINAL PROGRAM RET NZ ; TO HAVE INITIALIZED PORT - PRTS(" No $") ; ON PC SIDE. - PRTS("connection$") + CALL PRTSTRD ; ON PC SIDE. + .TEXT "No connection$" RET ; ; INPUT A CHARACTER AND RETURN IT IN E @@ -119,7 +119,7 @@ UF_INITDEV: INC A ; ... SO Z SET IF -1 JR NZ,UF_INITDEV1 ; IF DE == -1, REINIT CURRENT CONFIG ; - ; GET CURRENT PSW. WE ALWAYS RESAVE AT END + ; GET CURRENT SPW. WE ALWAYS RESAVE AT END LD E,(IY+0) ; LOW BYTE LD D,(IY+1) ; HIGH BYTE ;