home *** CD-ROM | disk | FTP | other *** search
/ Falcon 030 Power 2 / F030_POWER2.iso / ST_STE / MAGS / TOXIC_12.ARJ / TOXIC_12.MSA / PROGRAMS / SUPERNOV / PACK.S < prev    next >
Text File  |  1998-07-14  |  1KB  |  41 lines

  1. **************************
  2. ; COMPRESSION
  3. ; Taux de compression: 35%
  4. ; Vitesse: 90 Ko/min.
  5. ; a0=source a2=destination
  6. **************************
  7. ZIP
  8. FIND_SEQ
  9.     TST.B    (A0)        fin du texte?
  10.     BEQ.S    EOF        yep...
  11.     LEA    SEQUENCES,A1    charger la table des sequences a coder
  12. REPEAT    CLR    D0
  13.     MOVE.B    (A1)+,D0    taille de la prochaine sequence
  14.     CMP.B    #$F,D0        on a atteind la fin de la table?
  15.     BEQ.S    NO_COMPRESS    on garde l'octet tel quel
  16.     CLR    D1        
  17.     MOVE.B    D0,D1        d1 sert de compteur pour la copie
  18.     SUBQ.B    #1,D1        -1 a cause de DBRA
  19.     CLR    D4        d4= nombre d'octets compares
  20. FOR_I    ADDQ.B    #1,D4        au cas ou on devrait revenir en arriere
  21.     CMPM.B    (A0)+,(A1)+    comparaison octet par octet 
  22.     BEQ.S    NEXT_I        ca a l'air bon...
  23.     SUB    D4,A0        sinon, on revient du nombre qu'on a avance
  24.     ADD    D1,A1        et on pointe la sequence suivante
  25.     ADDQ    #1,A1
  26.     BRA.S    REPEAT        on essaye avec celle la.
  27. NEXT_I    DBRA    D1,FOR_I    on compare l'octet suivant
  28.     MOVE    #$700,$FFFF8240.w    
  29.     MOVE.B    (A1)+,(A2)+    on recopie le code de la sequence
  30.     MOVE    #$777,$FFFF8240.w
  31.     BRA.S    FIND_SEQ
  32. NO_COMPRESS
  33.     MOVE    #$070,$FFFF8240.w
  34.     MOVE.B    (A0)+,(A2)+    on recopie le caractere sans le coder
  35.     MOVE    #$777,$FFFF8240.w
  36.     BRA.S    FIND_SEQ    on essaye de trouver une sequence...
  37.     
  38. EOF    MOVE.B    #"≡",-(A2)    marque de fin
  39.     RTS
  40.  
  41.