Hacker News new | past | comments | ask | show | jobs | submit login
The Amstrad CPC 472, an unusual case (auamstrad.es)
90 points by sohkamyung 11 days ago | hide | past | favorite | 52 comments





In the summer of 1987 I mowed yards 7 days a week, 4-6 hours per day to earn enough money to buy an Amstrad PC 1512. I was 10 years old and when I finally got to unbox it and power it up, it was the most exciting thing that ever happened to me.

I almost think there's some sort of article/podcast/something in this as I've heard so many similar stories from that era. For me it was sweeping yards and doing chores to save up to buy Visual Basic for DOS. Not the best use of my money it turned out.. :-D

For me endless (and I really mean endless, especially on days with rain) news paper routes.

My parents bought one to do their accounting but never used it.

I was a bit frustrated because all my friends had CPC 6168 and were constantly trading games. At this time the PC games were a lot less common (and more expensive) it pushed me to start programming with GEM Basic.


I'm guessing you meant a CPC 6128 ? There are some really fun games for that machine but it's just at the edge of useful for a bunch more things, it has a real disk drive, but the disks are expensive and capacity is low. It's technically just about capable of using a hard disk, but that's crazy expensive. It can run a real operating system (CP/M) but not very well because it needs a hard disk you don't have or constant disk swapping. Or like many 8-bit home computers it boots into a BASIC environment that has a bunch of clever tricks but ultimately dead ends.

The 128kbytes of RAM are bank switched, so it's better than a 64kbyte machine but not as much better as you'd hope.

On the family VIC-20 I basically reached the limits of what was practical to do with it. I ran out of RAM, my programs became too slow and unwieldy to use. I never got there with the CPC 6128 but I could certainly feel where the limits were, closer than you'd like, and it often caused me not to set off in a particular direction knowing I'd soon run into a wall anyway. I wrote some simple assembly language but never tried to run a real high level language (other than the built-in BASIC).

Whereas on my 486sx25 and subsequent machines it was only ever a matter of time and money, so that was always on me.


My father brought one one day. I sadly made nothing out of it, and struggled to install double dragon. One anecdote though... my parents knew people who's son was 20~ and quite into computers. One day he brought us a thing called Works, that he used to manage VHS labels with. It was all innocent but years later I realized this was the first encounter with piracy :)

I still have the mouse somewhere.


GEM desktop, digger, ribbit, and all the rest?

Did you have dual floppy drives or one?


Dual floppies and let me tell you that 6 months down the road I was upset with that decision. Loading any games took 4 floppies and 20 minutes.

CPC464 for me. Colour! Built in tape deck!

I lost years to Elite. Loved it. Haven’t been as engrossed in a computer game before or since...


So basically Spain taxed computer machines with less than 64kb memory, so Amstrad introduced a computer with 72kb, with an additional 8kb that was soldered but not even connected. Clever!

I'll look for the Alan Sugar' autobiography as well.


Other side effect was the Inves ZX Spectrum+ and the ZX Spectrum 128K . On this case, the computer had really 128KiB, a Spanish keyboard and translated ROM.

From : https://en.wikipedia.org/wiki/ZX_Spectrum#spectrum128

"In 1985, Sinclair developed the ZX Spectrum 128 (code-named Derby) in conjunction with their Spanish distributor Investrónica (a subsidiary of El Corte Inglés department store group).[28] Investrónica had helped adapt the ZX Spectrum+ to the Spanish market after the Spanish government introduced a special tax on all computers with 64 KB RAM or less,[29] and a law which obliged all computers sold in Spain to support the Spanish alphabet and show messages in Spanish."


Random Amstrad memory:

When you were coding in BASIC, I don't think there was clipboard but there was a way to get a second cursor to appear that you could position with the (I think) arrow keys somewhere else on the screen. You could then press a "copy" key and it would copy one character at a time from the second cursor to your current editing position. It's weird thinking back to when you didn't have a proper IDE.

Has a similar UI been seen on a computer before this? There's a "copy mode" in Screen for Linux that has similarities.


The implementation of that copy function was rather unusual, since there was no text buffer that the system could copy from, all it had was a bitmap in video RAM. The system would read the 8x8 pixels below the copy cursor, and compare the pixels with the 256 known character glyphs one by one, to determine which character it was. One could call this a primitive form of OCR, although even a single modified pixel would make the copy function fail.

The whole copy-by-character-recognition feature in the Amstrad firmware was such a weird hack that it seems unlikely anyone else has ever coded a similar solution for production use, except maybe in some application where the copy functionality had to be bolted-on later. Amstrad did it that way from the start.


You could even use this functionality from your own code - CALL &BB60 would read a character from the current cursor position and return its ASCII code.

Any idea how fast it was? If it was doing a linear search it doesn't sound like it would be fast.

Maybe I couldn't find a better way at the time, but to add a pause/delay to game code, I remember using "for" loops that just counted to an arbitrarily high number because the processor was so slow e.g. count from 0 to X to make it wait a few milliseconds.


It wasn't fast. But if you were really concerned about performance on the CPC you wouldn't be using the firmware anyway.

Standard practice to do a delay on the CPC was a loop around CALL &BD19 - that paused until frame flyback, i.e. 1/50th of a second.


GW-Basic on DOS did the exact same thing in graphics mode. I had quite a bit of fun experimenting with that.

Also, Bill Atkinson, when making MacPaint, actually implemented something similar to edit text that had been placed into the bitmap with the text tool. Since he knew that it couldn't be perfectly reliable (as there might be non-text pixels in there), he got rid of the feature (https://www.folklore.org/StoryView.py?project=Macintosh&stor...)


Cool, that's a pretty weird/neat hack. How come you know about how it was implemented?

The Amstrad CPC firmware manual was for sale back then, but it's freely available now: http://www.cantrell.org.uk/david/tech/cpc/cpc-firmware/

In particular, there's the following note about TXT UNWRITE in the Indirections section: "This routine works by comparing the image on the screen with the character matrices; therefore if the character matrices have been altered the routine may not find a readable a character"


There's an equivalent 6502 routine in Acorn's MOS series, as used in the BBC Micro and derivatives, which had similar text editing functionality.

The code from the BBC Micro version of the OS can be seen here: https://tobylobster.github.io/mos/mos/S-s9.html#SP1


The Apple ][ series had a similar "feature". At the standard BASIC prompt, pushing right-arrow would advance the cursor over the character displayed to the right (whether or not it was part of the current "line" you had typed so far), and – crucially – add it to the internal command buffer.

On its own, this is a useless quirk, but you could also push Escape (I think) to temporarily disable this behavior, permitting the arrow keys to freely reposition the cursor on screen until you hit Escape again.

So if you wanted to "edit" a line, you would list it out to the console, press Escape, move the cursor up to the start of the line, press Escape again, move the cursor right over the stuff you wanted, press Escape again, move the cursor somewhere else, press Escape again, type whatever it was you wanted to insert, press Escape again, move the cursor back to where you left off copying, press Escape again, move the cursor right over the remainder of the line, and press Return.

And then Beagle Bros came out with GPLE and ushered us into the modern era of proper line editing. What a comparative luxury that was.


The BBC Micro has this and I believe it pre-dated the Amstrad

RISC OS for Archimedes/RISC PC also inherited this feature, although, as far as I can remember, you could only use it in CLI mode (after pressing F12 key) and not in windowed mode. My guess would be that the RISC OS version for the Raspberry Pi still has the copy cursor, in that case you could argue that there are even recent systems available with it.

I think tmux's scroll mode (ctrl-b [) is similar. You move the cursor freely and if in vi-mode, you can us vi commands (as if in visual mode) to select and copy (y) contents. Pressing 'enter' goes back to non-scrolling mode, and then you can paste the contents with the configured tmux keys.

You missed this bit (emphasis added):

> You could then press a "copy" key and it would copy one character at a time from the second cursor to your current editing position

Each time you pressed the "copy" key it would literally advance both the main cursor and the copy cursor by one character, with the copied character appearing under where the main cursor just was. To copy multiple characters you would need to press the copy key multiple times or hold it down to trigger autorepeat (even then you would see this process gradually happening until you released).


X11 still has a secondary selection mechanism that allows operations like swapping blocks of text. This was commonly used in Motif apps like Nedit.

The BBC Micro had that too, a 'copy cursor' and an 'insert cursor'. Worked pretty good too.

There's a story, propounded by someone who wrote it into Wikipedia 16 years ago, that the Norsk Data ND-505 was the world's only 28-bit computer, made so in order to avoid CoCom regulations then covering 32-bit minicomputers.

* https://en.wikipedia.org/wiki/Special:Diff/7310013

Unfortunately, the story doesn't agree with the contemporary marketing literature that still exists, that calls it a 29-bit computer; or with the CPU reference manual for the ND-500 CPU that was used in the ND-505, which says that it used 32-bit logical addressing with 5 domain selector bits and 27 address bits, and 41-bit physical addressing with 2KiB pages and a 30-bit page number.

* http://sintran.com/norsk-data/library/libpdpi/ND-505CX-A1-EN...

* https://archive.org/details/bitsavers_norskDataN00ReferenceM...

* https://archive.org/details/bitsavers_norskDataN00ReferenceM...


LOL I used Norsk ADA on Sintran back in the day

Ah, the Dragon 32 rates a mention. Great little machine, my first 'real' computer. That was a TRS-80 Color Computer clone with a 6809 in it, which has what I still think was one of the most elegant 8 bit instruction sets.

I've had a Dragon 32 sitting on my shelf for years now, I've never actually gotten around to building a power supply to test it. If memory serves it needs multiple voltages feeding to it over a DIN connector.

The power supply board outputs 12V, 5V and -5V. The 5V is about 1.5 amps, the 12 250 mA and -5 50 mA.

If you've lost the supply brick; that's strictly the AC side of things, it is just a transformer in a plastic wrapper.

The outputs of the transformer are connected to a DB-9, the pinout is:

     1,6----8.5V----2,7
     3--14V--CT--14V--5
Pins 8 and 9 are NC.

Keep an eye on the large capacitor on the powersupply board, they tend to go bad, look for white stuff near the caps, if you find any replace them before trying to power it all up.

You can pull fairly decent composite video off the input to the modulator (on the PSU board).

Good luck!


For some strange reason I've had 2 Dragon 32 PSU's in my cupboard for years -alas no Dragon32 - if you cover the postage you can have one if you want?

(Sorry I know that seems tight but I'm out of work right now).

p.s. They are D plugs.. look like female joystick ports..


Thanks for the offer, I'll be in touch via email.

After Dragon got wound up, the little guys who worked inside had to get jobs advertising dehydrated mashed potato:

https://www.youtube.com/watch?v=uKt-KR1TsRg


If you speak Spanish and are bothered by the not so great translation, here's the original article https://auamstrad.es/hardware/mundo-cpc/amstrad-cpc-472/

Quite interesting


I rather enjoyed the somewhat flowery translation!

The photo of keyboard "with ene" does not show the letter, which is actually on the right half of the keyboard (the left half is chosen by the author for some reason).

You can use "enye" as a placeholder for "eñe".

On the location, currently is right to "l", in the US

layout it prints ";".


“At the sight, it is only distinguished by the screen printing of the case, where the «64» is replaced by a «72»”

I recall reading somewhere that, to give an artificial boost to the home grown market. The French introduce a law to ban the import of personal computers with less then 72kb of ram. The British got round this law by adding a small pcb to the main board, that did nothing at all. Unless it was the Spanish, funny what you mis-remember.


Makes me wonder about the Spectravideo (Z80 based) machines.

Some had 16 kbyte RAM. All Spectravideo had also 16 video RAM. But the version with 64 kbyte RAM was prominently marketed as having 80 kbyte RAM. (RAM + VRAM = 80 kbyte)

I guess that computer model could also have been imported without the high tariff.

(The Spectravideo 328, which formed the basis for the almost identical MSX standard.)


I think that's sometimes just specs preening.

The US answer to the Spectrum was called the Timex/Sinclair 2068 and advertised as a 72k machine (48k RAM/32k ROM)


After owning a Texas Instruments TI99-4A my 1st pc was an Amstrad Schneider PC 1512 with one floppy and one 20 Mb hdd. It ran, I believe GEM window system on top of MS-DOS.

Amstrad PC1512 and PC1640 were great machines. They had some weirdness like the proprietary PU mounted in the monitor but were solid, well built and well priced, even more they looked kinda futuristic when compared to the boring 8086 clone boxes of that era.

And yes, they even came with a mouse and a GUI (GEM by Digital Research).


Sharing PSUs between components was an Amstrad staple.

Sugar used the technique in products from hifi's to computers as an innovation to save money and keep costs down. That's not necessarily meant in a bad way. Amastrad often used the savings to to bump up the spec somewhere consumers cared more e.g. memory or a bundled monitor or printer.

I think when commodity PCs became wide spread Amstrad ran out of corners to cut to get an edge and became uncompetitive.


> I think when commodity PCs became wide spread Amstrad ran out of corners to cut to get an edge and became uncompetitive.

It was when Amstrad dropped their own OS in favour of DOS that they became just another commodity PC maker. Actually first Amstrad moved to DR-DOS then MS-DOS to avoid potential compatability issues. Which I'm sure Microsoft would have eventually discovered.

http://edge-op.org/iowa/www.iowaconsumercase.org/011207/PX_9...


I think that Amstrad's best selling line was actually the WPC range that used CP/M (8 million vs 3 million for CPC line with their own OS).

So having their own OS wasn't the deciding factor. I think it's the more commodity nature of PC hardware even compared to CP/M machines that did for them IMHO.


PCW range.

Doh! Yes, sorry PCW. Having a dyslexic moment there.

Ah yes. DR-DOS it was. So long ago, completely forgot about it.

I called it weird because not standard but that PSU design was also more energy efficient and even completely fanless.

And yes, by the time 286s and 386s came to the market there was really nothing more to cut, or even to add. Every part was standardized by then, profit margins shrinked and MS-DOS became ubiquitous.


If only US OFAC export restrictions were as easy to bypass!



Applications are open for YC Winter 2021

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact

Search: