Subscribe via RSS
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/152

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 2 Comments
7May/150

net.tcp and IIS Express does not work

I've just spent time trying to rig up a test to get a working net.tcp server. Turns out that, in Visual Studio 2012 (and just about every other VS version), the IIS Express Server that one usually debugs through CANNOT support anything other than HTTPS and HTTP.

Q: Does IIS Express support non-HTTP protocols such as net.tcp or MSMQ?
A: No. IIS Express only supports HTTP and HTTPS as its protocol.

Please do not waste your time... When you hit debug on your net.tcp service, IIS Express will instantiate and you'll be thrown to your favourite web browser, staring at your root folder which is readable. You'll note that you'll also be on a port that has nothing to do with your web.config. This is because IIS Express has generated a random port and not cared one iota for your port configurations in web.config. You'll get nothing but connection refused when you try to connect to net.tcp://localhost:PORT/Service.

I was about to whinge that this tutorial on configuring a net.tcp service on IIS7 doesn't mention anything about incompatibilities with IIS Express. I suppose that one must assume by the header that the article is only for IIS7. A footnote would still be greatly appreciated for those trying to develop their code before deploying it!

If you ever want to get this to work, deploy and test your server on a real IIS instance and run from there... IIS7 preferably.

Note, if you need to debug... bring the server up, hit it with a simple query to make sure the app pool is active, and use Debug -> Attach to Process from Visual Studio. You'll find w3wp.exe way down the list with your Website's 'name' next to it. Highlight it and hit Attach to debug pesky server-side problems.

Once debugging in Visual Studio, you'll then need to open your source files (they can be in any folder, VS initially wont find them automatically) to set breakpoints. Note that exceptions will be caught in VS whilst debugging and will halt execution on IIS for all users. I have, once or twice, accidentally left the debugger attached overnight and had very angry clients in the morning with stalled connections.

6May/153

Quadra 950: CPU/RAM Upgrades and Overclocking

When it comes to upgrades, the Quadra 950 has 16 SIMM RAM slots, 4 VRAM slots, a ROM SIMM slot, 5 Nubus slots and a PDS slot. RAM and CPU upgrades can be purchased via off-the-shelf means. Little is it known that you can also then overclock your CPU. Below lists some options for getting more horsepower out of your vintage Macintosh.

Apple PowerPC Upgrade Card

The previous owner already had the "Power Macintosh Card" Control Panel installed on the 7.6.1 system. After inserting the card, I went into the control panel and enabled the PPC Card. I was informed that a reboot was required and promptly did so. It rebooted.... Apple System Profiler indicated the same-old 68k processor? I had recalled online that one user had issues with the card, but then found that it wasn't seated properly. Trying this, I shut the machine down and then put the case on its side. A gentle downward press on the card from both top corners resulted in a rewarding click. Nothing sharp, but that feeling of success when you know something is now in the correct location.

I hit the power button and ... jeebuz.... what was that wretched chime? The 68k boot chime of the Quadra 950 is pleasant, if not downright triumphant. The chime that came from the PPC addon card was ... it sounded like a cheap knock-off MOD compared to an MP3. A dodgy, poorly-recorded sample. Either way... it worked. The screen then came on and I could actually see it drawing the background line-by-line as the grey pattern loaded. Then I saw it draw the MacOS central loading screen. I was running the Supermac Spectrum/24 PDQ+ at this point and that turned out to be the cause. It needs a software update. Meanwhile the onboard video performs much better.

DSC06143 DSC06145 DSC06145

Overall the UI seems much zippier with the PowerPC enabled. Placebo probably... I'll try and perform benchmarks once I have new HDDs and a fresh operating system. Maybe some more RAM too... In the meantime, here's some benchmarks done by Low end Mac.

I've read here at Apple Fool that you can actually remove the 68k CPU when running the PowerPC PDS card. Doing so also resolves graphics issues with other Quadra models. When overclocking (the only reason I found out that you could do this), removing the 68k CPU actually allows you to run the PPC upgrade at faster speeds!

Upgrade VRAM to 2mb

The Quadra 950 has 1mb of VRAM onboard. There are 4 slots in which 4 256kb SIMMs can be installed to extend the video memory to 2mb. This will allow 1152x870 @ 24-bit colour, which is comparable to any video card you can insert! Apple has a support page describing the options for each Macintosh model and you can see that the Quadra can only take 4 more SIMMs.

Four slots support 256k 80 ns VRAM SIMMs for a maximum total of as much as 2 MB of VRAM. 512k VRAM SIMMs can be installed, but four identical ones must be installed and the system can only use 256k of each SIMM.

ROM SIMM Slot

I initially thought that there was a cache slot next to the RAM slots on the logic board. If you look at the images below in the RAM upgrade topic, you'll see that, apart from the 16 SIMMs for system memory, there is another empty slot top-right. It's near the CPU, so cache made sense. It turns out it's a ROM SIMM slot, not a cache slot. In this slot you can put in a ROM that will override the on-board ROM.

Doug Brown makes ROM SIMM programmers that can write the SIMMs that'll fit into this slot. It doesn't seem that anyone, at all, on the internet has ever done this to a Quadra 950. I've been told that you can change the start-up tune and disable the memory check, if you want to... otherwise your options for profit from tinkering with the ROM are little. It would require some very low-level detailed hardware knowledge also!

But for fun, check out Doug's post where he changed his Macintosh IIci start-up tune to the Super Mario theme. If you do want to code ROM SIMMs, Doug has his ROM SIMM burner for sale here.

This slot does have me thinking... minimal OS on an 8mb chip... it'd be like loading from an SSD!

Cache Upgrades

Meanwhile, you can buy Nubus cards full of cache. These 'MicroMac Cache cards' come as PDS cards or 'slot-free', the latter being a device that is installed between your CPU and logic board. This piggy-back mechanism puts the cache right next to your CPU and keeps your PDS slot free for a PPC upgrade.

Upgrade System RAM to 256mb

This one was simple... purchase from seller in the US on eBay. Wait. Open package. Open Quadra 950. Remove old SIMMs. Install. Or so it should have been... quite the initial scare when, upon applying power, the machine didn't start. It powered, the CD-ROM was eject-able, but it just sat there! around 2 minutes later the grey screen came up. It seems that the machine is busy checking the RAM.

DSC06247 DSC06250 DSC06252 DSC06253 DSC06254

Further cold starts took just as long; it seems the RAM checks occur every time you boot after a shutdown.

Installing large amounts of RAM in 68k Macintosh computers causes VERY LONG BOOT TIMES. It seems the BIOS runs a memory check and the more RAM in there, the longer it takes. The Quadra 950 with 256mb of RAM now takes 5 minutes from chime to gray happy mac! Note that restarts are as quick as ever.

Now that I've got my RAM in there, it's time to use it with A/UX.

Power Supply Fan

Every now and then, the Quadra would start up and the fan would make terrible noises... It sounded like something was actually stuck in it, but I couldn't see anything. Either way, I managed to take a fin off the fan propeller during an attempt to stop it. I now had to replace it. It's a standard 120mm 12v fan and a replacement was easy to find.

As I pulled off the old fan, I found the cause of the previous noises! There was an unused cable-tie in there. It seems that it had either been sucked in, or someone had shoved it in there. It was not damaged and did not come from inside the power supply. Every now and then it'd make its way close enough to the fan blades to make a racket. Seems that a bump would make it quiet again, but it would've been entirely random!

DSC06258 DSC06259 DSC06260
DSC06261 DSC06263

Either way, the new fan was in place with some adjustments; it was around 10mm shallower. The previous fan was also powered by the socket on the power supply. I grafted the new fan onto the old fans plug. The system is now running 'cool' again and much quieter! I even get a pretty blue light inside the case.

DSC06361 DSC06362 DSC06368
DSC06370 DSC06373

Overclocking your Quadra 950

Lowend Mac has the downlow on this. With the PPC card installed, I could max my oscillator out at 80Mhz. The system would then run the 68040 at 40 MHz and the PPC card at 80 MHz. Note that there may be software incompatibilities once you upgrade. Check out Apple Fool's run-down of incompatibilities here. For further information, check out Mac Crystal Oscillator Speedup History 2.6. Note, you may not be here for the Quadra 950, check out the Apple Fool Machine Specifics page to see the recommended crystal for your machine.

Based on the modification options table at Apple Fool, the Quadra 950 can take option 1 or option 2. Option 1 sounds the easiest whereas option 2 the safest... either way you need a soldering iron and some guts to tinker with your vintage macintoshes logic board.

The oscillators are available on eBay for a few dollars. I purchased mine from a Hong Kong seller. I bought a 5pk just in case. The are a standard-size unit and have 4 pins. The existing components are soldered into the motherboard, so from here on in you're in for a challenge. The best bet is to unsolder the current crystal and solder in a socket. This will allow for easy replacement to the original crystal if problems are encountered.

It might be hard to find an exact socket for the crystal. Jaycar has 14-pin sockets but they have all pins when we only want the four corners. I've modified a full-size socket by pushing through the intermediate pins.

DSC06347 DSC06348 DSC06352

The sockets are a mongrel to manipulate. Firstly, break off the thin end of the pins to be removed. They only bend when you try to force them out, so remove them from the equation. Next, use pliers or find a surface with a suitable space to push the other side of the pin in to. You could use hammer and nail here, with the head of the nail on the pin. Tap them out gently, but be warned, they are in there solidly and will require a bit of work. I used pliers on them, at an angle, and squeezed them out; but not without minor damage to the housing.

DSC06354 DSC06356 DSC06358

Removing the logic board is straight forward. Remove all the cables from the rear, remove any Nubus cards or PDS PPC card installed. Remove the power supply and hard disks/floppies/cd-roms. Disconnect the speaker and the power switch cables. The debug and reset buttons 'pop out' and can hang half out the front of the case during the process (see pictures.) There is then a tab between the memory banks, to the left, that needs to be pushed down. Once down you just need to slide the whole logic board left and it'll fall into your hands.

DSC06380 DSC06381 DSC06382
DSC06384 DSC06386 DSC06387
DSC06388 DSC06391DSC06392

Once out, heat up your soldering iron. You'll find the 66.6mhz crystal directly above the 68040 CPU. There's four pins on the back that needs to be de-soldered. Your process will either be to (as I did) loosen them one at a time, jimmying the crystal off the board, or the smarter way: use a solder-sucker to remove all solder from the pins and hope that the crystal will just slide out.

DSC06374 DSC06377 DSC06397

Either way, it took me around 10 laps of the pins with a very gentle lever-action in between to remove the crystal. I then soldered my socket in, not doing the cleanest job!

DSC06397 DSC06399 DSC06404
DSC06407 DSC06408 DSC06410

powerpcI put the original crystal in the socket (keep the 'pointy' corner of the crystal in the top-right corner!) to test that the socket was good. Note that the original crystal will have very short legs! Make sure that it's in as-firmly-as-possible and that you don't bump the machine and dislodge it! Running benchmarks (more on this below) produced the same results as pre-chipping. We win. I then shut down the machine and socketed the new crystal. It was a very suspenseful wait for the RAM checks to happen... was the machine going to boot??

5 minutes later.... I had an 80mhz PowerPC 601 machine~!

Benchmarking MacOS

Speedometer is included with the Newer Technology Disk downloads. The results, pre-clock-chip, are as follows:

newer-tech-download Picture 9 speedo-pre-chip

After the chipping, the following results were produced:

speedometer-startup Picture 9 speedo-post-chip

Yeeeeey! Not only did the bloody thing boot, the speed increased! It seems round ~20% too. Makes sense really... since the previous crystal was 66.6mhz, with the new being 80.0mhz.

SieveAhl is a recommended benchmark application for 68k Macintoshes. This application performs two tests: Sieve and Ahl. Pre-clock-chip results are reported below. The 500 tests executed very quickly. The site has a disclaimer that running the tests on PowerPCs isn't accurate as they use all sorts of emulation layers to execute 68k code. Either way, I have a clean set of figures pre-chipping.

sieve-download sieve-pre-chip-1 sieve-pre-chip-2

After the chipping the results were as follows:

sieve-configure sieve-post-chip-1 sieve-post-chip-2

...there's that ~20% increase again! Winner... the overall OS felt much zippier.

Over-clocking equals over-heating!

Of course, your mileage will always vary when over-clocking anything. Extra speed always leads to extra heat and then compounds into stability issues; the system was clocked at a specific speed by the manufacturer after rigorous quality control. Unless politics/marketing have come in, then higher clock-speeds have proven to be unstable and therefore weren't selected/enabled. Don't be sad that your CPU created a nuclear event, be happy that you had it rocketing along for a few nanoseconds! Of course, try and keep it cool for as long as you can.

It turns out that the 20% speed increase also increased the heat coming from the CPU. After around 30 minutes of running, depending on what I was actually doing, the machine would freeze. This is a very common symptom of overheating and the best method is to air-cool the CPU. The PowerPC PDS Card has a heatsink on it, but it's only passively-cooled. Fitting a fan to this should help keep the temperatures down.

DSC06436 DSC06443 DSC06447

I grabbed a fan from a local PC store that plugs into the standard power cables. It was a little huge for the scenario, but it kept the CPU nice and cool during normal usage. Note that there ain't much clearance in the case with a fan of this size... if you need more than 2 nubus slots then you'll want a smaller fan that fits inside the heat-sink fins.

If you've successfully over-clocked your 68k then fill out the survey at Apple Fool to keep everyone informed. You can see the results of other successful chippers here.

5May/150

FileSystemWatcher isn’t watching your files?

Quick note that just stole 2 hours of my weekend; of which I'll never get back... It seems that the FileSystemWatcher in C# it capable of watching files... yes.... but it turns out that the filters aren't as simple as you'd think.

Say you want to watch for new or changed text files in a folder? Filter = "*.txt" right? And the folder has a crapload of *.txt files? that's how it displays in Explorer? Right?

Wrong... Check out this sample code... yes, I'm holding the files open in my own source, but this is just a dirty way to show what's happening:

        static void Main(string[] args) {
            string folder = @"d:\temp\fileWatcherFolder\";
            FileSystemWatcher fsw = new FileSystemWatcher(folder, "*.txt");
            fsw.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.LastAccess;
            fsw.Changed += fsw_Changed;
            fsw.EnableRaisingEvents = true;
            using (StreamWriter file = new StreamWriter(folder + "test5.txt")) {
                Console.WriteLine("[");
                for (int i = 0; i < 10; i++) {
                    file.WriteLine("test line " + i);
                    Console.WriteLine(".");
                    Thread.Sleep(1000);
                }
                Console.WriteLine("]");
            }
            Console.ReadKey();
        }
        static void fsw_Changed(object sender, FileSystemEventArgs e) {
            Console.WriteLine(e.Name + " was changed!");
        }

From above, you can see that I start a watcher on a known folder, I then start a new file and write to it. The output should always show that updates are occurring. The updates never come... and this is symptomatic of what I had with another external application that was holding files open. It also then presented a bigger issue of adding tildes to the end of the extensions.

It seems that this is an issue in .NET regarding file flushing. The application with the file handles open must flush the data out for a FileSystemWatcher to pick it up. Depending on the speed and quantity of files being flushed, the watcher may have to be customised to cope with the load. Check out the InternalBufferSize parameter.

Note in the above code, you can force a file.Flush() after the file.WriteLine, you'll get a single event. If you use file.FlushAsync() then you'll get ALL of the events! There is no threading in my example code, so the fact that async works makes sense. Of course, if you have no control over the application that is writing the files (as I didn't) then you're stuck trying your hardest to watch the files.

I still can't see my files?!

It gets better though... on some versions of windows, you may will not even see the filename with the expected extension... there may actually be a tilde at the end of the name... invisible to the naked eye. Explorer will show "test5.txt" but the watcher will see "test5.txt~"! It seems that if another application has the file open, the operating system keeps the filename with a tilde at the end until 'flushed' to disk. I haven't been able to reproduce this via the source above, using notepad to hold files open... but I know it happens. The application I had to deal with spewed files out quickly, holding them open, and the watcher only saw "txt~" extensions...

If this is the case, then you can loosen your filter to "*.txt*". Note that if you have a LOT of files being created, then this will slow down the watcher considerably. I actually recommend that you set up a second watcher, one for "*.txt" and the other for "*.txt~".

It's only when you watch the files with a filter of *.* that you'll see the crappy extension names. So when trying to debug this... set your filter as 'relaxed' as possible to capture changes and tighten it when you know what you are looking for.

Be careful! It seems others have had the same problems: FileSystemWatcher class does not fire Change events when NotifyFilters.Size is used.

2May/150

Quadra 950: Alternative Operating Systems

Although Macintosh hardware is first-and-foremost meant to only run it's own brand of Operating System, you can coerce it to run different software with a little bit of work. Most of the methods still require a real MacOS partition with extensions/bootloaders to then hijack the boot process and switch execution to a 3rd-party OS. Even Apple's own A/UX (their variant of Unix) uses this method.

Installing A/UX on the Quadra 950

This machine isn't the Workgroup Server, but we can make it think it is. If your Quadra doesn't have CD-ROM Drive yet, then check out the difficulty I had installing one. Also, we'll need to build a floppy boot disk, you can see how to make them here.

Once you're ready, download A/UX 3.0.1 from here and burn the image to CD. (There's a plethora of Mac OS versions here, if you're bored.) I used PowerISO to burn the image. This image also contains the bootdisk, write that to a floppy too!

Slap the CD in your drive, boot your Quadra. Notice that it doesn't care one iota about your disc? It never will...

DSC06277 DSC06283 DSC06281

Make sure you have the bootdisk available. Slap it in and boot... It just worked... that's always nice. It got to a monochrome desktop and asked for the A/UX installation disc? Fail. I then googled to this site and found out that "if you don't have an Apple CD drive then you're hosed." Thanks... a lot... Apple.

I then tried to use my Apple PowerCD, but that wasn't found either. Seems like someone else tried and failed as well...

Gah! Is it time to hack the boot image to work with other SCSI serial/device IDs? Or do they all need individual drivers? It seems that A/UX 3.1 supports additional CD drives, specifically the NEC drive that I have. Unfortunately the boot disk is from 3.0.1... might have to try and copy the driver over...

I resorted to purchasing a CD-ROM drive that is listed as working on the A/UX FAQ. The original mention that this drive works is here. There's another reference here. It'll arrive soon and I'll try again!

CD-ROM Drives and PowerPC Upgrades

My Pioneer DVD-303S-A arrived and I installed it. Nothing tricky there, the ID jumpers were set accordingly and I booted in to MacOS 8.6. Unfortunately, the OS wanted nothing to do with the drive, the default extensions wouldn't see the CDs.

Disregarding this, I slapped the A/UX boot floppy in the drive and rebooted the system... it failed, telling me that my hardware was unsupported! Of course, I still had the PowerPC card enabled and it seems that this is not supported by A/UX? It actually seems that A/UX was only for 68k and you would need to install IBM AIX on any PowerPC hardware. The Apple Network Servers (although short-lived) ran PowerPC with IBM AIX. 'A/UX 4.0' was to run on PowerPC, but the project was dropped. Floodgap ANSwers: The WGS 9150 and the Story of Wormhole is a good primer on this generation of servers and operating systems.

Anyway, with the PowerPC card disabled, the installation found the CD-ROM!

Installation

This was ridiculously straight-forward. The floppy saw the CD and then booted straight into the installer. From here you simply partitioned a disk and hit next, next, finish.

DSC06475 DSC06476 DSC06479

DSC06482 DSC06483

Floodgap has a great tutorial on partitioning and installation. You'll note that all partitions mentioned are 2gb. It seems that, since the 'boot' partition is based on System 7.0.1, 2gb is the maximum partition size! Be very careful when dealing with other disks in your system with larger drives/partitions!

Usage

A/UX doesn't load from the bios, it actually boots once the smaller 7.0.1 parition has loaded to the desktop. It's interesting to watch, especially with my Supermac Video card. It actually re-initialises the videocard whilst doing so. So you get to the standard Finder and then another 'loading' dialog pops up. After this the screen goes blank, hardware is initialised and the A/UX loading screen appears.

It'll then have booted to the A/UX desktop which looks quite similar. You now have access to the root partition known as /. I opened the CommandShell (aka Terminal) and played around. It accepted my 'cc' command... I had a compiler! I then took screenshots, opt-shift-3 worked fine, but on attempt to copy to my main MacintoshHD partition (4gb in size) it threw an error saying it needed 30mb more space. Hah... fail... System 7.0.1 cannot handle the partition sizes.

Will muck around with this more and report back.

Further References:

mkLinux

Seems that this is the effort after A/UX to get it running on the PowerPC.
http://en.wikipedia.org/wiki/MkLinux
http://www.mklinux.org/

NetBSD

NetBSD/macppc will not work. It is for OpenFirmware based Power Macintoshes.

There's probably information here... or here, here, here, here or ... maybe somewhere else. I will try this in the future.

http://www.jagshouse.com/classicunix.html
https://wiki.debian.org/M68k/Status
http://mich431.net/m68k-605.html
http://mich431.net/m68k.html
http://thread.gmane.org/gmane.linux.debian.ports.68k/11465/focus=11482
http://nubus-pmac.sourceforge.net/

BeOS/Haiku

Nope... it needs a PowerPC 604 or higher. Even with the PPC PDS card, the max CPU is still a PowerPC 601. Unfortunate really, BeOS is still one of my favourite operating systems and I'd love to see it running on a 68k. Go and check out the Haiku OS anyway, it's still under active development.

MacOS 8.5+

Not quite as alternative as those above, but this OS is not meant to run on 68k Macintoshes. Not even those with PPC upgrades. 8.5 can be installed and then upgraded to 8.6. More on this soon.

1May/1515

Quadra 950: SCSI Storage, Partitioning and Boot Disks

The Quadra 950 has two SCSI buses. I therefore originally thought that this meant 12 devices (the logic board takes ID 7 on each bus.) Turns out I was wrong... the OS only supports a maximum of 7 devices in total! This is achieved by a software bridge that logically joins both buses. Therefore, you cannot have devices with the same SCSI ID on both the internal and external buses! How frustrating.

Low End Mac explains it, relating to System 7:

Although there are two separate SCSI buses, System 7.0-7.1 "folds" them together so the operating system sees a single virtual SCSI bus. Thus, under System 7.0-7.1 (and only under those systems) you must make sure that all devices on both chains have unique IDs.

So, what's the plan? Fill the bus! 7 slots. That's 2 CD drives, 4 hard disks and a ... maybe I'll try and find a zip drive... with the case full it will have to be external.

Setting SCSI IDs

This seems to get a few people confused. Each SCSI bus (of this vintage) has a maximum of 8 devices. These come with the IDs of 0 through to 7. To represent this, a value comprising of 3 bits is used. If you know your binary math, then this is obvious, if not, then please look at the table below. The bits relate the the jumpers seen on all SCSI devices of this vintage.

Listed below is the Jumper and it's corresponding decimal value in parenthesis. Summing the values associated with the bridged jumpers gives you the SCSI ID.

Jumper Values
SCSI ID J0 1 J1 2 J2 4
0 OFF OFF OFF
1 ON OFF OFF
2 OFF ON OFF
3 ON ON OFF
4 OFF OFF ON
5 ON OFF ON
6 OFF ON ON
7 ON ON ON

So, from above, the jumpers indicate the values 1,2 and 4. i.e. a jumper bridging 'Jumper 0' will give a value of one. When you bridge multiple jumpers then you sum the values.
(i.e. J1 + J2 = 2 + 4 = 6 or J0 + J2 = 1 + 4 = 5 and so on.)

With this knowledge, you can now configure all of your old SCSI devices to play happily on your bus(es). On the Quadra I had all of the HDDs and the internal CD drive on one bus. I used 0 for the boot HDD, 1 for the CDROM and then 2,3,4 for the other disks.

Externally I had the Apple PowerCD plugged in and configured to SCSI ID 5. Just to re-iterate, the external devices, although on a separate physical bus, join the internal single bus and therefore must be using unique IDs. They cannot re-use the IDs of internal devices!

Make sure that your external SCSI devices have unique IDs. They cannot use the same IDs as internal devices!

Terminating SCSI Buses

The SCSI bus is a long chain of devices. Communication along the chain is terminated by a set of resistors and/or current. Some SCSI devices provide internal termination facilities. If you enable termination on a device, then you should not put any other SCSI devices further along the chain. In the end, the chain should look like a row of christmas lights. One end is the motherboard, and this is terminated internally. The other end is a terminator on the cable, or a device with internal termination. ALL devices in the middle must then be non-terminated!

Macintosh SCSI Hardware Issues indicates that no drives in the Quadra 900/950 need be terminated. Instead the cable should have termination at the very end. An active terminator is recommended over a passive one. This identifies with the SCSI bus requirements above. All devices between the terminators (logic board and final terminator) must be non-terminated. The only exception to this is when the final device has internal termination.

SCSI Converters

The Quadra 950 only has 50-pin internal sockets for SCSI cables. It runs an NCR 53C96 SCSI Controller with a theoretical speed limit of 6 MB/s. Finding 50-pin SCSI devices nowadays is a real pain and most now have the vintage "price tag" on them. Fortunately, there's no need to worry. The SCSI interface happens to be backwards compatible and, although there are several different types of connectors, most can be converted (or downgraded!) to the lowest standard.

In our case we need all our devices on the flat 50-pin IDC internal ribbon cable standard. Scouring the net (and then eBay), resulted in some easy finds. A Hong Kong seller (zero results from Australia, as per usual) had the converters for AUD$9.50 a pop. These convert 50/68-pin to SCA 80-pin drives. And I had to buy these after-the-fact as I'd already purchased ~100gb SCSI drives with these plugs. I'd bought the drives because they said 'vintage'... just not 'vintage' enough for the Macintosh.

DSC06220 DSC06224 DSC06226

The SCA interface includes automatic ID selection and optional termination. This gets converted in the adapter. There are jumpers there for the ID (as per the table able) and then a TE jumper with enables internal termination. This means that I can have any of these devices on the end of my chain when the TE jumper is bridged.

Installing 80-pin SCA drives into the Quadra 950

The size of the case would make one think that you'd be able to store around 8-10 drives comfortably. You would be able to... if the designers had provided the slots. Instead, there are only two fixed locations to install drives. One of these gets stolen by the internal CD-ROM if you choose to mount it. I was hoping that, as that the bays are removable, someone had come up with a readily-available solution for more drive mounting. This forum post was all I could find; the user has managed to get 8 drives in the Quadra. Unfortunately all the images are gone...

I used my second (new) SCSI cable and plugged it into the socket under the power supply. This is the second SCSI bus; it's the internal side of the external bus. I even managed to sneak the cable up behind the power supply. Let's hope it doesn't get too hot!

DSC06256 DSC06266 DSC06268

First things first... DO NOT sit drives on top of each other freely and turn the power on. Anything could be shorting between them and cause issues. I powered the drives via the piggyback to my new fan and it cooked the lead!

DSC06270 DSC06272 DSC06274

First attempts to get the devices to show failed miserably. The cooking of the lead may have cooked the converters, but there's no 'smarts' to them, so I don't see how that could have happened. I put the two new HDDs as IDs 3 and 4 on one bus, also testing on the other, but never once did a drive show up in any scanning application. One drive showed a little flickery HDD activity once, but most of the time they both just lay there, like stunned mullets.

Reading SCSI Notes for 68k Macs, the quote that got me was:

80-pin drives aren't required to be 68-pin SCSI, IIRC, so a rare SCA drive that doesn't support Wide might exist. All the same cautions apply to attaching an SCA drive to a 50-pin bus as attaching a 68-pin drive, except that it's even more common for cheap adaptors to cause heartache to those trying to save money.

Go ahead and put those SCA drives into your 68k, but make sure you've got a fair bit of time laid out for getting them up and running. Hopefully it'll just work out fine, but you might have to debug something, possibly including replacing some of your adaptors if they're not working well.

Nothing is working well... the adapters are crap... the drives are crap? I don't know... but I'm writing all components off at this point. Might try again tomorrow.

...next day...
Holy shit. I just booted today after all the unsuccessful attempts last night. The power splitter cable melted when I turned the power on! DO NOT ... EVER ... use SCA drives in your Quadra 950.

...I'll be back once I purchase expensive 50/68-pin HDDs... I AM NOT touching these SCAs anymore.
(Tell me if anyone has ever successfully used an SCA drive in their Quadra 950... kthx.)

Installing 68-pin drives into the Quadra 950

These have both arrived (9g and 36g) and they both just work! ID set, converter in place and presto, the drives appear and are completely functional. Onto the partitioning!

DSC06491 DSC06493 DSC06497

There are at least two sorts of adapters... the above shows the 'inline' version, a single moulded unit. There's also the version with a PCB in-between. Both adapters worked perfectly for me.

Partitioning Disks

I expected there to be partition size limits, but that doesn't seem to be the case with MacOS 8.1 and higher. There's a multitude of tools available, so I've chosen to try and few of them out below. If you need to download any then check out Gamba's page.

Apple HD SC Setup (Patched)

When Apple HD SC Setup opens, you'll be presented with an ugly little dialog. I suppose it's the visual representation of that similarly ugly little tool called fdisk. Keep mashing the Drive button until the text above it matches the drive you want to work with. In this case mine was SCSI ID 4.

There's notes here on how to set up partitions via Apple HD SC Setup. Note that you have to 'Initialize' a disk before you can manage partitions! If initialisation is formatting, then wouldn't you have thought that it would want to set up partitions first? It seems that this isn't the case. Initialisation also takes a REALLY long time; it'll create and format an initial 4.1gb partition for you.

apple-hd-sc-setup-3 apple-hd-sc-setup-1 apple-hd-sc-setup-2

Once you have the option to press the Partition button, do so. You will be presented with a window that'll let you format your current partition. We don't want to do this, so hit Custom. You'll now see the initially created partition and, presumably, a large grey area underneath. Click this grey area to work with it.

Select Additional Mac Volume and type in a new size. The app puts a maximum size in there for you, but I found this to be different every time I opened it? Your Apple will crash if you do. Actually... it crashes and crashes and crashes... I can't successfully create a new secondary partition with Apple HD SC Setup. Onto the next tool...

Apple Drive Setup (Patched)

Apple Drive Setup was the defacto disk configuration utility with MacOS 8.1* and above. It also only supports Apple Firmware disks and so it turns out that it needs patching too!. Download Drive Setup 1.5 + patch or Drive Setup 1.7.3 and patch.

Download the version you want and the patch. Drive Setup will mount a disk on the desktop; copy the Drive Setup application from it to a folder somewhere. Then extract the patch into this folder also. Double-click the patch... not much happens. Opening Drive Setup will allow you to update your Hard Disk drivers... do this. You'll then need to reboot.

drive-setup-1 drive-setup-2 drive-setup-3

Turns out that when partitioning with Drive Setup, you cannot just add partitions. You need to select the 'layout' and then resize each individual new partition accordingly. You'll also need to realise that changing the 'layout' will wipe your current disk... entirely!

Drive Setup 1.5 also wont let you create a partition bigger than 4gb. I actually managed to create a 9gb Partition via Apple HD SC Setup and this just kept crashing MacOS 8.1 when trying to get to the desktop. Using Drive Setup to create 4 4gb partitions worked a lot better!

FWB Hard Disk Toolkit

You could also possibly use 2.5.3 is also available or . I couldn't get 4.5.2 to load on MacOS 8.1. Note that 2.5.3 is a full CDR image and takes forever to extract on the Quadra via StuffIt Expander.

Making a Macintosh Boot Disk (1.44mb)

Instructions are from here, here and here. Disk images: System 6.0.8 Boot Disk or System 7.0.1 Boot Disk. Note that if you want to install A/UX, you'll need a boot disk. It's included in the download and all is explained here.

I went to local PC store and bought an internal floppy drive and blank disks. I got home that afternoon and tore my windows desktop case open. Lots of mess only to find that there was no floppy plug on the motherboard. Hah. Fortunately I had a spare pc in the cupboard, so I yanked that open and, luckily, managed to install the floppy drive.

Keeping this machine off the internet, as it was archaic and bound to cause issues against my main workstation, I built the disks. The first goal was to write the A/UX boot disk that comes with the download. I opened the image in WinImage and ... it showed the main window with zero contents. There was no "Mac" footer in the status bar and I was concerned. Either way, I hit CTRL-W and wrote the floppy that was in the drive. It warned me that the disk wasn't empty... it was a blank disk anyway? I quickly checked in explorer for any files, but there was nothing.

Either way, I continued the write and it chugged along to 100% and told me it was finished. I trusted it.

Slapping the disk in the Macintosh, it booted. No magical short-cuts of any kind... it just trusted that the disk inserted was the one it was to take priority on. It loaded to a monochrome desktop and a dialog came up stating that we were installing A/UX! Winner... then it asked me where the CD was. Apparently it couldn't find it.... more on that here...

From this... I assume that the standard System 7 and 8 images will 'just work'(tm) Godspeed!

28Apr/150

Quadra 950: Optical Drives

This ended up being a tour-de-force. CD-ROM after CD-ROM failed me and I nearly gave up a few times. Turns out that not all CD-ROM drives will work peacefull.... who am I kidding? Apple has always stuck with proprietary hardware.

There's some great things to learn here when trying to use a non-Apple SCSI CD drive. I think the most important is that you cannot expect 100% functionality. That and you may well need to hack your drive to stop the tray locking; or hack the code to correctly support your drive's locking mechanism.

HP C4343A SureStore 6020i

DSC06102So, I bought a CD drive off eBay. Listed as an old HP SureStore Writer, 50-pin SCSI. PC/Mac Compatible. The Quadra 950 had been off (and unplugged) for days and, instead of turning the machine on and ensuring I had a known-state to base my upgrade from, I dug straight into the upgrade. I opened it up and installed the drive. I put it on the SCSI cable right next to one of the 2 hard drives already installed.

Once back together, I applied power and ... crap ... the flashing-question-mark-on-disk of death icon. OK, it cannot find the boot volume? Maybe my SCSI IDs are conflicting or some-such. So, I take the CD drive back out and .. nope .. still the flashing-question-mark icon on boot.
flashing disk of death

It chimes, the hard drives spin up and think a little, then nothing, just the flashing icon. I remove the PRAM battery, zap the PRAM (although only one chime-reboot), take out the PPC card, the real RAM and then disconnect the power supply from the motherboard. I try the second SCSI bus (there's another 50-pin socket under the power supply) to no avail. Whilst doing all of this I notice that I already have the VRAM upgrade! No need to buy more.

But.. nothing... have I trashed the logic board? The SCSI cable? Has the addition of a faulty CD drive killed the other two SCSI drives? I'm at a loss. It's 2am and I choose to sleep on it.

The next day, after a stressful day of reading up on other people's posts with similar symptoms, I return home to test it all out again. I reset the PRAM with 4-chimes (it seems that one chime restart isn't enough for some cases) and try a new PRAM battery. Most articles point that without a proper voltage from the battery, the motherboard will get very confused and behave erratically. I find that replacing this and fully resetting the PRAM does not work.

DSC06106During the day, I purchased a floppy drive, floppy disks and another SCSI cable from a PC shop in the city. The cable only had a total of three plugs on it, so I plugged one end into the motherboard, the middle into one of the two disks and the existing terminator on the end. Presto... the bloody disk booted. It seems that, in my efforts to install the CD drive, I've fractured/damaged/destroyed the original SCSI cable. This cable had bends, folds and twists in it already, so I can only imagine that I've fractured the wires inside those folds when I was manipulating the CD drive into position.

Do you get the flashing question mark or just a grey screen?
The root cause here ended up being a fractured, old and tired SCSI cable.
Replacing it got my Quadra booting again.

Either way, it was a relief to find the machine booting again. I threw the CD drive in the bin as it wouldn't even power up anymore and found another on eBay. Do be careful when buying crappy old HP hardware to stick in rare, somewhat fragile, vintage Macintosh machines!

Update: It turns out that non-Apple SCSI CD-ROM Drives get their trays locked. As found out from trying the second drive below, Apple only wants you to use the eject button or drag-to-trash on the desktop. They try their hardest to prevent you from ejecting the disk manually to prevent data issues.

IO-Data RX4420

My second drive arrived... it's an IO-Data RX4420 from Japan. An Australian seller had it and it's a relic from the same era as my Quadra. It's in an external case that runs on the 110v Japanese standard. I didn't feel like voltage converters and the like, so I ripped it out of it's case (put that aside for safe-keeping) and attempted another internal install.

DSC06170 DSC06172 DSC06181

I set the SCSI ID to '1', knowing that one HDD was '0' and the other was '2'. All installed and ready to go, I booted the machine. For the first 10 seconds I could happily press the eject button and the tray would pop out. Once on the Macintosh desktop, the drive stopped ejecting! Pressing the eject button would cause the drive to attempt an eject, I could hear the motor humming, but the tray would not move. The tray had been locked!

Ok, Mac OS has locked the drive? Is this punishment for a third-party unit? After a little googling I came to the conclusion that you must have third-party drivers for third-party CD-ROM drives. Needing another driver also means that if I ever want to boot from this drive then I'll need a floppy boot disk with the drivers copied on. As that my drive was Japanese and made in 1999, I assumed that I was nearly out of luck to find a relevant Macintosh driver... googling was resulting with nothing.

I then stumbled across Third-party Optical Drive Support. It explains how to edit your Apple CD-ROM Extension to support any CD Drive. I downloaded ResEdit and gave it a go.

cdrom-ext-1 cdrom-ext-3 cdrom-ext-2

As per the instructions I dragged the extension to the desktop and duplicated it (command-D) as a backup. (Note that shift-command-3 takes screenshots on the System 7 and MacOS 8.) From here you need to open the extension in ResEdit, navigate to "DRVR" and then the first driver in the list marked "42". Select it and then choose Resource -> Open in Hex Viewer. Edit the offsets as mentioned in the link above. When editing, make note of the next data block (7e09 in this case.) Highlight the data block you're trying to replace and start typing. Everything will shift around... but once you've typed in 4 characters it should be back and you should have your new value in the correct spot. Always compare the next line again to audit your own changes. If required, you can go to Resource -> Revert this resource to undo all changes, or command-Z to undo the most recent edit.

I saved the extension and dropped it back into the System Folder. Unfortunately, upon restart the boot process froze whilst trying to load extensions. Was the base MacOS 8.1 "Apple CD-ROM" Extension ever going to work with my drive? I attempted to upgrade to "Apple CD/DVD 1.2.2" as it was mentioned to work with "older Macintoshes." Note that you can get all the drivers here. After throwing the extension in, I rebooted without the mod. No go... Apple CD still indicated that the drive was not responding. So I modded it and rebooted... same result, freeze during extensions load. I held down shift on the next try and booted without extensions. After verifying the resource hacks on the driver, I decided that 1.2.2 was a no-go. 1.3.1 failed as well.

Hindsight: At this point I was using AppleCD to test if the drive was working. As that the tray was locked, I had not put a CD in. I'm wondering if it was working (as it was showing in SCSI Probe) and I just needed to jimmy the thing open.

I gave up... seems I need a real Apple CD Drive to get MacOS 8.1 going... Using Yahoo Japan (and my limited Japanese), I searched once more for the model number of the CD Drive and found out that the company didn't support it under MacOS at all. There's also product information from IO-Data here that never mentions MacOS (thank you again Web Archive!). Apple clearly states that you'll need a third-party driver. There's discussion here on 2-chan where it seems that a user has asked about compatibility, tried it and never responded... can't be good news.

Or is this really the end? I then found a link here with third-party one-size-fits-all cd-rom drivers. The indicate that CD Sunrise works with 99% of CD drives. To get it to work, one must download the archive from that link, extract it somewhere and drop the extension on your system folder. Didn't work...

And now the rabbit-hole continues. Here's a link with a crap-load of drivers to try... I installed Apple CD 5.3.2 and then followed the hack described here. Low and behold it was the same hack as I'd done on 5.4.2. ... No good....

cdrom-ext-applecd cdrom-ext-fwb cdrom-ext-fwb-2

Trying the FWB CD-ROM Toolkit 2.3.1 gave me a little bit of hope. It could see the drive but it told me that I needed a driver to do anything with it. I didn't really have any ideas on what to do next.

Since I had the network going, I started copying games over to the Quadra. One was a CD image and needed to be mounted by the Toast 4.1.3 application. It turns out that Toast comes with its own CD driver extensions? Prior to testing these, I opened Toast and it instantly saw the drive and happily gave me device information. Clicking the eject button had the same effect as the physical button on the device; it tried to work but was locked. At this point I started to wonder if it was really locked... So I stuck a screw-driver in the pin-hole to eject the tray. It jumped out. I then closed it and tried to eject from Toast. It worked. What's going on here?...

Based on this good news I dropped the Toast CD Reader extension into the extensions folder and rebooted. The CD Drive was locked, so I forced it open and slapped a CD in. It mounted the disc onto the desktop. It seems that the tray-locking mechanism just hates Apple. I attempted to eject the CD from the desktop and the drive was locked! I had to physically force-eject it again. For good measure I tried the CD Sunrise driver again. It also worked!

Urgh... I now had a good-enough working CD Drive. I now wonder if the previous HP drive actually worked. It may have just been suffering the same tray-locking symptoms. The Apple drivers (un-modified) may have also worked, if only I'd bothered to try and force a CD in the drive. I'll go back and test this when I rebuild the machine on fresh HDDs.

Either way, the locking meant that the drive was still highly unusable. There's gotta be a way to disable the tray-lock mechanism. Should I break the drive open and remove its ability to lock itself? It should be as simple as disconnecting a plastic pin somewhere in the mechanism... or is there a driver that does the proper 'unlock' prior to eject?

NEC CDR-1410A

Although I had success with the second CD Drive, I had already accidentally won an 'official' Apple SCSI drive for AUD$10. It's an NEC, so it's not as 'official' as I had expected (no Apple logo on it.) The model number is NEC CDR-1410A. I checked the SCSI ID configuration and saw that it was set to ID '3' (J0+J1). I pulled the second jumper to set the ID to '1'. Prior to shutting down the Quadra, I disabled CD-Sunrise and enabled the original Apple CD-ROM extension... should work right? It's an Apple CD-ROM drive!

Plugging the cable in, I booted the system and the SCSI device did not show in Apple System Profiler under Devices. It was half-way along the SCSI chain, and the hard disks still worked fine. Shutting the machine down, I inspected the cable and jumpers. The internal termination was on! So.. it seems that if you have a device mid-way with TE enabled, it'll only knock out that device? I thought it'd then block the rest of the chain too!

I grabbed a pair of tweezers and removed the TE jumper. Booting back up, the device now showed in Apple System Profiler. I could even eject the tray. I grabbed a MacOS 8.5 CD I had laying around and inserted it. Nothing. Not even the standard CD action of "is there a disk inside me?". On a hunch, I re-enabled CD Sunrise and disabled the Apple CD-ROM Extension. I manually (although not forcefully) ejected the CD for good measure and rebooted.

Once back at the desktop, inserting the CD saw MacOS 8.5 appear as an icon. I then tried the eject button on the drive to no avail; it was locked. Fortunately, this time that was expected. You should not be ejecting mounted disks. For fun, I dragged the mounted CD icon to the Trash and watched the bloody CD eject the tray, offering me a warm CD. How wonderfully frivolous when shit just works.

DSC06239 DSC06242 DSC06243

All for fun, I then disabled CD Sunrise... This meant that all CD Drivers in the Extensions list were disabled. The drive still worked. At this point I decided that black-magic was at play and I had no chance.

Just for good measure, I returned to the Mac Driver Museum : Disks and noticed that there was an NEC Speedycd v5.31a driver. Note that these are also actually downloadable from the official NEC site also!

Upon installing the driver it turns out that my model isn't supported. I installed the driver anyway and restarted the Mac. The SpeedyCD utility seems to cache random "often used" files to your harddisk to 'speed up' CD access. Interesting theory... Otherwise the software added no extra functionality.

Since it is now working, this is the drive that will carry my Macintosh into the multimedia age! (although in the dark ages, it seems, I need better lighting for my photos!) I'll try booting off it tonight. I want a fresh install of MacOS 8.5 on my new HDDs, which all appear in another post shortly.

Booting from a non-Apple SCSI CD-ROM

Some CDs aren't bootable and your Macintosh will never boot from them. You'll therefore need a floppy bootdisk relevant to that CD. Find an image and then learn how to make a boot disk on a windows machine here. You may also need to copy drivers over for non-standard CD drives. CD-Sunrise is usually a pretty good bet.

I had originally expected the NEC drive not to boot, but the MacOS 8.5 disk I put in there tried to boot on a restart. It didn't get far as the is for genuine PPCs only, not upgraded 68ks.

It turns out you can install 8.5 on the machine... but I'll create a new article on that. If you want to do it now then see the instructions here.

Apple PowerCD

I couldn't resist this item when I saw it on eBay. It's nearly a discman, but you actually need the base to make the whole thing function. It turns out that half of the required 'brains' to even spin the CD are in the base! There's a forum post here that details this more.

DSC06296 DSC06288 DSC06289
DSC06290 DSC06297 DSC06299

This thing is pretty! It's smaller than I expected. It's not too heavy either. It played a burnt audio CD flawlessly through both the 3.5mm audio jack and the A/V output cable. This cable has Stereo RCA Audio leads and composite video, the video being for PhotoCDs.

It also came with software: Kodak PhotoCD (CD), Apple PowerCD software (CD) and a driver floppy. I'd purchased the Apple Design speakers, which sound great for their age with this unit! My test audio CD was non other than the soundtrack to The 7th Guest and The 11th Hour: Fat Man And Team Fat, The ‎– 7/11.

There was no SCSI cable, so I had to find one online... eBay was only offering results from the USA. The cable required is a DB-25 SCSI to Centronics 50-pin. These are chunky and heavy and old. Be careful not to buy a parallel printer cable... they look very similar but only have a 36-pin Centronics plug on the other end!

The cable arrived and was a nice length to allow the PowerCD to be placed under the monitor. Everything fitted together well and I suppose I'd really fluked buying the correct cable. Note that this (like eSata) needs to be configured, plugged in and set up prior to booting your Macintosh. SCSI is not plug-and-play!

DSC06300 DSC06306 DSC06314
DSC06316 DSC06317 DSC06319

The display on the unit changes to 'data' once the Macintosh initialises it. First boot saw a disk mount to the desktop, but AudioCDs would do nothing... zero recognition. I then remembered that the drive came with software and installed the AppleCD CD Player. On reboot, inserting an Audio CD made finder crash in MacOS 8.1! What the hell... I haven't since gotten an Audio CD to work. Since the install, unformatted floppies also now make Finder crash. Yey!

I used the PowerCD to install MacOS 8.5 (of which I actually have a legit copy of!) The internal drive kept throwing data errors (blaming on drive speed vs. error correction capabilities vs. scratches) and so, although it took over 50minutes, I switched to the PowerCD for that authentic experience!

I had no further luck with MacOS 8.5. I had to install the Apple CD Player to get the application to work with the drive and it would see data CDs fine... Audio CDs would cause the system to lock up though. It actually turns out that MacRumors has a little hint that 'getting it to work with Macintoshes of the day was tricky'. I wonder what I have to do to make it function...

It turns out that the Apple CD Player is not the way to go... the PowerCD Installer installed PowerCD Audio (under the Apple menu) and this is to be used. I gleaned this information from the PowerCD User Manual. With this open, inserting an Audio CD and hitting play also causes Finder to lock up! I wonder if there's software updates somewhere? Here they are, and also over here. Thank you Macintosh Garden!

The drivers did no good... they're the same as the version on the floppy that came with the PowerCD! The installer locked up trying to install the PowerCD Extension, I assume it was still in use? A reboot made it obvious that the drivers had uninstalled. So I reinstalled from the download once more, rebooted, inserted an AudioCD and everything locked up again.

Final test... remove the internal CD drive... maybe the PowerCD only ever expects one CD drive on the machine. After the huuuuge wait from a cold boot (too much RAM! 256mb makes the machine take minutes to switch on), the same scenario occurred. Who cares... no more Audio CDs. For fun, I connected the internal drive again and threw the Audio CD in there... no lockups, but no response at all... didn't mount, could easily eject.

todo: test CDROM Toolkit.

Further References:

Pioneer DVD-303S-A

As you can glean from the model number, this is a DVD drive. It was reported to work with A/UX installs and so I purchased one from an Australian seller on eBay. It's a slot-loader and makes some pretty cool noises.

DSC06470 DSC06472

MacOS 8.6 hated this drive. I still need to test CD Sunrise and Toast Extensions, but it wanted nothing to do with it on the base drivers. Meanwhile, A/UX found it and installed perfectly!

Quadra 950 CD-ROM Case Bezel

The case doesn't allow the easy insertion of a CD-ROM Drive. You'd have to destroy the face-plate to mount the drive directly. Due to this, I whipped open Tinkercad and designed up a new bezel.

cd-bezel cd-bezel-2 DSC06207

Find more information on this here.

28Apr/150

Quadra 950: Ethernet and Internet

I purchased both a Nubus Ethernet card and an Ethernet Transceiver. The transceiver has arrived and is plugged in, AppleTalk worked perfectly first time.

Make sure that when you change the Connect via interface in the AppleTalk Control Panel that you CLOSE THE WINDOW.
Your changes wont actually take effect until you do this!

Ethernet Transceiver

This device plugs straight into the port on the back of the case. Most Macintoshes (if not all) of this era have this port. I imagine they made this obscure port due to the amount of differing network technologies at the time. Nowadays we just have Ethernet, so most devices simply have the same CAT-5/6 port on the machine. Either way, once plugged in, the green link light lit up and the orange even started in tune, following netflix traffic on the network.

DSC06153 DSC06156 DSC06158

MC3NB Rev.B2 Asante Ethernet Card

This card is a relic and reminds me of the good old ISA days with BNC (thinnet networks.) It has an AUI (or AAUI) port for hooking up a transceiver ... although it already has a UTP/RJ45 connector on it, so I just need to plug it in!

DSC06212 DSC06216 DSC06217

Slapping it in the tower was straight forward... I put it in a higher slot than the video card, leaving ventilation room for the PowerPC card.

DSC06246 DSC06232 DSC06234

Once installed, I powered on the machine. As you can see from above, all the existing Ethernet extensions failed. Once on the desktop, the standard "AppleTalk is not working" dialog appeared. First guess is that I need drivers for this device. I jumped on my main PC, visited The Mac Driver Museum: Network and downloaded Asanté Ethertalk Installer Version - 5.2.9 (636k, 800k disk image) as the 5.6.1 is a broken FTP link. I then booted up a2server and copied the hqx into the G2FILES directory. I had to reboot the Quadra with the above Ethernet Transceiver plugged in to get the file across!

DSC06238The install went well and forced me to reboot. I had forgotten to disable the failing Ethernet extensions so the boot up was slow... they take their time to report a fail. A new icon appeared at the end of the boot extension list for the Asante driver. At the desktop, AppleTalk still failed to start, but this was expected as it didn't know to switch to the new interface. Opening the AppleTalk control panel and selecting "Ethernet Slot 3" worked like a charm.

Testing the Internet, I double-clicked the 'Browse the Internet' icon and IE threw the usual "cannot connect to internet" error. TCP/IP was still trying to use the old Ethernet interface. I therefore went in to the TCP/IP control panel and switched the interface to the newly available "Ethernet Slot 3". Remembering to close and save settings (leaving as DHCP), hitting refresh on apple.com.au got me straight on the net... until IE threw an exception and I landed in MacsBug! To exit the MacsBug debugger (I had no intention on fixing IE), type in es, the abbreviation for 'Exit to Shell'.

Sharing data

I used CockatriceIII as a fileserver. It works with all versions of windows and uses the winpcap library for ethernet. BasiliskII will work if you have something less than Win7-32bit. Both machines saw each other instantly. Even better, I'd had my MacOS 8.1 CD inserted on CockatriceIII and could just share it to the Quadra. I started installing on a blank partition (the machine came with 2 SCSI drives with 4 partitions each... overkill?)

CockatriceIIIAppleTalk DSC06165 DSC06166

If you need OS versions, then you may find some options here, here or here. *ahem*.

Note that from here I loaded up a2server on the network... following their instructions, the vm came up perfectly in VirtualBox (make sure you select a WIRED ethernet adapter, in bridge mode and promiscuous-mode:ALLOW ALL.) Also note that you should not use the A2FILES share. This has a limitation that all file names need to be upper-case and max 15 chars. I talk more about this in another post.

Use the GSFILES folder in a2server when sharing to Macintosh Computers! It supports proper file names and lengths whereas the A2FILES is for Apple II ProDOS files.

Further References

There's a lot of drivers available at the The Mac Driver Museum: Network. Note that the site also has drivers for just about every other peripheral for a machine of this vintage.

If you need network tools, then visit Old Macintosh System Software and TCP/IP. You'll find all of the basic low-level networking tools to diagnose issues.

There's drivers and tools over at Glenn's ethernet cards and drivers page.

A lot of it relating to the SE/30. Apple Fool has the Classic Mac Networking Guide which will tell you everything you need to get your Macintosh on the Internets.

And finally, the System 7 Help Center provides more network drivers and articles on how to install, configure and work with System 7 in the 21st century.