Subversion Repositories pentevo

Rev

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