Rivista: PC Personal Computer Club – Anno: 1983, Novembre – Numero 6 – Trascrizione: Francesco Fiorentini
Continuano i listati ripresi dalla rivista PC Personal Computer Club, questa volta si tratta del numero 6: https://www.retromagazine.net/pc-personal-computer-club-anno-i-numero-6
Fa la sua comparsa nella nostra rubrica RetroLiPS il Radio Shack TRS-80 prodotto dall’azienda texana Tandy Corporation e venduto attraverso la catena di negozi Radio Shack dal 1977 fino ai primi anni ’80.
Quello che vi presentiamo è un rudimentale Data Base realizzato in Basic utilizzando i file sequenziali e random. Nonostante la semplicità del programma, il database è totalmente funzionante e svolge egregiamente il suo lavoro. Ma vediamone i comandi.
Comandi
Se scegliete la E (Enter) dal menù, potete cominciare ad inserire dei dati aventi però lunghezza non maggiore di 240 caratteri, dopodiché vi chiederà se sarà tutto OK. Se lo sarà, vi richiederà ancora se volete inserire altri dati dello stesso gruppo; il gruppo è anche il nome del file su cui voi inserirete i dati.
Nel caso di scelta per A (Abbreviation) il computer richiederà prima l’abbreviazione e poi la parola espansa che voi vorrete far scrivere:
Es. Abbreviation? 80
Word to Print? 80 Microcomputing
All OK? Y
Abbreviation? P
Word to print? PAGE
All OK? Y
Abbreviation Enter
e se la frase del gruppo era 80 Microcomputing 3/81 Page 104 scriverà in fase di stampa
80 3/81 P 104.
La scelta per S (Show) mostra tutte le abbreviazioni da voi richieste per rinfrescarvi la memoria. La scelta per F (Find) fa sì che voi possiate trovare dei dati anche attraverso delle abbreviazioni. Il massimo numero di chiavi è dieci ma comunque il programma vi dice se avete esagerato “Too many, 10 maximum”. Per finire, la scelta D (done) chiude i files e termina il programma.
Attenzione – rispetto alla versione originale il programma è stato leggermente modificato per correggere alcuni errori.

Titolo: Mini Data Base
Piattaforma: TRS 80
Linguaggio: Basic
Versione originale: N/A
Pubblicazione: PC Personal Computer Club
Anno: 1983, Novembre
Trascrizione: Francesco Fiorentini
Anno: 2026
Download: N/A
Note: Il programma è stato modificato per correggere alcuni errori.

Istruzioni
F – Find –> Trova uno o più record nel file creato con E
E – Enter –> Crea un nuova file database e aggiunge i record (si possono usare abbreviazioni con *)
A – Abbreviation –> crea il file delle abbreviazioni e aggiunge i record
S – Show Abbreviations –> mostra le abbreviazioni
D – Done –> termina il programma
Qui di seguito trovate il codice da copiare sul vostro TRS 80 oppure su un emulatore, noi suggeriamo trs80gp.
Istruzioni per copiare il file nell’emulatore:
1 – avviate l’emulatore trs80gp
2 – assicuratevi di aver selezionato MODEL I in File – Change Model
3 – assicuratevi di avere il disco TRDOS23 per avviare il DOS del TRS 80
4 – una volta avviato il DOS scrivete BASIC per lanciare l’interprete Basic
5 – battete invio alla richieste del numero dei file e della memoria (non ci servono per il momento)
6 – incollate il codice di cui sotto
Informazioni aggiuntive sul TRDOS23:
DIR :0 – mostra la directory del disco
KILL <nomefile> – elimina un file dal disco
Attenzione – Ci siamo resi conto che nel listato i caratteri ‘>’ e ‘<‘ potrebbero venir sostituiti dai rispettivi encoding html ‘>’ e ‘<’. Nel caso, sostituite questi valori nel listato prima di copiarlo sull’emulatore.
Listato: Mini Data Base – TRS 80 – Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80 10 CLS:CLEAR30000:DIMC$(100,1),K$(10)
20 GOSUB800:ONERRORGOTO1000
30 CLS:PRINT" MENU"
40 PRINT"F - Find"
50 PRINT"E - Enter"
60 PRINT"A - Abbreviation"
70 PRINT"S - Show Abbreviations"
80 PRINT"D - Done"
90 INPUT"Choice (use letter on left)";A$
100 IFA$="F"THEN400
110 IFA$="E"THEN300
120 IFA$="A"THEN200
130 IFA$="D"THEN700
140 IFA$="S"THEN900
150 PRINT"Ivalid choice":GOTO30
200 IFC$(0,0)=""THENC=0:C$(0,0)=""ELSEC=VAL(C$(0,0))
210 IFC=100THEN270ELSELINEINPUT"Abbreviation (press enter key to quit) ";B$:IFB$=""THEN30
220 LINEINPUT"Word(s) to print? ";C$
240 INPUT"All OK (Y/N)";D$:IFLEFT$(D$,1)<>"Y"THEN210
250 C=C+1
260 C$(C,0)=B$:C$(C,1)=C$:C$(0,0)=STR$(C)
270 IFC=100THENPRINT"Abbreviation list full":FORX=1TO150:NEXTX: GOTO30ELSE210
300 LINEINPUT"Filename? ";F$
310 OPEN"R",1,F$:FIELD 1,240 AS C$
320 PRINT"Entry line must be 240 characters or less. Use * directly"
330 PRINT"in front of abbreviations."
340 LINEINPUT"Entry? ";B$
350 IFLEN(B$)>=240THENPRINT"Too long":GOTO340
355 INPUT"All OK (Y/N)";A$:IFLEFT$(A$,1)<>"Y"THEN340
360 LSET C$=B$:PUT 1,LOF (1)+1
370 INPUT"Another in the same group (Y/N)";A$:IFLEFT$(A$,1)="Y"THEN340
380 CLOSE1:GOTO30
400 LINEINPUT"Filename (ENTER FOR MENU)? ";F$
405 IF F$="" THEN GOTO30
410 OPEN"R",1,F$:FIELD 1,240 AS E$
420 INPUT"How many key words to look for?";A:IFA>10THENPRINT"Too many, 10 maximum":GOTO420
430 FORX=1TOA
440 LINEINPUT"Key word ? ";K$(X)
450 NEXTX
455 Y=1
460 IF Y>LOF(1)THENCLOSE1:GOTO30
470 GET 1,Y:A$=E$
480 FORX=1TOA
490 IFINSTR(A$,K$(X))=0THENX=A:Y=Y+1:GOTO460
500 NEXTX
510 B=INSTR(A$,"*"):IFB=0THENPRINTA$:GOTO630
520 B$="":FORX=1TOLEN(A$)
530 C$=MID$(A$,X,1):IFC$="*"THEN560
540 B$=B$+C$
550 NEXTX:PRINTB$:GOTO630
560 D$=""
570 X=X+1:IFX>LEN(A$)THENX=X-1:GOTO600
580 IFMID$(A$,X,1)=" "THENX=X-1:GOTO600
590 D$=D$+MID$(A$,X,1):GOTO570
600 C$="":FORE=1TOC
610 IFC$(E,0)=D$THENC$=C$(E,1):E=C
620 NEXTE:GOTO540
630 INPUT"Press enter for next match";A$:Y=Y+1:GOTO 460
700 OPEN"O",1,"ABBREV":PRINT#1,CHR$(34);C$(0,0);CHR$(34)
710 IFC=0THENCLOSE:END
720 FORX=1TOC
730 PRINT#1,CHR$(34);C$(X,0);CHR$(34);CHR$(34);C$(X,1);CHR$(34)
740 NEXTX:CLOSE:END
800 OPEN "R",1,"ABBREV":CLOSE 1
810 OPEN "I",1,"ABBREV"
820 IFEOF(1)THENCLOSE:RETURN
830 INPUT#1,C$(0,0):C=VAL(C$(0,0))
840 FORX=1TOVAL(C$(0,0))
850 INPUT#1,C$(X,0),C$(X,1)
860 NEXTX:CLOSE:RETURN
900 CT=0:FORX=1TOC
910 PRINTC$(X,0),C$(X,1):CT=CT+1
920 IFCT=15THEN940
930 NEXTX:PRINT"End of list":INPUT"Press enter to continue";A$:GOTO30
940 INPUT"Press enter for more";A$:CT=0:GOTO930
1000 IFERL=410THENPRINT"File not found":RESUME400
1010 IFERL=310THENPRINT"Bad file name or disk full":GOTO1040
1020 IFERL=360THENPRINT"Disk full":GOTO1040
1030 ONERRORGOTO0:RESUME
1040 FORX=1TO1000:NEXTX:RESUME30
