mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 01:11:48 +03:00
482 lines
21 KiB
NASM
482 lines
21 KiB
NASM
////////////////////////////////////////////////////////////////////////
|
||
;[ ] 㢥«¨ç¨âì ¤«¨ã 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] |