mame icon indicating copy to clipboard operation
mame copied to clipboard

indy_4610/indy_5015: Serial console unusable.

Open jibanes opened this issue 5 months ago • 3 comments

I'm trying to run indy_5015 under MAME 0280 on Linux/x86_64 in docker.

Because I'm in docker, I just want to get a terminal input/output to the emulated sgi indy, I've tried a combination of parameters, i.e.

mame indy_5015 -video soft -sound none -nodrc -throttle -cheat -harddisk1 irix65.chd -gio64_gfx "" -rompath . -ioc2:rs232b terminal -ramsize 128M mame indy_5015 -video none -sound none -nodrc -throttle -cheat -harddisk1 irix65.chd -gio64_gfx "" -rompath . -ioc2:rs232b terminal -ramsize 128M [...]

But it seems to resolutely want to open a (x11) window, so I ran Xnest and connected to it via tightvnc, and took a screenshot. Naturally if I remove -gio64_gfx "" from the arguments, Irix starts, within Xnest.

I suppose it's not possible to get the serial console without a graphical context (disabling gio64_gfx)? If this isn't possible, I suppose I could keep running Xnest to start Irix, but then how can I connect to the emulated indy's telnetd? (I suppose irix starts a dhcp_client) do I need some extra parameters to enable a network card? or, alternatively serial console?

Image

jibanes avatar Sep 21 '25 19:09 jibanes

$ mame indy_4610 -sound none -nodrc -throttle -cheat -harddisk1 irix65.chd -rompath . -gio64_gfx "" -ioc2:rs232b null_modem -bitb socket.localhost:1234
error: XDG_RUNTIME_DIR is invalid or not set in the environment.
pci id for fd 5: 102b:0536, driver (null)
pci id for fd 6: 102b:0536, driver (null)
kmsro: driver missing
Unable to load image 'socket.localhost:1234': Connection refused (generic:111)

I'm a bit surprised at the "unable to load image" error?

jibanes avatar Sep 21 '25 22:09 jibanes

I got much further, in my container I run (in the entrypoint):

DISPLAY=:1.0 Xnest & nc -l 1234 mame indy_4610 -video none -sound none -nodrc -throttle -cheat -harddisk1 irix65.chd -rompath . -ioc2:rs232b null_modem -bitb socket.127.0.0.1:1234 error: XDG_RUNTIME_DIR is invalid or not set in the environment. Warning: -video none doesn't make much sense without -seconds_to_run pci id for fd 5: 102b:0536, driver (null) pci id for fd 6: 102b:0536, driver (null) kmsro: driver missing

After IRIX boots: I can access the IRIX prompt on localhost:1234, but the output isn't quite right, see screenshot, doesn't quite seem like a termcap issue either. Flow control perhaps? Buffering?

Image

jibanes avatar Sep 22 '25 00:09 jibanes

I experienced this issue on my end and tried diagnosing it. I figured out there's a lot of log spam from the Z80SCC device whenever the Indy is doing a lot over the serial bus. The log spam is about the FIFO being full which is what causes a lot of data to go missing, causing the terminal corruption.

I have a branch which implements a workaround but definitely not a fix. I just increased the FIFO buffers to a large amount and it fixes a majority of the issues blocking usability. There's still the occasional corrupted character or obviously broken printout. But I was able to reach the login screen and enter a terminal on my end.

If you wanna use it, you're gonna have to compile the workaround yourself, can find my branch here https://github.com/zCubed3/mame/tree/sgi/indy-serial-workaround

Image

zCubed3 avatar Oct 12 '25 05:10 zCubed3

(just a ping to myself @erikarn) to look at this, since I'm about to want to do this and i wonder if all the status / interrupt bits are wired up for the SGI Indy UARTs.

erikarn avatar Nov 30 '25 21:11 erikarn