Melbourne, Australia – August, 2018
There's been a bit of heritage activity around Melbourne recently and I thought I'd post a few pictures up-front, rather than letting them rot away in the albums.
Steamrail's Snow Train
This consist runs twice a year from Southern Cross to Traralgon. From there you can venture off on other tours of the countryside. It's usually run by two R class steam locomotives, as it was this year. I happened to ride on it last year, so instead chose to take photos of it this year.
The train ran on Sunday, 5th August. This perfectly aligns with the usual Sunday trash and treasure market adventures, and so I waited near the Oakleigh market. This also happens to be where the Skyrail comes back to earth, so I attempted a shot of the train coming off the viaduct.
As you can see, R711 was up front and they powered through beautifully.
Excuse the long wind-up, you could hear the train coming well before you saw it!
707 Operations with R707 and A66
Another Sunday (26th August), another set of flea markets and another consist of vintage goodness. It even went the same way... and so did I. But this time I had enough time to get home and deliver the randomness I picked up before it came past the apartment. Therefore... the usual spot first, with the new location. It's a little harder to get the right shot as the train was on the furthest track!
And the poor steamer was getting lugged along behind. Perfect logic though, no running around when it wanted to return in the other direction!
It then came back through and I caught it around the bend at South Yarra. There were a few random trains in between though... like the steelie!
A multitude of sparks...
And yes.. then the main event...
And so that was the first trip... To Berwick and return. The second leg was to Stony Point and back, with a 20min stop at Patterson on the way there.
The stop wasn't overly practical... as it was really for the passengers and there wasn't much platform to stretch out on.
I snuck down to the fence and, regardless of the lighting, I snapped away as the train departed.
Always perfect to see these tours sell out and history preserved!
ASUS Media Bus (aka not-PCI-64-bit)
I'd picked up an old motherboard from an eBay auction and had seen a PCI slot with an extension.
Here I was thinking it was PCI 64-bit...
I grabbed the 64-bit SCSI card that I'd installed in my G4 Graphite Macintosh (which has a suite of 64-bit slots) and quickly realised it wasn't what I thought it was!
Ok.. it doesn't fit... let's look closer?
From the photos above, it doesn't take a genius to work out that it's actually a Media Bus 2.0 slot by ASUS. Turns out they tried, for a short while, to make their own proprietary slot that combines PCI and ISA. The brown socket is actually just a condensed ISA slot and the cards that fit are usually dual-purpose, combining video and sound or SCSI and sound.
V1.2 and V2.0 Compatiblity
Note that there are two versions and I failed. I went gung-ho and purchased an 'ASUS Media Bus' card on eBay without paying attention to the version. This card was meant to be the ATI Mach 64 + Sound Blaster card and I was really happy... saving slots it a great idea! A week after purchase, whilst the card was still in the mail, I did a little more research and realised that this card would be ASUS Media Bus 1.2, not 2.0! I went back to the seller and found a SCSI + Sound for Media Bus 2.0 and ordered that too.
A few weeks later (thanks to surface mail), a missed-delivery slip appeared in my letterbox and I went to pick up the video+sound card...
Sound? Check! Video? Nope... What? The card I had ordered second arrived first! This can't be good. I still had a V1.2 card in-flight somewhere... would it arrive? I purchased a V1.2 motherboard I saw on eBay anyway; it was cheap and I wanted to use this card... when it arrived!
Anyway, back to this card: It's the PCI-AS300 Adaptec AIC-7880 SCSI + Vibra 16 PnP Sound.
It fits nicely, as one would expect... and works perfectly too!
The V1.2 motherboard then showed up (before the V1.2 card!) and, just to test, I tried to see if the PCI-AS300 would fit...
Nope... millimetres out! I actually think the V1.2 card is lost and I now have a nice and clean Pentium board for another machine... oh wells... Note that the V1.2 slot just says MEDIA whereas the V2.0 says MEDIA BUS 2.0.
I hope others don't make the same mistake!
INTERLINK – Reverse-Engineering the Protocol
I've recently been playing with INTERLINK. Firstly, it was between two real machines, but then I managed to get DOSbox to talk to another DOSbox instance and a real physical PC. From here, there was a thought... why need DOSbox to host the INTERLINK server when I could possibly emulate the conversation and then create an app that'd work on all versions of Windows (or other OS') and then allow easier serial transfers to older equipment.
This post will be a work in progress for quite a while. I'll be updating it as I find time to work through the 'conversation' between the hosts... I might also spend a little time on reversing the actual source of INTERLINK itself.
Snooping in on the Conversation
As per the previous post, I created a quick .NET app to listen in to the serial conversation. This was done via the help of Eltima's Virtual Serial Port Driver. A pair of virtual ports was created and DOSbox was hooked onto one side. From here, I hooked my app onto the other side of the virtual pair and then into the real physical port. A real computer was then hooked onto the end of that port. You could also use two DOSbox instances here, along with two pairs of virtual ports.
You can download the source of my serial snooping app here.
The Conversation
This is where it now gets a LOT harder. Below shows the client (green/left) talking to the DOSbox server (blue/right). From the conversation, the client works out what drives are shared: A: and C: to D: and E:.
A: and C: | A:, C: and D: |
---|---|
0xAA
Hello?
Hi!
0x00
0x55
0xFF
0x5A
0x11
0x80
0x7B
0x02 0x00 0x00 0x5D 0x03
0x80
0x81
0x7A
0x22 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01 0x01 0x00 0x00 0x01 0x00 0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xD9 0x73 0x50 0x42 0xAA 0x8D 0x75 0x72 0x1F 0x12
0x81
0x02
0xFD
0x02
0x04 0x82
0x79
0x21 0x00 0x00 0x00 0x00 0x00 0x00 0x0A 0x01 0x01 0x00 0x01 0x00 0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xF7 0x0C 0x71 0xEA 0xB0 0x04
0x82
0x03
0x83
0x78
0x24 0x01 0x01 0x00 0x16 0x06 0x03 0x03 0xFF 0xFF 0xFF 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0x95 0x6E
0x83
0x00
0x80
0x7B
0x57 0x01 0x0A 0x16 0x06 0x06 0xFF 0xFF 0xFF 0x00 0x02 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xC2 0x08 0xC2 0x08 0xC2 0x08 0x42 0x28 0x42 0x28 0x42 0x28 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xF2 0x73
0x80
0x01
0x81
0x7A
0x02 0x1C 0x00 0x1B 0x1D
0x81
0x02
0x82
0x79
0x17 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xD5 0x2F
0x82
0x03
0x83
0x78
0x02 0x1C 0x02 0x3B 0x5F
0x83
0x00
0x80
0x7B
0x17 0x28 0x32 0x36 0x38 0x4D 0x62 0x29 0x00 0x00 0x00 0x4D 0x53 0x2D 0x44 0x4F 0x53 0x5F 0x36 0x00 0x00 0x00 0x00 0x00 0xCA 0xC7
0x80
0x01
Other side receives drive D:\ 0xFC
Ping
Pong
0xFC
0xFC
Ping
Pong
0xFC
0xFC
Ping
Pong
0xFC
|
0xAA
Hello?
Hi!
0x00
0x55
0xFF
0x5A
0x11
0x80
0x7B
0x02 0x00 0x00 0x5D 0x03
0x80
0x81
0x7A
0x22 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01 0x01 0x00 0x00 0x01 0x00 0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xD9 0x73 0x50 0x42 0xAA 0x8D 0x75 0x72 0x1F 0x12
0x81
0x02
0xFD
0x02
0x04 0x82
0x79
0x21 0x00 0x00 0x00 0x00 0x00 0x00 0x0A 0x01 0x01 0x00 0x01 0x00 0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xD9 0x73 0x50 0x42 0xAA 0x8D 0x75 0x72 0x28 0xD6
0x82
0x03
0x83
0x78
0x24 0x01 0x01 0x00 0x16 0x06 0x03 0x03 0xFF 0xFF 0xFF 0x00 0x02 0x03 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0x77 0xE9
0x83
0x00
0x80
0x7B
0x57 0x01 0x0A 0x16 0x06 0x07 0xFF 0xFF 0xFF 0x00 0x02 0x03 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xFE 0xC2 0x08 0xC2 0x08 0xC2 0x08 0xC2 0x08 0x42 0x28 0x42 0x28 0x42 0x28 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xF4 0x61
0x80
0x01
0x81
0x7A
0x02 0x1C 0x00 0x1B 0x1D
0x81
0x02
0x82
0x79
0x17 0x00 0x35 0x33 0x36 0x4D 0x62 0x29 0x00 0x00 0x00 0x00 0x53 0x2D 0x44 0x4F 0x53 0x5F 0x36 0x00 0x00 0x00 0x00 0x00 0x00 0x23
0x82
0x03
0x83
0x78
0x02 0x1C 0x02 0x3B 0x5F
0x83
0x00
0x80
0x7B
0x17 0x28 0x32 0x36 0x38 0x4D 0x62 0x29 0x00 0x00 0x00 0x4D 0x53 0x2D 0x44 0x4F 0x53 0x5F 0x36 0x00 0x00 0x00 0x00 0x00 0xCA 0xC7
0x80
0x01
0x81
0x7A
0x02 0x1C 0x03 0x2B 0x7E
0x81
0x02
0x82
0x79
0x17 0x28 0x35 0x33 0x36 0x4D 0x62 0x29 0x00 0x00 0x00 0x00 0x53 0x2D 0x44 0x4F 0x53 0x5F 0x36 0x00 0x00 0x00 0x00 0x00 0x78 0xF4
0x82
0x03
0xFE
Ping
Pong
0xFE
0xFE
Ping
Pong
0xFE
0xFE
Ping
Pong
0xFE
|
The grey boxes are my annotations for what I believe is occurring. More will be added as I work it all out.
Melbourne – The view from Tarneit Station
I've just recently posted photos of B74 leading through Tarneit and it occurred to me that I've now got a historical record of the changes to the landscape in the area.
The amount of building that's been going on behind the trains in the scenes below says it all. The first shot is from July 2016, we then have October 2016 and finally July 2018.
Sure, 2 years is a huge gap... things happen... nappy-valleys get built... but... it's just cool to see the change when I never even intended on recording it! Melbourne's urban (or rural?) sprawl is actually pretty hideous... these poor people will spend a quarter of their lives in their cars parked in traffic jams on highways.
DOSBox – Serial INTERLINK to Another PC
So, I recently had Interlink running between two REAL machines. It occurred to me though: Wouldn't it be cool if we could use a USB-Serial adapter on a newer machine and use Interlink from DOSBox to transfer out files? You could then copy anything into the DOSBox HD and get it onto your vintage unit. Great if you have no network, CD or are just sick of unstable floppy disks!
The requirements
DOSbox happily talks to real COM Ports. We'll want DOSbox running real DOS, so follow a guide like Transmission Zero has here to install DOS to a read HDD image. Firstly, download an SVN build of DOSbox. Then download the 256mb image and get your DOS disk images here. After copying everything into the dosbox folder, grab the dosbox configuration from your user profile (you might have to boot DOSbox up once first!) and bring it over as well. I renamed the disk images to make it easier and then edited the configuration as follows:
[autoexec] imgmount 2 "hdd-256mb.img" -size 512,63,16,520 -fs none boot .\D1.IMA .\D2.IMA .\D3.IMA
Run DOSbox and you should be presented with the DOS installation screen. Use CTRL-F4 to rotate through disks. Finally, you should be at the DOS prompt!
Serial Ports
Now for the serial configuration. First up, I'm going to show you a neat trick to get everything tested and working. We're going to use a virtual serial port between two instances of DOSbox to prove that Interlink works in the emulated environment. There's a plethora of virtual com ports available for Windows and they all vary greatly... officially I want data to flow from one COM port to another virtual COM port, so I'll need software that'll do this; you'll find that a lot just want to send data over a network. If you have Windows XP or lower (Windows 7 might still work also), then use com0com. Otherwise, if you need signed drivers then Eltima's Virtual Serial Port Driver is pure magic... but expensive. You get a 14-day trial with the standard version, so plan ahead and use it as much as possible! I've actually sent out a plea for help, asking for a cheaper license for just a single 'null-modem' serial port.
So, you've installed a pair as the above picture. To get here you simply installed the VPSD and chose all default values. You now have a COM1 and COM2... or maybe you have COM20 and COM21... (my laptop has no REAL comports, so COM1 and COM2 were available) regardless, we need to edit the configuration (as per the DOSbox manual) of your DOSbox instance and update the serial1 line to:
serial1=directserial realport:com1
Save it, close it and run dosbox. You should see one connection on one of the virtual ports in the port configuration application...
Whilst DOSbox is running, edit CONFIG.SYS and add the line DEVICE=C:\DOS\INTERLNK.EXE to the bottom. Once this is done, close DOSbox and copy the entire folder to a new folder. Rename this to server, or somesuch. Go in and edit this configuration to point to the second comport of your virtual two.
From here, you can boot up both DOSbox's and see that they connect to either side of the virtual com ports. You can then run INTERSVR from the prompt of one node and INTERLNK from the prompt of the other and you'll then connected! Totally pointless... but we've proven that Interlink via serial port works in DOSbox!
Intercepting data...
Just in-case I wanted to spy on the data, I thought I'd try something quickly with C# and the SerialPort class. I set up two pairs of com ports, connected DOSbox #1 to COM1, DOSBox #2 to COM4 and limited their speeds to 9600. I then used the following code to write a quick WPF app to see if I could get the data to traverse...
<Grid> <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition/> </Grid.ColumnDefinitions> <TextBox Grid.Column="0" Name="FromText" TextWrapping="WrapWithOverflow"></TextBox> <TextBox Grid.Column="1" Name="ToText" TextWrapping="WrapWithOverflow"></TextBox> </Grid>
That's the WPF, just two text fields to see the data... then the c# to hook it altogether...
public string FromData { get; set; } public string ToData { get; set; } private SerialPort port1 = new SerialPort("COM2", 9600, Parity.None, 8, StopBits.One); private SerialPort port2 = new SerialPort("COM3", 9600, Parity.None, 8, StopBits.One); public MainWindow() { InitializeComponent(); port1.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived); port1.Open(); port2.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived); port2.Open(); } private void port_DataReceived(object sender, SerialDataReceivedEventArgs e) { var port = ((SerialPort)sender); byte[] data = new byte[port.BytesToRead]; for (int b = 0; b < port.BytesToRead; b++) { int fromPort = port.ReadByte(); data[b] = (byte)fromPort; } if (sender == port1) { port2.Write(data, 0, data.Count()); Dispatcher.BeginInvoke((Action)(() => { FromData += " " + BitConverter.ToString(data).Replace("-", ""); FromText.Text = FromData; })); } else { port1.Write(data, 0, data.Count()); Dispatcher.BeginInvoke((Action)(() => { ToData += " " + BitConverter.ToString(data).Replace("-", ""); ToText.Text = ToData; })); } }
Starting the app saw the relevant COM ports fire up in the port configurator... then I booted DOSbox:
Hahaha... it's 99% working. I wonder how hard it'd be to disect the entire chat and build an emulator. I had to limit everything to 9600 as my code doesn't auto-negotiate the speed. Without the limits, the client Interlink was speeding up to 115200 BAUD and the server had no idea what was going on.
I'll dig into those bytes in another post... the data looks pretty simple and might be easy to emulate... anyway... what was the point of this post? Oh yeah!
Talking to real metal
Back to that 286 from the previous post about Interlink. Let's talk to it! This time, instead of virtual ports, we're going to talk to real ports. I've got a USB Serial port which will help out a lot here.
I used this recently when talking to the Apple II. It's always good to know that things work before mucking around with them. I also ended up using the real serial port on my main desktop. Either way, any serial port will work.
Install your COM port and make sure your DOSbox configuration is correct as per the hardware port number. Mine is COM1 on this main desktop.
serial1=directserial realport:com1
Then simply boot up as you've done before with DOSbox. This time the client (or server) will be over the real wire.
Crikey! It just-worked(tm). The laptop happily saw the data in DOSbox. Easy file transfers! I wonder if I can make a Windows app that'll just let you share a drive?!
DOS – Serial File Transfers
This was meant to be easy... I was building a 386 for sale on eBay and had a spare 286 laptop hanging around. I was also selling a 4-metre NULL-MODEM cable which I wanted to list as 'tested'.
First, a warning: Don't let the magic smoke out
There's an age-old notion of magic smoke. This smoke is contained in electronic components and, most importantly, needs to stay inside them. Usually the mistakes of an impulsive, rash, impatient user will cause the smoke to escape. Once it has, there's usually no going back... or if there is, then you'll be spending a lot of time/money trying to get back to the spot you were at prior to the damage.
In this case, I did it to the old 286 laptop used below. On the back of the machine, there's two female DB-25 ports. They're not labeled and I thought I was simply in luck! They've already put a correctly oriented serial port (COM2) on there for me!
Turns out not... turns out one is the printer port (duh!?) and the other is for an external floppy drive. Regardless, I plugged my null-modem cable into the printer port and one electrolytic capacitor started cooking. I turned everything off quickly and inspected the damage. Yup, just one black capacitor (it was meant to be orange!) Unfortunately, when I powered the unit up, the capacitor kept cooking! Currently I've just disconnected it... could just be that that cap was shorted or reverse-polarised and fried... could also be that the whole LPT1 port is dead... gonna be hard to test.
Anwyay... I later found the part that labeled the ports... DOH! Where were we?...
InterLink
Would you believe that DOS 6.0+ came with serial transfers as standard? There's an application in-built known as INTERLINK. From here you just set one machine as the server with INTERSVR.EXE and the other as the client with the INTERLNK.EXE application itself.
The basic idea is to load the INTERLNK.EXE as a driver first, in CONFIG.SYS. You can configure extra options here, but if your connection is correct then it should just-work(tm).
Cabling
The best method is to use a specific printer cable, affectionately known as a LapLink cable. This is a cross-over cable for printer ports and is only used for transferring of files. The next best bet is a null-modem cable which does the same thing, but via the serial port, and supposedly slower as there are less data lines.
We're going to use a null-modem serial cable today and you'll find any number of methods for creating one. You can get adapters that'll convert a standard serial cable, entire cables that are 'null-modem' or you can just create your own.
I had actually picked up a 4-metre 'null-modem' cable from a misc eBay auction and wanted to try it out. This had a male plug on one end and a female on the other and didn't quite make any sense. Hence it allowed me to plug it into the wrong port on the laptop (as mentioned above) and wreak havoc. After that little mishap, I decided to just use other spare parts and rig up my own.
I've spoken a bit about serial cables before, but the basic idea is that there's a DTE and DCE end. It's a standard client-server relationship. In our case, our servers need to talk to eachother, so we need to adapt then of of a cable to allow it to connect. The goal is to cross over the transmit and receive lines to have data transfer correctly. There's also some supporting wires to allow data-handling negotiations to take place. You'll find all the wiring methods on the Wiki page.
Somehow, I found both a female DB-9 and DB-25 in the junk box and followed the first diagram on the wikipedia page. It was only three wires, GND from 5-7, RX from 2-3 and RX from 3-2.
For the life of me, I couldn't get this to work. Interlink just wouldn't see the other end of the cable. I then tested both ports (just to see if I'd fried more parts in the laptop) with a serial mouse and everything worked fine. From here, it must be the cable, right? Maybe it needs to be more fully-fledged with the other data/signal lines linked up. This site seems to indicate further handshaking is required.
I browsed back to the null-modem page on Wikipedia to work out the other wires to hack together. Something then occurred to me... the DB-29 port has RX and TX the other way around! Why would they do this? Regardless, I simply disconnected my taped and twisted wires and ran 2-2 and 3-3 through directly.... the result? Success!
Configuring Interlink
Before you even think of entertaining this idea, make sure your ports are tested functional with a mouse and that you've gone over your wiring 16 times prior. Make sure you've re-read your serial port pinouts and that you have traced each wire. As mentioned above, the DB-25 RX and TX lines are swapped when compared to the DB-9 pinouts!
Once you're feeling game, edit CONFIG.SYS on both your machines and add the line DEVICE=C:\DOS\INTERLNK.EXE on BOTH server and client! At this stage, you can reboot the server. It'll boot up and will spit out a little 4 line message indicating that it's loaded the driver, what disks are mapped and what printer ports are mapped. It'll also tell you that no connection is available. Once at your command prompt, run INTERSVR.EXE. You'll be presented with a pretty boring screen indicating the current activity.
Now, return to the client and reboot it after saving changes to CONFIG.SYS. When this one boots up, you'll hope to see that it's connected. Initially I didn't and it just tells you in CAPS that no connection is available. At this point, it's actually checked all of your ports for a server. This is both your printer and COM ports, so it actually really means that it couldn't find a server! I had this a lot at the start and began fine-tuning the configuration, attempting to limit it to a single com-port with /COM:2 switches... but it ended up being my cable!
Once you're up though, it's all easy! As per below, you'll be told what drives/ports are mapped and it really is as easy as just switching to that drive and listing directory contents, or copying from them!
I pulled over A-Train (quite quickly, actually!) and tried to run it on the 286 Laptop... it's not VGA, so we didn't get far at all. But it's a 286 without VGA, what was I expecting? Might need to try Railroad Tycoon... I wonder if I can Interlink that over from DOSbox?
Editing InfoPath 2013 Form Code
Turns out Microsoft, in their infinite wisdom, decided that InfoPath Designer 2013 will only work with one specific version of Visual Studio. If you don't have the correct bits installed, you'll get this:
Browse over to here for downloads. Note that there's around 16 versions of Visual Studio 2012 to choose from. Do not choose Visual Studio 2012 Express! Also do not choose the standard 2012 version as it seems to be a link to some other random installer. Instead, select Visual Studio Professional 2012 and install it... You should then get the following error:
From here, just hit download (direct link here to Visual Studio Tools for Applications 2012) and then install/repair. I had tried to install it first and so had the extra message that it needed repairing.
That Time Microsoft Saved Apple
Hah, I don't often post things like this, but Gizmodo just had a great article reminding us of that time that Microsoft saved Apple. Back in the day, there was a patent fued from Apple, against Microsoft, who had decided that MS had used too much of their 'design' in Windows. As Apple had been in a financial mess, Apple actually had to bend over and apple MS to invest $150 million to keep it afloat. From this, MS got an amazing deal!
Jobs really does deliver the whole thing tongue-in-cheek and the crowd plays along well. The video, from start to end, is a perfect summation of the entire scenario back when Jobs had just re-taken the throne.
Sony Picturebook – CD-ROM, RAM, Linux and WiFi
This poor little machine has been in its box for quite a while. I bought this Sony PCG-C1VS/BW PictureBook a while ago from Retro ShopBox on eBay (highly recommended!), but just hadn't gotten around to really using it! It's in great condition, with the only real issue being a missing battery latch, but the battery is still nice and snug. I've recently picked up a CD drive for it and can now install random OS'sss! I also found a RAM upgrade to max the poor thing out.
64mb Memory Upgrade
This unit is limited to 192mb of RAM, coming with 128mb RAM as standard. This means that, somewhere in the universe, there's 64mb upgrade cards floating around. I had to scour Yahoo Auctions Japan to find the component and used Buyee to get it over here.
Installation couldn't be any more simple. Flip the unit over, undo the single screw, open the case and insert the card.
Yey! 176mb usable RAM after the Video took 16mb? (Below Linux only seems to think it's 8192kb... what's a CMS?)
PCMCIA CD-ROM Add-on
I found the CD drive on Yahoo Auctions at the same time as the memory upgrade above. It was to be more economical to ship them all at the same time.
Note that the PCMCIA card and cable are fixed; there's no ability to remove them. Sony thought ahead though! You can actually run the cable in the space provided under the drive, with the card finally popping into it's housing to be tucked away!
And check that out, the drive even comes with an eject pin! It's neatly housed underneath and locked away when the PCMCIA card is slotted in. Very handy to get your CD back our when you've disconnected the drive! No more paper clips.
I love that it shows the raw name of the ATA hardware. It's a Ninja!?
RedHat Linux 5.2
I purchased this beautiful boxed set from a flea market a while back and got it running on an old 386. I simply assumed it would just work on this unit also. The Transmeta Crusoe emulated an x86, right?
There was a floppy disk, but I can't run both a CD and Floppy drive at the same time... fortunately CD1 is bootable!
...unfortunately, that's where it stopped... no amount of boot arguments got the boot process any further than the above line.
RedHat Linux 7.2
It was obviously going to be an uphill battle from here, so I prepared myself with a little google'ing. Of course, people have already gone and installed linux before, so it was totally possible. The main point was to choose a distribution that was of the same era (or maybe even 6-months older than the unit) to make sure that there had been time for the community to make everything compatible. I ended up chosing RedHat 7.2. Note that this isn't RedHat Enterprise Linux! Well, I lie.. it is, but RedHat 7.2 is actually RHEL 2.1.
Default boot parameters caused resolutions that were well out-of-range for this unit's display (1024x480). I fought a little.. lowres nearly worked, but didn't let me actually see the required buttons! I decided to just go with text mode.
Make sure you configure the x-server at the end and set a resolution that will display! I chose 640x480.
From here the unit booted nicely! We were at the login screen, but I wanted to set the resolution correctly, once-and-for-all. XF86Config-4 had created by the Anaconda installer and was the file I needed to edit to get the proper modeline in. At the graphical login prompt, you can switch to any text console by pressing the CTRL-ALT-F[1-4] key combination. Hit CTRl-ALT-F1 and log in as the account you set up during install; or log straight in as root. Switch to root (if required) (su -) and then edit the XF86Config-4 configuration file located in /etc/X11. You'll need to use vi if you've installed no other editors! Browse down to the Monitor section and add the following ModeLine (press the insert key to start editing):
"1024x480" 65.00 1024 1032 1176 1344 480 488 494 563 -hsync -vsync
Once saved (: w q) you can press CTRL-ALT-F7 to get back to the graphical login screen. From here, choose Menu and then Restart X-Server... yosh!
Sound also actually just-worked(tm) out of the box, albeit a little choppy.
Wireless Networking: Belkin F5D7011 v1000
I have other PCMCIA Wireless cards, but this one happened to be in the same box as the laptop. To get it going, we'll need to use ndiswrapper which is a neat windows-drivers-on-linux translation layer utility, and luckily my card shows up as supported in the hardware compatibility list. Following the changelog, we'll need to download Version 1.48 2007-09-19 or earlier, as they dropped support for our Kernel (2.4) in version 1.49. The main list of downloads it here, and v1.48 is here.
As I've got no network yet, I'll need to either burn a CD, or use a thumbdrive... Don't forget to download the actual windows drivers (I need the F5D7011 v1000) and extract them on the windows side first. But! That link didn't work, so I actually found them here.
From here, things got murky... turns out 1.48 of ndiswrapper needs a newer kernel. I tried lower versions and found that 0.1 tried to compile. It actually built! But then told me that I needed a kernel with loadable module support. Oh good... should we recompile the kernel? Can't! No sources! Downloaded the RPMs for that here.. then performed rpm -i. Ok, sources... let's try make them... make config.. I just hit the enter key through most of it... made sure you that I answered the question to loadable modules. Then I followed this to build the required components: make, make dep, make bzImage, make modules, make modules_install. Copied bzImage to boot, edited grub.conf... reboot... fail...
I might just upgrade to a newer version of Linux.
Wifi: Buffalo WLI-PCM-L11G
Just worked when I plugged it in... no eth0 or wi0 though? WPA Supplicant would be needed, but it didn't want to run with my base 7.2 kernel. the earliest release.
Can't work with the driver? I have no idea if it even works with my card :(
Other distributions?
Moray Allan has a post regarding Linux on the C1VE. It details debian and installation procedures. But that would/could still cause me to have a kernel that doesn't support WPA. Either way, I scoured ISOs are available here.
Choose to Expert install and set a proper video mode, otherwise you'll get the screen above. I failed the installation as it's netinst and I needed my PCMCIA slot for the CD!
What about Puppy? Make sure you choose a version that is both non-uefi and non-pae! Currently to be found in here. It tried to boot the ISO and then failed to find it. So I copied the ISO to a USB and had that inserted on boot. It found it and tried to go further but then got stuck at the sound module, letting out an awful noise that seemed to be destroying the hardware!