Message Time Delay Bug

13 views
Skip to first unread message

Jeff

unread,
Oct 9, 2013, 8:01:58 PM10/9/13
to silvern...@googlegroups.com
It has come to my attention that if the message time delay is set higher than 32,750 it will cause error #53-4035 while healing hit points at the Red Dragon Inn. Once the error occurs, if you save the game you cannot restart without getting error #53-143 at the title page, at which point after a few seconds the game crashes into the monitor.
 
To recover, when the game crashes into the monitor at the title page, press <CTRL-C> followed by <ENTER> to return to the BASIC prompt. Then type "W=0:GOTO1050" (without the quotes), then press <ENTER>. At this point you must press <SPACE> to enter the Extra's Menu, then select the "Set Preferences" option and set the "Message Time Delay" preference to less than 32,750. Alternately, you can press the following key sequence all at once to break into BASIC at the title page: <open-apple><CTRL><2>. Although this key sequence works on a real Apple II and the KEGS emulator, I cannot seem to get it to work using AppleWin.
 
Basically what is happening is an overflow caused by converting a real variable into a two-byte integer using AppleSoft firmware routines, which generates an illegal quantity error (code #53) if the real variable is larger than 65,535. Even though the program does not allow you to set the message time delay higher than 65,535, when healing hit points at the Red Dragon Inn, at the first hit point healed, the delay variable is doubled temporarily, thereby causing an error when the message time delay value exceeds 32,750 (since this value is set in steps of 50) before it can be reset back.
 
Originally, the message time delay was limited to a value of 5,000 (about 5 seconds or so), but some emulators need a longer interval when operating faster than the stock Apple II speed to allow timed messages to stay on the screen long enough to be read. Interestingly enough, the emulator I use most (KEGS) does not appear to accelerate the monitor WAIT routine (which I call as part of the message time delay routine) even when running at unlimited speed, so I never set the message time delay higher than 1,000 normally.
 
If for some reason you are unable to recover from this error, if you can email me your disk image I can reset it for you.
Reply all
Reply to author
Forward
0 new messages