C64 SuperChart – Zeropage v2.0

Diese C64 Superchart v2.0 gibt einen Überblick über die CPU Opcodes, Zeropage Beschreibung, BASIC V2 Token, ASCII-Zeichen und die PETSCII-Zeichen bzw. Steuercodes.



Code

  • Die Werte sind hier in dezimal (0-255) und hexadezimal ($00-$FF) angegeben.

CPU OpCodes

  • Operation Codes der CPU (MOS 6502 / 6510 / 8500)
  • Illegale bzw. undokumentierte OpCodes sind in eckigen Klammern […] geschrieben.
  • Adressierungsarten:

    • abs – absolute Adressierung
    • abx – absolute X-indizierte Adressierung
    • aby – absolute Y-indizierte Adressierung
    • akk – Akkumulator Adressierung
    • imm – immediate – Unmittelbare Adressierung
    • imp – implizite Adressierung
    • ind – indirekte Adressierung
    • inx – indirekte X-indizierte Zeropage-Adressierung
    • iny – indirekte Y-nachindizierte Zeropage-Adressierung
    • rel – relative Adressierung
    • zp – Zeropage-Adressierung
    • zpx – Zeropage X-indizierte Adressierung
    • zpy – Zeropage Y-indizierte Adressierung

ZeroPage

  • Ein Block von 256 Bytes (Seite Null) die für KERNAL- und BASIC-Routinen genutzt werden.
  • Erfahrene Programmierer (z.B. Demo-Coder) nutzen diese Routinen in Maschinensprache.
  • 1-Byte Adressierung

BASIC

  • Das entsprechende Token (Kommando) für den Basic V2 Interpreter.

ASCII

  • Das entsprechende ASCII-Zeichen.
  • ASCII Codes liegen nur im Bereich von 0-127 ($00-$FF).

PETSCII / Fonts

  • Das Zeichen (Font) oder der Steuercode im Upper- (Großschrift) und Lower-Modus (Kleinschrift).
  • Die Codes für die Farben haben für eine bessere Sortierung einen . (Punkt) vor dem Wort.
  • Ab Code 128 / $80 sind die Fonts alle invertiert. In dieser Tabelle kann ich das leider nicht grafisch darstellen.

Tabelle


Code
dez
hex
CPU
6510
ZeropageBASICASCIIFont upFont lo
0
$00
BRK
impl
Prozessorport Datenrichtungsregister I/O-Data
Bit 0 - 6; 0 = Eingang (read only), 1 = Ausgang (read/write)
Bit 0: Direction of Bit 0 I/O on port at next address. Default = 1 (output)
Bit 1: Direction of Bit 1 I/O on port at next address. Default = 1 (output)
Bit 2: Direction of Bit 2 I/O on port at next address. Default = 1 (output)
Bit 3: Direction of Bit 3 I/O on port at next address. Default = 1 (output)
Bit 4: Direction of Bit 4 I/O on port at next address. Default = 0 (input)
Bit 5: Direction of Bit 5 I/O on port at next address. Default = 1 (output)
Bit 6: Direction of Bit 6 I/O on port at next address. Not used.
Bit 7: Direction of Bit 7 I/O on port at next address. Not used.
Default: $2F, %00101111.
0 = Ende Zeile
00 = Ende Prog.
{NUL}
1
$01
ORA
inx
Prozessorport I/O-Port
Bit 0: LORAM signal. Selects ROM or RAM at 40960 ($A000). 1=BASIC, 0=RAM
Bit 1: HIRAM signal. Selects ROM or RAM at 57344 ($E000). 1=Kernal, 0=RAM
Bit 2: CHAREN signal. Selects character ROM or I/O devices. 1=I/O, 0=ROM
Bit 3: Cassette Data Output line.
Bit 4: Cassette Switch Sense. Reads 0 if a button is pressed, 1 if not.
Bit 5: Cassette Motor Switch Control. A 1 turns the motor on, 0 turns it off.
Bits 6-7: Not connected--no function presently defined.
Default: $37, %00110111.
{SOH}
2
$02
[STP]Unbenutzt{STX}
3
$03
[SLO]
inx
Jump Vector: Umwandlung von Fließkommazahl nach Ganzzahl
($B1AA)
{ETX}RUN/STOPRUN/STOP
4
$04
[NOP]
zp
Jump Vector: Umwandlung von Fließkommazahl nach Ganzzahl
($B1AA)
{EOT}
5
$05
ORA
zp
Jump Vector: Umwandlung Ganzzahl nach Fließkommazahl
($B391)
{ENQ}.WHITE.WHITE
6
$06
ASL
zp
Jump Vector: Umwandlung Ganzzahl nach Fließkommazahl
($B391)
{ACK}
7
$07
[SLO]
zp
Suchzeichen Texteingabe BASIC{BEL}
8
$08
PHP
imp
Suchzeichen Befehlsende Hochkomma{BS}
9
$09
ORA
imm
Spaltenposition (0-79) des Cursors nach dem letzten TAB- oder SPC-Befehl{HT}UnlockUnlock
10
$0A
ASL
akk
Flag: LOAD+VERIFY
$00 = LOAD
$01-$FF = VERIFY
Load: POKE 10,0:SYS 57705
{LF}
11
$0B
[ANC]
imm
Flags: Pointer im Eingabepuffer; Anzahl der Dimensionen; AND/OR Switch
$00 = AND
$FF = OR
{VT}
12
$0C
[NOP]
abs
Flag: DIM
$00 Operation nicht durch DIM-Befehl
$40-$7F Operation durch DIM-Befehl
{FF}
13
$0D
ORA
abs
Flag: Datentyp
$00 = numerisch
$FF = String
{CR}Carrige ReturnCarrige Return
14
$0E
ASL
abs
Flag: Zahlentyp
$00 = Gleitkommazahl
$80 = Ganzzahl
{SO}UPPER/LOWERUPPER/LOWER
15
$0F
[SLO]
abs
Flags: LIST Quote; Garbage Collection; Tokenization
$00-$7F = GC wurde noch nicht ausgeführt
$FF = GC wurde bereits ausgeführt
Konvertierung der Text-Zeilen in Tokens und Speicherung im Input Buffer ($0200, 512)
{SI}
16
$10
BPL
rel
Flags: Variablen-Namen; DEF FN
$00 = Integer-Variablen werden akzeptiert
$01-FF = Integer-Variablen werden nicht akzeptiert
{DLE}
17
$11
ORA
iny
Flag: INPUT, GET oder READ
$00 = INPUT
$40 = GET
$98 = READ
{DC1}CRSR DOWNCRSR DOWN
18
$12
[STP]Flags: Vorzeichen bei SIN, COS und TAN; Vergleichsoperator für Vergleichsoperationen
Vorzeichen:
$00 = Positive
$FF = Negative
Operator:
$00 = OR =
$01 = >
$02 = =
$03 = >=
$04 = <
$05 =
$06 = <=
{DC2}RVS ONRVS ON
19
$13
[SLO]
iny
Flag: Aktives I/O-Device
$00 = Direkteingabe
Default: $00
{DC3}CRSR HOMECRSR HOME
20
$14
[NOP]
zpx
Temp: Integer-Wert
Zeilennummer für LIST, GOTO, GOSUB und ON;
Speichert höchste Zeilennummer bei LIST, Default: 65535 ($FFFF);
Pointer der Adresse bei PEEK, POKE, SYS und WAIT
{DC4}DELDEL
21
$15
ORA
zpx
Temp: Integer-Wert
Zeilennummer für LIST, GOTO, GOSUB und ON;
Speichert höchste Zeilennummer bei LIST, Default: 65535 ($FFFF);
Pointer der Adresse bei PEEK, POKE, SYS und WAIT
{NAK}
22
$16
ASL
zpx
Pointer: Stringstack
Werte: $19; $1C; $1F; $22
Default: $19
BASIC: FORMULA TOO COMPLEX ERROR (Stack full)
{SYN}
23
$17
[SLO]
zpx
Pointer: Adresse des letzten Strings im String Stack{ETB}
24
$18
CLC
imp
Pointer: Adresse des letzten Strings im String Stack{CAN}
25
$19
ORA
aby
Temp: Stringstack
Drei Einträge mit jeweils 3 Byte
{EM}
26
$1A
[NOP]
imp
Temp: Stringstack
Drei Einträge mit jeweils 3 Byte
{SUB}
27
$1B
[SLO]
aby
Temp: Stringstack
Drei Einträge mit jeweils 3 Byte
{ESC}ESCESC
28
$1C
[NOP]
abx
Temp: Stringstack
Drei Einträge mit jeweils 3 Byte
{FS}.RED.RED
29
$1D
ORA
abx
Temp: Stringstack
Drei Einträge mit jeweils 3 Byte
{GS}CURSOR RIGHTCURSOR RIGHT
30
$1E
ASL
abx
Temp: Stringstack
Drei Einträge mit jeweils 3 Byte
{RS}.GREEN.GREEN
31
$1F
[SLO]
abs
Temp: Stringstack
Drei Einträge mit jeweils 3 Byte
{US}.BLUE.BLUE
32
$20
JSR
abs
Temp: Stringstack
Drei Einträge mit jeweils 3 Byte
{SPACE}
33
$21
AND
inx
Temp: Stringstack
Drei Einträge mit jeweils 3 Byte
!
34
$22
[JAM]Temp Pointer: First Utility Pointer (INDEX1)"
35
$23
[RLA]
inx
Temp Pointer: First Utility Pointer (INDEX1)#
36
$24
BIT
zp
Temp Pointer: Second Utility Pointer (INDEX2)$
37
$25
AND
zp
Temp Pointer: Second Utility Pointer (INDEX2)%
38
$26
ROL
zp
Register für Arithmetik (Multiplikation und Division)&
39
$27
[RLA]
zp
Register für Arithmetik (Multiplikation und Division)´
40
$28
PLP
imp
Register für Arithmetik (Multiplikation und Division)(
41
$29
AND
imm
Register für Arithmetik (Multiplikation und Division))
42
$2A
ROL
akk
Register für Arithmetik (Multiplikation und Division)*
43
$2B
[ANC]
imm
Pointer: Beginn Speicherbereich BASIC Programme (Text)
Default: $0801, 2049
Beginn Programmspeicher: PRINT PEEK (43) + PEEK (44)*256
+
44
$2C
BIT
abs
Pointer: Beginn Speicherbereich BASIC Programme (Text)
Default: $0801, 2049
Beginn Programmspeicher: PRINT PEEK (43) + PEEK (44)*256
,
45
$2D
AND
abs
Pointer: Beginn Speicherbereich Variablen
End of program +1
-
46
$2E
ROL
abs
Pointer: Beginn Speicherbereich Variablen
End of program +1
.
47
$2F
[RLA]
abs
Pointer: Beginn Speicherbereich Arrays/
48
$30
BMI
rel
Pointer: Beginn Speicherbereich Arrays0
49
$31
AND
iny
Pointer: Ende Speicherbereich Arrays
+1
1
50
$32
[JAM]Pointer: Ende Speicherbereich Arrays
+1
2
51
$33
[RLA]
iny
Pointer: Ende Speicherbereich Textspeicher / Strings
Default: $A000
3
52
$34
[NOP]
zpx
Pointer: Ende Speicherbereich Textspeicher / Strings
Default: $A000
4
53
$35
AND
zpx
Pointer: Adresse des letzten Strings im Speicher5
54
$36
ROL
zpx
Pointer: Adresse des letzten Strings im Speicher6
55
$37
[RLA]
zpx
Pointer: Ende Speicherbereich BASIC-RAM
Default: $A000, 40960
7
56
$38
SEC
imp
Pointer: Ende Speicherbereich BASIC-RAM
Default: $A000, 40960
8
57
$39
AND
aby
Pointer: Aktuell ausgeführte Zeilennummer vom BASIC-Programm
Zeilennummer: $00-$F9FF, 0-63999
Direktmodus: $FF00-$FFFF
9
58
$3A
[NOP]
imp
Pointer: Aktuell ausgeführte Zeilennummer vom BASIC-Programm
Zeilennummer: $00-$F9FF, 0-63999
Direktmodus: $FF00-$FFFF
:
59
$3B
[RLA]
aby
Pointer: Letzte Zeilennummer bei Programmunterbrechung für CONT
Nach STOP, END oder STOP-Taste
;
60
$3C
[NOP]
abx
Pointer: Letzte Zeilennummer bei Programmunterbrechung für CONT
Nach STOP, END oder STOP-Taste
<
61
$3D
AND
abx
Pointer: Nächster BASIC-Befehl für CONT
$00-$FF: CONT nicht möglich
$0100-$FFFF: Nächster BASIC-Befehl
=
62
$3E
ROL
abs
Pointer: Nächster BASIC-Befehl für CONT
$00-$FF: CONT nicht möglich
$0100-$FFFF: Nächster BASIC-Befehl
>
63
$3F
[RLA]
abx
Pointer: Aktuell ausgeführte Zeilennummer bei DATA für READ?
64
$40
RTI
imp
Pointer: Aktuell ausgeführte Zeilennummer bei DATA für READ@
65
$41
EOR
inx
Pointer: Nächste Zeilennummer bei DATA für READa
66
$42
[JAM]Pointer: Nächste Zeilennummer bei DATA für READb
67
$43
[SRE]
inx
Pointer: Adresse Input Buffer ($0200, 512) bei GET, READ, INPUTc
68
$44
[NOP]
zp
Pointer: Adresse Input Buffer ($0200, 512) bei GET, READ, INPUTd
69
$45
EOR
zp
Variable: Name und Typ der aktuellen BASIC-Variable
bits #0-#6:
Erstes Zeichen des Variablennamens
bit #7
%00: Gleitkomma
%01: String
%10: FN Funktion
%11: Integer
e
70
$46
LSR
zp
Variable: Name und Typ der aktuellen BASIC-Variable
bits #0-#6:
Zweites Zeichen des Variablennamens
$00 = Variablenname hat nur ein Zeichen
bit #7
%00: Gleitkomma
%01: String
%10: FN Funktion
%11: Integer
f
71
$47
[SRE]
zp
Pointer: Adresse des aktuellen Variablenwerts
FN-Funktion
g
72
$48
PHA
imp
Pointer: Adresse des aktuellen Variablenwerts
FN-Funktion
h
73
$49
EOR
imm
Temp Pointer: Adresse des aktuellen Variablenwerts; Zwischenspeicher bevor Stack ($0100, 256) bei FOR/NEXT, INPUT, GET, READ, LIST, WAIT, CLOSE, LOAD, SAVE, RETURN, GOSUBi
74
$4A
LSR
akk
Temp Pointer: Adresse des aktuellen Variablenwerts; Zwischenspeicher bevor Stack ($0100, 256) bei FOR/NEXT, INPUT, GET, READ, LIST, WAIT, CLOSE, LOAD, SAVE, RETURN, GOSUBj
75
$4B
[ASR]
imm
Temp Pointer: Zwischenspeicher für Pointer bei GET, INPUT, READ und Arithmetikk
76
$4C
JMP
abs
Temp Pointer: Zwischenspeicher für Pointer bei GET, INPUR, READ und Arithmetikl
77
$4D
EOR
abs
Maske: Vergleichsoperationen
bit #1: 1 = >
bit #2: 1 = =
bit #3: 1 = <
m
78
$4E
LSR
abs
Pointer: Adresse aktueller FN Descriptorn
79
$4F
[SRE]
abs
Pointer: Adresse aktueller FN Descriptoro
80
$50
BVC
rel
Pointer: Adresse aktueller String Descriptorp
81
$51
EOR
iny
Pointer: Adresse aktueller String Descriptorq
82
$52
[JAM]Pointer: Adresse aktueller String Descriptor
$xx Länge des Strings
r
83
$53
[SRE]
iny
Flag: Garbage Collection Schrittweite
$03: 3 Bytes
$07: 7 Bytes
s
84
$54
[NOP]
zpx
Jump Vector: Adresse der BASIC-Funktionen
Tabelle: $A052-$A07F, 41042-41087
JMP $4C, 76
t
85
$55
EOR
zpx
Jump Vector: Adresse der BASIC-Funktionen
Tabelle: $A052-$A07F, 41042-41087
Sprungvektor BASIC-Funktion
u
86
$56
LSR
zpx
Jump Vector: Adresse der BASIC-Funktionen
Tabelle: $A052-$A07F, 41042-41087
Sprungvektor BASIC-Funktion
v
87
$57
[SRE]
zpx
Register: Arithmetik Akku #3
5 Bytes
w
88
$58
CLI
imp
Register: Arithmetik Akku #3x
89
$59
EOR
aby
Register: Arithmetik Akku #3y
90
$5A
[NOP]
imp
Register: Arithmetik Akku #3z
91
$5B
[SRE]
aby
Register: Arithmetik Akku #3[
92
$5C
[NOP]
abx
Register: Arithmetik Akku #4
5 Bytes
\
93
$5D
EOR
abx
Register: Arithmetik Akku #4]
94
$5E
LSR
abx
Register: Arithmetik Akku #4^
95
$5F
[SRE]
abx
Register: Arithmetik Akku #4_
96
$60
RTS
imp
Register: Arithmetik Akku #4`
97
$61
ADC
iny
Register: Arithmetik Gleitkomma FAC Akku #1
5 Bytes
Exponent
A
98
$62
[JAM]Register: Arithmetik Gleitkomma FAC Akku #1
Mantisse
B
99
$63
[RRA]
inx
Register: Arithmetik Gleitkomma FAC Akku #1
Mantisse
C
100
$64
[NOP]
zp
Register: Arithmetik Gleitkomma FAC Akku #1
Mantisse
D
101
$65
ADC
zp
Register: Arithmetik Gleitkomma FAC Akku #1
Mantisse
E
102
$66
ROR
zp
Pointer: Sign Vorzeichen FAC
Bit #7: 0 = Positive; 1 = Negative
$00 = positiv
$ff = negativ
F
103
$67
[RRA]
zp
Register: Counter für Polynomauswertung; VorzeichenspeicherG
104
$68
PLA
imp
Register: Arithmetik Gleitkomma Überlauf FAC Akku #1; Rundungsbyte
Limit: 1,70141183 * 10^38
H
105
$69
ADC
imm
Register: Arithmetik Gleitkomma ARG Akku #2
5 Bytes
Exponent
I
106
$6A
ROR
akk
Register: Arithmetik Gleitkomma ARG Akku #2
Mantisse
J
107
$6B
[ARR]
imm
Register: Arithmetik Gleitkomma ARG Akku #2
Mantisse
K
108
$6C
JMP
ind
Register: Arithmetik Gleitkomma ARG Akku #2
Mantisse
L
109
$6D
ADC
abs
Register: Arithmetik Gleitkomma ARG Akku #2
Mantisse
M
110
$6E
ROR
abs
Pointer: Sign, Vorzeichen ARG
Bit #7: 0 = Positive; 1 = Negative
$00 = positiv
$ff = negativ
N
111
$6F
[RRA]
abs
Flag: Vorzeichenvergleich der Gleitkomma-Akkumulatoren #1 und #2
$00 = gleiche Vorzeichen
$FF = ungleiche Vorzeichen
O
112
$70
BVS
rel
Flag: Vorzeichenvergleich der Gleitkomma-Akkumulatoren #1 und #2; FAC Rundungsbyte Akku #1P
113
$71
ADC
iny
Pointer: FBUFFER FOUT; Polynomauswertung, HilfspointerQ
114
$72
[JAM]Pointer: FBUFFER FOUT; Polynomauswertung, HilfspointerR
115
$73
[RRA]
iny
CHRGET-Routine: Nächstes Zeichen aus BASIC-Text holen
24 Bytes
S
116
$74
[NOP]
zpx
CHRGET-Routine: Nächstes Zeichen aus BASIC-Text holenT
117
$75
ADC
zpx
CHRGET-Routine: Nächstes Zeichen aus BASIC-Text holenU
118
$76
ROR
zp
CHRGET-Routine: Nächstes Zeichen aus BASIC-Text holenV
119
$77
[RRA]
zpx
CHRGET-Routine: Nächstes Zeichen aus BASIC-Text holenW
120
$78
SEI
imp
CHRGET-Routine: Nächstes Zeichen aus BASIC-Text holenX
121
$79
ADC
aby
CHRGET-Routine: Nächstes Zeichen aus BASIC-Text holen;
Pointer: Aktuelles Byte im BASIC-Programm oder im Direktmodus
Y
122
$7A
[NOP]
imp
CHRGET-Routine: Nächstes Zeichen aus BASIC-Text holen;
Programmzeiger: Anfangsadresse des nächste Befehls im BASIC-RAM
Z
123
$7B
[RRA]
aby
CHRGET-Routine: Nächstes Zeichen aus BASIC-Text holen;
Programmzeiger: Anfangsadresse des nächste Befehls im BASIC-RAM
{
124
$7C
[NOP]
abx
CHRGET-Routine: Nächstes Zeichen aus BAIC-Text holen|
125
$7D
ADC
abx
CHRGET-Routine: Nächstes Zeichen aus BASIC-Text holen}
126
$7E
ROR
abx
CHRGET-Routine: Nächstes Zeichen aus BASIC-Text holen~
127
$7F
[RRA]
abx
CHRGET-Routine: Nächstes Zeichen aus BASIC-Text holen{DEL}
128
$80
[NOP]
imm
CHRGET-Routine: Nächstes Zeichen aus BASIC-Text holenEND
129
$81
STA
inx
CHRGET-Routine: Nächstes Zeichen aus BASIC-Text holenFOR.ORANGE.ORANGE
130
$82
[NOP]
imm
CHRGET-Routine: Nächstes Zeichen aus BASIC-Text holenNEXT
131
$83
[SAX]
inx
CHRGET-Routine: Nächstes Zeichen aus BASIC-Text holenDATALOAD+RUNLOAD+RUN
132
$84
STY
zp
CHRGET-Routine: Nächstes Zeichen aus BASIC-Text holenINPUT#
133
$85
STA
zp
CHRGET-Routine: Nächstes Zeichen aus BASIC-Text holenINPUTF1F1
134
$86
STX
zp
CHRGET-Routine: Nächstes Zeichen aus BASIC-Text holenDIMF3F3
135
$87
[SAX]
zp
CHRGET-Routine: Nächstes Zeichen aus BASIC-Text holenREADF5F5
136
$88
DEY
imp
CHRGET-Routine: Nächstes Zeichen aus BASIC-Text holenLETF7F7
137
$89
[NOP]
imm
CHRGET-Routine: Nächstes Zeichen aus BASIC-Text holenGOTOF2F2
138
$8A
TXA
imp
CHRGET-Routine: Nächstes Zeichen aus BASIC-Text holenRUNF4F4
139
$8B
[XAA]
imm
RND-Funktion: Wert als Gleitkommazahl, Seed (-/0/+)
Good Random Hint: RND(-RND(0)) oder RND(-TI)
5 Bytes
Es ist zunächst auf einen aus dem ROM kopierten Startwert eingestellt (die fünf Bytes sind 128, 79, 199, 82, 88 – $80, $4F, $C7, $52, $58).
IFF6F6
140
$8C
STY
abs
RND-Funktion: Wert als Gleitkommazahl, Seed (-/0/+)
Good Random Hint: RND(-RND(0)) oder RND(-TI)
RESTOREF8F8
141
$8D
STA
abs
RND-Funktion: Wert als Gleitkommazahl, Seed (-/0/+)
Good Random Hint: RND(-RND(0)) oder RND(-TI)
GOSUBSHIFT RETURNSHIFT RETURN
142
$8E
STX
abs
RND-Funktion: Wert als Gleitkommazahl, Seed (-/0/+)
Good Random Hint: RND(-RND(0)) oder RND(-TI)
RETURNUPPER/GFXUPPER/GFX
143
$8F
[SAX]
abs
RND-Funktion: Wert als Gleitkommazahl, Seed (-/0/+)
Good Random Hint: RND(-RND(0)) oder RND(-TI)
REM
144
$90
BCC
rel
Statusvariable: ST für I/O bei Kassette, Floppy, Drucker
Serial bus bits:
Bit #0: Transfer direction during which the timeout occured; 0 = Input; 1 = Output.
Bit #1: 1 = Timeout occurred.
Bit #4: 1 = VERIFY error occurred (only during VERIFY), the file read from the device did not match that in the memory.
Bit #6: 1 = End of file has been reached.
Bit #7: 1 = Device is not present.
Datasette bits:
Bit #2: 1 = Block is too short (shorter than 192 bytes).
Bit #3: 1 = Block is too long (longer than 192 bytes).
Bit #4: 1 = Not all bytes read with error during pass 1 could be corrected during pass 2, or a VERIFY error occurred, the file read from the device did not match that in the memory.
Bit #5: 1 = Checksum error occurred.
Bit #6: 1 = End of file has been reached (only during reading data files)
STOP.BLACK.BLACK
145
$91
STA
iny
Flag: STOP-Taste, Keyboard-Matrix
Updated every 1/60 second
$7F: Stop key is pressed
$FF: Sop key is not pressed
ONCRSR UPCRSR UP
146
$92
[JAM]Konstante: Zeitkonstante Tape Reads; Servo ControlWAITRVS OFFRVS OFF
147
$93
[AHX]
iny
Flag: LOAD oder VERIFY
$00: LOAD
$01-$FF: VERIFY
LOADCLRCLR
148
$94
STY
zpx
Flag: IEC Output Cache Status, LISTEN-Zustand
Bit #7: 1 = Output cache dirty, must transfer cache contents upon next output to serial bus.
SAVEINSTINST
149
$95
STA
zpx
IEC: Zeichen im AusgabepufferVERIFY.BROWN.BROWN
150
$96
STX
zpy
Flag: EOT; Cassette Block Synchronization Number; BufferDEF.LIGHT RED.LIGHT RED
151
$97
[SAX]
zpy
Temp: Zwischenspeicher X, Y Register
X = Tape, Y = RS232
POKE.GREY1.GREY1
152
$98
TYA
imp
Open Files: Anzahl offener Files; Index Filetable
Werte: $00-$0A, 0-10.
PRINT#.GREY2.GREY2
153
$99
STA
aby
Nummer: Aktives Eingabegerät
Default: $00, keyboard
$00 = Tastatur
$01 = Datasette
$02 = RS232 und User-Port
$03 = Bildschirm
$04-$05 = Drucker
$08-$011 = Laufwerke
Default: $00, keyboard.
PRINT.LIGHT GREEN.LIGHT GREEN
154
$9A
TXS
imp
Nummer: Aktives Ausgabegerät
Default: $03, screen
$00 = Tastatur
$01 = Datasette
$02 = RS232 und User-Port
$03 = Bildschirm
$04-$05 = Drucker
$08-$011 = Laufwerke
Default: $03, screen.
CONT.LIGHT BLUE.LIGHT BLUE
155
$9B
[TAS]
aby
Fehlerkontrolle Parität Tape I/O
Quersummenbildung
LIST.GREY3.GREY3
156
$9C
[SHY]
abx
Flag: Tape Byte Received
Quersumme des empfangenen Bytes korrekt oder nicht
CLR.PURPLE.PURPLE
157
$9D
STA
abx
Flag: Kernal Message Control
Bit #6:
0 = Suppress I/O error messages
1 = Display them
Bit #7:
0 = Suppress system messages
1 = Display them

# MELDUNG (ERROR)
1 TOO MANY FILES
2 FILE OPEN
3 FILE NOT OPEN
4 FILE NOT FOUND
5 DEVICE NOT PRESENT
6 NOT INPUT FILE
7 NOT OUTPUT FILE
8 MISSING FILE NAME
9 ILLEGAL DEVICE NUMBER
10 NEXT WITHOUT FOR
11 SYNTAX
12 RETURN WITHOUT GOSUB
13 OUT OF DATA
14 ILLEGAL QUANTITY
15 OVERFLOW
16 OUT OF MEMORY
17 UNDEF'D STATEMENT
18 BAD SUBSCRIPT
19 REDIM'D ARRAY
20 DIVISION BY ZERO
21 ILLEGAL DIRECT
22 TYPE MISMATCH
23 STRING TOO LONG
24 FILE DATA
25 FORMULA TOO COMPLEX
26 CAN'T CONTINUE
27 UNDEF'D FUNCTION
28 VERIFY
29 LOAD
CMDCRSR LEFTCRSR LEFT
158
$9E
[SHX]
aby
Zwischenspeicher Tape, Temp1
Bandpass 1 Checksumme
Werte: $00-$3E, 0-62
SYS.YELLOW.YELLOW
159
$9F
[AHX]
aby
Zwischenspeicher Tape, Temp2
Bandpass 2 Fehlerkorrektur
Werte: $00-$3E, 0-62
OPEN.CYAN.CYAN
160
$A0
LDY #Jiffy Clock: TI, TI$, Softwareclock
1 jiffy = 0.1667 second (1/60)
24h clock, Reset to 0 after 24h
Werte: $0000-$4F19FF, 0-518399 (PAL)
$A0 Update INC: 65536 jiffies (18,2044 Min)
CLOSESHIFT SPACE
SHIFT SPACE
161
$A1
LDA
imm
Jiffy Clock: TI, TI$, Softwareclock
1 jiffy = 0.1667 second (1/60)
24h clock, Reset to 0 after 24h
Werte: $0000-$4F19FF, 0-518399 (PAL)
$A1 Update INC: 256 jiffies (4,2267 Sek)
GET
162
$A2
LDX
imm
Jiffy Clock: TI, TI$; Softwareclock
1 jiffy = 0.1667 second (1/60)
24h clock, Reset to 0 after 24h
Werte: $0000-$4F19FF, 0-518399 (PAL)
$A2 Update INC: 1 jiffy (0,1667 Sek)
NEW
163
$A3
[LAX]
inx
Temp: Zwischenspeicher IEC, I/O, Buffer
Bitzähler für serielle Ausgabe
Bit #7:
0 = Send byte right after handshake
1 = Do EOI delay first
TAB(
164
$A4
LDY
zp
Temp: Zwischenspeicher IEC, I/O, Byte Buffer
Fehlerkontrolle Parität Tape I/O
TO
165
$A5
LDA
zp
Bitzähler: Synchronbits, Kassetten-SynchronisationFN
166
$A6
LDX
zp
Pointer: Bytezähler, Tape I/O Buffer
Force output: POKE 166,191
SPC(
167
$A7
[LAX]
zp
Temp: Zwischenspeicher Tape I/O Buffer
RS232 (Userport)
THEN
168
$A8
TAY
imp
Bitzähler Tape I/O Buffer
RS232 (Userport, Tapeport)
NOT
169
$A9
LDA
imm
Flag: RS232 Startbit-Prüfung
$00: Startbit nicht empfangen,
$90: Startbit empfangen
STEP
170
$AA
TAX
imp
Temp: Zwischenspeicher Input Byte RS232/Tape I/O+
171
$AB
[LAX]
imm
Fehlerkontrolle Input Parität RS232/Tape I/O; Zähler Tape-Header
Quersummenbildung
-
172
$AC
LDY
abs
Pointer: Tape-Buffer; Scrolling; Startadresse SAVE*
173
$AD
LDA
abs
Pointer: Tape-Buffer; Scrolling; Startadresse SAVE/
174
$AE
LDX
abs
Pointer: Endardresse SAVE; Endadresse nach LOAD/VERIFY^
175
$AF
[LAX]
abs
Pointer: Endardresse SAVE; Endadresse nach LOAD/VERIFYAND
176
$B0
BCS
rel
Konstante: Tape Timing; Tape I/O Read; Zeitkonstante einstellbarOR
177
$B1
LDA
iny
Konstante: Tape Timing; Tape I/O Read; Zeitkonstante einstellbar>
178
$B2
[JAM]Pointer: Start Tape Buffer
Default: $033C, 828
Dieser Zeiger muss eine Adresse größer oder gleich 512 ($0200) enthalten, sonst wird ein Fehler „ILLEGAL DEVICE NUMBER“ gesendet, wenn Tape-I/O versucht wird.
=
179
$B3
[LAX]
iny
Pointer: Start Tape Buffer
Default: $033C, 828
Dieser Zeiger muss eine Adresse größer oder gleich 512 ($0200) enthalten, sonst wird ein Fehler „ILLEGAL DEVICE NUMBER“ gesendet, wenn Tape-I/O versucht wird.
<
180
$B4
LDY
zpx
Temp: Zwischenspeicher für RS232/Tape I/O
Bitzähler
Bits #0-#6: Bit count.
Bit #7: 0 = Data bit; 1 = Stop bit
SGN
181
$B5
LDA
zpx
RS-232 Next Bit to Send/Tape EOT FlagINT
182
$B6
LDX
zpy
Temp: RS-232 Output Byte Buffer; Tape SYNOABS
183
$B7
[LAX]
zpy
Länge des Filenamens, Disk Kommando; 1. Parameter bei LOAD, SAVE, VERIFY; 4. Parameter bei OPEN
Werte:
$00: No parameter
$01-$FF: Parameter length
USR
184
$B8
CLV
imp
Aktuelle logische FilenummerFRE
185
$B9
LDA
aby
Aktuelle File SekundäradressePOS
186
$BA
TSX
imp
Aktuelle Gerätenummer
0, Tastatur
1, Datasette
2, RS232- (User-Port) Schnittstelle
3, Bildschirm
4, Drucker (normal)
5, Drucker (zusätzlich)
8, Disketten-Laufwerk Nr. 0
9, Disketten-Laufwerk Nr. 1
10, Disketten-Laufwerk Nr. 2
11, Disketten-Laufwerk Nr. 3
SQR
187
$BB
[LAS]
aby
Pointer: Adresse des aktuellen Filenamen; 1. Parameter bei LOAD, SAVE, VERIFY; 4. Parameter bei OPENRND
188
$BC
LDY
abx
Pointer: Adresse des aktuellen Filenamen; 1. Parameter bei LOAD, SAVE, VERIFY; 4. Parameter bei OPENLOG
189
$BD
LDA
abx
RS-232 Output Parity Byte;
Temp: Cassette Temporary Storage Tape I/O
EXP
190
$BE
LDX
aby
Blockzähler für Tape I/OCOS
191
$BF
[LAX]
aby
Temp: Tape Input Byte Buffer LOADSIN
192
$C0
CPY
imm
Tape Motor Interlock; Motorsperre
$00: No button was pressed, motor has been switched off. If a button is pressed on the datasette, must switch motor on.
$01-$FF: Motor is on.
TAN
193
$C1
CMP
inx
I/O Start Address SAVE, serial bus:
I/O Start Address LOAD/VERIFY Tape;
Pointer: Aktuelles Byte beim Speichertest
ATN
194
$C2
[NOP]
imm
I/O Start Address SAVE, serial bus:
I/O Start Address LOAD/VERIFY Tape;
Pointer: Aktuelles Byte beim Speichertest
PEEK
195
$C3
[DCP]
iny
Pointer: Anfang des Programms nach Tape-Header; I/O VectorsLEN
196
$C4
CPY
zp
Pointer: Anfang des Programms nach Tape-Header; I/O VectorsSTR$
197
$C5
CMP
zp
Tasten-Code der zuletzt gedrückten Taste
$00-$3F: Keyboard matrix code.
$40: No key was pressed at the time of previous check
VAL
198
$C6
DEC
zp
Anzahl der Zeichen im Tastaturpuffer
$00, 0: Buffer is empty.
$01-$0A, 1-10: Buffer length.
ASC
199
$C7
[DCP]
zp
Flag: RVS-Modus
$00: Normal mode.
$12: Reverse mode
CHR$
200
$C8
INY
imp
Pointer: Zeiger auf das Ende der eingegebenen logischen Zelle (0-79)
Length of line minus 1 during screen input.
Values: $27, 39; $4F, 79
LEFT$
201
$C9
CMP
imm
Pointer: Cursor X,Y Position
Cursor-Zeile
Cursor row during screen input. Values: $00-$18, 0-24
RIGHT$
202
$CA
DEX
imp
Pointer: Cursor X,Y Position
Cursor-Spalte
Cursor column during screen input. Values: $00-$27, 0-39
MID$
203
$CB
[AXS]
imm
Tastencode der gerade gedrückten Taste
$00-$3F: Keyboard matrix code.
$40: No key is currently pressed
GO
204
$CC
CPY
abs
Flag: Cursor
$00: Cursor is on
$01-$FF: Cursor is off
205
$CD
CMP
abs
Zähler für Blinkfrequenz des Cursors
$00, 0: Must change cursor phase
$01-$14, 1-20: Delay
206
$CE
DEC
abs
Bildschirmcode des Zeichens unter dem Cursor
207
$CF
[DCP]
abs
Flag: Cursor Phase
$00: Cursor off phase, original character visible
$01: Cursor on phase, reverse character visible
208
$D0
BNE
rel
Flag: Eingabe von Tastatur oder Bildschirm
Screen = $03, or Keyboard = $00
$00: Return character reached, end of line.
$01-$FF: Still reading characters from line
209
$D1
CMP
iny
Pointer: Adresse Start der aktuellen Bildschirmzeile
210
$D2
[JAM]Pointer: Adresse Start der aktuellen Bildschirmzeile
211
$D3
[DCP]
iny
Aktuelle physikalische Cursorspalte
Werte: $00-$27, 0-39
212
$D4
[NOP]
zpx
Flag für Hochkommamodus
$00: Normal mode
$01: Quotation mode
213
$D5
CMP
zpx
Länge der Bildschirmzeile
Werte: $27, 39; $4F, 79
40/80 max positon
214
$D6
DEC
zpx
Aktuelle physikalische Cursorzeile
Werte: $00-$18, 0-24
215
$D7
[DCP]
zpx
Zwischenspeicher: ASCII-Codewert letzten Taste; Bit Buffer Tape Input; Block Checksum Tape Output
216
$D8
CLD
imp
Flag: Insert Mode; Anzahl der Inserts
$00: No insertions made, normal mode, control codes change screen layout or behavior
$01-$FF: Number of insertions, when inputting this many character next, those must be turned into control codes, similarly to quotation mode
217
$D9
CMP
aby
Pointer: Screen Link-Tabelle der Bildschirm-Zeilen
MSB der Bildschirmzeilenanfänge
$00-$7F: Pointer high byte
$80-$FF: No pointer, line is an extension of previous line on screen
218
$DA
[NOP]
imp
Pointer: Screen Link-Tabelle der Bildschirm-Zeilen
MSB der Bildschirmzeilenanfänge
$00-$7F: Pointer high byte
$80-$FF: No pointer, line is an extension of previous line on screen
219
$DB
[DCP]
aby
Pointer: Screen Link-Tabelle der Bildschirm-Zeilen
MSB der Bildschirmzeilenanfänge
$00-$7F: Pointer high byte
$80-$FF: No pointer, line is an extension of previous line on screen
220
$DC
[NOP]
abx
Pointer: Screen Link-Tabelle der Bildschirm-Zeilen
MSB der Bildschirmzeilenanfänge
$00-$7F: Pointer high byte
$80-$FF: No pointer, line is an extension of previous line on screen
221
$DD
CMP
abx
Pointer: Screen Link-Tabelle der Bildschirm-Zeilen
MSB der Bildschirmzeilenanfänge
$00-$7F: Pointer high byte
$80-$FF: No pointer, line is an extension of previous line on screen
222
$DE
DEC
abx
Pointer: Screen Link-Tabelle der Bildschirm-Zeilen
MSB der Bildschirmzeilenanfänge
$00-$7F: Pointer high byte
$80-$FF: No pointer, line is an extension of previous line on screen
223
$DF
[DCP]
abx
Pointer: Screen Link-Tabelle der Bildschirm-Zeilen
MSB der Bildschirmzeilenanfänge
$00-$7F: Pointer high byte
$80-$FF: No pointer, line is an extension of previous line on screen
224
$E0
CPX
imm
Pointer: Screen Link-Tabelle der Bildschirm-Zeilen
MSB der Bildschirmzeilenanfänge
$00-$7F: Pointer high byte
$80-$FF: No pointer, line is an extension of previous line on screen
225
$E1
SBC
inx
Pointer: Screen Link-Tabelle der Bildschirm-Zeilen
MSB der Bildschirmzeilenanfänge
$00-$7F: Pointer high byte
$80-$FF: No pointer, line is an extension of previous line on screen
226
$E2
[NOP]
imm
Pointer: Screen Link-Tabelle der Bildschirm-Zeilen
MSB der Bildschirmzeilenanfänge
$00-$7F: Pointer high byte
$80-$FF: No pointer, line is an extension of previous line on screen
227
$E3
[ISC]
inx
Pointer: Screen Link-Tabelle der Bildschirm-Zeilen
MSB der Bildschirmzeilenanfänge
$00-$7F: Pointer high byte
$80-$FF: No pointer, line is an extension of previous line on screen
228
$E4
CPX
zp
Pointer: Screen Link-Tabelle der Bildschirm-Zeilen
MSB der Bildschirmzeilenanfänge
$00-$7F: Pointer high byte
$80-$FF: No pointer, line is an extension of previous line on screen
229
$E5
SBC
zp
Pointer: Screen Link-Tabelle der Bildschirm-Zeilen
MSB der Bildschirmzeilenanfänge
$00-$7F: Pointer high byte
$80-$FF: No pointer, line is an extension of previous line on screen
230
$E6
INC
zp
Pointer: Screen Link-Tabelle der Bildschirm-Zeilen
MSB der Bildschirmzeilenanfänge
$00-$7F: Pointer high byte
$80-$FF: No pointer, line is an extension of previous line on screen
231
$E7
[ISC]
zpx
Pointer: Screen Link-Tabelle der Bildschirm-Zeilen
MSB der Bildschirmzeilenanfänge
$00-$7F: Pointer high byte
$80-$FF: No pointer, line is an extension of previous line on screen
232
$E8
INX
imp
Pointer: Screen Link-Tabelle der Bildschirm-Zeilen
MSB der Bildschirmzeilenanfänge
$00-$7F: Pointer high byte
$80-$FF: No pointer, line is an extension of previous line on screen
233
$E9
SBC
imm
Pointer: Screen Link-Tabelle der Bildschirm-Zeilen
MSB der Bildschirmzeilenanfänge
$00-$7F: Pointer high byte
$80-$FF: No pointer, line is an extension of previous line on screen
234
$EA
NOP
imp
Pointer: Screen Link-Tabelle der Bildschirm-Zeilen
MSB der Bildschirmzeilenanfänge
$00-$7F: Pointer high byte
$80-$FF: No pointer, line is an extension of previous line on screen
235
$EB
[SBC]
imm
Pointer: Screen Link-Tabelle der Bildschirm-Zeilen
MSB der Bildschirmzeilenanfänge
$00-$7F: Pointer high byte
$80-$FF: No pointer, line is an extension of previous line on screen
236
$EC
CPX
abs
Pointer: Screen Link-Tabelle der Bildschirm-Zeilen
MSB der Bildschirmzeilenanfänge
$00-$7F: Pointer high byte
$80-$FF: No pointer, line is an extension of previous line on screen
237
$ED
SBC
abs
Pointer: Screen Link-Tabelle der Bildschirm-Zeilen
MSB der Bildschirmzeilenanfänge
$00-$7F: Pointer high byte
$80-$FF: No pointer, line is an extension of previous line on screen
238
$EE
INC
abs
Pointer: Screen Link-Tabelle der Bildschirm-Zeilen
MSB der Bildschirmzeilenanfänge
$00-$7F: Pointer high byte
$80-$FF: No pointer, line is an extension of previous line on screen
239
$EF
[ISC]
abs
Pointer: Screen Link-Tabelle der Bildschirm-Zeilen
MSB der Bildschirmzeilenanfänge
$00-$7F: Pointer high byte
$80-$FF: No pointer, line is an extension of previous line on screen
240
$F0
BEQ
rel
Pointer: Screen Link-Tabelle der Bildschirm-Zeilen
MSB der Bildschirmzeilenanfänge
$00-$7F: Pointer high byte
$80-$FF: No pointer, line is an extension of previous line on screen
241
$F1
SBC
iny
Pointer: Screen Link-Tabelle der Bildschirm-Zeilen
MSB der Bildschirmzeilenanfänge
$00-$7F: Pointer high byte
$80-$FF: No pointer, line is an extension of previous line on screen
242
$F2
[JAM]Pointer: Screen Link-Tabelle der Bildschirm-Zeilen
MSB der Bildschirmzeilenanfänge
$00-$7F: Pointer high byte
$80-$FF: No pointer, line is an extension of previous line on screen
243
$F3
[ISC]
iny
Pointer: Aktuelle Zeile im Farb-RAM
244
$F4
[NOP]
zpx
Pointer: Aktuelle Zeile im Farb-RAM
245
$F5
SBC
zpx
Pointer: Tastatur-Dekodiertabelle
Matrixtabellen:
$EB81 (60289) default uppercase/graphics characters (unshifted)
$EBC2 (60354) shifted characters
$EC03 (60419) Commodore logo key characters
$EC78 (60536) CTRL characters
246
$F6
INC
zpx
Pointer: Tastatur-Dekodiertabelle
Matrixtabellen:
$EB81 (60289) default uppercase/graphics characters (unshifted)
$EBC2 (60354) shifted characters
$EC03 (60419) Commodore logo key characters
$EC78 (60536) CTRL characters
247
$F7
[ISC]
zpx
Pointer: RS-232 Eingabepuffer
$00-$FF: No buffer defined, a new buffer must be allocated upon RS232 output
$0100-$FFFF: Buffer pointer
248
$F8
SED
imp
Pointer: RS-232 Eingabepuffer
$00-$FF: No buffer defined, a new buffer must be allocated upon RS232 output
$0100-$FFFF: Buffer pointer
249
$F9
SBC
aby
Pointer: RS-232 Ausgabepuffer
$00-$FF: No buffer defined, a new buffer must be allocated upon RS232 output
$0100-$FFFF: Buffer pointer
250
$FA
[NOP]
imp
Pointer: RS-232 Ausgabepuffer
$00-$FF: No buffer defined, a new buffer must be allocated upon RS232 output
$0100-$FFFF: Buffer pointer
251
$FB
[ISC]
aby
Freier Zero Page User Space
4 Bytes
BASIC ändert die 4 Bytes nicht!
252
$FC
[NOP]
abx
Freier Zero Page User Space
253
$FD
SBC
abx
Freier Zero Page User Space
254
$FE
INC
abx
Freier Zero Page User Space
255
$FF
[ISC]
abx
BASIC Zwischenspeicher




C64: Dateiformate/-extensionen von C64 und Emulatoren (VICE)

Es gibt so einige Emulatoren für Commodore Maschinen wie dem PET, VIC-20, C64, C128, C65, Plus/4 etc.

Mein Favorit ist der VICE in der letzten stabilen Version. Es gibt auch eine ältere Version speziell für Windows namens WinVice, diese ist allerdings obsolet und wird nicht mehr weiterentwickelt. Wer also einen guten und weit verbreiteten Commodore Emulator mit C64-Unterstützung verwenden will, sollte auf den aktuellen VICE nicht verzichten. Im Downloadbereich findet ihr einige Versionen von VICE.

Eine Installation wie man sie kennt ist nicht nötig, da nur einzelne Programme in Verzeichnisse aufgerufen werden. Hierzu einfach eine Verknüpfung zum jeweiligen Programm anlegen. Eine ausführliche Anleitung zur Installation und Verwendung von VICE findet ihr hier im Blog.

Wer also mit dem C64, dem PC mit dem Emulator VICE arbeitet, stößt bei der Arbeit auf folgende Dateiformate die ich hier in einer Tabelle zusammengefasst habe. Die Tabelle ist mit den Datei-Extensionen, Kategorie, Typ und einer kurzen Beschreibung versehen.

Zur Verwaltung meines riesigen Archivs verwende ich die Software C64-Archiv. LINK

Sollten Extensionen fehlen oder sich ein Fehler eingeschlichen haben, dann bitte unten in den Kommentaren posten. Danke!

Tabelle Dateiformate

Extension Vice C64-Archiv Kategorie Typ Beschreibung
C64 + + Emulator Snapshot
CRT + + Cartridge Cartridge Image Custom ROM
D64 + + Disk Disk Image 1541
D71 + + Disk Disk Image 1571
D80 + Disk Disk Image CBM8050
D81 + + Disk Disk Image 1581
D82 + Disk Disk Image CBM8250/1001
G64 + + Disk Disk Image 1541 GCR-encoded
P64 + Disk Disk Image Lowlevel NRZI Flux Pulse
T64 + + Tape Tape Image read-only
TAP + + Tape Tape Image Lowlevel Raw Copy
VFL + + Emulator Snapshot
VICE + Emulator Session File Frozen Session
VSF + + Emulator Snapshot
X64 + Disk Disk Image
7Z + Archiv Container Compressed
64B Emulator PC64 Emulator
64C Emulator PC64 Emulator
ARC + Archiv Container Compressed
ARK Archiv Container Uncompressed
AVI + Media Video
BIN Raw Binary
CAS Tape Tape Image Single File
CBM CBM DOS Subdirectory 1581
CSM Tape Tape Image Multiple Files
CVT GEOS Sequentielle Datei GEOS Application / Document
D1M Disk Disk Image FD2000/FD4000
D2M Disk Disk Image FD2000/FD4000
D4M Disk Disk Image FD4000
D67 Disk Disk Image CBM2040 (DOS1)
D90 Disk Disk Image CBMD9090/60
DEL CBM DOS Gelöschte Datei Normal nicht sichtbar
DHD Disk Disk Image CMD HD
DIZ + Media Text
DNP Disk Disk Image CMD HD Native Partition
F64 Disk Disk Image 1541 (erw. D64 FCOPY III)
G41 Disk Disk Image 1541
GEOS GEOS
GIF Media Grafik
GZ + Archiv Container Compressed
HTML
JPG Media Grafik
KIM KIM-1 Image
LHA + Archiv Container Compressed
LNX + Archiv Container Uncompressed
LZH Archiv Container Compressed
MP3 + Media Audio
MP4 + Media Video
NFO + Media Text
NIB +
P00 Disk Programmdatei 1541 Container
PDF + Media Container
PNG Media Grafik
PRG CBM DOS Programmdatei 1541/1571/1581
PSID
RAR + Archiv Container Compressed
REL CBM DOS Relative Datei 1541/1571/1581
REU RAM Image
ROM
SDA + Archiv Container Compressed (self extracting)
SEQ CBM DOS Sequentielle Datei 1541/1571/1581
SFX + Archiv Container Compressed (self extracting)
SID Software Musikdatei gerippte C64-Musik-Files
SRK Archiv Container
TAR Archiv Container Uncompressed
TCRT
TXT Media Text
U00 Universal Data
USR CBM DOS User Datei 1541/1571/1581
Z64 + Disk Disk Image
ZIP Archiv Container Compressed





Umfrage: C64 – In welcher Sprache hast Du früher programmiert oder programmierst Du?

Umfrage:

C64: In welcher Sprache hast Du früher programmiert oder programmierst Du?

Ergebnisse anzeigen

Wird geladen ... Wird geladen ...

Abstimmungsergebnisse:

C64: In welcher Sprache hast Du früher programmiert oder programmierst Du?

  • BASIC V2 (30%, 10 Stimmen)
  • BASIC Erweiterung (27%, 9 Stimmen)
  • Assembler (27%, 9 Stimmen)
  • Pascal (9%, 3 Stimmen)
  • COMAL (6%, 2 Stimmen)
  • C (0%, 0 Stimmen)
  • _Andere (0%, 0 Stimmen)
  • COBOL (0%, 0 Stimmen)
  • Prolog (0%, 0 Stimmen)
  • PILOT (0%, 0 Stimmen)
  • LISP (0%, 0 Stimmen)
  • Forth (0%, 0 Stimmen)
  • Logo (0%, 0 Stimmen)

Wähler insgesamt: 10

Abstimmen

Wird geladen ... Wird geladen ...



C64 BASIC V2.0: Befehle, Schlüsselwörter und Token

Beim Commodore 64 (auch VC-20) werden bei der internen Verarbeitung der BASIC-Befehle (Schlüsselwörter) eines BASIC-Programms für eine schnellere Verarbeitung und Speicherplatzersparnis sogenannte Token (Schlüsselzeichen) statt der Schlüsselwörter verwendet.

Die folgende Tabelle zeigt die BASIC-Schlüsselwörter, den dazugehörigen Token (dezimal / hexadezimal), die ROM-Einsprungadresse (hexadezimal), die Abkürzung und den Typ des Befehls.

Nach der Tabelle erhalten Sie weiterführende Informationen zur Tokenisation der Befehle.

Tabelle C64 Token

BASIC Schlüsselwort Token dez Token hex ROM Exec dez ROM Exec hex Abk. Typ
END 128 $80 43057 $A831 eN Anweisung/Befehl
FOR 129 $81 42818 $A742 fO Anweisung/Befehl
NEXT 130 $82 44318 $AD1E nE Anweisung/Befehl
DATA 131 $83 43256 $A8F8 dA Anweisung/Befehl
INPUT# 132 $84 43941 $ABA5 iN Anweisung/Befehl
INPUT 133 $85 43967 $ABBF - Anweisung/Befehl
DIM 134 $86 45185 $B081 dI Anweisung/Befehl
READ 135 $87 44038 $AC06 rE Anweisung/Befehl
LET 136 $88 43429 $A9A5 lE Anweisung/Befehl
GOTO 137 $89 43168 $A8A0 gO Anweisung/Befehl
RUN 138 $8A 43121 $A871 rU Anweisung/Befehl
IF 139 $8B 43304 $A928 - Anweisung/Befehl
RESTORE 140 $8C 43037 $A81D reS Anweisung/Befehl
GOSUB 141 $8D 43139 $A883 goS Anweisung/Befehl
RETURN 142 $8E 43218 $A8D2 reT Anweisung/Befehl
REM 143 $8F 43323 $A93B - Anweisung/Befehl
STOP 144 $90 43055 $A82F sT Anweisung/Befehl
ON 145 $91 43339 $A94B - Anweisung/Befehl
WAIT 146 $92 47149 $B82D wA Anweisung/Befehl
LOAD 147 $93 57704 $E168 lO Anweisung/Befehl
SAVE 148 $94 57686 $E156 sA Anweisung/Befehl
VERIFY 149 $95 57701 $E165 vE Anweisung/Befehl
DEF 150 $96 46003 $B3B3 dE Anweisung/Befehl
POKE 151 $97 47140 $B824 pO Anweisung/Befehl
PRINT# 152 $98 43648 $AA80 pR Anweisung/Befehl
PRINT 153 $99 43680 $AAA0 ? Anweisung/Befehl
CONT 154 $9A 43095 $A857 cO Anweisung/Befehl
LIST 155 $9B 42652 $A69C lI Anweisung/Befehl
CLR 156 $9C 42590 $A65E cL Anweisung/Befehl
CMD 157 $9D 43654 $AA86 cM Anweisung/Befehl
SYS 158 $9E 57642 $E12A sY Anweisung/Befehl
OPEN 159 $9F 57790 $E1BE oP Anweisung/Befehl
CLOSE 160 $A0 57799 $E1C7 clO Anweisung/Befehl
GET 161 $A1 43899 $AB7B gE Anweisung/Befehl
NEW 162 $A2 42562 $A642 - Anweisung/Befehl
TAB( 163 $A3 43752 $AAE8 tA Anweisung/Befehl, Spezial
TO 164 $A4 42861 $A76D - Anweisung/Befehl, Spezial
FN 165 $A5 46068 $B3F4 - Anweisung/Befehl, Spezial
SPC( 166 $A6 43769 $AAF9 sP Anweisung/Befehl, Spezial
THEN 167 $A7 43314 $A932 tH Anweisung/Befehl, Spezial
NOT 168 $A8 44756 $AED4 nO Anweisung/Befehl, Spezial
STEP 169 $A9 42905 $A799 stE Anweisung/Befehl, Spezial
+ 170 $AA 47210 $B86A - Operator, numerisch/string
- 171 $AB 47187 $B853 - Operator, numerisch
* 172 $AC 47659 $BA2B - Operator, numerisch
/ 173 $AD 47890 $BB12 - Operator, numerisch
^ 174 $AE 49019 $BF7B - Operator, numerisch
AND 175 $AF 45033 $AFE9 aN Operator, logisch
OR 176 $B0 45030 $AFE6 - Operator, logisch
> 177 $B1 49076 $BFB4 - Operator, logisch
= 178 $B2 44756 $AED4 - Operator, logisch
< 179 $B3 45078 $B016 - Operator, logisch
SGN 180 $B4 48185 $BC39 sG Funktion, numerisch
INT 181 $B5 48332 $BCCC - Funktion, numerisch
ABS 182 $B6 48216 $BC58 abS Funktion, numerisch
USR 183 $B7 784 $0310 uS Funktion, numerisch/string
FRE 184 $B8 45949 $B37D fR Funktion, numerisch, Spezial
POS 185 $B9 45982 $B39E - Funktion, numerisch, Spezial
SQR 186 $BA 49009 $BF71 sQ Funktion, numerisch
RND 187 $BB 57495 $E097 rN Funktion, numerisch
LOG 188 $BC 45794 $B9EA - Funktion, numerisch
EXP 189 $BD 49133 $BFED eX Funktion, numerisch
COS 190 $BE 57956 $E264 - Funktion, numerisch
SIN 191 $BF 57963 $E26B sI Funktion, numerisch
TAN 192 $C0 58036 $E2B4 - Funktion, numerisch
ATN 193 $C1 58128 $E30E aT Funktion, numerisch
PEEK 194 $C2 47117 $B80E pE Funktion, numerisch
LEN 195 $C3 46972 $B77C - Funktion, numerisch
STR$ 196 $C4 46181 $B465 stR Funktion, string
VAL 197 $C5 47021 $B7AD vA Funktion, numerisch
ASC 198 $C6 46987 $B78B aS Funktion, numerisch
CHR$ 199 $C7 46828 $B6EC cH Funktion, string
LEFT$ 200 $C8 46848 $B700 leF Funktion, string
RIGHT$ 201 $C9 46892 $B72C rI Funktion, string
MID$ 202 $CA 46903 $B737 mI Funktion, string
GO 203 $CB 43026 $A812 - Anweisung/Befehl, Spezial
π 255 $FF 44702 $AE9E - Funktion, numerisch, Konstante
ST (STATUS) - - 65463 $FFB7 - Systemvariable
TI (TIME) - - ? ? - Systemvariable
TI$ (TIME$) - - 43488 $A9E0 - Systemvariable

Tokenisation

Hier werden die Schlüsselwörter (Befehle) in ein Single-Byte-Wert (Token) umgewandelt, wenn sie in einem Programm gespeichert sind. Das geschieht entweder durch einen Programmstart mit RUN oder im Direktmodus (Konsole) durch das Drücken der Taste RETURN, wenn dort Kommandos eingegeben worden sind. Der BASIC-Interpreter arbeitet die Token der Reihenfolge nach ab.

De-Tokenisation

Hier werden die Token (Bytes) in lesbare BASIC-Befehle (Schlüsselwörter) umgewandelt, was eigentlich nur für das LIST-Kommando als Ausgabe und für gute menschliche Lesbarkeit zutrifft. Ansonsten wird die De-Tokenisation nicht angewandt.

Single-Byte-Token

Ein Token kann beim Commodore BASIC V2 (ab 4.0) einen Single-Byte-Wert zwischen 128-255 ($80-$FF) haben und belegt nur 1 Byte Arbeitsspeicher. Token-Codes sind immer größer oder gleich 128 ($80); d.h. das höchstwertige Bit in einem Byte, das einen Token repräsentiert, ist immer gesetzt und somit werden keine PETSCII-Zeichen (<128/<$80) als Token-Code benutzt.

Two-Bytes-Token

Ab dem Commodore BASIC 7.0 (C 128) werden wegen des umfangreichen BASIC-Befehlssatzes zwei Bytes für ein Token benötigt.

Ausführen von Token

Jedes Token hat eine sogenannte Ausführungsadresse (EXEC) im ROM, wo dann der entsprechende Code für den jeweiligen Token bzw. BASIC-Befehl ausgeführt wird.

Schlüsselwörter

BASIC V2 enthält 76 Schlüsselwörter, 8 Operatoren, 1 Konstante und 3 Systemvariablen, die in verschiedenen Gruppen gegliedert sind:

  • 128-162 ($80-$A2): Befehle
  • 163-169 ($A3-$A9): “Bywords“, die Teil der Syntax der vorherigen Befehle sind
  • 170-179 ($AA-$B3): Arithmetische und logische Operatoren
  • 180-202 ($B4-$CA): Funktionen
  • 203 ($CB): Befehl – GO (der hier als Ausnahme hinter den Funktionen liegt)
  • 204-254 ($CC-$FE): Ein freier Bereich für 51 zusätzliche Token, z.B. der für BASIC-Erweiterungen von Drittanbietern genutzt wird
  • 255 ($FF): Konstante – Pi
  • Systemvariablen: ST (STATUS), TI (TIME), TI$ (TIME$). Im BASIC V2 ROM werden die Systemvariablen als Ausnahmen in den Routinen zur Behandlung normaler Variablen behandelt.

Abkürzungen

Die meisten BASIC-Schlüsselwörter kann man bei der Eingabe abkürzen. Abgekürzte Schlüsselwörter werden i.d.R. gebildet, indem man die ersten (manchmal bis zu drei) Zeichen eintippt und das nächste Zeichen mit SHIFT eingibt.

Auch hier gibt es wieder einige Ausnahmen. Einige Schlüsselwörter (CLOSE, GOSUB, LEFT$, RESTORE, RETURN, STEP, STR$) benötigen gekürzt 3 statt 2 Zeichen. Der BASIC-Befehl PRINT wird nur mit einem Zeichen, dem ? abgekürzt. Es gibt auch einige BASIC-Befehle (INPUT, COS, FN, TO, IF, INT, LEN, LOG, NEW, ON, OR, POS, REM, TAN) die nicht abkürzbar sind.

Speichern

Es kann schon mal vorkommen, dass eine Programmzeile 80 Zeichen überschreitet, also dafür mehr als 2 Zeilen auf dem Bildschirm angezeigt werden. Dies geschieht dadurch, dass die Ausgabe der Token beim LIST-Befehl eben ungekürzt passiert und somit Programmzeilen mit mehr als 80 Zeichen auftreten können.

Wenn sie eine solche Programmzeile ändern wollen, müssen sie die Abkürzungen erneut eingeben bevor sie das Programm speichern. Achten sie dann darauf, dass sie nicht mehr als 80 Zeichen für eine Programmzeile insgesamt verwenden. Alle zusätzlichen Zeichen danach werden nach dem Drücken von RETURN automatisch abgeschnitten. Beim Speichern eines Programms auf einen Datenträger werden die Token und nicht die Schlüsselwörter benutzt.


Befehle CLOSE, CLR, CMD, CONT, DATA, DEF, DIM, END, FOR, GET, GET#, GOSUB, GOTO, IF, INPUT, INPUT#, LET, LIST, LOAD, NEW, NEXT, ON, OPEN, POKE, PRINT, PRINT#, READ, REM, RESTORE, RETURN, RUN, SAVE, STOP, SYS, VERIFY, WAIT
Befehle Spezial (Bywords) FN, GO, NOT, SPC(, TAB(, THEN, TO, STEP
Arithmetische und logische Operatoren +, , *, /, ^, >, =, <, AND, OR
Funktionen ABS, ASC, ATN, CHR$, COS, EXP, FRE, INT, LEFT$, LEN, LOG, MID$, PEEK, POS, RIGHT$, RND, SGN, SIN, SQR, STR$, TAN, USR, VAL
Konstanten und Systemvariablen Pi, ST, TI, TI$



C64 BASIC V2.0: Ableitung mathematischer Funktionen


Mathematische Funktionen, die nicht Commodore 64 BASIC eigen sind, können wie folgt berechnet werden:

Mathematische Funktion BASIC Äquivalent
SECANT SEC(X) = 1/COS(X)
COSECANT CSC(X) = 1/SIN(X)
COTANGENT COT(X) = 1/TAN(X)
INVERSE SINE ARCSIN(X) = ATN(X/SQR(-X*X+1))
INVERSE COSINE ARCCOS(X) = -ATN(X/SQR(-X*X+1))+{pi}/2
INVERSE SECANT ARCSEC(X) = ATN(X/SQR(X*X-1))
INVERSE COSECANT ARCCSC(X) = ATN(X/SQR(X*X-1))+(SGN(X)-1*{pi}/2
INVERSE COTANGENT ARCOT(X) = ATN(X)+{pi}/2
HYPERBOLIC SINE SINH(X) = (EXP(X)-EXP(-X))/2
HYPERBOLIC COSINE COSH(X) = (EXP(X)+EXP(-X))/2
HYPERBOLIC TANGENT TANH(X) = EXP(-X)/(EXP(X)+EXP(-X))*2+1
HYPERBOLIC SECANT SECH(X) = 2/(EXP(X)+EXP(-X))
HYPERBOLIC COSECANT CSCH(X) = 2/(EXP(X)-EXP(-X))
HYPERBOLIC COTANGENT COTH(X) = EXP(-X)/(EXP(X)-EXP(-X))*2+1
INVERSE HYPERBOLIC SINE ARCSINH(X) = LOG(X+SQR(X*X+1))
INVERSE HYPERBOLIC COSINE ARCCOSH(X) = LOG(X+SQR(X*X-1))
INVERSE HYPERBOLIC TANGENT ARCTANH(X) = LOG((1+X)/(1-X))/2
INVERSE HYPERBOLIC SECANT ARCSECH(X) = LOG((SQR(-X*X+1)+1/X)
INVERSE HYPERBOLIC COSECANT ARCCSCH(X) = LOG((SGN(X)*SQR(X*X+1/X)
INVERSE HYPERBOLIC COTANGENT ARCCOTH(X) = LOG((X+1)/(X-1))/2






C64 BASIC V2: Video: 10 selten benutzte BASIC-Features

In diesem Video (00:31:19, engl.) erklärt Robin Harbron einige Features von CBM BASIC v2.0 die eigentlich selten benutzt werden. Robin zeigt Tipps und Beispiele zu jedem BASIC-Feature live am C-64.

Folgende Themen werden dabei angesprochen:

  1. DEF und FN
  2. ON GOSUB / ON GOTO
  3. Wissenschaftliche Notation
  4. INPUT Möglichkeiten
  5. LIST Parameter
  6. STOP und END
  7. CONT
  8. RND()
  9. USR()
  10. WAIT



C64: Video: Mit Turbo Macro Pro den C64 in Assembler programmieren (2019, engl.)

Robin Harbron aus Kanada zeigt in diesem Video (00:22:50, engl.) wie man auf dem C64 mit dem Turbo Macro Pro Editor in Assembler programmiert. Er erklärt kurz und knapp die Grundlagen von Assembler / Maschinensprache (Opcodes) und Turbo Macro Pro. Dieser komfortable Assembler Editor für den Commodore 64 ist 1985 von Wolfram Roemhild (Fa. Omikron) geschrieben worden und wird heute noch von der C64-Szene verwendet. Es gibt den TMP auch als Cross-Assembler für verschiedene Betriebssysteme.