Created
July 28, 2016 23:22
-
-
Save tom-seddon/fa3af98a58dda0b796e8084b4e560b2f to your computer and use it in GitHub Desktop.
BBC Micro split bitmap/linear addressing mode "demo"
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
10REM>B.R62 | |
20ONERRORMODE7:REPORT:PRINT" at line ";ERL:END | |
30MODE7 | |
40*TV255 1 | |
50PROCASM | |
60: | |
70MODE2:MODE6:HIMEM=&5800 | |
80*FX154 0 | |
90*FX9 0 | |
100*FX10 1 | |
110PROCR(1,32):PROCR(2,49):PROCR(3,&24):PROCR(4,38):PROCR(5,0):PROCR(6,32):PROCR(7,34):PROCR(8,1):PROCR(9,7):PROCR(10,0) | |
120: | |
130FORI%=0TO15:?&FE21=I%*16+(I%EOR7):NEXT | |
140: | |
150FORY%=0TO7 | |
160?&70=FNV(Y%) | |
170?&71=FNV(Y%*16) | |
180?&72=?&70 | |
190?&73=?&71 | |
200A%=&5800+Y%*256 | |
210FORX%=0TO255STEP4:A%!X%=!&70:NEXT | |
220NEXT | |
230: | |
240FORY%=0TO31 | |
250IFY%AND1C%=&31 ELSEC%=&13 | |
260?&70=FNV(C%) | |
270?&71=?&70:?&72=?&70:?&73=?&70 | |
280A%=&7C00+Y%*32 | |
290FORX%=0TO31STEP4:A%!X%=!&70:NEXT | |
300NEXT | |
301?&7FFF=FNV(&55) | |
310: | |
320PROCR(12,31) | |
330: | |
340CALLSTART | |
350END | |
360: | |
370DEFPROCASM | |
380FORI%=0TO2STEP2:P%=&900:[OPTI% | |
390.WAIT1:]FORJ%=1TO58:[OPTI%:NOP:]NEXT:[OPTI%:RTS | |
400: | |
410.START | |
420SEI | |
430OPT FNCRTC(4,53) | |
440OPT FNCRTC(7,50) | |
450OPT FNCRTC(5,6) | |
460OPT FNCRTC(6,40) | |
470.LOOP | |
480LDA#2:.WAITV:BIT&FE4D:BEQWAITV:STA&FE4D | |
490OPT FNCRTC(9,7) | |
500LDA#0:STA&FE21 | |
510] | |
520FORJ%=0TO100:[OPTI%:JSRWAIT1:]NEXT | |
530[OPTI% | |
540OPT FNCRTC(9,4) | |
550LDA#&7:STA&FE21:JMP LOOP | |
560] | |
570NEXT | |
580ENDPROC | |
590: | |
600DEFFNCRTC(R%,V%):[OPTI%:LDA#R%:STA&FE00:LDA#V%:STA&FE01:]=I% | |
610: | |
620DEFPROCR(R%,V%):?&FE00=R%:?&FE01=V%:ENDPROC | |
630: | |
640DEFFNV(X%):LOCALI%,R% | |
650FORI%=0TO3 | |
660IFX%AND2^I%R%=R%OR2^(2*I%) | |
670IFX%AND2^(I%+4)R%=R%OR2^(2*I%+1) | |
680NEXT | |
690=R% | |
700 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment