?login_element?

Subversion Repositories NedoOS

Rev

Rev 609 | Blame | Compare with Previous | Last modification | View Log | Download

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