Subversion Repositories pentevo

Rev

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

  1.  
  2. ;LAST UPDATE: 04.06.2011 savelij
  3.  
  4. ;ОПИСАТЕЛЬ ОКНА (АДРЕС В IX)
  5. ;+00 X КООРДИНАТА
  6. ;+01 Y КООРДИНАТА
  7. ;+02 V ВЫСОТА
  8. ;+03 H ШИРИНА
  9. ;+04 C ЦВЕТ
  10. ;+05 C ЦВЕТ КУРСОРА
  11. ;+06 F ФЛАГОВЫЙ
  12. ;+07 N НОМЕР ПУНКТА В ОКНЕ
  13. ;  БИТ 7-0=БАЙТЫ 8-9 ТЕКУЩИЙ ПУНКТ МЕНЮ,
  14. ;        1=БАЙТЫ 8-9 АДРЕС ХРАНЕНИЯ
  15. ;+08 | ТЕКУЩИЙ
  16. ;+09 | ПУНКТ МЕНЮ
  17. ;+0A : КОЛИЧЕСТВО
  18. ;+0B : ПУНКТОВ МЕНЮ
  19. ;+0C | АДРЕС
  20. ;+0D | ТЕКСТА
  21. ;+0E : СПИСОК АДРЕСОВ
  22. ;+0F : ПОДПРОГРАММ
  23. ;+10 | АДРЕС СПИСКА АКТИВНЫХ
  24. ;+11 | ЗОН ДЛЯ МЫШИ
  25. ;+12 : АДРЕС СПИСКА
  26. ;+13 : ГОРЯЧИХ КЛАВИШ
  27.  
  28. ;ФОРМАТ ФЛАГОВОГО БАЙТА ОКНА
  29. ;IX+6
  30. ;7-0-НЕТ, 1-ЕСТЬ НИЖНИЙ ЗАГОЛОВОК
  31. ;6-0-С РАМКОЙ,1-БЕЗ РАМКИ
  32. ;5-0-НЕТ, 1-ЕСТЬ ВЕРХНИЙ ЗАГОЛОВОК
  33. ;4-0-НЕТ, 1-ЕСТЬ ТЕКСТ
  34. ;3
  35. ;2-
  36. ;1-
  37. ;0-
  38.  
  39. ;РАСКЛАДКА БАЙТ ВЫДЕЛЕНИЙ
  40. ;+0 ФЛАГОВЫЙ
  41. ;    7 ПРИ АКТИВНОСТИ УСТАНОВЛЕН
  42. ;    6 УСТАНОВЛЕН, НЕ ВЫДЕЛЯЕТСЯ
  43. ;    5 УСТАНОВЛЕН, ВЫЗОВ ВЕКТОРА
  44. ;    4
  45. ;    3 \
  46. ;    2  } ФОРМА КУРСОРА
  47. ;    1  } ПРИ ПОПАДАНИИ
  48. ;    0 /
  49. ;+1 X КООРДИНАТА
  50. ;+2 Y КООРДИНАТА
  51. ;+3 V ВЫСОТА
  52. ;+4 H ШИРИНА
  53. ;+5 K КОД КЛАВИШИ
  54.  
  55. WIN_TXT         LD IX,(REG_IXL)
  56.                 EXX
  57.                 LD A,0XFD
  58. WINTXT00        LD BC,WIN_P2
  59.                 LD (PAGE4READ),A
  60.                 OUT (C),A
  61.  
  62. WINDOW          EXX
  63.                 XOR A
  64.                 LD (PAGE4READ),A
  65.                 JR WINW0
  66.  
  67. WINW            LD IX,(REG_IXL)
  68.                 EXX
  69.                 LD A,0XFD
  70. WINW0           LD BC,WIN_P2
  71.                 LD (PAGE4READ),A
  72.                 OUT (C),A
  73.                 LD A,(IX+2)
  74.                 ADD A,A
  75.                 ADD A,A
  76.                 ADD A,A
  77.                 LD E,A
  78.                 EXX
  79.                 LD C,(IX+3)
  80.                 LD L,(IX+1)
  81.                 LD H,0
  82.                 ADD HL,HL
  83.                 ADD HL,HL
  84.                 ADD HL,HL
  85.                 ADD HL,HL
  86.                 EX DE,HL
  87.                 LD IY,BUFTSC
  88.                 ADD IY,DE
  89. WINW3           LD A,(IX+0)
  90.                 ADD A,(IY+0)
  91.                 LD E,A
  92.                 LD D,(IY+1)
  93.                 LD A,D
  94.                 AND 7
  95.                 JR NZ,WINW4
  96.                 LD B,C
  97.                 LD A,D
  98.                 RRCA
  99.                 RRCA
  100.                 RRCA
  101.                 AND 3
  102.                 ADD A,0X58
  103.                 LD H,A
  104.                 LD L,E
  105.                 LD A,(IX+4)
  106. WINW5           LD (HL),A
  107.                 INC L
  108.                 DJNZ WINW5
  109. WINW4           LD B,C
  110.                 XOR A
  111. WINW6           LD (DE),A
  112.                 INC E
  113.                 DJNZ WINW6
  114.                 INC IY
  115.                 INC IY
  116.                 EXX
  117.                 DEC E
  118.                 EXX
  119.                 JR NZ,WINW3
  120.                 BIT 7,(IX+6)
  121.                 JR Z,NIZ_RAMKA
  122.                 LD DE,0XFFF0
  123.                 ADD IY,DE
  124.                 LD A,(IX+0)
  125.                 ADD A,(IY+0)
  126.                 LD E,A
  127.                 LD A,(IY+1)
  128.                 RRCA
  129.                 RRCA
  130.                 RRCA
  131.                 AND 3
  132.                 ADD A,0X58
  133.                 LD D,A
  134.                 LD B,C
  135.                 LD L,(IX+4)
  136.                 LD A,L
  137.                 AND 7
  138.                 RLCA
  139.                 RLCA
  140.                 RLCA
  141.                 LD H,A
  142.                 LD A,L
  143.                 RRCA
  144.                 RRCA
  145.                 RRCA
  146.                 AND 7
  147.                 OR H
  148. WINWN1          LD (DE),A
  149.                 INC E
  150.                 DJNZ WINWN1
  151.                 LD DE,0X0E
  152.                 ADD IY,DE
  153.                 JR CENTR_RAMK
  154.  
  155. NIZ_RAMKA       BIT 6,(IX+6)
  156.                 JR NZ,WERH_COLOR
  157.                 DEC IY
  158.                 DEC IY
  159.                 LD L,(IX+0)
  160.                 LD A,(IY+0)
  161.                 ADD A,L
  162.                 LD E,A
  163.                 LD H,A
  164.                 LD D,(IY+1)
  165.                 LD B,C
  166.                 LD A,0XFF
  167. NR1             LD (DE),A
  168.                 INC E
  169.                 DJNZ NR1
  170.                 DEC E
  171.                 DEC D
  172.                 LD L,H
  173.                 LD H,D
  174.                 LD A,0X80
  175.                 LD B,7
  176. NR2             LD (HL),A
  177.                 RLCA
  178.                 LD (DE),A
  179.                 RRCA
  180.                 DEC H
  181.                 DEC D
  182.                 DJNZ NR2
  183. CENTR_RAMK      BIT 6,(IX+6)
  184.                 JR NZ,WERH_COLOR
  185.                 EXX
  186.                 LD A,(IX+2)
  187.                 SUB 2
  188.                 LD E,A
  189.                 EXX
  190. NR4             LD DE,0XFFF0
  191.                 ADD IY,DE
  192.                 LD L,(IX+0)
  193.                 LD A,(IY+0)
  194.                 ADD A,L
  195.                 LD E,A
  196.                 LD D,(IY+1)
  197.                 LD H,D
  198.                 ADD A,(IX+3)
  199.                 DEC A
  200.                 LD L,A
  201.                 LD A,0X80
  202.                 LD B,8
  203. NR3             LD (DE),A
  204.                 RLCA
  205.                 LD (HL),A
  206.                 RRCA
  207.                 DEC H
  208.                 DEC D
  209.                 DJNZ NR3
  210.                 EXX
  211.                 DEC E
  212.                 EXX
  213.                 JR NZ,NR4
  214. WERH_COLOR      BIT 5,(IX+6)
  215.                 JR Z,WERH_RAMK
  216.                 LD L,(IX+1)
  217.                 LD H,0
  218.                 ADD HL,HL
  219.                 ADD HL,HL
  220.                 ADD HL,HL
  221.                 ADD HL,HL
  222.                 EX DE,HL
  223.                 LD IY,BUFTSC
  224.                 ADD IY,DE
  225.                 LD A,(IX+0)
  226.                 ADD A,(IY+0)
  227.                 LD E,A
  228.                 LD A,(IY+1)
  229.                 RRCA
  230.                 RRCA
  231.                 RRCA
  232.                 AND 3
  233.                 ADD A,0X58
  234.                 LD D,A
  235.                 LD B,C
  236.                 LD L,(IX+4)
  237.                 LD A,L
  238.                 AND 7
  239.                 RLCA
  240.                 RLCA
  241.                 RLCA
  242.                 LD H,A
  243.                 LD A,L
  244.                 RRCA
  245.                 RRCA
  246.                 RRCA
  247.                 AND 7
  248.                 OR H
  249. WINWW1          LD (DE),A
  250.                 INC E
  251.                 DJNZ WINWW1
  252.                 JP RADUGA
  253.  
  254. WERH_RAMK       BIT 6,(IX+6)
  255.                 JR NZ,RADUGA
  256. WR4             LD DE,0XFFF0
  257.                 ADD IY,DE
  258.                 LD L,(IX+0)
  259.                 LD A,(IY+0)
  260.                 ADD A,L
  261.                 LD E,A
  262.                 LD D,(IY+1)
  263.                 LD H,D
  264.                 ADD A,(IX+3)
  265.                 DEC A
  266.                 LD L,A
  267.                 LD A,0X80
  268.                 LD B,7
  269. WR3             LD (DE),A
  270.                 RLCA
  271.                 LD (HL),A
  272.                 RRCA
  273.                 DEC H
  274.                 DEC D
  275.                 DJNZ WR3
  276.                 LD A,L
  277.                 SUB E
  278.                 LD B,A
  279.                 INC B
  280.                 LD A,0XFF
  281. WR5             LD (DE),A
  282.                 INC E
  283.                 DJNZ WR5
  284. RADUGA          BIT 5,(IX+6)
  285.                 JR Z,RASCH
  286.                 LD IY,BUFTSC
  287.                 LD L,(IX+1)
  288.                 LD H,0
  289.                 ADD HL,HL
  290.                 ADD HL,HL
  291.                 ADD HL,HL
  292.                 ADD HL,HL
  293.                 EX DE,HL
  294.                 ADD IY,DE
  295.                 LD L,(IY+0)
  296.                 LD A,(IY+1)
  297.                 LD D,A
  298.                 RRCA
  299.                 RRCA
  300.                 RRCA
  301.                 AND 3
  302.                 ADD A,0X58
  303.                 LD H,A
  304.                 LD A,(IX+0)
  305.                 ADD A,(IX+3)
  306.                 ADD A,L
  307.                 LD L,A
  308.                 LD E,A
  309.                 LD A,(IX+4)
  310.                 AND 0X47
  311.                 LD C,A
  312.                 AND 0X40
  313.                 LD B,A
  314.                 DEC L
  315.                 LD A,C
  316.                 ADD A,5*8
  317.                 LD (HL),A       ;5*8+7
  318.                 DEC L
  319.                 LD A,4*8+5
  320.                 OR B
  321.                 LD (HL),A       ;4*8+5
  322.                 DEC L
  323.                 LD A,6*8+4
  324.                 OR B
  325.                 LD (HL),A       ;6*8+4
  326.                 DEC L
  327.                 LD A,2*8+6
  328.                 OR B
  329.                 LD (HL),A       ;2*8+6
  330.                 DEC L
  331.                 LD A,C
  332.                 AND 7
  333.                 RLCA
  334.                 RLCA
  335.                 RLCA
  336.                 OR B
  337.                 ADD A,2
  338.                 LD (HL),A       ;7*8+2
  339.                 EX DE,HL
  340.                 DEC L
  341.                 LD B,8
  342.                 XOR A
  343.                 LD C,L
  344. RADUGA1         SCF
  345.                 RLA
  346.                 LD (HL),A
  347.                 DEC L
  348.                 LD (HL),A
  349.                 DEC L
  350.                 LD (HL),A
  351.                 DEC L
  352.                 LD (HL),A
  353.                 DEC L
  354.                 LD (HL),A
  355.                 LD L,C
  356.                 INC H
  357.                 DJNZ RADUGA1
  358. RASCH           LD H,(IX+0)
  359.                 LD L,(IX+1)
  360.                 ADD HL,HL
  361.                 ADD HL,HL
  362.                 ADD HL,HL
  363.                 INC H
  364.                 EXX
  365.                 XOR A
  366.                 OUT (C),A
  367.                 EXX
  368.                 LD A,H
  369.                 LD (XNEW),A
  370.                 LD (ADRSTR_Y),HL
  371.                 EXX
  372.                 LD A,(PAGE4READ)
  373.                 OUT (C),A
  374.                 EXX
  375.                 LD L,(IX+0X0C)
  376.                 LD H,(IX+0X0D)
  377.                 EXX
  378.                 XOR A
  379.                 OUT (C),A
  380.                 EXX
  381.                 BIT 4,(IX+6)
  382.                 CALL Z,NEXT
  383. WINW2           LD (PRESSEDKEY),HL
  384.                 RET
  385.  
  386. CLS             LD HL,0
  387.                 LD D,H
  388.                 LD E,L
  389.                 ADD HL,SP
  390.                 LD B,0X60
  391.                 LD SP,0X5800
  392. CLS1            REPT 0X20
  393.                 PUSH DE
  394.                 ENDM
  395.                 DJNZ CLS1
  396.                 LD SP,HL
  397. CLSSCR          LD HL,0
  398.                 LD D,A
  399.                 LD E,A
  400.                 ADD HL,SP
  401.                 LD SP,0X5B00
  402.                 LD B,12
  403. CLS2            REPT 0X20
  404.                 PUSH DE
  405.                 ENDM
  406.                 DJNZ CLS2
  407.                 LD SP,HL
  408.                 RRCA
  409.                 RRCA
  410.                 RRCA
  411.                 AND 7
  412.                 OUT (0XFE),A
  413.                 RET
  414.  
  415. ;ПЕЧАТЬ СИМВОЛА НА ТЕКСТМОДНОМ ЭКРАНЕ
  416. ;D-X E-Y
  417. PRTSYMTXTMODE   PUSH BC
  418.                 PUSH DE
  419.                 PUSH HL
  420.                 LD B,A
  421.                 LD HL,0X307
  422.                 LD A,D
  423.                 LD D,0
  424.                 ADD HL,DE
  425.                 ADD HL,HL
  426.                 ADD HL,HL
  427.                 ADD HL,HL
  428.                 ADD HL,HL
  429.                 ADD HL,HL
  430.                 ADD HL,HL
  431.                 RRA
  432.                 LD E,A
  433.                 RRA
  434.                 AND 0X80
  435.                 RRCA
  436.                 RRCA
  437.                 LD D,A
  438.                 ADD HL,DE
  439.                 LD (HL),B
  440.                 LD BC,0X7FFD
  441.                 LD A,0X1B
  442.                 OUT (C),A
  443.                 LD D,0X20
  444.                 LD A,D
  445.                 XOR H
  446.                 LD H,A
  447.                 AND D
  448.                 JR NZ,PRTSYMTXTMODE2
  449.                 INC L
  450. PRTSYMTXTMODE2  LD A,0
  451. COLOR_TXTMODE   EQU $-1
  452.                 INC A
  453.                 JR Z,PRTSYMTXTMODE1
  454.                 DEC A
  455.                 LD (HL),A
  456. PRTSYMTXTMODE1  LD A,0X1F
  457.                 OUT (C),A
  458.                 POP HL
  459.                 POP DE
  460.                 POP BC
  461.                 INC D
  462.                 RET
  463.  
  464. PRINT_MESSAGE   LD HL,(REG_L)
  465. NEXT            LD BC,WIN_P2
  466.                 LD A,(PAGE4READ);0XFD
  467.                 OUT (C),A
  468.                 LD A,(HL)
  469.                 INC HL
  470.                 AND A
  471.                 JR NZ,PRINT
  472.                 LD BC,WIN_P2
  473.                 XOR A
  474.                 OUT (C),A
  475.                 RET
  476.  
  477. PRINT           CP 0X20
  478.                 JR C,COD03
  479.                 EX AF,AF'
  480.                 XOR A
  481.                 OUT (C),A
  482.                 EX AF,AF'
  483.                 CALL PRINTA
  484.                 JR NEXT
  485.  
  486. COD03           CP 3
  487.                 JR NZ,COD9
  488.                 LD B,0                          ;ЦЕНТРОВКА СТРОКИ В ОКНЕ
  489.                 LD D,H
  490.                 LD E,L
  491. CEN2            LD A,(HL)
  492.                 CP 0X20
  493.                 JR C,CEN3
  494.                 LD A,6
  495.                 ADD A,B
  496.                 LD B,A
  497.                 INC HL
  498.                 JR CEN2
  499.  
  500. CEN3            LD A,(IX+3)
  501.                 ADD A,A
  502.                 ADD A,A
  503.                 ADD A,A
  504.                 SUB B
  505.                 SRL A
  506.                 DEC A
  507.                 LD H,A
  508.                 LD BC,WIN_P2
  509.                 XOR A
  510.                 OUT (C),A
  511.                 LD A,(XNEW)
  512.                 ADD A,H
  513.                 LD (ADRSTR_X),A
  514.                 LD H,D
  515.                 LD L,E
  516.                 JP NEXT
  517.  
  518. COD9            CP 9
  519.                 JR NZ,COD13
  520.                 LD D,(HL)                       ;ТАБУЛЯЦИЯ НА N ПОЗИЦИЙ
  521.                 INC HL
  522.                 LD BC,WIN_P2
  523.                 XOR A
  524.                 OUT (C),A
  525.                 LD A,D
  526.                 ADD A,A
  527.                 ADD A,D
  528.                 ADD A,A
  529.                 LD D,A
  530.                 LD A,(ADRSTR_X)
  531.                 ADD A,D
  532.                 LD (ADRSTR_X),A
  533.                 JR NEXT
  534.  
  535. COD13           CP 0X0D
  536.                 JR NZ,COD14
  537.                 LD BC,WIN_P2
  538.                 XOR A
  539.                 OUT (C),A
  540.                 LD A,(XNEW)                     ;ПЕРЕВОД СТРОКИ
  541.                 LD (ADRSTR_X),A
  542.                 LD A,(ADRSTR_Y)
  543.                 ADD A,8
  544.                 LD (ADRSTR_Y),A
  545.                 JP NEXT
  546.  
  547. COD14           CP 0X14
  548.                 JR NZ,COD16
  549.                 LD D,(HL)                       ;ВКЛ/ВЫКЛ ИНВЕРСИИ ПЕЧАТИ
  550.                 INC HL
  551.                 LD BC,WIN_P2
  552.                 XOR A
  553.                 OUT (C),A
  554.                 LD A,D
  555.                 AND A
  556.                 JR Z,$+4
  557.                 LD A,0XFC
  558.                 LD (NO_INW),A
  559.                 JP NEXT
  560.  
  561. COD16           CP 0X16
  562.                 JR NZ,COD17
  563.                 LD E,(HL)                       ;ПЕЧАТЬ В УКАЗАННОЙ ПОЗИЦИИ
  564.                 INC HL
  565.                 LD D,(HL)
  566.                 INC HL
  567.                 LD BC,WIN_P2
  568.                 XOR A
  569.                 OUT (C),A
  570.                 LD (ADRSTR_Y),DE
  571.                 JP NEXT
  572.  
  573. COD17           CP 0X17
  574.                 JR NZ,COD8
  575.                 LD D,(HL)
  576.                 INC HL
  577.                 LD BC,WIN_P2
  578.                 XOR A
  579.                 OUT (C),A
  580.                 LD A,D
  581.                 LD (COLOR4SYM),A
  582.                 JP NEXT
  583.  
  584. COD8            CP 8
  585.                 JR NZ,COD1
  586.                 LD A,(ADRSTR_X)
  587.                 ADD A,(HL)
  588.                 INC HL
  589.                 LD D,A
  590.                 LD BC,WIN_P2
  591.                 XOR A
  592.                 OUT (C),A
  593.                 LD A,D
  594.                 LD (ADRSTR_X),A
  595.                 JP NEXT
  596.  
  597. ;КООРДИНАТА ПЕЧАТИ В ИСХОДНУЮ ПОЗИЦИЮ ОКНА
  598. COD1            CP 1
  599.                 RET NZ
  600.                 LD D,(IX+0)
  601.                 LD E,(IX+1)
  602.                 EX DE,HL
  603.                 ADD HL,HL
  604.                 ADD HL,HL
  605.                 ADD HL,HL
  606.                 INC H
  607.                 LD BC,WIN_P2
  608.                 XOR A
  609.                 OUT (C),A
  610.                 LD (ADRSTR_Y),HL
  611.                 JP NEXT
  612.  
  613. PRINT_A         LD A,(REG_A)
  614. ;ПЕЧАТЬ СИМВОЛА В "A"
  615. PRINTA          LD BC,WIN_P2
  616.                 LD D,A
  617.                 XOR A
  618.                 OUT (C),A
  619.                 PUSH HL
  620.                 LD L,D
  621.                 LD H,A
  622.                 ADD HL,HL
  623.                 ADD HL,HL
  624.                 ADD HL,HL
  625.                 LD DE,CHARS
  626.                 ADD HL,DE
  627.                 EXX
  628.                 LD HL,(ADRSTR_Y)                ;H=X L=Y
  629.                 LD D,A
  630.                 LD B,A
  631.                 LD A,H
  632.                 AND 7
  633.                 LD C,A
  634.                 LD IY,SDVIG
  635.                 ADD IY,BC
  636.                 LD A,H
  637.                 AND 0XF8
  638.                 LD B,A
  639.                 EXX
  640.                 LD A,(NO_INW)
  641.                 LD E,A
  642.                 EXX
  643.                 LD A,L
  644.                 AND 0XF8
  645.                 LD L,A
  646.                 LD A,6
  647.                 ADD A,H
  648.                 LD H,A
  649.                 LD (ADRSTR_Y),HL
  650.                 LD E,L
  651.                 LD A,B
  652.                 LD HL,BUFTSC
  653.                 LD B,D
  654.                 ADD HL,DE
  655.                 ADD HL,DE
  656.                 RRCA
  657.                 RRCA
  658.                 RRCA
  659.                 ADD A,(HL)
  660.                 INC HL
  661.                 LD E,A
  662.                 LD D,(HL)
  663.                 LD HL,BUFMSK
  664.                 ADD HL,BC
  665.                 ADD HL,BC
  666.                 LD B,(HL)
  667.                 INC HL
  668.                 LD C,(HL)
  669.                 LD A,8
  670. SLEDU           EX AF,AF'
  671.                 EXX
  672.                 LD A,E
  673.                 XOR (HL)
  674.                 INC HL
  675.                 EXX
  676.                 LD L,A
  677.                 LD H,0
  678.                 JP (IY)
  679.  
  680. SDVIG           REPT 8
  681.                 ADD HL,HL
  682.                 ENDM
  683.                 LD A,(DE)
  684.                 AND B
  685.                 OR H
  686.                 LD (DE),A
  687.                 INC E
  688.                 LD A,(DE)
  689.                 AND C
  690.                 OR L
  691.                 LD (DE),A
  692.                 DEC E
  693.                 INC D
  694.                 EX AF,AF'
  695.                 DEC A
  696.                 JP NZ,SLEDU
  697.                 EX DE,HL
  698.                 LD A,(COLOR4SYM)
  699.                 LD E,A
  700.                 INC A
  701.                 JR Z,PRINTA1
  702.                 DEC H
  703.                 LD A,H
  704.                 RRCA
  705.                 RRCA
  706.                 RRCA
  707.                 AND 3
  708.                 OR 0X58
  709.                 LD H,A
  710.                 LD (HL),E
  711. PRINTA1         EXX
  712.                 POP HL
  713.                 RET
  714.  
  715. BUFMSK          DB %00000011,%11111111
  716.                 DB %10000001,%11111111
  717.                 DB %11000000,%11111111
  718.                 DB %11100000,%01111111
  719.                 DB %11110000,%00111111
  720.                 DB %11111000,%00011111
  721.                 DB %11111100,%00001111
  722.                 DB %11111110,%00000111
  723.  
  724. ;РИСОВАЛКА ЦВЕТНОЙ ПОЛОСКИ В МЕНЮ
  725. COLOR_CURSOR    LD DE,(COL_CURSOR)
  726.                 LD HL,COLBUF
  727.                 LD C,(IX+3)
  728. ;               BIT 2,(IY+55)           ;ФАЙЛОВ БОЛЬШЕ ВЫСОТЫ ОКНА?
  729. ;               JR Z,COLCURS1
  730. ;               DEC C                   ;ЦВЕТНАЯ ПОЛОСКА НА 1 КОРОЧЕ
  731. COLCURS1        LD B,0
  732.                 LDIR
  733. SET_ADR_ATR     LD A,(IX+7)
  734.                 BIT 7,A
  735.                 JR Z,COLCURS3
  736.                 LD L,(IX+8)
  737.                 LD H,(IX+9)
  738.                 LD A,(HL)
  739. COLCURS3        LD B,A
  740.                 LD H,(IX)
  741.                 LD L,(IX+1)
  742.                 ADD A,L
  743.                 LD L,A
  744.                 INC L
  745.                 CALL ADRDIS
  746.                 EX DE,HL
  747.                 LD (COL_CURSOR),HL      ;ПОЛОЖИЛИ АДРЕС ДЛЯ ВОССТАНОВЛЕНИЯ ЦВЕТА
  748.                 LD DE,COLBUF
  749.                 LD B,(IX+3)
  750. ;               BIT 2,(IY+55)           ;ФАЙЛОВ БОЛЬШЕ ВЫСОТЫ ОКНА?
  751. ;               JR Z,COLCURS2
  752. ;               DEC B                   ;ЦВЕТНАЯ ПОЛОСКА НА 1 КОРОЧЕ
  753. COLCURS2        LD C,(IX+5)
  754.                 LD A,(HL)
  755.                 LD (DE),A
  756.                 LD (HL),C
  757.                 INC L
  758.                 INC E
  759.                 DJNZ $-5
  760.                 RET
  761.  
  762. ;H-X, L-Y
  763. ADRDIS          LD C,A
  764.                 LD A,L
  765.                 AND 0X18
  766.                 OR 0X40
  767.                 EX AF,AF'
  768.                 LD A,L
  769.                 AND 7
  770.                 RRCA
  771.                 RRCA
  772.                 RRCA
  773.                 ADD A,H
  774.                 LD L,A
  775.                 EX AF,AF'
  776.                 LD H,A
  777.                 LD E,L
  778. ADRATR          LD A,H
  779.                 RRCA
  780.                 RRCA
  781.                 RRCA
  782.                 AND 3
  783.                 OR 0X58
  784.                 LD D,A
  785.                 LD A,C
  786.                 RET
  787.  
  788. INC_H           INC H
  789.                 LD A,H
  790.                 AND 7
  791.                 RET NZ
  792.                 LD A,L
  793.                 ADD A,0X20
  794.                 LD L,A
  795.                 RET C
  796. UMEHL1          LD A,H
  797.                 SUB 8
  798.                 LD H,A
  799.                 RET    
  800.  
  801. CURSOR_UP       BIT 7,(IX+7)
  802.                 JR Z,CURSOR_UP2
  803.                 LD L,(IX+8)
  804.                 LD H,(IX+9)
  805.                 INC HL
  806.                 LD C,(HL)
  807.                 INC HL
  808.                 LD B,(HL)
  809.                 JR CURSOR_UP3
  810.  
  811. CURSOR_UP2      LD C,(IX+8)
  812.                 LD B,(IX+9)
  813. CURSOR_UP3      LD A,B
  814.                 OR C
  815.                 RET Z
  816.                 DEC BC
  817.                 BIT 7,(IX+7)
  818.                 JR Z,CURSOR_UP4
  819.                 LD (HL),B
  820.                 DEC HL
  821.                 LD (HL),C
  822.                 DEC HL
  823.                 LD A,(HL)
  824.                 AND A
  825.                 JR Z,CURSOR_UP1
  826.                 DEC (HL)
  827.                 RET
  828.  
  829. CURSOR_UP4      LD (IX+0X0A),C
  830.                 LD (IX+0X0B),B
  831.                 LD A,(IX+7)
  832.                 AND A
  833.                 JR Z,CURSOR_UP1
  834.                 DEC (IX+7)
  835.                 RET
  836.  
  837. CURSOR_UP1      CALL REST2X2
  838.                 CALL SCRDN
  839.                 LD E,(IX+1)
  840.                 INC E
  841. DOWN1           LD D,(IX+0)
  842.                 INC D
  843.                 INC D
  844.                 LD HL,FLAGS
  845.                 BIT 3,(HL)
  846.                 LD L,(IX+0X0A)
  847.                 LD H,(IX+0X0B)
  848.                 LD BC,ADR_CAT
  849.                 JR NZ,DOWN3
  850.                 ADD HL,HL
  851.                 ADD HL,HL
  852.                 ADD HL,HL
  853.                 ADD HL,HL
  854.                 ADD HL,BC
  855. DOWN4           LD B,8
  856. DOWN2           LD A,(HL)
  857.                 INC HL
  858.                 CALL PRT_SYM
  859.                 DJNZ DOWN2
  860.                 JP DRAW_MOUSE
  861.  
  862. DOWN3           ADD HL,HL
  863.                 ADD HL,BC
  864.                 LD C,(HL)
  865.                 INC HL
  866.                 LD B,(HL)
  867.                 PUSH DE
  868.                 LD A,6
  869. ;               CALL COM_FAT
  870. ;               DB Positf
  871. ;               CALL COM_FAT
  872. ;               DB Getfzap
  873.                 LD BC,0X0B
  874.                 ADD HL,BC
  875.                 LD A,(HL)
  876.                 SBC HL,BC
  877.                 AND 0X10
  878.                 LD A,0
  879.                 JR NZ,DOWN5
  880.                 LD A,1
  881. DOWN5           POP DE
  882.                 CALL PRTSYMALT
  883.                 JR DOWN4
  884.  
  885. CURSOR_DOWN     LD L,(IX+0X0A)
  886.                 LD H,(IX+0X0B)
  887.                 LD A,H
  888.                 OR L
  889.                 RET Z
  890.                 BIT 7,(IX+7)
  891.                 JR Z,CURSOR_DOWN2
  892.                 LD E,(IX+8)
  893.                 LD D,(IX+9)
  894.                 EX DE,HL
  895.                 INC HL
  896.                 LD C,(HL)
  897.                 INC HL
  898.                 LD B,(HL)
  899.                 EX DE,HL
  900.                 JR CURSOR_DOWN3
  901.  
  902. CURSOR_DOWN2    LD C,(IX+8)
  903.                 LD B,(IX+9)
  904. CURSOR_DOWN3    SCF
  905.                 SBC HL,BC
  906.                 RET Z
  907.                 INC BC
  908.                 BIT 7,(IX+7)
  909.                 JR Z,CURSOR_DOWN4
  910.                 EX DE,HL
  911.                 LD (HL),B
  912.                 DEC HL
  913.                 LD (HL),C
  914.                 DEC HL
  915.                 LD A,(IX+2)
  916.                 SUB 3
  917.                 CP (HL)
  918.                 JR Z,CURSOR_DOWN1
  919.                 INC (HL)
  920.                 RET
  921.  
  922. CURSOR_DOWN4    LD (IX+8),C
  923.                 LD (IX+9),B
  924.                 LD A,(IX+2)
  925.                 SUB 3
  926.                 CP (IX+7)
  927.                 JR Z,CURSOR_DOWN1
  928.                 INC (IX+7)
  929.                 RET
  930.  
  931. CURSOR_DOWN1    CALL REST2X2
  932.                 CALL SCRUP
  933.                 LD A,(IX+1)
  934.                 ADD A,(IX+2)
  935.                 SUB 2
  936.                 LD E,A
  937.                 JP DOWN1
  938.  
  939. GET_XY          LD E,(IX+8)
  940.                 LD D,(IX+9)             ;КОЛ-ВО
  941.                 LD L,(IX+0X0A)
  942.                 LD H,(IX+0X0B)          ;НОМЕР
  943.                 LD A,(IX+2)
  944.                 SUB 3
  945.                 LD C,A
  946.                 LD B,0
  947.                 LD A,D
  948.                 OR E
  949.                 LD A,C
  950.                 RET
  951.  
  952. ;ПЕРЕМЕЩЕНИЕ НА СТРАНИЦУ ВВЕРХ
  953. PAGEUP          CALL GET_XY
  954.                 RET Z
  955.                 XOR A
  956.                 SBC HL,BC
  957.                 EX DE,HL
  958.                 JR NC,PDUN0
  959. PDU0            LD D,A
  960.                 LD E,A
  961.                 JR PDUN0
  962.  
  963. ;ПЕРЕМЕЩЕНИЕ НА СТРАНИЦУ ВНИЗ
  964. PAGEDN          CALL GET_XY
  965.                 RET Z
  966.                 EX DE,HL
  967.                 AND A
  968.                 SBC HL,BC
  969.                 ADD HL,BC
  970.                 EX DE,HL
  971.                 JR NC,PDN00
  972.                 DEC DE
  973.                 LD A,E
  974.                 JR PDUN0
  975.  
  976. PDN00           ADD HL,BC
  977.                 EX DE,HL
  978.                 SBC HL,DE
  979.                 ADD HL,DE
  980.                 JR Z,PDUN1
  981.                 JR NC,PDUN0
  982. PDUN1           EX DE,HL
  983.                 DEC DE
  984. PDUN0           LD (IX+7),A
  985.                 LD (IX+0X0A),E
  986.                 LD (IX+0X0B),D
  987.                 CALL REST2X2
  988. ;               CALL OUT_TEK_DIR
  989.                 JP DRAW_MOUSE
  990.  
  991. PRTSYMALT       PUSH HL
  992.                 PUSH DE
  993.                 EX DE,HL
  994.                 CALL ADRDIS
  995.                 EX DE,HL
  996.                 PUSH BC
  997.                 LD BC,CHARS
  998.                 LD L,A
  999.                 LD H,0
  1000.                 ADD HL,HL
  1001.                 ADD HL,HL
  1002.                 ADD HL,HL
  1003.                 ADD HL,BC
  1004.                 POP BC
  1005.                 REPT 8
  1006.                 LD A,(HL)
  1007.                 LD (DE),A
  1008.                 INC L
  1009.                 INC D
  1010.                 ENDM
  1011.                 POP DE
  1012.                 POP HL
  1013.                 INC D
  1014.                 RET
  1015.  
  1016. PRT_SYM         PUSH HL
  1017.                 PUSH DE
  1018.                 EX DE,HL
  1019.                 CALL ADRDIS
  1020.                 EX DE,HL
  1021.                 ADD A,A
  1022.                 LD L,A
  1023.                 LD H,0X0F
  1024.                 ADD HL,HL
  1025.                 ADD HL,HL
  1026.                 REPT 8
  1027.                 LD A,(HL)
  1028.                 RRCA
  1029.                 OR (HL)
  1030.                 LD (DE),A
  1031.                 INC L
  1032.                 INC D
  1033.                 ENDM
  1034.                 POP DE
  1035.                 POP HL
  1036.                 INC D
  1037.                 RET
  1038.  
  1039. PRINT_A_        PUSH HL
  1040.                 PUSH DE
  1041.                 LD L,A
  1042.                 LD H,0
  1043.                 ADD HL,HL
  1044.                 ADD HL,HL
  1045.                 ADD HL,HL
  1046.                 LD DE,CHARS
  1047.                 ADD HL,DE
  1048.                 LD DE,0X4000
  1049.                 REPT 8
  1050.                 LD A,(HL)
  1051.                 LD (DE),A
  1052.                 INC HL
  1053.                 INC D
  1054.                 ENDM
  1055.                 POP DE
  1056.                 POP HL
  1057.                 RET
  1058.  
  1059. SCRUP           PUSH IX
  1060.                 EXX
  1061.                 LD BC,WIN_P2
  1062.                 LD A,0XFD
  1063.                 OUT (C),A
  1064.                 EXX
  1065.                 LD L,(IX+1)
  1066.                 INC L
  1067.                 EXX
  1068.                 XOR A
  1069.                 OUT (C),A
  1070.                 EXX
  1071.                 CALL USTAN
  1072. SCRUP1          LD A,(IX+0X10)
  1073.                 ADD A,C
  1074.                 LD L,A
  1075.                 LD H,(IX+0X11)
  1076.                 LD A,(IX+0)
  1077.                 ADD A,C
  1078.                 LD E,A
  1079.                 LD D,(IX+1)
  1080.                 PUSH BC
  1081.                 CALL LDIST
  1082.                 POP BC
  1083.                 INC IX
  1084.                 INC IX
  1085.                 DJNZ SCRUP1
  1086.                 POP IX
  1087.                 RET
  1088.  
  1089. SCRDN           PUSH IX
  1090.                 EXX
  1091.                 LD BC,WIN_P2
  1092.                 LD A,0XFD
  1093.                 OUT (C),A
  1094.                 EXX
  1095.                 LD A,(IX+2)
  1096.                 ADD A,(IX+1)
  1097.                 SUB 2
  1098.                 LD L,A
  1099.                 EXX
  1100.                 XOR A
  1101.                 OUT (C),A
  1102.                 EXX
  1103.                 CALL USTAN
  1104. SCRDN1          LD A,(IX+0)
  1105.                 ADD A,C
  1106.                 LD L,A
  1107.                 LD H,(IX+1)
  1108.                 LD A,(IX+0X10)
  1109.                 ADD A,C
  1110.                 LD E,A
  1111.                 LD D,(IX+0X11)
  1112.                 PUSH BC
  1113.                 CALL LDIST
  1114.                 POP BC
  1115.                 DEC IX
  1116.                 DEC IX
  1117.                 DJNZ SCRDN1
  1118.                 POP IX
  1119.                 RET
  1120.  
  1121. USTAN           LD A,(IX+3)
  1122.                 ADD A,A
  1123.                 LD E,A
  1124.                 LD A,L
  1125.                 LD D,0
  1126.                 LD HL,LDIST+66
  1127.                 AND A
  1128.                 SBC HL,DE
  1129.                 PUSH HL
  1130.                 POP IY
  1131.                 LD C,(IX+0)
  1132.                 LD L,A
  1133.                 LD A,(IX+2)
  1134.                 SUB 3
  1135.                 ADD A,A
  1136.                 ADD A,A
  1137.                 ADD A,A
  1138.                 LD B,A
  1139.                 LD H,0
  1140.                 ADD HL,HL
  1141.                 ADD HL,HL
  1142.                 ADD HL,HL
  1143.                 LD IX,BUFTSC
  1144.                 EX DE,HL
  1145.                 ADD IX,DE
  1146.                 ADD IX,DE
  1147.                 RET
  1148.  
  1149. LDIST           DB 0XFD
  1150.                 JP (HL)
  1151.                 REPT 32
  1152.                 LDI
  1153.                 ENDM
  1154.                 RET
  1155.