jscrane / cpm80

CP/M-80 emulated on Stellarpad, ESP8266 and ESP32
GNU General Public License v2.0
4 stars 0 forks source link

Fuzix #17

Closed jscrane closed 1 week ago

jscrane commented 3 weeks ago
          Fuzix

This should be easy once the enhanced drivemap.txt parsing is done.

Originally posted by @jscrane in https://github.com/jscrane/cpm80/issues/16#issuecomment-2326712413

jscrane commented 3 weeks ago

Not so easy: seems to require at least a minimal MMU.

See ports 20-23 of simio.c

However it does get as far as a banner before panic-ing:

boot.dsk: 77 128 26
hd-fuzix.dsk: 255 128 128
-
IO: unhandled OUT(22, 240)
IO: unhandled OUT(20, 8)
IO: unhandled OUT(27, 1)
IO: unhandled OUT(21, 0)
IO: unhandled OUT(21, 0)
FUZIX version 0.4
Copyright (c) 1988-2002 by H.F.Bower, D.Braun, S.Nitschke, H.Peraza
Copyright (c) 1997-2001 by Arcady Schekochikhin, Adriano C. R. da Cunha
Copyright (c) 2013-2015 Will Sowerbutts <will@sowerbutts.com>
Copyright (c) 2014-2023 Alan Cox <alan@etchedpixels.co.uk>
Devboot

panic: map overIO: unhandled OUT(29, 128)
jscrane commented 2 weeks ago

This will require improving the present Memory abstraction.

Make relevant APIs in Memory virtual and override in BankedMemory. (Bank 0 is the "same" as existing Memory anyway.)

Provide APIs on BankedMemory to allocate and switch banks, as described above, while making the fixed segment (the top 4k) common to all banks.

jscrane commented 2 weeks ago

This has been implemented. However Fuzix on z80pack requires 7 segments of 60kB each. This much memory is not available on the esp32 unfortunately. In fact, only one bank allocation succeeds, all subsequent ones fail.

jscrane commented 2 weeks ago

More memory is available on the esp32s3: 512kB. (Whether all of this is available is not known.)

More information.

PSRAM is also an option. Apparently ESP32-WROVERs have it, e.g., lilygo-ttgo-t-koala-esp32-wrover