Jump to content
retroclouds

Largest TI-Basic program ever written

Recommended Posts

Was hoping someone could post the source code of the largest TI-Basic program ever written for the TI-99/4a Home Computer.

 

Thanks

retroclouds

Share this post


Link to post
Share on other sites
Just now, apersson850 said:

How would we know which it is?

 

Was hoping there's a (disk) catalog of basic programs that gives an indicator.

Share this post


Link to post
Share on other sites

Answering my own question, it seems that web99 is a good way to detect TI Basic program size.

 

image.thumb.png.0329dc33be6f2d00ca0bbd1662917859.png

 

Seems that ALFIE3 is a good candidate. Now I must say that I only have a few disk images. 

Perhaps someone with a substantial TI-Basic programs disk image collection can give it a try? Thanks.

 

  • Like 1

Share this post


Link to post
Share on other sites
10 minutes ago, retroclouds said:

Answering my own question, it seems that web99 is a good way to detect TI Basic program size.

 

image.thumb.png.0329dc33be6f2d00ca0bbd1662917859.png

 

Seems that ALFIE3 is a good candidate. Now I must say that I only have a few disk images. 

Perhaps someone with a substantial TI-Basic programs disk image collection can give it a try? Thanks.

 

 

It´s the best way to detect everything :) 

 

  • Like 1

Share this post


Link to post
Share on other sites

 

So Pucman is the biggest (in my DB) ?

 

grafik.thumb.png.5d56dca26bab452f59920aff2b0585c9.png

 

 

The code:

Spoiler

100 DIM ZI(21)
110 CALL SCREEN(2)
120 FOR I=1 TO 10
130 SCORE(I)=1000
140 NOM$(I)="ê ü"
150 NEXT I
160 CALL CLEAR
170 RECORD=SCORE(1)
180 CALL SCREEN(2)
190 RANDOMIZE
200 FOR I=1 TO 8
210 CALL COLOR(I,16,1)
220 NEXT I
230 CALL CHAR(129,"3C7CF8F0F0F87C3C")
240 CALL CHAR(128,"3C7EFFFFFFFF7E3C")
250 CALL CHAR(130,"0F1F7F7EFDFFFFFF")
260 CALL CHAR(131,"C0E030FBBFFEF8F0")
270 CALL CHAR(132,"FFFFFF7F7F3F1F0F")
280 CALL CHAR(133,"00C0F0FCF8F0E0C0")
290 CALL CHAR(134,"3C3E1F0F0F1F3E3C")
300 CALL CHAR(135,"0081C3E7FFFF7E3C")
310 CALL CHAR(42,"3C7EFFFFE7C38100")
320 CALL COLOR(2,11,1)
330 CALL COLOR(13,11,1)
340 CALL CHAR(136,"7CD692FEBAC6FEAA")
350 CALL CHAR(137,"0307070707070F0F")
360 CALL CHAR(138,"F0F87C1CAC8EFFFE")
370 CALL CHAR(139,"0F1F3F5F1F2F491A")
380 CALL CHAR(140,"94C0E4FCFCF82840")
390 CALL COLOR(14,10,1)
400 CALL CHAR(93,"0E06060606060E0E")
410 CALL CHAR(91,"7060606060607070")
420 PRINT "         PUC MAN ][        ": : : : :"           ëè  éâ                      ïî  äà           ": : : : :
430 PRINT "      BY BRENTARO LUCA      ": : : : : : : :
440 CALL CHAR(104,"18181818185A3C18")
450 PUNTI=0
460 DATA 262,262,262,262,262,262,330,330,330,330,330,330,349,349,349,349,330,294,262,262,262
470 RESTORE 460
480 FOR I=1 TO 21
490 READ ZI(I)
500 NEXT I
510 S=0
520 S=S+1
530 CALL SOUND(150,ZI(S),2,ZI(S)*2,2)
540 IF S=21 THEN 550 ELSE 520
550 CALL SOUND(150,262,2,330,2,392,2)
560 CALL SOUND(150,262,2,330,2,392,2)
570 CALL SOUND(150,262,2,330,2,392,2)
580 CALL SOUND(150,131,2,262,2,523,2)
590 CALL SOUND(150,131,2,262,2,523,2)
600 CALL SOUND(150,131,2,262,2,523,2)
610 CALL SOUND(600,131,2,330,1,(392*2),2)
620 CALL SOUND(1000,131,2,262,2)
630 CALL COLOR(10,6,1)
640 CALL HCHAR(8,15,104)
650 CALL KEY(3,K,S)
660 IF (S=0)+(K<49)+(K>51)THEN 650
670 ON(K-48) GOTO 680,700,720
680 CALL COLOR(14,7,1)
690 GOTO 730
700 CALL COLOR(14,10,1)
710 GOTO 730
720 CALL COLOR(14,14,1)
730 CALL HCHAR(8,15,32)
740 CALL HCHAR(8,18,104)
750 CALL KEY(3,K,S)
760 IF (S=0)+(K<49)+(K>51)THEN 750
770 ON(K-48) GOTO 780,810,840
780 CALL COLOR(13,11,1)
790 CALL COLOR(2,11,1)
800 GOTO 860
810 CALL COLOR(13,4,1)
820 CALL COLOR(2,4,1)
830 GOTO 860
840 CALL COLOR(13,8,1)
850 CALL COLOR(2,8,1)
860 CALL CHAR(144,"00FFFF0000FFFF00")
870 CALL CHAR(105,"002040FFFF402000")
880 CALL CHAR(106,"000402FFFF020400")
890 CALL CHAR(112,"003C7E66667E3C00")
900 CALL HCHAR(8,18,32)
910 CALL COLOR(11,5,1)
920 CALL CHAR(145,"6666666666666666")
930 CALL CHAR(146,"001F3F7060636766")
940 CALL CHAR(147,"00F8FC0E06C6E666")
950 CALL CHAR(148,"66676360703F1F00")
960 CALL CHAR(149,"66E6C6060EFCF800")
970 CALL COLOR(15,5,1)
980 CALL CHAR(150,"00F8FC0E0EFCF800")
990 CALL CHAR(151,"001F3F70703F1F00")
1000 CALL CHAR(113,"666666667E3C1800")
1010 CALL CHAR(114,"00183C7E66666666")
1020 CALL CHAR(115,"6667636060636766")
1030 CALL CHAR(116,"66E6C60606C6E666")
1040 CALL CHAR(117,"00FFFF0000C3E766")
1050 CALL CHAR(118,"66E7C30000FFFF00")
1060 CALL CHAR(152,"0000001818000000")
1070 CALL COLOR(16,11,1)
1080 CALL HCHAR(8,18,32)
1090 PRINT "      RECORD";RECORD: :
1100 PRINT "     ÆÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉô          æüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæ          æÿùÉûÿrÿùûÿrÿùÉûÿæ     "
1110 PRINT "     æÿÿÿÿÿæÿÿÿÿæÿÿÿÿÿæ          æÿrÿpÿqÿùûÿqÿpÿrÿæ          æÿæÿÿÿÿÿÿÿÿÿÿÿÿæÿæ     "
1120 PRINT "     æÿæÿùÉûÿëèÿùÉûÿæÿæ          æÿæÿÿÿÿÿïîÿÿÿÿÿæÿæ       ÆÉÉòÿqÿpÿrÿÿÿÿrÿpÿqÿöÉÉô"
1130 PRINT " iÿÿÿÿÿÿÿÿÿæÿëèÿæÿÿÿÿÿÿÿÿÿj   öÉÉôÿpÿrÿqÿïîÿqÿrÿpÿÆÉÉò       æÿÿÿæÿÿÿÿÿÿÿÿæÿÿÿæ     "
1140 PRINT "     æÿpÿqÿpÿëèÿpÿqÿpÿæ          æÿÿÿÿÿÿÿïîÿÿÿÿÿÿÿæ          æÿrÿrÿrÿÿÿÿrÿrÿrÿæ     "
1150 PRINT "     æÿqÿqÿqÿùûÿqÿqÿqÿæ          æÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿêæ          öÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉò     ": :
1160 PRINT "      PUNTI";PUNTI
1170 CALL HCHAR(5,9,128)
1180 CALL HCHAR(20,24,136)
1190 A=5
1200 B=9
1210 C=0
1220 D=1
1230 E=20
1240 F=24
1250 G=0
1260 H=-1
1270 PAC=129
1280 NUMERO1=181
1290 GOTO 1580
1300 C=0
1310 D=1
1320 PAC=129
1330 GOTO 1640
1340 C=0
1350 D=-1
1360 PAC=134
1370 GOTO 1640
1380 C=1
1390 D=0
1400 PAC=42
1410 GOTO 1640
1420 C=-1
1430 D=0
1440 PAC=135
1450 GOTO 1640
1460 G=0
1470 H=1
1480 GOTO 1580
1490 G=0
1500 H=-1
1510 GOTO 1580
1520 G=1
1530 H=0
1540 GOTO 1580
1550 G=-1
1560 H=0
1570 GOTO 1580
1580 CALL KEY(3,K,S)
1590 IF S=0 THEN 1640
1600 IF K=68 THEN 1300
1610 IF K=83 THEN 1340
1620 IF K=88 THEN 1380
1630 IF K=69 THEN 1420
1640 A=A+C
1650 B=B+D
1660 CALL GCHAR(A,B,X)
1670 IF X=32 THEN 1730
1680 IF X=105 THEN 2550
1690 IF X=106 THEN 2580
1700 IF X=152 THEN 1710 ELSE 1880
1710 NUMERO1=NUMERO1-1
1720 PUNTI=PUNTI+5
1730 CALL HCHAR(A-C,B-D,32)
1740 CALL HCHAR(A,B,PAC)
1750 CALL SOUND(150,-4,5)
1760 CALL HCHAR(A,B,128)
1770 IF NUMERO1=0 THEN 2610
1780 E=E+G
1790 F=F+H
1800 CALL GCHAR(E,F,X)
1810 IF X=128 THEN 1880
1820 IF X=32 THEN 1850
1830 IF X=152 THEN 1840 ELSE 2500
1840 NUMERO1=NUMERO1-1
1850 CALL HCHAR(E-G,F-H,32)
1860 CALL HCHAR(E,F,136)
1870 GOTO 2930
1880 CALL SOUND(100,1300,1)
1890 GOTO 1930
1900 FOR I=1 TO 50
1910 NEXT I
1920 RETURN
1930 CALL CHAR(128,"2466E7E7FFFF7E3C")
1940 GOSUB 1900
1950 CALL CHAR(128,"0000C3E7FFFF7E3C")
1960 GOSUB 1900
1970 CALL CHAR(128,"00000000FFFF7E3C")
1980 GOSUB 1900
1990 CALL CHAR(128,"00000000183C7E3C")
2000 GOSUB 1900
2010 CALL CHAR(128,"0000000018181818")
2020 GOSUB 1900
2030 CALL HCHAR(A-C,B-D,32)
2040 CALL GCHAR(A,B,X)
2050 IF (X<>32)+(X<>128)THEN 2070
2060 CALL HCHAR(A,B,32)
2070 FOR I=110 TO 1000 STEP 80
2080 CALL SOUND(1,I,2)
2090 NEXT I
2100 FOR I=1 TO LEN(STR$(PUNTI))
2110 CALL HCHAR(23,14+I,ASC(SEG$(STR$(PUNTI),I,1)))
2120 CALL SOUND(-200,-8,1)
2130 NEXT I
2140 FOR I=1 TO 1000
2150 NEXT I
2160 CALL CLEAR
2170 FOR I=1 TO 8
2180 IF SCORE(I)<PUNTI THEN 2210
2190 NEXT I
2200 GOTO 2840
2210 FOR J=7 TO I STEP -1
2220 J1=J+1
2230 SCORE(J1)=SCORE(J)
2240 NOM$(J1)=NOM$(J)
2250 NEXT J
2260 SCORE(I)=PUNTI
2270 PRINT "    TI SEI POSIZIONATO ";I: : : : :"      ëè   éâ  ëè  éâ             ïî   äà  ïî  äà       ": :
2280 PRINT :"      ê ü ê ü ê ü ê ü       ": : : :
2290 PRINT " INSERISCI LE TUE INIZIALI  ": : :" ";STR$(I)&"å ";PUNTI;TAB(20);"___ "
2300 FOR J=1 TO 3
2310 CALL KEY(3,K,S)
2320 IF (S=0)+(K>127)+(K<32)THEN 2310
2330 CALL SOUND(100,(K*10),2)
2340 CALL HCHAR(23,21+J,K)
2350 NO(J)=K
2360 NEXT J
2370 NOM$(I)=CHR$(NO(1))&CHR$(NO(2))&CHR$(NO(3))
2380 FOR I=1 TO 5
2390 CALL COLOR(13,16,1)
2400 CALL COLOR(14,8,1)
2410 FOR T=1 TO 100
2420 NEXT T
2430 CALL COLOR(13,11,1)
2440 CALL COLOR(14,10,1)
2450 FOR T=1 TO 100
2460 NEXT T
2470 NEXT I
2480 CALL CLEAR
2490 GOTO 2840
2500 E=E-G
2510 F=F-H
2520 ON(INT(RND*2)+1) GOTO 2530,2540
2530 IF F<B THEN 1460 ELSE 1490
2540 IF E<A THEN 1520 ELSE 1550
2550 CALL HCHAR(A-C,B-D,32)
2560 B=28
2570 GOTO 1640
2580 CALL HCHAR(A-C,B-D,32)
2590 B=5
2600 GOTO 1640
2610 FOR I=1 TO LEN(STR$(PUNTI))
2620 CALL HCHAR(23,14+I,ASC(SEG$(STR$(PUNTI),I,1)))
2630 CALL SOUND(-200,-8,1)
2640 NEXT I
2650 FOR I=1 TO 3
2660 CALL COLOR(15,16,1)
2670 CALL COLOR(11,16,1)
2680 FOR T=1 TO 200
2690 NEXT T
2700 CALL COLOR(15,5,1)
2710 CALL COLOR(11,5,1)
2720 FOR T=1 TO 200
2730 NEXT T
2740 NEXT I
2750 FOR I=1 TO 5
2760 CALL SOUND(300,220,1,440,1,880,1)
2770 CALL SOUND(300,330,1,659,1,1319,1)
2780 NEXT I
2790 CALL SOUND(-1000,440,1,659,1,330,1)
2800 FOR I=1 TO 1000
2810 NEXT I
2820 CALL CLEAR
2830 GOTO 1090
2840 CALL CLEAR
2850 PRINT "        å HI-SCORE ü ": : :
2860 FOR I=1 TO 8
2870 PRINT :"      ";STR$(I)&"å " &STR$(SCORE(I));TAB(20);NOM$(I)
2880 NEXT I
2890 PRINT : :
2900 FOR I=1 TO 1000
2910 NEXT I
2920 GOTO 160
2930 ON INT(RND*2)+1 GOTO 2940,2970
2940 GOSUB 3000
2950 GOSUB 3030
2960 GOTO 1580
2970 GOSUB 3030
2980 GOSUB 3000
2990 GOTO 1580
3000 IF F<B THEN 1460
3010 IF F>B THEN 1490
3020 RETURN
3030 IF E<A THEN 1520
3040 IF E>A THEN 1550
3050 RETURN

 

 

 

  • Like 2
  • Thanks 1

Share this post


Link to post
Share on other sites

 

And Myflyer24 the biggest for XB:

 

grafik.thumb.png.1cb6032de88d1ab627873a428f2be7cf.png

 

 

Code:

Spoiler

100 CALL GRAPHICS(1,1)
110 DS$="DSK"
120 DISPLAY AT(10,7):"Use ESC To Exit"
130 CALL INIT :: CALL LOAD("DSK1.FLYER-O")
140 ! JIFFYFLYER VERSION 2.1  @ 1988 by Rodger Merritt           1949 Evergreen Ave.         Fullerton, CA 92635         USA PH#(714)990-4577
150 ! MYFLYER VER 1.0 24 PIN  MODIFIED BY DDI SOFTWARE 1997
160 ON ERROR 2520 :: ON WARNING NEXT :: ON BREAK NEXT
170 DIM PP$(8),A$(90),C$(2,46),M$(25),LL$(1),II$(1),JJ$(1),G(25):: CALL SCREEN(2):: CALL COLOR(5,2,2,6,2,2,7,2,2,8,2,2)
180 GOTO 220
190 GS$,GV$,CRLF$,GSL$
200 B$,B1$,D$,F$,F1$,G$,I$,J$,L$,N$="" :: A,B,D,E,F,K,Q,S,T,U,X,X1,Y,Y1=0
210 CG,RW,PA
220 E$(1)="1 CHANGE PAGE FORMAT   SB " :: E$(2)="2 TYPE BIG MESSAGE   KEYS " :: E$(3)="3 CHANGE BORDER  SB       " :: E$(4)="4 CHANGE CSGD GRAPHIC   Y "
230 E$(6)="6 CHANGE SMALL FONT    SB " :: E$(8)="8 PRINT YOUR FLYER      Y " :: E$(5)="5 TYPE SMALL MESSAGE @AZ09" :: E$(7)="7  S AVE  L OAD  C ATALOG "
240 GOSUB 3810 :: GOTO 1750
250 DATA 071F3C383838383838383838383C1F07E0F83C1C1C1C1C1C1C1C1C1C1C3CF8E,0
260 CALL CHAR :: CALL CHARPAT :: CALL GCHAR :: CALL COLOR :: CALL DELSPRITE :: CALL HCHAR :: CALL KEY :: CALL LINK :: CALL LOCATE :: CALL MAGNIFY :: CALL SOUND :: CALL SPRITE :: CALL VCHAR :: [email protected]
270 DATA 00010103070101010101010101010107C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0F,1
280 DATA 071F3C38707030000000030F1C387F7FE0F83C1C0E0E1C1C70E0C0000206FEFE,2
290 DATA 1F1F10000000030300000018383C1F03F8F838387070E0E0783C1C1C1C3CF8C,3
300 DATA 0000000101030306060C0F1F0000000038F8B8B8B83838383838FEFE3838387C,4
310 DATA 1F1F1C1C1C1F1F0000001838381C1F07F8F8080000E0F8381C1C1C1C1C38F8E,5
320 DATA 071F1C383838393B3C383838381C1F07E0F010000000F0F8381C1C1C1C38F8E,6
330 DATA 1F1F1000000000000000010101030303F8F83838387070E0E0E0C0C0C080808,7
340 DATA 030F0E1C1C1C0E071F1C3838381C1F07C0F07038383870E0F8381C1C1C38F8E,8
350 DATA 071F1C383838381C1F07000001010307E0F8381C1C1C3C38F87070E0C0C0808,9
360 DATA 03070E1C1C383830707F7F70707070F8C0E07038381C1C0C0EFEFE0E0E0E0F1F,A
370 DATA 7F3F383838383F3F3838383838383F7FE0F078383878F0F83C1C1C1C1C3CF8F,B
380 DATA 071F3C387070707070707070383C1F07E0F83C1C0E0E000000000E0E1C3CF8E,C
390 DATA FF7F7070707070707070707070707FFFE0F83C1C0E0E0E0E0E0E0E0E1C3CF8E,D
400 DATA 7F3F383838383F3F3838383838383F7FF8F808000040C0C0400000000004FCFC,E
410 DATA 3F1F1C1C1C1C1F1F1C1C1C1C1C1C1C3EF8F808000020E0E02,F
420 DATA 071F3C387070707070707070383C1F07E0F83C1C0E000000FE7E0E0E1C3CF8E,G
430 DATA F870707070707F7F70707070707070F81F0E0E0E0E0EFEFE0E0E0E0E0E0E0E1F,H
440 DATA 07010101010101010101010101010107F0C0C0C0C0C0C0C0C0C0C0C0C0C0C0F,I
450 DATA 070101010101010101011131313B1F0FF0C0C0C0C0C0C0C0C0C0C0C0C0808,J
460 DATA 7C38383838383F3F383838383838387C38707060E0C00080C0E0E0707038381C,K
470 DATA 3E1C1C1C1C1C1C1C1C1C1C1C1C1C1F1F0000000000000000000000000808F8F8,L
480 DATA F87070787C74767273717170707070F81F0E0E1E3E2E6E4ECE8E8E0E0E0E0E1F,M
490 DATA 7C383C3E3A3B3939383838383838387C3E1C1C1C1C1C1C9C9CDC5C7C3C3C1C3E,N
500 DATA 071F3C387070707070707070383C1F07E0F83C1C0E0E0E0E0E0E0E0E1C3CF8E,O
510 DATA 3F1F1C1C1C1C1C1C1F1F1C1C1C1C1C3EE0F8381C1C1C1C38F8E,P
520 DATA 071F3C387070707070707070383C1F07E0F83C1C0E0E0E0E0E0E0E3E3C3CFEE6,Q
530 DATA 3F1F1C1C1C1C1C1C1F1F1C1C1C1C1C3EE0F8381C1C1C1C38F8E038181C1C1C0E,R
540 DATA 071F3C38383C1E0701003038383C1F07E0F83C1C1C0C00C0F0783C1C1C3CF8E,S
550 DATA 3F3F2101010101010101010101010103FEFEC2C0C0C0C0C0C0C0C0C0C0C0C0E,T
560 DATA 7C38383838383838383838383C1E1F071E0C0C0C0C0C0C0C0C0C0C0C1C38F8E,U
570 DATA 7C3838381C1C1C0E0E0E0707070303011E0C0C0C181818303030606060C0C08,V
580 DATA F0E0E0E0E0717171733B3B3F3E1E0C0C0703038383C6C6C6E66C6C7C3C381818,W
590 DATA 7C381C1C0E0E0703010306060C0C183C3C1030306060C080C0E0707038381C3E,X
600 DATA 7C381C1C0E0E070703030101010101031E0C181830306060C0C0C0C0C0C0C0E,Y
610 DATA 1F1F100000000101030307070E0C1F3FFCF83070E0E0C0C0808000000004FCFC,Z
620 DATA FFFFFCFEFCFDF9F9FBF3F0E7EFCFFFFFFFFF3F3F3F9F9F8F8FC707E7E3E3FFFF,a
630 DATA FFFFE0F3F3F3F3F0F3F3F3F3F3E0FFFFFFFF7F3F9F9F3F3F9FCFCFCF9F3FFFFF,b
640 DATA FFFFFCF9F3F3F3F3F3F3F3F3F9FCFFFFFFFF1FCFEFFFFFFFFFFFFFEFCF1FFFFF,c
650 DATA FFFFE0F3F3F3F3F3F3F3F3F3F3E0FFFFFFFF3F9FCFCFCFCFCFCFCFCF9F3FFFFF,d
660 DATA FFFFF0F9F9F9F9F8F9F9F9F9F9F0FFFFFFFF1FDFFFFF7F7F7FFFFFFFDF1FFFFF,e
670 DATA FFFFF0F9F9F9F9F8F9F9F9F9F9F0FFFFFFFF1FDFFFFF7F7F7FFFFFFFFFFFFFFF,f
680 DATA FFFFF8F3E7E7E7E7E7E7E7E7F3F8FFFFFFFF3F9FDFFFFFFF0FCFCFCF9F3FFFFF,g
690 DATA FFFFC3E7E7E7E7E0E7E7E7E7E7C3FFFFFFFF87CFCFCFCF0FCFCFCFCFCF87FFFF,h
700 DATA FFFFFCFEFEFEFEFEFEFEFEFEFEFCFFFFFFFF3F7F7F7F7F7F7F7F7F7F7F3FFFFF,i
710 DATA FFFFFFFFFFFFFFFFFFFFFFF7F3F8FFFFFFFF0F9F9F9F9F9F9F9F9F9F3F7FFFFF,j
720 DATA FFFFC3E7E7E7E6E1E0E0E6E7E7C3FFFFFFFFC7DFBF7FFFFFFF7F3F1F8FC3FFFF,k
730 DATA FFFFF0F9F9F9F9F9F9F9F9F9F9F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFEF0FFFFF,l
740 DATA FFFFC1E3E3E9E9E9ECECECEEEEC6FFFFFFFF83C7C7A7A7A7676767E7E7C3FFFF,m
750 DATA FFFFE7F3F1F0F0F4F6F7F7F7F7E3FFFFFFFFC7EFEFEF6F2F0F0F8FCFCFEFFFFF,n
760 DATA FFFFF8F3E7E7E7E7E7E7E7E7F3F8FFFFFFFF3F9FCFCFCFCFCFCFCFCF9F3FFFFF,o
770 DATA FFFFE0F3F3F3F3F3F0F3F3F3F3E1FFFFFFFF3F9FCFCFCF9F3FFFFFFFFFFFFFFF,p
780 DATA FFFFF8F3E7E7E7E7E7E7E6E7F3F8FFFFFFFF3F9FCFCFCFCFCFCFCF4F9F27FFFF,q
790 DATA FFFFC0E7E7E7E7E7E0E4E6E7E7C3FFFFFFFF7F3F9F9F9F3F7F7F3F1F8FC3FFFF,r
800 DATA FFFFF8F3F3F1F0F8FCFEFFF7F3F8FFFFFFFF3F9FDFFFFF7F3F1F1F9F9F3FFFFF,s
810 DATA FFFFE0EEFEFEFEFEFEFEFEFEFEFCFFFFFFFF07777F7F7F7F7F7F7F7F7F3FFFFF,t
820 DATA FFFFE1F3F3F3F3F3F3F3F3F3F9FCFFFFFFFFC7EFEFEFEFEFEFEFEFCF9F3FFFFF,u
830 DATA FFFFC1F3F3F9F9F9FCFCFCFEFEFEFFFFFFFFC3E7EFCFDFDF9FBFBF3F7F7FFFFF,v
840 DATA FFFF089C9CCECECEE5E5E5F3F3F3FFFFFFFF61FBFB7777772F2F2F9F9F9FFFFF,w
850 DATA FFFF03C7E3F1F8FCFEFDFBF7EF87FFFFFFFFE1F7EFDFBF7F3F1F8FC7E3C0FFFF,x
860 DATA FFFF07C7E3F1F8FCFEFEFEFEFEFCFFFFFFFFE1F7EFDFBF7F7F7F7F7F7F3FFFFF,y
870 DATA FFFFE0E7EFFFFFFEFCF8F1E3E7E0FFFFFFFF07E7C78F1F3F7FFFFFF7E707FFFF,z
880 DATA 00000101010101010101010001010000000080808080808080808000808,!
890 DATA 0000021F3F32323F1F02323F1F020000000040F8FC4C40F8FC4C4CFCF84,$
900 DATA 00000C12120C000101030306060C00000000306060C0C08080003048483,%
910 DATA FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,^
920 DATA 00070C1810000001010300030707030000C0E0707070E0C080000000808,?
930 DATA 33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,58,59,60,61,62,63,91,92,93,94
940 DATA 0000000E3F7F7F7F7F7F7F3F3F1F0F07004080B8FEFFFFFFFFFFFFFEFEFCF87,APPLE
950 DATA 030202070F1B33630303030306060C04C04040E0F8CEC2C0E0F03018180C0604,ASTRONAUT
960 DATA 071F3F7F7FFFFFFFFFFFFF7F7F3F1F07E0F8FCFEFEFFFFFFFFFFFFFEFEFCF8E,BALL
970 DATA 070F1F3C7CFCFFBF3834323131323438E0F0F83C3E3FFFFD1C2C4C8C9C4C2C1C,BARN
980 DATA 00000000004020381F1F0F0703000100000000000018347FFCF8F0E0C08000C,BIRD
990 DATA 0000000000000000000000000000000000000000000000000,BLANK
1000 DATA 0A5F337BBE1F77AC783C5F0F0E5C3C3C50FACCEE7DF8EE351E3CFAF0703A3C3C,BLOB
1010 DATA C0E0E4B2B1DD7745676D3F031F373D300307274D8DBBEEA2E6B6FCC0F8ECBC0C,BUTTERFLY
1020 DATA 000000000000010202021F3F7FE72418000000000000E0100888FCFEFEF3120C,CAR VW
1030 DATA 00000000041E3C1F1F1F0F070300000100000000000818F8F0F0E0C0C0808,CHICKEN
1040 DATA 0103070707031B3D3F7F7F3F3E1C0103C0E0F0F0F0E0ECDEFEFFFFFEBE9CC0E,CLOVER
1050 DATA 00000000010A010A050A150A142000801C3E7FFF7FFE7CA850A00048,COMET
1060 DATA 000000281830F8FC3F1F1F0F0D0808180000000000000008FEFDFDFDF9A80818,COW
1070 DATA 0103070F1F3F7FFFFF7F3F1F0F07030180C0E0F0F8FCFEFFFFFEFCF8F0E0C08,DIAMOND
1080 DATA 010320101121407FFFFFFFFF71E070388CFEF8A8DCFCF8F0F0F8F8F89888CC66,DOG
1090 DATA 00001E3F2F7FFF3E3F7F7F797E3F3F0F0000000000000001FBFFDFBF7EFCF8F,DUCK
1100 DATA 00031F3F7F6FFFFF9F8F8FAF4F0E0E0E000080C0C0FEFFFFFFFFFFFEFE0E0E0E,ELEPHANT
1110 DATA 00000000000021170F1721000000000002002011387CF6DFEEDFFE7C38102,FISH
1120 DATA 00000302070725727F7F3F1F3B772200000060A0F0F0D227FFFFFEFC6E7722,FROG
1130 DATA 0303030701070F1B33070F1F06060E0EC0C0C0E080E0F0D8CCE0F0F86060707,GIRL
1140 DATA 00387CFEFFFF7F7F3F1F1F0F0703010000387CFEFEFEFCFCF8F0F0E0C08,HEART
1150 DATA 10383C7EFFCF0F0F07070C18180E06000000000000F0FEFBF9F1303060603818,HORSE
1160 DATA 0103060D1B376FDF3F3036363032303080C060B0D8ECF6FBFC8C8C8C8CFCFCFC,HOUSE
1170 DATA 040E1F3F7FFF6464647F7F7F6464676700000080C0E0C0C0E0F0F8FEC4C4C4C4,HOUSE2
1180 DATA 01071B3F0F07073F4F1F3F1F1F0F071F8000008081C1C3C3E6FEFCF8F0E0E0C,KANGAROO
1190 DATA 00024583452B474D9BBD7F7FF3FDFCFE50A8F0FC5AFC1EB5BA5CF67CD8D8DCCC,LION
1200 DATA 030705060207070F0F1B133767474E6EC0E0A06042E4E2F1F1DACCECF6E27276,MONKEY
1210 DATA 020508102043474F9FBFFF7F3F7CF07E607C363F7FFEF8FCFCE6A321232E206,MONKEY2
1220 DATA 1F7F79FDEFDFAFF7FB7D7E1F0F1F7CFCF8FE9EDFF7FBF5EFDFBE7EF8F0F83E3F,MONSTER
1230 DATA 030F1F0703010103070F0300031F0F03C0F0F8FCFC9CBEFEFEBE3C7CFCF8F0C,MOON
1240 DATA 0102672763C0879FBFBFFFFF7F3F3E1FC060A0B937FEFCF8F0F0D88898,MOUSE
1250 DATA 0103070B070F170F1F2F1F3F5F0101010080C0A0C0E0D0E0F0E8F0F8F4,PINE
1260 DATA 071B3D7B5FAAFFE7DBFBB67F762B1E07E0F8DCFE3EDFDF3FFFDFFF7EEEFCF8E,PLANET
1270 DATA 0101030307070F0F1F1F3F3F7F7FFFFF8080C0C0E0E0F0F0F8F8FCFCFEFEFFFF,PYRAMID
1280 DATA 03070E1C7CDEFE7F3F3F1F1F1F0F0C1CE0309848380000C2F7FFFEFCFEFE7EFC,RABBIT
1290 DATA 00000007091327070D08183061C28140606060C4C8D0A00080C040C08,RUNNER
1300 DATA 00010307070F0F1F3F7FFF00FF7F3F1F4040505058585C5C5E5E5F40FFFEFCF8,SAILBOAT
1310 DATA 2050A8502907060C183C5EE7E77A3C18183C5EE7E77A3C183060E0940A150A04,SATALITE
1320 DATA 2000034F1F1F3F3F3FBF3F5E8D8788700E11E1F1FAFCF4ECDCBC79F8F0C004,SATURN
1330 DATA 0000070707171737303F7F00FF1F0F07606070707707FFFF00B4B630FFFEFCF8,SCHOONER
1340 DATA 106257BD1136653A3A653611BD5762100846EABD886CA65C5CA66C88BDEA4608,SNOWFLAKE
1350 DATA 0001010303071F3F7F7F7F3F3E1C010380C0C0E0E0F0FCFEFFFFFFFEBE9CC0E,SPADE
1360 DATA 0944230F9F593BBFBF3B589E0F2344099022C4F0F99ADCFDFDDC1A79F0C4229,SUN
1370 DATA 000012117E7E7F7F7F7FFF7E66673C181C0C0C7E8E3EFEFCF8FE7EE7E77E7E18,TRACTOR
1380 DATA 040E1F0C041F0E0E0E1F1F3F3F3F5B9B40E0F0401F1E121252FEFEFEFFFC3C18,TRAIN
1390 DATA 0000000000001E1317177F7F7FFF6C6C00000000FFFFFFFFFFFFFFFFFFFF0C0C,TRUCK
1400 DATA 049B2900000301010121FF6D7F3F3F0F8080403030FC084828F8FFB6FEFCFCF8,TUGBOAT
1410 DATA 030363F7FFF7F7F367040C081810300000020282E2BA8F028280C04060203,WARRIOR
1420 CALL CHAR(32,"00000000000000001F10101111111111FF0000E3222222E3FF0000C7444444C7")
1430 CALL CHAR(36,"FF00008F8989898FF0101010101010101011111115121011005B525B525200E")
1440 CALL CHAR(40,"00AD494D49490000005D292D29AD000F10D050D0905010101111111110101111")
1450 CALL CHAR(44,"272027E00600E720E500AE00F500B700C909C90FC0004F09101010101010101")
1460 CALL CHAR(58,"111111101010101",59,"2620E600EB00BD",60,"BB00DA00D6007500C909CF00EE00DE001010101010101010111111111110101F")
1470 CALL CHAR(91,"E3222222E30000FF",92,"C7444444C70000FF",93,"8F8989898F0000FF",94,"10101010101010F")
1480 C$(1,1)="b`b`b`b`b`b`b`b`b`b`b`b`b`b`"
1490 C$(1,2)="cacacacacacacacacacacacacaca"
1500 I$="b                          `" :: C$(1,3),C$(2,3),C$(1,11),C$(2,11)=I$
1510 C$(1,15),C$(2,15),C$(1,21),C$(2,21),C$(2,17),C$(2,19),C$(2,29),C$(2,31)=I$
1520 C$(1,23),C$(2,23),C$(1,25),C$(2,25),C$(2,33)=I$
1530 C$(1,27),C$(2,27),C$(1,35),C$(2,35),C$(1,37),C$(2,37)=I$
1540 C$(1,39),C$(2,39),C$(1,45),C$(2,45)=I$
1550 I$="c                          a" :: C$(1,4),C$(2,4),C$(1,10),C$(2,10),C$(2,16)=I$
1560 C$(1,14),C$(2,14),C$(1,22),C$(2,22),C$(1,24),C$(2,24)=I$
1570 C$(1,26),C$(2,26),C$(1,28),C$(2,28),C$(1,34),C$(1,46),C$(2,46)=I$
1580 C$(1,36),C$(2,36),C$(2,18),C$(2,20),C$(2,30),C$(2,32)=I$
1590 C$(1,38),C$(2,34),C$(2,38)=I$
1600 C$(1,5)="b !""#$% !""#$%  !""#$% !""#$% `" :: C$(1,40)="c !""#$% !""#$%  !""#$% !""#$% a"
1610 C$(1,6)="c &'()* &'()*  &'()* &'()* a" :: C$(1,41)="b &'()* &'()*  &'()* &'()* `"
1620 C$(1,7)="b +,-./ +,-./  +,-./ +,-./ `" :: C$(1,42)="c +,-./ +,-./  +,-./ +,-./ a"
1630 C$(1,8)="c :;<=> :;<=>  :;<=> :;<=> a" :: C$(1,43)="b :;<=> :;<=>  :;<=> :;<=> `"
1640 C$(1,9)="b ?[\]^ ?[\]^  ?[\]^ ?[\]^ `" :: C$(1,44)="c ?[\]^ ?[\]^  ?[\]^ ?[\]^ a"
1650 C$(1,16)="c !""#$%              !""#$% a" :: C$(2,5)="b !""#$%              !""#$% `"
1660 C$(2,40)="c !""#$%              !""#$% a" :: C$(1,29)="b !""#$%              !""#$% `"
1670 C$(2,6)="c &'()*              &'()* a" :: C$(1,17)="b &'()*              &'()* `"
1680 C$(1,30)="c &'()*              &'()* a" :: C$(2,41)="b &'()*              &'()* `"
1690 C$(2,7)="b +,-./              +,-./ `" :: C$(1,18)="c +,-./              +,-./ a"
1700 C$(1,31)="b +,-./              +,-./ `" :: C$(2,42)="c +,-./              +,-./ a"
1710 C$(2,8)="c :;<=>              :;<=> a" :: C$(1,19)="b :;<=>              :;<=> `"
1720 C$(1,32)="c :;<=>              :;<=> a" :: C$(2,43)="b :;<=>              :;<=> `"
1730 C$(2,9)="b ?[\]^              ?[\]^ `" :: C$(1,20)="c ?[\]^              ?[\]^ a"
1740 C$(1,33)="b ?[\]^              ?[\]^ `" :: C$(2,44)="c ?[\]^              ?[\]^ a" :: RETURN
1750 READ B$,F$ :: A$(ASC(F$)-32)=B$ :: IF F$<>"?" THEN GOTO 1750
1760 RESTORE 930 :: FOR X=1 TO 25 :: READ G(X):: NEXT X
1770 A$(0)=RPT$("0",49):: CALL CHAR(120,A$(0))
1780 CALL CHAR(100,A$(74),104,A$(73),108,A$(70),112,A$(70),116,A$(89),124,A$(70),128,A$(76),132,A$(89),136,A$(69),140,A$(82))
1790 GOSUB 1420
1800 C$(1,12)="c  dfhjlnprtvxz|~" &CHR$(128)&"éäåêèîÄ  a"
1810 C$(2,12)="c  dfhjlnprtvxz|~" &CHR$(128)&"éäåêèîÄ  a"
1820 C$(1,13)="b  egikmoqsuwy{}" &CHR$(127)&"üâàçëïìÅ  `"
1830 C$(2,13)="b  egikmoqsuwy{}" &CHR$(127)&"üâàçëïìÅ  `"
1840 READ B$,F$ :: CALL CHAR(96,B$):: FOR Y=1 TO 23 STEP 2 :: CALL VCHAR(Y,2,96):: CALL VCHAR(Y+1,2,97):: CALL VCHAR(Y,31,98):: CALL VCHAR(Y+1,31,99):: NEXT Y :: A,U=1 :: GOSUB 1880
1850 DISPLAY AT(16,8):"V2 1  @1988 BY";:: DISPLAY AT(17,8):"RODGER MERRITT";:: DISPLAY AT(19,8):"MODIFIED    BY";:: DISPLAY AT(20,10):"DDI  1997 ";
1860 CALL COLOR(1,3,16,2,3,16,3,5,16,4,3,16):: CALL SCREEN(16)
1870 CALL COLOR(5,5,16,6,5,16,7,5,16,8,3,16,9,14,16,10,14,16,11,14,16,12,14,16,13,14,16,14,14,16):: GOTO 1920
1880 DISPLAY AT(1,1):C$(1,1);C$(1,2);C$(U,Q+3);C$(U,Q+4);C$(U,Q+5);C$(U,Q+6);C$(U,Q+7);C$(U,Q+8);C$(U,Q+9);C$(U,Q+10);C$(U,Q+11)
1890 DISPLAY AT(12,1):C$(U,Q+12);C$(U,Q+13);C$(U,Q+14);C$(U,Q+15);C$(U,Q+16);C$(U,Q+17);C$(U,Q+18);C$(U,Q+19);C$(U,Q+20);C$(U,Q+21)
1900 DISPLAY AT(22,1):C$(U,Q+22);C$(1,1);C$(1,2):: IF Q THEN DISPLAY AT(1,1):C$(U,25);C$(U,26)ELSE DISPLAY AT(23,1):C$(U,23);C$(U,24)
1910 DISPLAY AT(24,2):E$(A);:: RETURN
1920 CALL KEY(5,K,S):: IF S<1 THEN 1920 ELSE IF K=13 THEN A=A+1 :: GOTO 1940 ELSE IF K=15 THEN GOSUB 1480 :: GOTO 1970 ELSE IF K=11 THEN Q=0 :: GOSUB 1880 :: GOTO 1940 ELSE IF K=10 THEN Q=24 :: GOSUB 1880
1930 IF K=155 THEN END
1940 IF A>8 THEN A=2
1950 GOSUB 1910
1960 ON A GOSUB 1970,1990,2050,2080,2260,2550,2360,2180 :: GOTO 1920
1970 IF K=10 OR K=11 THEN 1920 ELSE U=U+1 :: A=1
1980 IF U>2 THEN U=1 :: GOSUB 1880 :: GOTO 1920 ELSE GOSUB 1880 :: GOTO 1920
1990 IF Q THEN Q=0 :: GOSUB 1880
2000 B=0 :: CALL CHAR(95,"FF818181818181FF"):: CALL MAGNIFY(2):: CALL SPRITE(#1,95,7,89,41)
2010 CALL KEY(5,K,S):: IF S<1 THEN 2010 ELSE IF K=32 OR K=33 OR K=36 OR K=37 OR K=63 OR K=94 OR(K>47 AND K<58)OR(K>64 AND K<91)OR(K>96 AND K<123)THEN CALL CHAR(100+B,A$(K-32))ELSE 2030
2020 IF B<40 THEN B=B+4 :: GOTO 2040
2030 IF K=8 AND B>0 THEN B=B-4 :: GOTO 2040 ELSE IF K=9 AND B<40 THEN B=B+4 :: GOTO 2040 ELSE IF K=13 THEN A=3 :: GOSUB 1910 :: CALL DELSPRITE(#1):: RETURN ELSE CALL SOUND(100,-1,1):: GOTO 2010
2040 CALL LOCATE(#1,89,41+B*4):: GOTO 2010
2050 CALL KEY(0,K,S):: IF K=32 THEN 2060 ELSE IF K=13 THEN RETURN ELSE IF K=8 THEN B$=B1$ :: F$=F1$ :: GOTO 2070 ELSE RETURN
2060 B1$=B$ :: F1$=F$ :: READ B$,F$ :: IF F$="WARRIOR" THEN RESTORE 940
2070 CALL CHAR(96,B$):: DISPLAY AT(24,18):F$;:: RETURN
2080 CALL KEY(0,K,S):: IF K=89 THEN 2090 ELSE IF K=13 THEN RETURN ELSE RETURN
2090 DISPLAY AT(24,2):"DRIVE 1   NAME         GR";:: ACCEPT AT(24,8)SIZE(-1):N$ :: ACCEPT AT(24,17)SIZE(-7):D$
2100 OPEN #1:DS$&N$&"." &D$&"/GR",INPUT ,INTERNAL,VARIABLE 254
2110 INPUT #1:D,D,D,L$ :: CLOSE #1 :: II$(1)=I$
2120 FOR X=1 TO 25
2130 JJ$(1)="" :: LL$(1)=""
2140 LL$(1)=SEG$(L$,X*8-7,8)
2150 CALL LINK("BINHEX",LL$(),II$(),JJ$())
2160 M$(X)=JJ$(1)
2170 CALL CHAR(G(X),M$(X)):: NEXT X :: I$=II$(1):: RETURN
2180 CALL KEY(0,K,S):: IF K=89 THEN DISPLAY AT(24,2)SIZE(26):" PIO.CR.LF" :: ACCEPT AT(24,3)SIZE(-24)BEEP:G$ :: Q=0 :: E=U :: F=24 :: GOTO 2190 ELSE IF K=13 THEN RETURN ELSE RETURN
2190 OPEN #1:G$,OUTPUT,DISPLAY ,VARIABLE 254 :: PRINT #1:CHR$(27);"@";GS$;CRLF$
2200 DISPLAY AT(24,2):" STAR NX2420 COLOR  YN  N ";:: CALL KEY(0,K,S):: IF S<1 THEN 2200 ELSE IF K=89 THEN 2210 ELSE IF K=13 OR K=78 THEN 2230 ELSE 2200
2210 DISPLAY AT(24,2):"PICK COLOR 0123456 BRBVYOG";
2220 CALL KEY(0,K,S):: IF K>47 AND K<55 THEN PRINT #1:CHR$(27);"r";CHR$(K); ELSE 2210
2230 GOSUB 1880 :: DISPLAY AT(24,1):C$(E,F):: GOSUB 3640 :: IF Q THEN 2240 ELSE Q=24 :: E=1 :: F=2 :: GOTO 2230
2240 OPEN #1:G$ :: PRINT #1:CHR$(10);CHR$(27);"@" :: CLOSE #1
2250 Q=0 :: GOSUB 1880 :: RETURN
2260 CALL CHAR(64,"287EA87C2AFC28"):: CALL CHAR(95,"00F888888888F800"):: CALL SPRITE(#1,95,10,13,31):: Y,Y1=3 :: X,X1=5
2270 CALL KEY(0,K,S):: IF S<1 THEN 2270 ELSE IF K=13 THEN CALL DELSPRITE(#1):: RETURN ELSE IF K>7 AND K<12 THEN 2330 ELSE IF K=32 OR K=36 OR(K>47 AND K<58)OR(K>64 AND K<91)THEN 2280 ELSE CALL SOUND(100,-2,1):: GOTO 2270
2280 CALL GCHAR(Y,X,D):: IF (D>47 AND D<58)OR(D>64 AND D<91)OR D=64 OR D=32 THEN 2290 ELSE CALL SOUND(100,-3,1):: GOTO 2270
2290 IF K=36 THEN CALL HCHAR(Y,X,64):: C$(U,Y+Q)=SEG$(C$(U,Y+Q),1,X-3)&"@" &SEG$(C$(U,Y+Q),X-1,28):: GOTO 2310
2300 CALL HCHAR(Y,X,K):: C$(U,Y+Q)=SEG$(C$(U,Y+Q),1,X-3)&CHR$(K)&SEG$(C$(U,Y+Q),X-1,28)
2310 X,X1=X+1 :: IF X>28 THEN X,X1=5
2320 CALL LOCATE(#1,Y*8-11,X*8-9):: GOTO 2270
2330 IF K=8 THEN X1=X-1 ELSE IF K=9 THEN X1=X+1 ELSE IF K=10 THEN Y1=Y+1 ELSE IF K=11 THEN Y1=Y-1
2340 IF X1=29 THEN X1=5 ELSE IF X1=4 THEN X1=28 ELSE IF Y1=1 THEN Y1=24-Q/24 ELSE IF Y1=25-Q/24 THEN Y1=2
2350 Y=Y1 :: X=X1 :: CALL LOCATE(#1,Y*8-11,X*8-9):: IF Y=24 THEN DISPLAY AT(24,1):C$(U,24):: GOTO 2270 ELSE 2270
2360 CALL KEY(0,K,S):: IF K=83 THEN 2370 ELSE IF K=76 THEN 2390 ELSE IF K=67 THEN 2420 ELSE RETURN
2370 DISPLAY AT(24,2):"SAVE FILENAME DSK2.FLYER4 ";:: ACCEPT AT(24,19)SIZE(-9):L$ :: OPEN #1:DS$&L$&"/FL" :: FOR X=3 TO 46 :: PRINT #1:C$(U,X):: NEXT X
2380 FOR X=33 TO 143 :: CALL CHARPAT(X,B$):: PRINT #1:B$ :: NEXT X :: CLOSE #1 :: Q=0 :: GOSUB 1880 :: RETURN
2390 DISPLAY AT(24,2):"LOAD FILENAME DSK1.FLYER1 ";:: ACCEPT AT(24,19)SIZE(-9):L$ :: OPEN #1:DS$&L$&"/FL" :: FOR X=3 TO 46 :: LINPUT #1:C$(U,X):: NEXT X
2400 IF U=2 THEN C$(2,12)=C$(1,12):: C$(2,13)=C$(1,13)ELSE C$(1,12)=C$(2,12):: C$(1,13)=C$(2,13)
2410 FOR X=33 TO 143 :: LINPUT #1:B$ :: CALL CHAR(X,B$):: NEXT X :: CLOSE #1 :: GOSUB 1880 :: RETURN
2420 DISPLAY AT(24,2):"     CATALOG DRIVE  2     ";:: CALL KEY(0,K,S):: IF S=0 THEN 2420 ELSE IF K>48 AND K<58 THEN 2430 ELSE IF K=13 THEN K=50 ELSE IF K=15 THEN RETURN ELSE CALL SOUND(100,-4,1):: GOTO 2420
2430 N$=CHR$(K):: CALL HCHAR(24,24,K):: OPEN #1:DS$&N$&".",INPUT ,RELATIVE,INTERNAL :: INPUT #1:L$,D,D,F :: F$=STR$(F):: L$=RPT$(" ",8-LEN(F$))&" FREE SECTORS " &F$&" "
2440 CALL SPRITE(#1,95,2,181,149)
2450 INPUT #1:F$,D,E,F :: IF LEN(F$)=0 THEN 2510 ELSE IF ABS(D)=4 AND E=2 THEN F$=SEG$(F$,1,LEN(F$)-3):: I$=F$&RPT$(" ",8-LEN(F$)):: GOTO 2460 ELSE 2450
2460 J$=L$&I$ :: FOR X=1 TO 9 :: L$=SEG$(J$,X,24):: DISPLAY AT(24,3):L$;
2470 CALL KEY(0,K,S):: IF K=15 THEN CLOSE #1 :: CALL DELSPRITE(#1):: RETURN ELSE IF K=13 THEN CLOSE #1 :: CALL DELSPRITE(#1):: GOTO 2100
2480 IF K=32 THEN 2470
2490 NEXT X :: D$=F$
2500 FOR PA=1 TO 225 :: NEXT PA :: GOTO 2450
2510 CALL DELSPRITE(#1):: CLOSE #1 :: RETURN
2520 ON ERROR 2540 :: DISPLAY AT(24,2)BEEP:"ERROR PRESS ENTER TO GO ON";:: CLOSE #1
2530 ON ERROR 2520 :: RETURN
2540 RETURN 2530
2550 CALL KEY(0,K,S):: IF K<>32 THEN RETURN ELSE T=T+1 :: IF T>14 THEN T=1
2560 ON T GOTO 2570,2910,2690,2740,2790,2840,2620,3170,3260,3350,3440,2980,3080,3530
2570 CALL CHAR(65,"10102828447C83005824243824243B001C22222020201F00FC2222222224FB00",69,"1C22203820629D007C12101C101020")
2580 CALL CHAR(71,"3C4240404E423D00C3427E4242428100423C08083E4A3100423C080848483000",75,"A2622438282443007C10101070906F00D46A4A4A4A4A89")
2590 CALL CHAR(78,"4CB22222222221003C42424242423D004C32223C202027003C42425A4A463F",82,"BC42427C50488700182418182444BB")
2600 CALL CHAR(84,"3E480808080817002222222222221D00824444282812110082444454546E45",88,"00C324181824C300C444443C04140C")
2610 CALL CHAR(90,"3C42041804827D"):: RETURN
2620 CALL CHAR(65,"183C66667E666600FC66667C6666FC003C66C0C0C0663C00")
2630 CALL CHAR(68,"F86C6666666CF800FE6268786862FE00FE6268786860F0003C66C0C0CE663E00")
2640 CALL CHAR(72,"C6C6C6FEC6C6C6003C18181818183C001E0C0C0CCCCC7800E6666C786C66E600")
2650 CALL CHAR(76,"F06060606266FE00C6EEFEFED6C6C600C6E6F6DECEC6C600386CC6C6C66C3800")
2660 CALL CHAR(80,"FC66667C6060F00078CCCCCCDC781C00FC66667C6C66F6003C6670380E663C00")
2670 CALL CHAR(84,"7E5A181818183C00C6C6C6C6C6C67C00C6C6C6C6C67C3800C6C6C6D6FEEEC600")
2680 CALL CHAR(88,"C6C66C38386CC6006666663C18183C00FEC68C183266FE00"):: RETURN
2690 CALL CHAR(65,"1F0F1B3B7FE3C3007C76363C3636FC003C767470707E3800",68,"7C7E76767676FC007EF6303C30367C007EE660786060E000")
2700 CALL CHAR(71,"3C64606C646F340067A424FC2425E60038581818181C18001C2C0C0C0C0C0830",75,"66EC7870707BCE003060606060667800")
2710 CALL CHAR(77,"666E76464647860062F25A5E4646C2006C262222222418007C66263E20206000",81,"1C363232323A1C0278EC6C7C707DC6")
2720 CALL CHAR(83,"387C30182C6C38003E4C0C0C0C0C180022622222262B3200226622262C383000",87,"616361697B6E4C00C3E63C183C67C3")
2730 CALL CHAR(89,"266626262E3E041C3E460C1830627C"):: RETURN
2740 CALL CHAR(65,"3C24247E626262007C44447E62627E007E42406060627E007E42426262627E",69,"7E40407E60607E007E40407E60606")
2750 CALL CHAR(71,"7E42406662627E004242427E6262620010101018181818000404040606467E",75,"4444447E626262004040406060607C")
2760 CALL CHAR(77,"7F494969696969007E426262626262007E46464242427E007C44447C60606",81,"7E424242424E7E007C44447E626262")
2770 CALL CHAR(83,"7E42407E06467E007E101018181818004242426262627E006262626624243C",87,"4949696969697F0042422476626262004242427E181818")
2780 CALL CHAR(90,"7E42043C60627E"):: RETURN
2790 CALL CHAR(65,"3864647C646464007864647864647800386460606064380078646464646478")
2800 CALL CHAR(69,"7C60607860607C007C606078606060003C60606C646438006464647C646464",73,"30303030303030000C0C0C0C0C4C380064687060706864")
2810 CALL CHAR(76,"6060606060607C0062766A6262626200626262726A6662007C64646464647C",80,"7864647860606000386262626A64320078646478706864")
2820 CALL CHAR(83,"386460380C4C38007E1818181818180064646464646438006262623C3C1818",87,"6262626A6A6A1400646428102864640062621418181818")
2830 CALL CHAR(90,"7C0C183060607C"):: RETURN
2840 CALL CHAR(65,"5C6C14243C346E005824382422225C001824204040423C")
2850 CALL CHAR(68,"7824242222227C0078207C2020222C0078203C20202070001824204046423C")
2860 CALL CHAR(72,"76243C24242476003C48280808081C005C64040242423C0064283028282472")
2870 CALL CHAR(76,"7020202020227C426252565A525281016232342C242464001824244242423C")
2880 CALL CHAR(80,"582422243820700018242442524A3C0058242224382472001820180442423C")
2890 CALL CHAR(84,"3E48080808081C007624244242423C00662424141408080041212A2A141414")
2900 CALL CHAR(88,"22521410082A4400225212221C423C003E42040810427C"):: RETURN
2910 CALL CHAR(65,"182C2C2C3C4646EFF84C4C5C464646FC18749290909264187C2626266626267C")
2920 CALL CHAR(69,"7E2020782022227C7C222078202020700C3A4A484B4A320D7722223E62222277")
2930 CALL CHAR(73,"38541010101054381F2404042444443872242830702C2673702020202022227E")
2940 CALL CHAR(77,"556B4959414141434362725A4E46426318345252525224187C2222227C202060")
2950 CALL CHAR(81,"183454525254251B7C22222C382C2663183452301C5224183E49080808080A0C")
2960 CALL CHAR(85,"6742424242663E1967424242242418186341414D49496B367722221C1C222277")
2970 CALL CHAR(89,"77222214080828187E4A0C0818284A7E"):: RETURN
2980 CALL CHAR(65,"F090F09090000000E090E090E00000006090809060000000E0909090E0000000")
2990 CALL CHAR(69,"F080E080F0000000F080E08080000000609080B0600000009090F09090000000")
3000 CALL CHAR(73,"E0404040E000000070202020E000000090A0C0A0900000004040404070000000")
3010 CALL CHAR(77,"90F090909000000090D0B09090000000F0909090F0000000E090E08080000000")
3020 CALL CHAR(81,"609090B070000000E090E0A09000000060804020C0000000E040404040000000")
3030 CALL CHAR(85,"88888888700000009090907020000000909090F0900000009060609090000000")
3040 CALL CHAR(89,"9090602020000000F0102040F0000000"):: CALL CHAR(49,"40C04040E000000060902040F0000000")
3050 CALL CHAR(51,"E0106010E000000080A0F02020000000F080E010E00000008080E09060000000")
3060 CALL CHAR(55,"F02040404000000060906090600000006090701010000000"):: CALL CHAR(48,"6090909060000000")
3070 RETURN
3080 CALL CHAR(65,"7E665A425A5A7E007E465A465A467E007E665A5E5A667E007E465A5A5A467E00")
3090 CALL CHAR(69,"7E425E465E427E007E425E465E5E7E007E665A5E5A627E007E5A5A425A5A7E00")
3100 CALL CHAR(73,"7E466E6E6E467E007E7A7A7A5A467E007E5A564E565A7E007E5E5E5E5E427E00")
3110 CALL CHAR(77,"7E5A425A5A5A7E007E5A524A5A5A7E007E425A5A5A427E007E465A465E5E7E00")
3120 CALL CHAR(81,"7E665A5A52427E007E465A46565A7E007E665E6E764E7E007E466E6E6E6E7E00")
3130 CALL CHAR(85,"7E5A5A5A5A667E007E5A5A5A66767E007E5A5A5A425A7E007E5A66665A5A7E00")
3140 CALL CHAR(89,"7E5A5A6676767E007E427A766E427E00"):: CALL CHAR(49,"7E6E4E6E6E467E007E665A766E427E00")
3150 CALL CHAR(51,"7E467A667A467E007E66564276767E007E425E467A467E007E5E5E465A667E00")
3160 CALL CHAR(55,"7E627A766E6E7E007E665A665A667E007E665A627A7A7E00"):: CALL CHAR(48,"7E665A5A5A667E00"):: RETURN
3170 CALL CHAR(65,"10284482FE82C600FC42427C4242FC007C82808080827C00FC4242424242FC00")
3180 CALL CHAR(69,"FE4248784842FE00FE4248784840E0007E80809E92827E00C68282FE8282C600")
3190 CALL CHAR(73,"F82020202020F8003E04040484847800CC5060504844E600E040404040427E00")
3200 CALL CHAR(77,"82C6AA929282C60086C2A2928A86C200F844828282443800FC42427C4040E000")
3210 CALL CHAR(81,"F84482828A443A00FC42427C4844E6007C82807C02827C00FE92101010103800")
3220 CALL CHAR(85,"C682828282827C00C682828244281000C6829292AAC68200C68244384482C600")
3230 CALL CHAR(89,"C682442810103800FE8408102042FE00"):: CALL CHAR(49,"206020202020F8007C82020C3040FE00")
3240 CALL CHAR(51,"7C82021C02827C000C142444FE040400FC80BCC202827C0038409CA2C2443800")
3250 CALL CHAR(55,"FE820408102070007C82827C82827C003844868A72043800"):: CALL CHAR(48,"3A448A92A244B800"):: RETURN
3260 CALL CHAR(65,"384482FE82824400384482FC82827C003844808082443800384482828282FC00")
3270 CALL CHAR(69,"3C4280F080423C00384482F0804020003C40809E82443800448282FE82824400")
3280 CALL CHAR(73,"7C92101010927C007C82820202443800408084F8848244004080808080827C00")
3290 CALL CHAR(77,"28549292828244004442A2928A8444003844828282443800384482FC80804000")
3300 CALL CHAR(81,"384482828A443A00788482FC828242003844807C024438007C92101010101000")
3310 CALL CHAR(85,"44828282824438004482828244281000448282929254280044AA101010AA4400")
3320 CALL CHAR(89,"44828244381010007C82041860827C00"):: CALL CHAR(49,"1030101010927C007C82027E8082FC00")
3330 CALL CHAR(51,"7884021C0284780038448484FE040400F88480FC02827C003840809CA2443800")
3340 CALL CHAR(55,"38448202040810003844827C82827C0038448A7202043800"):: CALL CHAR(48,"38448A92A2443800"):: RETURN
3350 CALL CHAR(65,"3E22447C448888003C22427C4484F8003E2040404080F8003C2242424484F800")
3360 CALL CHAR(69,"3E20407C4080F8003E20407C408080003E20405C4488F8002222447C44888800")
3370 CALL CHAR(73,"3E0810101020F800020204044488F8002222447850888800204040408080F800")
3380 CALL CHAR(77,"37294A524284840022225454548888003E2244444488F8003E22447C40808000")
3390 CALL CHAR(81,"3E2244445488F4003E22447C508888003E40407C0404F800F820404040808000")
3400 CALL CHAR(85,"222244444488F800444448889090E0002121424A5294EC004444283050888800")
3410 CALL CHAR(89,"444488F8204040003E0408304080F800"):: CALL CHAR(49,"20204040408080003E02047C4080F800")
3420 CALL CHAR(51,"3E02047C0408F800444488F8081010003E20407C0408F8003E20407C4488F800")
3430 CALL CHAR(55,"F8081010102020003E22447C4488F8007E4284FC0408F800"):: CALL CHAR(48,"3E2244444488F800"):: RETURN
3440 CALL CHAR(65,"7C4444FCC4C4C400F88888F8C4C4FC00F89898808088F800F8C4C4C4C4C4F800")
3450 CALL CHAR(69,"F08080F0C0C0F000F8C0C0F0404040007CCCCCC0CCC47C00888888FCCCCCCC00")
3460 CALL CHAR(73,"808080C0C0C0C00010101018189878008890A0F8C8C8C80040404040C0C0F800")
3470 CALL CHAR(77,"8CDCAC8C8C8C8C0088C8C8A8D8D8C800F88888C8C8C8F800F88888F8C0C0C000")
3480 CALL CHAR(81,"F8888888A898FC00F88888F8C4C4C400F88880F808C8F800F838202020202000")
3490 CALL CHAR(85,"989898989898F8009898989858502000C4C4C4D4D4ECC4008888502050888800")
3500 CALL CHAR(89,"8888887060606000F88810204098F800"):: CALL CHAR(49,"C040404040E0E000F01010F08080F000")
3510 CALL CHAR(51,"E02020F03030F000C0CCCCFC0C0C0C00F88080F80808F800F0D08080F888F800")
3520 CALL CHAR(55,"F888081020202000784848FCCCCCFC00F88888F818181800"):: CALL CHAR(48,"F88888A8A888F800"):: RETURN
3530 CALL CHAR(65,"3844447C44444400782424382424780038444040404438007824242424247800")
3540 CALL CHAR(69,"7C40407840407C007C404078404040003C40405C444438004444447C44444400")
3550 CALL CHAR(73,"3810101010103800040404040444380044485060504844004040404040407C00")
3560 CALL CHAR(77,"446C545444444400446464544C4C44007C44444444447C007844447840404000")
3570 CALL CHAR(81,"3844444454483400784444785048440038444038044438007C10101010101000")
3580 CALL CHAR(85,"4444444444443800444444282810100044444454545428004444281028444400")
3590 CALL CHAR(89,"44442810101010007C04081020407C00")
3600 CALL CHAR(48,"384444444444380010301010101038003844040810207C003844041804443800")
3610 CALL CHAR(52,"081828487C0808007C4078040444380018204078444438007C04081020202000")
3620 CALL CHAR(56,"38444438444438003844443C04083000"):: RETURN
3630 !PRINT ROUTINE
3640 FOR RW=0 TO 23
3650 PRINT #1:GV$
3660 CALL LINK("PATRN",PP$(),(RW))
3670 FOR CG=1 TO 4
3680 PRINT #1:PP$(CG)
3690 NEXT CG :: PRINT #1:CRLF$
3700 PRINT #1:GV$
3710 FOR CG=5 TO 8
3720 PRINT #1:PP$(CG)
3730 NEXT CG :: PRINT #1:CRLF$
3740 !REMOVE REM TO TEST LINE SPACING
3750 !IF RW=0 THEN BREAK
3760 CALL KEY(0,K,S):: IF K=155 THEN STOP
3770 CALL MEMSET(PP$(),""):: NEXT RW
3780 IF Q>0 THEN CLOSE #1
3790 RETURN
3800 !LINE SPACING
3805 GSL$=CHR$(27)&CHR$(91)&CHR$(92)&CHR$(4)&CHR$(0)&CHR$(0)&CHR$(0)&CHR$(0)&CHR$(216)
3810 GS$=GSL$&CHR$(27)&CHR$(51)&CHR$(24)
3820 ! GRAPHICS L 960 DOTS
3830 !GV$=CHR$(27)&CHR$(76)&CHR$(192)&CHR$(3)  
3835 GV$=CHR$(27)&CHR$(91)&CHR$(103)&CHR$(193)&CHR$(3)&CHR$(1)
3840 ! CARRIAGE & LINE FEED
3850 CRLF$=CHR$(13)&CHR$(10)
3860 RETURN

 

 

 

 

  • Like 2
  • Thanks 1

Share this post


Link to post
Share on other sites

I'd venture to say that absolutely all of the largest Extended BASIC programs are multi-file programs, though. 

 

Like for example Legends 2, which consists of several dozen files, eight of which (by my count) are primarily Extended BASIC program code (a few others being mainly loaders for embedded assembly with very little XB, the rest being data files).  And Old Dark Caves 2, six of the files for which are primarily Extended BASIC program code. 

 

Largest Extended BASIC game in terms of all files used by the program is probably RXB's "In the Dark", at 960KB.

 

Largest in terms of Extended BASIC statements is probably Legends 2, at 4648 Extended BASIC statements, by my count (across all core program files).  

  • Like 5
  • Thanks 1

Share this post


Link to post
Share on other sites

At least in TI BASIC, assuming you don't have any other cartridge in the machine, you can do just one single program. If you have the Editor/Assembler module and 32 K RAM, then all bets are off there too.

 

The largest program I've written for the TI 99/4A is 4000 source code lines long.

  • Like 2

Share this post


Link to post
Share on other sites
10 minutes ago, GDMike said:

Rem statements count?

Fair question.  But I would say most programs which are already directly butting their heads against size limitations in a serious way don't contain any significant number of REM statements or XB '!' comments (if they contain any at all), since they're already scrambling for free bytes anywhere they can.  Legends 2 contains a whole lot of this sort of thing:

 

720 CALL PP(P2$,TD) :: _2=D2 :: GOTO 898
730 CALL CW(P2$) :: CALL C(@R,F2,H) :: CALL KS(P,55,1) :: _R=P+4 :: IF P=7 THEN 700 ELSE IF P2<P THEN 751
731 IF Z2<_R THEN 750 :: ON P GOTO 754,740,757,754,734,757

 

Which is to say, it's not wasting any space on comments, when there's no room for variables and subroutines with names greater than two characters long, and _ and @ are variable names used by the program. 

  • Like 2
  • Thanks 1

Share this post


Link to post
Share on other sites

Note also that several of the earlier TI cartridges were coded in BASIC and used the BASIC Interpreter to execute. The process for that was described in one of the system design documents and specifically allowed for weirdly large programs stored in GROM.

  • Like 5

Share this post


Link to post
Share on other sites
19 minutes ago, Ksarul said:

Note also that several of the earlier TI cartridges were coded in BASIC and used the BASIC Interpreter to execute. The process for that was described in one of the system design documents and specifically allowed for weirdly large programs stored in GROM.

Yep, that's what I was thinking... does the PRK program count? :)

 

http://shawweb.myzen.co.uk/stephen/prksource.htm

 

  • Like 1

Share this post


Link to post
Share on other sites

I routinely maxed out the TIBASIC memory, back in the day, with the programs I wrote. 16k was soooo small.

  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

I remember all that detective work Jan did. He's now quite old and have given up using the TI 99. I know that for sure, since I have his hardware in my possesion.

  • Sad 1

Share this post


Link to post
Share on other sites
On 2/8/2022 at 3:47 AM, apersson850 said:

I remember all that detective work Jan did. He's now quite old and have given up using the TI 99. I know that for sure, since I have his hardware in my possesion.

Looking at the header of PRK, and trying to see where the CALLs are in the binaries.

 

PRK Header:

AA 01 01 00 00 00 60 1A 00 00 61 50

 

GROM Header from TI Tech pages:

Bytes Content  
>x000 >AA indicates a standard header  
>x001 Version number  
>0xx2 Number of programs (optional)  
>x003 Not used  
>x004 Pointer to power-up list (>0000 if none)
>x006 Pointer to program list (>0000 if none)
>x008 Pointer the DSR list (>0000 if none)
>x00A Pointer to subprogram list (>0000 if none)

 

So, I'm guessing that the program list is at >601A and the subprogram list is at >6150.  But this is GROM, and those are ROM addresses, no?

 

If it's a relative address for the GROM, >601A to >604F are for the program list:

 

C2 C8 02 38 30 B0 C9 65 90 00 9D C8 01 0C B7 40 B3 45 24 B3 5C B6 00 84 5C B0 C9 66 1C 00 5C BE 51 00 00 00 00 00 00 00 00 00 66 1C 88 30 65 B8 C0 38 65 AE 81 63

 

>6050 to >60AF (I have no idea how long this goes on for) is for the subprogram list:

 

65 A4 C0 31 65 9A C0 24 65 97 C0 18 65 96 C0 0C 65 94 86 9A 65 92 85 93 65 90 C0 00 64 28 B7 E5 64 14 B7 CE 64 0A 80 F4 64 00 B7 C3 63 FE B7 BE 63 FA 86 CA 63 F8 B7 B7 63 F6 B7 AB 63 EE B7 9F 63 EC 86 9A 63 BA B7 89 63 B0 81 89 63 A6 B7 73 63 9C B7 64 63 97 B7 59 63 83 B7 50 63 7E B7 3E

 

  • Like 1

Share this post


Link to post
Share on other sites

RXB 2020 on has CALL FILES(0) that actually works.

Put RXB 2020 or later into a console and do a CALL FILES(0) you will have more VDP memory then ever before in XB.

 

I wrote a version that does not need the DISK CONTROLLER to work it is in GPL.

  • Like 1

Share this post


Link to post
Share on other sites
10 hours ago, acadiel said:

Looking at the header of PRK, and trying to see where the CALLs are in the binaries.

 

prkheader.thumb.jpg.003550b283058869d92f96267096a056.jpg

 

aa 01 01 00 00 00 60 1a 00 00 61 50...

 

Yes, >6150 is the start of the SUBPROGRAM list...

 

Find the first entry at >6150...

 

61 56 74 c2 01 44 61 5c d2 50 01 41 61 62 74 b4...

 

>6156 - pointer to next entry in the list.

 

>74C2 - entry address of first GPL subprogram.

 

>01 - length of 1st subprogram's name.

 

>44 - 1st subprogram's name, in ASCII(CALL D)

 

Find the second list entry at >6156...

 

>615C - pointer to next entry in the list.

 

>D250 - entry address of second GPL subprogram.

 

>01 - length of 2nd subprogram's name.

 

>41 - 2nd subprogram's name, in ASCII(CALL A)

...and so on.

 

The list need not be contiguous, that's just the way they chose to do it here.

  • Like 2

Share this post


Link to post
Share on other sites
 
prkheader.thumb.jpg.003550b283058869d92f96267096a056.jpg
 
aa 01 01 00 00 00 60 1a 00 00 61 50...
 
Yes, >6150 is the start of the SUBPROGRAM list...
 
Find the first entry at >6150...
 
61 56 74 c2 01 44 61 5c d2 50 01 41 61 62 74 b4...
 
>6156 - pointer to next entry in the list.
 
>74C2 - entry address of first GPL subprogram.
 
>01 - length of 1st subprogram's name.
 
>44 - 1st subprogram's name, in ASCII(CALL D)
 
Find the second list entry at >6156...
 
>615C - pointer to next entry in the list.
 
>D250 - entry address of second GPL subprogram.
 
>01 - length of 2nd subprogram's name.
 
>41 - 2nd subprogram's name, in ASCII(CALL A)
...and so on.
 
The list need not be contiguous, that's just the way they chose to do it here.

Thanks! So 6150 referred to GROM offset 150. I saw the 6 and - with the lack of ROM, I wondered if it was relative from the start of the rom. Wonder why the 6 is there?
  • Like 1

Share this post


Link to post
Share on other sites

The first three GROMs are in the console, having addresses...

 

>0000 thru >5FFF...

 

the remaining 5, GROMs can be in the cartridge port at addresses...

 

>6000 thru >FFFF.

 

...Simply confusing!:-D

Edited by HOME AUTOMATION
  • Like 2

Share this post


Link to post
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.
Note: Your post will require moderator approval before it will be visible.

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.

Loading...

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...