Joe's Hobby Electronics
  • Joe's Hobby Electronics
    • Electronics Blog

 Building an Acorn System 1 replica - Part 3 22/09/2019)

It's been a busy weekend with it's up's and downs and it's had it's fair share of stupid silly problems that have taken a lot of time to resolve. 

After assembly of the board, I needed some way to test it which should have been easy, but ended up taking most of the weekend. 
I'm not going to bore you with the details, but I will list a summary of the crap I've dealt with.

EPROM Programmer... or lack of on that works.
I've actually got several EPROM programs all, it turns out, with limitations.
All I wanted was an EPROM programmer than I could hook to my PC, manually enter some HEX and burn it into the device.

I've got a couple of cheap Chinese USB programmers that are terrible. I'm sure the hardware is OK but the software is crap and won't work on anything much more than Windows XP. After messing around attempting to get an old XP laptop up and running I still couldn't get their software to install.
In the end I reverted to an EPROM programmer I bought in the late 1980's that is as slow as anything, only works over a serial port and the software for it is 16 bit. I eventually got it working but I've added "Create EPROM / EEPROM programmer" to my list of new projects.
I managed to blow an EPROM with a very simple test program.

I hooked some TIL311 HEX LED's to the CPU board via a 74LS245 buffer. A bit of decoding on board so I could select the display to access and hey presto I should be able to test the board. 

No such luck. It turns out that for some reason the output of the 74LS245 wouldn't swing to +5v correctly and so wasn't producing enough dive for the displays. I changed the 74LS245 buffer to a 74HCT573 and that fixed that problem.

However, no matter what I did I couldn't get the CPU to run the program in EPROM. Well, I think I couldn't but it's not really easy to tell.
Poking around with an oscilloscope showed data on the address and data buses so it was doing something. 

I decided to attach an Arduino to the CPU's interface connector and see if I would write some software that would be able to read the program out of EPROM via the BUS. After a LOT of messing around and several red-herrings followed by a sleepless night I figured it out.

I'm such a twonk.

The 6502 needs three addresses storing at $FFFA/B, $FFFC/D and $FFFE/F in memory so that it knows where to fetch it's first instruction when the CPU first boots is is responding to an interrupt or reset signal. I knew this... of course I knew this. And I'd even programmed the info into the EPROM.
What I'd forgotten was that whilst I'm using 8K EPROMS the window in the memory map is only 2K. I'd calculated the offsets incorrectly and was storing these address pointers in the wrong location. 

Once corrected hey-presto, it works.
Picture
So, as I've been going along I've been making changes and improvements to the schematics and PCB designs and at some point I'll need to order a new set. However, for now I can continue with the original ones. I've added jumper wires where required and modified the PCB tracks as needed. 
The next step is to write a small test program to test the RAM. My EEPROMS I've ordered aren't going to be here for a while yet, so I'm going to have to stick with burning EPROMS for the time being. 
Still, at least I'm now moving forward again.

​More soon.
PART 2
© Joe Farr, 2011 - 2019 - Email: HobbyElectronics@kcsl.uk.com