| Der Kopf einer RSX |
|---|
SERIAL: db 0,0,0,0,0,0 ;BDOS-Seriennummer
START: jp RSXStart ;Sprung zum Beginn des RSX-Codes
NEXT: jp $-$ ;Sprung zum START des folgenden Moduls
;(Adresse wird vom Lader eingesetzt)
PREV: dw 0 ;Platzhalter fuer die Adresse des
;vorhergehenden RSX-Moduls
REMOVE: db 0ffh ;'Remove'-Merker
NONBANK:db 0 ;'Nonbank'-Merker
NAME: db 'RSX Name' ;Name des RSX-Modules
LOADER: db 0 ;0FFh markiert den Lader
RESERVE:dw 0 ;reserviert
RSXstart: ;Hier folgen die RSX-Routinen
.
.
.
|
| Aufbau einer .RSX- aus einer .PRL-Datei |
|---|
(1) PRL Kopf - 256 Bytes
DB 0 ;Immer 0
DW Bytes ;Anzahl der Bytes im RSX-Programm. Diese
;umfassen den Code und initialisierte
;Gruppen von Daten.
DB 0 ;Immer 0
DW BSS ;Anzahl reservierter Bytes von nicht
;initialisierten Daten.
;Immer 0 in einer OVL Datei.
DB 0
DW Ladead ;Ladeadresse. Hier immer 0.
DB 0
DW CSBASE ;BIOS Link. Immer 0, außer Link-80 mit
;der Option [B] angewendet wird. Dann ist das
;die Basisadresse für die Code-Gruppe.
DS 244 ;Unbenutzt.
(2) Code / Daten
Dem Kopf folgen die Bytes für Code und Daten.
In PRL-Dateien wird der Code assembliert für die Ladeadresse 0100h.
(3) Verschiebe-Bitmap
Es folgen dann ((Bytes + 7) / 8) Bytes einer Verschiebe-Bitmap
(einem Byte in der Bitmap entsprechen 8 Bytes in der Datei).
Bit 7 entspricht dem niedrigsten und Bit 0 dem höchsten Byte.
Daher entspricht Bit 7 des ersten Bytes in der Bitmap dem ersten Byte im
PRL-Kopf.
Wenn ein Bit in der Bitmap gesetzt ist, dann ist das Byte in der Datei
verschiebbar. Für eine PRL-Datei, deren Kopf nach hexadezimal xx00
geladen wurde, gilt, dass zu dem verschiebbaren Byte hex xx addiert
werden muss.
In der Praxis wird der Kopf verworfen, so dass eine andere Formel gilt:
wenn das erste Byte des Codes oder der Daten bei xx00 liegt,
dann muss xx-1 zum verschiebbaren Byte addiert werden.
|
| GENCOM KOPF |
|---|
Offset Umfang Bedeutung
------ ------ -----------
00H 01H 'C9H' kennzeichnet GENCOM-Kopf
01H 02H Länge des Original-COM-Programms,
beginnend bei Offset 0100H
03H 0AH Initialisierungsroutine im Kopf.
Wird mit RET beendet
0DH 01H Loader flag
0EH 01H ---
0FH 01H Anzahl von RSXen, max 15
10H 10H Rekord der ersten RSX
20H 10H Rekord der zweiten RSX
30H 10H usw.
(Eine Initialisierungsroutine wird erzeugt mit
|