//////////////////////////////////////////////////////////////////////// ;[ ] увеличить длину PATH и строки BAT ;[ ] путь текущего каталога в DIR выводится с глюком если он длинее 256 байтов ;[ ] путь в приглашении консоли выводится с глюком если путь длинее 256 байтов //////////////////////////////////////////////////////////////////////// ;PAGEDRV EQU #00 ;DIRPAGE EQU 0 ;FATPAGE EQU 1 ;TXTPAGE EQU 2 ;ENVPAGE EQU 2 ;DRVPAGE EQU 3 ;ENVPAGE EQU 3 ;DRVPAGE EQU 4 ;TXTADDR EQU #C000 ;ENVADDR EQU #E400 ;DIR EQU #C000 ;FAT EQU #C000 INCLUDELUA 'Shared_includes/lua/Functions.lua' INCLUDE 'shared_includes/structures/FileSystem.inc' INCLUDE 'shared_includes/constants/sp2000.inc' INCLUDE 'defines.inc' INCLUDE 'Structures.inc' INCLUDE 'shared_includes/constants/standart_colors.inc' INCLUDE 'shared_includes/constants/bios_equ.inc' INCLUDE 'shared_includes/constants/dss_equ.inc' INCLUDE 'shared_includes/macroses/accelerator.z80' INCLUDE 'shared_includes/macroses/macros.z80' INCLUDE 'VERSION.INC' INCLUDE 'DSS_MACROSES.Z80' ; = -- = -- = -- = -- = = -- = -- = = -- = -- = = -- = -- = -- = -- = --; ORG 0 ; = -- = -- = -- = -- = = -- = -- = = -- = -- = = -- = -- = -- = -- = --; ;CLOSE TASK //////////////////////////////////////////////////////////////////////// RST_0x00: JP RETFAR ;EXECUTE.ASM //////////////////////////////////////////////////////////////////////// ;BIOS API //////////////////////////////////////////////////////////////////////// _mInfoBLOCK 8-$,#FF RST_0x08: PUSH AF LD A,SYS_PORT.BIOS OUT (SYS_PORT.ON),A POP AF RET //////////////////////////////////////////////////////////////////////// ;DSS API //////////////////////////////////////////////////////////////////////// _mInfoBLOCK #10-$,#FF RST_0x10: JP RST_10 //////////////////////////////////////////////////////////////////////// ;DRIVE API //////////////////////////////////////////////////////////////////////// _mInfoBLOCK #18-$,#FF ; ;A0018: JP INTDISK RST_0x18: PUSH AF PUSH BC DRV_PG_NUMBER+2: LD BC,SLOT0 + 0*256 JP PORTAL.out_MAIN //////////////////////////////////////////////////////////////////////// ;FS API //////////////////////////////////////////////////////////////////////// _mInfoBLOCK #20-$,#FF RST_0x20: PUSH AF PUSH BC FS_PG_NUMBER+2: LD BC,SLOT0 + 0*256 JP PORTAL.out_MAIN //////////////////////////////////////////////////////////////////////// ;NOT USED //////////////////////////////////////////////////////////////////////// _mInfoBLOCK #28-$,#FF RST_0x28: JP RST_28 //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// RST_28: NOPS: LD A,DSS_Error.sys.INVALID_FUNCTION SCF RET //////////////////////////////////////////////////////////////////////// ;MOUSE API //////////////////////////////////////////////////////////////////////// _mInfoBLOCK #30-$,#FF RST_0x30: PUSH AF .drv_page+1: LD A,#FF OUT (SLOT0),A POP AF RET //////////////////////////////////////////////////////////////////////// ;MAIN INT //////////////////////////////////////////////////////////////////////// _mInfoBLOCK #38-$,#FF RST_38_IM1: JP .Handler ;для того, чтоб софты могли менять обработчик на свой. ; .Handler: CALL INTx38_Handler EI RETI ; ; выход из обработчика в DRV-MAIN.ASM .Portal: PUSH AF LD A,(RST_0x30.drv_page) OUT (SLOT0),A ; вход в обработчик из DRV-MAIN.ASM ; если приложение использует перехват IM 1, то игнор прерывания из DRV-MAIN.ASM PUSH HL LD HL,(RST_38_IM1+1) XOR A CP H JR NZ,.error ; LD A,low .Handler CP L JR NZ,.error ; POP HL POP AF CALL INTx38_Handler JR .Portal ; .error: POP HL POP AF JR .Portal //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// _mInfoBLOCK #66-$,#FF NMI_0x66: RETN //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// RST_10: PUSH HL LD L,C LD H,high DSS_API_TABLE LD C,(HL) INC H LD H,(HL) LD L,C EX (SP),HL RET //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// ; in: C - страница для подключения ; out: A - страница которая была подключена SET_PAGE_X: LD B,high BANKTBL LD A,(BC) LD B,A LD C,SLOT3 IN A,(SLOT3) OUT (C),B RET //////////////////////////////////////////////////////////////////////// ;DRIVE PAGE SWITCH //////////////////////////////////////////////////////////////////////// _mInfoBLOCK #80-$,0 PORTAL.out_MAIN: IN A,(C) OUT (C),B ASSERT $ != 84,'-> Portal error!' POP BC RET //////////////////////////////////////////////////////////////////////// ; = -- = -- = -- = -- = = -- = -- = = -- = -- = = -- = -- = -- = -- = --; ; ; CLEAR_BUFFER_AND_INIT_PROC: XOR A LD HL,CLEAR_ZONE.start LD DE,CLEAR_ZONE.start + 1 LD BC,CLEAR_ZONE.size - 1 LD (HL),A LDIR ;!TODO перенести в _sBuffers в начало ещё буферы с пробелами в начале работы LD HL,CORE_BUFFERS.TMPNAME LD DE,CORE_BUFFERS.TMPNAME + 1 LD BC,CORE_BUFFERS.TMPNAME.Size - 1 LD A," " LD (HL),A LDIR ; LD HL,':'*256 + 'X' LD (CORE_BUFFERS.CurrentPath),HL LD A,'\' ; LD (CORE_BUFFERS.CurrentDirectory),A LD (CORE_BUFFERS.WorkDirectory),A LD A,#FF LD (CORE_BUFFERS.FS_Buffer.DRIVE),A LD HL,CORE_BUFFERS.FM_BUF LD (HL),'.' ;INIT ENVIRONMENT CALL INITENV CALL SETUP_CURSORS JP VERSION ; ; INTx38_Handler: PUSH AF EX AF,AF' PUSH AF PUSH BC PUSH DE PUSH HL EXX PUSH BC PUSH DE PUSH HL PUSH IX PUSH IY CALL KEYSCAN LD C,Dss.Mouse.GetPackets RST ToDSS.Mouse CALL cursor_interrupt; вектор обслуж. курсора POP IY POP IX POP HL POP DE POP BC EXX POP HL POP DE POP BC POP AF EX AF,AF' POP AF RET ; _mInfoALIGN 256,0 ;------------------------------------------------------------------------------------------------------------------------; GO_ZERO EQU #0000 ;FUNCTION ADDRESS ARRAY DSS_API_TABLE: ;...............................................[LOW ADDRESS ]: ; 0 1 2 3 4 5 6 7 8 9 DEC HEX DB low F_START, low CHDISK_FN, low CURDISK_FN,low DISKINF, low NOPS, low NOPS, low NOPS, low NOPS, low SCANDRV, low BOOTDSK ; 0 00..09 DB low CREATE, low CREATE.NEW, low NOPS, low NOPS, low DEL_FN, low NOPS, low RENAME, low OPEN_FN, low CLOSE_FN, low READ ; 1 0A..13 DB low WRITE, low MOVE_FP, low ATTRIB, low GET_D_T, low PUT_D_T, low F_FIRST_FN,low F_NEXT, low MKDIR.B, low RMDIR, low CHDIR_FN ; 2 14..1D DB low CURRDIR_FN,low NOPS, low NOPS, low SYSTIME, low SETTIME, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 3 1E..27 DB low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low WAITKEY, low SCANKEY ; 4 28..31 DB low ECHOKEY, low CTRLKEY, low NOPS, low K_CLEAR, low K_SETUP, low TESTKEY, low SETWIN, low SETWIN1, low SETWIN2, low SETWIN3 ; 5 32..3B DB low FREEMEM, low GETMEM, low RETMEM, low SETMEM, low EXEC, low LEAVE, low GET_ERR, low GSWITCH, low DOSNAME, low EX_PATH ; 6 3C..45 DB low ENVIRON, low APPINFO, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 7 46..4F DB low SETVMOD, low GETVMOD, low LOCATE, low CURSOR, low SELPAGE, low SCROLL, low CLEAR, low RDCHAR, low WRCHAR, low WINCOPY ; 8 50..59 DB low WINREST, low PUTCHAR, low PCHARS, low LIB_SUB, low NOPS, low PRINT, low NOPS, low NOPS, low NOPS, low NOPS ; 9 5A..63 DB low NOPS, low NOPS, low NOPS, low NOPS, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO ; 10 64..6D ; DB low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO ; 11 6E..77 DB low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO ; 12 78..81 DB low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO ; 13 82..8B DB low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO ; 14 8C..95 DB low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO ; 15 96..9F DB low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO ; 16 A0..A9 DB low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO ; 17 AA..B3 DB low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO ; 18 B4..BD DB low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO ; 19 BE..C7 DB low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO ; 20 C8..D1 DB low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO ; 21 D2..DB DB low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO ; 22 DC..E5 DB low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO ; 23 E6..EF ; DB low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 24 F0..F9 DB low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; END ; 25 FA..FF ;...............................................[HIGH ADDRESS]: DB high F_START, high CHDISK_FN, high CURDISK_FN,high DISKINF,high NOPS, high NOPS, high NOPS, high NOPS, high SCANDRV, high BOOTDSK DB high CREATE, high CREATE.NEW,high NOPS, high NOPS, high DEL_FN, high NOPS, high RENAME, high OPEN_FN,high CLOSE_FN,high READ DB high WRITE, high MOVE_FP, high ATTRIB, high GET_D_T,high PUT_D_T,high F_FIRST_FN,high F_NEXT, high MKDIR.B,high RMDIR, high CHDIR_FN DB high CURRDIR_FN,high NOPS, high NOPS, high SYSTIME,high SETTIME,high NOPS, high NOPS, high NOPS, high NOPS, high NOPS DB high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high WAITKEY, high SCANKEY DB high ECHOKEY, high CTRLKEY, high NOPS, high K_CLEAR,high K_SETUP,high TESTKEY, high SETWIN, high SETWIN1,high SETWIN2, high SETWIN3 DB high FREEMEM, high GETMEM, high RETMEM, high SETMEM, high EXEC, high LEAVE, high GET_ERR,high GSWITCH,high DOSNAME, high EX_PATH DB high ENVIRON, high APPINFO, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS DB high SETVMOD, high GETVMOD, high LOCATE, high CURSOR, high SELPAGE,high SCROLL, high CLEAR, high RDCHAR, high WRCHAR, high WINCOPY DB high WINREST, high PUTCHAR, high PCHARS, high LIB_SUB,high NOPS, high PRINT, high NOPS, high NOPS, high NOPS, high NOPS DB high NOPS, high NOPS, high NOPS, high NOPS, high GO_ZERO,high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO ; DB high GO_ZERO, high GO_ZERO, high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO DB high GO_ZERO, high GO_ZERO, high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO DB high GO_ZERO, high GO_ZERO, high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO DB high GO_ZERO, high GO_ZERO, high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO DB high GO_ZERO, high GO_ZERO, high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO DB high GO_ZERO, high GO_ZERO, high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO DB high GO_ZERO, high GO_ZERO, high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO DB high GO_ZERO, high GO_ZERO, high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO DB high GO_ZERO, high GO_ZERO, high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO DB high GO_ZERO, high GO_ZERO, high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO DB high GO_ZERO, high GO_ZERO, high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO DB high GO_ZERO, high GO_ZERO, high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO DB high GO_ZERO, high GO_ZERO, high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO ; DB high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS DB high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS ;---------------------------------------------------------------------------------------------------------------------------------------------------------------; ;!TODO заменить по-максимому всё в KEYINTER.ASM на вызовы биоса INCLUDE "KEYINTER.ASM" INCLUDE "API.ASM" INCLUDE "DOS_FS.ASM" INCLUDE "Procedures.asm" INCLUDE "FS/FS.asm" ;INCLUDE "drivers/drv_to_sys_errors.asm" ; !TODO /* ; Массив лог. номеров банок расширения DSS BANKTBL: BLOCK USING_MEMPAGES+1,#FF ; +1 для COREPAGE HANDBUF: BLOCK HANDBUF.SIZE,0 ; MASKARE: BLOCK 8,0 ; имя файла BLOCK 3,0 ; расш. BLOCK 21,0 ; 11+21=32 ; */ DISPLAY "DOS-MAIN end address: ",/H,$-1 BANKTBL EQU ($ & #FF00) + (1 > > > > > > > > > > > > > > > BUFFERS < < < < < < < < < < < < < < < < CLEAR_ZONE.start EQU BANKTBL + BANKTBL.Size MODULE CORE_BUFFERS BUFFERSplace _sBuffers = CLEAR_ZONE.start TMPNAME EQU BUFFERSplace.TMPNAME .Size EQU 8+1+3+1 ; Буфер имени 8.3 + 0 HANDBUF EQU BUFFERSplace.HANDBUF .SIZE EQU FAT_DIRECTORY_RECORD MASKARE _sMASKARE = BUFFERSplace.MASKARE .Size EQU _sMASKARE FM_BUF _sFM = BUFFERSplace.FileManipulator .Size EQU _sFM .FullSize EQU FMCOUNT*FM_BUF.Size FS_Buffer _sFS_Buffer = BUFFERSplace.FS_Buffer EXEBUFF _sEXE_HEADER = BUFFERSplace.EXE_Header XSTACK _sStack = BUFFERSplace.Stack .Spoint EQU XSTACK + _sStack BUFFER EQU BUFFERSplace.Buffer SECTOR_BUFFER EQU BUFFER ;!TODO отделить SECTOR_BUFFER от BUFFER MemoryTable EQU BUFFERSplace.MemoryTable CurrentPath EQU BUFFERSplace.CurrentPath CurrentDirectory EQU BUFFERSplace.CurrentDirectory .DEPTH EQU DIRECTORY_PATH_LENGTH WorkDirectory EQU BUFFERSplace.WorkDirectory .DEPTH EQU DIRECTORY_PATH_LENGTH BUFFER_CLP EQU BUFFERSplace.BUFFER_CLP ; буфер для CMD в Execute.asm ENDMODULE CLEAR_ZONE.size EQU _sBuffers ASSERT (CLEAR_ZONE.start + _sBuffers)<#4000, "Warning!!! OUT OF SLOT0" ASSERT (#4000 - CORE_BUFFERS.BUFFER_CLP) > #100, "Warning!!! No memory for buffer!!!" DISPLAY "--- --- --- --- --- --- --- --- --- --- --- --- ---" DISPLAY " BANKTBL ", /H, BANKTBL," Size ", /H, BANKTBL.Size DISPLAY "--- --- --- --- --- --- --- --- --- --- --- --- ---" DISPLAY "CLEAR_ZONE.start ", /H, CLEAR_ZONE.start," Size ", /H, CLEAR_ZONE.size DISPLAY "--- --- --- --- --- --- --- --- --- --- --- --- ---" DISPLAY "Consist: " DISPLAY " TMPNAME ", /H, CORE_BUFFERS.TMPNAME," Size ", /H, CORE_BUFFERS.TMPNAME.Size DISPLAY " HANDBUF ", /H, CORE_BUFFERS.HANDBUF," Size ", /H, CORE_BUFFERS.HANDBUF.SIZE DISPLAY " MASKARE ", /H, CORE_BUFFERS.MASKARE," Size ", /H, _sMASKARE DISPLAY " FM_BUF ", /H, CORE_BUFFERS.FM_BUF," Size ", /H, CORE_BUFFERS.FM_BUF.Size DISPLAY " Full Size ", /H, CORE_BUFFERS.FM_BUF.FullSize DISPLAY " FS_Buffer ", /H, CORE_BUFFERS.FS_Buffer," Size ", /H, CORE_BUFFERS.EXEBUFF - CORE_BUFFERS.FS_Buffer DISPLAY " EXEBUFF ", /H, CORE_BUFFERS.EXEBUFF," Size ", /H, CORE_BUFFERS.XSTACK - CORE_BUFFERS.EXEBUFF DISPLAY " XSTACK ", /H, CORE_BUFFERS.XSTACK," Size ", /H, CORE_BUFFERS.BUFFER - CORE_BUFFERS.XSTACK DISPLAY " BUFFER ", /H, CORE_BUFFERS.BUFFER," Size ", /H, CORE_BUFFERS.MemoryTable - CORE_BUFFERS.BUFFER DISPLAY " MemoryTable ", /H, CORE_BUFFERS.MemoryTable," Size ", /H, _sBuffers - (CORE_BUFFERS.MemoryTable - CORE_BUFFERS.BUFFERSplace) DISPLAY " CurrentPath ", /H, CORE_BUFFERS.CurrentPath," Size ", /H, CORE_BUFFERS.CurrentDirectory - CORE_BUFFERS.CurrentPath DISPLAY " CurrentDirectory ", /H, CORE_BUFFERS.CurrentDirectory," Size ", /H, DIRECTORY_PATH_LENGTH DISPLAY " WorkDirectory ", /H, CORE_BUFFERS.WorkDirectory," Size ", /H, DIRECTORY_PATH_LENGTH DISPLAY " BUFFER_CLP ", /H, CORE_BUFFERS.BUFFER_CLP," Size ", /H, #4000 - CORE_BUFFERS.BUFFER_CLP DISPLAY "--- --- --- --- --- --- --- --- --- --- --- --- ---" DISPLAY "CLEAR_ZONE.End ", /H, CLEAR_ZONE.start + CLEAR_ZONE.size DISPLAY "--- --- --- --- --- --- --- --- --- --- --- --- ---" EXPORT BANKTBL EXPORT CLEAR_ZONE.start EXPORT CLEAR_ZONE.size EXPORT CORE_BUFFERS.BUFFERSplace EXPORT CORE_BUFFERS.TMPNAME EXPORT CORE_BUFFERS.TMPNAME.Size EXPORT CORE_BUFFERS.HANDBUF EXPORT CORE_BUFFERS.HANDBUF.SIZE EXPORT CORE_BUFFERS.MASKARE EXPORT CORE_BUFFERS.MASKARE.Size EXPORT CORE_BUFFERS.FM_BUF EXPORT CORE_BUFFERS.FM_BUF.Size EXPORT CORE_BUFFERS.FM_BUF.FullSize EXPORT CORE_BUFFERS.FS_Buffer EXPORT CORE_BUFFERS.EXEBUFF EXPORT CORE_BUFFERS.XSTACK EXPORT CORE_BUFFERS.XSTACK.Spoint EXPORT CORE_BUFFERS.BUFFER EXPORT CORE_BUFFERS.SECTOR_BUFFER EXPORT CORE_BUFFERS.MemoryTable EXPORT CORE_BUFFERS.CurrentPath EXPORT CORE_BUFFERS.CurrentDirectory EXPORT CORE_BUFFERS.CurrentDirectory.DEPTH EXPORT CORE_BUFFERS.WorkDirectory EXPORT CORE_BUFFERS.WorkDirectory.DEPTH EXPORT CORE_BUFFERS.BUFFER_CLP ;> > > > > > > > > > > > > > > > BUFFERS < < < < < < < < < < < < < < < < ;||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ; затрётся после инициализации ;||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| INCLUDE 'first_init.asm' IF ENVVALUE != CORE_BUFFERS.BUFFER ASSERT "Warning! ENVVALUE != BUFFER" ENDIF DISPLAY "FAT MODULE SIZE: ",/A,MODULE_SIZE DISPLAY "DEPLOY end address: ",/H,$ DISPLAY "Space for DRV-MAIN: ",/A,#4000-$," bytes." DRV_CONTENT: DISP 0 INCLUDE 'DRV-MAIN.ASM' ENT DRV_CONTENT.SIZE EQU $-DRV_CONTENT BIN_END_ADDRESS EQU $ DISPLAY "END ADDRESS: ",/H,BIN_END_ADDRESS DISPLAY "Memory leacks when > ",/H, #4000+SUBLOAD_SIZE*512 ASSERT $ < (#4001+SUBLOAD_SIZE*512),'-> Memory leack!!!'; ASSERT DRV_CONTENT.SIZE < #4001,'-> Drivers code size > #4000!!!'; ;[END]