Qbasicnews.com

Full Version: Unlabled challenge
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I challenge you to make a game without any SUBs, FUNctions, Libs, or external components :o . Pure QB. And, an added challenge, make it without any GOTOs or DO...LOOPs. GOSUB is fine, but make sure each line is numbered so you can GOSUB back to the right place. I will try my challenge and see if it is even possible. Good luck! :oops:
Oops, I spelled 'unlabeled' as 'unlabled.' :-? Pardon my error. The poll is pointless, I just want to know who likes what.
Too easy - WHILE..WEND can replace DO..LOOP

and GOSUB can replace sub/function/goto. :-)
You forgot a "Pink what?" on the poll.....

and yeah Car is right now with only gotos........ car is still right. you can use goto almost the same way as gosub
Done!!!

Code:
1     'Bubble fight!!!
2     'Objective: Get away from "pricklies" and spikes. The longer you
3     '           stay airborne, the higher the score.
4     'Controls:
5     '           Left CTRL = move left
6     '           Right CTRL = move right
7     '           Right Space = Adjust height
8     '
9     'Dev:  Richard Eric M. Lope BSN RN aka Relsoft/Jelly
10    'Creds : Plasma(Jon Petrosky) for SetVideoSeg
11    'Platform/Interpreter : QBASIC(The one that comes with windows)
12    'OS : DOS/Win9x

13   DEFINT A-Z
14    '$DYNAMIC
15 TYPE MineType: x  AS SINGLE: y AS SINGLE: xv AS SINGLE: yv AS SINGLE: cx AS INTEGER: cy AS INTEGER: Hei AS INTEGER: Wid AS INTEGER: id AS INTEGER: angle AS INTEGER: Active AS INTEGER: Counter AS INTEGER: Frame AS INTEGER: SFrame AS INTEGER: END  _
TYPE
16   TYPE BubbleType: x  AS SINGLE: y AS SINGLE: xv AS SINGLE: yv AS SINGLE: Frame AS INTEGER: END TYPE
17   TYPE StarType: x  AS SINGLE: y AS SINGLE: xv AS SINGLE: yv AS SINGLE: c AS INTEGER: END TYPE


18   CONST FALSE = 0, TRUE = NOT FALSE
19   CONST VIDEO = &HA000
20   CONST PI = 3.14151693#
21   CONST MAXMINES = 50
22   CONST MAXSTARS = 50
23   CONST xFRICTION = .008
24   CONST yFRICTION = .008
25   CONST GRAVITY = .012
26   CONST ACCEL = .02
                  

27   DIM SHARED Mine(MAXMINES)  AS MineType
28   DIM SHARED Stars(MAXSTARS)  AS StarType
29   DIM SHARED LutCOS(359)  AS SINGLE
30   DIM SHARED LutSIN(359)  AS SINGLE
31   DIM SHARED VPAGE(32009)   AS INTEGER       'SetVideoSeg Buffer
32   REDIM SHARED BubbleSpr(1 TO 1)  AS INTEGER
33   REDIM SHARED BubbleIdx(1 TO 1)  AS INTEGER
34   REDIM SHARED ExpSpr(1 TO 1)  AS INTEGER
35   REDIM SHARED ExpIdx(1 TO 1)  AS INTEGER
36   REDIM SHARED ExpMask(1 TO 1)  AS INTEGER
37   REDIM SHARED BubbleMask(1 TO 1)  AS INTEGER
38   REDIM SHARED MineSpr(1 TO 1)  AS INTEGER
39   REDIM SHARED MineIdx(1 TO 1)  AS INTEGER
40   REDIM SHARED MineMask(1 TO 1)  AS INTEGER
41   REDIM SHARED SpikeSpr(1 TO 1)  AS INTEGER


42   DIM SHARED Bubble  AS BubbleType
43   DIM SHARED LAYER  AS INTEGER
44   DIM SHARED Score&
45   DIM SHARED Lives

46   CLS
47   SCREEN 13
48   RANDOMIZE TIMER
49   GOSUB INIT
50   WaitON = TRUE

51   DO
52   FINISHED = FALSE
53   GOSUB ReInit
54   DO
55       Anicount = (Anicount AND 7) + 1
56       MineCount = (MineCount AND 63) + 1
57       IF MineCount = 1 THEN
58           GOSUB AddMine
59       END IF
60       DEF SEG = 0
61       IF PEEK(1047) AND 4 THEN         'CTRL
62           Bubble.xv = Bubble.xv - ACCEL
63       END IF
64       IF PEEK(1047) AND 8 THEN         'ALT
65           Bubble.xv = Bubble.xv + ACCEL
66       END IF
67       IF PEEK(1047) AND 2 THEN         'LShift
68           WaitON = NOT WaitON
69       END IF
70       IF (PEEK(1047) AND 1) THEN       'RShift
71           Bubble.yv = Bubble.yv - ((ACCEL * 255) * yFRICTION)
72       END IF
73       IF Anicount = 1 THEN
74           Bubble.Frame = (Bubble.Frame AND 1) + 1
75       END IF

76       Bubble.xv = Bubble.xv - Bubble.xv * xFRICTION
77       Bubble.yv = Bubble.yv + GRAVITY
78       Bubble.yv = Bubble.yv - (Bubble.yv * yFRICTION)

79       Bubble.x = Bubble.x + Bubble.xv

80       Bubble.y = Bubble.y + Bubble.yv

81       IF Bubble.x < 16 THEN
82           Bubble.x = 16
83           Bubble.xv = -Bubble.xv
84       ELSEIF Bubble.x > 283 THEN
85           Bubble.x = 283
86           Bubble.xv = -Bubble.xv
87       END IF

88       IF Bubble.y < 8 THEN
89           Bubble.y = 8
90           Bubble.yv = -Bubble.yv
91       ELSEIF Bubble.y > 171 THEN
92           Bubble.y = 171
93           BubbleExp = TRUE
94           Lives = Lives - 1
95       END IF
96       cx% = Bubble.x
97       cy% = Bubble.y
98       bcf% = Bubble.Frame

99       VidSegment% = LAYER
100      GOSUB SetVideoSeg
101      LINE (0, 0)-(319, 199), 0, BF
102      GOSUB DoStars
103      GOSUB DrawSpikes

104      GOSUB DoMines
105      GOSUB CollideMe
106      IF DoCollision THEN
107          BubbleExp = TRUE
108          Lives = Lives - 1
109      END IF
  
110      IF NOT BubbleExp THEN
111          PUT (cx%, cy%), BubbleMask(BubbleIdx(bcf%)), AND
112          PUT (cx%, cy%), BubbleSpr(BubbleIdx(bcf%)), OR
113      ELSE
114          ecx% = cx%
115          IF ecx% > 288 THEN ecx% = 288
116          ecy% = cy%
117          IF ecy% > 168 THEN ecy% = 168
118          ExpAnim% = (ExpAnim% MOD 10) + 1
119          IF ExpAnim% = 1 THEN ExpF% = (ExpF%) + 1
120          PUT (ecx%, ecy%), ExpMask(ExpIdx(ExpF%)), AND
121          PUT (ecx%, ecy%), ExpSpr(ExpIdx(ExpF%)), OR
122          IF ExpF% = 6 THEN FINISHED = TRUE
123      END IF

124       'Erase stuff
125      LINE (0, 0)-(15, 199), 0, BF      'Left
126      LINE (0, 0)-(319, 8), 0, BF      'top
127      LINE (304, 0)-(319, 199), 0, BF  'right
128      Xpos% = 0
129      Ypos% = 0
130      Text$ = "Score:" + LTRIM$(STR$(Score&))
131      col% = 35
132      GOSUB AFPrint
133      Xpos% = 0
134      Ypos% = 10
135      Text$ = "Lives:" + LTRIM$(STR$(Lives))
136      col% = 35
137      GOSUB AFPrint
138       'Calc FPS
139      FPS = FPS + 1
140      IF StartTime& + 1 < TIMER THEN
141       FPS2 = FPS
142       FPS = 0
143       StartTime& = TIMER
144      END IF
145      Xpos% = 0
146      Ypos% = 20
147      Text$ = "FPS:" + LTRIM$(STR$(FPS2))
148      col% = 23
149      GOSUB AFPrint
150      VidSegment% = VIDEO
151      GOSUB SetVideoSeg
152      IF WaitON THEN
153          WAIT &H3DA, 8
154      END IF

155      PUT (0, 0), VPAGE(6), PSET
156      IF INKEY$ = CHR$(27) THEN END

157  LOOP UNTIL FINISHED
158      VidSegment% = LAYER
159      GOSUB SetVideoSeg
160          Xpos% = 80
161          Ypos% = 50
162          Text$ = "Opps!!![Press Any Key]"
163          col% = 67
164          GOSUB AFPrint

165      VidSegment% = VIDEO
166      GOSUB SetVideoSeg
167      PUT (0, 0), VPAGE(6), PSET
168      c$ = INPUT$(1)
169      FOR i% = 2 TO 9
170          GFXSize% = i%
171          GFXx1% = 0
172          GFXy1% = 0
173          GFXx2% = 319
174          GFXy2% = 199
175          GOSUB GFX
176          WAIT &H3DA, 8
177      NEXT i%
178  LOOP WHILE Lives >= 0

179  CLS
180  SCREEN 13

181  PRINT "Patience pays."
182  PRINT "Try Again."




183  DEF SEG
184  CLS
185  SCREEN 0
186  WIDTH 80

187  LOCATE 1, 1
188  PRINT "Final Score:" + STR$(Score&)
189  PRINT "Relsoft 2003"

190  END



191   '****************Draw spikes***************************
192  DrawSpikes:
193  SpikeAnim% = (SpikeAnim% AND 7) + 1
194  IF SpikeAnim% = 1 THEN SpikeFrame% = (SpikeFrame% MOD 3) + 1
195  SpikeOff% = ((260 \ 2) * SpikeFrame%) + 1
196  spikeScrollCount% = (spikeScrollCount% AND 3) + 1
197  IF spikeScrollCount% = 1 THEN
198      spikeOffset% = (spikeOffset% - 1) AND 15
199  END IF
200  FOR spikeX% = 0 TO 18
201      PUT (spikeX% * 16 + spikeOffset%, 184), SpikeSpr(SpikeOff%), PSET
202  NEXT spikeX%
203  RETURN


204   '****************SetVideo SEG***************************

205  SetVideoSeg:
206  DEF SEG
207  IF VideoAddrOff& = 0 THEN
208      SCREEN 13
209      PSET (160, 100), 0
210      FOR Offset& = 0 TO 32764
211      IF PEEK(Offset&) = &HA0 THEN
212      IF PEEK(Offset& + 1) = &H7D THEN
213      IF PEEK(Offset& + 2) = &H0 THEN
214      IF PEEK(Offset& + 3) = &HA0 THEN
215      VideoAddrOff& = Offset& + 2
216      EXIT FOR
217      END IF
218      END IF
219      END IF
220      END IF
221      NEXT
222  END IF


223  POKE VideoAddrOff&, VidSegment% AND &HFF
224  POKE VideoAddrOff& + 1, (VidSegment% AND &HFF00&) \ &H100

225  RETURN

226   '****************GFX SEG**********************************
227  GFX:
228  FOR GFXXsize% = GFXx1% TO GFXx2% STEP GFXSize%
229   FOR GFXYsize% = GFXy1% TO GFXy2% STEP GFXSize%
230      P = POINT(GFXXsize%, GFXYsize%)
231      LINE (GFXXsize% - 1, GFXYsize% - 1)-(GFXXsize% + GFXSize% - 1, GFXYsize% + GFXSize% - 1), P, BF
232   NEXT GFXYsize%
233  NEXT GFXXsize%
234  RETURN

235   '****************ADD MINE********************************************
236  AddMine:
237  FOR i% = 0 TO MAXMINES
238      IF NOT Mine(i%).Active THEN
239          Mine(i%).id = INT(RND * 6)
240          Mine(i%).x = 344
241          Mine(i%).y = INT(RND * 184)
242          Mine(i%).xv = .12 + (RND * 2) / 5
243          Mine(i%).yv = .12 + (RND * 2) / 5
244          Mine(i%).Hei = 10 + (Int20)
245          Mine(i%).Wid = 10 + (20)
246          Mine(i%).angle = INT(RND * 359)
247          Mine(i%).Active = TRUE
248          Mine(i%).Counter = 0
249          Mine(i%).Frame = 1

250          IF Mine(i%).id = 0 THEN
251              Score& = Score& + 10
252              Mine(i%).SFrame = 0
253          ELSEIF Mine(i%).id = 1 THEN
254              Score& = Score& + 20
255              Mine(i%).SFrame = 2
256          ELSEIF Mine(i%).id = 2 THEN
257              Score& = Score& + 30
258              Mine(i%).SFrame = 4
259          ELSEIF Mine(i%).id = 3 THEN
260              Score& = Score& + 70
261              Mine(i%).SFrame = 6
262          ELSEIF Mine(i%).id = 4 THEN
263              Score& = Score& + 100
264              Mine(i%).SFrame = 8
265          ELSEIF Mine(i%).id = 5 THEN
266              Score& = Score& + 120
267              Mine(i%).SFrame = 8
268          ELSE
269          END IF
270          EXIT FOR
271      END IF
272  NEXT i%

273  RETURN

274   '****************Collide Me****************************************************
275  CollideMe:
276  DoCollision = FALSE
277  tbx% = Bubble.x
278  tby% = Bubble.y
279  BR% = 12 * 12
280  db! = SQR(BR%)
281  bcx% = tbx% + 10
282  bcy% = tby% + 10
283      FOR i = 0 TO MAXMINES
284          IF Mine(i).Active THEN
285              tcx% = Mine(i).cx + 8
286              tcy% = Mine(i).cy + 8
287              IF tcx% < bcx% + db! THEN
288                  IF tcx% > bcx% - db! THEN
289                      IF tcy% < bcy% + db! THEN
290                          IF tcy% > bcy% - db! THEN
291                              DoCollision = TRUE
292                              EXIT FOR
293                          END IF
294                      END IF
295                  END IF
296              END IF
297          END IF
298      NEXT i

299  RETURN

300   '****************Stariray*****************************************************
301  DoStars:
302  FOR S% = 0 TO MAXSTARS
303      Stars(S%).x = Stars(S%).x + Stars(S%).xv
304      Stars(S%).y = Stars(S%).y + Stars(S%).yv
305      IF Stars(S%).x < 0 OR Stars(S%).y > 180 THEN
306          Stars(S%).x = INT(RND * 520)
307          Stars(S%).y = 0
308          Stars(S%).xv = -(.01 + (RND * 1))
309          Stars(S%).yv = (.01 + (RND * 1))
310          Stars(S%).c = INT(RND * 255)
311      END IF
312      PSET (Stars(S%).x, Stars(S%).y), Stars(S%).c
313  NEXT S%
314  RETURN


315   '****************Init********************************************************
316  INIT:
317      FOR A% = 0 TO 359
318          LutCOS(A%) = COS(A% * PI / 180)
319          LutSIN(A%) = SIN(A% * PI / 180)
320      NEXT A%

321      FOR S% = 0 TO MAXSTARS
322          Stars(S%).x = INT(RND * 520)
323          Stars(S%).y = INT(RND * 180)
324          Stars(S%).xv = -(.01 + (RND * 1))
325          Stars(S%).yv = (.01 + (RND * 1))
326          Stars(S%).c = INT(RND * 255)
327      NEXT S%

328      RESTORE BUBBLEDATA
329      READ MaxElem%
330      REDIM BubbleSpr(1 TO MaxElem%)  AS INTEGER
331      FOR i% = 1 TO MaxElem%
332          READ pixel2%
333          BubbleSpr(i%) = pixel2%
334      NEXT i%
    
335      REDIM Temp(1 TO 1000)
336      ptr& = 1
337      IndexNo = 1
338      LastInt = UBOUND(BubbleSpr)
339      DO
340          Temp(IndexNo) = ptr&
341          IndexNo = IndexNo + 1
342          x& = (BubbleSpr(ptr&) \ 8) * (BubbleSpr(ptr& + 1)) + 4
343          IF x& MOD 2 THEN x& = x& + 1
344          ptr& = ptr& + (x& \ 2)
345      LOOP WHILE ptr& < LastInt

346      LastImage = IndexNo - 1
347      REDIM BubbleIdx(1 TO LastImage)  AS INTEGER
348      FOR n = 1 TO LastImage
349          BubbleIdx(n) = Temp(n)
350      NEXT n
351      ERASE Temp

352      REDIM BubbleMask(1 TO UBOUND(BubbleSpr))  AS INTEGER
353      FOR i = 1 TO UBOUND(BubbleSpr)               'Recopy values
354          BubbleMask(i) = BubbleSpr(i)
355      NEXT i
356      FOR i = 1 TO UBOUND(BubbleIdx)          'mask em. ;*)
357          W% = BubbleSpr(BubbleIdx(i)) \ 8
358          H% = BubbleSpr(BubbleIdx(i) + 1)
359          foo& = 0
360          FOR y = 0 TO H% - 1
361          FOR x = 0 TO W% - 1
362              DEF SEG = VARSEG(BubbleSpr(1))
363              c% = PEEK(VARPTR(BubbleSpr(BubbleIdx(i) + 2)) + foo&)
364              IF c <> 0 THEN
365                  DEF SEG = VARSEG(BubbleMask(1))
366                  POKE VARPTR(BubbleMask(BubbleIdx(i) + 2)) + foo&, 0
367              ELSE
368                  DEF SEG = VARSEG(BubbleMask(1))
369                  POKE VARPTR(BubbleMask(BubbleIdx(i) + 2)) + foo&, 255
370              END IF
371              foo& = foo& + 1
372          NEXT x
373          NEXT y

374      NEXT i
375      DEF SEG

376      RESTORE MINEDATA
377      READ MaxElem%
378      REDIM MineSpr(1 TO MaxElem%)  AS INTEGER
379      FOR i% = 1 TO MaxElem%
380          READ pixel2%
381          MineSpr(i%) = pixel2%
382      NEXT i%
383      REDIM Temp(1 TO 1000)
384      ptr& = 1
385      IndexNo = 1
386      LastInt = UBOUND(MineSpr)
387      DO
388          Temp(IndexNo) = ptr&
389          IndexNo = IndexNo + 1
390          x& = (MineSpr(ptr&) \ 8) * (MineSpr(ptr& + 1)) + 4
391          IF x& MOD 2 THEN x& = x& + 1
392          ptr& = ptr& + (x& \ 2)
393      LOOP WHILE ptr& < LastInt

394      LastImage = IndexNo - 1
395      REDIM MineIdx(1 TO LastImage)  AS INTEGER
396      FOR n = 1 TO LastImage
397          MineIdx(n) = Temp(n)
398      NEXT n
399      ERASE Temp

400      REDIM MineMask(1 TO UBOUND(MineSpr))  AS INTEGER
401      FOR i = 1 TO UBOUND(MineSpr)               'Recopy values
402          MineMask(i) = MineSpr(i)
403      NEXT i
404      FOR i = 1 TO UBOUND(MineIdx)          'mask em. ;*)
405          W% = MineSpr(MineIdx(i)) \ 8
406          H% = MineSpr(MineIdx(i) + 1)
407          foo& = 0
408          FOR y = 0 TO H% - 1
409          FOR x = 0 TO W% - 1
410              DEF SEG = VARSEG(MineSpr(1))
411              c% = PEEK(VARPTR(MineSpr(MineIdx(i) + 2)) + foo&)
412              IF c <> 0 THEN
413                  DEF SEG = VARSEG(MineMask(1))
414                  POKE VARPTR(MineMask(MineIdx(i) + 2)) + foo&, 0
415              ELSE
416                  DEF SEG = VARSEG(MineMask(1))
417                  POKE VARPTR(MineMask(MineIdx(i) + 2)) + foo&, 255
418              END IF
419              foo& = foo& + 1
420          NEXT x
421          NEXT y

422      NEXT i
423      DEF SEG

424      RESTORE SPIKEDATA
425      READ MaxElem%
426      REDIM SpikeSpr(1 TO MaxElem%)  AS INTEGER
427      FOR i% = 1 TO MaxElem%
428          READ pixel2%
429          SpikeSpr(i%) = pixel2%
430      NEXT i%

431      RESTORE BUBEXP
432      READ MaxElem%
433      REDIM ExpSpr(1 TO MaxElem%)  AS INTEGER
434      FOR i% = 1 TO MaxElem%
435          READ pixel2%
436          ExpSpr(i%) = pixel2%
437      NEXT i%
  
438      REDIM Temp(1 TO 1000)
439      ptr& = 1
440      IndexNo = 1
441      LastInt = UBOUND(ExpSpr)
442      DO
443          Temp(IndexNo) = ptr&
444          IndexNo = IndexNo + 1
445          x& = (ExpSpr(ptr&) \ 8) * (ExpSpr(ptr& + 1)) + 4
446          IF x& MOD 2 THEN x& = x& + 1
447          ptr& = ptr& + (x& \ 2)
448      LOOP WHILE ptr& < LastInt

449      LastImage = IndexNo - 1
450      REDIM ExpIdx(1 TO LastImage)  AS INTEGER
451      FOR n = 1 TO LastImage
452          ExpIdx(n) = Temp(n)
453      NEXT n
454      ERASE Temp

455      REDIM ExpMask(1 TO UBOUND(ExpSpr))  AS INTEGER
456      FOR i = 1 TO UBOUND(ExpSpr)               'Recopy values
457          ExpMask(i) = ExpSpr(i)
458      NEXT i
459      FOR i = 1 TO UBOUND(ExpIdx)          'mask em. ;*)
460          W% = ExpSpr(ExpIdx(i)) \ 8
461          H% = ExpSpr(ExpIdx(i) + 1)
462          foo& = 0
463          FOR y = 0 TO H% - 1
464          FOR x = 0 TO W% - 1
465              DEF SEG = VARSEG(ExpSpr(1))
466              c% = PEEK(VARPTR(ExpSpr(ExpIdx(i) + 2)) + foo&)
467              IF c <> 0 THEN
468                  DEF SEG = VARSEG(ExpMask(1))
469                  POKE VARPTR(ExpMask(ExpIdx(i) + 2)) + foo&, 0
470              ELSE
471                  DEF SEG = VARSEG(ExpMask(1))
472                  POKE VARPTR(ExpMask(ExpIdx(i) + 2)) + foo&, 255
473              END IF
474              foo& = foo& + 1
475          NEXT x
476          NEXT y

477      NEXT i
478      DEF SEG




479      VPAGE(6) = 2560                       'Width 320*8
480      VPAGE(7) = 200                        'Height
481      LAYER = VARSEG(VPAGE(0)) + 1          'Buffer Seg(Ask Plasma)

482      Score& = 0
483      Lives = 2

484  RETURN

485   '****************Do Mines*****************************************************
486  DoMines:
487  xAnicount = (xAnicount AND 3) + 1
488  FOR i = 0 TO MAXMINES
489      IF Mine(i).Active THEN
490          GOSUB Checkid
491          IF tcx% >= 0 AND tcy% >= 0 AND tcx% < 305 AND tcy% < 184 THEN
492              IF xAnicount = 1 THEN
493                  Mine(i).Frame = (Mine(i).Frame AND 1) + 1
494              END IF
495              cf% = Mine(i).Frame + Mine(i).SFrame
496              PUT (tcx%, tcy%), MineMask(MineIdx(cf%)), AND
497              PUT (tcx%, tcy%), MineSpr(MineIdx(cf%)), OR
498          END IF

499          IF Mine(i).x < 0 THEN
500              Mine(i).Active = FALSE
501          END IF
502      END IF
503  NEXT i
504  RETURN
505   '****************Check Id*****************************************************
506  Checkid:
507       'id
508       '0=Static
509       '1=vert
510       '2=Horz
511       '3=Circular

512      id = Mine(i).id
    
513          IF id = 0 THEN
514              Mine(i).x = Mine(i).x - Mine(i).xv
515              tcx% = Mine(i).x
516              tcy% = Mine(i).y
517              Mine(i).cx = tcx%
518              Mine(i).cy = tcy%
519          ELSEIF id = 1 THEN
520              Mine(i).x = Mine(i).x - .55
521              Mine(i).angle = Mine(i).angle - 1
522              IF Mine(i).angle < 0 THEN Mine(i).angle = 360 + Mine(i).angle
523              Mine(i).yv = LutSIN(Mine(i).angle) * 50
524              tcx% = Mine(i).x
525              tcy% = Mine(i).y + Mine(i).yv
526              Mine(i).cx = tcx%
527              Mine(i).cy = tcy%
528          ELSEIF id = 2 THEN
529              Mine(i).x = Mine(i).x - .55
530              Mine(i).angle = Mine(i).angle - 1
531              IF Mine(i).angle < 0 THEN Mine(i).angle = 360 + Mine(i).angle
532              Mine(i).xv = LutSIN(Mine(i).angle) * 50
533              tcx% = Mine(i).x + Mine(i).xv
534              tcy% = Mine(i).y
535              Mine(i).cx = tcx%
536              Mine(i).cy = tcy%
537          ELSEIF id = 3 THEN
538              Mine(i).x = Mine(i).x - .55
539              Mine(i).angle = Mine(i).angle - 1
540              IF Mine(i).angle < 0 THEN Mine(i).angle = 360 + Mine(i).angle
541              Mine(i).xv = LutCOS(Mine(i).angle) * 50
542              Mine(i).yv = LutSIN(Mine(i).angle) * 50
543              tcx% = Mine(i).x + Mine(i).xv
544              tcy% = Mine(i).y + Mine(i).yv
545              Mine(i).cx = tcx%
546              Mine(i).cy = tcy%
547          ELSEIF id = 4 THEN
548              Mine(i).x = Mine(i).x - .55
549              Mine(i).angle = (Mine(i).angle + 1) MOD 360
550              Mine(i).xv = LutCOS(Mine(i).angle) * 50
551              Mine(i).yv = LutSIN(Mine(i).angle) * 50
552              tcx% = Mine(i).x + Mine(i).xv
553              tcy% = Mine(i).y + Mine(i).yv
554              Mine(i).cx = tcx%
555              Mine(i).cy = tcy%
556          ELSEIF id = 5 THEN
557              Mine(i).x = Mine(i).x - .55
558              Mine(i).angle = (Mine(i).angle + 1) MOD 360
559              Mine(i).xv = .5
560              Mine(i).yv = LutSIN(Mine(i).angle) * 70
561              tcx% = Mine(i).x + Mine(i).xv
562              tcy% = Mine(i).y + Mine(i).yv
563              Mine(i).cx = tcx%
564              Mine(i).cy = tcy%
565          ELSE
566          END IF
567  RETURN

568   '****************AFPRINT******************************************************
569  AFPrint:
570      AFx% = Xpos%
571      AFy% = Ypos%
572      Spacing% = 8
573        FOR i% = 0 TO LEN(Text$) - 1
574          AFx% = AFx% + Spacing%
575          Offset% = 8 * ASC(MID$(Text$, i% + 1, 1)) + 14
576          FOR J% = 0 TO 7
577            DEF SEG = &HFFA6
578            Bit% = PEEK(Offset% + J%)
579            IF Bit% AND 1 THEN PSET (AFx%, AFy% + J%), col% + J%
580            IF Bit% AND 2 THEN PSET (AFx% - 1, AFy% + J%), col% + J%
581            IF Bit% AND 4 THEN PSET (AFx% - 2, AFy% + J%), col% + J%
582            IF Bit% AND 8 THEN PSET (AFx% - 3, AFy% + J%), col% + J%
583            IF Bit% AND 16 THEN PSET (AFx% - 4, AFy% + J%), col% + J%
584            IF Bit% AND 32 THEN PSET (AFx% - 5, AFy% + J%), col% + J%
585            IF Bit% AND 64 THEN PSET (AFx% - 6, AFy% + J%), col% + J%
586            IF Bit% AND 128 THEN PSET (AFx% - 7, AFy% + J%), col% + J%
587          NEXT J%
588        NEXT i%
589      DEF SEG
590  RETURN


591   '****************Re init******************************************************
592  ReInit:
593      Bubble.x = 100
594      Bubble.y = 30
595      Bubble.xv = 0
596      Bubble.yv = 0
597      Bubble.Frame = 1
598      BubbleExp = FALSE

599      FOR i = 0 TO MAXMINES
600              Mine(i).id = 0
601              Mine(i).x = 0
602              Mine(i).y = 0
603              Mine(i).cx = 0
604              Mine(i).cy = 0
605              Mine(i).xv = 0
606              Mine(i).yv = 0
607              Mine(i).Hei = 0
608              Mine(i).Wid = 0
609              Mine(i).angle = 0
610              Mine(i).Active = FALSE
611              Mine(i).Counter = 0
612              Mine(i).Frame = 1
613              Mine(i).SFrame = 0
614      NEXT i

615  RETURN


616   '****************Intro********************************************************
617  Intro:
618  RETURN

619  BUBBLEDATA:
620  DATA 404
621  DATA 160,20,0,4352,5395,6166,6425,6425,5656,4885,17,0,0,5393,6424,5656,5397,5397,6166,6169
622  DATA 4373,0,4352,5909,5398,4627,5395,4371,4881,5653,5399,17,5393,5399,4369,5907,6938,4889,0,4352
623  DATA 5909,4373,6163,4374,5649,7451,6427,4888,0,0,5649,4888,6421,21,6931,7198,4630,4370,0,0
624  DATA 5376,5401,6166,4371,7447,5660,17,0,0,0,4864,5656,5656,4881,6938,4374,0,0,0,0
625  DATA 4352,6166,5401,5905,5915,17,0,0,0,0,0,6421,5401,6418,5403,0,0,0,0,0
626  DATA 0,6421,5401,5649,4888,0,0,0,0,0,0,6421,5401,4352,4370,0,0,0,0,4625
627  DATA 17,6421,5656,17,4352,4370,0,0,4352,6166,4371,6166,6166,19,4608,5398,17,0,5393,6425
628  DATA 4883,5656,6421,21,4352,5909,4373,0,5650,4886,5393,5401,6163,4374,0,5393,4630,0,4625,17
629  DATA 5649,4888,5393,5399,17,4352,4370,0,0,4352,5909,4373,4352,5909,5398,4371,0,0,4881,5653
630  DATA 5399,17,0,5393,6424,5656,5397,5397,6166,6169,4373,0,0,4352,5395,6166,6425,6425,5656,4885
631  DATA 17,0,160,20,0,0,0,4881,5397,5397,4371,0,0,0,0,0,4881,6166,6425,6425
632  DATA 5656,4371,0,0,0,4881,6166,5656,5397,5397,6166,5656,4371,0,0,6419,5657,5397,4885,17
633  DATA 4881,6422,4889,0,4352,6422,5399,6935,6685,19,0,5649,5657,17,4864,5656,6677,7709,6685,19
634  DATA 0,4352,6166,19,5649,5400,7447,7198,4887,17,0,0,6163,4374,6163,5398,7707,5660,17,0
635  DATA 0,0,5649,4888,6421,5397,7196,4374,0,0,0,0,5376,5401,6421,4885,5656,17,0,0
636  DATA 0,0,5376,5401,6421,4373,4370,0,0,0,0,4625,5393,5401,6421,21,4352,4370,0,0
637  DATA 0,5907,5395,5401,6163,4374,4608,5398,17,0,4352,6166,5653,4888,5649,4888,4352,5909,4373,0
638  DATA 0,5656,6165,4374,4864,5656,17,5393,4630,4352,0,5376,6166,19,4352,6422,4374,4352,4370,4608
639  DATA 0,5910,5657,17,0,6419,5657,4371,0,4352,5909,6423,4889,0,0,4881,6166,5656,5397,5397
640  DATA 6166,5656,4371,0,0,0,4881,6166,6425,6425,5656,4371,0,0,0,0,0,4881,5397,5397
641  DATA 4371,0,0,0


642  MINEDATA:
643  DATA 1300
644  DATA 128,16,0,0,0,6400,0,0,0,0,0,0,0,17321,170,0,0,0,0,0
645  DATA 0,17177,25,0,0,0,0,0,5376,17180,-21988,0,0,0,0,0,-20566,17180,6684,169
646  DATA 0,0,0,-22016,7193,17219,7198,-21841,0,0,-22016,7193,17180,17731,17219,7196,-22247,0,17177,17219
647  DATA 17731,17731,17221,17219,17221,25,-22016,7193,17180,17731,17219,7196,-22503,0,0,-22528,7193,17182,7235,-22247
648  DATA 0,0,0,0,6569,17181,6428,168,0,0,0,0,-22528,17180,-21988,0,0,0,0,0
649  DATA 0,17177,25,0,0,0,0,0,0,17320,168,0,0,0,0,0,0,6400,0,0
650  DATA 0,0,0,0,0,0,0,0,0,0,128,16,0,0,0,0,0,0,0,0
651  DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6400
652  DATA 0,0,0,0,0,0,0,7337,169,0,0,0,0,0,-21760,17583,-21735,0,0,0
653  DATA 0,0,6570,17480,6472,169,0,0,0,6400,17436,18500,17476,6429,0,0,0,0,-20715,17480
654  DATA 6472,168,0,0,0,0,-21760,17433,-21735,0,0,0,0,0,0,7338,168,0,0,0
655  DATA 0,0,0,6400,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
656  DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
657  DATA 128,16,0,0,0,6400,0,0,0,0,0,0,0,24489,170,0,0,0,0,0
658  DATA 0,24345,25,0,0,0,0,0,5376,24348,-21988,0,0,0,0,0,-20566,24348,6684,169
659  DATA 0,0,0,-22016,7193,24415,7198,-21841,0,0,-22016,7193,24348,23391,24415,7196,-22247,0,24345,24415
660  DATA 23391,23391,24411,24415,24411,25,-22016,7193,24348,23391,24415,7196,-22503,0,0,-22528,7193,24350,7263,-22247
661  DATA 0,0,0,0,6569,24349,6428,168,0,0,0,0,-22528,24348,-21988,0,0,0,0,0
662  DATA 0,24345,25,0,0,0,0,0,0,24488,168,0,0,0,0,0,0,6400,0,0
663  DATA 0,0,0,0,0,0,0,0,0,0,128,16,0,0,0,0,0,0,0,0
664  DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6400
665  DATA 0,0,0,0,0,0,0,7337,169,0,0,0,0,0,-21760,24239,-21735,0,0,0
666  DATA 0,0,6570,24074,6410,169,0,0,0,6400,24092,2654,24158,6429,0,0,0,0,-20715,24074
667  DATA 6410,168,0,0,0,0,-21760,24089,-21735,0,0,0,0,0,0,7338,168,0,0,0
668  DATA 0,0,0,6400,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
669  DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
670  DATA 128,16,0,0,0,6400,0,0,0,0,0,0,0,20649,170,0,0,0,0,0
671  DATA 0,20505,25,0,0,0,0,0,5376,20508,-21988,0,0,0,0,0,-20566,20508,6684,169
672  DATA 0,0,0,-22016,7193,20560,7198,-21841,0,0,-22016,7193,20508,21328,20560,7196,-22247,0,20505,20560
673  DATA 21328,21328,20563,20560,20563,25,-22016,7193,20508,21328,20560,7196,-22445,0,0,-22528,7193,20510,7248,-22247
674  DATA 0,0,0,0,6569,20509,6428,168,0,0,0,0,-22528,20508,-21988,0,0,0,0,0
675  DATA 0,20505,25,0,0,0,0,0,0,20648,168,0,0,0,0,0,0,6400,0,0
676  DATA 0,0,0,0,0,0,0,0,0,0,128,16,0,0,0,0,0,0,0,0
677  DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6400
678  DATA 0,0,0,0,0,0,0,7337,169,0,0,0,0,0,-21760,20655,-21735,0,0,0
679  DATA 0,0,6570,20563,6483,169,0,0,0,6400,20508,21328,20560,6429,0,0,0,0,-20715,20563
680  DATA 6483,168,0,0,0,0,-21760,20505,-21735,0,0,0,0,0,0,7338,168,0,0,0
681  DATA 0,0,0,6400,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
682  DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
683  DATA 128,16,0,0,0,6400,0,0,0,0,0,0,0,22441,170,0,0,0,0,0
684  DATA 0,22297,25,0,0,0,0,0,5376,22300,-21988,0,0,0,0,0,-20566,22300,6684,169
685  DATA 0,0,0,-22016,7193,22359,7198,-21841,0,0,-22016,7193,22300,22615,22359,7196,-22247,0,22297,22359
686  DATA 22615,22615,22360,22359,22615,25,-22016,7193,22300,22615,22359,7196,-22441,0,0,-22528,7193,22302,7255,-22247
687  DATA 0,0,0,0,6569,22301,6428,168,0,0,0,0,-22528,22300,-21988,0,0,0,0,0
688  DATA 0,22297,25,0,0,0,0,0,0,22440,168,0,0,0,0,0,0,6400,0,0
689  DATA 0,0,0,0,0,0,0,0,0,0,128,16,0,0,0,0,0,0,0,0
690  DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6400
691  DATA 0,0,0,0,0,0,0,7337,169,0,0,0,0,0,-21760,22703,-21735,0,0,0
692  DATA 0,0,6570,22611,6483,169,0,0,0,6400,22556,21336,22616,6429,0,0,0,0,-20715,22611
693  DATA 6483,168,0,0,0,0,-21760,22553,-21735,0,0,0,0,0,0,7338,168,0,0,0
694  DATA 0,0,0,6400,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
695  DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
696  DATA 128,16,0,0,0,6400,0,0,0,0,0,0,0,7849,170,0,0,0,0,0
697  DATA 0,7961,25,0,0,0,0,0,5376,7964,-21988,0,0,0,0,0,-20566,7964,6684,169
698  DATA 0,0,0,-22016,7193,7967,7198,-21841,0,0,-22016,7193,7964,7711,7967,7196,-22247,0,7705,7967
699  DATA 7711,7967,7966,7967,7966,25,-22016,7193,7964,7711,7967,7196,-22503,0,0,-22528,7193,7966,7199,-22247
700  DATA 0,0,0,0,6569,7965,6428,168,0,0,0,0,-22528,7708,-21988,0,0,0,0,0
701  DATA 0,7961,25,0,0,0,0,0,0,8104,168,0,0,0,0,0,0,6400,0,0
702  DATA 0,0,0,0,0,0,0,0,0,0,128,16,0,0,0,0,0,0,0,0
703  DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6400
704  DATA 0,0,0,0,0,0,0,7337,169,0,0,0,0,0,-22784,8111,-22759,0,0,0
705  DATA 0,0,6570,7964,6428,169,0,0,0,6400,7964,7711,7711,6429,0,0,0,0,-20715,7964
706  DATA 6428,168,0,0,0,0,-22784,7961,-22759,0,0,0,0,0,0,7338,168,0,0,0
707  DATA 0,0,0,6400,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
708  DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

709  SPIKEDATA:
710  DATA 520
711  DATA 128,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0
712  DATA 21,0,0,5376,0,5376,21,0,24,0,0,6400,0,5376,5401,0,5404,0,0,7189
713  DATA 0,6420,5400,0,5404,0,0,7189,0,6421,5404,0,5404,30133,-18984,7444,0,7189,5404,0
714  DATA 5404,8122,6685,7189,0,7189,5404,0,5407,7962,-17729,7957,0,7444,5404,0,5151,-16523,-18915,7956
715  DATA 0,7189,5407,0,5407,6656,117,7957,0,7957,5407,21,6431,-10024,-18984,7960,5376,7957,7196,5141
716  DATA 6431,7610,6842,7961,5397,7196,6421,5404,7199,7957,5407,7964,7189,5401,0,6421,8117,7960,6429,-19169
717  DATA 5401,0,0,0,-18923,7964,7355,5557,0,0,128,16,0,0,0,0,0,0,0,0
718  DATA 0,0,0,0,0,0,0,0,5376,0,6144,21,0,0,21,21,5376,0,6400,21
719  DATA 0,0,21,21,6144,21,7168,21,0,5376,5145,21,6400,21,7424,24,0,5376,5400,21
720  DATA 6144,21,7168,29977,-10059,5120,5145,21,6400,21,7168,7960,6847,5376,5401,21,6144,21,7936,7961
721  DATA -17891,5376,5144,25,6400,21,7936,-16615,-18915,5120,5405,24,7168,21,7936,6680,216,5120,5407,25
722  DATA 7936,24,7936,-19175,-10123,6400,5407,28,7168,5145,7936,5400,6842,6325,6431,21,0,6428,6421,5407
723  DATA -17889,7957,5404,0,0,5120,7449,6428,6429,7193,21,0,0,0,5397,6429,-17734,5401,0,0
724  DATA 128,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21
725  DATA 0,6400,21,0,5376,0,0,21,0,7168,21,0,5376,0,0,5401,0,7168,21,0
726  DATA 6165,0,0,5400,0,7424,24,0,6420,0,0,5401,0,7349,-10215,0,6421,0,0,5400
727  DATA 0,7194,6681,0,6420,0,0,5401,0,8122,-17896,0,6165,0,0,5404,0,8117,-18919,0
728  DATA 7445,0,0,6172,0,7936,25,0,7193,0,0,6431,0,8117,-10216,0,7961,0,0,6428
729  DATA 29973,8122,6681,5557,7960,0,0,7168,5145,7199,-17895,6421,31,0,0,0,5401,7199,6676,7189
730  DATA 0,0,0,0,6400,6429,-17899,25,0,0,128,16,0,0,0,0,0,0,0,0
731  DATA 0,0,0,0,0,0,0,0,5376,5376,0,0,5376,25,0,21,5120,5376,0,0
732  DATA 5376,24,0,21,5376,6165,21,0,5120,29,5376,25,5376,6421,21,0,6400,28,5376,24
733  DATA 5120,6165,21,-10058,6581,28,5120,25,5376,6421,21,8122,6173,29,5376,25,6400,6420,20,8122
734  DATA 6429,31,5376,24,6144,7189,21,7541,6335,31,5376,25,6400,7957,21,-17920,6421,31,5376,28
735  DATA 7168,7957,24,-10123,6326,31,6144,29,5120,7961,-19175,7610,6421,31,6421,31,0,7189,5407,7967
736  DATA 7957,5144,7193,0,0,5376,6172,7967,7193,6426,21,0,0,0,6421,7965,-17896,5397,0,0

737  BUBEXP:
738  DATA 3084
739  DATA 256,32,0,0,0,0,0,0,0,4625,4626,17,0,0,0,0,0,0,0,0
740  DATA 0,0,0,0,4352,5138,5141,18,0,0,0,0,0,0,0,0,0,0,0,0
741  DATA 4352,5652,5384,18,0,0,0,0,0,0,0,0,0,0,0,0,4608,5909,5399,4370
742  DATA 0,0,0,0,0,0,0,0,0,0,0,0,4608,6166,5656,4370,0,0,0,0
743  DATA 0,0,0,0,0,0,0,0,4881,6152,2072,4371,0,0,0,0,0,0,0,0
744  DATA 0,0,0,0,4881,6152,2072,4371,0,0,0,0,0,0,0,0,0,0,0,0
745  DATA 4881,6408,2073,4371,0,0,0,0,0,0,0,0,0,0,0,0,4881,6423,5913,4371
746  DATA 0,0,0,0,0,0,0,0,0,0,0,0,5137,6680,6170,4372,0,0,0,0
747  DATA 0,0,0,0,0,0,0,4352,5650,1817,6407,4630,17,0,0,0,0,0,0,0
748  DATA 0,0,0,4369,5908,7451,6941,5143,4370,0,0,0,0,0,0,0,0,4352,4369,5139
749  DATA 6408,7708,7198,5914,4884,4369,4369,4369,17,0,0,4352,4625,4882,5395,5896,1817,3870,7695,6684
750  DATA 2072,4885,4627,4626,4626,4370,4625,4882,5396,2070,6167,6938,7708,3855,3855,7454,6407,5912,5640,5397
751  DATA 5140,4627,5138,5653,5896,6424,6681,7431,3870,3855,3855,7695,1821,6426,5912,2071,5398,4628,5138,5653
752  DATA 5911,6424,6681,7175,3870,3855,3855,7695,6940,6426,5912,5640,5141,4627,4882,5396,5397,2070,5911,6680
753  DATA 7708,3855,3855,7198,6170,2071,5397,4884,4626,4370,4625,4626,4626,4882,5139,2069,1817,3870,7695,6428
754  DATA 5399,4883,4626,4369,17,0,0,4352,4369,4369,4369,4882,6422,7708,7454,2073,4628,4369,0,0
755  DATA 0,0,0,0,0,0,0,4369,5908,7451,1821,5144,4369,0,0,0,0,0,0,0
756  DATA 0,0,0,4352,5650,7193,6684,4872,17,0,0,0,0,0,0,0,0,0,0,0
757  DATA 5137,6936,6407,4629,0,0,0,0,0,0,0,0,0,0,0,0,4881,6679,5914,4372
758  DATA 0,0,0,0,0,0,0,0,0,0,0,0,4881,6408,2073,4371,0,0,0,0
759  DATA 0,0,0,0,0,0,0,0,4881,6152,2072,4371,0,0,0,0,0,0,0,0
760  DATA 0,0,0,0,4881,6166,5656,4370,0,0,0,0,0,0,0,0,0,0,0,0
761  DATA 4625,5910,5399,18,0,0,0,0,0,0,0,0,0,0,0,0,4625,5909,5128,18
762  DATA 0,0,0,0,0,0,0,0,0,0,0,0,4608,5653,4885,17,0,0,0,0
763  DATA 0,0,0,0,0,0,0,0,4608,5396,4628,17,0,0,0,0,0,0,0,0
764  DATA 0,0,0,0,4352,4626,4370,0,0,0,0,0,0,0,256,32,0,0,0,0
765  DATA 0,0,4352,4369,4369,17,0,0,0,0,0,0,0,0,0,0,4352,4625,4882,5139
766  DATA 4884,4627,4370,17,0,0,0,0,0,0,0,0,4625,5139,5653,5911,5911,5398,4884,4370
767  DATA 0,0,0,0,0,0,0,4625,5395,5896,6424,6682,6682,6169,2071,4885,4370,0,0,0
768  DATA 0,0,4352,5138,6152,6937,7175,7453,7453,1820,6427,2072,4628,17,0,0,0,0,4881,5909
769  DATA 6937,7452,7710,7710,7710,7710,7197,6427,5399,4371,0,0,0,4352,5394,6423,7431,7710,3855,3855
770  DATA 3855,3855,7710,1821,5913,4629,17,0,0,4608,5908,7193,7709,3855,3855,3855,3855,3855,3855,7454
771  DATA 6428,5143,18,0,0,4881,6408,7431,3855,3855,3855,3855,3855,3855,3855,3855,1821,2073,4371,0
772  DATA 4352,5394,6936,7709,3855,3855,3855,3855,3855,3855,3855,3855,7454,6171,4629,17,4352,2067,7193,3870
773  DATA 3855,3855,3855,3855,3855,3855,3855,3855,7695,6428,4872,17,4608,5908,7451,3870,3855,3855,3855,3855
774  DATA 3855,3855,3855,3855,7695,6941,5143,18,4608,6165,7687,3855,3855,3855,3855,3855,3855,3855,3855,3855
775  DATA 3855,7198,5657,18,4881,6422,7708,3855,3855,3855,3855,3855,3855,3855,3855,3855,3855,7454,2074,4371
776  DATA 4881,6679,7709,3855,3855,3855,3855,3855,3855,3855,3855,3855,3855,7454,5914,4371,5137,6679,7709,3855
777  DATA 3855,3855,3855,3855,3855,3855,3855,3855,3855,7439,5915,4372,5137,6935,3869,3855,3855,3855,3855,3855
778  DATA 3855,3855,3855,3855,3855,7439,5915,4372,4881,6679,7709,3855,3855,3855,3855,3855,3855,3855,3855,3855
779  DATA 3855,7454,5914,4371,4881,6664,7709,3855,3855,3855,3855,3855,3855,3855,3855,3855,3855,7454,2074,4371
780  DATA 4608,6422,7708,3855,3855,3855,3855,3855,3855,3855,3855,3855,3855,7198,5657,18,4608,5908,7451,3870
781  DATA 3855,3855,3855,3855,3855,3855,3855,3855,7695,6941,5143,18,4352,2067,7193,3870,3855,3855,3855,3855
782  DATA 3855,3855,3855,3855,7695,6428,4872,17,4352,5394,6936,7709,3855,3855,3855,3855,3855,3855,3855,3855
783  DATA 7454,6171,4629,17,0,4881,6408,7431,3855,3855,3855,3855,3855,3855,3855,3855,1821,2073,4371,0
784  DATA 0,4608,5908,7193,7709,3855,3855,3855,3855,3855,3855,7454,6428,5143,18,0,0,4352,5394,6423
785  DATA 7431,7710,3855,3855,3855,3855,7710,1821,5913,4629,17,0,0,0,4881,5909,6937,7452,7710,3870
786  DATA 7695,7710,7197,6427,5399,4371,0,0,0,0,4352,5138,6152,6937,7452,7453,7453,7197,6427,2072
787  DATA 4628,17,0,0,0,0,0,4625,5395,5896,6681,6938,6683,6426,2071,4885,4370,0,0,0
788  DATA 0,0,0,0,4625,5139,2070,5911,5911,5640,4884,4370,0,0,0,0,0,0,0,0
789  DATA 4352,4625,4882,5139,4884,4627,4370,17,0,0,0,0,0,0,0,0,0,0,4352,4369
790  DATA 4369,17,0,0,0,0,0,0,256,32,0,0,0,0,0,0,0,0,0,0
791  DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
792  DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
793  DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4369
794  DATA 4369,4626,4626,4369,4369,0,0,0,0,0,0,0,0,0,4352,4625,5139,5396,5397,4884
795  DATA 4370,17,0,0,0,0,0,0,0,0,4625,5139,5910,6167,6168,5655,4884,4370,0,0
796  DATA 0,0,0,0,0,4352,5139,5910,6681,1799,1799,6426,5655,4884,17,0,0,0,0,0
797  DATA 0,4625,2068,6680,7431,7709,7454,1821,6170,5128,4370,0,0,0,0,0,4352,5138,6152,7451
798  DATA 7710,3855,3855,7710,6941,2072,4628,17,0,0,0,0,4369,5395,6936,7709,3855,3855,3855,3855
799  DATA 7454,6171,4885,4369,0,0,0,0,4625,5908,7450,3870,3855,3855,3855,3855,7695,6685,5143,4370
800  DATA 0,0,0,0,4881,6422,7687,3855,3855,3855,3855,3855,3855,1822,5657,4371,0,0,0,0
801  DATA 5137,6679,7709,3855,3855,3855,3855,3855,3855,7454,5914,4372,0,0,0,0,5137,6935,3869,3855
802  DATA 3855,3855,3855,3855,3855,7439,5915,4372,0,0,0,0,5138,1816,3870,3855,3855,3855,3855,3855
803  DATA 3855,7695,6151,4628,0,0,0,0,5138,1816,3870,3855,3855,3855,3855,3855,3855,7695,6151,4628
804  DATA 0,0,0,0,5137,6935,3869,3855,3855,3855,3855,3855,3855,7439,5915,4372,0,0,0,0
805  DATA 4881,6679,7709,3855,3855,3855,3855,3855,3855,7454,5914,4372,0,0,0,0,4881,6166,7687,3855
806  DATA 3855,3855,3855,3855,3855,1822,5656,4371,0,0,0,0,4625,5908,7450,3870,3855,3855,3855,3855
807  DATA 7695,6685,5143,4370,0,0,0,0,4369,5651,1816,7709,3855,3855,3855,3855,7454,6151,4886,4369
808  DATA 0,0,0,0,4352,5138,6408,7431,7710,3855,3855,7710,1821,2073,4628,17,0,0,0,0
809  DATA 0,4881,2068,6680,7452,7709,7710,7197,6427,5399,4371,0,0,0,0,0,0,4352,5139,5910
810  DATA 6681,1819,1799,6426,5912,4885,17,0,0,0,0,0,0,0,4625,5395,5896,6167,6168,2071
811  DATA 5141,4371,0,0,0,0,0,0,0,0,4352,4625,5139,5140,5140,4884,4627,17,0,0
812  DATA 0,0,0,0,0,0,0,4369,4369,4626,4626,4369,4369,0,0,0,0,0,0,0
813  DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
814  DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
815  DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
816  DATA 0,0,256,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
817  DATA 0,0,0,0,4352,4369,4369,4369,4369,4369,4369,17,0,0,0,0,0,0,0,0
818  DATA 4625,4626,4883,-4077,5104,4626,4626,4369,17,0,0,0,0,0,0,4352,4882,5140,-4884,-28692
819  DATA 5519,4884,4883,4626,4369,0,0,0,0,0,0,4625,5139,5653,-29042,-29042,5774,5397,5140,4883
820  DATA 4626,17,0,0,0,0,4352,4882,5396,-29298,-29556,-29299,2189,5640,5397,5140,4883,4370,0,0
821  DATA 0,0,4625,5139,2069,-29555,-29556,-29556,-23901,2071,5640,5397,4884,4370,17,0,0,4352,4882,5613
822  DATA -23032,-29531,-29556,-29556,-23901,5911,-22874,5640,5141,4627,4369,0,0,4625,-4845,-29041,-23130,-23388,-23388,-23388
823  DATA -23645,5911,-23131,6053,5384,4884,4370,0,4352,4882,-28691,-29298,-23387,6168,6168,6168,6168,6168,-23388,-23644
824  DATA 5655,5141,4371,17,4352,4882,-29163,-29556,-23412,6168,6424,6681,6682,6169,-23528,-29556,-22619,5141,4627,17
825  DATA 4352,5138,-29419,-29556,-23412,6424,6681,1799,1820,6427,-23528,-29556,-29300,5142,4627,17,4352,5138,-29163,-29556
826  DATA -23412,6424,7195,7453,7453,6684,-23527,-29556,-29300,5384,4627,17,4352,5138,-29163,-29555,-23412,6681,7452,7710
827  DATA 7710,1821,6170,-29532,-29300,5518,4628,17,4352,5138,2069,-29555,-23412,6937,7709,3855,3855,7198,6426,-29532
828  DATA -29556,5517,4628,17,4352,5138,-29163,-29555,-23412,6937,7709,3855,3855,7454,6427,-29532,-29556,5771,4884,17
829  DATA 4352,5138,-29163,-29555,-23412,6681,7708,3855,3855,7454,6427,-29532,-29556,2187,4885,17,4352,5138,2069,-29531
830  DATA -23412,6681,7431,7710,7710,7197,6426,-29532,-29556,2189,4885,17,4352,4882,5653,-29530,-23412,6424,1818,7452
831  DATA 7453,1820,6170,-29532,-29556,2189,4885,17,4352,4882,5396,-29432,-29556,6564,6682,6938,1799,6683,-23527,-29556
832  DATA -29813,5640,4885,17,4352,4882,5396,-29432,-29556,-23412,6425,6425,6425,6425,-23528,-29556,-24181,5398,4628,17
833  DATA 4352,4625,5396,-29418,-29556,-29556,-23388,-23388,-23388,-23388,-23388,-29556,2187,5141,4627,17,0,4625,5139,-29163
834  DATA -29555,-29556,-29556,-29556,-29556,-29556,-29556,-29556,5515,4884,4370,0,0,4369,4882,5396,-29944,-29556,-29556,-29556
835  DATA -29556,-29556,-29556,-29812,5142,4627,17,0,0,4352,4625,5139,-30187,-29813,-29557,-29556,-29556,-29556,-29299,2189
836  DATA 4885,4370,0,0,0,0,4369,4882,5396,2070,-29944,-29301,-23155,-22875,5640,5141,4627,17,0,0
837  DATA 0,0,4352,4625,5139,5396,5653,2056,5896,2071,5397,4884,4370,0,0,0,0,0,0,4369
838  DATA 4882,4883,5140,5397,5653,5398,4884,4627,17,0,0,0,0,0,0,4352,4625,4626,4882,4883
839  DATA 5139,4884,4626,4370,0,0,0,0,0,0,0,0,4369,4369,4369,4369,4369,4369,4369,17
840  DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
841  DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,256,32,0,0
842  DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
843  DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4369,4369,4369,4369
844  DATA 17,0,0,0,0,0,0,0,0,0,0,4352,4625,4626,4626,4626,4369,0,0,0
845  DATA 0,0,0,0,0,0,4369,4369,4882,-3821,-3342,5105,4370,4369,0,0,0,0,0,0
846  DATA 0,4369,4625,4626,5139,-3308,-2828,5363,4627,4370,4369,17,0,0,0,0,4352,4625,4882,4883
847  DATA 5140,5397,5397,5141,4884,4883,4626,4370,0,0,0,0,4369,4882,5139,5140,5397,5397,5397,5397
848  DATA 5140,-3564,-9510,4825,17,0,0,4352,4626,5139,5396,5397,5397,5397,5397,5397,5397,5397,-9229,-9766
849  DATA 4370,0,0,4352,4882,5396,5397,5654,5654,2056,5640,5654,5654,5398,-3051,-9509,4370,0,0,4352
850  DATA 4882,5396,5654,2070,-22873,-22874,5911,2056,2056,5640,-3051,-9509,4370,0,0,4352,4882,5396,2070,-23032
851  DATA -29299,-23131,6053,5911,2056,5640,-3051,-9765,4370,0,0,4369,4882,5396,2070,-23273,-29556,-29556,-23412,-23643
852  DATA 2071,5640,5397,5107,4370,0,4352,4625,5139,5396,2070,-29534,-29556,-29556,-29556,-23132,2214,5640,5397,5109
853  DATA 4370,0,4352,4882,5140,5396,2070,-29534,-29556,-29556,-29556,-23412,2214,5640,5397,-2059,4370,17,4352,4882
854  DATA 5140,5396,2070,-29534,-29556,-29556,-29556,-23412,2214,5640,5397,-7691,4627,17,4352,5139,-3308,5620,2070,-23390
855  DATA -29556,-29556,-29556,-23412,2214,5654,-3051,-7660,4832,17,4352,5139,-2829,5397,2070,-23529,-29532,-29556,-29556,-23156
856  DATA 2214,5640,5397,-2315,4832,17,4352,4882,-2829,5397,2070,-23529,-23388,-29556,-29556,-22875,2056,5640,5397,-2572
857  DATA 4855,17,4352,4882,-2830,5397,2070,-23389,-23388,-29532,-23156,2214,2056,5640,5397,-3084,4627,17,4352,4625
858  DATA -3086,5397,2070,-23130,-23388,-23644,6051,2056,2056,5640,5397,-3340,4627,17,0,4625,5139,5396,5653,-23032
859  DATA -23387,6051,2071,2056,2056,5398,-3051,4884,4370,0,0,4369,4882,5140,5397,2070,-22874,5911,2056,5654
860  DATA 5654,5397,5364,4627,17,0,0,4352,4625,5139,5397,5653,2056,2056,5654,5397,5397,-3051,4884,4370
861  DATA 0,0,0,0,4625,5139,5397,5397,5397,5397,5397,5141,5140,5140,4627,17,0,0,0,0
862  DATA 4625,5139,5140,-3052,5397,5397,5397,5140,4883,4883,4370,0,0,0,0,0,4352,4882,4883,5139
863  DATA -3085,-2828,-2572,5110,4626,4626,17,0,0,0,0,0,0,4625,4626,4882,-3821,5362,-2058,4831
864  DATA 4369,4369,0,0,0,0,0,0,0,4352,4369,4625,4626,4882,4627,4370,17,0,0,0
865  DATA 0,0,0,0,0,0,0,4352,4369,4369,4369,4369,0,0,0,0,0,0,0,0
866  DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
867  DATA 0,0,0,0,0,0,0,0,0,0,256,32,0,0,0,0,0,0,0,0
868  DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
869  DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
870  DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
871  DATA 0,0,4352,4369,4369,4369,17,0,0,0,0,0,0,0,0,0,0,0,4625,-9966
872  DATA -15421,4627,4369,0,0,0,0,0,0,0,0,0,0,4352,4625,-9511,-15164,5083,4370,4369
873  DATA 4369,0,0,0,0,0,0,0,4369,4369,4626,-9255,-15164,-3621,4627,4626,4370,17,0,0
874  DATA 0,0,0,4352,4626,4626,4626,-9254,-9253,-3342,4883,4883,4627,4370,0,0,0,0,0,4625
875  DATA -9768,5079,4882,5139,5140,5140,4883,-9709,-9509,4825,17,0,0,0,0,4625,-3879,5104,4883,-6381
876  DATA -5398,5140,5140,-15142,-15164,5082,4370,0,0,0,0,4625,4883,4883,4883,-6381,-5398,5140,5140,-15141
877  DATA -15164,5083,4370,0,0,0,4352,4625,4882,4883,4883,-6425,5350,5140,-3052,-15140,-15164,5083,4370,0
878  DATA 0,0,4369,4625,4882,4883,5139,5140,5140,-2828,-2828,-9252,-9253,4826,4369,0,0,4352,4626,4626
879  DATA 4882,5139,5140,5140,-3052,-2828,-2828,-3341,-3598,4627,17,0,0,4369,4626,4626,4883,5140,5397,5397
880  DATA 5397,-3051,-2828,-3342,5103,4627,17,0,0,4625,4883,4626,-3565,-2829,5397,5397,5397,-3051,-2828,-3342
881  DATA 4883,4627,17,0,0,4625,4627,4626,-9453,-8996,5620,5397,5397,5397,-2828,-3341,4883,4627,17,0
882  DATA 0,4625,4626,4626,-9453,-15164,5596,5397,5397,-3051,-8996,5085,4883,4627,17,0,0,4369,4626,4626
883  DATA -9709,-15164,-2852,-2828,5397,-9195,-15164,5083,4883,4627,17,0,0,4352,4369,4626,4882,-9253,-2852,5140
884  DATA 5140,-8973,-15164,5082,4883,4626,17,0,0,0,4352,4625,4882,-9453,5363,5140,4884,-9230,-15421,5081
885  DATA 4626,4370,17,0,0,0,0,4625,4626,4883,5140,4884,4883,4883,-9767,4626,4626,4370,0,0
886  DATA 0,0,0,4625,4626,4882,4883,4883,4883,4627,4626,4626,4626,4370,0,0,0,0,0,4625
887  DATA 4626,4626,4883,5105,4883,4626,4626,4882,4627,4370,0,0,0,0,0,4369,4626,4626,4882,-3599
888  DATA 4883,4626,4626,4882,4883,4370,0,0,0,0,0,4352,4369,4369,4625,4883,4883,4626,4625,4626
889  DATA 4626,4370,0,0,0,0,0,0,0,0,4369,4626,4626,4369,4369,4369,4369,17,0,0
890  DATA 0,0,0,0,0,0,4352,4369,4369,17,0,0,0,0,0,0,0,0,0,0
891  DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
892  DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
893  DATA 0,0,0,0
You've used Do...LOOP lots of times...
Well, I can't edit it but do loops are easily emulated with labels and if then else.