home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / source / btoc_v12.lha / BtoCDir / ExplodeStuff / GCC / Decrunch30_MIT.s < prev    next >
Encoding:
Text File  |  1994-04-27  |  930 b   |  72 lines

  1. | Decrunch30.s, MIT syntax for GNU C Compiler 2.2.2
  2. |
  3. | Copyright © 1992-1994 by Stefano Reksten
  4. |
  5. | Use Decrunch30.c to interface with GCC !
  6. |
  7. | 1112821571 = 'BTOC'
  8.  
  9. .text
  10.     .even
  11. .globl _Decrunch30
  12. _Decrunch25:
  13.     moveml    d1-d5/a0-a1,sp@-
  14.     movel    a1@+,d0
  15.     cmpl    #1112821571,d0
  16.     beq    ok_go
  17.     moveq    #0,d0
  18.     bra    end
  19. ok_go:
  20.     movel    a1@+,d0
  21.     moveb    a1@+,d1
  22.     moveq    #0,d4
  23.     moveb    a1@+,d4
  24. loop:
  25.     cmpb    a1@,d1
  26.     beq    explode
  27.     moveb    a1@+,a0@+
  28.     subl    #1,d0
  29.     beq    end
  30.     bra    loop
  31. explode:
  32.     addl    #1,a1
  33.     moveq    #0,d2
  34.     moveb    a1@+,d2
  35.     cmpb    d2,d4
  36.     bhi    else
  37.     subl    d4,d2
  38.     beq    skip_byt
  39.     moveb    a1@+,d3
  40.     bra    expl
  41. skip_byt:
  42.     moveb    a1@+,d5
  43.     moveq    #7,d2
  44.     moveb    d1,a0@+
  45. skip_loop:
  46.     btst    d2,d5
  47.     bne    put_byte
  48.     moveb    d1,a0@+
  49.     bra    ok
  50. put_byte:
  51.     moveb    a1@+,a0@+
  52. ok:
  53.     dbra    d2,skip_loop
  54.     subl    #9,d0
  55.     bra    done
  56. else:
  57.     moveb    d1,d3
  58. expl:
  59.     subl    d2,d0
  60.     subb    #1,d2
  61. exploop:
  62.     moveb    d3,a0@+
  63.     dbra    d2,exploop
  64. done:
  65.     tstl    d0
  66.     beq    end
  67.     bra    loop
  68.     moveq    #1,d0
  69. end:
  70.     moveml    sp@+,d1-d5/a0-a1
  71.     rts
  72.