The KimKlone: a radical 6502 redesign
laughtonelectronics.com
laughtonelectronics.com
Another revolution of course is the community of the Internet. My KimKlone project was conceived and implemented as a one-man effort, and for years it remained a de facto secret since I had no way to publicize it and almost no-one to discuss it with. These are magical times we live in, and I'm grateful to share your ideas and comments.
-- Jeff
It is well worth your time to get an FPGA evaluation kit (my all time favorite is the Altera DE-2) and learn for yourself how straight forward it is to build your own CPU which is has instructions that do things you need vs what the manufacturer thought you might need.
[1] http://opencores.com/project,lattice6502
[2] http://edablog.com/2010/05/06/mos-6502-cpu/
[3] http://fpgacpu.org/xsoc/cc.html
Don's book: http://www.abebooks.com/9780672215247/Cheap-Video-Cookbook-L...
"Let's see how fast this thing can go before the smoke gets out."
[Told to me by Leonard. I miss Friday beer-bashes surrounded by lab equipment, all kinds of stuff can happen. Richard Frick has the Atari distance record for a reverse-biased 555 timer; it blew its top about 15 feet.]
Haha! That's really funny, spectator sports for nerds :)
25Mhz is not too shabby, how did the ram hold up at those speeds?
Hacking at its finest.
Incidentally, this is what the 65816 was made for.
1) you have to detect near jumps that jump back inside one bank. (at least from instruction ending on 0xffff to instruction starting on 0x0000, on the other hand you can plausibly ignore this as it is very unlikely case)
2) more importantly, I understand that this coprocessor contraption does not interact in any way with lower 16 bits of address bus. You would need to actually snoop on address bus and detect the wraparound and as this thing is built from MSI logic, detecting transition 1 -> 0 on all bits of address bus - while conceptually trivial - would require significant amount of hardware. You can detect 1 -> 0 transition only on 15th bit of address, but then you really need to detect jumps in microcode and disable this logic in case of jump.
More explanation in the appendix on the instruction set. The opcodes are 13, 23, eb and fb:
http://www.laughtonelectronics.com/arcana/BrideOfSon%20KK%20...
Bottom of the list.
On top of that he boosts the speed of his forth interpreter by concentrating on a frequently used construct called 'NEXT' in a way that should make anybody that has tried to optimize the inner loop of some VM or language proud. After all, what better way to optimize in such a situation than to be able to mold the instruction set to your desire.
He then uses this home-brew Frankenstein contraption as his benchtop computer for multiple years to do real work (instead of just shooting some pretty pictures and calling it a day).
hth
[0] : http://www.laughtonelectronics.com/arcana/BrideOfSonPg5.html
@mjhall - you're quite right; the strange, phantom 65c02 operations dramatically expanded what I could do with this project. It's extremely cooperative of the CPU to generate a memory address while leaving all registers unchanged! Although it's true I could've used the PROM to map NOPs onto CMP or BIT instructions and gotten my addresses that way, that approach preserves the registers but still stomps the Flags. In contrast, the "LDD" operations are ideal for the job -- an opportunity handed to me on a silver platter!
-- Jeff