Die Speicherorganisation des PC-1475


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
Das Byte 254 im Datenbereich einer Zeile markiert einen Befehl, der durch das folgende Byte bestimmt wird!

Variablenaufbau (DIM):

7 Bytes (a,b,c,d,e,f,g), Daten
In 65502*256+65501 wird die Startadresse der Variablen gespeichert.
Hinterste von Variablen belegte Speicherstelle: 63951
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: Die Bytes werden hier mit a-g bezeichnet.
G$(5,5)*3
a: 71 = G: Variablenname
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 2 Zeilen mit ihren 24 Zeichen kann folgendermaßen angesteuert werden: 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.

  SHARP  PC-1475

10240 bis 10299
10496 bis 10555
Die ersten 12 Zeichen (je 5 Byte) der 1. Zeile
10304 bis 10363
10560 bis 10619
Die ersten 12 Zeichen (je 5 Byte) der 2. Zeile
10752 bis 10811
11008 bis 11067
Die zweiten 12 Zeichen (je 5 Byte) der 1. Zeile
10816 bis 10875
11072 bis 11131
Die zweiten 12 Zeichen (je 5 Byte) der 2. Zeile

Die Sonderzeichen BATT, (), HYP, RSV, PRO, RUN und CAL werden im Byte 10300 oder 10556 angesteuert:

BitSymbol
0BATT
1()
2HYP
3RSV
4PRO
5RUN
6CAL
7-

Die Sonderzeichen BUSY, DEF, SHIFT und DBL werden im Byte 10301 oder 10557 angesteuert:

BitSymbol
0BUSY
1DEF
2SHIFT
3DBL
4-
5-
6-
7-

Die Sonderzeichen E, M, RAD, G, MATRIX, STAT und PRINT werden im Byte 10364 oder 10620 angesteuert:

BitSymbol
0E
1M
2RAD
3G
4MATRIX
5STAT
6PRINT
7-

Die Sonderzeichen µt, /|\, SML und DE werden im Byte 10365 oder 10621 angesteuert:

BitSymbol
0µt (jap. Symbole)
1/|\ (jap. Symbol)
2SML
3DE
4-
5-
6-
7-



Systembereich:




-Systemvariablen (je 8 Byte lang):
VarAdresseHBLB
Z63952249208
Y63960249216
X63968249224
W63976249232
V63984249240
U63992249248
T640002500
S640082508
R6401625016
Q6402425024
P6403225032
O6404025040
N6404825048
M6405625056
L6406425064
K6407225072
J6408025080
I6408825088
H6409625096
G64104250104
F64112250112
E64120250120
D64128250128
C64136250136
B64144250144
A64152250152
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!

-  Reservemodedaten: 65343:A:erster Reserveeintrag, ASC (alphabetische Nummer) markiert (A=1,S=19,D=4,...,' '=27,'='=28), dann Datenblock ohne Endcode Chr(13)! Beispiel: [1,254,34],[19,...],...
Reihenfolge:ASDFGHJKL'='' 'MNBVCXZ, leere Einträge werden nicht abgespeichert (auch nicht der Startcode 1-26!)

-  Systemadressen:

LBHBBedeutung
&FFD7&FFD8Zeigt auf das 255 vor dem BASIC-Speicher
&FFD9&FFDAZeigt auf das 255 nach dem BASIC-Speicher
&FFDB&FFDCZeigt auf den letzten mit MERGE hinzugefügten Block
&FF31-EOT Code (SIO)
&FF32-Baudrate (SIO)
&FF33-F/F Schnittstellenzustand
&FD04-Eingabepuffer Pointer
&FFDD&FFDEVariablenpointer
&FF34-CONSOLE Wert
&2A7E
oder
&2B7E
&2A7F
oder
&2B7F
WAIT Counter
&FFDD&FFDEVariablenpointer
&FF02-ASCII Code des am Cursor blinkenden Zeichens
&FF00&FF01Adresse des blinkenden Zeichens im Displayspeicher
&FFF6&FFF7Beginn der RAM-Karte
&FFF8&FFF9Ende der RAM-Karte
&FE80bis &FEAFDisplayinhalt im ASCII-Format
&FD20bis &FD6FEingabepuffer
&FDCD&FDCEBASIC Data Pointer
&FC90bis &FCDFZeichenkettenspeicher

-  Das ROM: Der PC-1475 hat ein ROM, das das Betriebssystem enthält. Das ROM der CPU liegt bei &0000 bis &1FFF, der Bankbereich von &4000 bis &7FFF. Wenn man die Systemaufrufe kennt, kann man sie in die eigenen Programme einbauen!




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