On Monday, September 9, 2019 at 11:35:05 AM UTC+8, Shane O'Neill wrote:
this makes me think the issue ... is the .DAT file
Highly unlikely, I think. The DAT files are generic game code. All machine-specific code resides in the .COM file.
My next thought has to do with screen control codes. Under CP/M there were no standards for screen control, with a plethora of monitors saturating the market. The .COM files were system-specific and tailored for a particular system's screen (e.g., Lear
ADM3A, Kaypro, SuperBrain, VT52, Wyse, Amstrad CPC, etc.)
Under DOS, screen control was standardized, so if you're running DOS versions I'd think it wouldn't matter. But if I recall your problem was that on the user
end everything was displaying on the top line, and that sounds like a screen control problem,
maybe something with the fossil driver not correctly translating control codes.
Grab a hex editor and open up the .COM file for Hollywood Hijinx (which is Z-code ver. 3). The first 200 bytes or so contain configuration information, including the screen control codes for new line, clear screen, and so forth.
The following is based on work I did many years ago on the CP/M version of the .COM files, and it looks like offsets may be different in the DOS versions, but
perhaps it will still be helpful. (If the following is garbled because leading spaces get
stripped out, grab a copy of any of the .ASM files from my site here:)
http://www.classiccmp.org/cpmarchives/ftp.php?b=cpm%2FSoftware%2FHumongous%2FGames%2FInfocom%2FMisc
------------------------
CPMCPL: DB 79 ;Characters/line (132 maximum)
CPMLPP: DB 23 ;Lines/screen (NOT including status line)
CPMFN: DB 'ZORK2',20H,20H,20H
;File name (DO NOT CHANGE THIS)
CPMCLF: DB 1 ;1 if LF should print after CR on screen
CPMLLF: DB 1 ;1 if LF should print after CR on printer
CPMINV: DB 80H ;Number to add to ASCII value of characters
;to have them print in inverse video.
;This is not applicable on many terminals.
;The following strings have a count field followed by up
;to 32 characters.
TINIT: DB 6 ;Initialize the terminal.
;Should position the cursor at the
;lower left corner of the screen.
;On terminals with the facility, a
;scrolling region should be established
;to include all but the top line on
;the screen. Also, clearing the screen
;is desirable.
DB 1EH,1AH,1BH,'=',55,32
DS 32-$+TINIT+1
TRESET: DB 0 ;Reset the terminal at end of game.
;For example, if a scrolling region
;was established, reset it to include the
;entire screen. Clearing the screen is
;NOT desirable.
DS 32-$+TRESET+1
BLINE: DB 4 ;Begin status line.
;Should move the cursor to the upper
;left corner of the screen. If at all
;possible, should go into inverse video.
DB 1BH,'=',32,32
DS 32-$+BLINE+1
ELINE: DB 4 ;End status line.
;Should move the cursor to the lower
;left corner of the screen. If status
;line uses inverse video, this state
;should be cleared.
DB 1BH,'=',55,32
DS 32-$+ELINE+1
PINIT: DB 0 ;Printer initialization.
;If any setup is required prior to
;using scripting.
------------------------
--- SoupGate-Win32 v1.05
* Origin: Agency HUB, Dunedin - New Zealand | Fido<>Usenet Gateway (3:770/3)