Subversion Repositories pentevo

Rev

Rev 1041 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
305 savelij 1
 
1186 savelij 2
; LAST UPDATE: 16.02.2025 savelij
305 savelij 3
 
999 savelij 4
                include ports_evo.a80
5
 
961 savelij 6
; страницы VIDEO RAM
1041 savelij 7
VMODE7_0        EQU LOW (-0x08)-1               ; 0xF7 страница одностраничного текстмода 0 экран
8
VMODE7_1        EQU LOW (-0x0A)-1               ; 0xF5 страница одностраничного текстмода 1 экран
9
VMODE6_0M       EQU LOW (-0x05)-1               ; 0xFA страница ATM текстмода монохром 0 экран
10
VMODE6_0C       EQU LOW (-0x01)-1               ; 0xFE страница ATM текстмода цвет 0 экран
11
VMODE6_1M       EQU LOW (-0x07)-1               ; 0xF8 страница ATM текстмода монохром 1 экран
12
VMODE6_1C       EQU LOW (-0x03)-1               ; 0xFC страница ATM текстмода цвет 1 экран
1186 savelij 13
ZXSCR_0         EQU VMODE6_0M                   ; 0xFA страница ZX экрана 0
1041 savelij 14
ZXSCR_1         EQU LOW (-0x07)-1               ; 0xF8 страница ZX экрана 1
585 savelij 15
 
961 savelij 16
; страницы памяти ZX стандарта
1186 savelij 17
ZXSTD_CPU1      EQU VMODE6_0M                   ; 0xFA страница 1 окна проецирования
18
ZXSTD_CPU2      EQU LOW (-0x02)-1               ; 0xFD страница 2 окна проецирования
831 savelij 19
 
961 savelij 20
; страницы RAM
1186 savelij 21
 INIT_VAR
22
 SETVAR RAM_NMI                                 ; страница основных переменных RST 8 и обработчика NMI
23
 SETVAR RAM_EVODOS                              ; страница копии EVO-DOS для перехвата
24
 SETVAR RAM_FATVARS                             ; страница для переменых FAT
25
 SETVAR RAM_SORTFILES                           ; страница сортированных описателей FAT
26
 SETVAR RAM_PROFROM                             ; страница переменных PROFROM
27
 SETVAR RAM_MOUNTER                             ; страница для монтирования образов
28
 SETVAR RAM_STS                                 ; страница для отладчика STS
29
 SETVAR RAM_ADDSTS                              ; страница для отладки ROM
30
 SETVAR RAM_SCR_FONT                            ; страница сохраненных экранов и фонтов
31
 SETVAR RAM_TEMP                                ; страница всяких временных переменных
32
 SETVAR RAM_RAMDISK                             ; страница начала описателя рамдиска
33
 SETVAR RAM_DATARAMD,   800/16                  ; страница начала данных рамдиска
34
 SETVAR RAM_TAPE,       0                       ; страница для загрузки TAP файла
35
 SETVAR RAM_FLASHER,    512/16                  ; страница начала загрузки прошивки
305 savelij 36
 
961 savelij 37
; страницы ROM
1186 savelij 38
 INIT_VAR
39
 SETVAR ROM_ERS                                 ; номер страницы ROM EVO RESET SERVICE
40
 SETVAR ROM_BAS128                              ; номер страницы ROM BASIC 128
41
 SETVAR ROM_DOS                                 ; номер страницы ROM EVO-DOS для реальной дискеты
42
 SETVAR ROM_BAS48                               ; номер страницы ROM BASIC 48
43
 SETVAR ROM_EMPTY                               ; свободна
44
 SETVAR ROM_MAINMENU                            ; номер страницы упакованного главное меню
45
 SETVAR ROM_RST80                               ; номер страницы ROM RST 8
46
 SETVAR ROM_RST81                               ; номер страницы ROM RST 8
47
 SETVAR ROM_RST82                               ; номер страницы ROM RST 8
48
 SETVAR ROM_RST83                               ; номер страницы ROM RST 8
49
 SETVAR ROM_ADD_DOS                             ; номер страницы ROM EVO-DOS для эмуляции
50
 SETVAR ROM_ADD_BAS48                           ; номер страницы ROM BASIC 48
51
; стандартные бейсики и TURBO 2+
52
 INIT_VAR 0x18
53
 SETVAR ROM_BAS48_STD                           ; номер страницы ROM BASIC 48 (стандартная версия)
54
 SETVAR ROM_BAS128_STD                          ; номер страницы ROM BASIC 128 (стандартная версия)
55
 SETVAR ROM_BAS48_128                           ; номер страницы ROM BASIC 48 (стандартная версия для BASIC 128)
56
 SETVAR ROM_ATMCPM                              ; номер страницы ROM АТМ CP/M
57
; страницы конфигов
1041 savelij 58
CONF4PROF       EQU 0x90                        ; стартовая страница для EVO PROFROM 128K
59
CONF4GLUK       EQU 0x94                        ; стартовая страница для GLUK 64K
60
CONF4CUSTOM     EQU 0x9C                        ; стартовая страница для пользовательской прошивки 64К
501 savelij 61
 
1186 savelij 62
; границы страниц
1041 savelij 63
CPU0            EQU 0x0000                      ; начало окна проецирования 0
64
CPU1            EQU 0x4000                      ; начало окна проецирования 1
65
CPU2            EQU 0x8000                      ; начало окна проецирования 2
66
CPU3            EQU 0xC000                      ; начало окна проецирования 3
553 savelij 67
 
961 savelij 68
; маска кнопок мыши
761 savelij 69
 BITMASK MOUSE_M_KEY,   2
70
 BITMASK MOUSE_R_KEY,   1
71
 BITMASK MOUSE_L_KEY,   0
689 savelij 72
_MOUSE_WHEEL    EQU %11110000
73
 
961 savelij 74
; скорости RS232
646 savelij 75
BAUD110         EQU 115200/110
76
BAUD150         EQU 115200/150
77
BAUD300         EQU 115200/300
78
BAUD600         EQU 115200/600
79
BAUD1200        EQU 115200/1200
80
BAUD2400        EQU 115200/2400
81
BAUD4800        EQU 115200/4800
82
BAUD9600        EQU 115200/9600
83
BAUD19200       EQU 115200/19200
84
BAUD38400       EQU 115200/38400
85
BAUD57600       EQU 115200/57600
86
BAUD115200      EQU 115200/115200
87
 
961 savelij 88
; одностраничный текстмод
1041 savelij 89
LSYM            EQU 0x01C0                      ; смещение в странице начала левых символов текстмода
90
LATTR           EQU 0x31C0                      ; смещение в странице начала левых атрибутов символов
91
RSYM            EQU 0x11C0                      ; смещение в странице начала правых символов текстмода
92
RATTR           EQU 0x21C1                      ; смещение в странице начала правых атрибутов символов 
573 savelij 93
 
961 savelij 94
; ATM текстмод
1041 savelij 95
ALSYM           EQU 0x01C0                      ; смещение в странице начала левых символов текстмода
96
ALATTR          EQU 0x21C0                      ; смещение в странице начала левых атрибутов символов
97
ARSYM           EQU 0x21C0                      ; смещение в странице начала правых символов текстмода
98
ARATTR          EQU 0x01C1                      ; смещение в странице начала правых атрибутов символов
702 savelij 99
 
961 savelij 100
; цвета и яркости
585 savelij 101
BLACK           EQU 0
102
BLUE            EQU 1
103
RED             EQU 2
104
MAGENTA         EQU 3
105
GREEN           EQU 4
588 savelij 106
CYAN            EQU 5
585 savelij 107
YELLOW          EQU 6
108
WHITE           EQU 7
1041 savelij 109
BR_INK          EQU 0x40
110
BR_PAPER        EQU 0x80
573 savelij 111
 
961 savelij 112
; цвета для ATM видеорежимов
1186 savelij 113
 BITMASK G_L,                   7
114
 BITMASK G_H,                   4
115
 BITMASK R_L,                   6
116
 BITMASK R_H,                   1
117
 BITMASK B_L,                   5
118
 BITMASK B_H,                   0
593 savelij 119
 
961 savelij 120
; маска порта 7FFD
1186 savelij 121
 BITMASK ZX_SCREEN,             3
122
 BITMASK ZX_ROM,                4
585 savelij 123
 
961 savelij 124
; маска порта 0xBF
1186 savelij 125
 BITMASK BREAK_BF,              4               ; бит разрешения срабатывания BREAK на адресе
126
 BITMASK NMI_BF,                3               ; бит генерации NMI
127
 BITMASK FONT_BF,               2               ; бит разрешения изменения шрифта
128
 BITMASK FLASH_BF,              1               ; бит разрешения программирования FLASH
129
 BITMASK SHADOW_BF,             0               ; бит разрешения доступа к теневым портам
585 savelij 130
 
961 savelij 131
; маска порта 0xEFF7
132
 BITMASK PENT_CMOS,     7                       ; бит разрешения доступа к кмосу
133
 BITMASK PENT_TURBO,    4                       ; турборежим пентагона
736 savelij 134
 
961 savelij 135
; маски режимов
136
MEMORY_ALL      EQU %00010000                   ; доступ к первому мегабайту через порт 0xEFF7
137
MEMORY_48       EQU %00100000                   ; доступен только 48Kb памяти
138
MEMORY_128      EQU %00110000                   ; доступно только 128Kb памяти
139
TURBO_3         EQU %01000000                   ; частота процессора 3,5 МГц 
140
TURBO_7         EQU %10000000                   ; частота процессора 7 МГц
141
TURBO_14        EQU %11000000                   ; частота процессора 14 МГц
142
NUM_EGA         EQU %00000000                   ; номер видеорежима для ATM порта (EGA МОД 320*200)
143
NUM_APPMULTI    EQU %00000010                   ; номер видеорежима для ATM порта (АППАРАТНЫЙ МУЛЬТИКОЛОР 640*200)
144
NUM_ZXSCR       EQU %00000011                   ; номер видеорежима для ATM порта (ZX SCREEN 6912)
145
NUM_TXTATM      EQU %00000110                   ; номер видеорежима для ATM порта (ATM текстмод 80*25)
146
NUM_TXTSCR      EQU %00000111                   ; номер видеорежима для ATM порта (одностраничный текстмод 80*25)
585 savelij 147
 
838 savelij 148
SET_VIDEOMODE   EQU %00001000
149
 
961 savelij 150
; номера видеорежимов с маской для записи в порт
1041 savelij 151
V_EGA           EQU NUM_EGA      | 0xA0
152
V_APPMULTI      EQU NUM_APPMULTI | 0xA0
153
V_ZXSCR         EQU NUM_ZXSCR    | 0xA0
154
V_TXTATM        EQU NUM_TXTATM   | 0xA0
155
V_TXT1PAGE      EQU NUM_TXTSCR   | 0xA0
678 savelij 156
 
961 savelij 157
; маски отладчика
1186 savelij 158
DEBUGGER
159
 _BITMASK ACTIV,                7               ; активен отладчик
160
 _BITMASK TRACE,                6               ; трассировка
161
 _BITMASK STEP,                 5               ; пошаговая отладка
162
; BITMASK CASH_INST,            4               ; установлен CASH REMEMBER
163
; BITMASK CASH_ACTIV,           3               ; активен CASH REMEMBER
585 savelij 164
 
961 savelij 165
; смещения FDI образа
1041 savelij 166
FDI_TABLE_CYL   EQU 0x4000                      ; адрес таблицы начал дорожек в образе
167
FDI_PAGE_START  EQU 0x40FF                      ; смещение в страницах начала секторов образа
168
FDI_BYTE_SMESH  EQU 0x41FE                      ; смещение в байтах начала образа загруженного в рамдиск
169
FDI_BLOCK_SMESH EQU 0x41FF                      ; смещение в блоках (по 256 байт) начала секторов образа
170
FDI_IMAGE1SECT  EQU 0x4400                      ; адрес загрузки первого сектора для определения смещения
472 savelij 171
 
961 savelij 172
; ячейки в CMOS
1186 savelij 173
CMOS
174
 _INIT_VAR
175
 _SETVAR .SECOND                        ; секунды
176
 _SETVAR .SECOND_AL                     ; секунды будильника
177
 _SETVAR .MINUTE                        ; минуты
178
 _SETVAR .MINUTE_AL                     ; минуты будильника
179
 _SETVAR .HOUR                          ; часы
180
 _SETVAR .HOUR_AL                       ; часы будильника
181
 _SETVAR .DAY                           ; день недели
182
 _SETVAR .DAY_MONTH                     ; день месяца
183
 _SETVAR .MONTH                         ; месяц
184
 _SETVAR .YEAR                          ; год
185
 _SETVAR .REG_A                         ; регистр A
186
 _SETVAR .REG_B                         ; регистр B
187
 _SETVAR .REG_C                         ; регистр C
188
 _SETVAR .REG_D                         ; регистр D
189
; сохранения настроек ERS
190
 _INIT_VAR 0xF0
191
 _MINUSVAR .CRCHIGH                     ; EF старший байт CRC CMOS
192
 _MINUSVAR .CRCLOW                      ; EE младший байт CRC CMOS
193
 _MINUSVAR .BYTE_00                     ; ED адрес хранения в CMOS
194
 _MINUSVAR .BYTE_01                     ; EC адрес хранения в CMOS
195
 _MINUSVAR .VIRT_REAL_DRIVE             ; EB хранение номера реального и виртуального дисковода, тип DOS
196
 _MINUSVAR .HDD_TIMEOUT                 ; EA задержка опредения наличия винта после включения питания
197
 _MINUSVAR .BYTE_02                     ; E9 адрес хранения в CMOS
198
 _MINUSVAR .BYTE_03                     ; E8 адрес хранения в CMOS
199
; расширенный доступ через CMOS к AVR
200
 _INIT_VAR 0xF0
201
 _SETVAR .READ_PS2
202
; битовые поля в CMOS регистры A-D
203
CMOSREG
204
 _BITMASK A_RO_UIP,             7
205
 _BITMASK A_RW_DV2,             6
206
 _BITMASK A_RW_DV1,             5
207
 _BITMASK A_RW_DV0,             4
208
 _BITMASK A_RW_RS3,             3
209
 _BITMASK A_RW_RS2,             2
210
 _BITMASK A_RW_RS1,             1
211
 _BITMASK A_RW_RS0,             0
212
 _BITMASK B_RW_SET,             7
213
 _BITMASK B_RW_PIE,             6
214
 _BITMASK B_RW_AIE,             5
215
 _BITMASK B_RW_UIE,             4
216
 _BITMASK B_RW_SQWE,            3
217
 _BITMASK B_RW_DM,              2
218
 _BITMASK B_RW_24_12,           1
219
 _BITMASK B_RW_DSE,             0
220
 _BITMASK C_RO_IRQF,            7
221
 _BITMASK C_RO_PF,              6
222
 _BITMASK C_RO_AF,              5
223
 _BITMASK C_RO_UF,              4
224
 _BITMASK D_RO_VRT,             7
736 savelij 225
 
961 savelij 226
; ячейка CMOS 0xED CMOS_BYTE_00
1186 savelij 227
CMOS_ED
228
 _BITMASK TURBO14,              7               ; разрешение включения TURBO 14MHZ
229
 _BITMASK EMUL_TAPE,            6               ; разрешение эмуляции загрузки с ленты
230
 _BITMASK PRINTER_AY,           5               ; разрешение подмены драйвера печати в BASIC48
231
 _BITMASK RELOAD_FONT,          4               ; разрешение перезагрузки шрифта при сбросе
232
 _BITMASK TYPE_FONT,            3               ; выбор кодировки шрифта
233
 _BITMASK AUTO_TAPE,            2               ; автозапуск TAP файлов
487 savelij 234
 
961 savelij 235
; номера сбросов, биты 1-0 ячейки 0xED (CMOS_BYTE_00)
1186 savelij 236
 _INIT_VAR
237
 _SETVAR .RESET2EVOSERV                         ; сброс в EVO SERVICE
238
 _SETVAR .RESET2GLUK                            ; сброс в GLUK SERVICE
239
 _SETVAR .RESET2PROFROM                         ; сброс в PROFROM
240
 _SETVAR .RESET2CUSTOM                          ; сброс в CUSTOM ROM
702 savelij 241
 
961 savelij 242
; ячейка CMOS 0xEC CMOS_BYTE_01
1186 savelij 243
CMOS_EC
244
 _BITMASK TURBO357,             7               ; турбо режим 3,5 или 7 Мгц
245
 _BITMASK SD_NGS_ONOFF,         6               ; включение/выключение доступа к SD КАРТЕ NEOGS
246
 _BITMASK AUTOMOUNT,            5               ; вкл/выкл автомонтирования из файла
247
 _BITMASK CLOCK_VIEW,           4               ; хранение отображение часов
248
 _BITMASK SOUNDKEYS,            3               ; разрешение озвучивания нажатых клавиш
249
 _BITMASK REZIDENT,             2               ; разрешение проверки наличия резидента
573 savelij 250
 
961 savelij 251
; номера моделей памяти, биты 1-0 ячейки 0xEC (CMOS_BYTE_01)
1186 savelij 252
 _INIT_VAR
253
 _SETVAR ._1MB                                  ; память 1 Мб
254
 _SETVAR ._48K                                  ; память 48 Кб
255
 _SETVAR ._128K                                 ; память 128 Кб
702 savelij 256
 
1186 savelij 257
.KOL_MODES      EQU 4                           ; количество режимов сброса
258
.MKOL_MODES     EQU %00000011                   ; маска для количества режимов сброса
585 savelij 259
 
961 savelij 260
; ячейка CMOS 0xEB
1186 savelij 261
CMOS_EB
262
 _BITMASK ACCESSZCSD,           7               ; разрешение доступа к ZC SD CARD
263
 _BITMASK ACCESSHDDM,           6               ; разрешение доступа к HDD MASTER
264
 _BITMASK ACCESSHDDS,           5               ; разрешение доступа к HDD SLAVE
265
.REAL_DRIVE     EQU %00001100                   ; маска номера реального дисковода
266
.VIRT_DRIVE     EQU %00000011                   ; маска номера виртуального дисковода
631 savelij 267
 
1186 savelij 268
; ячейка CMOS 0xEA
269
CMOS_EA
270
.SCREENSAVER    EQU %11110000                   ; таймаут до запуска скринсейвера
271
.DETECTHDD      EQU %00001111                   ; таймаут до начала детекта HDD
272
 
961 savelij 273
; ячейка CMOS 0xE9
1186 savelij 274
CMOS_E9
275
 _BITMASK KILL_REZIDENT,        7               ; изменение резидента перед запуском
276
 _BITMASK AUTOBOOT,             6               ; автостарт загружаемого устройства
277
.BOOTDEVICE     EQU %00000011                   ; номер загружаемого устройства
507 savelij 278
 
961 savelij 279
; номера загружаемых устройств
1041 savelij 280
 INIT_VAR
281
 SETVAR _FDD                                    ; дисковод
282
 SETVAR _HDD                                    ; винчестер
283
 SETVAR _SD                                     ; SD карта
702 savelij 284
 
1041 savelij 285
_SD_NONE        EQU 0x80                        ; признак не вставленной карты
736 savelij 286
 
961 savelij 287
; переменные для 0 окна проецирования
1041 savelij 288
DEBUG_ONOFF     EQU 0x0013                      ; вкл/выкл отладчика
289
ADR_SEL_ROM     EQU 0x0014                      ; адрес переключения страниц ROM
290
CONT_RST8       EQU 0x002C                      ; адрес продолжения обработки RST 8
291
CONTINUE_MAGIC  EQU 0x0034                      ; адрес перехода продолжения обработчика MAGIC
292
ADR_PERFECT     EQU 0x0036                      ; адрес расположения PERFECT COMANDER
293
EI_RET          EQU 0x003E                      ; адрес расположения EI:RET
294
UNP_DOS_FE      EQU 0x0040                      ; адрес распаковщика DOS FE
295
UNP_SONGLN      EQU 0x0043                      ; адрес распаковки SONGLINES
296
UNPACK          EQU 0x0080                      ; адрес распаковщика
297
_BIOS_JUMPS     EQU 0x0100                      ; адрес начала таблицы переходов в драйверы девайсов
298
ADRBRK_EMUTAP   EQU 0x0569                      ; адрес установки бряка для эмуляции загрузки TAP
299
START_STS       EQU 0xC000                      ; адрес входа в отладчик
300
ADR_RST8END     EQU 0x3CE8                      ; адрес возврата из RST 8
301
ICALL2PAGE      EQU 0x8000                      ; адрес вызывов кода из другой страницы
550 savelij 302
 
1041 savelij 303
 INIT_VAR
304
 SETVAR OFFSET_FNTSAVE,         0x800           ; смещение в странице для сохранения считанного шрифта
305
 SETVAR OFFSET_BUFSYM,          0x800           ; смещение в странице текущего шрифта
306
 SETVAR OFFSET_SCRSAVE,         0x1B00          ; смещение в странице для сохранения экрана
307
 SETVAR OFFSET_USBDRV,          0               ; ??? смещение до начала USB драйвера
585 savelij 308
 
961 savelij 309
; переменные для менеджера устройств
1186 savelij 310
DEVMAN_VARS
311
 _INIT_VAR BUF_VOLUMES + 0xE0
312
 _SETVAR .DEVICES,              0x10            ; список обнаруженных девайсов
313
 _SETVAR .GO_DEV,               WORD            ; адрес вызова драйвера устройства
314
 _SETVAR .KOLDVOL,              BYTE            ; количество найденных разделов
315
 _SETVAR .SETDVOL,              BYTE            ; номер выбранного раздела
316
 _SETVAR .ADRTEKV,              WORD            ; адрес описателя текущего раздела
317
 _SETVAR .SAVE_TEK_VOL,         BYTE            ; временное сохранение текущего раздела
318
 _SETVAR .TEK_TYPE,             BYTE            ; временное хранение типа текущего устройства
319
 _SETVAR .FLAGS_DRV,            BYTE            ; флаговый байт драйверов
961 savelij 320
;7 =0-драйвер SD карты NEOGS не установлен, =1-установлен
623 savelij 321
;6
322
;5
323
;4
324
;3
325
;2
961 savelij 326
;1 =0-SD ZC карта не обнаружена, 1-обнаружена
1186 savelij 327
;0 =0-SD NeoGS не обнаружен, 1-обнаружен
548 savelij 328
 
961 savelij 329
; переменные для 1 окна проецирования
330
 INIT_VAR
1186 savelij 331
 SETVAR BUF_ALLVOL,             16 * 0x100      ; буфер переменных для всех разделов (16 MAX)
1041 savelij 332
 SETVAR MOUNT_CLS,              0x1000          ; буфер кластеров примонтированных файлов
1186 savelij 333
 SETVAR BUF_CURRPATH,           0x1000          ; буфер текущих путей на разделах
1041 savelij 334
 SETVAR BUF_PATHMOUNT,          0x400           ; буфер путей для поиска примонтированных файлов
1186 savelij 335
 
336
; буферы в 0 паге с конца страницы (растет вниз)
337
 INIT_VAR CPU3
338
 MINUSVAR BUF_512,              0x200           ; буфер сектора
339
 MINUSVAR BUF_MOVE256,          0x100           ; буфер 256 байт для переносов
340
 MINUSVAR BUF_MOUNTDRIVES,      0x100           ; буфер описателей примонтированных файлов
341
 MINUSVAR BUF_VOLUMES,          0x100           ; буфер таблицы найденных разделов
342
 MINUSVAR BUF_CURRFATVAR,       0x100           ; буфер выбранного раздела
343
 MINUSVAR BUF_DIRCLS,           0x800           ; буфер кластеров текущей директории
344
 MINUSVAR BUF_DIRCEP,           0x100           ; буфер цепочки номеров текущей директории
345
 
346
FATVARS
347
 _INIT_VAR CPU3
348
 _SETVAR .WINPOS,               0x600           ; буфер сохранения позиций в окне при хождении по директориям FILE BROWSER NMI
349
 _SETVAR .COPY_VARS_INT,        BUF_DIRCEP_Size + \
350
                                BUF_DIRCLS_Size + \
351
                                BUF_CURRFATVAR_Size + \
352
                                BUF_VOLUMES_Size        ; внутренние FAT переменные
353
 _SETVAR .COPY_VARS_EXT,        BUF_DIRCEP_Size + \
354
                                BUF_DIRCLS_Size + \
355
                                BUF_CURRFATVAR_Size + \
356
                                BUF_VOLUMES_Size        ; внешние FAT переменные