Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Vamos - interactive programs don't register keypresses #216

Open
ryanfantus opened this issue Jan 16, 2025 · 13 comments
Open

Vamos - interactive programs don't register keypresses #216

ryanfantus opened this issue Jan 16, 2025 · 13 comments

Comments

@ryanfantus
Copy link

I've been trying to run a number of stdio text games and they start up just fine but when I'm prompted to input text, the programs don't respond. It's like they hang on waiting for character entry.

I'm using latest from tip of master today (1/15/2025). Please let me know how I can help troubleshoot, thanks!

@cnvogelg
Copy link
Owner

The whole console handling especially in raw mode is very incomplete in vamos. I have better console support planned and its one of my next tasks...

That said, I will have a look on your failing game if you could give me some details.
What program (download link?) and how to reproduce the error on your side?

You could also investigate by enabling more debug output: e.g. -l dos:debug -L debug.log should show all DOS calls triggered... then we could see the misbehaving functions...

@ryanfantus
Copy link
Author

Thanks! Here's a simple one (there are a ton of STDIO games and none of them seem to work fully). This one seems to launch fine but won't recognize any keypresses or inputs from the client.

https://aminet.net/package/comm/bbs/Achess13

Pasted the log below based on the instructions you gave, please note I had to ctrl-c to quit so that might be some of the error messages here (unclear to me though).

21:58:06.372        dos:   INFO:  setup dos.library
21:58:06.377    doslist:WARNING:  system:c does not exist
21:58:06.383        dos:   INFO:  Output() -> b000854
21:58:06.383        dos:   INFO:  Input() -> b000849
21:58:06.383        dos:   INFO:  Output() -> b000854
21:58:06.383        dos:   INFO:  Open: name='*' (old/1005/rb+) -> [FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False)@00b1dc=B@002c77]
21:58:06.384        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False)@002150=B@000854], 00b224, 512) -> 512
21:58:06.385        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False)@002150=B@000854], 00b224, 512) -> 512
21:58:06.386        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False)@002150=B@000854], 00b224, 512) -> 512
21:58:06.387        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False)@002150=B@000854], 00b224, 512) -> 512
21:58:06.387        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False)@002150=B@000854], 00b224, 512) -> 512
21:58:06.388        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False)@002150=B@000854], 00b224, 221) -> 221
21:58:09.871    machine:  ERROR:  ----- ERROR in CPU Run #1 -----
21:58:09.872    machine:  ERROR:  Run: 'chess': Initial PC=002198, SP=00af6c
21:58:09.872    machine:  ERROR:  PC=00001b6a  SR=-----    USP=0000ae24 ISP=00000700 MSP=00000780
21:58:09.872    machine:  ERROR:  D0=00008f0c  D1=00000849  D2=0000b428  D3=00000200  D4=00000000  D5=00000000  D6=00000000  D7=00000001
21:58:09.872    machine:  ERROR:  A0=0000b428  A1=0000b210  A2=0000aec4  A3=0000b428  A4=0000731c  A5=00008f0c  A6=00001ae8  A7=0000ae24
21:58:09.872    machine:  ERROR:  SP-32=000000 SP-28=000000 SP-24=000000 SP-20=000000 SP-16=006478 SP-12=00b224 SP-08=006478 SP-04=008ad8
21:58:09.872    machine:  ERROR:  SP+00=005a7c SP+04=00ffff SP+08=000000 SP+12=000000 SP+16=00aec4 SP+20=00aee8 SP+24=008ad8 SP+28=00133c
21:58:09.873    machine:  ERROR:  Traceback (most recent call last):
21:58:09.873    machine:  ERROR:    File "src/pytraps.pyx", line 19, in machine68k.trap_wrapper
21:58:09.873    machine:  ERROR:    File "/home/bbs/development/amitools/env/lib/python3.12/site-packages/amitools/vamos/libcore/stub.py", line 207, in base_func
21:58:09.873    machine:  ERROR:      res = method(ctx)
21:58:09.873    machine:  ERROR:            ^^^^^^^^^^^
21:58:09.873    machine:  ERROR:    File "/home/bbs/development/amitools/env/lib/python3.12/site-packages/amitools/vamos/lib/DosLibrary.py", line 603, in Read
21:58:09.873    machine:  ERROR:      data = fh.read(size)
21:58:09.873    machine:  ERROR:             ^^^^^^^^^^^^^
21:58:09.873    machine:  ERROR:    File "/home/bbs/development/amitools/env/lib/python3.12/site-packages/amitools/vamos/lib/dos/FileHandle.py", line 68, in read
21:58:09.873    machine:  ERROR:      d = self.obj.read(len)
21:58:09.873    machine:  ERROR:          ^^^^^^^^^^^^^^^^^^
21:58:09.874    machine:  ERROR:  KeyboardInterrupt
21:58:09.874       main:  ERROR:  vamos failed!
21:58:09.874     libmgr:WARNING:  can't expunge: 'dos.library' with open count 1
21:58:09.874     libmgr:WARNING:  shutdown: can't expunge 1 vamos libs/devs!

@cnvogelg
Copy link
Owner

Thanks for the binary. I could reproduce the issue. vamos did not stop the read on a line ending in the console... that caused the block.

I have pushed a fix in 3bc6aee. This is on my dev branch. If you test it then make sure to use the dev branch of machine68k as well...

Please retest and report the next fail :)

@ryanfantus
Copy link
Author

Thanks! Cursory test and things are working here. I should mention I did not follow your instructions as it pertains to machine68k but will do so before I do more intensive testing :)

Just as an FYI, my use case is to serve Amiga BBS door games written to output in STDIO from my linux BBS. In essence to revive some of the old and cool games.

Thanks again for the help! I'll follow up soon with more findings (if any).

@ryanfantus
Copy link
Author

Ok - second game having issues. This one is called "Deep Space Empire" - download link on aminet is here.

There are two issues with this game so far that I can notice. The first of which is that when I launch vamos <bin> <args> and the <args> include a -, I have to prepend the args with a --. I can create a separate ticket for this if you like. But for example, to launch this game in particular, if I launch it with vamos -q dse -s test, it spits out config: ERROR: args: unrecognized arguments: -s test, but if I launch it as vamos -q dse -- -s test, it will launch.

Launching works, I can select the options at the intro menu. However if I choose option 1 and try to answer the prompt with my username, it just spits out what I entered but fails to move past this screen.

debug.log

04:48:39.681        dos:   INFO:  setup dos.library
04:48:39.703        dos:   INFO:  Output() -> b000854
04:48:39.703        dos:   INFO:  Input() -> b000849
04:48:39.703        dos:   INFO:  Output() -> b000854
04:48:39.703        dos:   INFO:  Open: name='*' (old/1005/rb+) -> [FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@01eaac=B@007aab]
04:48:39.711        dos:   INFO:  ReadArgs: template='-D/S,-N/S,-S/S,-E/S,USERID,NODEID,FIFO/S' array_ptr=0001ad8e rdargs_ptr=00000000
04:48:39.711        dos:   INFO:  ReadArgs: tal=[#7:(#0:-D,2,k=True,r=False,m=False),(#1:-N,2,k=True,r=False,m=False),(#2:-S,2,k=True,r=False,m=False),(#3:-E,2,k=True,r=False,m=False),(#4:USERID,0,k=False,r=False,m=False),(#5:NODEID,0,k=False,r=False,m=False),(#6:FIFO,2,k=True,r=False,m=False)]
04:48:39.711        dos:   INFO:  ReadArgs: input=[FH:'stdin'(ami='<STDIN>',sys='/dev/stdin',nc=False,af=False,int=True)@002124=B@000849] csrc=FileLineCSource(7:b'-n esc\n')
04:48:39.711        dos:   INFO:  ReadArgs: flags=0 ext_help=None
04:48:39.711        dos:   INFO:  ReadArgs: parse input: b'-n esc\n' @0
04:48:39.711        dos:   INFO:  ReadArgs: parse error=0 list=[None, True, None, None, 'esc', None, None]
04:48:39.711        dos:   INFO:  ReadArgs: extra memory: total_bytes=4 num_longs=0
04:48:39.712        dos:   INFO:  Open: name='SpcInfo.DAT' (old/1005/rb+) -> [FH:'SpcInfo.DAT'(ami='SpcInfo.DAT',sys='/home/bbs/development/amitools/shared/dse/SpcInfo.DAT',nc=True,af=False,int=False)@021754=B@0085d5]
04:48:39.712        dos:   INFO:  Close: [FH:'SpcInfo.DAT'(ami='SpcInfo.DAT',sys='/home/bbs/development/amitools/shared/dse/SpcInfo.DAT',nc=True,af=False,int=False)@021754=B@0085d5]
04:48:39.712        dos:   INFO:  Open: name='SpcInfo.DAT' (old/1005/rb+) -> [FH:'SpcInfo.DAT'(ami='SpcInfo.DAT',sys='/home/bbs/development/amitools/shared/dse/SpcInfo.DAT',nc=True,af=False,int=False)@021754=B@0085d5]
04:48:39.713        dos:   INFO:  Read([FH:'SpcInfo.DAT'(ami='SpcInfo.DAT',sys='/home/bbs/development/amitools/shared/dse/SpcInfo.DAT',nc=True,af=False,int=False)@021754=B@0085d5], 0207a0, 512) -> 22
04:48:39.713        dos:   INFO:  Close: [FH:'SpcInfo.DAT'(ami='SpcInfo.DAT',sys='/home/bbs/development/amitools/shared/dse/SpcInfo.DAT',nc=True,af=False,int=False)@021754=B@0085d5]
04:48:39.713        dos:   INFO:  Open: name='Text/DSE-Msgs.txt' (old/1005/rb+) -> [FH:'DSE-Msgs.txt'(ami='Text/DSE-Msgs.txt',sys='/home/bbs/development/amitools/shared/dse/Text/DSE-Msgs.txt',nc=True,af=False,int=False)@021754=B@0085d5]
04:48:39.713        dos:   INFO:  Seek([FH:'DSE-Msgs.txt'(ami='Text/DSE-Msgs.txt',sys='/home/bbs/development/amitools/shared/dse/Text/DSE-Msgs.txt',nc=True,af=False,int=False)@021754=B@0085d5], 000000, END) -> old_pos=000000
04:48:39.713        dos:   INFO:  Seek([FH:'DSE-Msgs.txt'(ami='Text/DSE-Msgs.txt',sys='/home/bbs/development/amitools/shared/dse/Text/DSE-Msgs.txt',nc=True,af=False,int=False)@021754=B@0085d5], 000000, BEGINNING) -> old_pos=0069fd
04:48:39.713        dos:   INFO:  Read([FH:'DSE-Msgs.txt'(ami='Text/DSE-Msgs.txt',sys='/home/bbs/development/amitools/shared/dse/Text/DSE-Msgs.txt',nc=True,af=False,int=False)@021754=B@0085d5], 01e72a, 4) -> 4
04:48:39.713        dos:   INFO:  Seek([FH:'DSE-Msgs.txt'(ami='Text/DSE-Msgs.txt',sys='/home/bbs/development/amitools/shared/dse/Text/DSE-Msgs.txt',nc=True,af=False,int=False)@021754=B@0085d5], 000000, BEGINNING) -> old_pos=000004
04:48:39.713        dos:   INFO:  Read([FH:'DSE-Msgs.txt'(ami='Text/DSE-Msgs.txt',sys='/home/bbs/development/amitools/shared/dse/Text/DSE-Msgs.txt',nc=True,af=False,int=False)@021754=B@0085d5], 021780, 27133) -> 27133
04:48:39.713        dos:   INFO:  Close: [FH:'DSE-Msgs.txt'(ami='Text/DSE-Msgs.txt',sys='/home/bbs/development/amitools/shared/dse/Text/DSE-Msgs.txt',nc=True,af=False,int=False)@021754=B@0085d5]
04:48:39.716        dos:   INFO:  Open: name='SpcPlayer.DAT' (old/1005/rb+) -> [FH:'SpcPlayer.DAT'(ami='SpcPlayer.DAT',sys='/home/bbs/development/amitools/shared/dse/SpcPlayer.DAT',nc=True,af=False,int=False)@021754=B@0085d5]
04:48:39.716        dos:   INFO:  Close: [FH:'SpcPlayer.DAT'(ami='SpcPlayer.DAT',sys='/home/bbs/development/amitools/shared/dse/SpcPlayer.DAT',nc=True,af=False,int=False)@021754=B@0085d5]
04:48:39.717        dos:   INFO:  Open: name='SpcPlayer.DAT' (old/1005/rb+) -> [FH:'SpcPlayer.DAT'(ami='SpcPlayer.DAT',sys='/home/bbs/development/amitools/shared/dse/SpcPlayer.DAT',nc=True,af=False,int=False)@021754=B@0085d5]
04:48:39.717        dos:   INFO:  Seek([FH:'SpcPlayer.DAT'(ami='SpcPlayer.DAT',sys='/home/bbs/development/amitools/shared/dse/SpcPlayer.DAT',nc=True,af=False,int=False)@021754=B@0085d5], 000000, END) -> old_pos=000000
04:48:39.717        dos:   INFO:  Seek([FH:'SpcPlayer.DAT'(ami='SpcPlayer.DAT',sys='/home/bbs/development/amitools/shared/dse/SpcPlayer.DAT',nc=True,af=False,int=False)@021754=B@0085d5], 000000, CURRENT) -> old_pos=0000e2
04:48:39.717        dos:   INFO:  Seek([FH:'SpcPlayer.DAT'(ami='SpcPlayer.DAT',sys='/home/bbs/development/amitools/shared/dse/SpcPlayer.DAT',nc=True,af=False,int=False)@021754=B@0085d5], 000000, CURRENT) -> old_pos=0000e2
04:48:39.717        dos:   INFO:  Seek([FH:'SpcPlayer.DAT'(ami='SpcPlayer.DAT',sys='/home/bbs/development/amitools/shared/dse/SpcPlayer.DAT',nc=True,af=False,int=False)@021754=B@0085d5], 000000, CURRENT) -> old_pos=0000e2
04:48:39.717        dos:   INFO:  Seek([FH:'SpcPlayer.DAT'(ami='SpcPlayer.DAT',sys='/home/bbs/development/amitools/shared/dse/SpcPlayer.DAT',nc=True,af=False,int=False)@021754=B@0085d5], 000000, CURRENT) -> old_pos=0000e2
04:48:39.717        dos:   INFO:  Seek([FH:'SpcPlayer.DAT'(ami='SpcPlayer.DAT',sys='/home/bbs/development/amitools/shared/dse/SpcPlayer.DAT',nc=True,af=False,int=False)@021754=B@0085d5], 000000, BEGINNING) -> old_pos=0000e2
04:48:39.717        dos:   INFO:  Read([FH:'SpcPlayer.DAT'(ami='SpcPlayer.DAT',sys='/home/bbs/development/amitools/shared/dse/SpcPlayer.DAT',nc=True,af=False,int=False)@021754=B@0085d5], 0207a4, 512) -> 226
04:48:39.718        dos:   INFO:  Close: [FH:'SpcPlayer.DAT'(ami='SpcPlayer.DAT',sys='/home/bbs/development/amitools/shared/dse/SpcPlayer.DAT',nc=True,af=False,int=False)@021754=B@0085d5]
04:48:39.718        dos:   INFO:  Open: name='Teams.DAT' (old/1005/rb+) -> [FH:'Teams.DAT'(ami='Teams.DAT',sys='/home/bbs/development/amitools/shared/dse/Teams.DAT',nc=True,af=False,int=False)@021754=B@0085d5]
04:48:39.718        dos:   INFO:  Seek([FH:'Teams.DAT'(ami='Teams.DAT',sys='/home/bbs/development/amitools/shared/dse/Teams.DAT',nc=True,af=False,int=False)@021754=B@0085d5], 000000, END) -> old_pos=000000
04:48:39.718        dos:   INFO:  Seek([FH:'Teams.DAT'(ami='Teams.DAT',sys='/home/bbs/development/amitools/shared/dse/Teams.DAT',nc=True,af=False,int=False)@021754=B@0085d5], 000000, CURRENT) -> old_pos=00005a
04:48:39.718        dos:   INFO:  Seek([FH:'Teams.DAT'(ami='Teams.DAT',sys='/home/bbs/development/amitools/shared/dse/Teams.DAT',nc=True,af=False,int=False)@021754=B@0085d5], 000000, CURRENT) -> old_pos=00005a
04:48:39.719        dos:   INFO:  Seek([FH:'Teams.DAT'(ami='Teams.DAT',sys='/home/bbs/development/amitools/shared/dse/Teams.DAT',nc=True,af=False,int=False)@021754=B@0085d5], 000000, CURRENT) -> old_pos=00005a
04:48:39.719        dos:   INFO:  Seek([FH:'Teams.DAT'(ami='Teams.DAT',sys='/home/bbs/development/amitools/shared/dse/Teams.DAT',nc=True,af=False,int=False)@021754=B@0085d5], 000000, CURRENT) -> old_pos=00005a
04:48:39.719        dos:   INFO:  Seek([FH:'Teams.DAT'(ami='Teams.DAT',sys='/home/bbs/development/amitools/shared/dse/Teams.DAT',nc=True,af=False,int=False)@021754=B@0085d5], 000000, BEGINNING) -> old_pos=00005a
04:48:39.719        dos:   INFO:  Read([FH:'Teams.DAT'(ami='Teams.DAT',sys='/home/bbs/development/amitools/shared/dse/Teams.DAT',nc=True,af=False,int=False)@021754=B@0085d5], 0207a0, 512) -> 90
04:48:39.719        dos:   INFO:  Close: [FH:'Teams.DAT'(ami='Teams.DAT',sys='/home/bbs/development/amitools/shared/dse/Teams.DAT',nc=True,af=False,int=False)@021754=B@0085d5]
04:48:39.719        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 2) -> 2
04:48:39.719        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 2) -> 2
04:48:39.720        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 60) -> 60
04:48:39.720        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 2) -> 2
04:48:39.720        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 52) -> 52
04:48:39.720        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 2) -> 2
04:48:39.721        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 39) -> 39
04:48:40.580        dos:   INFO:  Read([FH:'stdin'(ami='<STDIN>',sys='/dev/stdin',nc=False,af=False,int=True)@002124=B@000849], 020994, 512) -> 1
04:48:40.580        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 5) -> 5
04:48:40.580        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 2) -> 2
04:48:40.581        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 84) -> 84
04:48:40.581        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 2) -> 2
04:48:40.581        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 84) -> 84
04:48:40.581        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 2) -> 2
04:48:40.582        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 67) -> 67
04:48:40.582        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 2) -> 2
04:48:40.582        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 89) -> 89
04:48:41.321        dos:   INFO:  Read([FH:'stdin'(ami='<STDIN>',sys='/dev/stdin',nc=False,af=False,int=True)@002124=B@000849], 020994, 512) -> 1
04:48:41.321        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 5) -> 5
04:48:41.322        dos:   INFO:  Open: name='Text/Main.mnu' (old/1005/rb+) -> [FH:'Main.mnu'(ami='Text/Main.mnu',sys='/home/bbs/development/amitools/shared/dse/Text/Main.mnu',nc=True,af=False,int=False)@021754=B@0085d5]
04:48:41.322        dos:   INFO:  Seek([FH:'Main.mnu'(ami='Text/Main.mnu',sys='/home/bbs/development/amitools/shared/dse/Text/Main.mnu',nc=True,af=False,int=False)@021754=B@0085d5], 000000, END) -> old_pos=000000
04:48:41.322        dos:   INFO:  Seek([FH:'Main.mnu'(ami='Text/Main.mnu',sys='/home/bbs/development/amitools/shared/dse/Text/Main.mnu',nc=True,af=False,int=False)@021754=B@0085d5], 000000, BEGINNING) -> old_pos=000561
04:48:41.322        dos:   INFO:  Read([FH:'Main.mnu'(ami='Text/Main.mnu',sys='/home/bbs/development/amitools/shared/dse/Text/Main.mnu',nc=True,af=False,int=False)@021754=B@0085d5], 01e722, 4) -> 4
04:48:41.322        dos:   INFO:  Seek([FH:'Main.mnu'(ami='Text/Main.mnu',sys='/home/bbs/development/amitools/shared/dse/Text/Main.mnu',nc=True,af=False,int=False)@021754=B@0085d5], 000000, BEGINNING) -> old_pos=000004
04:48:41.322        dos:   INFO:  Read([FH:'Main.mnu'(ami='Text/Main.mnu',sys='/home/bbs/development/amitools/shared/dse/Text/Main.mnu',nc=True,af=False,int=False)@021754=B@0085d5], 0283f8, 1377) -> 1377
04:48:41.322        dos:   INFO:  Close: [FH:'Main.mnu'(ami='Text/Main.mnu',sys='/home/bbs/development/amitools/shared/dse/Text/Main.mnu',nc=True,af=False,int=False)@021754=B@0085d5]
04:48:41.322        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 3) -> 3
04:48:41.323        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 72) -> 72
04:48:41.324        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 219) -> 219
04:48:41.324        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 65) -> 65
04:48:41.324        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 65) -> 65
04:48:41.325        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 93) -> 93
04:48:41.325        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 65) -> 65
04:48:41.326        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 93) -> 93
04:48:41.326        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 65) -> 65
04:48:41.326        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 93) -> 93
04:48:41.327        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 65) -> 65
04:48:41.327        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 93) -> 93
04:48:41.327        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 65) -> 65
04:48:41.328        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 93) -> 93
04:48:41.328        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 65) -> 65
04:48:41.329        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 93) -> 93
04:48:41.329        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 65) -> 65
04:48:41.329        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 93) -> 93
04:48:41.330        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 65) -> 65
04:48:41.330        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 72) -> 72
04:48:41.330        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 2) -> 2
04:48:41.330        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 43) -> 43
04:48:43.053        dos:   INFO:  Read([FH:'stdin'(ami='<STDIN>',sys='/dev/stdin',nc=False,af=False,int=True)@002124=B@000849], 020994, 512) -> 2
04:48:43.053        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 3) -> 3
04:48:43.053        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 2) -> 2
04:48:43.054        dos:   INFO:  Open: name='SEEditor' (old/1005/rb+) -> None
04:48:43.054        dos:   INFO:  IoErr: 205 (ERROR_OBJECT_NOT_FOUND)
04:48:43.054        dos:   INFO:  Open: name='SEMaint' (old/1005/rb+) -> None
04:48:43.054        dos:   INFO:  IoErr: 205 (ERROR_OBJECT_NOT_FOUND)
04:48:43.055        dos:   INFO:  Open: name='T:SERunning.0' (old/1005/rb+) -> None
04:48:43.055        dos:   INFO:  IoErr: 205 (ERROR_OBJECT_NOT_FOUND)
04:48:43.056        dos:   INFO:  Lock: (Lock('dse'(ami='shared:dse',sys='/home/bbs/development/amitools/shared/dse',key=10,ex=0, vol=7552)@00217c=b@00085f)) 'T:SERunning.0' exc=False -> None
04:48:43.056        dos:   INFO:  Open: name='T:SERunning.0' (new/1006/wb+) -> [FH:'SERunning.0'(ami='T:SERunning.0',sys='/home/bbs/.vamos/volumes/ram/t/SERunning.0',nc=True,af=False,int=False)@021754=B@0085d5]
04:48:43.056        dos:   INFO:  SetProtection: 'T:SERunning.0' mask=0002: err=0
04:48:43.057        dos:   INFO:  Write([FH:'SERunning.0'(ami='T:SERunning.0',sys='/home/bbs/.vamos/volumes/ram/t/SERunning.0',nc=True,af=False,int=False)@021754=B@0085d5], 020bac, 18) -> 18
04:48:43.057        dos:   INFO:  Close: [FH:'SERunning.0'(ami='T:SERunning.0',sys='/home/bbs/.vamos/volumes/ram/t/SERunning.0',nc=True,af=False,int=False)@021754=B@0085d5]
04:48:43.057        dos:   INFO:  Open: name='Text/Intro.txt' (old/1005/rb+) -> [FH:'Intro.txt'(ami='Text/Intro.txt',sys='/home/bbs/development/amitools/shared/dse/Text/Intro.txt',nc=True,af=False,int=False)@021754=B@0085d5]
04:48:43.057        dos:   INFO:  Seek([FH:'Intro.txt'(ami='Text/Intro.txt',sys='/home/bbs/development/amitools/shared/dse/Text/Intro.txt',nc=True,af=False,int=False)@021754=B@0085d5], 000000, END) -> old_pos=000000
04:48:43.057        dos:   INFO:  Seek([FH:'Intro.txt'(ami='Text/Intro.txt',sys='/home/bbs/development/amitools/shared/dse/Text/Intro.txt',nc=True,af=False,int=False)@021754=B@0085d5], 000000, BEGINNING) -> old_pos=000109
04:48:43.057        dos:   INFO:  Read([FH:'Intro.txt'(ami='Text/Intro.txt',sys='/home/bbs/development/amitools/shared/dse/Text/Intro.txt',nc=True,af=False,int=False)@021754=B@0085d5], 01e6b2, 4) -> 4
04:48:43.057        dos:   INFO:  Seek([FH:'Intro.txt'(ami='Text/Intro.txt',sys='/home/bbs/development/amitools/shared/dse/Text/Intro.txt',nc=True,af=False,int=False)@021754=B@0085d5], 000000, BEGINNING) -> old_pos=000004
04:48:43.057        dos:   INFO:  Read([FH:'Intro.txt'(ami='Text/Intro.txt',sys='/home/bbs/development/amitools/shared/dse/Text/Intro.txt',nc=True,af=False,int=False)@021754=B@0085d5], 0283f8, 265) -> 265
04:48:43.057        dos:   INFO:  Close: [FH:'Intro.txt'(ami='Text/Intro.txt',sys='/home/bbs/development/amitools/shared/dse/Text/Intro.txt',nc=True,af=False,int=False)@021754=B@0085d5]
04:48:43.058        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 10) -> 10
04:48:43.058        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 52) -> 52
04:48:43.058        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 47) -> 47
04:48:43.058        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 48) -> 48
04:48:43.059        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 44) -> 44
04:48:43.059        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 84) -> 84
04:48:43.059        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 6) -> 6
04:48:43.060        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 62) -> 62
04:48:43.060        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 54) -> 54
04:48:43.060        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 57) -> 57
04:48:43.061        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 2) -> 2
04:48:43.061        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 2) -> 2
04:48:43.061        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 30) -> 30
04:48:43.061        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 2) -> 2
04:48:43.061        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 39) -> 39
04:48:43.061        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 87) -> 87
04:48:43.062        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 40) -> 40
04:48:44.222        dos:   INFO:  Read([FH:'stdin'(ami='<STDIN>',sys='/dev/stdin',nc=False,af=False,int=True)@002124=B@000849], 020994, 512) -> 4
04:48:44.222        dos:   INFO:  Write([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002150=B@000854], 020790, 3) -> 3
04:48:45.150        dos:   INFO:  Read([FH:'stdin'(ami='<STDIN>',sys='/dev/stdin',nc=False,af=False,int=True)@002124=B@000849], 020994, 512) -> 1
04:48:45.975    machine:  ERROR:  ----- ERROR in CPU Run #1 -----
04:48:45.975    machine:  ERROR:  Run: 'dse': Initial PC=002198, SP=01e834
04:48:45.975    machine:  ERROR:  PC=00001b6a  SR=-----    USP=0001e6dc ISP=00000700 MSP=00000780
04:48:45.976    machine:  ERROR:  D0=0001c768  D1=00000849  D2=00020994  D3=00000200  D4=00000000  D5=0000000a  D6=00000000  D7=00000001
04:48:45.976    machine:  ERROR:  A0=00020994  A1=00020792  A2=0001e83c  A3=00020994  A4=0001c350  A5=0001c768  A6=00001ae8  A7=0001e6dc
04:48:45.976    machine:  ERROR:  SP-32=01c788 SP-28=000004 SP-24=018628 SP-20=020790 SP-16=017b0e SP-12=00ffff SP-08=018628 SP-04=01c614
04:48:45.976    machine:  ERROR:  SP+00=017c00 SP+04=00ffff SP+08=000000 SP+12=000002 SP+16=01c083 SP+20=01c614 SP+24=00133c SP+28=000000
04:48:45.977    machine:  ERROR:  Traceback (most recent call last):
04:48:45.977    machine:  ERROR:    File "src/pytraps.pyx", line 19, in machine68k.trap_wrapper
04:48:45.977    machine:  ERROR:    File "/home/bbs/development/amitools/env/lib/python3.12/site-packages/amitools/vamos/libcore/stub.py", line 207, in base_func
04:48:45.977    machine:  ERROR:      res = method(ctx)
04:48:45.978    machine:  ERROR:            ^^^^^^^^^^^
04:48:45.978    machine:  ERROR:    File "/home/bbs/development/amitools/env/lib/python3.12/site-packages/amitools/vamos/lib/DosLibrary.py", line 603, in Read
04:48:45.978    machine:  ERROR:      data = fh.read(size)
04:48:45.978    machine:  ERROR:             ^^^^^^^^^^^^^
04:48:45.978    machine:  ERROR:    File "/home/bbs/development/amitools/env/lib/python3.12/site-packages/amitools/vamos/lib/dos/FileHandle.py", line 72, in read
04:48:45.978    machine:  ERROR:      d = self.obj.read1(len)
04:48:45.978    machine:  ERROR:          ^^^^^^^^^^^^^^^^^^^
04:48:45.978    machine:  ERROR:  KeyboardInterrupt
04:48:45.978       main:  ERROR:  vamos failed!

@cnvogelg
Copy link
Owner

If a program needs options with dashes then you need to terminate the option parsing of vamos itself with a double dash:

vamos <vamos_options> -- amiga_binary <amiga_options>

This is required by the option parser and can't be "fixed"...

Regarding the runtime problem I have no clue yet what goes wrong :( If I compare the behaviour on OS 3.2 with vamos I already see that the first interaction ("do you have an ANSI terminal?") already breaks... On Amiga you enter a single char but on vamos you have to add a return.... This unfortunately skips the next question ("IBM charset?") completely....

I suspected its related to Raw/Cooked mode of the terminal, but I don't see the associated calls....

@ryanfantus
Copy link
Author

Got it. Ok. Is there anything else I can provide with this binary to see if we can further diagnose? I really appreciate your help :)

Alternatively if you think this one may not go anywhere, I can easily switch to another binary. Please let me know what makes sense. Honestly there aren't a ton of these old STDIO games so hopefully making one or two of them work completely will suffice for the other games as well.

@ryanfantus
Copy link
Author

ryanfantus commented Jan 22, 2025

Dreamsweeper's a game I can't get to launch using vamos. It doesn't output anything when running vamos, nor does increased logging do much. Perhaps this one is simpler to troubleshoot :) https://aminet.net/comm/bbs/dRMSWR11.lha

Grotte is another one that doesn't launch at all and there is nothing in logs. https://aminet.net/comm/bbs/GrotteDemo.lha - does launching a binary in vamos take the tooltype of the binary into account? This game needs some tooltypes set.

Global war is one that needs to be in DOORS:globalwar - the archive is here - https://aminet.net/comm/bbs/GW221e.lha - this one has the same issue of failing when I have to enter my username. Perhaps there is better info in the log?

15:32:30.392        dos:   INFO:  setup dos.library
15:32:30.409        dos:   INFO:  Output() -> b000840
15:32:30.409        dos:   INFO:  Input() -> b000835
15:32:30.409        dos:   INFO:  Output() -> b000840
15:32:30.409        dos:   INFO:  Open: name='*' (old/1005/rb+) -> [FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@028864=B@00a219]
15:32:30.410        dos:   INFO:  Input() -> b000835
15:32:30.410        dos:   INFO:  ReadArgs: template='NAME/M,ACCESS/K,PAGELENGTH/K,TIMELEFT/K' array_ptr=000284f4 rdargs_ptr=00000000
15:32:30.410        dos:   INFO:  ReadArgs: tal=[#4:(#0:NAME,0,k=False,r=False,m=True),(#1:ACCESS,0,k=True,r=False,m=False),(#2:PAGELENGTH,0,k=True,r=False,m=False),(#3:TIMELEFT,0,k=True,r=False,m=False)]
15:32:30.410        dos:   INFO:  ReadArgs: input=[FH:'stdin'(ami='<STDIN>',sys='/dev/stdin',nc=False,af=False,int=True)@0020d4=B@000835] csrc=FileLineCSource(41:b'esc ACCESS 100 PAGELENGTH 25 TIMELEFT 99\n')
15:32:30.410        dos:   INFO:  ReadArgs: flags=0 ext_help=None
15:32:30.410        dos:   INFO:  ReadArgs: parse input: b'esc ACCESS 100 PAGELENGTH 25 TIMELEFT 99\n' @0
15:32:30.410        dos:   INFO:  ReadArgs: parse error=0 list=[['esc'], '100', '25', '99']
15:32:30.410        dos:   INFO:  ReadArgs: extra memory: total_bytes=22 num_longs=2
15:32:30.413        dos:   INFO:  FreeArgs: 028aa8
15:32:30.414        dos:   INFO:  Lock: (Lock('globalwar'(ami='doors:globalwar',sys='/home/bbs/development/amitools/shared/globalwar',key=9,ex=0, vol=7552)@00212c=b@00084b)) 'GW.con' exc=False -> Lock('GW.con'(ami='doors:globalwar/GW.con',sys='/home/bbs/development/amitools/shared/globalwar/GW.con',key=11,ex=0, vol=7552)@028a90=b@00a2a4)
15:32:30.415        dos:   INFO:  UnLock: Lock('GW.con'(ami='doors:globalwar/GW.con',sys='/home/bbs/development/amitools/shared/globalwar/GW.con',key=11,ex=0, vol=7552)@028a90=b@00a2a4)
15:32:30.416        dos:   INFO:  Open: name='GW.con' (old/1005/rb+) -> [FH:'GW.con'(ami='GW.con',sys='/home/bbs/development/amitools/shared/globalwar/GW.con',nc=True,af=False,int=False)@028a90=B@00a2a4]
15:32:30.416        dos:   INFO:  Seek([FH:'GW.con'(ami='GW.con',sys='/home/bbs/development/amitools/shared/globalwar/GW.con',nc=True,af=False,int=False)@028a90=B@00a2a4], 000000, END) -> old_pos=000000
15:32:30.416        dos:   INFO:  Seek([FH:'GW.con'(ami='GW.con',sys='/home/bbs/development/amitools/shared/globalwar/GW.con',nc=True,af=False,int=False)@028a90=B@00a2a4], 000000, BEGINNING) -> old_pos=00082e
15:32:30.416        dos:   INFO:  Read([FH:'GW.con'(ami='GW.con',sys='/home/bbs/development/amitools/shared/globalwar/GW.con',nc=True,af=False,int=False)@028a90=B@00a2a4], 028b7c, 2094) -> 2094
15:32:30.416        dos:   INFO:  Close: [FH:'GW.con'(ami='GW.con',sys='/home/bbs/development/amitools/shared/globalwar/GW.con',nc=True,af=False,int=False)@028a90=B@00a2a4]
15:32:30.417        dos:   INFO:  Open: name='GWranks.txt' (old/1005/rb+) -> [FH:'GWRanks.txt'(ami='GWranks.txt',sys='/home/bbs/development/amitools/shared/globalwar/GWRanks.txt',nc=True,af=False,int=False)@028a90=B@00a2a4]
15:32:30.417        dos:   INFO:  Seek([FH:'GWRanks.txt'(ami='GWranks.txt',sys='/home/bbs/development/amitools/shared/globalwar/GWRanks.txt',nc=True,af=False,int=False)@028a90=B@00a2a4], 000000, END) -> old_pos=000000
15:32:30.417        dos:   INFO:  Seek([FH:'GWRanks.txt'(ami='GWranks.txt',sys='/home/bbs/development/amitools/shared/globalwar/GWRanks.txt',nc=True,af=False,int=False)@028a90=B@00a2a4], 000000, BEGINNING) -> old_pos=0001f1
15:32:30.418        dos:   INFO:  Read([FH:'GWRanks.txt'(ami='GWranks.txt',sys='/home/bbs/development/amitools/shared/globalwar/GWRanks.txt',nc=True,af=False,int=False)@028a90=B@00a2a4], 028b7c, 497) -> 497
15:32:30.418        dos:   INFO:  Close: [FH:'GWRanks.txt'(ami='GWranks.txt',sys='/home/bbs/development/amitools/shared/globalwar/GWRanks.txt',nc=True,af=False,int=False)@028a90=B@00a2a4]
15:32:30.419        dos:   INFO:  PutStr: 'b'\x1b[H\x1b[2J\x1b[0;31;40m''
15:32:30.419        dos:   INFO:  Output() -> b000840
15:32:30.419        dos:   INFO:  PutStr: 'b'\x1b[2;27H''
15:32:30.419        dos:   INFO:  Output() -> b000840
15:32:30.419        dos:   INFO:  PutStr: 'b"JANNE'S TEST BBS PRESENTS"'
15:32:30.419        dos:   INFO:  Output() -> b000840
15:32:30.419        dos:   INFO:  PutStr: 'b'\x1b[0;34;40m''
15:32:30.419        dos:   INFO:  Output() -> b000840
15:32:30.419        dos:   INFO:  PutStr: 'b'\x1b[0m\x1b[4H \x1b[31m\xdb\xdb\xdb\xdb\xdb\xdb\xdb  \xdb\xdb\x1b[6C\xdb\xdb\xdb\xdb\xdb\xdb\xdb\xdb  \xdb\xdb\xdb\xdb\x1b[1;36;41m\xc9\xcd\x1b[40m\xcd\xcd\x1b[41m\xcd\xcd\xcd\xcd\xcd\xcd\x1b[40m\xcd\xcd\x1b[41m\xbb\x1b[0;31m\xdb\x1b[8C\xdb\xdb\xdb   \xdb\xdb  \xdb\xdb\xdb\xdb\xdb\xdb  \xdb\xdb\xdb\xdb\xdb\xdb\n\r \xdb\xdb\xdb\xdb\xdb\xdb\xdb  \xdb\xdb\x1b[6C\xdb\xdb\xdb\xdb\xdb\xdb\xdb\xdb  \xdb\xdb  \x1b[1;36;41m\xba \x1b[40m\xc9\xcd\x1b[41m\xcd\xcd\x1b[40m\xcd\xcd\x1b[41m\xcd\xcd\x1b[40m\xbb \x1b[41m\xba\x1b[0;31m\xdb\x1b[8C\xdb\xdb\xdb   \xdb\xdb  \xdb\xdb  \xdb\xdb  \xdb\xdb  \xdb\xdb\n\r \xb2\xdb  \xdb\xdb\xdb  \xdb\xdb\x1b[6C\xdb\xb2\xdb \xdb\xdb\xdb\xdb  \xdb\xdb  \x1b[1;36;41m\xc8\xcd\x1b[40m\xbc \x1b[0;31m\xb2\xdb  \xdb\xdb\x1b[1;36m\xba \x1b[41m\xba\x1b[0;31m\xdb\x1b[8C\xdb\xb2\xb2   \xdb\xdb  \xdb\xdb  \xdb\xdb  \xdb\xdb  \xdb\xdb\n\r \xdb\xb2\x1b[7C\xb2\xb2\x1b[6C\xb2\xdb\xdb \xdb\xb2\xb2\xdb  \xdb\xb2  \x1b[41m \x1b[40m\xb2  \xb2\xb2  \xb2\xdb\x1b[1;36m\xba \x1b[41m\xba\x1b[0;31m\xdb\x1b[8C\xb2\xdb\xb2   \xb2\xdb  \xdb\xdb  \xdb\xdb  \xb2\xdb  \xdb\xdb\n\r \xdb\xdb\xb2 \xb2\xb2\xb2 \xb2\xb2\xb2\x1b[6C\xb2\xb2\xdb  \xb2\xb2\xb2 \xb2\xb2\xb2\xb2\xb2\x1b[1;36;41m\xc9\x1b[40m\xcd\xcd\x1b[41m\xcd\xcd\xcd\xcd\xcd\xcd\xcd\x1b[40m\xbc \x1b[41m\xba\x1b[0;31m\xdb\x1b[8C\xb2\xb2\xb2   \xb2\xb2 \xdb\xb2\xb2\xdb\xdb\xb2\xb2 \xb2\xb2\xdb\xdb\xb2\xb2\xb2\n\r \xb2\xdb\xb2 \xb2\xdb\xb2 \xb1\xb2\xb2\x1b[6C\xb2\xb2\xb2  \xb2\xb1\xb2 \xb2\xb2\xb2  \x1b[1;36;41m\xba\x1b[0;31m\xb2 \xb1\xb2\x1b[1;36m\xc9\xcd\xcd\x1b[41m\xcd\xcd\x1b[40m\xcd\xcd\x1b[41m\xbc\x1b[0;31m\xb1\x1b[8C\xb2\xb2\xb2 \xb2 \xb2\xb2 \xb2\xb2\xb2  \xb2\xb2 \xb2\xb2\xb1 \xb1\xb2\n\r \xb2\xb1\xb2  \xb2\xb2 \xb1\xb1\xb1\x1b[6C\xb2\xb2\xb2  \xb1\xb1\xb1 \xb2\xb1\xb1  \x1b[1;36m\xba\x1b[0;31m\xb2 \xb2\xb2\x1b[1;36m\xba  \x1b[0;31m\xb2\xb1  \xb1\xb2\x1b[8C\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2 \xb2\xb1\xb1  \xb2\xb2 \xb2\xb1\xb1  \xb1\xb1\n\r \xb1\xb1\xb1\xb1\xb1\xb1\xb1 \xb1\xb1\xb1\xb1\xb1\xb1\xb1\xb1 \xb1\xb1\xb1\xb1\xb1\xb1\xb1\xb1 \xb1\xb1\xb1\xb1\xb1\x1b[1;36m\xba\x1b[0;31m\xb1 \xb1\xb1\x1b[1;36m\xba  \x1b[0;31m\xb1\xb1\x1b[1;36m\xc9\xcd\x1b[41m\xbb\x1b[0;31m\xb1\xb1\xb1\xb1\xb1\xb1   \xb1\xb1\xb1\xb1 \xb1\xb1\xb1 \xb1\xb1\xb1  \xb1\xb1 \xb1\xb1\xb1  \xb1\xb1\n\r \xb1\xb1\xb1\xb1\xb1\xb1\xb1 \xb1\xb1\xb1\xb1\xb1\xb1\xb1\xb1 \xb1\xb1\xb1\xb1\xb1\xb1\xb1\xb1 \xb1\xb1\xb1\xb1\xb1\x1b[1;36m\xba\x1b[0;31m\xb1 \xb1\xb1\x1b[1;36m\xc8\xcd\xcd\x1b[41m\xcd\xcd\x1b[40m\xbc \x1b[41m\xba\x1b[0;31m\xb1\xb1\xb1\xb1\xb1\xb1   \xb1\xb1\xb1   \xb1\xb1 \xb1\xb1\xb1  \xb1\xb1 \xb1\xb1\xb1  \xb1\xb1\n\r\x1b[32C\x1b[1;36m\xc8\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xbc\n\r\x1b[22C\x1b[0;33mA strategic multiuser warfare game\n\r\x1b[25C\x1b[1;35mWritten by Janne Paakkonen\x1b[0m\x1b[20;78H''
15:32:30.419        dos:   INFO:  Output() -> b000840
15:32:30.420        dos:   INFO:  PutStr: 'b'\x1b[17;33H''
15:32:30.420        dos:   INFO:  Output() -> b000840
15:32:30.420        dos:   INFO:  PutStr: 'b'Version 2.21e  ''
15:32:30.420        dos:   INFO:  Output() -> b000840
15:32:30.421        dos:   INFO:  Open: name='GW.dat' (old/1005/rb+) -> [FH:'GW.dat'(ami='GW.dat',sys='/home/bbs/development/amitools/shared/globalwar/GW.dat',nc=True,af=False,int=False)@028a90=B@00a2a4]
15:32:30.421        dos:   INFO:  Read([FH:'GW.dat'(ami='GW.dat',sys='/home/bbs/development/amitools/shared/globalwar/GW.dat',nc=True,af=False,int=False)@028a90=B@00a2a4], 028b7c, 68) -> 68
15:32:30.421        dos:   INFO:  Close: [FH:'GW.dat'(ami='GW.dat',sys='/home/bbs/development/amitools/shared/globalwar/GW.dat',nc=True,af=False,int=False)@028a90=B@00a2a4]
15:32:30.421        dos:   INFO:  Lock: (Lock('globalwar'(ami='doors:globalwar',sys='/home/bbs/development/amitools/shared/globalwar',key=9,ex=0, vol=7552)@00212c=b@00084b)) 'DOORS:globalwar/GWscores.txt' exc=False -> None
15:32:30.422        dos:   INFO:  PutStr: 'b'\x1b[H\x1b[2J\n\r\x1b[0;1;36mCurrent \x1b[0;1;31mGLOBAL WAR \x1b[0;1;36mgame status''
15:32:30.422        dos:   INFO:  Output() -> b000840
15:32:30.422        dos:   INFO:  PutStr: 'b'\x1b[0m''
15:32:30.422        dos:   INFO:  Output() -> b000840
15:32:30.422        dos:   INFO:  PutStr: 'b'\n\r\n\r\x1b[37mGW nodes running in system  : \x1b[35m''
15:32:30.422        dos:   INFO:  Output() -> b000840
15:32:30.422        dos:   INFO:  PutStr: 'b'1''
15:32:30.422        dos:   INFO:  Output() -> b000840
15:32:30.422        dos:   INFO:  PutStr: 'b'\n\r\x1b[37mGames in progress           :\x1b[31m''
15:32:30.423        dos:   INFO:  Output() -> b000840
15:32:30.423        dos:   INFO:  PutStr: 'b'\n\r\x1b[37mGames needing more players  :\x1b[32m''
15:32:30.423        dos:   INFO:  Output() -> b000840
15:32:30.423        dos:   INFO:  PutStr: 'b'\n\r\x1b[37mYou are involved in games   :\x1b[33m''
15:32:30.423        dos:   INFO:  Output() -> b000840
15:32:30.423        dos:   INFO:  PutStr: 'b'\n\r\x1b[37mIt is your turn in games    :\x1b[32m''
15:32:30.423        dos:   INFO:  Output() -> b000840
15:32:30.423        dos:   INFO:  PutStr: 'b'\n\r\x1b[37mYou are active in games     :\x1b[36m''
15:32:30.423        dos:   INFO:  Output() -> b000840
15:32:30.423        dos:   INFO:  PutStr: 'b'\n\r\x1b[37mYou are eliminated in games :\x1b[31m''
15:32:30.423        dos:   INFO:  Output() -> b000840
15:32:30.423        dos:   INFO:  PutStr: 'b'\n\r\x1b[37mCompleted games             :\x1b[35m''
15:32:30.423        dos:   INFO:  Output() -> b000840
15:32:30.423        dos:   INFO:  PutStr: 'b'\n\r\x1b[37mYour nearest turn           : \x1b[33m''
15:32:30.423        dos:   INFO:  Output() -> b000840
15:32:30.424        dos:   INFO:  PutStr: 'b'\n\r\x1b[37mMessages waiting in games   :\x1b[32m''
15:32:30.424        dos:   INFO:  Output() -> b000840
15:32:30.424        dos:   INFO:  PutStr: 'b'\x1b[15H''
15:32:30.424        dos:   INFO:  Output() -> b000840
15:32:30.424        dos:   INFO:  PutStr: 'b'\x1b[36mI:nstructions''
15:32:30.424        dos:   INFO:  Output() -> b000840
15:32:30.424        dos:   INFO:  PutStr: 'b'\x1b[16H''
15:32:30.424        dos:   INFO:  Output() -> b000840
15:32:30.424        dos:   INFO:  PutStr: 'b'T:eam rules''
15:32:30.424        dos:   INFO:  Output() -> b000840
15:32:30.424        dos:   INFO:  PutStr: 'b'\x1b[17H''
15:32:30.424        dos:   INFO:  Output() -> b000840
15:32:30.424        dos:   INFO:  PutStr: 'b'R:ankings''
15:32:30.424        dos:   INFO:  Output() -> b000840
15:32:30.424        dos:   INFO:  PutStr: 'b'\x1b[18H''
15:32:30.425        dos:   INFO:  Output() -> b000840
15:32:30.425        dos:   INFO:  PutStr: 'b'H:all of Fame''
15:32:30.425        dos:   INFO:  Output() -> b000840
15:32:30.425        dos:   INFO:  PutStr: 'b'\x1b[15;18H''
15:32:30.425        dos:   INFO:  Output() -> b000840
15:32:30.425        dos:   INFO:  PutStr: 'b'P:oints awarded''
15:32:30.425        dos:   INFO:  Output() -> b000840
15:32:30.425        dos:   INFO:  PutStr: 'b'\x1b[16;18H''
15:32:30.425        dos:   INFO:  Output() -> b000840
15:32:30.425        dos:   INFO:  PutStr: 'b'S:elect a game''
15:32:30.425        dos:   INFO:  Output() -> b000840
15:32:30.425        dos:   INFO:  PutStr: 'b'\x1b[17;18H''
15:32:30.425        dos:   INFO:  Output() -> b000840
15:32:30.426        dos:   INFO:  PutStr: 'b'Y:our status''
15:32:30.426        dos:   INFO:  Output() -> b000840
15:32:30.426        dos:   INFO:  PutStr: 'b'\x1b[18;18H''
15:32:30.426        dos:   INFO:  Output() -> b000840
15:32:30.426        dos:   INFO:  PutStr: 'b'B:egin a new game''
15:32:30.426        dos:   INFO:  Output() -> b000840
15:32:30.426        dos:   INFO:  PutStr: 'b'\x1b[15;39H''
15:32:30.426        dos:   INFO:  Output() -> b000840
15:32:30.426        dos:   INFO:  PutStr: 'b'A:bout this game''
15:32:30.426        dos:   INFO:  Output() -> b000840
15:32:30.426        dos:   INFO:  PutStr: 'b'\x1b[16;39H''
15:32:30.426        dos:   INFO:  Output() -> b000840
15:32:30.426        dos:   INFO:  PutStr: 'b'O:ptions''
15:32:30.427        dos:   INFO:  Output() -> b000840
15:32:30.427        dos:   INFO:  PutStr: 'b'\x1b[17;39H''
15:32:30.427        dos:   INFO:  Output() -> b000840
15:32:30.427        dos:   INFO:  PutStr: 'b'V:ersion history''
15:32:30.427        dos:   INFO:  Output() -> b000840
15:32:30.427        dos:   INFO:  PutStr: 'b'\x1b[18;39H''
15:32:30.427        dos:   INFO:  Output() -> b000840
15:32:30.427        dos:   INFO:  PutStr: 'b'Q:uit back to bbs''
15:32:30.427        dos:   INFO:  Output() -> b000840
15:32:30.427        dos:   INFO:  PutStr: 'b'\x1b[19H''
15:32:30.427        dos:   INFO:  Output() -> b000840
15:32:30.427        dos:   INFO:  PutStr: 'b'\x1b[32mJ:oin Global War! <<<''
15:32:30.427        dos:   INFO:  Output() -> b000840
15:32:30.427        dos:   INFO:  PutStr: 'b'\x1b[21H\x1b[K\x1b[21H''
15:32:30.427        dos:   INFO:  Output() -> b000840
15:32:30.428        dos:   INFO:  PutStr: 'b'\x1b[31m(40h 27min left) ''
15:32:30.428        dos:   INFO:  Output() -> b000840
15:32:30.428        dos:   INFO:  PutStr: 'b'\x1b[33mSelection? (I,T,R,H,\x1b[37mJ\x1b[33m,P,S,Y,B,A,O,V,Q) : ''
15:32:30.428        dos:   INFO:  Output() -> b000840
15:32:30.428        dos:   INFO:  Input() -> b000835
15:32:34.099        dos:   INFO:  Read([FH:'stdin'(ami='<STDIN>',sys='/dev/stdin',nc=False,af=False,int=True)@0020d4=B@000835], 025c30, 1) -> 1
15:32:34.099        dos:   INFO:  PutStr: 'b'\x1b[37mJ''
15:32:34.100        dos:   INFO:  Output() -> b000840
15:32:34.100        dos:   INFO:  PutStr: 'b'\x1b[H\x1b[2J\x1b[0;33m''
15:32:34.100        dos:   INFO:  Output() -> b000840
15:32:34.100        dos:   INFO:  PutStr: 'b'\x1b[9;23H''
15:32:34.100        dos:   INFO:  Output() -> b000840
15:32:34.100        dos:   INFO:  PutStr: 'b'Welcome to GLOBAL WAR v2.21e, Esc!''
15:32:34.100        dos:   INFO:  Output() -> b000840
15:32:34.100        dos:   INFO:  PutStr: 'b'\x1b[35m''
15:32:34.100        dos:   INFO:  Output() -> b000840
15:32:34.100        dos:   INFO:  PutStr: 'b'\x1b[11;13H''
15:32:34.100        dos:   INFO:  Output() -> b000840
15:32:34.100        dos:   INFO:  PutStr: 'b'Enter the name you would like to be called in the game.''
15:32:34.100        dos:   INFO:  Output() -> b000840
15:32:34.100        dos:   INFO:  PutStr: 'b'\x1b[12;10H''
15:32:34.100        dos:   INFO:  Output() -> b000840
15:32:34.100        dos:   INFO:  PutStr: 'b'Hint: Most players use a nickname instead of their real name.''
15:32:34.100        dos:   INFO:  Output() -> b000840
15:32:34.100        dos:   INFO:  PutStr: 'b'\x1b[31m''
15:32:34.100        dos:   INFO:  Output() -> b000840
15:32:34.100        dos:   INFO:  PutStr: 'b'\x1b[13;20H''
15:32:34.101        dos:   INFO:  Output() -> b000840
15:32:34.101        dos:   INFO:  PutStr: 'b'Just hit <Enter> to return to main menu.''
15:32:34.101        dos:   INFO:  Output() -> b000840
15:32:34.101        dos:   INFO:  PutStr: 'b'\x1b[15H\x1b[K\x1b[16H\x1b[K\x1b[15;20H\x1b[33mMax 16 chars: ''
15:32:34.101        dos:   INFO:  Output() -> b000840
15:32:34.101        dos:   INFO:  PutStr: 'b'\x1b[0;30m''
15:32:34.101        dos:   INFO:  Output() -> b000840
15:32:34.101        dos:   INFO:  PutStr: 'b'\x1b[47m \x08''
15:32:34.101        dos:   INFO:  Output() -> b000840
15:32:34.101        dos:   INFO:  PutStr: 'b'                ''
15:32:34.101        dos:   INFO:  Output() -> b000840
15:32:34.101        dos:   INFO:  PutStr: 'b'\x1b[16D''
15:32:34.101        dos:   INFO:  Output() -> b000840
15:32:34.101        dos:   INFO:  PutStr: 'b'\x1b[42m \x08''
15:32:34.101        dos:   INFO:  Output() -> b000840
15:32:34.101        dos:   INFO:  PutStr: 'b'''
15:32:34.101        dos:   INFO:  Output() -> b000840
15:32:34.101        dos:   INFO:  Input() -> b000835
15:32:34.101        dos:   INFO:  Read([FH:'stdin'(ami='<STDIN>',sys='/dev/stdin',nc=False,af=False,int=True)@0020d4=B@000835], 0284d8, 1) -> 1
15:32:34.101        dos:   INFO:  PutStr: 'b'\x1b[47m \x08''
15:32:34.101        dos:   INFO:  Output() -> b000840
15:32:34.101        dos:   INFO:  PutStr: 'b'\x1b[42m \x08''
15:32:34.101        dos:   INFO:  Output() -> b000840
15:32:34.101        dos:   INFO:  PutStr: 'b'''
15:32:34.101        dos:   INFO:  Output() -> b000840
15:32:34.102        dos:   INFO:  Input() -> b000835
15:32:35.799        dos:   INFO:  Read([FH:'stdin'(ami='<STDIN>',sys='/dev/stdin',nc=False,af=False,int=True)@0020d4=B@000835], 0284d8, 1) -> 1
15:32:35.799        dos:   INFO:  PutStr: 'b'\x1b[47m \x08''
15:32:35.799        dos:   INFO:  Output() -> b000840
15:32:35.800        dos:   INFO:  Output() -> b000840
15:32:35.800        dos:   INFO:  FPutC([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002100=B@000840], 'e' (101))
15:32:35.800        dos:   INFO:  Output() -> b000840
15:32:35.800        dos:   INFO:  PutStr: 'b'\x1b[42m \x08''
15:32:35.800        dos:   INFO:  Output() -> b000840
15:32:35.800        dos:   INFO:  PutStr: 'b'''
15:32:35.800        dos:   INFO:  Output() -> b000840
15:32:35.800        dos:   INFO:  Input() -> b000835
15:32:35.800        dos:   INFO:  Read([FH:'stdin'(ami='<STDIN>',sys='/dev/stdin',nc=False,af=False,int=True)@0020d4=B@000835], 0284d8, 1) -> 1
15:32:35.800        dos:   INFO:  PutStr: 'b'\x1b[47m \x08''
15:32:35.800        dos:   INFO:  Output() -> b000840
15:32:35.800        dos:   INFO:  Output() -> b000840
15:32:35.800        dos:   INFO:  FPutC([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002100=B@000840], 's' (115))
15:32:35.800        dos:   INFO:  Output() -> b000840
15:32:35.800        dos:   INFO:  PutStr: 'b'\x1b[42m \x08''
15:32:35.800        dos:   INFO:  Output() -> b000840
15:32:35.800        dos:   INFO:  PutStr: 'b'''
15:32:35.800        dos:   INFO:  Output() -> b000840
15:32:35.800        dos:   INFO:  Input() -> b000835
15:32:35.800        dos:   INFO:  Read([FH:'stdin'(ami='<STDIN>',sys='/dev/stdin',nc=False,af=False,int=True)@0020d4=B@000835], 0284d8, 1) -> 1
15:32:35.800        dos:   INFO:  PutStr: 'b'\x1b[47m \x08''
15:32:35.801        dos:   INFO:  Output() -> b000840
15:32:35.801        dos:   INFO:  Output() -> b000840
15:32:35.801        dos:   INFO:  FPutC([FH:'stdout'(ami='<STDOUT>',sys='/dev/stdout',nc=False,af=True,int=True)@002100=B@000840], 'c' (99))
15:32:35.801        dos:   INFO:  Output() -> b000840
15:32:35.801        dos:   INFO:  PutStr: 'b'\x1b[42m \x08''
15:32:35.801        dos:   INFO:  Output() -> b000840
15:32:35.801        dos:   INFO:  PutStr: 'b'''
15:32:35.801        dos:   INFO:  Output() -> b000840
15:32:35.801        dos:   INFO:  Input() -> b000835
15:32:35.801        dos:   INFO:  Read([FH:'stdin'(ami='<STDIN>',sys='/dev/stdin',nc=False,af=False,int=True)@0020d4=B@000835], 0284d8, 1) -> 1
15:32:35.801        dos:   INFO:  PutStr: 'b'\x1b[47m \x08''
15:32:35.801        dos:   INFO:  Output() -> b000840
15:32:35.801        dos:   INFO:  PutStr: 'b'\x1b[42m \x08''
15:32:35.801        dos:   INFO:  Output() -> b000840
15:32:35.801        dos:   INFO:  PutStr: 'b'''
15:32:35.801        dos:   INFO:  Output() -> b000840
15:32:35.801        dos:   INFO:  Input() -> b000835
15:32:37.317    machine:  ERROR:  ----- ERROR in CPU Run #1 -----
15:32:37.317    machine:  ERROR:  Run: 'GlobalWar': Initial PC=002148, SP=0285a0
15:32:37.318    machine:  ERROR:  PC=00001b6a  SR=-----    USP=00028380 ISP=00000700 MSP=00000780
15:32:37.318    machine:  ERROR:  D0=00000835  D1=00000835  D2=000284d8  D3=00000001  D4=00000010  D5=00000003  D6=00000003  D7=00000000
15:32:37.318    machine:  ERROR:  A0=00024484  A1=000284d9  A2=000264ac  A3=00000000  A4=0001eb38  A5=000284d8  A6=00001ae8  A7=00028380
15:32:37.318    machine:  ERROR:  SP-32=00002d SP-28=00002b SP-24=004ef8 SP-20=02000e SP-16=00082e SP-12=00695e SP-08=00133c SP-04=0069b2
15:32:37.318    machine:  ERROR:  SP+00=0069c6 SP+04=00000d SP+08=000000 SP+12=028bd9 SP+16=00133c SP+20=012bc4 SP+24=02448c SP+28=0284d8
15:32:37.319    machine:  ERROR:  Traceback (most recent call last):
15:32:37.319    machine:  ERROR:    File "src/pytraps.pyx", line 19, in machine68k.trap_wrapper
15:32:37.319    machine:  ERROR:    File "/home/bbs/development/amitools/env/lib/python3.12/site-packages/amitools/vamos/libcore/stub.py", line 207, in base_func
15:32:37.319    machine:  ERROR:      res = method(ctx)
15:32:37.319    machine:  ERROR:            ^^^^^^^^^^^
15:32:37.319    machine:  ERROR:    File "/home/bbs/development/amitools/env/lib/python3.12/site-packages/amitools/vamos/lib/DosLibrary.py", line 603, in Read
15:32:37.319    machine:  ERROR:      data = fh.read(size)
15:32:37.319    machine:  ERROR:             ^^^^^^^^^^^^^
15:32:37.319    machine:  ERROR:    File "/home/bbs/development/amitools/env/lib/python3.12/site-packages/amitools/vamos/lib/dos/FileHandle.py", line 72, in read
15:32:37.319    machine:  ERROR:      d = self.obj.read1(len)
15:32:37.319    machine:  ERROR:          ^^^^^^^^^^^^^^^^^^^
15:32:37.319    machine:  ERROR:  KeyboardInterrupt
15:32:37.319       main:  ERROR:  vamos failed!

@cnvogelg
Copy link
Owner

Thanks for all the samples :) I need to have a look at them later...

I found the fix for Deep Space Empire... now RAW mode works :)

Please use latest dev on both amitools and machine68k to test...

@ryanfantus
Copy link
Author

Awesome!

I'm happy to report GlobalWar now deals with hotkeys correctly as well as full text input. Score! I have no idea how to play this game to actually test it though lol. But this is great :)

DSE appears to work as well! Guess I need to figure out how to play that one so I can test it.

DreamSweeper and Grotte still do not work (mentioned those in my last comment).

I have a whole list of 16 STDIO games that I'm testing and ideally hoping to run. Let me know if this type of iterative process that we're doing now works for you or if you'd like me to do something different in how I'm testing and reporting things to you. Thanks again, this is really awesome from where I sit and I can't wait to host these games on my linux bbs :)

@cnvogelg
Copy link
Owner

I'd suggest that you create a table here in the comments listing all the games, their source link, and their current status (works/does not work). For the non-working games a description column may be helpful that describes the failure. On top you could even add a file link with a debug log of the failed run attached...

Then I could go through the list and annotate (in an own column) what needs to be done on vamos side or what's missing...

@ryanfantus
Copy link
Author

Game Status Notes Updated
Dreamsweeper Fails No output, no errors 1/24
GlobalWar Works 1/24
Grotte Fails No output/errors, but needs tooltypes from .info files 1/24
DSE Works 1/24
AmiChess Works 1/24
Manhattan Fails Not in English 1/24
OpElim Fails Runtime output 1/24
Poker Squares Fails Runtime output 1/24
Battle Grounds Partially works Can't purchase items 1/24
Convolution Works 1/24
Excalibur Fails Failed loading seglist 1/24
Irongate Works 1/24
Nuclear Warfare Works 1/24
Shogun Fails Zero output/logs 1/24
Space Empire Almost runs Fails at startup with cit:bulletins/Game.hlp/Game_news.hlp:Unable to output to the logfile 1/24
Vampire Fails Runtime output 1/24
Rylween Works 1/24

There are probably other STDIO games I'll find along the way (roguelikes?) which I can add here as well but I'll leave the list as is for the time being.

For completeness, this is my ~/.vamosrc which includes a few assigns to make launching the games seamless. I can add launch commands for each game if you think that's helpful.

[volumes]
doors=~/development/amitools/shared
system=~/development/amitools/system
opelim=~/development/amitools/shared/OpElim
irongate=~/development/amitools/shared/loid
shogun=~/development/amitools/shared/shogun
cit=~/development/amitools/shared

[assigns]
c=system:c
#doors=shared:

[path]
# every undefined assign "xy:" will be mapped to "system:xy/"
auto_assign=system:

# disable loading library in any case
[68040.library]
mode=off

# "auto" mode: either use amiga library if available and fall back
# to vamos internal lib if not amiga library was found
[icon.library]
mode=auto

[vamos]
cpu=68020
stack=16
ram_size=8192
hw_access=emu

Thanks!

@cnvogelg
Copy link
Owner

cnvogelg commented Feb 1, 2025

Some notes on the games:

  • Excalibur: It seems to be written in some scripting language of the BBS. Therefore the "seglist" does not load
  • Space Empire: assumes a full install of citadel BBS and wants to write in paths there
  • Dreamsweeper: It did some update on HEAD to support cursor keys. Now I can move around but still I don't see anything. Only the Flag counter is decremented now correctly after moving
  • OpElim: Needs Run command in vamos. TBD
  • PokerSquares: arbitrary WaitPort(). Missing in vamos. TBD
  • Shogun: needs AddPort() in vamos. TBD
  • Vampire: Runs but shows no contents?
  • Manhattan: door but AMOS program that opens screen, graphics: not available in vamos currently
  • Grotte: DoIO(), WaitIO() missing in vamos. TBD

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants