s--c«FRANCOMPUTER

Tutto un mondo | di programmi per Voi

e il Vostro

Li dea Computer

@Peran teen rr monro

| FRANCOMPUTER |

CLUB TEXAS INSTRUMENTS TI 99/4A

PROGRAMMI - SCAMBI > VASEGNAMENTO

CORSO FOGAZZARO 174 (0444) VICENZA 42678

CO

ME C ame Y ; 4 _

1) z nh di

È ASS Ci P ii contento.

SS ES Ò SS NR x y

fancoa |

OMAGGIO A MOZART...

WORD PROCESSOR IN ITALIANO. ..10.:154 PROGRAMMA CHAR MULTIHOME... 000000006 VOLO DEL CALABRONE. ....:00000000000@ PROBABILITA CIN GRAFICA). ...000001 STATISTICA PLURIPROGRAMMA.....0:0013 IDONEITA’ ALLO SPORT. ...000000000093 MANAGER GIOCO DI FINANZA... 0000000094 CAVE ADVENTURE. 00000000 rontestos0 9

TEST UDIBILITA'’ UMANA... 0000000000ì SDESY ( GRAFICA )...c0c000000000003 MISTERY SPEEL (FAVOLOSO) ....01000003 IL TI CARDIOLOGO, 0000000000100 0003 FORZA KTALIA...ccurvesosscocsenrsesel AIR FLYGHT (AEREI). 610000000000 000S IPPICA. cuc0c00r000r00g0 ero vece ses00

downloaded from www.ti99iuc.it

«FRANCO» UN AMICO DEL VS. COMPUTER Corso Fogazzaro 174 - Tel. 42.678 - VICENZA

100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 350 340

870 880 890 900 910 920 9350 940 950 960 970 980 990

1000 1010 1020 1030 1040 1050 1060 1070 1080 1090 1100 1110 1120 1150 1140 1150 1160 1170 1180 1190 1200 1210 1220 12350

350

360

OPTION BASE 1 FOR TEMPOB=1

DIM N(295)

FOR I=1 TO 295 Ste

READ A 380

NCI)=A 390 GOSUB 1360 NEXT I 400 VOL=4 VOL=2 410 NEXT TEMPOB GOSUB 880 420 VOL=2 GOSUB 1020 430 GO0SUB 1460 VOL=5 440 VOL=5 GOSUB 890 450 GOSUB 1460 GOSUB 1020 460 VOL=2 VOL=2 470 GO0SUB 1520 FOR TEMPOA=1 TO 2 489 VOL=1 GOSUB 1080 490 GOSUB VOL=5

GOSUB 1080

VOL=2

GOSUB 1170

VOL=5

GOSUB 1170

VOL=2

GOSUB 880

GOSUB 1260

NEXT TEMPOA

REM AAAAAAAARARARAAARARA

FOR I=1 TO 4 CALL SOUND(100,N(I),VOL) NEXT I

CALL SOUND(400, 262, VOL) FOR I=5 TO 8

CALL SOUND(100,N(I),VOL) NEXT I

CALL SOUND (400,330, VOL) FOR I=9 TO 20

CALL SOUND(100,N(I), VOL) NEXT I

CALL SOUND (400, RETURN

REM ARARARARA22222222222

FOR I=21 TO 48 STEP 2

CALL SOUND (200,NCI), VOL,N(I+1), VOL) NEXT I

CALL SOUND (400,330, VOL)

RETURN

REM BBBBBBBBEBBBBBBBBB

FOR I=49 TO 56 STEP 2

CALL SOUND (200, NI), VOL,N(I+1),VOL) NEXT I

FOR I=57 TO 60

CALL SOUND(100,N(1), VOL)

NEXT I

CALL SOUND (400, 248, VOL, 294, VOL) RETURN

REM BBBBBBBBB333333333

FOR I=61 TO 68 STEP 2

CALL SOUND (200, NC1), VOL,N(I+1), VOL) NEXT I

FOR 1=69 TO 72

CALL SOUND(100,N(I),VOL)

NEXT I

CALL SOUND (400,208, VOL, 247, VOL)

523,

VOL)

TO 2

CALL SOUND (200, 220, VOL) CALL SOUND (200, 248, VOL) CALL SOUND (400,278, VOL)

OMAGGIO A

GOSUB 1710 FOR FINALE=1 TO 2

VOL=1

CALL SOUND (300,554, VOL) CALL SOUND(100,554, VOL) GOSUB 1830

GOSUB 1910

CALL SOUND (600,494, VOL) CALL SOUND (200,554, VOL) GOSUB 1830

CALL SOUND (25,588, VOL)

CALL SOUND (775,330, VOL, 440, VOL, 554, VOL)

FOR TR=1 TO 4

CALL SOUND (25,584, VOL) CALL SOUND (175,494, VOL) NEXT TR

CALL SOUND (300,440, VOL) VOL=4

CALL SOUND(50,330, VOL) CALL SOUND (50,440, VOL) NEXT FINALE

VOL=0

FOR FINALA=1 TO 2

CALL SOUND (600, 278, VOL, 440, VOL) CALL SOUND (200,554, VOL)

CALL SOUND (600, 278, VOL, 330, VOL, 440, VOL)

CALL SOUND (200, 554, VOL) NEXT FINALA FOR FINALB=1 TO 2

CALL SOUND (200,278, VOL, 330, VOL, 440, VOL)

CALL SOUND (200,554, VOL) NEXT FINALB FOR FINALC=1 TO 3

CALL SOUND (400, 278, VOL, 330, VOL, 440, VOL)

NEXT FINALC GOTO 860

1600 NEXT I 1240 RETURN

1610 CALL SOUND(400,220, VOL) i pai Rea iaia 1620 FOR I=112 TO 143 2 = 2 1630 CALL SOUND(100,N(I),VOL) iu ira RENE 1640 NEXT I 1650 FOR I=220 TO 247 iL =vcg apeef ANI ade ra ina 1660 CALL SOUND(100,N(I),VOL) EA INR tuo i sua 370, VOL) 1320 NEXT I i i

, , 1590 RETURN 00 DE FARO VOLI 1700 REM FFFFFFFFFFFFFFFFF 2a 1710 FOR I=248 TO 279 STEP 2 LL fund La ae 1720 CALL SOUND(200,NCI) 3 x 1730 NEXT I 20 MOL NATALI 400) 1370 CALL SOUND(200,N(1), VOL)

13580 NEXT I

1740 FOR I=2 48 TO 267 STEP 2 1390 CALL SOUND (400,278, VOL)

1750 CALL SOUND(200,N(I),VOL,N(I+1),VOL)

1760 NEXT I 1400 FOR I=102 TO 111

1770 FOR I=280 TO 287 STEP 2 1410 CALL SOUND(200,N(1),VOL)

1780 CALL SOUND(200,NC1),VOL,N(I+1),VOL) e NATI

1790 NEXT I 1430 CALL SOUND (400,220, VOL) 0 2 1440 RETURN

a10 Fia i ae 1450 REM EEEEEEEEEEEEEEEEEE

1820 REM 666GGGGGGGEGGGGGGG 1460 FOR I=112 TO 171

1830 CALL SOUND (800,330, VOL, 440, voL,554, vo.) 1479 CALL SOUND(100,NCI), VOL)

% 4 > 1480 NEXT I 15) AI 1490 CALL SOUND(400, 278, VOL) 1860 CALL SOUND(100,N(I),VOL) 1500 RETURN 1870 NEXT I dl Do ,EFErerE00922200309 1880 CALL S È 52 =172 4 CALL SOUND(800, 370, VOL, 440, VOL, 588, VOL) (530 CALL SDNNTIGO NI) VI 1900 REM 66GGGG662222222222 1540 NEXT I 1910 FOR TR=1 TO 8 1550 FOR I=188 TO 199 1920 CALL SOUND (25,588, VOL) 1560 CALL SOUND(100,N(I),VOL) 1930 CALL SOUND(75,554, VOL) 1570 NEXT I 1940 NEXT TR 1580 FOR I=204 TO 219 1950 RETURN 1590 CALL SOUND(100,N(I),VOL)

19560 REM LRZLEEZZEZZEAEZZA ZE ZZZ ZARA ZZZ ZZZ ZZZ ZZZ ALA LARE LI

1970 DATA 247,220, 208,220, 294, 262, 248, 262, 350, 330, 312,330, 494, 440, 416,440, 494,44 0,416,440

1980 DATA 440,440,525,524, 392,494, 350, 440, 330, 392, 350, 440,392, 494, 350, 440, 330, 39 2,350,440

1990 DATA 392,494,370,440,330,392,312,370

2000 DATA 262,330, 294, 350, 330, 392, 330, 392,440, 392, 350, 330, 220, 262, 248, 294, 262, 33 0, 262,330, 350,330, 294, 262

2010 DATA 440,494,524,494,440,416,440,330,349, 294, 248, 262, 248, 220, 248

2020 DATA 220, 248, 278, 248, 220, 208, 185, 208, 220, 248, 208, 165, 220, 248, 220, 248, 278, 24 8, 220, 208, 195, 248, 208, 165

2030 DATA 554,589,554,494,440,494,440,416,370,440,416,370,350,370,416,350, 278,31 2,350, 278,370, 350,370, 416

2040 DATA 440,416,440,494,554,524,554,524,554,599,554,494,440,494,440,416

2050 DATA 370,440,416,370,330,370,416,330, 277,312, 330, 278, 312,330, 370,312, 262, 27 8,312, 262

2060 DATA 330,294, 278,248, 220, 248, 278, 294,330, 370,416, 440,440, 416,370,330, 330, 29 4,278, 248, 220, 248, 278, 294

2070 DATA 330,370,416,440, 466, 466,494, 494,440,416,370,330

2080 DATA 330,294, 278, 248, 278,330, 220, 278, 248, 294, 208, 248

2090 DATA 554,466,370,550, 588,554, 588, 554, 599, 554, 599, 554, 598, 554, 494,440

2100 DATA 416,440,494,416,440,494,554, 440, 350, 370,416, 350

2110 DATA 220,440, 248, 494, 278,554, 278, 554, 220, 440, 248, 494, 278, 554

2120 DATA 248,494, 220,440, 208,416, 185,370, 208, 416, 220, 440, 248, 494, 208,416, 165,33 0

2130 DATA 185,370, 248, 494, 208,416, 165,322, 599,554, 494,554, 598, 554, 494, 558

2140 END

WORD PROCESSOR

100 110 120 150 140 150 151

REM WORDPROCESSOR

REM FRANCOMPUTER CLUB

REM

CALL CLEAR

INPUT “COLORE LETTERE ? "32 IF (Z<=0)+(Z>16)THEN 140 INPUT "COLORE SCHERMO ? ":Y

152 IF (Y=0)+(Y}16)THEN 151

160 CALL CLEAR

170 PRINT TAB(9); "attendere"

180 REM

190 REM CUSTOM CHAR SET 200 DATA 00101010001 530 DATA 007844784478 210 DATA 002828 540 DATA 003C4040403C 220 DATA 00287C287C28 550 DATA 007844444478 860 DATA 00003C40403C 230 DATA 00382070207C 560 DATA 007C4078407C 870 DATA 00043C44443C 240 DATA 006468102C4C 570 DATA 00704078404 880 DATA 00003844784038 250 DATA ‘00205020545824 580 DATA 003C44404C3C 890 DATA 00384070404 260 DATA 00101 590 DATA 004444704444 900 DATA 00003844443C0478 270 DATA 000810101008 600 DATA 003810101038 910 DATA 004078444444 280 DATA 00201010102 610 DATA 000404044438 920 DATA 00100010101 290 DATA 002828 620 DATA 004448704844 930 DATA 0004000404044438 300 DATA 0010107C101 630 DATA 00404040407C 940 DATA 004048704844 310 DATA 0000000060204 640 DATA 00446C544444 950 DATA 00301010101 320 DATA 0000007C 650 DATA 004464544044 960 DATA 000068545454 330 DATA 00000000606 660 DATA 007C4444447C 970 DATA 000078444444 340 DATA 0000000060204 570 DATA 00784444784 980 DATA 000038444438 350 DATA 00384C546438 680 DATA 003844444C3C 990 DATA 000078444478404 360 DATA 001030101058 690 DATA 00784478504C 1000 DATA 00003C44443C0404 370 DATA 00384408107C 700 DATA 003C40380478 1010 DATA 00005864404 380 DATA 003844184438 710 DATA 007C1010101 1020 DATA 00003840380438 390 DATA 000818287C08 720 DATA 004444444438 1030 DATA 002070202038 400 DATA 007C403C047C 730 DATA 00444444281 1040 DATA 00004444443C 410 DATA 001020784438 740 DATA 004454545428 1050 DATA 00004444281 420 DATA 00700810202 750 DATA 004428102844 1060 DATA 000044545428 430 DATA 003844384438 760 DATA 00442810101 1070 DATA 000044283844 440 DATA 0038443C081 770 DATA 007C0810207C 1080 DATA 00004444443C047C 450 DATA 003030003035 780 DATA 001810101018 1090 DATA 00007C08107C 460 DATA 0030300030302 790 DATA 004020100804 1100 FOR K=33 TO 122 470 DATA 000204080402 800 DATA 00301010103 1110 READ C$ 480 DATA 00007C007C 810 DATA 00102844 1120 CALL CHAR(K,C$) 490 DATA 00201008102 820 DATA 00000000007C 1130 NEXT K 500 DATA 00384418001 830 DATA 001008 1140 CALL CLEAR 510 DATA 00384C4C4038 840 DATA 00003844443C 1150 GOSUB 5090 520 DATA 003844447044 850 DATA 004078444478 1160 PRINT " WORDPROCESSOR"::::: 1290 IF S=0 THEN 1280 1170 PRINT " BY FRANCOMPUTER CLUB" 1300 IF K<>52 THEN 1320 1180 PRINT " VICENZA 1310 TT=1 1190 PRINT r:::33:::: 1520 DIM A$(100) 1200 GOSUB 5140 1330 REM - MASTER MENU 1210 CALL HCHAR(1,1,30,32) 1340 CALL CLEAR 1220 CALL VCHAR(2,2,30,22) 1350 GOSUB 5090 1230 CALL VCHAR(2,32,30,22) 1360 PRINT " £££ MENU £££":: 1240 CALL HCHAR(24,1,30,32) 1370 PRINT TAB(5);"O. SCRIVE TESTO" 1250 GOSUB 5040 1380 PRINT TAB(5);"1. VISUALIZZA” 1260 CALL CLEAR 1390 PRINT TAB(5);"2. SCRIVE SU STAMPANTE" 1270 PRINT "BATTERE UN TASTO,GRAZIE" 1400 PRINT TAB(5);"3. CANCELLA LINEA" 1280 CALL KEY(0,K,S) 1410 PRINT TAB(5);"4. INSERISCE LINEA"

1420 1430 1440 1450 1460 1470 1480 1490 1500 1510 1520 1530 1540 1550 1560 1570 1580 1590 1600 1610 1620 1630 1640 1650 1660 1670 1680 1690 1700 1710 1720 1730

IF

IF

2050 2060 2070 2080 2090 2100 2110 2120 IRA

2140 2150 2160 2170 2180 2190 2200 2210 2220 2230 2240 2250 2260 2270 2280 2290 2300 2310 2320 2330

PRINT PRINT PRINT PRINT PRINT PRINT PRINT GOSUB GOSUB CALL KEY(0,K,S)

ue

TAB(5); "5. TAB(5); "6. TAB(5);"7. TAB(5); "8.

RIPRENDE LINEA" RIPRENDE PAROLA" SALVA SU NASTRO" LEGGE DA NASTRO" TAB(5);"9. NUOVO TESTO" TAB(5);"?. ISTRUZIONI":: TAB(8); "TASTO ?"

5050

5140

S=0 THEN 1510

CALL CLEAR A=K-48

Kk=48 THEN K=49 THEN 4110 K=50 THEN 2560 (K<54)*(kK>50) THEN 1880 (=54 THEN 3480 k=55 THEN 3940 K=56 THEN 4020

THEN 1810

(=57 K=63 THEN 4790

2080

GOTO 1330 GOSUB PRINT GOSUB PRINT PRINT PRINT GOSUB CALL KEY(0,KEY,S)

5090 “SCEGLI IL SET DI CARATTERI"::: 5050 TAB(6);"1.PRINTER SET (GRANDE) "

"E? 5140

S<1 THEN 1720

TEMP=L

L=B

GOTO 2400

GOSUB 5090

PRINT "PAGINA PRONTA PER TESTO

IF TT=1 THEN 2110 ELSE 2120

PRINT "*=MAIUSCOLE"

PRINT "DIVISO=(/)VIRGOLA >=CAPOVERSO"

PRINT "BB=LINEA VUOTA":::

PRINT

GOSUB

GOSUB 5050

PRINT L+1

IF L+t1c>527

5140

THEN 2210

CALL SOUND(1000,440,2,444,2,448,2)

INPUT A$(L+1) LC=LEN(A$(L+1))

LL=LC

IF LC>28 THEN 2250 ELSE 23500 FOR I=LL TO 1 STEP -1

TAB(6);"2.CUSTOM SET(PICCOLO) "::: ACCESA LA TUA STAMPANTE ?":::

1740 1750 1760 1770 1780 1790 1800 1810

1820.

1850 1840 1850 1860 1870 1880 1890 1900 1910 1920 19350 1940 1950 1960 1970 1980 1990 2000 2010 2020 2030

2040

IF KEY=77 THEN 1340

IF (KEY<49)+(KEY>50)THEN 1850 IF KEY<>49 THEN 1790 SET$="TP.E"

IF K=49 THEN 4130 ELSE 2580 SET$="TP.U.E"

IF k=49 THEN 41350 ELSE 2580 FOR I=1 TOL

A$(I)=""

NEXT I

L=0

PRINT "FILE NOW BLANK"

GOSUB 5040

GOTO 1340

INPUT "NUMERO LINEA ?":B

IF {B<1)+(B>L)=-1 THEN 1900 ELSE 1930 PRINT "LINEA INESISTENTE" GOSUB 5040

GOTO 1330

PRINT "OLD LINEA £";B

PRINT A$(B)

FOR PSE=1 TO 250

NEXT PSE

ON A GOTO 1340, 1340, 3270,3350, 1980

FRINT “ENTER LINEA NUOVA: "

INPUT A$(H)

IF SEG$(A$(B),1,2)<>"BB" THEN 2030 A$(B)=" "

GOTO 1330

IF LEN(A$(E))}28 THEN 2230 ELSE 133 REM -ENTER TEXT

PARTO CON LA LINEA ";L+t1

PER=(*) VIRGOLETTE

IF SEG$(A$(L+t),I,1)<>CHR$(94)THEN 2280

LC=LC-1

NEXT I

IF LC>28 THEN 2360

IF LEN(A$(+1))<1 THEN 2180

IF SEG$(A$(L+1),1,2)="Z7" THEN 1340 IF SEG$(A$(L+1),1,2)<>"BB" THEN 2340

A$(L+1)=" "

DOLLARO= ($)L

PRINT “"BATTI UN TASTO PER IL MENU" CALL KEY(0,K,5)

IF S=0 THEN 5000

GOTO 1330

CALL SOUND (4000, 10000, 30) CALL SOUND(4000, 10000, 30) FOR BEEP=1 TO 3

CALL SOUND(50,1000,1) NEXT BEEP

RETURN

FOR DIS=1 TO 12

CALL SCREEN(Y)

CALL COLOR(DIS,Y,Y)

NEXT DIS

RETURN

FOR APP=1 TO 12

CALL COLOR(APP,Z,Y)

NEXT APP

RETURN

END

4990 5000 S010 5020 5030 5040 5050 5060 5070 5080 9090 5100 S110 5120 5150 5140 5150 5160 5170 5180

2340 L=L+1 2350 GOTO 2180

2360 REM -SHORTEN LONG LINE

2370 REM BELL

2380 CALL SOUND(100,-5,1)

2390 L=L+1

2400 PRINT "LINEA TROPPO LUNGA-RIDUCO COME SEGUE: " 2410 FOR I=28 TO 1 STEP -1

2420 IF SEG$(A$(L),I,1)=" " THEN 2470

2430 NEXT I

2440 A$(L)=""

2450 L=L-1

2460 GOTO 2480

2470 A$(L)=SEG$(A$(L),1,I-1)

2480 PRINT A$(L)

2490 IF (TEMP=B)#(TEMP<>0)THEN 2500 ELSE 2510 2500 L=TEMP

2510 IF A$(L+1)="" THEN 2180

2520 IF (L>TEMF)*(TEMP=0)THEN 1340

2530 L=TEMP

2540 GOTO 2210

2550 REM --PRINT TEXT

2560 C=0

2570 GOTO 1650

2580 GOSUB 5050

2590 PRINT TAB(5); "PRONTO A SCRIVERE SCEGLI IL FORMATO: " 2600 PRINT "O = NUMERATO 1 = SINGOLO SFAZIO 2 = DOPPIO S PAZIO"

2610 CALL KEY(0,kK,5) 2620 IF S=0 THEN 2610

2530 CALL CLEAR

2640 IF K=77 THEN 1330

2650 B=kK-48

2660 IF (K<48)+(K>52)THEN 2590

2670 IF (B<0)+(B>2)THEN 2560

2680 OPEN £1:SET$, OUTPUT

2690 FOR I=1 TOL

2700 P$=A$(I)

2710 IF B<%0 THEN 2730

2720 PRINT £1i:1;

2730 IF LEN(P$)=0 THEN 3120

2740 PRINT £15TAB(3);"";

2750 FOR K=1 TO LENtP$)

2760 P=ASC(SEG$(P$,K,1))

2770 REM -- CONVERT UNSHIFTED LETTERS TO LOWER CASE 2780 IF (P>*64)*(P<91)THEN 2790 ELSE 2810

2790 P=P+32

2800 GOTO 3000

2810 REM -- CONVERT SHIFTED LETTERS TO UPPER CASE 2820 IF (P>96)#(P<123)THEN 2830 ELSE 2850

2830 P=P-32

2840 GOTO 3000

2850 REM -- CONVERT SLASH(/) TO COMMA(,) - * TO " AND > TO INDENT 2860 IF P<>47 THEN 2890 2870 P=44

2880 GOTO 3000

2890 IF P<>42 THEN 2920

2900 P=34

2910 GOTO 3000

2920 IF P<>652 THEN 2950

2930 GOSUB 3160

2940 GOTO 3000

2950 IF P=94 THEN 2960 ELSE 2980 2960 GOSUB 3200

2970 GOTO 3000

2980 IF P<>95 THEN 3000 ELSE 2990 3480 INPUT "PAROLA DA CAMBIARE: ":R$

2990 GOSUB 3230 3490 R$=" "aRsu" " 3000 PRINT £1:CHR$(P); 3500 D=LEN(R$) LE 3010 REM - TEXT FOR BLANK LINE (BB) 3510 IF D>2 THEN 3560 3020 IF (P=66)#*(LEN(P$)=2)THEN 3070 520 PRINT "ERRORE 3030 NEXT K 3530 FOR PSE=1 TO 250 3040 IF B<>2 THEN 3070 3540 NEXT PSE 3050 PRINT £1 3550 GOTO 3480 3060 C=C+1 3560 N=0 3070 PRINT £1 3570 INPUT "NUOVA FAROLA?":N$ 3080 C=C+1 3580 INPUT "DALLA LINEA (O=TUTTE)?":B 3090 CALL KEY(0,K,S) 3590 IF B<=L THEN 3620 3100 IF S=0 THEN 3120 3600 PRINT "NESSUN”ALTRA LINEA" 3110 GOTO 3130 3610 GOTO 3580 3120 NEXT I 3620 IF B>1 THEN 3660 3130 CLOSE £1 3630 C=L 3140 CALL SOUND(50,262,0,524,0) 3940 E _ 3150 GOTO 1330 35650 GOTO 3690 3160 PRINT £1:TAB(4); 3660 INFUT "FINO ALLA LINEA: ":C 3170 PRINT TAB(1); 3670 IF (C<B)+(C>L)<>-1 THEN 3690 3180 P=32 3680 C=L 3190 RETURN 3690 PRINT " CERCO " 3200 P=ASC(SEG$(P$,K#1,1)) RE 3210 K=K+1 3710 P$= &A$ CK.) & 3220 RETURN 3720 IF LEN(P$)<D THEN 3790 3230 PRINT £1:TAB(15); 3730 A=LEN(P$)+1-D 3250 RETURN 3750 IF R$<>SEG$(P$,I,D)THEN 3780 s 3760 GOSUB 3830 3260 REM -- DE LINE d Ss ii DE 3770 P$=5SEG$(P$,2,LEN(P$)-1) 3280 FOR I=B TOL 3780 NEXT I 3290 A$(I)=A$(1+1) SET. È 3300 NEXT I 3800 PRINT Ni" CAMBI FATTI 3310 A$(L+1)="" 3810 GOSUB 5040 3320 GOTO 1340 3820 GO0T0 1340 3330 REM 3830 CPOS=POS(P$,R$,1) 3340 REM -- INSERT LINE 3840 IF CPOS<>0 THEN 3860 3350 L=L+1 3850 RETURN 3 = :$,2,CPOS-1) 3360 FOR I=L TO B+1 STEP -1 SB60 T$(1)=5E6$(P$,2, 3370 A$(I)=A$(I-1) 3870 T$(2)=SEG$(P$,CPOS+D,LEN(P$)-1) 3380 NEXT I ) 3890 P$=T$(1)&NS&" "&T$(2) 3390 PRINT "ENTER NUOVA LINEA": n, e 3400 GOSUB 5050 3 = 3410 ASCBI="= 3910 PRINT "LINEA £"5K 3420 INPUT A$(B) 3920 FRINT A$(K) 3430 IF SEG$(A$(B),1,2)<>"BB" THEN 3450 3930 RETURN 3440 AS(B)=" " VEE "3940 PRINT "REGISTRATORE PRONTO: " 3450 GOTO 1340 3950 OPEN £1:"CS1", INTERNAL, OUTPUT, FIXED 192 3460 REM 3960 PRINT £1:L 3470 REM -- REPLACE WORD 3970 FOR I=1 TO L+5 STEP 6 3980 PRINT £1:A$(I),A$(I+1),A$(I+2),A$(I+3),A$(I+4),A$(I+5) 3990 NEXT I

4000 CLOSE £1

4010 GOTO 1340

4020 PRINT "REGISTRATORE PRONTO: "

4030 OPEN £1:"CS1", INTERNAL, INPUT ,FIXED 192 4040 INPUT £1:X

4050 FOR I=L+1 TO X+L+5 STEP 6

4060 INPUT £1:A$(I),A$(I+1),A$(I+2),A$(I+3),A$(I+4),A$(I+5) 4070 NEXT I

4080 L=L+X

4090 CLOSE £1

4100 GOTO 1340

4110 REM PRINT FINAL TEXT ON SCREEN ONLY 4120 C=0

4130 PRINT "SCEGLI IL FORMATO:"::: 4440 IF P<>94 THEN 4470

4140 PRINT TAB(8); "O=NUMERATO" 4450 GOSUB 4690 4150 PRINT TAB(8);"1=SINGOLO SPAZIO" 4460 GOTO 4490 4160 PRINT TAB(8);"2=DOPPIO SPAZIO"::: 4470 IF P<>95 THEN 4490 4170 GOSUB 5050 4480 GOSUB 4720 4180 CALL KEY(0,k,S) 4490 PRINT CHR$(P); ‘4190 IF S=0 THEN 4180 4500 CALL KEY(0,KE,ST) 4200 CALL CLEAR 4510 IF ST«<1 THEN 4530 4210 B=K-48 320 G60T0 13530 4220 IF (K>%48)+(k<52)THEN 4240 ELSE 4130 45350 REM TEST FOR BLANK LINE 4230 IF (B<0)+(B>2)THEN 4120 4540 IF (FP=66)*(LEN(P$)=2)THEN 4590 4240 FOR I=i TOL 4550 NEXT K 4250 P$=A$(I) 4560 IF B<>2 THEN 4590 4260 IF B<>0 THEN 4280 4570 PRINT 4270 PRINT I 4580 C=C+1 4280 IF LEN(P$)=0 THEN 4640 4590 PRINT 4290 PRINT ""; 4600 P=32 4300 FOR K=1 TO LEN(P$) 4610 C=C+1 43510 P=ASC(5SEG$(P$,k,1)) 4620 IF CéS1 THEN 4640 43520 IF (P>64)#(P<91)THEN 4350 ELSE 4350 4630 C=0 4350 P=P 4640 NEXT I 43540 GOTO 4490 4650 GOTO 4750 4350 IF (P>96)*(P<123)THEN 4560 ELSE 4380 4660 PRINT TAB(1); 4560 P=P 4570 P=32 ‘4370 GOTO 4490 46580 RETURN 43580 IF P<>47 THEN 4410 4690 P=ASC(SEG$(P$,k+1,1)) 4590 P=44 4700 K=k+1 4400 GOTO 4490 4710 RETURN 4410 IF Pf>652 THEN 4440 4720 PRINT TAB(15); 4420 GOSUB 4660 4730 F=32 4430 GOTO 4490 4740 RETURN

4750 PRINT " BATTI 1. PER CONTINUARE"

4760 CALL KEY(0,K,5)

4770 IF S=0 THEN 4760

4780 GOTO 1260

4790 CALL CLEAR

4800 REM INSTRUCTIONS

4810 PRINT "Q@UESTO PROGRAMMA DISPONE DI 100 LINEE DI TESTO"::

4820 GOSUB 5040

4840 PRINT “SCRIVE IN LETTERE MINUSCOLE (CORSIVO) OPPURE IN LETTERE MAIUSCOLE" 4850 GOSUB 5040

4860 PRINT "PER OTTENERE LE MAIUSCOLE BATTERE UN ""*"" PRIMA DI": "OGNI LETTERA

4870 PRINT "OPPURE SI POSSONO USARE I TASTI DI SHIFT O ALPHA LOCK"::

4880 GOSUB 5030

4890 PRINT "PER OTTENERE UNA LINEA VUDTA BATTETE ""BB"" O "">"""

4900 PRINT "SEGUITO DA UN APFROPRIATO NUMERO DI SPAZI":::

4910 GOSUB 5040

4920 PRINT "SE SI BATTE UNA LINE TROPPO LUNGA ESSA POTRA” ESSERE ACCORCIATA 0 TOLTA DEL TUTTO"

4930 PRINT "VERRA? COMUNQUE VISUALIZZATASULLO SCHERMO GIA” CORRETTA.LE LINEE CHE AVRANNO PIU” "

4940 PRINT "DI 28 CARATTERI (COMPRESI GLI SFAZI) CONTINUI, SARANNO TOLTE COMPLE TAMENTE": ::

4950 GOSUB 5030

4960 PRINT "DOPO 52 LINEE SI AVRA” UN SEGNALE ACUSTICO INDICANTE CHE E’ STATA COMPLETATA .UNA PAGINA DI TESTO"

4970 PRINT "DI UNA STAMFANTE A4 SPAZIATA SINGOLA"::

4980 PRINT "TESTI SCRITTI SUL VIDEO O STAMPANTE POSSONO ESSERE FERMATI BATT

ENDO UN TASTO":::

Programma "CHAR"

di Corsini Paolo

versione: Ex.

downloaded trom

Preambolo ......

Ho cominciato questo programma quasi per gioco, poichè mi diverti- vo a trasformare i caratteri degli altri computers ( Spectrum, VIC 20 e CBM 64 specificatamente ) che fanno uso-del codice binario o di quello decimale, in caratteri adattabili per il nostro TI che fa uso del codice esadecimale, potendoli così inserire nei vari programmi che possedevo.

Finchè dovevo lavorare con il codice binario non c'era nessun problema che invece sorgeva con il codice umsx decimale: ero così costretto a fare moltissimi calcoli e conversioni. Così mi sono messo sulla tastiera ed ho elaborato un piccolo programma atto a fare quel tipo di calcoli.

In seguito pensai di allargarlo per renderlo più versatile, ed ecco che elaborai il programma attuale che ho spedito.

LOO O FERREE III ** ** ** COSTRUZIONE ** ** XX ** CARATTERI **

110! xx ** ** DI ** **

** ** CORSINI PAOLO ** ** +

120 ' #** VIA CAVOUR, 12 ** ** ** ** SAN GIUSTINO ** dt ** ** 06016 (PERUGIA) #*

1350 |! x*x ** LITZZTATTEZLELZZZ LEI

140 ! INIZIALIZZAZIONE E PRESENTAZIONE

150 OPTION BASE 1 :: RESTORE 160 :: FOR T=1 TO S :: READ MESS$(T):: NEXT T

150 DATA IN CODICE ESADECIMALE, IN CODICE BINARIO, IN CODICE DECIMALE, CON LA CHARP AT,PIXEL PER PIXEL

170 CALL CLEAR :: DIM FET(40),KER$(40),MIL$(16), INT$(16),PER$(16)

180 CALL CHARt126,RPT$("F",16),95,RPT$("F",16)):: CALL COLOR(5,8,1,6,8,1,7,8,1,8 ,8,1,13,4,1,8,12,1,4,9,1,12,14,1)

190 CALL CHAR(129, "3C4299A1A199423C3C4299959991423C")

200 RESTORE 210 :> FOR T=1 TO 16 :: READ MIL$(T),INT$(T),FER$(T):: NEXT T

210 DATA 0,33}3}},0000,1,3}}*,0001,2,}}*?,0010,3,3}**,0011,4,}%}},0100,5,}*}*,0101 sb6,}**},0110,7,}***,01li

220 DATA 8,%}}},1000,9,%}}*,1001,A,%}*},1010,B,%}**,1011,C,**}},1100,D,**}*,1101 sE, 9%}, 1110,F,****, 1111

230 CALL SCREEN(2):: CALL HCHAR(3,3,126,28):: CALL HCHAR(15,3,126,28):: CALL VCH

AR(4,3,126,12):: CALL VCHAR(4,30,126,11) 240 DISPLAY AT(14,9)BEEP:CHR$(129)&" "&CHR$(130)&" SOFTWARE"; 250 DISPLAY AT(5,4):" _ ___"$:: DISPLAY AT(6,4):"_

ea iI 260 DISPLAY AT(7,4):"_ _ _ o "51: DISPLAY AT(8,4):"_

270 DISPLAY AT(9,4):"_

280 DISPLAY AT(11,4):" "5

290 DISPLAY AT(24,21):"<ENTER>"

300 CALL KEY(0,KK,ST):: IF KK<>13 THEN 300

310 '! SCHERMATA OPZIONI E SECONDA INIZIALIZ.

320 IMAGE " £££ O £ £EFEEFFE FEFELEEE"

330 IMAGE £ = £££ E££FEFFEFPFEFESA

340 IMAGE " £££ £"

350 IMAGE " £££ £ £ELLELEE"

360 CALL CLEAR :: CALL SCREEN(8):: CALL CHARSET :: FOR T=9 TO 14 :: CALL COLORCT ,2,16):: NEXT T

370 DISPLAY AT(3,1)ERASE ALL: "RICORDATI CHE 3000 --------------- " ss: DI SPLAY AT(9,1):" 1. CODICE ESADECIMALE"

380 DISPLAY AT(10,1):" 2. CODICE BINARIO"

390 DISPLAY AT(11,1):" 3. CODICE DECIMALE":" 4. CON LA CHARPAT ":" 5. PIXEL P ER PIXEL"

400 DISPLAY AT(16,1):"#* P PRELEVARE":"* V VEDERE":"#* M MODIFICARE":"* F_ FINE" 410 DISPLAY AT(24,21)BEEP: "<CENTER>"

420 CALL KEY(0,KK,S):: IF KK<>13 THEN 420

430 ! SCHERMO PRINCIPALE E VARIE SCELTE

440 HEX$="0123456789ABCDEF" :: CALL CHAR(125,RPT$("0",16)&RPT$("F",16)):: CALL C OLOR(0,7,1):: DIM BJT(8,8)

450 DISPLAY AT(1,1)ERASE ALL BEEP: "COSTRUZIONE CARATTERE"

460 FOR T=3 TO 31 STEP 2 :: CALL HCHAR(8,T,125):: NEXT T

470 FOR T=11 TO 18 :: CALL HCHAR(T,13,125,8):: NEXT T :: DISPLAY AT(20,11):"1234 5678" :: FOR T=1 TO 8 :: CALL HCHAR(10+T,11,48+T):: NEXT T

480 DISPLAY AT(5,1)BEEP: "SCEGLI : (1/5/F/P/V/M) 1" :: ACCEPT AT(5,24)VALIDATE ("1 2345FMVP")SIZE(-1):C0$

490 IF POS("12345",C0$,1)<>0 THEN DISPLAY AT(2,1)BEEP:MESS$(VAL(CO$))

500 IF CO$="M" THEN GOSUB 1350 :: GOTO 480 ELSE IF CO$="V" THEN GOSUB 1540 :: GO TO 450

510 IF CO$="P" THEN GOSUB 1670 :: GOSUB 1540 :: GOTO 450

520 DISPLAY AT(5,1):: IF CO$="F" THEN CALL CLEAR :: GOSUB 1480

530 IF CO$="1" THEN ACCEPT AT(24,7)BEEF VALIDATE (HEX$)SIZE(16):ESA$ :: IF LEN(ES A$)<16 THEN 530 :: GOSUB 740 :: GOSUB 1230 :: GOTO 480

540 IF CO$="5" THEN GOSUB 970 :: GOSUB 1230 :: GOTO 480

550 IF CO$="2" THEN GOSUB 840 :: GOSUB 1230 :: GOTO 480 ELSE IF CO$="4" THEN 560 ELSE 590

560 DISPLAY AT(5,1):"CHE LETTERA ? "

570 ACCEPT AT(5,16)SIZE(1):6H$ :: CALL CHARPAT(ASC(GH$),ESA$):: DISPLAY AT(24,7) :ESA$ ':: GOSUB 740 :: GOSUB 1230 :: GOTO 480

580 ' COSTRUZIONE CARATTERE CODICE BINARIO

590 PA=0 :: FOR T=10 TO 18 :: CALL HCHAR(T,3,32,5):: NEXT T

600 ACCEPT AT(11+9A,3)SIZE(3) VALIDATE (DIGIT, "U") BEEP: N$

610 IF SEG$(N$,1,1)="U" OR SEG$(N$,2,1)="U" OR SEG$(N$,3,1)="U" THEN 480

620 IF N$="" THEN 600 ELSE N=VAL(N$):: IF N>255 THEN 600

630 FOR T=1 TO 8 :: N=N/2

640 IF N=INT(N)THEN AA=125 :: BIN=0 ELSE AA=126 :: BIN=1

650 N=INT(N):: CALL HEHAR(11+PA,21-T,AA):: CALL HCHAR(11+PA,31-T,48+BIN):: BIT (P A+1,9-T)=BIN :: NEXT T

660 IF PA=7 THEN PA=0 :: GOSUB 680 :: GOSUB 1230 :: GOTO 480 ELSE PA=PA+1

670 GOTO 600

680 ESA$=""

690 FOR RO=1 TO 8 :: LOW=BJT(R0,5)#*8+HJT(RO,6)#4+BJT(R0,7)*2+BJT(R0,8)+1

700 HIGH=BJT (RO, 1) #8+BJT (RO, 2) #4+BJT(R0,3)#2+BJT(R0,4)+1 :: ESA$=ESA$&SEG$ (HEX$, HIGH, 1) &SEG$ (HEX$, LOW, 1)

"3:: DISPLAY AT(10,4):"_

710 NEXT RO :: DISPLAY AT(24,7)BEEP:ESA$ :: CALL CHAR(128,ESA$)

720 GOSUB 1210 :: RETURN

730 ! COSTRUZIONE CARATTERE CODICE ESADECIMALE

740 ADD$, BINI$="" :: PA=0 :: FOR T=1 TO 16

750 KW$=SEG$(ESA$,T,1):: GOSUB 800 :: ADD$=ADD$&KAD$ :: BIN1$=BIN1$&BIN$

760 IF T/2=INT(T/2)THEN 770 ELSE 790

770 DECA=0 :: FOR TT=7 TO O STEP -1 :: AHH=VAL(SEG$(BIN1$,1+7-TT,1)):: DECA=DECA + (AHH*2%TT):: NEXT TT

780 PA=PA+1 :: DISPLAY AT(10+PA,2) BEEP:USING 320:DECA,FA, ADD$, BIN1$ :: ADD$,BINI $= sen

790 NEXT T :: CALL CHAR(128,ESA$):: GOSUB 1210 :: RETURN

800 FOR TW=1 TO 16 :: IF KW$=MIL$(TW)THEN AD$=INT$(TW):: BIN$=PER$(TW):: GOTO 82 O ELSE 810

810 NEXT TW

820 RETURN

830 ! COSTRUZIONE CARATTERE CODICE BINARIO

840 FOR T=10 TO 18 :: DISPLAY AT(T,21):: NEXT T:: ESA$="" :: FOR T=1 TO 8

850 ACCEPT AT(10+T,21)VALIDATE("10U"):BIN$ :: IF BIN$="U" THEN 480 :: IF LEN(BIN $)<8 THEN 850

860 FOR TT=1 TO 8 :: IF SEG$(BIN$,TT,1)="U" THEN 480

870 NEXT TT

880 DECA=0 :: FOR TT=7 TO 0 STEP -1 :: AHH=VAL(SEG$(BIN$,1+7-TT,1)):: DECA=DECA+ CAHHX2®TT):: NEXT TT

890 ADD$="" :: FOR TT=1 TO 2 :: KW$=SEG$(HIN$,TT#4-3,4):: GOSUB 920 :: ESA$=ESA$ &ES$ :: ADD$=ADD$KAD$ :: NEXT TT

900 DISPLAY AT(10+T,2)BEEP:USING 350:DECA,T,ADD$;

910 NEXT T :: DISPLAY AT(24,7)BEEP:ESA$ :: CALL CHAR(128,ESA$):: GOSUB 1210 :: R ETURN

920 FOR DF=1 TO 4 :: KJ(DF)=VAL(SEG$(KW$,DF,1)):: NEXT DF

930 -HIGH=KJ (1) #8+KJ(2)#4+KJ(3)#*2+KJ(4)#1+1 3: ES$=SEG&(HEXS, HIGH, 1)

940 AD$="" :: FOR DF=1 TO 4 :: REF$=SEG$(KW$,DF,1):: IF REF$="0" THEN AD$=AD$&"} " ELSE AD$=AD$&"*"

950 NEXT DF :: RETURN

960 ! COSTRUZIONE CARATTERE PIXEL FER PIXEL

970 DISPLAY AT(5,1)BEEP:"1 = NERO 0 = BIANCO" :: FOR R=1 TO 8 :: FOR C=1 TO 8 980 CALL HCHAR(10+R, 12+C,30)

990 CALL KEY(0,K,ST):: IF ST=0 THEN 990

1000 IF (K<>8)+(K<>9)<=-2 THEN 1010 ELSE GOSUB 1090 :: GOTO 980

1010 K=K-48 :: IF Ké0 OR K>1 THEN 990

1020 BJT(R,C)=K :: CALL HCHARC(10+R,12+C,125+k):: NEXT C 3: NEXT R

1030 ESA$="" :: FOR R=1 TO 8 :: LOW=BJT(R,5)*8+BJT(R,6)*4+BJT(R,7)*2+BJT(R,8)+1 1: HIGH=BJT(R,1)*8+BJT(R,2)#4+BJT(R,3)*2+BJT(R,4)+1

1040 ESA$=ESA$&SEG$ (HEX$, HIGH, 1)&SEG$ (HEX$, LOW, 1):: BIN$=""

1050 FOR RR=1 TO 8 :: BIN$=BIN$&STR$(BJT(R,RR)):: NEXT RR :: DISPLAY AT(10+R,21) SIZE (8) BEEP: BIN$

1060 DECA=0 :: DECA=BJT(R,1)#*128+BJT(R,2)#*64+BJT(R,3)*32+BJT(R,4)#16+(LOW-1) 1070 RISPLAY AT(10+R,2):USING 340:DECA,R;:: NEXT R

1080 DISPLAY AT(24,7):ESA$ :: CALL CHAR(128,ESA$):: GOSUB 1210 :: RETURN

1090 CALL HCHAR(10+R,12+C,125+BJT(R,C))

1100 IF K=9 THEN 1150

1110 C=C-1 :: IF C«>0 THEN 1200 1120 C=8 :: R=R-1

1130 IF R<>0 THEN 1200

1140 R=8 :: GOTO 1200

1150 C=C+1

1160 IF C<>9 THEN 1200

1170 C=1::: R=R+1

1180 IF R<>9 THEN 1200

1190 R=1

1200 RETURN

1210 FOR 00=3 TO 31 STEP 2:: CALL HCHAR(8,00,128):: NEXT GQ :: RETURN

1220 '! RICHIESTA DI MEMORIZZAZIONE CARATTERE

1230 DISPLAY AT(S,1) BEEP: "VUOI MEMORIZZARLO ? " :: ACCEPT AT(5,22)VALIDATE ("SN")

SIZE(1):BET$

1240 IF BET$="S" THEN GOSUB 1250 :: RETURN ELSE RETURN

1250 TIME=TIME+1 :: IF TIME<=40 THEN 1270 ELSE TIME=40 :: GOTO 1260

1260 CALL SOUND (200, 220,0):: DISPLAY AT(5,1):"* HAI DEFINITO 40 CARATTERI" :: FO R T=1 TO 500 :: NEXT T :: RETURN

1270 DISPLAY AT(S,1)BEEP: "CON CHE CODICE ? " :: ACCEPT ATiS,19)VALIDATE (DIGIT)SI ZE (3):FUC$ :: IF FUC$="" THEN 1270 ELSE FET(TIME)=VAL (FUC$)

1280 IF FET(TIME)=128 OR FET:‘TIME)=125 OR FET(TIME)=126 OR FET(TIME)<33 OR FET(T IME) 143 THEN 1290 ELSE 13500

1290 CALL SOUND (200, 220,0):: DISFLAY AT(5,1):"* CODICE PROIBITO" :: FOR TTT=1 TO 3500 ::3 NEXT TTT :: GOTO 1270

13500 FOR YY=1 TO TIME :: IF YY=TIME THEN 1520 :: IF FET(YY)«+FET(TIME)THEN 1320 1510 CALL SOUND(200, 220,0):: DISPLAY AF(S5,1):"» CODICE GIA’ PRESENTE" :: FOR T=1 TO 500 :: NEXT T :: GOTO 1270

1320 NEXT YY :: KER$(TIME)=ESA$ :: CALL CHAR(FET(TIME),KER$(TIME))

13530 DISPLAY AT(2,1)BEEP: "CARATTERE"; FET(TIME); "MEMORIZZATO" :: GOSUB 1650 :: RE

TURN

1340 ! SUBROUTINE MODIFICA CARATTERE 13550 IF TIME=0 THEN RETURN 1360 DISPLAY AT(5,1)BEEP: "CHE CODICE ? " :: ACCEPT AT(5,15)VALIDATE(DIGIT)SIZE (3

):6H$ :: IF GH$="" THEN RETURN ELSE GHY=VAL (GH$)

1370 IF GHY=128 OR GHY<335 OR GHY:1435 OR GHY=125 OR GHY=126 THEN 1360

13580 FOR YY=1 TO TIME :: IF GHY<x>FET(YY)THEN 1440

1590 DISPLAY AT(2,1)BEEP:USING 330: CHR$(FET(YY)),FET(YY),KER${YY)

1400 DISPLAY AT(S,1): "VUOI CANCELLARLO (S/N)? N" :: ACCEPT AT(5,25)VALIDATE("SN" )SIZE(-1):ZZ% :: IF ZZ$="S" THEN GOSUB 1450 :: RETURN

1410 DISPLAY AT(2,1)BEEP: "MODIFICA CARATTERE "sFET(YY):: DISPLAY AT(5,1):USING 3 30:CHR$ (FET(YY)),FET(YY),KER$(YY)

1420 ACCEPT AT(5,13)VALIDATE (HEX$)SIZE(-16):KER$(YY)

1450 CALL CHARCFET(YY),KER$(YY)):: FOR T=1 TO 200 :: NEXT T :: RETURN

1440 NEXT YY :: CALL SOUND(200,220,0):: DISPLAY AT(5,1):"* CODICE INESISTENTE" : : FOR GT=i TO 600 :: NEXT GT :: RETURN

1450 DISPLAY AT(2,1)BEEP: "CARATTERE "sFET(YY)s" CANCELLATO"

1460 FOR II=YY TO TIME-1 :: FET(II)=FET(II+1):: KER$(II)=KER$(II+1):: NEXT II :: TIME=TIME-1 :: RETURN

1470 ‘' FINE PROGRAMMA

1480 IF TIME=0 THEN 1520

1490 OPEN £1:"CS1", INTERNAL, OUTPUT,FIXED 64

1500 CALL CLEAR :: PRINT £1:TIME :: FOR YY=1 TO TIME :: FRINT USING 3350:CHR$ (FET (YY)),FET(YY),KER$(YY)

1510 PRINT £1:FET(YY),KER$(YY):: NEXT YY :: CLOSE £i :: GOSUB 1680

1520 CALL CLEAR :: STOP

15350 ' SUBROUTINE VISUALIZ. CARATTERI

1540 IF TIME=0 THEN 480 ELSE CALL CLEAR

1550 QWE=0 :: FOR YY=1 TO TIME :: QWE=CWE+2 :: DISPLAY AT(OQUE, 1) : USING 350: CHR$(

FET(YY)),FET(YY),KER$(YY)

1560 IF QWE=20 THEN QWE=0 :: DISPLAY AT(24,21) BEEP: "<ENTER>" ELSE 1580

1570 CALL. KEY(0,K,S)s: IF K<>13 OR S=-1 THEN 1570 ELSE CALL CLEAR

1580 NEXT YY

1590 DISPLAY AT(24,1):: DISPLAY AT (24,21) BEEP: "<ENTER>"

1600 CALL KEY(0,KK,ST)s:: IF Kk<>13 THEN 1600

1510 RETURN

1520 ‘' ORDINAMENTO CARATTERI

16350 FOR YTY=1 TO TIME-1 :: FOR TYT=YTY+1 TO TIME :: IF FET(YTY)<FET(TYT)THEN 16

SO

1640 PAL=FET(YTY):: FET(YTY)=FET(TYT):: FET(TYT)=FAL :: PAL$=KER$(YTY):: KER$(YT

Y)=KER$ (TYT):: KER$(TYT)=PAL$

1650 NEXT TYT :: NEXT YTY :: RETURN

1660 ! PRELEVAMENTO CARAT. DA REGISTRATORE

16570 IF TIME<>0 THEN 480

1680 CALL CLEAR :: OPEN £1:"CS1", INTERNAL, INPUT ,FIXED 64 :: INPUT £1:TIME

1690 FOR YY=1 TO TIME :: INPUT £1:FET(YY),KER$(YY):: CALL CHAR(FET(YY),KER$(YY)) s3 NEXT YY

1700 CLOSE £1 :: RETURN

Descrizione del programma.

Dopo una breve presentazione, appare il menù che indica le pos- sibili scelte che si possono fare durante l'esecuzione del programma, In seguito inizia il programma vero e proprio. Lo schermo è formato da un grande quadro bianco di 8 x 8 caselle in bassa risolu- zione, dove verrà costruito il carattere con ai lati i numeri,da I a 8 che indicano le coordinate di ogni casella interna al quadrato. Sepra

di questo trovano posto una serie di piccoli quadrati bianchi nei quali apparirà il carattere appena costruito in grandezza naturale. Infine in alto la scritta: " COSTRUZIONE CARATTERE ". Sotto di questa appariranno, durante il corso del programma, varie scritte che indicanoil modo con cui stiamo lavorando e altri messaggi. Com- pare poi un messaggio che chiede la nostra scelta, cioè in che modo vogliamo lavorare: " I/2/3/4/5/V/4/P/P ", che ora esamineremo attentamente.

Esadecimale

I. Viene chiesto ( in basso sullo schermo ) di inserire una stringa in codice esadecimale, riguardante il carattere da costruire e dopo breve tempo comparirà riga per riga nel quadrato centrale la sagoma del carattere e lateralmente l'equivalente in codice decimale ( a sinistra ) e in codice binario ( a destra ) e infine comparirà il carattere così creato nei piccoli quadrati bianchi.

Attenzione !!! Nella stringa devono essere scritti tutti i I6 caratteri, infatti non vengono accettati gli spazi: al loro posto bisogna porre degli f.

Binario

2, Bisogna inserire nella parte destra dello schermo, una stringa di 8 caratteri formata da Ie da Y, questo riga per riga, anche quì come sopra bisogna digitare tutte le 8 cifre. Poi vengono calcolati i corrispondenti valori decimali e la stringa esadecimale. E' possibile utilizzare l'opzione " U " ( uscire ): in questo modo si ritorna al messaggio che ci chiederà la nostra scelta.

Decimale

3. Vengono inseriti nella parte sinistra dello schermo, riga per riga, i valori decimali che formeranno il carattere: non vengono accettati valori nulli("") o valori inferiori allo @ o maggiori a 255. Ven- gono poi calcolati i valori binari e esadecimali. Anche qui è pos- sibile l'opzione " U".

Charpat

4. ‘In questa parte di programma viene sfruttata la charpat che serve a conoscere la stringa esadecimale di un carattere in tastiera. Alla richiesta " CHE LETTERA ? ", noi non faremo altro che digitare la lettera desiderata. Poi si profiegue come al punto I.

Pixel per pixel

5. Questa è la parte più utile e consente di creare un carattere, appunto pixel per pixel. Ecco come agire. Se vogliamo che nel punto in cui si trova il cursore rosso si accenda un pixel premiamo il tasto " I ": il quadrato si colorerà di nero e il cursore si sposterà in avanti, altrimenti premiamo " dl e il quadrato rimarrà bianco. Se vogliamo spostare il cursore lungo il grande quadrato senza alterare la sagoma già disegnata, dobbiamo usare il tasto " FCIN " insiene a " S" o " D ", secondo la direzione in cui dobbiamo andare. Per terminare il disegno, dobbiamo snzzara portare il cursore nel quadrato in basso a destra e premere " I" o"g@ " secondo il disegno. Come al solito verranno calcolati

i valori dei vari codici.

Ogni volta che avremo eseguito una,di questa 5 operazioni, il computer vi chiederà se il carattere appena costruito deve essere màmorizzato o no. Se si dovrete premere " S "; dopo vi viene chiesto con quale codice ASC II: attenzione a non digitare un numero già presente o un codice riservato: se accade il computer lo segnalerà.

Vedere

V. Serve a visuabizzare i caratteri memorizzati in pagine di I? caratteri alla volta: di ognuno di questi viene mostrato nell'or- dine: il carattere costruito, il suo codice ASC II e la stringa esadecimale, in ordine di codice dalt più basso al più alto. Possono essere memorizzati al massimo 4@ caratteri.

Modificare

M, Una volta che un carattere è stato memorizzato, l'unico modo per poterlo ritoccare o cancellare, è usare questa opzione. Viene chiesto il numero di codice. Se esso è presente in memoria, viene mostrato tutto su di esso nella seconda riga e vi viene chiestoz se deve essere cancellato o no. Se la risposta è affermativa il carattere viene cancellato automaticamente, altrimenti sono chieste le opportune modifiche alla sua stringa.

Fine

F. Pone fine al programma: ge non vi erano caratteri in memoria esso a semplicemente termine, altrimenti viene aperto un file del registrtore dove verranno registrati tutti caratterà memorizzati. Così se vogliamo riutilizzarli in un programma diverso, basterà porre nel programma in questione la seguente routine:

IG OPEN # I: " CSI ", INTERNAL, INPUT, PIXED 64 209 INPUT # I: TIME

39 POR YY=I TO TIME

49 INPUT # I: FET(YY),KERS(YY)

59 CALL CHAR(FET(YY),KERS(YY))

69 NEXT YY

718 CLOSE#I

100 CALL 110 CALL 120 PRINT 1350 PRINT 140 PRINT 150 CALL 160 CALL 170 CALL 180 CALL 190 CALL 200 CALL 210 CALL 220 CALL 230 R=10 240 CO=10 250 FOR N 260 FOR M 270 CALL 280 CALL 290 CALL 300 CALL 310 CALL 320 CALL 3350 CALL 340 CALL 350 R=R+5 360 NEXT 370 R=10 380 CO0=C0 390 NEXT 400 LLA=1 410 LLAS= 420 LLBF= 430 LLB=1 440 LC=15 450 LCS=1 460 LDF=1 470 LD=14 480 LDS=1

490 LEF=156 900 LE=165 510 LF=175 920 LFS=185 930 L6F=185 540 L6=196 950 L6S=208 560 LAF=208 570 LA=220 980 LAS=233 990 LBF=233 600 LB=247 610 (=262

620 CS=277 630 DF=277 640 3294

650 DS=311 660 EF=311 670 E=330

CLEAR SCREEN(11)

t FRANCOMPUTER "::"

n VERSIONE

IN JAZZ

CHAR (136, "00010307FF030102") CHAR (137, "5455555555999954") CHAR (134, "000E314080700C03") CHAR (135, "3048944424120A86") CHAR (1358, "060F5F5F5E00008")

CHAR (139, "0000F") CHAR (140, "0408" ) CHAR (141, "402")

=1 T0 3 =1 T0 3 HCHAR (RK, CO, 136) HCHAR (R-1,CO, 134) HCHAR (R-1,C0+1, 135) HCHAR (R,C0+1,137) HCHAR (R, C0+2, 138) HCHAR (R, C0+3, 139) HCHAR (R+1, CO, 140) HCHAR (R+1,C0+2, 141)

M

680 F=349 690 FS=370 N 700 6F=370 10 710 6=392 117 720 652415 ae 730 AF=415 23 740 A=440 1 750 AS=A66 39 760 BF=466 39 770 B=494 dh 780 HC=523 hi 790 HCS=554 800 HDF=554 810 HD=597 820 HDS=622 830 HEF=622 BIO HE=659 850 HF=698 860 HFS=740 870 H6F=740 880 H6=784 890 H6S=831 900 HAF=931 910 HA=890 920 HAS=932 930 HBF=932 940 HB=988 950 HHC=1047 960 HHCS=1109 970 HHDF=1109 980 HHD=1175

+5

VOLO DEL CALABRONE":

990 HHDS=1245 1000 HAEF=1245 1010 HHE=1319 1020 HHF=1397 1030 HHFS=1480 1040 HHGF=1480 1050 HH6=1568 1060 HAGS=1661 1070 HHAF=1661 1080 HHA=1760 1090 HHAS=1864 1100 HHBF=1864 1110 HHB=1976 1120 HHHC=2094 1130 1=-100 1140 REN 1-4 1150 FOR 251 TO 4 1160 CALL SOUNDIT,LLA,0,A,0) 1170 CALL SOUNDIT,LLA,0,LA,0) 1180 CALL SOUND(T,LA,0,HA,0) 1190 CALL SOUNDIT,LA,0,A,0) 1200 CALL SOUND(T,LC,0,HC,0) 1210 CALL SOUND(T,LC,0,C,0) 1220 CALL SQUND(T,LD,0,HD,0) 1230 CALL SOUND(T,LD,0,0,0) 1240 CALL SOUNDIT,LDS,0,HDS,0) 1250 CALL SOUNDIT,LDS,0,05,0) 1260 CALL SOUNDIT,LE,0,HE,0) 1270 CALL SOUNDIT,LE,0,E,0) 1280 CALL SQUNDIT,LC,0,HC,0) 1290 CALL SOUND(T,LC,0,C,0) 1300 CALL SQUND(T,LE, 0,HE,0) 1310 CALL SDUNDIT,LE,0,E,0) 1320 NEXT 2 1330 REN 5-7 1340 FOR 231 T0 3 1350 CALL SQUND(T,HE,O,LLA,0) 1360 CALL SOUNDIT,HEF,0,LLA,0) 1370 CALL SDUNDIT,HD,0,LA,0) 1380 CALL SOUNDIT,HDF,0,LA,0) 1390 CALL SOUNDCT,HC,0,LC,0) 1400 CALL SOUND(T,HF,0,LC,0) 1410 CALL SOUND(T,HE,0,LD,0) 1420 CALL SOUNDAT,HDS,0,LD,0) 1430 CALL SOUND(T,HE,0,LDS,0) 1440 CALL SOUNDIT,HDS,0,LDS,0) 1450 CALL SOUND(T,HD,0,LE,0) 1460 CALL SOUND(T,HDF,0,LE,0) 1470 CALL SQUND(T,HC,0,LC,0) 1490 CALL SOUNDIT,HDF,0,LC,0) 1490 CALL SOUND(T,HD,0,LE,0) 1500 CALL SOUNDIT,HDS,0,LE,0)

1510 NEIT 2 1520 REN 8

1530 CALL SOUNDIT,HE,O,LLA,0,A,0) 1540 CALL SOUNDIT,LLA,0,LA,0) 1550 CALL SOUNDIT,LA,0,HA,0) 1560 CALL SOUNDIT,LA,0,A,0)

1570 CALL SOUMDIT,LC,0,HC,0) 1590 CALL SOUNDIT,LC,0,C,0)