diff --git a/Source/CBIOS/cbios.asm b/Source/CBIOS/cbios.asm index 47c2ca47..f861e737 100644 --- a/Source/CBIOS/cbios.asm +++ b/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 diff --git a/Source/HBIOS/romldr.asm b/Source/HBIOS/romldr.asm index 833dac77..884c5cce 100644 --- a/Source/HBIOS/romldr.asm +++ b/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 - Set Console Unit" + .db "\r\n I - Set Console Interface" #endif .db "\r\n [.] - Boot Disk Unit/Slice" .db 0