Alta risoluzione – TI99/4A – TI Basic

Rivista: PC Personal Computer – Anno: 1983 – Numero: 8 – Trascrizione: Francesco Fiorentini

Primo listato della rivista PC Personal Computer anno I numero 8:
https://www.retromagazine.net/pc-personal-computer-club-anno-i-numero-8/

Questo programma intitolato «voglia di alta risoluzione» per l’evidente motivo che capirete non appena lo farete girare. Con una funzione messa alla linea 70 impiega circa 24 minuti per riempire il video, poco vero? A parte questo, finalmente i possessori del TI99/4A potranno fare un grafico sfruttando tutte le capacità della macchina.
Il principio di funzionamento è semplice: il programma studia la funzione y=f(x), programma una serie di caratteri grafici e li accosta a mo’ di puzzle. La funzione viene studiatper 1/3 dell’intero schermo (256 punti per le ascisse), le relative ordinate appena calcolate vengono messe in Y2(X2) e Y3(X2). Il 96 che appare alla linea 80 serve per traslare tutta la figura al centro dello schermo. Nella 90 viene calcolato, conoscendo l’ordinata Y1, in quale posizione è andata a cascare (da 1 a 24), mentre nella 100, di quale degli otto punti fa parte all’interno del quadretto trovato in 90.

Finita la routine di calcolo dei primi otto punti (linee 50-110) si salta alla routine di elaborazione del carattere. Viene messo Z=1 (Z indica quale dei 24 caratteri di una colonna stiamo considerando), poi, confrontato Z (linea 180) con tutte le otto caselle calcolate prima per vedere se almeno un punto della f(X) è cascato nella casella Z, se no viene incrementato Z di uno, se sì, si salta alla 210. Qui vengono nuovamente confrontate le caselle calcolate con Z, quando ne trova una uguale assegna 1 alla variabile a della matrice di 8×8 punti che identifica il quadretto in codice binario; completa questa elaborazione (linee 210-240) azzera la stringa dò ed entra nell’ennesimo loop (righe 260-350). Questo ritegge una serie di 0 e 1 della matrice A(x,y) a pezzi di mezza linea di carattere (290- 310).

Questa serie di 4 cifre binarie viene messa nella stringa A0 poi salta alla routine di conversione bin-esadecimale. Qui alla serie di 1 e 0 contenuti in A0 viene associato un carattere esadecimale, questo viene messo in D$ poi risalta alla routine principale.
Effettuato questo lunghissimo loop per 16 volte salta alla 360 dove finalmente viene memorizzato il carattere Q e poi disegnato.

Nella 390-410 viene azzerata la matrice nei punti dove aveva assunto valore 1. Il ciclo 140-150 serve per non fermare il programma perché, se disgraziatamente effettuate un break, vedrete sostituire ai caratteri faticosamente programmati, il set di caratteri ASCII.

Si consiglia di eseguire il programma accelerando l’esecuzione dell’emulatore, altrimenti dovrete attendere diversi minuti perche’ lo stesso venga terminato.

Il programma e’ stato aggiunto non tanto per la sua esecuzione, quanto perché ritenuto un valido codice da studiare per come e’ stato concepito.

Titolo: Alta Risoluzione
Piattaforma: TI99/4A
Linguaggio: TI Basic
Versione originale: Francesco Guidi
Pubblicazione: PC Personal Computer
Anno: 1983
Trascrizione: Francesco Fiorentini
Anno: 2026
Download: N/A
Note: Il programma e’ stato modificato per farlo terminare correttamente

Qui di seguito trovate il codice da copiare sul vostro TI99/4A oppure su un emulatore, noi suggeriamo Classic99.

Di seguito le istruzioni per caricare il listato sull’emulatore Classic99:
– Copiare il listato di cui sotto
– Avviare l’emulatore
– Da Cartridge -> Apps, selezionare Basic
– Premere un tasto qualsiasi
– Dopodiché premere 1 per avviare il TI Basic
– Dal comando Edit, selezionare Paste XB per incollare il listato
– Digitare RUN per eseguire il codice
Buon divertimento!

Attenzione – Ci siamo resi conto che nel listato i caratteri ‘>’ e ‘<‘ potrebbero venir sostituiti dai rispettivi encoding html ‘&gt’ e ‘&lt’. Nel caso, sostituite questi valori nel listato prima di copiarlo sull’emulatore.

Listato: Alta Riosoluzione – TI99/4A – TI 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
10 REM ALTA RISOLUZIONE
20 CALL CLEAR
30 Q=159
40 FOR X1=16 TO 248 STEP 8
50 FOR X2=1 TO 8
60 X=X1+X2
70 Y=SIN(X)
80 Y1=INT(96-Y)
90 Y2(X2)=INT((Y1+7)/8)
100 Y3(X2)=Y1-Y2(X2)*8+8
110 NEXT X2
120 GOSUB 160
130 NEXT X1
140 GOTO 540
160 FOR Z=1 TO 24
170 FOR X2=1 TO 8
180 IF Z=Y2(X2) THEN 210
190 NEXT X2
200 GOTO 420
210 FOR X2=1 TO 8
220 IF Y2(X2) < Y THEN 240
230 A(X2,Y3(X2))=1
240 NEXT X2
250 D$=""
260 FOR Y5=1 TO 8
270 B=0
280 A$=""
290 FOR X5=B+1 TO B+4
300 A$=A$&STR$(A(X5,Y5))
310 NEXT X5
320 GOSUB 440
330 B=B+4
340 IF B=4 THEN 280
350 NEXT Y5
360 CALL CHAR(Q,D$)
370 CALL HCHAR(Z,(X1+8)/8,Q)
380 Q=Q-1
390 FOR X2=1 TO 8
400 A(X2,Y3(X2))=0
410 NEXT X2
420 NEXT Z
430 RETURN
440 REM routine di conversione binario/esadecimale
450 RESTORE
460 FOR P=1 TO 16
470 READ B$,C$
480 IF A$=B$ THEN 520
490 NEXT P
500 DATA 0000,0,0001,1,0010,2,0011,3,0100,4,0101,5,0110,6,0111,7,1000,8,1001,9,1010
510 DATA A,1011,B,1100,C,1101,D,1110,E,1111,F
520 D$=D$&C$
530 RETURN
540 PRINT"GRAFICO TERMINATO"

Share

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.