|
|
|
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.
FOR...TO...STEP...NEXT
- Solo il reale loop costruito in BASICFOR <Var> = <Inizio> TO <Fine> [STEP <Dimensione>]
<Loop Codice>
NEXT [<Var>]
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 CondizionaleELSE
o ENDIF
.IF <Condizione> THEN <Dichiarazione>
oIF <Condizione> GOTO <NrLinea>
oIF <Condizione> THEN <NrLinea>
100 IF A < B THEN MN = A: GOTO 120
110 MN = B
120 ....
GOTO
o GO TO
- Salto incondizionaleGOTO <NrLinea>
oGO TO <NrLinea>
GOSUB
- Salto incondizionale al SottoincaricoGOSUB <NrLinea>
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 SottoincaricoRETURN
GOSUB
ON...GOTO
o ON...GOSUB
- Ramo multimodalitàON <EspressioneIntera> GOTO <LineaNr1>, <LineaNr2>
...ON <EspressioneIntera> GOSUB <LineaNr1>, <LineaNr2>
...
ON X GOTO 100, 200, 300
IF X = 1 THEN GOTO 100
IF X = 2 THEN GOTO 200
IF X = 3 THEN GOTO 300
DEF FN
- Definisci una Funzione/Sottoincarico BASICDEF FN <Name>(<Param>) = <Espressione a Linea Singola>
DEF FN SI(X) = SIN(X)/X
FN SI(π/3) -> 0.816993343
GET
- Leggi 1 Carattere da Ingresso Standard senza aspettareGET <VarName>
100 GET A$: IF A$ = "" THEN GOTO 100
-> Aspetta per qualsiasi TastoINPUT
- Ottieni Dati da Ingresso Standard (solitamente Tastiera)INPUT
[<Suggerimento>;] <VarNome> [, <VarNome> ...]
INPUT "LOGIN:"; LG$
INPUT "Please Enter A, B e C"; A, B, C
INPUT A
PRINT
- Scrivi sullo Standard di Output (solitamente Schermo)PRINT <Dati>
o? <Dati>
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 SPC(<Cnt>)
SPC(6)
TAB
- Avanza il Cursore di una specifica PosizioneTAB(<Posto>)
TAB(6)
POS
- Posizione Cursore CorrentePOS(<Prestanome>)
LOAD
- Carica un Programma da Disco o NastroLOAD <NomeFile> [, <Dispositivo> [, <SecondoDispositivo>]]
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 NastroSAVE <NomeFile> [, <Dispositivo> [, <SecondoDispositivo>]]
SAVE "SuperGame", 8 -> Salva su Disco #8
@
'
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.VERIFY <NomeFile> [, <Dispositivo> [, <SecondoDispositivo>]]
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 FileOPEN <FileID>, <Dispositivo> [, <SecondoDispositivo> [, <FNameMode>]]
<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.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 Sequenzial
e 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 FileCLOSE <FileID>
CLOSE 1
GET#
- Leggi 1 Carattere da un FileGET# <FileID>, <VarName>
GET#1, A$
GET
' e '#
'.
INPUT#
- Ottieni Dati da un FileINPUT# <FileID>, <VarName> [, <VarName>...]
INPUT#1, EN$, ER$, TR$, SC$
INPUT
' e '#
'.
PRINT#
PRINT# <FileID>, <Dati>
PRINT#1, "Power64"
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 MessaggioCMD <FileID> [, <Message>]
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)READ
- Leggi i Dati Statici dal rendiconto DATI nel ProgrammaREAD <Var> [, <Var>...]
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.RESTORE
READ
DATA
- Immagazzina Dati StaticiDATA <Dati> [, <Dati>...]
READ
LET
- AssegnazioneLET <Variabile> = <Valore>
LET A = 6.25
LET
non è necessaria. <Variable> = <Valore> è tutto ciò che necessita. LET
mostra solo cose giù -> Non usarlo!
DIM
- Dichiarazione SchieramentoDIM <Nome>(<Dimensione> [, <Dimensione>...])
DIM A(7)
-> Uno schieramento di 8(!) elementi indicizzati [0..7]DIM B$(4,5)
-> Uno schieramento di 30(!) stringheA(3) = 17 : B$(2,3) = "Power64"
+, -, *, /, ^
- Operatori Aritmetici9 + 5 * (15 - 1) / 7 + 2^4 -> 35
<, <=, =, <>, >=, >
- Operatori di Comparazione3 <> 6 -> -1 (TRUE)
3 > 4 -> 0 (FALSE)
SIN
- Seno (Argomento in Radianti)SIN(<Valore>)
SIN(π/3) -> 0.866025404
COS
- Coseno (Argomento in Radianti)COS(<Valore>)
COS(π/3) -> 0.5
TAN
- Tangente (Argomento in Radianti)TAN(<Valore>)
TAN(π/3) -> 1.73205081
ATN
- Arco Tangente (Resulta in [-π/2 .. π/2])ATN(<Valore>)
ATN(1) -> 0.785398163 ( = π/4)
EXP
- Esponente (ex dove e = 2.71828183...)EXP(<Valore>)
EXP(6.25) -> 518.012825
LOG
- Logaritmo Naturale LOG(<Valore>)
LOG(6.25) -> 1.83258146
SQR
- Radice QuadrataSQR(<Valore>)
SQR(6.25) -> 2.5
ABS
- Valore AssolutoABS(<Valore>)
ABS(-6.25) -> 6.25
ABS(0) -> 0
ABS(6.25) -> 6.25
SGN
- Firma SGN(<Valore>)
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.)INT(<Valore>)
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]RND(<Seed>)
(<Seed> < 0)
il Generatore Numero Casuale è inizializzatoRND(-625) -> 3.85114436E-06
RND(0) -> 0.464844882
RND(0) -> 0.0156260729
Richiama i Valori Booleani di codifica:
FALSE <--> 0 (0x0000) e TRUE <--> -1 (0xFFFF)
o qualsiasi valore non-zero
AND
- AND Logico e Binario <Expr> AND <Expr>
A>5 AND X<=Y
12 AND 10 -> 8 (%1100 AND %1010 = %1000)
OR
- OR Logico e Binario <Expr> OR <Expr>
A>5 OR X<=Y
12 OR 10 -> 14 (%1100 OR %1010 = %1110)
NOT
- NOT Logico e Binario NOT <Expr>
NOT A>5
NOT 2 -> -3 (NOT $0002 = $FFFD)
+
- Stringhe Concatenate"Pow" + "er64" -> "Power64"
<, <=, =, <>, >=, >
- Operatori di Comparazione"C64" < "Power64" -> -1 (TRUE)
"Alpha" > "Omega" -> 0 (FALSE)
LEN
- Lunghezza di StringaLEN(<String>)
LEN("Power64") -> 7
LEFT$
- Parte Sinistra di un stringaLEFT$(<String>, <Len>)
LEFT$("Power64", 5) -> "Power"
RIGHT$
- Parte destra di un stringaRIGHT$(<String>, <Len>)
RIGHT$("Power64", 5) -> "wer64"
MID$
- Parte media di un stringaMID$(<String>, <Start>, <Len>)
MID$("Power64 per Macintosh", 13, 3) -> "Mac"
/* -- 123456789012345678901 -- */
STR$
- Converti un Numero in una StringaSTR$(<Valore>)
STR$(6.25) -> " 6.25"
STR$(-6.25) -> "-6.25"
VAL
- Converti una Stringa in un NumeroVAL(<String>)
VAL("6.25") -> 6.25
VAL("6xx25") -> 6
VAL("x6x25") -> 0
ASC
- Codice ASCII del primo carattere di un stringaASC(<String>)
ASC("P") -> 80
ASC("Power64") -> 80
CHR$
- Carattere con uno specifico codice ASCIICHR$(<Valore>)
CHR$(80) -> "P"
PEEK
- Leggi Byte da MemoriaPEEK(<Addr>)
PEEK(53280)
-> Colore Fotogramma CorrentePOKE
- Scrivi Byte su MemoriaPOKE <Addr>, <Valore>
POKE 53280, 7
-> Fotogramma GialloWAIT
- Aspetta fino un Byte in Memoria che abbia un specifico valoreWAIT <Addr>, <Mask> [, <Invert>]
WAIT
fermerà il programma fino ((PEEK(<Addr>) EXOR <Invert>) AND <Mask>) != 0
Invert
> non è specificato è indotto ad essere 0.
WAIT 198, 255
-> Aspetta per un tasto nel buffer.
SYS
- Sistema - Chiama un Programma Assembler SYS <Addr> [, <Param> ...]
USR
- Comando UtenteUSR
(<Param>)
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.
RUN
- Inizio del Programma BASICRUN [<Line>]
Linea
> è data, il programma è iniziato su la sua prima linea.
RUN
STOP
- Ferma esecuzione programmaSTOP
STOP
è simile a END
, ma stampa il messaggio BREAK IN <Linea>
quando eseguito.
END
- Fine End esecuzione programmaEND
CONT
- Continua esecuzione programmaCONT
STOP
, END
o il tasto Esegui/Stop, il comando CONT
può essere usato per riprendere l'esecuzione.
REM
- RimarcaREM <Text>
REM Questa linea contiene un comment
oLIST
- Visualizza la lista del programma corrente BASIC LIST [<Line> | <From>- | -<To> | <From>-<To>]
LIST
LIST -40
LIST 100-200
NEW
- Cancella il programma corrente e tutte le variabili da memoriaNEW
NEW
è stato accidentalmente immesso, il programma cancellato può essere recuperato usando il NEW
Magician descritto in Sezione 7.2.
CLR
- Cancella tutte le variabiliCLR
FRE
- Memoria DisponibileFRE(<Dummy>)
FRE(0)
-> -26627 (immediatamente dopo L'accensione)
π
- Pi = 3.14159265TI
- 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!
Fonte: http://www.infinite-loop.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 |