{"id":1559,"date":"2017-01-18T02:14:09","date_gmt":"2017-01-18T02:14:09","guid":{"rendered":"http:\/\/www.kernelcrash.com\/blog\/?p=1559"},"modified":"2019-06-14T08:11:17","modified_gmt":"2019-06-14T08:11:17","slug":"frankenstrad","status":"publish","type":"post","link":"https:\/\/www.kernelcrash.com\/blog\/frankenstrad\/2017\/01\/18\/","title":{"rendered":"Frankenstrad"},"content":{"rendered":"<p>So I bought the motherboard out of an <a href=\"https:\/\/en.wikipedia.org\/wiki\/Amstrad_CPC\">Amstrad CPC-464<\/a>. This was like my <a href=\"http:\/\/www.kernelcrash.com\/blog\/an-oric-wth-a-ps2-keyboard\/2016\/09\/03\/\">Oric Atmos rationalisation<\/a> . It&#8217;s cheaper to just buy the motherboard of some of these old computers, rather than the whole computer (especially when I add in postage from the UK to NZ). And I am more into these old computers for my own curiousity and educational value, rather than just purely &#8216;collecting them&#8217;.\u00a0 In the case of the Oric, I came up with a Arduino based &#8216;PS2 keyboard to old-school key matrix&#8217; converter to get around &#8216;not having a keyboard&#8217;.\u00a0 I was thinking of doing the same for the Amstrad, but I had a nice Cherry keyboard that I was given for free; ie. individual keyswitches and an easy single sided PCB. So I butchered it to turn it into an Amstrad keypad (well most of it).<\/p>\n<p><!--more-->Yeah, I hate butchering things too &#8230; but it was gathering dust. Anyway, the <a href=\"http:\/\/www.cpcwiki.eu\/manuals\/service.manual.cpc464.ctm640.gt64.zip\">CPC 464 service manual<\/a> has the matrix for the 464 on p11.<\/p>\n<p><a href=\"http:\/\/www.kernelcrash.com\/blog\/wp-content\/Screen-Shot-2017-01-18-at-12.41.39-PM.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-1562 size-medium\" src=\"http:\/\/www.kernelcrash.com\/blog\/wp-content\/Screen-Shot-2017-01-18-at-12.41.39-PM-262x300.png\" alt=\"screen-shot-2017-01-18-at-12-41-39-pm\" width=\"262\" height=\"300\" srcset=\"https:\/\/www.kernelcrash.com\/blog\/wp-content\/Screen-Shot-2017-01-18-at-12.41.39-PM-262x300.png 262w, https:\/\/www.kernelcrash.com\/blog\/wp-content\/Screen-Shot-2017-01-18-at-12.41.39-PM.png 395w\" sizes=\"auto, (max-width: 262px) 100vw, 262px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>It was nothing like the existing wiring on the Cherry, so I initially cut every single PCB trace to a keyswitch, then ran a lot of wire wrap wires to make up the 464 matrix. Here&#8217;s the result<\/p>\n<p><a href=\"http:\/\/www.kernelcrash.com\/blog\/wp-content\/Screen-Shot-2017-01-18-at-12.44.11-PM.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-1564\" src=\"http:\/\/www.kernelcrash.com\/blog\/wp-content\/Screen-Shot-2017-01-18-at-12.44.11-PM-300x128.png\" alt=\"screen-shot-2017-01-18-at-12-44-11-pm\" width=\"368\" height=\"157\" srcset=\"https:\/\/www.kernelcrash.com\/blog\/wp-content\/Screen-Shot-2017-01-18-at-12.44.11-PM-300x128.png 300w, https:\/\/www.kernelcrash.com\/blog\/wp-content\/Screen-Shot-2017-01-18-at-12.44.11-PM.png 639w\" sizes=\"auto, (max-width: 368px) 100vw, 368px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>The Z70200 CPC 464 board I have has two connectors for the keyboard. One is a single row of 20 pins with 0.1&#8243; spacing. But there are also two flex cable sockets which the original keyboard would have used. I soldered a pin header into the 20 pins, and then ran 19 (one pin is not used) jumper wires to plug into it.<\/p>\n<p>So I had a keyboard wired in. What about power and video output? I used a cheap LM2596 PSU (off ebay) and a 2.5A 12V DC plugpack to supply 5V, and connected it in on the right of the board via the cassette connector (CP001). For video, the 464 has a DIN socket on the back that pumps out RGB and sync. This is 15KHz\/50Hz style RGB, so I just created a straight through cable from the DIN to a VGA plug, then plugged this into the input of my Gonbes (which has an ATTiny85 hooked up as per <a href=\"http:\/\/www.kernelcrash.com\/blog\/the-gonbes-gbs-8200-and-arduino-uno\/2016\/04\/20\/\">here<\/a> ). And I powered on, and all was good (well I had one or two mistakes in my keyboard wiring, but after I fixed those then it was all good);<\/p>\n<p><a href=\"http:\/\/www.kernelcrash.com\/blog\/wp-content\/Screen-Shot-2017-01-18-at-12.47.35-PM.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-1566 size-medium\" src=\"http:\/\/www.kernelcrash.com\/blog\/wp-content\/Screen-Shot-2017-01-18-at-12.47.35-PM-300x231.png\" alt=\"screen-shot-2017-01-18-at-12-47-35-pm\" width=\"300\" height=\"231\" srcset=\"https:\/\/www.kernelcrash.com\/blog\/wp-content\/Screen-Shot-2017-01-18-at-12.47.35-PM-300x231.png 300w, https:\/\/www.kernelcrash.com\/blog\/wp-content\/Screen-Shot-2017-01-18-at-12.47.35-PM-768x591.png 768w, https:\/\/www.kernelcrash.com\/blog\/wp-content\/Screen-Shot-2017-01-18-at-12.47.35-PM.png 914w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>What about loading stuff? The 464 had a built in cassette recorder. I did not have the cassette unit at all. There&#8217;s a few links online about how to run an audio AUX-IN input in your 464. Most seemed to run wires directly in to spots on the circuit board that is part of the cassette player mechanism. I did not have the cassette player at all. If you look at the cassette connector on the main motherboard, the cassette read\/write connect directly to the 8255 IO chip with no buffering\/amplification.<\/p>\n<p><a href=\"http:\/\/www.kernelcrash.com\/blog\/wp-content\/Screen-Shot-2017-01-18-at-1.14.58-PM.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-1575 size-medium\" src=\"http:\/\/www.kernelcrash.com\/blog\/wp-content\/Screen-Shot-2017-01-18-at-1.14.58-PM-300x104.png\" alt=\"screen-shot-2017-01-18-at-1-14-58-pm\" width=\"300\" height=\"104\" srcset=\"https:\/\/www.kernelcrash.com\/blog\/wp-content\/Screen-Shot-2017-01-18-at-1.14.58-PM-300x104.png 300w, https:\/\/www.kernelcrash.com\/blog\/wp-content\/Screen-Shot-2017-01-18-at-1.14.58-PM.png 623w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>I will also note here that there are a few different versions of the above. Maybe there are a few board designs. My Z70200 board matches the above. But the actual service manual seems to have a slightly different diagram with GND and +5V on different pins. &#8216;RD DATA&#8217; is what we&#8217;re interested in so far as cassette loading.<\/p>\n<p>I tried a few different simple transistor amp circuits, but ended up with the following<\/p>\n<p><a href=\"http:\/\/www.kernelcrash.com\/blog\/wp-content\/Screen-Shot-2017-01-18-at-11.07.37-PM.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-1591 size-medium\" src=\"http:\/\/www.kernelcrash.com\/blog\/wp-content\/Screen-Shot-2017-01-18-at-11.07.37-PM-300x125.png\" alt=\"screen-shot-2017-01-18-at-11-07-37-pm\" width=\"300\" height=\"125\" srcset=\"https:\/\/www.kernelcrash.com\/blog\/wp-content\/Screen-Shot-2017-01-18-at-11.07.37-PM-300x125.png 300w, https:\/\/www.kernelcrash.com\/blog\/wp-content\/Screen-Shot-2017-01-18-at-11.07.37-PM-768x319.png 768w, https:\/\/www.kernelcrash.com\/blog\/wp-content\/Screen-Shot-2017-01-18-at-11.07.37-PM.png 973w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>The LED attached to the motor control is so that you can see when the Amstrad (thinks it) has activated the cassette motor. For most games I found the motor LED is on continuously while loading, but there are a few that\u00a0 you&#8217;ll need to pause the audio when the LED goes off temporarily.<\/p>\n<p>And now I can enter<\/p>\n<p>run&#8221;&#8221;<\/p>\n<p>and load a game into the thing. Here it is running &#8216;Betiled&#8217;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-medium wp-image-1578\" src=\"http:\/\/www.kernelcrash.com\/blog\/wp-content\/Screen-Shot-2017-01-18-at-1.24.42-PM-300x227.png\" alt=\"screen-shot-2017-01-18-at-1-24-42-pm\" width=\"300\" height=\"227\" srcset=\"https:\/\/www.kernelcrash.com\/blog\/wp-content\/Screen-Shot-2017-01-18-at-1.24.42-PM-300x227.png 300w, https:\/\/www.kernelcrash.com\/blog\/wp-content\/Screen-Shot-2017-01-18-at-1.24.42-PM-768x582.png 768w, https:\/\/www.kernelcrash.com\/blog\/wp-content\/Screen-Shot-2017-01-18-at-1.24.42-PM.png 960w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>I am new to Amstrad-land (I had never used one before, nor tried an emulator!), so I had to figure out how to load cassette images. For me this was;<\/p>\n<ul>\n<li>Download playtzx 0.12c for linux from <a href=\"http:\/\/www.worldofspectrum.org\/utilities.html\">the worldofspectrum utilities page<\/a><\/li>\n<li>Compile playtzx on linux. I was worried it wouldn&#8217;t work (as its pretty old). It compiled OK on my Fedora 24 box.<\/li>\n<li>Find some source of Amstrad cdt files (I&#8217;ve been using cpc-power)<\/li>\n<li>Convert cdt files to voc files.\/playtzx -voc -freq 22050 some-game.cdt some-game.voc<\/li>\n<li>Run a 3.5mm stereo audio cable from your linux box audio out to the cassette input transistor buffer bit (ie. the little transistor amp thing I showed earlier). Turn the volume right up (I just use alsamixer).\u00a0 After you do the RUN&#8221;&#8221; on the Amstrad and hit ENTER a few times, do this on your linux boxmplayer some-game.voc<\/li>\n<li>Patiently wait. I find these cdt images often have &#8216;nothing&#8217; at the start of them, and you don&#8217;t get any indication the Amstrad is doing anything until about 20 seconds (or even close to 40 seconds) into loading. Some games take a long time to load, and I&#8217;ve noticed an oddity where it looks like its not loading towards the end of playing the image (via mplayer) &#8230; but if I just wait until mplayer finishes playing , it turns out that the game actually starts (Ninja Scooter Simulator is like this for me). Also watch out for games where the motor LED goes off. You&#8217;ll need to hit the space bar on your mplayer session to pause it until the LED comes back on again.<\/li>\n<\/ul>\n<p>So what&#8217;s an Amstrad CPC 464 like? I wasn&#8217;t expecting much. It has no hardware sprites, no proper hardware scrolling (other than what is possible with the 6845), and I know what you can generally get out of an AY chip for sound is just &#8216;OK&#8217;. But I am quite impressed. The games are quite colourful, and the music and sound effects not too bad. My son and I have been playing Ghostbusters a fair bit, and we have also played the C64 version as well. The C64 version is better, but not by much. Playability-wise the Amstrad version is really good. The Dizzy games are good (I think they originated on the Amstrad), and something like Rick Dangerous is fun and humerous (and I have only played the Amiga version). There were an enormous number of games written for the Amstrad. It was a lot more popular than I thought.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>So I bought the motherboard out of an Amstrad CPC-464. This was like my Oric Atmos rationalisation . It&#8217;s cheaper to just buy the motherboard of some of these old computers, rather than the whole computer (especially when I add in postage from the UK to NZ). And I am more into these old computers [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[],"class_list":["post-1559","post","type-post","status-publish","format-standard","hentry","category-retrocomputing"],"_links":{"self":[{"href":"https:\/\/www.kernelcrash.com\/blog\/wp-json\/wp\/v2\/posts\/1559","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kernelcrash.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kernelcrash.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kernelcrash.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kernelcrash.com\/blog\/wp-json\/wp\/v2\/comments?post=1559"}],"version-history":[{"count":25,"href":"https:\/\/www.kernelcrash.com\/blog\/wp-json\/wp\/v2\/posts\/1559\/revisions"}],"predecessor-version":[{"id":1956,"href":"https:\/\/www.kernelcrash.com\/blog\/wp-json\/wp\/v2\/posts\/1559\/revisions\/1956"}],"wp:attachment":[{"href":"https:\/\/www.kernelcrash.com\/blog\/wp-json\/wp\/v2\/media?parent=1559"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kernelcrash.com\/blog\/wp-json\/wp\/v2\/categories?post=1559"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kernelcrash.com\/blog\/wp-json\/wp\/v2\/tags?post=1559"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}