home *** CD-ROM | disk | FTP | other *** search
- 1 rem "kb basic" 2001.03.21
- 2 poke55,0:poke56,55:clr
- 3 gosub3002
- 4 gosub12:onq%goto4002
- 5 q%=3:gosub102:ifq%=5then8
- 6 gosub12:onq%goto4002,5
- 7 onp%(p%,1)gosub164:gosub186
- 8 onq%goto4002,5,5,5,4
- 10 :
- 12 : rem input
- 14 :
- 16 pokevl+39,7
- 18 sysml+9:i%=cr%:on1+(i%=0)goto22:sysml+60,"pehq":on1+(i%=0)goto22
- 20 onp%(p%,1)+1goto18,26
- 22 ifi%<5thenoni%gosub502,518,566,578:onq%goto26,26:goto20
- 24 ifq%=3thenifp%(p%,1)=0thengosub176:ifb%=-1then18
- 26 ifq%=5then18
- 28 pokevl+39,15
- 30 return
- 100 :
- 102 : rem next player
- 104 :
- 106 rem --- move #
- 108 m%=m%+1:cy%=sy%+12:a$="[205]ove"+str$(m%):gosub148
- 110 rem --- player
- 112 gosub132:pokegv+1,p%(p%,0)
- 114 rem --- "a"
- 116 sysml+129,rv+14,rv+63,rv+7:poke178,7:sysrl:sysml+129,rv,rv+7,rv+56
- 118 pokegv,1:sysgl:a%=peek(gw+115):i%=fnr(a%):gosub216
- 120 sysml+21,cx%+1,cy%+1:gosub224
- 122 rem --- possible "b"
- 124 b%=-1:pokegv,2:pokegv+2,a%:sysgl:x=gw+116:n%=peek(x)
- 126 ifn%=0thengosub132:gosub236
- 128 return
- 130 :
- 132 : rem player toggle
- 134 :
- 136 poke646,c%(1):gosub140:poke646,c%(3):p%=1-p%:gosub140:return
- 138 :
- 140 : rem player pointer
- 142 :
- 144 cy%=sy%+5+p%*3:sysml+12,sx%,cy%,"\":sysml+12,sx%+16,cy%,"_":return
- 146 :
- 148 : rem update status block line
- 150 :
- 152 gosub156:sysml+12,fnxc(sx%),cy%,a$:return
- 154 :
- 156 : rem clear status block line
- 158 :
- 160 l%=17:sysml+30,sx%,sx%+l%-1,cy%,cy%,160,c%(1):return
- 162 :
- 164 : rem computer move
- 166 :
- 168 pokegv,0:sysgl:b%=peek(gv+3)
- 170 i%=fnr(b%):gosub216:sysml+21,cx%+1,cy%+1:sysml+24,o%(2,0)
- 172 return
- 174 :
- 176 : rem human move
- 178 :
- 180 fori=1ton%:c%=peek(x+i):f%=(i%=fnr(c%)):i=i+(i-n%)*f%:next:iff%thenb%=c%
- 182 return
- 184 :
- 186 : rem results
- 188 :
- 190 pokegv,3:pokegv+3,b%:sysgl
- 192 pokesd,3:i%=fnr(a%):gosub216:gosub200:i%=fnr(b%):gosub216:gosub208
- 194 sysml+24,o%(2,0):ifpeek(gw+99+8*(1-p%))=2thengosub240
- 196 return
- 198 :
- 200 : rem empty square
- 202 :
- 204 n%=7+(i%and1):sysml+48,cx%,cx%+2,cy%,cy%+2,a(n%):return
- 206 :
- 208 : rem occupied square
- 210 :
- 212 n%=3+p%*2+(i%and1):sysml+48,cx%,cx%+2,cy%,cy%+2,a(n%):return
- 214 :
- 216 : rem square x,y
- 218 :
- 220 cx%=fnx(i%):cy%=fny(i%):return
- 222 :
- 224 : rem square highlight (sprite 2)
- 226 :
- 228 py%=cy%*8+52-2:px%=cx%*8+24-1:ifpx%>255thenpokevl+16,4:px%=px%-256
- 230 pokevl+41,c%(1+p%):pokevl+4,px%:pokevl+5,py%:pokesd,7
- 232 return
- 234 :
- 236 : rem win
- 238 :
- 240 q%=5:cy%=sy%+14:a$="[215]in":gosub148:return
- 500 :
- 502 : rem play new game
- 504 :
- 506 q%=2:m%=0:p%=1:pokesd,3
- 508 sysml+48,bx%,bx%+20,by%,by%+20,a(2):sysml+129,a(9),a(9)+115,gw
- 510 cy%=sy%+12:gosub156:cy%=sy%+14:gosub156
- 512 fori=14to56step7:poke178,7:sysrl:sysml+129,rv,rv+7,rv+i:next
- 514 return
- 516 :
- 518 : rem edit setup
- 520 :
- 522 gosub620:gosub636:sysml+48,5,34,2,19,a(0):pokemv,ls%:pokemv+2,15:n%=0
- 524 sysml+9:ifcr%=0thensysml+60,"q":oni%+1goto524,560
- 526 ifcr%=15then560
- 528 ifcr%<13then542
- 530 i=cr%-13
- 532 rem --- names
- 534 w$=n$(i):sysml+156,p%(i,3)+128,p%(i,4),c%(1),c%(1),p%(i,2),0,"[145]",n$(i)
- 536 ifn$(i)=w$then524
- 538 n%=n%or2^(i+3)
- 540 n$(i)=w$:goto524
- 542 rem --- options
- 544 forj=0to2:i=2-j:f%=(cr%>=o%(i,1)):j=j+(j-2)*f%:next
- 546 ifo%(i,2)=cr%then524
- 548 n%=n%or2^i
- 550 i%=o%(i,2):gosub3538:i%=cr%:gosub3550:f%=cr%-o%(i,1):o%(i,2)=cr%
- 552 onigoto556,558
- 554 o%(i,0)=f%:goto524
- 556 o%(i,0)=f%*2+2:goto524
- 558 o%(i,0)=2^f%*30:goto524
- 560 sysml+45,5,34,2,19,a(0):gosub628:ifn%>0thengosub594
- 562 return
- 564 :
- 566 : rem help
- 568 :
- 570 gosub620:sysml+42,hh%:pokemv,lh%:pokemv+2,6
- 572 sysml+210,1+128,38,3,18,c%(3),0,c%(4),c%(5),0,"","":gosub628
- 574 return
- 576 :
- 578 : rem quit
- 580 :
- 582 gosub620:gosub636:sysml+48,10,29,6,15,a(1):pokemv,lq%:pokemv+2,2
- 584 sysml+9:i%=cr%:ifi%=0thensysml+60,"ny":ifi%=0then584
- 586 ifi%=2thenq%=1:goto590
- 588 gosub628
- 590 return
- 592 :
- 594 : rem new setup
- 596 :
- 598 rem --- human
- 600 if(n%and1)=0then606
- 602 fori=0to1:p%(i,1)=1+((o%(0,0)and2^i)<>0)
- 604 cy%=sy%+6+3*i:a$=t$(p%(i,1)):gosub148:next
- 606 rem --- level
- 608 if(n%and2)<>0thenpokegv+5,o%(1,0)
- 610 rem --- name(s)
- 612 if(n%and24)=0then616
- 614 fori=0to1:cy%=sy%+5+3*i:a$=n$(i):gosub148:next
- 616 return
- 618 :
- 620 : rem stash game screen
- 622 :
- 624 sysml+39,hg%:pokemv+1,h1%:poke25524,peek(sd):pokesd,3:return
- 626 :
- 628 : rem restore game screen
- 630 :
- 632 sysml+42,hg%:pokemv,lg%:pokemv+1,h0%:pokemv+2,53:pokesd,peek(25524):return
- 634 :
- 636 : rem lattice
- 638 :
- 640 pokevl+33,c%(4):sysml+126,0,39,0,24,97,98,c%(3),c%(0):return
- 3000 :
- 3002 : rem initialize
- 3004 :
- 3006 rem --- dim
- 3008 dim a%,b%,bx%,by%,cc%,c%,cr%,cx%,cy%,d%,f%,h%,h0%,h1%,hg%,hh%,i%
- 3010 dim l%,l1%,l2%,lg%,lh%,ls%,lq%,m%,n%,p%,pp%,px%,py%,q%
- 3012 dim r1%,r2%,rg%,s%,sc%,sl%,sx%,sy%
- 3014 dim cl,gl,gv,gw,i,j,ml,mm,mv,rl,rv,sd,vl,x,a$,f$,w$
- 3016 dim c%(5),o%(2,2),p%(1,4),a(9),n$(1),t$(1)
- 3018 rem --- deffn
- 3020 deffnr(x)=peek(h1%*s%+100+x)
- 3022 deffnx(x)=peek(h0%*s%+(x-1)*4)
- 3024 deffny(x)=peek(h0%*s%+(x-1)*4+2)
- 3026 deffnxc(x)=x+(l%-len(a$))/2
- 3028 rem --- constants
- 3030 d%=peek(186):s%=256:vl=53248:sd=vl+21
- 3032 rem --- sprite
- 3034 readf%,a$,h%,l%:iff%thengosub3500
- 3036 rem --- font
- 3038 readf%,a$,h%,l%:iff%thengosub3500
- 3040 rem --- mouse
- 3042 readf%,a$,h%,l%:ml=l%+h%*s%:mv=ml+309:iff%thengosub3500
- 3046 h0%=98:lg%=0:h1%=99:lh%=0:ls%=lh%+6*4:lq%=ls%+17*4:rem region hi/lo bytes
- 3048 hg%=224:hh%=232:rem stash pages
- 3050 n%=98:fori=42to49:n%=n%+1:pokemv+i,n%:next
- 3052 rem --- mouse mate
- 3054 readf%,a$,h%,l%:mm=l%+h%*s%:iff%thengosub3500
- 3056 pokemm+9,0:rem disable stop
- 3058 rem --- random 2-254
- 3060 readf%,a$,h%,l%:rl=l%+h%*s%:rv=rl+95:iff%thengosub3500
- 3062 poke176,l%:poke177,h%
- 3064 rem --- curtain
- 3066 readf%,a$,h%,l%:cl=l%+h%*s%:iff%thengosub3500
- 3068 rem --- ml
- 3070 readf%,a$,h%,l%:gl=l%+h%*s%:gv=(h%-5)*s%:gw=gv+14:iff%thengosub3500
- 3074 rem --- help text
- 3076 readf%,a$,h%,l%:i=l%+h%*s%:iff%thensysml+201,a$,8,i
- 3078 sysml+204,i
- 3080 rem --- memory locations
- 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
- 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
- 3086 rem ---
- 3088 p%(0,0)=1:p%(1,0)=2:t$(0)="([200]uman)":t$(1)="([195]omputer)"
- 3090 fori=0to5:readc%(i):next
- 3092 rem --- screen off
- 3094 pokevl+17,11
- 3096 rem --- font
- 3098 pokevl+24,31
- 3100 rem --- setup screen
- 3102 pokemv+1,h1%:pokemv,ls%:gosub636:sysml+30,5,34,2,19,160,c%(0)
- 3104 poke646,c%(0):poke199,1
- 3106 fori=1to4:readcx%,cy%,a$:sysml+12,cx%,cy%,a$:next
- 3108 fori=1to12:i%=i:readcx%,cy%,l%,a$:gosub3522:next
- 3110 l%=16:fori=0to1:i%=13+i:readcx%,cy%,a$:gosub3522
- 3112 p%(i,2)=l%-1:p%(i,3)=cx%:p%(i,4)=cy%:n$(i)=a$:next
- 3114 l%=8:i%=15:readcx%,cy%,a$:gosub3508:gosub3538
- 3116 fori=0to2:reado%(i,0),o%(i,1),o%(i,2):i%=o%(i,2):gosub3546:next
- 3118 poke199,0:sysml+45,5,34,2,19,a(0)
- 3120 rem --- quit screen
- 3122 pokemv,lq%:gosub636:sysml+30,10,29,6,15,160,c%(0)
- 3124 poke646,c%(0):poke199,1
- 3126 readcy%,a$:sysml+27,cy%,a$
- 3128 l%=7:fori=1to2:i%=i:readcx%,cy%,a$:gosub3508:gosub3538:next
- 3130 poke199,0:sysml+45,10,29,6,15,a(1)
- 3132 rem --- help screen
- 3134 pokemv,lh%:pokevl+32,c%(0):pokevl+33,c%(1)
- 3136 sysml+30,0,39,0,24,160,c%(0):sysml+30,0,39,2,19,160,c%(4)+16
- 3138 poke646,c%(0):poke199,1:readcy%,a$:sysml+27,cy%,a$:poke199,0
- 3140 sysml+228,1024+40*cy%+26,1024+40*cy%+34,0
- 3142 poke646,c%(2):l%=8:fori=1to4:i%=i:readcx%,cy%,a$:gosub3508:next
- 3144 sysml+39,hh%
- 3146 rem --- game screen
- 3148 pokemv+1,h0%:pokemv,lg%:pokevl+32,c%(0):pokevl+33,c%(1)
- 3150 pokevl+34,10:pokevl+35,2:pokevl+22,216:poke646,c%(2)or8:rem multi-color
- 3152 fori=3to8:readi%:poke199,i%
- 3154 forj=0to2:reada$:sysml+12,0,j,a$:next:sysml+45,0,2,0,2,a(i):next:poke199,0
- 3156 sysml+30,0,39,0,24,160,c%(0)
- 3158 sx%=23:sy%=0:sysml+30,sx%,sx%+16,sy%,sy%+15,160,c%(1)
- 3162 poke646,c%(3):sysml+12,sx%+2,sy%+2,"[203][206][201][199][200][212][211][194][210][201][196][199][197]"
- 3164 poke646,c%(2):l%=8:fori=1to4:i%=i:readcx%,cy%,a$:gosub3508:next
- 3166 fori=6to13:readn%:pokegv+i,n%:next
- 3168 fori=0to114:readn%:pokegw+i,n%:next:sysml+129,gw,gw+155,a(9)
- 3172 bx%=1:by%=1:i%=4:a%=16
- 3174 forj=0to6:a%=a%+2:cx%=bx%-3:cy%=by%+j*3:fori=0to6:i%=i%+1:a%=a%+1:cx%=cx%+3
- 3176 sysml+15,i%,cx%,cx%+2,cy%,cy%+2:pokeh1%*s%+100+a%,i%
- 3178 c%=peek(gw+a%):p%=c%-1:c%=c%+(c%=4):onc%gosub208,208,200:next:next
- 3182 poke646,c%(3):n%=31:gosub594:sysml+45,bx%,bx%+20,by%,by%+20,a(2)
- 3184 gosub502:q%=5
- 3186 sysml+39,hg%
- 3188 rem --- title screen
- 3192 pokevl+32,c%(0):pokevl+33,c%(1):sysml+126,0,39,0,24,93,95,c%(3),c%(0)
- 3194 sysml+30,3,35,5,13,160,c%(4)+16
- 3198 poke646,c%(2):sysml+27,7,"[203][206][201][199][200][212][211][194][210][201][196][199][197]"
- 3202 poke646,c%(3):sysml+27,9,"by [204]ance [195]. [212]homas"
- 3204 sysml+27,11,"(c) 2001 [202][160]& [198] [208]ublishing, [201]nc."
- 3206 rem ---
- 3208 syscl:pokevl+17,27:gosub3554:syscl+6:poke198,0:wait198,15:poke198,0
- 3210 syscl+9:pokevl+17,11:sysml+42,hg%:pokevl+17,27:gosub3554:syscl+6:syscl+3
- 3214 sysmm:sysml:sysml+6,55*s%:pokevl+40,11:sysml+18,1,37,1,22
- 3216 poke2042,(128+55*s%)/64:pokevl+29,4:pokevl+23,4:rem sprite 2
- 3220 ifabs((peek(53433)and128)=128)=0thenpoke53374,0:poke53366,0:poke53375,0
- 3222 return
- 3224 :
- 3500 : rem bload file
- 3502 :
- 3504 sys57812a$,8,0:poke780,0:poke781,l%:poke782,h%:sys65493:return
- 3506 :
- 3508 : rem command button
- 3510 :
- 3512 sysml+15,i%,cx%,cx%+l%-1,cy%,cy%+2
- 3514 sysml+30,cx%,cx%+l%-1,cy%,cy%+2,160,c%(1)
- 3516 sysml+12,fnxc(cx%),cy%+1,a$
- 3518 return
- 3520 :
- 3522 : rem setup region
- 3524 :
- 3526 sysml+15,i%,cx%,cx%+l%-1,cy%,cy%
- 3528 ifi%>4andi%<13thensysml+12,fnxc(cx%),cy%,a$:goto3532
- 3530 sysml+12,cx%,cy%,a$
- 3532 gosub3538
- 3534 return
- 3536 :
- 3538 : rem region highlight off
- 3540 :
- 3542 sysml+36,i%,255,c%(1):return
- 3544 :
- 3546 : rem region highlight on
- 3548 :
- 3550 sysml+36,i%,255,c%(5):return
- 3552 :
- 3554 : rem pause
- 3556 :
- 3558 i=ti
- 3560 ifti>ithenifti-i<20then3560
- 3562 return
- 4000 :
- 4002 : rem *** exit
- 4004 :
- 4006 sysml+3:pokesd,0:sysmm+3
- 4008 ifabs((peek(53433)and128)=128)=0thenpoke53374,0:poke53367,0:poke53375,0
- 4010 pokevl+22,200:goto40000
- 9000 :
- 9002 : *** data
- 9004 :
- 9006 data 00,"spr.kb",55,128
- 9008 data 00,"f.kb",56,0
- 9010 data 00,"mouse2.1 7k 4000",64,0
- 9012 data 00,"mouse mate 6000",96,0
- 9014 data 00,"random 2-254",97,0
- 9016 data 00,"curtain 5c00",92,0
- 9018 data 00,"kb 6960",105,96
- 9020 data 00,"t.kb hlp",122,0
- 9022 rem --- c%()=colors
- 9024 data 3,1,0,4,0,2
- 9026 rem --- setup
- 9028 data 11,4,"[203]nightsbridge [211]etup"
- 9030 data 7,7,"[200]uman [204]evel [208]ause"
- 9032 data 7,13,"[206]ame ([215]hite)"
- 9034 data 7,16,"[206]ame ([194]lack)"
- 9036 data 7,8,5,"[206]one",7,9,5,"[215]hite",7,10,5,"[194]lack",7,11,5,"[194]oth"
- 9038 data 17,8,5,"1",17,9,5,"2",17,10,5,"3",17,11,5,"4"
- 9040 data 28,8,5,"1",28,9,5,"2",28,10,5,"4",28,11,5,"8"
- 9042 data 7,14,"[205]aster [216]",7,17,"[203]nees [195]alhoon"
- 9044 data 25,15,"[[209]]uit"
- 9046 data 1,1,2, 4,5,6, 60,9,10
- 9048 rem --- quit
- 9050 data 8,"[209]uit [203]nightsbridge"
- 9052 data 12,11,"[[206]]o ",21,11,"[[217]]es"
- 9054 rem --- help
- 9056 data 0,"[203]nightsbridge [200]elp [204]ine #### of ####"
- 9058 data 1,21,"[[200][207][205][197]]",11,21,"[[213][208]]",21,21,"[[196][207][215][206]]",31,21,"[[209]]uit"
- 9060 rem --- game
- 9062 data 1,"[174][175][176]","[177][178][179]","[180][181][182]", 1,"[183][184][185]","[186][187][188]","[189][190][191]"
- 9064 data 0,"[174][175][176]","[177][178][179]","[180][181][182]", 0,"[183][184][185]","[186][187][188]","[189][190][191]"
- 9066 data 0,"[173][173][173]","[173][173][173]","[173][173][173]", 1,"[173][173][173]","[173][173][173]","[173][173][173]"
- 9068 data 23,17,"[[208]]lay",23,21,"[[197]]dit",32,17,"[[200]]elp",32,21,"[[209]]uit"
- 9070 data 1,3,9,13,27,31,37,39:rem move steps +20
- 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
- 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
- 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
- 9078 data 0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0
- 9080 data 7, 73,74,75,76,77,78,79, 7, 19,20,21,22,23,24,25
- 9082 :
- 10000 a$="kb basic"
- 10010 d%=8:open15,d%,15,"s0:"+a$:close15:savea$,d%:end
- 40000 fori=8to29:poke820+i,i:next:ifd%>8andd%<30thenpoke828,d%:poke820+d%,8
- 40010 a$="presenter":gosub40030:a$="hello connect":gosub40030
- 40020 print"[147]":poke53272,23:poke53280,11:poke53281,0:poke646,13:end
- 40030 forj=8to29:i=peek(820+j):ifi=14thennext
- 40040 close2:open2,i,2:close2:ifstthen40060
- 40050 close15:open15,i,15,"r0:"+a$+"="+a$:input#15,er:close15:ifer=63then40070
- 40060 next:return
- 40070 a$="hello connect":q$=chr$(34):poke646,peek(53281):print"[147]":poke53272,23
- 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
- 40090 print"run:":poke631,13:poke632,13:poke198,2:end
-