Jump to content

Happy Thanksgiving - Retro Style


Recommended Posts

We did our family Thanksgiving today (Wednesday) becasue I always have to work on the day itself, one of the joys of my line of work. 🤪

After dinner, I got bored, started playing around with Classic99, my preferred TI-99/4A emulator, and ran across something fun that really took me back...tapping in BASIC programs you found in magazines!

So, have a "Happy Thanksgiving" with this BASIC turkey!

 

ti99-thanksgiving-strider.gif.490e7e479b4aa3988908c6c95d6c5cd4.gif

 

Source: https://archive.org/details/family-computing-03/page/n107/mode/2up

There are versions for Apple, Atari, C64 & VIC 20, TRS-80 CoCo, and more!

  • Like 5
Link to comment
Share on other sites

  • Super Administrators
On 11/28/2022 at 3:36 PM, kelli217 said:

I never thought I'd say this, but it looks like the IBM PC version would be the easiest to port to the X16.

You might be right... however, it looks like there are two different versions of the turkey. One uses ASCII characters, and the other seems to use 1/4 character blocks.

If I was porting this, I'd probably build both versions, since the Commander can easily handle both of them - and look good doing it. 

 

 

  • Like 2
Link to comment
Share on other sites

  • Super Administrators
On 11/28/2022 at 6:16 PM, TomXP411 said:

You might be right... however, it looks like there are two different versions of the turkey. One uses ASCII characters, and the other seems to use 1/4 character blocks.

If I was porting this, I'd probably build both versions, since the Commander can easily handle both of them - and look good doing it. 

Just for fun, here's a port of the IBM PC version - with bugs fixed. 
The version printed has a bug in the DATA statements. In line 1080, the 22 needs to be changed to 18. 

I made some other changes, too:

The end condition was... weird. It ends when the X position is 45. If you're going to use a magic number to end a data statement, make sure it's a clear terminator, not something that's a valid data item. So I changed the program to look for -1 in the Y position. Since the last part of the program looks for triplets, you actually need to enter -1,-1,-1 to end the DATA set. 

I also added an end loop that terminates when the user presses a key (lines 200-230). I like that better than an infinite loop that requires the STOP key.

It's worth noting that this version looks... pretty sad with no color. I'm going to do a second version with some added color, then I'll do a third version with PETSCII block art and color.

 

10 SCREEN 1
20 COLOR 1,0
30 READ N,C
40 IF N=999 THEN 130
50 FOR I=1 TO N
60 READ Y,B,E
70 FOR X=B TO E
80 LOCATE Y,X
90 PRINT CHR$(C)
100 REM PRINT"\X13";STR$(N);",";STR$(I);"\XA0   "
110 NEXT X,I
120 GOTO 30
130 READ Y,X,C
140 IF Y=-1 THEN 200
150 LOCATE Y,X
160 PRINT CHR$(C);
170 GOTO 130
200 LOCATE 27,31
210 PRINT "HAPPY THANKSGIVING!"
230 GET A$:IF A$="" THEN 200
1000 DATA 19,40,1,33,38,1,42,47,2,30,50,3,29
1010 DATA 51,4,28,52,5,25,55,6,24,56,7,23,57
1020 DATA 8,21,59,9,20,60,10,19,61,11,18,62
1030 DATA 12,18,62,13,17,63,14,16,64,15,16,64
1040 DATA 16,17,63,17,18,62,18,21,59,14,117,3
1050 DATA 35,45,4,34,46,5,32,48,6,32,48,7,29
1060 DATA 51,8,28,52,9,26,54,10,25,55,11,24
1070 DATA 56,12,23,57,13,23,57,14,23,57,15,23
1080 DATA 57,16,24,56,18,73,4,38,42,5,37,43,6
1090 DATA 37,43,7,37,43,8,36,44,9,34,46,10,32
1100 DATA 48,11,31,49,12,30,50,13,28,52,14,27
1120 DATA 55,19,25,29,19,32,48,19,51,55,20,25
1130 DATA 28,20,33,47,20,52,55,21,34,46,999
1140 DATA 999,5,39,111,5,40,0,5,41,111,6,40
1150 DATA 94,7,40,94,8,40,94,9,40,94,22,36,88
1160 DATA 22,44,88,23,36,88,23,44,88,24,35,88
1170 DATA 24,37,88,24,43,88,24,45,88
1180 DATA -1,-1,-1

 

 

  • Like 2
Link to comment
Share on other sites

  • Super Administrators

And here it is in color... I've also corrected the bottom of the turkey, where the body seems to skip a few lines... 

10 SCREEN 1
20 COLOR 1,0: CLS
30 READ N
40 IF N=-1 THEN 140 : REM SWITCH TO PLOTTING INDIVIDUAL BITS
50 READ CL,C
55 REM PRINT"\X13N=";STR$(N);",CL="STR$(CL);", C=";STR$(C);"     "
60 FOR I=1 TO N
70 READ Y,B,E
75 REM PRINT"\X13\X11Y=";STR$(Y);",B="STR$(B);", C=";STR$(E);"     "
80 FOR X=B TO E
90 LOCATE Y,X
100 COLOR CL:PRINT CHR$(C);
120 NEXT X,I
130 GOTO 30
140 READ Y: IF Y=-1 THEN 200
150 READ X,CL,C 
165 REM PRINT"\X13Y=";STR$(Y);",X=";STR$(X);",CL="STR$(CL);",C=";STR$(C);"\XA0   "
170 LOCATE Y,X
180 COLOR CL:PRINT CHR$(C);
190 GOTO 140
200 LOCATE 23,31
210 COLOR 3
220 PRINT "HAPPY THANKSGIVING!"
230 GET A$:IF A$="" THEN 200
240 COLOR 1,6
250 SCREEN 0 
1000 DATA 19,8,40
1010 DATA 1,33,38,  1,42,47,  2,30,50,  3,29,51,  4,28,52,  5,25,55, 6,24,56
1020 DATA 7,23,57,  8,21,59,  9,20,60,  10,19,61, 11,18,62, 12,18,62, 13,17,63
1030 DATA 14,16,64, 15,16,64, 16,17,63, 17,18,62, 18,21,59
1100 DATA 14,9,117
1120 DATA 3,35,45,  4,34,46,  5,32,48,  6,32,48,  7,29,51,  8,28,52,  9,26,54
1130 DATA 10,25,55, 11,24,56, 12,23,57, 13,23,57, 14,23,57, 15,23,57, 16,24,56 
1200 DATA 18,7,73
1210 DATA 4,38,42,  5,37,43,  6,37,43,  7,37,43,  8,36,44,  9,34,46, 10,32,48
1220 DATA 11,31,49, 12,30,50, 13,28,52, 14,27,55
1230 DATA 15,25,29, 15,32,48, 15,51,55, 16,25,28, 16,33,47, 16,52,55
1240 DATA 17,34,46
1300 DATA -1
1310 DATA 5,39,1,215,  5,40,1,0, 5,41,1,215
1320 DATA 7,40,2,194, 8,40,2,194, 9,40,2,194
1330 DATA 18,36,11,88, 18,44,11,88 
1340 DATA 19,36,11,88, 19,44,11,88 
1350 DATA 20,36,11,88, 20,44,11,88 
1360 DATA 21,35,11,88, 21,37,11,88, 21,43,11,88, 21,45,11,88
1400 DATA -1,-1

 

  • Like 2
Link to comment
Share on other sites

  • Super Administrators

Finally, a PETSCII block version based on the PC version. This version uses the block characters (shift D,F,C,V) and changes the background color as needed to layer the different colors of the bird...


 

10 SCREEN 1
20 COLOR 1,0: CLS
30 READ N
40 IF N=-1 THEN 300 : REM SWITCH TO PLOTTING INDIVIDUAL BITS
50 READ CF,CB,S 
55 REM PRINT "\X13N=";STR$(N);",CF="STR$(CF);",CB="STR$(CB);
56 REM PRINT ", S=";STR$(S);"     "
60 COLOR CF,CB 
70 FOR I=1 TO N
80 READ Y,B,E : LOCATE Y,B 
90 IF S=1 THEN PRINT "\XAC";:B=B+1:E=E-1
100 IF S=2 THEN PRINT "\XBC";:B=B+1:E=E-1
110 REM PRINT"\X13\X11Y=";STR$(Y);",B="STR$(B);", E=";STR$(E);"     "
120 FOR X=B TO E
130 LOCATE Y,X
140 PRINT "\X12 \X92";
150 NEXT X
160 IF S=1 THEN PRINT "\XBB";
170 IF S=2 THEN PRINT "\XBE";
180 NEXT I
185 REM GET A$:IF A$="" THEN 185
190 GOTO 30
300 READ Y: IF Y=-1 THEN 900
310 READ X,CF,CB,C 
320 REM PRINT"\X13Y=";STR$(Y);",X=";STR$(X);",CF="STR$(CF);",CB=";STR$(CB);"  "
330 LOCATE Y,X
340 COLOR CF,CB:PRINT CHR$(C);
350 GOTO 300
900 LOCATE 23,30
910 COLOR 3,0
920 PRINT " HAPPY THANKSGIVING! "
930 GET A$:IF A$="" THEN 930
940 COLOR 1,0
1000 DATA 14,8,0,1 : REM COUNT, FG, BG, STYLE (0=VERTICAL, 1=OUT, 2=IN)
1010 DATA 1,33,38,  1,42,47,  2,30,50,  3,29,51,  4,28,52,  5,25,55, 6,24,56
1020 DATA 7,23,57,  8,21,59,  9,20,60,  10,19,61, 11,18,62, 12,18,62, 13,17,63
1030 DATA 5,8,0,2
1040 DATA 14,16,64, 15,16,64, 16,17,63, 17,18,62, 18,21,59
1100 DATA 14,9,8,1
1120 DATA 3,35,45,  4,34,46,  5,32,48,  6,32,48,  7,29,51,  8,28,52,  9,26,54
1130 DATA 10,25,55, 11,24,56, 12,23,57, 13,23,57, 14,23,57, 15,23,57, 16,24,56 
1200 DATA 11,7,9,1
1210 DATA 4,38,42,  5,37,43,  6,37,43,  7,37,43,  8,36,44,  9,34,46, 10,32,48
1220 DATA 11,31,49, 12,29,50, 13,28,52, 14,26,54
1230 DATA 4,7,9,2
1240 DATA 15,25,29, 15,51,55, 16,25,28, 16,52,55
1250 DATA 1,7,9,0, 15,31,49
1260 DATA 1,7,9,2, 16,31,49
1270 DATA 1,7,8,2, 17,32,48
1300 DATA -1
1310 DATA 5,39,1,7,215,  5,40,1,7,0, 5,41,1,7,215
1320 DATA 6,40,11,7,218
1330 DATA 7,40,2,7,194, 8,40,2,7,194, 9,40,2,7,194
1340 DATA 18,36,11,8,194, 18,44,11,8,194
1350 DATA 19,36,11,0,194, 19,44,11,0,194 
1360 DATA 20,36,11,0,194, 20,44,11,0,194 
1370 DATA 21,36,11,0,194, 21,44,11,0,194 
1380 DATA 21,35,11,0,206, 21,37,11,0,205, 21,43,11,0,206, 21,45,11,0,205
1400 DATA -1,-1

 

  • Like 2
Link to comment
Share on other sites

On 11/29/2022 at 4:15 PM, TomXP411 said:

Finally, a PETSCII block version based on the PC version. This version uses the block characters (shift D,F,C,V) and changes the background color as needed to layer the different colors of the bird...

Alas, this turkey won't run on R38.  Thanks for posting the three versions, hopefully it was fun work for you.

Some of us Canadian are rather slow, so slow that we celebrate Thanksgiving in early October. 🙂

316803936_507688984719813_199647767141010320_n.jpg

Edited by Edmond D
  • Like 1
Link to comment
Share on other sites

  • Super Administrators
On 11/29/2022 at 5:03 PM, Edmond D said:

Alas, this turkey won't run on R38.  Thanks for posting the three versions, hopefully it was fun work for you.

Some of us Canadian are rather slow, so slow that we celebrate Thanksgiving in early October. 🙂

316803936_507688984719813_199647767141010320_n.jpg

You're right, it won't run on 38. The LOCATE command is the culprit.

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

Please review our Terms of Use