-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Scarica il manuale CARD in PDF
Il programma CARD serve per disegnare le carte da gioco sullo schermo. Le carte sono visualizzate con simboli grafici ridefiniti. E' possibile visualizzare ogni tipo di carta in ogni parte del video.
Nell'immagine un esempio di carte da gioco stampate in modo "random" come sfondo iniziale del gioco "Briscola 2" scritto in BASIC sfruttando il programma CARD.
Il programma CARD e' costituito da due files prg: CARD SYMBOLS e CARD ROUTINES.
Il file CARD SYMBOLS contiene i dati dei simboli grafici ridefiniti e prima di essere caricato in memoria ha bisogno che questa sia protetta dall'utilizzo del BASIC con
POKE44,16
Dopodiché si può caricare da disco il file prg con
LOAD"CARD SYMBOLS",8,1
o da nastro con
LOAD"CARD SYMBOLS",1,1
Il file così caricato occupa nell'area BASIC 2k di memoria RAM e più precisamente le locazioni da 2048 a 4095 compresa.
Il file CARD ROUTINES contiene invece tutte quelle routines in linguaggio macchina che consentono di disegnare le carte da gioco sullo schermo. Questo file prg viene caricato da disco con
LOAD"CARD ROUTINES",8,1
o da nastro con
LOAD"CARD ROUTINES",1,1
e non occupa memoria nell'area BASIC, ma le locazioni da 49152 a 49788 compresa. Dopo aver caricato questi due files occorre dare i comandi
POKE4096,0 e NEW
A questo punto potete iniziare a scrivere il vostro programma BASIC o caricarne uno da disco o da nastro.
Nell’immagine un esempio della sequenza di caricamento del gioco “poker 4”
Per utilizzare il comando CARD dovete, in testa al programma, assegnare ad una variabile (es. K1) il valore 49152 e lanciare la routine K1+138 che, oltre ad abilitare il comando CARD, che se non abilitato causerebbe un
?SYNTAX ERROR
disabilita i tasti shift e commodore (passaggio maiuscolo/minuscolo) e abilita il nuovo set di caratteri che contiene, oltre alle lettere, ai numeri e agli altri simboli non grafici, es:
!"#$%&'()+-£
i simboli grafici ridefiniti per disegnare le carte.
ATTENZIONE: se l'istruzione THEN e' seguita da CARD bisogna aggiungere un ":" (due punti) tra le due istruzioni per non provocare un ?SYNTAX ERROR. es:
IFA<0THEN:CARD0,1,2,3
Il comando CARD e' seguito da 4 parametri numerici separati da virgole.
I primi due parametri indicano la posizione X e Y dello schermo nella quale verrà visualizzato l'angolo superiore sinistro della carta (es. se tutti e due i parametri sono zero, la carta viene visualizzata nell'angolo in alto a sinistra dello schermo).
Per non provocare un
?ILLEGAL QUANTITY ERROR
la posizione X della carta deve assumere un valore compreso fra 0 incluso e 34 escluso, mentre la posizione Y deve assumere un valore compreso fra 0 incluso e 17 escluso.
Il terzo parametro si riferisce alla carta da visualizzare sul video: i valori da 1 a 10 si riferiscono alle carte dall'asso al 10, mentre i valori da 11 a 13 si riferiscono rispettivamente al fante, alla donna e al re; il valore 14 si riferisce al jolly, mentre il valore 15 si riferisce alla carta coperta (o dorso della carta); infine il valore 0 cancella la carta visualizzata nella posizione specificata dai due parametri precedenti.
Il quarto ed ultimo parametro si riferisce al seme della carta: 0=picche; 1=fiori; 2=quadri; 3=cuori.
Nel caso in cui però la carta da visualizzare fosse quella coperta (terzo parametro=15) l'ultimo parametro si riferisce al mazzo che si utilizza: 1=mazzo blu; 2=mazzo rosso.
Nel caso invece che la carta da visualizzare sia il jolly, questa sarà nera o rossa a seconda del seme che si mette nell' ultimo parametro (se l'ultimo parametro e' 0 o 1, cioè picche o fiori, il jolly verrà nero, viceversa sarà rosso).
Infine se la carta da visualizzare e' quella che "cancella", l'ultimo parametro può assumere un qualsiasi valore compreso fra 0 incluso e 4 escluso, ma non può essere omesso.
Il programma qui sotto visualizza continuamente una carta qualsiasi (tranne quella che cancella) in una qualsiasi parte del video usando la funzione
RND(0)
Ecco il codice:
10 K1=49152
20 PRINTCHR$(147):POKE53280,0:POKE53281,15
30 SYSK1+138:REM ABILITA COMANDO CARD
40 CARDRND(0)*34,RND(0)*17,RND(0)*15+1,RND(0)*4
50 GOTO40
K1+138: abilita il comando CARD e chiama la K1+150.
K1+150: disabilita i tasti shift e commodore (passaggio maiuscolo/minuscolo) e chiama la K1+158.
K1+158: abilita il set di caratteri di CARD .
K1+169: disabilita il comando CARD e chiama la K1+181.
K1+181: disabilita il set di caratteri di CARD .
K1+232: sostituisce il comando CARD (es. CARD0,1,2,3 può essere sostituito con SYSK1+232,0,1,2,3). In questo modo si può anche fare a meno di abilitare il comando CARD con SYSK1+138, facendo solamente SYSK1+150.
K1+269: ridisegna la carta precedentemente disegnata (I valori dei parametri dell'ultima carta disegnata si trovano nelle locazioni da K1+132 a K1+135 compresa).
Nell’immagine il “desktop” del gioco “Briscola 2”
Quando si visualizza una carta coperta (terzo parametro=15) questa viene visualizzata blu o rossa a seconda del numero del mazzo che mettiamo nell'ultimo parametro (1=mazzo blu, 2=mazzo rosso). Questi due colori sono specificati nelle locazioni K1+136 (che contiene 6, cioe' blu) e K1+137 (che contiene 2, cioè rosso). Modificando il contenuto di queste due locazioni si potra' cambiare il colore dei due mazzi. Es:
POKEK1+136,5
cambia il colore del mazzo 1 da blu in verde.
Se si vuole utilizzare il programma CARD con BASIC espansi non si deve abilitare il comando CARD (SYSK1+138) perche' questo funziona solo con il BASIC V2.
Si deve invece utilizzare la routine K1+232 che in pratica sostituisce tale comando (vedi ELENCO DELLE ROUTINES DI CARD).
Come esempio e' riportato qui sotto il programma precedentemente descritto utilizzando al posto del comando CARD la routine K1+232.
10 K1=49152
20 PRINTCHR$(147):POKE53280,0:POKE53281,15
30 SYSK1+150:REM ABILITAZIONE
40 SYSK1+232,RND(0)*34,RND(0)*17,RND(0)*15+1,RND(0)*4
50 GOTO40
Le routines di CARD sono allocate nelle locazioni da 49152 a 49788 compresa.
Nel caso in cui vogliate spostarle in un'altra zona di memoria perche' quella utilizzata normalmente (da 49152 a 49788 appunto) deve essere utilizzata o dall'espansione BASIC o da altre routines, potete farlo tramite il comando N dello ZOOM monitor. Se ad esempio volete che le vostre CARD ROUTINES vengano caricate nelle locazioni da 4096 a 4732 dovete agire nel seguente modo:
Per il disco:
.L "CARD ROUTINES" 08 1040
.N 108A 127C 5000 C000 C27C
.S "@0:CARD ROUTINES" 08 1040 127D
Per il nastro:
.L "CARD ROUTINES" 01 1040
.N 108A 127C 5000 C000 C27C
.S "CARD ROUTINES" 01 1040 127D
In questo modo le routines di CARD verranno caricate nelle locazioni da 4096 a 4732 invece che da 49152 a 49788.
Per poterle utilizzare pero' e' bene che questa zona di memoria sia protetta dall'utilizzo del BASIC, quindi prima ancora di caricare il file "CARD SYMBOLS" dovete dare i comandi POKE43,126 e POKE44,18. Dopodiche' potete caricare i files "CARD SYMBOLS" e "CARD ROUTINES" e dare i comandi POKE4733,0 e NEW. Ricordatevi pero' di modificare l'assegnazione K1=49152 in testa al programma con K1=4096.
Per utilizzare il programma CARD da Linguaggio Macchina dovete inserire i valori dei 4 parametri nelle locazioni da K1+132 a K1+135 e chiamare la routine K1+269.
Prima di chiamare questa routine pero' assicuratevi che il modo decimale sia disabilitato, altrimenti disabilitatelo con l'istruzione CLD.
E' possibile sostituire il comando CARD con un qualsiasi altro comando (es. CARTA) purche' non piu' lungo di 8 caratteri.
Tale comando e' registrato nelle locazioni da K1+120 a K1+127 sotto forma di codice ASCII.
L'ultimo carattere del comando (es. la D nel caso di CARD) e' contrassegnato dall'avere il bit piu' significativo (MSB) a 1.
Qui sotto e' mostrato il listato di una subroutine BASIC che, se richiamata, sostituisce al comando CARD il comando che e' presente nella variabile A$.
10000 IFLEN(A$)=0ORLEN(A$)>8THENSTOP
10010 FORA=1TOLEN(A$)
10020 POKEK1+119+A,ASC(MID$(A$,A,1))OR-128*(A=LEN(A$))
10030 NEXT
10040 RETURN
Se si vuole ad esempio cambiare il comando CARD con il comando CARTA basta assegnare ad A$ la stringa "CARTA" (A$="CARTA") e chiamare la subroutine con GOSUB10000. Dopodiche' per visualizzare le carte usate il comando CARTA invece di CARD. Qui sotto e' riportato il listato precedentemente descritto utilizzando al posto del comando CARD il comando CARTA.
10 K1=49152
20 A$="CARTA":GOSUB10000:A$="":A=0
30 PRINTCHR$(147):POKE53280,0:POKE53281,15
40 SYSK1+138:REM ABILITA COMANDO CARTA
50 CARTARND(0)*34,RND(0)*17,RND(0)*15+1,RND(0)*4
60 GOTO50
10000 IFLEN(A$)=0ORLEN(A$)>8THENSTOP
10010 FORA=1TOLEN(A$)
10020 POKEK1+119+A,ASC(MID$(A$,A,1))OR-128*(A=LEN(A$))
10030 NEXT
10040 RETURN
Un ultimo avvertimento: nel nuovo comando (es. CARTA) non devono essere presenti comandi BASIC, altrimenti questo nuovo comando non potra' essere utilizzato (es. se il comando CARD viene sostituito con PRINTCAR non potra' essere utilizzato perche' il computer interpretera' tale comando come un PRINT CAR, cioe' come un "stampa il contenuto della variabile CAR").
Nell’immagine il “desktop” del gioco Poker 4
Codice POKE | Simbolo visualizzato |
---|---|
da 0 a 63 | standard Commodore 64 |
64 | A di asso |
da 65 a 73 | dal 2 al 10 |
74 | J di fante |
75 | Q di donna |
76 | K di re |
77 | stella del jolly |
78 | angolo superiore sinistro |
79 | angolo superiore destro |
80 | A di asso capovolta |
da 81 a 84 | dal 2 al 5 capovolti |
85 | linea orizzontale |
86 | 7 capovolto |
87 | angolo inferiore sinistro |
88 | angolo inferiore destro |
89 | 10 capovolto |
da 90 a 92 | J,Q e K capovolti |
da 93 a 95 | simboli di c&l |
96 | picche grande |
97 | fiori grande |
98 | quadri grande |
99 | cuori grande |
100 | picche grande rovesciato |
101 | fiori grande rovesciato |
102 | simbolo carta coperta |
103 | cuori grande rovesciato |
da 104 a 107 | simboli semi piccoli |
da 108 a 111 | simboli semi piccoli capovolti |
da 112 a 126 | simboli jolly |
127 | linea verticale |
da 128 a 191 | standard Commodore 64 |
da 192 a 212 | simboli fante |
da 213 a 233 | simboli donna |
da 234 a 254 | simboli re |
255 | vuoto (non usato) |
Si noti come i simboli standard non grafici del Commodore 64 (lettere, numeri e altri tipo !"#$%&') vengano riportati tali e quali in questo nuovo set di caratteri in modo tale che oltre alle carte possano essere visualizzati anche messaggi e numeri.