Commodore 64: Tape Drives
This was really a lesson in jumping in the deep-end. I'd bought Double Dragon for the C64 recently on eBay, somewhat blindly, and found out that it was on datasette. It had been relegated to museum shelf until I happened across a cheap tape drive. Below is the story of learning how these things work.
The Datasette drive arrives
The seller had mentioned 'original box' and 'complete'. Indeed it was. I take it, though, that the box had been in the back of the shed for quite some time. The manual pages were mould-glued shut and the box was probably releasing spores every time I touched it. Due to this, I took photos for historical-sake and then destroyed the evidence; keeping only the actual drive.
The first game: Double Dragon
Double Dragon (for C64), released by Melbourne House (more information here), is a side-scrolling beat-em-up. The name of the company is confusing, as it sounds like it might be Australian, but was actually started in London. There is/was an Australian branch though, but it was known as Beam Software.
I'd played this game with my brother decades ago on the 286/386. Actually, I think nearly every Australian kid who grew up in the 80s/90s would've played this on a platform somewhere... maybe sega/nintendo/x86/amiga/atari/etc... Or even at the arcade! Either way, I wanted to check this out on the Commodore 64.
Intricacies of a Datasette Drive
This device has a single cable that plugs onto the PCB edge-connector 'port' at the back of the C64. It's a similar connection to the User Port; very raw and very cheap for Commodore to produce en-mass. The cable also has a grounding wire, but I don't quite know where you'd connect this to?
As you can see, everything was there, ready to hook up and run. I did just that, plugging the tape drive in, the power and TV. Switching it all on brought me to the usual BASIC prompt. I had heard the tape drive make a few faint clicks. The tape needed rewinding, so I let that run it's course (hah, how I don't miss having to do that!)
I'd found out, by accidently typing only LOAD previously, that this was the command to load tapes. After hitting enter, you get a prompt to press the Play button on the tape drive. So, at this point, I did exactly that. As I hit Play on the Datasette, the tape spun, then slowed down... then .... stopped......... Sure, this 30 year-old equipment had been stagnating in someones shed for decades... probably worn-out and dead.
As I was pressing the eject button, the tape started playing again... demons? ghost in the machine? not quite... turns out that a slight bit of pressure on the eject button releases the bottom-right 'guide' that keeps tension on the magnetic tape in the tape case as the tape is playing. This component was able to apply WAY too much tension and therefore effectively 'braked' the tape and cause the motor/band to slip.
'Band', you say? Yes. Band. No belts with teeth here... the drive mechanism is a cute little motor with a rubber band driving the other pulleys. There is then a further rubber band to drive the counter. 'How do I know this?', you ask? ... I took the thing apart as soon as I could!
The bands looked pretty stock-standard. A quick google showed zero results for replacements... so... searching around the house I found some probably-too-small substitutes. Having a band too tight will probably pull on components and put waaaay too much pressure on old equipment that may not be rated for it; but hey, you can only try!
Replacing the main band required 3 screws to be removed. See above. Once removed or loosened, you can slip the main band out.
I then put my two replacements in. Lo'and'behold... the bloody tape started playing. The results? The screen went blue for 15.5 counts, the tape paused and then a message came up: Found Double Dragon! Woah.. then a slight pause and then the tape continued. Then it was ... rubbish?
I gave up after 20s of garbage picture and noise... must be a crap tape or damaged head. But... it did recognise the data on the tape... I mean, it knew the name?
Another Tape: The Android
Along with the datasette drive, I also purchased a 5-tape set of miscellaneous games. I whipped the first one out, named Android and tried it. The C64 successully saw that it was indeed The Android and then ... more crap loading. Loosing heart, full bladder, too much Sapporo... I excused myself, letting it play...
Returned a while later and.. WHAT THE!?... It loaded!? So... wait... those loading images are expected!? That crappy video that would trigger an epileptic fit and that sound that's drilling into my inner-ear is normal?
Android Control (different name on tape vs. name on 'found' vs. name on title?) loaded, I played it for 5 seconds... but I'll try that again later.
Back to Double Dragon
So, now knowing that I need to sit back and wait... I slapped Double Dragon back in again. It took the same 15.5 counts to the Found Double Dragon message and then 58 counts to the next message.
Ok, we're getting somewhere... I hit space...
DAMN! 3 minutes of waiting... first time around the tape actually reached the end... that actually indicates a data issue. Second time around I got the error above. So Android will load, but Double Dragon wont! Might have to clean the heads... Will report back when I have time to try again.
Amiga 1200: Indivision AGA MK2cr
After toying with video output on the Amiga 1200, I'd come to the realisation that old technology just wont display well on brand new TVs. Due to this I therefore researched what everyone else on the interwebs did to get a better resolution from these old beasts.
Results came up quickly and all signs pointed to this device, the Indivision AGA MK2cr by Individual Computers (buy it here.)
This device piggy-backs onto the Lisa chip (the Amiga's Video processing chip), taking the output and then using it's own CPU to convert this to a more recent standard that newer TVs and Monitors can reproduce. It has upgradeable firmware and configurable options. It's stated that, out-of-the-box, you won't need to configure a single boolean value to get it running.
The price isn't low.. but all the reviews I'd read indicated that the value for money ratio was high. I therefore set out in pursuit to find one and came across some hits on Amibay, but watched as faster hawks snapped the prey up VERY quickly.
eBay showed some results also; and then it happened... the exact seller of whom I bought the 1200 from provided the device up for sale. I couldn't resist... Steve understands eBay and had treated me perfectly on the previous sale and so I grabbed this item. Turns out I got a few extra bits too, of which I'll report about later.
Unboxing
The item arrived in record time and it felt like Christmas had come early once again. I knew I had to take my time with this though... opening a ~30 year old piece of equipment (although you could tell it had previously already been modified) required patience and a steady hand.
The box came with all the required components. No software is provided as the device works primarily via its own firmware to detect the video signals being produced by the Lisa chip and convert them out to DVI-capable resolutions.
Installing it
All in all, this was a piece of cake. As mentioned, this Amiga 1200 had been toyed with before and so there was no hassle of breaking warranty seals and the like. Case screws were undone and then the top plate was removed.
I'd previously wondered what the extra DB-25 port was on the left-hand-side (as you look at the back of the machine) and this became clear on opening the case. It's a SCSI port for an accelerator that contains a SCSI interface. As you can see, no such accelerator is in the slot, so the internal end of the cable was sitting loose.
Over near the Lisa chip, I found the CF card to be sitting directly above it. Turns out that there's enough clearance above the MK2cr to have the CF sitting on top, so I unstuck it, flipped it over and stuck the new hardware in place. This went on with a nice click. Even pressure was applied to the center area, where the 4 holes are. Once in place, the cable was run (very tightly, it's the perfect length!) to the location where I'd removed the SCSI plug. Fortunately, I received a 3D printed plate to hold the DVI connector in place. I did need aftermarket screws to secure the plug in the housing; the nuts that were removed from the end of the DVI plug weren't long enough to go through the plastic plate.
First Impression
This always counts... this device was marketed as 'no configuration' ... reminds me of the old 'plug-n-pray' days. Sometimes I miss ISA/EISA cards and their jumpers of which I had supreme control over. Anyway, I hooked up a cheap VGA cable via a DVI-to-VGA adapter and plugged it into the TV. Powering it up... I nearly cried.
The ghosting was immense ... and I truly wasn't expecting this from a Digital product. A quick google lead me to believe that the DVI-to-VGA and then the VGA cable were trashing the signal. I also noted that the resolution being output was 1280x1024. That's a great resolution; but a shitty VGA cable might have issues. I quickly tested the shit VGA cable and adapter on a VGA monitor... it looked better, but still not up to the standard I was expecting.
So, I opened the warchest and found a chunkier cable that had a DVI on one end and a VGA on the other... on the LCD Monitor still showed minor ghosting, as follows...
But on the TV, the ghosting was hardly noticable... Score! This is the pixel-for-pixel that I was looking for.
At this stage I was content with the output... It has since occurred to me that I could convert the DVI to HDMI and keep the signal totally digital. I'll try that and report back soon.
Configuration Options
The 'overscan' area can be customised. On bigger screens, it will default to the background colour of Workbench. You can confgure this using BorderBlank.
Next, resolutions. The MK2cr supports the 'HighRes' driver. Download it here. To install it, move the HighGFX file from the archive to your "sys:devs/monitors" directory and reboot. Higher resolutions should now be visible in the ScreenMode prefs.
If you want to toy with the devices configuration itself, then firstly grab the Flashing tool and v2.6 firmware to see if you have the latest installed. Once you're up to date, you can use the v1.5 Config Tool to configure the device.
From what I understand, you choose the mode on the left and then re-map it to a resolution from the VGA column. Then hit Test/Use/Save. Will update when I tinker further...
The resolutions are awesome. You can find the HD720 driver in the HIGHGFX package, drag that to your dev/monitors folder also. I switched my TV to 16:9 scaling and the resolution looked great!
Time for model train controller programming and games!
Commodore 64: cc65 and the User Port
Ok, we've build the user port to parallel port adapter. We've build the parallel port interface. We've hooked a shift register onto it and now we want to control it. Doing this through BASIC would be fun... but compiling real C code and getting this onto the C64 will be thoroughly more enjoyable. Go and download cc65, along with your favourite emulator. VICE works very well on Windows.
Getting a sample running
Before we even think of real hardware, let's get the samples running on VICE. Once you have everything installed, open a command prompt. Switch to the directory where cc65 is installed. Also set your path to the cc65/c64/bin folder. Run cc65 to check if you've got everything correct.
Microsoft Windows [Version 10.0.10586] (c) 2015 Microsoft Corporation. All rights reserved. C:\Users\windows_user_1>d: D:\>cd cc65 D:\cc65>set path=d:\cc65\bin D:\cc65>cc65 cc65: No input files D:\cc65>
Download the samples from the github repository and save them nearby. Switch into the samples folder. Choose a sample to compile; I chose ascii. Compile it. Don't expect much from the compiler if there is no error. We're going to use cl65 here which also does all the linking for us.
D:\cc65>cd samples D:\cc65\samples>dir Volume in drive D is Data Directory of D:\cc65\samples 26/05/2016 12:40 PM <DIR> . 26/05/2016 12:40 PM <DIR> .. 17/05/2016 02:26 PM 2,300 ascii.c 17/05/2016 02:26 PM 8,068 diodemo.c 17/05/2016 02:26 PM 2,455 enumdevdir.c 17/05/2016 02:26 PM 6,928 fire.c 17/05/2016 02:26 PM <DIR> geos 17/05/2016 02:26 PM 6,592 gunzip65.c 17/05/2016 02:26 PM 1,956 hello.c 17/05/2016 02:26 PM 3,772 Makefile 17/05/2016 02:26 PM 3,711 mandelbrot.c 17/05/2016 02:26 PM 7,345 mousetest.c 17/05/2016 02:26 PM 6,236 multidemo.c 17/05/2016 02:26 PM 69,766 nachtm.c 17/05/2016 02:26 PM 3,117 overlaydemo.c 17/05/2016 02:26 PM 8,573 plasma.c 17/05/2016 02:26 PM 5,865 README 17/05/2016 02:26 PM 2,876 sieve.c 17/05/2016 02:26 PM 5,269 tgidemo.c 17/05/2016 02:26 PM <DIR> tutorial 16 File(s) 144,829 bytes 4 Dir(s) 1,717,242,986,496 bytes free D:\cc65\samples>cl65 -O -t c64 ascii.c D:\cc65\samples>
Quickly check that there's a binary called 'ascii' in the folder with no extension.
D:\cc65\samples>dir Volume in drive D is Data Directory of D:\cc65\samples 26/05/2016 12:52 PM <DIR> . 26/05/2016 12:52 PM <DIR> .. 26/05/2016 12:52 PM 2,648 ascii 17/05/2016 02:26 PM 2,300 ascii.c 26/05/2016 12:52 PM 2,767 ascii.o ...
You've got a compiled application! Let's run it. Open up VICE (x64.exe is the c64 version) and choose File -> Autostart disk/tape image. You'll need to browse to where you compiled the sample and set the filter to all files.
Once you see 'ascii' (or whatever you compiled) double-click it.
Feel free to play with the other samples and see what C code is available and explained.
Poking the Port
BASIC had two commands that altered system memory. PEEK and POKE were essentially READ and WRITE. They allowed the user to change values in RAM or read values back. Hitting certain addresses did certain things. Specifically, on the C64, POKING 56579 altered the input/output configuration of the User Port and then POKING 56577 changed the values being sent.
To do this in C, we need equivalent functions. Fortunately, the cc65 wiki has all the information we need. It turns out that no function is required, you can simply write to ports by setting the address (via a pointer) to the value you require. To make it a little less difficult to read, they've also provided macros to do the same thing. They'll help when you come back to the code 6 months down the track and can't read a thing you wrote!
#define POKE(addr,val) (*(unsigned char*) (addr) = (val)) #define POKEW(addr,val) (*(unsigned*) (addr) = (val)) #define PEEK(addr) (*(unsigned char*) (addr)) #define PEEKW(addr) (*(unsigned*) (addr))
There's also pokes for 'WORDs' there, but we don't really need them. Look here for a huge list of what you can PEEK and POKE. Turns out there's more memory address to poke here.
Note: These defines are also in peekpoke.h, just include that!
Moving the cursor
By default, as per CMD or any other Console, the text just rolls down the screen. Scrolling (with a buffer) is something that you actually need to implement in C64, so either start preparing for a buffer, or just get ready to use a single screen and clean up after yourself.
I want to draw a diagram of the 8 LEDs I'm about to control, so for this purpose we'll need to be able to place characters at certain positions. This involves moving the cursor to the required location and then outputting the character.
Fortunately, functions are already there to do all this... just use the gotoxy as per the source listing below.
Controlling the parallel port and 74HC595
So, we now have everything we need to write out the data required to control the 595. I'll just list it below. There's more information back here on how it actually works.
#include <stdlib.h> #include <string.h> #include <conio.h> #include <joystick.h> #include <peekpoke.h> #define USERPORT_DATA 0xDD01 #define USERPORT_DDR 0xDD03 static const char Text [] = "Train Controller!"; void shiftout(int val) { int i = 0, zzz = 0; for (i = 7; i >= 0; i--) { POKE(USERPORT_DATA, (val & (1 << i)) == val ? 1 : 0); POKE(USERPORT_DATA , 2); for (zzz = 0; zzz < 1000; zzz++) {} POKE(USERPORT_DATA , 0); } POKE(USERPORT_DATA , 4); POKE(USERPORT_DATA , 0); } int main (void) { unsigned char XSize, YSize; int i = 0, z = 0, zz = 0; //set all pins to output. POKE(USERPORT_DDR, 255); /* Set screen colors, hide the cursor */ textcolor (COLOR_WHITE); bordercolor (COLOR_BLACK); bgcolor (COLOR_BLACK); cursor (0); /* Clear the screen, put cursor in upper left corner */ clrscr (); /* Ask for the screen size */ screensize (&XSize, &YSize); /* Top line */ cputc (CH_ULCORNER); chline (XSize - 2); cputc (CH_URCORNER); /* Vertical line, left side */ cvlinexy (0, 1, YSize - 2); /* Bottom line */ cputc (CH_LLCORNER); chline (XSize - 2); cputc (CH_LRCORNER); /* Vertical line, right side */ cvlinexy (XSize - 1, 1, YSize - 2); /* Write the greeting in the mid of the screen */ gotoxy ((XSize - strlen (Text)) / 2, YSize / 2); cprintf ("%s", Text); /* MARQUEE */ for (zz = 0; zz < 4; zz++) { for (i = 0; i < 8; i++) { shiftout(1 << i); for (z = 0; z < 8; z++) { gotoxy (((XSize - 15) / 2) + (z * 2), (YSize / 2) + 4); cputc((z == i ? 'X' : '_')); } } for (i = 7; i >= 0; i--) { shiftout(1 << i); for (z = 0; z < 8; z++) { gotoxy (((XSize - 15) / 2) + (z * 2), (YSize / 2) + 4); cputc((z == i ? 'X' : '_')); } } } /* Wait for the user to press a key */ (void) cgetc (); /* Clear the screen again */ clrscr (); /* Done */ return EXIT_SUCCESS; }
Note: some cputc calls reference defined characters such as CH_URCORNER, etc... These are PETSCII, the embedded character set of the Commodore. The wiki page has the numbers for the characters. Go to the include folder of cc65 and then cbm.h to see if the character is defined, otherwise just put the value in as a raw number.
And the result.. the bloody thing worked first go. Pretty scary actually... compiling and executing C code on the C64 was too easy. Of course, I cheated by using an SD2IEC. The load command was LOAD "0:TRAINCTL",8 followed by RUN.
You'll note that my keys are still on order... I can't wait for them to arrive as pressing 8 is tedious. Also that the last shot shows two Xs lit. Blame shutter speed and screen refresh times.
What's next?
Maybe it's time to hook up the serial port? nanoflite has provided a C driver which may well help us. Otherwise it's time to write a real railway controller for the parallel port interface... but I should actually finish that first.
Commodore 64: Wiring up the User Port
The User Port on the Commodore 64 is a combined parallel port + serial port. Both of these can be used after a little wiring effort. Memotronics has the ports available, with nice handles. The handle is imperative for ease of removal. You really don't want to be pulling on wires to unplug anexternal device! I purchased this and also couldn't resist the 200 random LED bag.
User Port Socket Alignment
There's a row of letters and a row of numbers... make sure the numbers are along the top. Looking at the back of the C64, you'll notice there's two slots for socket alignment. To the right are two pins, then the center block, then 1 pin on the left.
Yes, the socket is plugged on upside-down in that middle picture!
The socket from memotronics comes with two white spacers in a plastic bag. Slide them into the slots appropriate for each side of the socket. Once done, tin up your wires and solder through to the parallel port.
Connecting it to our circuit
The whole reason behind this is to control the circuit described here and here. The goal was to use a standard interface, being the parallel port. The Amiga and the PC happily work; the Commodore was next. As mentioned above, the data pins are there, we just need to wire it through.
One really good point: once you've attached the wire to the parallel port end, draw a black line down pin one to the other end. Knowing which wire is which will get confusing once you've jammed it through the user port socket 'cap'. I actually surprised myself expecting to see the black line elsewhere and was glad I'd drawn it.
With the User Port socket in hand, I reviewed a few documents to work out which pins did what. All pinouts was a good source, until I realised that 'I' was missing. I assumed they got it wrong and so went searching further. The c64 Wiki has a pinout also, which also doesn't include 'I'. What's that old saying? No 'I' in 'Team'? There's no 'I' in 'User Port' either...
One quick check elsewhere at hardwarebook.info told me that the port I had from memotronics, which has an 'I', is incorrect. So... just make sure that the
The 'middle' 8 lower pins of the socket are the data pins that 1-to-1 match D0-D7 of the parallel port. You can then use Pin 1 and 12 to GND on the parallel (18-25) and yes, 17 is GND, but not on Amiga!
Putting it all together
Everything plugged together nicely... I powered up the circuit first; you should always make sure perpipherals are powered on first, prior to turning on the C64. Either way, LEDs lit as per usual and then it was time to hack in BASIC. You can see on the screen that I tried to output an 8-bit binary value to the 595... but the results weren't stable. It was late and I'd accomplished the first task: The pins were wired in and the LEDs between the optos and the C64 lit as expected!
What's Next?
Either I continue hacking BASIC and get the 595 driven, or I use something like cc65 and write real C. I think I'll go the latter. I also want to hook up the Serial port here... so I'll extend my little dongle to have a serial port hanging out of it also.
See this post on cc65 for an example of how to program the Usre Port via C!
Amiga 1200: An Introduction
I'd happened across the Commodore 64C at the local flea market not by fluke, but because I was looking for Amiga controllers. I'd recently won this beautiful piece of equipment on eBay and was awaiting its arrival. The auction included an LCD TV adaptor, one joystick, a demo floppy and an LCD monitor.
Unboxing the loot
This thing is huge. It's form-factor is quite similar to the C64C, but scaled up. This specific instance isn't overly yellow and is in really great shape. It was very simple to hook up, a power supply and a video cable. I remember seeing the TV Box plugged through on the pics in the eBay auction, so I tried that out first.
The TV Box has VGA in/out, I assumed this was to be used and hooked it up. No picture... on anything... The LCD monitor that it came with also didn't work... but I knew that this was meant to work; must've been doing something wrong. The LCD reported that the scanrate of 15.6khz was too low. I happily agreed with that.. as it was hideously low for VGA standards.
After a little googling I realised that the video port, plus VGA adapter, would only put out the standard PAL/NTSC ~15khz signal. This would never work, so I fed composite in to the TV Box. Yey! A picture!
Getting a decent picture
This turned out to be a lot harder than I'd expected. After toying with the TV Box, a lot, I'd realised that it wasn't going to work. I then tried feeding the composite signal from the Amiga straight into my LG TV. This worked, but still looked shite. Turns out there's all sorts of settings to get a good picture.
First, you need to dig into the preferences folder in Workbench. From here you can select ScreenMode. You'll find a whole lot of resolutions listed and they were totally foreign to me. It seems that, back in the day, there were all sorts of hacks to get more pixels displayed on CRT monitors. As that these TVs were more or less 'programmable', you could tune the electron gun to whatever resolution you wanted. I wonder how many TV warranties were voided due to bad choices from this menu?
Either way, there were options that indicated 'double-scan' which produced a much cleaner picture... even a (or so it seemed) higher resolution. I really don't quite understand resolutions over composite video, but it looked better!
Next I tried to run the demo disk of Jungle Strike from workbench and it failed miserably. Turns out this works fine when booted straight from the floppy (or so I accidently found out!) I wonder if you have to set the workbench resolution to something hideously low prior to starting specific games?
Welcome to the workbench
Either way way, we'd now made it to the workbench. I clicked around trying to understand how it worked. I've never used a GUI on an Amiga before and this was all startlingly new!
A right-press seemed to bring up a context menu, when held down, but along the top of the screen. The text was fuzzy and hard to read, but resembled the old MacOS quite a bit. Some useful commands up there, but no power options (restart, shutdown, etc...)
The icons all allow a single click, this then 'highlights' them... well, it actually presses them in. I take it this means 'selected'. You double-click them to execute/open. Any alerts/warnings are displayed along the top menu. Speaking of which, this reports the memory free on your system (something we haven't cared about in the PC realm for a REALLY long time) ... so you know if you can start that next program or not.
Floppy disks
The A1200 has a Double-density 3.5" floppy drive. You'll be hard-pressed to find such disks around the shops nowadays, but don't freak out... you can use High-Density disks also. Of course, good luck finding those too!
With a High-Density disk, make sure the label is facing you and tape over the top-left 'hole'. Floppy drives have an optical sensor which, when light transmits through this hole, indicates to the drive that the disk is High-Density. If the light is blocked, then the disk is taken for a Double-Density.
With the hole taped over, make sure the that the top-right write-protect switch is also covering the hole. If light can shine through this hole, then the drive will think that the disk is write-protected and the disk will be read-only.
Making an Amiga floppy from Windows
To be blunt; you can't do this. What you can do is create a PC disk from the Amiga and then use it on the Windows side to transfer the files across. Once you have a double density disk, as mentioned above, then you're ready to go.
I tried to create/format a PC disk from Windows; but I crashed explorer each time I tried to format it. It seems that explorer only wants to see HD floppies in the drive. Using the tape trick (as above) and then trying to format just did not work!
Making a PC floppy from Amiga
Yes, we have to do this backwards. Grab your taped up fake DD floppy disk and slap it into the Amiga. Chances are, depending on the state of the disk, you'll get a DF0:????? icon on the workbench desktop. Double-clicking this will result in "No application associated to this item" in the workbench title... or something similar.
Firstly, you need to enable the CrossDOS extensions. Browse to your boot HDD, then the Storage/DosDevices folder. Copy the PC0 file to Dev/DosDevices on your HDD. Pop the disk back out and reboot the Amiga (CTRL + A + A.) Once you're back at the workbench, insert the floppy. You should now see PC0:????? and DF0:????? on the workbench. Disregard both of them.
Browse back to your HDD and open System. Here you'll find the Format application. If you choose PC0, then you'll format the disk as a PC disk. Alternatively, if you choose DF0 then you'll format it as an Amiga disk. This kind of cross-platform functionality is actually astonishing foresight from the Amiga developers at the time. Seriously helpful.
Once the format is complete... savour the sounds, there's nothing quite like a floppy drive at work... you'll have a disk that you can now use in Windows. It's capacity will be 720kb, so bare with a bit of disk shuffling to get the data across.
So then, how to I play A-Train?
Firstly, you need the ADFs from somewhere... if you know of google, then you'll be fine. Acquiring these images will, usually, mean that they're then marooned on your Windows PC; we'll need to get them over to the Amiga somehow. A-Train happens to be two disks. Each ADF image is a full Double-Density disk size, and therefore can't be copied onto one as-is. Formatting PC disks on the Amiga, as above, won't leave youwith enough space to copy either ADF onto a single disk. Therefore, the best method here is to copy the A-Train zip onto a floppy and then copy this zip onto the Amiga. You'll then need an unzipper and an ADF-to-floppy writer.
Copying files to the Amiga
So, just like that old joke of the farmer, the sheep and the wolf... how then do we safely get them all across the void to the Amiga without them eating eachother? Simple. Drag and drop!
Head back to the Workbench and insert your PC-Formatted Double-Density Floppy Disk with an A-Train ZIP on it. On the workbench you'll still see DF0:?????; disregard this. You should now also see a new icon with a CrossDOS icon and an 'EMPTY' title.. unless you named the floppy, somehow, when you formatted it.
Open the floppy and view the contents... A-Train.zip should be there. Drag it to your HDD.
Once copied, view the HDD and ... wait ... where is the file? It took me a while to work out that Workbench only likes to show 'Drawers'. Hold down your right-mouse-button and view the menus up the the top. Under one of them you'll find the option to view all files, or just Drawers. Select all files.
Now you'll see your zip file on the Amiga. Unfortunately, Amiga's native compression application is LHA... it doesn't deal with zip files... so we're stuck.
Zip files and the Amiga
Or are we? Turns out there's a crapload of software for the Amiga just waiting for us to ferry across from our Windows machine! Browse to Aminet and download Unzip v5.40.. or any other version of your choosing. Once you have this file (YOSH! It's an LHA!), copy it to the floppy (you can delete A-Train.zip, it's already across the void) and transfer it to your Amiga HDD.
Go to System on your HDD and you'll find 'Shell'. Double-click this. Welcome to the console/shell/command-prompt. This acts very much like any other DOS that you've had to deal with. The goal here is to lha -d UnZip.lha (turns out it's not case-sensitive) to get to your new Un-Zipper!
Once extracted, you can shift into the Unzip directory by typing cd Unzip_v5.40. In here you'll find the application UnZip. This simply wants a zip file as it's argument to extract. Type UnZip [hdd_name]:A-Train.zip.
It'll take a while, but you'll now have two ADF files sitting in your Zip programs folder. Not overly clean, but we can delete them later once we've written them to real floppies.
Writing an ADF file to a floppy from the Amiga
A-Train needs two floppies. Find two blank ones. No need to worry about formatting, but make sure they are Double-Density! If you've only High-Density, then tape them up as per the trick above.
Once you have two ready to go... browse to Aminet again and you'll find a lovely application called ADF2DISK. Again, it's an LHA, so we just need to get it on the floppy and across to the Amiga.
Once there, extract it as you did Unzip (not as you did A-Train!) and then browse into the directory. You should find an application called ADF2DISK.
Now that we have the app, we need to insert a floppy (doesn't need to be blank, but its content WILL BE OVERWRITTEN!) and run the following command: ADF2DISK [hdd_name]:UnZip_v5.40/ATRAIN1.ADF. I might have the A-Train Disk 1 ADF filename wrong there, so just make sure you get that correct.
As per usual... sing along with the beautiful sounds of your floppy drive and wait for the 'burning' to complete. Once done so... eject it and burn the second disk.
Playing A-Train
For some reason, re-inserting the disk wouldn't work. It's like Workbench was trying to be too smart and cached what it thought they disk should contain. In this case, nothing, as they were crap disks to start with. Maybe I was being to hasty, maybe you need to wait a bit before ejecting/inserting disks.
Either way.. I restarted it with Disk 1 inserted and, lo-and-behold, the disk worked and booted into an archaic Workbench (via a lovely demo-scene intro stating who the evil people where who made this all possible) with the A-Train icon just waiting there to be double-clicked. There was also an installer application!
I didn't want to run from floppy, so I popped the disk out, rebooted the machine and then inserted it again. It happily appeared on my Workbench and I could install from there.
After that, I browsed to the 'Drawer' it created and ... bang ... double-clicked and she was off and running!
... now to remember how to play the game!
What next?
Turns out this unit is highly expandable. You can insert daughterboards in the 'trap door' underneath which increase RAM and/or CPU. There's also a Parallel Port, so I think I'll make the model railway interface that I discussed back in the C64 article work on both machines.
I'll add articles and links to the list below when I get around to writing them!
- RAM Cards: This machine needs more RAM. It comes with 2mb on-board 'chip ram', but Workbench 3.9 needs more.
More information here... - OS: This unit is currently booting into Workbench 3.1. I've seen some great eye-candy of 3.9 screenshots and want to run it. Seems it needs more RAM. It also needs a newer Kickstart ROM. The ROM is ordered... more research required for the RAM.
- HDD: Maybe a bigger one? Seems I have a CF in there with 512mb of disk. Will need a re-partition or renewal for OS 3.9
- VGA: This needs to be done. I want pixel-for-pixel. Information here and here.
- Games: Day of the Tentacle, etc...
- Accelerators: Where to start with this? Watch Majsta for something insane shortly!
- Parallel Port: Build an interface for the model railway. Use it for the Commodore too... parallel port information here and here.
Again, these machines are awesome to work with.
Commodore 64C: An Introduction
I've had a hankering for an Amiga for a while now... I don't know why.. I think it has something to do with the accelerator that was made for the Amiga 600 that made it go faster than ever thought possible... sure they emulate the entire core in a much faster CPU and high-jack the motherboard... but it's still an awesome feat!
I also have a feeling that I missed out on a whole realm of computing in my childhood by following the Nintendo/IBM route. I'm pretty sure there was a-whole-nother world out there... Sega, Amiga, Atari, TI, etc... that I never got to sample. Actually, I lie... my neighbour had a TI-99/4A, followed by a Sega Master System... but I only ever got to play them briefly. Hunt the Wumpus was random, but fun at the time!
My first Commodore
Officially, this is my second. The first was purchased in the mid-90s at a fair at high school, but didn't work. It was the original breadbox style and was stone dead. Should've left it in the garage!
Anyway, this past weekend I spied a box of junk at the local Trash and Treasure and actually thought I saw an Amiga 500/1200. Instead it turned out to be the 'newer' C64. I was hooked.
The guy wanted $100 for the box. It contained:
- C64C (missing 3 keys) + Power Supply
- Composite Video Cable with Stereo Audio
- Two quickshot joysticks
- One control pad (looks like a NES clone)
- 3 odd cartridges
- Another odd console named 'Tempest'
- 1571 External Floppy Drive
Now that I list it, it could well be worth the AUD$100. I offered $50. He haggled back to $60... knew I had him. Asked if it worked... he had no idea... so I pulled change from my pocket and made a deal at AUD$52.
Bargain.
Does it work?
Worked first time... plugged it in and switched to A/V input... blue screen of dea... BASIC!
Random 4s and 8s on the screen... and the cursor was stuck hard-left. This directly mapped to the keys that were missing. 4, 8 and HOME. Turns out that there is no spring when the keys are off, so these were all 'pressed'.
Got some tape, placed along the shaft of the missing keys to hold them in the air. Restarted... it works! Quick search on eBay on my phone, from the couch, in front of the LCD TV that was happily displaying technology from 1987. Found replacement keys... ordered them on the spot.
Next google to a sample BASIC app... found a tone generator. Tedious data-entry thanks to taped-keys... but it worked beautifully through the surround system. Hah.
How much more powerful is my phone than this? No idea.
1541-II Floppy Disk Drive
This is external and has its own brick of a power supply. Turns on and hums away when I attempt to access a disk... so I assume it's in working order. There's disks on their way via eBay, so I'll test it out shortly.
The innards
See below for the case opened. I was curious as to why it had a green LED. Turns out Commodore could never work out what colour the LED should be. The warranty seal was also very well voided. Seems to be some newish solder around the PAL/NTSC circuitry... maybe this was a conversion?!
Turns out I have an Assy 250469 Rev. B. Built in 1990 (assumed by the scratched out '91' on the RF Modulator.) This model was still being built in the '92, so I seem to have acquired one of the final models.
What's next?
- Yes, that's a model railway under the C64C... I will control it. Turns out I bought a book when I was young that was all about robots and the Commodore 64. I need a VIC-REL or equivalent. Bugger that... let's find the header for the user port and make my own!
- Buy floppies (thanks eBay) and test out the drive.
- Buy some form of flash disk and play all the games I missed out on. I chose the SD2IEC... waiting for it to arrive.
- Serial port? Modem? Ethernet?
- What else?
This is fun!