diff --git a/constants/SP2000.inc b/constants/SP2000.inc index 00d9547..1d14340 100644 --- a/constants/SP2000.inc +++ b/constants/SP2000.inc @@ -393,9 +393,13 @@ SCR_SyncPort EQU #FE ; SLOT0 EQU #82 ; номер банки 0 +.MEM_ADDR EQU #00 SLOT1 EQU #A2 ; номер банки 1 +.MEM_ADDR EQU #4000 SLOT2 EQU #C2 ; номер банки 2 +.MEM_ADDR EQU #8000 SLOT3 EQU #E2 ; номер банки 3 +.MEM_ADDR EQU #C000 PORT_Y EQU #89 ; вертикальная координата точки на графическом экран RGADR EQU #89 ; страница VIDEO-RAM для спектрумовского режима @@ -434,7 +438,8 @@ PAL_SCP EQU #1E ;????? DCP_PAGE EQU #40 ; страница используемая DSS -DSS_PAGE EQU #FF +;DSS_PAGE EQU #FF +SHARED_PAGE EQU #FF ZERO_PAGE EQU 0 ; страница для перехвата ресета и ещё чего-то Spec_Page EQU #41 @@ -510,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 @@ -525,8 +532,8 @@ SYS_PAGE EQU #FE .SYS_WORK4 EQU #C156 .WIN_MAP_LAB1 EQU #C158 -.WIN_MODE_SH EQU #C15C -.WIN_MODE_SC EQU #C15E +.WIN_MODE_SH EQU #C15C ; место по вертикали с адресом +.WIN_MODE_SC EQU #C15E ; место по горизонтали и страница моды .MSD_FAT_SEC EQU #C160 ; начальный сектор FAT .MSD_FAT_SEC2 EQU #C162 ; начальный сектор FAT @@ -588,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 ; данные для задач @@ -598,6 +605,7 @@ SYS_PAGE EQU #FE .USER_VARS EQU #F018 ; переменные пользователя +.SHARED_BUFFER_32b EQU #FEE0; - #FEFF .CMOS_EMULATOR EQU #FF00 .USER_VARS_2 EQU .CMOS_EMULATOR + CMOS.MAX_ADDRESS + 1 ;------------[ OLD ]-------------; @@ -816,32 +824,70 @@ SPECIAL_SECS EQU 28 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 ; положение по горизонрали, в знакоместах -WIN_PLACE_V EQU 3 ; положение по вертикали в знакоместах -WIN_MODE EQU 4 ; режим знакоместа -WIN_MODE_S EQU 5 ; дополнительный режим -; бит 0 - Sp-SCR, -WIN_GR_X EQU 6 ; положение по X в поле графики (по знакомест) -WIN_GR_Y EQU 7 ; положение по Y в поле графики (по знакомест) +; ; ***** - Оконные переменные - ***** +; WIN_SIZE_H EQU 0 ; горизонтальный размер в знакоместах +; WIN_SIZE_V EQU 1 ; вертикальный размер в знакоместах +; WIN_PLACE_H EQU 2 ; положение по горизонрали, в знакоместах +; WIN_PLACE_V EQU 3 ; положение по вертикали в знакоместах +; WIN_MODE EQU 4 ; режим знакоместа +; WIN_MODE_S EQU 5 ; дополнительный режим +; ; бит 0 - Sp-SCR, +; WIN_GR_X EQU 6 ; положение по X в поле графики (по знакомест) +; WIN_GR_Y EQU 7 ; положение по Y в поле графики (по знакомест) -WIN_HL EQU 8 ; сохранение HL -WIN_BC EQU 10 ; сохранение BC -WIN_DE EQU 12 ; сохранение DE -WIN_V_BEG EQU 14 ; начало окна по вертикали -WIN_V_END EQU 15 ; конец окна по вертикали -WIN_H_BEG EQU 16 ; начало окна по горизонтали -WIN_H_END EQU 17 ; конец окна по горизонтали -WIN_SIZE_REL EQU 18 ; реальный размер в символах -WIN_MODE_E EQU 19 ; дополнительный режим экрана -WIN_WORK_1 EQU 20 ; рабочая переменная 1 -WIN_WORK_2 EQU 21 ; рабочая переменная 2 -WIN_GRAF_X EQU 24 ; начальная координата по X -WIN_GRAF_Y EQU 26 ; начальная координата по Y +; WIN_HL EQU 8 ; сохранение HL +; WIN_BC EQU 10 ; сохранение BC +; WIN_DE EQU 12 ; сохранение DE +; WIN_V_BEG EQU 14 ; начало окна по вертикали +; WIN_V_END EQU 15 ; конец окна по вертикали +; WIN_H_BEG EQU 16 ; начало окна по горизонтали +; WIN_H_END EQU 17 ; конец окна по горизонтали +; WIN_SIZE_REL EQU 18 ; реальный размер в символах +; WIN_MODE_E EQU 19 ; дополнительный режим экрана +; WIN_WORK_1 EQU 20 ; рабочая переменная 1 +; WIN_WORK_2 EQU 21 ; рабочая переменная 2 +; WIN_GRAF_X EQU 24 ; начальная координата по X +; WIN_GRAF_Y EQU 26 ; начальная координата по Y ; ; @@ -1622,13 +1668,13 @@ ControlByte: ; Bits for HardDrive.Read.Status .Busy EQU #80 ; BSY .Ready EQU #40 ; RDY .Fault EQU #20 -.StreamErrror EQU .Fault .DeferredWriteError EQU #10 .DataRequest EQU #08 ; DRQ .AlignmentError EQU #04 ; obsolete .SenseDataAvailable EQU #02 ; obsolete .Error EQU #01 ; Indicates an error occurred. Send a new command to clear it (or nuke it with a Software Reset). .CheckCondition EQU .Error +.StreamErrror EQU .Fault /* Bit Abbreviation Function 0 ERR Indicates an error occurred. Send a new command to clear it (or nuke it with a Software Reset). @@ -1646,6 +1692,7 @@ Chanel: .Set: EQU #BC ; для использования с неполной адресацией out (#bc),a. заслать '1' .Primary EQU #21 ; для использования с неполной адресацией out (#bc),a. Выбор канала 0 .Secondary EQU #01 ; для использования с неполной адресацией out (#bc),a. Выбор канала 1 + Device: .HDD EQU 1 .CDROM EQU 2