• Please review our updated Terms and Rules here

Exidy Sorcerer II Questions

In case you haven't read about it upthread lately, this tape sim runs at 20833 baud. That's over 1.8 KB/sec, as fast as some floppy drives from the day.
 
Since my Sorcerer I has no case I hung it above the monitor on the desk's backboard. It looked dark and dingy so I added lights. Five green LEDs behind the board and white, red, and blue above it. They are driven by a data bus buffer chip so they flicker as programs execute. Those clip leads run to the Teensy 3 tapesim.

Looks like a vintage sci-fi movie scene :-D

About your tape sim, I'm a little lost, did you say that runs at nearly 21Kbps (indeed, it's in pair with some drives); but how the Sorcerer can match this speed over the serial port?, are you using compression techniques to squeeze the data sent (and thus reaching higher transmission rates)?

Anyway, looking forward your progress, it's really interesting.
 
No compression. The Sorcerer's serial chip is capable of up to 30 kbaud if you disconnect its clock inputs from the 300/1200 baud circuit of the cassette interface. The Teensy generates the faster clock signal required. It's lucky that the loader code in the monitor ROM can keep up at 20833 baud.

The tape sim loads a small terminal / loader program, TRMLD, which accepts characters from the Teensy and puts them on the screen. So the Teensy does the work of building the file menu while TRMLD just displays it and waits for a keypress to send back. Then Teensy sends the selected file and TRMLD loads and executes it.
 
Last edited:
Nice solution, I suppose TRMLD works as the loader code capable to keep th 21K rate, it must be optimized to the max :), does your Sorcerer work at 2Mhz?, I can't remember if your machine was the one with the doubled clock (about 3,5Mhz).

Also, how do you disconnect the clock inputs?, looks like you need to cut some traces or remove some circuit components...
 
The original Sorcerer has the cassette interface on a daughtercard. If you remove that, the serial clocks and I/O signals are available on the large pins. No cutting required.

Mine has the original 2 MHz Z80 clock.

It's lucky that the monitor ROM's loader does keep up at 20833 baud, so TRMLD simply jumps to it at the end. The ROM's input and display routines, however, work only at 1200 baud because the GETIY subroutine has a delay loop. So I had to code the terminal portion of TRMLD to run at the higher speed.
 
Oops, I missed the "the monitor ROM's loader", good to know :oops:

So, to summarize, the full setup needs the cassette interface pcb to be removed, replacemement of the monitor's ROM with a new one with some patched routines (input & display), a Teensy board (wired to the right Sorcerer pins now freed) and some resident software (TRMLD), am I right?
 
Yes, remove the cassette PCB.

No, monitor ROMs are not replaced. TRMLD contains the revised input and display routines.

Yes, wire in the Teensy board. The Teensy code contains TRMLD and transmits it repeatedly. When the user types LOG, TRMLD runs and signals Teensy to send the menu, etc.
 
Neat!, seems really easy to build.

I've been looking for info about the Teensy boards and, wow, if you move to a Teensy 3.5 you'll have 120Mhz, not bad! :). It would have enough raw power to get compression routines in a breeze.
 
Yes, it's way over powered for this job. Compared to the Sorcerer it has nearly 300 times the speed and 10 times the memory. As a serial server, it's like the tail wagging the dog. But it's cheap and easy to program, it has an SD connector, and it can handle the old 5V signals.
 
I have a collection of .BIN files from somewhere upthread and have decoded their header format. I tried and failed to find it on line - closest I got was it's some kind of MESS file. Here's what I found:

FD
00
80
00
00
Lo - byte count remaining
Hi
00 - any number of 0 bytes
Xx - any number of ASCII characters
1A
Lo - execute address
Hi
Lo - load start address
Hi
Lo - load end address
Hi
Xx - data bytes

Anyone familiar with that format? Is it correct?

Anyway I can convert that to the Sorcerer tape format and then the files should load and run.
 
Tried some BASIC programs. They load and list but don't run. Same problem I had with Super Star Trek long ago.
 
It might be because TRMLD runs from the monitor rather than thru BASIC's CLOAD command. So my question is, if these files came from MESS, how do they get loaded there?
 
Yes, that was it. I experimented and found the BASIC programs do work with a CLOAD instead of a monitor load.

Now to figure out how to handle two ways of loading. I wrote TRMLD as a dumb terminal with a loader. Now it has to have less dumbness and another loader. Anyone know the jump address to the CLOAD command in the BASIC ROM?
 
Some of these BASIC programs aren't working after all. Tempest, which version of BASIC are you using with these?
 
Yes, that was it. I experimented and found the BASIC programs do work with a CLOAD instead of a monitor load.

Now to figure out how to handle two ways of loading. I wrote TRMLD as a dumb terminal with a loader. Now it has to have less dumbness and another loader. Anyone know the jump address to the CLOAD command in the BASIC ROM?

The LOADBAS routine is at $E799

I used this to detect that CLOAD was called from basic in my emulator, then it diverts to my own code to load the file from SD card and sets the program counter to the warmstart address: $DFFA
 
Thanks but I tried calling LODBAS (thru the vector BASLOD at E02D) and the loaded BASIC programs would not run. Apparently CLOAD does some initialization before calling it. If I could call CLOAD in the BASIC ROM, it might work.

What emulator did you write?
 
Back
Top