The Puddle BuildTools are out!

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

10 Likes

No Clarion Beauty Computer output?

Weak.

7 Likes

I should be ashamed and I know it! :rofl:

Still working on Thermomix support. Nothing beats steaming vegetables while playing Zork and typing commands on a floury display.

4 Likes

PS: WTF IS THIS THING :rofl:

omg

It’s a computer.

For your face.

And until it runs Hibernated 4: Spanish Siesta In Space, what have you accomplished, really?

2 Likes

I am still trying to figure out what frightens me more: the fact that this thing exists or that you know about it!

2 Likes

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)

1 Like

This one is for Avon:

Just another MS-DOS machine.

2 Likes

As long as the SAM Coupé is supported.

1 Like

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,
dott. Piergiorgio.

1 Like

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.

Well done.

3 Likes

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.

Cheers!

1 Like

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.

4 Likes

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.

2 Likes

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.

1 Like

Retropie has a z-machine interpreter (Frotz) so I’m sure it’s feasible with the right package/compilation of a package :slight_smile:

1 Like

That’s crazy talk :wink:

The C64 has a Z-code interpreter, but that doesn’t mean you can run the build tools on a C64.

1 Like

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! :slight_smile:

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.