home *** CD-ROM | disk | FTP | other *** search
/ Computer Club Elmshorn Atari PD / CCE_PD.iso / pc / 0600 / CCE_0689.ZIP / CCE_0689 / LHA3_SRC.LZH / SOURCE / LHA5.S < prev    next >
Text File  |  1994-01-15  |  19KB  |  683 lines

  1.             export position
  2.             export prev
  3.             export next
  4.             export parent
  5.             export childcount
  6.             export text
  7.             export encode5
  8.             export init_encode5
  9.             export output5
  10.             export insert_node
  11.             export get_next_match
  12.             export in_split
  13.             export output_pos
  14.             export output_mask
  15.             export avail
  16.             import buf
  17.             import c_freq
  18.             import p_freq
  19.             import level
  20.             import blocksize
  21.             import send_block
  22.             import fread_crc
  23.             import start_huf
  24.             import end_huf
  25.             import ProcInd
  26.             import shipout
  27.             import file3
  28.  
  29.  
  30.  BUFSIZ          set 16384
  31.  
  32.     MODULE encode5
  33.  
  34.         import remainder,printcount,l_mpos
  35.         import  get_next_match
  36.         TEXT
  37.             movem.l D3-D7/A2-A6,-(SP)
  38.             lea     text(PC),A6
  39.             move.l  file3(PC),A1
  40.             move.l  #$2100,D0
  41.             move.l  (A6),A0
  42.             lea     $2000(a0),a0
  43.             jsr     fread_crc
  44.             move.w  D0,remainder-text(a6)
  45.             ext.l   d0
  46.             add.l   d0,printcount-text(a6)
  47.             cmp.w   #$2000,d0
  48.             bcs.s   ind2
  49. proc_ind2:  move.l  blocksize(pc),d0
  50.             cmp.l   printcount(pc),d0
  51.             bhi.s   enc51
  52.             sub.l   d0,printcount-text(a6)
  53. ind2:       jsr     ProcInd
  54.             bra.s   proc_ind2
  55. enc51:
  56.             moveq   #0,D0
  57.             move.w  #$FFFF,D0
  58.             and.l   D0,D1
  59.             and.l   D0,D2
  60.             and.l   D0,D3
  61.             and.l   D0,D4
  62.             and.l   D0,D5
  63.             and.l   D0,D6
  64.             moveq   #0,d7
  65.             moveq   #0,D0
  66.             move.l  parent-text(a6),a2
  67.             move.l  prev-text(a6),a3
  68.             move.l  next-text(a6),a4
  69.             move.l  level-text(a6),a5
  70.             move.w  #$2000,D6
  71.             move.w  D4,-(SP)
  72.             bsr     insert_node
  73.             move.w  (sp)+,D4
  74.             bra.b   encod7
  75.  
  76. encod1:     move.w  d7,D4
  77.             move.w  D5,l_mpos-text(A6)
  78.             bsr     get_next_match
  79.             cmp.w   remainder(PC),D7
  80.             bls.b   encod2
  81.             move.w  remainder(PC),d7
  82. encod2:     cmp.w   d7,D4
  83.             bcs.b   encod3
  84.             cmp.w   #3,D4
  85.             bcc.b   encod4
  86. encod3:     move.l  text(PC),A0
  87.             moveq   #0,D1
  88.             move.b  -1(A0,D6.w),D1
  89.             moveq   #0,D3
  90.             bsr     output5
  91.             bra.b   encod8
  92.  
  93. encod4:     move.w  D6,D3
  94.             sub.w   l_mpos(PC),D3
  95.             subq.w  #2,D3
  96.             and.w   #$1FFF,D3
  97.             move.w  D4,D1
  98.             add.w   #$FD,D1
  99.             bsr     output5
  100.             subq.w  #1,D4
  101.             ble.b   encod7
  102. encod5:     bsr     get_next_match
  103.             subq.w  #1,D4
  104.             bgt.b   encod5
  105. encod7:     cmp.w   remainder(PC),D7
  106.             bls.b   encod8
  107.             move.w  remainder(PC),d7
  108. encod8:     move.w  remainder(PC),D0
  109.             bgt.b   encod1
  110.             jsr     end_huf
  111.             bsr     shipout
  112.             movem.l (SP)+,D3-D7/A2-A6
  113.             rts
  114.  
  115.     ENDMOD
  116.  
  117.             align
  118.  
  119.  
  120.     MODULE output5
  121.  
  122.     IMPORT output_mask,output_pos,cpos
  123.  
  124.     TEXT
  125.  
  126.  
  127.             move.w  output_pos(pc),D0
  128.             move.l  buf(PC),A1
  129.             adda.l  D0,A1
  130.             subq.w  #1,output_mask-text(A6)
  131.             bpl.b   out5_2
  132.             move.w  #7,output_mask-text(a6)
  133.             cmp.w   #BUFSIZ-$18,D0
  134.             bcs.b   out5_1
  135.             move.w  d1,-(sp)
  136.             bsr     send_block
  137.             moveq   #0,D1
  138.             moveq   #0,D2
  139.             move.w  (sp)+,d1
  140.             move.l  buf(PC),A1
  141.             moveq   #0,D0
  142. out5_1:     move.w  D0,cpos-text(A6)
  143.             clr.b   (A1)+
  144.             addq.w  #1,D0
  145. out5_2:     move.b  D1,(A1)+
  146.             addq.w  #1,D0
  147.             add.w   D1,D1
  148.             lea     c_freq,A0
  149.             addq.w  #1,0(A0,D1.w)
  150.             cmp.w   #$0200,D1
  151.             bcs.b   out5_5
  152.             move.w  output_mask-text(a6),D1
  153.             move.w  cpos(PC),D2
  154.             sub.w   D0,D2
  155.             bset.b  D1,0(A1,D2.w)
  156.             move.w  D3,D1
  157.             lsr.w   #8,D1
  158.             move.b  D1,(A1)+
  159.             bne.b   nout_5_1
  160.             move.b  D3,(A1)+
  161.             addq.w  #2,D0
  162.             moveq   #16,D1
  163.             tst.w   D3
  164.             dbeq    D1,out5_3
  165.             bra.b   out5_4
  166. out5_3:     lsr.w   #1,D3
  167.             dbeq    D1,out5_3
  168. out5_4:     add.w   D1,D1
  169.             neg.w   D1
  170.             lea     p_freq,A0
  171.             addq.w  #1,32(A0,D1.w)
  172. out5_5:     move.w  d0,output_pos-text(a6)
  173.             rts
  174.  
  175. nout_5_1:   move.b  D3,(A1)+
  176.             addq.w  #2,D0
  177.             moveq   #7,D2
  178. nout5_3:    lsr.b   #1,D1
  179.             dbeq    D2,nout5_3
  180. nout5_4:    add.w   D2,D2
  181.             neg.w   D2
  182.             lea     p_freq,A0
  183.             addq.w  #1,32(A0,D2.w)
  184.             move.w  d0,output_pos-text(a6)
  185.             rts
  186.  
  187.         ENDMOD
  188.  
  189.             align
  190.  
  191.         MODULE insert_node
  192.  
  193.         IMPORT avail
  194.         EXPORT insert_n
  195.  
  196.         TEXT
  197.  
  198. insert_n:
  199.  
  200.             subq.w  #4,d7
  201.             bmi.b   inode7
  202.             move.l  position-text(a6),A1
  203.             addq.w  #3,d7
  204.             moveq   #1,D4
  205.             add.w   D5,D4
  206.             or.w    #$2000,D4
  207.             add.w   D4,D4
  208.             move.w  0(A2,D4.l),D3
  209.             bne.b   inode1_
  210. inode1:
  211.             move.w  0(A4,D4.l),D4
  212.             move.w  0(A2,D4.l),D3
  213.             beq.b   inode1
  214. inode1_:
  215.             cmp.b   0(A5,D3.l),d7
  216.             bhi.b   inode3_
  217. inode3:     move.w  D3,D4
  218.             move.w  0(A2,D3.l),D3
  219.             cmp.b   0(A5,D3.l),D7
  220.             bls.b   inode3
  221. inode3_:    move.w  D3,D0
  222.             move.w  0(A1,D0.l),D1
  223.             bpl.b   inode5_
  224. inode5:
  225.             move.w  d6,0(A1,D0.l)
  226.             move.w  0(A2,D0.l),D0
  227.             move.w  0(A1,D0.l),D1
  228.             bmi.b   inode5
  229. inode5_:    cmp.w   #$4000,D0
  230.             bhs.b   inode9
  231.             move.w  D6,D2
  232.             or.w    #$8000,D2
  233.             move.w  D2,0(A1,D0.l)
  234.             bra.b   inode9
  235.  
  236. inode7:     move.l  (a6),A0
  237.             moveq   #0,D3
  238.             move.b  0(A0,D6.w),D3
  239.             add.w   #$2000,D3
  240.             add.w   D3,D3
  241.             moveq   #0,D4
  242.             move.b  1(A0,D6.w),D4
  243.             lsl.w   #5,D4
  244.             add.w   D3,D4
  245.             add.w   #$8000,D4
  246.             move.w  D4,D7
  247.             move.w  D3,(A2)
  248. nchild1:
  249.             move.w  0(A4,D4.l),D4
  250.             cmp.w   0(A2,D4.l),D3
  251.             bne.b   nchild1
  252.             tst.w   D4
  253.             bne.b   inode8
  254.             move.w  0(A4,D7.l),D0
  255.             move.w  D6,D4
  256.             add.w   D4,D4
  257.             move.w  D4,0(A4,D7.l)
  258.             move.w  D0,0(A4,D4.l)
  259.             move.w  D4,0(A3,D0.l)
  260.             move.w  D7,0(A3,D4.l)
  261.             move.w  D3,0(A2,D4.l)
  262.             addq.b  #1,1(A5,D3.l)
  263.             moveq   #1,d7
  264.             rts
  265.  
  266. inode8:     move.l  position-text(a6),A1
  267.             moveq   #2,d7
  268. inode9:     cmp.w   #$4000,D4
  269.             blo.b   inode10
  270.             move.w  #$0100,d2
  271.             lsr.w   #1,D4
  272.             move.w  D4,D5
  273.             add.w   D4,D4
  274.             bra.b   inode11
  275. inode10:    moveq   #0,d2
  276.             move.b  0(A5,D4.l),D2
  277.             move.w  0(A1,D4.l),D5
  278.             and.w   #$7FFF,D5
  279. inode11:    cmp.w   D5,D6
  280.             bhi.b   inode12
  281.             sub.w   #$2000,D5
  282. inode12:    move.w  D6,D0
  283.             add.w   D7,D0
  284.             move.l  (A6),A0
  285.             lea     0(A0,d0.w),a5
  286.             move.w  D5,D1
  287.             add.w   D7,D1
  288.             lea     0(A0,D1.l),A0
  289.             move.w  D2,D0
  290.             sub.w   D7,D0
  291.             ble.b   inode14
  292.             subq.w  #1,D0
  293. inode13:    cmpm.b  (A5)+,(A0)+
  294.             dbne    d0,inode13
  295.             BNE     in_split
  296.             not.w   d0
  297.             add.w   d2,d0
  298.             move.w  d0,d7
  299. inode14:    cmp.w   #$0100,d7
  300.             bge.b   inode17
  301.             move.w  D4,D3
  302.             move.w  D6,0(A1,D4.l)
  303.             moveq   #0,d4
  304.             move.b  (A5),D4
  305.             lsl.w   #5,D4
  306.             add.w   D3,D4
  307.             add.w   #$8000,D4
  308.             move.w  D4,D1
  309.             move.w  D3,(A2)
  310.             move.l  level-text(a6),a5
  311. nchild2:
  312.             move.w  0(A4,D4.l),D4
  313.             cmp.w   0(A2,D4.l),D3
  314.             bne.b   nchild2
  315.             tst.w   D4
  316.             bne.b   inode16
  317.             move.w  0(A4,D1.l),D0
  318.             move.w  D6,D4
  319.             add.w   D4,D4
  320.             move.w  D4,0(A4,D1.l)
  321.             move.w  D0,0(A4,D4.l)
  322.             move.w  D4,0(A3,D0.l)
  323.             move.w  D1,0(A3,D4.l)
  324.             move.w  D3,0(A2,D4.l)
  325.             addq.b  #1,1(A5,d3.l)
  326.             rts
  327.  
  328. inode16:    addq.w  #1,d7
  329.             bra     inode9
  330.  
  331. inode17:    move.w  0(A3,D4.l),D1
  332.             move.w  d6,D2
  333.             add.w   D2,D2
  334.             move.w  D1,0(a3,D2.l)
  335.             move.w  D2,0(A4,D1.l)
  336.             move.w  0(A4,D4.l),D1
  337.             move.w  D1,0(A4,D2.l)
  338.             move.w  d2,0(a3,D1.l)
  339.             move.w  D3,0(A2,D2.l)
  340.             clr.w   0(A2,D4.l)
  341.             move.w  d2,0(A4,D4.l)
  342.             move.l  level-text(a6),a5
  343.             rts
  344.  
  345.     ENDMOD
  346.  
  347.             align
  348.  
  349.     MODULE in_split
  350.  
  351.  
  352.             not.w   D0
  353.             add.w   D2,D0
  354.             move.w  D0,D7
  355.             MOVE.W  avail-text(A6),D3
  356.             move.l  level-text(a6),a5
  357.             move.l  (a6),A0
  358.             move.w  0(A4,D3.l),avail-text(a6)
  359.             move.b  #2,1(A5,D3.l)
  360.             move.w  0(A3,D4.l),D0
  361.             move.w  D0,0(A3,D3.l)
  362.             move.w  D3,0(A4,D0.l)
  363.             move.w  0(A4,D4.l),D0
  364.             move.w  D0,0(A4,D3.l)
  365.             move.w  D3,0(A3,D0.l)
  366.             move.w  0(A2,D4.l),0(A2,D3.l)
  367.             move.w  D6,0(A1,D3.l)
  368.             move.b  D7,0(A5,D3.l)
  369.  
  370.             move.w  D5,D0
  371.             ADD.W   d7,D0
  372.             moveq   #0,d2
  373.             move.b  0(A0,D0.l),D2
  374.             lsl.w   #5,D2
  375.             add.w   D3,D2
  376.             add.w   #$8000,D2
  377.             move.w  0(A4,D2.l),D1
  378.             move.w  D4,0(A4,D2.l)
  379.             move.w  D1,0(A4,D4.l)
  380.             move.w  D4,0(A3,D1.l)
  381.             move.w  D2,0(A3,D4.l)
  382.             move.w  D3,0(A2,D4.l)
  383.  
  384.             move.w  D6,D1
  385.             add.w   D7,D1
  386.             moveq   #0,D4
  387.             move.b  0(A0,D1.W),D4
  388.             lsl.w   #5,D4
  389.             add.w   D3,D4
  390.             add.w   #$8000,D4
  391.             move.w  0(A4,D4.L),D0
  392.             move.w  D6,D1
  393.             add.w   D1,D1
  394.             move.w  D1,0(A4,D4.l)
  395.             move.w  D0,0(A4,D1.l)
  396.             move.w  D1,0(A3,D0.l)
  397.             move.w  D4,0(A3,D1.l)
  398.             move.w  D3,0(A2,D1.l)
  399.             rts
  400.     ENDMOD
  401.  
  402.             align
  403.  
  404.     MODULE get_next_match
  405.  
  406.         EXPORT gnext1,get_next
  407.  
  408.         IMPORT my_cnt,st_save
  409.  
  410.     TEXT
  411.  
  412. get_next:
  413.  
  414.             subq.w  #1,remainder-text(a6)
  415.             cmpi.w  #$3fff,D6
  416.             beq.b   get_n_m_s
  417.             addq.w  #1,D6
  418. gnext1:     move.w D4,-(sp)
  419.  
  420.             move.w  d6,D1
  421.             add.w   D1,D1
  422.             move.w  0(A2,D1.l),D3
  423.             beq.b   dnode9_
  424.             move.w  0(A3,D1.l),D2
  425.             move.w  0(A4,D1.l),D4
  426.             move.w  D4,0(A4,D2.l)
  427.             move.w  D2,0(A3,D4.l)
  428.             clr.w   0(A2,D1.l)
  429.             cmp.w   #$4000,D3
  430.             bcs.b   dnodea_
  431. dnode9_:    bsr     insert_node
  432.             move.w (sp)+,d4
  433.             rts
  434.  
  435. get_n_m_s:
  436.             bra     get_n_m_1
  437.  
  438. dnodea_:    subq.b  #1,1(A5,D3.L)
  439.             cmpi.b  #1,1(A5,D3.L)
  440.             bhi.b   dnode9_
  441.             move.l  position-text(a6),A1
  442.             move.w  D3,D1
  443.             move.w  0(A1,D1.l),D2
  444.             and.w   #$7FFF,D2
  445.             cmp.w   d6,D2
  446.             blt.b   dnode1
  447.             sub.w   #$2000,D2
  448. dnode1:     move.w  D2,D4
  449.             move.w  d2,a0
  450.             move.w  0(A2,D1.l),D0
  451.             move.w  0(A1,D0.l),d2
  452.             bclr    #15,D2
  453.             beq.b   dnode5_
  454. dnode2:     cmp.w   d6,d2
  455.             blt.b   dnode3
  456.             sub.w   #$2000,d2
  457. dnode3:     cmp.w   d2,D4
  458.             bge.b   dnode4
  459.             move.w  d2,D4
  460. dnode4:     move.w  D4,D1
  461.             or.w    #$2000,D1
  462.             move.w  D1,0(A1,D0.l)
  463.             move.w  0(A2,D0.l),D0
  464.             move.w  0(A1,D0.l),d2
  465.             bclr    #15,D2
  466.             bne.b   dnode2
  467. dnode5_:    cmp.w   #$4000,D0
  468.             bhs.b   dnode8
  469.             cmp.w   d6,d2
  470.             blt.b   dnode6
  471.             sub.w   #$2000,d2
  472. dnode6:     cmp.w   d2,D4
  473.             bge.b   dnode7
  474.             move.w  d2,D4
  475. dnode7:     or.w    #$A000,D4
  476.             move.w  D4,0(A1,D0.l)
  477. dnode8:     moveq   #0,D0
  478.             move.b  0(A5,D3.l),D0
  479.             add.w   a0,D0
  480.             move.l  (a6),A1
  481.             moveq   #0,d4
  482.             move.b  0(A1,D0.l),D4
  483.             lsl.w   #5,D4
  484.             add.w   D3,D4
  485.             add.w   #$8000,D4
  486.             move.w  d3,(A2)
  487. dchild1:    move.w  0(A4,D4.l),D4
  488.             cmp.w   0(A2,D4.l),D3
  489.             bne.b   dchild1
  490.             move.w  0(A3,D4.l),D0
  491.             move.w  0(A4,D4.l),D2
  492.             move.w  D2,0(A4,D0.l)
  493.             move.w  D0,0(A3,D2.l)
  494.             move.w  0(A3,D3.l),D0
  495.             move.w  D0,0(A3,D4.l)
  496.             move.w  D4,0(A4,D0.l)
  497.             move.w  0(A4,D3.l),D0
  498.             move.w  D0,0(A4,D4.l)
  499.             move.w  D4,0(A3,D0.l)
  500.             move.w  0(A2,D3.l),0(A2,D4.l)
  501.             clr.w   0(A2,D3.l)
  502.             move.w  avail-text(a6),0(A4,D3.l)
  503.             move.w  D3,avail-text(a6)
  504. dnode9:     bsr     insert_node
  505.             move.w (sp)+,d4
  506.             rts
  507.  
  508. get_n_m_1:  move.l (a6),A0
  509.             lea     $2000(A0),A0
  510.             movem.l D1-D7/A2-A6,-(a7)
  511.             move.l  A7,st_save
  512.             move    #7,my_cnt
  513. nxt_cpy:
  514.         REPT 20
  515.             movem.l (a0)+,D0-D7/A1-A7
  516.             movem.l D0-D7/A1-A7,-$203c(a0)
  517.         ENDM
  518.             subq.w  #1,my_cnt
  519.             bne     nxt_cpy
  520.             movem.l (a0)+,D0-D7/A1-A4
  521.             movem.l D0-D7/A1-A4,-$2030(a0)
  522.             move.l  st_save(PC),A7
  523.             movem.l (a7)+,D1-D7/A2-A6
  524.             move.l  file3(PC),A1
  525.             move.l  #$2000,D0
  526.             move.l  (a6),A0
  527.             lea     $2100(A0),A0
  528.             jsr     fread_crc
  529.             add.w   D0,remainder-text(a6)
  530.             move.w  #$2000,D6
  531.             ext.l   d0
  532.             add.l   d0,printcount-text(a6)
  533.             cmp.w   #$2000,d0
  534.             blt.s   ind1
  535. proc_ind1:  move.l  blocksize(pc),d0
  536.             cmp.l   printcount(pc),d0
  537.             bgt.s   gnext1_
  538.             sub.l   d0,printcount-text(a6)
  539. ind1:       jsr     ProcInd
  540.             bra.s   proc_ind1
  541. gnext1_:    moveq   #0,D0
  542.             moveq   #0,D1
  543.             moveq   #0,D2
  544.             bra     gnext1
  545.  
  546.     ENDMOD
  547.  
  548.             align
  549.  
  550.     MODULE init_encode5
  551.  
  552.         EXPORT init_en
  553.     TEXT
  554.  
  555. init_en:
  556.  
  557.             movem.l D2-D7/A2-A6,-(A7)
  558.             moveq   #0,D0
  559.             lea     text(pc),A6
  560.             move.w  d0,output_pos-text(a6)
  561.             move.w  d0,output_mask-text(a6)
  562.             move.l  d0,printcount-text(a6)
  563.             move.w  #2,avail-text(A6)
  564.             moveq   #0,D1
  565.             moveq   #0,D2
  566.             moveq   #0,D3
  567.             moveq   #0,D4
  568.             moveq   #0,D5
  569.             moveq   #0,D6
  570.             moveq   #0,D7
  571.             move.l  D0,A0
  572.             move.l  D0,A1
  573.             move.l  D0,A2
  574.             move.l  D0,A3
  575.             move.l  D0,A4
  576.             move.l  D0,A5
  577.             move.l  position(PC),A6
  578.             lea     ($2100*2)(A6),A6
  579.         REPT 9
  580.             movem.l D0-D7/A0-A5,-(A6)
  581.         ENDM
  582.             movem.l D0-D1,-(A6)
  583.             move.l  parent(PC),A6
  584.             adda.l  #(($2000*2)*2),A6
  585.             move.w  #78-1,D7
  586. qdel_1:
  587.         REPT 4
  588.             movem.l D0-D6/A0-A5,-(A6)
  589.         ENDM
  590.             dbra    D7,qdel_1
  591.         REPT 3
  592.             movem.l D0-D6/A0-A5,-(A6)
  593.         ENDM
  594.             move.l  D0,-(A6)
  595.             move.l  next(PC),A6
  596.             adda.l  #$70F0*2,A6
  597.             move.w  #60-1,D7
  598. qdel_2:
  599.         REPT 8
  600.             movem.l D0-D6/A0-A5,-(A6)
  601.         ENDM
  602.             dbra    D7,qdel_2
  603.             movem.l D0-D6/A0-A5,-(A6)
  604.             movem.l D0-D6/A0-A3,-(A6)
  605.             move.l  #0x00040004,D2
  606.             move.l  d2,D0
  607.             addq    #2,d0
  608.             move.l  next(PC),A6
  609.             clr.w   (a6)+
  610.             move.w  #1023-1,d1
  611. islide6:
  612.         REPT 4
  613.             move.l  D0,(a6)+
  614.             add.l   D2,D0
  615.         ENDM
  616.             dbra    d1,islide6
  617.         REPT 3
  618.             move.l  D0,(a6)+
  619.             add.l   D2,D0
  620.         ENDM
  621.  
  622.             move.w  d3,(a6)
  623.             move.l  #$01000100,D0
  624.             move.l  d0,d1
  625.             move.l  d0,d2
  626.             move.l  d0,d3
  627.             move.l  d0,d4
  628.             move.l  d0,d5
  629.             move.l  d0,D6
  630.             move.l  d0,d7
  631.             move.l  d0,A0
  632.             move.l  d0,a1
  633.             move.l  d0,a2
  634.             move.l  d0,a3
  635.             move.l  d0,a4
  636.             move.l  d0,a5
  637.             move.l  level(PC),a6
  638.             clr.l   (a6)
  639.             lea     $2100(a6),a6
  640.             lea     $2100(a6),a6
  641.             movem.l D0-D7/A0-A5,-(A6)
  642.             movem.l D0-D7/A0-A5,-(A6)
  643.             movem.l D0-D7/A0-A5,-(A6)
  644.             movem.l D0-D7/A0-A5,-(A6)
  645.             movem.l D0-D7/A0-A5,-(A6)
  646.             movem.l D0-D7/A0-A5,-(A6)
  647.             movem.l D0-D7/A0-A5,-(A6)
  648.             movem.l D0-D7/A0-A5,-(A6)
  649.             movem.l D0-D7,-(A6)
  650.             movem.l D0-D7,-(A6)
  651.             movem.l (A7)+,D2-D7/A2-A6
  652.             jsr     start_huf
  653.             rts
  654.  
  655.     ENDMOD
  656.  
  657.     DATA
  658.  
  659.     align.l
  660.  
  661. level:      dc.l    0
  662. position:   dc.l    0
  663. next:       dc.l    0
  664. prev:       dc.l    0
  665. parent:     dc.l    0
  666.  
  667. avail:      dc.l    0
  668. childcount: dc.l    0
  669. text:       dc.l    0
  670. remainder:  dc.l    0
  671. cpos:       dc.w    0
  672.     align.l
  673. printcount: dc.l    0
  674. output_pos: dc.w    0
  675.     align.l
  676. output_mask:dc.w    0
  677. l_mpos:     dc.w    0
  678. st_save:    dc.l    0
  679. my_cnt:     dc.w    0
  680.     align.l
  681.  
  682.     END
  683.