Pace (ZX Spectrum)

Animazione della bandiera arcobaleno della pace (ZX Spectrum)
Bandiera della pace (ZX Spectrum)
1 LET s$="PEACE":INK7:PAPER7:CLS:RESTORE1:DATA 27,9,47,39,55,82,18
2 LET m=22528:FOR i=1 TO 7:READ a:FOR j=1 TO 96:POKE m,a:LET m=m+1:NEXT j:NEXT i
3 PRINT INK3;PAPER3;AT 0,0;s$:FOR j=0 TO 7:FOR i=0 TO LEN s$*8-1:IF POINT(i,(175-j)) THEN GO SUB 9
4 NEXT i:NEXT j:PAUSE 0:STOP
9 FOR k=0 TO 5:FOR l=0 TO 6:PLOT 8+i*6+k, 119-j*7-l:NEXT l:NEXT k:RETURN

Spiegazione del programma

L’istruzione DATA alla linea 1 contiene i valori degli attributi (colore di “inchiostro” e “carta” e flag di luminosità) corrispondenti alle 7 strisce colorate.
Il ciclo FOR della linea 2 utilizza questi valori per disegnare lo sfondo della bandiera, scrivendoli direttamente nellla meoria degli attributi video, a partire dall’indirizzo 22528 (5800hex).
Nella linea 3, la stringa “PEACE”, contenuta nella variabile s$, è stampata in modo invisibile (utilizzando inchiostro magenta su carta magenta) nell’angolo in alto a sinistra dello schermo. Mediante l’istruzione POINT, vengono identificati i singoli pixel che costituiscono la scritta e per ciascuno di essi viene richiamata la subroutine alla linea 9, che ne effettua lo zoom e la stampa al centro dello schermo.

Video che mostra il programma in azione
Read in English