/* Всякие директивы для какого - то компилятора .LION EQU 0 .FLEX EQU 1 .IBMK EQU 1 .PROJ1 EQU 0 .PROJ2 EQU 0 .PROJ3 EQU 1 .PROJ4 EQU 1 .PAL EQU 1 */ ;ELCOM256 EQU 1 ; режим ELCOM-256 ;IF ELCOM256 EQ 1 D_TBON EQU 3 ; данные для включения TURBO D_TBOFF EQU 2 ; данные для включения TURBO D_ROM16ON EQU 1 D_ROM16OFF EQU 0 CNF_0 EQU 04h ; карта портов 0 CNF_1 EQU 0Ch ; карта портов 1 CNF_2 EQU 14h ; карта портов 2 CNF_3 EQU 1Ch ; карта портов 3 CNF_512 EQU 80h ; включение Pentagon 128 CBL_DIR EQU 78 ; порт управления COVOX-Blaster ; bit 7 - 1 включить CBL ;ELSE ;D_TBON EQU 03h ; данные для включения TURBO ;D_TBOFF EQU 02h ; данные для включения TURBO ;D_ROM16ON EQU 40h ;D_ROM16OFF EQU 00h ;CNF_0 EQU 04h ;CNF_1 EQU 0Ch ;CNF_2 EQU 14h ;CNF_3 EQU 1Ch ;ENDIF SPRINTER EQU 4 ; ВЕРСИЯ !!! ISD_WARM EQU 3 ISD_COLD EQU 0 IS_KEY EQU 40h ; ДАННЫЕ ДЛЯ ВЫВОДА В ПОРТ ПРИ ВКЛЮЧЕНИИ IS-DOS IS_RAM_ADR EQU 5BC0h ; АДРЕС ЗАГРУЗКИ ПРОГРАММЫ ПЕРЕХОДА В IS-DOS TB_WAITES EQU 00H ; WAITы для TURBO-MODE NTB_WAITES EQU 00H ; WAITы для neTURBO-MODE IS_WAITES EQU 00H ; WAITы для IS-DOS ;**************************************** ;SYS_PORT_ON EQU 07DH ;SYS_PORT_OFF EQU 03DH SYS_PORT_ON EQU 07CH SYS_PORT_OFF EQU 03CH CASH_ON EQU #FB ;Включение кэша IN A,(CASH_ON) CASH_OFF EQU #7B ;Отключение кэша IN A,(CASH_OFF) CASH_PAGE EQU #5C ;Переключение страниц кэша PAL_V_PAGE EQU 09EH PAL_SCP EQU 01EH CNF_PAGE EQU 040H ; страница портов SYS_PAGE EQU 0FEH MODE_PAGE EQU 0FCH ;SCR_PAGE EQU 0FDH ;PAL_PAGE EQU 0FDH KBD_COM EQU 1Bh KBD_DAT EQU 1Ah COM_B EQU 1Bh DAT_B EQU 1Ah COM_A EQU 19h DAT_A EQU 18h LPT1_D EQU 1CH LPT1_C EQU 1DH LPT2_D EQU 1EH LPT2_C EQU 1FH STC0_C EQU 10H STC1_C EQU 11H STC2_C EQU 12H STC3_C EQU 13H RAMD_LET EQU ('R' - 'A') P_KBD_OUT EQU 0F8H P_KBD_IN EQU 0FEH ;*************************************** ;HD_HEADS EQU 5 HD_CS EQU 0A0H ;HD_S_P_T EQU 17 ;HD_S_X_H EQU (HD_S_P_T * HD_HEADS) ; ??? число секторое на цилиндре P_DATS EQU 050H ; READ/WRITE INIR/OTIR P_ERR EQU 051H ; READ P_PREC EQU 151H ; WRITE P_S_CNT EQU 152H ; P_S_NUM EQU 153H P_C_LOW EQU 154H P_C_HIG EQU 155H ;<-\ P_HD_CS EQU 4152H ;<-/ P_HDST EQU 4053H ; READ P_CMD EQU 4153H ; WRITE P_HD3F6 EQU 4154H ; WRITE 3F6 P_HD3F7 EQU 4055H ; READ 3F7 ;*************************************** CMOS_DRD EQU 0FFBDh CMOS_DWR EQU 0BFBDh CMOS_AWR EQU 0DFBDh ISA_PORT EQU 09FBDh ;*************************************** SEC_SIZE EQU 11 CLAST_SIZE EQU 13 RESERV_SECS EQU 14 FATS_NUM EQU 16 FLS_NUM EQU 17 S_P_D EQU 19 FORM_CODE EQU 21 S_P_F EQU 22 S_P_T EQU 24 H_P_S EQU 26 SPECIAL_SECS EQU 28 FAT_ID EQU 36H ;*************************************** SYSTEM_ID EQU 0C020H SYS_SP EQU 0C0FEH ; ДОПОЛНИТЕЛЬНЫЙ СТЕК DISK_TYPE EQU 0C100H ; переадресация дисков COPY_PAGE0 EQU 0C104H ; копии значений портов страниц COPY_PAGE1 EQU 0C105H COPY_PAGE2 EQU 0C106H COPY_PAGE3 EQU 0C107H RAMD_VARS EQU 0C108H ; переменные RAM-дисков A_RAMD_VARS EQU 0C118H ; текущий RAM-Disk SP_SAVE EQU 0C11AH ; место для сохранения адреса стека ERR_SAVE EQU 0C11CH COPY_RGADR EQU 0C11DH RAM_MSD EQU 0C11EH ; страница для работы в MS-DOS MSD_SECS EQU 0C11FH ; Число секторов в MS-DOS MSD_NAME EQU 0C120H ; Адрес имени найденного файла ;MSD_FAT_SEC EQU 0C122H ; начальный сектор FAT INT_ADRESS EQU 0C124H ; начальный сектор CAT INT_PAGE EQU 0C126H ; начальный сектор DAT DS_1440 EQU 0C128H ; флаги переключения 720/1440 F_P_S EQU 0C129H ; число файловых записей в секторе S_P_C EQU 0C12AH ; число секторов каталога COUNT_FL EQU 0C12BH ; счетчик файлов в секторе COUNT_SEC EQU 0C12CH ; счетчик секторов в каталоге C_P_B EQU 0C12DH ; число кластеров на блок ОЗУ ;CLASTER_LEN EQU 0C12EH ; длина кластера в байтах FAT_FLAG EQU 0C130H ; FAT флаг + FAT sector MSD_CONT_SEC EQU 0C132H ; текущий сектор для MS-DOS MSD_CONT_SEC2 EQU 0C134H S_X_H EQU 0C136H ; количество секторов на цилиндре CONFIG_ALL EQU 0C138H ; описатель конфигурации CONFIG_DE EQU 0C13AH ; описатель конфигурации CONFIG_BYTE EQU 0C13EH ; байт конфигурации WIN_MAP_SC EQU 0C140H WIN_TAB_SC EQU 0C142H WIN_SAV_HL EQU 0C144H WIN_SAV_DE EQU 0C146H WIN_SAV_BC EQU 0C148H WIN_ZG EQU 0C14AH WIN_PLACE_WIN EQU 0C14CH WIN_GR_MAP EQU 0C14EH SYS_WORK1 EQU 0C150H SYS_WORK2 EQU 0C152H SYS_WORK3 EQU 0C154H SYS_WORK4 EQU 0C156H WIN_MAP_LAB1 EQU 0C158H WIN_MODE_SH EQU 0C15CH WIN_MODE_SC EQU 0C15EH MSD_FAT_SEC EQU 0C160H ; начальный сектор FAT MSD_FAT_SEC2 EQU 0C162H ; начальный сектор FAT MSD_CAT_SEC EQU 0C164H ; начальный сектор CAT MSD_CAT_SEC2 EQU 0C166H ; начальный сектор CAT MSD_DAT_SEC EQU 0C168H ; начальный сектор DAT MSD_DAT_SEC2 EQU 0C16AH ; начальный сектор DAT CLASTER_LEN EQU 0C16CH ; длина кластера в байтах CLASTER_LEN2 EQU 0C16EH ; длина кластера в байтах ;CMOS_FLAG_1 EQU 0C170H GR_BIT_END EQU 7 S_BIT_END EQU 7 S_BIT_LIN EQU 6 S_BIT_MOD EQU 5 BIT_1440 EQU 1 BIT_MASK_1440 EQU 00000010B RAMD_KEYS EQU 0C180H ; ключи RAM-Disks RAMD_KEY_NUM EQU 16 LIB_TABLE EQU 0C1A0H ; таблицы librares 32 байта ; +0 библиотека DOS HDD_INI_TABLE EQU 0C1C0H ; таблицы для ide устройств 32 байта ; 0 - копия DRV_HEAD ; 1 - секторов на дорожке ; 2 - число головок ; 3 - количество цилиндров мл. ; 4 - количество цилиндров старший. ; 5 - секторов на цилиндр мл. ; 6 - секторов на цилиндр старш. ; 7 - reserv - type FDD_INI_TABLE EQU 0C1E0H ; таблицы для FDD устройств 32 байта RAMD_FAT EQU 0C200H ; расположение блоков RAM-Disk-ов MS_BPB EQU 0C400H ; буфер BPB MS_DIR EQU 0C800H ; буфер DIR sector MS_FAT EQU 0CC00H ; буфер FAT sector MS_BUF EQU 0D000H ; буфер DAT sector HD_IDF_ADR EQU 0C600H WIN_MAP_IX EQU 0E000H ; данные карт окон TASK_DATA EQU 0EC00H ; данные для задач ; ***** - Оконные переменные - ***** 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 USER_VARS EQU 0F000h ; переменные пользователей ;SW_ROM EQU 3CF9H ; IF .PROJ4 ;RGADR EQU 0D0H ;RGSCR EQU 0D1H ;RGMOD EQU 0D2H ;RGACC EQU 0D3H ;PGACC EQU 0FCH ;PAGE0 EQU 0C0H ;PAGE1 EQU 0C5H ;PAGE2 EQU 0C2H ;PAGE3 EQU 0C0H ; ELSE ; ENDIF PAGE0 EQU 082H ; номер банки 0 PAGE1 EQU 0A2H ; номер банки 1 PAGE2 EQU 0C2H ; номер банки 2 PAGE3 EQU 0E2H ; номер банки 3 ;RGADR EQU 089H ;RGSCR EQU 0A9H ;RGMOD EQU 099H ;RGACC EQU 0B9H PORT_Y EQU 089H RGADR EQU 089H RGSCR EQU 0E9H RGMOD EQU 0C9H ;RGACC EQU 0A9H ;PGACC EQU 0FCH CNF_PORT EQU 7Ch ALTERA EQU 1400H WG_COM EQU 00FH WG_TRK EQU 03FH WG_SEC EQU 05FH WG_DATA EQU 07FH P_DOS_FF EQU 0FFH BUFER_RD EQU 5D25H PR_BUFER EQU 05B00H AUTO_5B08 EQU 05B08H AUTO_5B5C EQU 05B5CH COPY_P128 EQU 05B5CH AUTO_5BFF EQU 05BFFH K_STATE EQU 05C00H KEY_TIME EQU 05C09H REP_K_TYME EQU 05C10H ZG EQU 05C36H ERR_BEEP EQU 05C38H KEY_BEEP EQU 05C39H ERR_NR EQU 05C3AH FLAGS EQU 05C3BH TV_FLAG EQU 05C3CH ERR_SP EQU 05C3DH LIST_SP EQU 05C3FH MODE EQU 05C41H NEW_PPC EQU 05C42H NEW_S_PPC EQU 05C44H PPC EQU 05C45H SUB_PPC EQU 05C47H BORDER EQU 05C48H EDIT_PPC EQU 05C49H BAS_VARS EQU 05C4BH WORK_VAR EQU 05C4DH CHANS EQU 05C4FH CUR_CHL EQU 05C51H BAS_PROG EQU 05C53H NEXT_LINE EQU 05C55H DATA_ADR EQU 05C57H E_LINE EQU 05C59H K_CUR EQU 05C5BH CH_ADR EQU 05C5DH SINT_ER_AD EQU 05C5FH WORK_SP EQU 05C61H STK_BOT EQU 05C63H STK_END EQU 05C65H B_REG EQU 05C67H MEM_CALC EQU 05C68H FLAGS_2 EQU 05C6AH L_SCR_SIZE EQU 05C6BH AUTO_LST_L EQU 05C6CH OLD_PPC EQU 05C6EH OLD_S_PPC EQU 05C70H FLG_INPUT EQU 05C71H S_VAR_LEN EQU 05C72H SINT_TB_ADR EQU 05C74H RAND_SEED EQU 05C76H FRAMES EQU 05C78H UDG EQU 05C7BH X_Y_COORD EQU 05C7DH PRN_POS EQU 05C7FH ADR_PR_BUF EQU 05C80H ECHO_E EQU 05C82H SCR_PL_M EQU 05C84H SCR_PL_L EQU 05C86H SCR_POS_M EQU 05C88H SCR_POS_L EQU 05C8AH SCROLL_ST EQU 05C8CH ATTR_P EQU 05C8DH MASK_P EQU 05C8EH ATTR_T EQU 05C8FH MASK_E EQU 05C90H FLAGS_ATR EQU 05C91H MEM_BOT EQU 05C92H AUTO_5C9A EQU 05C9AH NMI_ADR EQU 05CB0H TOP_CLEAR EQU 05CB2H P_RAMTOP EQU 05CB4H BEG_ADRESS EQU 05CB6H RET_INS EQU 05CC2H AUTO_5CC3 EQU 05CC3H DISK_A EQU 05CC8H DISK_B EQU 05CC9H DISK_C EQU 05CCAH DISK_D EQU 05CCBH CAT_SEC EQU 05CCCH DRV_READY EQU 05CCDH RD_WR_COM EQU 05CCEH VAR_1 EQU 05CCFH AUTO_5CD1 EQU 05CD1H AUTO_5CD2 EQU 05CD2H AUTO_5CD3 EQU 05CD3H AUTO_5CD5 EQU 05CD5H DOS_ERROR EQU 05CD6H MED_START EQU 05CD7H DOS_CH_ADR EQU 05CD9H MED_LEN EQU 05CDBH FL_NAME EQU 05CDDH FL_N_2 EQU 05CDFH FL_N_4 EQU 05CE1H FL_N_6 EQU 05CE3H FL_N_7 EQU 05CE4H FL_TYPE EQU 05CE5H FL_START EQU 05CE6H FL_LEN EQU 05CE8H START_CLASTER EQU FL_LEN FL_SIZE EQU 05CEAH FL_PLACE EQU 05CEBH VAR_2 EQU 05CEDH INTERF_I EQU 05CEFH VAR_2_0 EQU 05CF1H VAR_2_1 EQU 05CF2H CONT_SEC EQU 05CF4H CONT_TRK EQU 05CF5H OPER_DISK EQU 05CF6H DOS_FLAG EQU 05CF7H DISK_1_FLG EQU 05CF8H DISK_2_FLG EQU 05CF9H TIME_A EQU 05CFAH TIME_B EQU 05CFBH TIME_C EQU 05CFCH TIME_D EQU 05CFDH COMAND_WG EQU 05CFEH SEC_NUM EQU 05CFFH CONT_BUF_ADR EQU 05D00H WORK_2 EQU 05D02H WORK_4 EQU 05D04H S_NAME_NUM EQU 05D06H N_DEL_FLS EQU 05D07H FST_SYM_NAME EQU 05D08H VAR_3 EQU 05D09H BUF_FLAG EQU 05D0CH BAS_DOS_FLG EQU 05D0EH DOS_ERR_2 EQU 05D0FH ERR_3D00 EQU 05D10H ADR_DOS_COM EQU 05D11H ERR_SP_COPY EQU 05D13H MSG_FLAG EQU 05D15H PDOS_COPY EQU 05D16H FLAG_BOOT EQU 05D17H INT_1_VAR EQU 05D18H CONT_DISK EQU 05D19H ADR_RET EQU 05D1AH DOS_SP EQU 05D1CH FL_NUMBER EQU 05D1EH COM_LN_COPY EQU 05D20H L_5D23 EQU 05D23H BUFER EQU 05D25H AUTO_5D33 EQU 05D33H CLEAR_SEC EQU 05E06H CLEAR_TRK EQU 05E07H TYPE_DISK EQU 05E08H N_FILES EQU 05E09H FREE_SEC EQU 05E0AH CODE_10H EQU 05E0CH DISK_MRK_1 EQU 05E0FH DISK_ALT_NM EQU 05E10H N_DEL_FL EQU 05E19H DISK_NAME EQU 05E1AH ;RET_PAGE0 MACRO ; LD A,0 ; OUT (PAGE0),A ; ENDM ;RET_PAGE1 MACRO ; LD A,5 ; OUT (PAGE1),A ; ENDM ;RET_PAGE2 MACRO ; LD A,2 ; OUT (PAGE2),A ; ENDM ; MACRO RET_PAGE3 LD A, 0 OUT (PAGE3), A ENDM ; MACRO DSS adr, dt IF (adr >= $) DUP ((adr - $) / 16) DB dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt EDUP DUP (adr - $) DB dt EDUP ELSE ASSERT 0, "Error memory relocation." ENDIF ENDM MACRO CALL_48 adr LOCAL ADR_R PUSH HL LD HL, ADR_R PUSH HL LD HL, SW_ROM PUSH HL LD HL, adr JP JP_HL_48 ADR_R: POP HL ENDM MACRO CALL_48X adr LOCAL ADR_R PUSH HL LD HL, ADR_R EX (SP), HL PUSH HL LD HL, SW_ROM EX (SP), HL PUSH HL LD HL, adr EX (SP), HL JP SW_ROM ADR_R: ENDM MACRO RAMD_KEY SUB 4 DI LD B, SYS_PAGE LD C, PAGE3 OUT (C), B LD HL, RAMD_KEYS ADD A, L LD L, A DEC L LD (A_RAMD_VARS), HL INC L LD L, (HL) RET_PAGE3 EI LD A, L ENDM ; Поpты Sprinter. (байты PORT_X)<< ; 0 - port FF<< ; 1 - port keyboard<< ; 2 - port BORDER<< ; 3 - port 1FFDh<< ; 4 - port 7FFDh<< ; 5 - port 3FFDh<< ; 6 - port Start-ROM<< ; 7 - port Start-ROM-ALT<< ; 8 - port ROM-BASIC48<< ; 9 - port ROM-BASIC128<< ; 10 - port ROM-TR-DOS<< ; 11 - port ROM-EXPANSION<< ; 12 - port ROM-BASIC48-ALT<< ; 13 - port ROM-BASIC128-ALT<< ; 14 - port ROM-TR-DOS-ALT<< ; 15 - port ROM-EXPANSION-ALT<< ; 16 ─┐<< ; .. ─┤<< ; 31 ─┴─ports RAM-PAGES - поpты указывающие, какая стpаница ОЗУ<< ; подключена в качестве стpаницы 0..F в конфигуpации Scorpion.<< ; 33 - port RAM-0 стpаница ОЗУ подключаемая в нулевое окно пpоцессоpа<< ; 34 - port RAM-5 стpаница ОЗУ подключаемая в пеpвое окно пpоцессоpа<< ; 35 - port RAM-2 стpаница ОЗУ подключаемая во втоpое окно пpоцессоpа<< ; 36 - port CONFIG<< ; 37 - port COVOX-1<< ; 38 - port COVOX-2<< ; 39 - port AY-3-8910-adr<< ; 40 - port AY-3-8910-dat<< ; 41 - port KEMPSTON<< ; 42 - port ISA-interface<< ; 43 ─┐reserv<< ; .. ─┤<< ; 47 ─┘<< ; 48 - 51 поpты ВГ93<< ; 52 - поpт DOS-1<< ; 53 - поpт DOS-2<< ; 54 ─┐ служебные поpты<< ; .. ─┤<< ; 63 ─┘<< ; 64 ─┐ поpты IDE interface<< ; .. ─┤<< ; 79 ─┘<< ; 80..127 - pезеpв.<< ; 128..143 - поpты идентификатоpа машины ( только для чтения.)<< ; 144..254 - pезеpв<< ; 255 - нуль-поpт - отключенное состояние.<< ;