Skip to content

Instantly share code, notes, and snippets.

@tom-seddon
Created July 28, 2016 00:40
Show Gist options
  • Save tom-seddon/9786bd61366fe663e4aec01649b466e7 to your computer and use it in GitHub Desktop.
Save tom-seddon/9786bd61366fe663e4aec01649b466e7 to your computer and use it in GitHub Desktop.
Quick'n'dirty BBC Micro linear layout screen demo
10REM>B.CHUNK3
20:
30ONERRORMODE7:REPORT:PRINT" at line ";ERL:END
40:
50REM CLEAR MEMORY
60MODE2
70:
80MODE5
90:
100REM ENGAGE MODE 8
110*FX154 224
120:
130REM MAKE FLASHING COLOURS MORE
140REM OBVIOUS
150*FX9 1
160*FX10 1
170:
180REM RESET PALETTE
190FORI%=0TO15
200?&FE21=I%*16+(I%AND7EOR7)
210NEXT
220:
230REM SET BASE ADDRESS TO &7C00,
240REM MODE 7 STYLE
250PROCR(12,&28)
260:
270REM SCREEN DIMENSIONS
280REM (IN BYTES)
290SW%=28
300SH%=36
310IFSW%*SH%>1024STOP
320:
330REM SET UP 6845
340
350ROWH%=256DIVSH%
360VTOT%=312DIVROWH%
370NADJ%=312MODROWH%
380VBLANK%=272DIVROWH%
390:
400PROCR(1,SW%)
410PROCR(2,49-(40-SW%)DIV2)
420PROCR(4,VTOT%-1)
430PROCR(5,NADJ%)
440PROCR(6,SH%)
450PROCR(7,VBLANK%)
460PROCR(9,ROWH%-1)
470:
490REM FILL SCREEN WITH SOMETHING
500REM INTERESTING
510:
520DIM PAT%(2)
530PAT%(0)=FNVAL(&31)
540PAT%(1)=FNVAL(&13)
550:
560FORY%=0TOSH%-1
570D%=&7C00+Y%*SW%
580S%=PAT%(Y%AND1)
590FORX%=0TOSW%-1:D%?X%=S%:NEXT
600NEXT
610:
620FILL%=FNVAL(&44)
630LM%=FNVAL(&0F):LV%=FNVAL(&40)
640RM%=FNVAL(&F0):RV%=FNVAL(&04)
650:
660FORX%=0TOSW%-1
670?(&7C00+X%)=FILL%
680?(&7C00+(SH%-1)*SW%+X%)=FILL%
690NEXT
700:
710FORY%=0TOSH%-1
720LA%=&7C00+Y%*SW%
730?LA%=(?LA%ANDLM%)ORLV%
740RA%=&7C00+SW%-1+Y%*SW%
750?RA%=(?RA%ANDRM%)ORRV%
760NEXT
770
780G=GET
790MODE7
800END
810:
820DEFPROCR(R%,V%)
830?&FE00=R%:?&FE01=V%
840ENDPROC
850:
860DEFFNVAL(V%):LOCALR%
870IFV%AND128R%=R%OR128
880IFV%AND8R%=R%OR64
890IFV%AND64R%=R%OR32
900IFV%AND4R%=R%OR16
910IFV%AND32R%=R%OR8
920IFV%AND2R%=R%OR4
930IFV%AND16R%=R%OR2
940IFV%AND1R%=R%OR1
950=R%
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment