mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 14:11:48 -06:00
Refactor of device summary
This commit is contained in:
@@ -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 C,BF_SYSGET_CIOCNT ; CHARACTER DEVICES
|
||||
LD HL,PS_SERIAL
|
||||
CALL PRT_ALLD
|
||||
;
|
||||
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
|
||||
;
|
||||
PRT_ALLD:
|
||||
LD B,BF_SYSGET ; FUNC: SYSTEM INFO GET
|
||||
LD C,BF_SYSGET_DIOCNT ; SUBFUNC: DISK UNIT COUNT
|
||||
RST 08 ; E := DISK 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,PRTSUM1A ; IF NONE, BYPASS
|
||||
JR Z,PRT_ALLD1 ; IF NONE, BYPASS
|
||||
LD C,0 ; C WILL BE UNIT INDEX
|
||||
PRTSUM1:
|
||||
PRT_ALLD1:
|
||||
PUSH BC ; SAVE LOOP CONTROL
|
||||
CALL PS_DISK ; PRINT DISK 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 DISK UNIT INDEX
|
||||
DJNZ PRTSUM1 ; LOOP THRU ALL DISK DEVICES
|
||||
DJNZ PRT_ALLD1 ; LOOP THRU ALL DISK DEVICES
|
||||
RET
|
||||
;
|
||||
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
|
||||
;==================================================================================================
|
||||
; DISPLAY SUMMARY OF ATTACHED UNITS/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
|
||||
;PRTSUM:
|
||||
; CALL NEWLINE2 ; SKIP A LINE
|
||||
; LD DE,PS_STRHDR ; POINT TO HEADER
|
||||
; CALL WRITESTR ; PRINT IT
|
||||
;
|
||||
PRTSUM3A:
|
||||
RET ; DONE
|
||||
; ; 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$")
|
||||
PUSH DE
|
||||
LD DE,PIO_MODE_STR
|
||||
CALL PRTIDXDEA
|
||||
POP DE
|
||||
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$")
|
||||
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
|
||||
;
|
||||
|
||||
@@ -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 "<NOT PRESENT>$"
|
||||
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 "<NOT PRESENT>$" ; 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
|
||||
|
||||
@@ -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
|
||||
;
|
||||
|
||||
Reference in New Issue
Block a user