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 / COMPRESS.S next >
Text File  |  1998-07-14  |  2KB  |  107 lines

  1. ****************************************************
  2. ; Compression de texte par comparaison de sequences
  3. ; Supernova pour TOXIC MAG
  4. ****************************************************
  5.     TEXT
  6.     OPT    O+
  7. ****************************************************
  8.     PEA    0.W
  9.     MOVE    #$20,-(SP)
  10.     TRAP    #1
  11.     ADDQ.L    #6,SP    
  12. ****************************************************
  13. ; on compte la taille originale de texte puis on la
  14. ; stocke
  15. ****************************************************
  16.     LEA    FILE,A0
  17. COUNT    CMP.B    #0,(A0)+
  18.     BEQ.S    GO
  19.     ADDQ.L    #1,FILE_SIZE
  20.     BRA.S    COUNT
  21. ****************************************************
  22. GO    LEA    BUFFER,A2
  23.     LEA    FILE,A0
  24.     BSR.S    ZIP
  25. ********* Au rapport! ******************************
  26.     BSR    DUMP
  27. ****************************************************    
  28.     BSR.S    KEY
  29.     LEA    UPK_BUFFER,A2
  30.     LEA    BUFFER,A0
  31.     BSR.S    UNZIP
  32. ****************************************************
  33.     PEA    0.W
  34.     TRAP    #1
  35. ****************************************************
  36. KEY    MOVE    #7,-(SP)
  37.     TRAP    #1
  38.     ADDQ.L    #2,SP
  39.     RTS
  40. ****************************************************
  41.     include    pack.s
  42.     include    unpack.s
  43. ********** Affichage de donnees en hexa ************
  44. DUMP
  45.     LEA    ORIGINAL,A3
  46.     MOVE.L    FILE_SIZE,FIGURE
  47.     BSR.S    DISPLAY
  48.     LEA    BUFFER,A0
  49. LOOP    CMP.B    #"≡",(A0)+
  50.     BEQ.S    PRINT_
  51.     ADDQ.L    #1,PACKED_SIZE
  52.     BRA.S    LOOP
  53. PRINT_
  54.     LEA    FINAL,A3
  55.     MOVE.L    PACKED_SIZE,FIGURE
  56.     BSR.S    DISPLAY
  57.     rts
  58. DISPLAY
  59.     MOVE.L    A0,-(SP)
  60.     MOVE.L    A3,-(SP)
  61.     move    #9,-(sp)
  62.     trap    #1
  63.     addq.l    #6,sp
  64.  
  65.     moveQ.l    #28,d1
  66. af    move.l    FIGURE,d0
  67.     lsr.l    d1,d0
  68.     and.l    #$f,d0
  69.     cmp.b    #$9,d0
  70.     bgt.s    lettre
  71.     add.b    #$30,d0
  72.     bra.S    fin_conv
  73. lettre    add.b    #$37,d0
  74. fin_conv
  75.     move    d0,-(sp)
  76.     move    #2,-(sp)
  77.     trap    #1
  78.     addq.l    #4,sp
  79.     subq    #4,d1
  80.     bge.s    af
  81.     MOVE.L    (SP)+,A0
  82.     RTS
  83. ****************************************************
  84.     DATA
  85. SEQUENCES
  86.     incbin    sequence.bin
  87.     EVEN
  88. FILE    dc.b    "Ceci est un essai de compression"
  89.     dc.b    " de texte",13,10
  90.     DC.B    0
  91.     EVEN
  92. ORIGINAL
  93.     DC.B    27,"E",7,"ORIGINAL LENGTH:"
  94.     dc.b    0
  95.     EVEN
  96. FINAL    DC.B    13,10,"PACKED   LENGTH:",0    
  97. ****************************************************
  98.     BSS
  99. FLAG        DS.B    1    
  100.         EVEN
  101. FILE_SIZE    DS.L    1
  102. PACKED_SIZE    DS.L    1
  103. FIGURE        DS.L    1
  104. BUFFER        DS.B    1000
  105. UPK_BUFFER    DS.B    1000    
  106.     end
  107.