• Please review our updated Terms and Rules here

ZX81 Speak & Spell "Talk can be Cheap" Software (ZX-Speak)

NeXT

Veteran Member
Joined
Oct 22, 2008
Messages
8,149
Location
Kamloops, BC, Canada
I'm done the hardware interface to connect a Speak & Spell to a ZX81 as per the Computers and Electronics "Talk can be cheap" article and now I'm working on the software. The article lists the code both in machine language and BASIC. It was also available on cassette. (Well, it was almost 31 years ago.)

SS_B.jpgSS_M.jpg

I'm deliberately being super lazy here and asking if anyone archived a copy of that cassette. Typing on the ZX81/TS1000 sucks on a good day and I don't have a keyboard mod to make it more pleasant.
 
Last edited:
I'm deliberately being super lazy here and asking if anyone archived a copy of that cassette. Typing on the ZX81/TS1000 sucks on a good day and I don't have a keyboard mod to make it more pleasant.
Can you type it in on an emulator and save it to a WAV?

I don't know enough about the zx81/ts1000 to say, but I think you're supposed to put the assembled machine language from the second page into the area left in the BASIC program between lines 1 and 1000. Usually in Microsoft BASICs you do something like this with a DATA statement but I'm not sure if the Sinclair ones work the same way.

Not sure how you guarantee absolute addresses with that, but it looks like there aren't any gaps so it should work out as long as the BASIC listing always starts at the same place in memory (edit: the BASIC program appears to start at decimal 16509, so I would assume you'd end up near 16514 for the first DATA statement, maybe with some padding..)
 
I don't know enough about the zx81/ts1000 to say, but I think you're supposed to put the assembled machine language from the second page into the area left in the BASIC program between lines 1 and 1000. Usually in Microsoft BASICs you do something like this with a DATA statement but I'm not sure if the Sinclair ones work the same way.

They don't. Sinclair BASIC didn't have READ & DATA statements until the ZX Spectrum came out. So you can't load the machine code in that way.

This was one of the greatest hurdles to programming in machine code on the ZX81/TS1000. There were many ways around it, from a simple BASIC program that looped through a request for the next value and then POKEd it into the next memory location to full blown assembler like this one (which you can download and use):

https://www.timexsinclair.com/product/zxas/

Utilities for converting standard ASCII text files into files suitable for sending to a ZX or TS machine are here:

http://www.retroisle.com/sinclair/zx81/software.php

The FUSE utilities from the FUSE emulator might also be useful:

https://sourceforge.net/p/fuse-emulator/fuse-utils/ci/master/tree/
 
Back
Top