I just released the Puddle BuildTools - An Infocom Z-machine build environment for 25 retro computer systems, preconfigured for PunyInform. Everything is modular designed, you can easily add a new wrapper script and make it compatible with something else, e.g. ZILF as long as it produces Z-machine output
No Clarion Beauty Computer output?
I should be ashamed and I know it!
Still working on Thermomix support. Nothing beats steaming vegetables while playing Zork and typing commands on a floury display.
PS: WTF IS THIS THING
It’s a computer.
For your face.
And until it runs Hibernated 4: Spanish Siesta In Space, what have you accomplished, really?
I am still trying to figure out what frightens me more: the fact that this thing exists or that you know about it!
I admit this is a bit of a stolen-valor joke from long ago, someone (on an Amiga BBS, I think, to help anchor just how long ago we’re talking about) made some reference to not being impressed by a port of a program “until it runs on a Clarion Beauty Computer”, anticipating the it runs DOOM gag by a fair number of years. And it’s always stuck with me.
(also, Clarion Beauty Computers were huge in retail makeup aisles, you have no idea)
As long as the SAM Coupé is supported.
I note that the generic CP/M seems not supported, albeit there’s cpmtools (perhaps the issue is in the lacking of an free interpreter ?
(from a quick browsing of if-archive seems that is the case)
Best regards from Italy,
This is a really wonderful resource Stefan. I happen to think that games running on original hardware or even hardware or software emulation of original hardware gives a game a certain feel that is not JUST nostalgia.
There is utility in slowing the pace and text delivery speed of a game, there is also the typography and feel of a game too. When coupled with a CRT, you have sometime rather special.
Z Machine might just seem like a generic way to write a game and text is text, but text is not just text. It’s like the background hum of an engine in a premium car versus a cheap car. The means of the journey is just as important as the destination.
This is like having your choice of 25 vehicles.
There actually is no such thing as a generic CP/M when it comes to retro computers. Whether it’s the Osborne’s CP/M, Locomotive CP/M on the Spectrum +3, the CP/M on the CPC… they all need an interpreter which is configured to the requirements of the host system. Columns and the clear screen control char need to be defined and differ from machine to machine.
Fun fact: quite a few of these templates are CP/M based. The CPC, the PCW and the Spectrum +3 versions for example. The SAM Coupé actually too. Though it runs in a CP/M interpreter that had been configured for Pro-DOS, the SAM’s CP/M compatible operating system.
I couldn’t say it better Chris! These old computers are more than just a time machine. To me, this is EVERYTHING and the perfect Instrument to consume interactive fiction, far away from modern technology, stress and constant demand in a world that moves on and on. Struggling to find the right words but only a few things in my life happen to bring me into this state of appreciation while drowning in positive melancholy. Another trigger for me is being out for a walk on an autumn afternoon, while inhaling fresh air and let the many colors pass me by.
Does anyone know if this runs on the Raspberry Pi?
Raspbian is based on Debian - which gives me some hope - but the Pi has an ARM CPU.
It would work in theory but you would need to recompile all the binaries in the FictionTools folder. These were compiled for an AMD64 architecture. Note that AMD64 is just the wording for x32-64 in Ubuntu. So the FictionTools will run out of the box on AMD and Intel, they won’t run on ARM.
Retropie has a z-machine interpreter (Frotz) so I’m sure it’s feasible with the right package/compilation of a package
That’s crazy talk
The C64 has a Z-code interpreter, but that doesn’t mean you can run the build tools on a C64.
The only cpmtools I’m aware of is this one: https://github.com/lipro-cpm4l/cpmtools. It’s a package for reading from and writing to CP/M disk images.
I’ve investigated what it would take to get a Z-machine going on any sort of CP/M machine. In a nutshell, Frotz probably wouldn’t fit. It’s very portable, but there are things about it that would tax most CP/M machines. First is the fact it’s written in a high-level language: C. The second is that Frotz implements ALL Z-machines. Infocom’s Z-machines for 8-bit machines was always done in assembly and usually implemented only what the game needed.
The interpreters slightly vary per CP/M machine, as the hosts have slightly different requirements in terms of columns on screen or CLS control character. Even Infocom created a configuration assembly program that allowed, together with a compiler, to reconfigure their CP/M interpreter. I think I have 5 CP/M interpreters here in the BuildTools package but every program is configured for the host and won’t necessarily run perfect on a different machine, if it runs at all. The cpmtools package is only for manipulating disk images and since disks vary per host system, you need to teach cpmtools how to handle the disk image format. I do that here for Pro-DOS, the CP/M compatible operating system of the SAM Coupé. Regarding Frotz: I am actually using Frotz in the BuildTools package but only the DOS version, because DOS has of course enough resources to properly make it run. Thanks for keeping the DOS version alive, I run a fairly recent version here!
Oh here’s Infocom’s CP/M assembly configuration program as a reference. It’s basically Intel 8080 microprocessor code but it can be compiled with a Z80 without issues since the Z80 was designed being Intel 8080 compatible. This had been used for creating the Spectrum +3 interpreter in the BuildTools package.
;Copyright 1982 Infocom, Inc. All rights reserved. ;Configuration Program for INTERLOGIC(tm) CP/M Files ;Configured for VT100 compatible terminal (25 lines) ;This program should be edited to specify terminal and ;printer parameters for your CP/M system. Edit this ;file, then assemble, load, and run the program. ;Complete documentation of the setup procedure will ;be found in your INTERLOGIC Reference Card. ;Terminal and printer specific parameters start at ;the label CPMCPL, about 20 lines below. Nothing ;prior to that label should be altered. ORG 100H LPDL EQU 100H BDOS EQU 05H FCB EQU 05CH PSTRNG EQU 9 OPEN EQU 15 CLOSE EQU 16 WRITES EQU 21 SETDMA EQU 26 START: JMP FNAMEP ;Jump to filename patch ;Setup parameters begin here. Refer to the INTERLOGIC ;Reference Card for CP/M for complete documentation for ;editing this file. CPMCPL: DB 80 ;Characters/line (132 maximum) CPMLPP: DB 24 ;Lines/screen (NOT including status line) CPMFN: DB 'ZORK1',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 0 ;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 11, 1BH,'[2J',1BH,'[25;1H' ;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. 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 7, 1BH,'[H',1BH,'[7m' ;Begin status line. ;Should move the cursor to the upper ;left corner of the screen. If at all ;possible, should go into inverse video. DS 32-$+BLINE+1 ELINE: DB 11, 1BH,'[0m',1BH,'[25;1H' ;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. DS 32-$+ELINE+1 PINIT: DB 0 ;Printer initialization. ;If any setup is required prior to ;using scripting. FNAMEP: ; filename patch LXI H,FCB+1 MOV A,M CPI '0' ;lowest valid char JC CPMSTR ;use default name LXI D,CPMFN MVI C,8 FNP1: STAX D INX H INX D MOV A,M DCR C JNZ FNP1 JMP CPMSTR DS 200H-$ ;The setup parameters end at this point. Nothing below this point ;should be changed for any reason. CPMSTR: LXI SP,PDL+LPDL LDA CPMCPL CPI 132 JC CPMST1 MVI A,132 STA CPMCPL CPMST1: LXI H,FCB MVI B,36 L1: MVI M,0 INX H DCR B JNZ L1 LXI H,FCB+1 LXI D,CPMFN MVI B,8 L2: LDAX D MOV M,A INX H INX D DCR B JNZ L2 LXI D,EXT MVI B,3 L3: LDAX D MOV M,A INX H INX D DCR B JNZ L3 MVI C,OPEN LXI D,FCB CALL BDOS INR A LXI D,BADOPN JZ FINIS LXI D,100H CALL WRITEB LXI D,180H CALL WRITEB MVI C,CLOSE LXI D,FCB CALL BDOS INR A LXI D,BADCLS JZ FINIS LXI D,OK FINIS: MVI C,PSTRNG CALL BDOS JMP 0 WRITEB: MVI C,SETDMA CALL BDOS MVI C,WRITES LXI D,FCB CALL BDOS ORA A RZ MVI C,CLOSE LXI D,FCB CALL BDOS LXI D,BADWRT JMP FINIS BADOPN: DB 0DH,0AH,'CAN NOT OPEN FILE$' BADCLS: DB 0DH,0AH,'ERROR ON FILE CLOSE$' BADWRT: DB 0DH,0AH,'WRITE ERROR$' OK: DB 0DH,0AH,'CONFIGURATION PROGRAM FINISHED',0DH,0AH,'$' EXT: DB 'COM' PDL: DS LPDL END START
PS: What the world could need though is a Frotz for Amiga that runs on systems prior to 2.04, e.g. Kickstart 1.3.
I am using a z3-only interpreter for Amiga in the BuildTools package because all the z5 interpreters I found work either only on later Amigas or do have issues. Even Infocom’s only pure z5 interpreter on the Amiga, which came with Sherlock, does not work properly. It’s a shame.