! * INITIALIZE * 10 CALL LINK("SCRN2") :: CALL CLEAR :: CALL SCREEN(2) :: CALL MAGNIFY(3) ! * BALL MOVEMENT ARRAYS * 15 DIM BY(510),BX(8) 20 N=0 :: FOR L=0 TO 255 :: BY(L)=N :: N=N+1 :: NEXT L :: BY(1)=1 25 FOR L=256 TO 510 :: BY(L)=N :: N=N-1 :: NEXT L 28 BX(1)=16::BX(2)=32::BX(3)=48::BX(4)=64::BX(5)=80::BX(6)=96::BX(7)=112::BX(8)=128 ! * ARRAY FOR ALL THE BALLS * 30 DIM BALL(8) ! * POSITIONS FOR BALLS * 35 N=8::FOR L=1 TO 8 :: BALL(L)=N::N=N+8 :: NEXT L ! * BALL ANIMATION DEFS * 60 DIM BA$(23)::FOR L=1 TO 23::READ A$::BA$(L)=A$::NEXT L 65 DATA 00030F1F3F3C787A787F7F3C3E1F0F0300E0F8FCFE9E8FAF8FFFFF1E3EFCF8E0,00030F1F3F397175717F7F383C1F0F0300E0F8FCFE3E1F5F1FFFFF3E7EFCF8E0 66 DATA 00030F1F3F32626A627F7F30381F0F0300E0F8FCFE7E3FBF3FFFFF7EFEFCF8E0,00030F1F3F244455447F7F20311F0F0300E0F8FCFEFE7F7F7FFFFFFEFEFCF8E0 67 DATA 00030F1F3F09082A087F7F01231F0F0300E0F8FCFEFEFFFFFFFFFFFEFEFCF8E0,00030F1F3F131155117F7F03071F0F0300E0F8FCFEFEFFFFFFFFFFFEFEFCF8E0 68 DATA 00030F1F3F27232B237F7F070F1F0F0300E0F8FCFEFEFFFFFFFFFFFEFEFCF8E0,00030F1F3F0F4757477F7F0F3F1F0F0300E0F8FCFEFEFFFFFFFFFFFEFEFCF8E0 69 DATA 00030F1F3F1F0F2F0F7F7F1F3F1F0F0300E0F8FCFEFEFFFFFFFFFFFEFEFCF8E0,00030F1F3F1F1F5F1F7F7F3F3F1F0F0300E0F8FCFEFEFFFFFFFFFFFEFEFCF8E0 70 DATA 00030F1F3F3F7F7F7F7F7F3F3F1F0F0300E0F8FCFEFEFFFFFFFFFFFEFEFCF8E0,00030F1F3F3F7F7F7F7F7F3F3F1F0F0300E0F8FCFEFEFFFFFFFFFFFEFEFCF8E0 71 DATA 00030F1F3F3F7F7F7F7F7F3F3F1F0F0300E0F8FCFEFEFFFFFFFFFFFEFEFCF8E0,00030F1F3F3F7F7F7F7F7F3F3F1F0F0300E0F8FCFEFEFFFFFFFFFFFEFEFCF8E0 72 DATA 00030F1F3F3F7F7F7F7F7F3F3F1F0F0300E0F8FCFEFCFCFDFCFFFFFEFEFCF8E0,00030F1F3F3F7F7F7F7F7F3F3F1F0F0300E0F8FCFEFCF8FAF8FFFFFCFEFCF8E0 73 DATA 00030F1F3F3F7F7F7F7F7F3F3F1F0F0300E0F8FCFEF8F1F5F1FFFFF8FEFCF8E0,00030F1F3F3F7F7F7F7F7F3F3F1F0F0300E0F8FCFEF2E2EAE2FFFFF0F8FCF8E0 74 DATA 00030F1F3F3F7F7F7F7F7F3F3F1F0F0300E0F8FCFEE4C4D5C4FFFFE0F0FCF8E0,00030F1F3F3F7F7F7F7F7F3F3F1F0F0300E0F8FCFEC888AA88FFFFC0E2FCF8E0 75 DATA 00030F1F3F3F7F7F7F7F7F3F3F1F0F0300E0F8FCFE92115511FFFF82C6FCF8E0,00030F1F3F3F7E7E7E7F7F3F3F1F0F0300E0F8FCFE2623AB23FFFF068EFCF8E0 76 DATA 00030F1F3F3E7C7D7C7F7F3E3F1F0F0300E0F8FCFE4E475747FFFF0E1EFCF8E0 ! * DECLARE B VARIABLE AS NILL * 80 B=0 ! * PATTERNS FOR ALL BALLS * 83 DIM BN(8)::BN(1)=1::BN(2)=3::BN(3)=6::BN(4)=9 84 BN(5)=12::BN(6)=15::BN(7)=19::BN(8)=22 85 CALL CHAR(100,BA$(1),104,BA$(3),108,BA$(6),112,BA$(9)) 86 CALL CHAR(116,BA$(12),120,BA$(15),124,BA$(19),128,BA$(22)) ! * PLACE ALL THE SPRITES * 90 N=100 :: FOR L=1 TO 8 :: CALL SPRITE(#L,N,INT(13*RND)+3,BX(L),BY(BALL(L)))::N=N+4 :: NEXT L ! * DECLARE 'A' AS 96 * 92 A=96 ! * PROGRAM FLOW * 100 GOSUB 1000 ! ASK PLAYER FOR INCREMENTATION STEPS 101 GOSUB 1010 ! ASK PLAYER FOR BALL SPIN STEPS 102 GOSUB 1100 ! INCREMENT A BALL NUMBER 105 GOSUB 1200 ! POSITION THAT BALL 110 GOSUB 1300 ! CHANGE THAT BALL'S PATTERN 115 GOTO 102 ! GET ANOTHER BALL AND START AGAIN ! * ASK PLAYER FOR INCREMENTATION STEPS * 1000 CALL LINK("DISPLY",23,1,"INCREMENTATION STEPS")::ACCEPT AT(23,24):IS 1005 RETURN ! * ASK PLAYER FOR BALL SPIN STEPS * 1010 CALL LINK("DISPLY",24,1,"BALL SPIN STEPS")::ACCEPT AT (24,24):BS 1011 RETURN ! * INCREMENT A BALL NUMBER * 1100 B=B+1 :: IF B>8 THEN B=1 1102 A=A+4 :: IF A>128 THEN A=100 1105 RETURN ! * POSITION THAT BALL * 1200 BALL(B)=BALL(B)+IS :: IF BALL(B)>510 THEN BALL(B)=1 1205 CALL LOCATE(#B,BX(B),BY(BALL(B))) 1210 RETURN ! * CHANGE THAT BALL'S PATTERN * 1300 BN(B)=BN(B)+BS :: IF BN(B)>23 THEN BN(B)=1 1305 CALL CHAR(A,BA$(BN(B))) 1310 RETURN