Home
Inizio
Prima Prec Contenuti Prossima Ultima
Prima - Prec - Contenuti - Prossima - Ultima
English Deutsch Español
English - Deutsch - Español

Appendice A: C64 BASIC V2

Qui è un breve sommario dei comandi per il C64 BASIC V2 incluso. Nota che questo non è inteso essere una didattica, ma solo una breve referenza per rinfrescarvi la testa.
Se stai cercando per una didattica BASIC, guarda sul manuale originale C64. E' disponibile come testo elettronico su: http://project64.c64.org

In C64 BASIC V2 ci sono solo pochi tipi di variabili:

Solo i primi DUE (!) caratteri di un nome della variable sono significativi. Quindi 'CO', 'COCOS' e 'COLLOSEUM' (ma non 'C' e 'CA') sono equivalenti nomi per una singola variable. D'alra parte il tipo di identificatore è usato per distinguere le variabili. Pertanto 'CO', 'CO%' e 'CO$' sono 3 differenti variabili.

Controllo di Flusso del Programma

FOR...TO...STEP...NEXT - Solo il reale loop costruito in BASIC
Sintassi:
FOR <Var> = <Inizio> TO <Fine> [STEP <Dimensione>]
<Loop Codice>
NEXT [<Var>]
Esempi: FOR I=1 TO 5: PRINT I;: NEXT -> 1 2 3 4 5
FOR I=1 TO 5 STEP 2: PRINT I;: NEXT -> 1 3 5
FOR I=5 TO 1 STEP -2: PRINT I;: NEXT I -> 5 3 1
FOR I=3 TO 1: PRINT I;: NEXT -> 3 (!)
IF...THEN - Esecuzione Programma Condizionale
Nota: Non c'è tale cosa come ELSE o ENDIF.
Sintassi:
IF <Condizione> THEN <Dichiarazione> o
IF <Condizione> GOTO <NrLinea> o
IF <Condizione> THEN <NrLinea>
Esempio:
100 IF A < B THEN MN = A: GOTO 120
110 MN = B
120 ....
GOTO o GO TO - Salto incondizionale
Sintassi:
GOTO <NrLinea> o
GO TO <NrLinea>
GOSUB - Salto incondizionale al Sottoincarico
Nota che non è possibile usare formali parametri ad un sottoincarico. Ogni cosa deve essere fatta usando variabili globali.
Sintassi:
GOSUB <NrLinea>
Esempio:
10 PRINT "Programma Principale"
20 GOSUB 100
30 PRINT "Ritorna all'inizio"
40 GOSUB 100
50 PRINT "Ancora all'inizio"
60 END
100 PRINT "Questo è il sottoincarico"
110 RETURN
RETURN - Ritorno dal Sottoincarico
Sintassi:
RETURN
Esempio:
Vedi GOSUB
ON...GOTO o ON...GOSUB - Ramo multimodalità
Sintassi:
ON <EspressioneIntera> GOTO <LineaNr1>, <LineaNr2> ...
o ON <EspressioneIntera> GOSUB <LineaNr1>, <LineaNr2> ...
Esempio:
ON X GOTO 100, 200, 300
Questo è l'equivalente di:
IF X = 1 THEN GOTO 100
IF X = 2 THEN GOTO 200
IF X = 3 THEN GOTO 300
DEF FN- Definisci una Funzione/Sottoincarico BASIC
Sintassi:
DEF FN <Name>(<Param>) = <Espressione a Linea Singola>
Esempio:
DEF FN SI(X) = SIN(X)/X
FN SI(π/3) -> 0.816993343

Input/Output

GET - Leggi 1 Carattere da Ingresso Standard senza aspettare
Sintassi:
GET <VarName>
Esempio:
100 GET A$: IF A$ = "" THEN GOTO 100 -> Aspetta per qualsiasi Tasto
INPUT - Ottieni Dati da Ingresso Standard (solitamente Tastiera)
Sintassi:
INPUT [<Suggerimento>;] <VarNome> [, <VarNome> ...]
Esempi:
INPUT "LOGIN:"; LG$
INPUT "Please Enter A, B e C"; A, B, C
INPUT A
PRINT - Scrivi sullo Standard di Output (solitamente Schermo)
Sintassi:
PRINT <Dati> o
? <Dati>
Esempi:
PRINT "Ciao Mondo"
PRINT "Ecco", "le", "tabelle" -> Nota il ','
PRINT "Prima Linea"; -> Nota il ';'
PRINT "Ancora sulla stessa linea"
PRINT "Accensione"; 2*32
SPC - Avanza il Cursore di un specifico Numero di Passi
Sintassi:
SPC(<Cnt>)
Esempio:
SPC(6)
TAB- Avanza il Cursore di una specifica Posizione
Sintassi:
TAB(<Posto>)
Esempio:
TAB(6)
POS - Posizione Cursore Corrente
Sintassi:
POS(<Prestanome>)

Files

LOAD- Carica un Programma da Disco o Nastro
Sintassi:
LOAD <NomeFile> [, <Dispositivo> [, <SecondoDispositivo>]]
Esempi:
LOAD "SuperGame", 8, 1 -> Carica da Disco #8
LOAD "*", 9 -> Carica il primo programma da Dico #9
LOAD "", 1 -> Carica il primo programma da Nastro (#1)
SAVE - Salva un Programma su Disco o Nastro
Sintassi:
SAVE <NomeFile> [, <Dispositivo> [, <SecondoDispositivo>]]
Esempio:
SAVE "SuperGame", 8 -> Salva su Disco #8
Per sovrascrivere un file esistente su un disco, prefisso il nome del file con '@'
Esempio:
SAVE "@SuperGame",8 -> Salva su Disco #8, sovrascrittura un vecchio file
VERIFY - Controlla se il Programma in memoria e un Programma su Disco o Nastro sono uguali. Non modificare niente.
Sintassi:
VERIFY <NomeFile> [, <Dispositivo> [, <SecondoDispositivo>]]
Esempi:
VERIFY "SuperGame", 8 -> Controlla SuperGame da Disk #8
VERIFY "*", 9 -> Controlla il primo programma da Disk #9
VERIFY "", 1 -> Controlla il primo programma da Nastro #1
OPEN- Open un File
Sintassi:
OPEN <FileID>, <Dispositivo> [, <SecondoDispositivo> [, <FNameMode>]]
Il <SecondoDispositivo> è un intero opzionale nel campo 0-15 con seguente significato: 0..Usato per CARICARE, 1..Usato per SALVARE, 2-14..Interamente utile per Accesso File Utente, 15..Canale.
<FNameMode> usa il formato: "<NomeFile> [,<FileType> [,<AccessMode>]]" dove <FileType> è 1 di P (Programma), S (Sequenziale), L (Relativo) o U (Utente) e <ModoAccesso> è 1 di R (Lettura), W (Scrittura), A (Appendere) o il numero di Bytes/Registro per Files Relativi.
Esempi:
OPEN 1, 4 -> Apri un file Uscita alla Stampante #4
OPEN 1, 8, 2, "Mio File,P,R" -> Apri un Programma per Lettura
OPEN 1, 8, 2, "Mio File,S,W" -> Apri un File Sequenziale per Scrittura
OPEN 1, 8, 2, "Mio File,L,"+CHR$(40) -> Apri un File Relativo con 40 Bytes/Record
OPEN 1, 8, 15 -> Apri il CanaleDisco
CLOSE - Chiudi un File
Sintassi:
CLOSE <FileID>
Esempio:
CLOSE 1
GET# - Leggi 1 Carattere da un File
Sintassi:
GET# <FileID>, <VarName>
Esempio:
GET#1, A$
Nota che non c'è spazio tra 'GET' e '#'.
INPUT# - Ottieni Dati da un File
Sintassi:
INPUT# <FileID>, <VarName> [, <VarName>...]
Esempio:
INPUT#1, EN$, ER$, TR$, SC$
Nota che non c'è spazio tra 'INPUT' e '#'.
PRINT#
Sintassi:
PRINT# <FileID>, <Dati>
Esempio:
PRINT#1, "Power64"
Nota che non c'è spazio tra 'PRINT' e '#'. Nota anche che ?# non è PRINT# anche se sembrano gli stessi in una lista.
CMD - Reindirizza l'Uscita Standard (Input non è affetto) e ci scrive un Messaggio
Sintassi:
CMD <FileID> [, <Message>]
Esempio:
OPEN 1, 4 ; Apri un File#1 su Stampante#4
CMD 1 ; Fanne lo standard Uscita
PRINT "Qualunque Uscita vuoi"
PRINT "Più Uscite"
PRINT#1 ; Undo CMD 1
CLOSE 1
ST - Stao Dispositivo (Inclusa Variable)
ST = 0 .. Dispositivo Ok
Bit 6: 1 .. Fine del File
Bit 7: 1 .. Dispositivo Non Presente
READ - Leggi i Dati Statici dal rendiconto DATI nel Programma
Sintassi:
READ <Var> [, <Var>...]
Esempio:
10 RESTORE
20 READ X$
30 PRINT X$;
40 S = 0
50 FOR I=1 TO 3
60 READ X
70 S = S + X
80 NEXT I
90 PRINT S
100 DATA "Power", 12, 34, 18
RESTORE - Imposta Puntatore al prossimo elemento DATA al primo rendiconto DATA nel programma.
Sintassi:
RESTORE
Esempio:
Vedi READ
DATA- Immagazzina Dati Statici
Sintassi:
DATA <Dati> [, <Dati>...]
Esempio:
Vedi READ

Funzioni Matematiche

LET - Assegnazione
Sintassi:
LET <Variabile> = <Valore>
Example LET A = 6.25
Nota che la parola chiave LET non è necessaria. <Variable> = <Valore> è tutto ciò che necessita. LET mostra solo cose giù -> Non usarlo!
DIM - Dichiarazione Schieramento
Sintassi:
DIM <Nome>(<Dimensione> [, <Dimensione>...])
Esempi:
DIM A(7) -> Uno schieramento di 8(!) elementi indicizzati [0..7]
DIM B$(4,5) -> Uno schieramento di 30(!) stringhe
Uso di Elementi: A(3) = 17 : B$(2,3) = "Power64"
+, -, *, /, ^ - Operatori Aritmetici
Esempio:
9 + 5 * (15 - 1) / 7 + 2^4 -> 35
<, <=, =, <>, >=, > - Operatori di Comparazione
Esempi:
3 <> 6 -> -1 (TRUE)
3 > 4 -> 0 (FALSE)
SIN - Seno (Argomento in Radianti)
Sintassi:
SIN(<Valore>)
Esempio:
SIN(π/3) -> 0.866025404
COS - Coseno (Argomento in Radianti)
Sintassi:
COS(<Valore>)
Esempio:
COS(π/3) -> 0.5
TAN - Tangente (Argomento in Radianti)
Sintassi:
TAN(<Valore>)
Esempio:
TAN(π/3) -> 1.73205081
ATN - Arco Tangente (Resulta in [-π/2 .. π/2])
Sintassi:
ATN(<Valore>)
Esempio:
ATN(1) -> 0.785398163 ( = π/4)
EXP - Esponente (ex dove e = 2.71828183...)
Sintassi:
EXP(<Valore>)
Esempio:
EXP(6.25) -> 518.012825
LOG - Logaritmo Naturale
Sintassi:
LOG(<Valore>)
Esempio:
LOG(6.25) -> 1.83258146
SQR - Radice Quadrata
Sintassi:
SQR(<Valore>)
Esempio:
SQR(6.25) -> 2.5
ABS - Valore Assoluto
Sintassi:
ABS(<Valore>)
Esempi:
ABS(-6.25) -> 6.25
ABS(0) -> 0
ABS(6.25) -> 6.25
SGN - Firma
Sintassi:
SGN(<Valore>)
Esempi:
SGN(-6.25) -> -1
SGN(0) -> 0
SGN(6.25) -> 1
INT - Numero Intero (Tronca il più grande numero intero meno o uguale all'Argomento.)
Sintassi:
INT(<Valore>)
Esempi:
INT(-6.25) -> -7 (!)
INT(-5) -> -5
INT(0) -> 0
INT(5) -> 5
INT(6.25) -> 6
RND - Numero Casuale in [0.0 .. 1.0]
Sintassi:
RND(<Seed>)
Se (<Seed> < 0) il Generatore Numero Casuale è inizializzato
Esempi:
RND(-625) -> 3.85114436E-06
RND(0) -> 0.464844882
RND(0) -> 0.0156260729

Operatori Logici e Binari

Richiama i Valori Booleani di codifica:
FALSE <--> 0 (0x0000) e TRUE <--> -1 (0xFFFF) o qualsiasi valore non-zero

AND- AND Logico e Binario
Sintassi:
<Expr> AND <Expr>
Esempi:
A>5 AND X<=Y
12 AND 10 -> 8 (%1100 AND %1010 = %1000)
OR - OR Logico e Binario
Sintassi:
<Expr> OR <Expr>
Esempi:
A>5 OR X<=Y
12 OR 10 -> 14 (%1100 OR %1010 = %1110)
NOT- NOT Logico e Binario
Sintassi:
NOT <Expr>
Esempi:
NOT A>5
NOT 2 -> -3 (NOT $0002 = $FFFD)

Processione Carattere e Stringa

+ - Stringhe Concatenate
Esempio:
"Pow" + "er64" -> "Power64"
<, <=, =, <>, >=, > - Operatori di Comparazione
Esempi:
"C64" < "Power64" -> -1 (TRUE)
"Alpha" > "Omega" -> 0 (FALSE)
LEN - Lunghezza di Stringa
Sintassi:
LEN(<String>)
Esempio:
LEN("Power64") -> 7
LEFT$ - Parte Sinistra di un stringa
Sintassi:
LEFT$(<String>, <Len>)
Esempio:
LEFT$("Power64", 5) -> "Power"
RIGHT$ - Parte destra di un stringa
Sintassi:
RIGHT$(<String>, <Len>)
Esempio:
RIGHT$("Power64", 5) -> "wer64"
MID$ - Parte media di un stringa
Sintassi:
MID$(<String>, <Start>, <Len>)
Esempio:
MID$("Power64 per Macintosh", 13, 3) -> "Mac"
/* -- 123456789012345678901 -- */
STR$ - Converti un Numero in una Stringa
Sintassi:
STR$(<Valore>)
Esempi:
STR$(6.25) -> " 6.25"
STR$(-6.25) -> "-6.25"
VAL - Converti una Stringa in un Numero
Sintassi:
VAL(<String>)
Esempi:
VAL("6.25") -> 6.25
VAL("6xx25") -> 6
VAL("x6x25") -> 0
ASC- Codice ASCII del primo carattere di un stringa
Sintassi:
ASC(<String>)
Esempi:
ASC("P") -> 80
ASC("Power64") -> 80
CHR$ - Carattere con uno specifico codice ASCII
Sintassi:
CHR$(<Valore>)
Esempio:
CHR$(80) -> "P"

Accesso Memoria

PEEK - Leggi Byte da Memoria
Sintassi:
PEEK(<Addr>)
Esempio:
PEEK(53280) -> Colore Fotogramma Corrente
POKE - Scrivi Byte su Memoria
Sintassi:
POKE <Addr>, <Valore>
Esempio:
POKE 53280, 7 -> Fotogramma Giallo
WAIT - Aspetta fino un Byte in Memoria che abbia un specifico valore
Sintassi:
WAIT <Addr>, <Mask> [, <Invert>]
WAIT fermerà il programma fino ((PEEK(<Addr>) EXOR <Invert>) AND <Mask>) != 0
Se <Invert> non è specificato è indotto ad essere 0.
Esempio:
WAIT 198, 255 -> Aspetta per un tasto nel buffer.

Programmi da Interfaccia ad Assembler

SYS - Sistema - Chiama un Programma Assembler
Sintassi:
SYS <Addr> [, <Param> ...]
Il numero di parametri dipende sull'attuale programma chiamato.
USR- Comando Utente
Sintassi:
USR(<Param>)
Simile a SYS ma l' <Addr> è corretto a $0310 e il primo e solo <Param> è già valutato e immagazzinato in FloatAccu1 (FAC1) quando il Programma Assembler è chiamato. Meno flessibile di SYS e quindi raramente usato.

Esecuzione Programma

RUN - Inizio del Programma BASIC
Sintassi:
RUN [<Line>]
Se nessuna <Linea> è data, il programma è iniziato su la sua prima linea.
Esempio:
RUN
STOP- Ferma esecuzione programma
Sintassi:
STOP
STOP è simile a END, ma stampa il messaggio BREAK IN <Linea> quando eseguito.
END - Fine End esecuzione programma
Sintassi:
END
CONT - Continua esecuzione programma
Sintassi:
CONT
Quando esecuzione programma è interrotto da STOP, END o il tasto Esegui/Stop, il comando CONT può essere usato per riprendere l'esecuzione.

Varie

REM - Rimarca
Sintassi:
REM <Text>
Esempio:
REM Questa linea contiene un commento
LIST - Visualizza la lista del programma corrente BASIC
Sintassi:
LIST [<Line> | <From>- | -<To> | <From>-<To>]
Senza argomento, l'intero programma è listato.
Esempi:
LIST
LIST -40
LIST 100-200
NEW - Cancella il programma corrente e tutte le variabili da memoria
Sintassi:
NEW
Se il comando NEW è stato accidentalmente immesso, il programma cancellato può essere recuperato usando il NEW Magician descritto in Sezione 7.2.
CLR - Cancella tutte le variabili
Sintassi:
CLR
FRE - Memoria Disponibile
Sintassi:
FRE(<Dummy>)
Esempio:
FRE(0) -> -26627 (immediatamente dopo L'accensione)
Ridà il numero di Bytes free per BASIC programmi come un segnato 16 Bit intero. Se la memoria disponibile eccede di 32KByte poi un numero negativo (l'attuale numero di free Bytes - 65536) sarà reinserito. Quindi -26627 dovrebbe essere letto come 65536-26627 = 38909.
π - Pi = 3.14159265
TI - Timer Ticks sin da Power-On (1 Tick = 1/60 Secondo)
TI$ - Timer sin da Acceso in Formato Ora/Minuti/Secondo
TI$ (ma non TI) può essere assegnato un valore!
L'accuratezza del Timer è molto povera (>1% moto)

Home Prima Prec Contenuti Prossima Ultima Top of Page

Fonte: http://www.salto.at/Power64/Documentation/Power64-LeggiMi/AA-C64_BASIC.html
Power64 Homepage: http://www.infinite-loop.at e http://www.salto.at - EMail:
© Roland Lieger, Goethegasse 39, A-2340 Mödling, Austria - Europe
Ultimo Cambiamento: 29. Febbraio 2008
Valid HTML 4.01!