Search code examples
biosoption-rom

How does the bios boot in quit mode?


I have an option rom but the bios doesn't boot unless I press the esc-key and the bios calls the option rom. I want to know how the bios calls the option rom without pressing the esc-key? Does it jump into the same entry point? Especially where is the output of the option rom when I can only see the splash screen?


Solution

  • Success! Here is my patch for the misc.bin. I disassembled the misc.bin and permantently activated the esc-key sequence so it bypass the loading error.

    seg000:016B loc_16B: ; CODE XREF: seg000:00BBj 
    seg000:016B call sub_CB0 
    seg000:016E mov ds:byte_5A24, 0 
    seg000:0173 push bx 
    seg000:0174 call sub_DFE 
    seg000:0177 pop bx 
    seg000:0178 nop 
    seg000:0179 nop 
    seg000:017A call sub_26C 
    seg000:017D call sub_1F0 
    seg000:0180 mov cx, 0BB8h 
    seg000:0183 
    seg000:0183 loc_183: ; CODE XREF: seg000:019Cj 
    seg000:0183 mov ah, 1 
    seg000:0185 int 16h ; KEYBOARD - CHECK BUFFER, DO NOT CLEAR 
    seg000:0185 ; Return: ZF clear if character in buffer 
    seg000:0185 ; AH = scan code, AL = character 
    seg000:0185 ; ZF set if no character in buffer 
    seg000:0187 jz short loc_199 
    seg000:0189 xor ah, ah 
    seg000:018B int 16h ; KEYBOARD - READ CHAR FROM BUFFER, WAIT IF EMPTY 
    seg000:018B ; Return: AH = scan code, AL = character 
    seg000:018D cmp ax, 2106h 
    seg000:0190 jz short loc_1A0 
    seg000:0192 cmp ax, 1519h 
    seg000:0195 jz short loc_1A0 
    seg000:0197 jmp short loc_1BD 
    seg000:0199 ; --------------------------------------------------------------------------- 
    seg000:0199 
    seg000:0199 loc_199: ; CODE XREF: seg000:0187j 
    seg000:0199 call sub_2318 
    seg000:019C loop loc_183 
    seg000:019E jmp short loc_1BD 
    seg000:01A0 ; --------------------------------------------------------------------------- 
    seg000:01A0 
    seg000:01A0 loc_1A0: ; CODE XREF: seg000:0190j 
    seg000:01A0 ; seg000:0195j 
    seg000:01A0 mov ds:byte_5A5B, 1 
    seg000:01A5 mov ds:byte_573C, 0 
    seg000:01AA mov ds:byte_5A22, 0 
    seg000:01AF call sub_27E 
    seg000:01B2 mov ds:byte_5A21, 3 
    seg000:01B7 mov dx, 8 
    seg000:01BA jmp loc_2ED 
    seg000:01BD ; --------------------------------------------------------------------------- 
    seg000:01BD 
    seg000:01BD loc_1BD: ; CODE XREF: seg000:0197j 
    seg000:01BD ; seg000:019Ej 
    seg000:01BD call sub_F67 
    seg000:01C0 retf