dinoboards / yellow-msx-series-for-rc2014

V9958 Video Board Designed for RC2014
MIT License
37 stars 7 forks source link

Boot process change #15

Open zomgugoff opened 2 months ago

zomgugoff commented 2 months ago

While trying to use Nextor's emufile, I discovered that there is a limitation on how it functions. Drives not controlled by the primary Nextor kernel are not allowed/able to be used with it. Using the SD slots on the MFR is apparently impossible with emufile. Given the access speed issue with the USB interface, I would rather use the MFR's storage.

So, I was wondering if it's at all possible to have the ROM work more like a commercial ROM. No ROM disks. Just boot BASIC (or DOS if found.)

vipoo commented 2 months ago

Not sure I understand? You want the ROM image to boot to BASIC or DOS - without drivers? I think you may want no DOS in the embedded system?

NEXTOR does have some boot keys, that 'disable' certain boot behaviour if held during boot. Maybe they can help? https://github.com/vipoo/Nextor/blob/7f12851e494b184e1ffa6c8c0fc646440158306e/docs/Nextor%202.1%20User%20Manual.md#29-boot-keys

Please note, I dont think MSX-DOS mode 1 of NEXTOR will work on this platform though.

zomgugoff commented 2 months ago

I have tried these keys, but there is nothing there that allows the system to boot an OS from a cartridge, such as the MFR. My thought was to mimick a commercial MSX2+ more closely by having it only contain BASIC in ROM, but be able to boot DOS from external devices like a floppy controller or the MFR.

vipoo commented 2 months ago

I think we would need a ROM image with only BIOS and BASIC installed - thats not a configuration in the build process at the moment. It might be a bit of effort to get such an image going. I can only say i will put this on my backlog and try and get to it

zomgugoff commented 2 months ago

It was simplier than I thought. Just don't add the Nextor ROM to the final ROM.

msx/Makefile:

.PHONY: rom-msxsyssrc-$1-$2-rtc
rom-msxsyssrc-$1-$2-rtc: bin/rc2014.nextor.rom cbios msxsys-$1-$2-rtc ./rc2014-extended/bin/rc2014-extended.rom
    @rm -f bin/msxsyssrc-rc2014-$1-$2-rtc.rom
    dd status=none if=/dev/zero bs=16k count=8 of=bin/msxsyssrc-rc2014-$1-$2-rtc.rom
    dd status=none conv=notrunc status=none if=./bin/$1-$2-rtc-main.rom                                                 of=bin/msxsyssrc-rc2014-$1-$2-rtc.rom bs=16k count=2  seek=0
    dd status=none conv=notrunc status=none if=./cbios/derived/bin/cbios_logo_rc2014.rom                of=bin/msxsyssrc-rc2014-$1-$2-rtc.rom bs=16k count=1  seek=2
    dd status=none conv=notrunc status=none if=./bin/$1-$2-rtc-subrom.rom                                               of=bin/msxsyssrc-rc2014-$1-$2-rtc.rom bs=16k count=1  seek=3
    #dd status=none conv=notrunc status=none if=./bin/rc2014.nextor.rom                                             of=bin/msxsyssrc-rc2014-$1-$2-rtc.rom bs=16k count=27 seek=4
    dd status=none conv=notrunc status=none if=./rc2014-extended/bin/rc2014-extended.rom                of=bin/msxsyssrc-rc2014-$1-$2-rtc.rom bs=16k count=1  seek=31

This does, of course, prevent drivers from loading. It would be cool to have the drives loadable on demand, instead of baked into the ROM.

vipoo commented 2 months ago

Yep that will do it - no nextor image.

I dont think MSX-DOS/NEXTOR supports the idea of disk drivers loading on demand.

NEXTOR does have support for dual kernels. I am not 100% sure how it all works, but there is code in there for the kernels to decide one is master on boot. And I think there is a 'negotiation' to load relevant drivers from the alternative kernel -- but I really not sure how all that works - or if its implemented in my NEXTOR build correctly.

zomgugoff commented 2 months ago

All I can gather from the manual is that the first slot with Nextor becomes primary. I don't see any way around it. I left an issue on the Nextor repo asking about it.