?login_element?

Subversion Repositories NedoOS

Rev

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

  1.         DEVICE ZXSPECTRUM128
  2.         include "../_sdk/sys_h.asm"
  3.  
  4.        MACRO rarrdbyte
  5.         INC LY
  6.         LD A,(IY)
  7.         CALL Z,RDBYH
  8.        ENDM
  9.  
  10. ramdisk=1 ;support 2-byte links
  11.  
  12. INITIALMEMPAGES=24;32;6
  13.  
  14. STACK=0x4000
  15. DISKBUF=0x6c00
  16. DISKBUFsz=0x1000
  17.  
  18. crc=1;0
  19.  
  20. COLOR=7
  21. CURSORCOLOR=0x38
  22.  
  23. namln=MAXPATH_sz;100 ;#FA
  24.  
  25.         org PROGSTART
  26. cmd_begin
  27.         ld sp,STACK
  28.         call initstdio
  29.         ;ld e,6 ;textmode
  30.         ;OS_SETGFX
  31.        
  32.         ;OS_GETMAINPAGES
  33. ;dehl=номера страниц в 0000,4000,8000,c000
  34.         ld hl,PTABL
  35.         ld b,INITIALMEMPAGES;64 ;TODO меньше для ATM2
  36. getpgs0
  37.         push bc
  38.         push hl
  39.         OS_NEWPAGE
  40.         pop hl
  41.         ld (hl),e
  42.         inc hl
  43.         pop bc
  44.         djnz getpgs0
  45.        
  46.         ld hl,COMMANDLINE
  47.         call skipword
  48.         call skipspaces
  49.         ld a,(hl)
  50.         or a
  51.         jr nz,$+5
  52.          ld hl,defaultfilename
  53.         ld (curfilenameaddr),hl
  54.        
  55. curfilenameaddr=$+1
  56.         ld de,0
  57. ;        call openstream_file
  58. ;        or a
  59. ;        jp nz,openerror
  60.        
  61.         ;CALL initdepk;Z6629 ;ИНИЦИАЛИЗАЦИЯ ДЕПAKEPA
  62.  
  63.         ld a,'c' ;"create" (not "new") ;new проверено - работает
  64.        call SELCREA
  65.         ;call depack
  66.         QUIT
  67.  
  68. readerror ;TODO
  69.        
  70. openerror
  71. error
  72. quit
  73. quitoperation
  74.         QUIT
  75.  
  76. copyname83
  77. ;hl->de
  78. ;длина имени не увеличивается - можно поверх?
  79. ;перекодирует слэш в прямой
  80. copyname83_element
  81.         ld b,8
  82. copyname83_0
  83.         ld a,(hl)
  84.         inc hl
  85.         or a
  86.         jr z,copyname83_q
  87.         cp 0x5c;'\'
  88.         jr z,copyname83_endelement
  89.         cp '/'
  90.         jr z,copyname83_endelement
  91.         cp '.'
  92.         jr z,copyname83_ext
  93.         ld (de),a
  94.         inc de
  95.         djnz copyname83_0
  96. ;8 chars of name copied, wait for dot or slash or terminator
  97. copyname83_skipname0
  98.         ld a,(hl)
  99.         inc hl
  100.         or a
  101.         jr z,copyname83_q
  102.         cp 0x5c;'\'
  103.         jr z,copyname83_endelement
  104.         cp '/'
  105.         jr z,copyname83_endelement
  106.         cp '.'
  107.         jr nz,copyname83_skipname0
  108. copyname83_ext
  109.         ld (de),a ;'.'
  110.         inc de
  111.         ld b,3
  112. copyname83_ext0
  113.         ld a,(hl)
  114.         inc hl
  115.         or a
  116.         jr z,copyname83_q
  117.         cp 0x5c;'\'
  118.         jr z,copyname83_endelement
  119.         cp '/'
  120.         jr z,copyname83_endelement
  121.         cp '.'
  122.         jr z,copyname83_skipext0
  123.         ld (de),a
  124.         inc de
  125.         djnz copyname83_ext0
  126. copyname83_skipext0
  127.         ld a,(hl)
  128.         inc hl
  129.         or a
  130.         jr z,copyname83_q
  131.         cp 0x5c;'\'
  132.         jr z,copyname83_endelement
  133.         cp '/'
  134.         jr nz,copyname83_skipext0
  135. copyname83_endelement
  136.         ld a,'/'
  137.         ld (de),a ;'/'
  138.         inc de
  139.         jr copyname83_element
  140. copyname83_q
  141.         ld (de),a ;0
  142.         ret
  143.  
  144. skipword
  145. ;hl=string
  146. ;out: hl=terminator/space addr
  147. getword0
  148.         ld a,(hl)
  149.         or a
  150.         ret z
  151.         cp ' '
  152.         ret z
  153.         inc hl
  154.         jr getword0
  155.  
  156. skipspaces
  157. ;hl=string
  158. ;out: hl=after last space
  159.         ld a,(hl)
  160.         cp ' '
  161.         ret nz
  162.         inc hl
  163.         jr skipspaces
  164.  
  165. strcopy
  166. ;hl->de
  167. strcopy0
  168.         ld a,(hl)
  169.         ldi
  170.         or a
  171.         jr nz,strcopy0
  172.         ret
  173.  
  174. PTABL
  175.         ds 64 ;page numbers, patched
  176.  
  177. OUTpgTEXT
  178.         LD A,pgTEXT;16 ;TODO
  179. OUTME
  180.        IF ramdisk
  181.         LD (BYTEPG),A
  182.        ENDIF
  183. OUTNO
  184.         PUSH BC
  185.        LD b,PTABL/256
  186.        ADD A,PTABL&0xff
  187.         LD c,A
  188.         LD A,(bc)
  189.         SETPG32KHIGH
  190.         POP BC
  191.         RET
  192.  
  193. mktcrc
  194.         XOR A
  195.         LD L,A
  196. MKTCRC0 EXX
  197.         LD C,0
  198.         LD H,C
  199.         ld L,C
  200.         ld D,C
  201.         ld E,A
  202.         EXA
  203.         CALL crcpp
  204.         EXA
  205.          PUSH HL
  206.          push DE
  207.         EXX
  208.         LD H,TCRC/256
  209.          POP DE
  210.         LD (HL),E
  211.         INC H
  212.         LD (HL),D
  213.         INC H
  214.          POP DE
  215.         LD (HL),E
  216.         INC H
  217.         LD (HL),D
  218.         INC L
  219.         INC A
  220.         JR NZ,MKTCRC0
  221.         ret
  222.  
  223. gencrc
  224. ;hl=addr, bc=length
  225.        LD A,(THEADON)
  226. CPn=$+1
  227.        CP "n"
  228.        JR NZ,NCRC
  229.         PUSH HL
  230.         POP IX
  231. CURCRC=$+1
  232.         LD DE,0
  233. CURCRC2=$+1
  234.         LD HL,0
  235.          CALL INVCRC
  236. FCRC0    PUSH BC
  237.         LD B,H
  238.         ld C,L
  239.          LD A,E
  240.          XOR (IX)
  241.          LD L,A
  242.         LD H,TCRC/256
  243.          LD A,(HL)
  244.          XOR D
  245.          LD E,A
  246.          INC H
  247.          LD A,(HL)
  248.         XOR C
  249.          LD D,A
  250.          INC H
  251.          LD A,(HL)
  252.         XOR B
  253.          INC H
  254.          LD H,(HL)
  255.          ld L,A
  256.          POP BC
  257.          INC IX
  258.          DEC BC
  259.          LD A,B
  260.          OR C
  261.          JR NZ,FCRC0
  262.          CALL INVCRC
  263.         LD (CURCRC),DE
  264.         LD (CURCRC2),HL
  265. NCRC
  266.         ret
  267.  
  268. minhl_bc_tobc
  269.         or a
  270.         sbc hl,bc
  271.         add hl,bc
  272.         ret nc ;bc<=hl
  273.         ld b,h
  274.         ld c,l
  275.         ret
  276.  
  277.        
  278. SAVEBLOCK
  279. ;de=bytes to save
  280. ;hl=addr
  281.          push bc
  282.         exx
  283.         push bc
  284.         push de
  285.         push hl
  286.         exx
  287.         ex af,af'
  288.        push af
  289.        ld a,(savefilehandle)
  290.        ld b,a
  291.        ex de,hl
  292.         push ix
  293.        push iy
  294. tosave=$+1
  295.       LD A,1;0
  296.       OR A
  297.       jr z,SAVEBLOCK_skip
  298.        OS_WRITEHANDLE
  299. SAVEBLOCK_skip
  300.        pop iy
  301.         pop ix
  302.        pop af
  303.        ex af,af'
  304.         exx
  305.         pop hl
  306.         pop de
  307.         pop bc
  308.         exx
  309.          pop bc
  310.         ret
  311.  
  312. strlen
  313. ;hl=str
  314. ;out: hl=length
  315.         ld bc,0 ;чтобы точно найти терминатор
  316.         xor a
  317.         cpir ;найдём обязательно, если длина=0, то bc=-1 и т.д.
  318.         ld hl,-1
  319.         or a
  320.         sbc hl,bc
  321.         ret
  322.  
  323. SAVECREATE
  324. ;out: a=1: file exists, add to end
  325.         push iy
  326.  
  327. ;сформировать filename 8.3 (во всех элементах):
  328.         ld hl,OUTNAM;Z664A
  329.         ld de,OUTNAM;filename
  330.         ;call strcopy
  331.         call copyname83 ;заодно перекодирует слэш в /
  332. ;TODO если нет такой директории, то create directory (например, "md scr/1" без слеша в конце):
  333.  
  334.         ld hl,OUTNAM
  335. SAVECREATE_dir0
  336. ;hl=текущий элемент пути
  337. ;1.проверить, что путь не кончился (т.е. дальше есть /)
  338.         push hl
  339.         call strlen
  340.         ld b,h
  341.         ld c,l
  342.         pop hl
  343.         ld a,'/'
  344.         cpir
  345.         jr nz,SAVECREATE_dirq
  346.         dec hl
  347. ;hl=at slash
  348. ;2.проверить, что есть i-й элемент пути (до слэша) - через CHDIR?
  349.         ld (hl),0
  350.         push hl
  351.         ld de,pathbuf
  352.         OS_GETPATH
  353.         ld de,OUTNAM
  354.         OS_CHDIR
  355.         push af
  356.         ld de,pathbuf
  357.         OS_CHDIR
  358.         pop af
  359.         or a
  360.         jr z,SAVECREATE_dirnomk ;такая директория уже есть
  361. ;3.если нет, то создать 0..i-й (текущий путь не меняем)
  362.         ld de,OUTNAM
  363.         OS_MKDIR
  364. SAVECREATE_dirnomk
  365.         pop hl
  366.         ld (hl),'/'
  367.         inc hl
  368.         jr SAVECREATE_dir0
  369. SAVECREATE_dirq
  370.  
  371.         ld de,OUTNAM;filename
  372.         OS_OPENHANDLE
  373.         or a
  374.         ld a,1
  375.         jr z,SAVECREATE_opened
  376.         ld de,OUTNAM;filename
  377.         OS_CREATEHANDLE
  378.         xor a
  379. SAVECREATE_opened
  380.         push af ;a=1: file exists, add to end
  381. ;b=new file handle
  382.         ld a,b
  383.         ld (savefilehandle),a
  384.        
  385.         ld a,(savefilehandle)
  386.         ld b,a
  387.         OS_GETFILESIZE ;dehl=filesize
  388. ;dehl=offset
  389.          call SAVEREWIND
  390.        
  391.         pop af ;a=1: file exists, add to end
  392.         pop iy
  393.         ret
  394.  
  395. SAVECLOSE
  396.         push iy
  397. savefilehandle=$+1
  398.         ld b,0
  399.         OS_CLOSEHANDLE
  400.         pop iy
  401.         ret
  402.        
  403.        
  404. LBYTE  LD A,L
  405. BYTE
  406.         if 1==0
  407.          ;push af
  408.          push de
  409.         push hl
  410.         ld hl,bytebuf
  411.         ld (hl),a
  412.         ld de,1
  413. ;de=bytes to save
  414. ;hl=addr      
  415.         call SAVEBLOCK
  416.         pop hl
  417.          pop de
  418.          ;pop af
  419.         ret
  420. bytebuf
  421.         db 0
  422.  
  423.         else
  424.        
  425.         EXX
  426. XBYTE   LD (HL),A
  427.  
  428.          ;push hl
  429.          ;ld hl,paksz
  430.          ;inc (hl)
  431.          ;inc hl
  432.          ;jr z,$-2
  433.          ;pop hl ;TODO обновлять только при сохранении блока, в конце и в начале сохранять неполный блок?
  434.  
  435.        LD A,H
  436.         INC L
  437.         EXX
  438.         RET NZ
  439.         EXX
  440.         INC H
  441.        LD A,H
  442. BYTEend=$+1
  443.        CP fout/256+2+(svbfsz/256)
  444.         EXX
  445.         RET C
  446. BYTEsv
  447.         EXX
  448.         PUSH BC
  449.         CALL BYTEsPP
  450.         POP BC
  451.         EXX
  452.        IF ramdisk
  453. OUTBYTEPG
  454. BYTEPG=$+1
  455.         LD A,0
  456.         JP OUTME
  457.        ELSE
  458.         RET
  459.        ENDIF
  460.         endif
  461.  
  462. SAVEREWIND
  463.         push af
  464.         ;push de
  465.         ;ld hl,0
  466.         ;ld d,h
  467.         ;ld e,l
  468.         ld a,(savefilehandle)
  469.         ld b,a
  470. ;dehl=offset
  471.         OS_SEEKHANDLE
  472.         ;pop de
  473.         pop af
  474.         ret
  475.  
  476. BYTEsPP_endfile
  477.         if 1==1
  478. ;;если hl<fout+512, то первые 2 сектора ещё не сохранены, надо сохранить сколько есть с адреса fout
  479. ;;иначе сохранить hl-(fout+512) с адреса fout+512 (может быть 0)
  480. ;        ld de,fout+512
  481. ;        ld a,h
  482. ;        cp d;+(fout+512)/256
  483. ;        jr nc,BYTEsPP_endfile_headsaved
  484. ;        ld de,fout
  485. ;BYTEsPP_endfile_headsaved
  486.         ld de,(BYTEsPP_hl)
  487.         or a
  488.         sbc hl,de
  489.         ex de,hl
  490.         ret z
  491. ;de=bytes to save
  492. ;hl=addr
  493.         jp SAVEBLOCK
  494.        
  495.         else
  496.         DEC HL
  497.         INC H
  498.         LD A,H
  499.         jp BYTEsPP
  500.         endif
  501.  
  502. BYTEsPP_startfile
  503. ;сохранить или пропустить первые 2 сектора файла
  504.         if 1==1
  505.         LD HL,fout ;begin of fout after sec2
  506.         ld (BYTEsPP_hl),hl
  507.         else
  508.         LD HL,(SAVE1st)
  509.         INC L,L
  510.         BIT 4,L
  511.         RES 4,L
  512.         JR Z,$+3
  513.         INC H
  514.         LD (BYTEsvTS),HL
  515.         endif
  516.         ret
  517.  
  518. BYTsPPPfout
  519. ;вызывается перед закрытием outfile
  520. ;de не важно
  521. ;если hl<fout+512, то выход (только что сохранили сколько есть < 512, не надо сохранять 512 байт)
  522. ;иначе сохранить 512 байт с адреса fout
  523.         ld a,h
  524.         cp +(fout+512)/256
  525.         ret c
  526.         LD HL,fout
  527.         jr _BYTsPPP
  528.        
  529. BYTEsPP
  530. ;a=H
  531. ;первые 2сек.сохраняются в посл.очередь
  532. ;чтобы успеть изменить paklen,CRC
  533. BYTEsPP_hl=$+1 ;TODO init
  534.         LD HL,fout ;begin of fout (initially) / begin of fount after sec2 (after first save)
  535. _BYTsPPP
  536. ;hl=fout+512 (обычно)/fout (в начале и в конце сохранения)
  537. ;de=(SAVEsz) in sectors
  538.        CP H
  539.         RET C
  540.         RET Z ;первые 2сек.сохраняются в посл.очередь ;в NedoOS их надо сохранять только первый раз!
  541.        SUB h;fout/256 ;H ;в NedoOS не можем пропускать первые 2 сектора, всё равно сохраняем
  542.         LD B,A ;b=sectors to save
  543.         ADD A,E
  544.         LD E,A
  545.         jr NC,$+3
  546.         INC D
  547.        ;PUSH HL
  548.         PUSH DE
  549. ;BYTEsvTS=$+1
  550. ;        LD DE,0
  551.         ;LD C,6
  552. ;tosave=$+1
  553. ;       LD A,0
  554. ;       OR A
  555. ;         jr Z,notosav
  556.        ;CALL NZ,DOD
  557.          ;ld hl,fout ;в NedoOS не можем пропускать первые 2 сектора, всё равно сохраняем
  558.         ld d,b
  559.         ld e,0
  560. ;de=bytes to save
  561. ;hl=addr
  562.         call SAVEBLOCK
  563.         ;call SAVECLOSE
  564.         ;QUIT
  565.        
  566.         LD HL,fout+512 ;begin of fout after sec2
  567.         ld (BYTEsPP_hl),hl
  568.         ;LD HL,(#5CF4)
  569.         ;LD (BYTEsvTS),HL
  570.         ;POP HL
  571.         ;PUSH HL
  572. ;+255*#
  573.        ;LD A,(ARCNAME+8)
  574.       ;CP "r
  575.       ;JZ BYsvN0ar
  576.        ;SUB 47
  577.        ; CP "r"-47
  578.        ; jr NC,BYsvN0ar
  579.        ;LD C,A
  580.        ;ADD A,H
  581.        ;LD H,A
  582.        ;LD A,L
  583.        ;SUB C
  584.        ;LD L,A
  585.        ;jr NC,$+3
  586.        ;DEC H
  587. ;BYsvN0ar
  588.         ;LD DE,#5A41
  589.         ;CALL PR88DEC
  590. ;notosav
  591.         POP DE
  592.        ;POP HL
  593.        ld h,+(fout+512)/256
  594.        LD A,H
  595.         RET
  596.  
  597.        
  598. ;save b bytes from ix
  599. ;TODO через SAVEBLOCK
  600. BLOCK
  601.         LD A,(IX)
  602.         INC IX
  603.         CALL BYTE
  604.         DJNZ BLOCK
  605.         RET
  606. bit0
  607.         OR A
  608. bit
  609.         EXX
  610.         RL C
  611.         EXX
  612.         RET NC
  613.        PUSH AF
  614.         EXX
  615.         LD A,C
  616.         LD C,1
  617.         CALL XBYTE
  618.        POP AF
  619.         RET
  620.  
  621. PKNNpp
  622. ;пишем код Хаффмана (в hl через 256: длина, HSB, LSB) - пишем старшие биты
  623.         LD B,(HL)
  624.         INC H
  625.         LD C,(HL)
  626.         INC H
  627. PKLHPP
  628.         LD L,(HL)
  629.         LD H,C
  630. PKHLPP
  631.         ADD HL,HL
  632.         CALL bit
  633.         DJNZ $-4
  634.         RET
  635. PKBDpp
  636.         RLA
  637.         CALL bit
  638.         DJNZ $-4
  639.         RET  
  640.        
  641. RDBYTE
  642.         INC LY
  643.         LD A,(IY)
  644.         RET NZ
  645. RDBYH
  646.         INC HY
  647.         LD A,HY
  648. ;RDBYHend=$+1
  649.         CP DISKBUF/256+(DISKBUFsz/256)
  650.         LD A,(IY)
  651.          ccf ;CY=0: OK ;TODO переделать на CY=1 длЯ скорости
  652.         RET nz
  653.        PUSH HL
  654.        PUSH DE
  655.         PUSH BC
  656.         push IX
  657.        ;CALL rdCS
  658.        ex af,af'
  659.       PUSH AF
  660.        exx
  661.        push bc
  662.        push de
  663.        push hl
  664.        ld de,DISKBUF
  665.        ld hl,DISKBUFsz
  666.         push de
  667.        call readstream_file
  668.         pop de
  669.         push de ;addr
  670. ;hl=actual size
  671.         ld a,h
  672.         or l
  673.         jp z,readerror
  674. ;move block to end of buf:
  675.        ld b,h
  676.        ld c,l
  677.        dec de ;ld de,DISKBUF-1
  678.        add hl,de ;end of data
  679.        ld de,DISKBUF+DISKBUFsz-1
  680.        sbc hl,de
  681.        add hl,de
  682.        jr z,ZIPRDBYHq
  683.         pop af
  684.        lddr
  685.        inc de ;begin of data
  686.         push de
  687. ZIPRDBYHq
  688.         pop iy ;addr = DISKBUF+
  689.        
  690.        pop hl
  691.        pop de
  692.        pop bc
  693.        exx
  694.       POP AF
  695.       ex af,af'
  696.         POP IX
  697.         pop BC
  698.        POP DE
  699.          pop hl
  700.        ;ld iy,DISKBUF
  701.        LD A,(IY)
  702.        or a ;CY=0: OK ;TODO переделать на CY=1 длЯ скорости
  703.         RET
  704.  
  705. prcrlf
  706.         ld hl,tcrlf
  707. prtext
  708.         ld a,(hl)
  709.         or a
  710.         ret z
  711.         push hl
  712.         push iy
  713.         PRCHAR_
  714.         pop iy
  715.         pop hl
  716.         inc hl
  717.         jr prtext
  718.  
  719. PR1234
  720.         ld a,'.'
  721. prchar
  722.         push bc
  723.         push de
  724.         push hl
  725.         exx
  726.         ex af,af'
  727.         push af
  728.         push bc
  729.         push de
  730.         push hl
  731.         push ix
  732.         push iy
  733.         ex af,af'
  734.         PRCHAR_
  735.         pop iy
  736.         pop ix
  737.         pop hl
  738.         pop de
  739.         pop bc
  740.         pop af
  741.         exx
  742.         ex af,af'
  743.         pop hl
  744.         pop de
  745.         pop bc
  746.         ret
  747.  
  748. PRCUR
  749. PRFN
  750. PR_B
  751. PRTEXT
  752. PRGFX
  753. PRGFXHL
  754. NXTLIN
  755. PRTHI32
  756. VIEGFX
  757. CAT2GFX
  758. PRHEADP
  759. BEFOPR
  760. CLS
  761.        ret
  762.  
  763. fillmem
  764.        LD D,H
  765.        ld E,L
  766.        INC DE
  767.        LDIR
  768.       INC B
  769.        RET  
  770.  
  771. tadded
  772.         db " added"
  773. tcrlf
  774.        db 13,10,0
  775.  
  776.        include "../_sdk/file.asm"
  777.        include "../_sdk/stdio.asm"
  778.        include "zxrfile.asm"
  779.        include "rarpack.asm"
  780.        include "rarlz.asm"
  781.        include "rarhuff.asm"
  782.  
  783. defaultfilename
  784.        db "m:/emit.c",0
  785.        ;db "4:/nv.ext",0
  786.  
  787. CURFILE DS namln
  788.  
  789.  
  790. ;;;;;32 bytes rar file header
  791. CRCF    DW 0
  792. TYPEF   DB 0
  793. FLAGF   DW 0
  794. SIZEF   DW 0 ;head size
  795. ;;^^^7 bytes also form archive footer
  796. ADDSZF  DS 4 ;packed size
  797.  
  798. UNPSIZE DS 4
  799. HOSTOS DB 0;NU
  800. FILECRC DS 4
  801. FTIME   DS 4
  802. UNPVER  DB 0
  803. METHOD  DB 0
  804. NAMSIZE DW 0
  805. ATTR    DS 4
  806. ;;;;;;;;;;;;;;;;;;;
  807.  
  808. EXPTYP  DW 0 ;expected type&FLAGH
  809. ;CRCLO   DW 0
  810. ;YEFLAGH DB 0 ;TWICE;1=depk,0=view
  811. ;FREXPT  DB 0 ;TWICE
  812. ;FILEZ   DW 0;usable.FileCount
  813. ERRORS  DW 0;ErrCount
  814. ;unknown DW 0;NU=0.ExtrFile
  815. known   DB 0 ;NOT unknown.MDCode
  816. ;SCANres DW 0 ;TWICE.SCANres=HL.AllArgsUsed
  817. ;CANTCR  DW 0;NU=0!can't create.UserReject
  818. ;PASWFLG DW 0 ;(password?).TmpPassword
  819. ;BEFEXTR DB 0 ;1=до EXTRACT.FirstFile
  820. ;GDEIX   DW 0 ;ArcPtr
  821. VOLFLG  DB 0;ArcType,2=vol
  822. SOLFLG  DB 0;SolidType(1)
  823. TSTARES DB 0;ArcFormat
  824.  
  825. volPKSZ DS 4
  826. volUNSZ DS 4
  827. pieces  DW 0 ;FileCount
  828. ;zagol   DW 0;1=загол уже напеч
  829. uNPremn DS 4;DestUnpSize
  830.  
  831.  IF crc
  832. CRCArea DS 4
  833.  ENDIF
  834. CRCA    DW 0 ;TWICE=BUF32
  835. TYPEA  DB 0;NU
  836. FLAGA   DW 0
  837. SIZEA   DW 0
  838. _62ae  DW 0;NU
  839. _62b0  DW 0;NU
  840. _62b2  DW 0;NU
  841.  
  842.  ;UnpCRC  DS 4 ;UnpFileCRC
  843. ;YCOMM   DB 0;UnpVolume.4times
  844. COMSYM  DB 0
  845.  
  846. pathbuf
  847.         ds MAXPATH_sz
  848.  
  849. ;oldtimer
  850. ;        dw 0
  851.        
  852. cmd_end
  853.  
  854.         display "Size ",/d,cmd_end-cmd_begin," bytes"
  855.  
  856.         savebin "zxrar.com",cmd_begin,cmd_end-cmd_begin
  857.        
  858.         LABELSLIST "../../us/user.l"
  859.