forked from mist64/c64ref
-
Notifications
You must be signed in to change notification settings - Fork 0
/
c64mem_64intern.txt
1255 lines (886 loc) · 44.7 KB
/
c64mem_64intern.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
- C64 RAM Map (64 intern)
-
- Baloui, Brückmann, Englisch, Felt, Gelfand, Gerits, Krsnik:
- Das neue Commodore-64-intern-Buch.
- Düsseldorf: Data-Becker, 1990.
- ISBN 3890113079
-
- OCRed and formatted by Michael Steil <[email protected]>
-
- Corrections (typos as well as content), translations etc.
- welcome at: https://github.com/mist64/c64ref
-
------------------------------------------------------------
-
# This plain text file is formatted so that it can be automatically
# parsed in order to create cross-references etc.
# * Lines starting with "-" is top-level information. The first line
# is the title. Lines starting with "--" are separators.
# * Lines starting with "#" are internal comments.
# * Hex addresses start at column 0.
# * Symbols start at column 13.
# * The description starts at column 21.
# * All lines of the description until the first blank line are
# combined into the heading.
# * A '.' character at the end of a heading line represents a hard
# line break.
# * The remaining text is in MarkDown format.
# * All addresses are 4 digits and have a leading '$'.
# The encoding is UTF-8.
$0000 D6510 Datenrichtungsregister für Prozessor-
Port
Bit 0 - 6; 0= Eingang 1= Ausgang
$0001 R6510 Prozessorport
Im Prozessorport kann man angeben,
welche Speicherbereiche ein- oder
ausgeschaltet werden.
Bitbeschreibung:
| | |
|-------|----------------------------------|
| Bit 0 | 1 = BASIC-ROM, 0= RAM |
| Bit 1 | 1 = KERNAL-ROM, 0= RAM |
| Bit 2 | 1 = I/O 0= Zeichensatz |
| Bit 3 | Datenausgabe von Datasette |
| Bit 4 | 0 = Taste bei Datasette gedrückt |
| | 1 = nicht gedrückt |
| Bit 5 | 1 = Motor an, 0= Motor aus |
Die Bits 6 und 7 sind unbenutzt und
immer 0
$0002 unbenutzt
$0003-$0004 ADRAY1 Vektor für Umwandlung von Fließkomma
nach Fest
Von diesen Adressen aus beginnt der
Interpreter, eine Gleitkommazahl in
eine ganze Zahl umzuwandeln. Der
Vektor deutet auf die Adresse $B1AA.
$0005-$0006 ADRAY2 Vektor für Umwandlung von Fest nach
Fließkomma
Diese Routine verwandelt eine ganze
Zahl in eine Fließkommazahl. Der
Zeiger steht auf $B391.
$0007 CHARAC Suchzeichen
Die Speicherzelle $0007 wird oft von
BASIC-Programmen als Suchzeiger für
Texteingaben verwendet.
$0008 ENDCHR Hochkomma-Flag
Während der Umwandlung von
BASIC-Befehlen in Tokens wird die
Speicherzelle $0008 als Zwischenspeicher
für BASIC-Texteingaben verwendet.
$0009 TRMPOS Speicher für Spalte beim TAB-Befehl
Nach der Ausführung von TAB oder SPC
wird die Cursorposition in der
Speicherzelle 9 zwischengespeichert.
$000A VERCK 0= LOAD, 1= Verify, Flag des Interpreters
Weil die Routine von LOAD und VERIFY
identisch ist, wird ein Flag benötigt,
um zu unterscheiden, ob ein LOAD oder
ein VERIFY-Vorgang ausgeführt worden
ist.
$000B COUNT Zeiger im Eingabepuffer, Anzahl der
Dimensionen
Die Speicherzelle $000B wird dazu
verwendet, die Anzahl der Dimensionen
zu berechnen. Außerdem wird noch die
Länge der Tokenzeile hier angegeben.
$000C DIMFLG Flag für DIM
Diese Speicherzelle wird benutzt, um
festzustellen, ob die Variable ein
Array oder schon eine dimensionierte
Variable ist.
$000D Typflag $00= numerisch, $FF= String
Das Flag zeigt dem BASIC-Interpreter
an, ob es sich um Zahlenwerte oder um
einen String handelt.
$000E INTFLG $80= Integer, $00= Real
Wenn eine Gleitkommazahl auftritt,
steht in der Speicherzelle $00, bei
einer ganzen Zahl eine $80.
$000F GARBFL Hochkommaflag bei LIST
Durch diese Speicherzelle wird beim
LIST-Befehl durch ein Hochkomma
erkannt, ob eine Textkette folgt.
Zusätzlich wird in dieser
Speicherzelle markiert, ob eine
Garbage Collection durchgeführt
werden muß oder nicht.
$0010 SUBFLG Flag für FN
Hier wird angezeigt, ob es sich um eine
Array-Variable oder um eine mit DEF FN
definierte Variable handelt.
$0011 INPFLG $00= INPUT, $40= GET, $98= READ
Diese Speicherzelle gibt an, in welche
Routine der BASIC-Interpreter
verzweigen soll.
$0012 TANSGN Vorzeichen bei ATN
Die Speicherzelle $0012 wird von den
trigonometrischen Funktionen zur
Bestimmung des Vorzeichens verwendet.
Zusätzlich dient die Speicherzelle $0012
als Vergleichsoperator für
Vergleichsoperationen.
$0013 CHANNL aktives I/O-Gerät $00= Direkteingabe
Die Speicherzelle $0013 wird als Zeiger
für die Peripheriegeräte wie Tastatur,
Datasette, RS232, User-Port,
Bildschirm, Drucker und Floppy
verwendet.
$0014-$0015 LINNUM Integer-Adresse z.B. Zeilennummer
In dieser Speicherzelle werden die
Zeilennummern von den Befehlen wie
ON..GOTO, GOTO, GOSUB, ON..GOSUB
und der Zeilenausgabe beim
LIST-Befehl gespeichert.
$0016 TEMPPT Zeiger auf Stringstack
Die Speicherzelle $0016 zeigt auf den
nächsten freien Speicherplatz im
Stringstack.
$0017-$0018 LASTPT Zeiger auf zuletzt verwendeten String
Der Inhalt dieser beiden Bytes zeigt
auf den zuletzt verwendeten
Speicherplatz.
$0019-$0021 TEMPST Stringstack
Die Angaben im Stringstack enthalten
die Stringlänge sowie die Anfangs-
und Endadressen des vorherigen
Strings.
$0022-$0025 INDEX Zeiger für diverse Zwecke
Diese Speicherzellen benutzt der
Interpreter, um verschiedene
Zwischenergebnisse zu speichern.
$0026-$002A RES Register für Funktionsauswertung und
Arithmetik
Diese Speicherzellen werden vom
BASIC-Interpreter auch zum Speichern
von Zwischenergebnissen bei der
Multiplikation und Division benutzt.
$002B-$002C TXTTAB Zeiger auf BASIC-Programm Anfang
Der Anfangsbereich des BASIC ist in
Low- und Highbyte angegeben. Man kann
durch die beiden Bytes den BASIC-Start
abfragen oder verändern.
$002D-$002E VARTAB Zeiger auf BASIC-Programmende
Dieser Zeiger teilt dem Interpreter
das BASIC-Ende mit, damit die
Variablen hinter dem Programm abgelegt
werden können.
$002F-$0030 ARYTAB Zeiger auf Start der Arrays
Das LOW- und HIGH-Byte der Adressen
geben dem BASIC-Interpreter die
Information, ab welcher Speicherzelle
die Arrays eines BASIC-Programms
gespeichert sind.
$0031-$0032 STREND Zeiger auf Ende der Datenfelder
Diese beiden Speicherzellen zeigen auf
das Ende der Arrays. Zu beachten ist,
daß die Zeichenketten rückwärts
gespeichert werden.
$0033-$0034 FRETOP Zeiger auf Stringgrenze
Der Inhalt dieser Speicherzellen
zeigt auf das Ende des Textspeichers,
der aber noch zugleich das obere Ende
des frei verfügbaren RAM-Bereichs
anzeigt.
$0035-$0036 FRESPC Hilfszeiger für Strings
In diesen Zellen wird die Adresse der
Zeichenkette verzeichnet, die als
letzte von Routinen zur
Stringmanipulation abgespeichert
worden ist.
$0037-$0038 MEMSIZ Zeiger auf BASIC-RAM-Ende
Dieser Zeiger gibt dem Interpreter an,
welches die höchste von BASIC
verwendbare Speicheradresse ist.
$0039-$003A CURLIN augenblickliche BASIC-Zeilennummer
In diesen Speicherzellen wird die
Zeilennummer verzeichnet, welche
gerade ausgeführt wird.
$003B-$003C OLDLIN Zeilennummer für CONT
Falls eine Unterbrechung des
Programmablaufs durch den Befehl STOP
oder über die STOP-Taste erfolgt,
wird in den Speicheradressen $003B-$003C
die Zeilennummer gespeichert, die
gerade abgearbeitet wurde.
$003D-$003E OLDTXT Zeiger auf nächstes Statement für CONT
Sobald eine neue BASIC-Zeile
verarbeitet wird, holt sich das
Betriebssystem die aktuelle
Zeilennummer und speichert diese dann
in $003D-$003E als LOW- und HIGH-Byte ab.
$003F-$0040 DATLIN augenblickliche Zeilennummer für DATA
Diese beiden Speicherzellen enthalten
die Zeilennummer einer DATA-Zeile, die
gerade vom READ-Befehl ausgelesen
wird.
$0041-$0042 DATPTR Zeiger für nächstes DATA-Element
Hier ist die Adresse aufgeführt, ab
welcher der READ-Befehl nach der
nächsten DATA-Zeile sucht.
$0043-$0044 INPPTR Zeiger auf Herkunft der Eingabe
Der Zeiger zeigt auf die jeweilige
Adresse in diesem Eingabepufferspeicher.
$0045-$0046 VARNAM Variablenname
Falls während des Ablaufs eines
Programms eine Variable auftaucht,
wird deren Name hier zwischengespeichert.
$0047-$0048 VARPNT Variablenadresse
In diesen Speicherzellen wird der
Zeiger auf den Variablenwert
abgelegt.
$0049-$004A FORPNT Zeiger auf Variablenelement
Die Adresse einer Schleifenvariable
wird zunächst hier gespeichert,
bevor sie in den Stack gebracht wird.
$004B-$004C VARTXT Zwischenspeicher für Programmzeiger
Diese Speicherzellen dienen als
Zwischenspeicher für mathematische
Operationen. Außerdem werden die
Speicherzellen auch noch vom
READ-Befehl als Zwischenspeicher
verwendet.
$004D OPMASK Maske für Vergleichsoperationen
Dieser Zeiger wird von mathematischen
Routinen als Vergleichsoperator
verwendet, daß heißt um festzustellen,
ob ein Wert kleiner, gleich oder
größer ist.
$004E-$004F Zeiger für FN
In $004E-$004F ist die Adresse angegeben,
wo die Variablen und ihr Wert abgelegt
sind.
$0050-$0052 Stringdescriptor
$0053 Schrittweite für Garbage Collection
$0054 Konstante $4C JMP für Funktionen
Hier ist die Konstante für JMP ($4C)
festgelegt.
$0055-$0056 Sprungvektor für Funktionen
In $0055-$0056 werden die Sprungvektoren
für die Funktionen angegeben.
$0057-$005B TEMPF1 Register für Arithmetik, Akku #3
Die Register werden für die
Zwischenspeicherung von
Polynomauswertungen (TAN) benÖtigt.
$005C-$0060 TEMPF2 Register für Arithmetik, Akku #4
siehe oben
$0061-$0066 FAC Fließkommaakku #1, FAC
Diese Register werden für die
Berechnung von Fließkommazahlen
verwendet.
$0066 FACSGN Vorzeichen von FAC
Der Zeiger gibt an, ob der Wert, der
im FAC steht, positiv oder negativ
ist.
$0067 SGNFLG Zähler für Polynomauswertung
Diese Speicherzelle dient als Zähler
für die Polynomauswertung.
$0068 BITS Rundungsbyte für FAC
Hier wird angegeben, ob der Wert, der
im FAC steht, auf- oder abgerundet
werden soll.
$0069-$006E Fließkommaakku#2, ARG
Diese Register werden für die
Berechnung von Fließkommazahlen
verwendet.
$006E ARGSGN Vorzeichen von ARG
Hier wird angegeben, ob der Wert, der
im ARG steht, positiv oder negativ ist.
$006F ARISGN Vergleichsbyte der Vorzeichen von FAC
und ARG
Diese Speicherzelle gibt dem
Interpreter an, ob die Vorzeichen der
beiden Akkus übereinstimmen.
$0070 FACOV FAC-Rundungsbyte
$0071-$0072 FBUFPT Zeiger für Polynomauswertung
Hier ist in LOW- und HIGH-Byte
angegeben, was ausgewertet werden
sol 1.
$0073-$008A CHRGET CHRGET-Routine
Diese Routine holt ein Zeichen aus dem
BASIC-Text.
$007A-$007B TXTPTR Programmzeiger
In diesen Speicherzellen wird in LOW-
und HIGH-Byte die Anfangsadresse des
als nächstes auszuführenden Befehls
im BASIC-RAM angegeben.
$008B-$008F RNDX letzter RND-Wert
In diesen Registern wird der letzte
RND-Wert im Fließkommaformat abgelegt.
$0090 STATUS Statuswort ST
In dieser Speicherzelle, die auch mit
der BASIC-Variable ST identisch ist,
sind die Fehlermeldungen der Datasette
und der Floppy verzeichnet:
| Bit | Datasette |
|-----|------------------|
| 0 | Unbenutzt |
| 1 | Unbenutzt |
| 2 | Kurzer Block |
| 3 | Langer Block |
| 4 | Lesefehler |
| 5 | Prüfsummenfehler |
| 6 | File-Ende |
| 7 | Band-Ende |
| Bit | Floppy |
|-----|--------------------------|
| 0 | Fehler beim Schreiben |
| 1 | Fehler beim Lesen |
| 2 | Unbenutzt |
| 3 | Unbenutzt |
| 4 | Unbenutzt |
| 5 | Unbenutzt |
| 6 | Daten-Ende |
| 7 | DEVICE NOT PRESENT ERROR |
$0091 STKEY Flag für STOP-Taste
In dieser Speicherzelle wird vermerkt,
ob die Stoptaste gedrückt worden ist
oder nicht.
$0092 SVXT Zeitkonstante für Band
Dieses Register hat die Aufgabe, kleine
Unterschiede bei der Aufnahmegeschwindigkeit
auszugleichen.
$0093 VERCK Flag für LOAD $00, oder für VERIFY $01
Dieses Flag dient dem Betriebssystem
dazu, um zu unterscheiden, ob eine
LOAD oder eine VERIFY Operation
erfolgt.
$0094 C3P0 Flag bei IEC-Ausgabe
Diese Adresse setzt bei Floppy und
Drucker den "LISTEN" Zustand.
$0095 BSOUR Ausgabepuffer für IEC-Bus
Hier wird das Zeichen abgelegt,
welches über den seriellen Port zur
Floppy oder zum Drucker geschickt
werden soll, sobald die Adresse $0094
Bereitschaft zeigt.
$0096 SYNO Flag für EOT vom Band empfangen
In $0096 werden die Daten
zwischengespeichert, die vom Band
gelesen werden.
$0097 XSAV Zwischenspeicher für Register
Beim Lesen von Band wird hier das
X-Register zwischengespeichert.
$0098 LDTND Anzahl der offenen Files
In dieser Speicherzelle wird
festgehalten, wie viele Files gleichzeitig
geöffnet sind.
$0099 DFLTN aktives Eingabegerät
In dieser Speicherzelle wird
festgehalten, welches Gerät zur
Eingabe verwendet werden soll.
Die Nummern sind folgendermaßen
festgelegt:
| | |
|------|---------------------|
| 0 | Tastatur |
| 1 | Datasette |
| 2 | RS232 und User-Port |
| 3 | Bildschirm |
| 4-5 | Drucker |
| 8-11 | Laufwerke |
$009A DFLTO aktives Ausgabegerät
Diese Speicherzelle ist mit der
vorherigen zu vergleichen, nur steht
hier die Nummer des Geräts, über das
die Ausgabe erfolgt.
$009B PRTY Parität für Band
Über diese Speicherzelle findet eine
Parity-Prüfung (Quersummenbildung)
statt. Dies dient dazu, um Lese- und
Schreibfehler zu vermeiden.
$009C DPSW Flag für Byte empfangen
Hier wird festgelegt, ob das gelesene
Byte die Quersumme richtig gebildet
hat oder nicht.
$009D MSGFLG Flag für Direktmodus $80, Programm $00
In dieser Speicherzelle wird
angegeben, welche Fehlermeldungen
zugelassen werden und welche nicht.
$00 unterdrückt alle Fehlermeldungen,
$80 kommt dem normalen Eingabemodus
gleich und $C0 läßt alle Fehlermeldungen
zu. Diese Zustände können
alle künstlich erzeugt werden.
$009E PTR1 Bandpass 1 Checksumme
Diese Speicherzelle wird zur
Überprüfung von Bytes bei Kassettenoperationen
benutzt.
$009F PTR2 Bandpass 2 Fehlerkorrektur
Hier werden die Fehler korrigiert,
die bei Kassettenoperationen aufgetreten
sind.
$00A0-$00A2 TIME Time
In diesen Speicherzellen wird die
Uhrzeit über die Interruptroutine
erhöht.
$00A3 R2D2 Bitzähler für serielle Ausgabe
Dieses Register wird als Zwischenspeicher
von Ein-/Ausgaberoutinen
benutzt.
$00A4 FIRT Zähler für Band
siehe oben
$00A5 CNTDN Zähler für Band schreiben
Diese Speicherzelle wird als Zähler
des Synchron-Bits verwendet.
$00A6 BUFPT Zeiger in Bandpuffer
Dieses Register wird als Zähler
benutzt, welcher angibt, wie viele
Bytes aus dem Bandpuffer gelesen
oder in den Bandpuffer geschrieben
worden sind.
$00A7-$00AB Arbeitsspeicher für Ein-/Ausgabe
Diese Register werden häufig von
Kassettenoperationen und der RS-232
Schnittstelle als Zwischenspeicher
benutzt.
$00AC-$00AD Zeiger für Bandpuffer und Scrolling
Diese Speicherzellen dienen in erster
Linie als Zeiger auf die Adresse, ab
welcher ein Programm geladen oder
gespeichert werden soll. Zweitens
dienen sie auch als Zwischenspeicher
während des Scrollings des Video-RAM
und beim Einfügen zusätzlicher Zeilen.
$00AE-$00AF Zeiger auf Programmende bei LOAD/SAVE
Ähnlich wie $00AC-$00AD funktionieren
diese beiden Speicherzellen. Sie
Zeigen immer auf das Byte, das gerade
gelesen oder gespeichert wurde.
$00B0-$00B1 Zeitkonstante beim Lesen von Band
Der Wert in den Speicherzellen wird
benutzt, um die Zeitkonstante beim
Lesen von Band einzustellen.
$00B2-$00B3 TAPE1 Zeiger auf Bandpuffer
Diese beiden Speicherzellen zeigen auf
den Bandpuffer ($033C)
$00B4 BITTS Bitzähler für Band
Hier wird die Anzahl der übertragenden
Bits gezählt.
$00B5 NXTBIT nächstes Bit für RS-232
Diese Speicherzelle enthält immer das
nächste Bit, das bei RS-232 Operationen
übertragen werden soll.
$00B6 RODATA Puffer für auszugebendes Byte
Dieses Register wird als Ausgabezwischenspeicher
benutzt.
$00B7 FNLEN Länge des Filenamens
In dieser Speicherzelle wird
angegeben, aus wie vielen Zeichen der
Filename besteht.
$00B8 LA logische Filenummer
In dieser Speicherzelle wird die
logische Filenummer verzeichnet.
$00B9 SA Sekundäradresse
Hier steht die jeweilige Sekundäradresse.
$00BA FA Gerätenummer
Entsprechend ist auch in dieser
Speicherzelle die Gerätenummer zu
finden.
$00BB-$00BC FNADR Zeiger auf Filenamen
In diesen Speicherzellen steht ein
Zeiger, der in LOW- und HIGH-Byte-
Darstellung auf den Filenamen zeigt.
$00BD ROPRTY Arbeitsspeicher serielle Ein-/Ausgabe
Hier wird von den RS-232-Routinen ein
Prüfbyte abgelegt (Parity-Prüfung).
$00BE FSBLK Passzähler für Band
In dieser Speicherzelle ist angegeben,
wie viele Blockteile von Band gelesen
oder auf Band geschrieben werden
sollen.
$00BF MYCH Puffer für serielle Ausgabe
Beim Laden eines Programms von Band
wird diese Speicherzelle dazu benutzt,
um die einzelnen Bits zu einem Byte
zusammenzusetzen.
$00C0 CAS1 Flag für Bandmotor
Der Motor der Datasette kann nur
eingeschaltet werden, wenn die
Speicherzelle ungleich Null ist.
$00C1-$00C2 STAL Startadresse für Ein-/Ausgabe
In diesen Registern ist in LOW- und
HIGH-Byte-Darstellung angegeben, ab
welcher Adresse ein Programm geladen
oder gespeichert wird.
$00C3-$00C4 MEMUSS Endadresse für Ein-/Ausgabe
Hier steht in LOU- und HIGH-Byte der
Zeiger auf den Tape-Header im
Bandpuffer.
$00C5 LSTX Nummer der gedrückten Taste
Hier wird die Nummer der gedrückten
Taste gespeichert (64= keine Taste).
$00C6 NDX Anzahl der gedrückten Tasten
Hier steht die jeweilige Anzahl der
Zeichen, die im Tastaturpuffer
gespeichert sind.
$00C7 RVS Flag für RVS-Modus
Diese Speicherzelle gibt an, ob die
auszugebenden Zeichen revers oder
normal dargestellt werden sollen
(0= normal, 1= revers).
$00C8 INDX Zeilenende für Eingabe
Dieses Register enthält die Position
des letzen Zeichens in einer Zeile.
$00C9 LSXP Cursorzeile für Eingabe
Diese Speicherzelle dient dazu, um die
Zeile des letzten eingegebenen Zeichens
festzustellen.
$00CA Cursorspalte für Eingabe
Diese Speicherzelle dient dazu, um die
Spalte des letzten eingegebenen
Zeichens festzustellen.
$00CB SFDX gedrückte Taste
Hier steht der jeweilige Code der
gedrückten Taste. (64= keine Taste).
$00CC BLNSW Flag für Cursor
Der Cursor wird ausgeschaltet, wenn
in dieser Speicherzelle ein größerer
Wert als Null steht.
$00CD BLNCT Zähler für Cursor blinken
Diese Speicherzelle dient als Zähler
für die Cursor-Blinkphase. Wenn der
Wert 20 in dieser Speicherzelle
abgezählt ist, wird der Cursor eingeschaltet.
$00CE GDBLN Zeichen unter dem Cursor
Hier ist jeweils der Bildschirmcode
eines Zeichens angegeben, das sich
gerade unter dem Cursor befindet.
$00CF BLNON Flag für Cursor
In diesem Register wird festgehalten,
in welcher Blink-Phase sich der Cursor
gerade befindet.
$00D0 CRSW Flag für Eingabe von Tastatur oder
Bildschirm
Hier wird die Länge der zu
übertragenden Zeichen gespeichert.
$00D1-$00D2 PNT Zeiger auf Start der Bildschirmzeile
In diesen Speicherzellen wird in LOW-
und HIGH-Byte-Darstellung angezeigt,
wo sich im Video-RAM die Zeile befindet,
auf der der Cursor gerade
steht.
$00D3 PNTR Cursorspalte
Hier wird die Spaltenposition des
Cursors festgehalten.
$00D4 QTSW Flag für Hochkommamodus
Falls in dieser Speicherzelle eine
Null steht, dann befindet sich der
Computer im Normalmodus. Andere
Werte bewirken den Hochkommamodus.
$00D5 LNMX Länge der Bildschirmzeile
Der Inhalt dieser Speicherzelle
entscheidet, ob eine neue Zeile
angefangen werden muß oder nicht.
$00D6 TBLX Cursorzeile
Hier wird die Zeilenposition des
Cursors festgehalten.
$00D7 DATA Speicher für ASCII-Tasten-Code
Bevor ein Zeichen in den
Tastaturpuffer gebracht wird, wird es
vorher hier zwischengespeichert.
$00D8 INSRT Anzahl der Inserts
Hier wird die Anzahl der Inserts
festgelegt.
$00D9-$00F2 LDTB1 MSB der Bildschirmzeilenanfänge
Alle 25 Speicherzellen enthalten
Informationen über die Zeilen des
Bildschirms.
$00F3-$00F4 USER Zeiger in Farb-RAM
Diese Speicherzellen zeigen auf die
Stelle im Farb-RAM, an der der Cursor
auf der Zeile steht.
$00F5-$00F6 KEYTAB Zeiger auf Tastatur-Dekodiertabelle
Diese Speicherzellen zeigen auf die
Tastatur-Dekodiertabelle.
$00F7-$00F8 RIBUF Zeiger auf RS-232 Eingabepuffer
Diese Register zeigen auf die
Anfangsadresse des Eingabepuffers.
$00F9-$00FA ROBUF Zeiger auf RS-232 Ausgabepuffer
Diese Register zeigen auf die
Anfangsadresse des Ausgabepuffers.
$00FB-$00FE unbenutzt
$00FF-$010A BASZPT Puffer für Umwandlung Fließkomma nach
ASCII
Diese Register werden für die
Zwischenspeicherung von Fließkommazahlen
benutzt.
$0100-$013E BAD Speicher für Korrektur bei Bandeingabe
Beim Laden von Band werden hier die
Daten zwischengespeichert, aus denen
das Betriebssystem erkennen kann,
welche Bytes fehlerhaft sind.
$013F-$01FF Prozessorstack
Der Stack ist generell ein
Zwischenspeicher, in dem der Programmierer
Daten ablegen kann. Außerdem
wird er vom Prozessor dazu
benutzt, bei einem Interrupt oder
einem Unterprogrammaufruf die
Adresse, von der aus verzweigt wurde,
zwischenzuspeichern. Dies geschieht in
der Reihenfolge HIGH- und LOW-Byte.
Die Daten werden im Stack von der
Adresse $01FF zur Adresse $0100 hin
abgelegt. Bei einem BREAK wird zusätzlich
der Prozessorstatus im Stack
abgelegt.
$0200-$0258 BUF BASIC-Eingabepuffer
Nach der Eingabe eines Befehls oder
einer Programmzeile werden diese
Daten in diesen Bereich zwischengespeichert,
um dann wieder weiterverarbeitet zu werden.
$0259-$0262 LAT Tabelle der logischen Filenummern
In dieser Tabelle werden die logischen
Filenummern der Reihe nach, von 1-10,
eingetragen. Beim Schließen einer
Datei werden diese Einträge wieder
entfernt.
$0263-$026C FAT Tabelle der Gerätenummern
Diese Tabelle entspricht $0259-$0262,
nur mit dem Unterschied, daß hier die
Geräteadressen vermerkt werden.
$026D-$0276 SAT Tabelle der Sekundäradressen
Diese Tabelle entspricht $0259-$0262,
nur mit dem Unterschied, daß hier die
Sekundäradressen vermerkt werden.
$0277-$0280 KEYD Tastaturpuffer
Hier werden die Tastencodes zwischengespeichert,
die nicht sofort vom
Betriebssystem weiterverarbeitet
werden können.
$0281-$0282 MEMSTR Start des BASIC-RAM
Nach einem Reset oder einem Kaltstart
wird dieser Zeiger auf den nächsten
freien Speicherplatz gesetzt.
$0283-$0284 MEMSIZ Ende des BASIC-RAM
Dieser Zeiger wird nach einem Reset
oder einem Kaltstart auf den letzten
verfügbaren freien RAM-Speicherplatz
gesetzt.
$0285 TIMOUT Timeout-Flag für seriellen IEC-Bus
Alle Zähler in dieser Speicherzelle,
die größer als 128 sind, bedeuten, daß
ein Gerät angeschlossen ist. Die
kleineren Werte bedeuten das
Gegenteil.
$0286 COLOR augenblickliche Farbe
Hier wird die augenblickliche
Zeichenfarbe festgelegt:
| | |
|----|------------|
| 0 | schwarz |
| 1 | weiß |
| 2 | rot |
| 3 | lila |
| 4 | purpur |
| 5 | grün |
| 6 | blau |
| 7 | gelb |
| 8 | orange |
| 9 | braun |
| 10 | hellrot |
| 11 | dunkelgrau |
| 12 | mittelgrau |
| 13 | hellgrün |
| 14 | hellblau |
| 15 | hellgrau |
$0287 GDCOL Farbe unter dem Cursor
In dieser Speicherzelle merkt sich das
Betriebssystem, welche Farbe gerade
unter dem Cursor steht.
$0288 HIBASE HIGH-Byte Video-RAM
Dieses HIGH-Byte gibt dem Betriebssystem an,
ab welcher Adresse das Video-RAM zu finden
ist.
$0289 XMAX Länge des Tastaturpuffers
Dieses Register gibt an, wie viele
Speicherzellen des Tastaturpuffers
belegt werden sollen.
$028A RPTFLG Flag für Repeatfunktion für alle
Tasten
In dieser Speicherzelle wird dem
Betriebssystem angegeben, welche Tasten
eine Repeat-Funktion haben und welche
nicht:
| | |
|-----|-------------------------------------------|
| 0 | nur Cursor-, Insert/Delete- und Leertaste |
| 64 | keine Taste |
| 128 | alle Tasten |
$028B KOUNT Zähler für Repeatgeschwindigkeit
Diese Speicherzelle dient als Zähler,