Image Map Image Map
Results 1 to 9 of 9

Thread: TRS80 Model III I/O bus assistance

  1. #1

    Default TRS80 Model III I/O bus assistance

    All,

    Thank you in advance for any assistance, comments, suggestions. I am having trouble finding specific resource items on the web.

    Briefly, I have been collecting vintage computers for a number of years including TRS80, I had previously designed and built a digital/logic circuit and learned how to interface it with my Model 1 I/O bus successfully. Now many years later I am attempting to revisit this and interface it from a model III in my collection. I have found a great hardware interface reference book with experiments and have already learned of the "out 236,16" command needed to active the bus on the model III.

    Here is my question: I cannot seem to get any activity on the bus with any other commands, OUT or INP. 236,16 will bring it to life, but no additional OUT command causes anything to happen. (by that I mean no pulses on logic probe, no ability to trigger a latch, no ability to decode an address, etc). I am asking for anyone with I/O bus and hardware experience to assist me with how to troubleshoot, what to look at for what could be not working on the MB that is preventing I/O communication.

    my ribbon cable continuity is verified, pins on bus connector cleaned.

    Again any comments welcome, any assistance very much appreciated!! Thank you, Mike

  2. #2
    Join Date
    Jun 2010
    Location
    Vancouver, BC, Canada
    Posts
    293

    Default

    BASIC holds a shadow copy of output value to port 236 at 16912. If you do OUT 236,N inside a program the value will persist while the program is running. When when you go back to the READY prompt the value at 16192 will be re-asserted.

    So in BASIC your best practice is to set what you want at 16912 and then to an OUT to make sure it is up to date.

    For example, to turn on the external I/O bus:

    Code:
    10 A=16912:POKE A,PEEK(A) OR 16:OUT 236,PEEK(A)
    Hopefully this is the problem.

  3. #3

    Default

    Thank you. I think I understand what you are suggesting. I'll use one of the experiments to see if I get it.

    with a simple latch IC that will toggle with OUT to clk and all other inputs high. I an instructed t run this basic program to blink on an off an LED connected to the latch.

    10 OUT 236,16 :REM turns on I/O bus
    20 OUT 47,Y :REM sends a pulse signal on OUT pin, values are irrelevant
    25 for J=1 to 300 :Next J :REM time delay
    30 goto 20

    the latch should toggle and the LED blink, but in my case LED goes on from line 10 and then nothing happens, no pulsing on OUT pin

    and if I just enter commands, OUT 236,16 pulses the out line, then all dead again, followed but any other OUT, nothing happens.

    I believe you are advising to use what is at mem location 16912 in the OUT statement? but I think I am a step before that, I am just trying to get the OUT command to pulse the pin ?? Apologies if I am missing your point, I appreciate the response! Mike

  4. #4

    Default

    Are you doing any port decoding or are you just looking for activity on the bus itself?
    The Model III/4 bus has both address lines and data lines, and you need to "trigger" from the correct address before the data will be available. Otherwise, everything goes by way too fast.

    If you want a simpler method just for output, you can use the parallel printer port. The address is already decoded (F8h or 24, so your hardware is much simpler.
    An octal latch (ie. 74LS373) is about all you need and can drive 8 LEDs, one for each data bit.

  5. #5
    Join Date
    Jun 2010
    Location
    Vancouver, BC, Canada
    Posts
    293

    Default

    Quote Originally Posted by mjmalecha View Post
    Thank you. I think I understand what you are suggesting. I'll use one of the experiments to see if I get it.

    with a simple latch IC that will toggle with OUT to clk and all other inputs high. I an instructed to run this basic program to blink on an off an LED connected to the latch.

    10 OUT 236,16 :REM turns on I/O bus
    20 OUT 47,Y :REM sends a pulse signal on OUT pin, values are irrelevant
    25 for J=1 to 300 :Next J :REM time delay
    30 goto 20
    That program should work. My point was that doing the OUT commands on the command line will be a problem. If you execute "OUT 236,16" on the command line you will enable the external I/O port only briefly and then it will be turned off again.

    It might help to know exactly what you've hooked up and how. In my (limited) experience a latch wants to retain a data value and will do so on the rising or trailing edge of the clock input. So if the inputs are all high except the clock then it will only ever latch a high value. Though I guess if you attach the complementary output of the latch to the data input then it will toggle.

  6. #6
    Join Date
    Sep 2011
    Location
    Melbourne, Australia
    Posts
    976

    Default

    Probably the best to learn from a book like we had to... if you can find a PDF version of Hardware Interfacing with the TRS-80 by John. E. Uffenbeck you won't have to pay $30 which is what it usually goes for on eBay.

    The books a 14-step evening class-style learning guide, teaches you all about he Model I and III I/O buses.
    *There is never a charge for Tech Support even if you don't purchase from me - We are Enthusiasts Helping Other Enthusiast and that is just the way it is

  7. #7

    Default

    Thank you all. Replies appreciated! i'll try to briefly answer your questions in case it triggers an additional suggestion. That is the exact book I have! I am trying to run his experiments. My original question/issue is, I believe I have a hardware issue with the bus, because the experiment #1 in his book, which is simply to verify the OUT command pulses the OUT pin in the bus, does not work. Thank you for clarifying that an OUT command on the command line will only briefly activate the bus, this I thought was true, but you confirmed.

    in my original design

    i had an address line, data line all used to trigger logic to flip a relay. I cannot get an OUT command in a basic program, after i include the OUT 236,16 to even pulse the OUT pin so nothing will sync anything in data or address bus

    yet I can see the OUT pin pulse when the OUt 236,16 command goes

    any thoughts on a hardware/port issue? buffers or other failure in the machine??

    thanks!

  8. #8

    Default

    Here is a straight forward question that may simplify what I am doing, I do appreciate its hard for everyone to know what exactly I am doing, have done and have an understanding of. I don't wish to waste any of your valuable time. If someone can answer this it may confirm if I have a hardware issue or something more subtle in my logic circuit interface. As EX5707 asked - yes at this point I am just trying to confirm bus activity prior to doing any address/data line decoding. Even without connecting anything, I can see the bus come alive when the OUT 236,16 is run within a BASIC program, including a pulse on the OUT pin, but my understanding from the book and my past experience is that within that program if I run another OUT command, regardless of address or data values, I should see the OUT pin (#35) pulse with my logic probe. I am not seeing that. Can someone confirm that I should see that? much appreciated!

  9. #9

    Default

    You're making me want to start playing with my Model III bus. My guess is that the initial OUT pulse when turning on the bus may be longer than the normal out pulse and the logic probe is able to detect the longer pulse and not able to detect the normal pulse. John mentions in the book that the normal pulse is 1us which is too fast to see in an LED. Which logic probe are you using and have you tried connecting up the circuit with the flip flop as in Chapter 1?

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •