Subversion Repositories pentevo

Rev

Rev 961 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1.  
  2. ; LAST UPDATE: 23.12.2021 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. G_L             EQU %10000000
  109. G_H             EQU %00010000
  110. R_L             EQU %01000000
  111. R_H             EQU %00000010
  112. B_L             EQU %00100000
  113. B_H             EQU %00000001
  114.  
  115. ; маска порта 7FFD
  116. ZX_SCREEN       EQU %00001000
  117. ZX_ROM          EQU %00010000
  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. _CMOS_SECOND    EQU 0                           ; секунды
  168. _CMOS_SECOND_AL EQU 1                           ; секунды будильника
  169. _CMOS_MINUTE    EQU 2                           ; минуты
  170. _CMOS_MINUTE_AL EQU 3                           ; минуты будильника
  171. _CMOS_HOUR      EQU 4                           ; часы
  172. _CMOS_HOUR_AL   EQU 5                           ; часы будильника
  173. _CMOS_DAY       EQU 6                           ; день недели
  174. _CMOS_DAY_MONTH EQU 7                           ; день месяца
  175. _CMOS_MONTH     EQU 8                           ; месяц
  176. _CMOS_YEAR      EQU 9                           ; год
  177.  
  178. ; номера ячеек CMOS и их содержимое
  179. CRCCMOSHIGH     EQU 0XEF                        ; старший байт CRC CMOS
  180. CRCCMOSLOW      EQU 0XEE                        ; младший байт CRC CMOS
  181. CMOS_BYTE_00    EQU 0XED                        ; адрес хранения в CMOS
  182. CMOS_BYTE_01    EQU 0XEC                        ; адрес хранения в CMOS
  183. VIRT_REAL_DRIVE EQU 0XEB                        ; хранение номера реального и виртуального дисковода, тип DOS
  184. HDD_TIMEOUT     EQU 0XEA                        ; задержка опредения наличия винта после включения питания
  185. CMOS_BYTE_02    EQU 0XE9                        ; адрес хранения в CMOS
  186. CMOS_BYTE_03    EQU 0XE8                        ; адрес хранения в CMOS
  187.  
  188. ; ячейка CMOS 0xED CMOS_BYTE_00
  189.  BITMASK TURBO14,       7                       ; разрешение включения TURBO 14MHZ
  190.  BITMASK EMUL_TAPE,     6                       ; разрешение эмуляции загрузки с ленты
  191.  BITMASK PRINTER_AY,    5                       ; разрешение подмены драйвера печати в BASIC48
  192.  BITMASK RELOAD_FONT,   4                       ; разрешение перезагрузки шрифта при сбросе
  193.  BITMASK TYPE_FONT,     3                       ; выбор кодировки шрифта
  194.  BITMASK AUTO_TAPE,     2                       ; автозапуск TAP файлов
  195.  
  196. ; номера сбросов, биты 1-0 ячейки 0xED (CMOS_BYTE_00)
  197. RESET2CUSTOM    EQU 3                           ; сброс в CUSTOM ROM
  198. RESET2PROFROM   EQU 2                           ; сброс в PROFROM
  199. RESET2GLUK      EQU 1                           ; сброс в GLUK SERVICE
  200. RESET2EVOSERV   EQU 0                           ; сброс в EVO SERVICE
  201.  
  202. ; ячейка CMOS 0xEC CMOS_BYTE_01
  203.  BITMASK TURBO357,      7                       ; турбо режим 3,5 или 7 Мгц
  204.  BITMASK SD_NGS_ONOFF,  6                       ; включение/выключение доступа к SD КАРТЕ NEOGS
  205.  BITMASK AUTOMOUNT,     5                       ; вкл/выкл автомонтирования из файла
  206.  BITMASK CLOCK_VIEW,    4                       ; хранение отображение часов
  207.  BITMASK SOUNDKEYS,     3                       ; разрешение озвучивания нажатых клавиш
  208.  BITMASK REZIDENT,      2                       ; разрешение проверки наличия резидента
  209.  
  210. ; номера моделей памяти, биты 1-0 ячейки 0xEC (CMOS_BYTE_01)
  211. _128K           EQU 2                           ; память 128 Кб
  212. _48K            EQU 1                           ; память 48 Кб
  213. _1MB            EQU 0                           ; память 1 Мб
  214.  
  215. KOL_MODES       EQU 4                           ; количество режимов сброса
  216. MKOL_MODES      EQU 3                           ; маска для количества режимов сброса
  217.  
  218. ; ячейка CMOS 0xEB
  219.  BITMASK ACCESSZCSD,    7                       ; разрешение доступа к ZC SD CARD
  220.  BITMASK ACCESSSDG,     6                       ; разрешения доступа к SD карте NEOGS
  221.  BITMASK ACCESSHDDM,    5                       ; разрешение доступа к HDD MASTER
  222.  BITMASK ACCESSHDDS,    4                       ; разрешение доступа к HDD SLAVE
  223. _REAL_DRIVE     EQU %00001100                   ; маска номера реального дисковода
  224. _VIRT_DRIVE     EQU %00000011                   ; маска номера виртуального дисковода
  225.  
  226. ; ячейка CMOS 0xE9
  227.  BITMASK AUTOBOOT,      7                       ; автостарт загружаемого устройства
  228. BOOTDEVICE      EQU %00000011                   ; номер загружаемого устройства
  229.  
  230. ; ячейка CMOS 0xE8
  231.  BITMASK KILL_REZIDENT, 7                       ; изменение резидента перед запуском
  232.  
  233. ; номера загружаемых устройств
  234. _SD             EQU 2                           ; SD карта
  235. _HDD            EQU 1                           ; винчестер
  236. _FDD            EQU 0                           ; дисковод
  237.  
  238. _SD_NONE        EQU 0X80                        ; признак не вставленной карты
  239.  
  240. ; переменные для 0 окна проецирования
  241. DEBUG_ONOFF     EQU 0X0013                      ; вкл/выкл отладчика
  242. ADR_SEL_ROM     EQU 0X0014                      ; адрес переключения страниц ROM
  243. CONT_RST8       EQU 0X002C                      ; адрес продолжения обработки RST 8
  244. CONTINUE_MAGIC  EQU 0X0034                      ; адрес перехода продолжения обработчика MAGIC
  245. ADR_PERFECT     EQU 0X0036                      ; адрес расположения PERFECT COMANDER
  246. EI_RET          EQU 0X003E                      ; адрес расположения EI:RET
  247. UNP_DOS_FE      EQU 0X0040                      ; адрес распаковщика DOS FE
  248. UNP_SONGLN      EQU 0X0043                      ; адрес распаковки SONGLINES
  249. UNPACK          EQU 0X0080                      ; адрес распаковщика
  250. _BIOS_JUMPS     EQU 0X0100                      ; адрес начала таблицы переходов в драйверы девайсов
  251. ADRBRK_EMUTAP   EQU 0X0569                      ; адрес установки бряка для эмуляции загрузки TAP
  252. START_STS       EQU 0XC000                      ; адрес входа в отладчик
  253. ADR_RST8END     EQU 0X3CE8                      ; адрес возврата из RST 8
  254. ICALL2PAGE      EQU 0X8000                      ; адрес вызывов кода из другой страницы
  255.  
  256. OFFSET_FNTSAVE  EQU 0                           ;800 смещение в странице для сохранения считанного шрифта
  257. OFFSET_BUFSYM   EQU OFFSET_FNTSAVE+0X800        ;800 смещение в странице текущего шрифта
  258. OFFSET_SCRSAVE  EQU OFFSET_BUFSYM+0X800         ;1B00 смещение в странице для сохранения экрана
  259. OFFSET_USBDRV   EQU OFFSET_SCRSAVE+0X1B00       ;??? смещение до начала USB драйвера
  260.  
  261. BUF_512         EQU CPU3-0X200                  ;200 буфер сектора
  262. BUF_TABLVOL     EQU BUF_512-0X100               ;100 буфер таблицы найденных разделов
  263. BUF_TEKVOL      EQU BUF_TABLVOL-0X100           ;100 буфер выбранного раздела
  264. BUF_TDIRCLS     EQU BUF_TEKVOL-0X800            ;800 буфер кластеров текущей директории
  265. BUF_256         EQU BUF_TDIRCLS-0X100           ;100 буфер 256 байт для переносов
  266. BUF_PATH        EQU BUF_256-0X100               ;100 буфер текущего пути
  267. MOUNT_DRIVES    EQU BUF_PATH-0X100              ;100 буфер описателей примонтированных файлов
  268. BUF_LEVELDIR    EQU MOUNT_DRIVES-0X100          ;200 буфер сохранения позиций окон при переходах по директориям
  269. BUF_WINPATH     EQU BUF_LEVELDIR-0X400          ;400 буфер сохранения позиций в окне при хождении по директориям
  270.  
  271. ; переменные для менеджера устройств
  272. DEVICES         EQU BUF_TABLVOL+0XE0            ;10 список обнаруженных девайсов
  273. GO_DEV          EQU DEVICES+0X10                ;2 адрес вызова драйвера устройства
  274. KOLDVOL         EQU GO_DEV+2                    ;1 количество найденных разделов
  275. SETDVOL         EQU KOLDVOL+1                   ;1 номер выбранного раздела
  276. ADRTEKV         EQU SETDVOL+1                   ;2 адрес описателя текущего раздела
  277. SAVE_TEK_VOL    EQU ADRTEKV+2                   ;1 временное сохранение текущего раздела
  278. TEK_TYPE        EQU SAVE_TEK_VOL+1              ;1 временное хранение типа текущего устройства
  279. FLAGS_DRV       EQU TEK_TYPE+1                  ;1 флаговый байт драйверов
  280. ;7 =0-драйвер SD карты NEOGS не установлен, =1-установлен
  281. ;6
  282. ;5
  283. ;4
  284. ;3
  285. ;2
  286. ;1 =0-SD ZC карта не обнаружена, 1-обнаружена
  287. ;0 =0-SD NeoGS не обнаружена, 1-обнаружена
  288. CRC_DRVS        EQU BUF_TABLVOL+0XFE            ;2 контрольная сумма таблицы найденных разделов
  289.  
  290. ; переменные для 1 окна проецирования
  291.  INIT_VAR
  292.  SETVAR BUF_ALLVOL,     0x1000                  ;1000 буфер переменных для всех разделов (16 MAX)
  293.  SETVAR MOUNT_CLS,      0x1000                  ;1000 буфер кластеров примонтированных файлов
  294.  SETVAR TEK_BUFPATH,    0x1000                  ;1000 буфер текущих путей на разделах
  295.  SETVAR BUF_PATHMOUNT,  0x400                   ;400 буфер путей для поиска примонтированных файлов
  296.  SETVAR BUF_DIRCEP,     0x100                   ;100 буфер цепочки текущей директории
  297.  SETVAR BUF_TEMPSEC,    0x200                   ;200 буфер сектора для загрузки образов
  298.