Created
July 28, 2016 23:00
-
-
Save tom-seddon/27f90e1dd70a79a8495dc526428a9948 to your computer and use it in GitHub Desktop.
BBC Micro 6845 address browser
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.ADDRS | |
20: | |
30ONERRORMODE7:REPORT:PRINT" at line ";ERL:END | |
40: | |
50MODE6:HIMEM=&2F00 | |
60*FX154 0 | |
70*FX9 0 | |
80*FX10 1 | |
90?&FE00=1:?&FE01=32 | |
100PROCR(0,63) | |
110PROCR(1,32) | |
120PROCR(2,49) | |
130PROCR(3,&24) | |
140PROCR(4,38) | |
150PROCR(5,0) | |
160PROCR(6,32) | |
170PROCR(7,34) | |
180PROCR(8,1) | |
190PROCR(9,7) | |
200PROCR(10,0) | |
210PROCR(12,&60 DIV8) | |
220: | |
230C0%=FNBYTE(7,0):C1%=FNBYTE(0,7) | |
240: | |
250FORI%=&70TO&8FSTEP2 | |
260I%?0=C0% | |
270I%?1=C1% | |
280NEXT | |
290: | |
300: | |
310FORI%=0TO15:PROCSETCOL(I%,I%):NEXT | |
320: | |
330DIMTMP%3 | |
340: | |
350C%=0 | |
360FORA%=&3000TO&7BFFSTEP&400 | |
370B%=FNBYTE(C%DIV7MOD7+1,C%MOD7+1) | |
380IFA%=&7C00 B%=255:REMFNBYTE(7,4) | |
390TMP%?0=B%:TMP%?1=B%:TMP%?2=B%:TMP%?3=B% | |
400FORB%=0TO&3FFSTEP4 | |
410A%!B%=!TMP% | |
420NEXT:C%=C%+1:NEXT | |
430: | |
440A%=&7C00 | |
450FORY%=0TO31 | |
460IFY%AND1 B%=FNBYTE(1,3) ELSE B%=FNBYTE(4,6) | |
470FORX%=0TO31 | |
480?A%=B% | |
490A%=A%+1 | |
500NEXT | |
510NEXT | |
520: | |
530PROCMARK(&3000,0,7):REM 20K | |
540PROCMARK(&4000,3,7):REM 16K | |
550PROCMARK(&5800,5,7):REM 10K | |
560PROCMARK(&6000,6,8):REM 8K | |
570: | |
580A%=0 | |
590REPEAT | |
600D%=32 | |
610IFINKEY-1D%=256 | |
620IFINKEY-42A%=A%+D% | |
630IFINKEY-58A%=A%-D% | |
640IFA%<0A%=A%+D% | |
650IFA%>65535A%=A%-D% | |
660?&FE00=12:?&FE01=A%DIV256 | |
670?&FE00=13:?&FE01=A%AND255 | |
680*FX19 | |
690UNTILINKEY-99 | |
700: | |
710MODE7 | |
720PRINT;~A% | |
730END | |
740: | |
750DEFFNBYTE(A%,B%):LOCALR%,I% | |
760FORI%=0TO3 | |
770IFA%AND(2^I%)R%=R%OR(2^(I%*2+1)) | |
780IFB%AND(2^I%)R%=R%OR(2^(I%*2+0)) | |
790NEXT | |
800=R% | |
810: | |
820DEFPROCSETCOL(L%,P%) | |
830?&FE21=L%*16+(P%EOR7) | |
840ENDPROC | |
850: | |
860DEFPROCR(R%,V%):?&FE00=R%:?&FE01=V%:ENDPROC | |
870: | |
880DEFPROCMARK(A%,CA%,CB%):LOCALI% | |
890A%=A%-256 | |
900A%?0=FNBYTE(CA%,CB%) | |
910A%?1=FNBYTE(CB%,CA%) | |
920A%?2=A%?0 | |
930A%?3=A%?1 | |
940FORI%=4TO255STEP4:A%!I%=!A%:NEXT | |
950ENDPROC | |
960 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment