Subscribe via RSS
1Jul/157

Power Mac 7200: OS 9.2.2

Mac OS 9.1 is officially the final OS supported on the Power Mac 7200. I've got a new PCI graphics card and PCI USB card on the way and so I'll need Mac OS 9.2.2 for full compatibility. Below details how to achieve this.

Mac OS 9 Lives

I had previously downloaded 9.2.2 from here. It's known as Mac OS 9 Lives and it comes as an ISO with Apple Software Restore and a disk image of a partition with 9.2.2 fully installed. To install the software you only need to run the restore and it'll turn a partition on your local machine into a bootable system image.

Picture 2 Picture 5 Picture 6

..of course, I installed this and rebooted and got the standard This startup disk will not work on this Macintosh. I assume from here you could hack the system folder and edit the gestalt ID matching code (as was done with the 68k) but I instead chose to use OS9 Helper.

To get my machine booting again, I had to find a boot disk that worked fine on my hardware to switch back to the 9.1 startup disk. My old Presto PPC boot disk wouldn't work on this PowerPC... so I had to guess how to boot from a CD. Turns out, with the 9.2.2 boot/firmware, that holding down C at boot will startup from the CD.

Official 9.2.2 ISOs

If you want the real ISO, then go there's more information on it at Macintosh Garden: Mac OS 9.2.2 Universal. You can also get it at winworldpc.

This wasn't going to work either, so I started researching and heard out about...

OS9 Helper

There's quite a few links that explain how the Power Mac 7200 owner should use OS9 Helper to hack OS 9.2.2 into submission. The basic idea is to download OS9 Helper and run it on your machine.

Picture 7 Picture 9 Picture 11

This application will not hack/fix an installed version of OS 9.2.2. Instead, it requires that a version of 9.1 or a patched version of 9.2.1 reside on a local hard disk. It will then update this to the version you require.

This stopped me from using the partition I'd just created with Mac OS 9 Lives and therefore made me use my previous 9.1 startup disk.

The app requires that the relevant Apple OS Update for the version you wish to install be downloaded locally. I didn't try the download links available... instead I searched the net. Finding this was much easier than expected; it turns out that my own ISP still has a cache of Macintosh software! iinet's public FTP located here has a whole swathe of archaic Apple software to download!

Once you've got the required updater, re-run OS9 Helper. I quickly found out that you can't just jump to 9.2.2, you'll need to follow the upgrade steps and install 9.2.1 first. Installing 9.2.1 via OS9 Helper is a breeze. Once done, restart your Mac. It should boot back up to your desktop without issue.

Picture 12 Picture 13 Picture 14
Picture 15 Picture 16 Picture 17

Once booted, set up 9.2.1. You're now ready to apply the 9.2.2 update. Do this via OS9 Helper once again.

Picture 18 Picture 19 Picture 20

And now you're done!

Picture 21

25Jun/157

Power Mac 7200: Power Supply

Whilst searching for a CRT on eBay for the Quadra (that's another story), I came across this item. It was listed as being PC Compatible and, after my last efforts of trying to get a DOS Card to work, I decided to tackle this one.

The Power Mac 7200 was marketed as a PC Compatible because it came with a PCI card containing all the required hardware to run a PC. This card includes a 100 MHz Pentium processor that can have a maximum of 64 MB of RAM dedicated to the DOS/Windows operating system.

Powering it on

The case contents rattled a little, so I opened up (there are two push-buttons on the front under the lip) and inspected it. A few plastic lugs had snapped loose, but there was nothing conductive. With the case open I jammed in a power cable and hit the power button.

Nothing. Not even a zap, whirrr or beep. Just silence. I hate that...

Basic principles told me to disconnect all unnecessary components and try again. No love... Pulled the CMOS Battery, held the CUDA button (but not for 15s), left power off 10minutes... no go.

Testing the power supply (Delta DPS-150GB A) (Apple 614-0039)

From here I thought I'd tackle the power supply first. I didn't want to believe it was the logic board. I disconnected the cables and removed it from the case.

DSC07239 DSC07242 DSC07244

There are 4 screws holding the lid of the power supply on. After removing these, you'll then have to slide the lid along the main trunk of power cables. Pushing the cables into the supply will make this easier. The fan has a 2-wire cable which easily pops off the main power supply circuit board.

Once open, I first inspected all components for damage... all looked good. Testing the fuse showed that it worked fine... conducting power. I then grabbed the multimeter and tested all of the pins. I found 5v on pin 4, but no voltage anywhere else.

DSC07245 DSC07246 DSC07248

Here's the pinout for the main 22-pin connector, looking at the plug as if it was facing away from you. Pin 1 is top-left, pin 22 bottom-right.

+5v +5v +5v +5v GND GND GND GND GND N/A -12v
TRKL +5v +5v +5v +5v GND GND GND GND /PFW +12v

And then the secondary 10-pin connector. Pin 1 is top-left, pin 10 bottom-right.

GND GND GND GND -S
+12v +12v +12v +12v +S

These power supplies are triggered by the power switch on the motherboard. Plugging them into the wall will get them in to 'stand-by' mode and power should be visible on certain pins. To test this, plug the power supply into the wall and check the following:

  • (22-pin connector) +5v is visible on pin 12 (Yellow)

One important point is that, in my case, the 5v above showed up on the correct pin. The power supply still would not power up. It turns out that the above test is not fool-proof; it'll simply tell you if the initial 'trickle' power is available.

To get this thing to power on whilst disconnected from the motherboard, follow these steps (Thanks goes to LT.Maddog420 on the Tech Guy forums):

  1. On the 10-pin secondary cable, connect pin 5 (White) to any of pins 1-4 (Black)
  2. Still on the 10-pin secondary cable, connect pin 10 (Brown) to any of pins 6-9 (Orange)
  3. Confirm the power supply is plugged in to the wall and that the pins connected above are not exposed or touching metallic surfaces.
  4. Now, on the main 22-pin power plug, connect pin 12 (Yellow) to pin 21 (Purple)

DSC07254

DSC07261

The above should jump-start the power supply. The fan should at least fire up. If you get nothing then you've got a dead power supply. This would be the first item to replace in a Macintosh that doesn't power on. Of course, when the supply died it could've also fried other parts... but replace the power supply first as it's cheaper. I tried to jump-start mine and it didn't work at all. I decided to pull it completely apart for thorough inspection.

Cracked Circuit Board

Once out of the casing, the issue became quite obvious. The base circuit board for the power supply had a crack in it. The crack formed a semi-circle around the area where the circuit board is held by notches in the metal case. It seems that, somehow, the board has received lateral pressure and cracked! It doesn't quite make sense as the board is thoroughly enclosed. I can only imagine that weather/heat has caused this. I have a hunch that this machine had been out in the elements for a while.

There also seemed to be new flux and solder at the base of a 3-pin component. I really wouldn't be surprised if this had been repaired in its past life; this machine is nearly 20 years old.

DSC07263

DSC07265

Repairing the crack was pretty straight-forward. I was really lucky that this was a single-sided circuit board with large tracks. If there had been tracks on the top side, then this would've been a lot more difficult.

I bared the copper on the tracks around the solder joints and messily bridged all of the component pins. I made sure that I followed the tracks and didn't bridge any circuits. My butane-powered soldering iron decided to let its tip melt in the process and so the first fix shown below looks really crappy. I bought a proper soldering station (I needed it to work on the DOS Card for the Quadra 950) and re-did the soldering. Hence the two pictures of the finished job below.

DSC07268 DSC07271 DSC07277

DSC07280

And then... the friggen thing spun up! Using the jump-start instructions above, I bridged the two wires and then joined yellow to purple. It felt like I was hot-wiring a car and I, honestly, had very little faith in my hack working. I had a celebratory beer as the fan kicked off and I then crossed my fingers that the logic board wasn't also damaged.

DSC07282 DSC07283 DSC07272

A final note: be careful when pulling/pushing the bunch of wires in and out of the power supply case. You can easily peel the insulation off the individual wires and the last thing you would want is a short!

24Jun/153

Quadra 950: DOS Cards

I remember back in high school that we had DOS Cards in the Macintoshes we used for Multimedia class. We were either programming Hypercard Stacks or switching to the DOS environment and fragging eachother in Doom II. We weren't meant to be doing the latter... but it was hard to resist.

I had always been impressed that the DOS side worked just as well as the Mac side and switching was seamless. It all makes sense now why the DOS side kept running when switching and why it all ran so well; the DOS card created a whole PC running independently of the host Macintosh.

To re-live all this, I wanted to find a DOS Card for the Quadra 950. Researching the cards lead me to believe that the majority would fit into the the PDS Slot, but I wanted to keep my PPC upgrade in there. I therefore began the hunt to find a Nubus DOS Card.

Some light reading...

First attempt at acquiring one

I happened across an Orange Micro PC Coprocessor Card (dated prior to the OrangePC 290) with a Cyrix 5x86 on eBay. Bidding started at USD50. I bid up to USD70. I was in the lead until the last second when the price nearly doubled to USD126. Sounds like I'm an eBay newbie but, on the contrary, I just wasn't expecting the price to go that high. I actually wonder what the final bidder put down as a max bid... only the bidder ever knows with eBay, the seller only ever gets to see the final auction price and any bids below that.

This kind of crappy bidding brings up a good point: I like how Yahoo Auctions Japan actually extends the auction in the last five minutes, for five minutes, if someone places a bid. That way, just like in a real auction, the final bidder with the most money actually wins; rather than the one with the lowest latency.

The conclusion? These things are in demand!... This model happened to be a Cyrix 5x86 SL50 and was a little below-spec anyway, so I was happy to sit tight for something gutsier.

Orange Micro: OrangePC 290

eBay alerts are all well-and-good when the sellers list their items correctly. Unfortunately, this item was listed as shipping to the US only. I usually don't bother begging, as you usually get a flat-out "no" in response, but I asked the seller if they'd ship to Australia. As luck would have it, they did... but it was through the global shipping program. Not to be discouraged, I took the gamble and bid anyway... I won!

It seems that this card was worth over USD$2500 back in the day. See The Original Macintosh DOS Compatibility Card (Houdini I) for a price list... way down the document. I haven't checked the rest of the doc for valid information on my scenario (I don't have a Houdini card), but I'll read it at a later date when I have Win95B+Plus! running on my Quadra.

DSC07167 DSC07168 DSC07169
DSC07171 DSC07175 DSC07177
DSC07179 DSC07186 DSC07188

This card is came equipped with a genuine Intel 486 DX4-100 CPU and 32mb of RAM. I scoured the internet and found the drivers on the Wayback Machine. Product information is here and Downloads and drivers for the OrangePC 290 are here. Installation seemed overly-easy. Running the application gave a very simple configuration interface. Thanks to all my partitions I could easily allocate the space on one to a virtual HDD file. It seems that you need to use real floppy disks instead of images... Use Disk Copy to create those via the "Make Floppy Disk..." menu item.

The first warning, as below, was that my Video mode was unsupported. As you can see, it was configured for internal video, but the desktop mode didn't seem to gel with the OrangePC card. I tried quite a few resolutions (not really trusting my MAC to VGA video converter) but couldn't get it to agree with any mode. I was beginning to wonder if this was actually a hardware issue with the card itself.

orangepc-loading orangepc-configuration orangepc-error

I then hit Cold Boot on the setup panel and ... nothing ... 10 seconds later an error: The OrangePC card is not responding to the Macintosh and the error code 32. I couldn't find anything on that error number, but googling the text gave the standard advice of (taken from Orange Micro's FAQ page):

Q: When I launch OrangePC, I get an Error message saying ``The OrangePC is not Responding."
Remove the OrangePC from the Macintosh. With a pencil eraser, clean the PCI contacts. Do the same for the Memory (DIMM or SIMM) modules. Reseat the memory modules on the OrangePC, and insert the OrangePC into the Macintosh. If possible, place the OrangePC card in the slot closest to the Macintosh processor.

I decided to go down the cleaning route and removed the RAM SIMM. Everything then started to become very clear... the teeth in the socket were loose. I don't even know if that's the right term, but either way the three left-most contacts were going to be making very dodgy connections... no good for low-level digital logic. I jumped straight on eBay and found a local 72-pin SIMM socket and ordered it... it's 90-degrees instead of the 22.5 angle, but it'll be a good test.

DSC07191

In the meantime, I removed the SIMM, put the card back in the Macintosh and tried again... this time OrangePC told me that the Memory configuration was incorrect. Slightly interesting... it can tell that the chip isn't there (there must be a latch driven when the chip is in, must be on other pins.) I unseated the CPU and checked for further damage, but it looked ok... I then inspected the rest of the board. There are dints and scratches all over it, but none look track-threatening. I reseated the SIMM as best as possible with its loose teeth and tried again.

DSC07194

DSC07196

Finally, prior to any actual surgery, I grabbed a hair-drier and gave it a once-over. The age-old trick of reheating dry solder joints is a good one. I've never tried it, but I could see dry joints all over the place. A hot hair-drier will actually slightly melt the joints and, as long as you don't angle the board, hopefully re-join any damaged connections. It's a crap-shoot, but it was worth a try. Unfortunately it didn't improve the situation.

Googling further, I came across Andrew's OrangePC 290 page. This guy is a legend; That is all. The site might as well be the technical manual for the card. So lucky to find it. It documents the jumper settings... I assume these would come set out of the factory, but they are there to be configured. It turns out that he has all the information I need for the CPU I have installed. I reviewed the jumpers, and found that they were all wrong. They didn't match the CPU installed at all. I reconfigured the jumpers as per Andrew's page... but the board still would not function.

DSC07205

DSC07208

Re-inserting it and starting OrangePC threw an error Type 1 at me... hadn't seen that before. Oh, the joys of playing with vintage hardware! Type 1 errors are address errors... I assume it's having issues finding the hardware. A reboot didn't help. I powered the machine down and was about to put the card in another slot when I realised I'd bent a pin on the Nubus connector. No wonder the software couldn't find the hardware.

orangepc-bent-pin

DSC07210

Don't do anything with vintage hardware in a rush... Straightening the bent nubus connector pin proved relatively easy. I inserted it again, gently, and power up the machine. No love... errors... I think we'll see if the RAM socket repair will work.

One note, I attempted to set the video mode to external via jumpers 11 and 12. Andrew's site indicates that there are two configurations, but I tried all. The software actually registered that external mode was selected... it even stopped me from opening the internal view of the dos environment. That only confused me further... the Macintosh could talk to the card fine... it just seems that when it throws the final boot command that the card does not respond... maybe it is the RAM/CPU combo. I really don't know what the history of this card is... for all I know it's been out in someone's flowerpot catching rays for the last 20 years.

Further attempts to get this working resulted in very hot CPUs and other ICs on the board, random bus errors on boot of MacOS and system crashes left, right and center. Not much fun... this card is about to get written off as a dud. I tried reverting to 8.1, switching off the PPC card, switching back to the stock crystal. Nothing. It just wouldn't boot.

I had a lightbulb moment: I could re-wire the first loose tooth on the ram socket prior to receiving a whole new socket. I found some winding wire from my toolbox and installed it. Nothing... it still failed with the same errors... made me believe that the card was hopeless.

DSC07213 DSC07216 DSC07219

...this effort proved fruitless. No change in error messages.

In the never-ending quest to fix this thing, I also replaced the CPU with a valid substitute. I bought an AMD DX4-100 from a seller on eBay and gave it a go... no love.

DSC07274 DSC07275 DSC07276

The RAM socket arrived... I replaced the socket, but that didn't work either.

DSC07316

DSC07317 DSC07330 DSC07321

DSC07324

Could it be the RAM SIMM? I've another arriving sometime in the next week... will give it a go.
Otherwise... I'm beginning to think that this is a dead-loss. Time to sit back and wait for another one to appear on eBay.

23Jun/150

My Pebble Time has arrived

I've always thought a smartwatch would be fun, but I've never really been keen on any of the models available. This stood true until I found out about the Pebble. The previous models were butt-ugly, but the kickstarter project for the Pebble Time took my fancy.

time-banner

I backed the project and received my Pebble Time last Thursday. The contents of the package were very simple: A manual/quickstart, a charging cable and the watch itself. The watch came pre-charged and I was ready to plug it in.

open-box

Initiating Connection

first-bootI enabled bluetooth on my phone and loaded up the Pebble App. It found the watch and then tried to update it's firmware. This managed to fail 3 times in a row... I held down a number of buttons on the watch but could not get it to reboot as per their recommendation. On the fourth attempt, the firmware updated.

I could now view the installed watchfaces and apps on my watch. Watchfaces are apps, but they get maximum screentime as they're the default app shown, displaying the time. Extra Apps can then be installed to do any number of tasks. The watch is effectively always connected to the world, as long as your phone is... and as long as you have battery... everywhere.

First Impressions

The battery life is intense. It lasts around 5 days without charging. It's warned me today that it's at 20%, but I thought I'd keep going to see how long it lasts. Last charge was Thursday evening. Better to deep-cycle the batteries, I suppose.

Off the shelf there is a remote to control music, an app to configure alarms (not tied in to any Android app), watchface selection and settings. The Music remote works great, although it tied in to 'Apollo' instead of Google Music... I have no music in Apollo.. will need to sort that out.

There's a whole plethora of watchfaces to install. Anything you can think of. I tried WeatherLand and IsoTime, two great designs. The former takes into account your location and the local weather and renders the background mountain scene accordingly! There's also the shadow clock, which is installed by default.

IMG 20150623 135216 IMG 20150623 135304 IMG 20150623 135457

I haven't installed any third-party Apps on the watch yet... I'll do that and report back here... but I have gone ahead and created my own custom Watchface!

Cloudpebble and Developing

Development for the watch couldn't be easier. Browse to Cloudpebble, create an account and you're already set to go. You can program in C++ or Javascript via their online IDE, which works extremely well. It can even allow you to emulate a watch via the web or directly upload your project to your own watch via your phone! The upload works via your phone's internet connection and then bluetooth... just enable Developer Mode in settings and you're off.

You can choose to develop an App or a Watchface. These are really the same thing, but a watchface will be categorised correctly and perform the correct actions on button-press events.

Mimicking My Old Arnette Watch

old-arnetteHere it is... it was a clunker and it contributed to a broken wrist. (Don't wear watches whilst playing sport!) This is the last remaining photo I have of this model and it is near-on impossible to find any reference to it on the internets.

As you can see, my watch bit the dust after a decade of punishment. I had loved the 'text mode' so much that I decided to emulate it on the Pebble Time. I used FontStruct to create a 30px high font that resembled the Arnette font. This then worked perfectly as a resource in cloudpebble and rendered pixel-for-pixel on the watch itself.

I then just had to write the logic to write out the text of the time. This was a little tricky, but nothing that couldn't be solved by a few arbitrary values and if clauses. The result speaks for itself! There was the odd bug or two to start with... but I've been testing the watchface out in the field and it's working great. I think I might add a battery meter on there and a few other doo-dads if possible. I'll then release it to the greater community.

Note that the old Arnette actually had a 'magic-a-ball' if you held down the top-right button. I hadn't known about this feature... 4 years in to owning the watch I accidently held down the button whilst trying to set the time and the friggen a-ball came up. It read back to me "YEAH SURE". Nice fortune! After that it became a great decision-maker whilst intoxicated. I might also program this into the watchface... will need to work out if I can commandeer the buttons whilst in 'watchface-mode'.

IMG 20150623 123045 IMG 20150623 123204 IMG 20150623 130328
IMG 20150623 130509 IMG 20150623 134455 IMG 20150623 141354

In the last shot you can see that I realised I'd had the colours the wrong way around... flipping them gave me goose-bumps... although the screen is 4x the DPI of the original watch, the result is so similar it's not funny. I love it!

Got any other ideas/development requests?

Feel free to leave a comment here and request something custom for this watch? Am happy to work with anyone who wants to design/develop something for this watch. It's a great platform and the only limit would be one's imagination!

17Jun/150

Osaka – May 2013

More from the photo album I'd neglected... This time it's Osaka and it's 3 years since I'd last visited.

Shinosaka station

Staying at the same apartment as usual (Thanks Masa-san!) I had the same great view of the trunk from Shinosaka Station to Osaka Station north of the Yodogawa.

DSC00462 DSC00467 DSC00468

With my freight timetable in hand, it was easy to be there at the right time to see the transfers through to Umeda Freight Yard or Ajikawaguchi.

Later that night I ventured to Shinosaka Station itself and checked out the expresses on platforms 11 and 12.

DSC00658 DSC00662 DSC00665
DSC00663 DSC00667 DSC00670 DSC00668

Hankai Tram Network - Ebisucho

The Hankai Tramway runs from the southern end of Den Den Town into the southern suburbs of Osaka. It has a cute selection of very well looked-after aging rolling stock.

DSC00478 DSC00481 DSC00485 DSC00518 DSC00514

The two photos at the end are from the steps on the northern side of Spa World as you head into Shinsekai. It's a display of one of the old Hankai Trams and has mentionings on the history. I couldn't read it ....

Noda Station - Tetsudou Library

I waited here one night for the Super Rail Cargo M250. It didn't come... The Railway Library is still there though! Very impressive... something that wouldn't commercially survive in any other country, I'd imagine... the photos below are the most recent from May 2013 and then photo I took in 2010. Not much of a difference, just different paper posters in the left windows.

A Haruka also bolted past on its way to Kyoto...

DSC00687 DSC00691 Railway Library... 180yen for 30minutes access.

16Jun/150

Taking the long way from Osaka to Kansai Airport

Digging through my backed up iPhoto album, I'd realised that I'd completely failed to upload and blog about my 2013 trip to Japan. I'll be collating (and trying to remember) the photos and trips and hopefully write about them in due course.

This post is about a trip I took from Tennoji to Kansai Airport. Usually you'd just jump on the Nankai Rapi:t or JR West Haruka, but I had time to burn and new places to visit.

Why not take the express?

Scenery from a train window in Japan is, more often than not, impressive. It's not as educational as a TV, but the quality is realistic and the views picturesque. The audio quality is also fantastic and there's often a connection to the soul when one of the clicks or clacks actually physically interacts with you.

Realising this, I had decided to extend what would be a very short and fast trip into a long and thoroughly enjoyable one through the south Osaka countryside.

Kansai Main Line

From Tennoji, I watched the expresses depart southbound towards the airport and realised that 3 or 4 of them would reach my destination before me. I was in for a much longer trip, starting off heading east, instead of south, towards Oji.

This is the Kansai Main Line (the translation could also be "Kansai Original Line") which cuts across the Kii Peninsula from Tennoji through to Tsu. I travelled on the west side of it from Tennoji through to Oji, which uses an assortment of EMUs. Further to the east you switch to a DMU to get over the mountain range to Tsu.

Note that Google Maps correctly shows the name from Kamo to Namba as the Kansai Main Line. JR West has given the stretch from Namba to Kamo the nickname "Yamatoji Line" and runs the "Yamatoji Rapid" on it.

Wakayama Line

This line runs from Oji to Wakayama. From Gojo Station, the track parallels the Kino River (Kinokawa River? Kino River River?) giving the passenger some fantastic views. I was there in early Summer and there were carp kites hanging from cables strung across the breadth of the river. For the life of me I can't believe that I didn't take any photos.

DSC00710

Oji Station DSC00712 DSC00713

Hanwa Line

This is the stretch of track from Tennoji to Wakayama. Multiple express trains run along here... The Haruka to the airport and the Kuroshio/Ocean Arrow to Shingu. I checked out Wakayama station, a junction for the Kisei Line and the Wakayama Railway Kishigawa Line.

DSC00717 DSC00719 DSC00724

Musota Station

This is the first station north of Wakayama on the Hanwa Line. The expresses don't stop... and there's a sweeping curve and bridge to the south, providing a great spot to get them coming through at full-tilt.

DSC00753 DSC00729 DSC00739
DSC00744 DSC00748 DSC00749

You then get great shots from the north with the mountain range in the background.

DSC00750 DSC00732 DSC00736

Yamanakadani Station

Heading north, the track enters a mountain range just after Kii Station. In the middle of that range is Yamanakadani Town. This little town has a tiny station where the expresses bolt through.

DSC00763

DSC00755 DSC00765 DSC00768

DSC00773 DSC00777 DSC00754

DSC00775

Shinge Station

Further north, after the mountain range, the track makes it way towards the branch to Kansai Airport at Hineno. Two stations before this is Shinge Station. It's extremely urban and sees very much the same traffic. No express trains stop here.

DSC00790 DSC00791 DSC00792
DSC00795 DSC00796 DSC00802

Hineno Station

The branch to Kansai Airport starts here. The Haruka Express trains therefore stop here to allow connecting passengers to continue south to Wakayama.

DSC00779 DSC00786 DSC00787

From here it was a quick transfer and trip through Rinku Town before arriving at Kansai International Airport.

11Jun/150

6029 to Wagga Wagga

That beast of an engine from Canberra was on the move again, this time southbound. It was the June Queen's Birthday long weekend and they were running a 'Winter Safari' tour to Junee and Wagga Wagga.

I wanted to check it out, but didn't feel like covering the 100s of kilometres there and back driving; so I chose to take the trusty XPT once again. The Friday night service would get me to Junee just before 0100 hours. This was ok as I'd arranged with the motel across from the station to stash my room key somewhere accessible. All went well and I slept for the arrival of the train the next morning.

DSC06677 DSC06696 DSC06703
DSC06683 DSC06684 DSC06687 DSC06691 DSC06694

The overland arrived just before our train departed. It was busy shunting the auto-rail off the rear and over to it's dock to put the cars back onto the road. The trip into the night was peaceful enough, although it seemed that getting drunk and walking up and down the corridors all night was to be a good hobby for some locals.

Saturday Morning

I'd inspected the ARTC timetables and put together the following diagram. There wasn't too much freight in the area, but there was enough to keep one's self entertained. I had initially thought that the steam engine shuttles were from Wagga to Junee and back, but it turned out that (once I actually read the website correctly) that the shuttles were just between Wagga and Bomen. It seems that quite a few others, who came looking for the engine on the platform at Junee during the day, made the same mistake.

		Coota	Junee	Bomen	Wagga
ST22	CLK	0137	0048	0033	0022
6MB4	PN	0329	0221	0158	0150
6MB7	QN	0539	0405	0340	0332
5BM7	PN	0354	0441	0522	0528
9L03	ARHS	0449	0543	----	----
3PW4	PN	0903	0757	0727	0719
9S05	ARHS	----	0805	0830	0840
9L06	ARHS	----	----	0915	0855
9S07	ARHS	----	----	0920	0940
9337N	PN	0852	0944	----	----
9L08	ARHS	----	----	1015	0955
6WP2	PN	0900	0952	1021	1028
9S09	ARHS	----	----	1030	1050
9L10	ARHS	----	----	1125	1105
9S11	ARHS	----	----	1130	1150
3314N	QUBE	----	1159	----	----
9L12	ARHS	----	----	1225	1205
9S13	ARHS	----	----	1230	1250
SP41	CLK	1219	1258	----	----	
3315N	QUBE	----	1300	----	----
ST23	CLK	1251	1327	1346	1354

I'd bought my return ticket from Junee and had considered trying to change it to depart from Wagga instead. Unfortunately there weren't too may transportation options to get to Wagga, so I stayed put in Junee to watch the festivities. In hindsight, I could have actually purchased a ticket on 6029 and travelled south to Wagga in the morning when they left... but meh, I'd no idea.

6029 arrives with assistance

4501 and 4403 lead 6029 into Junee around an hour late. Still under the cover of darkness, the consist made its way into the yard and then detached. All three engines came off the consist to allow 6029 to shunt off and proceed up to the roundhouse. As with most typical gunzels, there were ramblings of mechanical failure and other doom/gloom. I would've assumed that 6029 would've lead into Junee, but then again... it was pitch black and there was no need for spectacle. They would've also needed to keep up with traffic, so having the diesels do all the work makes sense.

DSC06709 DSC06715 DSC06717
DSC06719 DSC06720 DSC06722

The engine stayed in the roundhouse for quite a while... missing the initial slot it was meant to take from Junee to Wagga.

DSC06735 DSC06800 DSC06832

A northbound freight was then given the path and 6029 covered it in steam/smoke as it came through.

DSC06868 DSC06872 DSC06888 DSC06891 DSC06894
DSC06902 DSC06908 DSC06913 DSC06916 DSC06919

Once the path was clear, the consist was shunted into the station and passengers boarded.

DSC06923 DSC06931 DSC06932 DSC06935 DSC06937
DSC06938 DSC06948 DSC06951

It then proceeded off to Wagga, looking great, but requiring quite a bit of help from 4501 on the tail as it climbed the grade out of Junee.

DSC06954 DSC06956 DSC06958
DSC06962 DSC06965 DSC06967

That was it for 6029... the next site was from the window of our southboard daylight XPT. One of its shuttles was to Uranquinty and it was in the loop there as we bolted through.

Freight around Junee

There's always containers stored in the yard... Qube shunt here from Harefield. It seems that they can't fit their entire consists into the roads at Harefield, so they shunt rakes of container trains back and forth to load and unload. They then bring the portions together in Junee yard and take them south to Melbourne.

DSC06975 DSC06977 DSC06978 DSC06991 DSC06992

Junee is also the location of the triangle to Griffith. I lie though, it's no longer a triangle. The branch is only accessible when heading north from the south, so any southbound train wanting to go to Griffith has to head into Junee Yard, run around and then proceed back out again. A grain train did this whilst I was waiting at the station.

DSC07004 DSC07006 DSC07008

DSC07029 DSC07030 DSC07031 DSC07032 DSC07033
DSC07036 DSC07040 DSC07042
DSC07044 DSC07045 DSC07049

A random Aurizon track vehicle then appeared at the crossing, mounted the tracks and then bolted off north.

DSC07016DSC07017 DSC07034

Finally the Qube service from Harefield arrived to drop off one rake of containers and take another off to load/unload.

DSC07050 DSC07083 DSC07085

Railmotor Societies 721/621

The radar then showed that an unusual vehicle was headed south. Speaking to folks on the platform, it turns out that the Patterson Railmotor Society was running a tour over the long weekend also.

DSC07099 DSC07100 DSC07108

XPT shennanigans

Only one platform is in use at Junee. Whether it be for lack of accessibility, patronage or care, the second platform that would cater to northbound passengers is out of use. This means that, on approach, the northbound XPT needs to cross over to the southbound tracks to reach platform 1. Of course, it can only do this is the road is clear. Funnily enough, the road isn't often clear as the southbound XPT usually crossed the northbound here. It's the half-way point between Melbourne and Sydney.

DSC07129 DSC07133 DSC07139

DSC07143 DSC07148 DSC07151

Due to the track arrangement, the northbound XPT is, more often than not, sent north past the station into the siding north of the level crossing. The southbound XPT then comes through, visits platform 1 and then proceeds to Melbourne. Once clear, the northbound XPT then reverses (well, it's got a cab at either end, so it's not too much hassle) onto the southbound road and accesses the platform. Once loaded it then continues north on its journey.

Quite a lot of mucking around when they could just reinstate the other platform. It's the age-old issue with Australian trains and 'customer' service. They've slapped it in the too-hard basket and it's frustrating to watch the infrastructure crumble.

28May/150

An insight into the workings of a Comment Bot

I get emails every now and then from this blog telling me that there's a new comment for approval. Most often than not, it's spam. It's also usually really shit spam. The context is wrong, the URLs are Russian and the text is crap. I have always wondered how it's generated and who would be the one posting the comments.

Regardless of the plugins I have enabled to stop spam (and it seems 10000s of comments are in fact stopped), some of the crap still gets through.

Today I received an email indicating a new comment. This one was different though... the contents seem to have been verbatim pasted, as opposed to 'customised' by the 'poster'.

{I have|I've} been {surfing|browsing} online more than {three|3|2|4} hours today, yet I never found any interesting article like yours.
{It's|It is} pretty worth enough for me. {In my opinion|Personally|In my view}, if all {webmasters|site owners|website owners|web owners} and bloggers made good content as you did, the {internet|net|web} will be {much more|a lot more} useful than ever before.
I {couldn't|could not} {resist|refrain from} commenting.

{Very well|Perfectly|Well|Exceptionally well} written!
{I will|I'll} {right away|immediately} {take hold of|grab|clutch|grasp|seize|snatch} your {rss|rss feed} as I {can not|can't} {in finding|find|to find} your {email|e-mail} subscription {link|hyperlink} or {newsletter|e-newsletter} service. Do {you have|you've} any?
{Please|Kindly} {allow|permit|let} me {realize|recognize|understand|recognise|know} {so that|in order that} I {may just|may|could} subscribe.
Thanks.
{It is|It's} {appropriate|perfect|the best} time to make some plans for the future and {it is|it's} time to be happy.
{I have|I've} read this post and if I could I {want to|wish to|desire to} suggest you {few|some} interesting things or {advice|suggestions|tips}.
{Perhaps|Maybe} you {could|can} write next articles referring to this article.

Woah... it seems that these comments really do get customised... I mean, they still have NOTHING to do with my blog and the URLs they point to have NOTHING to do with the guts of the comment, but the contents of the comments seem to be variable.

I assume the variability is to prevent the crap getting marked as spam. The English makes sense, to the point where each of the permutations actually sound like a native speaker.

I wonder if a bot chooses, at random, which word to use from each array, or if a human is doing it all. A human should, at least, know that the entire body has nothing to do with any post on this blog; but then again, the poster may not even speak English.

I am sure this {article|post|piece of writing|paragraph} has touched all the internet {users|people|viewers|visitors}, its really really {nice|pleasant|good|fastidious} {article|post|piece of writing|paragraph} on building up new
{blog|weblog|webpage|website|web site}.
Wow, this {article|post|piece of writing|paragraph} is {nice|pleasant|good|fastidious}, my {sister|younger sister} is analyzing {such|these|these kinds of} things, {so|thus|therefore} I am going to {tell|inform|let know|convey} her.
{Saved as a favorite|bookmarked!!}, {I really like|I like|I love} {your blog|your site|your web site|your website}!

Then again.. if you keep reading the dribble you'll see how crap it is and, even though some sentences flow, others just don't belong where they are.

Meh... either way, it was a very interesting insight into the workings of these bots/humans/drones posting shitty comments on the world of blogging.

28May/150

Sockets: Bytes and Message Terminators

Sockets are fun. They're a cross-platform mechanism for opening a black hole to another dimension. Of course, you're the one that defines the other end and you're in full control of what gets sent into the hole.

Hopefully you've also written the code at the other end... that way you're also in full control of what comes back through the hole. Note that, like any good black hole, the specks of data flying back at you won't always be complete, nor in sequence. Fortunately, if you're using TCP, the underlying network technology/code will rearrange the packets for you. UDP, on the other hand, will send the packets to you as it receives them.

Text or Bytes?

It does get better though... especially when you're trying to send through real data, we'll call them bytes [valued from 0 to 255], as opposed to just fancy textual strings in the ASCII format. The latter is great if you actually want to send legible messages; a chat program perhaps? But useless if you want to send large numbers or other binary data quickly and efficiently.

A quick example... say you want to send the value of a HTML colour. Let's choose the colour off-white, of RGB value (250,250,250). You could send the string "250,250,250" and the receiver could parse the ASCII values. You could save further chars by passing in "250250250" and, as long as your receiver understands the format, it would still be understood. What you need to realise though is that you're sending 3 bytes down the pipe when you really only need to send one. Each byte, in this case '2', '5' and '0' are all bytes, has the ability to store a numeric value from 0 through to 255.

The first byte, the ASCII character '2' is actually represented by the numeric raw value 50. The basic idea is that ASCII is a big lookup table. The number 20 is the index in the table that describes the pixel arrangement to display a character '2' on the screen. What you can then realise is that, in the buffer, you've actually placed the value 50 in the first byte, not 2. If you knew how to read that value as 50 and not 2, then you're already saving 1 byte (as '50' would take two ASCII characters!)

It gets better though... each byte can store up to the value 255, so instead of trying to jam the string "250" into three bytes, you simply need to store the value 250 into the first byte.

Signed or Unsigned?

A byte has 8 bits. Of these 8 bits, all 0s equals the numerical value zero and all 1s equals 255. You can therefore store 256 values in a byte. Computers, to represent negative numbers, use the most significant bit (determined by endianess) as a flag to indicate if a number is negative. Unfortunately, this takes one bit off your value, allowing you to store -128 to +127. Why not -127? That would be a waste and would allow -0 and +0. See Two's complement to understand more.

In the end, unless you're using C# (where Microsoft likes to 'help' you and limit ASCII usage) then it'll be up to the receiving end as to how to read the data. All the bits will be there; it's just a matter of casting them to a format you desire.

Message Terminators

Firstly, I'm using the term 'message' here to describe a block of data sent from the server to a client. This block is formulated by the server with known start and end indicators and thrown down the tubes. If the client isn't listening hard enough, then they may well miss the start of the message and have no idea how to recover and process the rest of the data. The goal is to create unique tokens in your message stream to allow a client to truncate data it can't deal with and get back to a known starting point. It can then process the next message in the queue.

Choosing a terminator can be difficult. A unique byte, or sequence of bytes, can be hard to determine if you are expecting to send arbitrary data in the message content. Human-readable characters can be used, if sending strings where those characters can't possibly be included. The 'pipe' | is a good choice, even a comma if you're in total control of message content and can replace/remove them from the middle. The issue will be that as soon as a terminating character is found in the middle of the string, then the client will expect that the message is complete and pass on the truncated data for further processing. It then gets worse when the client retrieves the next message which happens to be the second half of what should have been a complete message.

The best way to get around this is to have a header at the start of your messages. First and foremost this header needs to indicate the length of the message it describes. From then on you can have whatever message content you want, making sure the byte count matches the length you have set. In a recent application, I limited myself to 255 byte messages, so the first byte of any data sent was a numeric value that describe the number of following bytes that made up the message. I then also put a terminating character at the end, the pipe, as a check so the client could confirm that the end was really there.

Putting it all together...

Once you've defined a message structure, your listeners and receivers should be able to decipher the string of bytes coming down the line with a little more ease. Of course, if they get caught up and fail to read packets then those packets are lost. Your next step would be to ensure each end is in a known state and that if a state hasn't progressed that data needs to be re-sent.

I'll post again in the future with code samples for the theories above.

14May/154

Quadra 950: MacOS 8.5 (and 8.6)

The Quadra is a 68040-based Macintosh. Unfortunately, MacOS 8.5 and higher require a PowerPC processor. Regardless of the fact that you can 'add' a PowerPC Processor to the Quadra, MacOS 8.5 is still listed as unsupported on this model.

Impersonating a 'real' PPC

It seems that every model of Macintosh has a specific unique ID stored in the BIOS of the logic board. The MacOS installer will verify this against a known set of values before proceeding. If a correct value is not found, then you'll get the dreaded This program cannot run on your computer error.

There's numerous tutorials online on how to get around this. The Unofficial Turbo 601 Site has instructions and so does Running Mac OS 8.5 on A 68k Mac with A PPC Upgrade Card. The Mac OS 8.5 Special Report has an Install Hack page also describing how to do this.

Note: You don't need to go through the hacking process! The Presto PPC Software can do it all for you and I've described the process further below.

The main point behind all of this is that the hardware is there and ready to roll for MacOS 8.5. Apple, in their infinite (loop) wisdom, decided that they'd wipe the slate clean and only support the 'real' Macintosh PPC models. We can get around this and the following steps will show you how.

Tricking the installer

Your first step is to go to Low End Mac and grab Wish I Were. This archive contains both an extension and a control panel. Read the README that comes with it for more information.

fail-install wish-1 wish-2

Drag both the extension and control panel at the same time to your startup system folder. Once copied, jump over to Control Panel and open Wish I Were. Set your Gestalt to Powermac 6100/60. You'll now need to reboot... Don't bother with the Quadra 940 with Upgrade, I thought this might work, but it's probably the original ID that the Quadra 950 CPU/BIOS is already returning.

If you have your installation disk ready to go (it is recommended to install to another physical disk!) then start the MacOS 8.5 installer now.

MacOS Installation

Note: Prior to even trying the install, make sure you have enabled your PPC Upgrade Card and have set Wish I Were to a relevant value!

Grab the software and burn it to a CD or mount the image on the desktop. Double-click the Mac OS Install application to get started. Installation itself is painless... lots of 'next, 'next', 'finish'. You can choose to customise; for some reason Quickdraw GX was unchecked for my machine, I checked it for fun.

The install will try to update harddisk drivers. Don't be worried if you get a warning that this cannot be done. It will usually only work for drives that have Apple firmware. The installer will continue regardless of a successful firmware update. Note that it will try to update firmware for all attached harddisks; not just the target disk.

Files started copying... (the estimate was 21 minutes) and then fail: "Get QuickTime Pro" could not be copied from Disk "". What? Blank disk label? I had been using the internal drive at this point and decided to switch to the slower PowerCD (see all about my optical drive illusions here.)

I inserted the original Mac OS 8.5 CD in the PowerCD and everything loaded. You could feel the icons refreshing in the finder folder and the screen refreshing the license agreements during the installation steps. The files started copying again and the estimate was 50 minutes! They were smart enough to judge the speed already, prior to any files copied and guessed that this drive would take more than double that of the internal drive.

The file copying continued without errors... was the slower PowerCD more capable of reading a damaged disk? The-slower-the-better with scratches? Either way, the 50 minutes quickly became 46, then 40 and then 30. It still did take a good amount of time. My last Windows 8.1 install felt like it took me only 15 minutes to get to the desktop!

Once the install has finished... make sure the startup disk you installed from is still handy (and remember the SCSI ID!) Rebooting at this point will make Mac OS 8.5 throw the usual "this startup disk will not work on this Macintosh model." .. feel free to reboot just to ensure this occurs.

If it does, hold down CMD-OPTION-SHIFT-DELETE-(SCSI ID) on your next reboot and make your Macintosh boot the harddisk of the associated SCSI ID. Note that 'Delete' needs to be the full 'Delete key, not 'Del'. The number also needs to be a number from across the top of the keyboard, not the numpad! This should be your previous startup disk, or another... either way, we just need an environment to ResEdit the Mac OS 8.5 partition.

gestalt-hack-2 gestalt-hack-3 gestalt-hack-4

Once you're back on a known desktop, download and install ResEdit. Open the 'System Suitcase' from inside the System Folder on your new MacOS 8.5 partition. Once in there, open the gusd resource and then open resource 1. Go to Find -> Find Hex and search for 001f001c, there'll be one occurrence. Highlight the block including 001f and type 0076 for the Quadra 950 (see other model IDs here.)

Quit out of ResEdit, saving your changes... as that you booted with the special shortcut, your startup disk will still be the new MacOS 8.5 partition... reboot your Macintosh. Now you get to watch it pass the hardware check and load to the desktop! Step through the Mac OS Setup Assistant if you're really bored. 'Checking network connections' in the setup assistant took a REALLY long time... minutes... and then never completed... I forced it closed, but Finder then never responded. Sorry Finder, you get a reboot. I then, for the first time in ages, saw the "Your machine was not shutdown/crashed" disk-check screen. I'd forgotten all about it!

Meanwhile, my Asante Card just worked! Note that TCP/IP is disabled by default. Go to the control panel and enable it. I loved it that my Ethernet slot 3 was already a selectable option.

Also, all the disk mounting issues from above had gone away. Blank floppies show up as 'PC' floppies but the PowerCD still wouldn't work with Audio CDs (data CDs were fine.)

Upgrading to MacOS 8.6

I acquired the update and burnt it to a blank CDR. Turns out the internal NEC drive just hates recordable media. Fortunately, the trusty PowerCD came through with the goods and got me started. At the 8.5 desktop, with the CD mounted, I double-clicked on "Upgrade to 8.6" and got the usual "you have an unsupported system." Of course I do... I'd been running peacefully in 8.5 for so long that I forgot that the Wish I Were hack was on the previous 8.1 disk. So, I scrounged around, extracted the extension/control panel from the other disk and dumped them on my 8.5 install. Prior to reboot I adjusted the machine back to a Powermac 6100/60.

After a reboot, I was running the installer. It is extremely streamlined... I get one option to update SCSI HD Drivers and that's about it. The installation proceeded (slowly on the PowerCD) without a hitch.

After the installation, I attempted to get back to the desktop. Unfortunately the installer wasn't going to have it... it kept demanding that a restart was in order. I had no choice... I didn't want to restart because I knew it'd throw an error. Luckily, my 8.1 partition was there, so option-command-shift-delete-0 (remember, that's delete, not del) saw that boot.

Once at the desktop I opened the new System Suitcase in ResEdit, made the hex change to gusd and saved everything. The system was now allowed to reboot.

The desktop came up and everything worked very well. My network wouldn't get a DHCP address to start with, but that ended up being my ethernet-over-power setup... a solid cable fixed it up.

Note that if you have any DHCP issues that you can supposedly update OpenTransport to the version included with MacOS 9. Sustainable Software's page on DHCP and Mac OS indicates that MacOS 8.6 uses a different technique to obtain DHCP addresses. Download OpenTransport 2.6 here. You will probably need to re-enable 'Wish I Were' to install it.

Sonnet Presto PPC 8.5 and a fresh MacOS 8.6 install

It seems to be little-known that this can all be automated. Sonnet, a maker of PPC upgrade cards, released their Presto PPC utilities to do everything listed above in a much easier fashion. Find the manual for an upgrade here. Download the application and install open the archive. You'll get an dialog that allows you to mount the disk or write it to a real floppy. I did the latter and, once successful, you get the Macintosh Text-To-Speech telling you it's complete! How quaint!

From here, I've installed a fresh version onto another SCSI HD. This drive is 36gb and needed to be partitioned. Using my previous install, I had a base to run partitioning software from. It turns out there's quite a few options... your mileage may vary! Check out this page for partitioning and the tools available.

DSC06342

DSC06345

Partitions ready, I copied over my Games, Apps and Development files. I then restarted with the Presto Floppy Disk. The floppy has a raw Apple CD Driver on it and it didn't find any of my CD-ROMs. I threw CD Sunrise in the system folder and then rebooted with the floppy... it tried to see the PowerCD but thought it was uninitialised!

I opened up the MacOS 8.1 partition and copied the ISO9660 File Access, AudioCD Access and High Sierra Access extensions to the floppy. I had to remove the Profiler patches to make this work, but I wont need them yet anyway. After a reboot, still no dice. I swapped the CD Sunrise extension out for the original Apple CD version, just in case that only worked with the access extensions... it still didn't work on reboot.

At this point I realised I wasn't going to be using the floppy to boot and install. So I booted into my 8.1 install and ran the installer from there. I chose to install a fresh version on my newly partitioned HD. Starting the installer got the usual "this software cannot be installed on your machine", so I resorted to the Presto PPC manual.

So, floppy disk inserted, you must first copy the Presto PPC 8.5 Enabler and Presto PPC ID files to your current system folder. Do this and restart your machine. Installation can now proceed as usual. I chose a clean install on the blank partition.

The install took so long that I gave up. Don't even bother using an Apple PowerCD for data... it's toooo slow. Single speed maybe? I booted up Cockatrice III on my Windows machine and mounted the 8.6 ISO. I then shared it via Chooser to the Quadra and installed it that way. Worked a lot quicker.

Rebooting got the usual This software is not designed for this Macintosh. This is expected... the fresh install did not have the PowerPC ID masking files. So, back to the manual, I booted from the floppy and failed ... The System version on the Presto PPC Floppy is too old and wont recognise my 4gb partition. It tells me there isn't enough space to copy the files over! I'd imagine it's an integer size issue.

cmd-opt-shift-del-0 WOULD NOT boot my original partition... it seems that this time around the system wanted to ignore my keypresses! Booting from the floppy and trying the short-cut combination wouldn't boot my other hard disk either... guess the hack? Boot the Presto PPC floppy to the desktop, open the system folder on your MacOS 8.6 install partition and browse to the Startup Disk Control Panel. Changing the startup disk there will actually change it for that entire drive. I then went Special -> Restart and Finder locked up. I forced a restart, the disk didn't eject and we rebooted back into the floppy's archaic desktop. A further restart got me back into MacOS 8.1!

So, now I could copy the extensions over. These are the Presto PPC 8.5 Enabler and the Power Macintosh Card Control Panel (yes, it says 601 Processor Upgrade in the doc... but on the disk that is not its name!) Drag them from the floppy to the 8.6 System Folder.

From MacOS 8.1 I then switched the Startup Disk back to MacOS 8.6... and... the friggen thing booted. Winner!

Black-screen-of-death (aka Sad Mac)

If you do anything to screw your PRAM, then it will default back to the 68k processor. As soon as you do this, you'll get the following error screen:

DSC06453

This error: Sad Mac 0000000F 0000000C indicates that MacOS has tried to boot and found invalid hardware. 8.6 only wants to boot on a real PowerPC, so it's found the 68k processor and failed.

The resolution is to boot from a disk that can boot on 68k (Presto Floppy as above? Older MacOS 8.1 boot disk? etc...) and then get to a control panel that'll let you switch the PRAM back to PowerPC mode. My answer was to boot the Presto disk, go to the System Folder on my 8.6 HDD and then toggle the PowerPC card.

The system then rebooted fine!

Filed under: Apple 4 Comments