Power Mac 7220: BeOS 4.5 PPC
This was much easier than I expected. I had the original install media from purchasing this back in the late 1990s from The Software Shop in Phillip, Canberra. There's a boot floppy and installation CD. The floppy is not needed for the Macintosh.
Booting the installer
First step is to get the "bootloader" on your system. Once at your desktop, insert the BeOS CD and browse to Mac Tools. Drag the _bootloader to your System folder on your boot disk. MacOS will then store it in the correct folder for you.
With the CD still in the drive, reboot your machine. Thanks to the underscore at the start of the filename, the bootloader will boot as the first extension. You'll then get 1 whole second to select the BeOS icon. If you're too slow, then you'll be back at your usual desktop.
After selecting the BeOS button, your machine will either boot from a BeOS partition or the BeOS CD, if inserted.
Booting BeOS
If you managed to hit the 'right' button, then you should be presented with a beautifully-rendered 3D BeOS logo, in all its 90's glory.
After this, you'll get a standard EULA and then be presented with a very simple installer. Choose a disk (preferably a blank partition, so that you don't destroy valuable data) and then install. It'll take around 20 minutes.
NOTE: The PowerMac 7200 has an internal IDE HDD and CD. I couldn't get the installer to install from the internal CD. It'd boot from it, get to the installer and then sit on "Scanning Disks..." and then fail. I had to use my external SCSI CD drive to get BeOS installed!
Drive Setup is accessible from the Setup Partitions button and will let you mangle your disks as much as you need to.
And then you're set!
Pop the CD out and reboot... you'll be at the BeOS desktop as the boot loader remembers the last setting. If you want to get back to Macintosh, then you need to hit the Macintosh button on the boot loader within 2 seconds.
Anyway, nothing but natsukashi feelings once this loaded. I hadn't played with original BeOS for decades. Time to find some software that works!
Networking
BeOS kindly provided the driver for the network card that is installed in my Macintosh. It's a Communications Port II card with the DEC 21041 chipset.
The option is greyed-out in the shot above as I'd already installed it... either way, choose the driver that's appropriate for your card.
Have fun!
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.
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.
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.
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.
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.
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.
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.
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.
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.
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!
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!
Found:TURTLE appeared... but then it crashed?
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.
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.
Final Notes
Grab your glue gun and secure everything. This will hold it in place and also insulate any floating components.
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!
..and don't forget to clean up..
Apple Multiple Scan 15 Display – Focus
This monitor came as part of a bulk purchase. It worked fine for the first 20 minutes of usage, but gradually lost focus as it warmed up. To its credit, it has speakers and easy-to-use screen adjustment controls, so I thought I'd give it a little more life and fix it's ailments.
It's what's inside that counts...
First, that age-old bit of advice when working with CRT tubes.
OPENING CRT MONITORS PUTS YOU AT RISK OF ELECTRIC SHOCK. MAKE SURE YOU GROUND EVERY CAPACITOR VISIBLE WITH A SCREWDRIVER BEFORE GOING ANYWHERE NEAR THE CIRCUITBOARD.
This is especially important if the CRT has been powered on recently!
I'd read online that there were potentiometers inside every CRT monitor that could be tuned and so I set out to inspect this one. Opening it up wasn't a hard task; there's only four screws holding the shell on. I wasn't expecting to find wildlife inside, though...
After shorting all capacitors, I gave the unit a quick internal vacuum.
Adjustments
From there, it was a simple task to find the dials to tune.
Well look there! Focus! It really was this easy... just turn it until the picture becomes clear enough! Of course, this then meant that the monitor was out-of-focus when cold... so now has to warm up to become crystal-clear. I still prefer this over gradually becoming impossible to read.
Here's the before shot.
Here's the after shot.
Oh yeah.. I've been playing with SCSI on a 386.. fun, right?
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.
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.
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.
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.
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!
Next... How to use that RGB port... Composite is terrible.
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".
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.
You can see above that column 3, row 4 had damage. I removed it and replaced it with the new slimline switch. Worked perfectly.
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.
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.
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.
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.
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!
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.
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?
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.
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.
And then...
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?
The Settlers intro sounded perfect as well.
What a steal for 900yen!
Steamrail Victoria, Ballarat Triple-Header – June 2017
Steamrail Victoria is a non-profit organisation dedicated to the restoration and operation of vintage steam, diesel and electric locomotives and carriages. Running out of the Newport Workshops in Melbourne, they have quite an extensive fleet of vehicles and regularly run trips throughout Victoria.
They recently put three of their steam locomotives on a trip to Ballarat. The consist then ran to Geelong where it split and ran side-by-side for the first part of the return trip to Melbourne. Due to initial delays, I only saw it on the first leg after Bacchus Marsh, but it was well worth the wait!
Climbing out of Parwan
The grade from Bacchus Marsh to Bank Box Loop is steep and so a large deviation is in place, in the shape of a horse-shoe, to spread the incline over a longer distance. From the top of the grade, you can see trains coming round the bend from quite a distance away. This made it a great viewing spot for the steam train as it approached.
As you can see, it was a constant battle with cloud-cover, but then the heavens opened up.
The engines were perfectly ordered, smallest to largest, and both looked and sounded great up the incline! There was quite a turnout to see them.
Ingliston
At the top of the incline, there's a loop known as Bank Box. The consist was delayed here again whilst one of the locomotives was inspected. Due to the weather, I nearly gave up waiting... but then the unmistakable sound of steam locomotives (and a level crossing) indicated that they were en-route.
I must admit... black is really hard to photograph!
Other sightings on the day
Just before Bacchus Marsh, there's a great curve just off Woolpack Rd and I happened to be right in time for a down Ballarat V/Locity service.
This would actually be a great spot to get anything Melbourne-bound in the morning. The lighting and scenery is awesome. I then managed to catch the same train (and quite a few others, due to the late running of the steamer), up off McCormacks Road.
And then IEV100 came through! I saw mentions of it on Facebook heading through Sunshine... only to then hear a sighting in Melton. Fingers-crossed... it appeared!
And that was it for the day... a lot of waiting in a seriously cold breeze... but great people and great trains.
Aizuwakamatsu Roundhouse
I was just browsing around Aizu on google maps and came across the turntable in the north-west of the main yard. The roundhouse looks great from above [Google Maps Link], but the turntable itself wasn't clear...
What you're seeing above is a DMU being turned on the turntable as the satellite was snapping away. Interesting to know that they took quite a few shots! Here's the same thing from side-on.
And here's my 2009 Aizu album. Looking forward to creating a new one in 2 weeks!
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.
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!
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.
MINI VGA2HDMI Converter Issues
I bought this converter on eBay to get my Dreamcast plugged into my new TV which does not have VGA input. All worked really well during the first fortnight of usage.
4+ weeks into usage saw really bad performance from the device: screen distortion, black screens, incorrect resolutions and really crappy sound.
Wiggling plugs had minimal effect, so it was time to pop it open. There isn't much to these things as it's all SMD and on a single board. I couldn't see any (overly) bad soldering or problem spots, so I guessed it would be heat causing the issues.
I improvised a makeshift heatsink and the device started operating perfectly once more.
It actually occurred to me that, since I was powering the device off the TV's USB port, the device had been powered up each time the TV was on; not just when the Dreamcast was on. I assume these things just aren't built rugged enough to be used 100% of the time?
Anyway... I can only recommend to all that you pop open your devices and put heatsinks inside them for stable usage!
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.
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.
It's a bloody DS1287! This is the same as the Compaq Deskpro 386/20n. Total nightmare.
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!
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.
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 Helpfor 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.