Advertisement
netangel

basicheader2.bas

Nov 26th, 2023 (edited)
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ZXBasic 7.89 KB | Source Code | 0 0
  1.    10 REM BBC BASIC Header File
  2.    20 REM By Arnold Meszaros (netangel)
  3.    30 REM Original code/idea by Steve Lovejoy aka Lovejoy777
  4.   100 :
  5.   101 REM Initialization, setting vars
  6.   110 DIM _ 256: REM Temporary storage for passing parameters by reference
  7.   120 F%=HIMEM-PAGE: REM Free BASIC bytes / by ToneDeF
  8.   130 MO%=0: REM Screen mode
  9.   140 BG%=4: FG%=7: LC%=15: REM Background, foreground and logo colours
  10.   150 PW%=0: PH%=0: REM Screen width/height in pixels
  11.   160 CW%=0: CH%=0: REM Screen width/height in chars
  12.   170 CN%=0: REM Number of used colours
  13.   180 PROC_SET_MODE(MO%,BG%,FG%,_)
  14.   190 PW%=_!0: PH%=_!4: REM Retrieving screen width/height in pixels
  15.   200 CW%=_!8: CH%=_!12: REM Retrieving screen width/height in chars
  16.   210 CN%=_!16: REM Retrieving number of colours
  17.   220 PROC_DEF_CHARS
  18.   230 PROC_SHOW_LOGO(CW%-10,1,BG%,FG%,LC%)
  19.   240 PROC_SHOW_LEFT_LANES(CW%-10,1,BG%,FG%,LC%)
  20.   250 PROC_SHOW_RIGHT_LANES(CW%-10,1,BG%,FG%,BG%)
  21.   260 VDU 28,(CN% DIV 8) + 2,8,CW%-17,1,12: REM Text window next to logo
  22.   270 PRINT "AGON LIGHT2 *** ";: *VERSION
  23.   280 PRINT: PRINT "MODE ";MO%;"   ";PW%;CHR$(243);PH%;
  24.   290 PRINT "/";CW%;CHR$(243);CH%;"   ";CN%;" COLOURS"
  25.   300 PRINT: PRINT ;F%;" BASIC BYTES FREE"
  26.   310 PRINT: PRINT: PRINT "AGON READY.";
  27.   320 VDU 26
  28.   330 FOR I%=0 TO CN%-1
  29.   340   VDU 31,(I% DIV 8)+1,(I% MOD 8)+1,17,I%+128,32
  30.   350 NEXT I%: VDU 17,FG%,17,128+BG%,31,0,10
  31.   360 PROC_RESTORE_CHARS: NEW
  32.   370 END
  33.  1000 :
  34.  1001 REM Getting the MOS sys var as byte value
  35.  1010 DEF FN_GET_SYSVARB(L%)
  36.  1015 LOCAL A%
  37.  1020 A%=&A0: =USR(&FFF4)
  38.  1100 :
  39.  1101 REM Getting the MOS sys var as word value
  40.  1110 DEF FN_GET_SYSVARW(L%): =FN_GET_SYSVARB(L%)+256*FN_GET_SYSVARB(L%+1)
  41.  1200 :
  42.  1201 REM Setting screen mode, colours
  43.  1210 DEF PROC_SET_MODE(MO%,BG%,FG%,ARGS)
  44.  1220 MODE MO%: VDU 17,128+BG%,17,FG%,12: REM Change mode, colours and clear screen
  45.  1230 ARGS!0=FN_GET_SYSVARW(&0F): REM Screen width in pixels
  46.  1240 ARGS!4=FN_GET_SYSVARW(&11): REM Screen height in pixels
  47.  1250 ARGS!8=FN_GET_SYSVARB(&13): REM Screen width in chars
  48.  1260 ARGS!12=FN_GET_SYSVARB(&14): REM Screen height in chars
  49.  1270 ARGS!16=FN_GET_SYSVARB(&15): REM Number of colours
  50.  1280 ENDPROC
  51.  1300 :
  52.  1301 REM Defining Agon Light "Sitting Brazilian Jiu-Jitsu man" logo and other chars
  53.  1310 DEF PROC_DEF_CHARS
  54.  1315 LOCAL CH%,B%,I%
  55.  1320 RESTORE 10000
  56.  1330 REPEAT
  57.  1340   READ CH%: IF CH%<0 THEN GOTO 1360
  58.  1350   VDU 23,CH%: FOR I%=1 TO 8: READ B%: VDU B%: NEXT I%
  59.  1360 UNTIL CH%<0
  60.  1370 ENDPROC
  61.  1400 :
  62.  1401 REM Restoring redefined chars to their original state
  63.  1410 DEF PROC_RESTORE_CHARS
  64.  1415 LOCAL I%
  65.  1420 FOR I%=200 TO 243
  66.  1430   VDU 23,I%,0,0,0,0,0,0,0,0
  67.  1440 NEXT I%
  68.  1450 ENDPROC
  69.  1500 :
  70.  1501 REM Showing Agon Light logo at specified coords and colours
  71.  1510 DEF PROC_SHOW_LOGO(X%,Y%,BG%,FG%,LC%)
  72.  1515 LOCAL CH%,_Y%,_X%,I%
  73.  1520 RESTORE 11000: VDU 17,LC%
  74.  1530 REPEAT
  75.  1540   READ _Y%,_X%: IF _Y%<0 THEN GOTO 1570
  76.  1550   VDU 31,X%+_X%,Y%+_Y%
  77.  1560   READ N%: FOR I%=0 TO N%-1: READ CH%: VDU CH%: NEXT I%
  78.  1570 UNTIL _Y%<0
  79.  1580 VDU 17,FG%
  80.  1590 ENDPROC
  81.  1600 :
  82.  1601 REM Showing left lanes by the logo
  83.  1610 DEF PROC_SHOW_LEFT_LANES(X%,Y%,BG%,FG%,LC%)
  84.  1615 LOCAL CH%,CN%,_Y%,_X%,C%,I%
  85.  1620 RESTORE 11100
  86.  1630 REPEAT
  87.  1640   READ _Y%,_X%: IF _Y%<0 THEN GOTO 1720
  88.  1650   READ C%: CN%=0
  89.  1660   REPEAT
  90.  1670     IF CN%>0 THEN VDU 17,C%,17,128+BG% ELSE VDU 17,LC%,17,128+C%
  91.  1680     READ N%: IF N%<1 THEN GOTO 1710
  92.  1690     READ CH%: FOR I%=0 TO N%-1: VDU 31,X%+_X%-CN%-I%,Y%+_Y%,CH%: NEXT I%
  93.  1700     CN%=CN%+N%
  94.  1710   UNTIL N%<1
  95.  1720 UNTIL _Y%<0
  96.  1730 VDU 17,FG%,17,128+BG%
  97.  1740 ENDPROC
  98.  1800 :
  99.  1801 REM Showing right lanes by the logo
  100.  1810 DEF PROC_SHOW_RIGHT_LANES(X%,Y%,BG%,FG%,LC%)
  101.  1815 LOCAL CH%,CN%,_Y%,_X%,C%,I%
  102.  1820 RESTORE 11200
  103.  1830 REPEAT
  104.  1840   READ _Y%,_X%: IF _Y%<0 THEN GOTO 1920
  105.  1850   READ C%: VDU 31,X%+_X%,Y%+_Y%: CN%=0
  106.  1860   REPEAT
  107.  1870     IF CN%>0 THEN VDU 17,C%,17,128+BG% ELSE VDU 17,LC%,17,128+C%
  108.  1880     READ N%: IF N%<1 THEN GOTO 1910
  109.  1890     READ CH%: FOR I%=0 TO N%-1: VDU CH%: NEXT I%
  110.  1900     CN%=CN%+N%
  111.  1910   UNTIL N%<1
  112.  1920 UNTIL _Y%<0
  113.  1930 VDU 17,FG%,17,128+BG%
  114.  1940 ENDPROC
  115. 10000 :
  116. 10001 REM Agon Light "Sitting Brazilian Jiu-Jitsu man" logo and other chars' data
  117. 10010 DATA 200,  7, 15, 31, 31, 31, 31, 31, 63
  118. 10020 DATA 201,192,224,240,240,240,240,240,248
  119. 10030 DATA 202, 63, 63, 31, 15, 15, 15,  7,  7
  120. 10040 DATA 203,248,248,240,224,224,224,192,192
  121. 10050 DATA 204,  0,  1,  7, 15, 31, 63,127,127
  122. 10060 DATA 205,  7,199,199,195,227,225,240,240
  123. 10070 DATA 206,192,195,195,135,135, 15, 15, 31
  124. 10080 DATA 207,  0,  0,224,240,248,252,252,254
  125. 10090 DATA 208,  0,  0,  1,  1,  3,  3,  7,  7
  126. 10200 DATA 209,255,255,255,255,255,255,255,255
  127. 10210 DATA 210,248,248,248,240,224,225,193,195
  128. 10220 DATA 211, 63, 63,127,255,255,255,255,255
  129. 10230 DATA 212,255,255,255,255,255,255,223,223
  130. 10240 DATA 213,  0,  0,128,128,128,192,192,192
  131. 10250 DATA 214,  7,  7, 15, 15, 15, 15, 15, 31
  132. 10260 DATA 215,255,247,231,231,231,199,135,130
  133. 10270 DATA 216,199,135,135,143, 15, 15, 31, 31
  134. 10280 DATA 217,207,207,207,199,199,195,129,  1
  135. 10290 DATA 218,224,224,224,240,240,240,240,240
  136. 10300 DATA 219, 31, 31, 31, 31, 15, 15, 15, 31
  137. 10310 DATA 220,128,128,128,128,129,143,135,143
  138. 10320 DATA 221, 31, 63, 15,  0,128,224,224,195
  139. 10330 DATA 222,252,240,128,  0,  3,  7, 35,243
  140. 10340 DATA 223,  1,  1,  1,129,193,225,241,241
  141. 10350 DATA 224,240,240,240,240,240,240,240,240
  142. 10360 DATA 225, 31, 31,  3,  3,  3,  3,  7, 15
  143. 10370 DATA 226,223,255,255,255,255,255,254,254
  144. 10380 DATA 227,199,135,135,  7, 15, 15, 31, 31
  145. 10390 DATA 228,241,241,241,248,248,248,248,248
  146. 10400 DATA 229,253,255,255,255,255,255,255,127
  147. 10410 DATA 230,240,248,248,224,224,224,240,248
  148. 10420 DATA 231, 31, 63, 63, 63, 31, 31, 15,  0
  149. 10430 DATA 232,254,252,252,252,248,248,224,  0
  150. 10440 DATA 233, 31, 60, 32,  0,  0,  0,  0,  0
  151. 10450 DATA 234,120, 28, 12, 12,  0,  0,  0,  0
  152. 10460 DATA 235,127,127,127,127,127, 63, 15,  0
  153. 10470 DATA 236,248,252,252,252,252,248,240,  0
  154. 10480 DATA 237,219,  6, 63,195, 55,131,110, 27
  155. 10490 DATA 238, 73,  2, 20, 65, 18,136, 34,  9
  156. 10500 DATA 239,  2,  8,  1,  0,  4,  0,  0,  8
  157. 10510 DATA 240,219, 96,252,195,236,193,118,216
  158. 10520 DATA 241,146, 64, 40,130, 72, 17, 68,144
  159. 10530 DATA 242, 64, 16,128,  0, 32,  0,  0, 16
  160. 10540 DATA 243,  0,  0, 36, 24, 24, 36,  0,  0
  161. 10550 DATA -1
  162. 11000 :
  163. 11001 REM Agon Light "Sitting Brazilian Jiu-Jitsu man" logo's chars line by line
  164. 11002 REM    Y,  X,num,chars
  165. 11010 DATA   0,  2,  2,200,201
  166. 11020 DATA   1,  2,  2,202,203
  167. 11030 DATA   2,  1,  4,204,205,206,207
  168. 11040 DATA   3,  0,  6,208,209,210,211,212,213
  169. 11050 DATA   4,  0,  6,214,215,216,209,217,218
  170. 11060 DATA   5,  0,  6,219,220,221,222,223,224
  171. 11070 DATA   6,  0,  6,225,226,227,228,229,230
  172. 11080 DATA   7,  0,  6,231,232,233,234,235,236
  173. 11090 DATA  -1, -1
  174. 11100 :
  175. 11101 REM Left lanes' chars line by line
  176. 11102 REM    Y   X  col #-char #-char #-char #-char #-char
  177. 11110 DATA   0,  2,  1, 1,200, 6,209, 1,237, 1,238, -1
  178. 11120 DATA   1,  2,  9, 1,202, 6,209, 1,237, 1,238, -1
  179. 11130 DATA   2,  1, 11, 1,204, 5,209, 1,237, 1,238, -1
  180. 11140 DATA   3,  0, 10, 1,208, 4,209, 1,237, 1,238, -1
  181. 11150 DATA   4,  0, 14, 1,214, 4,209, 1,237, 1,238, -1
  182. 11160 DATA   5,  0, 12, 1,219, 4,209, 1,237, 1,238, -1
  183. 11170 DATA   6,  0, 13, 1,225, 4,209, 1,237, 1,238, -1
  184. 11180 DATA   7,  0,  5, 1,231, 4,209, 1,237, 1,238, -1
  185. 11190 DATA  -1, -1
  186. 11200 :
  187. 11201 REM Right lanes' chars line by line
  188. 11202 REM    Y   X  col #-char #-char #-char #-char #-char
  189. 11210 DATA   0,  4,  1, 1,201, 2,209, 1,240, 1,241, -1
  190. 11220 DATA   1,  4,  9, 1,203, 2,209, 1,240, 1,241, -1
  191. 11230 DATA   2,  5, 11, 1,207, 1,209, 1,240, 1,241, -1
  192. 11240 DATA   3,  6, 10, 1,213, 1,240, 1,241, -1
  193. 11250 DATA   4,  6, 14, 1,218, 1,240, 1,241, -1
  194. 11260 DATA   5,  6, 12, 1,224, 1,240, 1,241, -1
  195. 11270 DATA   6,  6, 13, 1,230, 1,240, 1,241, -1
  196. 11280 DATA   7,  6,  5, 1,236, 1,240, 1,241, -1
  197. 11290 DATA  -1, -1
  198.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement