Disassembling my old code part 9 – Assembling the code

Introduction

This is part 9 of a blog series I’m doing to catalog some of the programs I wrote back in 1988 on the Amstrad CPC 6128, starting with a disc sector editor I wrote called Disced. I’m doing this because I like doing it, it brings back memories of how I started my career with computers back in the 80’s, long before the Internet (as we know it today) or mobile phones.

Below are a list of previous blog posts on this subject.

  • Disassembling my old code part 1 – Getting started with WinAPE
  • Disassembling my old code part 2 – Setting screen mode & Soft 968
  • Disassembling my old code part 3 – Text operations
  • Disassembling my old code part 4 – Set cursor position & disc cache
  • Disassembling my old code part 5 – Get Shift key and set translate
  • Disassembling my old code part 6 – Processing disc activities
  • Disassembling my old code part 7 – Drawing rectangles
  • Disassembling my old code part 8 – Processing HEX in the left pane
  • Disassembling my old code part 9 – Assembling the code <—- you are here

First of all apologies for the delay in updating this series, I’ve been very busy with real work and other things have taken priority. Don’t worry though, if you are following this series I do intend to finish it no matter what it takes and no matter how long it takes, so please be patient. We’ll get there in the end and hopefully both you and I will have learned a few things along the way.

Looking at the code I currently have in Notepad ++ I’m unsure if MAXAM would even let me assemble it in it’s current configuration, it’s been THAT long since I actually assembled any Z80 code that I’m obviously out of touch with it.

I won’t tackle MAXAM today, but I will attempt to make corrections to the current edited code using the built in Assembler in WinAPE. So let’s get started, and this is a good time to see if it would even compile in it’s current unfinished state.

Using the WinAPE Assembler

In WinAPE, click on the Assembler menu option and select Show Assembler F3.

The Assembler window appears, and as we have not used it before it’s blank.

Click on File and load the current version of your saved assembly source code.

Now comes the fun part, as I’m out of practice obviously the current code has some issues. So let’s try and fix that. To start off, click Assemble, then click on Assemble within that drop down menu within the WinAPE Z80 Assembler window, this should highlight any issues it has with the source code.

straight away we can see some problems found, so let’s step through them one by one,

The first problem is in Line 2, and it becomes obvious when you look at how it interprets the website URL. Obviously it doesn’t like the colon, so let’s fix that.

Using the edit ability in the Assembler, move your cursor to the problem and correct the mistake, in my case I changed the URL from https://www.amstrad-noob.com to simply www.amstrad-noob.com.

To prove that this has solved it, Assemble the code again. And sure enough after Assembling the code again, the Line 2 – Bad Syntax error is no longer present !

Next we need to find out what is wrong with Line 652 – Undefined Symbol. To speed that up, let’s use CTRL+G to go to the line number 652.

Tip:  You can also double click on the line that has an error in the bottom pane and it will automatically go to that line number in the upper pane.

The remaining errors are all Undefined Symbol so I think (or hope at least) that I can ignore that for now. I can also see that from line 652 on-wards the code appears untouched or unfinished (i.e. it’s the direct dump from my original disassembly and therefore some text has not yet been converted to Ascii.

Running assembled code

For fun I decided to try Assembling the code and then running it. If you click on Run it will Assemble the code first and inject it to the memory space it should be at in this case &9000.

Next, by calling &9000 in the CPC from basic after assembling/run the code,

and pressing enter, it just hung with a blank screen, yikes. I needed to determine what broke it so I compared known good code (by running disced.bas) to my ‘broken’ assembled code.

I placed a RET (C9) before the disk_processing_activities function and that worked fine so i know the hang is caused in the disk_processing_activities function or via something it in turn calls.

To help me figure it out I compared a screenshot of the code in memory from the Assembly attempt (right hand side screenshot), to a known good working disced.bas injected code (left hand side screenshot), there were several differences marked here.

So that leaves me with some minor edits that I can make to the code, the most obvious is 2 remove the 2 added spaces that appear in the code in-front of the Disced title text, so let’s try that. I can also see that the (c) symbol is not showing correctly in the source code.

Here’s the code side-by-side again after I removed the 2 spaces and re-assembled it, at least it now matches up, but again the addresses to some of the other functions is way off, so I need to dig deeper.

At the start of the disk_processing_activities there a mention of initial_cursor_position and that address in the good code was &9626, so I used my comparing trick (take a screenshot of the area with known good code, and then compare that screenshot with the assembled code).

At this point I’m not sure what the issue is, but I can see that everything from &961A is different in the assembled code so I need to look at the source code again.

Looking at it makes it clear where the problems are, after the initial “Exit DISCED Y/N” text, the remaining ‘code’ is gibberish, in other words I haven’t converted it yet to it’s real ‘code’ and/or ‘text’.

We’ll deal with that in the next part, until then, adios !

 

 

Posted in assemble, Disassemble, Disced, MAXAM, WinApe | Leave a comment

Video: Resetting a Dandanator after it was loaded with a 512kb game

Introduction

This video is a direct result of a comment I got where a user (Mark) had problems resetting his Dandanator Mini after it was loaded with the Sword of Ianna. That game uses up the entire 512kb ROM and auto-launches as soon as you start the Amstrad CPC. 

Resetting the Dandanator using the code provided in the ROM Generator software was tricky, in 10 times I tried it, I only got it to reset a few times. It seems that the USB button sometimes works, sometimes not, it’s flakey. I’m not quite sure why it works (or doesn’t work) the way it does, and I don’t think it’s my setup or my USB cable as reprogramming the Dandanator works every time otherwise. This is the only function on the Dandanator software that behaves this way for me.

Hopefully this video helps you to get it working. I also cover how to re-install the Sword of Ianna back on the Dandanator (full 512KB Rom game).

You can download the Sword of Ianna here – http://theswordofianna.retroworks.es/en/download-2

Posted in Dandanator, The Sword Of Ianna | Leave a comment

Video: First looks at the DES (Dandanator Entertainment System) for Amstrad CPC

Introduction

I’ve been using Dandanators for a few years now and I love them, their simplicity makes loading games very easy. I heard about a competing product called DES which uses the same hardware and software to work with the cartridges, but which is incompatible with the other Dandanators. It’s like they were 2 separate projects.

Anyhow, I ordered and paid for a DES system and it took some time to arrive, when it did I decided to do a video about it, hopefully I covered most aspects.

Some questions to my viewers:

1. What do you think about the product compared to other Dandanators or a DDI5 or an M4 ?

2. What (if anything) would you have changed about it if YOU were marketing/selling the DES ?

also, as a side note Jason Brooks your Dandanator mini makes a guest appearance in this video

Posted in Dandanator, DES | Leave a comment

Video: First looks at the Amstrad SSA 1 for CPC 464

Introduction

In this video I took a close look at the Amstrad SSA 1 for CPC 464 explaining some of it’s main features.

The Amstrad SSA-1 is a Speech Synthesiser & Stereo Amplifier including speakers but it’s only compatible with the CPC 464.

Here’s the video:

In the video I also referred to the SSA-1 software (a basic file and a BIN file) and you can download that software from a few places such as here. Below is the BASIC listing in full.

10 ssa1%=&FBEE: size%=&1434
20 d%=INP(ssa1%) AND &C0
30 IF d%<>&80 THEN 70
40 OUT ssa1%,4
50 d%=INP(ssa1%) AND &C0 
60 IF d%=0 THEN 80
70 PRINT:PRINT"SSA1 not operational":PRINT:END 
80 ON ERROR GOTO 120
90 |ECHO,1: PRINT
100 PRINT: PRINT "`S``S``A1 Software already installed.`": PRINT
110 |ECHO,0: END
120 IF ERR=28 THEN 140
130 PRINT"Loader terminated: BASIC error";ERR;"at line";ERL: END
140 MODE 1:PRINT TAB(10);"SSA1 SOFTWARE LOADER":PRINT:PRINT:PRINT:PRINT
150 SYMBOL AFTER 256
160 PRINT "Program length is ";HEX$(size%,4);" Hex"
170 PRINT: PRINT"Enter loading address, or just "
180 LINE INPUT " ENTER for top of memory > "; base$
190 IF LEN(base$)=0 THEN base=HIMEM-size%: GOTO 220
200 base=VAL(base$)
210 IF (base<16384) OR (base>HIMEM-size%-1) THEN PRINT :PRINT"Insufficient memory":GOTO 170
220 CLS: PRINT"Loading...."
230 FOR i=1 TO 5:READ ap(i): NEXT
240 PRINT CHR$(23)+CHR$(0);
250 INK 3,1
260 ORIGIN 320,48
270 DATA 27,7,62,53,4 
280 DATA -1,112,20,116,16,208,40,128,20,116,-36,144,80,144,96,176,120,208,80,224,0,224,-112,192,110,152,88,80,32,0,0,0
290 DATA -120,208,112,268,106,304,100,320,90,334,82,344,74,348,0,350
300 DATA-80,224,72,288,88,304,106,304
310 DATA-32,192,52,208,76,208,96,192,76,176,52,176,32,192
320 DATA-64,80,56,96
330 DATA-120,224,132,232,140,230,142,192,132,128,120,128,108,140
340 DATA-1,290,72,288,-80,144,72,64,999,0
350 side=1 :GOSUB 640:x=54:y=192:GOSUB 700
360 RESTORE 280:x=0
370 side=-1:GOSUB 640:x=-74:y=192:GOSUB 700
380 DATA ap,ap,ap,oy,ap,oy,ap,cy,cy,stop
390 ORIGIN 320,124
400 x=50:y=8:xt=25:yt=4:xb=23:yb=6:onn=20:off=0
410 PRINT CHR$(23)+CHR$(1);
420 xt(1)=xt:yt(1)=yt:xb(1)=xb:yb(1)=yb
430 MEMORY base-1 
440 LOAD "!ssa1.bin",base
450 CLOSEIN
460 SYMBOL AFTER 240
470 start=base+(PEEK(base)+PEEK(base+1)*256)
480 CALL start
490 LOCATE 1,23:PRINT"Load complete": INK 3,26
500 READ a$:IF VAL(a$)>0 THEN t=TIME:WHILE t+10*VAL(a$)>TIME:WEND:GOTO 500
510 IF a$="stop"THEN NEW: |SPOFF: END
520 IF UPPER$(a$)="CX" THEN xt=xt-4:xb=xb-4
530 IF UPPER$(a$)="OX" THEN xt=xt+4:xb=xb+4
540 IF UPPER$(a$)="CY" THEN yt=yt-2:yb=yb+8
550 IF UPPER$(a$)="OY" THEN yt=yt+2:yb=yb-8
560 IF a$="ap" THEN GOSUB 720
570 dxt=xt:dxb=xb:dyt=yt:dyb=yb:GOSUB 620
580 IF twoplus THEN dxt=xt(1):dxb=xb(1):dyt=yt(1):dyb=yb(1):GOSUB 620
590 xt(1)=xt:yt(1)=yt:xb(1)=xb:yb(1)=yb
600 twoplus=-1
610 GOTO 500
620 MOVE x,y:DRAW dxt,dyt,3:MOVER -2,0:DRAW -dxt,dyt:MOVER -2,0:DRAW -x,y:DRAW -dxb,dyb:MOVER 2,0:DRAW dxb,dyb:MOVER 2,0:DRAW x,y :RETURN
630 STOP
640 WHILE x<999
650 READ x,y
660 IF x=999 THEN 680
670 IF x<0 THEN MOVE ABS(x)*side,y ELSE DRAW x*side,y,3
680 WEND
690 RETURN
700 MOVE x,y:DEG:FOR n=1 TO 360 STEP 10:PLOTR 2*SIN(n),2*COS(n):NEXT n:RAD
710 RETURN
720 apoint=apoint+1:|SPOUT,ap(apoint)+128:RETURN
730 |SPOUT,ap(apoint)+64
740 RETURN

 

I then copied the games that were compatible with the SSA-1 to my M4 and tested it.

If you’d like info about setting up an M4 then checkout my blogs below:

First looks at the M4 board for Amstrad CPC

Adding ROMS to the M4 board

Video: Using an M4 board on an Amstrad CPC 464

cheers

niall

 

Posted in Amstrad, M4 board, SSA-1 | Leave a comment

Video: First looks at the RGB2HDMI for Amstrad CPC

Introduction

I blogged about this new RGB2HDMI card here but now you can watch the video showing it’s features.

Check it out.

Posted in RGB2HDMI | Leave a comment

Video: First looks at the Ultimate CPC MIDI Sound & MIDI Interface Card

Introduction

I blogged about the Ultimate Midi sound card for Amstrad CPC here, but this post is to point you to a video I uploaded to youtube, take a look and see and hear for yourself how cool this card is !

Posted in Ultimate MIDI | Leave a comment

First looks at the Ultimate CPC MIDI Sound & MIDI Interface Card

Introduction

I saw a video on an Amstrad CPC facebook group that I thought was rather amazing, in it was an Amstrad CPC 464 with cards connected to the expansion slot and playing back MIDI music brilliantly, it sounded so cool, I knew I had to try one.

This card is the work of Michael Wessel, who truly loves anything MIDI and is a keen fan of the Amstrad CPC. He started out using an Amiga 500 but later progressed to an Amstrad CPC and was disappointed that there weren’t any decent MIDI alternatives for the CPC, so he created one, the Ultimate CPC MIDI card !

To follow his GitHub project see here.

The card is loaded with features and they are listed below.

  • CPC MIDI Soundcard using the S2 GM MIDI Module from Serdashop
  • CPC can send MIDI data over output port &FBEE to the S2
  • MIDI IN and MIDI OUT via Adadfruit Midifeather (standard MIDI DIN sockets)
  • MIDI IN to the CPC: check for new MIDI byte on input port &FBFE and fetch pending byte from buffer via &FBEE
  • MIDI soft through: all incoming MIDI data (from CPC or MIDI IN) can be forwarded / relayed to the MIDI OUT socket (“MIDI SOFT THRU”)
  • CPC MIDI Synthesizer software in machine code (MIDI INPUT demo)
  • CPC GM Drumcomputer software in BASIC (MIDI OUTPUT demo)
  • “Lazy engineering”: MX4 compatible CPC extension board using three sockets, one for the Blue Pill, one for the S2, one for the optional Midifeather.
  • Only one additional chip required – a GAL22V10 programmed as an address decoder. The Blue Bill does not have enough 5V-compatible GPIO ports to do the decoding fully in sofware
  • Everything else is done purely in software – unlike LampdaSpeak, no additional glue logic is required to manage the databus (e.g., no flip flop to latch the databus upon IOWRITE requests, or busdriver to tristate the microcontroller output to the bus upon IOREAD requests). The 72 MHz Blue Pill is fast enough to respond to and manage IO requests and the databus via ISRs (Interupt Service Routines). It was tedious to get the timing of the ISRs right (done by inserting __asm__("nop") at the right spots), but it works flawlessly by now.
  • No extra circuitry for Z80 /WAIT management
  • Low cost – final PCB will be in the 50 to 60 EUR range
  • Very DIY friendly (no SMD, plug and play of standard modules)

The brains in the card which handles MIDI, is the Blue Pill card (plugged into the front of the card, on the right side facing you). On the rear of the card is an S2 sound card which gives great audio output, you can also upgrade to an even better Roland compatible X2 GS sound card but it’s not cheap.

But let’s start getting to know the card and to do that we’ll first test get it plugged into the CPC. For that you’ll need a connector board as it won’t plug in directly to the CPC. You also optionally need a MAXAM rom board to handle the assembly files, more of that later.

Below is the connector board I purchased from Michael, you can find similar ones on ebay.

And here’s my ROM board, complete with a few ROMS including MAXAM 1.5.

Tip. If you are using multiple ROMS only enable the MAXAM during recording as the other ROMS can cause incompatibilities.

Connect everything up so it looks something like this. Note: In the photo below I have not got my MIDI cables connected yet.

There are some additional things you’ll need, for example you’ll want to connect the board up to your speakers, and for that you’ll need a 3.5 inch audio cable and you’ll need USB to MIDI cables to connect to your PC. Lastly, if you want to connect to a MIDI device (like a MIDI keyboard) you’ll need MIDI cables.

Note: Not all MIDI cables are the same, I ordered another one initially (no-name cheap crap) and it produced more problems than it solved, the cables below worked perfectly for me.

Getting connected to your PC

Now that you have the board connected up, you’ll want to verify that it’s talking to the CPC and vice versa. The board comes with 2 DIN sockets, one for MIDI in and one for MIDI out. The corresponding cables need to be connected to your DIN sockets. You’ll also want to get some MIDI capable software to run on your PC. I recommend MIDI-OX which is free for personal use.

Once you’ve downloaded that software, install it, then start it up and connect your USB to MIDI cable to your PC. The MIDI cable doesn’t need any drivers and should be auto-detected by Windows. I’ve tested it on Windows 10 (and Windows 11) with no issues. If you look in device manager you’ll see the MIDI cable show up under Sound, Video and game controllers.

Next, start up MIDI-OX. Click on Options and set the MIDI-in and MIDI-out options to point to your MIDI-USB cable.

At this point if you output some MIDI on the CPC you should see it reflected in the MIDI-OX window.

But let’s start with recording something from the PC to the CPC. To do that, start up MIDI-bar (in C:\Program Files (x86)\MIDIOX\Midibar.exe)

Once again, you’ll need to configure it to point to your MIDI-USB cable by clicking on the circle with dots, then select your USB MIDI Interface from the options available.

Once done, download the following DSK files from Michaels GitHub, I used the following but he keeps updating with more content.

You’ll also want to download some MIDI files to test with. There are some samples on Michaels GitHub.

https://github.com/lambdamikel/BluePillCPC/tree/main/midi

On the UltMidi3 disc you’ll find a Recorde2.bas file, run it and you’ll see options to record (1), playback (2) and so on. In the short video below I played back a MIDI file using Minibar on the PC and recorded it directly to the CPC, amazing !

IMG_5218

After you’ve recorded your MIDI file from the PC to the CPC you can save it for playback. It’s all really awesome.

Connecting a MIDI keyboard

You can also connect up your MIDI keyboard and configure it to output to the MIDI cable (check the Manual for your MIDI keyboard to do so). I set the following two settings on my MIDI keyboard, function 15, 16.

  • 015: Local Off
  • 016: External Clock OFF

With Michaels help we figured out that my Yamaha YP2-230 MIDI keyboard was outputting to channel 1 (using Midi-OX we could see that). So we edited a line in one of his programs to point to that channel instead of the default (channel 0).

The result ?

I could play on the MIDI keyboard and using CPCSynth.bas from the UltMidi.dsk I was able to see that happening in real time on the Amstrad CPC, awesome or what.

If you have access to a 512KB expansion on a 464 (like the DDI5) you can try out the 512 KB MIDI from RAM playback2.bin with EYESKY.DSK demo.

Conclusion

The Ultimate CPC MIDI Sound & MIDI Interface Card is just that, it’s amazing. It gives you options to play MIDI like you’ve never heard it before on your Amstrad CPC either directly through the CPC speaker or via some external speakers. You will be blown away by the sound quality.

That said, you will however need a fair amount of equipment, cables, software and patience to get it all going but the end result is definitely worth it !

I’ll upload a video review of the card to my youtube channel in the coming days, so please stay tuned !

 

 

 

Posted in Ultimate MIDI | Leave a comment

First looks at the RGB2HDMI adapter from Piotr Bugaj

Introduction

I recently ordered an RGB2HDMI adapter made by Piotr Bugaj via the SellMyRetro website here. The device cost me 55 GBP + another 5 Euro postage. I was excited to test this alternative method of showing Amstrad content on modern monitors as I’ve been using the following method on my LCD for the last few years.

The hardware is based on a publicly available GitHub project called RGBtoHDMI which was originally designed for the BBC Micro but works on many different systems. The hardware runs on a Raspberry Pi Zero W v 1.1.  You can get details about the RGBtoHDMI project here.

When the device arrived it came with an anti static bag, a receipt, no instructions and a DIN 6 cable to connect from the RGB2HDMI adapter to a CPC 464/6128 . There is also a CPC + cable available for purchase from Piotr but I did not get one.

The original for sale post on SellMyRetro says a 5v power supply is required, but basically any USB-A cable with a mini USB-A connector that is connected to 5v output will do.

What it didn’t mention was that you’ll also need a mini-HDMI cable connector to connect up to your LCD or monitor. The mini-HDMI connector is shown in the red box below.

I ordered a mini-HDMI cable that had a DVI connector on the other end which I could connect to my old Dell LCD. I also sourced a USB-A to USB-A mini cable which I’ll use for powering the device by connecting it to a USB-A powered port.

So what’s in the 3D printed box ?

I carefully removed the device from it’s enclosure to get a close look at what it’s made of, you can see it disassembled here. At the bottom of the photo you see the Raspberry Pi Zero W v 1.1 and there are a further two mini boards that sit on top of it.

Both of the other boards belong to the RGBtoHD project, one is a Three/Four level analog RGB/YUV & composite monochrome interface for RGBtoHD, and the other is the RGBtoHD 12 Bit issue 4 board which contains the switches and leds as well as the Xilinx CPLD.

Strangely, none of the boards are branded with Piotr’s usual ZAXON brand.

After connecting everything up and playing with the device, I determined that the three horizontal switches and LED’s on the device work like so. It would be useful if this information was shared with the device in printed format or better yet, 3D printed on the device.

According to the wiki quick start guide the buttons do as follows:

SW1:
Short press = Call up menu
Long press = toggle scanlines (if available) on/off

SW2:
Short press = Screen capture (File is written to SD card)
Long press = Toggle NTSC artifact colours on/off

SW3:
Short press = Enable (if disabled) or refresh genlock
Long press = Calibrate sampling position

When the menu is on screen:

SW1: Select menu option or enter editing mode for the selected parameter
SW2: Cursor Down or increase selected parameter
SW3: Cursor Up of decrease selected parameter

Pressing SW2 and SW3 together will take a screen capture with the menu on screen

A fourth button SW4 can be used to reset the Pi but only if an additional 2 pin header is fitted on the Pi zero.

Connecting the device

To use the device, connect a 5v mini USB-A power cable to the mini USB-A port on the right side under the 5V LED, and connect your mini HDMI cable to the mini HDMI connector. You can see those cables are connected here along with some explanations of what the ports are.

On the left side of the device, is the micro SD card slot where a 4GB card contains the files needed for the solution. On the right side there’s a 6 pin connection slot for a cable supplied with the device, that cable is either for connecting to a CPC or CPC+ model, depending on what you order.

Once you have connected the device it’s time to turn everything on. I connected up an Amstrad CPC 472. I noticed that the borders normally evident on an Amstrad monitor were not present, in other words the text went right to the edge of the screen. You can see that in the photo below.

After some digging around in the settings, I later found out in the configuration where to change that setting, more about that later.

The colours are bright and cheerful, there is little if no noise on the screen, it really looks great.

Using the On Screen Menu

The power of this device is in that it is flexible, and there are lots of settings that you can play with in the on screen menu (OSD). Pressing the first button brings up the menu, and you can then scroll through the settings or change them, it’s very easy to do so and intuitive.

Note: be careful about what you change as you can screw it up, for example I played around with the resolution and after saving the changes and rebooting the Pi, I got no video.  To solve that I had to eject the 4GB mini SD card, mount it on my PC and copy the contents of the default_config.txt to config.txt. You can see those files below.

Remember the no-border I talked about before ? to change that simply bring up the OSD and navigate to Scaling. Mine was set to Auto (Integer/Sharp).

After pressing the menu button and changing that setting to Interpolate Full/Soft I got the Amstrad border look I wanted.

Don’t forget to Save your configuration by selecting Save Configuration. Followed by Return, it’ll inform you that a reboot is needed.

After changing the setting, it looks like this, which is more accurate in terms of an Amstrad display.

Saving screen captures from the CPC

The RGB2HDMI comes with another great feature and that is the ability to take screen captures from the CPC. Below are some screen captures I took, it’s so easy to do and really show’s the power of your CPC.

It’s simple to activate, just press and hold the middle button in for a few seconds when not in the OSD. Once done, you’ll briefly see a message across the screen telling you where it’s saving the screen capture and it’s file name. Check out these sample screen captures, amazing quality !

Conclusion

The RGB2HDMI device is very nice indeed, it’s tiny, and it’s small size hides it’s power. It’s built on well established hardware using a publicly available GitHub project so development will continue for a long time I’m sure. It’s encased in a nicely 3D printed case and the price is OK, considering what you get. Well done Piotr on making this available for the Amstrad CPC and CPC+ computers. Hopefully he’ll read this and include some of my thoughts in the next version.

well that’s my first look at the RGB2HDMI, what do you think of it ?

cheers

niall

 

Posted in Amstrad, RGB2HDMI | 5 Comments

Video: A closer look at the Amstrad CPC 472

Introduction

In this video I show you the two different versions of Amstrad CPC 472 that were sold in Spain between September and December 1985 and explain which of them is rarest and how you can find one for yourself ! Enjoy.

 

Posted in CPC 472 | Leave a comment

A closer look at the Amstrad CPC 472 timeline

Introduction

Of all the Amstrad CPC’s, the CPC 472 definitely fascinates me. Amstrad sold the CPC 464 model in Spain as elsewhere in Europe but due to local laws and added tariffs, Amstrad was forced to change how the original CPC 464 was sold in Spain, and therefore their were actually 4 distinct incarnations of the Amstrad CPC 464 sold in Spain, listed below.

  1. CPC 464 with British keyboard and Basic 1.0
  2. CPC 472 with British keyboard and Basic 1.1
  3. CPC 472 with Spanish keyboard and Basic 1.0
  4. CPC 464 with Spanish keyboard and Basic 1.0

So what was the CPC 472 actually ? The CPC 472 versions had an extra 8k RAM which was unused, 64k+8k = 72k. That extra 8k was enough to avoid the 90 Euro tariff (approx 15,000 pesetas).

These CPC’s however were all CPC 464 under the hood in looks, motherboard and more, they did have an additional daughter board soldered on to make it look like the total of 72k was real, but it was fake. This was a 64k computer with different versions of Basic, different boot roms, and different languages on the keyboard.

Below you can see the hack, with the Spanish ROM. This photo is from a late CPC 472 with the ‘ene’ key and Spanish keyboard.

40037   32K ROM; BIOS and BASIC for CPC464 and Late-CPC472-models (Spanish)

Timeline

Based on the info I’ve found so far, I’ve updated an existing Amstrad Wiki timeline with 472 specific information, it’s approximate, so if you have more accurate info let me know.

The gap of possible sales of the CPC 472 would probably have started sometime after August 28th 1985 + 2 weeks if you take into account the amount of time engineers had to create the workaround.

Sales of the CPC 472 would presumably have ended January 1st, 1986 when Spain joined the EEC as therefore the tariff would no longer apply, and therefore no justification for the CPC 472 would exist. So in the timeline below, I am guessing that the CPC 472 was actually offered for Sale some time after August 25th/September 3rd 1985 and up until January 1986.

Note: If anyone has a CPC 472 that was purchased before July 17th 1985 or after December 1985, then please let me know and include a photo of the back plate including the serial number for proof. I will then update this CPC 472 specific timeline.

That said, if there were any unsold stock of 472’s left over after January 1st then we may have seen them sold after this time. This would mean that the timeline for CPC 472 availability would be approximately from August 28th – December 31st 1985.

A closer look

The first 464 sold in Spain had a British keyboard, Basic 1.0 and looked just like a normal CPC 464. Below is a photo of one which I found on the Spanish sales site Wallapop today.

Then on July 17th 1985, a law (or royal decree) was signed into Spanish law declaring that all computers that were imported into Spain had to have an additional tariff (extra customs charge) added. This was probably related to a Spanish company called Eurohard which wanted to sell their 1 million Euro stock of Spanish made Dragon mini computers to the home market.

This tariff added approximately 90 Euros per CPC sold in Spain and would have been the  end of the CPC in that market.

However, August 28th 1985, the law was amended, as companies that imported PC hardware in Spain lobbied the government to add an addendum to make the tariff only applicable for imported computers with less than or equal to 64k of RAM.

This effectively meant that any CPC with more than 64k could be sold without a tariff. This was enough for the Amstrad engineers to come up with a justification for the extra 8k RAM in the CPC 472, even though the actual RAM was unused.

 

Below you can see a CPC 472 with a British keyboard.

Below is a CPC 472 with a Spanish keyboard

And below is a Spanish keyboard CPC 464 (which would have been after the CPC 472 were  produced)

And below is a very late Schneider branded CPC 464 with a Spanish keyboard

The CPC 472 serial number

The serial number on the back of your CPC 472 reveals where and when it was made. Thanks go to the cpcwiki for this info. The serial number used on CPC 472’s should be in the following format:

“123456 Kxx-yy”

  • K is the country of production (K for Korea – South Korea)
  • xx is the plant (31 or 32 are the two codes that typically found).
  • yy is the year and month of leaving the factory. First digit represents the year (4 for 1984, 5 for 1985), second digit represents the month (1 through 9 = January-September, X, Y and Z= October, November and December)
  • Finally, the 6-digit number is the actual serial production sequence number fr that factory and year

Examples:

  • 93132 K32-54 => Korea factory 32 – April 1985 (a 664)
  • 218 167 K32-5X => Korea Factory 31 – October 1985 (a 6128)

Below you can see three CPC 472 genuine serial numbers.

Serial: 247129 K31 – 5X (October 1985)

Serial: 242265 K3- 5- (1985)

Serial: 283097 K31 – 5Z (December 1985 )

Where can I buy one ?

Try ebay.es or es.wallapop.com, keep in mind you’ll probably need to find a friend in Spain to assist you with the purchase if it’s from the Wallapop site. They range in price from 99 Euros up to many hundreds more, depending on condition and what they come with.

Conclusion

If you compare the timeline (and locations) of where CPC 472’s were actually sold to that of the Amstrad CPC 664, I think this device is actually rarer than the coveted CPC 664, and it should get that recognition. My advice ? Buy one now, while you can. I suspect that they will go up in price.

Related reading

Posted in CPC 472 | Leave a comment