Jump to content

TonB

New Members
  • Content Count

    7
  • Joined

  • Last visited

Posts posted by TonB


  1. 20 hours ago, ti99iuc said:

    wow! nice story Tonny Brouwer! :) thanks!
    because you mentioned ZX Spectrum jumped in my mind that i have a cassette tape with this label.
    I Still not found how to load these but it is for TI-99/4A

    I still not deciphered all the meanings of the letters in the brackets on the right

    I am pretty sure that (B) = Basic, (BE) = Extended Basic, (SP) = Spectrum (i guess)
    remaining (C) and (P) that i still not sure... anyway at least with (C) should be an assembler program, maybe also an MM program often.
    (P) i still haven't an idea.

     

    Now, because Atic Atac is a ZX spectrum game, I have the impression that  in this tape there is a sort of loader to load it but still not understand how to do it 😛

    maybe you can have some suggestion?

     

    69571515_2348750885180086_8855038910019928064_n.jpg?_nc_cat=109&_nc_oc=AQmpr_ivR0hJaBqUyBLfyezk-SeZTQUgyw-effvu9099KmqpcRu14SUjKi9nqrKbzKI&_nc_ht=scontent.ffco3-1.fna&oh=a3d404ed9697669d71be70648624140f&oe=5E0126E1

    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.

    • Like 1

  2. 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...

    • Like 5
    • Thanks 1

  3. 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. ;-)


  4. 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 icon_smile.gif

     

    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.

    • Like 1

  5. .

    ...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).

    • Like 1

  6. 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 icon_smile.gif )

     

    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 icon_smile.gif

     

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


  7. 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!!

    • Like 2
×
×
  • Create New...