|
|
|
@ -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 |
|
|
|
|