Caractères IL – Amstrad CPC – Locomotive Basic

Libro: N/A – Anno 2024 – Autore del codice: MILLSTICKS aka Lacsap Nürb

Quello che andiamo a presentarvi in questo articolo é il listato di un’applicazione scritta da MILLSTICKS aka Lacsap Nürb.
Si tratta di un programma per generare i codici da passare alla funzione SYMBOL per creare i caratteri su Amstrad CPC. Può essere utilizzato per disegnare un simbolo, a partire dal carattere n. 255, pixel per pixel ed é equipaggiato di alcune interessanti funzionalitá:

  • Spengimento di tutti i 64 pixel della matrice
  • Accenzione di tutti i 64 pixel della matrice
  • Funzione “Spray” per l’accensione casuale dei pixel (ad esempio per caratteri di esplosione)
  • Indicazione dei valori “symbol” da inserire nel programma futuro in decimale, esadecimale e binario.

Il programma é stato pubblicato con il consenso dell’autore.

Titolo: Caractères IL
Piattaforma: Amstrad CPC
Linguaggio: Locomotive Basic
Versione originale: MILLSTICKS aka Lacsap Nürb
Pubblicazione: N/A
Anno: 2024
Note: With the kind participation of JOLLET X.

Istruzioni
Sú/Giú/Destra/Sinistra – per spostare il cursore
COPY – per accendere/spengere i pixel
DEL – per spengere tutti i pixel
SPAZIO – accendere tutti i pixel
TAB – funzione ‘spray’ per accendere i pixel casualmente
ENTER – funzione RESET

Qui di seguito trovate il codice da copiare sul vostro Amstrad CPC.
Potete copiare il listato ed incollarlo su un emulatore come WinAPE.

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: Caractères IL – Amstrad CPC – Locomotive 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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
10 '  *****************************************
20 '  *                                       *
30 '  *            CARACTERES IL.             *
40 '  *                 V1.0                  *
50 '  *         Open Source Software.         *
60 '  *         Created On 2024/08/13         *
70 '  *             By MILLSTICKS             *
80 '  * https://www.facebook.com/lacsap.nurb/ *
90 '  *                                       *
100 ' *             With The Kind             *
110 ' *             Participation             *
120 ' *              Of JOLLET X.             *
130 ' *                                       *
140 ' *****************************************
150 '
160 '***** VARIABLES & ARRANGEMENTS *****
170 '
180 DEFINT a-z:clx=1:init=1:inst=1:lny=1:yp=1
190 '
200 DIM v(8)
210 v(1)=128:v(2)=64:v(3)=32:v(4)=16:v(5)=8:v(6)=4:v(7)=2:v(8)=1
220 '
230 DIM c(8)
240 c(1)=0:c(2)=36:c(3)=102:c(4)=255:c(5)=102:c(6)=36:c(7)=0:c(8)=0
250 '
260 DIM px(8,8)
270 '
280 FOR xp=1 to 8
290 IF c(yp) AND v(xp) THEN px(yp,xp)=1 ELSE px(yp,xp)=0
300 NEXT xp
310 yp=yp+1:IF yp<9 THEN 280 ELSE yp=1:GOTO 520
320 '
330 '********* SOUS PROGRAMMES **********
340 '
350 px(lny,clx)=1-px(lny,clx)
360 SOUND 1,sn+(25+px(lny,clx)*50)*sd,2,15:IF sd=0 THEN RETURN
370 FOR s=4 TO 39 STEP 5:LOCATE s,5:PRINT" ":NEXT s:GOTO 610
380 '
390 FOR pax=1 to 8:px(pay,pax)=var+an*ROUND(RND*1):NEXT pax
400 pay=pay+1:IF pay<9 THEN 390 ELSE GOTO 610
410 '
420 FOR clex=1 TO 8:LOCATE clex+28,cley+13:PRINT" ":NEXT clex
430 cley=cley+1:IF cley<8 THEN 420 ELSE GOTO 610
440 '
450 LOCATE 9,22:PRINT SPACE$(25):LOCATE 11,24:PEN 1:PRINT"[I] For Instructions":RETURN
460 LOCATE 3,22:PEN 1:PRINT"[UP][DOWN][LEFT][RIGHT]:";:PEN 2:PRINT"Move Cursor":LOCATE 11,24:PEN 1:PRINT"[COPY]:";:PEN 2:PRINT"Pixel ON/OFF ":RETURN
470 LOCATE 3,22:PRINT SPACE$(6);:PEN 1:PRINT"[DEL]:";:PEN 2:PRINT"Erase All Pixels";SPACE$(7):LOCATE 9,24:PEN 1:PRINT"[TAB]:";:PEN 2:PRINT"Random Pixels (Sprayer)":RETURN
480 LOCATE 9,22:PEN 1:PRINT"[SPC]:";:PEN 2:PRINT"Light Up All Pixels";SPACE$(5):LOCATE 9,24:PRINT SPACE$(6);:PEN 1:PRINT"[ENTER]:";:PEN 2:PRINT"RESET";SPACE$(10):RETURN
490 '
500 '*** TABLEAU DE BORD:PARTIE FIXE ****
510 '
520 MODE 1:BORDER 9:PAPER 0:PEN 1:LOCATE 14,1:PRINT"Symbol No 255":LOCATE 1,3:PRINT"In Decimal:":LOCATE 1,7:PRINT"In Hexadecimal:":LOCATE 1,11:PRINT"In Binary:":LOCATE 16,15:PRINT"RESULT:"
530 PLOT 286,127,1:DRAW 286,129:PLOT 286,143:DRAW 286,145:DRAW 288,145:PLOT 302,145:DRAW 304,145:DRAW 304,143:PLOT 304,129:DRAW 304,127:DRAW 302,127:PLOT 288,127:DRAW 286,127
540 '
550 '----- PREFIXES & MATRICE ------
560 '
570 FOR pmt=1 TO 8:LOCATE pmt*5-3,9:PRINT"&":LOCATE 1,12+pmt:PRINT"&X":LOCATE pmt+28,12:PRINT CHR$(pmt+48):LOCATE 28,pmt+12:PRINT CHR$(pmt+64):NEXT pmt
580 '
590 '**** AFFICHAGES:PARTIES MOBILES ***
600 '
610 cley=0:PEN 2
620 '--------- PIXELS 1/0 ----------
630 '
640 FOR vl=1 TO 8
650 c(vl)=px(vl,1)*128+px(vl,2)*64+px(vl,3)*32+px(vl,4)*16+px(vl,5)*8+px(vl,6)*4+px(vl,7)*2+px(vl,8)
660 '
670 '***** AFFICHAGES DES VALEURS ******
680 '
690 '-------- EN DECIMALES ---------
700 '
710 LOCATE vl*5-4,5:PRINT c(vl)
720 '
730 '------ EN HEXADECIMALES -------
740 '
750 LOCATE vl*5-2,9:PRINT HEX$(c(vl),2)
760 '
770 '--------- EN BINAIRE ----------
780 '
790 LOCATE 3,vl+12:PRINT BIN$(c(vl),8)
800 NEXT vl
810 PEN 3:IF init=1 THEN 870 ELSE RETURN
820 '
830 '*********** CONTROLES *************
840 '
850 '---- DIRECTIONNELS CURSEUR ----
860 '
870 lny=lny+INKEY(2)-INKEY(0)
880 clx=clx+INKEY(1)-INKEY(8)
890 IF lny>8 THEN lny=1
900 IF lny<1 THEN lny=8
910 IF clx>8 THEN clx=1
920 IF clx<1 THEN clx=8
930 '
940 '---- POINTAGE 1 PIXEL 1/0 -----
950 '
960 IF INKEY(9)=0 THEN sd=1:sn=0:GOSUB 350
970 '
980 '----- EFFACE TOUS PIXELS ------
990 '
1000 IF INKEY(79)=0 THEN an=0:init=0:pay=1:sd=0:sn=25:var=0:GOSUB 360:GOSUB 390:GOSUB 370:GOSUB 420
1010 '
1020 '---- ECLAIRE TOUS PIXELS -----
1030 '
1040 IF INKEY(47)=0 THEN an=0:init=0:pay=1:sd=0:sn=75:var=1:GOSUB 360:GOSUB 390
1050 '
1060 '-- SPRAY PIXELS ALEATOIRES ---
1070 '
1080 IF INKEY(68)=0 THEN an=1:init=0:pay=1:sd=0:sn=75:var=0:GOSUB 360:GOSUB 390:GOSUB 370
1090 '
1100 '-------- INSTRUCTIONS --------
1110 '
1120 IF INKEY(35)=0 THEN inst=inst+1:sd=0:sn=75:GOSUB 360
1130 IF inst>4 THEN inst=1
1140 ON inst GOSUB 450,460,470,480:PEN 3
1150 '
1160 '------------ RESET -----------
1170 '
1180 IF INKEY(18)=0 THEN SYMBOL AFTER 255:PRINT CHR$(7):RUN
1190 '
1200 '******** INTERIEUR MATRICE *******
1210 '
1220 FOR xp=1 TO 8
1230 LOCATE xp+28,yp+12:PRINT CHR$(32+px(yp,xp)*111):NEXT xp
1240 yp=yp+1:IF yp<9 THEN 1220 ELSE yp=1:GOTO 1280
1250 '
1260 '------ CURSEUR DE MATRICE ----
1270 '
1280 LOCATE clx+28,lny+12:PAPER 2:PRINT" ":PAPER 0
1290 '
1300 '**** AFFICHAGE NOUVEAU SYMBOLE ***
1310 '
1320 SYMBOL 255,c(1),c(2),c(3),c(4),c(5),c(6),c(7),c(8)
1330 LOCATE 19,17:PRINT CHR$(255)
1340 GOTO 870

Share

Lascia un commento

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

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.