Subversion Repositories NedoOS

Rev

Rev 62 | Rev 344 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download

  1.  
  2. depack        
  3. ;       JR NOSTART_
  4. ;START_
  5. ;YESAUTOEX=$+1
  6. ;       LD A,0
  7. ;       CP "U
  8. ;       JP Z,QUIT_
  9. ;NOSTART_
  10.         LD (exit_sp),SP
  11. START_1
  12.         ;LD SP,#5FE6
  13.         if 1==0
  14.         LD HL,ANYKEY_P
  15.         LD (MOD1+1),HL
  16.         LD A,#C3
  17.         LD HL,START_
  18.         LD (MOD2),A
  19.         LD (MOD2+1),HL
  20.         LD HL,SPISOK+1
  21.         LD (UKAZ1),HL
  22.         ;XOR A
  23.         ;LD (NO_HOB),A
  24.         ;LD (HOB),A
  25.         LD HL,T_KEY
  26.         LD (MODECAT+1),HL
  27.         CALL PRCAT
  28.  
  29.         LD A,#4F
  30.         LD (TEKATR+1),A
  31.         LD HL,0
  32.         LD DE,#440
  33.         CALL RAMKA
  34.         LD HL,T6935
  35.         CALL PRINTS_
  36.         LD HL,T6935_
  37.         CALL PRINTS_
  38.         endif
  39.        
  40. ;MANYF   LD HL,0
  41. ;        LD (ML_FLEN),HL
  42. ;        LD (ML_FLEN+1),HL
  43.         ;CALL CLS_LINE
  44.         CALL PROWERKA ;ш∙хь central directory, фюёЄр╕ь ЄрсышЎє Їрщыют т CAT, чряюыэ хь яхЁхьхээ√х яЁю Їрщы
  45.        
  46.         if 1==0
  47.         LD A,(SKIPING)
  48.         OR A
  49.         JR Z,NOSKIP1
  50.         LD HL,T_KEY1
  51.         LD (MODECAT+1),HL
  52.         CALL VIEWCAT
  53.         LD A,#4F
  54.         LD (TEKATR+1),A
  55.         LD HL,0
  56.         LD DE,#440
  57.         CALL RAMKA
  58.         LD HL,T6935
  59.         CALL PRINTS_
  60.         LD HL,T6935_
  61.         CALL PRINTS_
  62.         LD HL,#400
  63.         LD DE,#C40
  64.         CALL RAMKA
  65. NOSKIP1
  66.         endif
  67.        
  68.         ;LD A,1
  69.         ;LD (D_INST),A ;¤Єю с√ыю фы  шэшЎшрышчрЎшш TR-DOS яюёых ёьхэ√ фшёър
  70.  
  71.         LD DE,0
  72. LEN_KOM=$-2
  73.         LD A,D
  74.         OR E
  75.         JR Z,PR700
  76.         LD HL,#4000
  77.         OR A
  78.         SBC HL,DE
  79.         JR C,PR700 ;ъюььхэЄрЁшщ > 0x4000?
  80.         EX DE,HL
  81.         LD DE,0 ;size of central directory
  82. SM1=$-2
  83.         LD C,0
  84. SM2=$-1
  85.         LD HL,(SME_ML) ;start of central directory
  86.         LD A,(SME_ST)
  87.  
  88.         ADD HL,DE
  89.         ADC A,C
  90.         LD DE,#16
  91.        LD C,0
  92.         ADD HL,DE
  93.         ADC A,C
  94.         LD IX,BUFER
  95.         LD DE,(LEN_KOM) ;ъюььхэЄрЁшщ ьюцхЄ с√Є№ фю 0x4000 (Ёхры№эю ЇюЁьрЄ яючтюы хЄ сюы№°х)
  96.         CALL READ
  97.  
  98.         ;LD HL,TEXT20
  99.         ;CALL PRINTS_
  100.  
  101.         if 1==0
  102.         LD A,0
  103. MEN=$-1
  104.         OR A
  105.         JR Z,NM1
  106.         CALL INS_DEST
  107.  
  108. NM1     LD A,(DESTIN)
  109.         CP "*"
  110.         JR NZ,$+5
  111.         LD A,(SOURCE)
  112.         SUB #41
  113.         LD C,1
  114.         CALL TRDOS
  115.         LD C,#18
  116.         CALL TRDOS
  117.         LD HL,FNAME1
  118.         LD DE,23773
  119.         LD BC,9
  120.         LDIR
  121.         LD HL,BUFER
  122.         LD DE,(LEN_KOM)
  123.         LD C,#B
  124.         CALL TRDOS
  125.         LD A,(MEN)
  126.         OR A
  127.        JR Z,PR700
  128.        CALL INS_SOURC
  129.         endif
  130. PR700  
  131.         ;LD HL,TEXT21
  132.         ;CALL PRINTS_
  133.        
  134.         LD HL,0
  135. KOL_F=$-2
  136.         ;XOR A
  137.         ;LD IX,T_BUF
  138.         ;CALL DS100
  139.         ;LD HL,T_KOL_F
  140.         ;CALL PRINTS_
  141.  
  142. nextfile
  143.            ;LD A,5
  144.            ;call ON_BANK
  145.        
  146.         LD HL,0 ;start of central directory (ёфхыры, ўЄюс√ юэ юсэюты ыё  ё ърцф√ь эют√ь Їрщыюь)
  147. SME_ML=$-2
  148.         LD A,0
  149. SME_ST=$-1
  150.         ;EXA
  151.  
  152.         if 1==0
  153.         LD BC,(KOL_F)
  154.         LD A,C
  155.         LD (F_KOL),A
  156. Z6013   PUSH BC
  157.         LD A,0
  158. F_KOL=$-1
  159.         SUB C
  160.  
  161.         INC A
  162.         LD (NUM_F),A ;эюьхЁ Їрщыр
  163.         endif
  164.        
  165.         if 1==0
  166.         PUSH HL
  167.         LD HL,#71A ;ъююЁфшэрЄ√
  168.         LD (COR),HL
  169.         LD B,13
  170. CLS1    PUSH BC
  171.         LD A,#20
  172.         CALL PR
  173.         POP BC
  174.         DJNZ CLS1
  175.         POP HL
  176.         endif
  177.  
  178.         ;EXA
  179.         LD B,A ;SME_ST
  180.  
  181.         LD IX,BUFER
  182.         LD DE,#2E
  183.         LD C,41
  184.         CALL READ ;ўшЄрхь юяшёрЄхы№ юфэюую Їрщыр
  185.  
  186.         if 1==0
  187.         EXX
  188.         LD A,(BUFER+#24)
  189.         LD HL,CODE
  190.        BIT 0,A
  191.        JR Z,LL20
  192.         LD HL,TEXT
  193. LL20    LD DE,T_TYPE
  194.         LD BC,4
  195.         LDIR
  196.         EXX
  197.         endif
  198.  
  199.         LD A,B ;SME_ST
  200.         ADD HL,DE
  201.         ADC A,D ;яхЁхьх∙рхь єърчрЄхы№ эр шь 
  202.  
  203.         LD DE,(Z6638) ;file name length
  204.         LD B,A
  205.         LD IX,Z664A
  206.         CALL READ ;ўшЄрхь шь  Їрщыр
  207.  
  208. ;Z664A=╚M▀ TEK╙┘E├O ╘A╔╦└ B APX╚BE
  209.         ADD IX,DE
  210.         LD (IX),0 ;ъырф╕ь 0 т ъюэхЎ шьхэш (яюыєўшЄё  ASCIIZ)
  211.         LD A,B
  212.         ADD HL,DE
  213.         ADC A,0 ;яхЁхьх∙рхь єърчрЄхы№ яюёых шьхэш
  214.  
  215.         LD B,E
  216.        DEC D
  217.        INC D
  218.         JR Z,Z604D ;фышэр шьхэш <256
  219.        LD B,0 ;фышэр шьхэш >=256, ёўшЄрхь, ўЄю 256
  220. Z604D   LD DE,(Z663A) ;extra field length
  221.         ADD HL,DE
  222.        ADC A,0 ;яЁюяєёърхь extra field
  223.         LD DE,(Z663C) ;file comment length
  224.         ADD HL,DE
  225.         ADC A,0 ;яЁюяєёърхь file comment length
  226.  
  227.        ld (SME_ML),hl
  228.        ld (SME_ST),a
  229.        
  230. ;ёЇюЁьшЁютрЄ№ filename 8.3 (тю тёхї ¤ыхьхэЄрї):
  231.         ld hl,Z664A
  232.         ld de,filename
  233.         ;call strcopy
  234.         call copyname83
  235. ; хёыш ¤Єю фшЁхъЄюЁш , Єю create directory (эряЁшьхЁ, "md scr/1" схч ёых°р т ъюэЎх):
  236.  
  237.         ;LD A,(T6624) ;flags
  238.         ;and 8 ;TODO уфх ¤ЄюЄ Їыру?
  239.         ;jr nz,readzip_nodir
  240. ;єсшЁрхь ёых° т ъюэЎх
  241.         ld hl,filename
  242.         push hl
  243.         pop de ;ld de,filename
  244.         xor a
  245.         ld b,-1
  246.         cpir
  247.         ld a,'/'
  248.         dec hl ;эр ЄхЁьшэрЄюЁх
  249.         dec hl ;яхЁхф ЄхЁьшэрЄюЁюь
  250.         sub (hl)
  251.         jr nz,readzip_nodir;$+3
  252.         ld (hl),a ;0
  253.         OS_MKDIR
  254.         jp SKIP_noclose
  255. readzip_nodir
  256.        
  257.         ld hl,Z664A;filename
  258.         call prtext
  259.         call prcrlf
  260.        
  261.         if 1==0
  262.        
  263.         LD HL,#5CE5
  264.         LD DE,T_PKT
  265.         LD B,3
  266.         CALL PROVERK
  267.         JR C,NX600
  268.         LD A,"C"
  269.         LD (#5CE5),A
  270.         LD A,(#5CDD)
  271.         CP "0"
  272.         JR C,$+6
  273.         CP ":"
  274.         JR NC,NX600
  275.         AND 7
  276.         OR #30
  277.         LD (#5CDD),A
  278. NX600
  279.         endif
  280.        
  281.         if 1==0
  282.         LD A,(SKIPING)
  283.        OR A
  284.         JR Z,NOSKIP
  285.        LD A,(NUM_F)
  286.        LD L,A
  287.         LD H,'MARKBUF
  288.       LD A,(HL)
  289.       AND A
  290.        JP Z,SKIP_noclose
  291. NOSKIP  
  292.        endif
  293.        if 1==0
  294.        LD IX,T_TEK
  295.        LD HL,0
  296. NUM_F=$-2
  297.        CALL DS100
  298.        LD HL,T_FILE
  299.        CALL PRINTS_
  300.        endif
  301.  
  302.        ;LD HL,#71A ;ъююЁфшэрЄ√
  303.        ;LD (COR),HL
  304.        ;LD HL,T61F7
  305.        ;CALL PRINTS
  306.        ;LD A,#4F
  307.        ;LD (TEKATR+1),A
  308.        
  309.        ;XOR A
  310.  
  311.        LD HL,-1
  312.        LD (ML_CRC32),HL
  313.        LD (ST_CRC32),HL
  314.  
  315.        LD HL,(Z6634)
  316.        ;OR H
  317.        ;OR L
  318.        LD (ML_LEN_ISH),HL
  319.  
  320. ;HL= ╠╦└─╪╚E ┴A╔T█ ─╦╚H█ ╚CXO─HO├O ╘A╔╦A
  321.        LD HL,(Z6636)
  322.        ;OR H
  323.        ;OR L
  324.        LD (ST_LEN_ISH),HL
  325.  
  326. ;HL= CTAP╪╚E ┴A╔╥█ ─╦╚═█ ╚CXO─HO├O ╘A╔╦A
  327.        ;JP Z,SKIP_noclose; H╙╦┼┬└▀ ─╦╚HA (ЄхяхЁ№ яЁютхЁ хЄё  эшцх, ўЄюс√ ёючфрЄ№ Їрщы)
  328.  
  329.        ;LD A,L
  330.        ;LD HL,(ML_LEN_ISH)
  331.        ;LD IX,T_ORIG
  332.        ;CALL DES_
  333.  
  334.        LD HL,T6628 ;file last modification time
  335.        LD DE,T6221
  336.        LD BC,8
  337.        LDIR ;??? TODO єёЄрэютшЄ№ фрЄє яюёых Ёрёяръютъш
  338.  
  339.        LD A,(T6624) ;flags
  340.        RRA
  341.        JR NC,Z60E3
  342.  
  343. ;╘A╔╦ 3AKO─╚POBAH
  344.        LD A,3
  345.        LD (FLAGS),A ;CRYPTED
  346.  
  347. Z60E3   LD HL,(T6626)
  348.  
  349. ;T6626=METO─ C╞AT╚▀: 0:STORED, 8:DEFLATE, others unknown
  350.        LD A,H
  351.        OR A
  352.        JR NZ,Z60F1
  353.        OR L
  354.        JR Z,Z60FC
  355.        CP 8
  356.        JR Z,Z60FC
  357.  
  358. Z60F1   ;LD HL,UNKNOWN
  359.        ;LD DE,T_METOD
  360.        ;LD BC,7
  361.        ;LDIR
  362.        LD A,2
  363.        LD (FLAGS),A ;UNKNOWN (ўшёыю т A эх фюыцэю ёютярфрЄ№ ё 0 шыш 8!)
  364.        ;JR UNK_
  365.  
  366. Z60FC  
  367.        if 1==0
  368.        BIT 3,A
  369.        LD HL,STORED
  370.        JR Z,ST_
  371.        LD HL,DEFLATE
  372. ST_     LD DE,T_METOD
  373.        LD BC,7
  374.        LDIR
  375.        endif
  376.  
  377. UNK_    PUSH AF ;0:STORED, 8:DEFLATE, others unknown ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  378.        ;LD HL,(Z6630)
  379.        ;LD A,(Z6632)
  380.  
  381. ;A,HL= ─╦╚HA C╞ATO├O ╘A╔╦└
  382.        ;LD (ML_PAC_LEN),HL
  383.        ;LD (ST_PAC_LEN),A
  384.        
  385.        if 1==0
  386.        LD IX,T_PACK
  387.        CALL DES_
  388.        LD B,4
  389.        LD HL,CRC_ISH+3
  390.        LD DE,T_CRC
  391. L100    LD A,(HL)
  392.        CALL HEX
  393.        DEC HL
  394.        DJNZ L100
  395.  
  396.        CALL T_IND ;шэшЎшрышчрЎш  яЁюЎхэЄюьхЁр?
  397.  
  398.        LD HL,0 ;Єхъє∙шщ ЁрчьхЁ Їрщыр фы  яЁюЎхэЄюьхЁр
  399.        LD (B1),HL
  400.        LD (B2),HL
  401.        endif
  402.  
  403.        ;CALL DATA_COR ;яхўрЄ№ фрЄ√?
  404.  
  405.        ;LD HL,T_PACK_L
  406.        ;CALL PRINTS_
  407.  
  408. FLAGS=$+1
  409.        LD A,0;(FLAGS) ;2:UNKNOWN, 3:CRYPTED, other=OK (ЇюЁьшЁєхЄё  т√°х)
  410.        ;LD HL,T_UNK
  411.        CP 2
  412.        JR Z,SK__
  413.  
  414.        ;LD HL,T_CRYPT
  415.        CP 3;:JR Z,SK__
  416.  
  417. ;LD A,(SKIPING):OR A;JR Z,PROD10
  418.        JR NZ,PROD10
  419. SK__    ;CALL PRINTS_
  420.        ;CALL KEY10_
  421.        POP AF ;TODO єсЁрЄ№
  422.        JP SKIP_noclose
  423.  
  424. PROD10  
  425.        if 1==0
  426.        LD HL,#5CE5
  427.        LD DE,T_TRD
  428.        LD B,3
  429.        CALL PROVERK
  430.  
  431.        JR C,NXSCL
  432.        LD HL,TRDOBR
  433.        CALL PRINTS_
  434.  
  435. KEY11   XOR A
  436.       LD (#5C08),A
  437.        EI
  438.        HALT
  439.       LD A,(#5C08)
  440.       OR A
  441.        JR Z,KEY11
  442.        CP "Y"
  443.        JR Z,nX601_
  444.        CP 13
  445.       JR NZ,NX601
  446. nX601_
  447.        XOR A
  448.        LD (MEN),A
  449.        LD A,(DESTIN)
  450.        CP "*"
  451.        JR Z,MEN100
  452.       LD A,(DESTIN)
  453.       LD L,A
  454.        LD A,(SOURCE)
  455.       CP L
  456.        JR NZ,MEN100
  457.       LD A,1
  458.        LD (MEN),A
  459. MEN100
  460.        LD A,#C3
  461.        LD (SAVE),A
  462.        LD HL,SAVETRD
  463.        LD (SAVE+1),HL
  464.        LD HL,0
  465.        LD (TRK_SECT),HL
  466.  
  467.        JR NX602
  468. NXSCL
  469.        LD HL,#5CE5
  470.        LD DE,T_SCL
  471.        LD B,3
  472.        CALL PROVERK
  473.  
  474.        JR C,NX601
  475. ;EXTRACTING FROM SCL
  476.  
  477.       IFN 1
  478.        LD HL,SCLOBR
  479.        CALL PRINTS_
  480.  
  481. KEY11S  XOR A
  482.       LD (#5C08),A
  483.        EI
  484.        HALT
  485.       LD A,(#5C08)
  486.       OR A
  487.        JR Z,KEY11S
  488.        CP "Y"
  489.        JR Z,nX601_S
  490.        CP 13
  491.       JR NZ,NX601
  492. nX601_S
  493.        LD A,"S
  494.        LD (YESSCL),A
  495.       ELSE
  496.       LD A,#C3
  497.       LD (SAVE),A
  498.       LD HL,SAVESCL
  499.       LD (SAVE+1),HL
  500.       LD HL,0
  501.       LD (TRK_SECT),HL
  502.       JR NX602
  503.       ENDIF
  504.      
  505. ;NORMAL FILE (NOT TRD OR SCL)
  506. NX601   LD A,#3E
  507.        LD (SAVE),A
  508.        LD HL,#CD04
  509.        LD (SAVE+1),HL
  510.  
  511.       endif
  512.        
  513.        if 1==0
  514.        LD A,(ST_LEN_ISH)
  515.        OR A
  516.        JR NZ,NX602
  517.        LD HL,(ML_LEN_ISH)
  518.       LD DE,#FF12
  519.       OR A
  520.       SBC HL,DE
  521.        JR NC,NX602
  522.        LD A,(#5CE5)
  523.        CP "$"
  524.        JR NZ,NX602
  525.        LD (HOB),A
  526. NX602  
  527.        endif
  528.  
  529.        LD HL,(Z6646) ;Relative offset of local file header. This is the number of bytes between the start of the first disk on which the file occurs, and the start of the local file header. This allows software reading the central directory to locate the position of the file inside the ZIP file.
  530.        LD A,(Z6648)
  531.        ;jr $
  532.  
  533. ;A,HL= CME┘EH╚E ─O ╦OKA╦▄═O├O 3A├╬╦╬BKA
  534.        LD IX,BUFER
  535.        LD DE,#1E
  536.        LD C,#29
  537.        LD B,A
  538.        CALL READ
  539.  
  540.        XOR A
  541.        ADD HL,DE
  542.        ADC A,B
  543.        LD DE,(Z6636)
  544. ;DE= ─╦╚═A ╚MEH╚ ╘A╔╦A
  545.        ADD HL,DE
  546.        ADC A,0
  547.        LD DE,(Z6638)
  548. ;DE= ─O╧O╦H╚TE╦▄═OE ╧O╦E ─╦╚═█
  549.        ADD HL,DE
  550.        ADC A,0
  551.        ;LD (Z634C),HL ;Єхъє∙р  яючшЎш  ўЄхэш  т Їрщых
  552.        ;LD (Z634F),A
  553.  
  554. ;ЄхяхЁ№ Їшчшўхёъш єёЄрэютшь єърчрЄхы№ Їрщыр Єєфр
  555.        ld d,0
  556.        ld e,a
  557.        ;ld hl,1
  558.        ;dehl=shift
  559.        ld a,(filehandle)
  560.        ld b,a
  561.        OS_SEEKHANDLE
  562.        
  563.        call SAVECREATE
  564.  
  565.        LD hl,(ML_LEN_ISH)
  566.        ld a,h
  567.        or l
  568.        LD hl,(ST_LEN_ISH)
  569.        or h
  570.        or l
  571.        jr z,SKIP ;Їрщы эєыхтющ фышэ√
  572.        
  573.       LD IY,DISKBUF+DISKBUFsz-1
  574.        
  575.        ;LD HL,0
  576.        ;LD (T622D),HL
  577.        ;LD (T622E),HL
  578.        
  579. ;DEPACK
  580.       LD HL,0
  581.       LD (U6546),HL ;ёъюы№ъю срщЄ ёюїЁрэшЄ№ = Єхъє∙шщ рфЁхё т сєЇхЁх
  582.      
  583.        POP BC ;0:STORED, 8:DEFLATE, others unknown ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  584.        
  585.        BIT 3,B
  586.        ;LD (inflateq_sp),SP ;??? TODO
  587.        CALL Z635E ;nz=INFLATING
  588.       ;LD A,(YESSCL)
  589.       ;CP "S
  590.       ;CALL Z,DESCLPP
  591.       ; XOR A
  592.       ;LD (YESSCL),A
  593.        ;LD (NO_HOB),A
  594.        ;LD (HOB),A
  595.        LD A,(CRC32_)
  596.        CP #C9
  597.        JR Z,SKIP
  598.        LD HL,ML_CRC32
  599.        LD DE,CRC_ISH
  600.        LD B,4
  601. Z6159   LD A,(DE)
  602.        XOR (HL)
  603.        INC HL
  604.        inc DE
  605.        inc A
  606. C1      JR NZ,crcerror;Z6164
  607.        DJNZ Z6159
  608.        JR SKIP
  609.  
  610. crcerror;Z6164
  611. ;CRC ERROR
  612.        ;CALL E_CRC ;!!!!!!!!!!
  613.        ld hl,tcrcerror
  614.        call prtext
  615.  
  616. SKIP
  617. readerror
  618.        call SAVECLOSE
  619. SKIP_noclose
  620.        ld bc,(KOL_F)
  621.        cpi
  622.        ld (KOL_F),bc
  623.        ld sp,(exit_sp)
  624.        jp pe,nextfile
  625.  
  626. E_ZIP
  627. EXIT
  628. exit_sp=$+1
  629.        LD SP,#3131
  630.         ret
  631.  
  632. BUFCAT
  633.        dw 0
  634. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  635.  
  636.  
  637. PROWERKA
  638.        if 1==0
  639.        LD A,#4F
  640.        LD (TEKATR+1),A
  641.        LD HL,#400
  642.        LD DE,#C40
  643.        CALL RAMKA
  644.  
  645.        LD HL,FNAME
  646.        LD DE,T6927
  647.        LD BC,8
  648.        LDIR
  649.        LD A,"."
  650.        LD (DE),A
  651.        INC DE
  652.        LDI
  653.        LD A,(HL)
  654.        CP #20
  655.        JR C,NOEXN
  656.        INC HL
  657.        LD A,(HL)
  658.        DEC HL
  659.        CP #20
  660.        JR C,NOEXN
  661.        LDI
  662.        LDI
  663.        JR NOEXN+5
  664. NOEXN   LD A,#20
  665.        LD (DE),A
  666.        INC DE
  667.        LD (DE),A
  668.  
  669.        LD HL,FNAME
  670.        LD DE,N_ARC
  671.        LD BC,8
  672.        LDIR
  673.       LD A,"."
  674.       LD (DE),A
  675.       INC DE
  676.       LDI
  677.       LD A,(HL)
  678.       CP #20
  679.       JR C,NOEHN
  680.       INC HL
  681.       LD A,(HL)
  682.       DEC HL
  683.       CP #20
  684.       JR C,NOEHN
  685.       LDI
  686.       LDI
  687.       JR NOEHN+5
  688. NOEHN  LD A,#20
  689.       LD (DE),A
  690.       INC DE
  691.       LD (DE),A
  692.  
  693.        LD HL,T6918
  694.        CALL PRINTS_
  695.        
  696.        endif
  697.        
  698.        ;CALL F_OPEN
  699.        LD HL,CAT
  700.        LD DE,CAT+1
  701.        LD BC,#63F
  702.        LD (HL),0
  703.        LDIR ;TODO єсЁрЄ№
  704.        LD HL,CAT
  705.        LD (BUFCAT),HL
  706.  
  707. ;╧POBEPKA APX╚BA
  708.  
  709. ;ърЄрыюу ыхцшЄ т ъюэЎх Їрщыр, ъръ фю эхую фюсЁрЄ№ё ?
  710.  
  711. ;Z66FA
  712. ;a=??? яюёых F_OPEN (!=0 ЁрчЁх°рхЄ шёърЄ№ эрчрф -0x800 фрцх т ьрыхэ№ъюь Їрщых ы■сюую ЁрчьхЁр) TODO
  713.        LD A,(ST_FLEN)
  714.        LD HL,(ML_FLEN) ;ahl=фышэр Їрщыр
  715.        LD DE,#800
  716.         OR A
  717.         JR NZ,Z6727
  718.        LD A,H
  719.        CP 8
  720.        LD A,E;0
  721.        JR NC,Z6727 ;фышэр Їрщыр >=0x800, Єръ ўЄю эрўэ╕ь яюшёъ ё фышэр Їрщыр-0x800
  722.        OR H
  723.        JR NZ,Z6714
  724. ;фышэр Їрщыр < 0x100
  725.        LD A,L
  726.        CP #64
  727.        JR C,Z6780 ;фышэр Їрщыр < 0x64 - эхЄ эш юфэюую Їрщыр, ю°шсър
  728. Z6714   PUSH HL
  729.        XOR A
  730.        LD HL,BUFER
  731.        LD DE,BUFER+1
  732.        LD (HL),A
  733.        LD BC,#7FF
  734.        LDIR ;юўшёЄшыш сєЇхЁ, ўЄюс√ ёыєўрщэю эх эрщЄш end of central directory эх Єрь
  735.        POP DE
  736. Z6723   LD L,A ;ш∙хь т эрўрых Їрщыр
  737.        LD H,A
  738.        JR _Z672A
  739.  
  740. Z6727   SBC HL,DE
  741.        SBC A,E
  742.  
  743. _Z672A   LD B,A
  744.        LD IX,BUFER
  745.        ;de=0x800
  746.        CALL LOAD_B ;яюшёъ сыюър end of central directory
  747.        LD A,B
  748.        JR Z,Z6747 ;end of central directory
  749.        OR L
  750.        OR H
  751.        JR Z,Z6780 ;фю°ыш фю эрўрыр Їрщыр, р end of central directory эх эр°ыш
  752.        LD A,B
  753.        LD BC,#7EA ;ёьх∙рхь єърчрЄхы№ Їрщыр эрчрф яюўЄш эр 0x800
  754.        SBC HL,BC
  755.        SBC A,0
  756.        JR NC,_Z672A ;ш∙хь эрчрф
  757.        XOR A
  758.        JR Z6723 ;ш∙хь т эрўрых Їрщыр
  759.  
  760. Z6747
  761. ;эр°ыш end of central directory (ix = рфЁхё ¤Єюую сыюър т BUFER+)
  762.        PUSH IX
  763.        POP BC
  764.        ADD HL,BC
  765.       ADC A,0
  766.        LD BC,BUFER
  767.        SBC HL,BC
  768.       SBC A,0 ;ahl=ёьх∙хэшх end of central directory т Їрщых
  769.        LD (Z6896),HL ;Єхъє∙хх ёьх∙хэшх т Їрщых? TODO єсЁрЄ№
  770.        LD (Z6894),A
  771.        EX DE,HL
  772.        LD H,(IX+#11)
  773.        LD L,(IX+#10) ;offset of start of central directory
  774.  
  775. ;╠╦└─╪╚┼ ┴A╔T█ CME┘EH╚▀ HA╫A╦└ ╓EHTPA╦▄HO├O KATA╦O├A
  776.        LD (SME_ML),HL
  777.        LD (IX+2),A ;???
  778.        LD A,(IX+#12) ;offset of start of central directory HSB
  779.  
  780. ;CTAP╪╚╔ ┴A╔T CME┘┼═╚▀
  781.        LD (SME_ST),A
  782.        LD B,(IX+#D)
  783.        LD C,(IX+#C)
  784.        LD (SM1),BC ;size of central directory
  785.  
  786. ;BC=─╦╚═A ╓EHTPA╦▄HO╔ ─╚PEKTOP╚╚, ╠╦└─╪╚┼ ┴A╔╥█
  787.        ADD HL,BC
  788.        ADC A,(IX+#E) ;size of central directory HSB
  789.        XOR (IX+2) ;???
  790.        JR NZ,Z6780 ;ъюэхЎ central directory эх ёююЄтхЄёЄтєхЄ ёьх∙хэш■ сыюър end of central directory - ю°шсър
  791.        SBC HL,DE
  792.       JR Z,Z6783 ;ъюэхЎ central directory ёююЄтхЄёЄтєхЄ ёьх∙хэш■ сыюър end of central directory
  793. Z6780  JP ERR_Z1 ;фю°ыш фю эрўрыр Їрщыр, р end of central directory эх эр°ыш
  794.  
  795. Z6783   LD L,(IX+#14)
  796.        LD H,(IX+#15)
  797.        LD (LEN_KOM),HL
  798.  
  799.        LD A,(IX+#E)
  800.        LD (SM2),A ;size of central directory HSB
  801.  
  802.        LD C,(IX+#A)
  803.        LD B,(IX+#B)
  804.        LD H,(IX+9)
  805.        LD L,(IX+8)
  806. ;cy=0
  807. ;BC=╬┴┘EE ╫╚╤╦O ╘A╔╦╬B B APX╚BE
  808. ;HL=╫╚╤╦╬ 3A╧╚CE╔ B KATA╦O├E HA ▌TOM ─╚CKE
  809.        LD (KOL_F),HL
  810.        SBC HL,BC
  811.        JP NZ,ERR_Z2
  812.        LD HL,(SME_ML) ;start of central directory
  813.        LD A,(SME_ST)
  814.        EXA
  815. Z679E   PUSH BC
  816.        EXA
  817.        LD B,A
  818.        LD A,1 ;Єшя ёшуэрЄєЁ√
  819.        LD DE,#2E
  820.        LD IX,BUFER
  821.        CALL Z6886 ;ўшЄрхь сыюъ ш яЁютхЁ хь ёшуэрЄєЁє (т√їюф яю ю°шсъх - ERR_Z1)
  822.  
  823.        LD A,(IX+#1D)
  824.  
  825. ;A= ╠╦└─╪╚╔ ┴A╔T ─╦╚═█ ╚MEH╚ ╘A╔╦└
  826.        CP 2
  827.        JP NC,ERR_Z3
  828.        LD D,A
  829.        LD E,(IX+#1C)
  830.  
  831. ;DE=─╦╚═└ ╚MEH╚ ╘A╔╦└
  832.        CALL Z68D9 ;ёфтшэєЄ№ єърчрЄхы№ т Їрщых (ahl) эр bde срщЄ ш яЁютхЁшЄ№, ўЄю эх т√°ыш чр уЁрэшЎє Їрщыр?
  833.        LD D,(IX+#1F)
  834.        LD E,(IX+#1E)
  835.  
  836. ;DE=─O╧O╦═╚TE╦▄HOE ╧╬╦E ─╦╚H█
  837.        CALL Z68D9 ;ёфтшэєЄ№ єърчрЄхы№ т Їрщых (ahl) эр bde срщЄ ш яЁютхЁшЄ№, ўЄю эх т√°ыш чр уЁрэшЎє Їрщыр?
  838.        LD D,(IX+#21)
  839.        LD E,(IX+#20)
  840.  
  841. ;DE=─╦╚HA KOMEHTAP╚▀ K ╘A╔╦╙
  842.        CALL Z68D9 ;ёфтшэєЄ№ єърчрЄхы№ т Їрщых (ahl) эр bde срщЄ ш яЁютхЁшЄ№, ўЄю эх т√°ыш чр уЁрэшЎє Їрщыр?
  843.        PUSH BC,HL
  844.        LD B,(IX+#2C)
  845.        LD L,(IX+#2A)
  846.        LD H,(IX+#2B)
  847.  
  848. ;B,HL=CME┘EH╚E OT HA╫A╦A ╧EPBO├O ─╚CKA C ▌T╚M ╘A╔╦OM
  849. ;     ─O ╦╬╩└╦▄HO├O 3A├O╦OBKA.
  850.        INC IX,IX,HX
  851.        LD A,3 ;Єшя ёшуэрЄєЁ√
  852.        LD DE,#30
  853.        CALL Z68B1 ;ёфтшурхь єърчрЄхы№ bhl эр de срщЄ, ўшЄрхь ш яЁютхЁ хь ёшуэрЄєЁє?
  854.        PUSH IX
  855.        POP HL
  856.        LD DE,#1E
  857.        ADD HL,DE
  858.        LD (NAMEF3+1),HL
  859.        LD E,(IX+#1A)
  860.        LD D,(IX+#1B)
  861.        ADD HL,DE
  862.        LD DE,(BUFCAT)
  863.        PUSH DE,DE
  864.        LD A," "
  865.        LD B,11
  866.        LD (DE),A
  867.        INC DE
  868.        DJNZ $-2
  869. NAMEF3  LD DE,0
  870. NAMEF4  DEC HL
  871.        PUSH HL
  872.        AND A
  873.        SBC HL,DE
  874.        POP HL
  875.       JR NC,NAMEF5
  876.       EX DE,HL
  877.       DEC HL
  878.       JR NAMEF6
  879.  
  880. NAMEF5  LD A,(HL)
  881.        CP "/"
  882.        JR NZ,NAMEF4
  883. NAMEF6  POP DE
  884.        INC HL
  885.        LD B,8
  886. NAMEF2  LD A,(HL)
  887.        INC HL
  888.        CP "."
  889.        JR Z,NAMEF1
  890.        LD (DE),A
  891.        INC DE
  892.        DJNZ NAMEF2
  893.        LD A,(HL)
  894.        INC HL
  895.        CP "."
  896.        JR NZ,$-4
  897. NAMEF1  POP DE
  898.        LD B,8
  899.        INC DE
  900.        DJNZ $-1
  901.       LD BC,3
  902.        LDIR
  903.        LD A,(IX+#16)
  904.        LD (DE),A
  905.        INC DE
  906.        LD A,(IX+#17)
  907.        LD (DE),A
  908.        INC DE
  909.        LD A,(IX+#18)
  910.        LD (DE),A
  911.        INC DE,DE,DE
  912.        EX DE,HL
  913.        LD (BUFCAT),HL
  914.        LD HL,#1E
  915.        LD A,(IX+#1B)
  916.  
  917. ;A=╤╥└╨╪╚╔ ┴A╔T ─╦╚H█ ╤MEH█ ╘A╔╦└
  918.        CP 2
  919.        JP NC,ERR_Z3
  920.        LD D,A
  921.        LD E,(IX+#1A)
  922.  
  923. ;DE=─╦╚HA ╤MEH█ ╘A╔╦└
  924.        CALL Z68ED ;ёфтшэєЄ№ єърчрЄхы№ т Їрщых (bhl) эр de срщЄ ш яЁютхЁшЄ№, ўЄю эх т√°ыш чр уЁрэшЎє Їрщыр?
  925.        LD D,(IX+#1D)
  926.        LD E,(IX+#1C)
  927.  
  928. ;DE=─ATA ╧OC╦E─HE╔ MO─╚╘╚KA╓╚╚
  929.        CALL Z68ED ;ёфтшэєЄ№ єърчрЄхы№ т Їрщых (bhl) эр de срщЄ ш яЁютхЁшЄ№, ўЄю эх т√°ыш чр уЁрэшЎє Їрщыр?
  930.        LD D,(IX+#13)
  931.        LD E,(IX+#12)
  932.        LD A,(IX+#14)
  933.  
  934. ;A,DE=─╦╚HA C╞ATO├O ╘A╔╦A
  935.        CALL Z68EE ;ёфтшэєЄ№ єърчрЄхы№ т Їрщых (bhl) эр ade срщЄ ш яЁютхЁшЄ№, ўЄю эх т√°ыш чр уЁрэшЎє Їрщыр?
  936.        LD A,(IX+#16)
  937.        OR (IX+#17)
  938.        OR (IX+#18)
  939.        OR (IX+#19)
  940.  
  941. ;╚CXO─HA▀ ─╦╚HA ╘A╔╦A
  942.        EXA
  943.        PUSH IX
  944.        POP HL
  945.        LD BC,7
  946.        ADD HL,BC
  947.        RES 7,(IX+7)
  948.  
  949. ;METO─ C╞AT╚▀, CTAP╪╚╔ ┴A╔T
  950.        LD B,#18-3
  951. Z6825   LD A,(HL)
  952.        DEC H
  953.        SUB (HL) ;TODO ўЄю ё ўхь ёЁртэштрхь?
  954.        JR NZ,ERR_Z1
  955.        INC H,HL
  956.        DJNZ Z6825
  957.        POP HL,BC
  958.        LD A,B
  959.        POP BC
  960.        EXA
  961.        JR Z,Z6838 ;Їрщы фышэющ 0?
  962.        LD (Z683F),A
  963. Z6838   DEC BC
  964.        LD A,B
  965.        OR C
  966.        JP NZ,Z679E
  967.  
  968. Z683E   LD A,0
  969. Z683F=Z683E+1
  970.  
  971.        OR A
  972.        RET NZ ;Їрщы фышэющ эх 0?
  973. ;TODO Їрщы фышэющ 0
  974. ERR_Z1
  975. ERR_Z2
  976. ERR_Z3
  977.        JP E_ZIP
  978.  
  979. ;яюшёъ сыюър end of central directory
  980. LOAD_B
  981. ;ahl=ёьх∙хэшх т Їрщых
  982. ;ix=сєЇхЁ
  983. ;de=len
  984. ;out: z=end of central directory, bhl=kept
  985.        CALL READ
  986.        PUSH BC
  987.        LD BC,#7EA ;???
  988.        ADD IX,BC
  989. ;яюшёъ чруюыютър сыюър
  990. Z6861   LD A,#50 ;'P'
  991.        CP (IX)
  992.        JR NZ,Z687C
  993.        LD A,#4B ;'K'
  994.        CP (IX+1)
  995.        JR NZ,Z687C
  996.        LD A,5
  997.        CP (IX+2)
  998.        JR NZ,Z687C
  999.        INC A
  1000.        CP (IX+3)
  1001.        JR Z,Z6884 ;05, 06 = end of central directory
  1002. Z687C   DEC BC
  1003.        DEC IX
  1004.        LD A,B
  1005.        OR C
  1006.        JR NZ,Z6861 ;яюшёъ чруюыютър сыюър фры№°х
  1007.        DEC A ;-1, NZ
  1008. Z6884   POP BC
  1009.        RET
  1010.  
  1011. Z6886
  1012.        PUSH HL,DE
  1013.        LD (signaturetype),A
  1014.        ADD HL,DE
  1015.       LD A,B
  1016.       ADC A,0
  1017.        JR C,ERR_Z1
  1018.        EX DE,HL
  1019.        LD C,A
  1020.  
  1021. Z6894=$+1
  1022.        LD A,0
  1023. Z6896=$+1
  1024.        LD HL,0
  1025.  
  1026.        SBC HL,DE
  1027.        SBC A,C
  1028.        JR C,ERR_Z1
  1029.        EX DE,HL
  1030.        POP DE
  1031.        EX (SP),HL
  1032.        LD A,B
  1033.        LD B,C
  1034.        CALL READ
  1035.        POP HL
  1036.        JR Z68AB
  1037.  
  1038. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1039. Z68AB   CALL checksignature;Z6901
  1040.        RET Z
  1041. Z68AF   JR ERR_Z1
  1042.  
  1043. Z68B1
  1044. ;ёфтшурхь єърчрЄхы№ bhl эр de срщЄ, ўшЄрхь ш яЁютхЁ хь ёшуэрЄєЁє?
  1045.        PUSH HL
  1046.        PUSH DE
  1047.        LD (signaturetype),A
  1048.       ADD HL,DE
  1049.       LD A,B
  1050.       ADC A,0
  1051.        JR C,ERR_Z1
  1052.        EX DE,HL
  1053.        LD C,A
  1054.        LD A,(SME_ST)
  1055.        LD HL,(SME_ML) ;start of central directory
  1056.        SBC HL,DE
  1057.        SBC A,C
  1058.        JR C,Z68AF
  1059.        EX DE,HL
  1060.        POP DE
  1061.        EX (SP),HL
  1062.        LD A,B
  1063.        LD B,C
  1064.        CALL READ
  1065.        POP HL
  1066.        JR Z68AB ;check signature
  1067.  
  1068. Z68D9
  1069. ;ёфтшэєЄ№ єърчрЄхы№ т Їрщых (ahl) эр bde срщЄ ш яЁютхЁшЄ№, ўЄю эх т√°ыш чр уЁрэшЎє Їрщыр?
  1070.        XOR A
  1071.        ADD HL,DE
  1072.        ADC A,B
  1073.        JR C,Z68AF ;ERR_Z1
  1074.        LD B,A
  1075.        EX DE,HL
  1076.        LD A,(Z6894)
  1077.        LD HL,(Z6896) ;Єхъє∙хх ёьх∙хэшх т Їрщых?
  1078.        SBC HL,DE
  1079.        SBC A,B
  1080.        EX DE,HL
  1081.        RET NC
  1082.       JR Z68AF ;ERR_Z1
  1083.  
  1084. Z68ED
  1085.        XOR A
  1086. Z68EE
  1087.        ADD HL,DE
  1088.        ADC A,B
  1089.        JR C,Z68AF
  1090.        LD B,A
  1091.        EX DE,HL
  1092.        LD A,(SME_ST)
  1093.        LD HL,(SME_ML) ;start of central directory
  1094.        SBC HL,DE
  1095.        SBC A,B
  1096.        EX DE,HL
  1097.        RET NC
  1098.       JR Z68AF ;ERR_Z1
  1099.  
  1100. checksignature;Z6901
  1101.        LD A,#50
  1102.        CP (IX)
  1103.        RET NZ
  1104.        LD A,#4B
  1105.        CP (IX+1)
  1106.        RET NZ
  1107. signaturetype=$+1;Z690E
  1108.        LD A,0 ;Єшя ёшуэрЄєЁ√: 03: local file header, 01: central directory file header, 07: optional data descriptor, 05: end of central directory
  1109.        CP (IX+2)
  1110.        RET NZ
  1111.        INC A
  1112.        CP (IX+3)
  1113.        RET  
  1114.  
  1115.        if 1==0
  1116. Z631F  PUSH BC
  1117.       POP DE
  1118.        PUSH HL
  1119.        POP IX
  1120.        LD A,0
  1121. ST_PAC_LEN=$-1
  1122.        LD HL,0
  1123. ML_PAC_LEN=$-2
  1124.        OR A
  1125.        JR NZ,Z633D
  1126.        PUSH HL
  1127.        SBC HL,DE
  1128.        POP HL
  1129.        JR NC,Z633D
  1130.        LD E,L
  1131.        LD D,H
  1132. Z633D   OR A
  1133.        SBC HL,DE
  1134.        SBC A,0
  1135.        LD (ST_PAC_LEN),A
  1136.        LD (ML_PAC_LEN),HL
  1137.        LD A,D
  1138.        OR E
  1139.        RET Z
  1140.        LD HL,0
  1141. Z634C=$-2
  1142.        LD A,0
  1143. Z634F=$-1
  1144.        LD B,A
  1145.        CALL READ
  1146.        XOR A
  1147.        ADD HL,DE
  1148.        ADC A,B
  1149.        LD (Z634C),HL
  1150.        LD (Z634F),A
  1151.       ;CALL STOP_DRV
  1152.       RET
  1153.        else
  1154. ;Z634C
  1155. ;        dw 0
  1156. ;Z634F
  1157. ;        db 0
  1158.        endif
  1159.      
  1160. Z635E
  1161.        jp NZ,INFLATING
  1162. ;stored
  1163.         ld hl,tstored
  1164.         call prtext
  1165.        ;LD HL,PROCES
  1166.        ;CALL PRINTS_
  1167.           ;LD A,5
  1168.           ;call ON_BANK
  1169.        ld hl,(ML_LEN_ISH)
  1170.        ld a,(ST_LEN_ISH)
  1171.        ;ld c,a
  1172.        ;or h
  1173.        ;or l
  1174.        ;ld a,c
  1175.        ;jr z,storedq
  1176.        jr stored0go
  1177. stored0
  1178.        push af
  1179.        ;push hl
  1180.        ziprdbyte
  1181.        CALL SBYTE
  1182.        ;pop hl
  1183.        pop af
  1184. stored0go
  1185.        ld bc,1
  1186.        or a
  1187.        sbc hl,bc
  1188.        sbc a,b;0
  1189.        jr nc,stored0
  1190.           ;LD A,5
  1191.           ;call ON_BANK
  1192. ;storedq
  1193.        ;jp savelastblock;_ZD1C4 ;save whole buffer (end of file)
  1194.        
  1195. savelastblock;_ZD1C4
  1196.        ;jr $
  1197. ;save whole buffer
  1198. ;ё■фр яюярфрхь т ъюэЎх Їрщыр
  1199.         ld hl,tsavelast
  1200.         call prtext
  1201.        LD HL,(U6546)
  1202.        ;ld a,h
  1203.        ;cp 0x50
  1204.        ;jr z,$
  1205. savehlbytes;ZD1C7
  1206.        LD DE,0
  1207.        JP SAVE
  1208.  
  1209. saveblock;Z65B8
  1210. ;save whole buffer
  1211. ;ё■фр эх яюярфрхь эр ъюЁюЄъшї Їрщырї
  1212.        PUSH HL,DE,BC,AF
  1213.         ;push ix
  1214.         ;exx
  1215.         ;exa
  1216.         ;push af
  1217.         ;push bc
  1218.         ;push de
  1219.         ;push hl
  1220.         ld hl,tsaveblock
  1221.         call prtext
  1222.        ;LD A,5
  1223.        ;CALL ON_BANK
  1224.        LD HL,(Z6546) ;ёъюы№ъю срщЄ ёюїЁрэшЄ№
  1225.        LD (TD198),HL ;ёъюы№ъю срщЄ ёюїЁрэ ыш
  1226.        CALL savehlbytes;ZD1C7 ;SAVE hl bytes
  1227. ;hl=0
  1228.        LD (Z6546),HL ;ёъюы№ъю срщЄ ёюїЁрэшЄ№ (=0)
  1229.        if 1==0 ;юсэютыхэшх ЁрчьхЁр фы  яЁюЎхэЄюьхЁр
  1230.        EX DE,HL
  1231.        LD HL,(TD198) ;ёъюы№ъю срщЄ ёюїЁрэ ыш
  1232.       AND A
  1233.        SBC HL,DE
  1234.        JR C,CON1 ;???
  1235.        LD DE,(B2)
  1236.        ADD HL,DE
  1237.        LD (B2),HL
  1238.       LD A,(B1)
  1239.       ADC A,0
  1240.       LD (B1),A
  1241. CON1
  1242.        endif
  1243.         ;pop hl
  1244.         ;pop de
  1245.         ;pop bc
  1246.         ;pop af
  1247.         ;exa
  1248.         ;exx
  1249.         ;pop ix
  1250.        POP AF,BC,DE,HL
  1251.        RET
  1252.  
  1253. tsaveblock
  1254.        db "save block",13,10,0
  1255. tsavelast
  1256.        db "save last block",13,10,0
  1257.  
  1258.  
  1259. tstored
  1260.        db "stored",13,10,0
  1261.  
  1262. ST_LEN  DW 0
  1263.  
  1264.        if 1==0
  1265. INFLATING
  1266.        ;ld (inflateq_sp),sp
  1267.        ;LD HL,PROCES
  1268.        ;CALL PRINTS_
  1269.        ;LD A,5
  1270.        ;CALL ON_BANK
  1271.        CALL ZD140 ;init read buffer, inflate file
  1272.        ;LD A,4
  1273.        ;JP ON_BANK
  1274.        ret
  1275.        endif
  1276.  
  1277. depkqerror;B_TABL
  1278. ;ю°шсър т Їрщых
  1279.        ;jr $
  1280.         ld hl,terror
  1281.         call prtext
  1282. ;save whole buffer (Z6546) срщЄ ш т√щЄш
  1283. ;Z63B4
  1284. ;inflateq_sp=$+1;Z63B5=$+1
  1285. ;        LD SP,0
  1286.        ;LD HL,(Z6546) ;ёъюы№ъю срщЄ ёюїЁрэшЄ№ = Єхъє∙шщ рфЁхё т сєЇхЁх
  1287.        ;LD DE,0
  1288.        ;CALL SAVE
  1289.        call savelastblock
  1290.        ;LD A,4
  1291.        ;CALL ON_BANK
  1292.        ;CALL E_TABL
  1293.        JP SKIP ;тюёёЄрэртыштрхЄ sp
  1294. terror
  1295.        db "error",13,10,0
  1296.  
  1297. ;PA╤╫ET CRC-32
  1298. ;ЄєЄ ьюцхЄ с√Є№ ярЄў RET (TODO)
  1299. ;a=byte
  1300. CRC32_  EXX
  1301.        LD DE,(ST_CRC32)
  1302.        LD HL,(ML_CRC32)
  1303. CRCPR_  XOR L
  1304.        LD B,H
  1305.        LD L,A
  1306.         LD H,TCRC/1024 ;#18
  1307.        ADD HL,HL
  1308.        ADD HL,HL
  1309.        LD A,B
  1310.        XOR (HL)
  1311.        LD C,A
  1312.        INC L
  1313.        LD A,E
  1314.        XOR (HL)
  1315.        LD B,A
  1316.        INC L
  1317.        LD A,D
  1318.        XOR (HL)
  1319.        LD E,A
  1320.        INC L
  1321.        LD D,(HL)
  1322.        LD (ST_CRC32),DE
  1323.        LD (ML_CRC32),BC
  1324.        EXX
  1325.        RET
  1326. ;├EHEPA╓╚▀ TA┴╦╚╓█ ─╦▀ PA╤╫ETA CRC-32
  1327. initCRC
  1328.        LD IX,TCRC+#3FC
  1329.        LD C,0
  1330. Z669B   LD B,8
  1331.        LD DE,0
  1332.        LD H,D
  1333.        LD L,C
  1334.        DEC L
  1335. Z66A3   SRL D
  1336.        RR E
  1337.        RR H
  1338.        RR L
  1339.        JR NC,Z66BD
  1340.        LD A,#ED
  1341.        XOR D
  1342.        LD D,A
  1343.        LD A,#B8
  1344.        XOR E
  1345.        LD E,A
  1346.        LD A,#83
  1347.        XOR H
  1348.        LD H,A
  1349.        LD A,#20
  1350.        XOR L
  1351.        LD L,A
  1352. Z66BD   DJNZ Z66A3
  1353.        LD (IX),L
  1354.        LD (IX+1),H
  1355.        LD (IX+2),E
  1356.        LD (IX+3),D
  1357.        LD DE,-4
  1358.        ADD IX,DE
  1359.        DEC C
  1360.        JR NZ,Z669B
  1361.        ;LD A,4
  1362.        ;JP ON_BANK
  1363.        ret
  1364.