Rivista: Acorn User – Numero: 5 – Anno: 1982 – Trascrizione: Francesco Fiorentini
Quello che andiamo a presentarvi é un’altro bel listato estratto dalla rivista inglese Acorn User, numero 4 di Dicembre 1982, che potrete studiare per carpire la tecnica utilizzata per dividere lo schermo in finestre di diverse dimensioni.
Questo programma per BBC Micro (BASIC) disegna sette diverse “finestre” sullo schermo, ciascuna contenente un motivo geometrico (pattern) e una stella.
- Imposta la modalità grafica MODE1 (risoluzione 320×256 pixel, 4 colori).
- Inizializza parametri e palette colori.
- Ripete 7 volte (da number=1 a 7):
- Definisce una regione rettangolare (finestra) con PROCwindow(number).
- Colora la finestra con un colore di background diverso (PROCbackground).
- Seleziona un colore per il disegno (PROCcolourselect).
- Disegna un pattern di linee (PROCpattern).
- Cambia colore (PROCcolourselect di nuovo).
- Disegna una stella (PROCstar).
- Alla fine ripristina la modalità testo normale (VDU4) e termina.
Il risultato visivo è composto da 7 riquadri (alcuni posizionati in zone diverse dello schermo, altri sovrapposti) che mostrano ciascuno una combinazione di trama geometrica e stella centrale, con colori variabili.
VDU24 – Definizione delle finestre grafiche
VDU24, xmin; ymin; xmax; ymax; (notare il punto e virgola per valori a 16 bit) imposta un rettangolo di ritaglio per tutti i successivi comandi grafici. Tutto ciò che viene disegnato al di fuori di quest’area viene ignorato. Ogni chiamata a PROCwindow(number) esegue un VDU24 con coordinate diverse, creando così sette regioni distinte:
- Finestra 1: 690;200;1180;873; (rettangolo in alto a destra)
- Finestra 2: 100;200;590;873; (rettangolo in alto a sinistra)
- Finestra 3: 440;0;840;1023; (verticale centrale, dal basso all’alto)
- Finestra 4: 0;300;1279;700; (orizzontale centrale, da sinistra a destra)
- Finestra 5: 0;0;1279;512; (metà inferiore dello schermo)
- Finestra 6: 0;512;1279;1023; (metà superiore dello schermo)
- Finestra 7: 0;0;1279;1023; (intero schermo)
Dopo ogni VDU24, i comandi successivi (CLG, MOVE, DRAW) agiscono solo all’interno di quella finestra. Questo permette di “disegnare su finestre separate” senza dover calcolare manualmente i limiti.
VDU29 – Traslazione dell’origine
VDU29, x; y; sposta l’origine delle coordinate grafiche nel punto (x,y).
VDU19 – Ridefinizione della palette
Le righe come VDU19,0,4,0,0,0 modificano la mappatura dei colori logici (0‑3) a colori fisici (0‑15) disponibili sul BBC Micro.
Ad esempio:
- Colore logico 0 → fisico 4
- Colore logico 1 → fisico 2
- Colore logico 2 → fisico 1
- Colore logico 3 → fisico 7
Questo permette di ottenere una tavolozza personalizzata.
GCOL e CLG – Riempimento dello sfondo
- GCOL 0,128+colour – Il 128 serve probabilmente per selezionare la modalità “background fill” (in alcune versioni BBC BASIC, GCOL con 128+colour imposta il colore di riempimento per CLG).
- CLG (Clear Graphics) riempie l’intera finestra corrente con il colore di sfondo attivo. Essendo attivo il ritaglio di VDU24, solo la finestra viene cancellata.
VDU5 – Testo in coordinate grafiche
All’inizio viene eseguito VDU5, che fa sì che i successivi caratteri di testo vengano posizionati in base al cursore grafico (invece che alla riga/colonna tradizionale). Tuttavia nel programma non c’è alcuna istruzione PRINT o testo, quindi questa impostazione non viene effettivamente sfruttata.

Titolo: Graphics Windowing
Piattaforma: BBC Micro
Linguaggio: Basic
Versione originale: Paul Beverly
Pubblicazione: Acorn User – numero 5
Anno: 1982 – Dicembre
Trascrizione: Francesco Fiorentini
Anno: 2026
Download: N/A


Come sempre, qui di seguito trovate il codice ottimizzato per essere copiato direttamente sul vostro BBC Micro oppure su un emulatore. Il nostro consiglio é quello di utilizzare BeebEm.
Una volta avviato BeebEm non dovrete far altro che copiare il listato sottostante ed incollarlo sull’emulatore tramite: Edit -> Paste. Dopodiché digitate RUN ed il gioco é fatto!
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: Graphics Windowing – BBC Micro – 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 10 MODE1
20 PROCinitialise
30 FOR number=1TO7
40 PROCwindow(number)
50 PROCbackground
60 PROCcolourselect
70 PROCpattern
80 PROCcolourselect
90 PROCstar
100 NEXT
110 VDU4
120 END
130
140 DEFPROCinitialise
150 VDU5
160 colour=1
170 VDU19,0,4,0,0,0
180 VDU19,1,2,0,0,0
190 VDU1,2,1,0,0,0
200 VDU19,3,7,0,0,0
210 X%=40
220 Y%=32
230 O%=0
240 P%=1279
250 Q%=1023
260 ENDPROC
270
280 DEFPROCbackground
290 colour=colour+1
300 GCOL0,128+colour
310 CLG
320 ENDPROC
330
340 DEFPROCcolourselect
350 colour=colour+1
360 GCOL0,colour
370 ENDPROC
380
390 DEFPROCpattern
395 LOCAL S%,B%,C%
400 FOR S%=0TO32
410 B%=S%*X%-1
420 C%=S%*Y%-1
430 MOVE B%,O%
440 DRAW P%,C%
450 DRAW P%-B%,Q%
460 DRAW O%,Q%-C%
470 DRAW B%,O%
480 NEXT
490 ENDPROC
500
510 DEFPROCstar
515 LOCAL A%
520 VDU29,640;512;
530 FORA%=0TO500STEP20
540 MOVE A%-500,0
550 DRAW 0,A%
560 DRAW 500-A%,0
570 DRAW 0,-A%
580 DRAW A%-500,0
590 NEXT
600 VDU29,0;0;
610 ENDPROC
620
630 DEFPROCwindow(X)
640 IFX=1 VDU24,690;200;1180;873;
650 IFX=2 VDU24,100;200;590;873;
660 IFX=3 VDU24,440;0;840;1023;
670 IFX=4 VDU24,0;300;1279;700;
680 IFX=5 VDU24,0;0;1279;512;
690 IFX=6 VDU24,0;512;1279;1023;
700 IFX=7 VDU24,0;0;1279;1023;
710 ENDPROC
