Twin 4040s. 128k static RAM. A line buffer, probably in the region of the number 244. Something related to Arduino in a vague fashion.
8 data lines connected to the buffer, and from there onto the RAM chip. The 4040s provide the address generation.
Press a button or otherwise glean a clue about an appropriate time to start sampling from some logic or other. Reset the addressing logic. While ram not full:- increment address, latch data into the buffer and then write it to the RAM. When RAM full, await instructions to download via serial.
Could work, non?
Alternatively there seems to be a little logic analyser war happening right now - I'd back this regime. If you earn in dollars, then it's offering quite good value for money. If you earn in English pounds then you're laughing.
Sorted by Squirrels.
Saturday, 20 September 2008
Friday, 19 September 2008
Programmer Redux
The drop-in centre for stray capacitance was closed by the health and safety after it was shorted by a stream of wee created by a Superintended Nindo. At least I think that's what I heard. I could be wrong. Whatever happened, all the residents must have all come to join with the raving mass I already had, the result of which is that the board resolutely refused to work again after my last witless ramblings.
Pictured: Stray capacitance gathering
ready to frustrate my EEPROMming.
So - I started again!
The code was as much of a lash-up as the board, so I gutted it in favour of a Max6956 IO expander cum LED display driver. 20 gorgeous lines of GPIO, all driven by the Wire library and 2 lines off the Arduino. 12 Address lines, 8 data lines - Pimms o'clock! It's so much cleaner now without having to clock data around scratchy shift registers. I might actually show it to you.
The board came together in about 40 minutes and the code didn't take long at all because I already had a working sketch that drove the beastie. And to my immense relief it worked first time, and reliably every time since. I think I may well solidify this design onto one of the Arduino shield PCBs that I bought from Lady Ada aeons ago 'in case I ever needed one'.
You can see here the new MMC sail, #4 in a series of many. My favorite one so far, this has more than the requisite 6 resistors. I got a smart colleague to recommend a way to get an LED to flash in response to the clock line clocking. He told me that a monostable would do the trick and here it is. Why not just pop an LED on the line? Well, I'd done that already and sometimes that clock line might be left high.
Pictured: Stray capacitance gathering
ready to frustrate my EEPROMming.
So - I started again!
The code was as much of a lash-up as the board, so I gutted it in favour of a Max6956 IO expander cum LED display driver. 20 gorgeous lines of GPIO, all driven by the Wire library and 2 lines off the Arduino. 12 Address lines, 8 data lines - Pimms o'clock! It's so much cleaner now without having to clock data around scratchy shift registers. I might actually show it to you.
The board came together in about 40 minutes and the code didn't take long at all because I already had a working sketch that drove the beastie. And to my immense relief it worked first time, and reliably every time since. I think I may well solidify this design onto one of the Arduino shield PCBs that I bought from Lady Ada aeons ago 'in case I ever needed one'.
You can see here the new MMC sail, #4 in a series of many. My favorite one so far, this has more than the requisite 6 resistors. I got a smart colleague to recommend a way to get an LED to flash in response to the clock line clocking. He told me that a monostable would do the trick and here it is. Why not just pop an LED on the line? Well, I'd done that already and sometimes that clock line might be left high.
Labels:
arduino,
Max6956,
MMC,
stray capacitance,
weewee,
wire library
Tuesday, 16 September 2008
Lash-up!
What a mess! But it works - sometimes :) All that stray capacitance - well someone's got to give it a home.
This is what I'm forced to do because the Stag PP39 EPROM programmer that I was so generously given by a fellow FreeCycler works well, but for its serial connection. Ho hum. Wanting to burn an EPROM to hold the driver code for the Atom MMC interface was the necessity that was the mother of this frightful invention. In a fit of pique I had the idea that I should create a 3-step process: Burn my code into an EEPROM, transfer this to the programmer's buffer, and thence into an EPROM! Why not just use the EEPROM for my project? An astute question, esteemed reader. Well the type of EPROM expected by the Atom is an olde-fashioned marque with a subtly different pin-out to the more contemporary (read: standard) 27x series. Luckily the PP39 can burn the 2532 that was required. Even luckier I suppose is the fact that I had one of these! An adapter board can be made to facilitate the harmonious interfacing of the disparate breeds, but this would involve less lashing-up, you see? And we all need a jolly good lashing from time to time.
I digress. What you see before you (or more correctly above) is an ls299 accompanied by a brace of ls164 shift registers. These in turn are connected to an 8k Atmel EEPROM. In the driving seat you see the Arduino and - naturally - a poor but functional MMC interface. The 164s are in charge of address generation, and the 299 has bi-directional data line duties. It's a simple and effective design which I have referenced before.
I've developed the Atom MMC driver in assembler, naturally. This time I opted for cross assembly. If you saw the code attached to my previous post (my - is that the time?) you may well understand why - the inline assembler is hard work with its terse labelling syntax. I develop and assemble on a PC, using a custom Visual Studio workspace and a freeware 6502 assembler. The resulting binary is debugged as far as possible using Wouter Ras' brilliant though tricksy DOS Atom emulator. When I'm happy with the code it gets put on the MMC card and burned to the EEPROM using a subtle combination of swearing, crossed fingers and sacrificial chickens. The burning process needs to be attempted a fair number of times (the stray capacitance, bless) until the verify step passes and I can be sure the lash-up has worked. Once transferred to the programmer, the code fizzles its way onto a freshly UV-cooked EPROM and then into its warm and welcoming bed - Socket IC24. And so to work:
Presenting - the MMC adapter I built to fit on the venerable machine's expansion port, as visible here.
And in situ:
Goodness - that is the time! Two and a half months this post has taken me! Either that or my post-Sachertorte coma was deeper than usual... Whatever, forgive me. I am off to play Atom Invaders - which now loads in under 3 seconds, a far cry from the original 5 minutes of the tape version!
Subscribe to:
Posts (Atom)
Contact Form
This is how we do it
MMC
(9)
acorn atom
(7)
sord m5
(7)
zx81
(7)
multicart
(6)
arduino
(5)
Sord
(4)
tatung einstein
(4)
Atari 800
(3)
Chuckie egg
(3)
M5
(3)
M5Multi
(3)
c128
(3)
sd card
(3)
sd2iec
(3)
sio2sd
(3)
6502
(2)
Max6956
(2)
QL
(2)
RCM
(2)
assembler
(2)
avr
(2)
c64
(2)
cadsoft eagle
(2)
eeprom
(2)
einSDein
(2)
mmbeeb
(2)
multi-cart
(2)
spi
(2)
system 80
(2)
ufat2
(2)
vic20
(2)
video genie
(2)
6502 second processor
(1)
6522
(1)
8255
(1)
Acorn BBC Micro
(1)
Apple 2e
(1)
Apple ][ 2 two
(1)
BBC 6502 second processor
(1)
BBC micro
(1)
DevicePrint
(1)
Double Choc Chip Muffins
(1)
FAT
(1)
IO
(1)
Jupiter Ace
(1)
LED
(1)
Master 128
(1)
PCB
(1)
PIC
(1)
POV
(1)
PROGMEM
(1)
Pineapple
(1)
ST
(1)
Spectrum 128
(1)
antex
(1)
arcade spinner
(1)
arduino shield
(1)
atari
(1)
atmel
(1)
bakewell tart
(1)
beer
(1)
bird's nest
(1)
bitbucket
(1)
brokenated XC special
(1)
cake
(1)
cassette
(1)
cassette interface
(1)
colecovision
(1)
compact flash
(1)
convert
(1)
dac
(1)
de-yellowing
(1)
dev cart
(1)
development tool
(1)
eaca
(1)
efficient
(1)
einsdein. z80
(1)
esp32
(1)
esp8266
(1)
eye strain
(1)
failosophy
(1)
filesystem
(1)
finally
(1)
fram
(1)
french polishing
(1)
fuse
(1)
fuses
(1)
game development
(1)
games
(1)
gaming
(1)
github
(1)
glue
(1)
google chrome
(1)
heroic failure
(1)
high voltage programming
(1)
hot irons
(1)
if
(1)
jiffydos
(1)
joey beltram
(1)
lego robot
(1)
library
(1)
lying
(1)
machine code
(1)
matron
(1)
microcode
(1)
mmc interface
(1)
mmc2iec
(1)
mmm
(1)
mouse guts
(1)
oscilloscopes
(1)
pcm
(1)
pic32mx
(1)
porn
(1)
proto shield
(1)
purple
(1)
repo
(1)
retro computer museum
(1)
retro hard-on
(1)
rom box
(1)
sd
(1)
sd-x
(1)
sd2mmc
(1)
seadragon
(1)
silliness
(1)
small
(1)
software master
(1)
soldering
(1)
spi software master
(1)
stray capacitance
(1)
string
(1)
techadventure
(1)
test equipment porn
(1)
ts1000
(1)
turtle cheesecake
(1)
tweaking
(1)
vc20
(1)
video head
(1)
video ram replacement
(1)
weewee
(1)
wingasm
(1)
wire library
(1)
wodges of IO
(1)
xilinx cpld
(1)
yellowing
(1)
z80
(1)
zx spectrum
(1)
zxpander
(1)
About Sir Morris
Unless otherwise stated all of the original work presented here is:
Licensed under a Creative Commons Attribution-Noncommercial 2.5 Generic License.
The work of others where referenced will be attributed appropriately. If I've failed to do this please let me know.
Licensed under a Creative Commons Attribution-Noncommercial 2.5 Generic License.
The work of others where referenced will be attributed appropriately. If I've failed to do this please let me know.