Das Schneider CPC Systembuch

Das Betriebssystem des Schneider CPC

Basic und Maschinencode

RSX-Loader

Alle Programmpakete, die RSX-Befehle beinhalten (die meisten anderen aber auch) müssen initialisiert werden, bevor sie benutzt werden können. Danach lässt sich das gesamte Programmpaket in die zur Verfügung gestellten Routinen und in die nun nutzlose Initialisierungsroutine trennen. Die Initialisierungsroutine wird normalerweise nicht mehr benötigt (und darf in aller Regel kein zweites Mal aufgerufen werden). Der Platz, den sie beansprucht, kann also vom Vordergrundprogramm (Einleitung: BASIC
Anhang: Basic
Basic
) wieder für andere Zwecke benutzt werden.

Es ergibt sich somit folgender Ablauf, bis ein Utility eingebunden ist:

Speicherplatz reservieren (über Die Aufteilung des RAM durch den Basic-Interpreter: Chaos über HIMEMHIMEM)
Maschinencode laden
Initialiseren (Aufruf einer Adresse, meist das erste Datentypen: Bytes
Datenbreite: Bytes
Byte
) Den überflüssigen Speicherplatz reklamieren (Die Aufteilung des RAM durch den Basic-Interpreter: Chaos über HIMEMHIMEM wieder etwas hochsetzen)

Um den verfügbaren Speicherplatz im Computer optimal zu nutzen, muss man für jedes Hilfsprogramm dessen Länge mit und ohne Initialisierungsroutine kennen. Trotzdem ist es ein recht mühsames Geschäft. Nur 'auf Verdacht' wird man da kein einziges zusätzliches Programm einladen.

Das folgende Basic-Programm erleichtert die ganze Sache aber erheblich. Wenn man dieses Programm zusammen mit allen RSX-Erweiterungen auf eine Diskette abspeichert, kann man alle gewünschten Routinen menügesteuert einladen und initialisieren lassen.

100 Die Kodierung der Tintennummern in den Bildschirm-Bytes: Mode 2:
Die Kodierung der Tintennummern in den Bildschirm-Bytes: Mode 1:
Die Kodierung der Tintennummern in den Bildschirm-Bytes: Mode 0:
MODE
1 110 PRINT 120 PRINT "************ RSX-BINDER ************ 130 PRINT 140 PRINT " (c) G.Woigk Erklärung zu den Anschlüssen: Vcc und Vss
Erklärung zu den Anschluss-Bezeichnungen: Vcc und Vss
vs
.: 22.4.86 150 PRINT 160 ' 170 WINDOW 1,40,6,25 180 CLOSEIN:CLOSEOUT:SYMBOL AFTER 256:adr=Die Aufteilung des RAM durch den Basic-Interpreter: Chaos über HIMEMHIMEM+1:MEMORY 10000 190 ' 200 ' Arbeite alle Datazeilen ab: 210 ' 220 ON ERROR GOTO 610 ' -> DATA exhausted -> fertig. 230 WHILE 1 240 Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: RD und WR - read und write
Erklärung zu den Anschluss-Bezeichnungen: RD - Read
READ
n$,anfang,start,ende 250 PRINT adr;">>> "; 260 GOSUB 310:IF Operationen: BD5B / 349A / 349A: FLO SUBa$="J" THEN GOSUB 390 270 WEND 280 ' 290 ' Eingabe von 'J' oder 'N' 300 ' 310 PRINT LEFT$((n$+" "),8);" (J/N) ? "; 320 Operationen: BD5B / 349A / 349A: FLO SUBa$="" 330 WHILE INSTR(" JN",Operationen: BD5B / 349A / 349A: FLO SUBa$)<2 340 Operationen: BD5B / 349A / 349A: FLO SUBa$=UPPER$(INKEY$) 350 WEND 360 PRINT Operationen: BD5B / 349A / 349A: FLO SUBa$ 370 RETURN 380 ' 390 ' INITIALISIEREN EINER ROUTINE 400 ' 410 ' n$ = Name der Routine 420 'anfang = Adresse des 1. Datentypen: Bytes
Datenbreite: Bytes
Bytes
(laut ORG-Anweisung im Assembler) 430 ' ende = Adresse des letzten Datentypen: Bytes
Datenbreite: Bytes
Bytes
+ 1 440 ' start = Adresse des ersten Datentypen: Bytes
Datenbreite: Bytes
Bytes
, das nach der Initialisierung 450 ' der Routine bestehen bleiben muss. 460 ' 470 IF adr+start-ende<&4000 THEN PRINT"** Speicher voll !! **";CHR$(7) : RETURN 475 ' 480 adr=adr+anfang-ende ' Speicher reservieren 490 LOAD n$,adr ' Mcode laden 500 Maschinencode über HIMEM: CALLCALL adr ' initialisieren 510 adr=adr+start-anfang ' Anteil der init-routine wieder vergessen 520 RETURN 530 ' 540 ' Progname.Ext Anfang Start Ende 545 ' 550 DATA "LINECOPY.BIN" , &9c40 , &9cdd , &9f14 560 DATA "GRACOM .BIN" , &7530 , &75DF , &786D 570 DATA "RIBBON .BIN" , &7530 , &765LOW KERNEL JUMPBLOCK: 000E: LOW PCBC INSTRUCTION
LOW KERNEL JUMPBLOCK: 001E: LOW PCHL INSTRUCTION
e
, &79fc 580 DATA "SQR .BIN" , &7530 , &757LOW KERNEL JUMPBLOCK: 000E: LOW PCBC INSTRUCTION
LOW KERNEL JUMPBLOCK: 001E: LOW PCHL INSTRUCTION
e
, &75d9 590 ' 600 ' 610 RESUME 620 620 MEMORY adr-1 630 NEW

Valid HTML   Valid CSS