TRS80 Model 4 Rebuild - Part 4

The TRS80 Model 4 works well with the two internal 3.5" drives.  The challenge is sharing files with the other two stock machines which have 5.25" single sided floppy drives.  

In the future I plan to add a compact flash or sd card based "hard drive" to the top drive bay so don't want to install an internal 5.25" drive.  

The Model 4 has an external drive connector so I went searching for a suitable external drive case.... and Trade Me (the New Zealand equivilent of eBay) turned up 70GB DLT drives for less than $10.

 

The DLT drive occupies a full height 5.25" bay so the case supports 1 full height or 2 half height drives.  It also includes a small switching power supply providing +5V and +12V DC.  

I replaced the DLT drive with a Tandon TM-50-1 drive that was originally in the Model 4 when I first received it.  In the remaining space I installed a hard drive frame from an parted out HP-9000 minicomputer.  The frame holds Frederic Vecoven's Hard Drive emulator (http://vecoven.com/trs80/trs80.html).

 

A very simple and successful project.  Now I need to find suitable cleaning product to remove the marker on the front of the case.

 

TRS80 Model 4 Rebuild - Part 3

With the replacement header installed on the serial interface board and the modifications removed from the floppy drive controller it was time to reassemble the machine.

Nothing special here but some interesting images of the internals of the TRS-80 Model 4.

New header on the mainboard for the serial board connection

Non-standard header for the floppy drive controller connection

Model 4 case with drive frame removed and one power supply installed

Keyboard installed

Floppy drive and serial boards installed in the case frame

Manufacturing date for this machine - 2 March 1983

Assembled machine with 2 x 720kb drives and blanking panel in the top bay

Closeup of the drive installation

 

SBC6120 PDP8 Replica - Part 5

The final result.

 

SBC6120 PDP8 Replica - Part 4

Assembling the FP6120 front panel is fairly easy.... if you read the instructions first.  

The worst thing you can do is jump ahead and install the front panel switches.  

Don't do that for two reasons.....

  • They look so much better painted and there is no way you can do this once they are installed.
  • A number of the solder on swages fit between the switches and cannot be installed once the switches are in place.

The build procedure (with hints) I used was a follows:

  • Install the solder on swages.  Make sure you read the FP6120 construction guide as the orientation of these differs depending on their use (FP6120 light bar mounting or SB6120 to FP6120 mounting).
  • Install the IC sockets, capacitors, resistors, diodes (except LED's), ferrite beads, power and FP disable switches and the switching regulator.
  • Take care when installing the resistor packs that you get the common pin orientation correct.  The common pin is marked on the PCB.
  • If you are using LED's other than the red ones in the parts list then it is good practice to use sockets for RP1, RP2, RP3 and RP4 allowing the resistors to be easily changed if the LED's are too bright.  I used 2K2 resistor packs for the warm white LED's.
  • Install one of the two 50 pin stacking headers supplied with the kit in J1 with the female side on the component side of the board.  Do not trim the pins..... you need these when mounting the SBC6120 later.  (The other 50 pin header is installed on the SBC6120 with the female side on the component side of the SBC6120 board).
  • Install a two pin stacking header on J5 also with the female side on the component side of the board.   I suggest reading my article on repurposing Arduino headers for this.
  • Perform a power on test checking the regulator output at +5v and the VCC and VSS lines on each of the IC sockets. 

 

FP6120 ready for initial power test

Close up of J1 on the solder side of the FP6120

Close up of J1 on the component side of the FP6120

If your initial power on test was successful then:

  • Install the IC's.
  • Install the light bar and then the LED's following the instructions in the FP6120 manual to ensure they are correctly positioned.
  • Install the rotary switch after trimming to length as described in the FP6120 manual.  Note that in my pictures the switch is not trimmed and I did it later.... possible but there is more risk that you will damage the board.
  • Temporarily mount the FP6120 on the back 50 pin and 2 pin headers and repeat the power up test.  The front panel LED's will run through a memory test and eventually stop with the RUN LED not lit.  If you have the serial interface connected to the SBC6120 then use the monitor to read and write memory and validate that you see the address and data displayed on the front panel. 

 

FP6120 with SBC6120 installed - No switches

Finally

  • Mount the front panel switches.  

If you want these to look good then they need to be straight.  The approach I used was to insert the switches and on the component side of the board solder a single pin on the lower side of the switch to hold the switch in place while using a ruler to align the top edges of all switches.  

This sounds more complicated than it is.

When all switches are in place look down the row of switches from the ends and adjust any switches that are out of alignment.

When the alignment looks good change to the solder side of the board and solder the remaining switch pins.

FP6120 with SBC6120 installed - With switches


 

 

TRS80 Model 4 Rebuild - Part 2

Having sorted out the serial interface connections I turned my attention to the floppy drive controller. 

Interestingly the machine had the spectrastrip connector between the main board and the floppy drive connectors replaced with SIL headers and an IDC cable when I received it.  Likely by a technician as TISCO (the service agents that worked for Porterfield Computers) back in the mid 1980's when the stock internal drives were being replaced with four half height units.

Mainboard floppy disk controller SIL header

In addition to the connector replacement was another modification to the floppy drive controller to switch the drive select lines on the internal connector between drives 0 (80 track) and 2 (40 track).  This allowed the machine to boot either 80 track or 40 track diskettes.  The drive select lines were wired to a switch mounted on the back of the cabinet.

Floppy drive controller with DS0/2 select switch

Back side of the floppy drive controller showing the connection to the DS0/2 switch

Closeup of the connections for the DS0/2 switch

The FDC in this machine is PCB#8858160.  The schematic is included in the Model 4 Technical Reference Manual.

Reversing the modification required the following changes:

Remove switch
Reconnect U1 Pin 4 -> J1 Pin 10 
Remove U18 Pin 6 -> J1 Pin 14

 

 

TRS80 Model 4 Rebuild - Part 1

While my Model 3 and one Model 4 are stock configuration machines, the one with the failed CPU from the previous post is definitely not.

I got it through the New Zealand Trade and Exchange newspaper in the late 90's and was staggered when I went over to pick it up because it was the machine that Bill Porter (the owner of Porterfield Computers... the Radio Shack agents) used for all his software development and I think subsequently sold to Basic Payrolls in Newmarket who did a lot of bureau payroll processing using TRS-80's in the late 80's.

I worked for Porterfield Computers as a holiday job in 1985/86 so had used the machine regularly.

It was very distinctive because the internal drives had been replaced with 2 x 80 track (Mitsubishi) and 2 x 40 track (Tandon TM-50).  

The machine was a US domestic model, imported before the 240v model was available and modified for 240v power.  

The power supplies are after market Astec units and there are a number of mods to the main board and floppy controller.

The machine had been sitting in pieces in the workshop for the last 4 years and I finally felt sufficiently guilty to sort it out.

Given that it is not intended to be stock configuration and inspired by Ian Mavric's "Building the Super Micro" article I replaced the floppy drives with two internal 3.5" 720kb units in the bottom bay which makes software transfer from a PC a bit easier.  I plan to connect one of the TM-50's externally so I can easily write disks for the other machines. A full height hard drive frame fills the top bay and I may install an "SD Card" and interface board the emulates a Radio Shack hard drive.

At some point in it's life this machine had lost the spectrastrip cable that connected the serial interface board with the main board.  As a 20 pin connector these are easy to replace with a 20 pin header and old IDE hard drive cables.

Serial interface board with spectrastrip header removed

Serial Interface board with spectrastrip connector replaced by 20 pin SIL header

Serial interface board with modified IDE hard drive cable for connection to the main board

Main board with spectrastrip header replaced by 20 pin SIL header

 

SBC6120 PDP8 Replica - Part 3

For me the thing that really really finishes the SBC6120 is the FP6120 front panel.

It takes a great PDP8 compatible single board computer and gives it the feel of a 1970's minicomputer.  Even if you never toggle in programs via the front panel, just watching it work makes you feel a lot closer to the inner workings of the machine.

When it came time to assemble the FP6120 I spent quite some time thinking how to get the best possible presentation and real PDP8 feel.

I concluded that:

  • Real PDP8's have don't have red lights on the front panel.
  • Real PDP8's have coloured switches.

and that the truely best presentation required the same.

The build instructions do suggest that the builder may want to use alternative LED's and that socketing the current limiting resistors might be a good idea.  More about this in the article about the FP6120 build.

This article is about painting switches.....

I was prompted to investigate switch printing when I saw the write up by Henk at www.pdp-11.nl on his SBC6120 build.

Following his lead I visited a number of automotive and specialty paint suppliers to try and find a suitable paint at a reasonable cost.  Stock colors were a poor match for the front panel decal and the offer of custom paint at NZ$70 per can wasn't very appealing.

At this point I remembered my brother-in-law is a keen plastic model airplane builder, has a spray kit and without much prompting offered to paint the switches. 

Switches after spraying

Close-up of switches after spraying

Masking to prevent overspray onto the switch bodies

 

A very impressive result for less then NZ$10 in paint and some qualified assistance.

For anyone looking to replicate this I used Humbrol Enamel colors 113 and 225.  If you don't have an on call painter it may be worth checking with a local model shop... they may know someone willing to do the job for beer, pizza, etc.

 

 

TRS80 Model 4 Fault

The TRS80 Model 4 had been languishing in the workshop for a few years and was finally due some attention.

Inspired by Ian Mavric's "Building the Super Micro" article I did a complete disassembly, cleaning and confirmed that the supression caps in the power supplies had been replaced before doing an initial test power up.

This was the result (sorry for the glare)....

 

While the characters would change with each power up the layout of the screen and behaviour was the same.  

The following steps helped me identify the problem and get the machine operational:

  1. Checked the power on pins 11 (VCC) and 29 (VSS) of the Z80 (U57).  This read 4.7 volts... a little lower than I expected but was consistent if I powered the main board from either power supply so I assumed it was OK.  At the lower end of the rated voltage range for the Z80 but probably OK.
  2. Used a frequency counter to check the clock on pin 6 of the Z80 (U57).  This was correct at 4 Mhz.
  3. Used a logic probe to look for activity on pins 27 (M1), 19 (/MREQ), 20 (/IORQ), 21 (/RD), 22 (/WR) of the Z80 (U57).  If the machine was running normally you would expect to see continuous pulses on these pins.  I saw no activity which suggested a problem with the Z80.
  4. Removed the Z80 (U57) and powered up the machine with no processor installed.  The result was the same display which further hinted that the problem might be the processor.
  5. Replaced the Z80 (U57) with a spare and was greeted with the Cass? prompt. 

It wouldn't be as much fun if the machines always worked.

 

 

SBC6120 PDP8 Replica - Part 2

Building an SBC6120/FP6120 kit requires a 2 pin stacking header to join J5 on the FP6120 with J10 on the SBC6120.

 
This header is not included on the partial kit of parts and I hadn't been able to find the right part from Digikey or Mouser.
 
I did however discover that stacking headers are commonly used in Arduino projects (http://www.adafruit.com/products/85), low cost, available in retail stores down here (not sure about the US... I heard that Radio Shack was selling Arduino so they may have them) and these can be easily modified to connect J5 and J10.
 
Here are a few photos that might help you out.  Hope the quality is good enough.
 

An Arduino 6 pin header before modification.

 

The 6 pin header with two of the pins removed (middle and end).  They pull out easily with pliers.

 

The 6 pin header cut in two along the middle pin and then the end pin also cut to size.  I gave them a tidy up with fine sandpaper after this was done.

 

 

Shows the same parts as above but  note the extra spacer on one of the headers.  This is the plastic section from the bottom of a standard DIL header.  Cut off two pins from the DIL header, pull out the standard pins keeping the plastic and slide it onto the bottom of the new header.   The header with the spacer is used on the SBC6120 and makes the header the same height as the 50 pin header in J4.  Probably not critical but it looks more finished.
 

 

 

The component side of the FP6120 and the header (the one without the spacer).

 

The solder side of the FP6120 and the header pins which will mate with the header installed in J10 on the SBC6120.

 

The component side of the SBC6120 and the header with the spacer.  

 

I found that the SBC6120 header was the same height as the 50 Pin header supplied with the kit.  When I mounted the SBC6120 on the FP6120 they mated perfectly.

If you are building up the SBC6120 and want to test it before completing the FP6120 and you don't have a header for J10 then don't install anything (saves unsoldering later).  Skipping the header won't cause any problem, just prevents a Break returning you to the control panel mode.  Not really important for testing.

 

SBC6120 PDP8 Replica - Part 1

I have always been a fan of DEC Minicomputers.  

Not because I have used them a lot (despite what the guys at work think I am a bit too young for that) but as a teenager in the 1980s playing with microcomputers I spent a lot of time dreaming about those machines in my collection of DEC product catalogs.

My father worked for the Physiology Department of the School of Medicine, University of Auckland from the early 1970's until he retired in 1995.  

The first computer I ever saw was the PDP8e that he had at work.  I don't recall any many of the specifics of the machine except that it was huge (what wasn't when you were under 10), had really cool blinking lights on the front panel and printed me a snoopy calendar when I visited on one of the department open days!

John P Quinn - Physiology Department, Medical School, University of Auckland circa 1975 with PDP8e

While I was studying at the University of Auckland in the late 1990's I visited the my father at work and spent a lot of time using the department machines while I was waiting for my ride home.  Even in the 1990's the PDP8e was still operational and lived in a little "computer room".  

From memory it had been expanded beyond what was shown in the photo.  It still had the TU56 tape drive but I vaughly recall disk storage as well.... likely an RK05J and an LA36 DECWriter printing terminal.  I am not sure what the machine did at that point in it's carreer having been replaced for many lab tasks with a mix of Apple II, BBC Micro and MDL S-100 Bus machines.

It was still a very impressive looking machine with the blinking lights and front panel switches.  I wonder what happened to it?

 

Fast forward to 2012 and having completed the Z80 machine on prototype board I was looking for another construction project.

In 2003 Bob Armstrong's Spare Time Gizmos produced a PDP8 compatible single board kit computer (SBC6120) and companion front panel (FP6120).    The kits had been out of production for many years but Bob had very generously published all the design files on his web site.  If I would build a Z80 on prototype board surely I could build a PDP8.  It didn't look too hard and someone else had been crazy enough to try (http://juliepalooza.8m.com/sl/pdp8e.htm).  I even found a source for the HD6120 CPU.

I posted an enquiry on the Yahoo Groups SBC6120 group before I kicked off the process to see if anyone had comments on the practicality of building the machine this way.

The result was contact from a group member and a very generous opportunity to acquire an unbuilt kit.  Not something I ever imagined possible.

I took my time working through the build process on the SBC6120 from October through December 2012.

Having one opportunity to build this kit I was determined to build it to the highest possible standard.  That mean't ordering the original parts specified for the kit rather than trying to substitute parts from the junk box.  Sometimes this was expensive, particularly "mechanical parts" like the IC sockets, reset switch and indicator LED's but the result was well worth it.

The following are a series of images showing the SBC6120 through the construction stages.....

SBC6120 PCB and partial parts kit as supplied by Spare Time Gizmos.

SBC6120 PCB populated with machined IC sockets, passive components and sockets.

Operation SBC6120 with Compact Flash Adaptor

Note: Indicator LED's and Stacking Header not installed.

SBC6120 with Compact Flash and 5V switching supply under test

 

SBC6120 showing J10 CPREQ jumper.  Needs to be replaced for connection to FP6120

 

Switching Mains Equipment with a Raspberry Pi - Part 2

Part 1 of the mains switching project covered the hardware and this section covers the software.

The control software is a small Python program called fence.py built around the Raspberry PI GPIO and web.py libraries.  This provides a web interface on port 80 through which the solid state relay connected to GPIO 7 can be toggled.

 

#!/usr/bin/env python
import web
import RPi.GPIO as GPIO
import atexit

CTRL_FENCE_POWER = 7
WEB_PWD = "qwerty"

GPIO.cleanup()
GPIO.setmode(GPIO.BCM)
GPIO.setup(CTRL_FENCE_POWER, GPIO.OUT)
GPIO.output(CTRL_FENCE_POWER, False)

class webservice:
    def isvalid(self):
        request = web.input()
        return True if ("id" in request and request["id"] == WEB_PWD) else False

    def render(self):
        return render.index("on",WEB_PWD) if GPIO.input(CTRL_FENCE_POWER) else render.index("off",WEB_PWD)

class root(webservice):
    def GET(self):
        if self.isvalid():
            return self.render()
        else:
            return web.notfound()

class fence(webservice):
    def GET(self,name):
        if self.isvalid():
            if name == "on":
                GPIO.output(CTRL_FENCE_POWER, True)
            elif name == "off":
                GPIO.output(CTRL_FENCE_POWER, False)
            return self.render()
        else:
            return web.notfound()

@atexit.register
def shutdown():
    GPIO.cleanup()


if __name__ == "__main__":
    urls = ('/','root','/fence/(.+)','fence')
    app = web.application(urls,globals())
    render = web.template.render('/home/pi/fence/templates/')
    app.run()
 
Three URLs are recognized by fence.py
 
The root URL will display the status of the fence and the toggle button to allow the state to be changed.
 
e.g
 
http://localhost
 
The /fence URL supports two named commands (on and off) which change the GPIO state and displays the new status of the fence.
 
e.g
 
http://localhost/fence/on and http://localhost/fence/off
 
Because I wanted to make the application accessible from the internet I added very simple security where all requests require the provision of an id in the URL.
 
e.g
 
http://localhost/fence/on?id=qwerty
Failure to provide the ID will return a "Not Found" Error (404).  Good enough security to stop someone finding the incoming port and playing.
 
 
The status page is rendered using a web.py template.
$def with (state,WEB_PWD)
<html>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<style>
    a { text-decoration: none; }
    .button {
        padding: 5px 10px;
        display: inline;
        background: #777 url(button.png) repeat-x bottom;
        border: none;
        color: #fff;
        cursor: pointer;
        font-weight: bold;
        border-radius: 5px;
        -moz-border-radius: 5px;
        -webkit-border-radius: 5px;
        text-shadow: 1px 1px #666;
    }
    .button.off { background-color: #000000; }
    .button.on { background-color: #000000; }
    .button.large { font-size: 125%; padding: 7px 12px; }
    .label { font-size: 100%; color: #fff; }
</style>
<br/><br/><br/><br/><br/>
$if state=="on":
    <body bgcolor="red">
    <center><a href="/fence/off?id=$WEB_PWD" class="button large on">TURN OFF</a></center>
$elif state=="off":
    <body bgcolor="green">
    <center><a href="/fence/on?id=$WEB_PWD" class="button large off">TURN ON</a></center>
$else:
    Fence state not known.
<br/><br/>
<center><p class="label">James' Electric Fence</p></center>
</body>
</html>
 
The Raspberry Pi is configured to start the fence.py program when it boots.  
 
This is done using the following /etc/init.d/fence script:
 
### BEGIN INIT INFO
# Provides: Electric Fence AC Power Controller
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Electric Fence
# Description: AC Power Controller
### END INIT INFO

#! /bin/sh
export HOME
case "$1" in
start)
echo "Starting Fence"
sudo /home/pi/fence/fence.py 80 &
;;

stop)
echo "Stopping Fence"
FENCE_PID=`ps auxwww | grep fence.py | head -1 | awk '{print $2}'`
kill -9 $FENCE_PID
FENCE_PID=`ps auxwww | grep fence.py | head -1 | awk '{print $2}'`
kill -9 $FENCE_PID
;;
*)
echo "Usage: /etc/init.d/fence {start|stop}"
exit 1
;;
esac
exit 0

Starting and stopping the fence service can be done with the commands:
 
sudo /etc/init.d/fence start

sudo /etc/init.d/fence stop
 
sudo is required both here and in /etc/init.d/fence because fence.py accesses the GPIO ports which is only possible as an administrator.
 
Hope this proves useful for someone.
 
 
 
 
  • «
  •  Start 
  •  Prev 
  •  1 
  •  2 
  •  3 
  •  4 
  •  5 
  •  6 
  •  7 
  •  Next 
  •  End 
  • »


Page 1 of 7

Powered by Easytagcloud v2.1

Contact Andrew Quinn

jaquinn@ihug.co.nz http://twitter.com/jaquinn