Subscribe via RSS
21Aug/1710

MSX – Arduino as Tape Drive (CASDuino)

As usual, no vintage equipment is complete until you've maxxed it out with all possible peripherals! I had previously made an old 'Datasette' drive work for a Commodore 64 and so started searching for an appropriate tape player for my MSX. It turns out that you either pay big dollars for a specific data recorder, or you use an off-the-shelf tape player and hope-it-works.

I then stumbled across Arduitape (aka TZXDuino). The slogan says it all: 'ARDUITAPE MARK II - THE TAPE PLAYER REPLACEMENT SD CARD SYTEM FOR 8-BIT COMPUTERS'. After a lot of digging on the blog, the instructions presented themselves. As you can see, the instructions aren't as clear as they could be and so I henceforth present the complete construction and usage of an Arduino as a fake Tape Recorder for an MSX.

Update: Current link to TZDuino 1.8 is here. Seems the links above are now dead :(

Ingredients

I ended up testing out multiple components during this build. I initially started with a 128x128 LCD but found that the libraries required to run it used too much memory and therefore the whole project was useless on a UNO/Leonardo. Instead I switched back to a 16x2 LCD.

Component Substitute Comments
Arduino Nano Arduino Leonardo r3 This Leonardo r3 from Jaycar worked fine, or a UNO.
16x2 Character LCD Find any 16x2 I2C LCD from eBay.
SD Card Shield SD Card Module Jaycar also has a full shield for SD Card reading, but we don't need that much infrastructure.
AMP Shield Arduino Compatible 2 X 3W Amplifier Module Different, but with two channels, we can use one for input.
4 x 4.7k resistors Filter Board
3 x 4.7nF Capacitors Filter Board
1 x 100nF Capacitor Filter Board
2 x 3.5 mm Female Jack PS0122 (One is for recording... can we get it to work?)
1 x 2.5 mm Female Jack PS0105
5 pushbuttons SP0711
Some kind of box to put it all in.

From here, I'll describe how to hook up and test each component to make sure that you build up a stable base for troubleshooting!

The Circuit

Here's an overview of what we're building. It's really just a rigging of off-the-shelf components, apart from the filter board.

CASDUINO

Note that the buttons aren't in the exact order. You can customise which button does what below.

Arduino

I used both a Uno and a Leonardo whilst constructing this. I bought the Leonardo as I thought it had more RAM than the Uno. Turns out it doesn't and so I switched from the 128x128 memory-expensive LCD to a simple 16x2 LCD. Either way, grab an Arduino and a nice case to house it in.

DSC00043

DSC00047 DSC00049 DSC00050

Punch holes where required and mount it all in place with hot glue.

LCD

This was a quick solder and plug-in. VCC and GND to the Arduino. SDA and SDL to analog pins A4 and A5. Make sure you have the daughterboard on the correct way around. It's on backwards in the first picture below. In the second and third pictures you'll see that you can't see the daughterboard as it's aligned behind the LCD.

DSC00118 DSC00119 DSC00121

If you get a single bar of black blocks, then chances are you have the I2C daughterboard on backwards. There's something that looks like a 'pin 1' designation on the board, but this only worked once I plugged it onto pin 16! I have it on BACKWARDS on the first shot above!.

SD Card

This is another I2C device which means it just needs to be wired into the bus. Again, hook VCC and GND to the Arduino. Then hook up CS to D10, SCK to D13, MOSI to D11 and finally MISO to D12.

DSC00070 DSC00067 DSC00069

You now should get a new message showing the first file/folder in the root directory. Go test out your google-fu to find CAS files for the MSX. You'll need one to test with.

DSC00122

You'll want to start showing-all-files-and-folders in Windows to get rid of the hidden items that'll now show up on this device. There's no filter in the card to disregard the kludge that OS' keep hidden on disks.

Buttons

These are easy enough... they just need a common ground and then 5 wires to the specified digital inputs. You can customise the order of your buttons, but in the end make sure you have then connected to the associated inputs of btnPlay, btnStop, btnUp, btnDown and btnMselect.

DSC00124 DSC00128 DSC00130

Not a TZXTape? Come again? Oh right, we're meant to be using CASDuino, not TZXDuino!

Filter and Amp

UPDATE: You can skip this circuit... just wire the the audio out straight into the amp board.

This little board is pretty straight-forward. I built it up as per the instructions.

DSC00139

You then need to provide GND and Audio In (Digital Pin 9) from the Arduino. Audio Out is fed into your Amplifier, which happens to be R-In on my tiny board from Jaycar. Yes, I'm using a RED wire for GND on the filter board, running to GND on the button row. It's a really good idea to tie ALL GNDs together wherever possible.

DSC00140

Disregard my colour-coding... that blue is actually GND and is using the GND rail from the LCD panel. Black is audio-out from the filter board to Audio-in on the amp. The amp then also needed VCC and all GND pins joined. From there, add on the 3.5mm headphone socket.

DSC00142

At this point I actually plugged the output into my stereo. An awful noise, to the tune of the data loading of the Commodore 64 (or even a modem dialing up), played loudly! Data!

DSC00145

Finally hook up the little 2.5mm socket to GND and D6. This will allow the MSX to tell the player when to play/pause.

Loading a game

With everything hooked up, I turned the device on. I then powered up the MSX, with no cartridges installed. At the BASIC prompt, my CASDuino started flickering between play/pause. It looked like the remote-control signal was floating instead of being pulled high or low. Regardless, I typed in the magic command: RUN"CAS:" (yes, double-quotes and all)

The CASDuino settled on PLAYING and I heard interference through the TV Audio!

DSC00147

Found:TURTLE appeared... but then it crashed?

DSC00149

Turns out you can set the BAUD rate of the tape playback. Default is 3600, but this was too high for my construction skills, or maybe even my MSX.

DSC00162

Setting this to 1200 or 2400 saw the game (slowly) load!

Teenage Mutant Hero Turtles

Did you know that UK/Ireland preferred Heroes over Ninjas? Supposedly Ninjas were too thought-provokingly violent. Either way, the game loaded. If you want to play with the keyboard, keys Q and A are UP/DOWN and keys O and P are LEFT/RIGHT.

DSC00151

DSC00153 DSC00154 DSC00158

DSC00160 DSC00156 DSC00157

Final Notes

Grab your glue gun and secure everything. This will hold it in place and also insulate any floating components.

DSC00164

DSC00166 DSC00167 DSC00168

Then mount the headphone plugs and close the box... it'll look much neater :) I ended up mounting a socket for the recording plug also... although it's not currently connected to anything. Might try and play with that in the future!

DSC00170

..and don't forget to clean up..

Filed under: Arduino, Retro 10 Comments
2Aug/170

MSX – Using Sega Controllers

The MSX uses the same port as many older consoles, so one might be mistaken for thinking that any controller will work. Unfortunately, regardless of the fact that they are all DB-9 ports, the wiring is often different. Below I'll show how to build an adapter to hook up both a Megadrive and Master System controller to your MSX.

Sega Megadrive Button mapping

Standard Megadrive controllers have 3 action buttons. MSX only needs two, so we'll use B and C for buttons 1 and 2 respectively; the reason for this is a little complex. The Megadrive controllers have 4 buttons but only 3 wires to read the state. This means that one wire acts as the switch to read either A/Start as a pair or B/C. As that we can't switch between these without more work, we'll just use the second state and read B and C independently. There's further reading here for anyone who wants to know more.

DSC00024

Megadrive Pin Description Mapped to MSX pin
1 Up 1
2 Down 2
3 Left 3
4 Right 4
5 +5 V 5
6 TL (A/B) 6
7 TH (Select) 5
8 Ground
9 TR (Start/C) 7

Wiring up a Megadrive adapter

A quick note: If you have no requirement to use the Megadrive controller in a real megadrive again, follow the instructions here instead. Otherwise you'll need a male DB-9 plug, female DB-9 socket and some wire. The shorter you make the wires, the better. Too much play, without securing everything with glue or in a case, will cause instability and/or break your solder connections.

DSC00022

DSC00026 DSC00029 DSC00031

For the most part, all wires are straight through. The only exception is to wire Pin 9 of the male plug to pin 7 of the female plug. This routes button B on the megadrive controller to button 2 on the MSX.

DSC00747

I cheated and hot-glue-gunned them for stability. A better method would be to buy DB-9 plugs and sockets with housings. Or find two long and thin bolts to create a frame between the two.

Sega Master System Controller

The pinout of these controllers is slightly different (see here for a diagram); the buttons are actually backwards compared to B and C on the megadrive. Therefore we're going to build the same adapter above but route (from male to female) 9 to 6 and 6 to 7.

DSC00001

Sega Master System Pin Description Mapped to MSX pin
1 Up 1
2 Down 2
3 Left 3
4 Right 4
5 +5 V 5
6 Button 2 7
7
8 Ground 8
9 Button 1 6

The result

The blobs rotate the right way when playing Puyo Puyo... that's all that matters!

DSC00748

Next... How to use that RGB port... Composite is terrible.

Filed under: Retro No Comments
24Jul/171

Roland Sound Canvas SC-55

Back in the day, my MIDI setting of choice was either Adlib, OPL3 or Sound Blaster FM. I only ever had a Sound Blaster 16 card and so never experienced any of the Sound Blaster 32/64/Awe Cards or external MIDI devices. Over the years since, I've learnt about MT-32 and wanted to try and find a real device. Unfortunately, they're neither cheap nor easy to find! A friend had also told me about the Roland Sound Canvas range and it seemed that these may be easier to find as there were more models released.

Stumbling across one...

I happened to be in Japan for a friend's wedding and, whilst travelling the countryside, scoured any recycle shops that I ventured past. It finally happened that, in one of the last shops in Kumamoto, I found a Roland Sound Canvas SC-55. It was 950 yen and was in the "Junk Corner".

DSC00733

DSC00736 DSC00744 DSC00732

DSC00805 DSC00809 DSC00813

I packed it into my suitcase, but researched it for the rest of the trip. One tidbit that I came across indicated that the internal battery had leakage issues (I anxiously wanted to check this, but didn't have the tools or the time.) The Sound Canvas Wikipedia page also pointed out that: "units without GM logo technically not GM compatible." Turns out mine didn't have the logo! Must be one of the first off the production line? I wonder if I'd even be able to play general games or only Sound Canvas games?

I then started getting lost in further articles describing the differences between the revisions of the SC-55. Nerdly Pleasures had a great article on the nuances here: First Generation Roland Sound Canvas Devices, which then lead to the Vogons forum: Apparently not all GS-only sc-55s are the same, some are GM. One poster noted that if you have an SC-55, you wont be disappointed as, regardless of the nuances, you'll still get quality music and games suited for the device will sound amazing.

Moisture Damage?

I noticed, when I first picked it up off the shelf, that the rear plugs were slightly oxidised. The top shell also had rust along the front edge. Opening it up saw that there was no physical damage on the board. Powering it up saw that the front panel buttons only wanted to work every-so-often. The first thing I did was find replacement microswitches from Jaycar who had a suitable (and really clicky!) substitute. Note that the replacement is half-width! Jaycar also had the full-square-shape types, but these had 4 pins and didn't match the PCB holes.

DSC00746

DSC00744 DSC00750 DSC00753

You can see above that column 3, row 4 had damage. I removed it and replaced it with the new slimline switch. Worked perfectly.

DSC00755

DSC00799 DSC00800 DSC00803

I ended up purchasing 16 of the half-width switches to replace all on the front panel.

Battery Leakage

Yup, coin-cell batteries leak too. When I first opened the box I saw that the battery was jammed in and corroding. This battery provides a trickle of power to persist storage of the current device configuration (panning, levels, key offsets, etc...) which is great if you're composing... but really, you want it to reset each time when playing games, so I was very happy to remove it.

DSC00733 DSC00735 DSC00737

You'll get a notice when the device powers on, but it's easily ignored.

Power Supply

The unit wants a standard DC jack with 9v at 500mA. Note that the polarity is the typical Japanese reverse! Positive on the outside.

DSC00787 DSC00788 DSC00734

Jaycar to the rescue yet again: The power supply had enough amps and a reversible plug on the end. I didn't even have to re-wire it. I am concerned though.. these adapters make it REALLY easy to plug in the power in the wrong way around!

Resetting/Testing

Before even trying composition software or games, I wanted to ensure that the device actually worked. 900 yen (along with the "not tested" label) meant that I could be in for a sad surprise when it chose to produce no sound. There is a demo mode on the device that plays two stored songs, so I attempted to get into this, after resetting the device.

DSC00749

To reset and enter GS mode, hold the left Instrument button and then hit power. Hold the right to reset (and enter) MT-32 emulation mode. Hold both to reset totally and return to GS.

DSC00751

The two sample songs only work in GS mode, so if you're in MT-32 mode, it'll first ask if you want to reset back to GS. This slightly confused me at the start as I thought the buttons were more damaged than first seemed; the Instrument buttons were meant to reset settings, not the Part buttons.

Anyway, to play the demo songs, hold down both Part buttons then power on the unit. You can select the song via either Part arrow and then hit the All button to play.

Using a MIDI keyboard

This 'just worked'. I'd received a midi cable with this keyboard and it was plugged from the 'out' of the keyboard to the 'in' on the front of the SC-55. Everything just worked, including all the controls on the keyboard. The keys are also perfectly pressure-sensitive... so whacking them harder really tested out the speakers!

DSC00746

MIDI Out via AWE64 Value

Now the fun was to begin. I pulled out the old PII-500 with an AWE64 Value sound card. The card has a whole lot of extra software and soft-synths to help with MIDI playback. This means that there's extra configuration required to get the MIDI-Out to actually work. By default, midi is routed into the AWE64 driver's 'soft synth switch' which then redirects and modifies the midi signals as configured.

DSC00752

I wanted none of this and set the output straight to the port. With the cables connected, I heard absolutely nothing. I mucked around with further settings... but had zero success. This 'SC-55 Howto' at Vogons indicates that output 'should just work'... not for me!

MIDI Out via SB32 PNP

This time I booted up my old 486 DX 2/66. Screamer has a nice audio setup application and allows you to test your configuration very quickly. Unfortunately, I couldn't get any midi-out at all. Is it my cable?

DSC00754

MIDI Out via Edirol UM-1EX

This device came with the keyboard and I'd forgotten I had it. A friend had told me they used their external midi devices in DOSBOX on new hardware, so I thought I'd give it a go. After switching off Windows 10 driver signing, I was able to get this installed on my main laptop. I then set DOSBOX to use the 'UM-1' device and loaded up Transport Tycoon.

DSC00785

Success! The audio sounded terrific! Of course, DOSBOX is emulation, so multi-tasking made the music slow down and sound hilarious... actually, that might just have been because the laptop was in power-saving mode and didn't want to spend all cycles on DOS emulation.

Joystick port on ISA controller card?

Nope, don't bother... it won't work! That joystick port is hardly good for one joystick with two buttons. You'll need a real soundcard with a standard gameport as they have the correct pins wired up.

MIDI-Out Cables

Back to the old PCs, it was time to work out why the MIDI wasn't sending out. The Edirol device above has nice lights on it to show that data is flowing, so I thought I'd try and add the same to my midi cable. There's a great diagram here that shows where the LEDs should be placed. Turns out they're just on the ground lines for each MIDI in and out.

Following the diagrams also available on Vogons, I realised that the resistors on the MIDI-OUT lines were way too high. 1.2kOhm vs the 220ohm listed in all diagrams I'd found. I quickly replaced these.

DSC00763 DSC00765 DSC00768

And then...

DSC00769

Well shit... Screamer Sound Setup just started sounding perfectly on port 330! Who would've thought you'd have to replace resistors inside a plug housing to get vintage midi signals to flow?

DSC00770 DSC00775 DSC00777

The Settlers intro sounded perfect as well.

DSC00781

What a steal for 900yen!

Filed under: Retro 1 Comment
8Jun/173

Sony HIT BIT HB-F1XD

I've recently been playing the original A-Train on an MSX emulator and wanted to know more about the MSX world. I quickly fell in love with the Sony line of MSX products and vowed to track one down in Japan. I was successful on my most recent trip!

The hunt for retro gaming goods started in Recycle Shops in Kyushu, but there were no MSXs to be found. I actually stumbled across a Famicom Disk System for 5000yen, but stupidly passed on the offer! Once in Osaka, Den Den Town was going to be the best bet and it didn't disappoint. I'd known there was a Super Potato on the main road down the far end near Shinsekai, but upon arriving we found the sign still there but the building vacant.

Retro TV Game Revival

Fortunately, across the road, next to Burger King, was Retro TV Game Revival. Here I was to meet my first pile of MSX consoles.

There were even Sony HIT BITs! But they started at AUD$400. I noted that they had the consoles that I was looking for, and vowed to return as a last resort. The asking price was a little too high, regardless of the fully-working status.

Super Potato

If you haven't heard of this store, then you're missing out. Super Potato has stores all over Japan and is famous for selling second hand (and vintage) gaming products. Thanks to mobile international data sims, we tracked down the shop. It had moved to the following location...

Once inside, a Sony Hit Bit HB-F1XD was quickly found for the handsome sum of AUD$180. This was purchased on the spot, along with the classic 1942.

DSC08113

It had a sticker on it declaring that the floppy drive didn't work. Another point to note was that, on checkout, the clerk handed over a laminated A4 page that declared that this machine would not function on LCD TVs. I didn't feel like explaining that it would indeed work, but just ... not ... retro-esque. It is good of them to avoid disappointment though. They could easily get customers coming back who just expected 30-year-old tech to work fine.

From here, I didn't have anything to plug this in to whilst in Japan. No places I stayed at had TVs, let alone CRTs!

Welcome to Australia, MSX-2

I purchased extra luggage. I didn't want Jetstar raping me at the check-in counter ... I'd worked out the math that extra luggage (purchase online, prior to check-in!) was still cheaper than posting this bad boy, and the Famicom (just a regular Famicom, from another retro store), that were obesifying my suitcase.

In the end, all made it back to Oz safely and everything was quickly checked for in-transit damage. Safe!

DSC09338

DSC09339 DSC09340 DSC09343

DSC09348 DSC09347 DSC09353

DSC09350 DSC09351 DSC09354

Thanks to the creepy Japanese Massage Chair that I previously acquired, I had a nicely capable step-down transformer ready to go for this MSX. Of course, in the heat of the moment I accidently plugged the MSX straight in to 240v! It made a lovely humming noise; the transformer was trying to deal with cycles/current that it just wasn't meant to. I quickly corrected this mistake and all powered up perfectly well. It even worked on my crappy AUD$10 Samsung LCD TV!

I'll post again shortly on how to use this thing, the best way to hook it up to an LCD TV and flash cartridges.

Filed under: Retro 3 Comments
18May/170

DEC 4000 AXP – Initialisation and OS Installation

I was finally able to see init screens and boot diagnostics after getting my newly acquired DEC 4000 AXP to talk over serial. PuTTY could be configured into DEC ANSI and displayed everything perfectly.

VMS PALcode V5.56A, OSF PALcode V1.45A
+------------------------------------------------------------------------------+
¦                      13:26:22  January 9, 2061                               ¦
¦                                                                              ¦
¦                       Digital Equipment Corporation                          ¦
¦                                                                              ¦
¦                             DEC 4000 AXP (tm)                                ¦
¦                                                                              ¦
¦                   +------------------------------------+                     ¦
¦                   ¦ | Executing Power Up Diagnostics   ¦                     ¦
¦                   +------------------------------------+                     ¦
¦                                                                              ¦
¦                                                                              ¦
¦                                                                              ¦
¦                CPU   Memory     Storage    Net    Futurebus+                 ¦
¦                0 1   0 1 2 3   A B C D E   0 1   1 2 3 4 5 6                 ¦
¦              +-----------------------------------------------+               ¦
¦              ¦ P -   - - P P   ? ? ? ? ?   ? ?   ? ? ? ? ? ? ¦               ¦
¦              +-----------------------------------------------+               ¦
¦                                                                              ¦
+------------------------------------------------------------------------------¦
¦ *  Test in progress   P  Pass   F  Fail   -  Not Present   ?  Sizing         ¦
+------------------------------------------------------------------------------+

Diagnostic Name        ID             Device  Pass  Test  Hard/Soft   9-JAN-2061
io_test          0000003e       scsi_low_con     1     1     0    1     13:26:29
Expected value:fc  Received value: fffffffd
Failing addr:    0

*** End of Error ***

*** Soft Error - Error #11 - TOY Clock Valid bit not set

Diagnostic Name        ID             Device  Pass  Test  Hard/Soft   9-JAN-2061
io_test          0000003e                toy     1     2     0    2     13:26:29
Expected value:80  Received value: 0
Failing addr:    d

*** End of Error ***

*** Error (eza0), Mop loop message timed out from: 08-00-2b-3d-df-18

*** List index: 0 received count: 0 expected count 1

+------------------------------------------------------------------------------+
¦   Console V4.0-1                    VMS PALcode V5.56A, OSF PALcode V1.45A   ¦
¦                                                                              ¦
¦   CPU 0         P    B2001-BA DECchip (tm) 21064-3                           ¦
¦   CPU 1         -                                                            ¦
¦   Memory 0      -                                                            ¦
¦   Memory 1      -                                                            ¦
¦   Memory 2      P    B2002-DA 128 MB                                         ¦
¦   Memory 3      P    B2002-DA 128 MB                                         ¦
¦   Ethernet 0    P    08-00-2B-3D-DF-18                                       ¦
¦   Ethernet 1    P    08-00-2B-3D-DF-17                                       ¦
¦                                                                              ¦
¦                      ID 0   ID 1   ID 2   ID 3   ID 4   ID 5   ID 6   ID 7   ¦
¦   A     SCSI    P    RZ28   RZ28   RZ28   RZ28                 MATSHI Host   ¦
¦   B             P                                                            ¦
¦   C             P                                                            ¦
¦   D             P                                                            ¦
¦   E             F                                                            ¦
¦   Futurebus+    P                                                            ¦
¦                                                                              ¦
¦   System Status Fail        Type 'cat el' to see errors                      ¦
+------------------------------------------------------------------------------+
DEC 4000 AXP (tm) console V4.0-1, built on Apr 13 1998 at 16:21:03
>>>

Initialisation indicated 3 errors: SCSI device, TOY and MOR. The SCSI can probably be attributed to the fact that I removed the whole 'B' drive chassis. TOY is the Time Of Year clock and I'm going to assume that the battery is dead. MOR is pointing to Ethernet port 0.. Nothing is plugged in.

Time Of Year

To fix this error, we needed to remove the KFA40 I/O Module. This is located in the right-most slot on the back of the machine. Extricating the board turned out to be a challenge in itself. It looks like someone had already snapped the brackets that hold the face-plate from the main board. This face-plate includes the levers which 'jimmy' the board out of the rear sockets, and so they no longer successfully applied pressure where required. Instead they just further wrecked the face-plate!

To get the board out, I first tried a hand each on the network BNC sockets, but this was also a dangerous idea as they would only be soldered on. I ended up cutting a coat-hanger and slotting it in at the back of the board, between the two plugs where the board plugs into the back-plane. A slight amount of pressure saw the whole board pop out.

DSC00554 DSC00557 DSC00560

I had a quick glance over it and found nothing that looked like a cell battery. I then went back to the diagram of the board in the Technical Manual and freaked out.

kfa40-io

It's a bloody DS1287! This is the same as the Compaq Deskpro 386/20n. Total nightmare.

DSC00562

I tried to de-solder it, but I'm really not talented in that department. I therefore decided to perform open-chip-surgery on the unit whilst still on the board. If I failed, then I'd hack the thing off entirely and replace it... if I succeeded, then I'd have a coin-cell slot on top for anyone to replace!

DSC00563 DSC00569 DSC00570

Once this was in place... the machine started differently?

VMS PALcode V5.56A, OSF PALcode V1.45A

Lbus & Fbus have been reset and Lbus enabled
initializing timer data structures
lowering IPL
counted 15741191 cycles in 100 ticks
CPU 0 speed is 6.20 ns (161 MHz)
entering idle loop
Starting Memory Diagnostics
Leaving back-to-back transactions turned off
Testing CMIC on Memory Module 2
Turning off the stream buffers
Testing CMIC on Memory Module 3
Turning on the stream buffers
Testing 1st 2MB(s) on memory module 3
Testing all memory banks in parallel
Testing Memory bank 0
Testing Memory bank 1
Testing Memory bank 2
Testing Memory bank 3
Module   Size    Base Addr   Intlv Mode  Intlv Unit
------   -----   ---------   ----------  ----------
  0              Not Installed
  1              Not Installed
  2      128MB   00000000      1-Way         0
  3      128MB   08000000      1-Way         0
Configured memory size = 10000000
Memory Diagnostics completed
access NVRAM
test Script RAM
enable ncr4 ACK
test Storage Bus E
Initializing driver eza0.0.0.6.0.
Driver eza0.0.0.6.0 initialized.
Initializing driver ezb0.0.0.7.0.
enable ncr0 ACK
test Storage Bus A
Driver ezb0.0.0.7.0 initialized.
enable Fbus
Start of FBUS sizer
Fbus sizer completed
environment variable etherneta created
environment variable ethernetb created
enable ncr1 ACK
test Storage Bus B


*** Soft Error - Error #1 - Lower SCSI Continuity Card Missing (connector J7)


Diagnostic Name        ID             Device  Pass  Test  Hard/Soft  153- -2053
io_test          0000003d       scsi_low_con     1     1     0    1     25:153:4
Expected value:fc  Received value: fffffffd
Failing addr:    0

*** End of Error ***


environment variable aa_lp_cnt00000040 created
environment variable aa_value_bcc created
environment variable aa_2x_cache_size created
Warning: ncr1, loopback connector attached  OR
SCSI bus failure, could not acquire bus; Control Lines:ff Data lines:ff
Warning: ncr1 not tested
enable ncr2 ACK
test Storage Bus C
enable ncr3 ACK
test Storage Bus D
DEC 4000 AXP (tm) console V4.0-1, built on Apr 13 1998 at 16:21:03
>>>

From here I started digging for firmware updates as it seemed that I'd taken the system backwards? I randomly landed on Firmware Update Release Notes for v4.0, but calling show config seems to indicate that I already have that version.

>>>show config


     Console V4.0-1                    VMS PALcode V5.56A, OSF PALcode V1.45A

     CPU 0         P    B2001-BA DECchip (tm) 21064-3
     CPU 1         -
     Memory 0      -
     Memory 1      -
     Memory 2      P    B2002-DA 128 MB
     Memory 3      P    B2002-DA 128 MB
     Ethernet 0    P    08-00-2B-3D-DF-18
     Ethernet 1    P    08-00-2B-3D-DF-17

                        ID 0   ID 1   ID 2   ID 3   ID 4   ID 5   ID 6   ID 7
     A     SCSI    P    RZ28   RZ28   RZ28   RZ28                 MATSHI Host
     B             P
     C             P
     D             P
     E             F
     Futurebus+    P

     System Status Fail        Type 'cat el' to see errors

Reading the documentation... v4.0 of the firmware is only good to support up to 4.0D of Tru64 UNIX (well, DIGITAL UNIX.) That can be obtained from here, so let's try that.

...actually... let's get the hardware correct first.

SCSI Drive Bay B

This has always been in the init error logs. I previously removed the actual drive bay chassis to prevent the hard error... but the soft error remained. I initially tried to swap the working disk set into slot B, but it still threw the same error meaning that it was the socket or the back-plane... or the connection through to the IO board. This, of course meant that it was time to pull the thing to bits.

DSC00001 DSC00002 DSC00003

The modularity of the case made tearing it down easy enough to try and diagnose the problem. The machine was apart in no time! Unfortunately nothing obvious came up. This was all the nether-regions of the system that wouldn't have been touched for 25 years. I re-seated a few plugs, but that was about it. Meanwhile, putting it back together took a little longer. It seems that jiggling the cables did the trick though! Upon power up there was no more error B and the power light stayed on! I then reassembled the drives and slapped it all in.

>>>show config


     Console V4.0-1                    VMS PALcode V5.56A, OSF PALcode V1.45A

     CPU 0         P    B2001-BA DECchip (tm) 21064-3
     CPU 1         -
     Memory 0      P    B2002-DA 128 MB
     Memory 1      -
     Memory 2      -
     Memory 3      -
     Ethernet 0    P    08-00-2B-3D-DF-18
     Ethernet 1    P    08-00-2B-3D-DF-17

                        ID 0   ID 1   ID 2   ID 3   ID 4   ID 5   ID 6   ID 7
     A     SCSI    P    RZ28   RZ28   RZ28   RZ28                        Host
     B     SCSI    P    RZ28   RZ28   RZ28M  RZ28                        Host
     C             P
     D             P
     E     SCSI    P                                              MATSHI Host
     Futurebus+    P

     System Status Pass        Type b to boot dkb0.0.0.1.0

Wait, what's that last line? We now have a bootable partition?

>>>b
FMBPR and Fbus devices have been reset
(boot dkb0.0.0.1.0 -flags 0)
block 0 of dkb0.0.0.1.0 is a valid boot block
reading 16 blocks from dkb0.0.0.1.0
bootstrap code read in
base = 1f4000, image_start = 0, image_bytes = 2000
initializing HWRPB at 2000
initializing page table at 1e6000
initializing machine state
setting affinity to the primary CPU
jumping to bootstrap code
can't open osf_boot

halted CPU 0

halt code = 5
HALT instruction executed
PC = 20000030
>>>

Sure, it's got the boot block... but it's missing files. Back to trying to boot off CD.

Digital UNIX 4.0D

>>>b dka6
(boot dka600.6.0.0.0 -flags 0)
block 0 of dka600.6.0.0.0 is a valid boot block
reading 16 blocks from dka600.6.0.0.0
bootstrap code read in
base = 1f4000, image_start = 0, image_bytes = 2000
initializing HWRPB at 2000
initializing page table at 1e6000
initializing machine state
setting affinity to the primary CPU
jumping to bootstrap code

Digital UNIX boot - Mon Dec 29 18:50:44 EST 1997

Loading vmunix ...
Loading at fffffc0000230000
Current PAL Revision <0x2000000010538>
Switching to OSF PALcode Succeeded
New PAL Revision <0x200000002012d>

Sizes:
text = 4961776
data = 1324288
bss  = 2884976
Starting at 0xfffffc000042d420

Alpha boot: available memory from 0xf08000 to 0xfffe000
Digital UNIX V4.0D  (Rev
halted CPU 0

halt code = 1
operator initiated halt
PC = fffffc00004351a4
>>>

Tru64 UNIX 5.0

>>>b dka6
(boot dka600.6.0.0.0 -flags A)
block 0 of dka600.6.0.0.0 is a valid boot block
reading 16 blocks from dka600.6.0.0.0
bootstrap code read in
base = 1f4000, image_start = 0, image_bytes = 2000
initializing HWRPB at 2000
initializing page table at 1e6000
initializing machine state
setting affinity to the primary CPU
jumping to bootstrap code

UNIX boot - Tue Jul 20 21:02:13 EDT 1999

Loading vmunix ...
Loading at 0xffffffff00000000
Mapping Image Address Space: Complete

Sizes:
text = 6284160
data =  1728208
bss  =  1934480
Starting at 0xffffffff00242230

Alpha boot: available memory from 0x121a000 to 0xfffe000
Digital UNIX V5.0 (Rev. 910); Tue Jul 20 22:13:21 EDT 1999
physical memory = 256.00 megabytes.
available memory = 239.99 megabytes.
using 325 buffers containing 2.53 megabytes of memory
emx: dynamic addressing enabled
Firmware revision: 4.0
PALcode: UNIX version 1.45
DEC 4000 Mod
halted CPU 0

halt code = 1
operator initiated halt
PC = ffffffff0024cfa4

Tek Tips has a forum post here on trying to get Tru64 booted. They indicate that you might need to set some parameters first for Unix to boot.

set os_type unix
set auto_action halt
set bootdef_dev ""
set boot_osflags 0
set eia0_mode fastfd
init

Tru64 UNIX 5.1B

>>>b dka6
(boot dka600.6.0.0.0 -flags A)
block 0 of dka600.6.0.0.0 is a valid boot block
reading 15 blocks from dka600.6.0.0.0
bootstrap code read in
base = 1f4000, image_start = 0, image_bytes = 1e00
initializing HWRPB at 2000
initializing page table at 1e6000
initializing machine state
setting affinity to the primary CPU
jumping to bootstrap code

UNIX boot - Wednesday October 16, 2002

Loading vmunix ...
Loading at 0xffffffff00000000

Sizes:
text =  7922752
data =  2044560
bss  =  2433008
Starting at 0xffffffff00011d70

bcm: DEGXA driver V1.0.6 NUMA lanlog
failed configuring ev7_ocla subsystem
Alpha boot: available memory from 0x1670000 to 0xfffe000
Compaq Tru64 UNIX V5.1B (Rev. 2650); Wed Oct 16 17:45:54 EDT 2002
physical memory = 256.00 megabytes.
available memory = 233.55 megabytes.
using 307 buffers containing 2.39 megabytes of memory
panic (cpu 0): platform not supported by this kernel configuration

DUMP: Warning: no disk available for dump.

DUMP: first crash dump failed: attempting memory dump...
DUMP: compressing 19536KB into 215807KB memory...
DUMP:  Starting Address      E
halted CPU 0

halt code = 1
operator initiated halt
PC = ffffffff800e6be0
>>>

Right, the kernel on the CD is not built for my hardware!
Does this need NHD-7? Seems there's 'New Hardware Delivery' disks that provide additional hardware support... although this doesn't make sense, as 5.1B was released AFTER this hardware came into existence.

Wait... WinWorld has the NHD cds and firmware updates! I'll try these at some point.

OpenVMS 8.4

>>>b dka6
(boot dka600.6.0.0.0 -flags A)
block 0 of dka600.6.0.0.0 is a valid boot block
reading 1230 blocks from dka600.6.0.0.0
bootstrap code read in
base = 1f4000, image_start = 0, image_bytes = 99c00
initializing HWRPB at 2000
initializing page table at 1e6000
initializing machine state
setting affinity to the primary CPU
jumping to bootstrap code


    Op
halted CPU 0

halt code = 1
operator initiated halt
PC = ffffffff83188df4
>>>

Arrghhhhh... There's an underlying trend here! It seems that every OS, whilst trying to boot, is failing even trying to print out its own name! I bet that Op above is meant to be the start of 'OpenVMS' and, like all the other attempts above, it's throwing a CPU fault whilst initialising the CPU?
I wonder if the CPU is actually faulty? Or the Memory boards?

Ethernet and Boot Server

This forum post has information on updating firmware via the network. Seems that I need a *NIX server with mopd running. The firmware then just needs to be the MAC address of the machine in question with the '.SYS' extension. I used a VM that I still had available running A2SERVER. mopd was installed via apt-get and all was well.

Running this inside a VM on a windows machine has proved problematic before. When I was trying to network boot the 386, the installer from the floppy couldn't see the NFS server in A2SERVER on my other windows PC. I therefore built a real physical Linux box hard-wired into the network. I've chosen to do this again with my Let's Note CF-Y7 Toughbook that's been gathering dust for quite some time.

I installed Linux Mint 18.1 only to find out that 'mopd' wasn't in the package repository. Googling for it, I found that it was last included back at Trusty Tahr. Fortunately, we can work around this. Download the mopd package directly from here (or here if you're running i386) and then also get libelfg0, as this isn't in the newest repo either.

From here, run sudo dpkg -i libelfg0_0.8.13-5_amd64.deb and then sudo dpkg -i mopd_2.5.3-21_amd64.deb. This'll get mopd installed. Run man mopd to see where it expects its server directory to be; in this case /srv/tftp/mopd. Create this directory, grab the firmware file from here and copy it in.

Based on the forum post instructions above, we need the file to be mac_address.SYS. We can get this from the intialisation log: 08-00-2B-3D-DF-18. I therefore ran cp cfw_v40_updp3.sys 08002b3ddf18.SYS. Yes, use lowercase for the address and uppercase for the extension.

steven@letsnote-y7 /srv/tftp/mop $ wget https://modelrail.otenko.com/assets/dec4000axp/cfw_v40_updp3.sys
--2017-05-19 18:37:37--  https://modelrail.otenko.com/assets/dec4000axp/cfw_v40_updp3.sys
Resolving modelrail.otenko.com (modelrail.otenko.com)... 119.15.98.75
Connecting to modelrail.otenko.com (modelrail.otenko.com)|119.15.98.75|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1915904 (1.8M) [application/octet-stream]
Saving to: 'cfw_v40_updp3.sys’

cfw_v40_updp3.sys   100%[===================>]   1.83M  1.21MB/s    in 1.5s    

2017-05-19 18:37:39 (1.21 MB/s) - 'cfw_v40_updp3.sys’ saved [1915904/1915904]

steven@letsnote-y7 /srv/tftp/mop $ cp cfw_v40_updp3.sys 08002b3ddf18.SYS
steven@letsnote-y7 /srv/tftp/mop $ sudo mopd -a -d
mopd: not running as daemon, -d given.
MOP DL 802.3 8:0:2b:3d:df:18   > ab:0:0:1:0:0      len   71 code 08 RPR 
My address is 00:13:e8:2d:c0:b1
MOP DL 802.3 0:13:e8:2d:c0:b1  > 8:0:2b:3d:df:18   len    9 code 03 ASV 
MOP DL 802.3 8:0:2b:3d:df:18   > ab:0:0:1:0:0      len   71 code 08 RPR 
My address is 00:13:e8:2d:c0:b1
MOP DL 802.3 0:13:e8:2d:c0:b1  > 8:0:2b:3d:df:18   len    9 code 03 ASV 
MOP DL 802.3 8:0:2b:3d:df:18   > 0:13:e8:2d:c0:b1  len   71 code 08 RPR 
MOP DL 802.3 0:13:e8:2d:c0:b1  > 8:0:2b:3d:df:18   len 1492 code 02 MLD 
MOP DL 802.3 8:0:2b:3d:df:18   > 0:13:e8:2d:c0:b1  len   71 code 08 RPR 
MOP DL 802.3 0:13:e8:2d:c0:b1  > 8:0:2b:3d:df:18   len 1492 code 02 MLD 
MOP DL 802.3 8:0:2b:3d:df:18   > 0:13:e8:2d:c0:b1  len   46 code 0a RML 
MOP DL 802.3 0:13:e8:2d:c0:b1  > 8:0:2b:3d:df:18   len 1492 code 02 MLD 
MOP DL 802.3 8:0:2b:3d:df:18   > 0:13:e8:2d:c0:b1  len   46 code 0a RML 
MOP DL 802.3 8:0:2b:3d:df:18   > 0:13:e8:2d:c0:b1  len   46 code 0a RML 
MOP DL 802.3 0:13:e8:2d:c0:b1  > 8:0:2b:3d:df:18   len 1492 code 02 MLD
...

And that was the unit actually accepting the firmware and running the update utility!

>>>b eza0
(boot eza0.0.0.6.0 -flags 0)

Trying MOP boot.
.................................

Network load complete.
Host name: ipc
Host address: 00-13-e8-2d-c0-b1

bootstrap code read in
base = 1f4000, image_start = 0, image_bytes = 1d3a00
initializing HWRPB at 2000
initializing page table at 1e6000
initializing machine state
setting affinity to the primary CPU
jumping to bootstrap code


VMS PALcode V5.56A, OSF PALcode V1.45A

Lbus & Fbus have been reset and Lbus enabled
initializing timer data structures
lowering IPL
counted 15626232 cycles in 100 ticks
CPU 0 speed is 6.25 ns (160 MHz)
entering idle loop
Starting Memory Diagnostics
Leaving back-to-back transactions turned off
Testing CMIC on Memory Module 0
Turning on the stream buffers
Testing all memory banks in parallel
Testing Memory bank 0
Testing Memory bank 1
Testing Memory bank 2
Testing Memory bank 3
Memory size = 8000000
* Warning * Console image larger than Bcache
Memory Configuration skipped
Memory Diagnostics completed
access NVRAM
test Script RAM
enable ncr4 ACK
test Storage Bus E
Initializing driver eza0.0.0.6.0.
Driver eza0.0.0.6.0 initialized.
Initializing driver ezb0.0.0.7.0.
enable ncr0 ACK
test Storage Bus A
Driver ezb0.0.0.7.0 initialized.
enable Fbus
Start of FBUS sizer
Fbus sizer completed
enable ncr1 ACK
test Storage Bus B
enable ncr2 ACK
test Storage Bus C


                ***** Loadable Firmware Update Utility *****
------------------------------------------------------------------------------
 Function    Description
------------------------------------------------------------------------------

 Display     Displays the system's configuration table.
 Exit        Done exit LFU (reset).
 List        Lists the device, revision, firmware name and if found by LFU.
 Update      Replaces current firmware with loadable data image.
 Verify      Compares loadable and hardware images.
 ? or Help   Scrolls this function table.
------------------------------------------------------------------------------

 Type Help  for additional information


UPD> help update
 Update a particular device with LFU's firmware.
   The command format is: UPDATE  [-PATH ]
   For example:
           update *

   Will update all LFU supported devices found in this system

           update io

   Will update the device named IO
   Use the LIST command to see the supported LFU devices

   You can optionally update a device with different firmware than
   defaulted to by LFU, by using the -PATH switch.
   For example:
           update io -path mopdl:new_firm/eza0

   Will update the device named IO with firmware NEW_FIRM from the
   network.


UPD> update *

Confirm update on:
io
[Y/(N)]y
WARNING: updates may take several minutes to complete for each device.

                          DO NOT ABORT!

io              Updating to 4.0...  Verifying 4.0...  PASSED.

UPD> list

device            FW Rev           Filename               Found

io                 4.0             cfw_e43                  Y

UPD> display

                                 Rev                    Events logged
 Slot   Option  Part#           Hw Sw   Serial#         SDD     TDD
   1    IO      B2101-AA        J2 34   AY34507889      00      00
   2
   3    CPU0    B2001-BA        B2 34   AY33479304      00      01
   4    MEM0    B2002-DA        C1 0    GA33306138      00      00
   5
   6
   7

Futurebus+ Nodes
                           Rev
 Slot   Option  Part#    Hw   Fw   Serial#              Description
   1
   2
   3
   4
   5
   6

UPD>

Rebooting showed no changes and CDs still failed when trying to print out their OS names...

Operator Initiated Halt (Update: 19/01/2021)

Ahhh crap. I've just done a 'proper' google for the error message I was getting above: operator initiated halt. It turns out that, one of the first hits is a really cool forum post on community.hpe.com that describes the reason for that error! It seems my actual front-panel HALT button may have been faulty! This hindsight makes me sad... it would've been fun to get the unit up and running and serve a text file to my network... whilst draining the apartment block's power. Such is life.

Filed under: Retro No Comments
12May/170

DEC 4000 AXP

I promised myself not to spend further money on junk. I promised myself to keep away from the Vintage Computers column on eBay. I tried my hardest... I really did... until I saw a DEC 4000 AXP going for ~AUD$100. Probably too much to pay... I really didn't even know what it was... but then, whilst browsing through the photos, I saw that it had somewhere around 8 SCSI disks in it and new that I could part it out if the need arose.

Whilst investigating the machine, I read a tag line on a brochure: The DEC 4000 AXP system is a high-performance superserver for multi-user environments. 'Superserver'? Take. My. Money! After purchasing it, I looked at the photos again and realised how large the machine actually was... would it even fit in my car?

Here it was, waiting for me (under a very nice paperweight!) in the corner of an industrial yard.

DSC00554

Back to that question: Would it fit in my car? No way. Fortunately, nearby the pickup point was an Avis rental shop. I picked up a Triton for a cheap daily rate and managed to get the unit onto the back of it. It was heavy enough to nearly pop a vertebrae; therefore also heavy enough to stay where it was placed in the tray. Another disc was nearly popped getting it back off the tray in the car park under my building.

It stayed down there for 12 hours whilst I regretted my purchase and I decided to just chop it up and part it out down there. Fortunately the MR2 happily fit with it in the car park. After a few beers, I'd decided it was worth the gamble and drove it up to the apartment. I paused for a few seconds next to my car just to compare the size!

DSC00560

And then in the lift...

DSC00562

And it looked great in the corridor...

DSC00563

Power cables and requirements

This machine is rated at 8 Amps, 1920W. Due to this, they've manufactured it with a 15A power cable that requires an associated 15A wall socket. It's known as an IEC C19 and I was able to purchase the cable from Jaycar. I also purchased a standard Australian power plug.. with the idea to swap them over so I could use my normal power points.

DSC00574

WARNING: This machine is just within the limits of a standard 10A wall socket. Hence why, after asking a few professionals in the industry, I had decided to actually plug it into a home electrical socket. If you don't own your house, you don't pay the power bill or you don't have insurance... then don't plug something like this in!

First things first, I pulled the power supply unit out of the machine and opened it up. You really know you're playing with real industrial-level hardware when you see the scale and quality of the components. I quickly realised that replacing the power socket in the PSU was not going to happen... it was happily housed in a sealed and riveted box.

DSC00565

DSC00566 DSC00567 DSC00568

DSC00569 DSC00572 DSC00573

I was about to start hacking the new cable when I thought of something. Those shitty international power adapters with the one-size-fits-all socket on the female side would probably accept this plug... and well, I just happened to have one that would!

DSC00577 DSC00580 DSC00582

From here, life was easy... plug it in and switch it on. I was on tippie-toes when doing this... all internal self-preservation systems were on high-alert knowing that I was going to plug a machine that needed a lot of power into a wall socket that might not be able to cope. Then I realised that the wall socket was on a 10A breaker and that'd go first. Of course, that'd only go if the machine actually drew the current it suggested. Chances are that on startup and idle it consumed a lot less!

DSC00584

I had another beer and then flicked the wall switch. Not much yet... so I hit the main 'breaker' at the rear-left of the unit. AC light! The box to the right of the power supply then started doing it's initialisation. This resulted with a Fan Failure and Error Code 9. The Owner’s Guide told me that the number indicated the number of the fan which had failed. There's only 4 fans though, so what would 9 be? Is it binary and do I therefore have a multitude of dead fans? The Service Guide came in much handier!

Fan, LDC, and Temperature Faults
1 + Fan Failure LED on Fan 1 failed Fan 1
2 + Fan Failure LED on Fan 2 failed Fan 2
3 + Fan Failure LED on Fan 3 failed Fan 3
4 + Fan Failure LED on Fan 4 failed Fan 4
9 + Fan Failure LED On Cable guide is not secured or 2 fans failed
A + Disk Power Failure LED on LDC A failed LDC A
B + Disk Power Failure LED on LDC B failed LDC B
C + Disk Power Failure LED on LDC C failed LDC C
D + Disk Power Failure LED on LDC D failed LDC D
7 + PSC Failure LED on Temperature sensor bad—low reading PSC
8 + PSC Failure LED on Temperature sensor bad—high reading PSC
0 + Overtemperature shutdown LED on System temperature in red zone

DEC 4000 AXP Error Codes

Turns out that, yes, '9' either means multiple fan failure or a missing cable guide. What's a cable guide? Oh right, it's that metal plate lying on the floor which I had unscrewed as I was inspecting the machine. Somehow it has a sensor to know if that plate is installed or not and ... well ... it wasn't, so the error was legit.

DSC00586

The cable guide was screwed back on and the rear of the unit powered up green. What's next? The 'DC' side on the front. Hitting this switch saw the second-stage initialisation begin. Hard disks started blinking and you could even hear the disks searching. After a short while... there was nothing. Looking back at the rear of the machine showed the 'Disk Power Failure' light on now, with error code 'B'. Back to the front of the machine, this error indicates that there is something wrong with the disk power supply in the second drawer.

DSC00588

DSC00590DSC00591 DSC00592

I power-cycled the machine again and saw that, during the initialisation of the second drawer, the second-left LEDs did not light! Damn. There's a PCB on the inner-right of these drawers that converts the supplied power to your standard 12v/5v HDD power plug. It seems that drive 2's power supply was rubbish. Time to pull the thing to bits!

DSC00594 DSC00598 DSC00597

Just to quote Sesame Street: One of these things is not like the others. Usually I don't discriminate, but someone has actually put a foreign Seagate SCSI HDD in here and therefore the display/ID cable does not plug in! They've just jumpered the ID on the drive itself. Makes sense... but stops the front LEDs from working. Might have to make an adapter in the future... or find a proper DEC drive.

DSC00600

Either way, this meant that it really was the power board at fault. There's a little metal tab (see above, just above the '1' sticker) at the front of the drive bay chassis that, once pulled up, allows you to wrench out the entire mechanism. This gave me better access to the power board. I brought the whole drive chassis over to the workbench... but I had a hunch: Is this drive bay actually needed to get the machine to power up?

I returned to the machine and threw the power switch without drive-bay B installed. The machine initialised without error! I'll return to this drive bay later. At this point I could see it systematically checking the disks... probably for a boot partition?

Talking to it...

The console port on this machine uses a DEC Modified Modular Jack type plug and socket. This is very similar to standard phone sockets, but with all 6 pins used. The 'tab' is also aligned to the side to prevent incorrect cables from being plugged in. The serial protocol is similar to RS-324 and can be translated to RS-232 by bridging the TX and RX signal ground wires. There's a lot of great information on MMJ here.

DSC00602

DSC00601 DSC00607 DSC00609

I purchased a 6P6C 5m cable from Jaycar and cut down the tab to make the plug fit. From there, it was a simple follow-the-instructions above to get the other end of the cable wired in to a standard DB-9 serial port.

Following the diagram here (UPDATE: The diagram in that link is wrong, use the wiring diagram here for the null-modem cable) was easy enough and a cable was created. Don't look too closely at the soldering.. the wires in the phone cable weren't single-core and stripping them wasn't easy. The plastic insulation also melted as soon as it came anywhere near a heat source.

Once hooked up, I dragged my 486 DX2/66 over as it was the closest serial port I could source. Windows for Workgroups 3.11 was booted and Terminal was executed from the Accessories folder. After setting the expected settings (9600-8-n-1), the following was received...

DSC00615

At least something is being transmitted! Rubbish data usually means an incorrect baud rate, so I returned to the Service Guide. Turns out that the baud rate can be configured! There's either a hardware switch behind the panel, or a software configuration option. I assumed that the software setting wasn't in-play yet as there was no real software installed. Therefore I pulled another part off the machine to see what the configuration was.

Further com port setting adjustments resulted in more rubbish. I then stumbled across this site. It seems to indicate that the wiring is the other way around? I re-wired the port and had no luck on Windows 3.11 with Terminal. So I booted another machine with Putty and connected it to COM1. Holy shit...

VMS PALcode V5.56A, OSF PALcode V1.45A
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x                      11:45:34  January 9, 2061                               x
x                                                                              x
x                       Digital Equipment Corporation                          x
x                                                                              x
x                             DEC 4000 AXP (tm)                                x
x                                                                              x
x                   lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk                     x
x                   x   Powerup Diagnostics Finished     x                     x
x                   mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj                     x
x                                                                              x
x                                                                              x
x                                                                              x
x                CPU   Memory     Storage    Net    Futurebus+                 x
x                0 1   0 1 2 3   A B C D E   0 1   1 2 3 4 5 6                 x
x              lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk               x
x              x P -   - - P P   P P P P P   P P   - - - - - - x               x
x              mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj               x
x                                                                              x
tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
x *  Test in progress   P  Pass   F  Fail   -  Not Present   ?  Sizing         x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x   Console V4.0-1                    VMS PALcode V5.56A, OSF PALcode V1.45A   x
x                                                                              x
x   CPU 0         P    B2001-BA DECchip (tm) 21064-3                           x
x   CPU 1         -                                                            x
x   Memory 0      -                                                            x
x   Memory 1      -                                                            x
x   Memory 2      P    B2002-DA 128 MB                                         x
x   Memory 3      P    B2002-DA 128 MB                                         x
x   Ethernet 0    P    08-00-2B-3D-DF-18                                       x
x   Ethernet 1    P    08-00-2B-3D-DF-17                                       x
x                                                                              x
x                      ID 0   ID 1   ID 2   ID 3   ID 4   ID 5   ID 6   ID 7   x
x   A     SCSI    P    RZ28   RZ28   RZ28   RZ28                        Host   x
x   B             P                                                            x
x   C             P                                                            x
x   D             P                                                            x
x   E     SCSI    P    MATSHI                                           Host   x
x   Futurebus+    P                                                            x
x                                                                              x
x   System Status Pass        Type b to boot dkb0.0.0.1.0                      x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
DEC 4000 AXP (tm) console V4.0-1, built on Apr 13 1998 at 16:21:03
>>>b
(boot dkb0.0.0.1.0 -flags A)
failed to open dkb0.0.0.1.0

Probably the wrong character set chosen, but we're in!

Installing an optical drive

All pictures of this machine on the web show it with a tape and CD drive in the front-bottom-right slot. Mine came with that area gutted. Fortunately, the housing was still there. I just had to re-install using a SCSI drive I had lying around.

DSC00620

DSC00621 DSC00623 DSC00625

Yes. It's in backwards. I defaulted it to ID 0 and mounted it into the parts that had been lying around... by fluke I had some screws long enough to fit through the rubber suspension joints!

On a reboot, the machine showed the drive on BUS E. (Actually, I lie, I took this text after I'd moved the CD back to its external case, so it's actually on dke0.)

>>>show device
dka0.0.0.0.0               DKA0                           RZ28  D41C
dka100.1.0.0.0             DKA100                         RZ28  D41C
dka200.2.0.0.0             DKA200                         RZ28  D41C
dka300.3.0.0.0             DKA300                         RZ28  D41C
dke0.0.0.4.0               DKE0         MATSHITA CD-ROM CR-504  ST23
eza0.0.0.6.0               EZA0              08-00-2B-3D-DF-18
ezb0.0.0.7.0               EZB0              08-00-2B-3D-DF-17
p_b0.7.0.1.0                                          Bus ID 7
p_c0.7.0.2.0                                          Bus ID 7
p_d0.7.0.3.0                                          Bus ID 7
pka0.7.0.0.0               PKA0                  SCSI Bus ID 7
pke0.7.0.4.0               PKE0                  SCSI Bus ID 7

Nice! The drive is there!

Operating System

This model can run either OpenVMS [Here's a whole bunch of ported software for OpenVMS] or Tru64 UNIX. I burnt a Tru64 Unix CD and tried to boot it with boot pke4. The drive seemed to have trouble reading the disc whilst vertically mounted (the drive didn't actually have the physical tabs on the tray to support this) and so it was returned to its external case and plugged into the SCSI port on the left of disk bay A. It then became 'dke0'.

>>>boot dke0
(boot dke0.0.0.4.0 -flags A)
dke0.0.0.4.0 has no media present or is disabled via the RUN/STOP switch
dke0.0.0.4.0 has no media present or is disabled via the RUN/STOP switch
block 0 of dke0.0.0.4.0 is a valid boot block
reading 15 blocks from dke0.0.0.4.0
bootstrap code read in
base = 1f4000, image_start = 0, image_bytes = 1e00
initializing HWRPB at 2000
initializing page table at 1e6000
initializing machine state
setting affinity to the primary CPU
jumping to bootstrap code

UNIX boot - Wednesday October 16, 2002

Loading vmunix ...
Loading at 0xffffffff00000000

Sizes:
text =  7922752

It then sat there for a REALLY long time.... but there was CD activity... well... it blinked around... but didn't seem to get anywhere. I let it go for an hour (there goes the power bill) but nothing happened. Maybe it's handed off console output at this stage to the 'Auxillary Console Port'. Urgh... do I need to interface with the DB25 socket on the back?

Then again, the service manual says the port is used for external devices, not console terminals. I wonder if the CD image is just crap or the drive can't handle the CD-R? I might try buy some new and more reliable CDs today... or try OpenVMS just to see if something else will boot further?

Stay tuned...

Filed under: Retro No Comments
5May/170

Ancient Fujitsu M2654ST 2.1gb SCSI HDD

Found this at trash and treasure for AUD$20. It's huge! This is a serious server hard disk, built in February 1994. Configuring this thing requires some form of rocket-science degree as nothing is clearly labelled and there are connections for monitoring hardware as well? A little research found this document that has sparse information on this drive.

DSC00554

DSC00555 DSC00556 DSC00557

DSC00558

DSC00560 DSC00561 DSC00562

I installed this into my external SCSI enclosure and initially it just went click... click. I had the internal SCSI cable plugged in and the terminator was on the external SCSI housing's 'out' port. I'd given it up for trash (as opposed to treasure) and was about to print out the manual to check if the jumper settings would help.

DSC00563

Later on, I thought I'd try a separate power supply. It was an ATX power supply with an AT converter (see more information here) and the drive sat there clicking at a different rate to the previous attempt. This indicated that the ATX wasn't happy with zero load on the motherboard wires and a LOT of load on the drive wires.

DSC00565

I decided to put the drive back in the external SCSI enclosure, for prosperity and safe-keeping, but hadn't plugged in the SCSI data cable. Upon hitting the power switch the drive powered up!



Holy moly. Listen to that jet engine! Turns out that the drive doesn't like a data cable connected. Well, it loves it, but you need to provide it a signal to spin up once the cable is connected. Based on this, removing the terminator at the back of the SCSI enclosure saw the drive happily spin up with the 50-pin SCSI cable connected.

OK.. so... I plugged everything together properly and hooked it to my old Windows 98 SE machine. Well shit... it spun up and was detected fine. It actually holds the SCSI card BIOS screen for ransom whilst the drive spins up. Not a quick process. Can only imagine what server rooms used to sound like with these babies all firing up at once.

DSC00567

DSC00568

Once in windows.. everything reported a very empty drive... I'll grab some parition restoration utilities and give this a scan before I use it for it's full 2gb of storage...

GParted to the rescue

Here I was thinking that Windows would list any partitions... turns out that Windows doesn't understand all types of partition tables. See below for the results from GParted and then what happened when I plugged the drive into my my Power Mac 7220. It was even bootable!

DSC00556 DSC00558 DSC00559

The drive has partition checking software... the disk checked out. I then quickly formatted it. Don't dig through other people's memories!

Filed under: Retro No Comments
27Mar/172

486DX266: S3 86C801/805 VLB

A motherboard with VLB slots meant a video card that made the most of the hardware available. I had an alert running on eBay and this card came up one evening with a totally affordable buy-it-now price tag. There are many other VLB cards on eBay, but the sellers are valuing them at prices much higher than I'm wishing to pay.

DSC00204

DSC00205 DSC00207 DSC00209

The card was easy to install and POST'd fine. (Here's the BIOS file if anyone is interested.)

DSC00019

Windows 3.11 had no default drivers, so I scoured the web and found a driver named 80x241.zip. This zip was extracted into a temporary folder and then installed via the Windows Setup application under the Main program group. SF is Small Fonts, with LF therefore standing for Large Fonts.

DSC00025 DSC00026 DSC00040

Note the max resolution above is 1280x1024 @ 256 colours. Not bad at all for a card of this vintage? Unfortuantely, selecting anything above 800x600 caused the following.

DSC00020

Ok, great, hard-coded refresh rates? Fortunately, in the driver folder is REFRESH.EXE. Note that when you're in Win3.11 and can't see a thing, just hit Alt-F4, Left Arrow and then press Enter. This will exit Program Manager back to DOS.

DSC00022

Choose the appropriate refresh rates as per your monitor. There's no save button... just hit Exit and it'll apply any changes. If you need to change the resolution in windows, run SETUP.EXE from the Windows folder.

DSC00021

And now, testing the huge resolution...

DSC00029

Resolution is delicious... screen artefacts not so much. From here I could only assume that the 'block' down below was the area where the 1mb 'option' should go. The card was expecting that the user had added the 1mb before using the resolution. Ok... how does one upgrade ram for an old card? Steal it from another!

DSC00031 DSC00032 DSC00036

Just to re-emphasize: The memory chips are the wrong way around in the middle photo below!

DSC00037

These RAM chips are awful! They have a dot on either corner and that makes it really hard to work out the orientation. Even better, the socket on the Trident board has a triangle chipped of it, but that is the opposite to the 'key' triangle on the S3 board. Of course, I got it wrong the first time, the machine didn't boot and the RAM chips got very hot. As James has mentioned in the comments, the middle photo above shows the chips inserted the wrong way around. Don't do this! I switched it off quickly and resocketed them. And then...

DSC00024

Winner! Ridiculous for Win 3.11 ... but still cool.

But the refresh rate doesn't stick...

Every reboot, the refresh rates need to be re-programmed. REFRESH.EXE gives you the following options.

DSC00012

You'll just need to add REFRESH.EXE 1280 3 or such to your autoexec.bat.

A quick note on MDI applications

The Multiple Document Interface is all about having sub-windows in your application. Cakewalk Audio has an issue where it thinks it's maximised when the application starts. You can't actually drag the the window bigger and it seems stuck.

DSC00014 DSC00016 DSC00017

Fortunately, the work-around is to Cascade all windows (from the Window menu) and then maximise it once more... it'll then take the whole screen.

23Mar/170

486DX266: CMOS Battery and PC Speaker

After building this machine, I am finding that I am losing my BIOS settings each time I pull the plug at the wall. The original motherboard owner/restorer replaced the onboard battery with a coin cell socket, but it seems that the 3v cell I put in there isn't powerful enough to keep the charge!

DSC00010

PC Restorer has a great article on CMOS batteries and the best point to take form their site is that most BIOS' need 3.6-4.5v to keep their memory.

DSC00011

In the picture above, you'll see the 4-pin header for an external battery. Pin 2 is missing. On this motherboard, pin 1 is positive and pins 3 and 4 are ground.

Using a standard 4-pin header plug from Jaycar, I wired up a 4-cell AA battery pack, but only used 3 cells. This required soldering new wires to allow current to flow between only three of the batteries.

DSC00004 DSC00006 DSC00008

With this all soldered, a quick test with the multimeter saw ~4.89v on the pins... which was more than expected, but an acceptable value.

DSC00013

Installation was a breeze and testing proved that my BIOS settings finally held!

PC Speaker

The case I have installed this machine in didn't have a PC Speaker installed by default. Therefore I used the same 4-pin header to rig up an 8ohm speaker from Jaycar. There's no real need to worry about the polarity here as it's just mainly beeps and boops. Who cares which way the diaphragm shifts?

DSC00015 DSC00016 DSC00017

On first boot, the machine-gun noise of RAM counting up was music to my ears!!

16Mar/170

486DX266: Rebuilding my childhood PC

I've been itching to do this for a while. There've been some nice 486 motherboards coming up on eBay, but I haven't been in the position to get them until now. A Hippo VL+ board appeared and, although it had suffered battery damaged (and been repaired!), it was a bargain for the price. I've always wanted to tinker with the VESA Local Bus and now was my chance. I did have a VLB board back in the day, but hardly knew what it meant.

Base Components

This was to be a completely build-it-yourself project. Each item was individually selected from whatever came on offer via eBay. First up was the motherboard with 4mb of RAM and that all-important exactly-what-I-wanted 486 DX2/66 processor.

DSC00191

DSC00192 DSC00193 DSC00194

DSC00195 DSC00197DSC00198

You can see where the previous owner has repaired a leaking CMOS battery. The wiring has been well-done and is all hot-glue-gunned down. The coin cell slot is in its place, but I seem to still be getting CMOS battery low issues. It could be that the coin cell battery is only 3v when the CMOS needs 3.5v+.

Next up was the VLB controller card. These full-length half-height cards provide two IDE channels, two floppy drives (via one cable), 2 com ports, a game port and a printer port! The HDD activity LED is also attached to this card.

DSC00199

DSC00200 DSC00201 DSC00202

Finally, the all-important video card. I happened across a cheap S3 86C805i VLB card. It has expandable RAM of which I'll try and fill later on.

DSC00204

DSC00205 DSC00207 DSC00209

There are only three slots where these cards fit into. You'll also find that they are named as to their purpose! There are two 'master' slots and a 'slave'. For those playing at home, the 'master' slots allow cards that support bus mastering; where the card will receive direct information rather than data via the CPU, and have it's own processing power on-board. The slave slot is for cards that don't support bus mastering but want the additional bandwidth of the VLB.

DSC00210

A quick trial assembly then took place. Be really careful when doing this on a flat surface! The end plates have tabs that are meant to slot into the case when the board is mounted... when not, they will simply push into your desk/table and pressing further is strongly discouraged!

DSC00213

Housing

I picked up a AUD$1.00 ATX case from eBay. Yes. ATX. It'll never work, you say? I have previously already put a 386 in an ATX case, but that was whilst keeping its old AT power supply and having the power cord hanging out the side. Not very neat. This time around we're going to do things differently.

DSC00314

Meet the case, creepy photo, right? It's full ATX... soft buttons and all. It even has an ATX power supply.

DSC00316

How do we possibly use an ATX supply with an AT motherboard? With an adapter plug! This beauty was found on eBay for the handsome sum of AUD$5.00.

DSC00320

So, simple mounting of the board ensued. Turns out the back plane is riveted into the case; annoying as previous cases I've dealt with usually allow this panel to be removed for easier motherboard mounting. Either way, the motherboard was mounted in and the adapter was hooked to the power supply.

DSC00321

The other end was then slapped onto the board itself. Remember with AT plugs, keep the black wires together!

DSC00323

Great ... so ... now what? The front panel can be rudimentarily hooked up. Reset, Power LED, Turbo LED? and that's it.

DSC00319

The case was stood up, all cables checked and arranged neatly so as to not cause any shorting issues and then a monitor was connected. The power supply was then jump started. This is simple: simple join the 'dangling' green and black wires together.

It worked!

ATX case + power supply without an ATX motherboard

Here's the trick you've been waiting for. The power button on the front of the ATX is momentary. This means that when you press it, power is conducted for only the timespan until you let go. So, if we hooked this up directly to the green/black wires from the power supply, we'd need to hold/tape the button down until we were done with the computer... not very handy.

Because of this, we're going to use a relay to latch the required power supply wires. The basic idea is that we'll put the momentary button on the green and black wires from the power supply and then latch those down when power starts to flow. To do this, we'll use a drive power plug which will supply us with 12v/5v when we've pressed the power button. This power feed will then latch a relay that'll latch the power button. When we let go, the power will continue as the relay will emulate an extended press!

initial-atx-power-hook

So, apologies for the crude diagram, but that's the basic idea above. The relay is a 12v single-pole-double-throw and therefore has power, common, normally-connected and normally-open terminals. Power is used to actually throw the relay and is fed from the 12v drive power. Normally-opened isn't used as we only care about the actuation of the relay. The normally-closed side is therefore put in parallel with the power switch. When the switch is pressed, the relay fires and reinforces the power button.

The best part? It worked perfectly! The machine came on and I played A-Train. The problem? Hitting Reset did as expected... it reset the machine, but I had no way of turning it off without yanking power cables! I originally hoped that reset would trip the drive power and reset the relay; alas it turns out that the 12v stays constant. We therefore have to amend the circuit to allow powering down the machine from the reset button.

reset-atx-power-hook

Here, we've taken the reset switch off the motherboard and used it for an off switch. This means that the machine is power-for-on, reset-for-off. It makes sense... doing an actual reset will just mean hitting reset-and-then-power instead of just reset.

In the above diagram, we've used a second identical relay to interrupt the power supply of the first relay. To do this, we've fed one of the coil power feeds of the first relay through the normally-closed line of the second relay. This means that, when the second relay is not active, the current can flow through it to the first relay. Exactly as we want, as we don't want to do anything until the reset button is pressed.

When the reset button is pressed, it'll actuate the second relay and break the current to the first relay. This will, in turn, break the latch on the power switch and the ATX supply will shut off. Pressing the power switch again will re-latch the power and we'll be up and running again.

Actually building it

I used some crappy veroboard and a spare drive power plug that I had laying around. Hot glue then helped to insulate everything. Note that in my initial sketch, I was trying to be overly-tricky and had the 5v power fed through the other side of a DPDT really. This is redundant and really not needed!

DSC00006

DSC00009 DSC00011 DSC00013

The final product worked perfectly!