PDA

View Full Version : Question on custom KS ROMs



MartinW
15th January 2015, 13:09
Hi all,

I've seen a lot of info on this and I'm good with about 95% of the info, but have a question right on the final bit (burning it to physical ROMs).

If I'm using 27C400's on a 4000D, and my image is a 512k split into two HI / LO parts of 256k each, do I for sure need to 'copy /b /v A + A to B' (i.e., two copies) to the physical ROM?

I ask because I've been through a few iterations where I just get a blank screen and now I'm sure I've got it right because I get a checksum error instead (red screen) so I'm now thinking that my 150ns ROMs are not fast enough for the 4000 even though some people have had luck with them. I did wonder if I should tie pin 1 either high or low, but then if the image is in both halves it shouldn't matter even though in the original mask ROMs the pin is N/C internally.

Assuming it's speed related, I was not able to get any faster 400's so I've ordered some 27C800's which are 100ns. They should be fine as I can just leave pins 1 and 42 overhanging the socket and tie pin 1 to GND. In which case, I guess I'm either burning 4 copies now or 2 copies to the lower half of the ROM (with pin 1 tied low).

Does that all sound correct?

PS: The content is fine as I've verified it on an emulator.

roy_bates
15th January 2015, 14:46
27c400's should work fine and they dont need to be faster as far as i know.

no,you dont need to double them up to fill them.

a thought did pop into mind,have you byte swapped them before you burned the eproms? yes,you have to for them to work on real hardware,you dont in emulators

MartinW
15th January 2015, 15:08
Hmm, well the 800's won't hurt to have as this is ultimately for my A1200 which my friend hasn't sent yet. I was basically experimenting in the meantime while I wait.

Yep, I wrote a Mono / C# utility to both byte swap and split them. Though I did try swapped and not. I tried a few combinations before realising that I had the HI and LO part round the wrong way :Doh:

Initially I couldn't read my original mask ROMs because my programmer was just complaining about a bad contact on pin 1. That was when it dawned on me it was probably not connected internally so I jumpered pin 1 to pin 21 (VCC) in the programmers socket, read the masked ROMs and then made sure my ROMs matched the format I'd read from those. I used VCC because I was being lazy and I couldn't be bothered to look up which pin was GND :P

So, hence, not sure what the Amiga is doing when it's creating the checksum and wondering if it's reading the whole ROM space and getting the wrong checksum because I've doubled it. But surely there's a header or something in there to tell it to stop reading at the end of the first 256k and not blindly try to checksum the whole lot?

[EDIT] Maybe I should back-pedal slightly and go back to the emulator just in case I've done something stupid and it's still pointing to standard ROMs and not mine or something. That would be pretty dumb, but I was tired. I kind of assumed the fact it's giving me a red screen means it's executing the code in the ROMs and it must therefore be OK, if the format was wrong it wouldn't be able to execute anything and would just give a black screen i think.

dw0ntU5m3
16th January 2015, 00:28
AFAIK you DO have to double them up in that you double the 256K split ROMs to fill the whole 512k of a single AM27C400. You wouldn't have to double if you were burning for a single 16 bit Kickstart for an A2000. I had a similar experience with AM27C400-150 on an A4000, the ones that were nearly working were giving the Red screen. My guess is that if they hadn't gone through so many erase cycles or a bad erase before I got them maybe they would have worked. If it is a speed issue remember to set the A4000 ROMSpeed jumper to 200ns maybe they'll work, still didn't work for me. What I do is split with Remus, double them with the Windows copy then open them up to make sure they doubled correctly then let the burner do the byteswap.

roy_bates
16th January 2015, 01:26
AFAIK you DO have to double them up in that you double the 256K split ROMs to fill the whole 512k of a single AM27C400. You wouldn't have to double if you were burning for a single 16 bit Kickstart for an A2000. I had a similar experience with AM27C400-150 on an A4000, the ones that were nearly working were giving the Red screen. My guess is that if they hadn't gone through so many erase cycles or a bad erase before I got them maybe they would have worked. If it is a speed issue remember to set the A4000 ROMSpeed jumper to 200ns maybe they'll work, still didn't work for me. What I do is split with Remus, double them with the Windows copy then open them up to make sure they doubled correctly then let the burner do the byteswap.



after i re-read the original post i did a little investigation and realized i was completely wrong...

the hi and lo files do need to doubled before burning them to the 27c400 eprom's for the 4000 otherwise it wont work...

sorry martinw,i made a mistake when i posted.im posting back to confirm this is true mate.

MartinW
16th January 2015, 13:49
lol! no worries.

I didn't do anything last night - had a night of relaxing. And now the 27C800's have turned up. I'm a little concerned as to whether they will fit in the 4000 as there's really not much room for the extra pins to overhang but I guess I shall find out soon enough (I'm out tonight though).

If we're agreed on the need to double them up then I'm struggling to see how it could be anything other than the speed of the chips. If they fit, I'll give the 100ns 800's a whirl and report back. If they don't fit then I guess I'll just have to stop faffing about on the 4000 and wait until the 1200 turns up. Which should be sometime next week now. I hope so as I've ordered the ACA1233/40 now :lol:

Oh, PS: yep, already tried the jumper setting on 200. In fact that's where it was by default with the mask ROMs anyway. It has to be a marginal speed issue!

MartinW
17th January 2015, 17:45
Just to update this one as solved...

I guess it must have been either bad 27C400's or that they were too slow. I think it unlikely they were bad as they checksum'd OK and verified OK in the programmer after programming.

Basically I burnt my image to the new 27C800's but of course now 4 copies and they work just fine. They were a bit of a squeeze to fit into the 4000D with pins 1 & 42 overhanging the socket, but fit they did and that's good enough for me. For the record I tied pin 1 to pin 31 (VSS) with a 0.1pF ceramic disk cap rather than leaving it floating.

So now I know that the physical process is correct, I can crack on and create my custom ROM :)