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 1° 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)
té 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":::
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)