Thursday, 2 May 2013

Prototype case

I made a prototype version of a case for the CPC2013 last night at fizzpop using the laser cutter:

It's a little too small for the PCB, the holes aren't quite in the right place and a couple of them are missing as I forgot to convert the circles into bezier paths. But hopefully, armed with the knowledge that it can actually be done I'll be able to get it right next week... :)

The case is based on the Adafruit Raspberry Pi design at thingiverse which seems suspiciously similar to one I bought on ebay! My modifications are available in my github repository...

Thursday, 28 March 2013

First of my revision 2 PCBs

Mostly working well. There's a couple of minor mistakes, but everything mostly seems to work insofar as I've tested it. Annoyingly, I ordered the wrong size oscillators after sending off the PCBs, so the wires are heading off to the master 16MHz clock. Amazingly, there doesn't seem to be any interference!

Monday, 11 March 2013

Updated revision 2 schematics

My friend reenigne suggested I have separate audio and video ground paths, so I've made that change and decided to do the same with the USB ground, even though it wasn't explicitly required.

Hopefully this will all work now, I've sent them off to be fabbed! \o/

Saturday, 9 March 2013

I think I've finished the revision 2 board layout

So, I've been VERY quiet recently. It's not that I've not been doing anything on this project. Quite the opposite...

After quite a few late nights, I think, or at least hope, I've finished my new board layout. I can't see anything obviously wrong with it, but neither did I before I found a very obvious error about an hour ago... :o

Monday, 4 March 2013

Busy doing a new layout

So, I've been pretty quiet recently apart from posting a few links. I'm actually busily routing revision 2 of my board and hoping I'll be able to send it off this week to have some made up. Hopefully this will fix all the issues I found on the previous board as well as having a lot more expansion options...

I'll post some pictures when it's finished! :)

Thursday, 28 February 2013

Ken Shiriff's blog

I've raised awareness of this blog over at CPCwiki, but it's well worth checking out Ken Shiriff's blog.

Just recently, he's been looking at the PLA that deals with the decoding of 8085 opcodes, and has an excellent way of presenting the 8085 instruction set in Octal:

As the Z80 is a very close relative, I'd say it's well worth keeping an eye out on this very well written blog. The technical discussion of the 8085 undocumented flags is outstanding - he reverse engineers the flags from looking at a photo of the silicon, translates that into gates, works out why the existing documentation is wrong and what the flags can be used for.

It's worth remembering that the 8085 is somewhat different to the Z80, however. It's still a fascinating chip to look at and by looking at the differences between the two and how they diverged from a common ancestor is very revealing.

Tuesday, 5 February 2013

Reading the FAT the BASIC way...

So, I've knocked together a simple SD card interface... There's a state machine which initialises the card (works with MMC, SD and SDHC), reads the partition table and then exposes a simple byte-wise interface, handling all the sector blocking stuff automatically. You simply pass in the sector and offset, assert begin_read and the card layer asserts data_ack when the data is available to be read on data_out. Then deassert begin_read and wait for data_ack to deassert before continuing.

I've just made a very simple interface from this to the CPC. Writing to &FAD0 shifts a byte into the sector address and resets the sector offset. Reading from &FAD0 asserts begin_read and returns data_ack in the top bit. Reading from &FAD1 fetches the data input and de-asserts begin_read. Simples!

I need to build a FAT layer on top of this and then I can build the DSK image layer on top of that. But for now, I just wanted to get to work on the DSK layer code, so I'm going to use the interface so far to read the file into RAM.