Prop Proto board to Heath KIt ET3400 Motorola 6800
mikediv
Posts: 825
Hi guys I have a very old and very basic Heath Kit ET3400 MC6800 trainer .. it works fine but only has a Hex Keypad input device , I do not have the expansion board that lets you connect the trainer to a terminal or tape recorder for program storage.
IT does have some type of Buffalo monitor that will let you enter machine code then see it displayed on the Hex LED Displays it also has a solder less breadboard for experiments I guess where I am going with all this I would like to connect my prop proto board to this device
so I can control and program it in its native 6800 assembly using the prop that way I can have a TV, Terminal connection.
the 6800 has quite a few support chips for buffering the lines this is what I have so far
I have connected the props I/O pins to the 16- 6800 address lines, I have also connected the 8-6800 data bus pins to the prop chip as well where I am stuck is I have 8 ,,,6800 pins left to connect and I don't know if I need them all
They are RST, TSC, R/W, BA, NMI, VMA, Halt, and IRQ can anyone tell me what connections of these I will need to connect? Also if there is any prop code anyone can point me to or share
I guess the bottom line is I want to be able to program the 6800 from my prop board maybe down the road add memory or eeprom so I guess this would not be emulation since I have actual hardware??
Any help or suggestions would be awesome, Thanks Guys
Oh I also have a full set of manuals and schematics in PDF format if anyone else needs them let me know will be happy to share
IT does have some type of Buffalo monitor that will let you enter machine code then see it displayed on the Hex LED Displays it also has a solder less breadboard for experiments I guess where I am going with all this I would like to connect my prop proto board to this device
so I can control and program it in its native 6800 assembly using the prop that way I can have a TV, Terminal connection.
the 6800 has quite a few support chips for buffering the lines this is what I have so far
I have connected the props I/O pins to the 16- 6800 address lines, I have also connected the 8-6800 data bus pins to the prop chip as well where I am stuck is I have 8 ,,,6800 pins left to connect and I don't know if I need them all
They are RST, TSC, R/W, BA, NMI, VMA, Halt, and IRQ can anyone tell me what connections of these I will need to connect? Also if there is any prop code anyone can point me to or share
I guess the bottom line is I want to be able to program the 6800 from my prop board maybe down the road add memory or eeprom so I guess this would not be emulation since I have actual hardware??
Any help or suggestions would be awesome, Thanks Guys
Oh I also have a full set of manuals and schematics in PDF format if anyone else needs them let me know will be happy to share
Comments
My first question to you is, how does the 6800 load and run its program?
Does it load it from an eeprom?
Couldn't you just emulate the storage medium that the 6800
pulls its (program)assembly from in the prop? I guess I don't really know enough about your devices schematic and specific chips on board.
Post Edited (Clock Loop) : 6/13/2009 2:31:54 AM GMT
Do you have schematics and manuals? They are available from here www.classiccmp.org/dunfield/heath/index.htm and perhaps a Google search will turn up more info.
Firstly you are going to want to read those and understand the 6800 assembly language programming. You will need to understand the schematic a little. At least has to how the address, data, read/write and chips select lines etc work. You will need to know what the "memory map" is. That is what addresses are already used for the RAM, ROM, LEDs, keyboard etc.
I would suggest taking this in baby steps. For example first hook up the Prop get it working as a simple I/O port driving 8 LEDs say when a particular address is written to from the 6800. Having LEDs is always makes you feel good about the functioning of a circuit/program when starting from nothing.
1. Hook up the 8 data lines.
2. Hook up a select few of the address lines, you won't need all 16.
3. Hook up the R/W line.
4. Hook up 8 LEDs to the Prop.
The idea is that a Program in the Prop will wait for the address lines to be a particular pattern indicating the address you have selected for the Prop. Then it will check the R/W pin for read or write (no less). If it is write then the Prop reads the 8 data lines and illuminates the 8 LEDs with that pattern.
Which address lines? And what address pattern? Up to you. First figure out from the manuals which addresses all the other devices in the kit respond to. Draw up the memory map. Select some unused address range/ranges and figure out a selection of address bits that can be used by the Prop so that it responds to an address some where in the unused space (and no where else).
Look at the way the RAMS/ROMS are connected in the schematic.
Be sure to have series resistors in all the Prop to kit connections for protection. Perhaps 1K, others may recommend something better here.
When you have that LED driver up and running you will be confident to go forward and expand the idea into say the serial terminal interface. You will probably need the Prop to respond to a few different addresses to simulate the registers of whatever I/O device they used.
From there you can probably download programs to the thing serially eventually. Store the programs on SD card on the Prop.
Or perhaps use the Prop to emulate the cassette storage.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
For me, the past is not over yet.
One wider question I threw out, but didn't get any thoughts back on, was if each pin can be fed with 500uA max each, what if every pin were hammered at 500uA, all at the same time. However every thing I have done to Prop 001 hasn't hurt it. Bless.
I connected a 68008 to the propeller (and a 68020 too) and can use the propeller as ROM RAM and IO controller. SOme ugly pages are available at my sig. I have to move all that to the wiki...
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Visit the home of pPropQL, pPropQL020 and OMU for the pPropQL/020 at omnibus.uni-freiburg.de/~rp92
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Visit the home of pPropQL, pPropQL020 and OMU for the pPropQL/020 at omnibus.uni-freiburg.de/~rp92
Might be a good idea to check the Valid Memory Address (VMA) signal before checking the address signals.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
For me, the past is not over yet.
I'm using a multiplexed address bus (PA16..PA23) so the two reads of INA and all the shifting. If you use a non muxed bus, it will be shorter. The waitpne waits for the falling edge of ROMCS, the waitpeq waits for the rising one. This is for an almosr-1us bus cycle. The three nops are there to ensure that the address has the value of A8..A15 (a mux is operated without control from the prop).
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Visit the home of pPropQL: propeller.wikispaces.com/pPropQL
pPropQL020: propeller.wikispaces.com/pPropQL
OMU for the pPropQL/020 propeller.wikispaces.com/OMU
Post Edited (Ale) : 6/13/2009 10:51:43 AM GMT
The use of PASM will happen as and when I have the faintest clue on how to do it halfway decently. Spin has the advantage of being easy enough to get the algorhytms about right, before trying to ramp up the speed.
I could see why Heater did a full on emulation, incredibly complicated codings, but the state of the machine was litterally local and known. Actions could be tripped without my "Whoa, Neddy.." wait line. At one point the clock to the Z80 was 2MHz, 0Hz ie stop or 20KHz to slow step through bits that required chit-chats (kbd + vdu).
I must get back to it before I forget what I have done already.
all the address lines from the prop to the 6800 are going through some 74ls241 and the data bus 74ls243 the chips are already there wired into the board for accessing these pins of the 6800 for experimenting so I did tie into them as well as the 1K resistors.
Clock Loop the ET3400 comes with a modified version of Motorola's buffalo monitor , the way yo program the 6800 is there is a Hex keypad 0-F and you can type small programs into it with this keyboard the monitor program lets you single step through your code
execute it look at registers you can go back , forward, change , the display is 6 Hex LEDs and like I said early the ET3400 has a few solderless breadboards with support logic for doing experiments with interfacing.
It really is a nice little kit. But the lack of a decent input device makes it really hard to program, I wrote a little program to spell Mike on the Hex Display it took 96 keyboard inputs then I accisntly shut it off and lost the whole thing LOL
It really makes you appreciate the things you can do with the Prop .. ""dira[noparse][[/noparse]8]:=1 outa[noparse][[/noparse]8]:= 1 repeat"",,, to turn on an LED with the ET3400 you would have to LDA, A or B code the whole thing in binary or Hex then issue a G to the starting address its quite elaborate .
I guess I want to do this more for the learning experience than anything else I will post some pictures of what I have so far.
Heater I always appreciate your knowledge on the prop ,, What I am trying to figure out is I guess I would have to interface to the existing monitor program am I correct???
If I could figure that out I would have access to all the built in commands ,, as primitive as they are there are some, There is even a quasi if you will method of debugging and single stepping My goal if I can would be the ability to control the ET3400 and use the interface ports for my own projects with the 6800 , so the prop would in essence be my controller or a way to store and run 6800 programs.
I appreciate everyone's thoughts?????
Oh guys before anyone points it out those black IC chips between the prop and the 3400 are Beckman 1K resistor packs
Mike
Post Edited (mikediv) : 6/14/2009 12:39:04 AM GMT
Looking at the schematic for that kit briefly it l looks like you could drive a HALT signal into the 6800. Which means the Prop could become the bus master and then read write data from the kit.
So:
1) Drive HALT low.
2) Wait for BA to go high. At this point the 6800 has gone tristate and the Prop can drive the address/data.
3) Prop now drives address, data and w/r (possibly VMA) to write data into the kits RAM.
You now have a program loader and it could be done in Spin. When the kits RAM is loaded release HALT and run the prog from the keyboard as normal.
Of course you can also drive the LEDS from the Prop whilst in HALT or read/write whatever peripherals. The kit becomes a peripheral of the Prop.
If you can get that working there must be a way to use the Prop to POKE stuff into the variables of the PROM monitor program so as to get it to execute any code the Prop has downloaded. Thus automating running of the downloaded code. The monitor code is in the manual.
You will want to check the kits schematic and 6800 data sheet carefully to verify the workability of this plan. Especially check that everything you want to drive from the Prop has gone tristate when in HALT.
Sounds fun.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
For me, the past is not over yet.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
For me, the past is not over yet.
For program down load the Prop asserts HALT and drives the bus to fill RAM.
When loaded the Prop removes HALT and and changes mode to listing for addresses coming from the other processor and performing peripheral duties.
Still I think I would start with the first case as it's simpler. Does not need PASM and builds confidence that things are working.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
For me, the past is not over yet.
thank you very much by the way
You can't ad 64K RAM to 6800 without special decoding.
6800 CPU not have special IO bus and all IO is decoded by memory maping.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Nothing is impossible, there are only different degrees of difficulty.
For every stupid question there is at least one intelligent answer.
Don't guess - ask instead.
If you don't ask you won't know.
If your gonna construct something, make it·as simple as·possible yet as versatile as posible.
Sapieha
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Bad spellers of the world untie!
At this point I would suggest that if you want to have a bigger system it would be better to start from scratch or at least with something, well, bigger.
As Sapieha says there is no special I/O cycles on the 6800 so I/O devices live in memory space. So the decoding of those would have to change. Also of course you would have to change the decoding of the existing RAM and ROM. Then adding a Prop and/or bigger RAM is going to be a mess anyway. By the time it's done the kit will be butchered, which would be a shame, and you'll have done as much work on it as starting afresh.
I'd say limit experiments with the kit to adding a Prop as a peripheral and/or for downloading to those 256 bytes. As it was intended. Then put it back in it's box and use the experience gained to build something more like what you want.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
For me, the past is not over yet.
I had a D1 and a D2 kit. In one of those I purchased an assembler Rom. Anyone know where I can find one?
If anyone is interested, I can post the prop code here.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Links to other interesting threads:
· Home of the MultiBladeProps: TriBladeProp, RamBlade, TwinBlade,·SixBlade, website
· Single Board Computer:·3 Propeller ICs·and a·TriBladeProp board (ZiCog Z80 Emulator)
· Prop Tools under Development or Completed (Index)
· Emulators: Micros eg Altair, and Terminals eg VT100 (Index) ZiCog (Z80), MoCog (6809)
· Search the Propeller forums (via Google)
My cruising website is: ·www.bluemagic.biz·· MultiBladeProp is: www.bluemagic.biz/cluso.htm
Here is the code. The problem we are having is the keycodes for the fourth column (a,b,c,d,v,g) either are missed occasionally or duplicated occasionally, depending on the value we use for "count" (the time we use for simulating the keydown).
The Motorola documentation is in a pdf·file MEK6800D2 and the schematics are at the end of this doc.
We have used an old PC Floppy cable (the one that connected to the 5 1/4 floppy disk drive which was a 34 pin edge connector). By grounding the ends so they fit on the Motorola processor board, the keyway lines up and we can substitute the keyboard/display with the prop board by plugging cables. This connector gives us access to·the PIA and ACIA.
re Your kind offer of ROMs. I am sure my friend (also Mike) is able to program eeproms. What we are after is a 6800 based assembler. I had a rom based one that just took ascii code (source code) typed on a keyboard and stored in ram, then compiled it. So, if you have·a hex dump of an assembler that would be fantastic.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Links to other interesting threads:
· Home of the MultiBladeProps: TriBladeProp, RamBlade, TwinBlade,·SixBlade, website
· Single Board Computer:·3 Propeller ICs·and a·TriBladeProp board (ZiCog Z80 Emulator)
· Prop Tools under Development or Completed (Index)
· Emulators: Micros eg Altair, and Terminals eg VT100 (Index) ZiCog (Z80), MoCog (6809)
· Search the Propeller forums (via Google)
My cruising website is: ·www.bluemagic.biz·· MultiBladeProp is: www.bluemagic.biz/cluso.htm
The monitor is not Buffalo; it is a custom Heath monitor. A very similar monitor is used in the Hero-1 robot. I think that the tape formats are compatible, as are most of the subroutines. I found it to be very clever and well written.
If you have the course that came with the kit, you may want to look it over. Heath covered interfacing to the 6800 very well. If you don't, there is a copy of it on the Yahoo Group, or you could get one on eBay.
The memory map of the ET-3400 is in the manual. There is plenty of room to add memory, but the 6800 can address only 64k, minus the I/O and ROM. You may want to have a look at the I/O Accessory that Heath sold at one time. It has more memory, serial, tape, and a Tiny BASIC. They pop up occasionally on eBay. You can get the manual and ROM listings on the Yahoo Group (except for the Tiny BASIC).