Die Speicherorganisation des PC-1403
Index
Der Programmspeicher

- Der Programmspeicher beginnt bei 32768 und endet bei 65535. Der restliche Speicher gehört dem Betriebssystem, wie Display, Schnittstellen und Hauptprogramm!
- Die erste
BASIC-Zeile beginnt bei 32817. Man kann diese Position selber einstellen und nach hinten schieben, um Platz für Daten zu machen. Die Speicherstellen 65281 und 65282 legen diese Position fest: PEEK 65281+256* PEEK 65282 = Startadresse. An dieser
Adresse muss ein
Byte mit dem Wert 255 stehen, danach kommt die erste Zeile.
- Das Ende des BASIC-Speichers wird ebenfalls mit einem 255 markiert. Dessen Adresse steht in dem
Pointer bei 65283 und 65284.
- Adresse des Schlusszeichens = PEEK 65283+ 256* PEEK 65284
Zeilenaufbau:
3
Bytes (x,y,z), Datenbytes, Return (Chr 13)
x,y: Zeilennummer = x*256+y
z: Länge des Datenblocks (Return zählt mit!)
Ende des Programms mit 255 markiert
Ein Byte mit dem
ASCII-Code >= 128 im Datenbereich einer Zeile markiert einen BASIC-Befehl, der durch den Code bestimmt wird!
Ein Byte mit dem Code 239 bedeutet ebenfalls einen BASIC-Befehl, der dann durch das nachfolgende Byte bestimmt wird!
Unbekannte Befehle stellt der Pocketcomputer als ~ dar.
Variablenaufbau (DIM):
7 Bytes (a,b,c,d,e,f,g), Daten
In PEEK 65287+256* PEEK 65288 wird die Startadresse der
Variablen gespeichert.
Variablen werden von hinten her definiert, d.h. wenn eine Variable definiert wird, kommt sie an die hinterste Stelle. Jede weitere kommt dann davor. Die Startadresse zeigt auf den
Header der neuesten Variable.
Variablen lassen sich auch per POKE umbenennen!
Headeraufbau:
7 Bytes groß
Beispiel:
G$(5,5)*3
a: 71 = Variablenname, hier G
b: 160 =
String
c: 0 = 1.Byte * 256
d: 111 = + 2.Byte = Gesamtgröße + 3 (wegen Dimensionierungsangaben)
e: 5 = Dim 5
f: 5 = , 5
g: 3 = * 3
DATEN:71= 1. Zeichen Daten
Bedeutung des 2. Headerbytes:
1-26 = String
array, 2 stellig mit 2. Zeichen CHR (Byte+64)
193-218 = Zahlarray, 2 stellig mit 2. Zeichen CHR (Byte-128)
129-154 = String, 2 stellige Standardvar. (wie NE$="test") immer 16 Zeichen lang
65-90 = Zahl, 2 stellige Standardvar. (wie AA=0) immer 8 Bytes lang
128: einstelliges Zahlarray
160: einstelliges Stringarray
Daten einer Variable:
Strings enthalten jedes Zeichen im
ASCII-Format, wobei Chr(0) das Ende des Strings bedeutet. Das Chr(0) fällt weg, wenn der String die als maximal angegebene Länge hat.
Zahlen werden im sog.
BCD-Format codiert, wobei jede Zahl 7 Bytes belegt.
Bei
Feldern folgen die einzelnen Daten ohne Trennzeichen aufeinander. Die Position rechnet das System anhand der
Headerangaben aus.
Wenn ein zweidimensionales Feld angelegt wurde, folgen die Felder ebenfalls nacheinander. Beispiel: DIM B$(1,2)*1: B$(0,0) B$(0,1) B$(0,2) B$(1,0) B$(1,1) B$(1,2)
Zugriff auf das Display:
Die Zeile mit ihren 24 Zeichen kann folgendermaßen angesteuert werden: Während der BASIC-Abarbeitung wird das Display jedoch abgeschaltet. Mit CALL 1208 kann man es anschalten, um Manipulationen sichtbar zu machen. Das Display ist in Zeichen unterteilt, jedes Zeichen hat 5 Bytes. Jedes Zeichen hat 5*7 Pixel: Deshalb entsprechen die ersten 7 Bits eines Bytes den 7 Pixeln Höhe. Die Zeichen können auch 256 Bytes weiter hinten angesteuert werden!
 |
SHARP PC-1403H
1: 12288..12292
|
2: 12293..12297
|
3: 12298..12302
|
4: 12303..12307
|
5: 12308..12312
|
6: 12313..12317
|
7: 12333..12337
|
8: 12338..12342
|
9: 12343..12347
|
10: 12318..12322
|
11: 12323..12327
|
12: 12328..12332
|
13: 12396..12392 *
|
14: 12391..12387 *
|
15: 12386..12382 *
|
16: 12411..12407 *
|
17: 12406..12402 *
|
18: 12401..12397 *
|
19: 12381..12377 *
|
20: 12376..12372 *
|
21: 12371..12367 *
|
22: 12366..12362 *
|
23: 12361..12357 *
|
24: 12356..12352 *
|
*) Diese Zeichen werden rückwärts gezeichnet!
|
Die Sonderzeichen SML, MATRIX, STAT und die zwei links und rechts von CAL und PRO werden im Byte 12348 oder 12604 angesteuert:
Bit | Symbol |
0 | ht (jap. Symbole) |
1 | /|\ (jap. Symbol) |
2 | SML |
3 | STAT |
4 | MATRIX |
5 | rechts von PRO |
6 | links von CAL |
7 | - |
Die Sonderzeichen BUSY, RUN, PRO, CAL, SHIFT, HYP, DEF werden im Byte 12349 oder 12605 angesteuert:
Bit | Symbol |
0 | BUSY |
1 | DEF |
2 | SHIFT |
3 | HYP |
4 | PRO |
5 | RUN |
6 | CAL |
7 | - |
Die Sonderzeichen E, M, ( ), DE, G, RAD und PRINT werden im Byte 12412 oder 12668 angesteuert:
Bit | Symbol |
0 | E |
1 | M |
2 | ( ) |
3 | RAD |
4 | G |
5 | DE |
6 | PRINT |
7 | - |
Systembereich:
- | Systemvariablen (je 8 Byte lang):
Var | Adresse | HB | LB |
Z | 64272 | 251 | 16 |
Y | 64280 | 251 | 24 |
X | 64288 | 251 | 32 |
W | 64296 | 251 | 40 |
V | 64304 | 251 | 48 |
U | 64312 | 251 | 56 |
T | 64320 | 251 | 64 |
S | 64328 | 251 | 72 |
R | 64336 | 251 | 80 |
Q | 64344 | 251 | 88 |
P | 64352 | 251 | 96 |
O | 64360 | 251 | 104 |
N | 64368 | 251 | 112 |
M | 64376 | 251 | 120 |
L | 64384 | 251 | 128 |
K | 64392 | 251 | 136 |
J | 64400 | 251 | 144 |
I | 64408 | 251 | 152 |
H | 64416 | 251 | 160 |
G | 64424 | 251 | 168 |
F | 64432 | 251 | 176 |
E | 64440 | 251 | 184 |
D | 64448 | 251 | 192 |
C | 64456 | 251 | 200 |
B | 64464 | 251 | 208 |
A | 64472 | 251 | 216 |
Das erste Byte jeder Variable ist entweder CHR 245 bei String oder CHR 0 bei Zahlen. Wenn die Variable kürzer als 7 Zeichen ist, markiert ein Chr(0) den Schluss!
|
- | Systemadressen:
LB | HB | Bedeutung |
65281 | 65282 | Zeigt auf das 255 vor dem BASIC-Speicher |
65283 | 65284 | Zeigt auf das 255 nach dem BASIC-Speicher |
65285 | 65286 | Zeigt auf den zuletzt mit MERGE hinzugefügten Block |
65287 | 65288 | Zeigt auf den selbstdefinierten Variablenbeginn |
65290 | bis 65296 | Passwort im ASCII-Code |
65367 | - | Eingabepuffer: Die letzte gedrückte Taste |
65299 | - | 2: WAIT angeschaltet, 6: WAIT aus |
65300 | - | 0-31: Passwort inaktiv, 32-63 Passwort aktiv |
65312 | 65313 | Zeigt direkt auf die Speicherstelle nach dem zuletzt ausgeführten BASIC-Befehl |
65200 | bis 65279 | Ein-/Ausgabepuffer 80 Bytes |
65120 | bis 65143 | Anzeigepuffer des Displays in ASCII-Codes |
65351 | 65352 | WAIT Intervall |
65324 | 65325 | BASIC Data-Pointer |
65298 | - | Drucker an: Bit 3 gesetzt |
65308 | 65309 | Variablenende Pointer |
64864 | bis ?? | PRINT/PAUSE Zwischenablage |
|
- | Das ROM:
Der PC-1403 hat ein ROM, das das Betriebssystem enthält.
Das ROM der CPU liegt bei &0000 bis &1FFF, der Rest in Bänken bei &4000 bis &7FFF.
Wenn man die Systemaufrufe kennt, kann man sie in die eigenen Programme
einbauen!
CALL-Adressen
Adresse | Beschreibung |
1208 | Display anschalten, so dass POKE und PRINT sichtbar bleiben |
1226 oder 16522 | Rechner ausschalten (mit BRK/ON wieder an!) |
1200 | Kurzer BEEP |
1248 | Zirpen |
16384 | Umschalten in HEX CAL Modus |
0 | Reset |
16540 | CAL Modus |
|
Copyright © Simon Lehmayr (Teile dieser Seite sind mit Hilfe von Laurent Duveau entstanden)
Wenn diese Seite ohne Navigation angezeigt wird, hier klicken.
Impressum