;/////////////////////////////////////////////////////////////////////// ; Функция #55. Скроллинг экрана. ; ; вход: D - строка левого верхнего угла окна ; E - колонка левого верхнего угла окна ; H - высота окна ; L - ширина окна ; B = 1 - прокрутка вверх ; B = 2 - прокрутка вниз ; A = 0 - очищать строку ; выход: нет ;/////////////////////////////////////////////////////////////////////// SCROLL: DJNZ .SCR_DW ;!TODO заменить на BIOS.LP_SCROLL_UD и посмотреть, что шустрее ;[x] 04/04/23 ;LD B,A ;LD C,H ;PUSH BC PUSH AF ; PUSH DE PUSH HL LD XH,D LD XL,E INC D DEC H LD C,BIOS.WIN_MOVE ;[x] 29/9/23 LD A,R PUSH AF ; XOR A DI ;[x] 29/9/23 RST ToBIOS ;[x] 29/9/23 POP AF JP PO,.skip_EI EI .skip_EI: POP HL POP DE ;[x] 04/04/23 ;POP BC POP AF ;XOR A ;CP B AND A ; RET NZ LD A,D ADD A,H DEC A ;R101 LD D,A .print: PUSH DE ;R101 CALL LOCATE LD A,' ' LD B,L LD C,BIOS.LP_PRINT_SYM RST ToBIOS POP DE ;R101 JP LOCATE ;R101 ;AND A ;RET .SCR_DW: DJNZ .SCR_ERR ;[x] 04/04/23 ;LD B,A ;LD C,H ;PUSH BC PUSH AF ; PUSH DE PUSH HL LD XH,D LD XL,E INC XH DEC H LD C,BIOS.WIN_MOVE ;[x] 29/9/23 LD A,R PUSH AF ; XOR A DI ;[x] 29/9/23 RST ToBIOS ; [x] 29/9/23 POP AF JP PO,.skip2_EI: EI .skip2_EI: POP HL POP DE ;[x] 29/9/23 ;POP BC POP AF ;XOR A ;CP B AND A ; RET NZ JP SCROLL.print .SCR_ERR: LD A,DSS_Error.sys.INVALID_FUNCTION SCF RET ;///////////////////////////////////////////////////////////////////////