Subversion Repositories pentevo

Rev

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

  1.  
  2. ; LAST UPDATE: 16.02.2025 savelij
  3.  
  4.                 include ports_evo.a80
  5.  
  6. ; страницы VIDEO RAM
  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 экран
  13. ZXSCR_0         EQU VMODE6_0M                   ; 0xFA страница ZX экрана 0
  14. ZXSCR_1         EQU LOW (-0x07)-1               ; 0xF8 страница ZX экрана 1
  15.  
  16. ; страницы памяти ZX стандарта
  17. ZXSTD_CPU1      EQU VMODE6_0M                   ; 0xFA страница 1 окна проецирования
  18. ZXSTD_CPU2      EQU LOW (-0x02)-1               ; 0xFD страница 2 окна проецирования
  19.  
  20. ; страницы RAM
  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                  ; страница начала загрузки прошивки
  36.  
  37. ; страницы ROM
  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. ; страницы конфигов
  58. CONF4PROF       EQU 0x90                        ; стартовая страница для EVO PROFROM 128K
  59. CONF4GLUK       EQU 0x94                        ; стартовая страница для GLUK 64K
  60. CONF4CUSTOM     EQU 0x9C                        ; стартовая страница для пользовательской прошивки 64К
  61.  
  62. ; границы страниц
  63. CPU0            EQU 0x0000                      ; начало окна проецирования 0
  64. CPU1            EQU 0x4000                      ; начало окна проецирования 1
  65. CPU2            EQU 0x8000                      ; начало окна проецирования 2
  66. CPU3            EQU 0xC000                      ; начало окна проецирования 3
  67.  
  68. ; маска кнопок мыши
  69.  BITMASK MOUSE_M_KEY,   2
  70.  BITMASK MOUSE_R_KEY,   1
  71.  BITMASK MOUSE_L_KEY,   0
  72. _MOUSE_WHEEL    EQU %11110000
  73.  
  74. ; скорости RS232
  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.  
  88. ; одностраничный текстмод
  89. LSYM            EQU 0x01C0                      ; смещение в странице начала левых символов текстмода
  90. LATTR           EQU 0x31C0                      ; смещение в странице начала левых атрибутов символов
  91. RSYM            EQU 0x11C0                      ; смещение в странице начала правых символов текстмода
  92. RATTR           EQU 0x21C1                      ; смещение в странице начала правых атрибутов символов
  93.  
  94. ; ATM текстмод
  95. ALSYM           EQU 0x01C0                      ; смещение в странице начала левых символов текстмода
  96. ALATTR          EQU 0x21C0                      ; смещение в странице начала левых атрибутов символов
  97. ARSYM           EQU 0x21C0                      ; смещение в странице начала правых символов текстмода
  98. ARATTR          EQU 0x01C1                      ; смещение в странице начала правых атрибутов символов
  99.  
  100. ; цвета и яркости
  101. BLACK           EQU 0
  102. BLUE            EQU 1
  103. RED             EQU 2
  104. MAGENTA         EQU 3
  105. GREEN           EQU 4
  106. CYAN            EQU 5
  107. YELLOW          EQU 6
  108. WHITE           EQU 7
  109. BR_INK          EQU 0x40
  110. BR_PAPER        EQU 0x80
  111.  
  112. ; цвета для ATM видеорежимов
  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
  119.  
  120. ; маска порта 7FFD
  121.  BITMASK ZX_SCREEN,             3
  122.  BITMASK ZX_ROM,                4
  123.  
  124. ; маска порта 0xBF
  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               ; бит разрешения доступа к теневым портам
  130.  
  131. ; маска порта 0xEFF7
  132.  BITMASK PENT_CMOS,     7                       ; бит разрешения доступа к кмосу
  133.  BITMASK PENT_TURBO,    4                       ; турборежим пентагона
  134.  
  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)
  147.  
  148. SET_VIDEOMODE   EQU %00001000
  149.  
  150. ; номера видеорежимов с маской для записи в порт
  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
  156.  
  157. ; маски отладчика
  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
  164.  
  165. ; смещения FDI образа
  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                      ; адрес загрузки первого сектора для определения смещения
  171.  
  172. ; ячейки в CMOS
  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
  225.  
  226. ; ячейка CMOS 0xED CMOS_BYTE_00
  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 файлов
  234.  
  235. ; номера сбросов, биты 1-0 ячейки 0xED (CMOS_BYTE_00)
  236.  _INIT_VAR
  237.  _SETVAR .RESET2EVOSERV                         ; сброс в EVO SERVICE
  238.  _SETVAR .RESET2GLUK                            ; сброс в GLUK SERVICE
  239.  _SETVAR .RESET2PROFROM                         ; сброс в PROFROM
  240.  _SETVAR .RESET2CUSTOM                          ; сброс в CUSTOM ROM
  241.  
  242. ; ячейка CMOS 0xEC CMOS_BYTE_01
  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               ; разрешение проверки наличия резидента
  250.  
  251. ; номера моделей памяти, биты 1-0 ячейки 0xEC (CMOS_BYTE_01)
  252.  _INIT_VAR
  253.  _SETVAR ._1MB                                  ; память 1 Мб
  254.  _SETVAR ._48K                                  ; память 48 Кб
  255.  _SETVAR ._128K                                 ; память 128 Кб
  256.  
  257. .KOL_MODES      EQU 4                           ; количество режимов сброса
  258. .MKOL_MODES     EQU %00000011                   ; маска для количества режимов сброса
  259.  
  260. ; ячейка CMOS 0xEB
  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                   ; маска номера виртуального дисковода
  267.  
  268. ; ячейка CMOS 0xEA
  269. CMOS_EA
  270. .SCREENSAVER    EQU %11110000                   ; таймаут до запуска скринсейвера
  271. .DETECTHDD      EQU %00001111                   ; таймаут до начала детекта HDD
  272.  
  273. ; ячейка CMOS 0xE9
  274. CMOS_E9
  275.  _BITMASK KILL_REZIDENT,        7               ; изменение резидента перед запуском
  276.  _BITMASK AUTOBOOT,             6               ; автостарт загружаемого устройства
  277. .BOOTDEVICE     EQU %00000011                   ; номер загружаемого устройства
  278.  
  279. ; номера загружаемых устройств
  280.  INIT_VAR
  281.  SETVAR _FDD                                    ; дисковод
  282.  SETVAR _HDD                                    ; винчестер
  283.  SETVAR _SD                                     ; SD карта
  284.  
  285. _SD_NONE        EQU 0x80                        ; признак не вставленной карты
  286.  
  287. ; переменные для 0 окна проецирования
  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                      ; адрес вызывов кода из другой страницы
  302.  
  303.  INIT_VAR
  304.  SETVAR OFFSET_FNTSAVE,         0x800           ; смещение в странице для сохранения считанного шрифта
  305.  SETVAR OFFSET_BUFSYM,          0x800           ; смещение в странице текущего шрифта
  306.  SETVAR OFFSET_SCRSAVE,         0x1B00          ; смещение в странице для сохранения экрана
  307.  SETVAR OFFSET_USBDRV,          0               ; ??? смещение до начала USB драйвера
  308.  
  309. ; переменные для менеджера устройств
  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            ; флаговый байт драйверов
  320. ;7 =0-драйвер SD карты NEOGS не установлен, =1-установлен
  321. ;6
  322. ;5
  323. ;4
  324. ;3
  325. ;2
  326. ;1 =0-SD ZC карта не обнаружена, 1-обнаружена
  327. ;0 =0-SD NeoGS не обнаружен, 1-обнаружен
  328.  
  329. ; переменные для 1 окна проецирования
  330.  INIT_VAR
  331.  SETVAR BUF_ALLVOL,             16 * 0x100      ; буфер переменных для всех разделов (16 MAX)
  332.  SETVAR MOUNT_CLS,              0x1000          ; буфер кластеров примонтированных файлов
  333.  SETVAR BUF_CURRPATH,           0x1000          ; буфер текущих путей на разделах
  334.  SETVAR BUF_PATHMOUNT,          0x400           ; буфер путей для поиска примонтированных файлов
  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 переменные
  357.