000
17.12.2022, 17:10 Uhr
kaiOr
|
Hallo,
ich habe mal eine seltsame Frage. Kann ein U880-Programm alle Spuren verwischen und gleichzeitig an eine neue Wunschadresse springen? Hier und da braucht man ja eine Hilfsroutine (Segmente jonglieren, Entpacker...). Davon bleiben dann immer irgendwelche Fragmente im RAM (oder gar Bildspeicher) zurück oder man müsste an neuer Stelle nacharbeiten. Die neue Stelle gehört aber vielleicht garnicht zum eigenen Programm/Wirkbereich.
Negativ-Beispiel:
Quellcode: | BGN . . . LD HL, SPRUNGADR PUSH HL LD HL, BGN LD DE, BGN+1 LD BC, 0FFFFh LD (HL),0 LDIR RET |
LDIR (EDh B0h) wird nach jedem gelöschten Byte erneut aufgerufen. Irgendwann wird auch EDh zu 00h (NOP), B0h (OR A,B) wird ausgeführt und bleibt zusammen mit C9h (RET) als Karteileiche über.
Halb-Positiv-Beispiel:
Quellcode: | BGN . . . DI LD SP, FIN+1 LD HL, BGN LD DE, BGN+1 LD BC, MDL-BGN LD (HL),0 MDL LDIR FIN PUSH BC |
RAM blitzeblank, leider kein gezielter Absprung, es muss sinnvoller Code folgen. Spanne ich zusätzlich einen Interruptgeber vor bleibt FBh (EI) als Karteileiche über.
Weitere Ideen?
Gruß, Kai Dieser Beitrag wurde am 17.12.2022 um 17:17 Uhr von kaiOr editiert. |