diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 6d76fa0c..ddfdfa1d 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -2852,19 +2852,27 @@ HB_FP1: ; HB_FP2: ; IF SEC SWITCH IS SET, WE WANT TO BUMP TO SECONDARY - ; CRT OR SERIAL DEVICE. FOR NOW, WE ARE GOING TO CHEAT AND - ; JUST INCREMENT THE CONSOLE DEVICE UNIT. THIS SHOULD WORK - ; ASSUMING NORMAL ORDERING OF THE CHARACTER DEVICE UNITS. + ; CRT OR SERIAL DEVICE. IF AN OVERRIDE IS SPECIFIED USING + ; SECCON, USE THAT, OTHERWISE INCREMENT THE DEFAULT UNIT. + ; THIS SHOULD WORK ASSUMING NORMAL ORDERING OF THE + ; CHARACTER DEVICE UNITS. LD A,B ; RECOVER SWITCH SETTINGS AND SW_SEC ; TEST SEC BIT JR Z,HB_FPZ ; IF NOT SET, THEN ALL DONE ; - ; INCREMENT CONSOLE UNIT, BUT MAKE SURE IT DOES NOT EXCEED - ; THE HIGHEST CHAR UNIT IN SYSTEM. LD A,(CIO_CNT) ; GET CHAR UNIT COUNT LD B,A ; MOVE TO B + LD A,SECCON ; GET SEC CONSOLE SETTING + CP $FF ; $FF MEANS USE INCREMENT + JR NZ,HB_FP3 ; BYPASS IF NOT $FF +; + ; INCREMENT CONSOLE UNIT LD A,(HB_NEWCON) ; GET NEW CONSOLE UNIT INC A ; BUMP TO SECONDARY +; +HB_FP3: + ; MAKE SURE NEW CONSOLE UNIT DOES NOT EXCEED THE HIGHEST + ; CHAR UNIT IN SYSTEM. CP B ; A (UNIT) >= B (CNT)? JR NC,HB_FPZ ; ABORT IF UNIT TOO HIGH LD (HB_NEWCON),A ; UPDATE NEW CONSOLE UNIT