Subversion Repositories pentevo

Rev

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

  1.  
  2. ;LAST UPDATE: 16.05.2012 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,(RREG_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,(RREG_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,(RREG_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.                 EX DE,HL
  611.                 JP NEXT
  612.  
  613. PRINT_A         LD A,(RREG_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.                 DEC IX
  1105.                 DEC IX
  1106. SCRDN1          LD A,(IX+0)
  1107.                 ADD A,C
  1108.                 LD L,A
  1109.                 LD H,(IX+1)
  1110.                 LD A,(IX+0X10)
  1111.                 ADD A,C
  1112.                 LD E,A
  1113.                 LD D,(IX+0X11)
  1114.                 PUSH BC
  1115.                 CALL LDIST
  1116.                 POP BC
  1117.                 DEC IX
  1118.                 DEC IX
  1119.                 DJNZ SCRDN1
  1120.                 POP IX
  1121.                 RET
  1122.  
  1123. USTAN           LD A,(IX+3)
  1124.                 ADD A,A
  1125.                 LD E,A
  1126.                 LD A,L
  1127.                 LD D,0
  1128.                 LD HL,LDIST+66
  1129.                 AND A
  1130.                 SBC HL,DE
  1131.                 PUSH HL
  1132.                 POP IY
  1133.                 LD C,(IX+0)
  1134.                 LD L,A
  1135.                 LD A,(IX+2)
  1136.                 SUB 3
  1137.                 ADD A,A
  1138.                 ADD A,A
  1139.                 ADD A,A
  1140.                 LD B,A
  1141.                 LD H,0
  1142.                 ADD HL,HL
  1143.                 ADD HL,HL
  1144.                 ADD HL,HL
  1145.                 LD IX,BUFTSC
  1146.                 EX DE,HL
  1147.                 ADD IX,DE
  1148.                 ADD IX,DE
  1149.                 RET
  1150.  
  1151. LDIST           DB 0XFD
  1152.                 JP (HL)
  1153.                 REPT 32
  1154.                 LDI
  1155.                 ENDM
  1156.                 RET
  1157.  
  1158. SYM00           DB %11111111
  1159.                 DB %10000000
  1160.                 DB %10000000
  1161.                 DB %10000000
  1162.                 DB %10000000
  1163.                 DB %10000000
  1164.                 DB %10000000
  1165.  
  1166. SYM01           DB %11111111
  1167.                 DB %00000000
  1168.                 DB %00000000
  1169.                 DB %00000000
  1170.                 DB %00000000
  1171.                 DB %00000000
  1172.                 DB %00000000
  1173.  
  1174. SYM02           DB %11111111
  1175.                 DB %00000001
  1176.                 DB %00000001
  1177.                 DB %00000001
  1178.                 DB %00000001
  1179.                 DB %00000001
  1180.                 DB %00000001
  1181.                 DB %00000001
  1182.  
  1183. SYM03           DB %10000000
  1184.                 DB %10000000
  1185.                 DB %10000000
  1186.                 DB %10000000
  1187.                 DB %10000000
  1188.                 DB %10000000
  1189.                 DB %10000000
  1190.                 DB %10000000
  1191.  
  1192. SYM04           DB %00000001
  1193.                 DB %00000001
  1194.                 DB %00000001
  1195.                 DB %00000001
  1196.                 DB %00000001
  1197.                 DB %00000001
  1198.                 DB %00000001
  1199.                 DB %00000001
  1200.  
  1201. SYM05           DB %10000000
  1202.                 DB %10000000
  1203.                 DB %10000000
  1204.                 DB %10000000
  1205.                 DB %10000000
  1206.                 DB %10000000
  1207.                 DB %10000000
  1208.                 DB %11111111
  1209.  
  1210. SYM06           DB %00000000
  1211.                 DB %00000000
  1212.                 DB %00000000
  1213.                 DB %00000000
  1214.                 DB %00000000
  1215.                 DB %00000000
  1216.                 DB %00000000
  1217.                 DB %11111111
  1218.  
  1219. SYM07           DB %00000001
  1220.                 DB %00000001
  1221.                 DB %00000001
  1222.                 DB %00000001
  1223.                 DB %00000001
  1224.                 DB %00000001
  1225.                 DB %00000001
  1226.                 DB %11111111
  1227.  
  1228. SYM08           DB %00000001
  1229.                 DB %00000011
  1230.                 DB %00000111
  1231.                 DB %00001111
  1232.                 DB %00011111
  1233.                 DB %00111111
  1234.                 DB %01111111
  1235.                 DB %11111111
  1236.  
  1237. SYM09           DB %11111111
  1238.                 DB %11111110
  1239.                 DB %11111100
  1240.                 DB %11111000
  1241.                 DB %11110000
  1242.                 DB %11100000
  1243.                 DB %11000000
  1244.                 DB %10000000
  1245.  
  1246. SYM0A           DB %00111111;3F
  1247.                 DB %00000000;00
  1248.                 DB %00011111;1F
  1249.                 DB %01000000;40
  1250.                 DB %00001111;0F
  1251.                 DB %01100000;60
  1252.                 DB %00000111;07
  1253.                 DB %01010000;50
  1254.                 DB %00000011;03
  1255.                 DB %01001000;48
  1256.                 DB %00000001;01
  1257.                 DB %01001100;4C
  1258.                 DB %00000001;01
  1259.                 DB %01110000;70
  1260.                 DB %00000111;07
  1261.                 DB %00000000;00
  1262.  
  1263. SYM0C           DB %00111111;3F
  1264.                 DB %00000000;00
  1265.                 DB %00011111;1F
  1266.                 DB %01000000;40
  1267.                 DB %00001111;0F
  1268.                 DB %01100000;60
  1269.                 DB %00000111;07
  1270.                 DB %01110000;70
  1271.                 DB %00000011;03
  1272.                 DB %01111000;78
  1273.                 DB %00000001;01
  1274.                 DB %01111100;7C
  1275.                 DB %00000001;01
  1276.                 DB %01110000;70
  1277.                 DB %00000111;07
  1278.                 DB %00000000;00
  1279. END_MAGICSYM
  1280.