Estex-DSS/DSS/DSS-MAIN.ASM
Tolik Trek fdd73770ba test
2025-08-19 20:57:39 +10:00

482 lines
21 KiB
NASM
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

////////////////////////////////////////////////////////////////////////
;[ ] 㢥«¨ç¨âì ¤«¨­ã 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<?($ & #FF)) * #100
.Size EQU USING_MEMPAGES + 2
;> > > > > > > > > > > > > > > > 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 ; <20>ãä¥à ¨¬¥­¨ 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]