home *** CD-ROM | disk | FTP | other *** search
/ Loadstar 203 / 203.d81 / knightsbridge / knightsbridge.080d / knightsbridge.a7ae (.txt)
Encoding:
Commodore BASIC  |  2001-01-01  |  31.9 KB  |  357 lines

  1. 1 rem "kb basic" 2001.03.21
  2. 2 poke55,0:poke56,55:clr
  3. 3 gosub3002
  4. 4 gosub12:onq%goto4002
  5. 5 q%=3:gosub102:ifq%=5then8
  6. 6 gosub12:onq%goto4002,5
  7. 7 onp%(p%,1)gosub164:gosub186
  8. 8 onq%goto4002,5,5,5,4
  9. 10 :
  10. 12 : rem input
  11. 14 :
  12. 16 pokevl+39,7
  13. 18 sysml+9:i%=cr%:on1+(i%=0)goto22:sysml+60,"pehq":on1+(i%=0)goto22
  14. 20 onp%(p%,1)+1goto18,26
  15. 22 ifi%<5thenoni%gosub502,518,566,578:onq%goto26,26:goto20
  16. 24 ifq%=3thenifp%(p%,1)=0thengosub176:ifb%=-1then18
  17. 26 ifq%=5then18
  18. 28 pokevl+39,15
  19. 30 return
  20. 100 :
  21. 102 : rem next player
  22. 104 :
  23. 106 rem --- move #
  24. 108 m%=m%+1:cy%=sy%+12:a$="[205]ove"+str$(m%):gosub148
  25. 110 rem --- player
  26. 112 gosub132:pokegv+1,p%(p%,0)
  27. 114 rem --- "a"
  28. 116 sysml+129,rv+14,rv+63,rv+7:poke178,7:sysrl:sysml+129,rv,rv+7,rv+56
  29. 118 pokegv,1:sysgl:a%=peek(gw+115):i%=fnr(a%):gosub216
  30. 120 sysml+21,cx%+1,cy%+1:gosub224
  31. 122 rem --- possible "b"
  32. 124 b%=-1:pokegv,2:pokegv+2,a%:sysgl:x=gw+116:n%=peek(x)
  33. 126 ifn%=0thengosub132:gosub236
  34. 128 return
  35. 130 :
  36. 132 : rem player toggle
  37. 134 :
  38. 136 poke646,c%(1):gosub140:poke646,c%(3):p%=1-p%:gosub140:return
  39. 138 :
  40. 140 : rem player pointer
  41. 142 :
  42. 144 cy%=sy%+5+p%*3:sysml+12,sx%,cy%,"\":sysml+12,sx%+16,cy%,"_":return
  43. 146 :
  44. 148 : rem update status block line
  45. 150 :
  46. 152 gosub156:sysml+12,fnxc(sx%),cy%,a$:return
  47. 154 :
  48. 156 : rem clear status block line
  49. 158 :
  50. 160 l%=17:sysml+30,sx%,sx%+l%-1,cy%,cy%,160,c%(1):return
  51. 162 :
  52. 164 : rem computer move
  53. 166 :
  54. 168 pokegv,0:sysgl:b%=peek(gv+3)
  55. 170 i%=fnr(b%):gosub216:sysml+21,cx%+1,cy%+1:sysml+24,o%(2,0)
  56. 172 return
  57. 174 :
  58. 176 : rem human move
  59. 178 :
  60. 180 fori=1ton%:c%=peek(x+i):f%=(i%=fnr(c%)):i=i+(i-n%)*f%:next:iff%thenb%=c%
  61. 182 return
  62. 184 :
  63. 186 : rem results
  64. 188 :
  65. 190 pokegv,3:pokegv+3,b%:sysgl
  66. 192 pokesd,3:i%=fnr(a%):gosub216:gosub200:i%=fnr(b%):gosub216:gosub208
  67. 194 sysml+24,o%(2,0):ifpeek(gw+99+8*(1-p%))=2thengosub240
  68. 196 return
  69. 198 :
  70. 200 : rem empty square
  71. 202 :
  72. 204 n%=7+(i%and1):sysml+48,cx%,cx%+2,cy%,cy%+2,a(n%):return
  73. 206 :
  74. 208 : rem occupied square
  75. 210 :
  76. 212 n%=3+p%*2+(i%and1):sysml+48,cx%,cx%+2,cy%,cy%+2,a(n%):return
  77. 214 :
  78. 216 : rem square x,y
  79. 218 :
  80. 220 cx%=fnx(i%):cy%=fny(i%):return
  81. 222 :
  82. 224 : rem square highlight (sprite 2)
  83. 226 :
  84. 228 py%=cy%*8+52-2:px%=cx%*8+24-1:ifpx%>255thenpokevl+16,4:px%=px%-256
  85. 230 pokevl+41,c%(1+p%):pokevl+4,px%:pokevl+5,py%:pokesd,7
  86. 232 return
  87. 234 :
  88. 236 : rem win
  89. 238 :
  90. 240 q%=5:cy%=sy%+14:a$="[215]in":gosub148:return
  91. 500 :
  92. 502 : rem play new game
  93. 504 :
  94. 506 q%=2:m%=0:p%=1:pokesd,3
  95. 508 sysml+48,bx%,bx%+20,by%,by%+20,a(2):sysml+129,a(9),a(9)+115,gw
  96. 510 cy%=sy%+12:gosub156:cy%=sy%+14:gosub156
  97. 512 fori=14to56step7:poke178,7:sysrl:sysml+129,rv,rv+7,rv+i:next
  98. 514 return
  99. 516 :
  100. 518 : rem edit setup
  101. 520 :
  102. 522 gosub620:gosub636:sysml+48,5,34,2,19,a(0):pokemv,ls%:pokemv+2,15:n%=0
  103. 524 sysml+9:ifcr%=0thensysml+60,"q":oni%+1goto524,560
  104. 526 ifcr%=15then560
  105. 528 ifcr%<13then542
  106. 530 i=cr%-13
  107. 532 rem --- names
  108. 534 w$=n$(i):sysml+156,p%(i,3)+128,p%(i,4),c%(1),c%(1),p%(i,2),0,"[145]",n$(i)
  109. 536 ifn$(i)=w$then524
  110. 538 n%=n%or2^(i+3)
  111. 540 n$(i)=w$:goto524
  112. 542 rem --- options
  113. 544 forj=0to2:i=2-j:f%=(cr%>=o%(i,1)):j=j+(j-2)*f%:next
  114. 546 ifo%(i,2)=cr%then524
  115. 548 n%=n%or2^i
  116. 550 i%=o%(i,2):gosub3538:i%=cr%:gosub3550:f%=cr%-o%(i,1):o%(i,2)=cr%
  117. 552 onigoto556,558
  118. 554 o%(i,0)=f%:goto524
  119. 556 o%(i,0)=f%*2+2:goto524
  120. 558 o%(i,0)=2^f%*30:goto524
  121. 560 sysml+45,5,34,2,19,a(0):gosub628:ifn%>0thengosub594
  122. 562 return
  123. 564 :
  124. 566 : rem help
  125. 568 :
  126. 570 gosub620:sysml+42,hh%:pokemv,lh%:pokemv+2,6
  127. 572 sysml+210,1+128,38,3,18,c%(3),0,c%(4),c%(5),0,"","":gosub628
  128. 574 return
  129. 576 :
  130. 578 : rem quit
  131. 580 :
  132. 582 gosub620:gosub636:sysml+48,10,29,6,15,a(1):pokemv,lq%:pokemv+2,2
  133. 584 sysml+9:i%=cr%:ifi%=0thensysml+60,"ny":ifi%=0then584
  134. 586 ifi%=2thenq%=1:goto590
  135. 588 gosub628
  136. 590 return
  137. 592 :
  138. 594 : rem new setup
  139. 596 :
  140. 598 rem --- human
  141. 600 if(n%and1)=0then606
  142. 602 fori=0to1:p%(i,1)=1+((o%(0,0)and2^i)<>0)
  143. 604 cy%=sy%+6+3*i:a$=t$(p%(i,1)):gosub148:next
  144. 606 rem --- level
  145. 608 if(n%and2)<>0thenpokegv+5,o%(1,0)
  146. 610 rem --- name(s)
  147. 612 if(n%and24)=0then616
  148. 614 fori=0to1:cy%=sy%+5+3*i:a$=n$(i):gosub148:next
  149. 616 return
  150. 618 :
  151. 620 : rem stash game screen
  152. 622 :
  153. 624 sysml+39,hg%:pokemv+1,h1%:poke25524,peek(sd):pokesd,3:return
  154. 626 :
  155. 628 : rem restore game screen
  156. 630 :
  157. 632 sysml+42,hg%:pokemv,lg%:pokemv+1,h0%:pokemv+2,53:pokesd,peek(25524):return
  158. 634 :
  159. 636 : rem lattice
  160. 638 :
  161. 640 pokevl+33,c%(4):sysml+126,0,39,0,24,97,98,c%(3),c%(0):return
  162. 3000 :
  163. 3002 : rem initialize
  164. 3004 :
  165. 3006 rem --- dim
  166. 3008 dim a%,b%,bx%,by%,cc%,c%,cr%,cx%,cy%,d%,f%,h%,h0%,h1%,hg%,hh%,i%
  167. 3010 dim l%,l1%,l2%,lg%,lh%,ls%,lq%,m%,n%,p%,pp%,px%,py%,q%
  168. 3012 dim r1%,r2%,rg%,s%,sc%,sl%,sx%,sy%
  169. 3014 dim cl,gl,gv,gw,i,j,ml,mm,mv,rl,rv,sd,vl,x,a$,f$,w$
  170. 3016 dim c%(5),o%(2,2),p%(1,4),a(9),n$(1),t$(1)
  171. 3018 rem --- deffn
  172. 3020 deffnr(x)=peek(h1%*s%+100+x)
  173. 3022 deffnx(x)=peek(h0%*s%+(x-1)*4)
  174. 3024 deffny(x)=peek(h0%*s%+(x-1)*4+2)
  175. 3026 deffnxc(x)=x+(l%-len(a$))/2
  176. 3028 rem --- constants
  177. 3030 d%=peek(186):s%=256:vl=53248:sd=vl+21
  178. 3032 rem --- sprite
  179. 3034 readf%,a$,h%,l%:iff%thengosub3500
  180. 3036 rem --- font
  181. 3038 readf%,a$,h%,l%:iff%thengosub3500
  182. 3040 rem --- mouse
  183. 3042 readf%,a$,h%,l%:ml=l%+h%*s%:mv=ml+309:iff%thengosub3500
  184. 3046 h0%=98:lg%=0:h1%=99:lh%=0:ls%=lh%+6*4:lq%=ls%+17*4:rem region hi/lo bytes
  185. 3048 hg%=224:hh%=232:rem stash pages
  186. 3050 n%=98:fori=42to49:n%=n%+1:pokemv+i,n%:next
  187. 3052 rem --- mouse mate
  188. 3054 readf%,a$,h%,l%:mm=l%+h%*s%:iff%thengosub3500
  189. 3056 pokemm+9,0:rem disable stop
  190. 3058 rem --- random 2-254
  191. 3060 readf%,a$,h%,l%:rl=l%+h%*s%:rv=rl+95:iff%thengosub3500
  192. 3062 poke176,l%:poke177,h%
  193. 3064 rem --- curtain
  194. 3066 readf%,a$,h%,l%:cl=l%+h%*s%:iff%thengosub3500
  195. 3068 rem --- ml
  196. 3070 readf%,a$,h%,l%:gl=l%+h%*s%:gv=(h%-5)*s%:gw=gv+14:iff%thengosub3500
  197. 3074 rem --- help text
  198. 3076 readf%,a$,h%,l%:i=l%+h%*s%:iff%thensysml+201,a$,8,i
  199. 3078 sysml+204,i
  200. 3080 rem --- memory locations
  201. 3082 a(0)=240*s%:a(1)=a(0)+1080:a(2)=a(1)+400:a(3)=a(2)+882:a(4)=a(3)+18
  202. 3084 a(5)=a(4)+18:a(6)=a(5)+18:a(7)=a(6)+18:a(8)=a(7)+18:a(9)=a(8)+18
  203. 3086 rem ---
  204. 3088 p%(0,0)=1:p%(1,0)=2:t$(0)="([200]uman)":t$(1)="([195]omputer)"
  205. 3090 fori=0to5:readc%(i):next
  206. 3092 rem --- screen off
  207. 3094 pokevl+17,11
  208. 3096 rem --- font
  209. 3098 pokevl+24,31
  210. 3100 rem --- setup screen
  211. 3102 pokemv+1,h1%:pokemv,ls%:gosub636:sysml+30,5,34,2,19,160,c%(0)
  212. 3104 poke646,c%(0):poke199,1
  213. 3106 fori=1to4:readcx%,cy%,a$:sysml+12,cx%,cy%,a$:next
  214. 3108 fori=1to12:i%=i:readcx%,cy%,l%,a$:gosub3522:next
  215. 3110 l%=16:fori=0to1:i%=13+i:readcx%,cy%,a$:gosub3522
  216. 3112 p%(i,2)=l%-1:p%(i,3)=cx%:p%(i,4)=cy%:n$(i)=a$:next
  217. 3114 l%=8:i%=15:readcx%,cy%,a$:gosub3508:gosub3538
  218. 3116 fori=0to2:reado%(i,0),o%(i,1),o%(i,2):i%=o%(i,2):gosub3546:next
  219. 3118 poke199,0:sysml+45,5,34,2,19,a(0)
  220. 3120 rem --- quit screen
  221. 3122 pokemv,lq%:gosub636:sysml+30,10,29,6,15,160,c%(0)
  222. 3124 poke646,c%(0):poke199,1
  223. 3126 readcy%,a$:sysml+27,cy%,a$
  224. 3128 l%=7:fori=1to2:i%=i:readcx%,cy%,a$:gosub3508:gosub3538:next
  225. 3130 poke199,0:sysml+45,10,29,6,15,a(1)
  226. 3132 rem --- help screen
  227. 3134 pokemv,lh%:pokevl+32,c%(0):pokevl+33,c%(1)
  228. 3136 sysml+30,0,39,0,24,160,c%(0):sysml+30,0,39,2,19,160,c%(4)+16
  229. 3138 poke646,c%(0):poke199,1:readcy%,a$:sysml+27,cy%,a$:poke199,0
  230. 3140 sysml+228,1024+40*cy%+26,1024+40*cy%+34,0
  231. 3142 poke646,c%(2):l%=8:fori=1to4:i%=i:readcx%,cy%,a$:gosub3508:next
  232. 3144 sysml+39,hh%
  233. 3146 rem --- game screen
  234. 3148 pokemv+1,h0%:pokemv,lg%:pokevl+32,c%(0):pokevl+33,c%(1)
  235. 3150 pokevl+34,10:pokevl+35,2:pokevl+22,216:poke646,c%(2)or8:rem multi-color
  236. 3152 fori=3to8:readi%:poke199,i%
  237. 3154 forj=0to2:reada$:sysml+12,0,j,a$:next:sysml+45,0,2,0,2,a(i):next:poke199,0
  238. 3156 sysml+30,0,39,0,24,160,c%(0)
  239. 3158 sx%=23:sy%=0:sysml+30,sx%,sx%+16,sy%,sy%+15,160,c%(1)
  240. 3162 poke646,c%(3):sysml+12,sx%+2,sy%+2,"[203][206][201][199][200][212][211][194][210][201][196][199][197]"
  241. 3164 poke646,c%(2):l%=8:fori=1to4:i%=i:readcx%,cy%,a$:gosub3508:next
  242. 3166 fori=6to13:readn%:pokegv+i,n%:next
  243. 3168 fori=0to114:readn%:pokegw+i,n%:next:sysml+129,gw,gw+155,a(9)
  244. 3172 bx%=1:by%=1:i%=4:a%=16
  245. 3174 forj=0to6:a%=a%+2:cx%=bx%-3:cy%=by%+j*3:fori=0to6:i%=i%+1:a%=a%+1:cx%=cx%+3
  246. 3176 sysml+15,i%,cx%,cx%+2,cy%,cy%+2:pokeh1%*s%+100+a%,i%
  247. 3178 c%=peek(gw+a%):p%=c%-1:c%=c%+(c%=4):onc%gosub208,208,200:next:next
  248. 3182 poke646,c%(3):n%=31:gosub594:sysml+45,bx%,bx%+20,by%,by%+20,a(2)
  249. 3184 gosub502:q%=5
  250. 3186 sysml+39,hg%
  251. 3188 rem --- title screen
  252. 3192 pokevl+32,c%(0):pokevl+33,c%(1):sysml+126,0,39,0,24,93,95,c%(3),c%(0)
  253. 3194 sysml+30,3,35,5,13,160,c%(4)+16
  254. 3198 poke646,c%(2):sysml+27,7,"[203][206][201][199][200][212][211][194][210][201][196][199][197]"
  255. 3202 poke646,c%(3):sysml+27,9,"by [204]ance [195]. [212]homas"
  256. 3204 sysml+27,11,"(c) 2001 [202][160]& [198] [208]ublishing, [201]nc."
  257. 3206 rem ---
  258. 3208 syscl:pokevl+17,27:gosub3554:syscl+6:poke198,0:wait198,15:poke198,0
  259. 3210 syscl+9:pokevl+17,11:sysml+42,hg%:pokevl+17,27:gosub3554:syscl+6:syscl+3
  260. 3214 sysmm:sysml:sysml+6,55*s%:pokevl+40,11:sysml+18,1,37,1,22
  261. 3216 poke2042,(128+55*s%)/64:pokevl+29,4:pokevl+23,4:rem sprite 2
  262. 3220 ifabs((peek(53433)and128)=128)=0thenpoke53374,0:poke53366,0:poke53375,0
  263. 3222 return
  264. 3224 :
  265. 3500 : rem bload file
  266. 3502 :
  267. 3504 sys57812a$,8,0:poke780,0:poke781,l%:poke782,h%:sys65493:return
  268. 3506 :
  269. 3508 : rem command button
  270. 3510 :
  271. 3512 sysml+15,i%,cx%,cx%+l%-1,cy%,cy%+2
  272. 3514 sysml+30,cx%,cx%+l%-1,cy%,cy%+2,160,c%(1)
  273. 3516 sysml+12,fnxc(cx%),cy%+1,a$
  274. 3518 return
  275. 3520 :
  276. 3522 : rem setup region
  277. 3524 :
  278. 3526 sysml+15,i%,cx%,cx%+l%-1,cy%,cy%
  279. 3528 ifi%>4andi%<13thensysml+12,fnxc(cx%),cy%,a$:goto3532
  280. 3530 sysml+12,cx%,cy%,a$
  281. 3532 gosub3538
  282. 3534 return
  283. 3536 :
  284. 3538 : rem region highlight off
  285. 3540 :
  286. 3542 sysml+36,i%,255,c%(1):return
  287. 3544 :
  288. 3546 : rem region highlight on
  289. 3548 :
  290. 3550 sysml+36,i%,255,c%(5):return
  291. 3552 :
  292. 3554 : rem pause
  293. 3556 :
  294. 3558 i=ti
  295. 3560 ifti>ithenifti-i<20then3560
  296. 3562 return
  297. 4000 :
  298. 4002 : rem *** exit
  299. 4004 :
  300. 4006 sysml+3:pokesd,0:sysmm+3
  301. 4008 ifabs((peek(53433)and128)=128)=0thenpoke53374,0:poke53367,0:poke53375,0
  302. 4010 pokevl+22,200:goto40000
  303. 9000 :
  304. 9002 : *** data
  305. 9004 :
  306. 9006 data 00,"spr.kb",55,128
  307. 9008 data 00,"f.kb",56,0
  308. 9010 data 00,"mouse2.1 7k 4000",64,0
  309. 9012 data 00,"mouse mate 6000",96,0
  310. 9014 data 00,"random 2-254",97,0
  311. 9016 data 00,"curtain 5c00",92,0
  312. 9018 data 00,"kb 6960",105,96
  313. 9020 data 00,"t.kb hlp",122,0
  314. 9022 rem --- c%()=colors
  315. 9024 data 3,1,0,4,0,2
  316. 9026 rem --- setup
  317. 9028 data 11,4,"[203]nightsbridge [211]etup"
  318. 9030 data 7,7,"[200]uman     [204]evel      [208]ause"
  319. 9032 data 7,13,"[206]ame     ([215]hite)"
  320. 9034 data 7,16,"[206]ame     ([194]lack)"
  321. 9036 data 7,8,5,"[206]one",7,9,5,"[215]hite",7,10,5,"[194]lack",7,11,5,"[194]oth"
  322. 9038 data 17,8,5,"1",17,9,5,"2",17,10,5,"3",17,11,5,"4"
  323. 9040 data 28,8,5,"1",28,9,5,"2",28,10,5,"4",28,11,5,"8"
  324. 9042 data 7,14,"[205]aster [216]",7,17,"[203]nees [195]alhoon"
  325. 9044 data 25,15,"[[209]]uit"
  326. 9046 data 1,1,2, 4,5,6, 60,9,10
  327. 9048 rem --- quit
  328. 9050 data 8,"[209]uit [203]nightsbridge"
  329. 9052 data 12,11,"[[206]]o ",21,11,"[[217]]es"
  330. 9054 rem --- help
  331. 9056 data 0,"[203]nightsbridge [200]elp [204]ine #### of ####"
  332. 9058 data 1,21,"[[200][207][205][197]]",11,21,"[[213][208]]",21,21,"[[196][207][215][206]]",31,21,"[[209]]uit"
  333. 9060 rem --- game
  334. 9062 data 1,"[174][175][176]","[177][178][179]","[180][181][182]", 1,"[183][184][185]","[186][187][188]","[189][190][191]"
  335. 9064 data 0,"[174][175][176]","[177][178][179]","[180][181][182]", 0,"[183][184][185]","[186][187][188]","[189][190][191]"
  336. 9066 data 0,"[173][173][173]","[173][173][173]","[173][173][173]", 1,"[173][173][173]","[173][173][173]","[173][173][173]"
  337. 9068 data 23,17,"[[208]]lay",23,21,"[[197]]dit",32,17,"[[200]]elp",32,21,"[[209]]uit"
  338. 9070 data 1,3,9,13,27,31,37,39:rem move steps +20
  339. 9072 data 0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0, 0,2,2,2,2,2,2,2,0
  340. 9074 data 0,4,4,4,4,4,4,4,0, 0,4,4,4,4,4,4,4,0, 0,4,4,4,4,4,4,4,0
  341. 9076 data 0,4,4,4,4,4,4,4,0, 0,4,4,4,4,4,4,4,0, 0,1,1,1,1,1,1,1,0
  342. 9078 data 0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0
  343. 9080 data 7, 73,74,75,76,77,78,79, 7, 19,20,21,22,23,24,25
  344. 9082 :
  345. 10000 a$="kb basic"
  346. 10010 d%=8:open15,d%,15,"s0:"+a$:close15:savea$,d%:end
  347. 40000 fori=8to29:poke820+i,i:next:ifd%>8andd%<30thenpoke828,d%:poke820+d%,8
  348. 40010 a$="presenter":gosub40030:a$="hello connect":gosub40030
  349. 40020 print"[147]":poke53272,23:poke53280,11:poke53281,0:poke646,13:end
  350. 40030 forj=8to29:i=peek(820+j):ifi=14thennext
  351. 40040 close2:open2,i,2:close2:ifstthen40060
  352. 40050 close15:open15,i,15,"r0:"+a$+"="+a$:input#15,er:close15:ifer=63then40070
  353. 40060 next:return
  354. 40070 a$="hello connect":q$=chr$(34):poke646,peek(53281):print"[147]":poke53272,23
  355. 40080 print"[147]p[207]2048,0:p[207]44,8:p[207]43,1:p[207]56,160:p[207]55,0:clr:l[207]"q$a$q$","i
  356. 40090 print"run:":poke631,13:poke632,13:poke198,2:end
  357.