Die Speicherorganisation des PC-1403


Index


Der Programmspeicher



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 = Stringarray, 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:

BitSymbol
0ht (jap. Symbole)
1/|\ (jap. Symbol)
2SML
3STAT
4MATRIX
5rechts von PRO
6links von CAL
7-

Die Sonderzeichen BUSY, RUN, PRO, CAL, SHIFT, HYP, DEF werden im Byte 12349 oder 12605 angesteuert:

BitSymbol
0BUSY
1DEF
2SHIFT
3HYP
4PRO
5RUN
6CAL
7-

Die Sonderzeichen E, M, ( ), DE, G, RAD und PRINT werden im Byte 12412 oder 12668 angesteuert:

BitSymbol
0E
1M
2( )
3RAD
4G
5DE
6PRINT
7-



Systembereich:

-Systemvariablen (je 8 Byte lang):
VarAdresseHBLB
Z6427225116
Y6428025124
X6428825132
W6429625140
V6430425148
U6431225156
T6432025164
S6432825172
R6433625180
Q6434425188
P6435225196
O64360251104
N64368251112
M64376251120
L64384251128
K64392251136
J64400251144
I64408251152
H64416251160
G64424251168
F64432251176
E64440251184
D64448251192
C64456251200
B64464251208
A64472251216
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:

LBHBBedeutung
6528165282Zeigt auf das 255 vor dem BASIC-Speicher
6528365284Zeigt auf das 255 nach dem BASIC-Speicher
6528565286Zeigt auf den zuletzt mit MERGE hinzugefügten Block
6528765288Zeigt auf den selbstdefinierten Variablenbeginn
65290bis 65296Passwort 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
6531265313Zeigt direkt auf die Speicherstelle nach dem zuletzt ausgeführten BASIC-Befehl
65200bis 65279Ein-/Ausgabepuffer 80 Bytes
65120bis 65143Anzeigepuffer des Displays in ASCII-Codes
6535165352WAIT Intervall
6532465325BASIC Data-Pointer
65298-Drucker an: Bit 3 gesetzt
6530865309Variablenende Pointer
64864bis ??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

AdresseBeschreibung
1208Display anschalten, so dass POKE und PRINT sichtbar bleiben
1226 oder 16522Rechner ausschalten (mit BRK/ON wieder an!)
1200Kurzer BEEP
1248Zirpen
16384Umschalten in HEX CAL Modus
0Reset
16540CAL Modus




Copyright © Simon Lehmayr (Teile dieser Seite sind mit Hilfe von Laurent Duveau entstanden)
Wenn diese Seite ohne Navigation angezeigt wird, hier klicken.
Impressum