Der Speicherplan des Atari

Hauptkategorie: 8-Bitter
Erstellt: 19 November 2011
Zugriffe: 2138

Der Speicherplan beschreibt die Funktionen der relevanten RAM-Adressen. Da es sich beim 6502-Prozessor um einen handelt, der keine separaten Ein-Ausgabe-Befehle kennt (I/O-Operations), sind Geräte ebenfalls in den 64KB-Adressraum der CPU eingeblendet. Aus diesem Grund sind auch die I/O-Geräte hier mit aufgeführt.

HILFSWORT

0

$0

Diese zwei Byte werden von der Reset-Routine beim Speichertest verwendet.

1

$1


CASINITV

2

$2

Wurde von Cassette gebootet, und war das Booten erfolgreich, erfolgt ein Sprung an die hier stehende Adresse.

3

$3


RAMTSTPTR

4

$4

Auch dieser Pointer wird nur für den Speichergrößentest verwendet.

5

$5


TMPRAMSIZ
Wird in Verbindung mit Adresse 5 ($5) benutzt, um das Ergebnis des RAM-Tests festzuhalten.

6

$6


TESTDATA
Hier steht das Datenbyte, das vor Beginn des Speichertests an der gerade zu testenden Stelle stand.

7

$7


WARMFLAG
Steht hier ein Wert ungleich Null, erfolgt im Normalfall beim Drücken der RESET-Taste nur ein Warmstart.

8

$8


DOSAKTIV
Hat dieses Byte den Wert Eins, so erfolgt beim Warmstart ein Sprung zur DOS-Initialisierungsroutine in DOSINIT.

9

$9


DOSVKT

10

$a

Hier liegt die Startadresse der DOS- oder anderen Boot-Software.

11

$b


DOSINIT

12

$c

Sprungadresse zur Initialisierungsroutine des DOS.

13

$d


BASMEMTOP

14

$e

Hier steht die höchste, vom Benutzerprogramm zu verwendende Speicheradresse. Darüber liegt in den meisten Fällen der Bildschirmbereich.

15

$f


IRQEN@
Durch Setzen der jeweiligen Bits können hier die Interruptquellen vom POKEY gesteuert werden. Ist ein Bit gesetzt, so ist die entsprechende Quelle aktiv.

16

$10


IRQST@
Ist eines der Bits dieses Schattenregisters auf Null, so ist die zugehörige Interruptquelle im POKEY aktiv geworden und es ist der entsprechende Handler aufzurufen.

17

$11


CLOCK

18

$12


19

$13

Dieser Drei-Byte-Wert wird alle 1/50 Sekunde incrementiert, wobei 20 ($14) das niederwertigste Byte ist.

20

$14


BUFFERADR

21

$15

Diese Adresse dient den SIO-Routinen als Hilfszeiger bei Diskettenoperationen.

22

$16


IOCBCMD
Sie dient als Hilfsspeicher bei CIO-Operationen.

23

$17


DISKFORM

24

$18

Dies ist ebenfalls ein Hilfszeiger für die Diskettenoperationen.

25

$19


DISKUTIL

26

$1a

Für diesen Pointer gilt ähnliches wie für DISKFORM.

27

$1b


ABUFPTR0

28

$1c

ABUFPTR1

29

$1d

ABUFPTR2

30

$1e

ABUFPTR3
Dies sind Hilfszeiger für rein internen Gebrauch.

31

$1f


IOCBCHIDZ
In diesem Byte liegt das Erkennungssymbol des anzusprechenden Gerätes an der seriellen Schnittstelle.

32

$20


IOCBDSKNZ
Bei der Diskettenverarbeitung reicht die Identifikation 'Diskette' in IOCBCHIDZ nicht aus, so daß noch eine Laufwerksnummer übergeben werden muß. Dies geschieht hierdurch.

33

$21


IOCBCMDZ
Hier liegt das gerade in Arbeit befindliche oder gerade fertig gewordene CIO-Kommando.

34

$22


IOCBSTATZ
An dieser Adresse legt die CIO-Routine ihre Statusmeldungen ab.

35

$23


IOCBBUFAZ

36

$24

Hier liegt die Anfangsadresse des Datenpuffers bei CIO-Operationen.

37

$25


IOCBPUTBZ

38

$26

Startadresse-1 der PUT_ONE_BYTE-Routine des entsprechenden Gerätes.

39

$27


IOCBBUFLZ

40

$28

Pufferlänge ab IOCBBUFAZ

41

$29


IOCBAUX1

42

$2a

IOCBAUX2

43

$2b

IOCBAUX3

44

$2c

IOCBAUX4
Hilfsinformationen für die CIOKommandobearbeitung.

45

$2d


IOCBNUMZ
Nummer des zu benutzenden IOCBs, multipliziert mit 16.

46

$2e


IOCBCHARZ
Hilfsregister zur Aufnahme des zu übertragenden Zeichens bei CIO-SchreibOperationen ohne Datenpuffer.

47

$2f


Die folgenden Register sind ausschließlich für den internen Gebrauch bestimmt. Sie dürfen nur benutzt werden, wenn die sie benutzenden Routinen verändert werden, da sonst nichts über den Zustand sowohl der benutzenden Routinen als auch der Variablen selbst ausgesagt werden kann.

DSKSTAT
Statusrückmeldung aus Disketten- oder Cassettenverarbeitung.

48

$30


DSKCHKSUM
Prüfsummenregister für serielle Übertragung.

49

$31


DSKBUFPTR

50

$32

Pufferanfang für Cassetten oder Diskettenoperation.

51

$33


BUFENDPTR

52

$34

Zeigt auf das Ende des Disk-Puffers BUFENDPTR.

53

$35


LOADERTMP

54

$36

Hilfsregister für den internen Gebrauch des Loaders.

55

$37


BUFFULL
Ist dieses Flag ungleich Null, so ist der CIO- beziehungsweise SIO-Puffer voll.

56

$38


RECEIVEND
Ist dieses Flag nicht Null, so bedeutet es, daß die CIO-Routine ihren Empfang beendet hat.

57

$39


XMITEND
Dieses Flag gibt darüber Auskunft, ob die interruptgesteuerte Senderoutine ihre Aufgabe schon beendet hat.

58

$3a


CHKSUMSND
Wenn gesetzt, ist die Checksumme bereits gesendet.

59

$3b


NOCHKSUM
Bei einem Wert ungleich Null wird keine Checksumme gesendet.

60

$3c


CASBUFPTR
Bytezähler für die Cassettenübertragung. Liegt wertmäßig zwischen Null und CASBUFLIM.

61

$3d


GAPTYPE
$00: Normale Gaplänge zwischen den einzelnen Blöcken auf einer Cassette.
$80: Extrem langer Gap am Anfang der Cassettenübertragung.

62

$3e


CASEOF
Ist dieses Byte gesetzt, so hat die Leseroutine der Cassette einen END_OF_FILE-Record gefunden.

63

$3f


BEEPCOUNT
Hier steht der Parameter für die BEEPWAITRoutine. Er enthält die Anzahl der abzugebenden Huptöne als Erkennung für irgendwelche externen Operationen (z.B. zwei Huptöne: Schalte PLAY und RECORD ein).

64

$40


IOSOUNDEN
Wenn dieses Byte Null ist, wird die Tonausgabe der seriellen Ein-/Ausgabe unterdrückt.

65

$41


CRITICIO
Dieses Bit wird dann gesetzt, wenn eine hohe, schnelle Folge von Interrupts erwartet wird (z.B. bei seriellem I/O). Sie bewirkt, daß die Vertical-Blank-Unterbrechungsroutine nur zu einem sehr geringen Teil bearbeitet wird, um somit Zeit zu sparen. Als Seiteneffekt ergibt sich zum Beispiel, daß aufgrund der fehlenden Zählerergebnisse der Autorepeat der Tastatur unwirksam ist.

66

$42


FILEMNGMT

67

$43


bis

bis

Interne Pointer für Diskettensteuerung.

73

$49


ZCHAIN

74

$4a

Pointer für die Verarbeitung der linearen Liste der IOCBs.

75

$4b


MONSTATUS
Dieser Status wird von der Monitorverarbeitung benötigt.

76

$4c


ATTRACT
Ist dieses Byte niedriger als 128 = $80, so erfolgt normale Bildschirmausgabe. Erreicht es den Wert 128, wird es auf 254 gesetzt und bwirkt das Einschalten des sogenannten Attract-Modes.

77

$4d


ATRACTMSK
$fe: Normale Bildschirmhelligkeit $f6: verringerte Helligkeit
ATRACTMASK ist abhängig von ATTRACT.

78

$4e


COLREGSH
Dieses Register gehört ebenso wie ATRACTMSK zur Verarbeitung des Attract-Modes. Es erfolgt ein logische Verknüpfung der Farb- und Luminanzregister des ANTIC.

79

$4f


MONTEMP

80

$50

Hilfsbyte für Bildverarbeitung.

81

$51


LFTMARGIN
Wert des linken Randes bei Textdarstellung.

82

$52


GIGMARGIN
Wert des rechten Randes bei Textdarstellung.

83

$53


CURSROW
Dies ist die momentane Cursorreihe bei Grafikverarbeitung in dem Bereich von 0 bis 191.

84

$54


CORSCOL

85

$55

Cursorspalte bei Grafikverarbeitung in den Bereichen von 0 bis 319.

86

$56


GRAPHEMUL
Dieser Wert legt fest, in welchem GrafikModus die folgenden Ausgaben stattfinden. Es wird benötigt, um von höheren Programmiersprachen aus leicht mehrere Grafikarten mischen zu können.

87

$57


SCRNSTART

88

$58

Adresse des ersten Bildschirmbytes.

89

$59


OLDGRROW

90

$5a

OLDGRCOL

91

$5b


92

$5c

OLDGRCHR

93

$5d

OLDGRADR

94

$5e

Diese Adressen beinhalten alle Daten, die zwischengespeichert werden müssen, wenn zwischen Grafik- und Textverarbeitung während eines Programms umgeschaltet werden soll. Auch diese Adressen sind nur für interne Zwecke bestimmt!

95

$5f


FKTDEFPTR

96

$60

Hier steht die Anfangsadresse der 8 Byte langen Tabelle zur Festlegung der Funktionstastenkodes beim 1200XL.

97

$61


PALNTSC
0: PAL-Fernsehsystem 1: NTSC

98

$62


AKTCHRNUM
Diese Variable enthält die aktive Cursorposition innerhalb einer logischen Zeile.

99

$63


ADDRESS

100

$64


101

$65

MLTTMP

102

$66


103

$67

SAVEADR

104

$68

Recht häufig intern benutzte Zwischenspeicher für vielfältige Aufgaben.

105

$69


RAMTOP
Dieses Register hält die Anzahl der im Computer insgesamt zur Verfügung stehenden RAMPages.

106

$6a


AKTBUFLEN
Hier steht die momentane Größe der aktuellen logischen Zeile.

107

$6b


BUFSTR

108

$6c

GETCHARACTER-Pointer des Editors.

109

$6d


BITMASK
Register für die Verwaltung logischer Zeilen.

110

$6e


SHFAMT
Ebenfalls für GETCHAR benötigtes Hilfsregister.

111

$6f


PLOTROWAC

112

$70


113

$71

PLOTCOLAC

114

$72


115

$73

ENDPOINTR

116

$74


117

$75

DELTAROW

118

$76

DELTACOL

119

$77

Diese Register werden zusammen mit den zwei weiter hinten stehenden Registern ROWINC und COLINC zur Berechnung von Grafik benutzt (z.B. DRAWTO).

120

$78


KEYDEFPTR

121

$79

Dieser Pointer zeigt auf die Tabelle zur Wandlung von Tastaturkode nach ATASCII.

122

$7a


SWAPFLAG
Ungleich Null zeigt dieses Flag an, daß der Bildschirmvariablenbereich auf Grafik eingestellt ist, Null signalisiert, daß die Variablen für den Bildschirmbereich Referenzen auf Texte darstellen.

123

$7b


HOLDCHAR

124

$7c

INSDATA

125

$7d

COUNTER

126

$7e

Ebenfalls alles interne Hilfsvariable für die Verwaltung des Bildschirms.

127

$7f


LOWMEM

128

$80

Dieser Zeiger weist auf die unterste Adresse, die nicht mehr für Betriebssystemzwecke verwendet wird.

129

$81


CHECKSUM

139

$8b

In diesen zwei Byte wird die Prüfsumme über Speicherbereiche gebildet. Da diese Checksumme nur bei der Initialisierungsphase benötigt wird, kann der Wert nach dem Kaltstart zerstört werden.

140

$8c


DLIVKT

512

$200

Vektor für die ANTIC-Programm- Unterbrechung. Wenn eine ANTIC-Programm-Unterbrechung ausgelöst wird, wird ein Unterbrechungsprogramm, dessen Adresse in diesen beiden Speicherstellen steht, ausgeführt.

513

$201


VPRECEDE

514

$202

Ansprungvektor für von PORT A ausgelösten Interrupt, der eine SERIAL-BUS-PROCEED-Unterbrechung darstellt.

515

$203


VINTERRUP

516

$204

Der Interrupt von PORT B signalisiert eine Unterbrechungsanforderung für die serielle Übertragungsunterbrechung. Die letzten beiden Interruptvektoren werden normalerweise vom System ignoriert, da die angeschlossenen Geräte keine Interrupts erzeugen. Die Leitungen sind für spätere Erweiterungen eingeplant.

517

$205


VBREAK

518

$206

Die hier stehende Einsprungadresse wird verwendet, wenn die CPU eine BRK-Instruktion ausführt.

519

$207


VKEYBOARD

520

$208

Vektor für den Fall, daß eine normale Taste gedrückt wurde.

521

$209


VSERIELIN

522

$20a

Es liegt ein Zeichen im SERIN-Register von der seriellen Schnittstelle an.

523

$20b


VSERREADY

524

$20c

Das SEROUT-Register ist bereit, ein weiteres Zeichen aufzunehmen.

525

$20d


VSERCLOSE

526

$20e

Das parallel/seriell-Wandlungsregister ist leer und die Übertragung wird vom POKEY aus beendet.

527

$20f


VTIMER1

528

$210

Signalisiert der POKEY, daß sein Zählerregister 1 auf Null gegangen ist, wird dieser Vektor angesprungen.

529

$211


VTIMER2

530

$212

Hier wird hingesprungen, wenn der POKEY im Interrupt signalisiert, daß sein Kanal 2 auf Null heruntergezählt hat.

531

$213


VTIMER4

532

$214

Erkennt die Interruptroutine beim POKEY, daß Timer 4 auf Null gezählt hat und ist der entsprechende Interrupt zugelassen, so wird dieser Vektor angesprungen.

533

$215


VIMMEDIRQ

534

$216

Hier steht die Adresse des eigentlichen Interrupthandlers, der erst die Verteilung auf die einzelnen Interruptquellen vornimmt.

535

$217


TIMCOUNT1

536

$218

Software-Timer 1. Der Wert wird bei jedem Vertical-Blank-Interrupt decrementiert. Ist er danach Null, so wird die bei (TIMER1VKT) stehende Routine ausgeführt.

537

$219


TIMCOUNT2

538

$21a

Dies ist ein ähnlicher Softwaretimer wie TIMCOUNT1, nur mit der Einschränkung, daß das Zählen dieses und der folgenden drei Zähler unterbleibt, wenn CRITICIO gesetzt ist.
Wird TIMCOUNT2 Null, so wird die bei (TIMER2VKT) stehende Routine ausgeführt.

539

$21b


TIMCOUNT3

540

$21c

Für diesen Zähler gilt das gleiche wie für TIMCOUNT2, nur daß kein Vektor beim Nullwerden angesprungen wird, sondern lediglich Flag TIMER3SIG gesetzt wird.

541

$21d


TIMCOUNT4

542

$21e


543

$21f

TIMCOUNT5

544

$220

Es gilt das gleiche wie für TIMCOUNT3. Beim Nullwerden des entsprechenden Zählers werden analog dazu die Flags TIMER4SIG respektive TIMER5SIG gesetzt.

545

$221


VBLKIVKT

546

$222

Dieser Vertical-Blank-Immediate-Vektor wird beim Strahlrücklaufinterrupt immer als erste Unterbrechungsroutine angesprungen.

547

$223


VBLKDVKT

548

$224

Dieser Vertical-Blank-Deferred-Vektor wird von der bei VBLKIVKT stehenden Routine aus angesprungen, wenn CRITICIO gelöscht ist. Die Routine existiert im Normalfall nicht und ist frei vom Benutzer programmierbar.

549

$225


TIMER1VKT

550

$226

Ansprungvektor für die User-Routine, die ausgeführt werden soll, wenn TIMCOUNT1 auf Null gegangen ist.

551

$227


TIMER2VKT

552

$228

Ansprungvektor für die Behandlungsroutine bei Nullwerden des TIMCOUNT2.

553

$229


TIMER3SIG
Dieses Flag ist Null, wenn TIMCOUNT3 nicht Null ist, sonst $ff.

554

$22a


SRTIMER
Wesentlicher, intern benutzter Timer für die Tasaturentprellung, Warten bis zum ersten Autorepeat und danach Bestimmen der Autorepeat-Rate.

555

$22b


TIMER4SIG
Dieses Flag ist Null, wenn TIMCOUNT4 nicht Null ist, sonst $ff.

556

$22c


IANTEMP
Temporäres Hilfsregister.

557

$22d


TIMER5SIG
Dieses Flag ist Null, wenn TIMCOUNT5 nicht Null ist, sonst $ff.

558

$22e


DMACNTL@
Schattenregister von DMACNTL. DMACNTL schaltet die einzelnen Arten des DMA ein.

559

$22f


DLPTR@

560

$230

Schattenregister des Zeigers auf das ANTICProgramm. Der Anfang des ANTIC-Programms muß in dieser Speicherstelle stehen, wenn mit dem Betriebssystem gearbeitet wird.

561

$231


SKCNTL@
Steuerung der seriellen Übertragung, des Ablesens der Tastatur und des Ablesens der POT-Eingänge.

562

$232


LCOUNT
Bytezähler für Loader-Routinen.

563

$233


LPENH@
Schattenregister, Horizontalposition des Lightpens.

564

$234


LPENV@
Schattenregister, Vertikalposition des Lightpens.

565

$235


VBREAKKEY

566

$236

Dies ist der Vektor für die BREAK-TastenVerarbeitung. Nicht verwechseln mit VBREAK, der die BRK-Instruktion der CPU behandelt!

567

$237


NEUIOINIV

568

$238

Vektor zur Initialisierungsroutine noch nicht existenter Hardware. Siehe dazu die Betriebssystembeschreibung!

569

$239


CMDDEVIV

570

$23a

CMDCMD

571

$23b

CMDAUX1

572

$23c

CMDAUX2

573

$23d

CMDAUX3

574

$23e

ERRORFLAG
Interne Hilfsvariablen für die Serielldatenverarbeitung.

575

$23f


DSKFLAG

576

$240

DSKSECCNT

577

$241

DSKLDADR

578

$242

Interne Hilfsvariablen für die reine Diskettenverarbeitung.

579

$243


COLDSTART
Wird dieses Flag vom Benutzerprogramm auf einen Wert ungleich Null gesetzt, so erfolgt beim Einsprung in die Warmstartroutine ein Kaltstart.

580

$244


DSKTIMCON
Kontrollregister für die Diskettenverarbeitung. Ein Wert ungleich Null besagt, daß ein Timeout aufgetreten ist.

582

$246


NEUVORHDN
Flag nur für den internen Gebrauch. Ist zu setzen, wenn externe Geräte am Parallelbus angeschlossen sind. Wird von der dazu mitgelieferten Boot-Software benutzt. Muß im Normalfall Null sein, da sonst das System abstürzen kann!

583

$247


NEUIODREQ
Auch dieses Flag wird vom Kaltstartprogramm für die Verwaltung der noch zu entwickelnden Hardware benutzt. Es enthält die Adresse des gerade angeprochenen Devices.

584

$248


NEUIOMASK

585

$249

NEULDTMP1

586

$24a

Diese Adressen werden ebenfalls nur dann sinnvoll benutzt, wenn Zusatzhardware am Parallelbus anliegt. Sie dürfen deshalb trotzdem nicht für neue Software verwendet werden.

587

$24b


CHARSTPTR
Ein-Byte-Pointer für interne Monitorverarbeitung.

619

$26b


FINESCROL
Temporäres Flag für die Verarbeitung des feinen Scrollings, wobei nicht gleich eine komplette Zeile verschoben wird, sondern die Zeile Punktweise nach oben gesetzt wird.

620

$26c


KBDISABLE
Besitzt dieses Flag einen Wert ungleich Null, sind Eingaben von der Tastatur nicht mehr möglich.

621

$26d


FINESCRFL
Wie FINESCROL für die Bildverschiebung verantwortlich.

622

$26e


GTIACNTL@
Schattenregister für Steuerung des GTIA und Priorität der Spieler und Geschosse.

623

$26f


PADDL0@

624

$270

PADDL1@

625

$271

PADDL2@

626

$272

PADDL3@

627

$273

PADDL4@

628

$274

PADDL5@

629

$275

PADDL6@

630

$276

PADDL7@
Schattenregister, enthalten die Werte der Paddle-Eingänge. Beim Atari 600XL und 800XL sind nur die Paddle-Eingänge 0 bis 3 benutzt, die Nummern 4 bis 7 werden von 0 bis 3 kopiert.

631

$277


JOYSTICK0

632

$278

JOYSTICK1

633

$279

JOYSTICK2

634

$27a

JOYSTICK3
Diese Register enthalten die Stellung der Joysticks (soweit angeschlossen). Bei den neuen Atari-Modellen sind jedoch nur noch zwei Joysticks vorhanden ("0" und "1"), die beiden anderen werden kopiert.

635

$27b


PTRIG0@

636

$27c

PTRIG1@

637

$27d

PTRIG2@

638

$27e

PTRIG3@

639

$27f

PTRIG4@

640

$280

PTRIG5@

641

$281

PTRIG6@

642

$282

PTRIG7@
Auslösetasten der Paddles ("0" meldet Taste gedrückt, "1" meldet Taste nicht gedrückt). Da bei den neuen Atari-Geräten nur noch 4 Paddles anzuschließen sind, werden bei diesen nur PADDLE0 bis PADDLE3 sinnvoll verwendet, die anderen werden kopiert.

643

$283


TRIG0@

644

$284

TRIG1@

645

$285

TRIG2@

646

$286

TRIG3@
Auslösetasten der Joysticks beziehungsweise Schattenregister der GTIA-Register für die Triggereingänge ("0" meldet Taste gedrückt, "1" meldet Taste nicht gedrückt). Bei den neuen Atari-Geräten sind nur TRIG0 und TRIG1 mit Joystick-Ports verbunden, die anderen zwei Werte sind Kopien der ersten beiden.

647

$287


HIBYTELD
Zwischenregister für den LOADER.

648

$288


WRITEMODE
Flag für die Cassettenverarbeitung. Es zeigt an, ob die momentane Operation ein Schreiben ($80) oder Lesen ($00) beinhaltet. Nur für internen Gebrauch.

649

$289


CASBUFLIM

650

$28a

Wert des Pufferendes für Cassettenoperationen.

651

$28b


NEUIOPTR

652

$28c

Pointer auf die Startadresse der I/O-Verarbeitung der neuen Hardwarezusätze am parallelen Bus.

653

$28d


NEWADRLOD

654

$28e

Ladeadresse für I/O mit der neuen Zusatzhardware.

655

$28f


TEXTROW

656

$290

TEXTCOL

657

$291


658

$292

TEXTINDEX

659

$293

TEXTMSC

660

$294


661

$295

TEXTOLD

662

$296


663

$297

TEXTGRAD
Variablen zur Verarbeitung von Text/Grafikgemischten Bildschirminhalten.

666

$29a


CRETRY
Dies ist die Maximalzahl der Wiederholungen des Versuches, ein Kommando auf einem sich zurückmeldenen Gerät abzusetzen. Der Wert steht auf 1, so daß eine Wiederholung stattfindet. Mehr ist hierbei auch nicht sinnvoll, denn es ist davon auszugehen, daß ein Gerät, das sich ordentlich zurückmeldet, im Normalfall auch in der Lage ist, ein richtiges Kommando auszuführen. Gelingt dies nicht, sind das Kommando oder aber Voraussetzungen für die richtige Ausführung nicht in Ordnung.

667

$29c


SUBTEMP

668

$29e

HOLD2
Hilfsvariablen für interne Verwendung.

669

$29f


DISPLYMSK

670

$2a0

TEMPLBT

671

$2a1

ESCAPEFLAG
Weitere Variablen zur reinen Textverarbeitung mit Screen oder Editor.

672

$2a2


TABMAP

673

$2a3


bis

bis

Tabelle, in der jedes einzelne Bit eine Cursorposition innerhalb einer logischen Zeile auf dem Bildschirm darstellt. Ist ein Bit gesetzt, so gilt diese Position als Tabulator-Haltestelle.

689

$2b1


LOGICMASK

690

$2b2


bis

bis

Tabelle für die Zusammenhänge von logischer und physikalischer Zeile auf dem momentan angezeigten Bildschirm. Wird intern benötigt, um beim Löschen einer Zeile immer eine komplette logische Zeile löschen zu können.

693

$2b5


XORKEYMSK
Diese Variable wird verwendet, um die Funktionalität von Tastengruppen der Tastatur abändern zu können.
Jedes gesetzte Bit in diesem Byte gibt an, daß das entsprechende, vom POKEY gelieferte Datenbit aus dem Tastaturkode invertiert werden soll. So können ganze Tastaturreihen in andere umgewandelt werden. Es muß im Einzelnen herausgefunden werden, in wieweit diese Funktion gewinnbringend eingesetzt werden kann. Es ist jedoch zu beachten, daß diese Invertierung der jeweiligen Bits mit dem Tastaturkode geschieht, also bevor der gelesene Wert in einen ATASCII-Wert umgewandelt wird.

694

$2b6


DRETRY
Hier steht die Anzahl, mit der der Versuch wiederholt wird, ein spezifiziertes Gerät anzusprechen. Der Wert ist im Normalbetrieb auf 13 Wiederholungen eingestellt.

701

$2bd


SHIFTLOCK
Dieses Label gibt Auskunft darüber, ob irgendwelche Sonderbedingungen bei der Eingabe zu beachten sind:
$00: Kleinbuchstaben aktiv (Schreibmaschinenmodus)
$40: Nur Großbuchstaben (Normalmodus)
$80: CONTROL-Taste gedrückt.

702

$2be


NUMNXTLIN
Dieses Register beinhaltet die Anzahl der auf dem Bildschirm verarbeiteten Textzeilen.
Das Register kann die Werte 24, 4 oder 0 annehmen, andere werden vom Betriebssystem ignoriert.

703

$2bf


COLPM0@

704

$2c0

COLPM1@

705

$2c1

COLPM2@

706

$2c2

COLPM3@
Schattenregister der Farbregister für die Spieler beziehungsweise Geschosse.

707

$2c3


COLPF0@

708

$2c4

COLPF1@

709

$2c5

COLPF2@

710

$2c6

COLPF3@

711

$2c7

COLBAK@
Schattenregister der Farbregister für die Spielfeldfarben beziehungsweise des Hintergrundes.

712

$2c8


RUNADRLOD

713

$2c9


714

$2ca

HIUSEDLOD

715

$2cb


716

$2cc

LODZHIUSE

717

$2cd


718

$2ce

LODGBYTEA

719

$2cf


720

$2d0

LODADRESS

721

$2d1


722

$2d2

LODZLOADA

723

$2d3

Diese Variablen werden für interne Verwaltungsaufgaben beim Programmladen der später einmal am hinteren parallelen Bus anzuschließenden Hardware verwendet.

724

$2d4


DSKSECLEN

725

$2d5

Dieser Wert kann normalerweise $0080 oder $0100 sein, je nach Diskettenformat.

726

$2d6


ACMISR

727

$2d7

Findet interne Verwendung.

728

$2d8


KEYRPDELY
Dieser Wert bestimmt die Zeit zwischen dem Drücken einer Taste und dem ersten Zeichen des Autorepeat. Standardwert ist 40.

729

$2d9


KEYREP
Im Gegensatz zu KEYRPDELY bestimmt dieser Wert bei einsetzendem Autorepeat die Wiederholrate nach dem ersten Auto-Zeichen. Standardwert ist 5.

730

$2da


CLICKDISA
Wenn ungleich Null, ist der Tastaturklick abgeschaltet.

731

$2db


HELPFLAG
Dieses Register ist beim 600XL/800XL 'Entwicklungsschrott', da es angibt, ob die in diesen Geräten nicht eingebaute HELP-Taste gedrückt ist. Darf trotzdem nicht verwendet werden, da unter Umständen Schreibzugriffe darauf programmiert sind.

732

$2dc


DMASAVE
Statusinformation des Direkten Speicherzugriffs. Hat für normalen Benutzer keinen Nutzen, darf aber nicht anderweitig benutzt werden.

733

$2dd


PRTBUFPTR
Gibt Bytenummer innerhalb des Printerpuffers an.

734

$2de


PRTBUFSIZ
Ist maximale Printerpuffergröße in Byte.

735

$2df


RAMSIZE
Anzahl der zur Verfügung stehenden RAM-Pages des Systems.

740

$2e4


MEMTOP

741

$2e5

Dies ist ein Zeiger auf die Obergrenze des vom Benutzer verwendbaren Speicherraumes. Darüber liegt im Normalfall der Bildschirm.

742

$2e6


MEMLO

743

$2e7

Dies ist der Zeiger auf die Untergrenze des vom Benutzer frei zu verfügenden Speicherraumes. Er liegt normalerweise direkt über den Betriebssystemvariablen, respektive dem DOS, eventuell noch mit DUP.

744

$2e8


HNDLRLOAD

745

$2e9

DEVICSTAT

746

$2ea


747

$2eb

CHAINTMP

748

$2ec

Hilfsvariablen für den internen Gebrauch bei der Verwaltung linearer Listen und darüber laufender Ladevorgänge mit noch nicht existenter Hardware.

749

$2ed


CASSPEED

750

$2ee

Zeitwerte für die Senderate über Cassette.

751

$2ef


CURSORINH
Auf einem Wert ungleich Null, verhindert diese Variable die Anzeige des Cursors.

752

$2f0


KEYDELAY
Dieser Wert, der standardmäßig auf 3 eingestellt ist, bestimmt die Zeit zwischen dem Loslassen einer Taste und dem Drücken einer neuen Taste, so daß deren Kode übernommen wird. Bei extrem schnellen 'Tippern' (und 'Tipperinnen') sollte dieser Wert verkleiner werden. Das verhindert Ärger mit fehlenden Zeichen beim Programmieren.

753

$2f1


CHARCNTL@
Schattenregister, steuert das Aussehen der Zeichen in mehreren Schrift-Modi des ANTIC.

755

$2f3


CHARBASE@
Schattenregister, enthält Basisadresse des Zeichengenerators (oberes Byte)

756

$2f4


NEWGRROW

757

$2f5

NEWGRCOL

758

$2f6

Hier werden die Werte für einen DRAWTO-Befehl vor dessen Aufruf festgelegt.

759

$2f7


ROWINC

760

$2f8

COLINC

761

$2f9

Diese Variablen werden zum Berechnen der Bahnen eines DRAWTO benutzt.

762

$2fa


ATASCICHR
Letztes eingegebenes Zeichen im ATASCII-Kode. Fast ausschließlich für interne Zwecke benutzt.

763

$2fb


KBCODE@
Schattenregister, enthält den Tastaturcode, das heißt, welche Taste gedrückt wurde.

764

$2fc


FILEDAT
Für die interne Benutzung des Grafiksystems reserviert.

765

$2fd


DISPLYFLG
Ist dieses Flag ungleich Null, so wird das folgende Zeichen, wenn es ein Kontrollzeichen ist, nicht ausgeführt, sondern der entsprechende ATASCII-Kode ausgegeben.

766

$2fe


STARTSTOP
Ist dieses Byte gleich $ff, so storniert die Bildschirmausgabe, bei $00 geht sie weiter. das Flag wird durch Drücken von CONTROL & '1' verändert. Wichtig ist, daß bei der momentanen Betriebssystemimplementierung das System 'steht', wenn es auf das Nullwerden von STARTSTOP wartet. Nur wesentliche Interrupts werden durchgelassen, die eigentliche Rechenarbeit wird jedoch ebenfalls mit dem Output angehalten.

767

$2ff


Im Folgenden werden die wesentlichen vom Disk-Handler benutzten Variablen beschrieben. Sie sind größtenteils bei Diskettenverarbeitung selbst zu belegen, es sei denn, die Programmierung erfolgt in einer höheren Sprache, wie zum Beispiel BASIC oder PASCAL.

DSKDEVICE
Allgemeiner Erkennungskode für die Disketten($30) beziehungsweise Cassettenstation ($60).

768

$300


DSKUNIT
Bei Diskettenverarbeitung die Nummer der anzusprechenden Diskettenstation.
Erlaubt sind hier Werte im Bereich von $01 bis $09, wobei bei der heutigen Hardware nur $01 bis $04 sinnvoll, weil kaufbar sind.

769

$301


DSKCMD
Auszuführendes Kommando. Siehe dazu ZeropageIOCBs ab IOCBCHIDZ.

770

$302


DSKSTATUS
Zurückgemeldeter Status der Operation. Siehe dazu ebenfalls IOCBSTATZ.

771

$303


DSKBUFFER

772

$304

Anfangsadresse des Datenpuffers.

773

$305


DSKTIMOUT

774

$306

Anzahl der Sekunden bis zur TimeoutFehlermeldung.

775

$307


DSKBYTCNT

776

$308

Anzahl der im Puffer ab DSKBUFFER zur Verfügung stehenden Bytes.

777

$309


DSKAUX1

778

$30a

DSKAUX2 Hilfsinformationen für die Diskettenverarbeitung. Bei OPEN-Befehlen stehen hier besondere Merkmale (z.B. Nur-Lese-Zugriff).
Bei Schreib- beziehungsweise Leseoperationen steht hier in DSKAUX1 und -2 die Blocknummer von $01 bis MAXBLOCK.

779

$30b


INTERVTI1

780

$30c

Intervalltimer 1, bildet mit INTERVTI2 eine Einheit.

781

$30d


OPTIONJMP
Diese Adresse ist offiziell von Atari als belegt gekennzeichnet, ist jedoch nirgendwo im Betriebssystem verwendet. Sie soll für spätere Hardware irgendeine Vorentscheidung treffen. Es empfiehlt sich im Hinblick auf spätere Softwarekompatibilität, diese Variable nicht zu verwenden.

782

$30e


CASFLAG
Ist dieses Flag nicht Null, handelt es sich um eine Cassettenoperation. Nur für internen Gebrauch.

783

$30f


INTERVTI2

784

$310

INTERVTI1 und -2 werden benutzt, um die Lesegeschwindigkeit bei Cassettenoperationen zu bestimmen.

785

$311


CHAINTP1

786

$312

Hilfspointer für lineare-Listenverwaltung.

787

$313


PTIMOUT
Timeoutwert für Druckbefehle.

788

$314


TIMEFLAG
Timeoutwert für die Lesegeschwindigkeitsbestimmung.

791

$317


STACKSAVE
Hilfsregister für das Retten des Stackpointers bei SIO-Operationen.

792

$318


TEMPSTAT
Register für kurzzeitiges Zwischenspeichern von SIO-Statusinformationen.

793

$319


HATABS

794

$31a


bis

bis

Tabelle für die Zuordnung von Geräten zu deren Handlern. Jeder Tabelleneintrag besteht aus drei Byte: Dem Namen (1) und der Handlertabellenstartadresse (2). Es sind die Geräte Cassette, Editor, Screen, Drucker und Keyboard vorgegeben. Ein Eintrag ist dann leer, wenn sein Name Null ist.

831

$33f


IOCB0

832

$340


bis

bis

Ab dieser Adresse stehen 8 IOCB-Einträge zur Verfügung, von denen Eintrag 0 bereits vom System für die Editorverarbeitung verwendet
wird. Die einzelnen Einträge bitte aus der Zeropage-IOCB-Beschreibung ersehen, die ab IOCBCHIDZ steht. Bei Verwendung eines dieser IOCBs wird davor der Inhalt aus diesen Registern in die Zeropage kopiert, um sie danach wieder zurückzutransportieren.

847

$34f

IOCB1

848

$350


bis

bis


863

$35f

IOCB2

864

$360


bis

bis


879

$36f

IOCB3

880

$370


bis

bis


895

$37f

IOCB4

896

$380


bis

bis


911

$38f

IOCB5

912

$390


bis

bis


927

$39f

IOCB6

928

$3a0


bis

bis


943

$3af

IOCB7

944

$3b0


bis

bis


959

$3bf


PRINTBUF

960

$3c0


bis

bis

Hier liegt der Printerpuffer für die Ausgabe an den Drucker über die serielle Schnittstelle.

999

$3e7


SUPERFLAG
Hilfsinformation für Editor.

1000

$3e8


STARTTST
Dieses Flag liefert einen Wert ungleich Null, wenn beim Kaltstart die START-Taste gedrückt war.

1001

$3e9


CASSTART
Flag, ob gerade von Cassette gebootet wird und ob die dort gelesene Init-Adresse angesprungen werden soll.

1002

$3ea


CARTCKSUM

1003

$3eb

Checksumme des Cartridge mit dem Anfang des ROMs bei $C000.

1004

$3ec


ACMVAR

1005

$3ed


bis

bis

Hilfsvariablen für interne Zwecke.

1015

$3f7


X64KBFLAG
Flag, ob die obersten 16KByte RAM oder ROM sind.

1016

$3f8


MINTLK
Hilfsregister, nicht benutzen.

1017

$3f9


TRIG3@
Dies ist eine Kopie des Registers TRIG3, das normalerweise nur durch einen Eingang beeinflußt wird. Wird ein ROM-Modul eingesteckt ($01) oder entfernt ($00), so ändert sich der Wert von TRIG3. Wird zur Feststellung benutzt, ob es sich um einen Kalt- oder Warmstart handelt.

1018

$3fa


CHAINLINK

1019

$3fb

Pointer zur Verarbeitung linearer Listen, wenn sie eingesetzt werden; also nur bei Verwendung spezieller, noch nicht auf dem Markt befindlicher Hardware.

1020

$3fc


CASBUFFER

1021

$3fd


bis

bis

Pufferbereich für die Cassettendatenübertragung, wobei die drei ersten Byte nur für die Synchronisation und Feststellung der Datentypen und -menge gelten. Der eigentliche Datenpuffer beginnt ab Adresse 1024 ($400) und geht bis zum Ende von CASBUFFER.

1151

$47f

An dieser Stelle sind die Variablen des Betriebssystems beendet. Sicherlich werden noch diverse andere Speicherstellen in der Zeropage und im Bereich über $0480 benutzt. Da diese Benutzung jedoch auf BASIC, DOS oder andere Software beschränkt ist, wird an dieser Stelle nicht weiter darauf eingegangen.


GTIA - Adressbereich

Im Weiteren folgen die Hardwareadressen von GTIA, POKEY, PIA und ANTIC:

HPOSP0 (W)

53248

$d000

HPOSP1 (W)

53249

$d001

HPOSP2 (W)

53250

$d002

HPOSP3 (W)

53251

$d003

HPOSM0 (W)

53252

$d004

HPOSM1 (W)

53253

$d005

HPOSM2 (W)

53254

$d006

HPOSM3 (W)
Horizontalpositionen der Spieler (HPOSPn) beziehungsweise der Geschosse (HPOSMn).

53255

$d007


KOLM0PF (R)

53248

$d000

KOLM1PF (R)

53249

$d001

KOLM2PF (R)

53250

$d002

KOLM3PF (R)
Kollisionsregister für Zusammenstöße zwischen den Geschossen und dem Spielfeld.

53251

$d003


KOLP0PF (R)

53252

$d004

KOLP1PF (R)

53253

$d005

KOLP2PF (R)

53254

$d006

KOLP3PF (R)
Kollisionsregister für Zusammenstöße zwischen den Spielern und dem Spielfeld.

53255

$d007


SIZEP0 (W)

53256

$d008

SIZEP1 (W)

53257

$d009

SIZEP2 (W)

53258

$d00a

SIZEP3 (W)

53259

$d00b

SIZEM (W)
Größen der Spieler (SIZEPn) und der Geschosse (SIZEM).

53260

$d00c


KOLM0PL (R)

53256

$d008

KOLM1PL (R)

53257

$d009

KOLM2PL (R)

53258

$d00a

KOLM3PL (R)
Kollisionsregister für Zusammenstöße zwischen Geschossen und Spielern.

53259

$d00b


GRAFP0 (W)

53261

$d00d

GRAFP1 (W)

53262

$d00e

GRAFP2 (W)

53263

$d00f

GRAFP3 (W)

53264

$d010

GRAFM (W)
Grafikregister der Spieler (GRAFPn) beziehungsweise der Geschosse (GRAFM).

53265

$d011


KOLP0PL (R)

53260

$d00c

KOLP1PL (R)

53261

$d00d

KOLP2PL (R)

53262

$d00e

KOLP3PL (R)
Kollisionsregister für Zusammenstöße zwischen Spielern.

53263

$d00f


TRIG0 (R)

53264

$d010

TRIG1 (R)

53265

$d011

TRIG2 (R)

53266

$d012

TRIG3 (R)
Register zum Abfragen der Triggereingänge des GTIA (Schattenregister dazu ab 644 beziehungsweise $284).

53267

$d013


COLPM0 (W)

53266

$d012

COLPM1 (W)

53267

$d013

COLPM2 (W)

53268

$d014

COLPM3 (W)
Farben der Spieler beziehungsweise der Geschosse (Schattenregister dazu ab 704 beziehungsweise $2c0).

53269

$d015


COLPF0 (W)

53270

$d016

COLPF1 (W)

53271

$d017

COLPF2 (W)

53272

$d018

COLPF3 (W)

53273

$d019

COLBAK (W)
Farben des Spielfeldes (COLPFn) und des Hintergrundes (COLBAK), Schattenregister dazu ab 708 beziehungsweise $2c4.

53274

$d01a


GTIACNTL (W)
Steuert den GTIA, bestimmt Prioritätsfolge zwischen Bildelementen und steuert Darstellung der Spieler und Geschosse.

53275

$d01b


VDELAY (W)
Ermöglicht es, Spieler und Geschosse um einzelne Bildzeilen zu verschieben, wenn zweizeilige Auflösung der Player-Missile-Grafik gewählt wurde.

53276

$d01c


PMCNTL (W)
Schaltet Spieler und Geschosse ein; ermöglicht es, den Status der Triggereingänge festzuhalten.

53277

$d01d


HITCLR (W)
Wenn in dieses Register irgendein Wert geschrieben wird (wenn diese Adresse im Schreibzugriff angesprochen wird), werden alle Kollisionsregister gelöscht.

53278

$d01e


CONSOL (W/R)
Dieses Register wird verwendet, um den Status der Konsolentaster ("START", "SELECT" und "OPTION") abzufragen.

53279

$d01f


NEUPORT-Adressbereich

NEUPORT
Dieses Register dient der I/O-Erweiterung. Siehe Betriebssystembeschreibung!

53759

$d1ff


POKEY-Adressbereich

AUDIFREQ1 (W)

53760

$d200

AUDIFREQ2 (W)

53761

$d201

AUDIFREQ3 (W)

53762

$d202

AUDIFREQ4 (W)
Diese Register bestimmen die Frequenz der Tongeneratoren.

53763

$d203


AUDICNTL1 (W)

53764

$d204

AUDICNTL2 (W)

53765

$d205

AUDICNTL3 (W)

53766

$d206

AUDICNTL4 (W)
Diese Register steuern die einzelnen Tongeneratoren. Mit diesen Registern bestimmt man jeweils für einen Tongenerator die Lautstärke, Verzerrungen beziehungsweise den VOLUME_ONLY-Modus.

53767

$d207


POT0 (R)

53760

$d200

POT1 (R)

53761

$d201

POT2 (R)

53762

$d202

POT3 (R)

53763

$d203

POT4 (R)

53764

$d204

POT5 (R)

53765

$d205

POT6 (R)

53766

$d206

POT7 (R)
Diese Register enthalten den Wert der POTEingänge des POKEY. Bei den neuen AtariGeräten werden nur noch die POT-Eingänge 0 bis 3 verwendet, da auch nur noch zwei Joystick-Ports zur Verfügung stehen. Die vier verbleibenden Register beinhalten Kopien der ersten vier.

53767

$d207


AUDICOM (W)
Dieses Register steuert die Tonerzeugung im Atari. Mit diesem Register werden vor allem die Grundfrequenzen für die vier Tonkanäle eingestellt und Hochtonfilter ein- beziehungsweise ausgeschaltet.

53768

$d208


POTSTAT (R)
Mit diesem Register läßt sich bestimmen, ob für einen bestimmten POT-Eingang die AnalogDigital-Wandlung bereits abgeschlossen ist. Wenn ein Bit von POTSTAT '0' ist, bedeutet dies, daß der Wert des dazugehörigen POTEingang gültig ist. Die Bits sind folgendermaßen zugeordnet:

53768

$d208

	Bit 0 :        POT-Eingang 0
	Bit 1 :        POT-Eingang 1
	Bit 2 :        POT-Eingang 2
	  .              .
	  .              .
	Bit 7 :        POT-Eingang 7

STIMER (W)
Durch Ansprechen dieser Adresse in einem Schreibzugriff werden die Audio-FrequenzTeiler auf ihre "AUDIFREQ"-Werte zurückgesetzt.

53769

$d209


KBCODE (R)
Dieses Register enthält den Tastaturcode, das heißt, der Benutzer kann hier abfragen, welche Taste gedrückt ist (Schattenregister bei 764 beziehungsweise $2fc).

53769

$d209


SKSTATRES (W)
Durch Eintragen irgendeines Wertes in dieses Register werden die Bits 7,6 und 5 von SKSTAT gelöscht.

53770

$d20a


RANDOM (R)
Dieses Register enthält eine "quasi"-zufällige Zahl (8 Bit), die aus einem 17- beziehungsweise 9-Bit-Polynom-Zähler stammt.

53770

$d20a


POTGO (W)
Durch Eintragen irgendeines Wertes in dieses Register wird der Ablesevorgang der POTEingänge gestartet.

53771

$d20b


SEROUT (W)
Ausgaberegister der seriellen Schnittstelle.

53773

$d20d


SERIN (R)
Eingaberegister der seriellen Schnittstelle.

53773

$d20d


IRQEN (W)
Die Bits in diesem Register schalten die einzelnen Arten zur Auslösung eines IRQ ein beziehungsweise aus.

53774

$d20e


IRQSTAT (R)
Nach dem Auftreten eines IRQ kann man durch Abfragen dieses Registers die Herkunft der Unterbrechungsanforderung bestimmen.

53774

$d20e


SKCNTL (W)
Durch dieses Register lassen sich die einzelnen Betriebsmodi der seriellen Schnittstelle, der POT-Wert-Wandlung und der Tastatur-Abfrage wählen (Schattenregister bei 562 beziehungsweise $262).

53775

$d20f


SKSTAT (R)
Dieses Register enthält Angaben zum Status der seriellen Schnittstelle sowie der Tastatur. Die Bit 7,6 und 5 werden mit SKSTATRES (53770 beziehungsweise $d20a) zurückgesetzt.

53775

$d20f


PIA-Adressbereich

PORTA (R/W)
Übertragungsregister "A" der PIA.

54016

$d300


PORTB (R/W)
Übertragungsregister "B" der PIA.

54017

$d301


PORTACNTL
Steuer- und Statusregister für den PIA-Port "A".

54018

$d302


PORTBCNTL
Steuer- und Statusregister für den PIA-Port "B".

54019

$d303


ANTIC-Adressbereich

DMACNTL (W)
Mit diesem Register kann man den DMA des ANTIC steuern (Schattenregister bei 559 beziehungsweise $22f).

54272

$d400


CHARCNTL (W)
Mit diesem Register kann man das Aussehen der Zeichen in mehreren ANTIC-Modi beeinflußen (Schattenregister bei 755 beziehungsweise $2f3).

54273

$d401


DLPTRL

54274

$d402

DLPTRH
In diesen beiden Registern steht die 16-BitAdresse des ANTIC-Programms (Schattenregister bei 560/561 beziehungsweise $230/$231). Dies ist also der Zeiger auf das ANTIC-Programm.

54275

$d403


HSCROL (W)
Mit diesem Register bestimmt man, um wieviele Farbtakte ein bestimmter Teil des Bildes nach rechts verschoben werden soll. Zu verschiebende Zeilen müssen im ANTIC-Programm gekennzeichnet werden.

54276

$d404


VSCROL (W)
Mit diesem Register bestimmt man, um wieviele Bildzeilen ein bestimmter Teil des Bildes nach oben geschoben werden soll. Die zu verschiebenden Zeilen müssen im ANTIC-Programm gekennzeichnet werden.

54277

$d405


PMBASE (W)
In dieses Register bringt man die oberen acht Bits der Basisadresse des Speicherfeldes für die Player-Missile-Grafik.

54279

$d407


CHARBASE (W)
In dieses Register müssen die oberen 8 Bits der Basisadresse des Zeichengenerators gebracht werden (Schattenregister bei 756 beziehungsweise $2f4).

54281

$d409


WAITHSYNC (W)
Durch Ansprechen dieses Registers wird die CPU bis zum Beginn der nächsten Horizontalsynchronisation angehalten.

54282

$d40a


VCOUNT (R)
Dieses Register enthält die Nummer der Bildzeile, die gerade erzeugt wird, geteilt durch zwei.

54283

$d40b


LPENH (R)
Dieses Register enthält die Horizontalposition des Lightpens (Schattenregister bei 564 beziehungsweise $234).

54284

$d40c


LPENV (R)
Dieses Register enthält die Vertikalposition (Nummer der Bildzeile geteilt durch zwei) des Lightpens (Schattenregister bei 565 beziehungsweise $235).

54285

$d40d


NMIEN (W)
Mit diesem Register werden die Unterbrechungen bei der Vertikalsynchronisation und bei ANTIC-Programm-Unterbrechungen ein- beziehungsweise ausgeschaltet.

54286

$d40e


NMIST (R)
Nach dem Auftreten eines NMI kann man durch Abfragen dieses Registers die Herkunft der Unterbrechungsanforderung bestimmen.

54287

$d40f


NMIRES (W)
Durch Eintragen irgendeines Wertes in dieses Register wird NMIST wieder gelöscht.

54287

$d40f


CPU-Hardwarevektoren

NMIVKT

65530

$fffa

Nach einem NMI springt die CPU zu der Adresse, die sich in NMIVKT befindet (das niederwertige Byte steht an erster Stelle).

65531

$fffb


RESETVKT

65532

$fffc

Nach einem RESET springt die CPU zu der Adresse, die sich in RESETVKT befindet (das niederwertige Byte steht an erster Stelle).

65533

$fffd


IRQVKT

65534

$fffe

Nach einem IRQ springt die CPU zu der Speicherstelle, die sich in IRQVKT befindet (das niederwertige Byte steht an erster Stelle).

65535

$ffff