home *** CD-ROM | disk | FTP | other *** search
/ World of A1200 / World_Of_A1200.iso / programs / compress / filearchivers / lhsfx / source.lha / LhSFX / source / LHsfxV15a.s next >
Text File  |  1991-06-01  |  58KB  |  2,952 lines

  1. ;--------------------------------------------------------------------
  2. ;
  3. ;    Proggy:        LHSFX
  4. ;
  5. ;
  6. ;    Version:    V1.5a
  7. ;
  8. ;    Date:        14/11/92
  9. ;
  10. ;
  11. ;    Author:        Mike Kennedy and Ralf Thanner
  12. ;
  13. ;    Assembler:    ASM-ONE  (old syntax)
  14. ;
  15. ;--------------------------------------------------------------------
  16. ;
  17. ;  This source is not well optimized and may still include some
  18. ;  bugs and should  therefore not be seen as an example of good
  19. ;  programming. The only thing  I did was adding some stuff and
  20. ;  removing bugs. The decrunch header is still awfull and  some
  21. ;  other parts of the code too, but I'm really too lazy because
  22. ;  there are other and better SFX (like LHAsfx) around.
  23. ;
  24. ;  So do what you want with this piece but don't blame  ME  for
  25. ;  this code!-)
  26. ;
  27. ;  Be carefull when you assemble it  with an assembler like DEVPAC
  28. ;  with optimisation, coz the decrunch header includes lots of bad
  29. ;  code but has a hard-coded reloc table at the end. This makes it
  30. ;  a little bit complicated, and gives you only the choice  either
  31. ;  to rewrite the complete header or not to touch this area:-((
  32. ;  Look at 'SFX header' for a short overview. 
  33. ;--------------------------------------------------------------------
  34. ;                       ****** History ******
  35. ;--------------------------------------------------------------------
  36. ;
  37. ; V1.2   28/05/91        [INTERNAL]
  38. ;
  39. ;     - removed Mikes bugs (LHSfx crashed sometimes; not all mem freed)
  40. ;
  41. ;     - added filerequester of req.library!
  42. ;       (if you don't have the req.lib you must type the name.-(
  43. ;
  44. ;     - removed screen color cycle during crunch.
  45. ;
  46. ;     - tried to improve the code a little bit!
  47. ;       ( fixed bugs, added file req., made it more multitasking
  48. ;         friendly and the code is still shorter! )
  49. ;
  50. ;     - changed:        DESTINATION  > ram:testfile
  51. ;                to     ARCHIVE NAME > ram:testfile
  52. ;
  53. ;
  54. ;     - changed:        'Press Left Mouse Button'
  55. ;                to     'Press RIGHT Mouse Button' for DMOUSE user!
  56. ;
  57. ----------------------------------------------------------------------
  58. ;
  59. ; V1.3   14/06/91        [INTERNAL]
  60. ;
  61. ;     - the filerequester is now also used for 'ARCHIV NAME' and
  62. ;       'EXTRACT PATH'.
  63. ;
  64. ;     - short instructions at the beginning ( only with req.lib. ).
  65. ;
  66. ;     - '.SFX' will be added automagically to archiv name.
  67. ;
  68. ;     - added led-cycling during crunch. ( is he still crunching?? )
  69. ;       ( In a multitasking system i prefer something more subtil than
  70. ;         a flashing screen. )
  71. ;
  72. ;     - added requester for '[F]ile' or '[D]isplay' choice.
  73. ;
  74. ;     - 'CON' and 'ANSI' part thrown out.
  75. ;       ( filelenght reduced from 18kb to 9kb! )
  76. ;
  77. ;---------------------------------------------------------------------
  78. ;
  79. ; V1.4   22/10/91        [INTERNAL]
  80. ;
  81. ;     - added requester for 'Overwrite [Y]es / [N]o' decision.
  82. ;
  83. ;     - removed some of my own bugs and some of Mike.
  84. ;
  85. ;     - the 'EXTRACT PATH' has only to be declared once.
  86. ;
  87. ;---------------------------------------------------------------------
  88. ;
  89. ; V1.5   03/11/92        Public release
  90. ;
  91. ;     - rewrote part of the code and removed bugs.
  92. ;
  93. ;     - changed TASKPRI during crunch from '0' to '+8'.
  94. ;
  95. ;     - handles now different 'source file dirs' correct (V1.5a).
  96. ;
  97. ;=====================================================================
  98. ;                 ********** Allgemeine Konstanten ***********
  99. ;=====================================================================
  100. ; a6 = $dff000    (oder execbase)
  101. ; a5 = pointer auf globales Variablenfeld (VAR)
  102. ;--------------------------------------------------------------------
  103.  
  104. disable        EQU    -120    ;     Exec.library
  105. enable        EQU    -126
  106. forbid        EQU    -132
  107. permit        EQU    -138
  108. allocmem    EQU    -198
  109. freemem        EQU    -210
  110. availmem    EQU    -216
  111. findname    EQU    -276
  112. addtask        EQU    -282
  113. findtask    EQU    -294
  114. settaskpri    EQU    -300
  115. allocsignal    EQU    -330
  116. freesignal    EQU    -336
  117. addport        EQU    -354
  118. RemPort        EQU    -360
  119. putmsg        EQU    -366
  120. getmsg        EQU    -372
  121. replymsg    EQU    -378
  122. waitport    EQU    -384
  123. findport    EQU    -390
  124. closelib    EQU    -414
  125. OpenDevice    EQU    -444
  126. CloseDevice    EQU    -450
  127. doio        EQU    -456
  128. openresource    EQU    -498
  129. openlib        EQU    -552
  130.  
  131. Center            EQU    -$1e    ;    Req-Library
  132. SetSize            EQU    -$24
  133. SetLocation        EQU    -$2a
  134. ReadLocation        EQU    -$30
  135. Format            EQU    -$36
  136. FakeFunction1        EQU    -$3c 
  137. FakeFunction2        EQU    -$42 
  138. FakeFunction3        EQU    -$48 
  139. FakeFunction4        EQU    -$4e 
  140. FileRequester        EQU    -$54
  141. ColorRequester        EQU    -$5a
  142. DrawBox            EQU    -$60
  143. MakeButton        EQU    -$66
  144. MakeScrollBar        EQU    -$6c
  145. PurgeFiles        EQU    -$72
  146. GetFontHeightAndWidth    EQU    -$78
  147. MakeGadget        EQU    -$7e
  148. MakeString        EQU    -$84
  149. MakeProp        EQU    -$8a
  150. LinkGadget        EQU    -$90
  151. LinkStringGadget    EQU    -$96
  152. LinkPropGadget        EQU    -$9c
  153. GetString        EQU    -$a2
  154. RealTimeScroll        EQU    -$a8
  155. TextRequest        EQU    -$ae
  156. GetLong            EQU    -$b4
  157. RawKeyToAscii        EQU    -$ba
  158. ExtendedColorRequester    EQU    -$c0
  159. NewGetString        EQU    -$c6
  160.  
  161. *************************************************************************
  162. FRQSHOWINFO    EQU $00000001 ; .info files to show.  They default to hidden.
  163. FRQEXTSELECT    EQU $00000002 ; extended select.  Default is not.
  164. FRQCACHING    EQU $00000004 ; directory caching.  Default is not.
  165. FRQGETFONTS    EQU $00000008 ; font Requester rather than a file Requester.
  166. FRQINFOGADGET    EQU $00000010 ; hide-info files gadget.
  167. FRQHIDEWILDS    EQU $00000020 ; DON'T want 'show' and 'hide' string gadgets.
  168. FRQABSOLUTEXY    EQU $00000040 ; absolute x,y positions rather than centering on mouse.
  169. FRQCACHEPURGE    EQU $00000080 ; Purge the cache whenever the directory date stamp changes if this is set.
  170. FRQNOHALFCACHE    EQU $00000100 ; Don't cache a directory unless it is completely read in when this is set.
  171. FRQNOSORT    EQU $00000200 ; DON'T want sorted directories.
  172. FRQNODRAG    EQU $00000400 ; DON'T want a drag bar and depth gadgets.
  173. FRQSAVING    EQU $00000800 ; selecting a file to save to.
  174. FRQLOADING    EQU $00001000 ; selecting a file(s) to load from.
  175. FRQDIRONLY    EQU $00002000 ; select a directory, rather than a file.
  176. DSIZE        EQU 130        ;Directory SIZE    ;DON'T CHANGE !!
  177. FCHARS        EQU 30        ;Filename SIZE    ;DON'T CHANGE !!
  178. WILDLENGTH    EQU 30             ;Wildcards SIZE    ;DON'T CHANGE !!
  179. **********************************************************************
  180.  
  181.  
  182. ;=====================================================================
  183. ;                             ** MAIN **
  184. ;=====================================================================
  185.  
  186. ; code by MIKE and me...
  187.  
  188. start:
  189.  
  190.  
  191.     movem.l    d0-d7/a0-a6,-(SP)
  192.  
  193.     MOVE.L        4.w,A6
  194.     lea        VAR(PC),A5    ; master base to avoid reloc_32
  195.                     ; hunks and to get faster code..
  196.     suba.l        a1,a1
  197.     jsr    findtask(a6)
  198.     move.l        d0,a4
  199.     move.l        d0,my_task-var(a5)
  200.  
  201. ;    LEA        $5c(A4),A1    ; MSG Port
  202. ;    move.l        a1,port1-var(a5)
  203.  
  204.     tst.l        $ac(a4)
  205.     bne.b    cli_call
  206.  
  207. * Worbench Part
  208.  
  209.     lea        $5c(a4),a0
  210.     jsr    waitport(a6)
  211.     lea        $5c(a4),a0
  212.     jsr    getmsg(a6)
  213.     move.l        d0,A4    ; WB_Message
  214.  
  215.     jsr    forbid(a6)
  216.     move.l        A4,a1
  217.     jsr    replymsg(a6)
  218.     movem.l     (a7)+,d0-d7/a0-a6
  219.     moveq        #00,d0
  220.     rts
  221.  
  222. * CLI-PARAMETER HANDLER
  223.  
  224. cli_call
  225.     movem.l     (a7)+,d0-d7/a0-a6
  226.  
  227.     MOVE.L        4.w,A6
  228.     lea        VAR(PC),A5
  229.  
  230.     lea        reqname(pc),a1    ; open req.lib
  231.     moveq        #0,d0
  232.     jsr    -552(a6)
  233.     move.l        d0,reqbase-var(a5)
  234.  
  235. led_test
  236.     btst        #1,$bfe001
  237.     seq        led-var(a5)
  238.     bset        #1,$bfe001
  239.  
  240.     LEA        doslibrary(pc),A1
  241.     moveq        #0,d0
  242.     JSR    -552(A6)
  243.     MOVE.L        D0,dosbase-var(a5)    ; dosbase
  244.     beq.w        nix_dos_open
  245.     move.l        d0,a6
  246.  
  247.     jsr    -60(a6)                ; output
  248.     MOVE.L        D0,conbase0-var(a5)
  249.     BEQ.W    dos_open_aber_no_con
  250.  
  251. ;    MOVE.L        #mes0,D2
  252.     lea        mes0(pc),a0
  253.     MOVE.l        #mes0leng,D3
  254.     bsr.w    write_text        ; write begin text
  255.  
  256.     tst.l        reqbase-var(a5)
  257.     bne.b    oh_no
  258.  
  259. ;    MOVE.L        #mes1,D2
  260.     lea        mes1(pc),a0
  261.     MOVE.l        #mes1leng,D3
  262.     bsr.w    write_text        ; write begin text
  263.  
  264. oh_no
  265.     MOVE.L        #$9C40,D0        
  266.     MOVE.L        #$10001,D1    ; Clear&Public
  267.     MOVE.L        4.w,A6
  268.     JSR    -$C6(A6)
  269.     MOVE.L        D0,alloc0-var(a5)    ; alloc mem
  270.     beq.w    alloc0_no
  271.  
  272. overwrite_no
  273.     tst.l        reqbase-var(a5)
  274.     beq.b    war_nix1
  275.  
  276.     bsr.w    about
  277.  
  278.     lea        load_title1(pc),a1    ; Archivname
  279.     moveq        #0,d0
  280.     bra.w        use_it
  281.  
  282. war_nix1
  283. ;    MOVE.L        #mDestination0,D2    ; 'archiv name'
  284.     lea        mDestination0(pc),a0
  285.     MOVEq        #$18,D3
  286.     bsr.w    write_text
  287.  
  288.     moveq        #0,d0
  289.     bsr.w        enter_arh_name        ; 0 Archiv
  290.  
  291.     LEA        name_buff(pc),A0
  292.     TST.L        (A0)
  293.     beq.b    war_nix1
  294.     CMP.L        #'exit',(A0)
  295.     beq.w    free_mem
  296.     CMP.L        #'EXIT',(A0)
  297.     beq.w    free_mem
  298. howdi1
  299.     lea        var(pc),a5
  300.     MOVE.L        A0,D1
  301.     moveq        #-2,D2
  302.     MOVE.L        dosbase(pc),A6
  303.     JSR    -$54(A6)            ; lock
  304.     TST.L        D0
  305.     beq.b    overwrite_yes1
  306.     MOVE.L        D0,lock_handle-var(a5)
  307.     MOVE.L        D0,D1
  308.  
  309. ;    MOVE.L        #info_block,D2
  310.     lea        info_block(pc),a0
  311.     move.l        a0,d2
  312.  
  313.     MOVE.L        dosbase(pc),A6
  314.     JSR    -$66(A6)            ; examine
  315.     MOVE.L        lock_handle(PC),D1
  316.     MOVE.L        dosbase(pc),A6
  317.     JSR    -$5A(A6)            ; unlock
  318.     MOVE.L        is_it_datei(PC),D0
  319.     TST.L        D0
  320.     BLT.s    ask_for_overwrite
  321.  
  322. ;    MOVE.L        #mThatsadirect,D2    ; 'That's a directory'
  323.     lea        mThatsadirect(pc),a0
  324.     MOVEq        #$22,D3
  325.  
  326.     bsr.w    write_text
  327.     bra.w    overwrite_no
  328.  
  329. ask_for_overwrite
  330.     tst.l        reqbase-var(a5)
  331.     beq.b    ask_for_overwrite1
  332.     bra.w    req_ask_overwrite
  333. ask_for_overwrite1
  334. ;    MOVE.L        #mFileExistsOv,D2    ; 'File exists /overwrite?'
  335.     lea        mFileExistsOv(pc),a0
  336.     MOVEq        #$2B,D3
  337.     bsr.w    write_text
  338.     bsr.w    two_input
  339.     CMP.B        #$59,(A0)    ; y (overwrite?)
  340.     beq.b    overwrite_yes
  341.     CMP.B        #$79,(A0)
  342.     beq.b    overwrite_yes
  343.     bra.w    overwrite_no
  344.  
  345. overwrite_yes
  346.     MOVE.L        #name_buff,D1
  347.     MOVE.L        dosbase(pc),A6
  348.     JSR    -72(A6)            ; Delete
  349. overwrite_yes1
  350.  
  351.     MOVE.L        #name_buff,D1
  352.     MOVE.L        #$3EE,D2
  353.     MOVE.L        dosbase(pc),A6
  354.     JSR    -$1E(A6)        ; Open
  355.     TST.L        D0
  356.     bne.b    lbC000134        ; hat geklappt
  357.     bra.w    write_file_error
  358.  
  359. lbC000134
  360.     lea        VAR(PC),a5
  361.     MOVE.L        D0,File_handle-var(a5)
  362.     move.l        d0,d1
  363.     MOVE.L        #sfx_hunk,D2
  364.     MOVE.L        #sfx_len,D3
  365.     JSR    -$30(A6)        ; Write
  366.     tst.l        d0
  367.     bmi.w    lbc00066e
  368. ;    MOVE.L        #mArchiveOpene,D2    ; 'Archiv opened..'
  369.     lea        mArchiveOpene(pc),a0
  370.     MOVEq        #$1C,D3
  371.     bsr.w    write_text
  372.  
  373. main_loop:
  374.     lea        VAR(PC),A5
  375.     tst.l        reqbase-var(a5)
  376.     beq.b    war_nix
  377.     lea        load_title(pc),a1
  378.     moveq        #1,d0
  379.     bra.w        use_it
  380. war_nix
  381. ;    MOVE.L        #mOriginal0m,D2    ; 'Original >'
  382.     lea        mOriginal0m(pc),a0
  383.     MOVEq        #$15,D3
  384.     BSR.W    write_text        ; text schreiben
  385.  
  386.     moveq        #1,d0
  387.     bsr.w    enter_arh_name        ; 1 File
  388.  
  389.     LEA        name_buff(pc),A0
  390.     TST.L        (A0)
  391.     beq.w    lbC000518
  392.     CMP.L        #'EXIT',(A0)
  393.     beq.w    lbC000692
  394.     CMP.L        #'exit',(A0)
  395.     beq.w    lbC000692
  396. howdi
  397.     MOVE.L        A0,D1
  398.     MOVEq        #-2,D2        ; 'lese lock'
  399.     MOVE.L        dosbase(pc),A6
  400.     JSR    -84(A6)            ; Lock
  401.     TST.L        D0
  402.     beq.w    lbC0006EC
  403.  
  404.     MOVE.L        D0,lock_handle-var(a5)
  405.     move.l        d0,d1
  406.  
  407. ;    MOVE.L        #info_block,D2
  408.     lea        info_block(pc),a0
  409.     move.l        a0,d2
  410.  
  411.     MOVE.L        dosbase(pc),A6
  412.     JSR    -102(A6)            ; Examine
  413.     MOVE.L        lock_handle(PC),D1
  414.     MOVE.L        dosbase(pc),A6
  415.     JSR    -$5A(A6)
  416.     MOVE.L        is_it_datei(PC),D0
  417.     TST.L        D0
  418.     BLT.b    lbC000206
  419. ;    MOVE.L        #mCannotcompre,D2    ; 'cannot compress a direc'
  420.     lea        mCannotcompre(pc),a0
  421.     MOVEq        #$29,D3
  422.     bsr.w        write_text
  423.     bra.w    main_loop
  424. lbC000206
  425. ;    MOVE.L        #pfeil,D2        ; ' (xxxx) bytes'
  426.     lea        pfeil(pc),a0
  427.     MOVEq        #6,D3
  428.     bsr.w    write_text
  429. ;    MOVE.L        #name_buff,D2
  430.     lea        name_buff(pc),a0
  431.     MOVE.L        name_len(pc),D3
  432.     bsr.w    write_text
  433. ;    MOVE.L        #ascii,D2
  434.     lea        ascii(pc),a0
  435.     MOVEq        #6,D3
  436.     bsr.w    write_text
  437.     MOVE.L        file_len_imlock(PC),D0
  438.     BSR.W    lbC00079C
  439.  
  440. ;    MOVE.L        #ascii0,D2
  441.     lea        ascii0(pc),a0
  442.  
  443.     MOVEq        #9,D3
  444.     bsr.w    write_text
  445. ;    MOVE.L        #bytes1,D2
  446.     lea        bytes1(pc),a0
  447.     MOVEq        #9,D3
  448.     bsr.w    write_text
  449.     MOVE.L        file_len_imlock(PC),D0
  450.     MOVE.L        D0,file_len_backsave-var(a5)
  451.     MOVE.L        D0,D1
  452.     DIVU        #8,D1
  453.     AND.L        #$FFFF,D1
  454.     ADD.L        D1,D0
  455.     ADD.L        #$40,D0        ; header/file-len/packed/pack_chksum
  456.     MOVE.L        D0,file_len_umgerechnet-var(a5)
  457.     MOVE.L        4.w,A6
  458.     MOVE.L        #$10001,D1
  459.     JSR    -$C6(A6)            ; Alloc
  460.     TST.L        D0
  461.     beq.w    lbC00065A
  462.     MOVE.L        D0,extract_buf-var(a5)
  463.     MOVE.L        file_len_backsave(pc),D0
  464.     MOVE.L        #$10001,D1        ; Public
  465. ;    MOVE.L        4.w,A6
  466.     JSR    -$C6(A6)            ; Alloc
  467.     TST.L        D0
  468.     beq.w    lbC000646
  469.     MOVE.L        D0,alloc2-var(a5)
  470.     MOVE.L        #name_buff,D1
  471.     MOVE.L        #$3ED,D2
  472.     MOVE.L        dosbase(pc),A6
  473.     JSR    -$1E(A6)            ; Open
  474.     TST.L        D0
  475.     beq.w    lbC000632
  476.     MOVE.L        D0,D1
  477.     MOVE.L        D0,file_handle2-var(a5)
  478.     MOVE.L        alloc2(pc),D2
  479.     MOVE.L        file_len_backsave(pc),D3
  480.     MOVE.L        dosbase(pc),A6
  481.     JSR    -$2A(A6)            ; Read
  482.     CMP.L        file_len_backsave(pc),D0
  483.     bne.w    lbC000622
  484.     MOVE.L        file_handle2(pc),D1
  485.     MOVE.L        dosbase(pc),A6
  486.     JSR    -$24(A6)            ; Close
  487. ;    MOVE.L        #mCompressingP,D2    ; 'Compressing please wait...'
  488.     lea        mCompressingP(pc),a0
  489.     MOVEq        #$2A,D3
  490.     bsr.w    write_text
  491.     LEA        crunch_strucc(pc),A0
  492.     MOVE.L        alloc2(pc),(A0)+
  493.     MOVE.L        file_len_backsave(pc),(A0)+
  494.     MOVE.L        extract_buf(pc),(A0)
  495.     ADD.L        #$40,(A0)+
  496.     MOVE.L        file_len_umgerechnet(pc),(A0)+
  497.     MOVE.L        alloc0(pc),(A0)+
  498.     MOVE.L        #$9C40,(A0)+
  499.     CLR.L        (A0)
  500. ;--------------------------------------------------------------------
  501. set_task_pri:
  502.  
  503.     move.l        $04.w,a6
  504.     move.l        my_task(pc),a1
  505.     moveq        #8,d0
  506.     jsr    -300(a6)            ; set task pri
  507. ;--------------------------------------------------------------------
  508.     LEA        crunch_strucc(pc),A0
  509.     bsr.w    lbC0007FC        ; cruncher
  510. ;--------------------------------------------------------------------
  511.     movem.l        d0-d7/a0-a6,-(SP)
  512.     move.l        $04.w,a6
  513.     move.l        my_task(pc),a1
  514.     moveq        #0,d0
  515.     jsr    -300(a6)            ; set task pri
  516.     movem.l     (a7)+,d0-d7/a0-a6
  517. ;--------------------------------------------------------------------
  518.     MOVE.L        D0,packed_len-var(a5)
  519.     MOVE.L        alloc2(pc),A1
  520.     MOVE.L        file_len_backsave(pc),D0
  521.     MOVE.L        4.w,A6
  522.     JSR    -$D2(A6)
  523. ;    MOVE.L        #mCompressed,D2        ; 'Compressed xxx'
  524.     lea        mCompressed(pc),a0
  525.     MOVEq        #$10,D3
  526.     bsr.w    write_text
  527. ;    MOVE.L        #ascii0,D2
  528.     MOVEq        #9,D3
  529.     lea        ascii0(pc),a0
  530.     bsr.w        write_text
  531. ;    MOVE.L        #bytestobytes0,D2    ; xxxx bytes to'
  532.     lea        bytestobytes0(pc),a0
  533.     MOVEq        #10,D3
  534.     bsr.w    write_text
  535.     MOVE.L        packed_len(pc),D0
  536.     bsr.w    lbC00079C
  537. ;    MOVE.L        #ascii0,D2        ; alte byte zahl
  538.     lea        ascii0(pc),a0
  539.     MOVEq        #9,D3
  540.     bsr.w        write_text
  541. ;    MOVE.L        #bytes0m,D2        ; ' bytes'
  542.     lea        bytes0m(pc),a0
  543.     MOVEq        #12,D3
  544.     bsr.w    write_text
  545.  
  546.     MOVE.L        extract_buf(pc),A0
  547.     MOVE.L        packed_len(pc),D0
  548.     moveq        #0,d2
  549.     moveq        #0,d1
  550. lbC0003DE
  551.     MOVE.B        (A0)+,D1
  552.     ADD.L        D1,D2
  553.     DBRA    D0,lbC0003DE
  554.     MOVE.L        D2,pack_checksum-var(a5)
  555. lbC0003EE
  556.  
  557.     tst.l        reqbase-var(a5)
  558.     beq.b    lbc0003ee1
  559.     bra.w    ask_exit
  560. lbC0003Ee1
  561. ;    MOVE.L        #mFileorDispla,D2    ; 'File or Display'
  562.     lea        mFileorDispla(pc),a0
  563.     MOVEq        #$20,D3
  564.     bsr.w    write_text
  565.     bsr.w    two_input
  566.     CMP.B        #'f',(A0)
  567.     beq.b    lbC000448
  568.     CMP.B        #'F',(A0)
  569.     beq.b    lbC000448
  570.     CMP.B        #'d',(A0)
  571.     beq.b    lbC000426
  572.     CMP.B        #'D',(A0)
  573.     beq.b    lbC000426
  574.     bra.b    lbC0003EE1
  575. sfg
  576.     MOVE.L        file_len_backsave(pc),(A0)+
  577.     MOVE.L        packed_len(pc),(A0)+
  578.     MOVE.L        pack_checksum(pc),(A0)
  579.     rts
  580. lbC000426
  581.     MOVE.L        extract_buf(pc),A0
  582.     MOVE.L        #$22222222,(A0)+    ; Display
  583.     bsr.b    sfg
  584.     bra.w    lbC0004C6            ; bei Display gibbet keinen
  585. lbC000448                    ; 'extract' path
  586.     MOVE.L        extract_buf(pc),A0
  587.     MOVE.L        #$11111111,(A0)+    ; File
  588.     bsr.b    sfg
  589.  
  590. lbC000466
  591.     tst.w        arq-var(a5)
  592.     bne.b    do_the_complete_copy_name
  593.  
  594.     move.w        #-1,arq-var(a5)        ; Extract Path nur einmal
  595.  
  596.     tst.l        reqbase-var(a5)
  597.     beq.b    cli_trot
  598.     bra.w    and_again        ; zurueck nach lbc0004c6
  599.  
  600. do_the_complete_copy_name:
  601.     lea        backsave_buf(pc),a1    ; old extract path
  602.     move.l        extract_buf(pc),a0
  603.     lea        $10(a0),a0
  604. copy_dir_to_sfx:
  605.     move.b        (a1)+,(a0)+
  606.     bne.b    copy_dir_to_sfx
  607.  
  608.     subq.l        #1,a0
  609.  
  610.     lea        name_buff(pc),A1
  611.     MOVE.L        load_dir_len-var(a5),d0
  612.     add.l        d0,a1
  613. copy_name_to_sfx:
  614.     move.b        (a1)+,(a0)+
  615.     bne.b    copy_name_to_sfx
  616.     clr.b        -(a0)
  617.  
  618.     bra.b    lbC0004C6
  619.  
  620. cli_trot
  621.  
  622. ;    MOVE.L        #mExtractPath0,D2
  623.     lea        mExtractPath0(pc),a0
  624.     MOVEq        #$19,D3
  625.     bsr.w    write_text
  626.  
  627.     MOVE.L        conbase0(pc),D1
  628.     MOVE.L        extract_buf(pc),D2
  629.     ADD.L        #$10,D2
  630.     MOVEq        #$30,D3
  631.     MOVE.L        dosbase(pc),A6
  632.     JSR    -42(A6)                ; read
  633.  
  634.     MOVE.L        extract_buf(pc),A0
  635.     ADD.L        #$10,A0
  636. lbC0004A4
  637.     CMP.B        #10,(A0)+
  638.     bne.b    lbC0004A4
  639.     clr.b        -1(a0)
  640.     move.l        a0,a1
  641.     MOVE.L        extract_buf(pc),A0
  642.     ADD.L        #$10,A0
  643.     tst.b        (a0)
  644.     beq.b    cli_trot
  645.  
  646. ;do_the_copy_name:
  647. ;    subq.l        #1,a1
  648. ;    lea        name_buff(pc),A0
  649. ;    MOVE.L        name_len-var(a5),d0
  650. ;    subq.l        #1,d0
  651. ;copy_cli_name_to_sfx:
  652. ;    move.b        (a0)+,(a1)+
  653. ;    dbf    d0,copy_cli_name_to_sfx
  654.  
  655. lbC0004C6
  656.     MOVE.L        File_handle(pc),D1
  657.     MOVE.L        extract_buf(pc),D2
  658.     MOVE.L        packed_len(pc),D3
  659.     ADD.L        #$40,D3
  660.  
  661.     ADD.L        D3,new_filepacked_len-var(a5)
  662.     MOVE.L        dosbase(pc),A6
  663.  
  664.     JSR    -48(A6)                ; write
  665.  
  666.     tst.l        d0
  667.     bmi.w    lbc000622
  668.  
  669.     MOVE.L        extract_buf(pc),A1
  670.     MOVE.L        file_len_umgerechnet(pc),D0
  671.     MOVE.L        4.w,A6
  672.     JSR    -210(A6)            ; free mem
  673.  
  674. ;    MOVE.L        #mAddedtoArchi,D2    ; 'Added to Archive...'
  675.     lea        mAddedtoArchi(pc),a0
  676.     MOVEq        #$1E,D3
  677.     bsr.w    write_text
  678.     bra.w    main_loop
  679.  
  680. lbC000518
  681.     LEA        lbL000DE0(pc),A0
  682.     MOVE.L        A0,lbL000DD4-var(a5)
  683.     MOVE.L        #4,lbL000DD0-var(a5)
  684.     MOVE.L        new_filepacked_len(pc),D0
  685.     ADDq.L        #4,D0
  686.     DIVU        #4,D0
  687.     SWAP        D0
  688.     TST.W        D0
  689.     beq.b    fix_sfx_hunk
  690.     CLR.W        D0
  691.     SWAP        D0
  692.     ADDq.L        #1,D0
  693.     SWAP        D0
  694.     SUBq.L        #2,lbL000DD4-var(a5)
  695.     ADDq.L        #2,lbL000DD0-var(a5)
  696. fix_sfx_hunk
  697.     SWAP        D0
  698.     LEA        sfx_hunk(pc),A0    ; ARCHIV HUNK
  699.     MOVE.L        D0,$1C(A0)
  700.     MOVE.L        D0,$914(A0)
  701.     MOVE.L        File_handle(pc),D1
  702.  
  703. ;    MOVE.L        #lbL000DD8,D2
  704.     lea        lbl000dd8(pc),a0
  705.     move.l        a0,d2
  706.  
  707.     MOVEq        #4,D3
  708.     move.l        dosbase(pc),a6
  709.     JSR    -$30(A6)        ; Write
  710.     tst.w        d0
  711.     bmi.W    lbc00066e
  712.  
  713.     MOVE.L        File_handle(pc),D1
  714.     MOVE.L        lbL000DD4(pc),D2
  715.     MOVE.L        lbL000DD0(pc),D3
  716.     JSR    -$30(A6)
  717.     tst.w        d0
  718.     bmi.W    lbc00066e
  719.  
  720.     MOVE.L        File_handle(pc),D1
  721.     MOVEq        #0,D2
  722.     moveq        #0,d3
  723.     not.l        d3
  724.     MOVE.L        dosbase(pc),A6
  725.     JSR    -$42(A6)
  726.     TST.L        D0
  727.     BLT.B    lbC00066E
  728.     MOVE.L        File_handle(pc),D1
  729.  
  730. ;    MOVE.L        #sfx_hunk,D2
  731.     lea        sfx_hunk(pc),a0
  732.     move.l        a0,d2
  733.  
  734.     MOVE.L        #sfx_len,D3
  735.     JSR    -$30(A6)
  736.     tst.w        d0
  737.     bmi.s    lbc00066e
  738.  
  739.     MOVE.L        File_handle(pc),D1
  740.     MOVE.L        dosbase(pc),A6
  741.     JSR    -$24(A6)
  742.  
  743. ;    bsr    moxi
  744. ;    MOVE.L        #mArchiveSucce,D2
  745.     lea        mArchiveSucce(pc),a0
  746.     MOVE.l        #malen,D3
  747.     bsr.b    write_text
  748. ;right_mouse_button1:
  749. ;    moveq        #$0a,d1
  750. ;    jsr    -198(a6)        ; Delay
  751. ;    BTST        #10,$dff016
  752. ;    bne    right_mouse_button1
  753.  
  754.     BRA.B    free_mem
  755.  
  756. ;-------------------------------------------------------------------------
  757. write_text:
  758.     movem.l        d0-d1/a0-a1/a6,-(sp)
  759.     move.l        a0,d2
  760.     move.l        dosbase(pc),a6
  761.     move.l        conbase0(pc),d1 ; window
  762.     tst.l        d1
  763.     beq.b    writer_no
  764.     jsr    -$30(a6)
  765. writer_no:
  766.     movem.l        (SP)+,d0-d1/a0-a1/a6
  767.     rts
  768. ;--------------------------------------------------------------------------
  769.  
  770. lbC000622
  771.     MOVE.L        file_handle2(pc),D1
  772.     bsr.b    moxi1
  773. ;    MOVE.L    dosbase(pc),A6
  774. ;    JSR    -$24(A6)
  775. lbC000632
  776. ;    MOVE.L        #mErrorreading,D2
  777.     lea        mErrorreading(pc),a0
  778.     MOVEq        #$2E,D3
  779.     bsr.b    write_text
  780.     bra.w    main_loop
  781.  
  782. moxi
  783.     MOVE.L        File_handle(pc),D1
  784. moxi1
  785.     MOVE.L        dosbase(pc),A6
  786.     Jmp    -$24(A6)
  787.  
  788. lbC000646
  789. lbC00065A
  790. ;    MOVE.L        #mCouldntalloc,D2
  791.     lea        mCouldntalloc(pc),a0
  792.     MOVEq        #$30,D3
  793.     bsr.b    write_text
  794.     bra.w    main_loop
  795.  
  796. lbC00066E
  797.     bsr.b moxi
  798.  
  799. write_file_error
  800. ;    MOVE.L        #mErrorreading,D2
  801.     lea        mErrorreading(pc),a0
  802.     MOVEq        #$2E,D3
  803.     bsr.b    write_text
  804.     bra.w    overwrite_no
  805.  
  806. real_ende
  807. lbC000692
  808.     bsr.b    moxi
  809.  
  810. free_mem
  811.     MOVE.L        alloc0(pc),A1
  812.     MOVE.L        #$9C40,D0
  813.     MOVE.L        4.w,A6
  814.     JSR    -$D2(A6)
  815.     BRA.B    kurz_vor_ende
  816.  
  817. alloc0_no
  818. ;    MOVE.L        #mCouldntalloc,D2
  819.     lea        mCouldntalloc(pc),a0
  820.     MOVEq        #$30,D3
  821.     bsr.b    write_text
  822.  
  823. kurz_vor_ende
  824.  
  825. ;MOVE.L    dosbase(pc),A6
  826. ;MOVE.L    conbase0(pc),D1
  827. ;JSR    -$24(A6)
  828. ;bsr    moxi1
  829.  
  830. dos_open_aber_no_con
  831.     MOVE.L        4.w,A6
  832.     MOVE.L        dosbase(pc),A1
  833.     JSR    -414(A6)        ; close dos
  834. nix_dos_open
  835.     tst.l        reqbase-var(a5)
  836.     beq.b    das_warx
  837.  
  838. ;lea        frq_Structure(pc),a0
  839. ;move.l        reqbase(pc),a6
  840. ;jsr    Purgefiles(a6)
  841. ;move.l        $04.w,a6
  842.  
  843.     move.l        reqbase(pc),a1
  844.     jsr    -414(a6)
  845.  
  846. das_warx
  847.     tst.b        led-var(a5)        ; LED ist jetzt genauso
  848.     bne.b    led_light            ; wie vor aufruf...
  849.     bset        #1,$bfe001
  850.     bra.b    led_dark
  851. led_light
  852.     bclr        #1,$bfe001
  853. led_dark
  854. ;    movem.l        (SP)+,d0-d7/a0-a6
  855.     moveq    #0,d0
  856.     RTS
  857.  
  858. lbC0006EC
  859. ;    MOVE.L    #mThatfiledoes,D2
  860.     lea        mThatfiledoes(pc),a0
  861.     MOVEq        #$25,D3
  862.     bsr.w    write_text
  863.     bra.w    main_loop
  864.  
  865. claro
  866.     LEA        name_buff(pc),A0
  867.     MOVEq        #$13,D1
  868. lbC00070C
  869.     CLR.L        (A0)+
  870.     DBRA    D1,lbC00070C
  871.     rts
  872.  
  873. enter_arh_name
  874.     move.l        d0,-(sp)
  875. ;    moveq        #0,d0
  876.     bsr.b    claro
  877.  
  878.     LEA        name_buff(pc),A0
  879.     move.l        a0,d2
  880.     MOVE.L        conbase0(pc),D1
  881.     MOVEq        #$50,D3
  882.     MOVE.L        dosbase(pc),A6
  883.     JSR    -$2A(A6)            ; Read
  884.     SUBq.L        #1,D0            ; wegen 'Return'
  885.     MOVE.L        D0,name_len-var(a5)
  886.     LEA        name_buff(pc),A0
  887. lbC000740
  888.     CMP.B        #10,(A0)+        ; 'Return'
  889.     bne.b    lbC000740
  890.     subq.l        #1,a0        ; return weg
  891.  
  892. li    move.l        (sp)+,d0    ; 0 archiv  | 1 file
  893.     tst.l        d0
  894.     bne.b    az
  895.     move.b        #'.',(a0)+
  896.     move.b        #'S',(a0)+
  897.     move.b        #'F',(a0)+
  898.     move.b        #'X',(a0)+
  899.     clr.b        (a0)
  900.     addq.l        #4,name_len-var(a5)
  901.     rts
  902. az:
  903.     clr.b        (A0)        ; return weg
  904.     RTS
  905.  
  906. two_input:
  907.     LEA        lbL000E5C(pc),A0
  908.     clr.l        (a0)
  909.     MOVE.L        conbase0(pc),D1
  910.  
  911. ;    MOVE.L        #lbL000E5C,D2
  912.     lea        lbl000e5c(pc),a6
  913.     move.l        a6,d2
  914.  
  915.     MOVEq        #2,D3        ; 2 Zeichen
  916.     MOVE.L        dosbase(pc),A6
  917.     JSR    -$2A(A6)        ; Read
  918.     LEA        lbL000E5C(pc),A0
  919.     CMP.B        #10,(A0)
  920.     bne.b        lbC000788
  921.     CLR.L        (A0)
  922. lbC000788
  923.     RTS
  924.  
  925. lbC00079C
  926.     MOVEQ        #7,D2
  927.     LEA        ascii0(pc),A2
  928.     MOVE.L        A2,A0
  929.  
  930.     LEA        lbL0007DC(pc),A1
  931. lbC0007AC
  932.     MOVEQ        #$30,D1
  933. lbC0007AE
  934.     ADDQ.W        #1,D1
  935.     SUB.L        (A1),D0
  936.     BCC.b    lbC0007AE
  937.     SUBQ.W        #1,D1
  938.     ADD.L        (A1),D0
  939.     MOVE.B        D1,(A0)+
  940.     ADDq.L        #4,A1
  941.     DBRA    D2,lbC0007AC
  942.  
  943.     MOVE.L        A2,A0
  944. lbC0007C6
  945.     clr.B        (A0)+
  946.     CMP.B        #$30,(A0)
  947.     beq.b    lbC0007C6
  948.     RTS
  949.  
  950.     cnop 0,4
  951. VAR:
  952.     dc.b    "$VER: LHSFX V1.5a (14.11.92)",0
  953.  
  954.     cnop 0,4
  955.  
  956. ;--------------------------------------------------------------------
  957. ;                         *** Variablen ***
  958. ;--------------------------------------------------------------------
  959.  
  960. backsave_buf:    blk.l    40
  961.  
  962. my_task:    dc.l    0
  963.  
  964. ascii0    dc.b    '00000000',0
  965.     even
  966. lbL0007DC
  967.     dc.l    $989680
  968.     dc.l    $F4240
  969.     dc.l    $186A0
  970.     dc.l    $2710
  971.     dc.l    $3E8
  972.     dc.l    $64
  973.     dc.l    10
  974.     dc.l    1
  975. doslibrary
  976.     dc.b    'dos.library',0
  977.  
  978.     cnop 0,4
  979. dosbase:    dc.l    0
  980. lock_handle:    dc.l    0
  981.  
  982. info_block
  983.     dc.l    0
  984. is_it_datei
  985.     dc.l    0
  986.  
  987.     dc.l    0
  988.     dc.l    0
  989.     dc.l    0
  990.     dc.l    0
  991.     dc.l    0
  992.     dc.l    0
  993.     dc.l    0
  994.     dc.l    0
  995.     dc.l    0
  996.     dc.l    0
  997.     dc.l    0
  998.     dc.l    0
  999.     dc.l    0
  1000.     dc.l    0
  1001.     dc.l    0
  1002.     dc.l    0
  1003.     dc.l    0
  1004.     dc.l    0
  1005.     dc.l    0
  1006.     dc.l    0
  1007.     dc.l    0
  1008.     dc.l    0
  1009.     dc.l    0
  1010.     dc.l    0
  1011.     dc.l    0
  1012.     dc.l    0
  1013.     dc.l    0
  1014.     dc.l    0
  1015.     dc.l    0
  1016. file_len_imlock:        ; Laenge in bytes
  1017.     dc.l    0
  1018.     dc.l    0
  1019.     dc.l    0
  1020.     dc.l    0
  1021.     dc.l    0
  1022.     dc.l    0
  1023.     dc.l    0
  1024.     dc.l    0
  1025.     dc.l    0
  1026.     dc.l    0
  1027.     dc.l    0
  1028.     dc.l    0
  1029.     dc.l    0
  1030.     dc.l    0
  1031.     dc.l    0
  1032.     dc.l    0
  1033.     dc.l    0
  1034.     dc.l    0
  1035.     dc.l    0
  1036.     dc.l    0
  1037.     dc.l    0
  1038.     dc.l    0
  1039.     dc.l    0
  1040.     dc.l    0
  1041.     dc.l    0
  1042.     dc.l    0
  1043.     dc.l    0
  1044.     dc.l    0
  1045.     dc.l    0
  1046.     dc.l    0
  1047.     dc.l    0
  1048.     dc.l    0
  1049.     dc.l    0
  1050.     dc.l    0
  1051. file_handle2    dc.l    0
  1052. File_handle    dc.l    0
  1053. alloc2        dc.l    0
  1054. extract_buf    dc.l    0
  1055. file_len_backsave    dc.l    0
  1056. file_len_umgerechnet    dc.l    0
  1057. new_filepacked_len    dc.l    0
  1058. packed_len    dc.l    0
  1059. pack_checksum    dc.l    0
  1060. alloc0        dc.l    0
  1061. lbL000DD0    dc.l    0
  1062. lbL000DD4    dc.l    0
  1063. lbL000DD8    dc.l    $FFFFFFFF
  1064.         dc.l    0
  1065. lbL000DE0    dc.l    $3F2
  1066. crunch_strucc    dc.l    0
  1067.     dc.l    0
  1068.     dc.l    0
  1069.     dc.l    0
  1070.     dc.l    0
  1071.     dc.l    0
  1072.     dc.l    0
  1073. conbase0    dc.l    0
  1074. ;conbase1    dc.l    0
  1075. name_buff    blk.l    21,0
  1076. name_len    dc.l    0
  1077. dir_len:    dc.l    0
  1078. load_dir_len:    dc.l    0
  1079. lbL000E5C    dc.l    0
  1080. arq        dc.w    0
  1081. even
  1082. led        dc.b    0
  1083.     even
  1084. ;--------------------------------------------------------------------
  1085. ;                      *** my code (R.T.) ***
  1086. ;--------------------------------------------------------------------
  1087.  
  1088. use_it
  1089.     movem.l        d0-d7/a0-a6,-(a7); save registers
  1090.     move.l        d0,-(sp)
  1091.     bsr.w    claro
  1092.     lea        load_dir(pc),a2
  1093.     lea        load_file(pc),a3
  1094.     move.l        load_flags(pc),d0
  1095.     lea        frq_1(pc),a0
  1096.     lea        frq_3(pc),a4
  1097.     move.l        a1,(a0)+
  1098.     move.l        a2,(a0)+
  1099.     move.l        a3,(a0)+
  1100.     move.l        d0,(a4)
  1101.     lea        frq_Structure(pc),a0
  1102.     move.l        reqbase(pc),a6
  1103.     moveq        #0,d0
  1104.     jsr    FileRequester(a6)
  1105.     tst.w        d0
  1106.     beq.b    das_war_dann_nix
  1107.  
  1108.     moveq        #0,d1
  1109.     lea        load_dir(pc),a0
  1110.     LEA        name_buff(pc),A1
  1111.     lea        load_file(pc),a2
  1112. work_script_string:            ; A0,A1,A2 & D0
  1113.     addq.w        #1,d1
  1114.     move.b        (a0)+,(a1)+
  1115.     bne.b    work_script_string
  1116.     subq.w        #2,d1
  1117.     subq.w        #2,a1
  1118.     move.b        (a1),d0
  1119.     cmp.b        #':',d0
  1120.     beq.b    work_script_string1
  1121.     cmp.b        #'/',d0
  1122.     beq.b    work_script_string1
  1123.     addq.l        #1,a1
  1124.     add.w        #1,d1
  1125.     move.b        #'/',(a1)
  1126. work_script_string1
  1127.     addq.l        #1,a1
  1128.     move.l        d1,load_dir_len-var(a5)
  1129.     add.l        #1,load_dir_len-var(a5)
  1130. work_script_string2
  1131.     addq.w        #1,d1
  1132.     move.b        (a2)+,(a1)+
  1133.     bne.b    work_script_string2
  1134.  
  1135.     subq.l        #1,a1
  1136.  
  1137.     move.l        (sp)+,d0    ; 0 Archiv | 1 File
  1138.     tst.l        d0
  1139.     bne.b    wq
  1140.  
  1141.     move.b        #'.',(a1)+
  1142.     move.b        #'S',(a1)+
  1143.     move.b        #'F',(a1)+
  1144.     move.b        #'X',(a1)+
  1145.     clr.b        (a1)
  1146.     movem.l     (a7)+,d0-d7/a0-a6
  1147.     LEA        name_buff(pc),A0
  1148.     bra.w    howdi1
  1149. wq
  1150.     MOVE.L        D1,name_len-var(a5)
  1151.     clr.b        (a1)
  1152.  
  1153.     movem.l     (a7)+,d0-d7/a0-a6
  1154.     LEA        name_buff(pc),A0
  1155.     bra.w    howdi
  1156.  
  1157.  
  1158. das_war_dann_nix
  1159.     move.l        (sp)+,d0
  1160.     tst.l        d0
  1161.     bne.b    wq1
  1162.     movem.l     (a7)+,d0-d7/a0-a6
  1163.     bra.w    free_mem            ; archiv
  1164. wq1
  1165.     movem.l     (a7)+,d0-d7/a0-a6
  1166.     bra.w    lBC000518            ; file
  1167.  
  1168. ask_exit:
  1169.     movem.l        d0-d7/a0-a6,-(a7); save registers
  1170.     lea        master_text(pc),a1    
  1171.     sub.l        a2,a2
  1172.     sub.l        a3,a3
  1173.     lea        ask_exit_text1(pc),a4
  1174.     lea        ask_exit_text0(pc),a5
  1175.     bsr.w    set_text_req
  1176.     tst.w        d0
  1177.     beq.b    disp
  1178.     movem.l     (a7)+,d0-d7/a0-a6
  1179.     bra.w    lbc000448    ; file
  1180. disp
  1181.     movem.l     (a7)+,d0-d7/a0-a6
  1182.     bra.w    lbc000426    ; display
  1183.  
  1184. req_ask_overwrite
  1185.     movem.l        d0-d7/a0-a6,-(a7); save registers
  1186.     lea        master_text1(pc),a1    
  1187.     sub.l        a2,a2
  1188.     sub.l        a3,a3
  1189.     lea        ask_exit_text2(pc),a4
  1190.     lea        ask_exit_text3(pc),a5
  1191.     bsr.w    set_text_req
  1192.     tst.w        d0
  1193.     beq.b    ov_n
  1194.     movem.l     (a7)+,d0-d7/a0-a6
  1195.     bra.w    overwrite_yes
  1196. ov_n
  1197.     movem.l     (a7)+,d0-d7/a0-a6
  1198.     bra.w    overwrite_no
  1199.  
  1200.     cnop 0,4
  1201.  
  1202. nio:    blk.l    4,0
  1203.  master_Text:
  1204.     DC.B "    Do you want the just crunched part as a    ",10
  1205.     dc.b " [F]ile decrunched or as a TEXT [D]isplayed ?? ",10,0
  1206.  
  1207.     EVEN
  1208.  ask_exit_Text1:    DC.b " »» F «« ",0
  1209.     even
  1210.  ask_exit_text0:    DC.b " »» D «« ",0
  1211.     EVEN
  1212.  master_Text1:
  1213.     DC.B "    Archiv exists. Shall I overwrite it?    ",10,0
  1214.  
  1215.     EVEN
  1216.  ask_exit_Text2:    DC.b " »» Y «« ",0
  1217.     even
  1218.  ask_exit_text3:    DC.b " »» N «« ",0
  1219.  
  1220.     cnop 0,4
  1221.  
  1222. ; entpack dir festlegen
  1223. and_again:
  1224.     movem.l        d0-d7/a0-a6,-(a7); save registers
  1225. and_agi:
  1226.     lea        load_title2(pc),a1
  1227.     lea        load_dir1(pc),a2
  1228.     lea        load_file1(pc),a3
  1229.     move.l        load_flags3(pc),d0
  1230.     lea        frq_1(pc),a0
  1231.     lea        frq_3(pc),a4
  1232.     move.l        a1,(a0)+
  1233.     move.l        a2,(a0)+
  1234.     move.l        a3,(a0)+
  1235.     move.l        d0,(a4)
  1236.     lea        frq_Structure(pc),a0
  1237.     move.l        reqbase(pc),a6
  1238.     moveq        #0,d0
  1239.     jsr    FileRequester(a6)
  1240.     tst.w        d0
  1241.     beq.b    and_agi
  1242.  
  1243.     lea        load_dir1(pc),a0
  1244.     move.l        extract_buf(pc),A1
  1245.     lea        $10(a1),a1
  1246.     moveq        #0,d1
  1247. work_script_string0
  1248.     addq.w        #1,d1
  1249.     move.b        (a0)+,(a1)+
  1250.     bne.b    work_script_string0
  1251.     subq.w        #2,d1
  1252.     subq.l        #2,a1
  1253.     move.b        (a1),d0
  1254.     cmp.b        #':',d0
  1255.     beq.b    work_script_string10
  1256.     cmp.b        #'/',d0
  1257.     beq.b    work_script_string10
  1258.     addq.l        #1,a1
  1259.     addq.w        #1,d1
  1260.     move.b        #'/',(a1)
  1261. work_script_string10
  1262.     addq.w        #1,d1
  1263.     move.l        d1,dir_len-var(a5)
  1264.  
  1265.     addq.l        #1,a1
  1266.     clr.b        (a1)
  1267.  
  1268.     move.l        a1,a2
  1269.  
  1270. ; saves the extract path back
  1271.     lea        backsave_buf(pc),a1
  1272.     move.l        extract_buf(pc),a0
  1273.     lea        $10(a0),a0
  1274. work_script_string_buff:
  1275.     move.b        (a0)+,(a1)+
  1276.     bne.b    work_script_string_buff
  1277.  
  1278.  
  1279. ; inserts the name the first time
  1280.  
  1281.     lea        name_buff(pc),A0
  1282.     MOVE.L        load_dir_len-var(a5),d0
  1283.     add.l        d0,a0
  1284. cli_name_to_sfx:
  1285.     move.b        (a0)+,(a2)+
  1286.     bne.b    cli_name_to_sfx
  1287.  
  1288.     clr.b        -1(a2)
  1289.  
  1290.     movem.l     (a7)+,d0-d7/a0-a6
  1291.  
  1292.     bra.w    lbc0004c6
  1293. ;---------------------------------------------------------------------
  1294. about:
  1295.     lea        about_text(pc),a1
  1296.     lea        about_middletext(pc),a3
  1297.     sub.l        a4,a4
  1298.     sub.l        a5,a5
  1299.     sub.l        a2,a2
  1300. ;    bsr.b    set_text_req
  1301.  
  1302. *****************************************************************************
  1303. ;     A1 -> message text
  1304. ;     A2 -> zeiger auf controls
  1305. ;     A3 -> middle   2
  1306. ;     A4 -> left     1    positive
  1307. ;     A5 -> right    0    negative
  1308. set_text_req:
  1309.     lea        TR_structure(pc),a0
  1310.     move.l        a1,(a0)+
  1311.     move.l        a2,(a0)+
  1312.     addq.l        #4,a0    
  1313.     move.l        a3,(a0)+
  1314.     move.l        a4,(a0)+
  1315.     move.l        a5,(a0)
  1316.     move.l        reqbase(pc),a6
  1317.     lea        TR_Structure(pc),a0
  1318.     jsr    TextRequest(a6)
  1319.     lea        Var(pc),a5
  1320.     rts
  1321.     cnop 0,4
  1322. ;=============================================================================
  1323. ;=                         TextRequester-Structure                           =
  1324. ;=============================================================================
  1325. TR_Structure:
  1326.     DC.l 0    ;This is the message text, including printf() style formatting if desired.
  1327.     DC.l 0    ;This is the address of the parameter list, if printf() style formatting is used.
  1328. on_my_window1: 
  1329.     DC.l 0    ;TR_Window    ;This is an optional (zero if not used) pointer to a window on the screen you
  1330.             ;would like the Requester to show up on.
  1331.     DC.l 0    ; lower middle (returns 2).
  1332.     DC.l 0    ; lower left hand corner (returns 1).
  1333.     DC.l 0    ; lower right (returns 0).
  1334.     DC.l TR_title    ; title for the window.
  1335.     DC.w 0 ;TR_KeyMask    ;This is the qualifier mask for the keyboard shortcuts.
  1336.             ;Use $FFFF to allow any qualifiers (or none).
  1337.             ;Zero means that no keyboard shortcuts are allowed.
  1338.     DC.w 0    ;TR_textcolor    ;Color of the text.  Uses Color 1 if no Color specified.
  1339.     DC.w 3    ;TR_detailcolor    ;Detail and block color, as in a NewWindow structure.  If
  1340.     DC.w 2    ;TR_blockcolor    ;both are left zero, block pen will be set to 1.
  1341.     DC.w 0    ;TR_versionnumber    ;Make SURE this is set to zero.
  1342.     DC.l 0    ;TR_rfu1    ;Make SURE you leave these two zeroed also.
  1343.     DC.l 0    ;TR_rfu2    ;Make SURE you leave these two zeroed also.
  1344.  TR_Title:    DC.b 0
  1345.  
  1346.     even
  1347. ;=============================================================================
  1348. ;=                         FileRequester-Structure                           =
  1349. ;=============================================================================
  1350. ;frq_Flags: EQU FRQINFOGADGET!FRQABSOLUTEXY!FRQLOADING;
  1351. ;ESS_Structure:    ;ExtendedSelectStructure
  1352. ; DC.l 0    ;ESS_NextFile    ;This must be the first element!
  1353. ; DC.w 0    ;ESS_NameLength    ;File name length, not including the terminating zero.
  1354. ; DC.w 0    ;ESS_Pad
  1355. ; DC.l 0    ;ESS_Node    ;Node that the user has extended selected.
  1356. ;==============================================================================
  1357. ;=         When  using  extended  select,  the  directory pointer is Required =
  1358. ;= since  only  the  file  names  are stored in the frq_ExtendedSelect linked =
  1359. ;= list.   When  not  using  extended select, you can either have frq_Dir and =
  1360. ;= frq_File  point  be initialized, or you can have frq_PathName initialized, =
  1361. ;= or  both.   frq_PathName will contain the concatenation of the file and    =
  1362. ;= directory chosen.                                                          =
  1363. ;==============================================================================
  1364.     EVEN
  1365.  
  1366. frq_Structure:
  1367.  DC.w 0    ; frq_VersionNumber : MUST BE ZERO !!!!!!!!!
  1368. frq_1:
  1369.  DC.l 0        ;Hailing text
  1370.  DC.l 0        ;Directory array (must be DSIZE+1 characters long)
  1371.  DC.l 0     ;Filename array (must be FCHARS+1 characters long)
  1372.     ;If you initialize this variable then the file Requester will place the complete path name in here on exit.
  1373. frq_2:
  1374.  DC.l frq_PathName    ;Complete path name array - (must be DSIZE+FCHARS+2 long)
  1375. on_my_window: 
  1376.  DC.l 0    ; frq_Window : Window Requesting or NULL
  1377.     ;Initialize these to the number of lines and columns you want to appear in the inner window that
  1378.     ;displays the file names.  If you leave these set to zero then default values will be used.
  1379.  DC.w 15    ; frq_MaxExtendedSelect : Zero implies a maximum of 65535, as long as FRQEXTSELECT is set.
  1380.  DC.w 16    ; frq_numlines   : Number of lines in file window.
  1381.  DC.w 32    ; frq_numcolumns : Number of columns in file window.
  1382.  DC.w 12    ; frq_devcolumns : Number of columns in device window.
  1383. frq_3:
  1384.  DC.l 0    ;Various - umm - flags.  See above for more info.
  1385.  DC.w 3    ; frq_dirnamescolor    : These five colors will all default
  1386.  DC.w 0    ; frq_filenamescolor   : to color one if you don't specify
  1387.  DC.w 3    ; frq_devicenamescolor : a color (ie; if you specify color zero).
  1388.  DC.w 0    ; frq_fontnamescolor   : If you want color zero to be used, specify
  1389.  DC.w 3    ; frq_fontsizescolor   : color 32, or some other too large number
  1390.     ;which mods down to zero.
  1391.  DC.w 0    ; frq_detailcolor : If both of these colors are specified as
  1392.  DC.w 0    ; frq_blockcolor  : zero then the block pen will be set to one.
  1393.  DC.w 0    ; frq_gadgettextcolor   : The color for the text of the five boolean gadgets.  Defaults to 1.
  1394.  DC.w 0    ; frq_textmessagecolor  : The color for the message at the screen top.  Defaults to 1.
  1395.  DC.w 0    ; frq_stringnamecolor   : The color for the words Drawer, File, Hide and Show.  Defaults to 3.
  1396.  DC.w 0    ; frq_stringgadgetcolor : The color for the borders of the string gadgets.  Defaults to 3.
  1397.  DC.w 0    ; frq_boxbordercolor : The color for the boxes around the file and directory areas.  Defaults to 3.
  1398.  DC.w 0    ; frq_gadgetboxcolor : The color for the boxes around the five boolean gadgets.  Defaults to 3.
  1399.  blk.b 36,0    ; frq_RFU_Stuff,36 : This area, which is reserved for
  1400.     ;future use, should all be zero.
  1401.  blk.b 12    ; frq_DirDateStamp,ds_SIZEOF : A copy of the cached directories date stamp. (12 Bytes !!)
  1402.     ;There should never be any need to change this.
  1403.  DC.w 0; frq_WindowLeftEdge : These two fields are only used when the
  1404.  DC.w 8; frq_WindowTopEdge  : FRQABSOLUTEXY flag is set.  They specify
  1405.     ;the location of the upper left hand
  1406.     ;corner of the window.
  1407.  DC.w 0    ; frq_FontYSize : These fields are used to return the selected
  1408.  DC.w 0    ; frq_FontStyle : font size and style, only applicable when the
  1409.     ;font bit is set.
  1410.     ;If you set the extended select bit and the user extended selects, the list of filenames will start from here.
  1411. acid:
  1412.  DC.l 0    ; frq_ExtendedSelect : Linked list of ESStructures if more than one filename is chosen.
  1413.     ;All of the following variables you shouldn't need to touch.  They contain fields that the file
  1414.     ;Requester sets and likes to preserve over calls, just to make life easier for the user.
  1415. frq_WildHide:    DC.B "*.info"
  1416. frq_WildHide0:    equ *-frq_WildHide
  1417.     blk.b WILDLENGTH+2-frq_WildHide0 ; frq_Hide Wildcards for files to hide.
  1418. frq_WildShow:    DC.B 0
  1419. frq_WildShow0:    equ *-frq_WildShow
  1420.     blk.b WILDLENGTH+2-frq_WildShow0 ; frq_Show Wildcards for files to show.
  1421.  DC.w 0    ; frq_FileBufferPos : Cursor's  position  and first
  1422.  DC.w 0    ; frq_FileDispPos   : displayed character number in
  1423.  DC.w 0    ; frq_DirBufferPos  : the three string gadgets.  No
  1424.  DC.w 0    ; frq_DirDispPos    : need  to initialized these if
  1425.  DC.w 0    ; frq_HideBufferPos : you don't want to.
  1426.  DC.w 0    ; frq_HideDispPos
  1427.  DC.w 0    ; frq_ShowBufferPos
  1428.  DC.w 0    ; frq_ShowDispPos
  1429. ;==============================================================================
  1430. ;=         The  following  fields are PRIVATE!  Don't go messing with them or =
  1431. ;==============================================================================
  1432.  DC.l 0    ; frq_Memory  : Memory allocated for dir entries.
  1433.  DC.l 0    ; frq_Memory2 : Used for currently hidden files.
  1434.  DC.l 0    ; frq_Lock    : Contains lock on directories being read across calls.
  1435.  blk.b DSIZE+2    ; frq_PrivateDirBuffer : Used for keeping a record of which
  1436.     ;directory we have file names for.
  1437.  DC.l 0    ; frq_FileInfoBlock
  1438.  DC.w 0    ; frq_NumEntries
  1439.  DC.w 0    ; frq_NumHiddenEntries
  1440.  DC.w 0    ; frq_filestartnumber
  1441.  DC.w 0    ; frq_devicestartnumber
  1442. ;=============================================================================
  1443. frq_PathName:    blk.b DSIZE+FCHARS+2    ;Here Will Be The Complete PathName !!!
  1444. ;-----------------------------------------------------------------------------
  1445.     EVEN
  1446.  reqbase:    dc.l    0
  1447.  reqname:    dc.b    'req.library',0
  1448.     EVEN
  1449.  load_Flags1: EQU FRQSHOWINFO!FRQINFOGADGET!FRQABSOLUTEXY!FRQLOADING
  1450.  load_flags:    dc.l load_flags1
  1451.  load_File:    DC.b 0
  1452.  load_File0:    EQU *-load_File
  1453.     blk.b FCHARS+1-load_File0
  1454.  load_Title:    DC.b "«« CHOOSE FILE TO CRUNCH »»",0
  1455.     EVEN
  1456.  load_Dir:    DC.b "RAM:"
  1457.  load_Dir0:    EQU *-load_Dir
  1458.     blk.b DSIZE+1-load_Dir0
  1459.     even
  1460.  load_Title1:    DC.b "«« CHOOSE ARCHIVNAME »»",0
  1461.     even
  1462.  load_Title2:    DC.b "«« CHOOSE EXTRACT PATH »»",0
  1463.     even
  1464.  load_Flags2: EQU FRQDIRONLY!FRQINFOGADGET!FRQABSOLUTEXY!FRQLOADING
  1465.  load_flags3:    dc.l load_flags2
  1466.  load_File1:    DC.b 0
  1467.  load_File2:    EQU *-load_File1
  1468.     blk.b FCHARS+1-load_File2
  1469.     even
  1470.  load_Dir1:    DC.b "RAM:"
  1471.  load_Dir2:    EQU *-load_Dir1
  1472.     blk.b DSIZE+1-load_Dir2
  1473.     EVEN
  1474.  about_Text:
  1475.     dc.b "-----------------------------------------------",10
  1476.     DC.b "          »»  LhSFX Archive  V1.5  ««          ",10
  1477.     dc.b "            By Mike Kennedy  © 1991            ",10
  1478.     dc.b "       Cruncher and Decruncher  © by MXM       ",10
  1479.     dc.b "       Improved by Ralf Thanner in 91/92       ",10
  1480.     dc.b "-----------------------------------------------",10,10
  1481.     dc.b " 1.  Choose ARCHIVNAME. '.SFX' will be added.  ",10 
  1482.     dc.b " 2.  Choose FILE to crunch.                    ",10,10
  1483.     dc.b " 3.  Choose if it's [F]ile or [D]isplay.       ",10,10
  1484.     dc.b " 4.  Choose EXTRACT path for archive.          ",10,10
  1485.     dc.b " 5.  Now quit or go to step 2.                 ",10,10
  1486.     dc.b " To close off and finish an archive just click ",10
  1487.     dc.b " the 'FORGET IT' or  'CANCEL' icon in the file ",10
  1488.     dc.b " drawer.                                       ",10,0
  1489.  
  1490.     even
  1491.  about_middletext:
  1492.     DC.b " »» OK «« ",0
  1493.     EVEN
  1494.  
  1495. ;===========================================================================
  1496. ;
  1497. ;        A data compression system for the Commodore Amiga computer
  1498. ;           written by Holger P. Krekel and Olaf 'Olsen' Barthel
  1499. ;                  © Copyright 1990, all rights reserved.
  1500. ;
  1501. ;===========================================================================
  1502. ;
  1503. ;******* Thanks for these versions ********
  1504. ; LZHUF.C English version 1.0
  1505. ; Based on Japanese version 29-NOV-1988
  1506. ; LZSS coded by Haruhiko OKUMURA
  1507. ; Adaptive Huffman Coding coded by Haruyasu YOSHIZAKI
  1508. ; Edited and translated to English by Kenji RIKITAKE
  1509.  
  1510. ;******* Many thanks to Olaf for knowledge and the above ******
  1511. ;******* sourcecodes                     *******
  1512. ;******* they were used to get to know some methods     *******
  1513. ;**************************************************************
  1514. ;******* LZHUF Packing                     *******
  1515. ;******* written in assembly by HPK 24/08/90        *******
  1516. ;
  1517. ;===========================================================================
  1518.  
  1519. ; damm well programmed code...
  1520.  
  1521. lbC0007FC
  1522.     MOVEM.L    D2-D7/A2-A6,-(SP)
  1523.     PEA    (A0)
  1524.     bsr.w    lbC000A4E
  1525.     MOVE.L    (SP)+,A0
  1526.     SUB.L    8(A0),A1
  1527.     CMP.W    #$10,D7
  1528.     beq.b    lbC000814
  1529.     ADDQ.L    #2,A1
  1530. lbC000814
  1531.     MOVE.L    A1,12(A0)
  1532.     MOVE.L    A1,D0
  1533.     MOVEM.L    (SP)+,D2-D7/A2-A6
  1534.     RTS
  1535.  
  1536. lbC000820
  1537.     MOVEQ    #1,D4
  1538.     LEA    -$2078(A3),A6
  1539.     LEA    (A6),A2
  1540.     ADD.W    D0,A2
  1541.     MOVE.W    (A2)+,D5
  1542.     ADD.W    #$1001,D5
  1543.     ADD.W    D5,D5
  1544.     MOVE.W    #$2000,D6
  1545.     MOVE.W    D6,0(A3,D0.W)
  1546.     MOVE.W    D6,0(A4,D0.W)
  1547.     MOVEQ    #0,D6
  1548.     MOVE.L    A2,D3
  1549. lbC000842
  1550.     MOVE.L    D3,A2
  1551. lbC000844
  1552.     TST.W    D4
  1553.     BPL.b    lbC00085C
  1554.     MOVE.W    0(A3,D5.W),D2
  1555.     CMP.W    #$2000,D2
  1556.     bne.b    lbC000870
  1557.     MOVE.W    D0,0(A3,D5.W)
  1558.     MOVE.W    D5,0(A5,D0.W)
  1559.     RTS
  1560.  
  1561. lbC00085C
  1562.     MOVE.W    0(A4,D5.W),D2
  1563.     CMP.W    #$2000,D2
  1564.     bne.b    lbC000870
  1565.     MOVE.W    D0,0(A4,D5.W)
  1566.     MOVE.W    D5,0(A5,D0.W)
  1567.     RTS
  1568.  
  1569. lbC000870
  1570.     MOVE.W    D2,D5
  1571.     LEA    -$2076(A3),A6
  1572.     ADD.W    D2,A6
  1573.     MOVE.L    A2,D3
  1574.     MOVE.W    (A2)+,D4
  1575.     SUB.W    (A6)+,D4
  1576.     bne.b    lbC000842
  1577.     MOVE.W    (A2)+,D4
  1578.     SUB.W    (A6)+,D4
  1579.     bne.b    lbC000842
  1580.     MOVEQ    #$39,D2
  1581. lbC000888
  1582.     MOVE.W    (A2)+,D4
  1583.     SUB.W    (A6)+,D4
  1584.     DBNE    D2,lbC000888
  1585.  
  1586.     NEG.W    D2
  1587.     ADD.W    #$3C,D2
  1588.     MOVE.L    D3,A2
  1589.     CMP.W    D6,D2
  1590.     BLT.b    lbC000844
  1591.     beq.b    lbC0008B4
  1592.     MOVE.W    D2,D6
  1593.     MOVE.W    D0,D3
  1594.     SUB.W    D5,D3
  1595.     AND.W    #$1FFE,D3
  1596.     MOVE.W    D3,$6206(A3)
  1597.     CMP.W    #$3C,D2
  1598.     BCS.b    lbC000844
  1599.     bra.b    lbC0008D2
  1600.  
  1601. lbC0008B4
  1602.     bchg    #1,$bfe001
  1603. ;    MOVE.W    D3,$DFF182
  1604.     MOVE.W    D0,D3
  1605.     SUB.W    D5,D3
  1606.     AND.W    #$1FFE,D3
  1607.     CMP.W    $6206(A3),D3
  1608.     BCC.w    lbC000844
  1609.     MOVE.W    D3,$6206(A3)
  1610.     BRA.w    lbC000844
  1611.  
  1612. lbC0008D2
  1613.     MOVE.W    0(A5,D5.W),0(A5,D0.W)
  1614.     MOVE.W    0(A3,D5.W),0(A3,D0.W)
  1615.     MOVE.W    0(A4,D5.W),0(A4,D0.W)
  1616.     MOVE.W    0(A3,D5.W),D2
  1617.     MOVE.W    D0,0(A5,D2.W)
  1618.     MOVE.W    0(A4,D5.W),D2
  1619.     MOVE.W    D0,0(A5,D2.W)
  1620.     MOVE.W    0(A5,D5.W),D2
  1621.     CMP.W    0(A4,D2.W),D5
  1622.     bne.b    lbC000904
  1623.     MOVE.W    D0,0(A4,D2.W)
  1624.     bra.b    lbC000908
  1625.  
  1626. lbC000904
  1627.     MOVE.W    D0,0(A3,D2.W)
  1628. lbC000908
  1629.     MOVE.W    #$2000,0(A5,D5.W)
  1630.     RTS
  1631.  
  1632. lbC000910
  1633.     MOVE.W    #$2000,D4
  1634.     CMP.W    0(A5,D0.W),D4
  1635.     beq.b    lbC000992
  1636.     CMP.W    0(A4,D0.W),D4
  1637.     bne.b    lbC000926
  1638.     MOVE.W    0(A3,D0.W),D2
  1639.     bra.b    lbC000972
  1640.  
  1641. lbC000926
  1642.     CMP.W    0(A3,D0.W),D4
  1643.     bne.b    lbC000932
  1644.     MOVE.W    0(A4,D0.W),D2
  1645.     bra.b    lbC000972
  1646.  
  1647. lbC000932
  1648.     MOVE.W    0(A3,D0.W),D2
  1649.     CMP.W    0(A4,D2.W),D4
  1650.     beq.b    lbC000966
  1651. lbC00093C
  1652.     MOVE.W    0(A4,D2.W),D2
  1653.     CMP.W    0(A4,D2.W),D4
  1654.     bne.b    lbC00093C
  1655.     MOVE.W    0(A5,D2.W),D3
  1656.     MOVE.W    0(A3,D2.W),0(A4,D3.W)
  1657.     MOVE.W    0(A3,D2.W),D3
  1658.     MOVE.W    0(A5,D2.W),0(A5,D3.W)
  1659.     MOVE.W    0(A3,D0.W),D3
  1660.     MOVE.W    D3,0(A3,D2.W)
  1661.     MOVE.W    D2,0(A5,D3.W)
  1662. lbC000966
  1663.     MOVE.W    0(A4,D0.W),D3
  1664.     MOVE.W    D3,0(A4,D2.W)
  1665.     MOVE.W    D2,0(A5,D3.W)
  1666. lbC000972
  1667.     MOVE.W    0(A5,D0.W),D3
  1668.     MOVE.W    D3,0(A5,D2.W)
  1669.     CMP.W    0(A4,D3.W),D0
  1670.     beq.b    lbC00098A
  1671.     MOVE.W    D2,0(A3,D3.W)
  1672.     MOVE.W    D4,0(A5,D0.W)
  1673.     RTS
  1674.  
  1675. lbC00098A
  1676.     MOVE.W    D2,0(A4,D3.W)
  1677.     MOVE.W    D4,0(A5,D0.W)
  1678. lbC000992
  1679.     RTS
  1680.  
  1681. lbC000994
  1682.     ADD.W    D0,D0
  1683.     MOVE.W    D0,D1
  1684.     NEG.W    D1
  1685.     LEA    -$2A5C(A3),A2
  1686.     MOVE.W    -2(A2,D1.W),D1
  1687.     MOVEQ    #0,D3
  1688.     MOVEQ    #1,D2
  1689.     MOVEQ    #0,D4
  1690. lbC0009A8
  1691.     LSR.W    D2,D3
  1692.     BTST    D2,D1
  1693.     beq.b    lbC0009B2
  1694.     OR.W    #$8000,D3
  1695. lbC0009B2
  1696.     ADD.W    D2,D4
  1697.     MOVE.W    0(A2,D1.W),D1
  1698.     CMP.W    #$4F0,D1
  1699.     bne.b    lbC0009A8
  1700.     SWAP    D3
  1701.     CLR.W    D3
  1702.     ROL.L    D7,D3
  1703.     OR.W    D3,(A1)
  1704.     SUB.B    D4,D7
  1705.     BGT.b    lbC0009D4
  1706.     ADDQ.L    #2,A1
  1707.     SWAP    D3
  1708.     MOVE.W    D3,(A1)
  1709.     MOVEQ    #$10,D3
  1710.     ADD.W    D3,D7
  1711. lbC0009D4
  1712.     CMP.W    #$8000,-$2CDA(A3)
  1713.     beq.b    lbC000A4C
  1714.     LEA    -$31CA(A3),A5
  1715.     LEA    -$2A5C(A3),A4
  1716.     LEA    -$256A(A3),A3
  1717.     MOVEQ    #1,D4
  1718.     NEG.W    D0
  1719.     MOVE.W    -2(A4,D0.W),D0
  1720. lbC0009F0
  1721.     LEA    0(A5,D0.W),A2
  1722.     MOVE.W    (A2),D1
  1723.     ADD.W    D4,D1
  1724.     MOVE.W    D1,(A2)+
  1725.     CMP.W    (A2)+,D1
  1726.     BLS.b    lbC000A3A
  1727. lbC0009FE
  1728.     CMP.W    (A2)+,D1
  1729.     BHI.b    lbC0009FE
  1730.     SUBQ.L    #4,A2
  1731.     MOVE.L    A2,D2
  1732.     SUB.L    A5,D2
  1733.     MOVE.W    (A2),0(A5,D0.W)
  1734.     MOVE.W    D1,(A2)
  1735.     MOVE.W    0(A3,D0.W),D1
  1736.     BMI.b    lbC000A18
  1737.     MOVE.W    D2,2(A4,D1.W)
  1738. lbC000A18
  1739.     MOVE.W    D2,0(A4,D1.W)
  1740.     MOVE.W    0(A3,D2.W),D3
  1741.     BMI.b    lbC000A26
  1742.     MOVE.W    D0,2(A4,D3.W)
  1743. lbC000A26
  1744.     MOVE.W    D1,0(A3,D2.W)
  1745.     MOVE.W    D0,0(A4,D3.W)
  1746.     MOVE.W    D3,0(A3,D0.W)
  1747.     MOVE.W    0(A4,D2.W),D0
  1748.     bne.b    lbC0009F0
  1749.     bra.b    lbC000A40
  1750.  
  1751. lbC000A3A
  1752.     MOVE.W    0(A4,D0.W),D0
  1753.     bne.b    lbC0009F0
  1754. lbC000A40
  1755.     LEA    $31CA(A5),A3
  1756.     LEA    $51CC(A5),A4
  1757.     LEA    $73CE(A5),A5
  1758. lbC000A4C
  1759.     RTS
  1760.  
  1761. lbC000A4E
  1762.     PEA    (A0)
  1763.     MOVE.L    $10(A0),A6
  1764.     MOVE.L    A6,A0
  1765.     LEA    $C60(A6),A1
  1766.     LEA    $76E(A6),A2
  1767.     MOVEQ    #-$2,D0
  1768.     MOVEQ    #0,D3
  1769.     MOVEQ    #1,D1
  1770.     MOVEQ    #2,D2
  1771.     MOVE.W    #$13C,D7
  1772. lbC000A6A
  1773.     MOVE.W    D1,(A0)+
  1774.     MOVE.W    D0,(A1)+
  1775.     MOVE.W    D3,-(A2)
  1776.     SUB.W    D2,D0
  1777.     ADD.W    D2,D3
  1778.     DBRA    D7,lbC000A6A
  1779.  
  1780.     MOVEQ    #0,D6
  1781.     MOVE.L    #$27A,D7
  1782.     MOVE.L    A6,A0
  1783.     LEA    $27A(A6),A1
  1784.     LEA    $EDA(A6),A2
  1785.     LEA    $76E(A6),A3
  1786.     MOVEQ    #4,D4
  1787.     MOVEQ    #2,D2
  1788.     MOVE.W    #$13B,D1
  1789. lbC000A96
  1790.     MOVE.W    (A0)+,D0
  1791.     ADD.W    (A0)+,D0
  1792.     MOVE.W    D0,(A1)+
  1793.     MOVE.W    D6,(A2)+
  1794.     MOVE.W    D7,(A3)+
  1795.     MOVE.W    D7,(A3)+
  1796.     ADD.W    D4,D6
  1797.     ADD.W    D2,D7
  1798.     DBRA    D1,lbC000A96
  1799.  
  1800.     MOVE.W    D1,(A1)
  1801.     CLR.W    $C5E(A6)
  1802.     MOVEQ    #$7F,D0
  1803.     MOVE.L    #$20002000,D1
  1804.     LEA    $71CE(A6),A0
  1805. lbC000ABC
  1806.     MOVE.L    D1,(A0)+
  1807.     DBRA    D0,lbC000ABC
  1808.  
  1809.     MOVE.W    #$3FF,D0
  1810.     LEA    $73CE(A6),A0
  1811. lbC000ACA
  1812.     MOVE.L    D1,(A0)+
  1813.     MOVE.L    D1,(A0)+
  1814.     DBRA    D0,lbC000ACA
  1815.  
  1816.     MOVE.L    (SP)+,A6
  1817.     MOVE.L    (A6),A0
  1818.     MOVE.L    8(A6),A1
  1819.     MOVE.L    4(A6),D0
  1820.     MOVE.L    $10(A6),A2
  1821.     ADD.L    A0,D0
  1822.     MOVE.L    D0,-(SP)
  1823.     LEA    $1152(A2),A6
  1824.     MOVE.W    #$7E2,D1
  1825.     MOVEQ    #0,D0
  1826. lbC000AF0
  1827.     MOVE.L    D0,(A6)+
  1828.     DBRA    D1,lbC000AF0
  1829.  
  1830.     LEA    $30DA(A2),A6
  1831.     MOVEQ    #0,D2
  1832.     MOVEQ    #0,D3
  1833. lbC000AFE
  1834.     MOVE.B    (A0)+,D3
  1835.     CMP.L    (SP),A0
  1836.     BHI.b    lbC000B0E
  1837.     MOVE.W    D3,(A6)+
  1838.     ADDQ.W    #1,D2
  1839.     CMP.W    #$3C,D2
  1840.     BCS.b    lbC000AFE
  1841. lbC000B0E
  1842.     LEA    $31CA(A2),A3
  1843.     LEA    $51CC(A2),A4
  1844.     LEA    $73CE(A2),A5
  1845.     MOVE.W    D2,$4206(A4)
  1846.     CLR.W    (A1)
  1847.     MOVEQ    #$10,D7
  1848.     MOVEQ    #0,D0
  1849.     MOVE.W    #$1F88,D1
  1850.     MOVE.W    D0,-(SP)
  1851.     MOVE.W    D1,-(SP)
  1852.     MOVE.W    D1,D0
  1853.     BSR.w    lbC000820
  1854.     MOVE.W    (SP)+,D1
  1855.     MOVE.W    (SP)+,D0
  1856. lbC000B36
  1857.     CMP.W    $4206(A4),D6
  1858.     BLS.b    lbC000B40
  1859.     MOVE.W    $4206(A4),D6
  1860. lbC000B40
  1861.     CMP.W    #2,D6
  1862.     BCS.b    lbC000C0E
  1863.     MOVE.W    D1,-(SP)
  1864.     MOVE.W    D0,-(SP)
  1865.     MOVE.W    D6,D0
  1866.     ADD.W    #$FF,D0
  1867.     BSR.w    lbC000994
  1868.     MOVEQ    #0,D0
  1869.     MOVE.W    $6206(A3),D0
  1870.     ROR.L    #7,D0
  1871.     ADD.W    D0,D0
  1872.     MOVE.W    lbW000B8E(PC,D0.W),D1
  1873.     MOVE.B    D1,D3
  1874.     CLR.B    D1
  1875.     SWAP    D0
  1876.     LSR.W    D3,D0
  1877.     OR.W    D0,D1
  1878.     ADDQ.W    #6,D3
  1879.     SWAP    D1
  1880.     CLR.W    D1
  1881.     ROL.L    D7,D1
  1882.     OR.W    D1,(A1)
  1883.     SUB.B    D3,D7
  1884.     BGT.S    lbC000B86
  1885.     ADDQ.L    #2,A1
  1886.     SWAP    D1
  1887.     MOVE.W    D1,(A1)
  1888.     MOVEQ    #$10,D1
  1889.     ADD.W    D1,D7
  1890. lbC000B86
  1891.     MOVE.W    (SP)+,D0
  1892.     MOVE.W    (SP)+,D1
  1893.     BRA.b    lbC000C24
  1894. lbC000C0E
  1895.     MOVEQ    #1,D6
  1896.     MOVE.W    D1,-(SP)
  1897.     MOVE.W    D0,-(SP)
  1898.     LEA    -$2078(A3),A6
  1899.     MOVE.W    0(A6,D1.W),D0
  1900.     BSR.w    lbC000994
  1901.     MOVE.W    (SP)+,D0
  1902.     MOVE.W    (SP)+,D1
  1903. lbC000C24
  1904.     MOVE.W    D6,D5
  1905.     SUBQ.W    #1,D5
  1906. lbC000C28
  1907.     BSR.w    lbC000910
  1908.     MOVE.B    (A0)+,D3
  1909.     CMP.L    (SP),A0
  1910.     BLS.w    lbC000C4A
  1911.     SUBQ.W    #1,$4206(A4)
  1912.     bne.w    lbC000C60
  1913.     BGT.w    lbC000B36
  1914.     MOVEQ    #0,D0
  1915.     MOVE.W    #$13C,D0
  1916.     BSR.w    lbC000994
  1917.     ADDQ.L    #4,SP
  1918.     RTS
  1919.  
  1920.     cnop    0,4
  1921.  
  1922. lbW000B8E
  1923.     dc.w    3
  1924.     dc.w    $2004
  1925.     dc.w    $3004
  1926.     dc.w    $4004
  1927.     dc.w    $5005
  1928.     dc.w    $5805
  1929.     dc.w    $6005
  1930.     dc.w    $6805
  1931.     dc.w    $7005
  1932.     dc.w    $7805
  1933.     dc.w    $8005
  1934.     dc.w    $8805
  1935.     dc.w    $9006
  1936.     dc.w    $9406
  1937.     dc.w    $9806
  1938.     dc.w    $9C06
  1939.     dc.w    $A006
  1940.     dc.w    $A406
  1941.     dc.w    $A806
  1942.     dc.w    $AC06
  1943.     dc.w    $B006
  1944.     dc.w    $B406
  1945.     dc.w    $B806
  1946.     dc.w    $BC06
  1947.     dc.w    $C007
  1948.     dc.w    $C207
  1949.     dc.w    $C407
  1950.     dc.w    $C607
  1951.     dc.w    $C807
  1952.     dc.w    $CA07
  1953.     dc.w    $CC07
  1954.     dc.w    $CE07
  1955.     dc.w    $D007
  1956.     dc.w    $D207
  1957.     dc.w    $D407
  1958.     dc.w    $D607
  1959.     dc.w    $D807
  1960.     dc.w    $DA07
  1961.     dc.w    $DC07
  1962.     dc.w    $DE07
  1963.     dc.w    $E007
  1964.     dc.w    $E207
  1965.     dc.w    $E407
  1966.     dc.w    $E607
  1967.     dc.w    $E807
  1968.     dc.w    $EA07
  1969.     dc.w    $EC07
  1970.     dc.w    $EE07
  1971.     dc.w    $F008
  1972.     dc.w    $F108
  1973.     dc.w    $F208
  1974.     dc.w    $F308
  1975.     dc.w    $F408
  1976.     dc.w    $F508
  1977.     dc.w    $F608
  1978.     dc.w    $F708
  1979.     dc.w    $F808
  1980.     dc.w    $F908
  1981.     dc.w    $FA08
  1982.     dc.w    $FB08
  1983.     dc.w    $FC08
  1984.     dc.w    $FD08
  1985.     dc.w    $FE08
  1986.     dc.w    $FF08
  1987.  
  1988. lbC000C4A
  1989.     LEA    -$2078(A3),A6
  1990.     MOVE.B    D3,1(A6,D0.W)
  1991.     CMP.W    #$76,D0
  1992.     BCC.b    lbC000C60
  1993.     LEA    $2000(A6),A2
  1994.     MOVE.B    D3,1(A2,D0.W)
  1995. lbC000C60
  1996.     MOVEQ    #2,D2
  1997.     ADD.W    D2,D0
  1998.     ADD.W    D2,D1
  1999.     MOVE.W    #$1FFE,D2
  2000.     AND.W    D2,D0
  2001.     AND.W    D2,D1
  2002.     MOVE.W    D5,-(SP)
  2003.     MOVE.W    D0,-(SP)
  2004.     MOVE.W    D1,D0
  2005.     bsr.w    lbC000820
  2006.     MOVE.W    (SP)+,D0
  2007.     MOVE.W    (SP)+,D5
  2008.     DBRA    D5,lbC000C28
  2009.  
  2010.     bra.w    lbC000B36
  2011.  
  2012. ;===========================================================================
  2013.  
  2014.     cnop 0,4
  2015. mes0:
  2016.     dc.b ''
  2017.     dc.b $0a,$9b,'7;32;41m'
  2018.     dc.b $1b,'[1m'
  2019.     dc.b ' »»»  LhSFX Archive  V1.5  ««« '   
  2020.     dc.b $9b,'0;31;40m'
  2021.     dc.b $0a,$0a
  2022.     dc.b $1b,'[3m'
  2023.     dc.b ' LhSFX Archive V1.0 by Mike Kennedy  © 1991',$0a
  2024.     dc.b ' LhSFX Archive V1.5 by Ralf Thanner  © 1992',$0a
  2025.     dc.b ' Crunch & Decrunch © by Holger Krekel & Olaf Barthel',$0a,$0a
  2026.     dc.b $1b,'[0m'
  2027. mes0end:
  2028. mes0leng = mes0end-mes0
  2029.     even
  2030. mes1:
  2031.     dc.b " Didn't find 'requester.library', now you must use the cli-interface! "
  2032.     dc.b $0a
  2033. mes1end:
  2034. mes1leng = mes1end-mes1
  2035.     even
  2036.  
  2037. mOriginal0m
  2038.     dc.b    10
  2039.     dc.b    $1B
  2040.     dc.b    '[1mOriginal > '
  2041.     dc.b    $1B
  2042.     dc.b    '[0m',0,0
  2043.  
  2044.     even
  2045. mThatfiledoes:
  2046.     dc.b    $1B
  2047.     dc.b    "[3mThat file doesn't exist ..."
  2048.     dc.b    $1B
  2049.     dc.b    '[0m',$A,0
  2050.     dc.b    0
  2051.  
  2052.     even
  2053. mCannotcompre    dc.b    $1B
  2054.     dc.b    '[3mCannot compress a directory ...'
  2055.     dc.b    $1B
  2056.     dc.b    '[0m',$A,0
  2057.     dc.b    0
  2058.  
  2059.     even
  2060. mFileorDispla    dc.b    10
  2061.     dc.b    $1B
  2062.     dc.b    '[1m[F]ile or [D]isplay > '
  2063.     dc.b    $1B
  2064.     dc.b    '[0m',0
  2065.  
  2066.     even
  2067. mCompressingP    dc.b    10
  2068.     dc.b    $1B
  2069.     dc.b    '[3mCompressing ... Please Wait ...'
  2070.     dc.b    $1B
  2071.     dc.b    '[0m',$A,0
  2072.  
  2073.     even
  2074. mExtractPath0    dc.b    10
  2075.     dc.b    $1B
  2076.     dc.b    '[1mExtract Path > '
  2077.     dc.b    $1B
  2078.     dc.b    '[0m',0,0
  2079.  
  2080.     even
  2081. mDestination0    dc.b    10
  2082.     dc.b    $1B
  2083.     dc.b    '[1mARCHIV NAME > '
  2084.     dc.b    $1B
  2085.     dc.b    '[0m',0
  2086.  
  2087.     even
  2088. pfeil
  2089.     dc.l    $A20BB3E
  2090.     dc.w    $2000
  2091. ascii    dc.b    '    (',0
  2092. bytes1    dc.b    ' bytes)',$A,0
  2093.     dc.b    0
  2094.  
  2095.     even
  2096. mCouldntalloc    dc.b    10
  2097.     dc.b    $1B
  2098.     dc.b    "[3mCouldn't allocate enough memory ..."
  2099.     dc.b    $1B
  2100.     dc.b    '[0m'
  2101.     dc.b    7
  2102.     dc.b    7
  2103.     dc.b    10
  2104.     dc.b    0
  2105.  
  2106.     even
  2107. mThatsadirect    dc.b    10
  2108.     dc.b    $1B
  2109.     dc.b    "[3mThat's a directory ..."
  2110.     dc.b    $1B
  2111.     dc.b    '[0m',$A
  2112.     dc.b    7
  2113.     dc.b    0
  2114.  
  2115.     even
  2116. mFileExistsOv    dc.b    10
  2117.     dc.b    $1B
  2118.     dc.b    '[1mArchiv Exists.  Overwrite <y/n>? '
  2119.     dc.b    $1B
  2120.     dc.b    '[0m'
  2121.     dc.b    7
  2122.     dc.b    0
  2123.  
  2124.     even
  2125. mErrorreading    dc.b    10
  2126.     dc.b    $1B
  2127.     dc.b    '[3mError reading or writing file ...'
  2128.     dc.b    $1B
  2129.     dc.b    '[0m'
  2130.     dc.b    7
  2131.     dc.b    7
  2132.     dc.b    10
  2133.     dc.b    0
  2134.  
  2135.     even
  2136. mArchiveSucce    dc.b    10
  2137.     dc.b    $1B
  2138.     dc.b    '[33mArchive Successfully Completed ...',$A,$A
  2139.     dc.b    $1B
  2140.     dc.b    '[0m',$0a,$0a,0
  2141. maend
  2142. malen=maend-mArchiveSucce
  2143.  
  2144.     even
  2145. mCompressed    dc.b    10
  2146.     dc.b    $1B
  2147.     dc.b    '[1mCompressed '
  2148. bytestobytes0    dc.b    ' bytes to '
  2149. bytes0m    dc.b    ' bytes.'
  2150.     dc.b    $1B
  2151.     dc.b    '[0m',$A
  2152.  
  2153.     even
  2154. mArchiveOpene    dc.b    10
  2155.     dc.b    $1B
  2156.     dc.b    '[1mArchive Opened ...'
  2157.     dc.b    $1B
  2158.     dc.b    '[0m',$A
  2159.  
  2160.     even
  2161. mAddedtoArchi    dc.b    10
  2162.     dc.b    $1B
  2163.     dc.b    '[1mAdded to Archive ...'
  2164.     dc.b    $1B
  2165.     dc.b    '[0m',$A
  2166.  
  2167.     cnop 0,4
  2168. ;--------------------------------------------------------------------
  2169. ;                        *** SFX header ***
  2170. ;--------------------------------------------------------------------
  2171. ;
  2172. ; here is still a lot to do, but now it's your turn....
  2173. ;
  2174. ; be carefull, don't change a bit coz othewrwise it won't decrunch
  2175. ; anymore. If you want to improve it you MUST rewrite the complete
  2176. ; code. 
  2177. ; Mike uses a hard coded reloc table (look at 'how_can_someone_do_
  2178. ; such_shit') for his header and makes it therfore a little bit
  2179. ; complicate to change the code... ha ha ha 
  2180. ;
  2181. ; The rest of the code looked like this part below so you can
  2182. ; surely imagine that I had some troubles...
  2183. ;
  2184. sfx_hunk
  2185. lbL003D00
  2186.     dc.l    $3F3
  2187.     dc.l    0
  2188.     dc.l    3
  2189.     dc.l    0
  2190.     dc.l    2
  2191.     dc.l    $20F
  2192.     dc.l    $465
  2193.     dc.l    1
  2194.     dc.l    $3E9
  2195.     dc.l    $20F
  2196.  
  2197. decruncher
  2198.     LEA    0,A1
  2199.     MOVE.L    A1,$318
  2200.     LEA    $2EC,A1        ; Dosname
  2201.     MOVEA.L    4,A6        ; what about '4.w' ?
  2202.     JSR    -$228(A6)    ; OpenLib
  2203.     MOVE.L    D0,$2FC    ; Dosbase
  2204.     BEQ.L    lbC003F78
  2205.     MOVEA.L    D0,A6
  2206.     JSR    -$3C(A6)    ; Output
  2207.     MOVE.L    D0,$304    ; OutputHandle    
  2208.     LEA    $320,A0
  2209.     BSR.L    lbC003F7C
  2210.     LEA    $308,A4
  2211.     LEA    0,A5
  2212. lbC003D70
  2213.     CMPI.L    #$11111111,(A5)    ; is it File
  2214.     BEQ.L    lbC003D92
  2215.     CMPI.L    #$22222222,(A5)    ; or Display ?
  2216.     BEQ.L    lbC003EB4    ; Show txt and wait mouse
  2217.     CMPI.L    #$FFFFFFFF,(A5)
  2218.     BEQ.L    lbC003F44
  2219.     BRA.L    lbC003F60
  2220.  
  2221. lbC003D92            ; file entpacken
  2222.     LEA    $40(A5),A0
  2223.     MOVE.L    A0,0(A4)
  2224.     MOVE.L    8(A5),4(A4)
  2225.     MOVE.L    4(A5),12(A4)
  2226.     MOVE.L    4(A5),D0
  2227.     BSR.L    lbC003FE8        ; AllocMem
  2228.     BEQ.L    lbC003F52
  2229.     MOVE.L    D0,8(A4)
  2230.     LEA    $10(A5),A0
  2231.     BSR.L    lbC003F7C
  2232.     LEA    $10(A5),A0
  2233. lbC003DC2
  2234.     CMPI.B    #$2F,(A0)
  2235.     BEQ.L    lbC003DDC    ; Create Dir
  2236. lbC003DCA
  2237.     ADDA.L    #1,A0
  2238.     CMPI.B    #0,(A0)
  2239.     BEQ.L    lbC003E2C    ; No DIr
  2240.     BRA.L    lbC003DC2
  2241.  
  2242. lbC003DDC
  2243.     MOVE.B    #0,(A0)
  2244.     MOVE.L    A0,$2F8
  2245.     LEA    $10(A5),A0
  2246.     MOVE.L    A0,D1
  2247.     MOVE.L    #$FFFFFFFE,D2
  2248.     MOVEA.L    $2FC,A6            ; Dosbase    
  2249.     JSR    -$54(A6)    ; Lock
  2250.     TST.L    D0
  2251.     BNE.L    lbC003E18
  2252.     LEA    $10(A5),A0
  2253.     MOVE.L    A0,D1
  2254.     MOVEA.L    $2FC,A6            ; Dosbase
  2255.     JSR    -$78(A6)    ; CreateDir
  2256.     TST.L    D0
  2257.     BEQ.L    lbC003F60
  2258. lbC003E18
  2259.     MOVE.L    D0,D1
  2260.     JSR    -$5A(A6)    ; Unlock
  2261.     MOVEA.L    $2F8,A0
  2262.     MOVE.B    #$2F,(A0)
  2263.     BRA.L    lbC003DCA
  2264.  
  2265. lbC003E2C
  2266.     LEA    $10(A5),A0
  2267.     MOVE.L    A0,D1
  2268.     MOVE.L    #$3Ec,D2    ; Mode RW
  2269.     MOVEA.L    $2FC,A6            ; Dosbase    
  2270.     JSR    -$1E(A6)    ; OPEN
  2271.     MOVE.L    D0,$300            ; FileHandle
  2272.     TST.L    D0
  2273.     BNE.S    lbC003E50
  2274.     BRA.L    lbC003F6A
  2275.  
  2276. lbC003E50
  2277.     MOVE.L    12(A4),D2
  2278.     LEA    Bytes.MSG(PC),A2
  2279.     BSR.L    lbC003F9A
  2280.     LEA    $2DA,A0
  2281.     BSR.L    lbC003F7C
  2282.     LEA    $308,A0
  2283.     BSR.L    lbC00414C
  2284.     MOVE.L    $300,D1
  2285.     MOVE.L    8(A4),D2
  2286.     MOVE.L    D0,D3
  2287.     JSR    -$30(A6)    ; Write
  2288.     CMP.W    #$FFFF,D0
  2289.     MOVE.L    $300,D1
  2290.     JSR    -$24(A6)    ; Close
  2291.     CLR.L    $300
  2292.     MOVEA.L    8(A4),A1
  2293.     MOVE.L    12(A4),D0
  2294.     MOVE.L    4.w,A6
  2295.     JSR    -$D2(A6)    ; FreeMem
  2296.     LEA    8(A5),A0
  2297.     ADDA.L    (A0),A5
  2298.     ADDA.L    #$40,A5
  2299.     BRA.L    lbC003D70
  2300.  
  2301. lbC003EB4
  2302.     LEA    $40(A5),A0
  2303.     MOVE.L    A0,0(A4)
  2304.     MOVE.L    8(A5),4(A4)
  2305.     MOVE.L    4(A5),12(A4)
  2306.     MOVE.L    4(A5),D0
  2307.     BSR.L    lbC003FE8        ; AllocMem
  2308.     BEQ.L    lbC003F52
  2309.     MOVE.L    D0,8(A4)
  2310.     LEA    $308,A0
  2311.     BSR.L    lbC00414C
  2312.     LEA    $382,A0
  2313.     BSR.L    lbC003F7C
  2314.     MOVE.L    $304,D1        ; OutputHandle
  2315.     MOVE.L    8(A4),D2
  2316.     MOVE.L    12(A4),D3
  2317.     MOVEA.L    $2FC,A6            ; Dosbase
  2318.     JSR    -$30(A6)    ; Write
  2319.     MOVEA.L    8(A4),A1
  2320.     MOVE.L    12(A4),D0
  2321.     MOVE.L    4.w,A6
  2322.     JSR    -$D2(A6)    ; FreeMem
  2323.     LEA    $386,A0
  2324.     BSR.L    lbC003F7C
  2325. lbC003F1E
  2326.     BTST    #6,$BFE001    ; Mouse after display
  2327.     BNE.L    lbC003F1E
  2328.     LEA    $3B2,A0
  2329.     BSR.L    lbC003F7C
  2330.     LEA    8(A5),A0
  2331.     ADDA.L    (A0),A5
  2332.     ADDA.L    #$40,A5
  2333.     BRA.L    lbC003D70
  2334.  
  2335. lbC003F44
  2336.     LEA    $35E,A0
  2337.     BSR.L    lbC003F7C
  2338.     BRA.L    lbC003F6A
  2339.  
  2340. lbC003F52
  2341.     LEA    $3F6,A0
  2342.     BSR.L    lbC003F7C
  2343.     BRA.L    lbC003F6A
  2344.  
  2345. lbC003F60
  2346.     LEA    $3B4,A0
  2347.     BSR.L    lbC003F7C
  2348. lbC003F6A
  2349.     MOVEA.L    $2FC,A1            ; Dosbase
  2350.     MOVE.L    4.w,A6
  2351.     JSR    -$19E(A6)    ; Close Lib
  2352. lbC003F78
  2353. ;    CLR.L    D0
  2354.     moveq    #0,d0
  2355.     RTS
  2356.  
  2357. lbC003F7C
  2358.     MOVEA.L    A0,A1
  2359. lbC003F7E
  2360.     TST.B    (A1)+
  2361.     BNE.S    lbC003F7E
  2362.     SUBA.L    A0,A1
  2363.     MOVE.L    A1,D3
  2364.     MOVE.L    A0,D2
  2365.     MOVE.L    $304,D1        ; OutputHandle
  2366.     MOVEA.L    $2FC,A6        ; Dosbase
  2367.     JSR    -$30(A6)    ; WRITE
  2368.     RTS
  2369.  
  2370. lbC003F9A
  2371.     MOVEQ    #7,D0
  2372.     MOVEA.L    A2,A0
  2373.     LEA    lbL003FC8(PC),A1
  2374. lbC003FA2
  2375.     MOVEQ    #$30,D1
  2376. lbC003FA4
  2377.     ADDQ.W    #1,D1
  2378.     SUB.L    (A1),D2
  2379.     BCC.S    lbC003FA4
  2380.     SUBQ.W    #1,D1
  2381.     ADD.L    (A1),D2
  2382.     MOVE.B    D1,(A0)+
  2383.     ADDA.L    #4,A1        ; Addq.l ???
  2384.     DBRA    D0,lbC003FA2
  2385.     MOVEA.L    A2,A0
  2386. lbC003FBC
  2387.     MOVE.B    #$20,(A0)+
  2388.     CMPI.B    #$30,(A0)
  2389.     BEQ.S    lbC003FBC
  2390.     RTS
  2391.  
  2392. lbL003FC8
  2393.     dc.l    $989680
  2394.     dc.l    $F4240
  2395.     dc.l    $186A0
  2396.     dc.l    $2710
  2397.     dc.l    $3E8
  2398.     dc.l    $64
  2399.     dc.l    10
  2400.     dc.l    1
  2401.  
  2402. lbC003FE8
  2403.     MOVEM.L    D1-D7/A0-A6,-(SP)
  2404.     MOVE.L    #1,D1            ; aaargh...
  2405.     MOVE.L    4.w,A6
  2406.     JSR    -$C6(A6)        ; AllocMem
  2407.     TST.L    D0
  2408.     MOVEM.L    (SP)+,D1-D7/A0-A6
  2409.     RTS
  2410.  
  2411.     dc.w    $202D
  2412. Bytes.MSG
  2413.     dc.b    '         Bytes',$A,0
  2414.     dc.b    'dos.library',0,0
  2415.     dc.b    0
  2416.     dc.b    0
  2417.     dc.b    0
  2418.     dc.b    0
  2419.     dc.b    0
  2420.     dc.b    0
  2421.     dc.b    0
  2422.     dc.b    0
  2423.     dc.b    0
  2424.     dc.b    0
  2425.     dc.b    0
  2426.     dc.b    0
  2427.     dc.b    0
  2428.     dc.b    0
  2429.     dc.b    0
  2430.     dc.b    0
  2431.     dc.b    0
  2432.     dc.b    0
  2433.     dc.b    0
  2434.     dc.b    0
  2435.     dc.b    0
  2436.     dc.b    0
  2437.     dc.b    0
  2438.     dc.b    0
  2439.     dc.b    0
  2440.     dc.b    0
  2441.     dc.b    0
  2442.     dc.b    0
  2443.     dc.b    0
  2444.     dc.b    0
  2445.     dc.b    0
  2446.     dc.b    0
  2447.     dc.b    0
  2448.     dc.b    0
  2449.     dc.b    0
  2450.     dc.b    0
  2451.     dc.b    0
  2452.     dc.b    $11
  2453.     dc.b    $94
  2454.     dc.b    10
  2455.     dc.b    $1B
  2456.  
  2457.  
  2458.     dc.b    '[42;33m LHSFX Archive '
  2459.     dc.b    $1B
  2460.     dc.b    '[0m By '
  2461.     dc.b    $1B
  2462.     dc.b    '[1mMK, MXM & RT'
  2463.     dc.b    $1B
  2464.     dc.b    '[0m  '
  2465.     dc.b    $A9
  2466.     dc.b    '1992',$A,$A,0
  2467.  
  2468.     dc.b    10
  2469.     dc.b    $1B
  2470.     dc.b    '[3mFinished Uncompressing !'
  2471.     dc.b    $1B
  2472.     dc.b    '[0m',$A,$A,0
  2473.     dc.b    $1B
  2474.     dc.b    'c',0,0
  2475.     dc.b    $1B
  2476.     dc.b    '[23H'
  2477.     dc.b    $1B
  2478.     dc.b    '[41;30m Press Left Mouse Button '
  2479.     dc.b    $1B
  2480.     dc.b    '[0m',0,0
  2481.     dc.b    10
  2482.     dc.b    0
  2483.     dc.b    10
  2484.     dc.b    $1B
  2485.     dc.b    '[1mError in Archive!  Bad Checksum or Invali'
  2486.     dc.b    'd Filetype.'
  2487.     dc.b    $1B
  2488.     dc.b    '[0m',$A,$A
  2489.     dc.b    7
  2490.     dc.b    0
  2491.     dc.b    0
  2492.     dc.b    10
  2493.     dc.b    $1B
  2494.     dc.b    '[1mUnable to Allocate Enough Memory!'
  2495.     dc.b    $1B
  2496.     dc.b    '[0m',$A,$A
  2497.     dc.b    7
  2498.     dc.b    0
  2499.  
  2500. lbC00414C
  2501.     MOVEM.L    D2-D7/A2-A6,-(SP)
  2502.     PEA    (A0)
  2503.     BSR.L    lbC0041E4
  2504.     MOVE.L    A1,D0
  2505.     move.l    (sp)+,A0
  2506.     SUB.L    8(A0),D0
  2507.     MOVE.L    D0,12(A0)
  2508.     MOVEM.L    (SP)+,D2-D7/A2-A6
  2509.     RTS
  2510.  
  2511.     MOVE.B    (A2)+,(A1)+
  2512.     MOVE.B    (A2)+,(A1)+
  2513.     MOVE.B    (A2)+,(A1)+
  2514.     MOVE.B    (A2)+,(A1)+
  2515.     MOVE.B    (A2)+,(A1)+
  2516.     MOVE.B    (A2)+,(A1)+
  2517.     MOVE.B    (A2)+,(A1)+
  2518.     MOVE.B    (A2)+,(A1)+
  2519.     MOVE.B    (A2)+,(A1)+
  2520.     MOVE.B    (A2)+,(A1)+
  2521.     MOVE.B    (A2)+,(A1)+
  2522.     MOVE.B    (A2)+,(A1)+
  2523.     MOVE.B    (A2)+,(A1)+
  2524.     MOVE.B    (A2)+,(A1)+
  2525.     MOVE.B    (A2)+,(A1)+
  2526.     MOVE.B    (A2)+,(A1)+
  2527.     MOVE.B    (A2)+,(A1)+
  2528.     MOVE.B    (A2)+,(A1)+
  2529.     MOVE.B    (A2)+,(A1)+
  2530.     MOVE.B    (A2)+,(A1)+
  2531.     MOVE.B    (A2)+,(A1)+
  2532.     MOVE.B    (A2)+,(A1)+
  2533.     MOVE.B    (A2)+,(A1)+
  2534.     MOVE.B    (A2)+,(A1)+
  2535.     MOVE.B    (A2)+,(A1)+
  2536.     MOVE.B    (A2)+,(A1)+
  2537.     MOVE.B    (A2)+,(A1)+
  2538.     MOVE.B    (A2)+,(A1)+
  2539.     MOVE.B    (A2)+,(A1)+
  2540.     MOVE.B    (A2)+,(A1)+
  2541.     MOVE.B    (A2)+,(A1)+
  2542.     MOVE.B    (A2)+,(A1)+
  2543.     MOVE.B    (A2)+,(A1)+
  2544.     MOVE.B    (A2)+,(A1)+
  2545.     MOVE.B    (A2)+,(A1)+
  2546.     MOVE.B    (A2)+,(A1)+
  2547.     MOVE.B    (A2)+,(A1)+
  2548.     MOVE.B    (A2)+,(A1)+
  2549.     MOVE.B    (A2)+,(A1)+
  2550.     MOVE.B    (A2)+,(A1)+
  2551.     MOVE.B    (A2)+,(A1)+
  2552.     MOVE.B    (A2)+,(A1)+
  2553.     MOVE.B    (A2)+,(A1)+
  2554.     MOVE.B    (A2)+,(A1)+
  2555.     MOVE.B    (A2)+,(A1)+
  2556.     MOVE.B    (A2)+,(A1)+
  2557.     MOVE.B    (A2)+,(A1)+
  2558.     MOVE.B    (A2)+,(A1)+
  2559.     MOVE.B    (A2)+,(A1)+
  2560.     MOVE.B    (A2)+,(A1)+
  2561.     MOVE.B    (A2)+,(A1)+
  2562.     MOVE.B    (A2)+,(A1)+
  2563.     MOVE.B    (A2)+,(A1)+
  2564.     MOVE.B    (A2)+,(A1)+
  2565.     MOVE.B    (A2)+,(A1)+
  2566.     MOVE.B    (A2)+,(A1)+
  2567.     MOVE.B    (A2)+,(A1)+
  2568.     MOVE.B    (A2)+,(A1)+
  2569.     MOVE.B    (A2)+,(A1)+
  2570.     MOVE.B    (A2)+,(A1)+
  2571.     BRA.L    lbC00426C
  2572.  
  2573. lbC0041E4
  2574.     PEA    (A0)
  2575.     MOVEA.L    $10(A0),A6
  2576.     MOVEA.L    A6,A0
  2577.     LEA    $C60(A6),A1
  2578.     LEA    $76E(A6),A2
  2579.     MOVEQ    #-2,D0
  2580.     MOVEQ    #0,D3
  2581.     MOVEQ    #1,D1
  2582.     MOVEQ    #2,D2
  2583.     MOVE.W    #$13C,D7
  2584. lbC004200
  2585.     MOVE.W    D1,(A0)+
  2586.     MOVE.W    D0,(A1)+
  2587.     MOVE.W    D3,-(A2)
  2588.     SUB.W    D2,D0
  2589.     ADD.W    D2,D3
  2590.     DBRA    D7,lbC004200
  2591.     MOVEQ    #0,D6
  2592.     MOVE.L    #$27A,D7
  2593.     MOVEA.L    A6,A0
  2594.     LEA    $27A(A6),A1
  2595.     LEA    $EDA(A6),A2
  2596.     LEA    $76E(A6),A3
  2597.     MOVEQ    #4,D4
  2598.     MOVEQ    #2,D2
  2599.     MOVE.W    #$13B,D1
  2600. lbC00422C
  2601.     MOVE.W    (A0)+,D0
  2602.     ADD.W    (A0)+,D0
  2603.     MOVE.W    D0,(A1)+
  2604.     MOVE.W    D6,(A2)+
  2605.     MOVE.W    D7,(A3)+
  2606.     MOVE.W    D7,(A3)+
  2607.     ADD.W    D4,D6
  2608.     ADD.W    D2,D7
  2609.     DBRA    D1,lbC00422C
  2610.     MOVE.W    D1,(A1)
  2611.     CLR.W    $C5E(A6)
  2612.     move.l    (sp)+,A5
  2613.     MOVEA.L    (A5),A0
  2614.     MOVEA.L    8(A5),A1
  2615.     MOVEA.L    $10(A5),A6
  2616.     MOVEA.L    A6,A5
  2617.     LEA    $76E(A6),A4
  2618.     LEA    $C60(A6),A3
  2619.     MOVEQ    #1,D4
  2620.     MOVEQ    #15,D5
  2621.     MOVE.W    (A0)+,D6
  2622.     BRA.S    lbC00426C
  2623.  
  2624. lbC004264
  2625.     NEG.W    D7
  2626.     LSR.W    D4,D7
  2627.     SUB.W    D4,D7
  2628.     MOVE.B    D7,(A1)+
  2629. lbC00426C
  2630.     MOVE.W    $4F0(A3),D7
  2631. lbC004270
  2632.     ADD.W    D6,D6
  2633.     BCC.L    lbC004288
  2634.     MOVE.W    2(A3,D7.W),D7
  2635.     DBMI    D5,lbC004270
  2636.     BMI.L    lbC004292
  2637. lbC004282
  2638.     MOVEQ    #15,D5
  2639.     MOVE.W    (A0)+,D6
  2640.     BRA.S    lbC004270
  2641.  
  2642. lbC004288
  2643.     MOVE.W    0(A3,D7.W),D7
  2644.     DBMI    D5,lbC004270
  2645.     BPL.S    lbC004282
  2646. lbC004292
  2647.     DBRA    D5,lbC00429A
  2648.     MOVE.W    (A0)+,D6
  2649.     MOVEQ    #15,D5
  2650. lbC00429A
  2651.     CMPI.W    #$8000,$4F0(A5)
  2652.     BEQ.L    lbC0042F8
  2653.     MOVE.W    0(A4,D7.W),D0
  2654. lbC0042A8
  2655.     LEA    0(A5,D0.W),A2
  2656.     MOVE.W    (A2),D1
  2657.     ADD.W    D4,D1
  2658.     MOVE.W    D1,(A2)+
  2659.     CMP.W    (A2)+,D1
  2660.     BLS.S    lbC0042F2
  2661. lbC0042B6
  2662.     CMP.W    (A2)+,D1
  2663.     BHI.S    lbC0042B6
  2664.     SUBQ.L    #4,A2
  2665.     MOVE.L    A2,D2
  2666.     SUB.L    A5,D2
  2667.     MOVE.W    (A2),0(A5,D0.W)
  2668.     MOVE.W    D1,(A2)
  2669.     MOVE.W    0(A3,D0.W),D1
  2670.     BMI.S    lbC0042D0
  2671.     MOVE.W    D2,2(A4,D1.W)
  2672. lbC0042D0
  2673.     MOVE.W    D2,0(A4,D1.W)
  2674.     MOVE.W    0(A3,D2.W),D3
  2675.     BMI.S    lbC0042DE
  2676.     MOVE.W    D0,2(A4,D3.W)
  2677. lbC0042DE
  2678.     MOVE.W    D1,0(A3,D2.W)
  2679.     MOVE.W    D0,0(A4,D3.W)
  2680.     MOVE.W    D3,0(A3,D0.W)
  2681.     MOVE.W    0(A4,D2.W),D0
  2682.     BNE.S    lbC0042A8
  2683.     BRA.S    lbC0042F8
  2684.  
  2685. lbC0042F2
  2686.     MOVE.W    0(A4,D0.W),D0
  2687.     BNE.S    lbC0042A8
  2688. lbC0042F8
  2689.     CMPI.W    #$FE00,D7
  2690.     BGE.L    lbC004264
  2691.     CMPI.W    #$FD86,D7
  2692.     BGT.S    lbC004308
  2693.     RTS
  2694.  
  2695. lbC004308
  2696.     ROL.W    #8,D6
  2697.     SUBQ.W    #7,D5
  2698.     BCC.S    lbC004328
  2699.     MOVEQ    #0,D3
  2700.     MOVE.W    (A0)+,D3
  2701.     SWAP    D3
  2702.     NEG.W    D5
  2703.     ROL.L    D5,D3
  2704.     MOVE.W    D3,D1
  2705.     OR.B    D6,D1
  2706.     SWAP    D3
  2707.     MOVE.W    D3,D6
  2708.     NEG.W    D5
  2709.     MOVEQ    #15,D2
  2710.     ADD.W    D2,D5
  2711.     BRA.S    lbC004336
  2712.  
  2713. lbC004328
  2714.     MOVEQ    #0,D1
  2715.     MOVE.B    D6,D1
  2716.     CLR.B    D6
  2717.     DBRA    D5,lbC004336
  2718.     MOVE.W    (A0)+,D6
  2719.     MOVEQ    #15,D5
  2720. lbC004336
  2721.     MOVE.W    D1,D3
  2722.     ADD.W    D3,D3
  2723.     MOVE.W    lbW004364(PC,D3.W),D3
  2724.     CLR.W    D2
  2725.     MOVE.B    D3,D2
  2726.     CLR.B    D3
  2727.     LSR.W    #2,D3
  2728. lbC004346
  2729.     ADD.W    D6,D6
  2730.     ADDX.W    D1,D1
  2731.     DBRA    D5,lbC004352
  2732.     MOVEQ    #15,D5
  2733.     MOVE.W    (A0)+,D6
  2734. lbC004352
  2735.     DBRA    D2,lbC004346
  2736.     ANDI.W    #$3F,D1
  2737.     OR.W    D3,D1
  2738.     LEA    (A1),A2
  2739.     SUBA.W    D1,A2
  2740.     JMP    lbL0043E0(PC,D7.W)
  2741.  
  2742. lbW004364
  2743.     dc.w    0
  2744.     dc.w    0
  2745.     dc.w    0
  2746.     dc.w    0
  2747.     dc.w    0
  2748.     dc.w    0
  2749.     dc.w    0
  2750.     dc.w    0
  2751.     dc.w    0
  2752.     dc.w    0
  2753.     dc.w    0
  2754.     dc.w    0
  2755.     dc.w    0
  2756.     dc.w    0
  2757.     dc.w    0
  2758.     dc.w    0
  2759.     dc.w    0
  2760.     dc.w    0
  2761.     dc.w    0
  2762.     dc.w    0
  2763.     dc.w    0
  2764.     dc.w    0
  2765.     dc.w    0
  2766.     dc.w    0
  2767.     dc.w    0
  2768.     dc.w    0
  2769.     dc.w    0
  2770.     dc.w    0
  2771.     dc.w    0
  2772.     dc.w    0
  2773.     dc.w    0
  2774.     dc.w    0
  2775.     dc.w    $101
  2776.     dc.w    $101
  2777.     dc.w    $101
  2778.     dc.w    $101
  2779.     dc.w    $101
  2780.     dc.w    $101
  2781.     dc.w    $101
  2782.     dc.w    $101
  2783.     dc.w    $101
  2784.     dc.w    $101
  2785.     dc.w    $101
  2786.     dc.w    $101
  2787.     dc.w    $101
  2788.     dc.w    $101
  2789.     dc.w    $101
  2790.     dc.w    $101
  2791.     dc.w    $201
  2792.     dc.w    $201
  2793.     dc.w    $201
  2794.     dc.w    $201
  2795.     dc.w    $201
  2796.     dc.w    $201
  2797.     dc.w    $201
  2798.     dc.w    $201
  2799.     dc.w    $201
  2800.     dc.w    $201
  2801.     dc.w    $201
  2802.     dc.w    $201
  2803.     dc.w    $201
  2804.     dc.w    $201
  2805. lbL0043E0
  2806.     dc.l    $2010201
  2807.     dc.l    $3010301
  2808.     dc.l    $3010301
  2809.     dc.l    $3010301
  2810.     dc.l    $3010301
  2811.     dc.l    $3010301
  2812.     dc.l    $3010301
  2813.     dc.l    $3010301
  2814.     dc.l    $3010301
  2815.     dc.l    $4020402
  2816.     dc.l    $4020402
  2817.     dc.l    $4020402
  2818.     dc.l    $4020402
  2819.     dc.l    $5020502
  2820.     dc.l    $5020502
  2821.     dc.l    $5020502
  2822.     dc.l    $5020502
  2823.     dc.l    $6020602
  2824.     dc.l    $6020602
  2825.     dc.l    $6020602
  2826.     dc.l    $6020602
  2827.     dc.l    $7020702
  2828.     dc.l    $7020702
  2829.     dc.l    $7020702
  2830.     dc.l    $7020702
  2831.     dc.l    $8020802
  2832.     dc.l    $8020802
  2833.     dc.l    $8020802
  2834.     dc.l    $8020802
  2835.     dc.l    $9020902
  2836.     dc.l    $9020902
  2837.     dc.l    $9020902
  2838.     dc.l    $9020902
  2839.     dc.l    $A020A02
  2840.     dc.l    $A020A02
  2841.     dc.l    $A020A02
  2842.     dc.l    $A020A02
  2843.     dc.l    $B020B02
  2844.     dc.l    $B020B02
  2845.     dc.l    $B020B02
  2846.     dc.l    $B020B02
  2847.     dc.l    $C030C03
  2848.     dc.l    $C030C03
  2849.     dc.l    $D030D03
  2850.     dc.l    $D030D03
  2851.     dc.l    $E030E03
  2852.     dc.l    $E030E03
  2853.     dc.l    $F030F03
  2854.     dc.l    $F030F03
  2855.     dc.l    $10031003
  2856.     dc.l    $10031003
  2857.     dc.l    $11031103
  2858.     dc.l    $11031103
  2859.     dc.l    $12031203
  2860.     dc.l    $12031203
  2861.     dc.l    $13031303
  2862.     dc.l    $13031303
  2863.     dc.l    $14031403
  2864.     dc.l    $14031403
  2865.     dc.l    $15031503
  2866.     dc.l    $15031503
  2867.     dc.l    $16031603
  2868.     dc.l    $16031603
  2869.     dc.l    $17031703
  2870.     dc.l    $17031703
  2871.     dc.l    $18041804
  2872.     dc.l    $19041904
  2873.     dc.l    $1A041A04
  2874.     dc.l    $1B041B04
  2875.     dc.l    $1C041C04
  2876.     dc.l    $1D041D04
  2877.     dc.l    $1E041E04
  2878.     dc.l    $1F041F04
  2879.     dc.l    $20042004
  2880.     dc.l    $21042104
  2881.     dc.l    $22042204
  2882.     dc.l    $23042304
  2883.     dc.l    $24042404
  2884.     dc.l    $25042504
  2885.     dc.l    $26042604
  2886.     dc.l    $27042704
  2887.     dc.l    $28042804
  2888.     dc.l    $29042904
  2889.     dc.l    $2A042A04
  2890.     dc.l    $2B042B04
  2891.     dc.l    $2C042C04
  2892.     dc.l    $2D042D04
  2893.     dc.l    $2E042E04
  2894.     dc.l    $2F042F04
  2895.     dc.l    $30053105
  2896.     dc.l    $32053305
  2897.     dc.l    $34053505
  2898.     dc.l    $36053705
  2899.     dc.l    $38053905
  2900.     dc.l    $3A053B05
  2901.     dc.l    $3C053D05
  2902.     dc.l    $3E053F05
  2903. how_can_someone_do_such_shit:
  2904.     dc.l    $3EC
  2905.     dc.l    $1D
  2906.     dc.l    0
  2907.     dc.l    8
  2908.     dc.l    14
  2909.     dc.l    $1E
  2910.     dc.l    $2E
  2911.     dc.l    $34
  2912.     dc.l    $3E
  2913.     dc.l    $BA
  2914.     dc.l    $CC
  2915.     dc.l    $E2
  2916.     dc.l    $F8
  2917.     dc.l    $112
  2918.     dc.l    $11C
  2919.     dc.l    $136
  2920.     dc.l    $140
  2921.     dc.l    $14A
  2922.     dc.l    $15E
  2923.     dc.l    $168
  2924.     dc.l    $1B2
  2925.     dc.l    $1BC
  2926.     dc.l    $1C6
  2927.     dc.l    $1D4
  2928.     dc.l    $1EE
  2929.     dc.l    $204
  2930.     dc.l    $21E
  2931.     dc.l    $22C
  2932.     dc.l    $23A
  2933.     dc.l    $244
  2934.     dc.l    $262
  2935.     dc.l    $268
  2936.     dc.l    1
  2937.     dc.l    1
  2938.     dc.l    2
  2939.     dc.l    1
  2940.     dc.l    2
  2941.     dc.l    $44
  2942.     dc.l    0
  2943.     dc.l    $3F2
  2944.     dc.l    $3EB
  2945.     dc.l    $465
  2946.     dc.l    $3F2
  2947.     dc.l    $3EA
  2948.     dc.l    1
  2949. end_of_sfx
  2950. sfx_len= end_of_sfx-sfx_hunk
  2951.