|
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: BasicBasic) 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: BytesByte)
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 Vssvs.: 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 - ReadREAD 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: BytesBytes (laut ORG-Anweisung im Assembler)
430 ' ende = Adresse des letzten Datentypen: Bytes Datenbreite: BytesBytes + 1
440 ' start = Adresse des ersten Datentypen: Bytes Datenbreite: BytesBytes, 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 INSTRUCTIONe , &79fc
580 DATA "SQR .BIN" , &7530 , &757LOW KERNEL JUMPBLOCK: 000E: LOW PCBC INSTRUCTION LOW KERNEL JUMPBLOCK: 001E: LOW PCHL INSTRUCTIONe , &75d9
590 '
600 '
610 RESUME 620
620 MEMORY adr-1
630 NEW
| |