home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
No Fragments Archive 10: Diskmags
/
nf_archive_10.iso
/
MAGS
/
TOXIC
/
TOXIC12.MSA
/
PROGRAMS
/
SUPERNOV
/
PACK.S
< prev
next >
Wrap
Text File
|
2005-12-18
|
1KB
|
41 lines
**************************
; COMPRESSION
; Taux de compression: 35%
; Vitesse: 90 Ko/min.
; a0=source a2=destination
**************************
ZIP
FIND_SEQ
TST.B (A0) fin du texte?
BEQ.S EOF yep...
LEA SEQUENCES,A1 charger la table des sequences a coder
REPEAT CLR D0
MOVE.B (A1)+,D0 taille de la prochaine sequence
CMP.B #$F,D0 on a atteind la fin de la table?
BEQ.S NO_COMPRESS on garde l'octet tel quel
CLR D1
MOVE.B D0,D1 d1 sert de compteur pour la copie
SUBQ.B #1,D1 -1 a cause de DBRA
CLR D4 d4= nombre d'octets compares
FOR_I ADDQ.B #1,D4 au cas ou on devrait revenir en arriere
CMPM.B (A0)+,(A1)+ comparaison octet par octet
BEQ.S NEXT_I ca a l'air bon...
SUB D4,A0 sinon, on revient du nombre qu'on a avance
ADD D1,A1 et on pointe la sequence suivante
ADDQ #1,A1
BRA.S REPEAT on essaye avec celle la.
NEXT_I DBRA D1,FOR_I on compare l'octet suivant
MOVE #$700,$FFFF8240.w
MOVE.B (A1)+,(A2)+ on recopie le code de la sequence
MOVE #$777,$FFFF8240.w
BRA.S FIND_SEQ
NO_COMPRESS
MOVE #$070,$FFFF8240.w
MOVE.B (A0)+,(A2)+ on recopie le caractere sans le coder
MOVE #$777,$FFFF8240.w
BRA.S FIND_SEQ on essaye de trouver une sequence...
EOF MOVE.B #"≡",-(A2) marque de fin
RTS