Subversion Repositories NedoOS

Rev

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

  1. preview=1 ;CAPS=thumbnail
  2.  
  3. ONEPAGEYUV=0;1 ;TODO YUV т юфэюь яюЄюъх эр эхёъюы№ъю ёЄЁрэшЎ ё ўхЁхфютрэшхь ёюёЄрты ■∙шї? (ўЄюс√ ърЁЄшэъє ьюцэю с√ыю °шЁх 1024), эю сєфхЄ яЁюсыхьр ё ьрё°ЄрсшЁютрэшхь SAMPLE эр уЁрэшЎх ёЄЁрэшЎ
  4.  
  5. JPGPAGESTART=0xc000 ;т юфэющ ёЄЁрэшўъх фю 16 ёЄЁюъ фю 0x400 яшъёхыхщ ърцфр 
  6. ;TODO 0x8000 ё фтющэ√ьш ёЄЁрэшЎрьш яюф ёюёЄрты ■∙є■ (ўЄюс√ ърЁЄшэъє ьюцэю с√ыю °шЁшэющ 2048)
  7. ;TODO ёюёЄрты ■∙шх їЁрэшЄ№ тхЁЄшъры№эю ш ЁхэфхЁшЄ№ яЁ ью т эшї, схч яхЁхсЁюёъш ё ьрё°ЄрсшЁютрэшхь
  8.  
  9. ;ЄрсышЎ√ єьэюцхэш  т pg0 ;TODO т 0x4000+
  10. ;чряюыэ ■Єё  т GENMTAB
  11. _D0=0xd0 ;фтр эрсюЁр, тЄюЁющ т +0x18
  12. _D2=_D0+0x02
  13. _D4=_D0+0x04
  14. _D6=_D0+0x06
  15. _D8=_D0+0x08
  16. _DA=_D0+0x0a
  17. _DC=_D0+0x0c
  18. _DE=_D0+0x0e
  19. _E0=_D0+0x10
  20. _E2=_D0+0x12
  21. _E4=_D0+0x14
  22. _E6=_D0+0x16
  23.  
  24. ;FREE=0x8000 ;фшэрьшўхёър  ярь Є№, ЁрчьхЁ=0x13be фы  girl.jpg, izba1024.jpg, =0x12be фы  ърЁыёюэ.jpg
  25.  
  26. ;LINE1=0x3300;0x9400 ;сєЇхЁ ёЄЁюъш 0x400*3?
  27.      
  28. G716C=0xa000 ;CR tab (add to Y->R)
  29. G7174=G716C+0x200 ;CR tab (add to Y->G)
  30. G7178=G7174+0x200 ;CB tab (add to Y->B)
  31. G7170=G7178+0x200 ;CB tab (add to Y->G)
  32.  
  33. _thuffs=0xad00 ;ЁрчьхЁ=0x214 (girl.jpg, izba1024.jpg, ърЁыёюэ.jpg) - тЁхьхээ√щ сєЇхЁ, яюёых maketree эх эєцхэ
  34.  
  35. SAMPLE=0xac00 ;DS #80 ;сыюъ 8x8 (яю 2 срщЄр), яюЄюь юЄЄєфр ўшЄрхь ўхЁхч ёЄхъ (яюфЁ ф, юфшэ Ёрч) ;яхЁхф эшь эхьэюую ьхёЄр яюф ёЄхъ
  36. SAMTAB=SAMPLE+0x80 ;DS #80
  37.  
  38. ;ЄрсышЎр юсЁєсрэш  яхЁхяюыэхэш 
  39. PLTAB=0xad00 ;DS #300
  40. PTAB=PLTAB+0x100
  41.  
  42. VAR=0xaa00 ;с√ыю т #4200
  43. VARS=VAR ;???
  44. VARSsz=0x123
  45.  ;+#48 = ??? [2] т jpgreadsizes, фюыцэю с√Є№ =8
  46.  ;+#4e = ??? Єюы№ъю чряшё№
  47.  ;+#50-51 = ??? Єюы№ъю чряшё№
  48.  ;+#52-53 = ??? Єюы№ъю чряшё№
  49.  ;+#56-#57 = ??? Ёхчєы№ЄрЄ т√фхыхэш  фшэрьшўхёъющ ярь Єш т jpgreadsizes
  50. ;+#5A-#69=Єрсы pQTB
  51. ;+#6A-#79=Єрсы pLHTB
  52. ;+#7A-#89=Єрсы pHHTB
  53. ;+#C2=яхЁшюф т√чютр M18E7A (ўрэъ M141FE)
  54. ;+#120=чфхё№ юэ ёўшЄрхЄё 
  55. ;+#110-#11F=Єрсы.эръюяыхээ√ї DC, 4? чряшёш яю 2 срщЄр (+E0*2 срщЄ???)
  56. ;+#120=ъръющ-Єю ёў╕Єўшъ?
  57. ;+#122=ўЄю-Єю write only???
  58.  
  59. ;DISKBUF=0xb000
  60.        
  61.        MACRO rdbytecheckFFSCF
  62.         rdbyte
  63.         CP -1
  64.         CALL NC,RDFF
  65.        ENDM  
  66.  
  67. RDFF
  68.         CALL RDBYTE
  69.         INC A
  70.         JR Z,RDFF ;ьюцхЄ с√Є№ ьэюую #FF
  71.         SUB 2 ;#FF ъюфшЁютрэю ъръ #FF,#00
  72.         RET
  73.  
  74. GENMTAB
  75.         LD E,0
  76.         CALL SETPG
  77.        LD HL,_D0<<8
  78. s=2
  79. k=1<<s
  80. f=#E8-#D0
  81.         LD DE,#1151*2/k
  82.         CALL GEN
  83.         LD DE,#187E*2/k ;D2
  84.         CALL GEN
  85.         LD DE,#3B21*2/k ;D4
  86.         CALL GEN
  87.         LD DE,#25A1*2/k ;D6
  88.         CALL GEN
  89.         LD DE,#0C7C*2/k ;D8
  90.         CALL GEN
  91.         LD DE,#1CCD*2/k ;DA
  92.         CALL GEN
  93.         LD DE,#300B*2/k ;DC
  94.         CALL GEN
  95.         LD DE,#3EC5*2/k ;DE
  96.         CALL GEN
  97.         LD DE,#5203*2/k ;E0
  98.         CALL GEN
  99.         LD DE,#6254*2/k ;E2
  100.         CALL GEN
  101.         LD DE,#41B3*2/k ;E4
  102.         CALL GEN
  103.         LD DE,#098E*2/k ;E6
  104.         CALL GEN
  105. s2=5
  106. k=1<<s2
  107.         LD DE,#1151*2/k ;E8
  108.         CALL GENA
  109.         LD DE,#187E*2/k ;EA
  110.         CALL GENA
  111.         LD DE,#3B21*2/k ;EC
  112.         CALL GENA
  113.         LD DE,#25A1*2/k ;EE
  114.         CALL GENA
  115.         LD DE,#0C7C*2/k ;F0
  116.         CALL GENA
  117.         LD DE,#1CCD*2/k ;F2
  118.         CALL GENA
  119.         LD DE,#300B*2/k ;F4
  120.         CALL GENA
  121.         LD DE,#3EC5*2/k ;F6
  122.         CALL GENA
  123.         LD DE,#5203*2/k ;F8
  124.         CALL GENA
  125.         LD DE,#6254*2/k ;FA
  126.         CALL GENA
  127.         LD DE,#41B3*2/k ;FC
  128.         CALL GENA
  129.         LD DE,#098E*2/k ;FE
  130. GENA
  131.         LD IX,0
  132.         LD C,0
  133. GM0A    LD B,128
  134. GM1A    LD A,HX
  135.         LD (HL),A
  136.         INC H
  137.         LD (HL),C
  138.         DEC H
  139.         ADD IX,DE
  140.         JR NC,$+3
  141.         INC C
  142.         INC L
  143.         DJNZ GM1A
  144.         XOR A
  145.         SUB LX
  146.         LD LX,A
  147.         LD A,B;0
  148.         SBC A,HX
  149.         LD HX,A
  150.         SBC A,A
  151.         SUB C
  152.         LD C,A
  153.         INC L
  154.         DEC L
  155.         JR NZ,GM0A
  156.        INC H
  157.        inc H
  158.         RET
  159. GEN
  160.         LD IX,0
  161.         LD BC,0
  162. GM1     LD (HL),C
  163.         INC H
  164.         LD (HL),B
  165.         DEC H
  166.         ADD IX,DE
  167.         JR NC,$+3
  168.         INC BC
  169.         INC L
  170.         JR NZ,GM1
  171.        INC H
  172.        inc H
  173.         RET
  174.  
  175. M18E7A
  176.        ;IFN rdcyc
  177.        ; LD A,(RDCYC)
  178.        ; OR A
  179.        ; JR NZ,rDCOK
  180.        ;ENDIF
  181. FMR1    rdbyte
  182.         INC A
  183.         JR NZ,FMR1
  184. FMR2    rdbyte
  185.         INC A
  186.         JR Z,FMR2
  187.         DEC A
  188.         JR Z,FMR1
  189. rDCOK
  190.         LD A,(VAR+#E0)
  191.         ADD A,A
  192.         LD B,A ;эх сюы№°х #10? (ёь. эшцх VAR+#120)
  193.         LD HL,VAR+#110
  194.         XOR A
  195. cLHT    LD (HL),A
  196.         INC HL
  197.         DJNZ cLHT
  198.        ;IFN rdcyc
  199.        ; LD (RDCYC),A
  200.        ;ENDIF
  201.        LD A,128
  202.        LD (BITER),A
  203.         LD A,(VAR+#C2)
  204.         LD (VAR+#120),A
  205.         RET
  206.  
  207. ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  208. RDSAMP
  209.         IF preview
  210.        ;LD A,(cOLPOI) ;0=B/W
  211.        ;OR A
  212.        ;SCF
  213.        ;JR NZ,RDSAnGR
  214.        ;LD A,(pSMPPG+1) ;1/2/5
  215.        ;CP 2 ;1/2/5 (2/5=CB/CR=SKIP)
  216. ;RDSAnGR
  217.        ;IFN fCS
  218.        CALL getCS
  219.        ;ELSE
  220.        ;CALL C,8026
  221.        ;ENDIF
  222.          LD A,prevdj
  223.          ld BC,#202
  224.         JR NC,$+7
  225.         LD A,YBITdj
  226.         ld BC,#FCFA
  227.        LD (YBITjr),A
  228.        LD A,C
  229.        ld (HORdjnz),A
  230.        LD A,B
  231.        ld (VERdjnz),A
  232.         ENDIF
  233.        ;DI
  234.         LD (pSPS1+1),SP
  235.         LD SP,SAMPLE+#80
  236.         LD HL,0
  237.        DUP #40
  238.         PUSH HL
  239.        EDUP
  240. pSPS1   LD SP,0
  241. pLHTB   LD IX,0
  242.         CALL dehuf
  243.         OR A
  244.        LD H,A
  245.        ld L,A
  246.        CALL NZ,RDBITS
  247.         EX DE,HL
  248. pHCNT   LD HL,(VAR+#110)
  249.         ADD HL,DE
  250. pHCNT2  LD (VAR+#110),HL
  251.         EX DE,HL
  252. pQTBDC  LD A,(0)
  253.         CALL MULDE_AQ
  254.         LD (SAMPLE),HL
  255. PRMODE=$+1
  256.     LD A,0
  257.     CP #C2
  258.     JR Z,BRKLP
  259.        LD A,#02
  260. ;63 ъю¤ЇЇшЎшхэЄр AC
  261. SCNLP1
  262.         ex af,af'
  263. pHHTB   LD IX,0
  264.        CALL dehuf
  265.        LD L,A
  266.       LD H,R4A0F/256
  267.       LD H,(HL)
  268.        AND #0F
  269.        JR NZ,YBIT
  270. YBITjr=$-1
  271.        LD A,H
  272.        CP #20 ;L=#F0?
  273.        JR NZ,BRKLP
  274.        ex af,af'
  275.        ADD A,32
  276.        JP P,SCNLP1
  277.        JR BRKLP
  278. prevYBIT
  279. prevdj=$-YBITjr-1
  280.         LD B,A
  281.         LD DE,BITER
  282.         LD A,(DE)
  283. skBLP   ADD A,A
  284.         JR Z,skNEW
  285.         DJNZ skBLP
  286.         LD (DE),A
  287.         ex af,af'
  288.        ADD A,H
  289.       JP P,SCNLP1
  290.       JR BRKLP
  291. skNEW
  292.        rdbytecheckFFSCF
  293.        RLA
  294.        DJNZ skBLP
  295.        LD (DE),A
  296.        ex af,af'
  297.         ADD A,H
  298.        JP P,SCNLP1
  299.        JR BRKLP
  300. YBIT
  301. YBITdj=$-YBITjr-1
  302.         ex af,af'
  303.        ADD A,H
  304.       LD E,A
  305.       ld D,Qorder/256
  306.        ex af,af'
  307.        CALL RDBITS
  308.         EX DE,HL
  309.        LD A,(HL)
  310.        LD (Qadr),A
  311. pQTB    LD BC,0
  312.         ADD HL,BC
  313.         LD A,(HL)
  314.         CALL MULDE_AQ
  315. Qadr=$+1
  316.        LD (SAMPLE),HL
  317.         ex af,af'
  318.       JP P,SCNLP1
  319. BRKLP
  320.        LD E,0
  321.        CALL SETPG
  322. ;---------------------------
  323.       ;DI ;шч-чр iy?
  324.       PUSH IY
  325.        LD IX,SAMPLE
  326.        LD B,8
  327. HORLP
  328.        PUSH BC
  329.       PUSH IX
  330.       POP HL
  331.        INC L
  332.        XOR A
  333.        LD B,7
  334.        INC L
  335.        OR (HL)
  336.        INC L
  337.        OR (HL)
  338.        DJNZ $-4
  339. HORdjnz=$-1
  340.        JR NZ,NOEMPH
  341.        LD A,(IX)
  342.        ld D,(IX+1)
  343.       DUP 2+s
  344.        SRA D
  345.        RRA
  346.       EDUP
  347.       PUSH IX
  348.       POP HL
  349.        LD B,8
  350.        LD (HL),A
  351.        INC L
  352.        inc L
  353.        DJNZ $-3
  354.        JP HORZOK
  355. NOEMPH
  356.       LD C,(IX+4)
  357.       ld B,(IX+5)
  358.       LD L,(IX+#C)
  359.       ld H,(IX+#D)
  360.       PUSH HL
  361.       ADC HL,BC
  362.       LD D,_D0
  363.       CALL NZ,MULLONG
  364.       LD H,B
  365.        LD B,L
  366.       LD L,C
  367.       LD D,_D2
  368.       LD A,H
  369.       OR L
  370.       CALL NZ,MULLONG
  371.        LD A,L
  372.        ADD A,B
  373.        LD C,A
  374.       POP HL
  375.       LD D,_D4
  376.       LD A,H
  377.       OR L
  378.       CALL NZ,MULLONG
  379.        LD A,B
  380.        SUB L
  381.        LD B,A
  382.       LD L,(IX)
  383.       ld H,(IX+1)
  384.       LD E,(IX+8)
  385.       ld D,(IX+9)
  386.       PUSH HL
  387.       ADD HL,DE
  388.       LD A,L
  389.       DUP 2+s
  390.       SRA H
  391.       RRA
  392.       EDUP
  393.        ADD A,C
  394.      LD LY,A
  395.        SUB C,C
  396.       POP HL
  397.       SBC HL,DE
  398.      LD E,A
  399.       LD A,L
  400.       DUP 2+s
  401.       SRA H
  402.       RRA
  403.       EDUP
  404.        ADD A,B
  405.      LD C,A
  406.        SUB B
  407.        sub B
  408.      LD B,A
  409.      EXX
  410.  
  411.       LD L,(IX+#A)
  412.       ld H,(IX+#B)
  413.       LD E,(IX+6)
  414.       ld D,(IX+7)
  415.      PUSH DE
  416.      PUSH HL
  417.       ADD HL,DE
  418.       EX DE,HL
  419.       LD C,(IX+#E)
  420.       ld B,(IX+#F)
  421.       ADD HL,BC
  422.      PUSH DE
  423.      PUSH BC
  424.      PUSH HL
  425.      PUSH BC
  426.       EX DE,HL
  427.       ADD HL,BC
  428.       LD C,(IX+2)
  429.       ld B,(IX+3)
  430.       ADC HL,BC
  431.       LD D,_D6
  432.       CALL NZ,MULLONG
  433.      LD A,L
  434.      ex af,af'
  435.        LD L,(IX+#A)
  436.        ld H,(IX+#B)
  437.        ADC HL,BC
  438.        LD D,_D8
  439.        CALL NZ,MULLONG
  440.       ex af,af'
  441.        SUB L
  442.      LD HY,A
  443.      ADD A,L
  444.      ex af,af'
  445.       POP HL
  446.        ADC HL,BC
  447.        LD D,_DA
  448.        CALL NZ,MULLONG
  449.        LD H,B
  450.         LD B,L
  451.        LD L,C
  452.        LD D,_DC
  453.        LD A,H
  454.        OR L
  455.        CALL NZ,MULLONG
  456.       LD A,HY
  457.         SUB B
  458.         ADD A,L
  459.         LD L,A
  460.       ADD A,LY
  461.         LD (IX),A
  462.         SUB L
  463.         sub L
  464.         LD (IX+#E),A
  465.  
  466.       POP HL
  467.        LD D,_DE
  468.        LD A,H
  469.        OR L
  470.        CALL NZ,MULLONG
  471.       ex af,af'
  472.        SUB L
  473.        LD C,A
  474.  
  475.      POP HL
  476.       LD D,_E6
  477.       LD A,H
  478.       OR L
  479.       CALL NZ,MULLONG
  480.        LD A,C
  481.        SUB B
  482.        ADD A,L
  483.        LD L,A
  484.      EXX
  485.      ADD A,E
  486.      EXX
  487.        LD (IX+6),A
  488.        SUB L
  489.        sub L
  490.        LD (IX+8),A
  491.  
  492.      POP HL
  493.       LD D,_E0
  494.       LD A,H
  495.       OR L
  496.       CALL NZ,MULLONG
  497.        LD B,L
  498.  
  499.      POP HL
  500.       LD D,_E4
  501.       LD A,H
  502.       OR L
  503.       CALL NZ,MULLONG
  504.      LD A,HY
  505.        ADD A,L
  506.        SUB B
  507.        LD L,A
  508.      EXX
  509.      ADD A,B
  510.      EXX
  511.        LD (IX+4),A
  512.        SUB L
  513.        sub L
  514.        LD (IX+#A),A
  515.  
  516.      POP HL
  517.       LD D,_E2
  518.       LD A,H
  519.       OR L
  520.       CALL NZ,MULLONG
  521.        LD A,L
  522.        SUB B
  523.        ADD A,C
  524.        LD L,A
  525.      EXX
  526.      ADD A,C
  527.      EXX
  528.        LD (IX+2),A
  529.        SUB L
  530.        sub L
  531.        LD (IX+#C),A
  532. HORZOK
  533.        LD DE,16
  534.        ADD IX,DE
  535.        POP BC
  536.        DEC B
  537.        JP NZ,HORLP
  538. ;---------------------------
  539.        LD IX,SAMPLE
  540.        LD B,8
  541. VERULP
  542.        PUSH BC
  543.        PUSH IX
  544.        POP HL
  545.        XOR A
  546.        LD DE,16
  547.        LD B,7
  548.        ADD HL,DE
  549.        OR (HL)
  550.        DJNZ $-2
  551. VERdjnz=$-1
  552.        JR NZ,NOEMPV
  553.        LD A,(IX)
  554.       ADD A,A
  555.       LD L,A
  556.       SBC A,A
  557.       LD H,A
  558.        PUSH IX
  559.        LD B,8
  560. fLULP   LD (IX),L
  561.        ld (IX+1),H
  562.        ADD IX,DE
  563.        DJNZ fLULP
  564.        POP IX
  565.        JP VERTUOK
  566. NOEMPV
  567.        LD A,(IX+#60)
  568.        LD E,(IX+#20)
  569.        ADD A,E
  570.        LD L,A
  571.       LD H,_D0+f
  572.       LD C,(HL)
  573.       INC H
  574.       LD B,(HL)
  575.        LD L,E
  576.       INC H
  577.       LD A,(HL)
  578.       INC H
  579.       LD H,(HL)
  580.       ld L,A
  581.        ADD HL,BC
  582.       EX DE,HL
  583.         LD A,(IX)
  584.         ADD A,(IX+#40)
  585.       ADD A,A
  586.       LD L,A
  587.       SBC A,A
  588.       LD H,A
  589.        SBC HL,DE
  590.      PUSH HL
  591.       ;LD (vLC6+1),HL
  592.        ADD HL,DE
  593.        add HL,DE
  594.        LD (nPD0H+1),HL
  595.  
  596.        LD L,(IX+#60)
  597.       LD H,_D4+f
  598.       LD E,(HL)
  599.       INC H
  600.       LD D,(HL)
  601.      LD H,B
  602.      ld L,C
  603.        SBC HL,DE
  604.        EX DE,HL
  605.         LD A,(IX)
  606.         SUB (IX+#40)
  607.       ADD A,A
  608.       LD L,A
  609.       SBC A,A
  610.       LD H,A
  611.        SBC HL,DE
  612.      PUSH HL
  613.       ;LD (vLC2+1),HL
  614.        ADD HL,DE
  615.        add HL,DE
  616.        LD (vLC0E+1),HL
  617.  
  618.        LD A,(IX+#50)
  619.        LD (vLC20+1),A
  620.        LD E,A
  621.        LD A,(IX+#30)
  622.        LD (vLC1C+1),A
  623.        LD C,A
  624.        ADD A,E
  625.        LD (vLC24+1),A
  626.        LD A,(IX+#70)
  627.        LD (vLC14+1),A
  628.       LD B,A
  629.        ADD A,C
  630.        LD (vLC28+1),A
  631.        ADD A,E
  632.       LD C,(IX+#10)
  633.       ADD A,C
  634.        LD L,A
  635.       LD H,_D6+f
  636.       LD A,(HL)
  637.       INC H
  638.       LD H,(HL)
  639.       ld L,A
  640.      PUSH HL
  641.       LD A,E
  642.       ADD A,C
  643.        LD L,A
  644.       LD H,_D8+f
  645.       LD E,(HL)
  646.       INC H
  647.       LD D,(HL)
  648.      POP HL
  649.      PUSH HL
  650.       SBC HL,DE
  651.        LD (nPD3H+1),HL
  652.        EX DE,HL
  653.  
  654.       LD A,B
  655.       ADD A,C
  656.       LD L,A
  657.        LD A,C
  658.       LD H,_DA+f
  659.       LD C,(HL)
  660.       INC H
  661.       LD B,(HL)
  662.        LD L,A
  663.       INC H
  664.       LD A,(HL)
  665.       INC H
  666.       LD H,(HL)
  667.       ld L,A
  668.        SBC HL,BC
  669.        ADD HL,DE
  670.       EX DE,HL
  671. nPD0H   LD HL,0
  672.        SBC HL,DE
  673.        LD (IX+#70),L
  674.        ld (IX+#71),H
  675.        ADD HL,DE
  676.        add HL,DE
  677.        LD (IX),L
  678.        ld (IX+1),H
  679. vLC28  LD HL,+(_DE+f)<<8
  680.       LD E,(HL)
  681.       INC H
  682.       LD D,(HL)
  683.      POP HL
  684.       SBC HL,DE
  685.      LD D,H
  686.      ld E,L
  687.      SBC HL,BC
  688.      PUSH HL
  689.  
  690. vLC24  LD HL,+(_E0+f)<<8
  691.       LD C,(HL)
  692.       INC H
  693.       LD B,(HL)
  694. vLC1C  LD HL,+(_E2+f)<<8
  695.       LD A,(HL)
  696.       INC H
  697.       LD H,(HL)
  698.       ld L,A
  699.        SBC HL,BC
  700.        ADD HL,DE
  701.       EX DE,HL
  702. vLC0E   LD HL,0
  703.        SBC HL,DE
  704.        LD (IX+#60),L
  705.        ld (IX+#61),H
  706.        ADD HL,DE
  707.        add HL,DE
  708.        LD (IX+#10),L
  709.        ld (IX+#11),H
  710.  
  711. vLC14  LD HL,+(_E6+f)<<8
  712.       LD E,(HL)
  713.       INC H
  714.       LD D,(HL)
  715.      POP HL
  716.        ADD HL,DE
  717.       EX DE,HL
  718.  
  719. vLC20  LD HL,+(_E4+f)<<8
  720.       LD A,(HL)
  721.       INC H
  722.       LD H,(HL)
  723.       ld L,A
  724.        SBC HL,BC
  725. nPD3H   LD BC,0
  726.        ADD HL,BC
  727.       LD B,H
  728.       ld C,L
  729.      POP HL
  730.        SBC HL,BC
  731.        LD (IX+#50),L
  732.        ld (IX+#51),H
  733.        ADD HL,BC
  734.        add HL,BC
  735.        LD (IX+#20),L
  736.        ld (IX+#21),H
  737.  
  738.      POP HL
  739.        SBC HL,DE
  740.        LD (IX+#40),L
  741.        ld (IX+#41),H
  742.        ADD HL,DE
  743.        add HL,DE
  744.        LD (IX+#30),L
  745.        ld (IX+#31),H
  746. VERTUOK
  747.        INC LX
  748.        inc LX
  749.        POP BC
  750.        DEC B
  751.        JP NZ,VERULP
  752.       POP IY
  753.       ;EI
  754.        RET
  755.  
  756. ;twice
  757. ;/21331 CALLS
  758. ;150t=1s
  759. MULDE_AQ
  760.       LD HL,0
  761.       RLA
  762.      JP NC,$+6
  763.      LD H,D
  764.      ld L,E
  765.      ADD HL,HL
  766.        DUP 6
  767.       RLA
  768.       JR NC,$+3
  769.       ADD HL,DE
  770.       ADD HL,HL
  771.        EDUP
  772.       RLA
  773.       RET NC
  774.       ADD HL,DE
  775.       RET
  776.  
  777. ;/65537 CALLS
  778. ;50t=1s
  779. RD1B
  780. BITER=$+1
  781.        LD A,128
  782.        ADD A,A
  783.        JR Z,rD1NOLD
  784.        LD (BITER),A
  785.        RET
  786. rD1NOLD
  787.        rdbytecheckFFSCF
  788.        RLA
  789. rD1OLD  LD (BITER),A
  790.        RET
  791. ;2
  792. RDBITS
  793.        LD B,A
  794.       CALL RD1B
  795.       DEC B
  796.       JR NC,RDBITSm
  797.        LD HL,1
  798.       RET Z
  799. rDBLP   ADD A,A
  800.        JR Z,rDNEW
  801. rDNEWQ
  802.        ADC HL,HL
  803.        DJNZ rDBLP
  804.        LD (BITER),A
  805.        RET
  806. RDBITSm
  807.        LD HL,-2
  808.       JR Z,rDBITsmQ
  809. rDBLPm  ADD A,A
  810.        JR Z,rDNEWm
  811. rDNEWQm
  812.        ADC HL,HL
  813.        DJNZ rDBLPm
  814.        LD (BITER),A
  815. rDBITsmQ
  816.       INC HL
  817.        RET
  818. rDNEW
  819.        rdbytecheckFFSCF
  820.        RLA
  821.        JP rDNEWQ
  822. rDNEWm
  823.        rdbytecheckFFSCF
  824.        RLA
  825.        JP rDNEWQm
  826.  
  827. ;їрЇЇьрэ
  828. ;/25364 CALLS
  829. ;150t=1s
  830. dehuf
  831. ;ix т Ёрщюэх FREE
  832.        LD A,(BITER)
  833.        ADD A,A
  834.        CALL Z,rD1NOLD
  835.       LD DE,0
  836.       RL E
  837.        JP fNDHLP
  838. hD1NOLD
  839.        rdbytecheckFFSCF
  840.        RLA
  841.        JP $+6
  842. rDNXT
  843.        ADD A,A
  844.        JR Z,hD1NOLD
  845.       RL E
  846.       rl D
  847.        INC IX
  848.        inc IX
  849. fNDHLP
  850.        LD L,(IX+1)
  851.        ld H,(IX)
  852.       INC HL
  853.       SCF
  854.        SBC HL,DE
  855.        JP C,rDNXT
  856.        LD (BITER),A
  857.        LD H,(IX+#482-#43C)
  858.        ld L,(IX+#483-#43C)
  859.        ADD HL,DE
  860.        LD A,(HL)
  861.        RET
  862.  
  863. MSHTAB
  864.        LD A,H
  865.        OR A
  866. MSHTABA
  867.           ;JR mSH3216
  868.        JR NZ,mSH3216 ;HL>=256: яюыэюЎхээюх єьэюцхэшх
  869.        LD H,D
  870.        LD E,(HL)
  871.        INC H
  872.        LD D,(HL)
  873.        EX DE,HL
  874.        RET
  875. mSH3216
  876.        EX DE,HL
  877.       LD L,64;16
  878.        LD A,(HL)
  879.        LD H,0
  880.        RRA
  881.        JR NC,$+7
  882.        ADD HL,DE
  883.        RR H
  884.        rr L
  885.       DUP 5;3
  886.        RRA
  887.        JR NC,$+3
  888.        ADD HL,DE
  889.        RR H
  890.        rr L
  891.       EDUP
  892.        RET
  893.  
  894. ;hl=nnnn
  895. ;d=multable/256 (512 bytes)
  896. ;out: hl
  897. MULLONG
  898.        BIT 7,H
  899.        JP Z,MSHTAB
  900.        XOR A
  901.        SUB L
  902.        LD L,A
  903.        SBC A,A
  904.        SUB H
  905.        LD H,A
  906.        CALL MSHTABA
  907.        XOR A
  908.        SUB L
  909.        LD L,A
  910.        SBC A,A
  911.        SUB H
  912.        LD H,A
  913.        RET
  914.  
  915. M1696A
  916. ;яхЁхъюфшЁєхь 2-срщЄэ√х фрээ√х шч SAMPLE (-#180..+#180) т юфэюсрщЄэ√х т ёЄЁюъх сыюъют
  917. ;hl=рфЁхё сыюър т ёЄЁюъх сыюъют LSZX*8
  918.        ;DI
  919.        LD (pSPS3+1),SP
  920.         ;LD DE,(LSZXM8)
  921.         ;INC DE
  922. LSZXm7=$+1
  923.         ld de,0
  924.        LD SP,SAMPLE
  925.        EXX
  926.        LD DE,PTAB+#80 ;ЄрсышЎр юсЁєсрэш  яхЁхяюыэхэш 
  927.        LD B,8
  928. cOPLOOP  DUP 7
  929.         POP HL
  930.         ADD HL,DE
  931.         LD A,(HL)
  932.         EXX
  933.         LD (HL),A
  934.         INC HL
  935.         EXX
  936.         EDUP
  937.         POP HL
  938.         ADD HL,DE
  939.         LD A,(HL)
  940.         EXX
  941.         LD (HL),A
  942.        ADD HL,DE ;de=LSZX-7
  943.        EXX
  944.        DJNZ cOPLOOP
  945. pSPS3   LD SP,0
  946.        ;EI
  947.        RET
  948.  
  949. ;HL=(pLNADR+1)
  950. M166AA
  951. ;яхЁхъюфшЁєхь 2-срщЄэ√х фрээ√х шч SAMPLE т юфэюсрщЄэ√х т ёЄЁюъх сыюъют, ё єтхышўхэшхь т 2 Ёрчр
  952. ;hl=рфЁхё сыюър т ёЄЁюъх сыюъют LSZX*8
  953.        ;DI
  954.        LD (pSPS6+1),SP
  955. pLSMH2  LD BC,0
  956.        LD SP,SAMPLE
  957.        LD (pLSS+1),BC
  958.        EXX
  959.        LD DE,PTAB+#80 ;ЄрсышЎр юсЁєсрэш  яхЁхяюыэхэш 
  960.        LD B,8
  961. pXSCL   JR IN3
  962. IN2
  963.        POP HL
  964.        ADD HL,DE
  965.        LD A,(HL)
  966.        EXX
  967.       LD (pLLIN+1),HL
  968.       DUP 7
  969.        LD (HL),A
  970.        INC HL
  971.        LD (HL),A
  972.        INC HL
  973.        EXX
  974.        POP HL
  975.        ADD HL,DE
  976.        LD A,(HL)
  977.        EXX
  978.       EDUP
  979.        LD (HL),A
  980.        INC HL
  981.        LD (HL),A
  982.        INC HL
  983. pYSCL   LD A,0
  984. C2LP
  985.        ADD HL,BC
  986.       EX DE,HL
  987. pLLIN   LD HL,0
  988.        dup 16
  989.        ldi
  990.        edup
  991.       EX DE,HL
  992. pLSS    LD BC,0
  993.        DEC A
  994.        JR NZ,C2LP
  995.        ADD HL,BC
  996.        EXX
  997.        DJNZ IN2
  998.        JP pSPS6
  999. IN3
  1000.        POP HL
  1001.        ADD HL,DE
  1002.        LD A,(HL)
  1003.        EXX
  1004.       LD (pLLIN1+1),HL
  1005.       DUP 7
  1006.        LD (HL),A
  1007.        INC HL
  1008.        LD (HL),A
  1009.        INC HL
  1010.        LD (HL),A
  1011.        INC HL
  1012.        EXX
  1013.        POP HL
  1014.        ADD HL,DE
  1015.        LD A,(HL)
  1016.        EXX
  1017.       EDUP
  1018.        LD (HL),A
  1019.        INC HL
  1020.        LD (HL),A
  1021.        INC HL
  1022.        LD (HL),A
  1023.        INC HL
  1024.        LD A,(pYSCL+1)
  1025. C3LP
  1026.        ADD HL,BC
  1027.       EX DE,HL
  1028. pLLIN1  LD HL,0
  1029.        dup 24
  1030.        ldi
  1031.        edup
  1032.       EX DE,HL
  1033.        LD BC,(pLSS+1)
  1034.        DEC A
  1035.        JR NZ,C3LP
  1036.        ADD HL,BC
  1037.        EXX
  1038.        DEC B
  1039.        JP NZ,IN3
  1040. pSPS6   LD SP,0
  1041.        ;EI
  1042.        RET
  1043.  
  1044. M1675A
  1045. ;яхЁхъюфшЁєхь 2-срщЄэ√х фрээ√х шч SAMPLE т юфэюсрщЄэ√х т ёЄЁюъх сыюъют, ё єтхышўхэшхь т 2 Ёрчр яю X?
  1046. ;hl=рфЁхё сыюър т ёЄЁюъх сыюъют LSZX*8
  1047.        ;DI
  1048.        LD (pSPS5+1),SP
  1049. pLSMH   LD DE,0
  1050.        LD SP,SAMPLE
  1051.        EXX
  1052.        LD DE,PTAB+#80 ;ЄрсышЎр юсЁєсрэш  яхЁхяюыэхэш 
  1053.        LD C,8
  1054. Co3LOOP
  1055.       DUP 7
  1056.        POP HL
  1057.        ADD HL,DE
  1058.        LD A,(HL)
  1059.        EXX
  1060.        LD (HL),A
  1061.        INC HL
  1062.        LD (HL),A
  1063.        INC HL
  1064.        EXX
  1065.       EDUP
  1066.        POP HL
  1067.        ADD HL,DE
  1068.        LD A,(HL)
  1069.        EXX
  1070.        LD (HL),A
  1071.        INC HL
  1072.        LD (HL),A
  1073.        INC HL
  1074.        ADD HL,DE
  1075.        EXX
  1076.        DEC C
  1077.        JR NZ,Co3LOOP
  1078. pSPS5   LD SP,0
  1079.        ;EI
  1080.        RET
  1081.  
  1082. ;pg1 = Y -> G?
  1083. ;pg2 = Cb -> R
  1084. ;pg5 = Cr -> B
  1085. ;яю юфэшь ш Єхь цх рфЁхёрь, эрўшэр  ё JPGPAGESTART(0xc000) -> BGR
  1086.        
  1087. ;TODO ё єў╕Єюь ьрё°ЄрсшЁютрэш  яЁюяєёърЄ№ ёЄЁюъш
  1088. jpgconvRGB
  1089. ;HL=JPGPAGESTART
  1090. ;A=(MAXV8) ;т√ёюЄр яюыэюЎхээюую сыюър
  1091. jpgconvRGBlines0
  1092. jpglinecount=$+1
  1093.        ld de,0
  1094.        dec de
  1095.        bit 7,d
  1096.        ret nz ;ёЄЁюъш ётхЁї т√ёюЄ√ ърЁЄшэъш эх т√тюфшЄ№
  1097.        ld (jpglinecount),de
  1098.        push af
  1099.         ;bit 0,e
  1100.         ;jp z,jpgconvRGBlineskip ;TODO ё єў╕Єюь чєьр
  1101.         call islinevisible
  1102.         jp nz,jpgconvRGBlineskip
  1103.        push hl
  1104.        
  1105. ;1.ўшЄрЄ№ т LINE ърцфє■ ёюёЄрты ■∙є■ юЄфхы№эю, 2.яхЁхъюфшЁютрЄ№ ърцфє■ ёюёЄрты ■∙є■ юЄфхы№эю, 3. чряшё√трЄ№ ёЁрчє т bmp (BGR)
  1106.        ld e,1
  1107.        call SETPG
  1108.        ld de,LINE1
  1109.        ld bc,(curpicwid)
  1110. jpgcnvcopylineY0
  1111.        ldi
  1112.        inc de
  1113.        inc de
  1114.        jp pe,jpgcnvcopylineY0
  1115.        pop hl
  1116.        push hl
  1117.        ld e,2
  1118.        call SETPG
  1119.        ld de,LINE1+1
  1120.        ld bc,(curpicwid)
  1121. jpgcnvcopylineCB0
  1122.        ldi
  1123.        inc de
  1124.        inc de
  1125.        jp pe,jpgcnvcopylineCB0
  1126.        pop hl
  1127.        push hl
  1128.        ld e,5
  1129.        call SETPG
  1130.        ld de,LINE1+2
  1131.        ld bc,(curpicwid)
  1132. jpgcnvcopylineCR0
  1133.        ldi
  1134.        inc de
  1135.        inc de
  1136.        jp pe,jpgcnvcopylineCR0
  1137. ;¤ЄюЄ ЇЁруьхэЄ=55481
  1138.        
  1139.        ld hl,LINE1
  1140.        ld bc,(curpicwid)
  1141. jpgconvRGBpixels0
  1142.        LD A,(HL) ;Y
  1143.        inc hl
  1144.        LD (pY8_),A
  1145.        LD A,(HL) ;CB
  1146.        inc hl
  1147.        LD (pCB8_),A
  1148.        LD A,(HL) ;CR
  1149.        EXX
  1150.       LD L,A ;CR
  1151.       LD H,G716C/256 ;CR tab (add to Y->R) ;k>=0?
  1152.        LD E,(HL)
  1153.        INC H
  1154.        LD D,(HL)
  1155.       INC H ;G7174/256 ;CR tab (add to Y->G) ;k<0?
  1156.        LD C,(HL)
  1157.        INC H
  1158.        LD B,(HL)
  1159. pY8_=$+1
  1160.        LD HL,PTAB ;ЄрсышЎр юсЁєсрэш  яхЁхяюыэхэш  + Y
  1161.       EX DE,HL
  1162.        ADD HL,DE ;de=ЄрсышЎр юсЁєсрэш  яхЁхяюыэхэш  + Y
  1163.        LD A,(HL) ;R схч ъюэЄЁрёЄр
  1164.        exx
  1165.        ld (hl),a ;R схч ъюэЄЁрёЄр
  1166.        exx
  1167.  
  1168. pCB8_=$+1
  1169.        LD HL,G7170 ;CB tab (add to Y->G)
  1170.       DEC H
  1171.       LD A,(HL)
  1172.       DEC H ;G7178/256 ;CB tab (add to Y->B) ;k<0?
  1173.       LD L,(HL)
  1174.       LD H,A
  1175.        ADD HL,BC
  1176.        ADD HL,DE ;de=ЄрсышЎр юсЁєсрэш  яхЁхяюыэхэш  + Y
  1177.        LD A,(HL) ;G схч ъюэЄЁрёЄр
  1178.        ex af,af'
  1179.  
  1180.        LD HL,(pCB8_) ;G7170+ ;CB tab (add to Y->G) ;k>=0?
  1181.         LD C,(HL)
  1182.         INC H
  1183.         LD B,(HL)
  1184.        EX DE,HL ;hl=ЄрсышЎр юсЁєсрэш  яхЁхяюыэхэш  + Y
  1185.         ADD HL,BC
  1186.          ld a,(hl) ;B схч ъюэЄЁрёЄр
  1187.         EXX
  1188.         dec hl
  1189.         dec hl
  1190.         LD (HL),A ;B схч ъюэЄЁрёЄр
  1191.         inc hl
  1192.          ex af,af'
  1193.         ld (hl),a ;G схч ъюэЄЁрёЄр
  1194.        inc hl
  1195.        cpi
  1196.        jp pe,jpgconvRGBpixels0 ;юфшэ яЁюїюф Ўшъыр = 358
  1197. ;Ўшъы=171870
  1198.  
  1199.        ld hl,LINE1
  1200.        ld bc,(curpicwidx3)
  1201. ;hl=юЄъєфр ъюяшЁєхь ёЄЁюъє
  1202. ;bc=ёъюы№ъю срщЄ ъюяшЁєхь
  1203.        ;push hl
  1204.        ;call putline ;30644
  1205.        ;pop hl
  1206.        call drawscreenline_frombuf ;ъюэтхЁЄшЁєхь LINEGIF т LINEPIXELS ш т√тюфшь х╕ эр ¤ъЁрэ ;ьхэ хЄ, яюЄюь тюёёЄрэртыштрхЄ 0x4000, 0x8000
  1207.        call keepconvertedline ;чряюьшэрхь ёъюэтхЁўхээє■ ёЄЁюъє шч LINEPIXELS
  1208.  
  1209.        pop hl
  1210. jpgconvRGBlineskip
  1211.         call inccury
  1212.        LD DE,(LSZX) ;°шЁшэр ёЄЁюъш, юъЁєуы╕ээр  ттхЁї фю яюыэюЎхээюую сыюър
  1213.        ADD HL,DE ;ёыхфє■∙р  ёЄЁюър сыюър
  1214.        pop af
  1215.        dec a
  1216.        JP NZ,jpgconvRGBlines0 ;эр тё■ т√ёюЄє яюыэюЎхээюую сыюър ;юфэр ёЄЁюър = 258150
  1217.        RET ;4 130 590
  1218.  
  1219. jpgconvBW
  1220. ;HL=JPGPAGESTART
  1221. ;A=(MAXV8) ;т√ёюЄр яюыэюЎхээюую сыюър
  1222.        ;ld e,1
  1223.        ;call SETPG
  1224. jpgconvBWlines0
  1225.        ld de,(jpglinecount)
  1226.        dec de
  1227.        bit 7,d
  1228.        ret nz ;ёЄЁюъш ётхЁї т√ёюЄ√ ърЁЄшэъш эх т√тюфшЄ№
  1229.        ld (jpglinecount),de
  1230.        push af
  1231.         ;bit 0,e
  1232.         ;jp z,jpgconvBWlineskip ;TODO ё єў╕Єюь чєьр
  1233.         call islinevisible
  1234.         jp nz,jpgconvBWlineskip
  1235.        push hl
  1236.         ld e,1
  1237.         call SETPG
  1238.        
  1239. ;1.ўшЄрЄ№ т LINE ёюёЄрты ■∙є■ Y тю тёх ЄЁш ёюёЄрты ■∙шї RGB, 2. чряшё√трЄ№ ёЁрчє т bmp (BGR)
  1240.        ld de,LINE1
  1241.        ld bc,(curpicwid)
  1242. jpgconvBWcopylineY0
  1243.        ld a,(hl)
  1244.        ld (de),a
  1245.        inc de
  1246.        ld (de),a
  1247.        inc de
  1248.        ldi
  1249.        jp pe,jpgconvBWcopylineY0
  1250.        
  1251.        ld hl,LINE1
  1252.        ld bc,(curpicwidx3)
  1253. ;hl=юЄъєфр ъюяшЁєхь ёЄЁюъє
  1254. ;bc=ёъюы№ъю срщЄ ъюяшЁєхь
  1255.        ;push hl
  1256.        ;call putline ;30644
  1257.        ;pop hl
  1258.        call drawscreenline_frombuf ;ъюэтхЁЄшЁєхь LINEGIF т LINEPIXELS ш т√тюфшь х╕ эр ¤ъЁрэ ;ьхэ хЄ, яюЄюь тюёёЄрэртыштрхЄ 0x4000, 0x8000
  1259.        call keepconvertedline ;чряюьшэрхь ёъюэтхЁўхээє■ ёЄЁюъє шч LINEPIXELS
  1260.  
  1261.        pop hl
  1262. jpgconvBWlineskip
  1263.         call inccury
  1264.        LD DE,(LSZX) ;°шЁшэр ёЄЁюъш, юъЁєуы╕ээр  ттхЁї фю яюыэюЎхээюую сыюър
  1265.        ADD HL,DE ;ёыхфє■∙р  ёЄЁюър сыюър
  1266.        pop af
  1267.        dec a
  1268.        JP NZ,jpgconvBWlines0 ;эр тё■ т√ёюЄє яюыэюЎхээюую сыюър
  1269.        ret
  1270.        
  1271.  
  1272.  
  1273.  
  1274. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1275.  
  1276. readjpeg
  1277.        ld hl,LINE1
  1278.        ld de,LINE1+1
  1279.        ld (hl),BACKGROUNDCOLORLEVEL
  1280.        ld bc,LINE1_sz-1
  1281.        ldir ;ўЄюс√ ёяЁртр т юёЄрЄъх чэръюьхёЄр с√ыр ўхЁэюЄр (яюЄюь ьюцэю єсЁрЄ№, ъюуфр readchr сєфхЄ ¤Єю фхырЄ№)
  1282.        
  1283.        ld hl,VARS
  1284.        ld de,VARS+1
  1285.        ld bc,VARSsz-1
  1286.        ld (hl),0
  1287.        ldir ;ъръшх-Єю яхЁхьхээ√х юцшфр■Єё  т 0 - TODO эрщЄш ъръшх
  1288.        
  1289.        ;LD HL,jpgputline
  1290.        ;LD (pPROC+1),HL
  1291.        LD HL,FREE
  1292.        LD (MEMDN),HL
  1293.       ;LD HL,JPGPAGESTART
  1294.        ;LD (pSCR2+1),HL
  1295.       ;IFN buf9000
  1296.       ;LD A,DISKBUF/256+(DISKBUFsz/256)
  1297.       ;LD (RDBYHend),A
  1298.       ;LD IY,DISKBUF+DISKBUFsz-1
  1299.       ;ELSE
  1300.       ; LD H,L
  1301.       ; LD (BFLEN),HL
  1302.       ;ENDIF
  1303.       ;LD A,(SCRPRC)
  1304.       ;LD (WASCRPRC),A ;эрёЄЁющър эрыюцхэш  эр ёЄрЁ√щ ¤ъЁрэ?
  1305.        ;CALL iNITJPG
  1306.         ld hl,SAMTAB
  1307.         ld (pPST+1),hl
  1308.  
  1309.        CALL FBMARK
  1310.        CALL LBMARK
  1311.        ;CALL pSCAL ;єёЄрэютър ьрё°Єрсют
  1312.        ;CALL SETPG7
  1313.       ;CALL PRSIZES
  1314. ;once
  1315. GMAXC
  1316.        LD A,(CNUM)
  1317.        LD B,A
  1318.        LD IX,(VAR+#56)
  1319.        PUSH IX
  1320.        push BC
  1321.        LD HL,#101
  1322.       LD DE,18
  1323. gMAXS   LD A,(IX+2)
  1324.        CP H
  1325.        JR C,$+3
  1326.        LD H,A
  1327.        LD A,(IX+3)
  1328.        CP L
  1329.        JR C,$+3
  1330.        LD L,A
  1331.        ADD IX,DE
  1332.        DJNZ gMAXS
  1333.       ;LD A,H
  1334.       ;LD (MAXH),A
  1335.       ;LD A,L
  1336.        LD (MAXV),HL;A
  1337.        POP BC
  1338.        pop IX
  1339. rESCLP  PUSH BC
  1340.        LD DE,(curpicwid)
  1341.        LD A,(IX+2)
  1342.        CALL MULDE_A
  1343.        LD DE,(MAXH)
  1344.        ADD HL,DE
  1345.        DEC HL
  1346.        CALL DIVHL_DE
  1347.       LD (IX+7),C
  1348.       LD (IX+8),B
  1349.        LD DE,(curpichgt)
  1350.        LD A,(IX+3)
  1351.        CALL MULDE_A
  1352.        LD DE,(MAXV)
  1353.        ADD HL,DE
  1354.        DEC HL
  1355.        CALL DIVHL_DE
  1356.       LD (IX+9),C
  1357.       LD (IX+#0A),B
  1358.       LD DE,18
  1359.       ADD IX,DE
  1360.        POP BC
  1361.        DJNZ rESCLP
  1362.  
  1363. ;SELECT OUTPUT
  1364.        ;CALL 8026
  1365.        ;LD A,(PIXPOI)
  1366.        ;JR C,$+4
  1367.        ;LD A,3
  1368.        ;LD (pIXPOI),A
  1369.        ;LD BC,0
  1370.        ;JR NC,bC_JR
  1371.        ;LD A,(BRIGP)
  1372.        ;LD HL,CONTP
  1373.        ;OR (HL)
  1374.        ;LD B,A
  1375.        ;INC B
  1376.        ;DEC C
  1377. ;bC_JR
  1378.       ;IFN fCS
  1379.       ;LD A,C,(rdCS+1),A
  1380.       CALL rdCSU ;яхЁтюэрўры№эюх ўЄхэшх CS
  1381.       ;ENDIF
  1382.      
  1383.        LD A,(CNUM)
  1384.        ;LD (VAR+#C8),A
  1385.        ;LD (VAR+#CA),A
  1386.        DEC A
  1387.         ld hl,jpgconvBW
  1388.        JR Z,YEGRSC ;greyscale image
  1389.        CP 2
  1390.        CALL NZ,ERROR ;not YUV
  1391.        LD HL,jpgconvRGB
  1392.        ;JR sTCF
  1393. YEGRSC
  1394.        ;LD HL,CNVTOGR
  1395.        ;DJNZ $+5
  1396.        ;LD HL,EMPTY
  1397. sTCF
  1398.      ;LD (cOLPOI),A
  1399.        LD (jpgconv_patch),HL ;яЁюЎхфєЁр ъюэтхЁёшш YUV -> RGB
  1400.        ;DEC A
  1401.        ;ADD A,A
  1402.        ;LD HL,CLADR
  1403.        ;CALL HLA   ;HL+=A
  1404.        ;CALL DEGRB ;DE=(HL)
  1405.        ;EX DE,HL
  1406.        ;LD (pCLRS+1),HL        
  1407.  
  1408.        ;push iy
  1409.        ;call reserve_bmp_pages
  1410.        ;pop iy
  1411.        
  1412. ;тё╕ фю render=203762
  1413. render
  1414.        ld hl,(curpichgt)
  1415.        ld (jpglinecount),hl
  1416.        
  1417.        CALL YCCTAB ;103518
  1418.        CALL GENMTAB ;430734
  1419.       ;CALL MAKCTB
  1420.      PUSH IY
  1421.       CALL setsamplescalers ;1253
  1422.       CALL maketrees;M18E08 ;110466
  1423.      POP IY
  1424.        
  1425. ;чряюыэ хь яюёых maketrees, яютхЁї х╕ сєЇхЁр
  1426.        LD l,0
  1427. cNTBLP  LD H,PLTAB/256 ;ЄрсышЎр юЄёхўхэш  яхЁхяюыэхэш 
  1428.        ld (hl),0
  1429.        inc h
  1430.        LD (HL),L
  1431.        inc h
  1432.        LD (HL),-1
  1433.        INC L
  1434.        JR NZ,cNTBLP
  1435.  
  1436.        LD A,(MAXV)
  1437.        ADD A,A
  1438.        ADD A,A
  1439.        ADD A,A
  1440.        LD (MAXV8),A
  1441.        LD A,(MAXH)
  1442.        ADD A,A
  1443.        ADD A,A
  1444.        ADD A,A
  1445.        LD (MAXH8),A
  1446.        LD HL,(curpicwid)
  1447.        CALL ROUND ;HL=k*A (>=HL)
  1448.        LD (LSZX),HL
  1449.        LD DE,7
  1450.       OR A
  1451.        SBC HL,DE
  1452.        LD (LSZXm7),HL
  1453.        ADD HL,DE
  1454.        LD DE,(MAXH8)
  1455.       OR A
  1456.        SBC HL,DE
  1457.        LD (pLSMH+1),HL
  1458.        LD (pLSMH2+1),HL
  1459.        ADD HL,DE
  1460.        ADD HL,HL
  1461.        ADD HL,HL
  1462.        ADD HL,HL
  1463.        LD (BLSZ),HL
  1464.       CALL MAKTS
  1465. ;¤ЄюЄ сыюъ=27612
  1466.      
  1467. ;ЁхэфхЁ
  1468.        LD A,(pichgt_inblocks) ;т√ёюЄр ърЁЄшэъш т яюыэюЎхээ√ї сыюърї
  1469.        LD B,A ;0x16
  1470. YLOOP   PUSH BC
  1471. ;ЁхэфхЁшь ёЄЁюъє шч яюыэюЎхээ√ї сыюъют
  1472.        LD HL,JPGPAGESTART
  1473.        LD (LPNT),HL
  1474.        LD A,(picwid_inblocks) ;°шЁшэр ърЁЄшэъш т яюыэюЎхээ√ї сыюърї
  1475.        LD B,A ;0x1e
  1476. XLOP    PUSH BC
  1477.        CALL rENDLIN ;147235 юфшэ т√чют
  1478.        LD HL,(LPNT)
  1479.        LD DE,(MAXH8)
  1480.        ADD HL,DE
  1481.        LD (LPNT),HL
  1482.        POP BC
  1483.        DJNZ XLOP
  1484. ;6 007 979 Ўшъы яю уюЁшчюэЄрыш
  1485.        
  1486.        LD HL,JPGPAGESTART
  1487.        LD A,(MAXV8) ;т√ёюЄр яюыэюЎхээюую сыюър
  1488. jpgconv_patch=$+1
  1489.        CALL jpgconvRGB ;яхЁхъюфшЁєхь т bmp ;4 130 590 юфшэ т√чют
  1490. ;ёыхфє■∙р  ёЄЁюър шч яюыэюЎхээ√ї сыюъют
  1491.        POP BC
  1492.        DJNZ YLOOP
  1493.        
  1494. pNFX   LD DE,0 ;ърър  яюыєўшырё№ т√ёюЄр ё юъЁєуыхэшхь ттхЁї эр яюыэюЎхээ√щ сыюъ ;0x160
  1495.       LD HL,(curpichgt) ;0x15c
  1496.       OR A
  1497.       SBC HL,DE
  1498.       RET Z
  1499.       RET C ;т girl.jpg т√їюф яю CY
  1500. ;т√ёюЄр ё юъЁєуыхэшхь ттхЁї яюыєўшырё№ ьхэ№°х Ёхры№эющ??? ¤Єю ъръ??? TODO
  1501.      
  1502. ;ўЄю яЁюшёїюфшЄ яюёых ЁхэфхЁр??? TODO
  1503.      
  1504.       LD HL,JPGPAGESTART
  1505.        LD (LPNT),HL
  1506.  
  1507. rENDLIN
  1508.        LD HL,VAR+#110
  1509.        LD (pHCNT+1),HL
  1510.        LD (pHCNT2+1),HL
  1511.        LD A,(VAR+#C2)
  1512.       OR A
  1513.        JR Z,gOREAD
  1514.        LD A,(VAR+#120)
  1515.       OR A
  1516.       CALL Z,M18E7A
  1517.        LD HL,VAR+#120
  1518.        DEC (HL)
  1519. gOREAD  LD HL,JF44 ;рфЁхё ЄрсышЎ√ шч 4 ЇєэъЎшщ
  1520.        LD (pSFUNC+1),HL
  1521.        
  1522.        LD IX,SPGTB ;ЄрсышЎр шч 3 ёЄЁрэшЎ 1/2/5 ;TODO єсЁрЄ№
  1523.        LD HL,SAMTAB
  1524. NXRS    LD A,(IX)
  1525.        INC IX
  1526.        LD (pSMPPG+1),A ;ёЄЁрэшўър 1/2/5 ;TODO єсЁрЄ№
  1527.        
  1528.        LD A,(HL) ;ўшёыю ёыю╕т?
  1529.        INC HL
  1530.        OR A
  1531.       RET Z
  1532.        PUSH IX
  1533.        LD B,A
  1534. ;яхЁхсшЁрхь тёх ёыюш?
  1535. NXRS1   PUSH BC
  1536.        LD E,(HL)
  1537.        INC HL
  1538.        LD D,(HL)
  1539.        INC HL
  1540.       PUSH HL
  1541.       LD HL,(LPNT)
  1542.       ADD HL,DE
  1543.       LD (pLNADR+1),HL
  1544.       POP HL
  1545.        LD E,(HL)
  1546.        INC HL
  1547.        LD D,(HL)
  1548.        INC HL
  1549.       INC DE
  1550.       LD (pQTBDC+1),DE
  1551.      DEC DE
  1552.      dec DE
  1553.       LD A,D
  1554.       SUB Qorder/256
  1555.       LD D,A
  1556.       LD (pQTB+1),DE
  1557.        LD E,(HL)
  1558.        INC HL
  1559.        LD D,(HL)
  1560.        INC HL
  1561.        LD C,(HL)
  1562.        INC HL
  1563.        LD B,(HL)
  1564.        INC HL
  1565.       PUSH HL
  1566.       LD HL,#43C;16
  1567.       ADD HL,DE
  1568.       LD (pLHTB+2),HL
  1569.       SBC HL,DE
  1570.       ADD HL,BC
  1571.       LD (pHHTB+2),HL
  1572.       POP HL
  1573.        LD A,(HL)
  1574.       ADD A,-1
  1575.       SBC A,A
  1576.       AND IN3-IN2
  1577.        LD (pXSCL+1),A
  1578.        INC HL
  1579.        LD A,(HL)
  1580.        LD (pYSCL+1),A
  1581.        INC HL
  1582.        PUSH HL
  1583.        CALL RDSAMP
  1584.        if !ONEPAGEYUV
  1585. pSMPPG  LD E,0 ;1/2/5 эюьхЁ ёыю 
  1586.        CALL SETPG
  1587.        endif
  1588. pLNADR  LD HL,0
  1589.        if ONEPAGEYUV
  1590.        LD E,1
  1591.        CALL SETPG ;TODO єсЁрЄ№
  1592. pSMPPG  LD A,0 ;1/2/5 эюьхЁ ёыю 
  1593.        ;яхЁхёў╕Є HL т чртшёшьюёЄш юЄ эюьхЁр ёыю 
  1594.        cp 2
  1595.        jr nz,$+6
  1596.         set 3,h
  1597.         jr $+6
  1598.        jr c,$+4
  1599.        set 4,h
  1600.        endif
  1601. pSFUNC  CALL 0 ;Єхъє∙шщ рфЁхё т ЄрсышЎх 4 ЇєэъЎшщ ;яю шфхх фюыцэю с√Є№ M1696A, M166AA, M1675A шыш EMPTY? яхЁхъырф√трхЄ SAMPLE т эєцэ√щ ёыющ ё эєцэ√ь ьрё°ЄрсшЁютрэшхь
  1602.        POP HL
  1603.        POP BC
  1604.        DJNZ NXRS1 ;ёыхфє■∙шщ ёыющ?
  1605.        
  1606.        EX DE,HL
  1607.        LD HL,(pHCNT+1)
  1608.        INC HL
  1609.        inc HL
  1610.        LD (pHCNT+1),HL
  1611.        ;LD HL,(pHCNT2+1) ;чрўхь? TODO
  1612.        ;INC HL
  1613.        ;inc HL
  1614.        LD (pHCNT2+1),HL
  1615.        LD HL,(pSFUNC+1)
  1616.       INC HL
  1617.       inc HL
  1618.       inc HL
  1619.        LD (pSFUNC+1),HL
  1620.        EX DE,HL
  1621.        POP IX
  1622.       JP NXRS
  1623.  
  1624. ROUNDm8
  1625.        ADD A,A
  1626.        ADD A,A
  1627.        ADD A,A
  1628. ;3 times
  1629. ROUND
  1630.        LD E,A
  1631.        LD D,0
  1632.       ADD HL,DE
  1633.       DEC HL
  1634.       PUSH HL
  1635.       CALL QUAHL_DE ;DE=HLmodDE
  1636.       POP HL
  1637.       OR A
  1638.       SBC HL,DE ;HL=k*A (>=HL)
  1639.        RET
  1640. ;once
  1641. MAKTS
  1642.        LD HL,(curpicwid)
  1643.        LD A,(MAXH8)
  1644.       LD E,A
  1645.       LD D,0
  1646.       ADD HL,DE ;
  1647.       DEC HL    ;фы  юъЁєуыхэш  ттхЁї
  1648.       CALL DIVHL_DE
  1649.       LD (picwid_inblocks),BC
  1650.        LD HL,(curpichgt)
  1651.        LD A,(MAXV8)
  1652.       LD E,A
  1653.       LD D,0
  1654.       ADD HL,DE ;
  1655.       DEC HL    ;фы  юъЁєуыхэш  ттхЁї
  1656.       CALL DIVHL_DE
  1657.       LD D,B
  1658.       ld E,C
  1659.        LD (pichgt_inblocks),DE
  1660.        LD A,(MAXV8)
  1661.        CALL MULDE_A
  1662.        LD (pNFX+1),HL ;ърър  яюыєўшырё№ т√ёюЄр ё юъЁєуыхэшхь эр яюыэюЎхээ√щ сыюъ
  1663.        LD HL,VAR+#E2
  1664.        LD A,(CNUM)
  1665.        LD B,A
  1666. RCLP1   PUSH BC
  1667.        push HL
  1668.        CALL GETIXHL
  1669.       LD B,(IX+2)
  1670.       ld C,(IX+3)
  1671.       LD (IX+#B),B
  1672.       ld (IX+#C),C
  1673.       LD L,(IX+7)
  1674.       ld H,(IX+8)
  1675.        LD A,B
  1676.        CALL ROUNDm8 ;HL=k*A*8 (>=HL)
  1677.        XOR A
  1678.        ADD A,C
  1679.        DJNZ $-1
  1680.        LD (IX+#0D),A
  1681.       LD (IX+#E),L
  1682.       ld (IX+#F),H
  1683.       LD L,(IX+9)
  1684.       ld H,(IX+#A)
  1685.        LD A,C
  1686.        CALL ROUNDm8 ;HL=k*A*8 (>=HL)
  1687.       LD (IX+#10),L
  1688.       ld (IX+#11),H
  1689. pPST    LD HL,SAMTAB
  1690.        LD A,(IX+#D)
  1691.        LD (HL),A
  1692.        INC HL
  1693.        LD DE,0
  1694.        LD C,(IX+3)
  1695. YMTLP   PUSH DE
  1696.        LD B,(IX+2)
  1697. XMTLP   PUSH BC
  1698.        PUSH DE
  1699.        LD (HL),E
  1700.        INC HL
  1701.        LD (HL),D
  1702.        INC HL
  1703.       EX DE,HL
  1704.       LD HL,VAR+#5A
  1705.        LD A,(IX+4)
  1706.       ADD A,A
  1707.       ADD A,L
  1708.       LD L,A
  1709.        LDI
  1710.        LDI
  1711.        LD A,(IX+5)
  1712.       ADD A,A
  1713.       ADD A,0xff&(VAR+#6A)
  1714.       LD L,A
  1715.        LDI
  1716.        LDI
  1717.        LD A,(IX+6)
  1718.       ADD A,A
  1719.       ADD A,0xff&(VAR+#7A)
  1720.       LD L,A
  1721.        LDI
  1722.        LDI
  1723.        LD A,(MAXH)
  1724.        LD B,(IX+2)
  1725.        CALL DIV8
  1726.       SUB 2
  1727.        LD (DE),A
  1728.        INC DE
  1729.        LD A,(MAXV)
  1730.        LD B,(IX+3)
  1731.        CALL DIV8
  1732.        DEC A
  1733.        LD (DE),A
  1734.        INC DE
  1735.       POP HL
  1736.        LD BC,8
  1737.        ADD HL,BC
  1738.       EX DE,HL
  1739.       POP BC
  1740.        DJNZ XMTLP
  1741.       POP DE
  1742.       PUSH HL
  1743.        LD HL,(BLSZ)
  1744.        ADD HL,DE
  1745.       EX DE,HL
  1746.       POP HL
  1747.        DEC C
  1748.        JR NZ,YMTLP
  1749.        LD (pPST+1),HL
  1750.       EX DE,HL
  1751.        POP HL
  1752.        INC HL
  1753.        inc HL
  1754.        POP BC
  1755.       DEC B
  1756.       JP NZ,RCLP1
  1757.       EX DE,HL
  1758.       LD (HL),B
  1759.        RET
  1760. ;         Y CB CR
  1761. SPGTB
  1762.        DB 1,2,5
  1763. ;once
  1764. setsamplescalers
  1765.        LD A,(VAR+#BE)
  1766.        OR A
  1767.        CALL NZ,ERROR
  1768.        LD A,(VAR+#E0)
  1769.        LD B,A
  1770.        LD HL,VAR+#E2
  1771.        LD IY,JF44+1 ;рфЁхё ЄрсышЎ√ шч 4 ЇєэъЎшщ
  1772. uPFLP
  1773.        PUSH HL
  1774.        CALL GETIXHL
  1775.       LD HL,(MAXH)
  1776.       LD A,(MAXV)
  1777.       LD E,A
  1778.       LD H,(IX+2)
  1779.       LD D,(IX+3)
  1780.        LD A,H
  1781.        CP L
  1782.        JR NZ,uPF1
  1783.        LD A,D
  1784.        CP E
  1785.       JR NZ,uPF1
  1786.       LD HL,M1696A ;схч єтхышўхэш 
  1787.       JR uPFOK
  1788. uPF1    LD A,H
  1789.        ADD A,A
  1790.        CP L
  1791.        JR NZ,uPF2
  1792.        LD A,D
  1793.        CP E
  1794.       JR NZ,uPF2
  1795.       LD HL,M1675A ;ё єтхышўхэшхь т 2 Ёрчр яю X?
  1796.       JR uPFOK
  1797. uPF2    LD A,H
  1798.        CP L
  1799.        JR NZ,uPF3
  1800.        LD A,D
  1801.        ADD A,A
  1802.        CP E
  1803.       JR NZ,uPF3
  1804.       LD HL,ERROR ;M16810
  1805.       JR uPFOK
  1806. uPF3    LD A,L
  1807.       SUB H
  1808.       CALL C,ERROR
  1809.       JR NZ,$-4
  1810.        LD A,E
  1811.       SUB D
  1812.       CALL C,ERROR
  1813.       JR NZ,$-4
  1814.        LD HL,M166AA ;ё єтхышўхэшхь т 2 Ёрчр
  1815.       ;LD A,(cOLPOI) ;0=B/W Ёхцшь яюърчр
  1816.       ;OR A
  1817.       ;JR NZ,$+5
  1818.       ;LD HL,EMPTY
  1819. uPFOK   LD (IY),L
  1820.        LD (IY+1),H ;ъырф╕ь рфЁхё ЇєэъЎшш т ЄрсышЎє шч 4 ЇєэъЎшщ
  1821.        LD DE,3
  1822.        ADD IY,DE
  1823.        POP HL
  1824.        INC HL
  1825.        inc HL
  1826.        DJNZ uPFLP
  1827.        RET
  1828. ;once
  1829. maketrees;M18E08
  1830.       LD A,128
  1831.       LD (BITER),A
  1832.       LD A,(VAR+#E0)
  1833.       LD B,A
  1834.        LD HL,VAR+#E2
  1835.        LD DE,VAR+#110
  1836. hUFLP   PUSH BC
  1837.        push HL
  1838.        push DE
  1839.        CALL GETIXHL
  1840.        LD A,(IX+5)
  1841.        LD HL,VAR+#6A
  1842.       CALL maketree;m18950
  1843.       LD A,(PRMODE)
  1844.       CP #C2
  1845.        LD A,(IX+6)
  1846.        LD HL,VAR+#7A
  1847.       CALL NZ,maketree;m18950
  1848.        POP DE
  1849.        XOR A
  1850.        LD (DE),A
  1851.        INC DE
  1852.        POP HL
  1853.        INC HL
  1854.        inc HL
  1855.        POP BC
  1856.        DJNZ hUFLP
  1857.        ;LD (VAR+#122),A ;TODO чрўхь?
  1858.        LD A,(VAR+#C2)
  1859.        LD (VAR+#120),A
  1860.        RET
  1861.  
  1862. ;яюёЄЁюхэшх фхЁхтр
  1863. ;twice
  1864. maketree;m18950
  1865. ;_thuffs - тЁхьхээ√щ сєЇхЁ, яюёых ¤Єющ яЁюЎхфєЁ√ эх эєцхэ
  1866. ;фхЁхтю ёючфр╕Єё  т Ёрщюэх FREE яю єърчрЄхы■ т [[hl+a*2]]
  1867.       ADD A,A
  1868.       LD E,A
  1869.       LD D,0
  1870.       ADD HL,DE
  1871.       LD E,(HL)
  1872.       INC HL
  1873.       LD D,(HL)
  1874.       LD A,D
  1875.       OR E
  1876.       CALL Z,ERROR
  1877.        PUSH IX
  1878.        EX DE,HL
  1879.        LD (pHFT),HL
  1880.        LD DE,_thuffs+#0207
  1881.         push de
  1882.        LD A,1
  1883. l3      LD B,(HL)
  1884.        INC HL
  1885.        INC B
  1886.        LD (DE),A
  1887.        INC DE
  1888.        DJNZ $-2
  1889.        DEC DE
  1890.        INC A
  1891.        CP 17
  1892.        JR NZ,l3
  1893.       XOR A
  1894.       LD (DE),A
  1895.         ;jr $
  1896.         pop ix ;LD IX,_thuffs+#0207
  1897.       LD HL,_thuffs+#0004
  1898.       LD D,A
  1899.       ld E,A ;de=0
  1900.        LD C,(IX)
  1901. ;ўЄю-Єю їшЄЁюх
  1902. l5      LD A,(IX)
  1903.        CP C
  1904.        JR NZ,l4
  1905.        INC IX
  1906.        LD (HL),D
  1907.        INC HL
  1908.        LD (HL),E
  1909.        INC HL
  1910.        INC DE
  1911.        JR l5
  1912. l4      SLA E
  1913.        RL D
  1914.        INC C
  1915.        LD A,(IX)
  1916.        OR A
  1917.        JR NZ,l5
  1918. pHFT=$+2
  1919.        LD IY,0
  1920.        PUSH IY
  1921.        LD DE,#43C
  1922.        ADD IY,DE
  1923.       LD H,A
  1924.       ld L,A
  1925.       LD DE,2+#480
  1926.        EXX
  1927.        POP HL
  1928.        EXX
  1929.        LD B,16
  1930. L8      PUSH BC
  1931.        EXX
  1932.        LD A,(HL)
  1933.       INC HL
  1934.        EXX
  1935.       OR A
  1936.        JR Z,L7
  1937.        LD IX,(pHFT)
  1938.       ;LD BC,#480
  1939.       ;ADD IX,BC
  1940.        ADD IX,DE
  1941.        LD (IX),H
  1942.        LD (IX+1),L
  1943.       PUSH HL
  1944.        LD IX,(pHFT)
  1945.        ADD IX,DE
  1946.        ADD HL,HL
  1947.        LD BC,_thuffs+#0004
  1948.        ADD HL,BC
  1949.        LD B,(HL)
  1950.        INC HL
  1951.        LD C,(HL)
  1952.       LD (IX+#416-#480),B
  1953.       LD (IX+#417-#480),C
  1954.       POP HL
  1955.        LD C,A
  1956.        LD B,0
  1957.        ADD HL,BC
  1958.       PUSH HL
  1959.        ADD HL,HL
  1960.        LD BC,_thuffs+#0002
  1961.        ADD HL,BC
  1962.        LD B,(HL)
  1963.        INC HL
  1964.        LD C,(HL)
  1965.       POP HL
  1966.        JR $+5
  1967. L7      LD BC,-1
  1968.        LD (IY),B
  1969.        LD (IY+1),C
  1970.        INC IY
  1971.        inc IY
  1972.        INC DE
  1973.        inc DE
  1974.        POP BC
  1975.        DJNZ L8
  1976.        LD HL,(pHFT)
  1977.        LD DE,#47C
  1978.        ADD HL,DE
  1979.       LD (HL),B
  1980.        INC HL
  1981.        LD (HL),#0F
  1982.        INC HL
  1983.       DEC B
  1984.       LD (HL),B
  1985.        INC HL
  1986.       LD (HL),B
  1987. ;(+482)=(+482)-(+418)+A+16
  1988.       LD HL,(pHFT)
  1989.       LD BC,16
  1990.       ADD HL,BC
  1991.       EX DE,HL
  1992.       LD IX,#482-16
  1993.       ADD IX,DE
  1994.       LD A,C
  1995. REHUF0
  1996.       LD H,(IX)
  1997.       LD L,(IX+1)
  1998.       LD B,(IX+#418-#482)
  1999.       LD C,(IX+#419-#482)
  2000.       OR A
  2001.       SBC HL,BC
  2002.       ADD HL,DE
  2003.       LD (IX),H
  2004.       LD (IX+1),L
  2005.       INC IX
  2006.       inc IX
  2007.       DEC A
  2008.       JR NZ,REHUF0
  2009.        POP IX
  2010.        RET          
  2011.  
  2012. FBMARK
  2013.        ;CALL RDBYTE ;єцх яЁюўшЄрыш т browser
  2014.        ;INC A
  2015.        ;CALL NZ,ERROR2
  2016.        CALL RDBYTE
  2017.        CP #D8
  2018.        CALL NZ,ERROR2
  2019.        LD IX,VARS+#8A
  2020.        LD B,#10
  2021.       LD HL,1
  2022. ARTLP  LD (IX),H
  2023.       LD (IX+#10),L
  2024.        LD (IX+#20),5
  2025.        INC IX
  2026.        DJNZ ARTLP
  2027.        LD (VARS+#50),HL
  2028.        LD (VARS+#52),HL
  2029.        DEC L
  2030.        LD (VARS+#C2),HL
  2031.       LD A,H
  2032.        LD (VARS+#4E),A
  2033.        LD (VARS+#BE),A
  2034.        CALL PRCMARK1
  2035.       LD (PRMODE),A ;чэрўхэш  #c2, #c3, ъръшх х∙╕?
  2036.       CP #C3
  2037.        CALL NC,ERROR4
  2038.        CALL jpgreadsizes
  2039. MRKP3
  2040.        LD A,(CNUM)
  2041.       CP 1
  2042.        JR Z,MRKPOK
  2043.       CP 3
  2044.        JR NZ,mRKPC4
  2045.        LD A,(VARS+#4A)
  2046.        OR A
  2047.        RET NZ
  2048.        LD IX,(VARS+#56)
  2049.        LD A,1
  2050.        CP (IX)
  2051.        CALL NZ,ERROR
  2052.        INC A
  2053.        CP (IX+#12)
  2054.       JR NZ,mRKP4
  2055.        INC A
  2056.        CP (IX+#24)
  2057.        JR Z,MRKPOK
  2058. mRKP4   LD A,4
  2059.        CP (IX+#12)
  2060.        CALL NZ,ERROR
  2061.        INC A
  2062.        CP (IX+#24)
  2063.        CALL NZ,ERROR
  2064.        DEC A
  2065.        JR MRKPOK
  2066. mRKPC4  CP 4
  2067.        CALL NZ,ERROR
  2068.        INC A
  2069. MRKPOK  LD (VARS+#4A),A
  2070.        RET
  2071. ;twice
  2072. PRCMARK1
  2073.        CALL PRCMARK
  2074. pMRK    LD A,0
  2075.        RET
  2076.  
  2077. MPHT    CALL P_HTAB
  2078. PRCMARK
  2079.        ;jr $
  2080.       CALL RDBYTE
  2081.       INC A
  2082.       JR NZ,$-4
  2083.       CALL RDBYTE
  2084.        LD (pMRK+1),A
  2085.        SUB #C0
  2086.       JP C,ERROR4
  2087.        RET Z
  2088.        SUB 4
  2089.       RET C
  2090.        JR Z,MPHT
  2091.        SUB 8
  2092.       RET C
  2093.        JP Z,ERROR ;MPAT
  2094.        SUB 3
  2095.       RET C
  2096.        RET Z
  2097.        SUB 9
  2098.        JP C,ERROR4
  2099.        SUB 3
  2100.       RET C
  2101.        JR Z,MPQT
  2102.        SUB 2
  2103.        JR Z,M141FE
  2104.        SUB 3
  2105.        JR Z,MPAPP
  2106.        LD A,(pMRK+1)
  2107.        CALL RDWORDHSBLSBtohl
  2108.        DEC HL
  2109.        dec HL
  2110. SKPM    CALL RDBYTE
  2111.        DEC HL
  2112.        LD A,H
  2113.        OR L
  2114.        JR NZ,SKPM
  2115.        JR PRCMARK
  2116.  
  2117. MPQT    CALL P_QTAB
  2118.        JR PRCMARK
  2119.  
  2120. M141FE
  2121.        CALL RDWORDHSBLSBtohl
  2122.       LD A,L
  2123.       SUB 4
  2124.       OR H
  2125.        CALL NZ,ERROR
  2126.        CALL RDWORDHSBLSBtohl
  2127.        LD (VAR+#C2),HL
  2128.        JR PRCMARK
  2129.  
  2130. MPAPP   CALL P_APP0
  2131.        JR PRCMARK
  2132.  
  2133. ;once
  2134. P_APP0
  2135.        CALL RDWORDHSBLSBtohl
  2136.       LD DE,-16
  2137.       ADD HL,DE
  2138.        LD (pAPPR+1),HL
  2139.        CALL RDBYTE
  2140.        CP "J"
  2141.       JR NZ,ERR2_
  2142.        CALL RDBYTE
  2143.        CP "F"
  2144.       JR NZ,ERR2_
  2145.        CALL RDBYTE
  2146.        CP "I"
  2147.       JR NZ,ERR2_
  2148.        CALL RDBYTE
  2149.        CP "F"
  2150. ERR2_  JP NZ,ERROR2
  2151.  
  2152.        CALL RDBYTE
  2153.        OR A
  2154.        CALL NZ,ERROR
  2155.        CALL RDWORDHSBLSBtohl
  2156.        CALL RDBYTE
  2157.        LD (VARS+#4E),A
  2158.        CALL RDWORDHSBLSBtohl
  2159.        LD (VARS+#50),HL
  2160.        CALL RDWORDHSBLSBtohl
  2161.        LD (VARS+#52),HL
  2162.        CALL RDWORDHSBLSBtohl
  2163. pAPPR   LD BC,0
  2164. APPSL   LD A,B
  2165.        OR C
  2166.        RET Z
  2167.        CALL RDBYTE
  2168.        DEC BC
  2169.        JR APPSL
  2170.        
  2171. ;once
  2172. P_QTAB
  2173.        CALL RDWORDHSBLSBtohl
  2174.        DEC HL
  2175.        dec HL ;len
  2176. NQTB   PUSH HL
  2177.        rdbyte
  2178.        LD B,A
  2179.        RRCA
  2180.        RRCA
  2181.        RRCA
  2182.        RRCA
  2183.        AND #0F
  2184.       LD DE,#41
  2185.       JR Z,$+4
  2186.       LD E,#81
  2187.       PUSH DE
  2188.       LD C,A
  2189.        LD A,B
  2190.        AND #0F
  2191.        CP 4
  2192.        CALL NC,ERROR
  2193.       ADD A,A
  2194.       LD HL,VARS+#5B
  2195.       ADD A,L
  2196.       LD L,A
  2197.        LD D,(HL)
  2198.        DEC HL
  2199.        LD E,(HL)
  2200.        LD A,D
  2201.        OR E
  2202.        JR NZ,QTP
  2203.       PUSH HL
  2204.        LD DE,#80
  2205.        CALL ALLDNP ;эх яюЁЄшЄ bc! hl=єърчрЄхы№ эр т√фхыхээє■ ярь Є№
  2206.       EX DE,HL
  2207.       POP HL
  2208.       LD (HL),E
  2209.       INC HL
  2210.       LD (HL),D
  2211. QTP     EX DE,HL
  2212.        LD B,#40
  2213. pQPRC   LD A,C
  2214.       OR A
  2215.       CALL NZ,RDBYTE
  2216.        LD (HL),A
  2217.        INC HL
  2218.        rdbyte
  2219.        LD (HL),A
  2220.        INC HL
  2221.        DJNZ pQPRC
  2222.       POP DE
  2223.       POP HL
  2224.       OR A
  2225.       SBC HL,DE
  2226.       RET Z
  2227.       RET C
  2228.        JR NQTB
  2229.        
  2230. ;т√фхыхэшх фшэрьшўхёъющ ярь Єш
  2231. ;de=ЁрчьхЁ (Ёхры№эю юўш∙рхЄё  эр 1 срщЄ сюы№°х)
  2232. ;out: hl=єърчрЄхы№ эр т√фхыхээє■ ярь Є№
  2233. ALLDNP  
  2234.        if 1==0 ;эх ўшёЄшь
  2235.        CALL ALLDN
  2236.        LD E,0
  2237.        CALL SETPG
  2238.        PUSH HL
  2239.        push DE
  2240.        push BC
  2241.        LD E,L
  2242.        ld D,H
  2243.        INC DE
  2244. pCLR_=$+1
  2245.        LD BC,0
  2246.        LD (HL),0
  2247.        LDIR
  2248.        POP BC
  2249.        pop DE
  2250.        pop HL
  2251.        RET
  2252. ALLDN
  2253.        LD (pCLR_),DE
  2254.        endif
  2255.        
  2256.       LD HL,(MEMDN)
  2257.       EX DE,HL
  2258.        ADD HL,DE
  2259.        LD (MEMDN),HL
  2260.       EX DE,HL
  2261.        RET  
  2262.  
  2263. ;once
  2264. jpgreadsizes
  2265.        CALL RDWORDHSBLSBtohl
  2266.       PUSH HL ;pFSML
  2267.        CALL RDBYTE
  2268.        CP 8
  2269.        CALL NZ,ERROR
  2270.        LD (VARS+#48),A
  2271.        CALL RDWORDHSBLSBtohl
  2272.        call setpichgt
  2273.        CALL RDWORDHSBLSBtohl
  2274.        call setpicwid
  2275.  
  2276.        call reservefirstframeaddr
  2277.        call initframe ;юфшэ Ёрч эр ърЁЄшэъє яюёых setpicwid, setpichgt ;чрърч√трхЄ ярь Є№ яюф ъюэтхЁўхээ√щ ърфЁ
  2278.  
  2279.        CALL RDBYTE
  2280.        LD (CNUM),A
  2281.        LD B,A
  2282.        ADD A,A
  2283.        ADD A,B
  2284.        ADD A,8
  2285.       POP HL
  2286.        CP L
  2287.        CALL NZ,ERROR
  2288.        LD HL,(CNUM) ;16bit!!!
  2289.        ADD HL,HL
  2290.        LD E,L
  2291.        ld D,H
  2292.        ADD HL,HL
  2293.        ADD HL,HL
  2294.        ADD HL,HL
  2295.        ADD HL,DE
  2296.        EX DE,HL
  2297.        CALL ALLDNP ;hl=єърчрЄхы№ эр т√фхыхээє■ ярь Є№
  2298.        LD (VARS+#56),HL
  2299.       PUSH HL
  2300.       POP IX
  2301.       LD D,0
  2302.        LD A,(CNUM)
  2303.        LD B,A
  2304. sFLP    LD (IX+1),D
  2305.        CALL RDBYTE
  2306.        LD (IX),A
  2307.        CALL RDBYTE
  2308.       LD C,A
  2309.       RRCA
  2310.       RRCA
  2311.       RRCA
  2312.       RRCA
  2313.       AND #0F
  2314.       LD (IX+2),A
  2315.       LD A,C
  2316.       AND #0F
  2317.       LD (IX+3),A
  2318.        CALL RDBYTE
  2319.        LD (IX+4),A
  2320.        INC D
  2321.       PUSH BC
  2322.       LD BC,18
  2323.       ADD IX,BC
  2324.       POP BC
  2325.        DJNZ sFLP
  2326.        RET
  2327. ;once
  2328. LBMARK
  2329.        CALL PRCMARK1
  2330.       SUB #D9
  2331.       ;OR A
  2332.       RET Z
  2333.       DEC A
  2334.        CALL NZ,ERROR
  2335.        CALL STSCAN
  2336.        SCF
  2337.        RET
  2338.  
  2339. ;once
  2340. STSCAN
  2341.        LD IX,VARS+#E2
  2342.        CALL RDWORDHSBLSBtohl
  2343.        CALL RDBYTE
  2344.        LD (VARS+#E0),A
  2345.        LD B,A
  2346.       ADD A,A
  2347.       ADD A,3
  2348.       LD E,A
  2349.       XOR A
  2350.       LD D,A
  2351.       SBC HL,DE
  2352.       PUSH HL; pSKPSCN
  2353. sCCLP   PUSH BC
  2354.        LD HL,(VAR+#56)
  2355.        LD A,(CNUM)
  2356.        LD B,A
  2357.        CALL RDBYTE
  2358.        LD DE,18
  2359. sCCLP1  CP (HL)
  2360.        JR Z,sCCF1
  2361.        DEC B
  2362.        CALL Z,ERROR
  2363.        ADD HL,DE
  2364.        JR sCCLP1
  2365. sCCF1  LD (IX),L
  2366.       LD (IX+1),H
  2367.       LD E,5
  2368.        ADD HL,DE
  2369.        CALL RDBYTE
  2370.       LD B,A
  2371.       RRCA
  2372.       RRCA
  2373.       RRCA
  2374.       RRCA
  2375.       AND #0F
  2376.       LD (HL),A
  2377.       LD A,B
  2378.       INC HL
  2379.       AND #0F
  2380.       LD (HL),A
  2381.        INC IX
  2382.        inc IX
  2383.        POP BC
  2384.        DJNZ sCCLP
  2385.       POP BC
  2386. rdmany LD A,B
  2387.       OR C
  2388.       RET Z
  2389.       DEC BC
  2390.       rdbyte
  2391.       JR rdmany ;APPSL
  2392.      
  2393. ;once
  2394. P_HTAB
  2395.        CALL RDWORDHSBLSBtohl
  2396.        DEC HL
  2397.        dec HL
  2398. rDHNT  PUSH HL ;pHML
  2399.        LD DE,#4A2 ;яюф фхЁхтю?
  2400.        CALL ALLDNP ;hl=єърчрЄхы№ эр т√фхыхээє■ ярь Є№
  2401.        rdbyte
  2402.        LD IX,VARS+#6A
  2403.       CP #10
  2404.       JR C,$+6
  2405.        LD IX,VARS+#7A
  2406.       AND #0F
  2407.       ADD A,A
  2408.       LD E,A
  2409.       LD D,0
  2410.       ADD IX,DE
  2411.       LD (IX),L
  2412.       LD (IX+1),H
  2413.       PUSH HL
  2414.       POP IX
  2415.       LD H,D
  2416.       ld L,D
  2417.        LD B,#10
  2418. rDHHD   rdbyte
  2419.        LD (IX),A
  2420.        INC IX
  2421.       LD E,A
  2422.       ADD HL,DE
  2423.        DJNZ rDHHD
  2424.       LD A,H
  2425.       OR A
  2426.        CALL NZ,ERROR
  2427.       LD B,L
  2428. rDHTB   rdbyte
  2429.        LD (IX),A
  2430.        INC IX
  2431.       DJNZ rDHTB
  2432.       LD DE,17
  2433.       ADD HL,DE
  2434.       EX DE,HL
  2435.       POP HL
  2436.       ;OR A
  2437.       SBC HL,DE
  2438.        RET Z
  2439.        CALL M,ERROR
  2440.        JR rDHNT
  2441.  
  2442. ;5 times
  2443. ;/8 CALLS
  2444. DIVHL_DE
  2445.        LD BC,-1
  2446.        OR A
  2447. dIV11   SBC HL,DE
  2448.        INC BC
  2449.        JR NC,dIV11
  2450.        RET
  2451. ;once
  2452. ;/7 CALLS
  2453. QUAHL_DE
  2454. ;de = hl mod de
  2455.        OR A
  2456.        SBC HL,DE
  2457.        JR NC,$-2
  2458.        ADD HL,DE
  2459.        EX DE,HL
  2460.        RET
  2461.        
  2462. GETIXHL
  2463.       LD A,(HL)
  2464.       LD LX,A
  2465.       INC HL
  2466.       LD A,(HL)
  2467.       LD HX,A
  2468.        RET
  2469.  
  2470. ;twice
  2471. ;/12 CALLS
  2472. DIV8
  2473.        LD C,-1
  2474.       INC C
  2475.       SUB B
  2476.       JR NC,$-2
  2477.        LD A,C
  2478. EMPTY
  2479.        RET  
  2480.        
  2481. SETPG
  2482. ;e=0/1 чрфр■Є тЁєўэє■, 1/2/5 яю ЄрсышЎх (ЎтхЄют√х ёюёЄрты ■∙шх)
  2483. ;ёюїЁрэ хЄ af,bc,de,hl
  2484.        push af
  2485.        push bc
  2486.        push hl
  2487.        ld a,e
  2488.        
  2489.        ld hl,tpgs
  2490.        add a,l
  2491.        ld l,a
  2492.        adc a,h
  2493.        sub l
  2494.        ld h,a
  2495.        ld a,(hl)
  2496.        SETPG32KHIGH
  2497.        
  2498.        pop hl
  2499.        pop bc
  2500.        pop af
  2501.        ret
  2502.        
  2503. tpgs
  2504.        ds 6
  2505.        
  2506.        
  2507. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INIT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2508. ;once
  2509. YCCTAB
  2510.        ;LD A,0xce;100;(SATURP)
  2511.        ;ADD A,100
  2512.        ;LD DE,327
  2513.        ;CALL MULDE_A
  2514. ;HL=0..FFFF
  2515.      LD HL,#3fde;#8000
  2516.        LD (YCCHL),HL
  2517. ;CR tab (add to Y->R)
  2518.       LD IX,G716C+128
  2519.       LD HL,-#B3
  2520.       LD DE,1
  2521.        EXX
  2522.        LD DE,#66EA
  2523.       CALL XtBLP
  2524. ;CB tab (add to Y->G)
  2525.       LD IX,G7170+128
  2526.       LD HL,-#E2
  2527.      LD DE,1
  2528.        EXX
  2529.        LD DE,#C5A2
  2530.       CALL XtBLP
  2531. ;CR tab (add to Y->G)
  2532.       LD IX,G7174+128
  2533.       LD HL,#5B
  2534.       LD DE,-1
  2535.        EXX
  2536.        LD DE,0xffff&(-#B6D2)
  2537.       CALL XtBLP
  2538. ;CB tab (add to Y->B)
  2539.       LD IX,G7178+128
  2540.       LD HL,#2C
  2541.      LD DE,-1
  2542.        EXX
  2543.        LD DE,-#581A
  2544. XtBLP
  2545. ;HL'<HL>=a[0]
  2546. ;DE'DE=da=(a[255]-a[0])/255
  2547. ;*(SATURP+100)
  2548.        EXX
  2549.        LD A,E
  2550.        EXX
  2551.         LD E,D
  2552.         ld D,A
  2553. YCCHL=$+1
  2554.         LD BC,0
  2555.        PUSH HL
  2556.         CALL MUL16LONG ;DE*BC
  2557.       ADD HL,HL
  2558.        EX (SP),HL
  2559.         PUSH BC
  2560.         EXX
  2561.         POP BC
  2562.         EX DE,HL
  2563.         CALL MUL16LONG ;DE*BC
  2564.       ADD HL,HL
  2565.         EXX
  2566.        POP BC
  2567.         LD A,B
  2568.         ld D,C
  2569.        EXX
  2570.        LD E,A
  2571.         RLA
  2572.         SBC A,A
  2573.         LD D,A
  2574.        EXX
  2575. XtBLp
  2576.         EXX
  2577.         LD B,0
  2578. tBLP4  LD (IX-128),L
  2579.        INC IX
  2580.        LD (IX+127),H
  2581.         EXX
  2582.         ADD HL,DE
  2583.         EXX
  2584.         ADC HL,DE
  2585.         DJNZ tBLP4
  2586.         RET  
  2587.  
  2588. MUL16LONG
  2589. ;BC>0
  2590.         BIT 7,D
  2591.         JP Z,MUL1616
  2592.         XOR A
  2593.         SUB E
  2594.         LD E,A
  2595.         SBC A,A
  2596.         SUB D
  2597.         LD D,A
  2598.         CALL MUL1616
  2599.         XOR A
  2600.         SUB L
  2601.         LD L,A
  2602.         SBC A,A
  2603.         SUB H
  2604.         LD H,A
  2605.         RET
  2606.        
  2607. MUL1616
  2608.         LD HL,0
  2609. ;DE>0
  2610. ;FFFF=*2
  2611.         LD A,C
  2612.        DUP 8
  2613.         RRA
  2614.         JR NC,$+3
  2615.         ADD HL,DE
  2616.         RR H
  2617.         rr L
  2618.        EDUP
  2619.         LD A,B
  2620.        DUP 7
  2621.         RRA
  2622.         JR NC,$+3
  2623.         ADD HL,DE
  2624.         RR H
  2625.         rr L
  2626.        EDUP
  2627.         RRA
  2628.         RET NC
  2629.         ADD HL,DE
  2630.         RET
  2631.  
  2632. ;3 times
  2633. ;/7 CALLS
  2634. MULDE_A
  2635.         LD HL,0
  2636. mUL11   ADD HL,DE
  2637.         DEC A
  2638.         JR NZ,mUL11
  2639.         RET  
  2640.  
  2641. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2642.  
  2643. MEMDN   DW FREE ;єърчрЄхы№ эр фшэрьшўхёъє■ ярь Є№
  2644.         ;display "MEMDN=",MEMDN
  2645.  
  2646. JF44    
  2647.         JP 0
  2648. ;JF48    
  2649.         JP 0
  2650. ;JF4C    
  2651.         JP 0
  2652. ;JF50    
  2653.         JP 0
  2654.  
  2655. CNUM    DW 0 ;ўшёыю ёыю╕т? HSB=0!!!
  2656.  
  2657. picwid_inblocks   DW 0 ;°шЁшэр ърЁЄшэъш т яюыэюЎхээ√ї сыюърї
  2658. pichgt_inblocks   DW 0 ;т√ёюЄр ърЁЄшэъш т яюыэюЎхээ√ї сыюърї
  2659. MAXV    DB 0
  2660. MAXH    DB 0
  2661. BLSZ    DW 0
  2662. MAXH8   DW 0 ;°шЁшэр яюыэюЎхээюую сыюър ърЁЄшэъш ;яю шфхх 8 шыш 16
  2663. MAXV8   DW 0 ;т√ёюЄр яюыэюЎхээюую сыюър ърЁЄшэъш ;яю шфхх 8 шыш 16
  2664. LPNT    DW 0 ;єърчрЄхы№ эр уЁрЇшъє яюыэюЎхээюую сыюър (ЁрёЄ╕Є юЄ JPGPAGESTART(0xc000) т ёЄЁюъх сыюъют LSZX*MAXV8, яю юъюэўрэшш ёЄЁюъш сыюъют юя Є№ эрўшэрхЄё  ё JPGPAGESTART)
  2665. LSZX    DW 0 ;°шЁшэр ърЁЄшэъш ё юъЁєуыхэшхь ттхЁї фю яюыэюЎхээюую сыюър
  2666.  
  2667.         align 256
  2668. R4A0F
  2669.         DS 16,2
  2670.         DS 16,4
  2671.         DS 16,6
  2672.         DS 16,8
  2673.         DS 16,10
  2674.         DS 16,12
  2675.         DS 16,14
  2676.         DS 16,16
  2677.         DS 16,18
  2678.         DS 16,20
  2679.         DS 16,22
  2680.         DS 16,24
  2681.         DS 16,26
  2682.         DS 16,28
  2683.         DS 16,30
  2684.         DS 16,32
  2685.        DW 2
  2686.        
  2687. Qorder
  2688.         DW 2*#00,2*#01,2*#08,2*#10,2*#09,2*#02,2*#03,2*#0A
  2689.         DW 2*#11,2*#18,2*#20,2*#19,2*#12,2*#0B,2*#04,2*#05
  2690.         DW 2*#0C,2*#13,2*#1A,2*#21,2*#28,2*#30,2*#29,2*#22
  2691.         DW 2*#1B,2*#14,2*#0D,2*#06,2*#07,2*#0E,2*#15,2*#1C
  2692.         DW 2*#23,2*#2A,2*#31,2*#38,2*#39,2*#32,2*#2B,2*#24
  2693.         DW 2*#1D,2*#16,2*#0F,2*#17,2*#1E,2*#25,2*#2C,2*#33
  2694.         DW 2*#3A,2*#3B,2*#34,2*#2D,2*#26,2*#1F,2*#27,2*#2E
  2695.         DW 2*#35,2*#3C,2*#3D,2*#36,2*#2F,2*#37,2*#3E,2*#3F
  2696.  
  2697.  
  2698.