#program skate120
  10 ; TRANSITIONANIGANS v2.0     16-17 February 2024        v1.0 - 5 Feb 2024
  20 CLEAR : RUN AT %3: LAYER %0: POKE %23658,%0: %p=%3500: IF % PEEK 65391<>201 THEN PROC defmc()
  30 BORDER %7: PAPER %7: INK %0: BRIGHT %0: FLASH %0: INVERSE %0: OVER %0: CLS 
  40 PROC fnames()
  50 RANDOMIZE 
  60 FOR %n=%1 TO %100
  70 %q=%1+ RND 200
  80 IF %a[q]=1 THEN GO TO %70
  90 %a[q]=%1: NEXT %n
 100 %l=%0: %r=%0
 110 BORDER %0: CLS : PROC screen()
 120 ; PROC auto(): GO TO %230: ; go to final report if using this line for testing
 130 ; MAIN LOOP
 140 FOR %n=%1 TO %200
 150 INPUT "Press ENTER to GO!            "; LINE z$
 160 POKE %65377,%96: POKE %65384,%96: %u=% USR 65368: .playwav skateg.wav
 170 FOR %m=%1 TO %p: NEXT %m
 180 IF %a[n]=0 THEN PROC selleft()
 190 IF %a[n]=1 THEN PROC selright()
 200 POKE %65377,%56: POKE %65384,%56: %u=% USR 65368: BEEP .1,-17
 210 NEXT %n
 220 ; FINAL REPORT
 230 PRINT AT %15,%11;"FINI"; AT %15,%17;"SHED"
 240 FOR %n=%1 TO %100
 250 %t[1]=%t[1]+(l[n]=2): %t[2]=%t[2]+(l[n]=6): %t[3]=%t[3]+(l[n]=4): %t[4]=%t[4]+(l[n]=1)
 260 %t[6]=%t[6]+(r[n]=2): %t[7]=%t[7]+(r[n]=6): %t[8]=%t[8]+(r[n]=4): %t[9]=%t[9]+(r[n]=1)
 270 NEXT %n
 280 FOR %n=%0 TO %1: FOR %m=%1 TO %4: %t[5*(n+1)]=%t[5*(n+1)]+t[m+(5*n)]: NEXT %m: NEXT %n
 290 SAVE f$ SCREEN$ : PRINT AT %15,%10;"PRESS"; AT %15,%17;"A KEY"
 300 REPEAT : REPEAT UNTIL INKEY$ <>""
 310 FOR %n=%3 TO %15: PRINT AT %n,3;"            "; AT %n,17;"            ": NEXT %n
 320 PRINT BRIGHT %1; PAPER %2; INK %9; AT %3,%1;"RED:      "; AT %3,%10-(t[1]>9)-(t[1]=100)+(t[5]<100);%t[1];"/";%t[5]; AT %3,%17;"RED:      "; AT %3,%26-(t[6]>9)-(t[6]=100)+(t[10]<100);%t[6];"/";%t[10]
 330 PRINT BRIGHT %1; PAPER %6; INK %9; AT %5,%1;"YELLOW:   "; AT %5,%10-(t[2]>9)-(t[2]=100)+(t[5]<100);%t[2];"/";%t[5]; AT %5,%17;"YELLOW:   "; AT %5,%26-(t[7]>9)-(t[7]=100)+(t[10]<100);%t[7];"/";%t[10]
 340 PRINT BRIGHT %1; PAPER %4; INK %9; AT %7,%1;"GREEN:    "; AT %7,%10-(t[3]>9)-(t[3]=100)+(t[5]<100);%t[3];"/";%t[5]; AT %7,%17;"GREEN:    "; AT %7,%26-(t[8]>9)-(t[8]=100)+(t[10]<100);%t[8];"/";%t[10]
 350 PRINT BRIGHT %1; PAPER %1; INK %5; AT %9,%1;"BLUE:     "; AT %9,%10-(t[4]>9)-(t[4]=100)+(t[5]<100);%t[4];"/";%t[5]; AT %9,%17;"BLUE:     "; AT %9,%26-(t[9]>9)-(t[9]=100)+(t[10]<100);%t[9];"/";%t[10]
 360 PRINT BRIGHT %1; AT %11,1;"             M"; AT %11,%17;"M             "; AT %12,1;"             A"; AT %12,%17;"A             "; AT %13,1;"             X"; AT %13,%17;"X             "; AT %14,1;"              "; AT %14,%17;"              "
 370 PLOT %116,%62: DRAW %0,-16: DRAW -9,%0: DRAW %0,%8: DRAW -2,-2: DRAW %2,%2: DRAW %2,-2
 380 PLOT %139,%62: DRAW %0,-16: DRAW %9,%0: DRAW %0,%8: DRAW -2,-2: DRAW %2,%2: DRAW %2,-2
 390 BRIGHT %1: FOR %n=%56 TO %86 STEP %2: PLOT %107,%n: PLOT %148,%n: NEXT %n
 400 INK %2: FOR %n=%1 TO %t[1]: PLOT %7+n,80: DRAW %0,%7: NEXT %n: FOR %n=%1 TO %t[6]: PLOT %248-n,80: DRAW %0,%7: NEXT %n
 410 INK %6: FOR %n=%1 TO %t[2]: PLOT %7+n,72: DRAW %0,%7: NEXT %n: FOR %n=%1 TO %t[7]: PLOT %248-n,72: DRAW %0,%7: NEXT %n
 420 INK %4: FOR %n=%1 TO %t[3]: PLOT %7+n,64: DRAW %0,%7: NEXT %n: FOR %n=%1 TO %t[8]: PLOT %248-n,64: DRAW %0,%7: NEXT %n
 430 INK %1: FOR %n=%1 TO %t[4]: PLOT %7+n,56: DRAW %0,%7: NEXT %n: FOR %n=%1 TO %t[9]: PLOT %248-n,56: DRAW %0,%7: NEXT %n
 440 INK %0: BRIGHT %0
 450 SAVE g$ SCREEN$ 
 460 STOP 
 470 ;==================== PROCS
 480 DEFPROC screen()
 490 LOCAL %n
 500 PRINT BRIGHT %1; AT %0,%0;"SKATE TRAINING I:",'"TRANSITIONANIGANS           v2.0"
 510 PRINT AT %18,%2;"  "; AT %19,%2;"     "; AT %20,%2;"   "
 520 PRINT AT %18,%17;" "; AT %19,%17;"   "; AT %20,%17;"   "
 530 PLOT %0,%158: DRAW %255,%0: DRAW %0,%1: DRAW -255,%0
 540 PLOT %127,%0: DRAW %0,%157: DRAW %1,%0: DRAW %0,-157
 550 FOR %n=%4 TO %13: PRINT AT %n,%3;".........."; AT %n,%19;"..........": NEXT %n
 560 PLOT %0,%40: DRAW %255,%0: DRAW %0,%1: DRAW -255,%0
 570 ENDPROC 
 580 DEFPROC fnames()
 590 LOCAL m$,z,z$
 600 DIM d$(24): OPEN # 2,"v>d$": .date: CLOSE # 2
 610 m$="janfebmaraprmayjunjulaugsepoctnovdec"
 620 z= VAL d$(16 TO 17)
 630 z$=m$((3*z)-2 TO 3*z)
 640 f$="s1scrs/"+d$(13 TO 14)+z$+d$(21 TO 22)+"a.scr"
 650 g$="s1scrs/"+d$(13 TO 14)+z$+d$(21 TO 22)+"b.scr"
 660 ENDPROC 
 670 DEFPROC selleft()
 680 LOCAL %x,%y
 690 POKE %65377,%105: POKE %65384,%56: %u=% USR 65368
 700 .playwav skatel.wav
 710 %y=%l/10: %x=%l-(10*y): %l=%l+1
 720 i$= INKEY$ : IF i$<>"r" AND i$<>"y" AND i$<>"g" AND i$<>"b" THEN GO TO %720
 730 %l[l]=(2 AND i$="r")+(6 AND i$="y")+(4 AND i$="g")+(i$="b")
 740 PRINT OVER %1; BRIGHT %1; INK %9-(4*(l[l]=1)); PAPER %l[l]; AT %y+4,%x+3;" "
 750 ENDPROC 
 760 DEFPROC selright()
 770 LOCAL %x,%y
 780 POKE %65377,%56: POKE %65384,%105: %u=% USR 65368
 790 .playwav skater.wav
 800 %y=%r/10: %x=%r-(10*y): %r=%r+1
 810 i$= INKEY$ : IF i$<>"r" AND i$<>"y" AND i$<>"g" AND i$<>"b" THEN GO TO %810
 820 %r[r]=(2 AND i$="r")+(6 AND i$="y")+(4 AND i$="g")+(i$="b")
 830 PRINT OVER %1; BRIGHT %1; INK %9-(4*(r[r]=1)); PAPER %r[r]; AT %y+4,%x+19;" "
 840 ENDPROC 
 850 DEFPROC auto()
 860 LOCAL %n
 870 FOR %n=%1 TO %100
 880 %l[n]=%2*(1+ RND 4): IF %l[n]=8 THEN %l[n]=%1
 890 %r[n]=%2*(1+ RND 4): IF %r[n]=8 THEN %r[n]=%1
 900 NEXT %n
 910 FOR %n=%1 TO %200
 920 IF %a[n]=0 THEN PROC autoleft()
 930 IF %a[n]=1 THEN PROC autoright()
 940 NEXT %n
 950 ENDPROC 
 960 DEFPROC autoleft()
 970 LOCAL %x,%y
 980 %y=%l/10: %x=%l-(10*y): %l=%l+1
 990 PRINT OVER %1; BRIGHT %1; INK %9-(4*(l[l]=1)); PAPER %l[l]; AT %y+4,%x+3;" "
1000 ENDPROC 
1010 DEFPROC autoright()
1020 LOCAL %x,%y
1030 %y=%r/10: %x=%r-(10*y): %r=%r+1
1040 PRINT OVER %1; BRIGHT %1; INK %9-(4*(r[r]=1)); PAPER %r[r]; AT %y+4,%x+19;" "
1050 ENDPROC 
1060 DEFPROC defmc()
1070 LOCAL %n,%b
1080 RESTORE %1090: FOR %n=%65368 TO %65391: READ %b: POKE %n,%b: NEXT %n
1090 DATA %33,%32,%90,%6,%5,%197,%6,%16,%54,%0,%35,%16,%251,%6,%16,%54,%0,%35,%16,%251,%193,%16,%238,%201
1100 ENDPROC 
