home *** CD-ROM | disk | FTP | other *** search
- 1 rem "chomp basic" 2000.10.27
- 2 poke55,192:poke56,55:clr
- 3 gosub3002
- 4 gosub12:onq%goto4002
- 5 q%=3:gosub102
- 6 gosub12:onq%goto4002,5
- 7 onp%(p%,1)gosub142
- 8 gosub180:onq%goto4002,5,5,5,4
- 10 :
- 12 : rem input
- 14 :
- 16 pokevl+39,1
- 18 sysml+9:i%=cr%:on1+(i%=0)goto22:sysml+60,"pehq":on1+(i%=0)goto22
- 20 onp%(p%,1)+1goto18,24
- 22 oni%gosub502,516,566,582,160:ifq%>2thenonp%(p%,1)goto24:ifb%=-1then18
- 24 ifq%=5then18
- 26 pokevl+39,7
- 28 return
- 100 :
- 102 : rem next player
- 104 :
- 106 b%=-1
- 108 rem --- player
- 110 f%=0:gosub120:p%=1-p%:f%=-1:gosub120
- 112 rem --- move #
- 114 m%=m%+1:cy%=sy%+13:a$="[205]ove"+right$(" "+str$(m%),3):gosub132
- 116 return
- 118 :
- 120 : rem player pointer
- 122 :
- 124 poke646,c%(1):iff%thenpoke646,c%(3)
- 126 cy%=sy%+6+p%*3:sysml+12,sx%,cy%,"\":sysml+12,sx%+16,cy%,"_":poke646,c%(2)
- 128 return
- 130 :
- 132 : rem update status block
- 134 :
- 136 l%=17:sysml+30,sx%,sx%+l%-1,cy%,cy%,160,c%(1):sysml+12,fnxc(sx%),cy%,a$
- 138 return
- 140 :
- 142 : rem computer move
- 144 :
- 146 rem --- square
- 148 rem sysgl:b%=peek(gv+66):gosub184
- 150 sysgl:b%=peek(681):gosub172
- 152 rem --- pointer
- 154 sysml+24,o%(2,0):sysml+21,fnx(0),fny(0):sysml+24,o%(2,0)
- 156 return
- 158 :
- 160 : rem human move
- 162 :
- 164 b%=(int((cy%-by%)/2))*10+int((cx%-bx%)/2):gosub172
- 166 ifbr%>=peek(gv+bc%)orb%=peek(gv+66)or(m%=1andb%=0)thenb%=-1
- 168 return
- 170 :
- 172 : rem square's row & column
- 174 :
- 176 br%=b%/10:bc%=b%-br%*10:return
- 178 :
- 180 : rem move results
- 182 :
- 184 rem --- block
- 186 ifm%=1thencx%=fnx(0):cy%=fny(0):gosub648:pokegv+66,b%:goto202
- 188 rem --- game over
- 190 ifb%=0thenq%=5:gosub206:goto202
- 192 rem --- chomp
- 194 sysml+30,fnx(0),bx%+19,fny(0),by%+21,97,c%(0)
- 196 rem --- board
- 198 c%=br%:i%=bc%:forj=0to1:fori=i%to10:x=gv+j*11+i:ifpeek(x)>c%thenpokex,c%
- 200 next:c%=bc%:i%=br%:next
- 202 return
- 204 :
- 206 : rem win
- 208 :
- 210 poke646,c%(6):a$=n$(1-p%)+" wins":l%=20:sysml+12,fnxc(xb%+1),by%+6,a$
- 212 f%=0:gosub120
- 214 return
- 500 :
- 502 : rem play new game
- 504 :
- 506 q%=2:m%=0:sysml+48,bx%,bx%+19,by%,by%+21,a(0):sysml+129,a(1),a(1)+22,gv
- 508 pokegv+66,255:sysml+30,sx%,sx%+16,sy%+13,sy%+14,160,c%(1):f%=0:gosub120:p%=1
- 510 :
- 512 return
- 514 :
- 516 : rem edit setup
- 518 :
- 520 gosub656
- 522 sysml+42,hs%:pokemv,ls%:pokemv+2,14
- 524 n%=0
- 526 sysml+9:ifcr%=0thensysml+60,"q":oni%+1goto526,558
- 528 ifcr%=14then558
- 530 ifcr%<12then542
- 532 i=cr%-12
- 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$then526
- 538 n%=n%ord%(i+3)
- 540 n$(i)=w$:goto526
- 542 forj=0to2:i=2-j:f%=(cr%>=o%(i,1)):j=j+(j-2)*f%:next
- 544 ifo%(i,2)=cr%then526
- 546 n%=n%ord%(i)
- 548 i%=o%(i,2):gosub3540:i%=cr%:gosub3552:f%=cr%-o%(i,1):o%(i,2)=cr%
- 550 onigoto554,556
- 552 o%(i,0)=f%:goto526
- 554 o%(i,0)=f%:goto526
- 556 o%(i,0)=(d%(f%)-1)*30:goto526
- 558 sysml+39,hs%:gosub664
- 560 ifn%>0thengosub600
- 562 return
- 564 :
- 566 : rem help
- 568 :
- 570 gosub656
- 572 sysml+42,hh%:pokemv,lh%:pokemv+2,6
- 574 sysml+210,1+128,38,3,18,c%(2),0,c%(4),c%(5),0,"",""
- 576 gosub664
- 578 return
- 580 :
- 582 : rem quit
- 584 :
- 586 gosub656
- 588 sysml+42,hq%:pokemv,lq%:pokemv+2,2
- 590 sysml+9:i%=cr%:ifi%=0thensysml+60,"ny":ifi%=0then590
- 592 ifi%=2thenq%=1:goto596
- 594 gosub664
- 596 return
- 598 :
- 600 : rem new setup
- 602 :
- 604 rem --- human
- 606 if(n%andd%(0))=0then616
- 608 fori=0to1
- 610 p%(i,1)=1+((o%(0,0)andd%(i))<>0)
- 612 cy%=sy%+7+3*i:a$=t$(p%(i,1)):gosub132
- 614 next
- 616 rem --- name(s)
- 618 fori=0to1:if(n%andd%(i+3))=0then622
- 620 poke646,c%(6):cy%=sy%+6+3*i:a$=n$(i):gosub132:poke646,c%(2)
- 622 next
- 624 rem --- board
- 626 if(n%andd%(1))=0then644
- 628 sysml+30,bx%,bx%+19,by%,by%+21,97,c%(0)
- 630 c%=14+6:f%=14:i%=10+2*(o%(1,0)<>0):n%=9-o%(1,0)
- 632 fori=0toi%:cy%=by%+i*2:forj=0ton%:cx%=bx%+j*2:f%=c%-f%
- 634 sysml+30,cx%,cx%+1,cy%,cy%+1,160,f%:next:f%=f%+(f%-c%+f%)*(o%(1,0)<>1):next
- 636 m%=0:cx%=bx%:cy%=by%:gosub648:sysml+45,bx%,bx%+19,by%,by%+21,a(0)
- 638 forj=0to1:fori=0to10:pokea(1)+j*11+i,0:next:next:c%=i%+n%+2:f%=c%/2
- 640 forj=0to1:f%=c%-f%:fori=0toc%-f%-1:pokea(1)+j*11+i,f%:next:next
- 642 gosub502:q%=5:rem new game req'd
- 644 return
- 646 :
- 648 : rem poison & block square
- 650 :
- 652 sysml+30,cx%,cx%+1,cy%,cy%+1,160,c%(6+(m%=1)):return
- 654 :
- 656 : rem stash game screen
- 658 :
- 660 sysml+39,hg%:return
- 662 :
- 664 : rem restore game screen
- 666 :
- 668 sysml+42,hg%:pokemv,lg%:pokemv+2,5:return
- 3000 :
- 3002 : rem initialize
- 3004 :
- 3006 rem --- dim
- 3008 dim b%,bc%,br%,bx%,by%,cc%,c%,cr%,cx%,cy%,f%,h%,hg%,hh%,hs%,hq%,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,i,j,ml,mm,mv,vl,x,a$,f$,w$
- 3016 dim c%(6),d%(5),o%(2,2),p%(1,4),a(1),n$(1),t$(1)
- 3018 rem --- deffn
- 3020 deffnx(x)=bx%+bc%*2
- 3022 deffny(x)=by%+br%*2
- 3024 deffnxc(x)=x+(l%-len(a$))/2
- 3026 rem --- constants
- 3028 s%=256:vl=53248
- 3030 rem --- font
- 3032 readf%,a$,h%,l%:iff%thengosub3502
- 3034 rem --- mouse
- 3036 readf%,a$,h%,l%:iff%thengosub3502
- 3038 ml=l%+h%*s%:mv=ml+309
- 3040 pokemv+1,97
- 3042 lg%=0:lh%=lg%+5*4:ls%=lh%+6*4:lq%=ls%+14*4:rem region low bytes
- 3044 hg%=224:hh%=232:hs%=240:hq%=248:rem stash pages
- 3046 n%=98:fori=42to49:n%=n%+1:pokemv+i,n%:next
- 3048 rem --- mouse mate
- 3050 readf%,a$,h%,l%:iff%thengosub3502
- 3052 mm=l%+h%*s%
- 3054 pokemm+9,0:rem disable stop
- 3056 rem --- curtain
- 3058 readf%,a$,h%,l%:iff%thengosub3502
- 3060 cl=l%+h%*s%
- 3062 rem --- random
- 3064 readf%,a$,h%,l%:iff%thengosub3502
- 3066 poke176,l%:poke177,h%
- 3068 rem --- data
- 3070 readf%,a$,h%,l%:iff%thengosub3502
- 3072 rem --- ml
- 3074 readf%,a$,h%,l%:iff%thengosub3502
- 3076 gl=l%+h%*s%:gv=131*s%
- 3078 rem --- help text
- 3080 readf%,a$,h%,l%
- 3082 i=l%+h%*s%
- 3084 iff%thensysml+201,a$,8,i
- 3086 sysml+204,i
- 3088 rem --- memory locations
- 3090 a(0)=gv+67:a(1)=a(0)+880
- 3092 rem ---
- 3094 t$(0)="([200]uman)":t$(1)="([195]omputer)"
- 3096 fori=0to5:readd%(i):next
- 3098 fori=0to6:readc%(i):next
- 3100 rem --- screen off
- 3102 pokevl+17,11
- 3104 rem --- font
- 3106 pokevl+24,31
- 3108 rem --- setup screen
- 3110 pokemv,ls%:pokevl+32,c%(2):pokevl+33,c%(4)
- 3112 sysml+126,0,39,0,24,93,95,c%(2),c%(0):sysml+30,5,34,2,19,160,c%(0)
- 3114 poke646,c%(0):poke199,1
- 3116 fori=1to4:readcx%,cy%,a$:sysml+12,cx%,cy%,a$:next
- 3118 fori=1to11:i%=i:readcx%,cy%,l%,a$:gosub3524:next
- 3120 l%=16:fori=0to1:i%=12+i:readcx%,cy%,a$:gosub3524
- 3122 p%(i,2)=l%-1:p%(i,3)=cx%:p%(i,4)=cy%:n$(i)=a$:next
- 3124 l%=8:i%=14:readcx%,cy%,a$:gosub3510:gosub3540
- 3126 fori=0to2:reado%(i,0),o%(i,1),o%(i,2):i%=o%(i,2):gosub3548:next
- 3128 poke199,0
- 3130 sysml+39,hs%
- 3132 rem --- quit screen
- 3134 pokemv,lq%:pokevl+32,c%(2):pokevl+33,c%(4)
- 3136 sysml+126,0,39,0,24,93,95,c%(2),c%(0):sysml+30,10,29,6,15,160,c%(0)
- 3138 poke646,c%(0):poke199,1
- 3140 readcy%,a$:sysml+27,cy%,a$
- 3142 l%=7:fori=1to2:i%=i:readcx%,cy%,a$:gosub3510:gosub3540:next
- 3144 poke199,0
- 3146 sysml+39,hq%
- 3148 rem --- help screen
- 3150 pokemv,lh%:pokevl+32,c%(0):pokevl+33,c%(1)
- 3152 sysml+30,0,39,0,24,160,c%(0):sysml+30,0,39,2,19,160,c%(4)+16
- 3154 poke646,c%(0):poke199,1:readcy%,a$:sysml+27,cy%,a$:poke199,0
- 3156 sysml+228,1024+40*cy%+22,1024+40*cy%+30,0
- 3158 poke646,c%(3):l%=8:fori=1to4:i%=i:readcx%,cy%,a$:gosub3510:next
- 3160 sysml+39,hh%
- 3162 rem --- game screen
- 3164 pokemv,lg%:pokevl+32,c%(0):pokevl+33,c%(1)
- 3166 sysml+30,0,39,0,24,160,c%(0)
- 3168 sx%=23:sy%=0:sysml+30,sx%,sx%+16,sy%,sy%+15,160,c%(1)
- 3170 poke646,c%(2)
- 3172 sysml+12,sx%+3,sy%+2,"[172][173][174][175][176][177][178][179][180][181]"
- 3174 sysml+12,sx%+3,sy%+3,"[182][183][184][185][186][187][188][189][190][191]"
- 3176 poke646,c%(3):l%=8:fori=1to4:i%=i:readcx%,cy%,a$:gosub3510:next
- 3178 bx%=1:by%=1
- 3179 pokemv+42,237:pokemv+43,237:pokemv+44,236:pokemv+45,236
- 3180 n%=237:fori=46to49:n%=n%+1:pokemv+i,n%:next
- 3181 sysml+30,bx%-1,bx%+20,by%-1,by%+22,160,c%(2)+16
- 3182 sysml+15,5,bx%,bx%+19,by%,by%+21
- 3184 poke646,c%(2):n%=31:gosub600
- 3186 sysml+39,hg%
- 3188 rem --- title screen
- 3190 pokevl+32,c%(0):pokevl+33,c%(1)
- 3192 sysml+126,0,39,0,24,98,98,c%(0),c%(2)
- 3193 n%=98:fori=42to49:n%=n%+1:pokemv+i,n%:next
- 3194 sysml+30,3,35,5,13,160,c%(4)+16
- 3196 poke646,c%(3)
- 3198 sysml+27,6,"[172][173][174][175][176][177][178][179][180][181]"
- 3200 sysml+27,7,"[182][183][184][185][186][187][188][189][190][191]"
- 3202 poke646,c%(4)
- 3204 sysml+27,9,"by [204]ance [195]. [212]homas"
- 3206 sysml+27,11,"(c) 2000 [202][160]& [198] [208]ublishing, [201]nc."
- 3208 rem ---
- 3210 syscl
- 3212 pokevl+17,27
- 3214 gosub3556
- 3216 syscl+6
- 3218 poke198,0:wait198,15:poke198,0
- 3220 syscl+9
- 3222 pokevl+17,11:sysml+42,hg%:pokevl+17,27
- 3224 gosub3556
- 3226 syscl+6
- 3228 syscl+3
- 3230 sysmm
- 3232 sysml
- 3234 sysml+6,192+55*s%
- 3236 sysml+18,1,37,1,22
- 3238 poke646,c%(2)
- 3240 return
- 3242 :
- 3502 : rem bload file
- 3504 :
- 3506 sys57812a$,8,0:poke780,0:poke781,l%:poke782,h%:sys65493:return
- 3508 :
- 3510 : rem command button
- 3512 :
- 3514 sysml+15,i%,cx%,cx%+l%-1,cy%,cy%+2
- 3516 sysml+30,cx%,cx%+l%-1,cy%,cy%+2,160,c%(1)
- 3518 sysml+12,fnxc(cx%),cy%+1,a$
- 3520 return
- 3522 :
- 3524 : rem setup region
- 3526 :
- 3528 sysml+15,i%,cx%,cx%+l%-1,cy%,cy%
- 3530 ifi%<12thensysml+12,fnxc(cx%),cy%,a$:goto3534
- 3532 sysml+12,cx%,cy%,a$
- 3534 gosub3540
- 3536 return
- 3538 :
- 3540 : rem region highlight off
- 3542 :
- 3544 sysml+36,i%,255,c%(1):return
- 3546 :
- 3548 : rem region highlight on
- 3550 :
- 3552 sysml+36,i%,255,c%(5):return
- 3554 :
- 3556 : rem pause
- 3558 :
- 3560 i=ti
- 3562 ifti>ithenifti-i<20then3562
- 3564 return
- 4000 :
- 4002 : rem *** exit
- 4004 :
- 4006 sysml+3:pokevl+21,0:sysmm+3:goto40000
- 9000 :
- 9002 : *** data
- 9004 :
- 9006 data 00,"f.chomp",56,0
- 9008 data 00,"mouse2.1 7k 4000",64,0
- 9010 data 00,"mouse mate 6000",96,0
- 9012 data 00,"curtain 5c00",92,0
- 9014 data 00,"random 2-254",98,0
- 9016 data 00,"chomp 6300",99,0
- 9018 data 00,"chomp 7600",118,0
- 9020 data 00,"t.chomp hlp",135,0
- 9022 rem ---
- 9024 data 1,2,4,8,16,32
- 9026 rem ---
- 9028 data 12,15,11,6,0,2,0:rem c%()
- 9030 rem --- setup
- 9032 data 14,4,"[195]homp [211]etup"
- 9034 data 9,7,"[200]uman [194]oard [208]ause"
- 9036 data 7,13,"[206]ame ([208]layer 1)"
- 9038 data 7,16,"[206]ame ([208]layer 2)"
- 9040 data 7,8,10,"[206]one",7,9,10,"[208]layer 1",7,10,10,"[208]layer 2",7,11,10,"[194]oth"
- 9042 data 20,8,5,"10x11",20,9,5,"9x9",20,10,5,"8x9"
- 9044 data 28,8,5,"0",28,9,5,"1",28,10,5,"2",28,11,5,"4"
- 9046 data 7,14,"[205]aster [216]",7,17,"[203]nees [195]alhoon"
- 9048 data 25,15,"[[209]]uit"
- 9050 data 1,1,2, 0,5,5, 1,8,9
- 9052 rem --- quit
- 9054 data 8,"[209]uit [195]homp?"
- 9056 data 12,11,"[[206]]o ",21,11,"[[217]]es"
- 9058 rem --- help
- 9060 data 0,"[195]homp [200]elp [204]ine #### of ####"
- 9062 data 1,21,"[[200][207][205][197]]",11,21,"[[213][208]]",21,21,"[[196][207][215][206]]",31,21,"[[209]]uit"
- 9064 rem --- game
- 9066 data 23,17,"[[208]]lay",32,17,"[[197]]dit",23,21,"[[200]]elp",32,21,"[[209]]uit"
- 9068 :
- 10000 a$="chomp basic"
- 10010 d%=peek(186):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:poke186,8:poke2048,0:poke44,8:poke43,1: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
-