★ APPLICATIONS ★ PROGRAMMATION ★ Reloc ★ |
Reloc (CPC Amstrad International) | Applications Programmation |
Reloc ist ein Programm für jeden der sich schon geärgert hat, daß zwei seiner Maschinenspracheprogramme in dem selben Speicherbereich liefen, so daß er sie nicht zusammen verwenden konnte. Was nützten z.B. die besten Grafik-RSX-Routinen, wenn die Hardcopyroutine den gleichen Speicherbereich braucht. Um flexibel zu sein, braucht man relocalisierbare Programme, die in jede Adresse geladen und von dort aus gestartet werden können. Dies bedeutet aber mühselige Arbeit, wenn das alles mit der Hand geschehen soll, um im Assemblerquellcode eine Tabelle für jeden Label anzulegen und außerdem zwei Bytes mehr, pro Label. Reloc legt die Tabelle selbst an und braucht auch nur ca. 1 Byte pro Label. So wird Reloc benutzt:
Das wird so gemacht: l=lcrdeadresse (z.B.himem-Länge) call 1 Nun kann man wenn man unbedingt Speicherplatz sparen will, eingeben: memory1+Tabellenende. Wenn man dies ausgeführt hat, muß man jetzt jedoch: call 1 call 1+ zweite Ansprungadresse verwenden. Es ist auch möglich, ein kleines Ladeprogramm zu schreiben, der dies automatisch macht. Es könnte für eine RSX Erweiterung so aussehen (falls als Ansprungadresse für Reloc die RSX Initialisierungsroutine angegeben wurde): 10 input"Ladeadresse (Enter = höchst möglich)";a$ GesammtLänge + 1 else la=val(a$) 30 memory la-1 Das Programm ist in der Lage bis zu 16 kByte Code zu verarbeiten. Es können nur dann Fehler auftreten, wenn die Quellprogramme auch im Assemblertext nicht relocalisierbar wären: wenn Absolutadressen im Programm getrennt als high und low Byte verarbeitet werden.
|