Replies: 2 comments 9 replies
-
Hello @and3rson, That would be very cool running ELKS on your SBC and using the small LCD display! I think we should be able to make that happen without many changes :) The porting guide which you've already found is definitely worth studying, it may be a bit out of date, but the BDA areas it mentioned are a good start. You can also grep the source for
No, we should be able to run entirely on top of BIOS, but its easier if you let ELKS grab the hw timer at IRQ 0 and program the PIT yourself. The 8253 should work, but you may need to change the timer constants, I have to check the data sheet. Some BIOSes callout (callback) INT 1Ch which ELKS could possibly use otherwise. In general, ELKS now only enables/disables bits in the PIC for devices as they are opened, rather than trying to take over the entire system - this allows the BIOS to still have some say in the system operation, if desired.
Probably not. The answer depends on exactly which drivers you use, and the documentation may not be fully up to date, there's been surge of activity lately.
The BIOS and Direct console driver use some special locations, but IIRC they're all in the BDA. We added cursor on/off recently and that turned out to be harder than desired because of assumed BIOS compatibility which doesn't work. I think the floppy disk driver may output a motor off command to the DOR register, even with no drives present, I'll have to check.
Yes, but as little as possible - refer to console-direct.c and console-bios.c for most of that (in
8253 should work. See elks/arch/i86/timer-8254.c.
A DMA controller is only used by the new direct floppy driver. I would recommend using BIOS INT 13h at this point instead.
Yes - the BIOS and Direct console source mention some issues with getting the screen lines and cols through BDA and setup.S - You should be able to temporarily replace that with your device hard width/height and things should work, providing that the BIOS also knows about it. If the LCD doesn't support video RAM character mapping, then you'll want to use the BIOS console, as the direct console writes directly to segment A000 or B800 depending on mode.
The big two are PIC and PIT, both of which are easily changed, as that was done on the 8018X port. If the BIOS handles the rest, we should be good to go. Let me know how else I can help! :) |
Beta Was this translation helpful? Give feedback.
-
Since chasing the problem with an emulator won't work on real hardware, I resort to using old fashioned
The final letters and numbers displayed on your screen indicate setup.S showing the text, fartext and data segments before jumping out of that to Look at kernel_start() and you'll see that the scheduler, memory management and irq init routines are called. You could call
In the early stages, no. But I left in the various 't', 'f', 'd' display that you're seeing just for this purpose - which shows you're making it through the initial setup.S boot. (That routine also relocates the kernel so if |
Beta Was this translation helpful? Give feedback.
-
Thank you for this awesome project!
I'm currently building a homebrew SBC powered by KM1810VM88 (Ukrainian i8088 clone) - https://github.com/and3rson/pk88
I'm using Soviet chips for this, here's the list of original codes:
I had two choices:
I decided to go with the first option, i. e. make my SBC convey to all the requirements that OS will have, mostly by moving ports to conventional addresses (e. g. PIC @ 0x20..0x2F, COM1 @ 0x3F8, etc) and writing my own BIOS which implements the required interrupts.
Now, I initially assumed it would be sufficient if I just implemented my own BIOS with the most important interrupts - including 10h, int11h, 12h, 13h, 16h - and then be able to run DOS or ELKS. Seems like I'm wrong. :)
I've checked the porting guide and I still have some questions:
If yes, is there a full list of I/O ports that my SBC need to have (and at which addresses)? I found some mentions in the porting guide, including- Just discovered elks/include/arch/ports.h. Hence a different question:03F2h
for floppy drive controller.As I mentioned in the beginning - my main goal is to make my SBC compatible with ELKS without changing anything in ELKS itself. I find it more fun than manually tweaking ELKS to run on my device. :)
Thanks in advance!
Beta Was this translation helpful? Give feedback.
All reactions