Estex-DSS/DSS/Structures.inc
2024-12-26 03:34:57 +10:00

134 lines
5.4 KiB
PHP
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.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;
STRUCT _sStack ; 256 bytes
.buffer BLOCK 256,0
;.SPoint BYTE 0
ENDS
;
;
STRUCT _sEXE_HEADER ; 512 bytes
.EXE_EXT TEXT 3,{"EX","E"} ; 0-2 EXE ‘¨£­ âãà 
.VERSION BYTE 0 ; 3 Version of EXE file
.OFFCOD1 WORD 00 ; 4-5 ª ª®£® ᬥ饭¨ï ¢ ä ©«¥ ¡ã¤¥â £à㧨âìáï ª®¤ ¢
.OFFCOD2 WORD 00 ; 6-7 ¯ ¬ïâì ¯®  ¤à¥áã (Code_addr) Low addr, High addr.
.LOADER WORD 00 ; 8-9 <EFBFBD> §¬¥à ¯¥à¢¨ç­®£® § £àã§ç¨ª  ¨«¨ 0
.RESERVED BLOCK 6,0 ; 10-15 Reserved
.LD_ADDR WORD 00 ; 16-17 €¤à¥á à á¯®«®¦¥­¨ï ª®¤  ¢ ¯ ¬ï⨠(#4100-#FFFF)
.PC_REG WORD 00 ; 18-19 €¤à¥á ¢ ¯ ¬ïâ¨ á ª®â®à®£® § ¯ãáâ¨âáï ª®¤ (Reg. PC)
.SP_REG WORD 00 ; 20-21 €¤à¥á á⥪  (Reg. SP)
.UnUsedPoint BYTE 0 ; 22
; ¢ .RESERVED2 ­¥«ì§ï ¯à®¯¨á âì BLOCK 512-.UnUsedPoint,0; ¯®í⮬ã å à¤ª®¤
.RESERVED2 BLOCK 512-23,0 ; 23-512 Œ®¦­® ¨á¯®«ì§®¢ âì ¯®¤ ⥪áâ ¤«ï ¢ë¯¥­¤àñ¦  ¨«¨ ­¥ ¨á¯®«ì§®¢ âì
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 ; [ ] fat32
; .F_SIZE: DWORD #00000000 ;+ #1C +28 SIZE FILE
.FS_REC FAT_DIRECTORY_RECORD
; from Core
.F_POSITION DWORD #00000000 ;+ #20 +32 FILE POSITION (FP)
.DIR_CLUSTER_L WORD #0000 ;+ #24 +36 DIRECTORY CLUSTER LOW
.DIR_CLUSTER_H WORD #0000 ;+ #24 +38 DIRECTORY CLUSTER HIGH ; [x] fat32
.HANDLE WORD #0000 ;+ #28 +40 HANDLE NUMBER
.DRIVE BYTE #00 ;+ #2A +42 DRIVE OR CURRENT
.ACCESS_MODE BYTE #00 ;+ #2B +43 ACCESS MODE
.TASK_NUM BYTE #00 ;+ #2C +44 TASK
.OptimizedClusters BYTE #00 ;+ #2D +45
.KnownCluster_L WORD #0000 ;+ #2E +46 Œ« ¤è¥¥ á«®¢® ­®¬¥à  ª« áâ¥à  ¤«ï ª®â®à®£® ¨§¢¥áâ­® ®â­®á¨â¥«ì­®¥ ᬥ饭¨¥ ¢­ãâਠ䠩« 
.KnownCluster_H WORD #0000 ;+ #30 +48 ‘â à襥 á«®¢® ­®¬¥à  ª« áâ¥à  ¤«ï ª®â®à®£® ¨§¢¥áâ­® ®â­®á¨â¥«ì­®¥ ᬥ饭¨¥ ¢­ãâਠ䠩« 
.KnownOffset_L WORD #0000 ;+ #32 +50 Œ« ¤è¥¥ á«®¢® ᬥ饭¨ï (¢ ª« áâ¥à å) ®â­®á¨â¥«ì­® ­ ç «  ä ©«  ¤«ï á®åà ­¥­­®£® ­®¬¥à  ª« áâ¥à .
.KnownOffset_H WORD #0000 ;+ #34 +52 ‘â à襥 á«®¢® ᬥ饭¨ï (¢ ª« áâ¥à å) ®â­®á¨â¥«ì­® ­ ç «  ä ©«  ¤«ï á®åà ­¥­­®£® ­®¬¥à  ª« áâ¥à .
ENDS
;ACCESS MODE: A=0 ç⥭¨¥/§ ¯¨áì
; A=1 ç⥭¨¥
; A=2 § ¯¨áì
; ;!TODO A=3 § ¯¨áì ¡¥§ «¨è­¨å á®åà ­¥­¨© ªíè  FAT
; ;!TODO A=4 § ¯¨á âì ªíè FAT
;
;
; 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 _sFatBuffer
.DRIVE: BYTE #FF
.FAT_TYPE: BYTE #00 ; TYPE FAT (12 - 12bit, 16 - 16bit, 32 - 32bit) ; fat32
.CacheBlock: WORD #0000
.CacheUpdated: BYTE #00
;.SectorsPerBank: BYTE #00
.RootDirStartCluster_L: WORD #0000
.RootDirStartCluster_H: WORD #0000 ; fat32
.FAT1_SEC_L: WORD #0000 ; MSD_FAT_SEC first sector FAT (FAT_FRM)
.FAT1_SEC_H: WORD #0000 ; fat32
.FAT2_SEC_L: WORD #0000
.FAT2_SEC_H: WORD #0000 ; fat32
.Number_Of_FATs BYTE #02
.SectorsPerFAT_L WORD #0000
.SectorsPerFAT_H BYTE #00
.RootDirFirstSector_L: WORD #0000 ; MSD_CAT_SEC first sector DIR
.RootDirFirstSector_H: WORD #0000 ; MSD_CAT_SEC first sector DIR
.DirSizeInSectors: BYTE #00 ; DIR_SEC_SIZE
.FirstDataSector_L: WORD #0000 ; MSD_DAT_SEC low
.FirstDataSector_H: WORD #0000 ; MSD_DAT_SEC high
.BytesPerCluster: WORD #0000 ; CLUSTER_LEN
.END_CHAIN_CLUSTER_L: WORD #FFFF
.END_CHAIN_CLUSTER_H: WORD #0FFF
.MaxClusterLow: WORD #0000 ; ¬ ªá. ç¨á«® ª« áâ¥à®¢ (¡¥§ á«ã¦.)
.MaxClusterHigh: WORD #0000 ; ¬ ªá. ç¨á«® ª« áâ¥à®¢ (¡¥§ á«ã¦.)
.BytesPerSector: WORD #0000
.SectorsPerCluster: BYTE #00
.FSINFO_Sector: WORD #01
.BPB_SERIAL_NUMBER: DWORD 0
.BPB_LABEL: BLOCK 11,' ' ; 11 ¤«ï FAT, 31 ¤«ï CDFS
.UPD_FSINFO: BYTE 0
.FREE_CLUSTERS_COUNT_L: WORD #FFFF
.FREE_CLUSTERS_COUNT_H: WORD #FFFF
;.FilesPerSector: BYTE #00 ; ç¨á«® ä ©«®¢ëå § ¯¨á¥© ¢ ᥪâ®à¥
;.ClustersPerBank: BYTE #00 ; A - Clusters per bank (16k) (ç¨á«® ª« áâ¥à®¢ ­  ¡«®ª އ“)
;.READ_PG: BYTE #00 ;!TODO ­¥ ¨á¯®«ì§ãîâáï ­¥ª®â®àë¥ §­ ç¥­¨ï, ­® § ¤ã¬ª  ­¥¯«®å ï)))
;.S_X_H: DWORD #0000 ; ª®«¨ç¥á⢮ ᥪâ®à®¢ ­  樫¨­¤à¥
ENDS
;
;
STRUCT _sBuffers
.FileManipulator _sFM ; 44 bytes + 44 bytes * (FMCOUNT-1)
.FM_RESERVE BLOCK _sFM * (FMCOUNT-1),0 ;
.FatBuffer _sFatBuffer
;.BootSector BLOCK 90,0 ; _sBOOT_SECTOR_PARAMS: 62 bytes FAT16, 90 bytes FAT32
.EXE_Header _sEXE_HEADER ; 512 bytes
.Stack _sStack ; 256 bytes
.Buffer BLOCK 512,0 ; FOR BUFFER & SECTOR_BUFFER
.MemoryTable BLOCK 256,0 ; 256 bytes
.CurrentPath WORD 0
.CurrentDirectory BLOCK DIRECTORY_PATH_LENGTH,0
.WorkDirectory BLOCK DIRECTORY_PATH_LENGTH,0
ENDS
;