Shop OBEX P1 Docs P2 Docs Learn Events
Prop Proto board to Heath KIt ET3400 Motorola 6800 — Parallax Forums

Prop Proto board to Heath KIt ET3400 Motorola 6800

mikedivmikediv Posts: 825
edited 2009-07-26 01:51 in Propeller 1
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

Comments

  • Clock LoopClock Loop Posts: 2,069
    edited 2009-06-13 02:22
    mikediv said...

    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,
    IRQ

    can anyone tell me what connections of these I will need to connect?


    I guess the bottom line is I want to be able to program the 6800 from my prop board.



    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
  • heaterheater Posts: 3,370
    edited 2009-06-13 04:34
    That looks like a very nice little kit and that's exactly the kind of thing I wanted to do with Prop when I discovered it, although I was aiming to use a Z80 as the "host" CPU. That's before I hit on the idea of emulating the Z80 in the Prop and saving myself a lot of circuit design/construction.

    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.
  • Toby SeckshundToby Seckshund Posts: 2,027
    edited 2009-06-13 08:24
    Shamefully, I have done nothing to my "Z80 nailed to a Prop" project for months now but all that Heater said is right. I held the prop's 3.3V off from the Z80's 5v with a bunch of 1.2Ks (had a load of them) and nobody died. As long as speed is not too high (ie spin) I do not think the delays through the resistors will affect things, too much

    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.
  • AleAle Posts: 2,363
    edited 2009-06-13 08:59
    mikediv:

    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
  • AleAle Posts: 2,363
    edited 2009-06-13 09:02
    Tony: If you are worried you can use a 74LCV8T245 level converter... or a 5V CPLD with IO at 3.3V (XL95xx series) as I used in the pPropQL020, works super! (The databus still has 1.2 kohm resistors).

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Visit the home of pPropQL, pPropQL020 and OMU for the pPropQL/020 at omnibus.uni-freiburg.de/~rp92
  • heaterheater Posts: 3,370
    edited 2009-06-13 10:03
    Looks to me like that kit runs at 1MHz. You will be needing to do all the Prop code in PASM and only have a handful of instructions in which to decode the address and provide/accept any data.
    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.
  • AleAle Posts: 2,363
    edited 2009-06-13 10:46
    Snyc buses are a bit difficult but what I do:

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

    ROMEMU                  mov     OUTA, #0
                            mov     DIRA, c0_c_DIRA
    
    
    c0_romemu               waitpne c0_c_PROMCS, c0_c_PROMCS ' waits for CS to be asserted
                            mov     c0_v_addr, INA          '@ 40   gets low part of address
                            shr     c0_v_addr, #16          '@ 80
                            and     c0_v_addr, #255         '@120
                            add     c0_v_addr, PAR          '@160 adds ROM offset
                            nop
                            nop
                            nop
                            mov     c0_v_addrh, INA         '@320 now it is safe to get high addr
                            shr     c0_v_addrh, #8          '@360
                            and     c0_v_addrh, c0_c_MSKADDRH
                            add     c0_v_addr, c0_v_addrh   '@400
                            rdbyte  c0_v_data, c0_v_addr    '@440  reads ROM byte
                                                            '@715 (max)
                            mov     OUTA, c0_v_data         '@715
                            or      DIRA, c0_c_DATAOUT      '@755
                            waitpeq c0_c_PROMCS, c0_c_PROMCS
                            andn    DIRA, c0_c_DATAOUT
                            jmp     #c0_romemu
    
    
    c0_c_DIRA               long    0
    c0_c_MSKADDRH           long    $00007f00
    c0_c_PROMCS             long    1<<25
    c0_c_DATAOUT            long    $ff
    c0_v_addr               long    0
    c0_v_addrh              long    0
    c0_v_data               long    0
    
    

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    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
  • Toby SeckshundToby Seckshund Posts: 2,027
    edited 2009-06-13 11:33
    Not very elegant but .. I had done some discrete hardware decoding of various addresses and other (Nascom) specific "magic happenings". sort of CPLD smile.gif

    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.
  • mikedivmikediv Posts: 825
    edited 2009-06-14 00:03
    Thanks guys I didn't think 1 1Meg it was very fast I was kind of hoping I could do the programing in Spin. But I have no objection to learning PASM I did add 1K resistors inline with every connection so far for the 5 volt buffering.
    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
    912 x 684 - 126K
    912 x 684 - 133K
    912 x 684 - 127K
  • heaterheater Posts: 3,370
    edited 2009-06-14 07:44
    I don't think you could ever get the prop to respond as a memory or I/O device using Spin. By the time Spin has detected the VMA and correct memory address the access cycle will have passed !

    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.
  • heaterheater Posts: 3,370
    edited 2009-06-14 07:56
    Of course the 74ls241 and 74ls243 will have to go for the above plan to work.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    For me, the past is not over yet.
  • Toby SeckshundToby Seckshund Posts: 2,027
    edited 2009-06-14 10:57
    I used the "let the Z80 run free, until the prop is required to do something, to try and keep up the KIPS and just let the prop do the boot download, and act like the periferals. Bus req and ack heavily used to do DMA. Not elegant, Hey-ho
  • heaterheater Posts: 3,370
    edited 2009-06-14 11:47
    Doesn't sound so inelegant. No reason not to use both methods.

    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.
  • mikedivmikediv Posts: 825
    edited 2009-06-14 22:50
    Heater I actually understand what you are saying the only thing is the ET3400 only has 256 bytes of static ram I wanted to bump this up to 64 or at least be able to use the props memory your thoughts, or interface a 64K static ram to the 6800
    thank you very much by the way
  • SapiehaSapieha Posts: 2,964
    edited 2009-06-14 22:57
    Hi mikediv.

    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
  • mojorizingmojorizing Posts: 249
    edited 2009-06-15 14:04
    I have a Heath Kit ET3400 w/manuals.· If anyone is interested, for the cost of shipping, it's yours.· It works (used once right after I built it)), I don't have the accessory card, and it's in storage right now.· I'm moving in 2 months, so that will be when it ships.· Any interest? email me at mojorizing@suddenlink.net and I'm living in N. Cal moving to Kauai.


    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Bad spellers of the world untie!
  • heaterheater Posts: 3,370
    edited 2009-06-15 14:53
    I see what you mean. It is very weeny. That's how things were in those days.

    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.
  • Cluso99Cluso99 Posts: 18,069
    edited 2009-07-22 06:35
    Somehow I missed this post. Looks very similar to a Motorola MEK6800D2. I have just helped a friend interface a prop to the kit via the PIA. It replaces the 7 segment displays and keyboard, but still uses JBug. We have a little timing issue with one row of keys.

    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
  • mikedivmikediv Posts: 825
    edited 2009-07-22 12:49
    Clusso I would like to see the code if you don't mind, also what Rom do you need?? I have quite a selection of Motorola Roms, for 6800-6809 and MC68HC11 stuff I have a few different versions of the Buffalo and of course the ET3400 Roms I can burn all the old style Eprom chips and have a bunch so let me know what you need and I can burn a chip for you ,, The only thing is though I can burn 2708s but I do not have any but 2716 usually work in place
  • Cluso99Cluso99 Posts: 18,069
    edited 2009-07-23 04:06
    @mikediv

    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
  • Marka32Marka32 Posts: 41
    edited 2009-07-26 01:43
    The ET-3400 is a great trainer. You're lucky to have one. You may want to cruise on over to: http://tech.groups.yahoo.com/group/ET-3400. They have all the documentation and answers that you need. If you have anything that they don't, please share. I have found them to be very knowledgeable and helpful.

    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.
  • Marka32Marka32 Posts: 41
    edited 2009-07-26 01:51
    mikediv said...
    Heater I actually understand what you are saying the only thing is the ET3400 only has 256 bytes of static ram I wanted to bump this up to 64 or at least be able to use the props memory your thoughts, or interface a 64K static ram to the 6800
    thank you very much by the way

    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).
Sign In or Register to comment.