Skip to content
[email protected] edited this page Nov 12, 2024 · 7 revisions

PROGRAMMA "CARD" PER COMMODORE 64 - BASIC V2

MANUALE D'USO

Scarica il manuale CARD in PDF

A COSA SERVE IL PROGRAMMA "CARD"

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.

./Briscola2_bordo

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.

STRUTTURA DEL PROGRAMMA CARD CON IL BASIC V2

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.

./Load_Poker_4.png

Nell’immagine un esempio della sequenza di caricamento del gioco “poker 4”

USO DEL COMANDO CARD

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

I 4 PARAMETRI DEL COMANDO CARD

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

ELENCO DELLE ROUTINES DI CARD

Routines di abilitazione:

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 .

Routines di disabilitazione:

K1+169: disabilita il comando CARD e chiama la K1+181.

K1+181: disabilita il set di caratteri di CARD .

Altre routines:

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).

./Briscola2_desktop

Nell’immagine il “desktop” del gioco “Briscola 2”

CAMBIARE I COLORI DELLE CARTE COPERTE

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.

USO DEL COMANDO CARD CON BASIC ESPANSI

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

RILOCAZIONE DELLE ROUTINES DI CARD

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.

UTILIZZO DI CARD DA LINGUAGGIO MACCHINA

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.

SOSTITUZIONE DEL COMANDO CARD

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

APPENDICE: TABELLA DEI SIMBOLI GRAFICI DI CARD

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.

Copyright (c) 1985-2024 - Carlo & Lorenzo Barazzetta