Electronics > Projects, Designs, and Technical Stuff

Cloning a Tandy TRS-80 Model 1

<< < (13/26) > >>

GK:
What software are you using? I've used up my monthly data quota and am stuck to dial-up-level internet speeds for several days still, so downloading anything and having a play is off the cards for the time being. However for VHDL synthesis and schematic entry I need a Mentor Graphics license and have to integrate with Protel/Altium respectively? GUPL? Pass, I think.
   

GK:
This afternoon I got the data cassette interface built up and operational, so I can now save and load programs. Here is my first to be saved, at a blistering 250 bits per second  :) :

https://www.eevblog.com/forum/projects/cloning-a-tandy-trs-80-model-1/?action=dlattach;attach=627973

I've attached a schematic of the cassette interface portion. Note that this is only a quickly devised prototype circuit using parts immediately at hand, and not the final design. Since there aren't any other I/O devices (floppy disk controller, printer, etc) besides the data cassette interface that are currently part of the system, I didn't even have to decode the address for the cassette port to make it work.

I would like to load and run a famous commercial program for my first demonstration video, but at the moment I am stuck to running BASIC level 1 only. Although the computer is now running really stably in BASIC Level 1, it has decided to refuse to boot at all in BASIC level 2. I dunno exactly why, though I suspect that may have corrupted my ROM by accidentally disturbing the wire to the !WR pin while powered up (as this is only a prototype I am currently using a flash ROM rather than an OTP one). The ROM is a 32kb AT28C256. I have BASIC Level 1 occupying the first 4kb of the lower 16kb page and BASIC Level II occupying the first 12kb of the upper 16kb page. The ROM is really buried beneath wires and I'm not sure I want to risk getting it out

All of the programs that I've downloaded from the net so far have turned out to be 500 baud, BASIC Level II only, annoyingly.



Oops, the polarity of the signal at the output of the rectifier is drawn opposite of actual.


GK:
Okay........ finally found a 250 baud Level 1 game with fast moving screen graphics. This is the first piece of commercial software loaded and run by my prototype. Unfortunately this one doesn't have any sound effects though. I'd really like some zaps, beeps and buzzes in my first Youtube video. Does anyone have a game-with-sound suggestion?

kizmit99:
Looking great  :-+
A couple of good audio games are Defense Command (Space Invaders clone) and Robot Attack (Robotron clone).  I believe both generate 'speech' via the incredibly rudimentary cassout signal...  Both are cmd files though, and as far as I know are only available for level-2.

I know (from your Pet clone) that you're comfortable doing the cassette input signal conditioning all in analog (like the original), but I have found that taking the crappy input signal and using a one-shot to turn it into a digital signal as soon as practical makes for a much more forgiving (and therefor more pleasant) CLOAD experience.  I had done this with my original back in the day, so I consider it a period-correct upgrade  ;D

What are your plans for the cassette motor?  The original used an relay to switch the motor power (provided by the cassette desk) on the aux-input.  Since this would only work with the specially modified TRS80 cassette decks, I decided to just drop the motor on feature altogether...

EDIT---
A few more random thoughts on the cassette - just thrown out as things you may wish to consider...

* Connectors?  I decided to ditch the original DIN-6 as they were so proprietary and I don't plan on using a real TRS80 cassette deck (those are reserved for the real TRS80 machines!).  But even if I wanted to use a real deck, making up new cables to connect it shouldn't be a problem.  So I devolved the cassette connectors to two mini-audio jacks - one for input, one for out.  It makes for an easy hookup to the digital voice recorder I'm using as the substitute cassette deck.

*Audio Out?  I like hearing the primitive audio from the early games, but I don't like hearing the data loading or using the cassette deck as the audio amp.  So I've decided to add a separate audio amp driving a separate audio-out jack to feed a small speaker directly.  I may use the motorOn control from the cpu to disable this output when loading/saving data.  Probably would have an option for leaving it on to help debug CLOAD/CSAVE issues.

*Audio quality - I tried using the cassout signal to drive a piezo speaker... bad idea, doesn't sound anything like the same signal driving a small "standard" speaker.

GK:
Thanks  :)

I'm not overly enamored with the cassette analogue circuitry as it is currently implemented. One thing I definitely won't be modifying though is the input signal conditioning (2-pole high/low-pass filtering). My lab PC for example makes for a lousy audio source with gobs of HF rubbish superimposed. Then there are ground loops/main hum and other potential sources of HF interference too, especially when the signal source is on the other side of the lab connected via a 5m cable. 

One thing with the TRS-80 cassette interface that will never match the performance that I managed to design into my 8-bit Commodore one, is the tolerance for a large dynamic range of signal input level. The PET uses essentially a continuous FSK squarewave. All you have to do to clean this signal up is amplify and limit it. The TRS-80 though uses a pulsed, return-to-zero signal. Amplify this signal excessively and all you do is raise the noise floor and narrow the detection window. One saving grace of the TRS-80 system though as opposed to that of the PET is that it isn't signal-polarity sensitive.

For the audio side of thing I'm going to do pretty much what I did with the PET clone (internal speaker and an LM386). Personally, I find it useful as a diagnostic aid to be able to listen in if required to either the cassette out or in signal. I was just going to have three positions to my audio source select switch - Off, CASS in and CASS out, but I like your idea of using the motor control signal to mute the audio, so perhaps a fourth position called "CASS out auto mute" or something.

Navigation

[0] Message Index

[#] Next page

[*] Previous page

There was an error while thanking
Thanking...
Go to full version
Powered by SMFPacks Advanced Attachments Uploader Mod