He's at it again!
I'm getting back into the Atom swing! After a fruitless hour measuring
incorrect logic levels at the Atom's expansion port I was on the verge
of giving up. I had been prodding the VIA, according to available
documentation, and getting nowhere. All I wanted was a toggly bit. Was
that too much to ask for? That's when I decided to do some chip
swapping.
It takes me longer than most people to get to this point as I'm a software person at heart and so blame that first ;)
I
just happened to have a vintage 6522 VIA lying on my desk so I swapped
the chips over. Joy! I was flipping bits like a demon. Naturally my
thoughts turned to MMC...
10@=0 20!#208=!#208+3 30V=#B800 40W=#FFF4 50T=#80 60DIM LL(13),C(6) 70F.N=0TO13;LL(N)=#FFFF;N.N 80F.N=1TO2; DIM P(-1) 90P."PASS "N',$21 100[ 110\ main 120:LL0 LDA @#0 130STA C+1; STA C+2; STA C+3; STA C+4 140LDA @#95; STA C+0 150JSR LL3 160LDA @#40+#0; JSR LL7 170LDA @CH"1"; SBC @0; JMP W 180\ select card 190:LL1 LDA @0; STA V; RTS 200\ deselect card 210:LL2 LDA @#20; STA V; RTS 220\ init hw and go spi 230:LL3 LDA @0; STA V+#C 240LDA @#FE; STA V+2 250LDA @#20; STA V 260LDY @10 270:LL4 LDA @#FF; JSR LL5; DEY; BNE LL4 280RTS 290\ xferbyte 300:LL5 STX T+0; STY T+1; LDY @8 310:LL6 PHA; AND @#80; STA V 320ORA @#40; STA V 330LDX V; AND @#BF; STA V 340TXA; ROR A 350PLA; ROL A 360DEY; BNE LL6 370PHA; JSR #F7FA; PLA 380LDY T+1; LDX T+0; 390RTS 400\ command 410:LL7 STA C+5; LDY @5 420:LL8 LDA C,Y; JSR LL5; DEY; BPL LL8 430:LL9 LDA @#FF; JSR LL5; AND @#FF; CLC; BPL LL10 440DEY; BNE LL9; 450SEC 460:LL10 RTS 470] 480P.$6 490NE.N 500END
If you're an ex-atommer or you've been around BBC micros you might
recognise this. If you don't then I can tell you it's some Atom basic
with inline assembler. The Atom's Basic dialect was hard on the eyes but
lightning fast. By the standards of the day, naturally ;)
The
built-in assembler gave the user of this machine an instant boost when
learning to program. No fussing with 3rd party apps, loading the
assembler or machine code, or the attendant problems with cassettes.
Turn on. Assemble. Bam! (Which is as it happens almost quite literally
what happened to my 1st Atom over 20 years ago...) Now if only it was
that easy for the kids of today - it was much better in the old days - I
remember when all this was fields etc. etc.
The above listing is
code to bit-bang SPI to an MMC card attached via the simplest of
hardware harnesses to the rear expansion connector of the Atom. I'm
looking at making a ROM based solution that hooks into the OS's filing
system vectors. It's all quite primitive at the moment but I'm hoping
it'll solidify. Get in touch if you have any experience of developing
this kind of Atom program. I'd love to talk to you.
Posted by Sir Morris
|