The value of each byte of the string looks fine, so it doesn't seem that index out of bounds is the issue. First, I'd re-upload PUNMSG.COM to your disk just in case the program is somehow corrupted. If that doesn't work, stop the machine using the front panel as soon as it hangs. Record the address shown on the front panel and let me know where it's executing.
I re-uploaded PUNMSG.COM and tried again but got same result with the TTY.
So I stopped the program and recorded the LED's. I got 1157 octal. (sorry I'm still learning hardware-related stuff, I guess that's 26F but that still doesn't seem like a memory location so I'm sure I'll learn as the thread goes on)
Edit: Ran it a second time and got 1155.
Sidenote: I noticed during this process that it now takes a couple of attempts to get the Configuration Monitor menu to display. I haven't noticed this before with the clone. Might be nothing but thought I'd check.
I can reproduce it:
Power off
Power on
Hard reset (stop/reset)
Stop/Aux
[no terminal emulator output displayed]
wait a few seconds
Stop/Aux
[menu displays reliably]
So essentially the menu won't display until the 2nd attempt. Even if I wait several seconds after the hard reset before the first Stop/Aux, the menu doesn't come up until the second Stop/Aux.
Have you ever noticed this behavior/anything to be concerned about? (I sincerely hope this isn't in the manual - :-)
Maybe because of my serial port reconfiguring this is a side effect?
When you’re running PUNMSG, the TTY is the CP/M operator’s console, right? If so, did you boot with the TTY as console or switch consoles with the STAT command?
kwiebe wrote: I stopped the program and recorded the LED's. I got 1157 octal. (sorry I'm still learning hardware-related stuff, I guess that's 26F but that still doesn't seem like a memory location so I'm sure I'll learn as the thread goes on)
Edit: Ran it a second time and got 1155.
These addresses are both in the loop where the program is waiting for the output port to be ready for the next character. This loop should never completely stall unless the CTS line into the ACIA on the 2SIO board is not asserted. Since the TTY does not drive the RTS/CTS lines on the DB25, CTS into the Altair is floating. Use the configuration monitor to choose “CTS, RTS always asserted” for the console port (serial port 1).
In December of last year, I fixed a bug in the port 6/7 version of the program (PUNMSG6) and then also put that bug fix into the 2SIO version of PUNMSG (the version you are using). It looks like you got stung by my "copy and paste" carelessness. The status register for the SIO at 6/7 uses the opposite bit polarity as the status register of the 2SIO and this is causing the problem you're seeing.