First post, by superfury
I've made some progress in the VGA POSTing, but something is still going very wrong on the IBM VGA BIOS it seems?
I see some basic card setup (some POS register stuff being written, as well as port 3C3), followed by some basic RAM checks, then some DAC palette setup and some weird loop reading the Input Status #0 register's Switch Sense bit during horizontal retrace over and over again till erroring out?
0003 Starting POST
00CE subsystems setup done
210: vretrace gone high
214 reached
23B: VRetrace started
0266 point ES to VRAM? Retrace test completed. Store ones in VRAM
0279 Select attribute register 32h. =12h
Set it to 0Fh.
Read 3DAh.
0282 DAC output bits came high?
0295 DAC readback came high during blanking after vertical retrace and went low again?
029D All values in the DAC test register parsed.
00D9 reached at the end of said routine. Some memory test routine?
02EF RAM test OK? Start DAC palette setup.
0369 DAC palette setup done.
036E DAC palette OK?
0373 DAC palette written? Performing readback.
0376->0381 DAC readback completed.
Clear PEL mask register.
038C palette cleared again. Reset sequencer.
0397 some call after re-enabling sequencer?
Reads Input Status 0 register?
04A7 reading switch 0 over and over again? This is reached on horizontal retrace starting.
Write PEL write mode
0487 Vertical retrace starting.
049E waiting for horizontal retrace
04BF: Return from function reading Input Status 0's Switch Sense.
0423: Check the sense bit against some table in ROM?
0427: Match found.
03DF: Unknown routine started. It's some kind of PIT manipulation routine?
0686 seems to be some kind of beep routine?
Some sound processing occurs? It's beeping the PC speaker.
00E9: POST seems to continue in some form?
0578: Read Input Status #0 and extract feature bits 0&1.
0583: Write feature control 02h. Then read the result back.
00EC: Feature bits read into AL top nibble. Then write to EGA switches byte in BDA.
00F1: CALL 14B
0152: Monochrome monitor bit set.
0182: Set BIOS equipment word to bit 5 set in the monitor ID for the BIOS ROM.
0186: Clear SW switches in 488. And OR in 9h to get the color monitor switches.
00F4: Reached. CALL 337.
03DC ???
Write feature control 1 register value 01h
Read switch sense?
Eventually sets the display monitor to color (9 in the switches in the BDA, due to not detecting a monochrome monitor).
Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io