From 361bce691cf4130a703e57b8fc7b3b87d3b929de Mon Sep 17 00:00:00 2001 From: Anatoliy Belyanskiy Date: Fri, 11 Aug 2023 01:15:43 +1000 Subject: [PATCH] LP_PR_LINE_DIR, structure for SYS_PAGE's window variables --- constants/BIOS_equ.inc | 1 + constants/SP2000.inc | 56 ++++++++++++++++++++++++++++++++++++------ 2 files changed, 50 insertions(+), 7 deletions(-) diff --git a/constants/BIOS_equ.inc b/constants/BIOS_equ.inc index 7682a62..a3438d1 100644 --- a/constants/BIOS_equ.inc +++ b/constants/BIOS_equ.inc @@ -70,6 +70,7 @@ BIOS: .LP_PRINT_LINE6 EQU #8C ; Вывод строки символов на экран до разделителя без атрибутов .LP_CLS_WIN2 EQU #8D ; Очистка экрана с указанием символа заполнения .LP_GET_PLACE EQU #8E ; Получить текущее положение вывода на экран +.LP_PR_LINE_DIR EQU #E0 ;!TODO недоделана. Печать "в консоль" до разделителя ;--------------------------------------- ;[Графические функции]------------------ diff --git a/constants/SP2000.inc b/constants/SP2000.inc index 665b4d5..963e73c 100644 --- a/constants/SP2000.inc +++ b/constants/SP2000.inc @@ -515,14 +515,16 @@ SYS_PAGE EQU #FE ; В Sp2000 туда пихается значение типа #FEFF .CONFIG_BYTE EQU #C13E +;;;; .WIN_MAP_SC EQU #C140 -.WIN_TAB_SC EQU #C142 -.WIN_SAV_HL EQU #C144 -.WIN_SAV_DE EQU #C146 -.WIN_SAV_BC EQU #C148 +.WIN_TAB_SC EQU #C142 ;!FIXIT найти где используются +.WIN_SAV_HL EQU #C144 ;!FIXIT найти где используются +.WIN_SAV_DE EQU #C146 ;!FIXIT найти где используются +.WIN_SAV_BC EQU #C148 ;!FIXIT найти где используются .WIN_ZG EQU #C14A -.WIN_PLACE_WIN EQU #C14C -.WIN_GR_MAP EQU #C14E +.WIN_PLACE_WIN EQU #C14C ;!FIXIT найти где используются +.WIN_GR_MAP EQU #C14E ;!FIXIT найти где используются +;;;; .SYS_WORK1 EQU #C150 .SYS_WORK2 EQU #C152 @@ -593,7 +595,7 @@ SYS_PAGE EQU #FE .MS_FAT EQU #CC00 ; буфер FAT sector .MS_BUF EQU #D000 ; буфер DAT sector -.WIN_MAP_IX EQU #E000 ; данные карт окон +.WIN_MAP_IX EQU #E000 ; данные карт окон (96 описателей по 32 байта) .TASK_DATA EQU #EC00 ; данные для задач @@ -824,7 +826,46 @@ FAT_ID EQU #36 ; ***** - Оконные переменные - ***** + STRUCT Window_UserVars +SIZE_H BYTE 0 ; +00 горизонтальный размер в знакоместах +SIZE_V BYTE 0 ; +01 вертикальный размер в знакоместах +PLACE_H BYTE 0 ; +02 положение по горизонтали, в знакоместах +PLACE_V BYTE 0 ; +03 положение по вертикали в знакоместах +MODE BYTE 0 ; +04 режим знакоместа +MODE_S BYTE 0 ; +05 дополнительный режим: бит 0 - Sp-SCR +GR_X BYTE 0 ; +06 положение по X в поле графики (по знакомест) +GR_Y BYTE 0 ; +07 положение по Y в поле графики (по знакомест) + ENDS +; + STRUCT Window_Variables +USER Window_UserVars 0,0,0,0,0,0,0,0 +; ; Work vars +reg_HL WORD 0 ; +08 сохранение HL +reg_BC WORD 0 ; +10 сохранение BC +reg_DE WORD 0 ; +12 сохранение DE +V_BEG BYTE 0 ; +14 начало окна по вертикали +V_END BYTE 0 ; +15 конец окна по вертикали +H_BEG BYTE 0 ; +16 начало окна по горизонтали +H_END BYTE 0 ; +17 конец окна по горизонтали +SIZE_REL BYTE 0 ; +18 реальный размер в символах +MODE_E BYTE 0 ; +19 дополнительный режим экрана +WORK_1 BYTE 0 ; +20 рабочая переменная 1 +WORK_2 BYTE 0 ; +21 рабочая переменная 2 +WORK_3 WORD 0 ; +22 рабочая переменная 3 +GRAF_X WORD 0 ; +24 начальная координата по X +GRAF_Y WORD 0 ; +26 начальная координата по Y +RESERVED BLOCK 4,0 ; +28 зарезервировано до 32-х байтов + ENDS +;-------------[] +; default window +WIN_ID_0 Window_Variables = SYS_PAGE.WIN_MAP_IX + Window_Variables * 0 +;WIN_ID_1 Window_Variables = SYS_PAGE.WIN_MAP_IX + Window_Variables * 1 +;WIN_ID_2 Window_Variables = SYS_PAGE.WIN_MAP_IX + Window_Variables * 2 +; ... +;WIN_ID_95 Window_Variables = SYS_PAGE.WIN_MAP_IX + Window_Variables * 95 +;-------------[] +/* WIN_SIZE_H EQU 0 ; горизонтальный размер в знакоместах WIN_SIZE_V EQU 1 ; вертикальный размер в знакоместах WIN_PLACE_H EQU 2 ; положение по горизонтали, в знакоместах @@ -848,6 +889,7 @@ WIN_WORK_1 EQU 20 ; раб WIN_WORK_2 EQU 21 ; рабочая переменная 2 WIN_GRAF_X EQU 24 ; начальная координата по X WIN_GRAF_Y EQU 26 ; начальная координата по Y +*/ ; ;