Datenarten
Suche
Index
FAQ
Kontakt
Zurück

Datenarten


1. Datenarten
       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.

1.1 Bytes
       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.

1.2 ASCII-Code
       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.

1.3 Schirm-Code
       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.

1.4 Adressen
       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


1.5 Integer-Zahlen
      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

1.6 Real-Zahlen
      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



1.7 Strings
      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
  Rubrik:  CBM PET
Rubriken-Übersicht
 8 Besucher online 

Valid XHTML 1.0 Transitional Valid CSS!