-
Content Count
7 -
Joined
-
Last visited
Posts posted by TonB
-
-
Ha! I remember writing this code. It is al based on the basicode standard, an attempt of a group of people to create a cross-platform basic. With it came a digital format to stream programs from/to tape, and I figured out how to read/write (actually, I created the reader while a friend of mine, also called Ton, created the initial version of the writer). Then I started modifying the timings to create turbo loaders/savers, utilities to stream program files to tape, and this full disk backup program. I remember also reverse engineering the ZX-Spectrum tape protocol, so ZX-Spectrum bitmaps pictures (which could be saved separately) could be loaded on TI. One key improvement was that I use the leader tone to calibrate the algorithm, so timing constants could be removed and the program would work when I increased the tape pitch (had a player with a speed wheel). I also built in a second crystal with a switch in my console to clock it to 3MHz. The VDP got confused by this speed at times, but the tape loader actually worked better. So you could set the computer to turbo, and crank up the speed of the tape...
Funny enough, this was like 30 years ago, and today I'm working on reverse engineering a variant of SPDIF. Same box of tricks, only kHz have become MHz...
-
5
-
1
-
-
Tonny, maybe you saw my post in this thread - I have a problem with the cassette routine in MESS. It does not start the cassette motor. The console cassette driver works without problems. In MESS you can see that the motor is active by a small pop-up window that shows the increasing cassette drive counter.
The way I remember it the cassette on/off switch is just another CRU register. Why not disconnect the motor control and start/stop the tape manually when the routine starts listening? I remember I had a cassette player that even didn't allow motor control...
The turboloader I wrote was derived from the basicode protocol. I think I increased the frequencies to the max that was achievable with somewhat reliable readback. I may have thrown out one of the two stop bits for an extra couple of percent... not sure.

-
What I'm looking for is the frequency for 1 and 0. I can work it out from there. Ultimately this will be folded into my bin->tape .wav generator, I think, but Ron just wants to see it working in any way possible

The way I implemented the loader back in the days, is to sample the frequencies during the lead-in tone of the playback. Then you can calibrate the speed of the CPU against the speed of the tape. With this mechanism you can speed up the tape if you want, and if your CPU can keep up, load even faster. You can then implement a loader without any magic constants, since they're all calculated on the fly.
-
1
-
-
.
...and we have "EXB80 - 80 Kolommen in Extended Basic v1.0" from Tonny Brouwer, Netherlands, 1992
I remember! What I did there was simply switch the 9938 to 80 col mode in the interrupt (in an unused piece of RAM) and copy the contents of the 32-col screen into the 80 col screen. So you don't really have 80 columns to type in. But the effect was cool. (Geez why do I remember this).
-
1
-
-
No, but there is a LIMI 1 in the execution path prior to the infinite loop. Path looks like this:
LIMI 1
L1 SETO R4 * EENEN UITGEVEN
BL @BITWR *
(and let's treat BITWR as if it were inline, so:)
BITWR DATA >10FF * IDLE
X R8 * execute >1E19
XOR @>135C,R8 * SBO
ANDI R4,>0001
JNE LA1
DATA >10FF * DATABIT = 0, VERLENG PERIODE
LA1 DATA >10FF *
X R8 * execute >1E19
XOR @>135C,R8
ANDI R4,>0001
JNE LA2
DATA >10FF
RT
LA2 DATA >10FF * DATABIT = 1, TWEEDE PERIODE
X R8 * execute >1E19
XOR @>135C,R8
DATA >10FF
X R8 * execute >1E19
XOR @>135C,R8
RT
(so end inline there)
DEC R2 * AFTELLEN
JNE L1
DEC R2 * AFTELLEN
JNE L1
Google Translate and a thirty-year-old German elective gets me through the Dutch (Dutch == Deutsch if shouted loud enough
)What I'm looking for is the frequency for 1 and 0. I can work it out from there. Ultimately this will be folded into my bin->tape .wav generator, I think, but Ron just wants to see it working in any way possible

Guys, I remember writing this! Stumbled upon this forum by accident. What do you want to know...

When I first started experimenting with the CRU inputs to read "the beeps from the cassette tape", I figured the format for basicode out at some point. It's pretty straightforward, with two frequencies, startbit, stopbit etc. I then applied the very same knowledge to create AFSK telex decoder, ZX-Spectrum loader, and turbo loader for the 4A. The latter was just the basicode format with less delay.
My friend Ton Damen (yeah, same first name) at the same time figured out the opposite direction, ie., writing to tape. What you're looking at is some highly optimized subroutine to write one bit. R8 contains the statement SBO or SBZ (set bit to one or to zero) and I use the XOR trick to convert one command into the other on the fly. The JMP statement was actually the NOP instruction. Since there doesn't seem to be any external timing, you will find that this code will generate a higher pitch on systems running at higher speed (I remember I had two crystals in my computer...).
Anyway, nice memory lane this is. Damn this is long ago!!
-
Yes, there is this tool from Tonny Brouwer (NL), for Basic. Globeron made a live-demonstration on my system.
This tool works in the way you mentioned, loading the wanted proggy from disk, and "converting"/saving it further onto tape.
Later, you can use the tools 2nd part to "OLD"&Run this "Assembly" from tape. For me, this was amazing.
I have it somewhere around, but I am sure Globeron will answer soon

And, I think I read about another tool, doing the same.
I will dig a bit, but I think other guys here will know much more.
Edit:
The other tool, maybe it was "Hyper-Loader Turbo-Tape (CS1)" ?
I don´t know about the author or anything else, and I hope I don´t confuse that with something other

Hi there!
Bumped into my own name while googling, so thought I'd join the discussion. Wow, you're talking about stuff that happened 25 years ago!
I vaguely remember creating something like this. The way it worked (if I remember correctly) is that you could relocate a basic program in memory to create a bit of "no-mans-land" in the high memory area. You can hide the assembly program there, and it will be saved to tape along with the basic program. Then all you need is a bit of code that relocates that binary to the start location (usually 0xa000?) and you're good to go.
So cool to read that people are still active with this!!
-
2
-

CASSETTE POWER
in TI-99/4A Computers
Posted
The loader I'm talking about can only load spectrum bitmaps from tape. They're like a separate tape format.
I'm pretty sure my program presents a menu with options to load/save from tape/disk. I remember mailing this to Ray Kazmer when I first finished it.