During the last years I searched for a good method to connect my Amstrad CPC to a VGA display, but haven’t found the desired hardware to do that. During a search on e*ay I found a converter, which was designed for arcade machines, and connected it to my CPC. You can now find the result and more information of that in the “Articles” section.
Some regular users might have already found it – during easter I added a new egg… aehm… section to this site called “Articles”, which you can find in the top menu. I will add CPC related articles to this section, which I already had in an old design until I changed the CMS system. This means, that you will find some articles, which I wrote in 2006. The main reason was, that I still get requests from other sites to this articles – mainly the german article about how to change the drive belt of a floppy drive. I hope that I have the time to extend them in the future.
Another new thing, which was requested by some people about a year ago, is that you can now Flattr this site. Flattr is a microdontation system. You can find the Flattr button at the end of each posting. Well, it’s more an experiment, but I am interested to see if and how this evolves… Maybe it is possible to pay a round on the next CPC meeting ;-). But the good thing is, I can now use it to flattr other blogs, too :-).
Nilquader and I decided to release our Verilog code (based on Nocash’s decryption of the algorithm) to “emulate” the ACID protection chip of the Amstrad Plus. So, you can now find it in the ACID article of the CPCWiki and right here in this posting:
`timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// // Company: // Engineer: Octoate, Nilquader // ACID Reverse engineering by nocash // // Create Date : 00:45:53 09/03/2010 // Design Name : amsacid // Module Name : amsacid // Project Name : // Target Devices: Xilinx XC9572 // Tool versions : // Description : Reverse engineered Amstrad 40908 "ACID" Chip // // Revision: // Revision 0.05 // Additional Comments: // ////////////////////////////////////////////////////////////////////////////////// module amsacid(PinCLK, PinA, PinOE, PinCCLR, PinSIN); input PinCLK; input [7:0]PinA; input PinOE; input PinCCLR; output [7:0]PinSIN; wire PinCLK; reg [16:0]ShiftReg = 17'h1FFFF; wire [16:0]CmpVal; wire [16:0]XorVal; assign CmpVal = 17'h13596 ^ (PinA ? 17'h0000c : 0) ^ (PinA ? 17'h06000 : 0) ^ (PinA ? 17'h000c0 : 0) ^ (PinA ? 17'h00030 : 0) ^ (PinA ? 17'h18000 : 0) ^ (PinA ? 17'h00003 : 0) ^ (PinA ? 17'h00600 : 0) ^ (PinA ? 17'h01800 : 0); assign XorVal = 17'h0C820 ^ (PinA ? 17'h00004 : 0) ^ (PinA ? 17'h06000 : 0) ^ (PinA ? 17'h00080 : 0) ^ (PinA ? 17'h00020 : 0) ^ (PinA ? 17'h08000 : 0) ^ (PinA ? 17'h00000 : 0) ^ (PinA ? 17'h00000 : 0) ^ (PinA ? 17'h00800 : 0); always@(negedge PinCLK) begin if (PinCCLR) // not in reset state begin if (!PinOE && ((ShiftReg | 17'h00100) == CmpVal)) begin ShiftReg <= (ShiftReg ^ XorVal) >> 1; ShiftReg <= ShiftReg ^ ShiftReg ^ ShiftReg ^ ShiftReg ^ XorVal; // hier xorval mit berüchsichtigen end else begin ShiftReg <= ShiftReg >> 1; ShiftReg <= ShiftReg ^ ShiftReg ^ ShiftReg ^ ShiftReg; end end else begin ShiftReg <= 17'h1FFFF; end end //assign PinSIN = ShiftReg[7:0] ^ 8'hff; assign PinSIN = ShiftReg[7:0]; //assign PinSIN = PinCLK; endmodule
But this isn’t everything about the ACID. We also found a timing problem during the investigation with a logic analyzer, which you can see here:
You will find glitches on the /CCLR line which show that the SIN contact should be changed… All in all it is possible to use a fast flip-flop to change the SIN signal when such a glitch occurs (see picture below).
You see, this is a very simple schematic, but it isn’t much cheaper than a CPLD, which emulates the full ACID and it comes with a disadvantage: it won’t work with a reset, so you always have to switch the CPC off and on again.
So, have fun with it – maybe Bryce will change his cartridge design and support this solution in the future :-).
When Norecess released his tutorial on how to use SDCC for CPC program development with the C language, I set up a small example project for Code::Blocks, which is a free source code editor. Yesterday I had the time to update the project and added new functions. You can download the latest version from Norecess website and at the end of this posting.
- Added SDCC2Pasmo v1.3
- Changed project settings (filename can be set in project properties)
- Changed post-build options to use the filename of the project properties
- Added pre- and post-build batch files to execute own commands before and after the build process (e.g. for compressing files and adding files to a DSK file)
- Added ManageDSK with example in post-build batch file which creates a new DSK image which contains all .BIN files from the bin/Release directory
Wow, the time is passing by so fast and so the year 2009 is nearly over now. Time to say thank you for visiting my website and to wish all readers a
Happy New Year!
I hope that we will have so many news about the CPC during the next year like this year (click on the “2009” tag to see what I mean) and there will be some cool releases for sure. Keep it up :-)!