Subversion Repositories pentevo

Rev

Rev 999 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?

  1.  
  2. ; LAST UPDATE: 25.11.2022 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 LOW (-0x05)-1               ; 0xFA страница ZX экрана 0
  14. ZXSCR_1         EQU LOW (-0x07)-1               ; 0xF8 страница ZX экрана 1
  15.  
  16. ; страницы памяти ZX стандарта
  17. ZXSTD_CPU1      EQU LOW (-0x05)-1; 0xFA         ; страница 1 окна проецирования
  18. ZXSTD_CPU2      EQU LOW (-0x02)-1; 0xFD         ; страница 2 окна проецирования
  19.  
  20. ; страницы RAM
  21. RAM_EVODOS      EQU 1                           ; страница копии EVO-DOS для перехвата
  22. RAM_FATVARS     EQU 2                           ; страница для переменых FAT
  23. RAM_BASIC       EQU 3                           ; страница BASIC стандартная версия
  24. RAM_PROFROM     EQU 4                           ; страница переменных PROFROM
  25. RAM_MOUNTER     EQU 5                           ; страница для монтирования образов
  26. RAM_STS         EQU 6                           ; страница для отладчика STS
  27. RAM_ADDSTS      EQU 7                           ; страница для отладки ROM
  28. RAM_SCR_FONT    EQU 8                           ; страница сохраненных экранов и фонтов
  29. RAM_TEMP        EQU 9                           ; страница всяких временных переменных
  30. RAM_RAMDISK     EQU 0x0A                        ; страница начала рамдиска
  31. RAM_DATARAMD    EQU 0x0B                        ; страница начала данных рамдиска
  32. RAM_TEMP2       EQU 0x3F                        ; страница сортировки файлов и просмотра содержимого образов
  33. RAM_FLASHER     EQU 0x40                        ; страница начала загрузки прошивки
  34. RAM_TAPE        EQU 0x60                        ; страница для загрузки TAP файла
  35.  
  36. ; страницы ROM
  37. ROM_ERS         EQU 0                           ; номер страницы ROM EVO RESET SERVICE
  38. ROM_BAS128      EQU 1                           ; номер страницы ROM BASIC 128
  39. ROM_DOS         EQU 2                           ; номер страницы ROM EVO-DOS для реальной дискеты
  40. ROM_BAS48       EQU 3                           ; номер страницы ROM BASIC 48
  41.  
  42. ROM_MAINMENU    EQU 5                           ; номер страницы упакованного главное меню
  43. ROM_RST80       EQU 6                           ; номер страницы ROM RST 8
  44. ROM_RST81       EQU 7                           ; номер страницы ROM RST 8
  45. ROM_RST82       EQU 8                           ; номер страницы ROM RST 8
  46. ROM_RST83       EQU 9                           ; номер страницы ROM RST 8
  47. ROM_ADD_DOS     EQU 0x0A                        ; номер страницы ROM EVO-DOS для эмуляции
  48. ROM_ADD_BAS48   EQU 0x0B                        ; номер страницы ROM BASIC 48
  49. ROM_BAS48_STD   EQU 0x18                        ; номер страницы ROM BASIC 48 (стандартная версия)
  50. ROM_BAS128_STD  EQU 0x19                        ; номер страницы ROM BASIC 128 (стандартная версия)
  51. ROM_BAS48_128   EQU 0x1A                        ; номер страницы ROM BASIC 48 (стандартная версия для BASIC 128)
  52. ROM_ATMCPM      EQU 0x1B                        ; номер страницы ROM АТМ CP/M
  53.  
  54. CONF4PROF       EQU 0x90                        ; стартовая страница для EVO PROFROM 128K
  55. CONF4GLUK       EQU 0x94                        ; стартовая страница для GLUK 64K
  56. CONF4CUSTOM     EQU 0x9C                        ; стартовая страница для пользовательской прошивки 64К
  57.  
  58. CPU0            EQU 0x0000                      ; начало окна проецирования 0
  59. CPU1            EQU 0x4000                      ; начало окна проецирования 1
  60. CPU2            EQU 0x8000                      ; начало окна проецирования 2
  61. CPU3            EQU 0xC000                      ; начало окна проецирования 3
  62.  
  63. ; маска кнопок мыши
  64.  BITMASK MOUSE_M_KEY,   2
  65.  BITMASK MOUSE_R_KEY,   1
  66.  BITMASK MOUSE_L_KEY,   0
  67. _MOUSE_WHEEL    EQU %11110000
  68.  
  69. ; скорости RS232
  70. BAUD110         EQU 115200/110
  71. BAUD150         EQU 115200/150
  72. BAUD300         EQU 115200/300
  73. BAUD600         EQU 115200/600
  74. BAUD1200        EQU 115200/1200
  75. BAUD2400        EQU 115200/2400
  76. BAUD4800        EQU 115200/4800
  77. BAUD9600        EQU 115200/9600
  78. BAUD19200       EQU 115200/19200
  79. BAUD38400       EQU 115200/38400
  80. BAUD57600       EQU 115200/57600
  81. BAUD115200      EQU 115200/115200
  82.  
  83. ; одностраничный текстмод
  84. LSYM            EQU 0x01C0                      ; смещение в странице начала левых символов текстмода
  85. LATTR           EQU 0x31C0                      ; смещение в странице начала левых атрибутов символов
  86. RSYM            EQU 0x11C0                      ; смещение в странице начала правых символов текстмода
  87. RATTR           EQU 0x21C1                      ; смещение в странице начала правых атрибутов символов
  88.  
  89. ; ATM текстмод
  90. ALSYM           EQU 0x01C0                      ; смещение в странице начала левых символов текстмода
  91. ALATTR          EQU 0x21C0                      ; смещение в странице начала левых атрибутов символов
  92. ARSYM           EQU 0x21C0                      ; смещение в странице начала правых символов текстмода
  93. ARATTR          EQU 0x01C1                      ; смещение в странице начала правых атрибутов символов
  94.  
  95. ; цвета и яркости
  96. BLACK           EQU 0
  97. BLUE            EQU 1
  98. RED             EQU 2
  99. MAGENTA         EQU 3
  100. GREEN           EQU 4
  101. CYAN            EQU 5
  102. YELLOW          EQU 6
  103. WHITE           EQU 7
  104. BR_INK          EQU 0x40
  105. BR_PAPER        EQU 0x80
  106.  
  107. ; цвета для ATM видеорежимов
  108.  BITMASK G_L,           7
  109.  BITMASK G_H,           4
  110.  BITMASK R_L,           6
  111.  BITMASK R_H,           1
  112.  BITMASK B_L,           5
  113.  BITMASK B_H,           0
  114.  
  115. ; маска порта 7FFD
  116.  BITMASK ZX_SCREEN,     3
  117.  BITMASK ZX_ROM,        4
  118.  
  119. ; маска порта 0xBF
  120.  BITMASK BREAK_BF,      4                       ; бит разрешения срабатывания BREAK на адресе
  121.  BITMASK NMI_BF,        3                       ; бит генерации NMI
  122.  BITMASK FONT_BF,       2                       ; бит разрешения изменения шрифта
  123.  BITMASK FLASH_BF,      1                       ; бит разрешения программирования FLASH
  124.  BITMASK SHADOW_BF,     0                       ; бит разрешения доступа к теневым портам
  125.  
  126. ; маска порта 0xEFF7
  127.  BITMASK PENT_CMOS,     7                       ; бит разрешения доступа к кмосу
  128.  BITMASK PENT_TURBO,    4                       ; турборежим пентагона
  129.  
  130. ; маски режимов
  131. MEMORY_ALL      EQU %00010000                   ; доступ к первому мегабайту через порт 0xEFF7
  132. MEMORY_48       EQU %00100000                   ; доступен только 48Kb памяти
  133. MEMORY_128      EQU %00110000                   ; доступно только 128Kb памяти
  134. TURBO_3         EQU %01000000                   ; частота процессора 3,5 МГц
  135. TURBO_7         EQU %10000000                   ; частота процессора 7 МГц
  136. TURBO_14        EQU %11000000                   ; частота процессора 14 МГц
  137. NUM_EGA         EQU %00000000                   ; номер видеорежима для ATM порта (EGA МОД 320*200)
  138. NUM_APPMULTI    EQU %00000010                   ; номер видеорежима для ATM порта (АППАРАТНЫЙ МУЛЬТИКОЛОР 640*200)
  139. NUM_ZXSCR       EQU %00000011                   ; номер видеорежима для ATM порта (ZX SCREEN 6912)
  140. NUM_TXTATM      EQU %00000110                   ; номер видеорежима для ATM порта (ATM текстмод 80*25)
  141. NUM_TXTSCR      EQU %00000111                   ; номер видеорежима для ATM порта (одностраничный текстмод 80*25)
  142.  
  143. SET_VIDEOMODE   EQU %00001000
  144.  
  145. ; номера видеорежимов с маской для записи в порт
  146. V_EGA           EQU NUM_EGA      | 0xA0
  147. V_APPMULTI      EQU NUM_APPMULTI | 0xA0
  148. V_ZXSCR         EQU NUM_ZXSCR    | 0xA0
  149. V_TXTATM        EQU NUM_TXTATM   | 0xA0
  150. V_TXT1PAGE      EQU NUM_TXTSCR   | 0xA0
  151.  
  152. ; маски отладчика
  153.  BITMASK DBG_ACTIV,     7                       ; активен отладчик
  154.  BITMASK TRACE_DBG,     6                       ; трассировка
  155.  BITMASK STEP_DBG,      5                       ; пошаговая отладка
  156. ; BITMASK CASH_INST,    4                       ; установлен CASH REMEMBER
  157. ; BITMASK CASH_ACTIV,   3                       ; активен CASH REMEMBER
  158.  
  159. ; смещения FDI образа
  160. FDI_TABLE_CYL   EQU 0x4000                      ; адрес таблицы начал дорожек в образе
  161. FDI_PAGE_START  EQU 0x40FF                      ; смещение в страницах начала секторов образа
  162. FDI_BYTE_SMESH  EQU 0x41FE                      ; смещение в байтах начала образа загруженного в рамдиск
  163. FDI_BLOCK_SMESH EQU 0x41FF                      ; смещение в блоках (по 256 байт) начала секторов образа
  164. FDI_IMAGE1SECT  EQU 0x4400                      ; адрес загрузки первого сектора для определения смещения
  165.  
  166. ; ячейки в CMOS
  167.  INIT_VAR
  168.  SETVAR _CMOS_SECOND                            ; секунды
  169.  SETVAR _CMOS_SECOND_AL                         ; секунды будильника
  170.  SETVAR _CMOS_MINUTE                            ; минуты
  171.  SETVAR _CMOS_MINUTE_AL                         ; минуты будильника
  172.  SETVAR _CMOS_HOUR                              ; часы
  173.  SETVAR _CMOS_HOUR_AL                           ; часы будильника
  174.  SETVAR _CMOS_DAY                               ; день недели
  175.  SETVAR _CMOS_DAY_MONTH                         ; день месяца
  176.  SETVAR _CMOS_MONTH                             ; месяц
  177.  SETVAR _CMOS_YEAR                              ; год
  178.  
  179. ; номера ячеек CMOS и их содержимое
  180. CRCCMOSHIGH     EQU 0xEF                        ; старший байт CRC CMOS
  181. CRCCMOSLOW      EQU 0xEE                        ; младший байт CRC CMOS
  182. CMOS_BYTE_00    EQU 0xED                        ; адрес хранения в CMOS
  183. CMOS_BYTE_01    EQU 0xEC                        ; адрес хранения в CMOS
  184. VIRT_REAL_DRIVE EQU 0xEB                        ; хранение номера реального и виртуального дисковода, тип DOS
  185. HDD_TIMEOUT     EQU 0xEA                        ; задержка опредения наличия винта после включения питания
  186. CMOS_BYTE_02    EQU 0xE9                        ; адрес хранения в CMOS
  187. CMOS_BYTE_03    EQU 0xE8                        ; адрес хранения в CMOS
  188.  
  189. ; ячейка CMOS 0xED CMOS_BYTE_00
  190.  BITMASK TURBO14,       7                       ; разрешение включения TURBO 14MHZ
  191.  BITMASK EMUL_TAPE,     6                       ; разрешение эмуляции загрузки с ленты
  192.  BITMASK PRINTER_AY,    5                       ; разрешение подмены драйвера печати в BASIC48
  193.  BITMASK RELOAD_FONT,   4                       ; разрешение перезагрузки шрифта при сбросе
  194.  BITMASK TYPE_FONT,     3                       ; выбор кодировки шрифта
  195.  BITMASK AUTO_TAPE,     2                       ; автозапуск TAP файлов
  196.  
  197. ; номера сбросов, биты 1-0 ячейки 0xED (CMOS_BYTE_00)
  198.  INIT_VAR
  199.  SETVAR RESET2EVOSERV                           ; сброс в EVO SERVICE
  200.  SETVAR RESET2GLUK                              ; сброс в GLUK SERVICE
  201.  SETVAR RESET2PROFROM                           ; сброс в PROFROM
  202.  SETVAR RESET2CUSTOM                            ; сброс в CUSTOM ROM
  203.  
  204. ; ячейка CMOS 0xEC CMOS_BYTE_01
  205.  BITMASK TURBO357,      7                       ; турбо режим 3,5 или 7 Мгц
  206.  BITMASK SD_NGS_ONOFF,  6                       ; включение/выключение доступа к SD КАРТЕ NEOGS
  207.  BITMASK AUTOMOUNT,     5                       ; вкл/выкл автомонтирования из файла
  208.  BITMASK CLOCK_VIEW,    4                       ; хранение отображение часов
  209.  BITMASK SOUNDKEYS,     3                       ; разрешение озвучивания нажатых клавиш
  210.  BITMASK REZIDENT,      2                       ; разрешение проверки наличия резидента
  211.  
  212. ; номера моделей памяти, биты 1-0 ячейки 0xEC (CMOS_BYTE_01)
  213.  INIT_VAR
  214.  SETVAR _1MB                                    ; память 1 Мб
  215.  SETVAR _48K                                    ; память 48 Кб
  216.  SETVAR _128K                                   ; память 128 Кб
  217.  
  218. KOL_MODES       EQU 4                           ; количество режимов сброса
  219. MKOL_MODES      EQU %00000011                   ; маска для количества режимов сброса
  220.  
  221. ; ячейка CMOS 0xEB
  222.  BITMASK ACCESSZCSD,    7                       ; разрешение доступа к ZC SD CARD
  223.  BITMASK ACCESSSDG,     6                       ; разрешения доступа к SD карте NEOGS
  224.  BITMASK ACCESSHDDM,    5                       ; разрешение доступа к HDD MASTER
  225.  BITMASK ACCESSHDDS,    4                       ; разрешение доступа к HDD SLAVE
  226. _REAL_DRIVE     EQU %00001100                   ; маска номера реального дисковода
  227. _VIRT_DRIVE     EQU %00000011                   ; маска номера виртуального дисковода
  228.  
  229. ; ячейка CMOS 0xE9
  230.  BITMASK AUTOBOOT,      7                       ; автостарт загружаемого устройства
  231. BOOTDEVICE      EQU %00000011                   ; номер загружаемого устройства
  232.  
  233. ; ячейка CMOS 0xE8
  234.  BITMASK KILL_REZIDENT, 7                       ; изменение резидента перед запуском
  235.  
  236. ; номера загружаемых устройств
  237.  INIT_VAR
  238.  SETVAR _FDD                                    ; дисковод
  239.  SETVAR _HDD                                    ; винчестер
  240.  SETVAR _SD                                     ; SD карта
  241.  
  242. _SD_NONE        EQU 0x80                        ; признак не вставленной карты
  243.  
  244. ; переменные для 0 окна проецирования
  245. DEBUG_ONOFF     EQU 0x0013                      ; вкл/выкл отладчика
  246. ADR_SEL_ROM     EQU 0x0014                      ; адрес переключения страниц ROM
  247. CONT_RST8       EQU 0x002C                      ; адрес продолжения обработки RST 8
  248. CONTINUE_MAGIC  EQU 0x0034                      ; адрес перехода продолжения обработчика MAGIC
  249. ADR_PERFECT     EQU 0x0036                      ; адрес расположения PERFECT COMANDER
  250. EI_RET          EQU 0x003E                      ; адрес расположения EI:RET
  251. UNP_DOS_FE      EQU 0x0040                      ; адрес распаковщика DOS FE
  252. UNP_SONGLN      EQU 0x0043                      ; адрес распаковки SONGLINES
  253. UNPACK          EQU 0x0080                      ; адрес распаковщика
  254. _BIOS_JUMPS     EQU 0x0100                      ; адрес начала таблицы переходов в драйверы девайсов
  255. ADRBRK_EMUTAP   EQU 0x0569                      ; адрес установки бряка для эмуляции загрузки TAP
  256. START_STS       EQU 0xC000                      ; адрес входа в отладчик
  257. ADR_RST8END     EQU 0x3CE8                      ; адрес возврата из RST 8
  258. ICALL2PAGE      EQU 0x8000                      ; адрес вызывов кода из другой страницы
  259.  
  260.  INIT_VAR
  261.  SETVAR OFFSET_FNTSAVE,         0x800           ; смещение в странице для сохранения считанного шрифта
  262.  SETVAR OFFSET_BUFSYM,          0x800           ; смещение в странице текущего шрифта
  263.  SETVAR OFFSET_SCRSAVE,         0x1B00          ; смещение в странице для сохранения экрана
  264.  SETVAR OFFSET_USBDRV,          0               ; ??? смещение до начала USB драйвера
  265.  
  266. BUF_512         EQU CPU3-0x200                  ; буфер сектора
  267. BUF_TABLVOL     EQU BUF_512-0x100               ; буфер таблицы найденных разделов
  268. BUF_TEKVOL      EQU BUF_TABLVOL-0x100           ; буфер выбранного раздела
  269. BUF_TDIRCLS     EQU BUF_TEKVOL-0x800            ; буфер кластеров текущей директории
  270. BUF_256         EQU BUF_TDIRCLS-0x100           ; буфер 256 байт для переносов
  271. BUF_PATH        EQU BUF_256-0x100               ; буфер текущего пути
  272. MOUNT_DRIVES    EQU BUF_PATH-0x100              ; буфер описателей примонтированных файлов
  273. BUF_LEVELDIR    EQU MOUNT_DRIVES-0x100          ; буфер сохранения позиций окон при переходах по директориям
  274. BUF_WINPATH     EQU BUF_LEVELDIR-0x400          ; буфер сохранения позиций в окне при хождении по директориям
  275.  
  276. ; переменные для менеджера устройств
  277.  INIT_VAR BUF_TABLVOL + 0xE0
  278.  SETVAR DEVICES,                0x10            ; список обнаруженных девайсов
  279.  SETVAR GO_DEV,                 WORD            ; адрес вызова драйвера устройства
  280.  SETVAR KOLDVOL,                BYTE            ; количество найденных разделов
  281.  SETVAR SETDVOL,                BYTE            ; номер выбранного раздела
  282.  SETVAR ADRTEKV,                WORD            ; адрес описателя текущего раздела
  283.  SETVAR SAVE_TEK_VOL,           BYTE            ; временное сохранение текущего раздела
  284.  SETVAR TEK_TYPE,               BYTE            ; временное хранение типа текущего устройства
  285.  SETVAR FLAGS_DRV,              BYTE            ; флаговый байт драйверов
  286. ;7 =0-драйвер SD карты NEOGS не установлен, =1-установлен
  287. ;6
  288. ;5
  289. ;4
  290. ;3
  291. ;2
  292. ;1 =0-SD ZC карта не обнаружена, 1-обнаружена
  293. ;0 =0-SD NeoGS не обнаружена, 1-обнаружена
  294. CRC_DRVS        EQU BUF_TABLVOL + 0xFE          ; контрольная сумма таблицы найденных разделов
  295.  
  296. ; переменные для 1 окна проецирования
  297.  INIT_VAR
  298.  SETVAR BUF_ALLVOL,             0x1000          ; буфер переменных для всех разделов (16 MAX)
  299.  SETVAR MOUNT_CLS,              0x1000          ; буфер кластеров примонтированных файлов
  300.  SETVAR TEK_BUFPATH,            0x1000          ; буфер текущих путей на разделах
  301.  SETVAR BUF_PATHMOUNT,          0x400           ; буфер путей для поиска примонтированных файлов
  302.  SETVAR BUF_DIRCEP,             0x100           ; буфер цепочки текущей директории
  303.  SETVAR BUF_TEMPSEC,            0x200           ; буфер сектора для загрузки образов
  304.