Die Quelltextdatei wrap.s wurde wohl wegerfunden, aber sie ist in früheren Versionen enthalten.
Code
PROCESSOR 6502
ORG $c800
jsr exod_decrunch
rts
exod_get_crunched_byte:
lda opbase + 1
bne nowrap
dec opbase + 2
nowrap: dec opbase + 1
;; change the $ffff to point to the byte immediately following the last
;; byte of the crunched file data (mem command)
opbase: lda $ffff
rts
;; include the decruncher source
INCLUDE exodecrunch.s
Alles anzeigen
Wie man sieht, wird da die Unterroutine definiert, die ein gepacktes Byte einliest und den Lesezeiger rückwärts weiterschiebt.
Das ist eigentlich auch das, was man primär zur Benutzung machen muss.
Code
; -------------------------------------------------------------------
; The decruncher jsr:s to the exod_get_crunched_byte address when it wants to
; read a crunched byte into A. This subroutine has to preserve X and Y
; register and must not modify the state of the carry nor the overflow flag.
; -------------------------------------------------------------------
Vor dem Aufruf der eigentlichen Entpackroutine die korrekte Endadresse im Wrapper-Callback setzen, und los geht's. ![]()
(Ich werde aber nicht müde zu erwähnen, dass Exomizer im Vergleich ziemlich langsam ist, dann kommt auch noch ein Unterroutinen-Aufruf pro Eingabebyte dazu, während es Bitte melde dich an, um diesen Link zu sehen. gibt, die im Mittel genausogut packen, aber deutlich schneller beim Auspacken bei kleinerer Entpackroutine sind.)