' This program exported from BASIC Anywhere Machine (Version [5.2.3].[2023.08.29.21.34]) on 2023.09.26 at 23:38 (Coordinated Universal Time)

' From Jason Doucette (https://www.youtube.com/watch?v=aAtu3xc_Jro)
' Cat animation programmed in GW-BASIC, running from PC-BASIC emulator of Tandy GW-BASIC. The source of the animation data comes from an old 1984 book called "Create Your Own - Games Computers Play" by Keith S. Reid-Green, on pages 57 - 58. It is also on the book's cover!. It is running in 320x200 4 or 16 color mode.

' "Solo88" transcribed the source code from Jason Doucette's video, and that code was ported to BAM by Charlie Veniot

' *** Changes made for the BAM port ***
' 🟠 Line 10 and 890 edited : BAM's PALETTE is not compatible with GW-BASIC (BAM requires a "bgr" colour)
' 🟠 The array sizes increased because BAM's GET grabs and stores rgb colours which take more space
' 🟠 The G array was not declared and BAM requires arrays to be declared
' 🟠 Identifiers must be unique in BAM; "context" is not enough to distinguish arrays from variables, so the C variable (conflicting with array C) was renamed to Cp
' 🟠 Screen size adjusted for panoramic view
' 🟠 BAM being too fast, a "_delay" is applied
' 🟠 Made the cat yellow (better contrast for aging eyeballs)

DIM G(7) ' 🟠 G array declaraction added
10 SCREEN _newimage(320, 20, 1) :CLS:DIM as INTEGER A(100),B(100),C(100),D(100),E(100),F(100):FOR I=1 TO 6:READ G(I):NEXT I  ' 🟠 Array sizes increased; alternative screen dimensions applied
20 PALETTE 3,_bgr(0,0,1) : FOR I=1 TO 6:FOR J=1 TO 13:READ A$ : FOR K=10 TO 41:IF MID$(A$,K-9,1)="1"THEN PSET(K,J),3 ELSE PSET(K,J),0 ' 🟠 2nd Palette parameter
30 NEXT K:NEXT J:ON I GOSUB 40,50,60,70,80,90: NEXT I: GOTO 890
40 GET(1,1)-(41,13),A: RETURN
50 GET(1,1)-(41,13),B: RETURN
60 GET(1,1)-(41,13),C: RETURN
70 GET(1,1)-(41,13),D: RETURN
80 GET(1,1)-(41,13),E: RETURN
90 GET(1,1)-(41,13),F: RETURN
100 DATA 8,5,9,6,5,7
110 DATA 00000000000000000000000000000000
120 DATA 00000000000000000000000000000000
130 DATA 00000000000000000000001111111010
140 DATA 00000000000111111111110000000110
150 DATA 00000000111000000000000000000001
160 DATA 00000001000000000000000100111001
170 DATA 00000110000000000000000100100110
180 DATA 01111100000000111111111110110000
190 DATA 10001000011111000000000001111100
200 DATA 00001111100000000000000000001010
210 DATA 00011000000000000000000000000101
220 DATA 00101000000000000000000000000000
230 DATA 00001100000000000000000000000000 
240 DATA 00000000000000000000000000000000
250 DATA 00000000000000000000000000000000
260 DATA 00000000000000000000000000000000
270 DATA 00000000001111111000011111000100
280 DATA 00000000110000000111100000111100
290 DATA 00000001000000000000000000000010
300 DATA 00000110000000000000000101110001
310 DATA 11111010000001111111111111001110
320 DATA 00000110001110000000001101110000
330 DATA 00011101110000000000000100011100
340 DATA 00001000000000000000000100000011
350 DATA 00110000000000000000000110000000
360 DATA 00000000000000000000000011000000 
370 DATA 00000000000000000000000000000000
380 DATA 00000000000001111100000000000000
390 DATA 00000000000110000011000000001000
400 DATA 00000000011000000000111110111100
410 DATA 00000000110000000000000001000010
420 DATA 00000001001000001000000000010001
430 DATA 00000010001000010110000000101110
440 DATA 01111100010000100001111101000000
450 DATA 00000000010111000000010101000000
460 DATA 00000000001000000001100011100000
470 DATA 00000000000100000001000000110000
480 DATA 00000000001000000001000000001000
490 DATA 00000000000000000000100000000100
500 DATA 00000000000000000000000000000000
510 DATA 00000000000000111100000000000000
520 DATA 00000000000010000011000000000000
530 DATA 00000011111100000000110000001000
540 DATA 00000100000100000000001000011000
550 DATA 00011000000100100000000111100100
560 DATA 11100000000010010001000000000010
570 DATA 00000000000001011010000000111100
580 DATA 00000000000000110110111111000000
590 DATA 00000000000000110101100000000000
600 DATA 00000000000000011101100000000000
610 DATA 00000000000000001000100000000000
620 DATA 00000000000000000000110000000000
630 DATA 00000000000000000000000000000000
640 DATA 00000000000000000000000000000000
650 DATA 00111111000011111000000000000000
660 DATA 01000000111100000110000000100000
670 DATA 01000000000100000001100011100000
680 DATA 00000000001000000000011100010000
690 DATA 00000000001000000000000000001000
700 DATA 00000000001000000010000011110000
710 DATA 00000000000101111111101100000000
720 DATA 00000000000110000001010000000000
730 DATA 00000000000101000010100000000000
740 DATA 00000000001101000100000000000000
750 DATA 00000000000110110000000000000000
760 DATA 01110000000000000000000000000000
770 DATA 00001111000000000000000000000000
780 DATA 00000000111000111100000000000100
790 DATA 00000000000111000011000000011110
800 DATA 00000000001000000000111011100001
810 DATA 00000000010000000000000100000001
820 DATA 00000000010000000000000000011110
830 DATA 00000000010000111000000000100000
840 DATA 00000000100001000111111111010000
850 DATA 00000001001110000000000001110000
860 DATA 00000001010000000000000000000000
870 DATA 00000000101000000000000000000000
880 DATA 00000000011110000000000000000000
' 🟠 All references to the "C" variable changed to "Cp"
890 CLS: PALETTE 3,_BGR(0,255,255) : LINE(0,13)-(319,13),2:Cp=0:I=0 ' 🟠 2nd Palette parameter
900 Cp=Cp+G(I):IF Cp>278 THEN 890
910 I=I+1:IF I=7 THEN I=1
920 ON I GOSUB 930,940,950,960,970,980: _delay 0.125 : FOR J=1 TO 65*40:NEXT J:GOTO 900 ' 🟠 _delay added
930 PUT(Cp,0),A,PSET: RETURN
940 PUT(Cp,0),B,PSET: RETURN
950 PUT(Cp,0),C,PSET: RETURN
960 PUT(Cp,0),D,PSET: RETURN
970 PUT(Cp,0),E,PSET: RETURN
980 PUT(Cp,0),F,PSET: RETURN