First post, by Chrisnoeding
- Rank
- Newbie
Hi folks,
I'm in the middle of a stupid idea: I'm programming a DIY BIOS for the AMD Elan SC300, an 386SX SOC originally from 1993, but sold way longer. The SoC is placed on an old Behringer DDX3216 audiomixing console, so the hardware-part is fine and running flawlessly.
Up to now I got pretty far:
- the SOC itself, the DRAM and SRAM is initialized correctly (RAM-test is successful)
- all important BIOS interrupts are in place
- the integrated LC Display can already be controlled via my own INT10
- external UART chip is working
- CF Card is working and bootsector can be copied to RAM at offset 0x7C00 in segment 0x0000
- bootsector loads IO.SYS and (probably) MSDOS.SYS
The System loads an MS DOS6.22 copied to the 512MB CF Card which has been tested in my 486 before where it boots successful. CHS is set manually to C=1014, H=16 and S=63 as in my 486.
Now my problem:
The display shows "Starting MS-DOS..." followed by some more Interrupt-calls like INT15, INT14, INT17, INT12, some more Int13 (it loads more sectors) and INT1A.
Finally the system calls and stopps at INT15, where register AH is set by DOS to 0x41 and AL to 0x01. I responds to this with AX=0x8600 and I'm setting the flag-Register.
Well... And thats it. I'm right before loading the shell but I'm a bit lost. Only one single time I managed that the system calls two more INT1A, but I couldn't reproduce it.
Maybe there are some expert here, who can give me a hint, or have fun tinkering with this as well. Maybe it is an issue with the compiler (I'm using i686 gcc with Option -m16) or a problem with my memory-map.
If you have time, here is my repository on GitHub:
https://github.com/xn--nding-jua/DDX3216/tree/main/BIOS
Important thing: I started this project only three weeks ago just because of my curiosity. I already looked into Seabios, but they went different ways on implementing things...
So I'm looking forward for some ideas. Thank you 😀
Best regards
Chris