Browse Source

Cleanup loader console assignment

pull/114/head
Wayne Warthen 6 years ago
parent
commit
8b7c167592
  1. 42
      Source/CBIOS/cbios.asm
  2. 12
      Source/HBIOS/romldr.asm

42
Source/CBIOS/cbios.asm

@ -2045,7 +2045,7 @@ DEV_INIT:
; PATCH IN CRT: DEVICE
LD A,(HCB + HCB_CRTDEV) ; GET CONSOLE DEVICE
CP $FF ; NUL MEANS NO CRT DEVICE
JR Z,DEV_INIT00 ; IF SO, LEAVE IT ALONE
JR Z,DEV_INIT000 ; IF SO, LEAVE IT ALONE
LD (DEVMAP + 1),A ; CONSOLE CRT
LD (DEVMAP + 13),A ; LIST CRT
;
@ -2054,31 +2054,43 @@ DEV_INIT:
LD B,A ; SAVE IN B
LD A,(HCB + HCB_CONDEV) ; GET CONSOLE DEVICE
CP B ; COMPARE
JR NZ,DEV_INIT00 ; IF DIFFERENT (CRT NOT ACTIVE), LEAVE IOBYTE ALONE
JR NZ,DEV_INIT000 ; IF DIFFERENT (CRT NOT ACTIVE), LEAVE IOBYTE ALONE
LD A,1 ; IF SAME (CRT ACTIVE), SET IOBYTE FOR CON: = CRT:
LD (IOBYTE),A ; STORE IN IOBYTE
LD HL,DEV_INIT1 ; INIT FIRST DEV ASSIGN ADR
JR DEV_INIT00 ; SKIP AHEAD
;
DEV_INIT000:
; CONSOLE IS NOT THE CRT, SO
; ASSIGN CURRENT CONSOLE AS TTY
LD A,(HCB + HCB_CONDEV) ; GET CONSOLE DEVICE
CALL DEV_INIT1 ; ASSIGN AS TTY
;
DEV_INIT00:
; LOOP THRU DEVICES ADDING NON-CRT DEVICES TO DEVMAP
; LOOP THRU DEVICES ADDING DEVICES TO DEVMAP
; CONSOLE DEVICE WAS ALREADY DONE, SO IT IS SKIPPED HERE
LD B,BF_SYSGET ; HBIOS FUNC: GET SYS INFO
LD C,BF_SYSGET_CIOCNT ; SUBFUNC: GET CIO UNIT COUNT
RST 08 ; E := SERIAL UNIT COUNT
LD B,E ; COUNT TO B
LD C,0 ; UNIT INDEX
LD HL,DEV_INIT1 ; POINTER FOR FIRST ENTRY FOUND
DEV_INIT0:
PUSH BC ; SAVE LOOP CONTROL
PUSH HL ; SAVE TARGET
LD B,BF_CIODEVICE ; HBIOS FUNC: GET DEVICE INFO
RST 08 ; D := DEVICE TYPE, E := PHYSICAL UNIT NUMBER
POP HL ; RESTORE TARGET
LD A,D ; DEVICE TYPE TO A
; FIX: BELOW SHOULD TEST THE "TERMINAL" BIT INSTEAD OF CHECKING DEVICE NUMBER
CP CIODEV_TERM ; COMPARE TO FIRST VIDEO DEVICE
POP BC ; RESTORE LOOP CONTROL
;PUSH BC ; SAVE LOOP CONTROL
;PUSH HL ; SAVE TARGET
;LD B,BF_CIODEVICE ; HBIOS FUNC: GET DEVICE INFO
;RST 08 ; D := DEVICE TYPE, E := PHYSICAL UNIT NUMBER
;POP HL ; RESTORE TARGET
;LD A,D ; DEVICE TYPE TO A
;; FIX: BELOW SHOULD TEST THE "TERMINAL" BIT INSTEAD OF CHECKING DEVICE NUMBER
;CP CIODEV_TERM ; COMPARE TO FIRST VIDEO DEVICE
;POP BC ; RESTORE LOOP CONTROL
;LD A,C ; UNIT INDEX TO ACCUM
;;CALL C,JPHL ; DO IT IF DEVICE TYPE < VDU
LD A,(HCB + HCB_CONDEV) ; CURRENT CONSOLE UNIT
CP C ; IS CURRENT CONSOLE?
LD A,C ; UNIT INDEX TO ACCUM
;CALL C,JPHL ; DO IT IF DEVICE TYPE < VDU
CALL JPHL ; DO FOR ANY CHARACTER DEVICE TYPE
CALL NZ,JPHL ; DO IF NOT CURRENT CONSOLE
INC C ; NEXT UNIT
DJNZ DEV_INIT0 ; LOOP TILL DONE
RET ; ALL DONE

12
Source/HBIOS/romldr.asm

@ -282,7 +282,7 @@ runcmd:
cp 'R' ; R = reboot system
jp z,reboot ; if so, do it
#if (BIOS == BIOS_WBW)
cp 'C' ; C = set console unit
cp 'I' ; C = set console interface
jp z,setcon ; if so, do it
#endif
;
@ -426,7 +426,7 @@ devlst:
call pstr ; display it
jp prtall ; do it
;
; Set console unit
; Set console interface unit
;
#if (BIOS == BIOS_WBW)
;
@ -462,6 +462,12 @@ setcon:
ld e,a ; Char unit value
ld hl,HCB_LOC + HCB_CONDEV ; Con unit num in HCB
rst 08 ; do it
;
; Display loader prompt on new console
call nl2 ; formatting
ld hl,str_banner ; display boot banner
call pstr ; do it
;
ret ; done
;
#endif
@ -1489,7 +1495,7 @@ str_help .db "\r\n"
.db "\r\n D - Disk Device Inventory"
.db "\r\n R - Reboot System"
#if (BIOS == BIOS_WBW)
.db "\r\n C <u> - Set Console Unit"
.db "\r\n I <u> - Set Console Interface"
#endif
.db "\r\n <u>[.<s>] - Boot Disk Unit/Slice"
.db 0

Loading…
Cancel
Save