In den Commodore-Rechnern (2001/3001/8001) kommen sieben verschiedene Datenarten vor, deren Aufbau dem Assembler-Programmierer vertraut sein muss. Es folgt eine kurze Beschreibung jeder Datenart.
Das Byte ist die grundlegende Form der Informationsdarstellung im Rechner. Jedes Byte enthaelt acht Bits, die '0' oder '1' sein koennen. Jedes Byte kann daher Zahlen zwischen dezimal 8 und 255 (hexadezimal $00 bis $FF) darstellen. Die Arbeitsregister der 6502-CPU (A, X, Y) koennen jeweils ein Byte aufnehmen.
Der Amercan Standard Code for Information Interchange ist eine Vorschrift, die einem Satz von 256 Zeichen ihre bitweise Darstellung zuordnet. Die Commodore-Rechner weichen hier vom Standard ab: die Kleinbuchstaben a bis z werden im ASCII-Code mit 97 bis 122, im PET/cbm dagegen mit 129 bis 154 codiert. Zu beachten ist ferner die vom ASCII-Code abweichende Darstellung der GrossKleinschreibung auf dem Schirm der :3001 und 8001-Serie: nach "POKE 59468,12" entspricht z.B. ein "A" dem ASCII-Code 65, nach "POKE 59468,14" ist "ASC('A')=193, ASC('a')=65! Die interne Darstellung im Rechner bleibt jedoch davon unberuehrt, es handelt sich hier lediglich um einen etwas eigenwilligen Zeichengenerator.
Der Bidwiederholspeicher des 2001 und 3001 reicht von Adresse 32768 bis 33767 ($:8000-$83E7) und beim 8001-Computer von 32768 bis 34767 ($8000-$87CF). Werden zur Zeichen-Ausgabe die ROM-Routinen verwendet, so werden die Zeichen im ASCII-Code an diese Routinen uebergeben. Die Darstellung der Zeichen im Bildwiederholspeicher weicht dagegen vom ASCII-Code ab. Wird der Bildschirmspeicher direkt beschrieben, so muessen die Zeichen des ASCII-Code erst in den Schirm-Code ueberfuehrt werden.
Aufgrund der 16 Adressleitungen der 6582-CPU reicht der Adressraum des Rechners von dezimal 0 bis 65535 ($0000-$FFFF). Jede Adressenangabe belegt daher im Speicher genau zwei Bytes. Adressen sind vorzeichenlose ganze Zahlen. Sie werden in der Form low Byte (LSB=least significant byte) gefolgt vom high Byte (MSB=most significant byte) abgespeichert. Beispiele : Adresse Hex. Dez. 01 00 $0001 1 00 80 $8000 32768
Ganze Zahlen werden durch zwei Bytes dargestellt. Es sind vorzeichenbehaftete Zahlen im Bereich -32768 bis +32768. Das Vorzeichen wird durch das hoechstwertige Bit des hoeherwertigen Bytes repraesentiert. Ganze Zahlen werden i.a. in der Form low Byte (LSB) - high Byte (MSB) abgespeichert. Beispiele : Integer Hex. Dez. 01 00 $0001 +1 FF FF $FFFF -1 FF 00 $00FF +255 00 00 $0000 -32768
Es gibt im 2001/3001/8001-Rechner zwei Darstellungsformen fuer reelle Zahlen: Speicherformat und Registerformat. Im Speicherformat wird jede reelle Zahl mit fuenf Bytes dargestellt. Das erste Byte enthaelt den Exponenten mit einem Bias von $80, d.h.: Exponent 81 bedeutet Rechtsshift um 1, Exponent 7F bedeutet Linksshift um 1 Byte, zwei bis fuenf enthalten die Mantisse als vorzeichenbehaftete Zahl. Das hoechstwertige Bit (7) von Byte zwei stellt das Vorzeichen dar (d.h.: keine Abspeicherung im Konplement, wie bei negativen ganzen Zahlen). Die Mantisse selbst wird nach links geshiftet, bis das hoechstwertige Bit aus der Zahl herausgeschoben wurde (Normalisierung). Im Registerformat wird jede Zahl mit sechs Bytes dargestellt. Byte eins und drei bis fuenf sind identisch zum Speicherformat. Byte zwei des Registerformates entspricht Byte zwei des Speicher-formates, allerdings ist hier das Vorzeichenbit immer gesetzt. Byte sechs enthaelt nur das Vorzeichenbit aus Byte zwei des Speicherformats. Beispiele : Speicherformat (hex) Dezimalzahl Registerformat (hex) 83 00 00 00 00 4 83 80 00 00 00 00 7F 00 00 00 00 .25 7F 80 00 00 00 00 83 80 00 00 00 -4 83 80 00 00 00 80 7F 80 00 00 00 -.25 7F 80 00 00 00 80
Strings sind ASCII-Zeichenketten. Sie sind aus Bytes in ASCII-Code zusammengesetzt. Zu jedem String gibt es einen String-Descriptor. Dieser ist drei Bytes lang und enthaelt : Laenge des Strings (0 bis 255 Zeichen), Adresse des Stringanfangs (low Byte - high Byte).
Letzte Änderung: 2019-01-04 10:05:16