home *** CD-ROM | disk | FTP | other *** search
- 1 rem "dao basic" 2000.07.17
- 2 poke55,128:poke56,55:clr
- 3 gosub3002
- 4 gosub12:onq%goto4002
- 5 q%=3:gosub102
- 6 gosub12:onq%goto4002,5
- 7 onp%(p%,1)gosub148
- 8 gosub232:onq%goto4002,5,5,5,4
- 9 end
- 10 :
- 12 : rem game input
- 14 :
- 16 pokevl+39,1
- 18 sysml+9:ifcr%>0theni%=cr%:goto24
- 20 sysml+60,"pehq":ifi%>0then24
- 22 onp%(p%,1)+1goto18,26
- 24 ifi%<5thenoni%gosub274,292,344,360:onq%goto30,30:goto18
- 26 ifq%=5then18
- 28 ifp%(p%,1)=0thengosub162:ifa%=0orb%=0then18
- 30 pokevl+39,7
- 32 return
- 100 :
- 102 : rem next player
- 104 :
- 106 a%=0:b%=0
- 108 rem --- player pointer
- 110 i%=1:gosub134:p%=1-p%:poke646,c%(6+p%):i%=3:gosub134:poke646,c%(2)
- 112 pokegv+1,p%(p%,0)
- 114 rem --- move #
- 116 m%=m%+1:a$="[205]ove"+right$(" "+str$(m%),4):sysml+12,fnxs(len(a$)),15,a$
- 118 rem --- save board
- 120 sysml+45,0,16,2,18,a(2)
- 122 rem --- possible moves
- 124 poke179,2:sysgl:n%=peek(gv+121):poke178,n%:sysrl:n%=n%-1
- 126 x=gv+122:y=gv+455:sysml+129,x,x+38,y
- 128 fori=0ton%:j=y+(peek(rv+i)-1)*2:sysml+129,j,j+2,x+i*2:next
- 130 return
- 132 :
- 134 : rem player pointer
- 136 :
- 138 j=i%+1:cy%=fnyp(p%)
- 140 sysml+12,xs%+1,cy%,mid$(p$,i%,1)
- 142 sysml+12,xs%+19,cy%,mid$(p$,j,1)
- 144 return
- 146 :
- 148 : rem computer move
- 150 :
- 152 poke179,1:sysgl:a%=peek(gv+3):b%=peek(gv+4)
- 154 sysml+21,fnx1(a%)+1,fny1(a%)+1:gosub194:gosub264
- 156 sysml+21,fnx1(b%)+1,fny1(b%)+1:gosub264:gosub222
- 158 return
- 160 :
- 162 : rem human move
- 164 :
- 166 x=gv+81
- 168 rem --- from
- 170 ifa%>0then176
- 172 ifpeek(x+i%)<>p%(p%,0)then190
- 174 a%=i%:gosub194:goto190
- 176 ifi%=a%thena%=0:gosub222:goto190:rem cancel
- 178 rem --- to
- 180 ifpeek(x+i%)<>0then190
- 182 n%=peek(gv+121)-1
- 184 x=gv+455:fori=0ton%:y=x+2*i:ifpeek(y)=a%thenifpeek(y+1)=i%thenb%=i%:i=n%
- 186 next
- 188 ifb%>0thengosub222
- 190 return
- 192 :
- 194 : rem display move input
- 196 :
- 198 rem --- "from"
- 200 x=gv+112+4*p%
- 202 fori=0to3
- 204 f%=peek(x+i)
- 206 iff%=a%thensysml+30,fnx1(a%),fnx2(a%),fny1(a%),fny2(a%),160,c%(6+p%)+16:i=3
- 208 next
- 210 rem --- possible "to"
- 212 n%=peek(gv+121)-1
- 214 x=gv+455:fori=0ton%:y=x+2*i:ifpeek(y)=a%thensysml+36,peek(y+1),102,c%(6+p%)
- 216 next
- 218 return
- 220 :
- 222 : rem restore board
- 224 :
- 226 sysml+48,0,16,2,18,a(2)
- 228 return
- 230 :
- 232 : rem display move results
- 234 :
- 236 rem --- update board
- 238 sysml+36,a%,160,c%(1)
- 240 sysml+36,b%,160,c%(6+p%)
- 242 pokegv+3,a%:pokegv+4,b%:poke179,3:sysgl:f%=peek(gv+2)
- 244 rem --- game over
- 246 iff%>0then252
- 248 ifm%>=o%(2,0)thena$="[211]talemate":goto256
- 250 onp%(p%,1)+1gosub264:goto260
- 252 iff%=1thenp%=1-p%
- 254 a$=n$(p%)+" wins":poke646,c%(6+p%)
- 256 q%=5
- 258 sysml+12,fnxs(len(a$)),17,a$:poke646,c%(2)
- 260 return
- 262 :
- 264 : rem pause
- 266 :
- 268 sysml+24,o%(3,0)
- 270 return
- 272 :
- 274 : rem play new game
- 276 :
- 278 m%=0:q%=2
- 280 sysml+48,0,16,2,18,a(1)
- 282 sysml+129,a(0),a(1),gv+81
- 284 i%=1:p%=0:gosub134:p%=1:gosub134
- 286 sysml+30,xs%,39,15,17,160,c%(1)
- 288 return
- 290 :
- 292 : rem edit setup
- 294 :
- 296 sysml+39,hg%
- 298 sysml+42,hs%:pokemv,ls%:pokemv+2,19
- 300 n%=0
- 302 sysml+9:ifcr%=0thensysml+60,"q":oni%+1goto302,336
- 304 ifcr%=19then336
- 306 ifcr%<17then318
- 308 i=cr%-17
- 310 w$=n$(i):sysml+156,p%(i,3)+128,p%(i,4),c%(1),c%(1),p%(i,2),0,"[145]",n$(i)
- 312 ifn$(i)=w$then302
- 314 n%=n%or2^(i+4)
- 316 n$(i)=w$:goto302
- 318 forj=0to3:i=3-j:f%=(cr%>=o%(i,1)):j=j+(j-3)*f%:next
- 320 ifo%(i,2)=cr%then302
- 322 n%=n%or2^i
- 324 i%=o%(i,2):gosub3396:i%=cr%:gosub3408:f%=cr%-o%(i,1):o%(i,2)=cr%
- 326 onigoto330,332,334
- 328 o%(i,0)=f%:goto302
- 330 o%(i,0)=f%:goto302
- 332 o%(i,0)=(f%+1)*64:goto302
- 334 o%(i,0)=2^f%*60:goto302
- 336 sysml+39,hs%:gosub418
- 338 ifn%>0thengosub378
- 340 return
- 342 :
- 344 : rem help
- 346 :
- 348 sysml+39,hg%
- 350 sysml+42,hh%:pokemv,lh%:pokemv+2,6
- 352 sysml+210,1+128,38,3,18,c%(2),0,c%(4),c%(5),0,"",""
- 354 gosub418
- 356 return
- 358 :
- 360 : rem quit
- 362 :
- 364 sysml+39,hg%
- 366 sysml+42,hq%:pokemv,lq%:pokemv+2,2
- 368 sysml+9:i%=cr%:ifi%=0thensysml+60,"ny":ifi%=0then368
- 370 ifi%=2thenq%=1:goto374
- 372 gosub418
- 374 return
- 376 :
- 378 : rem new setup
- 380 :
- 382 rem --- human
- 384 if(n%and1)=0then398
- 386 fori=0to1
- 388 p%(i,1)=1+((o%(0,0)and2^i)<>0)
- 390 cy%=fnyp(i)+1
- 392 sysml+30,xs%,39,cy%,cy%,160,c%(1)
- 394 sysml+12,fnxs(len(t$(p%(i,1)))),cy%,t$(p%(i,1))
- 396 next
- 398 rem --- level
- 400 pokegv,o%(1,0)
- 402 rem --- name(s)
- 404 fori=0to1:if(n%and2^(i+4))=0then412
- 406 cy%=fnyp(i)
- 408 sysml+30,xs%,39,cy%,cy%,160,c%(1)
- 410 poke646,c%(6+i):sysml+12,fnxs(len(n$(i))),fnyp(i),n$(i):poke646,c%(2)
- 412 next
- 414 return
- 416 :
- 418 : rem restore game screen
- 420 :
- 422 sysml+42,hg%:pokemv,lg%:pokemv+2,24
- 424 return
- 3000 :
- 3002 : rem initialize
- 3004 :
- 3006 dv=peek(186)
- 3008 rem --- dim
- 3010 dim a%,b%,c%,cc%,cr%,cx%,cy%,f%,h%,hg%,hh%,hr%,hs%,hq%,i%
- 3012 dim l%,l1%,l2%,lg%,lh%,ls%,lq%,m%,n%,p%,pp%,px%,py%,q%,r1%,r2%,rg%,sc%,sl%
- 3014 dim xs%
- 3016 dim cl,gl,gv,i,j,rl,rv,ml,mm,mv,vl,x,y
- 3018 dim a$,e$,f$,p$,w$
- 3020 dim c%(7),o%(3,2),p%(1,4)
- 3022 dim a(2),n$(1)
- 3024 rem --- deffn
- 3026 deffnrg(x)=hr%*256+4*x-4
- 3028 deffnx1(x)=peek(fnrg(x))
- 3030 deffnx2(x)=peek(fnrg(x)+1)
- 3032 deffnxc(x)=x+(l%-len(a$))/2
- 3034 deffnxs(x)=xs%+(21-x)/2
- 3036 deffny1(x)=peek(fnrg(x)+2)
- 3038 deffny2(x)=peek(fnrg(x)+3)
- 3040 deffnyp(x)=8+3*x
- 3042 rem --- font
- 3044 readf%,a$,h%,l%
- 3046 iff%thengosub3358
- 3048 rem --- mouse
- 3050 readf%,a$,h%,l%
- 3052 iff%thengosub3358
- 3054 ml=h%*256+l%
- 3056 mv=ml+309
- 3058 hr%=98:pokemv+1,hr%:rem region high byte
- 3060 lg%=0:lh%=lg%+24*4:ls%=lh%+6*4:lq%=ls%+19*4:rem region low bytes
- 3062 hg%=224:hh%=232:hs%=240:hq%=248:rem stash pages
- 3064 n%=107+128:fori=42to49:n%=n%+1:pokemv+i,n%:next
- 3066 rem --- mouse mate
- 3068 readf%,a$,h%,l%
- 3070 iff%thengosub3358
- 3072 mm=h%*256+l%
- 3074 pokemm+9,0:rem disable stop
- 3076 rem --- curtain
- 3078 readf%,a$,h%,l%
- 3080 iff%thengosub3358
- 3082 cl=h%*256+l%
- 3084 rem --- random
- 3086 readf%,a$,h%,l%
- 3088 iff%thengosub3358
- 3090 rl=h%*256+l%
- 3092 rv=rl+95
- 3094 poke176,l%:poke177,h%
- 3096 rem --- dao ml
- 3098 readf%,a$,h%,l%
- 3100 iff%thengosub3358
- 3102 gl=h%*256+l%
- 3104 rem --- help text
- 3106 readf%,a$,h%,l%
- 3108 i=h%*256+l%
- 3110 iff%thensysml+201,a$,dv,i
- 3112 sysml+204,i
- 3114 rem --- dao ml data
- 3116 gv=99*256
- 3118 fori=5to119:readn%:pokegv+i,n%:next
- 3120 rem --- memory locations
- 3122 h%=118
- 3124 a(0)=h%*256
- 3126 a(1)=a(0)+38+1
- 3128 a(2)=a(1)+578+1
- 3130 rem --- vic location
- 3132 vl=53248
- 3134 rem ---
- 3136 p%(0,0)=1:p%(1,0)=2:rem markers
- 3138 fori=0to7:readc%(i):next
- 3140 p$=" \_"
- 3142 t$(0)="([200]uman)":t$(1)="([195]omputer)"
- 3144 rem --- screen off
- 3146 pokevl+17,11
- 3148 rem --- font
- 3150 pokevl+24,31
- 3152 rem --- setup screen
- 3154 pokemv,ls%
- 3156 pokevl+32,c%(2)
- 3158 pokevl+33,c%(4)
- 3160 sysml+126,0,39,0,24,95,105,c%(2),c%(0)
- 3162 sysml+30,5,34,2,19,160,c%(0)
- 3164 poke199,1
- 3166 poke646,c%(0)
- 3168 fori=1to4:readcx%,cy%,a$:sysml+12,cx%,cy%,a$:next
- 3170 l%=5:fori=1to16:i%=i:readcx%,cy%,a$:gosub3380:next
- 3172 l%=16:fori=0to1:i%=17+i:readcx%,cy%,a$:gosub3380
- 3174 p%(i,2)=l%-1:p%(i,3)=cx%:p%(i,4)=cy%:n$(i)=a$:next
- 3176 l%=8:i%=19:readcx%,cy%,a$:gosub3366:gosub3396
- 3178 fori=0to3:reado%(i,0),o%(i,1),o%(i,2):i%=o%(i,2):gosub3404:next
- 3180 poke199,0
- 3182 sysml+39,hs%
- 3184 rem --- quit screen
- 3186 pokemv,lq%
- 3188 pokevl+32,c%(2)
- 3190 pokevl+33,c%(4)
- 3192 sysml+126,0,39,0,24,95,105,c%(2),c%(0)
- 3194 sysml+30,10,29,6,15,160,c%(0)
- 3196 poke199,1
- 3198 poke646,c%(0)
- 3200 readcy%,a$:sysml+27,cy%,a$
- 3202 l%=7:fori=1to2:i%=i:readcx%,cy%,a$:gosub3366:gosub3396:next
- 3204 poke199,0
- 3206 sysml+39,hq%
- 3208 rem --- help screen
- 3210 pokemv,lh%
- 3212 pokevl+32,c%(0)
- 3214 pokevl+33,c%(1)
- 3216 sysml+30,0,39,0,24,160,c%(0)
- 3218 sysml+30,0,39,2,19,160,c%(4)+16
- 3220 poke199,1
- 3222 poke646,c%(0)
- 3224 readcy%,a$:sysml+27,cy%,a$
- 3226 sysml+228,1024+40*cy%+19,1024+40*cy%+27,0
- 3228 poke199,0
- 3230 poke646,c%(3)
- 3232 l%=8:fori=1to4:i%=i:readcx%,cy%,a$:gosub3366:next
- 3234 sysml+39,hh%
- 3236 rem --- game screen regions 5,10,15,20 are not used
- 3238 pokemv,lg%
- 3240 pokevl+32,c%(0)
- 3242 pokevl+33,c%(1)
- 3244 poke646,c%(2)
- 3246 sysml+30,0,39,0,24,160,c%(0)
- 3248 xs%=19
- 3250 sysml+30,xs%,39,2,18,160,c%(1)
- 3252 poke199,1
- 3254 a$="":fori=180to185:a$=a$+chr$(i):next
- 3256 sysml+12,xs%+7,4,a$
- 3258 a$="":fori=186to191:a$=a$+chr$(i):next
- 3260 sysml+12,xs%+7,5,a$
- 3262 poke199,0
- 3264 p%(0,1)=-1:p%(1,1)=-1:n%=63:gosub378
- 3266 fory=2to18:reada$:sysml+12,0,y,a$:next
- 3268 poke646,c%(3)
- 3270 l%=8:fori=1to4:i%=i:readcx%,cy%,a$:gosub3366:next
- 3272 fory=3to15step4:i%=i%+1:sysml+15,i%,0,0,0,0:rem regions 5,10,15,20
- 3274 forx=1to13step4:i%=i%+1:sysml+15,i%,x,x+2,y,y+2:next
- 3276 next
- 3278 forj=0to1:fori=0to3:sysml+36,peek(gv+112+4*j+i),160,c%(6+j):next:next
- 3280 xs%=19:rem status start
- 3282 sysml+129,gv+81,gv+120,a(0):rem save initial ml board 0
- 3284 sysml+45,0,16,2,18,a(1):rem save initial display board
- 3286 sysml+39,hg%
- 3288 rem --- title screen
- 3290 pokevl+32,c%(0)
- 3292 pokevl+33,c%(1)
- 3294 sysml+126,0,39,0,24,95,105,c%(0),c%(2)
- 3296 sysml+30,3,35,5,13,160,c%(4)+16
- 3298 poke646,c%(3)
- 3300 poke199,1
- 3302 a$="":fori=180to185:a$=a$+chr$(i):next
- 3304 sysml+27,6,a$
- 3306 a$="":fori=186to191:a$=a$+chr$(i):next
- 3308 sysml+27,7,a$
- 3310 poke199,0
- 3312 a$=""
- 3314 poke646,c%(2)
- 3316 sysml+27,9,"by [204]ance [195]. [212]homas"
- 3318 sysml+27,11,"(c) 2000 [202][160]& [198] [208]ublishing, [201]nc."
- 3320 rem ---
- 3322 syscl
- 3324 pokevl+17,27
- 3326 gosub3412
- 3328 syscl+6
- 3330 poke198,0:wait198,15:poke198,0
- 3332 syscl+9
- 3334 pokevl+17,11:sysml+42,hg%:pokevl+17,27
- 3336 gosub3412
- 3338 syscl+6
- 3340 syscl+3
- 3342 sysmm
- 3344 sysml
- 3346 sysml+6,55*256+128
- 3348 sysml+18,1,37,1,22
- 3350 poke646,c%(2)
- 3352 q%=5
- 3354 return
- 3356 :
- 3358 : rem bload file
- 3360 :
- 3362 sys57812a$,dv,0:poke780,0:poke781,l%:poke782,h%:sys65493:return
- 3364 :
- 3366 : rem command button
- 3368 :
- 3370 sysml+15,i%,cx%,cx%+l%-1,cy%,cy%+2
- 3372 sysml+30,cx%,cx%+l%-1,cy%,cy%+2,160,c%(1)
- 3374 sysml+12,fnxc(cx%),cy%+1,a$
- 3376 return
- 3378 :
- 3380 : rem setup region
- 3382 :
- 3384 sysml+15,i%,cx%,cx%+l%-1,cy%,cy%
- 3386 ifi%>4andi%<17thensysml+12,fnxc(cx%),cy%,a$:goto3390
- 3388 sysml+12,cx%,cy%,a$
- 3390 gosub3396
- 3392 return
- 3394 :
- 3396 : rem region highlight off
- 3398 :
- 3400 sysml+36,i%,255,c%(1):return
- 3402 :
- 3404 : rem region highlight on
- 3406 :
- 3408 sysml+36,i%,255,c%(5):return
- 3410 :
- 3412 : rem pause
- 3414 :
- 3416 i=ti
- 3418 ifti>ithenifti-i<20then3418
- 3420 return
- 4000 :
- 4002 : rem *** exit
- 4004 :
- 4006 sysml+3
- 4008 pokevl+21,0
- 4010 sysmm+3
- 4012 poke646,12
- 4014 goto40000:end
- 9000 :
- 9002 : *** data
- 9004 :
- 9006 data 0,"f.dao",56,0
- 9008 data 0,"mouse2.1 7k 4000",64,0
- 9010 data 0,"mouse mate 6000",96,0
- 9012 data 0,"curtain 5c00",92,0
- 9014 data 0,"random 2-254",97,0
- 9016 data 0,"dao 6500",101,0
- 9018 data 0,"t.dao hlp",123,0
- 9020 rem ---
- 9022 data 1,4,5,6
- 9024 data 6,7,11,12, 9,8,13,14, 21,17,16,22, 24,19,23,18, 6,9,21,24
- 9026 data 7,8,12,13, 11,12,16,17, 12,13,17,18, 13,14,18,19, 17,18,22,23
- 9028 data 6,7,8,9, 11,12,13,14, 16,17,18,19, 21,22,23,24
- 9030 data 6,11,16,21, 7,12,17,22, 8,13,18,23, 9,14,19,24
- 9032 data 4,4,4,4,4, 4,1,0,0,2, 4,0,1,2,0, 4,0,2,1,0, 4,2,0,0,1, 4,4,4,4,4, 4
- 9034 data 6,12,18,24, 9,13,17,21
- 9036 rem ---
- 9038 data 12,15,11,0,0,2,6,2:rem c%()
- 9040 rem --- setup
- 9042 data 15,4,"[196]ao [211]etup"
- 9044 data 7,7,"[200]uman [204]evel [205]oves [208]ause"
- 9046 data 7,13,"[206]ame ([194]lue)"
- 9048 data 7,16,"[206]ame ([210]ed)"
- 9050 data 7,8,"[206]one",7,9,"[194]lue",7,10,"[210]ed",7,11,"[194]oth"
- 9052 data 14,8,"1",14,9,"2",14,10,"3",14,11,"4"
- 9054 data 21,8," 64",21,9,"128",21,10,"256",21,11,"512"
- 9056 data 28,8,"1",28,9,"2",28,10,"4",28,11,"8"
- 9058 data 7,14,"[205]aster [216]",7,17,"[203]nees [195]alhoon"
- 9060 data 25,15,"[[209]]uit"
- 9062 data 1,1,2, 2,5,7, 64,9,9, 60,13,13
- 9064 rem --- quit
- 9066 data 8,"[209]uit [196]ao?"
- 9068 data 12,11,"[[206]]o ",21,11,"[[217]]es"
- 9070 rem --- help
- 9072 data 0,"[200]elp [204]ine #### of ####"
- 9074 data 1,21,"[[200][207][205][197]]",11,21,"[[213][208]]",21,21,"[[196][207][215][206]]",31,21,"[[209]]uit"
- 9076 rem --- game
- 9078 data "[176][192][192][192][178][192][192][192][178][192][192][192][178][192][192][192][174]"
- 9080 data "[221] [221] [221] [221] [221]"
- 9082 data "[221] [221] [221] [221] [221]"
- 9084 data "[221] [221] [221] [221] [221]"
- 9086 data "[171][192][192][192][219][192][192][192][219][192][192][192][219][192][192][192][179]"
- 9088 data "[221] [221] [221] [221] [221]"
- 9090 data "[221] [221] [221] [221] [221]"
- 9092 data "[221] [221] [221] [221] [221]"
- 9094 data "[171][192][192][192][219][192][192][192][219][192][192][192][219][192][192][192][179]"
- 9096 data "[221] [221] [221] [221] [221]"
- 9098 data "[221] [221] [221] [221] [221]"
- 9100 data "[221] [221] [221] [221] [221]"
- 9102 data "[171][192][192][192][219][192][192][192][219][192][192][192][219][192][192][192][179]"
- 9104 data "[221] [221] [221] [221] [221]"
- 9106 data "[221] [221] [221] [221] [221]"
- 9108 data "[221] [221] [221] [221] [221]"
- 9110 data "[173][192][192][192][177][192][192][192][177][192][192][192][177][192][192][192][189]"
- 9112 data 1,21,"[[208]]lay",11,21,"[[197]]dit",21,21,"[[200]]elp",31,21,"[[209]]uit"
- 9999 :
- 10000 a$="dao basic"
- 10010 dv=peek(186):open15,dv,15,"s0:"+a$:close15:savea$,dv:end
- 40000 fori=8to29:poke820+i,i:next:ifdv>8anddv<30thenpoke828,dv:poke820+dv,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
-