home *** CD-ROM | disk | FTP | other *** search
/ Go64! / Go64_2003-04_2003_CSW_Side_A.d64 / decruncher < prev    next >
Text File  |  2023-02-26  |  2KB  |  156 lines

  1. ; ByteBoozer Decruncher    /HCL may.2003
  2.  
  3.  
  4. ;variables..         #bytes
  5.  
  6. zp{CBM-@}base  = $02       ; -
  7. cpl      = zp{CBM-@}base+0 ;1
  8. cur      = zp{CBM-@}base+1 ;1
  9. zp       = zp{CBM-@}base+2 ; -
  10. put      = zp{CBM-@}base+2 ;2
  11. get      = zp{CBM-@}base+4 ;2
  12. cps      = zp{CBM-@}base+6 ;2
  13.  
  14.  
  15.          *= $0200
  16.          .offs $1000-*
  17. decrunch
  18.          sty get
  19.          stx get+1
  20.  
  21.          ldy #2
  22.          lda (get),y
  23.          sta !cur,y
  24.          dey
  25.          bpl *-6
  26.  
  27.          clc
  28.          lda #3
  29.          adc get
  30.          sta get
  31.          bcc *+4
  32.          inc get+1
  33.  
  34. d{CBM-@}loop
  35.          jsr d{CBM-@}get
  36. dl{CBM-@}1
  37.          php
  38.          lda #1
  39. dl{CBM-@}2
  40.          jsr d{CBM-@}get
  41.          bcc dl{CBM-@}2e
  42.          jsr d{CBM-@}get
  43.          rol a
  44.          bpl dl{CBM-@}2
  45. dl{CBM-@}2e
  46.          plp
  47.          bcs d{CBM-@}copy
  48.  
  49. d{CBM-@}plain
  50.          sta cpl
  51.  
  52.          ldy #0
  53.          lda (get),y
  54.          sta (put),y
  55.          iny
  56.          cpy cpl
  57.          bne *-7
  58.  
  59.          ldx #get-zp
  60.          jsr d{CBM-@}add
  61.          iny
  62.          beq d{CBM-@}loop
  63.          sec
  64.          bcs dl{CBM-@}1
  65.  
  66. d{CBM-@}copy
  67.          adc #0
  68.          beq d{CBM-@}end
  69.          sta cpl
  70.          cmp #3
  71.  
  72.          lda #0
  73.          sta cps
  74.          sta cps+1
  75.  
  76.          rol a
  77.          jsr d{CBM-@}get
  78.          rol a
  79.          jsr d{CBM-@}get
  80.          rol a
  81.          tax
  82. dc{CBM-@}1s
  83.          ldy tab,x
  84. dc{CBM-@}1
  85.          jsr d{CBM-@}get
  86.          rol cps
  87.          rol cps+1
  88.          dey
  89.          bne dc{CBM-@}1
  90.          txa
  91.          dex
  92.          and #3
  93.          beq dc{CBM-@}1e
  94.          inc cps
  95.          bne dc{CBM-@}1s
  96.          inc cps+1
  97.          bne dc{CBM-@}1s
  98. dc{CBM-@}1e
  99.  
  100.          sec
  101.          lda put
  102.          sbc cps
  103.          sta cps
  104.          lda put+1
  105.          sbc cps+1
  106.          sta cps+1
  107.  
  108.          lda (cps),y
  109.          sta (put),y
  110.          iny
  111.          cpy cpl
  112.          bne *-7
  113.  
  114.          ldx #put-zp
  115.          jsr d{CBM-@}add
  116.          bmi d{CBM-@}loop
  117.  
  118.  
  119. d{CBM-@}get
  120.          asl cur
  121.          bne dg{CBM-@}end
  122.          pha
  123.          tya
  124.          pha
  125.          ldy #0
  126.          lda (get),y
  127.          inc get
  128.          bne *+4
  129.          inc get+1
  130.          sec
  131.          rol a
  132.          sta cur
  133.          pla
  134.          tay
  135.          pla
  136. dg{CBM-@}end
  137.          rts
  138.  
  139. d{CBM-@}add
  140.          clc
  141.          tya
  142.          adc zp,x
  143.          sta zp,x
  144.          bcc *+4
  145.          inc zp+1,x
  146.          dex
  147.          dex
  148.          bpl d{CBM-@}add
  149. d{CBM-@}end
  150.          rts
  151.  
  152.  
  153. tab      .byte 4,2,2,2
  154.          .byte 5,2,2,3
  155.  
  156.