; STRUCT _sStack ; 256 bytes .buffer BLOCK 256,0 .SPoint BYTE 0 ENDS ; ; STRUCT _sEXE_HEADER ; 512 bytes .EXE_EXT TEXT 3,{"EX","E"} .VERSION BYTE 0 .OFFCOD1 WORD 0 .OFFCOD2 WORD 0 .LOADER WORD 0 .RESERVED BLOCK 6,0 .LD_ADDR WORD 0 .PC_REG WORD 0 .SP_REG WORD 0 .RESERVED2 BLOCK 490,0 ENDS ; ;File Manipulator (FM) ;[ ] fat32 STRUCT _sFM ; 51 bytes ; from FAT ; .NAME: TEXT 8,{". "," "} ;+ #00 +00 NAME ; .EXT: TEXT 3,{" "," "} ;+ #08 +08 EXT ; .ATTRIBUT: BYTE #10 ;+ #0B +11 ATTRIBUT ; .RESERVED_NT: BYTE #00 ;+ #0C +12 RESERVED ; .RESERVED_FAT32: BYTE #00 ;+ #0D +13 RESERVED ; .CREATE_TIME_FAT32: WORD #0000 ;+ #0E +14 RESERVED ; .CREATE_DATE_FAT32: WORD #0000 ;+ #10 +16 RESERVED ; .RESERVED_FAT32_1: WORD #0000 ;+ #12 +18 RESERVED ; .FIRST_CLUSTER_H: WORD #0000 ;+ #14 +20 RESERVED ; .TIME: WORD #0000 ;+ #16 +22 TIME ; .DATE: WORD #0000 ;+ #18 +24 DATE ; .FIRST_CLUSTER_L: WORD #0000 ;+ #1A +26 START CLUSTER ;!TODO fat32 ; .F_SIZE: DWORD #00000000 ;+ #1C +28 SIZE FILE .FS_REC: _sFAT_DIRECTORY_RECORD ; from Core .F_POSITION: DWORD #00000000 ;+ #20 +32 FILE POSITION (FP) .DIR_CLUSTER: WORD #0000 ;+ #24 +36 DIRECTORY CLUSTER .HANDLE: WORD #0000 ;+ #26 +38 HANDLE NUMBER .DRIVE: BYTE #00 ;+ #28 +40 DRIVE OR CURRENT .ACCESS_MODE: BYTE #00 ;+ #29 +41 ACCESS MODE признак изменения файла .TASK_NUM: BYTE #00 ;+ #2A +42 TASK ;.EMPTY: BYTE #00 ;+ #2B +43 EMPTY .KnownCluster_L: WORD #0000 ;+ #2B +43 Младшее слово номера кластера для которого известно относительное смещение внутри файла .KnownCluster_H: WORD #0000 ;+ #2C +44 Старшее слово номера кластера для которого известно относительное смещение внутри файла .KnownOffset_L: WORD #0000 ;+ #2D +45 Младшее слово смещения (в кластерах) относительно начала файла для сохраненного номера кластера. .KnownOffset_H: WORD #0000 ;+ #2E +46 Старшее слово смещения (в кластерах) относительно начала файла для сохраненного номера кластера. ENDS ; ; ; NAM EQU 0 ; LEN4 EQU 31 ; EXT EQU 8 ; POS1 EQU 32 ; ATR EQU 11 ; POS2 EQU 33 ; TIM1 EQU 22 ; POS3 EQU 34 ; TIM2 EQU 23 ; POS4 EQU 35 ; DAT1 EQU 24 ; DIRCLU1 EQU 36 ; DAT2 EQU 25 ; DIRCLU2 EQU 37 ; CLU1 EQU 26 ; HND1 EQU 38 ; CLU2 EQU 27 ; HND2 EQU 39 ; LEN1 EQU 28 ; FDRV EQU 40 ; LEN2 EQU 29 ; AMODE EQU 41 ; LEN3 EQU 30 ; FTASK EQU 42 ; STRUCT _sBuffers .FileManipulator _sFM ; 44 bytes + 44 bytes * (FMCOUNT-1) .FM_RESERVE BLOCK _sFM * (FMCOUNT-1),0 ; .BootSector _sBOOT_SECTOR_PARAMS ; 62 bytes ;!TODO перенести в область буферов .EXE_Header _sEXE_HEADER ; 512 bytes .Stack _sStack ; 256 bytes .Buffer BLOCK 512,0 ; FOR BUFFER & SECBUF .MemoryTable BLOCK 256,0 ; 256 bytes ENDS ;