indy_4610/indy_5015: Serial console unusable.
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?
$ 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?
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?
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
(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.