Subversion Repositories pentevo

Rev

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

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