BIOS + OS for 80186/Am186 System
Posted: Sun Jan 07, 2018 11:51 am
Hi,
I have a SD186ES/EM-Demonstration Board from AMD equipped with an Am186ES, that runs at 40MHz. It is an 80186 compatible chip.
It has 2 serial ports, LEDs and 256kB RAM+256kb Flash onboard.
It uses a monitor program that is located in flash (e86mon).
I tried a lot, and finally I have everything together to write code for this very old board on a recent linux pc (terminal, toolchain, ...).
The monitor has a very limited int21 implementation, but i had to extend it heavily to run simple turbo-c-hello-world programs. I think that DOS-emulation is not what I want.
For modifying the monitor and it's extensions I need a Windows 3.x/9x, DOS, Visual C++, MASM. This leads to a seperate VM only for this job...
The idea is, maybe i could get real (MS) DOS running on this chip.
For easy (partially) PC-compatiblity I want to connect a Winbond ISA Controller (IDE, Floppy, 2x RS232, 1xLPT) as well as a Cirrus or Tseng ISA VGA.
The memory map of the system so far:
RAM:
0x00000 - 0x003FF IVT
0x00400 - 0x0040F Monitor Data (like BDA?, but smaller)
0x00410 - 0x3EFFF ~250k RAM
0x3F000 - 0x3FFFF 4k Stack+Data for Monitor
FLASH:
0xC0000 - 0xFFFFF Flash with Monitor, Space for User Application (managed by monitor)
I have all the stuff to connect more RAM (256k or 512k). The Monitor always uses top 4k of RAM. There are a few programmable chip selects available for the free memory regions.
How could i start making this system PC compatible?
What do i need at least to run DOS 5.0?
Do i need a PIT? Or is a 18.2Hz interrupt, generated by the Am186's timer, enough?
Do i need a KBC or does DOS use BIOS for keyboard?
Do i need a DMA Controller? The Internal one could be cascaded with 8259s, but the IO address would be different.
If i really need some of these components they could be added to bus easily, as this chip already has a demultiplexed bus with up to 12 CS for memory and IO regions.
I want to build a extension board that holds 128kx16 (256kB) Flash, that is switchable between the onboard-flash /CS and a programmable CS. So that i can have a program within the monitor flash, that maps the additional flash to a free area. I write the BIOS image to that flash.
I'll press reset and switch the flash memories. On power-up my BIOS loads and inits the system.
Where should i start when looking for a small generic BIOS?
Where do I find details about porting DOS and requirements for DOS? I read something about MS-DOS OAKs, is this the right direction? I don't want to modify DOS, i want to build everything around, so that unmodified DOS runs...
I have a SD186ES/EM-Demonstration Board from AMD equipped with an Am186ES, that runs at 40MHz. It is an 80186 compatible chip.
It has 2 serial ports, LEDs and 256kB RAM+256kb Flash onboard.
It uses a monitor program that is located in flash (e86mon).
I tried a lot, and finally I have everything together to write code for this very old board on a recent linux pc (terminal, toolchain, ...).
The monitor has a very limited int21 implementation, but i had to extend it heavily to run simple turbo-c-hello-world programs. I think that DOS-emulation is not what I want.
For modifying the monitor and it's extensions I need a Windows 3.x/9x, DOS, Visual C++, MASM. This leads to a seperate VM only for this job...
The idea is, maybe i could get real (MS) DOS running on this chip.
For easy (partially) PC-compatiblity I want to connect a Winbond ISA Controller (IDE, Floppy, 2x RS232, 1xLPT) as well as a Cirrus or Tseng ISA VGA.
The memory map of the system so far:
RAM:
0x00000 - 0x003FF IVT
0x00400 - 0x0040F Monitor Data (like BDA?, but smaller)
0x00410 - 0x3EFFF ~250k RAM
0x3F000 - 0x3FFFF 4k Stack+Data for Monitor
FLASH:
0xC0000 - 0xFFFFF Flash with Monitor, Space for User Application (managed by monitor)
I have all the stuff to connect more RAM (256k or 512k). The Monitor always uses top 4k of RAM. There are a few programmable chip selects available for the free memory regions.
How could i start making this system PC compatible?
What do i need at least to run DOS 5.0?
Do i need a PIT? Or is a 18.2Hz interrupt, generated by the Am186's timer, enough?
Do i need a KBC or does DOS use BIOS for keyboard?
Do i need a DMA Controller? The Internal one could be cascaded with 8259s, but the IO address would be different.
If i really need some of these components they could be added to bus easily, as this chip already has a demultiplexed bus with up to 12 CS for memory and IO regions.
I want to build a extension board that holds 128kx16 (256kB) Flash, that is switchable between the onboard-flash /CS and a programmable CS. So that i can have a program within the monitor flash, that maps the additional flash to a free area. I write the BIOS image to that flash.
I'll press reset and switch the flash memories. On power-up my BIOS loads and inits the system.
Where should i start when looking for a small generic BIOS?
Where do I find details about porting DOS and requirements for DOS? I read something about MS-DOS OAKs, is this the right direction? I don't want to modify DOS, i want to build everything around, so that unmodified DOS runs...