home *** CD-ROM | disk | FTP | other *** search
/ Fujiology Archive / fujiology_archive_v1_0.iso / D / DELIGHT / JEK_V21.ZIP / JEK_2_1 / JEK_DEPA.S < prev    next >
Text File  |  2013-12-18  |  3KB  |  110 lines

  1. packed_adr = $30000
  2. length = $1234
  3.  
  4.     lea    packed_adr,a0
  5.     move.l    #length,d0
  6.     bsr    unpack
  7.  
  8.  
  9. ;---------------------------------------------------------------
  10. unpack:      movem.l   d0-d7/a0-a6,-(sp)
  11.           move.l    d0,packed_length
  12.           move.l    d0,actual_length
  13.       move.l    a0,load_addr
  14.           btst      #0,d0        ; odd length: not packed
  15.           bne       end_read
  16.           move.l    a0,d7        ; odd address of buffer
  17.           btst      #0,d7
  18.           bne       end_read
  19.           adda.l    d0,a0
  20.           move.l    -(a0),d0          ; check if crunched file
  21.           cmpi.l    #'JEK!',d0          ; crunched, last Longw. = 'JEK!'
  22.           bne       end_read
  23.           move.l    -(a0),actual_length
  24.           subq.l    #4,packed_length
  25.           move.l    load_addr(pc),a0
  26.           adda.l    packed_length(pc),a0
  27.           move.l    load_addr(pc),a1
  28.           move.l    -(a0),a2
  29.           adda.l    a1,a2
  30.           move.l    -(a0),d5
  31.           move.l    -(a0),d0
  32.           eor.l     d0,d5
  33. L541f8:   lsr.l     #1,d0
  34.           bne.s     L54200
  35.           bsr       L542be
  36. L54200:   bcs.s     L54242
  37.           moveq     #8,d1
  38.           moveq     #1,d3
  39.           lsr.l     #1,d0
  40.           bne.s     L5420e
  41.           bsr       L542be
  42. L5420e:   bcs.s     L5426e
  43.           moveq     #3,d1
  44.           clr.w     d4
  45. L54214:   bsr       L542ca
  46.           move.w    d2,d3
  47.           add.w     d4,d3
  48. L5421c:   moveq     #7,d1
  49. L5421e:   lsr.l     #1,d0
  50.           bne.s     L54226
  51.           bsr       L542be
  52. L54226:   roxl.l    #1,d2
  53.           dbra      d1,L5421e
  54.           move.b    d2,-(a2)
  55.           dbra      d3,L5421c
  56.           bra.s     L5427c
  57. L5423c:   moveq     #8,d1
  58.           moveq     #8,d4
  59.           bra.s     L54214
  60. L54242:   moveq     #2,d1
  61.           bsr.s     L542ca
  62.           cmpi.b    #2,d2
  63.           blt.s     L54264
  64.           cmpi.b    #3,d2
  65.           beq.s     L5423c
  66.           moveq     #8,d1
  67.           bsr.s     L542ca
  68.           move.w    d2,d3
  69.           move.w    #$c,d1
  70.           bra.s     L5426e
  71. L54264:   move.w    #9,d1
  72.           add.w     d2,d1
  73.           addq.w    #2,d2
  74.           move.w    d2,d3
  75. L5426e:   bsr.s     L542ca
  76. L54272:   subq.l    #1,a2
  77.           move.b    0(a2,d2.w),(a2)
  78.           dbra      d3,L54272
  79. L5427c:   cmpa.l    a2,a1
  80.           blt       L541f8
  81. end_read: 
  82.           movem.l   (sp)+,d0-d7/a0-a6
  83.           move.l    actual_length,d0
  84.       rts
  85.  
  86. L542be:   move.l    -(a0),d0
  87.           eor.l     d0,d5
  88.           move.w    #$10,ccr
  89.           roxr.l    #1,d0
  90.           rts       
  91. L542ca:   subq.w    #1,d1
  92.           clr.w     d2
  93. L542ce:   lsr.l     #1,d0
  94.           bne.s     L542dc
  95.           move.l    -(a0),d0
  96.           eor.l     d0,d5
  97.           move.w    #$10,ccr
  98.           roxr.l    #1,d0
  99. L542dc:   roxl.l    #1,d2
  100.           dbra      d1,L542ce
  101.           rts       
  102. actual_length:      
  103.           DC.l 0
  104. load_addr:          
  105.           DC.l 0
  106. packed_length:      
  107.           DC.l 0
  108.  
  109.  
  110. ə