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.