?login_element?

Subversion Repositories NedoOS

Rev

Rev 289 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ;ramdisk=1
  2. sureLE=0
  3. pakto=#C000 ;можно урезать (потом уходит в >0, что интерпретируется как pak9+)
  4. CATBUF=#8000
  5. CURBUF=#8900
  6. CATGFX=#8A00
  7. TCRC=#5000
  8. svbfsz=#200
  9. sets=17
  10. pgTEXT=#10
  11. pgLZ=#11
  12. ;коды Хаффмана<<:+#200/#400 (H/L)
  13. ldbit=#4000 ;кратно 512!
  14.         ;DISPLAY /T,ldbit,"..",ldbit+#5FF
  15. bitlens=ldbit+#600;сколько листьев в ярусе
  16.         ;DISPLAY /T,bitlens,"..",bitlens+#FF
  17.  
  18. bdbit=bitlens+#100
  19.         ;DISPLAY /T,bdbit,"..",bdbit+#2FF
  20.  
  21. huff=bdbit
  22. ;узлы (frq,adrA(L))
  23. ;adrB=adrA+4 (если это не литерал)
  24. ;H,L!
  25. ;max=595
  26. ;+еще 1 до переноса
  27. ;+еще 1 для признака конца НЕЗАНЯТЫХ (-1)
  28. huffend=597*4+huff
  29. lens=-95*4+huffend-298-48-28
  30.         ;DISPLAY /T,lens
  31.  
  32. ;отсортированы по возрастанию frq
  33. frqs=huffend ;декрементированные
  34.         ;DISPLAY /T,frqs,">=#5000"
  35. frqend=298*2+frqs
  36. frq2end=298*4+1+frqs
  37.         ;DISPLAY /T,frq2end
  38.  
  39. ;коды Хаффмана<<:+#100/#200 (H/L)
  40. ddbit=(frq2end+255)/256*256
  41. ddfrq=ddbit
  42. ddfrqend=ddbit+#300 ;сколько точно??? TODO
  43.         ;DISPLAY /T,ddbit,"..",ddfrqend-1
  44. LZCPtab=#5800;ddbit+256
  45. rdbit=ddbit+48 ;литералы 48..75
  46. rdfrq=ddfrq+96 ;!
  47.  
  48. OUTNAM
  49.         db "mynewrar.rar",0 ;TODO сгенерировать из ARCNAME
  50. ARCNAME;=#5CDD
  51.         db "mynewrarrar"
  52. ;filez=fout-512
  53. filez=#5D3B
  54. ;4 б/файл: paksz,unpsz
  55.  
  56. ;from=-MAX..XXXX
  57. ENTRCOP=23698 ;16 bytes
  58. ;ключи: 11bit
  59. keys=#4000 ;делится на 512!
  60. keymask=7
  61. ;переходы по ключам: pg3,4,6,7
  62.  
  63. ;todo:read arc AFTER lz&huf constr
  64. ;todo:файл резать по переполнению lz buf
  65. ;todo:грузить 2ю часть файла во весь буфер
  66. begin=#60D6+16 ;16=запас на левые досы
  67. ;em3d13=1
  68. ;h18=1;глючит выгрузка по 2 сект.на др.диск(496 в GO лечит?)
  69. dolds=0;1 ;коды повтора смещений (невыгодные)
  70. nastr=1 ;+174
  71. ;v1="3
  72. ;v2="3
  73. ;cache=1
  74. adir=30 ;можно ввести название директории (без \), если нажать A/C с Caps Shift
  75. k256=0;#56 ;1 pg keys winpgs=52..55
  76. k3b=1 ;3bytes keys
  77. filter=1
  78. fast0s=8 ;-0.1%
  79. fastCPIQ=1;0 ;+18
  80. fastTREE=1;1 ;+9
  81. fastWRI=1
  82. skipnotree=1
  83. ;flash=1
  84. ;panel=1
  85. zac=0 ;зачерк
  86. ;qc=1 ;+19
  87. ay=1
  88.  
  89. opt2s=0;1&ramdisk
  90.  
  91. ;RELDRV
  92. ;       LD (DRVLET),A
  93. RELOAD
  94.         LD SP,STACK
  95.        CALL OUTpgTEXT
  96.       ;A=16
  97.        IF ay
  98.         LD HL,AYREGE
  99.         LD D,14
  100. AY0     LD BC,-3
  101.         DEC D
  102.         DEC HL
  103.         OUT (C),D
  104.         LD B,#BF
  105.         LD A,(HL)
  106.         OUT (C),A
  107.         jr NZ,AY0
  108.        ELSE
  109.         OUT (-2),A
  110.        ENDIF
  111.         ;EI
  112.        ;HALT
  113.        ;CALL 8020
  114.        ;JNC $-4
  115.        LD DE,0
  116.        LD (selAsz),DE
  117.         ;LD HL,CATBUF
  118.         ;LD BC,#905
  119.         ;CALL DOS
  120.        XOR A
  121.        LD (WYBRA),A
  122.        IF adir
  123.        LD HL,fdir
  124.        LD (Lfname),HL
  125.        ENDIF
  126. ;        LD HL,(CURENTR)
  127. ;        LD DE,ENTRCOP
  128. ;        LD B,16
  129. ;CP0     LD A,(DE)
  130. ;        CP (HL)
  131. ;        INC HL
  132. ;        inc DE
  133. ;        jr NZ,$+4
  134. ;        DJNZ CP0
  135.         LD HL,CATGFX
  136.        ;jr Z,NOINCAT
  137.         LD DE,CATBUF
  138.         LD (CURENTR),DE
  139.         XOR A
  140.         LD (CURCATY),A
  141.         LD (CATTOP),HL
  142. ;NOINCAT
  143.         PUSH HL
  144.        ;LD DE,CATGFX+1
  145.        ld d,h
  146.        ld e,l
  147.        inc de
  148.         LD B,+(128*#50+1)/256 ;0.28
  149.        LD (HL),L
  150.        LDIR
  151.        ;CALL CLSA0
  152.         LD HL,CATBUF
  153.         POP DE
  154.        ;LD C,0
  155. PRCAT0  LD A,(HL)
  156.         OR A
  157.         jr Z,PRCATQ
  158.         PUSH BC
  159.         LD B,8
  160. PRCAT1 ;LD A,(HL)
  161.        ;INC HL
  162.         CALL PRGFXHL
  163.         INC DE
  164.         DJNZ PRCAT1
  165.        INC E
  166.        ;LD A,(HL)
  167.         CALL PRGFXHL
  168.        DEC E
  169.         DEC HL
  170.         LD A,(HL)
  171.         INC HL
  172.         INC HL
  173.         inc HL
  174.         LD C,(HL)
  175.         INC HL
  176.         LD B,(HL)
  177.         INC HL
  178.         CP "B"
  179.         jr Z,PRCHOB
  180.         DEC BC
  181.         INC B
  182.         LD A,(HL)
  183. PRCHOB  CP B
  184.         LD A,"$"
  185.         CALL NZ,PRGFX
  186.         INC HL
  187.         inc HL
  188.         inc HL
  189.         POP BC
  190.         LD A,E
  191.         ADD A,#50-8
  192.         LD E,A
  193.         jr NC,$+3
  194.         INC D
  195.         INC C
  196.         JR PRCAT0
  197. SELHEX
  198.         LD DE,PRNUM
  199.         LD A,(DE)
  200.         XOR 62^24
  201.         LD (DE),A
  202.        ;JP REFRESH
  203. PRCATQ
  204. REFRESH
  205.         ;CALL PANEL
  206.         LD DE,#4016;7
  207.         LD BC,(CATBUF+#8E5) ;free
  208.         CALL PRNUM
  209.         LD E,#10
  210.         LD HL,TMENU
  211.         CALL PRTEXT
  212.         LD DE,#4001
  213. DRVLET=$+1
  214.         LD A,0
  215.         ADD A,"A"
  216.         CALL PRTHI
  217.         LD A,":"
  218.         CALL PRTHI
  219.         LD B,11
  220.         LD HL,CATBUF+#8F5
  221. DISNM0  LD A,(HL)
  222.         INC HL
  223.         ADD A,A
  224.         jr Z,DISNMQ
  225.         PUSH AF
  226.        ;SRL A
  227.        RRA
  228.         CALL PRTHI
  229.         POP AF
  230.         jr C,DISNMQ
  231.         DJNZ DISNM0
  232. DISNMQ
  233.        IF nastr
  234.         CALL PRSET
  235.        ENDIF
  236.         LD HL,CPn
  237.         LD (HL),"n"
  238.         LD HL,ADDloop
  239.         LD (ADDjpnz),HL
  240. OLDENTR
  241. CURENTR=$+1
  242.         LD HL,CATBUF
  243. CURCATY=$+1
  244.         LD B,0 ;Y
  245.       ;HL=cur dir entry adr
  246. PRHEAD
  247.         CALL PRHEADP
  248. SELFIL0
  249.         LD (CURENTR),HL
  250.         LD A,B
  251.         LD (CURCATY),A
  252.        LD C,#78
  253.        CALL PRCUR
  254.         PUSH BC,HL
  255.         LD DE,#5010
  256.         CALL PRFN
  257.         LD E,#30
  258.         DEC L,L
  259.         LD C,(HL)
  260.         INC L
  261.         LD B,(HL)
  262.         PUSH HL
  263.         CALL PRNUM
  264.         POP HL
  265.         LD A,","
  266.         CALL PRTHI
  267.         INC L
  268.         LD C,(HL)
  269.         INC L
  270.         LD B,(HL)
  271.         PUSH HL
  272.         CALL PRNUM
  273.         POP HL
  274.         LD E,#56
  275.         INC L
  276.         LD L,(HL)
  277.         ld H,0
  278.        LD (selfsz),HL
  279.         CALL PRNUM3
  280. selAsz=$+1
  281.        LD HL,0
  282.        LD E,#D6
  283.        CALL PRNUM4
  284.         POP HL
  285.         PUSH HL
  286.        ;HALT
  287.         LD DE,ENTRCOP
  288.         LD BC,16
  289.         LDIR
  290. CATTOP=$+1
  291.         LD HL,0
  292.         CALL VIEGFX
  293.         POP HL,BC
  294.         CALL IYKEY
  295.         LD C,7
  296.         CALL PRCUR
  297.         CP 32
  298.         jr NZ,SELNSPC
  299.        PUSH HL
  300. SELSPC
  301.        IF zac
  302.         LD C,40
  303.        ELSE
  304.         LD C,0
  305.        ENDIF
  306.         CALL CAT2GFX
  307.        IF zac
  308.         LD E,L
  309.         ld D,5
  310.         LD A,(DE)
  311.         RRA
  312.         LD DE,10
  313.         jr C,$+5
  314.         LD DE,-10
  315.         RRA
  316.         jr C,$+3
  317.         SBC HL,DE
  318.         AND 3
  319.         ADD A,3
  320.         LD LX,A
  321.         LD HX,LX
  322.         LD C,10
  323.        ELSE
  324.         LD C,80
  325.        ENDIF
  326. WYBINV0 LD A,(HL)
  327.         CPL
  328.         LD (HL),A
  329.         INC HL
  330.        IF zac
  331.         DEC HX
  332.         jr NZ,WYBINVN
  333.         LD HX,LX
  334.         ADD HL,DE
  335.        ENDIF
  336. WYBINVN DEC C
  337.         jr NZ,WYBINV0
  338.        POP DE
  339.        PUSH DE
  340.         CALL WYBPP
  341.        jr Z,WYBY
  342.       ;такой файл не помечали
  343. WYB0Q   LD HL,WYBRA
  344.         LD A,(HL)
  345.         INC (HL)
  346.         ADD A,A
  347.         ADD A,0xff&((filez+1)/2)
  348.         LD L,A
  349.         ADC A,+(filez+1)/512
  350.         SUB L
  351.         LD H,A
  352.         ADD HL,HL
  353.         LD (HL),D
  354.         DEC HL
  355.         LD (HL),E
  356.         JR WYBYOK
  357. SELNSPC
  358.         CP 13
  359.         jr NZ,SELNENT
  360.        PUSH HL
  361.         LD C,8
  362.         CALL CAT2GFX
  363.         EX DE,HL
  364.         LD A,"$"
  365.         CALL PRGFX
  366.        POP DE
  367.        PUSH DE
  368.        CALL WYBPP
  369.        EX DE,HL
  370.        jr NZ,SELSPC
  371.         JR WYBYOKN
  372.       ;снять пометку
  373. WYBY     EX DE,HL
  374.          LD HL,WYBRA
  375.          DEC (HL)
  376.          LD H,D
  377.          ld L,E
  378.         DEC DE
  379.         INC HL,HL,HL
  380. WYBY0
  381.        DUP 4
  382.         LDI
  383.         INC BC
  384.        EDUP
  385.         DEC C
  386.         jr NZ,WYBY0
  387. WYBYOK
  388. selfsz=$+1
  389.        LD DE,0
  390.        LD HL,(selAsz)
  391.        jr NZ,$+6
  392.        SBC HL,DE
  393.        JR $+3
  394.        ADD HL,DE
  395.        LD (selAsz),HL
  396. WYBYOKN
  397.         CALL PRHEADP
  398.        POP HL
  399. SELDOWN LD DE,16
  400.         ADD HL,DE
  401.        ;A<>0
  402.         XOR A
  403.         OR (HL)
  404.         JP Z,OLDENTR
  405.         INC B
  406.         LD A,B
  407.         CP 22 ;HGT
  408.         jr NZ,STLFIL0
  409.         DEC B
  410.         LD E,#50
  411.         JR SELFUDM
  412. SELNENT
  413.         SUB 11
  414.         jr NZ,SELFnU
  415.         LD DE,-16
  416.         ADD HL,DE
  417.         LD A,H
  418.         CP CATBUF/256
  419.         JP C,OLDENTR
  420.         DEC B
  421.         JP P,SDLFIL0
  422.         INC B
  423.         LD DE,-#50
  424.         JR SELFUDM
  425. SELFILN SBC HL,DE
  426. STLFIL0 JR SDLFIL0
  427. SELFnU
  428.         INC A
  429.         jr Z,SELDOWN
  430.         INC A
  431.         jr NZ,SELFnR
  432.         LD A,22*2-1
  433.         SUB B
  434.         LD C,A
  435.         XOR A
  436.         LD DE,16
  437. SELFR0  ADD HL,DE
  438.         CP (HL)
  439.         jr Z,SELFgE
  440.         DEC C
  441.         jr NZ,SELFR0
  442.         LD D,A
  443.         LD A,22-1
  444.         SUB B
  445.         LD E,A
  446.        INC A
  447.        CALL SELpppp
  448.         LD DE,22*#50
  449. SELFUDM PUSH HL
  450.         LD HL,(CATTOP) ;адрес графики начала видимой части каталога
  451.         ADD HL,DE
  452.         LD (CATTOP),HL
  453.         POP HL
  454.         JR SDLFIL0
  455. SELFgE  LD HL,(CURENTR)
  456. SELFgE0 LD DE,16
  457.         ADD HL,DE
  458.         LD A,(HL)
  459.         SBC HL,DE
  460.         OR A
  461.         jr Z,SDLFIL0
  462.         ADD HL,DE
  463.         INC B
  464.         LD A,B
  465.         CP 22
  466.         jr NZ,SELFgE0
  467.         DEC B
  468.         LD E,#50
  469.         PUSH HL
  470.         LD HL,(CATTOP)
  471.         ADD HL,DE
  472.         LD (CATTOP),HL
  473.         POP HL
  474.         JR SELFgE0
  475. SELFnR
  476.         INC A
  477.         jr NZ,SELFnL
  478.         LD DE,-22*16
  479.         ADD HL,DE
  480.         PUSH HL
  481.         LD E,B
  482.         ld D,A
  483. SELpppp
  484.         EX DE,HL
  485.         add hl,hl
  486.         add hl,hl
  487.         add hl,hl
  488.         add hl,hl
  489.         EX DE,HL
  490.         SBC HL,DE
  491.        OR A
  492.        RET NZ
  493.         LD A,H
  494.         CP CATBUF/256
  495.         POP HL
  496.         LD DE,-22*#50
  497.         jr NC,SELFUDM
  498.         LD HL,CATGFX
  499.         LD (CATTOP),HL
  500.         LD HL,CATBUF
  501.         LD B,L;0
  502. SDLFIL0 JP SELFIL0
  503. SELFnL
  504.         INC A
  505.         JP Z,SELHEX
  506.          SUB -7
  507.          OR 32
  508.         CP "p"
  509.         JP Z,SELFILT
  510.         CP "c"
  511.         JP Z,SELCREA
  512.          CP "n"
  513.          JP Z,SELCREA
  514.         CP "a"
  515.         JP Z,SELADD
  516.        CP "s"
  517.        JP Z,SELSEP
  518.        CP "k"
  519.        jr NZ,SELFINk
  520.         LD DE,dicszM
  521.         LD A,(DE)
  522.         ADD A,A
  523. ;0=>0, -1=>-2, -#80=>0
  524.         jr NZ,SELkA2
  525.         jr C,SELkA2
  526.         LD A,-4
  527. SELkA2  LD (DE),A
  528.         NEG
  529.         RRCA
  530.         RRCA
  531.         LD C,47
  532.         INC C
  533.         SUB 10
  534.         jr NC,$-3
  535.         ADD A,10+"0"
  536.         LD DE,tKB+1
  537.         LD (DE),A
  538.         DEC DE
  539.         LD A,C
  540.         LD (DE),A
  541.         JP REFRESH
  542. SELFINk
  543.         CP "q"
  544.         jr NZ,SELNQUI
  545.         QUIT
  546. SELNQUI
  547.         CP "m"
  548.         jr Z,SELMET
  549.         CP "r"
  550.         jr Z,SELRAR
  551.        IF dolds
  552.        CP "+"
  553.        jr Z,SELdolds
  554.        ENDIF
  555.        IF nastr
  556.         CP "f"
  557.         jr Z,SELFINE
  558.        ENDIF
  559.         CP "h"
  560.         jr Z,SELHEA
  561.         ;LD E,"A"
  562.         ;CP "!"
  563.         ;jr Z,SELDEST
  564.         ;INC E
  565.         ;CP "@"|32
  566.         ;jr Z,SELDEST
  567.         ;INC E
  568.         ;SUB "#"
  569.         ;jr Z,SELDEST
  570.         ;INC E
  571.         ;DEC A
  572.         ;jr Z,SELDEST
  573.         ;SUB "1"-"$"
  574.         ;CP 4
  575.         ;JP C,RELDRV
  576.         JP SELFIL0
  577. ;SELDEST LD A,E
  578. ;        LD (TDEST),A
  579. ;        JP PRHEAD
  580. SELMET
  581.         LD DE,tmethod
  582.        PUSH HL
  583. Ptmets=$+1
  584.         LD HL,tmets
  585.         BIT 7,(HL)
  586.        jr Z,$+5
  587.         LD HL,tmets
  588.         LD C,H
  589.        LDI
  590.        LDI
  591.         LD DE,LEflag
  592.        LDI
  593.         LD DE,FMETH
  594.        LDI
  595.         LD (Ptmets),HL
  596.        POP HL
  597.         JP REFRESH
  598. SELRAR
  599.         LD DE,extext
  600.         LD A,(DE)
  601.         XOR "z"^"a"
  602.         LD (DE),A
  603.         INC DE
  604.         LD A,(DE)
  605.         XOR "x"^"r"
  606.         LD (DE),A
  607.         JP REFRESH
  608.        IF dolds
  609. SELdolds
  610.         LD DE,doldson
  611.         LD A,(DE)
  612.         XOR " "^"+"
  613.         LD (DE),A
  614.         JP REFRESH
  615.        ENDIF
  616. SELHEA
  617.         LD DE,THEADON
  618.         LD A,(DE)
  619.         XOR "n"^"f"
  620.         LD (DE),A
  621.         INC DE
  622.         LD A,(DE)
  623.         XOR " "^"f"
  624.         LD (DE),A
  625.         JP PRHEAD
  626.        
  627.        IF nastr
  628. SELFINE
  629. SELFINY=$+1
  630.         LD E,0 ;Y
  631. SELFIN0
  632.         LD A,E
  633.        LD (SELFINY),A
  634.         ADD A,A
  635.         add A,A
  636.         add A,A
  637.         ADD A,36
  638.         LD C,#1C*8
  639.         CALL 8880
  640.         LD (HL),#3C;H
  641.        CALL IYKEY
  642.         LD D,0
  643.         LD (HL),D
  644.         LD HL,SETS
  645.         ADD HL,DE
  646.         add HL,DE
  647.        ;CP 13
  648.        ;JP Z,OLDENTR
  649.        LD BC,SELFIN0
  650.        PUSH BC
  651.         LD C,(HL)
  652.         INC HL
  653.         LD B,(HL)
  654.         SUB 8
  655.         jr NZ,FINnL
  656.         LD A,(BC)
  657.         CP #80
  658.        RET Z
  659.         PUSH BC
  660.         LD HL,TSETMAY
  661.         CPIR
  662. FINLQ   POP BC
  663.         LD A,(HL)
  664.         LD (BC),A
  665. PRSET
  666.         PUSH DE
  667.         LD HL,#589C
  668.         LD DE,29
  669.         LD BC,sets*256+#17
  670. PRSET0  LD (HL),C
  671.         INC L
  672.         LD (HL),C
  673.         INC L
  674.         LD (HL),C
  675.         INC L
  676.         LD (HL),C
  677.         ADD HL,DE
  678.         DJNZ PRSET0
  679.         LD DE,#409C
  680.         LD HL,SETS
  681.        ;LD C,sets
  682. PRSET1
  683.         CALL PRTHI32
  684.        ;PUSH BC
  685.         LD C,(HL)
  686.         INC HL
  687.         LD B,(HL)
  688.         LD A,(BC)
  689.        ;POP BC
  690.         CALL PRHEX
  691.         CALL PRTHI32
  692.         DEC E,E,E,E
  693.         CALL NXTLIN
  694.         INC L
  695.        ;DEC C
  696.         jr NZ,PRSET1
  697.         POP DE
  698.         RET
  699. FINnL   DEC A
  700.         jr NZ,FINnR
  701.         LD A,(BC)
  702.         CP #FF
  703.        RET Z
  704.         PUSH BC
  705.         LD HL,TSETMAY
  706.         CPIR
  707.         DEC HL,HL
  708.         JR FINLQ
  709. FINnR   DEC A
  710.         jr NZ,FINnD
  711.         LD A,sets-1
  712.         CP E
  713.        RET Z
  714.         INC E
  715.        RET
  716. FINnD  DEC A
  717.        JP NZ,RELOAD
  718.         CP E
  719.        RET Z
  720.         DEC E
  721.        RET
  722.        ENDIF
  723. WYBPP
  724. WYBRA=$+1
  725.         LD C,0
  726.         LD A,C
  727.        ;OR A
  728.        ;JZ WYB0Q
  729.        SUB 1
  730.        RET C
  731.         LD HL,filez
  732. WYB0    LD A,(HL)
  733.         INC HL
  734.         CP E
  735.         jr NZ,WYBN
  736.         LD A,(HL)
  737.         CP D
  738.        ;JZ WYBY
  739.        RET Z
  740. WYBN    INC HL,HL,HL
  741.         DEC C
  742.         jr NZ,WYB0
  743.        INC C
  744.        RET
  745.  
  746. ;separate files pack
  747. SELSEP
  748.         CALL SOZDWYB
  749.         LD HL,SEPloop
  750.         LD (ADDjpnz),HL
  751. SEPloop
  752.       LD HL,4
  753.       LD (filezsz),HL ;чтоб не делать packlist
  754.         CALL OUTpgTEXT ;вплоть до DOS в LZ
  755.        IF ay==0
  756.         OUT (-2),A
  757.        ENDIF
  758.        PUSH AF
  759.         ;CALL GETfCUR ;hl=archive name
  760.         SET 7,H ;skip hob.flag
  761.         JR SEPlopU
  762.        
  763. ;create rar
  764. SELCREA
  765. ;a='n' (new)/'c' (create)
  766.        PUSH AF
  767.         ;PUSH HL
  768.         ;CALL SOZDWYB ;если файлы не выбраны, то выбрать текущий (hl)
  769.           ld hl,WYBRA
  770.           ld (hl),1
  771.         ;POP HL
  772. SEPlopU ;LD DE,ARCNAME
  773.         ;LD BC,8
  774.         ;LDIR
  775.         ld hl,ARCNAME+8;EX DE,HL
  776.        LD A,(THEADON)
  777.        CP "n"
  778.        LD (HL)," "
  779.        jr NZ,$+4 ;no rar header
  780.         LD (HL),"r"
  781.         ;CALL CON1NAM ;включает tosave, исправляет имя
  782.         ;TODO скопировать имя из (curfilenameaddr) в fdir
  783.         ;jr $
  784.         ld hl,(curfilenameaddr)
  785.         ld de,fdir
  786.         call strcopy
  787.         call setfilenamelen
  788.        POP AF
  789.        PUSH AF
  790.        ;CP pgTEXT ;separate(после OUTpgTEXT)
  791.        PUSH BC,DE,HL
  792.         ;LD C,#12 ;del
  793.       PUSH AF
  794.        ;CALL NZ,DOD
  795.         CALL PKST ;установить hl', de'
  796.        LD HL,(extext);"zx"
  797.       POP AF
  798.       ;jr Z,CRyOF ;separate
  799.       LD A,(THEADON)
  800.       CP "n"
  801.       jr Z,CRnOFF1
  802. ;no rar header
  803.       LD A,(WYBRA)
  804.       DEC A
  805.       jr NZ,$+5 ;TODO зачем???
  806. CRyOF LD HL,(unpsz)
  807. CRnOFF1
  808.        LD (ARCNAME+9),HL
  809.         ;LD A,46
  810.         ;LD (rrrE),A ;ini ext
  811.         ;CALL READs8
  812.         ;LD HL,(s8+#E1);1st free
  813.        ;LD (SAVE1st),HL
  814.  
  815. ;TODO ARCNAME->OUTNAM      
  816.        call SAVECREATE ;OUTNAM=name 8.3
  817. ;a=1: file exists, add to end
  818.        dec a
  819.        jr z,CREAfil ;don't add rar header
  820.        
  821.        LD A,(THEADON)
  822.        CP "n"
  823.        jr NZ,CREAfil ;no rar header
  824.         LD IX,RARHEAD
  825.         LD B,7
  826.         CALL BLOCK
  827.         LD IX,arhd
  828.         LD B,13-2
  829. ;B=len-2(CRC)
  830.         CALL UPCRC1
  831.         LD IX,arhd-2
  832.         LD (arhd-2),DE
  833.         LD B,13
  834.         CALL BLOCK
  835. CREAfil
  836.        POP HL,DE,BC
  837.         POP AF
  838.        CP "n";New
  839.         JP NZ,ADDend;Create
  840.         CALL SAVE_ ;flush outfile
  841.         call SAVECLOSE
  842.         JR RELOAZ
  843. SELFILT
  844.        CALL CLA ;сбрасывет lded
  845.         ;XOR A
  846.         ;CALL CONVNAM ;почему выключается tosave??? TODO
  847.        
  848. ;hl=(ADRfrom)
  849.        
  850.         CALL PKST ;установить hl', de'
  851.       ;header off
  852.         PUSH HL
  853.         LD HL,CPn
  854.         LD (HL),H ;<>#6E ;no CRC??? TODO почему???
  855.         POP HL
  856.  
  857.         CALL PACKfil
  858.         CALL QUIT_ ;печать статистики
  859.        ;CALL 8026
  860.        ;JC $-3
  861. RELOAZ  
  862.         ;jr $
  863.         ret ;JP RELOAD
  864.  
  865. SELADD
  866.         CALL SOZDWYB
  867. ADDloop
  868.         ;CALL READs8
  869.        ;LD HL,(s8+#E4) ;число файлов на диске
  870.        ; XOR A
  871.        ; CP L
  872.        ;jr Z,RELOAZ ;no archive
  873.         ;DEC L
  874.        ;LD H,A
  875.        ;ld D,H
  876.        ;ADD HL,HL,HL,HL,HL,HL,HL,HL
  877.        ;LD E,H
  878.        ;ld H,dirsec/256
  879.         ;PUSH HL
  880.        ;LD L,D
  881.         ;LD BC,#105
  882.         ;CALL DOD ;TODO
  883.         ;POP HL ;hl=дескриптор последнего архива на диске
  884.         ;LD A,(HL)
  885.         ;DEC A
  886.        ;jr Z,RELOAZ ;no archive
  887.         ;LD DE,ARCNAME
  888.         ;LD BC,11
  889.         ;LDIR
  890.         ;DEC L
  891.          ld hl,ARCNAME+8+2
  892.        LD A,"r"
  893.        CP (HL)
  894.        jr NZ,RELnrar ;rzx
  895.         DEC L
  896.        LD A,"a"
  897.        CP (HL)
  898.        jr Z,RELyrar
  899.         INC L
  900. RELnrar
  901.        LD A,(extext+1)
  902.        CP (HL)
  903.        jr NZ,RELOAZ  ;not RZX
  904.         DEC L
  905.        LD A,(extext)
  906.        CP (HL)
  907.        jr NZ,RELOAZ  ;not RZX
  908. RELyrar DEC L
  909.         ;LD A,(HL)
  910.         ;DEC A
  911.         ;CP "r"-1
  912.         ;jr NZ,$+4
  913.         ;LD A,46
  914.         ;LD (rrrE),A ;ini ext
  915.       ;узнаем длину
  916.         INC L,L,L
  917.         LD C,(HL)
  918.         INC L
  919.         LD B,(HL)
  920.         INC L
  921.         LD E,(HL) ;sectors
  922.        ;LD (SAV_a),HL
  923.        PUSH DE
  924.        PUSH BC
  925.       ;архив надо удалить
  926.        ;LD A,24
  927.        ;LD (SAV_jr),A
  928.         CALL CON1NAM
  929.        ;PUSH BC,DE,HL
  930.       ;грузим последний сектор архива
  931.         ;LD HL,(s8+#E1) ;1st free
  932.         ;DEC L
  933.         ;JP P,$+6
  934.         ;LD L,15
  935.         ;DEC H
  936.        ;LD (SAVE1st),HL
  937.         ;EX DE,HL
  938.         ;LD HL,fout
  939.         ; LD BC,#105
  940.         ;CALL DOD
  941.        ;POP HL,DE,BC
  942.         EXX
  943.        POP BC
  944.         DEC BC
  945.         LD L,C
  946.         LD H,fout/256
  947.         INC HL
  948. ;HL=fout+1..256
  949.        POP DE
  950.         DEC E
  951.         EXX
  952. ADDend  
  953.         ;jr $
  954.         ld a,(savefilehandle)
  955.         ld b,a
  956.         OS_TELLHANDLE
  957. ;out: dehl=offset
  958.         ld (recordstart),hl
  959.         ld (recordstartHSW),de
  960.  
  961.          ld de,(curfilenameaddr)
  962.          call openstream_file
  963.         CALL PACKfil
  964.          call SAVE_ ;flush outfile
  965.          push hl
  966. recordstart=$+1
  967.         ld hl,0
  968. recordstartHSW=$+1
  969.         ld de,0
  970. ;dehl=offset
  971.          call SAVEREWIND
  972.          pop hl
  973.         CALL BYTsPPPfout ;сохранить начало fout в начало файла (TODO или блока???)
  974.          call SAVECLOSE
  975.          call closestream_file
  976.          
  977.          ld hl,(curfilenameaddr)
  978.          call prtext
  979.          ld hl,tadded
  980.          call prtext
  981.          
  982.         CALL QUIT_
  983.        
  984.         if 1==0
  985. ;таблица упакованных файлов для выгрузки отдельно?
  986. fileCUR=$+1
  987.         LD HL,0;(fileCUR)
  988.         LD DE,(paksz)
  989.         LD (HL),E
  990.         INC HL
  991.         LD (HL),D
  992.         INC HL
  993.         LD DE,(unpsz)
  994.         LD (HL),E
  995.         INC HL
  996.         LD (HL),D
  997.         INC HL
  998.         LD (fileCUR),HL
  999.         endif
  1000.        
  1001.         LD HL,WYBRA
  1002.         DEC (HL)
  1003. ADDjpnz=$+1
  1004.         JP NZ,ADDloop
  1005.        LD A,(THEADON)
  1006.        CP "n"
  1007.        jr Z,RELOAT
  1008. filezsz=$+1
  1009.       LD DE,0
  1010.       LD A,E
  1011.       SUB 4;паковали 1 файл=его параметры в дескрипторе "архива"
  1012.       OR D
  1013.       jr Z,RELOAT
  1014.       PUSH DE
  1015.         ;LD HL,TPLIST
  1016.         ;LD C,#13
  1017.         ;CALL DOD
  1018.         ;LD C,#12;del
  1019.         ;CALL DOD
  1020.         LD HL,filez;отсюда савить не хочт
  1021.        LD D,keys/256
  1022.        PUSH DE
  1023.        LD B,2
  1024.        LDIR ;??? TODO
  1025.        POP HL
  1026. ;filezsz=$+1
  1027. ;LD DE,0
  1028.       POP DE
  1029.         ;LD C,#B;saveC
  1030.         ;CALL DOD
  1031.        
  1032. ;TODO save file hl=addr, de=size
  1033.        
  1034. RELOAT  JP RELOAZ;RELOAD
  1035.  
  1036. ;3
  1037. CON1NAM
  1038.         ;CALL GETfCUR
  1039.          ld hl,ARCNAME
  1040.         LD A,1
  1041. CONVNAM
  1042. ;out: hl=(ADRfrom)
  1043.         LD (tosave),A
  1044.       ;CALL OUTpgTEXT
  1045.         LD BC,11
  1046.         ADD HL,BC
  1047.        ;BIT 7,H
  1048.        ;SET 7,H
  1049.         LD C,(HL)
  1050.         INC HL
  1051.         LD B,(HL) ;file length TODO
  1052.         INC HL
  1053.        LD A,(HL) ;<>0
  1054.        ;jr NZ,HOBNJR ;TODO убрать хобеты
  1055.        ; LD B,(HL)
  1056.        ; ld C,17
  1057.        ; PUSH HL
  1058.        ; PUSH HL
  1059.        ; LD HL,CNVNMHQ
  1060.        ; EX (SP),HL
  1061.        ; XOR A
  1062. ;HOBNJR  
  1063.         ;ld bc,0x100
  1064.         ;LD (unpsz),BC
  1065.  
  1066.       PUSH BC,HL
  1067.        LD E,A ;??? TODO
  1068.         RES 2,L
  1069.         DEC L
  1070.        PUSH HL
  1071.         LD BC,8
  1072. FNLEN0  DEC HL
  1073.         LD A,(HL)
  1074.         CP 32
  1075.         jr NZ,FNLENN
  1076.         DEC C
  1077.         jr NZ,FNLEN0
  1078.        INC C ;против пустого имени
  1079.        INC L
  1080. FNLENN
  1081.        IF filter==0
  1082.        PUSH BC
  1083.        LD A,".
  1084.       CPDR
  1085.       POP BC
  1086.       ENDIF
  1087.       POP HL
  1088.       IF filter==0
  1089.       JZ $+4 ;против 12.34< >
  1090.       ENDIF
  1091.       INC E
  1092.       DEC E
  1093.         PUSH HL
  1094.        PUSH DE
  1095. Lfname=$+1
  1096.        LD DE,fdir
  1097.        LD A,(HL)
  1098.        RES 3,L
  1099.       IF filter
  1100.       PUSH AF
  1101. filt0   LD A,(HL)
  1102.       LD (HL),"_"
  1103.       CP 33
  1104.       jr C,filtGOO
  1105.       CP "."
  1106.       jr Z,filtGOO
  1107.       LD (HL),A
  1108.        CP "+"
  1109.        jr Z,filtBAD
  1110.        CP 34
  1111.        jr Z,filtBAD
  1112.        CP "*"
  1113.        jr Z,filtBAD
  1114.        CP "/"
  1115.        jr Z,filtBAD
  1116.        CP 0x5c;"\"
  1117.        jr Z,filtBAD
  1118.        CP ":"
  1119.        jr C,filtGOO
  1120.        CP "@"
  1121.        jr NC,filtGOO
  1122. filtBAD LD (HL),"-"
  1123. filtGOO LDI
  1124.        JP PE,filt0
  1125.       POP AF
  1126.       ELSE
  1127.        LDIR
  1128.       ENDIF
  1129.        EX DE,HL
  1130.        POP BC
  1131.         POP DE
  1132.       jr Z,FNLyEXT
  1133.        CP " "
  1134.        jr Z,FNLnEXT
  1135. FNLyEXT LD (HL),"."
  1136.        INC HL
  1137.       INC C
  1138.       DEC C
  1139.       jr NZ,$+5
  1140.       LD (HL),"$"
  1141.       INC HL
  1142.        LD (HL),A
  1143.        INC HL
  1144.       PUSH HL
  1145.         EX DE,HL
  1146.         INC HL
  1147.         ;CALL goodH3
  1148.        LD B,(HL)
  1149.        INC HL
  1150.        LD C,(HL)
  1151.        INC HL
  1152.        POP HL
  1153.         LD A," "
  1154.         CP B
  1155.         jr Z,$+4
  1156.         LD (HL),B
  1157.         INC HL
  1158.         CP C
  1159.         jr Z,$+4
  1160.         LD (HL),C
  1161.         INC HL
  1162. FNLnEXT
  1163.        call setfilenamelen
  1164.      POP HL,BC
  1165.  
  1166.        INC L
  1167.        LD E,(HL)
  1168.        INC L
  1169.        LD D,(HL)
  1170. CNVNMUSE
  1171.         if 1==0
  1172. ;догрузить 32К
  1173.         ld bc,0x100;0x8000 ;костыль file size TODO
  1174.       DEC BC
  1175.       LD A,B
  1176.        INC B
  1177.       CP MAX/256
  1178.        INC A
  1179.        jr C,CNVNMUSEnokus
  1180.        LD BC,packfilsz;#8000 ;кусками по #8000
  1181.        ;LD (kus),BC
  1182. CNVNMUSEnokus
  1183.       SUB B
  1184.       LD (FILEremain),A ;важно 0/не0
  1185.        XOR A
  1186.        LD L,A
  1187.        SUB B
  1188.        LD H,A
  1189.       ;LD (ADRfrom),HL
  1190.       ;LD C,5 ;TODO убрать
  1191.       endif
  1192.        RET
  1193.        
  1194.        if 1==0
  1195. ;дб место под 17b заголовок с адр файла
  1196. CNVNMHQ
  1197.        EX DE,HL
  1198.        EX (SP),HL
  1199.       DEC B ;v11
  1200.        PUSH BC
  1201.        LD C,17
  1202.        LD (kus),BC
  1203.        LD BC,13
  1204.        OR A
  1205.        SBC HL,BC
  1206.        LDIR
  1207.       LD A,(HL) ;каталог там же!
  1208.       EX DE,HL
  1209.       LD (HL),B
  1210.       INC HL
  1211.       LD (HL),A
  1212.        LD DE,105
  1213.        LD L,D
  1214.        LD B,15
  1215. HOB0    LD A,(HL)
  1216.        ADD A,E
  1217.        LD E,A
  1218.        LD A,(HL)
  1219.        ADC A,D
  1220.        LD D,A
  1221.        INC HL
  1222.        DJNZ HOB0
  1223.        LD (HL),E
  1224.        INC HL
  1225.        LD (HL),D
  1226.        INC HL
  1227.        POP BC
  1228.        POP DE
  1229.        RET
  1230.        endif
  1231.  
  1232. setfilenamelen
  1233.        ld hl,fdir
  1234.        call strlen
  1235.        ;LD DE,-fdir
  1236.        ;ADD HL,DE
  1237.        LD (namsz),HL
  1238.        LD BC,32
  1239.        ADD HL,BC
  1240.        LD (fihdsz),HL
  1241.        ret
  1242.  
  1243. SOZDWYB
  1244. ;hl=адрес текущего дескриптора в CATBUF
  1245.       CALL CLA
  1246.        ;LD DE,filez
  1247.        ;ld (fileCUR),DE ;таблица упакованных файлов для выгрузки отдельно?
  1248.        LD A,(WYBRA)
  1249.        OR A
  1250.        jr NZ,SOZDWYn ;уже есть выбранные файлы
  1251.        INC A
  1252.        LD (WYBRA),A
  1253.        LD (filez),HL ;hl=адрес текущего дескриптора в CATBUF
  1254. SOZDWYn
  1255.        ADD A,A
  1256.        LD B,A ;b=selfiles*2
  1257.        ADD A,A
  1258.        LD E,A
  1259.        LD A,0
  1260.        ADC A,A
  1261.        LD D,A ;de=selfiles*4
  1262.        LD (filezsz),DE
  1263.       IF adir==0
  1264.        RET
  1265.       ELSE
  1266.        ;CALL 8026
  1267.        ;RET C
  1268.        CALL CLS
  1269.        ;LD (HL),#44
  1270.        ;LDIR
  1271. INCLX   INC B
  1272. INPUT0
  1273.        LD HL,fdir
  1274.        PUSH BC
  1275.       LD DE,#40E0
  1276.        CALL PR_B
  1277.       DEC HL
  1278.       dec E
  1279.        POP BC
  1280.       DEC E
  1281.      ;LD A,"_"
  1282.      ;CALL PRTHI
  1283.       CALL PRTHI32
  1284.        CALL IYKEY
  1285.        CP key_enter
  1286.        jr Z,INPOK
  1287.        cp 0x20
  1288.        jr C,INPDEL ;прочие системные кнопки не нужны
  1289.      ;JP M,INPUT0
  1290.       CP "/"
  1291.       jr NZ,$+4
  1292.       LD A,0x5c;"\"
  1293.        LD (HL),A
  1294.        LD A,B
  1295.        CP adir;+1
  1296.        jr NZ,INCLX
  1297. INPDEL  DJNZ INPUT0
  1298.        JR INCLX
  1299. INPOK
  1300.       LD (HL),0x5c;"\"
  1301.       INC HL
  1302.        LD (Lfname),HL
  1303.       ENDIF
  1304. CLA
  1305.        PUSH HL
  1306.        CALL CLS
  1307.        ;LD B,3
  1308.        ;LDIR
  1309.       ;LD (lded),BC ;TODO куда-то в другое место
  1310.        POP HL
  1311.        RET
  1312.  
  1313.  
  1314. CLPG
  1315.        push af
  1316.        CALL OUTME
  1317.         if 1==1
  1318.         ld hl,0xc000
  1319.         ld de,0xc001
  1320.         ld bc,0x3fff
  1321.         ld (hl),l;0
  1322.         ldir
  1323.         else ;может запортить bfxx
  1324.        LD HL,0
  1325.        LD (CLPGSP),SP
  1326.        LD SP,HL
  1327.       LD C,2
  1328.        LD B,L
  1329. CLPG0   DUP 16
  1330.        PUSH HL
  1331.        EDUP
  1332.        DJNZ CLPG0
  1333.       DEC C
  1334.       JR NZ,CLPG0
  1335. CLPGSP=$+1
  1336.        LD SP,0
  1337.         endif
  1338.        pop af
  1339.        RET
  1340.  
  1341. IYKEY
  1342.        PUSH HL
  1343.        ;LD HL,23560
  1344.        ;LD (HL),H
  1345.        ;LD A,(HL)
  1346.        ;CP H
  1347.        ;jr Z,$-2
  1348.        push bc
  1349.        push de
  1350.        push ix
  1351.        push iy ;TODO надо ли альтернативные?
  1352.        YIELDGETKEYLOOP
  1353.        pop iy
  1354.        pop ix
  1355.        pop de
  1356.        pop bc
  1357.        POP HL
  1358.        RET
  1359. ;2
  1360. UPCRC1
  1361.        LD HL,-1
  1362.        ld D,H
  1363.        ld E,L
  1364. UPCRC   PUSH BC
  1365.        LD C,(IX)
  1366.        CALL crcpp
  1367.        POP BC
  1368.        INC IX
  1369.        DJNZ UPCRC
  1370. INVCRC  CALL $+3
  1371.        EX DE,HL
  1372. INVHL   LD A,H
  1373.        CPL
  1374.        LD H,A
  1375.        LD A,L
  1376.        CPL
  1377.        LD L,A
  1378.        RET
  1379. crcpp
  1380.        LD B,8
  1381. crclp   LD A,E
  1382.        XOR C
  1383.        SRL C
  1384.        srl H
  1385.        RR L
  1386.        rr D
  1387.        rr E
  1388.        RRA
  1389.        jr NC,noxor
  1390.        LD A,H
  1391.        XOR #ED
  1392.        LD H,A
  1393.        LD A,L
  1394.        XOR #B8
  1395.        LD L,A
  1396.        LD A,D
  1397.        XOR #83
  1398.        LD D,A
  1399.        LD A,E
  1400.        XOR #20
  1401.        LD E,A
  1402. noxor   DJNZ crclp
  1403.        RET
  1404.  
  1405.       IF ay
  1406.        DW 300,400,500
  1407.        DB 0
  1408.        DB 7<3
  1409.        DB 16,16,16
  1410.        DW 6700
  1411.        DB 1
  1412. AYREGE
  1413.       ENDIF
  1414. tmets
  1415.        DB "fa",24,"4"
  1416.        DB "pu",24,"4"
  1417.        DB "be",40,"5"
  1418.        DB -1
  1419.       IF nastr
  1420. TSETMAY=$-1
  1421.        DB #FE,#FD,#FC,#FA,#F8,#F4,#F0
  1422.        DB #E8,#E0,#D0,#C0,#A0,#80
  1423.       ENDIF
  1424. TPLIST
  1425.        DB "packlistC"
  1426. THEAD
  1427.        DB "to A",13
  1428. TDEST=$-2
  1429.        DB "Header on ",13
  1430. THEADON=$-3
  1431.        DB "Mark ",0
  1432. TMENU
  1433.        DB " free",13
  1434. tMeth
  1435.        DB "Method:"
  1436. tmethod DB "best"
  1437. tKB     DB "32K",13
  1438.        DB 13
  1439.        DB "1-4 drives",13
  1440.       IF nastr
  1441.        DB "Finetune"
  1442.       ENDIF
  1443.        DB 13
  1444.        DB "Pack test",13
  1445.       DB "Separate pack"
  1446.        DB 13,"Create Rzx"
  1447. extext=$-2
  1448.       IF dolds
  1449. doldson DB " "
  1450.       ENDIF
  1451.        DB 13
  1452.        DB "New empty",13
  1453.        DB "Add",13
  1454.        DB 13
  1455.        DB "Quit to DOS"
  1456.        NOP
  1457. RARHEAD
  1458.        DB "Rar!",#1A,7,0
  1459.        DW 0 ;CRC
  1460. arhd    DB #73
  1461.        DW 0
  1462.        DW 13
  1463.        DW 0
  1464.        DW 0,0
  1465.  
  1466. fihd    DB #74
  1467.        DW #8000
  1468. fihdsz  DW 0
  1469. paksz   DS 4
  1470. unpsz   DS 4
  1471.        DB 82
  1472. filcrc  DS 4
  1473.        DS 4 ;TIME
  1474.        DB 20 ;VER
  1475. FMETH   DB "5"
  1476. namsz   DW 0
  1477.        DS 4 ;ATTR
  1478. fdir    ;DB " ";filename.$diz
  1479.        db "sometext.flz"
  1480.        ds fdir+256-$
  1481. ;Konez=$+13+adir
  1482.  
  1483. ;WASSETS
  1484.       ;DISP #5B05;(#5B5C)=#10
  1485. ;GDESETS
  1486. QUIT_
  1487.        XOR A
  1488.        OUT (-2),A
  1489.        ;CALL CLS
  1490.        ;INC H
  1491.        ;inc D
  1492.        ;LD (HL),71
  1493.        ;LDIR
  1494.        LD HL,(unpsz)
  1495.        LD DE,#488A
  1496.        CALL PRNUM2
  1497.       LD HL,(Lfname)
  1498.       LD E,#4B
  1499.       LD A,(namsz)
  1500.       SUB L
  1501.       ADD A,fdir&0xff
  1502.       LD B,A
  1503.       CALL PR_B
  1504.        LD HL,(paksz)
  1505.        LD E,#AA
  1506. PRNUM2
  1507.       PUSH HL
  1508.       CALL PRNUMD
  1509.       LD A,"="
  1510.       CALL PRTHI
  1511.       POP BC
  1512. PRNUMH
  1513.        LD A,"#"
  1514.        CALL PRTHI
  1515.        LD A,B
  1516.        CALL PRHEX
  1517.        LD A,C
  1518. PRHEX
  1519.        CALL PRHEXD
  1520. PRHEXD  RRCA
  1521.        RRCA
  1522.        RRCA
  1523.        RRCA
  1524.        PUSH AF
  1525.        AND 15
  1526.        CP 10
  1527.        CCF
  1528.        ADC A,"0"
  1529.        DAA
  1530.        CALL PRTHI
  1531.        POP AF
  1532.        RET
  1533. PRNUM
  1534.        LD A,PRNUMH-$-2
  1535.        LD H,B
  1536.        ld L,C
  1537. PRNUMD  LD BC,10000
  1538.        CALL PRDIG
  1539. PRNUM4  LD BC,1000
  1540.        CALL PRDIG
  1541. PRNUM3  LD BC,100
  1542.        CALL PRDIG
  1543.        LD C,10
  1544.        CALL PRDIG
  1545.        LD C,1
  1546. PRDIG
  1547.        LD A,"0"-1
  1548.        OR A
  1549.        INC A
  1550.        SBC HL,BC
  1551.        jr NC,$-3
  1552.        ADD HL,BC
  1553. PRJR    jr NC,PR8X8
  1554. PRTHI
  1555.        if 1==0
  1556.        PUSH BC,DE,HL
  1557.        CALL BEFOPR
  1558. PRTHI0  LD A,(HL)
  1559.        RRCA
  1560.        OR (HL)
  1561.        LD (DE),A
  1562.        INC L,D
  1563.        DJNZ PRTHI0
  1564.        POP HL,DE,BC
  1565.        INC E
  1566.        endif
  1567.        RET
  1568.  
  1569.         if 1==0 ;TODO
  1570. PR1234
  1571.        LD DE,#5941
  1572.         endif
  1573. PR88HEX
  1574.        LD A,H
  1575.        CALL PR12
  1576.        LD A,L
  1577. PR12    PUSH AF
  1578.        RRA
  1579.        RRA
  1580.        RRA
  1581.        RRA
  1582.        CALL PR8X8
  1583.        POP AF
  1584. PR8X8
  1585.       PUSH HL
  1586.        ADD A,A
  1587.        ADD A,A
  1588.        ADD A,A
  1589.        OR #80
  1590.        LD H,61
  1591.        CP 80+#80
  1592.        jr C,$+5
  1593.        SUB 72+#80
  1594.        INC H
  1595.        LD L,A
  1596. PR8X80  INC L
  1597.        LD A,(HL)
  1598.        ADD A,A,A,A
  1599.        LD B,A
  1600.       DUP 5
  1601.        SBC A,A
  1602.        LD (DE),A
  1603.        INC E
  1604.        SLA B
  1605.       EDUP
  1606.        SBC A,A
  1607.        LD (DE),A
  1608.       LD A,E
  1609.       ADD A,#1B
  1610.       LD E,A
  1611.       jr NC,PR8X80
  1612.       ADD A,#48
  1613.       LD E,A
  1614.       POP HL
  1615.        RET
  1616.       IF nastr
  1617. SETS
  1618.        DW SET1
  1619.        DW SET2
  1620.        DW SETA
  1621.        DW SETB
  1622.        DW SETC
  1623.        DW SETD
  1624.        DW SETE
  1625.        DW SETF
  1626.        DW SETG
  1627.        DW SETH
  1628.        DW SETI
  1629.        DW SETJ
  1630.        DW SETK
  1631.        DW SETL
  1632.        DW SETM
  1633.        DW SETN
  1634.        DW SETO
  1635.  
  1636.        ;DISPLAY $
  1637. SETSlen=$-SETS
  1638.       ENDIF
  1639.       ;ENT
  1640.  
  1641. ;GO
  1642. ;        JP RELOAD
  1643.  
  1644. MAX=0x8100;-Konez-#200-svbfsz/256<8
  1645. ;-(MAX+pakto/8*9)/256<8,fastWR:сожрёт окно
  1646. pak9=-MAX;продолж-е LZ данных
  1647. fout=-MAX-#200-svbfsz
  1648. ;первые 2сек.сохраняются в посл.очередь
  1649. ;чтобы успеть изменить paklen,CRC
  1650. ;s8=fout
  1651. ;dirsec=fout+#200
  1652.        ;DISPLAY /T,Konez,/T,MAX
  1653.