Shared_Includes/constants/dss_equ.inc
2024-10-27 00:29:59 +10:00

507 lines
18 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.

;[‚ë§®¢ ä㭪権 DSS]--------------------
ToDSS EQU #10
.DRV EQU #18
.Mouse EQU #30
;---------------------------------------
;---[<EFBFBD>ãä¥à ¯®¤ á«ã¦¥¡­ãî áâபã DSS]----
; Command_Line_parameters (CLP)
; ‘¬¥é¥­¨ï ®â­®á¨â¥«ì­® §­ ç¥­¨ï ¢ IX
; ¯à¨ áâ à⥠EXE ¨§ DSS.
CLP_Buffer EQU 131 ; <EFBFBD>®«­ ï ¤«¨­  ¡ãä¥à 
CLP_FM EQU -3 ; ” ©«®¢ë© ¬ ­¨¯ã«ïâ®à, ¥á«¨ exe-ä ©« á ¯¥à¢¨ç­ë¬ § £àã§ç¨ª®¬
CLP_MemBlockID EQU -2 ; ˆ¤¥­â¨ä¨ª â®à ¡«®ª  ¯ ¬ïâ¨
CLP_ProgLevel EQU -1 ; “஢¥­ì ⥪ã饩 ¯à®£à ¬¬ë
CLP_CLLength EQU 0 ; „«¨­­  ª®¬ ­¤­®© áâப¨
CLP_Parameters EQU 1 ; <EFBFBD> à ¬¥âàë ª®¬ ­¤­®© áâப¨, § ª ­ç¨¢ ¥âáï ­ã«¥¬ (127 bytes) ;!FIXIT   ¥á«¨ ¤«¨­  áâப¨ ¡ã¤¥â ¡®«ìè¥?
; (CLP_CLLength) + 3 ; ­ ç «® ¯®«­®£® ¯ã⨠¤® § ¯ã᪠¥¬®£® ¯à¨«®¦¥­¨ï (¢¬¥áâ¥ á ¨¬¥­¥¬ EXE)
;---------------------------------------
;!TODO ­¥ ⮫쪮 FAT
FAT_ATTR:
.ARCHIVE EQU %0010'0000 ; bit 5
.DIRECTORY EQU %0001'0000 ; bit 4
.VOLUME_ID EQU %0000'1000 ; bit 3
.SYSTEM EQU %0000'0100 ; bit 2
.HIDDEN EQU %0000'0010 ; bit 1
.READ_ONLY EQU %0000'0001 ; bit 0
.NoDIRnoVolID EQU .READ_ONLY + .HIDDEN + .ARCHIVE + .SYSTEM
.NoVolID EQU .READ_ONLY + .HIDDEN + .DIRECTORY + .ARCHIVE + .SYSTEM
.NoSYSnoVolID EQU .READ_ONLY + .HIDDEN + .DIRECTORY + .ARCHIVE
.HiddenSysDir EQU + .HIDDEN + .DIRECTORY + + .SYSTEM
;
.LFS_Entry EQU .READ_ONLY + .HIDDEN + .SYSTEM + .VOLUME_ID
.LFS_Entry_Mask EQU %0011'1111
;------------[DSS Functions]------------
Dss:
.Version EQU #00
.ChDisk EQU #01
.CurDisk EQU #02
.DskInfo EQU #03
.G_ENTRY EQU #04
; EQU #05
; EQU #06
; EQU #07
; ¢å®¤: ­¥â
; ¢ë室: A - ­®¬¥à ¯®á«¥¤­¥£® «®£. ¤¨áª  ¢ á¨á⥬¥
.RescanDrives EQU #08
.BootDSK EQU #09
.BootDSK.Get EQU #00*256 + .BootDSK
.BootDSK.Set EQU #01*256 + .BootDSK
;
; File i/o
.Create EQU #0A
.Creat_N EQU #0B
; EQU #0C
;.ERASE EQU #0D
.Delete EQU #0E
;.Move EQU #0F ;!TODO
.Rename EQU #10
.Open EQU #11
.Open.RW EQU 0
.Open.R EQU 1
.Open.W EQU 2
.Close EQU #12
.Read EQU #13
.Write EQU #14
.Move_FP EQU #15
.Move_FP.FrStart EQU #00*256 + .Move_FP
.Move_FP.FrCurrent EQU #01*256 + .Move_FP
.Move_FP.FrEnd EQU #02*256 + .Move_FP
.Attrib EQU #16
.Get_D_T EQU #17
.Put_D_T EQU #18
.F_First EQU #19
.F_First.FATname EQU 0*256 + .F_First
.F_First.DOSname EQU 1*256 + .F_First
; from FAT
; .NAME: BLOCK 8,' ' ;+ #00 +00 NAME
; .EXT: BLOCK 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 START CLUSTER high
; .TIME: WORD #0000 ;+ #16 +22 TIME
; .DATE: WORD #0000 ;+ #18 +24 DATE
; .FIRST_CLUSTER_L: WORD #0000 ;+ #1A +26 START CLUSTER low
; .F_SIZE: DWORD #00000000 ;+ #1C +28 SIZE FILE
; file name DOS or FAT (with zero end of str) 11 or 2..13 bytes ;+ #20 +32
;
.F_Next EQU #1A
.MkDir EQU #1B
.RmDir EQU #1C
.ChDir EQU #1D
.CurDir EQU #1E
; EQU #1F
; EQU #20
.SysTime EQU #21
.SetTime EQU #22
; EQU #23
; EQU #24
; EQU #25
; EQU #26
; EQU #27
; EQU #28
; EQU #29
; EQU #2A
; EQU #2B
; EQU #2C
; EQU #2D
; EQU #2E
; EQU #2F
;
; Keyboard
.WaitKey EQU #30
.ScanKey EQU #31
.EchoKey EQU #32
.CTRLKey EQU #33
.EDIT EQU #34
.K_CLEAR EQU #35
.K_SETUP EQU #36
.K_SETUP.SetLayout EQU 0*256 + .K_SETUP
.K_SETUP.GetSoundVars EQU 1*256 + .K_SETUP
.K_SETUP.SetSoundVars EQU 2*256 + .K_SETUP
.TestKey EQU #37
;
; Memory
.SetWin EQU #38
.SetWin1 EQU #39
.SetWin2 EQU #3A
.SetWin3 EQU #3B
.INFOMEM EQU #3C
.GetMem EQU #3D
.FreeMem EQU #3E
.SetMem EQU #3F
;
; Execution
.Exec EQU #40
.Exec.Here EQU 1*256 + .Exec
.Exit EQU #41
.Get_Err EQU #42 ; .Wait
.GSwitch EQU #43
.DosName EQU #44
.EX_Path EQU #45
.EX_Path.GET_ALL EQU #00*256 + .EX_Path ; <20> §®¡à âì áâபã
.EX_Path.GET_DRIVE EQU #01*256 + .EX_Path ; ‚뤥«¨âì ¨¬ï ¤¨áª 
.EX_Path.GET_PATH EQU #02*256 + .EX_Path ; ‚뤥«¨âì ¤¨à¥ªâ®à¨î
.EX_Path.GET_NAME EQU #03*256 + .EX_Path ; ‚뤥«¨âì ¨¬ï ä ©« 
.EX_Path.GET_TYPE EQU #04*256 + .EX_Path ; ‚뤥«¨âì à áè¨à¥­¨¥ ä ©« 
.EX_Path.GET_ALL_EX EQU #05*256 + .EX_Path ; ‚뤥«¨âì ¨¬ï ¤¨áª , ¯ãâì ª ä ©«ã, ¨¬ï ä ©«  ¨ à áè¨à¥­¨¥ ä ©« 
.EX_Path.RESR EQU #06*256 + .EX_Path ; ‡ à¥§¥à¢¨à®¢ ­®
.EX_Path.GSWITCH EQU #07*256 + .EX_Path ; ‚뤥«¨âì ¯ à ¬¥âà ª®¬ ­¤­®© áâப¨
.EX_Path.GETNAME EQU #08*256 + .EX_Path ; <20>८¡à §®¢ âì ¨§ 11 ᨬ¢®«ì­®£® ä®à¬ â  ¢ ä®à¬ â „Ž‘
.EX_Path.MASK EQU #09*256 + .EX_Path ; <20>८¡à §®¢ âì ¨§ ä®à¬ â  „Ž‘ ¢ 11 ᨬ¢®«ì­ë© ä®à¬ â
.Environ EQU #46
.Environ.Init EQU 255*256 + .Environ
.Environ.Read EQU #00*256 + .Environ
.Environ.Get EQU #01*256 + .Environ
.Environ.Set EQU #02*256 + .Environ
.AppInfo EQU #47
.AppInfo.CMD_Param EQU #00*256 + .AppInfo
.AppInfo.EXE_HomeDir EQU #01*256 + .AppInfo
.AppInfo.EXE_FullPath EQU #02*256 + .AppInfo
; EQU #48
; EQU #49
; EQU #4A
; EQU #4B
; EQU #4C
; EQU #4D
; EQU #4E
; EQU #4F
;
; Video
.SetVMod EQU #50
.SetVMod.Screen_0 EQU 0*256+.SetVMod
.SetVMod.Screen_1 EQU 1*256+.SetVMod
.SetVMod.txt40x32 EQU 2 ; ⥪áâ®¢ë© 40x32x16 梥⮢
.SetVMod.txt80x32 EQU 3 ; ⥪áâ®¢ë© 80x32x16 梥⮢
.SetVMod.grf320x256 EQU #81 ; £à ä¨ç¥áª¨© 320x256x256 梥⮢
.SetVMod.grf640x256 EQU #82 ; £à ä¨ç¥áª¨© 640x256x16 梥⮢
.GetVMod EQU #51
.Locate EQU #52
.Cursor EQU #53
.SelPage EQU #54
.Scroll EQU #55
.Scroll.Up EQU 256*1 + .Scroll
.Scroll.Down EQU 256*2 + .Scroll
.Clear EQU #56
.RdChar EQU #57
.WrChar EQU #58
.WinCopy EQU #59
.WinRest EQU #5A
.PutChar EQU #5B
.PChars EQU #5C
.Lib_Sub EQU #5D ;[ ] 11/02/2024 - ”ã­ªæ¨ï á ¯®¯®«­ï¥¬ë¬¨ ¯®¤äã­ªæ¨ï¬¨)))
.Lib_Sub.RestoreFont EQU #01*256 + .Lib_Sub
; Printer
;.RES_PRN EQU #5D
;.CTRLPRN EQU #5E
.Print EQU #5F
;----------------------------------------------------------------------;
;----------------------------------------------------------------------;
.DRV.Init EQU #00
.DRV.Open EQU #01
.DRV.Close EQU #02
.DRV.MediaCheck EQU #03
.DRV.GetBPB EQU #04
.DRV.Read EQU #05
.DRV.Write EQU #06
.DRV.Removable EQU #07
.DRV.GenIOCTL EQU #08
.DRV.GenIOCTL.GetParams EQU #00*256 + .DRV.GenIOCTL ; Get Device Parameters
.DRV.GenIOCTL.ReadTrack EQU #01*256 + .DRV.GenIOCTL ; Read track
.DRV.GenIOCTL.TestTRK EQU #02*256 + .DRV.GenIOCTL ; Test track
.DRV.GenIOCTL.SetParams EQU #80*256 + .DRV.GenIOCTL ; Set Device Parameters
.DRV.GenIOCTL.WriteTRK EQU #81*256 + .DRV.GenIOCTL ; Write track
.DRV.GenIOCTL.FormatTRK EQU #82*256 + .DRV.GenIOCTL ; Format track
.DRV.GenIOCTL.Enter EQU #55AA ; for DE
;.DRV.Reserved EQU #09
.DRV.LongRead EQU #10
.DRV.LongWrite EQU #11
;
.DRV.RescanDRV EQU #FF
;----------------------------------------------------------------------;
;----------------------------------------------------------------------;
.Mouse.Init EQU #00
.Mouse.ShowCursor EQU #01
.Mouse.HideCursor EQU #02
.Mouse.ReadState EQU #03
.Mouse.SetXY EQU #04
;.Mouse.RESERVED EQU #05
;.Mouse.RESERVED EQU #06
.Mouse.SetBoundsY EQU #07
.Mouse.SetBoundsX EQU #08
.Mouse.SetCursorImage EQU #09
.Mouse.SetCursorChar EQU #0A
.Mouse.GetCursorImage EQU #0B
;.Mouse.RESERVED EQU #0C
;.Mouse.RESERVED EQU #0D
.Mouse.GetSensitive EQU #0E
.Mouse.SetSensitive EQU #0F
.Mouse.GetPackets EQU #80 ; Interrupt routine
.Mouse.SetVideoMode EQU #81
;.Mouse.RESERVED EQU #82
.Mouse.RefreshCursor EQU #83
;----------------------------------------------------------------------;
;
;------------[Error codes]--------------
MODULE DSS_Error
sys:
.NO_ERROR EQU #00 ; 00 - ­¥â ®è¨¡®ª
.INVALID_FUNCTION EQU #01 ; 01 - ­¥¢¥à­ë© ­®¬¥à ä㭪樨
.INVALID_DRIVE EQU #02 ; 02 - ­¥¯à ¢¨«ì­ë© ­®¬¥à ãáâனá⢠
.FILE_NOT_FOUND EQU #03 ; 03 - ä ©« ­¥ ®¡­ à㦥­
.PATH_NOT_FOUND EQU #04 ; 04 - ­¥¢¥à­ë© ¯ãâì
.INVALID_HANDLE EQU #05 ; 05 - ­¥áãé¥áâ¢ãî騩 ä ©«®¢ë© ¬ ­¨¯ã«ïâ®à
.NO_HANDLES EQU #06 ; 06 - ­¥â ᢮¡®¤­®£® ä ©«®¢®£® ¬ ­¨¯ã«ïâ®à 
.FILE_EXISTS EQU #07 ; 07 - ä ©« áãé¥áâ¢ã¥â
.READONLY EQU #08 ; 08 - ä ©« ⮫쪮 ¤«ï ç⥭¨ï
.ROOT_OVERFLOW EQU #09 ; 09 - ¯¥à¥¯®«­¥­¨¥ ROOT (ª®à­¥¢®£® ª â «®£ )
.DISK_FULL EQU #0A ; 10 - ­¥â ᢮¡®¤­®£® ¬¥áâ  ­  ¤¨áª¥
.DIR_NOT_EMPTY EQU #0B ; 11 - ª â «®£ ­¥ ¯ãáâ
.CURRENT_DIR EQU #0C ; 12 - ­¥ã¤ ç­ ï ¯®¯ë⪠ 㤠«¨âì ⥪ã騩 ª â «®£
.UNKNOWN_FORMAT EQU #0D ; 13 - ­¥¨§¢¥áâ­ë© ä®à¬ â
.INVALID_ACCESS EQU #0E ; 14 - ­¥¢®§¬®¦­ ï ®¯¥à æ¨ï
.DIR_EXISTS EQU #0F ; 15 - ª â «®£ 㦥 ¥áâì
.INVALID_NAME EQU #10 ; 16 - ­¥¢¥à­®¥ ¨¬ï
.INVALID_EXE EQU #11 ; 17 - ­¥¯à ¢¨«ì­ë© EXE-ä ©«
.UNKNOWN_EXE EQU #12 ; 18 - ­¥ ¯®¤¤¥à¦¨¢ ¥¬ ï ¢¥àá¨ï EXE-ä ©« 
.ACCESS_DENIED EQU #13 ; 19 - à¥áãàá ­¥ ¤®áâ㯥­
.NOT_READY EQU #14 ; 20 - ­¥â £®â®¢­®áâ¨
.SEEK_ERROR EQU #15 ; 21 - ®è¨¡ª  ¯®§¨æ¨®­¨à®¢ ­¨ï
.SECTOR_NOT_FOUND EQU #16 ; 22 - ᥪâ®à ­¥ ­ ©¤¥­
.CRC_ERROR EQU #17 ; 23 - ®è¨¡ª  CRC
.WRITE_PROTECT EQU #18 ; 24 - § é¨â  § ¯¨á¨
.READ_ERROR EQU #19 ; 25 - ®è¨¡ª  ç⥭¨ï
.WRITE_ERROR EQU #1A ; 26 - ®è¨¡ª  § ¯¨á¨
;.GENERAL_FAILURE EQU #1B ; 27 - ®¡é ï ®è¨¡ª 
.DRIVE_FAILURE EQU #1B ; 27 - á¡®© ¤¨áª 
;.RESERVED_28 EQU #1C ; 28 - § à¥§¥à¢¨à®¢ ­
;.RESERVED_29 EQU #1D ; 29 - § à¥§¥à¢¨à®¢ ­
.NOT_ENOUGH_MEMORY EQU #1E ; 30 - ­¥¤®áâ â®ç­® ¯ ¬ïâ¨
.INVALID_MEMORY_HND EQU #1F ; 31 - ­¥áãé¥áâ¢ãî騩 ¡«®ª ¯ ¬ïâ¨
;.RESERVED_32 EQU #20 ; 32 - § à¥§¥à¢¨à®¢ ­®
.ENV_ITEM_OVERFLOW EQU #21 ; 33 - ¯à¥¢ë襭 ¬ ªá¨¬ «ì­ë© à §¬¥à ¯¥à¥¬¥­­®©
;.RESERVED_34 EQU #22 ; 34 - § à¥§¥à¢¨à®¢ ­®
.TOO_MANY_FILES_IN_DIR EQU #23 ; 35 - ᫨誮¬ ¬­®£® ä ©«®¢ ¢ ¤¨à¥ªâ®à¨¨
.TOO_DEEP_DIR_DEPTH EQU #24 ; 36 - ᫨誮¬ ¡®«ìè ï ¢«®¦¥­­®áâì ª â «®£®¢ ¨«¨ ª®«¨ç¥á⢮ ¯ ¯®ª > 1023
.USER_ABORT EQU #25 ; 37 - ®¯¥à æ¨ï ¯à¥à¢ ­  ¯®«ì§®¢ â¥«¥¬
.COMMON_ERROR EQU #26 ; 38 - ®¡é ï ®è¨¡ª 
.UNEXPECTED_APP_TRMN EQU #27 ; 39 - unexpected application termination / ­¥®¦¨¤ ­­®¥ § ¢¥à襭¨¥ ¯à¨«®¦¥­¨ï
;.RESERVED_40 EQU #28 ; 40 - § à¥§¥à¢¨à®¢ ­®
;.RESERVED_41 EQU #29 ; 41 - § à¥§¥à¢¨à®¢ ­®
;.RESERVED_42 EQU #2A ; 42 - § à¥§¥à¢¨à®¢ ­®
;.RESERVED_43 EQU #2B ; 43 - § à¥§¥à¢¨à®¢ ­®
;.RESERVED_44 EQU #2C ; 44 - § à¥§¥à¢¨à®¢ ­®
;.RESERVED_45 EQU #2D ; 45 - § à¥§¥à¢¨à®¢ ­®
;.RESERVED_46 EQU #2E ; 46 - § à¥§¥à¢¨à®¢ ­®
;.RESERVED_47 EQU #2F ; 47 - § à¥§¥à¢¨à®¢ ­®
.INVALID_VIDEO_MODE EQU #30 ; 48 - ­¥¯à ¢¨«ì­ë© ¢¨¤¥®à¥¦¨¬
;
drv:
.NO_ERROR EQU #00 ; 00 - NO ERRORS
.INVALID_COMMAND EQU #01 ; 01 - BAD COMMAND
.INVALID_DRIVE EQU #02 ; 02 - BAD DRIVE NUMBER
.UNKNOWN_FORMAT EQU #03 ; 03 - UNKNOW FORMAT
.NOT_READY EQU #04 ; 04 - NOT READY
.SEEK_ERROR EQU #05 ; 05 - SEEK ERROR
.SECTOR_NOT_FOUND EQU #06 ; 06 - SECTOR NOT FOUND
.CRC_ERROR EQU #07 ; 07 - CRC ERROR
.WRITE_PROTECT EQU #08 ; 08 - WRITE PROTECT
.READ_ERROR EQU #09 ; 09 - READ ERROR
.WRITE_ERROR EQU #0A ; 10 - WRITE ERROR
.GENERAL_FAILURE EQU #0B ; 11 - FAILURE
.DEVICE_BUSY EQU #0C ; 12 - BUSY (DEVICE OPENED)
;.RESERVED EQU #0D ; 13 - RESERVED
;
mouse:
.NO_ERROR EQU #00 ; 0 - NO ERROR
.INVALID_COMMAND EQU #01 ; 1 - COMMAND NOT PRESENT
.DEVICE_ABSENT EQU #02 ; 2 - DEVICE ABSENT
.CURSOR_ON EQU #03 ; 3 - CURSOR ON (already)
.CURSOR_OFF EQU #04 ; 4 - CURSOR OFF (already)
.CURSOR_TOO_BIG EQU #05 ; 5 - CURSOR IMAGE VERY BIG
ENDMODULE
/*
; DB #00
; DB "Bad command or file name",0
01: DB "Invalid function",0
02: DB "Invalid drive number",0
03: DB "File not found",0
04: DB "Path not found",0 ; ­¥¢¥à­ë© ¯ãâì
05: DB "Invalid handle",0
06: DB "Extended error 6",0 ; ­¥â ᢮¡®¤­®£® ä ©«®¢®£® ¬ ­¨¯ã«ïâ®à 
07: DB "File exist",0
08: DB "File read only",0
09: DB "Root overflow",0
10: DB "No free space",0
11: DB "Directory not empty",0
12: DB "Can't delete current directory",0
13: DB "Invalid media",0
14: DB "Unknown operation",0 ; ­¥¢®§¬®¦­ ï ®¯¥à æ¨ï
15: DB "Directory exist",0
16: DB "Invalid filename",0
17: DB "Invalid EXE-file",0
18: DB "Not supported EXE-file",0
19: DB "Access denied",0
20: DB "Not ready",0
21: DB "Seek error",0
22: DB "Sector not found",0
23: DB "CRC error",0
24: DB "Write protect",0
25: DB "Read error",0
26: DB "Write error",0
27: DB "Drive failure",0 ; ®¡é ï ®è¨¡ª 
28: DB "Extended error 28",0
29: DB "Extended error 29",0
30: DB "No free memory",0
31: DB "Invalid memory block",0
32: DB "Extended error 32",0
33: DB "Extended error 33",0
34: DB "Extended error 34",0
; DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
*/
;---------------------------------------
;
;
;---------------[Files]-----------------
FileMode:
.RW EQU 00
.Read EQU 01
.Write EQU 02
;
FileAttrib:
.Normal EQU 00 ; Normal file, no attributes
.RDOnly EQU 01 ; Read only attribute
.Hidden EQU 02 ; Hidden file
.System EQU 04 ; System file
.Label EQU 08 ; Volume label
.Direc EQU #10 ; Directory
.Arch EQU #20 ; Archive
;---------------------------------------
;
;
;---------[control characters]----------
_cc:
.cr EQU #0D ;¢®§¢à â ª®à¥âª¨
.lf EQU #0A ;­®¢ ï áâப 
.tab EQU 9 ;ᨬ¢®« â ¡ã«ï樨
;---------------------------------------
;
;
STRUCT BUFFER_FIND
; From FAT
.NAME: TEXT 8,{". "," "} ; DIR_Name #00 +00 NAME
.EXT: TEXT 3,{" "," "} ; --//--//; #08 +08 EXT
.ATTRIBUT: BYTE #10 ; DIR_Attr; #0B +11 ATTRIBUT
.RESERVED_NT: BYTE #00 ; DIR_NTRes; #0C +12 RESERVED
.RESERVED_FAT32: BYTE #00 ; DIR_CrtTimeHundth #0D +13 „¥áïâë¥ ¤®«¨ ᥪ㭤ë á®§¤ ­¨ï ä ©«  (0-1.99)
.CREATE_TIME_FAT32: WORD #0000 ; DIR_CrtTime #0E +14 ‚६ï á®§¤ ­¨ï ä ©« 
.CREATE_DATE_FAT32: WORD #0000 ; DIR_CrtDate #10 +16 „ â  á®§¤ ­¨ï ä ©« 
.LAST_ACCESS_DATE_FAT32: WORD #0000 ; DIR_LstAccDate #12 +18 „ â  ¯®á«¥¤­¥£® ¤®áâ㯠 (r/w)
.FIRST_CLUSTER_H: WORD #0000 ; DIR_FstClusHI #14 +20 START CLUSTER high ;!TODO fat32
.TIME: WORD #0000 ; DIR_WrtTime #16 +22 Time of last write.
.DATE: WORD #0000 ; DIR_WrtDate #18 +24 Date of last write.
.FIRST_CLUSTER_L: WORD #0000 ; DIR_FstClusLO #1A +26 START CLUSTER low
.F_SIZE: DWORD #00000000 ; DIR_FileSize #1C +28 SIZE FILE
; From DSS
.REC_Attr: BYTE #00 ; DIR_Attr; #20 +32 ATTRIBUT
.REC_Name BYTE #00 ; #21 +33 File name (FAT or DOS or May be LFN)
ENDS
;
; <20>ਫ®¦¥­¨¥ <20>. ’ ¡«¨æ  ¯®§¨æ¨®­­ëå ª®¤®¢
; key ASCII/SCAN key ASCII/SCAN
; ` #00 #00 V #56 #2D
; Esc #1B #01 B #42 #2E
; 1 #31 #02 N #4E #2F
; 2 #32 #03 M #4D #30
; 3 #33 #04 , #2C #31
; 4 #34 #05 . #2E #32
; 5 #35 #06 / #2F #33
; 6 #36 #07 RShift --- #34
; 7 #37 #08 \ #5C #35
; 8 #38 #09 LCtrl --- #36
; 9 #39 #0A LAlt --- #37
; 0 #30 #0B Space #20 #38
; - #2D #0C RAlt --- #39
; = #3D #0D RCtrl --- #3A
; BackSpace #08 #0E F1 #00 #3B
; Tab #09 #0F F2 #00 #3C
; Q #51 #10 F3 #00 #3D
; W #57 #11 F4 #00 #3E
; E #45 #12 F5 #00 #3F
; R #52 #13 F6 #00 #40
; T #54 #14 F7 #00 #41
; Y #59 #15 F8 #00 #42
; U #55 #16 F9 #00 #43
; I #49 #17 F10 #00 #44
; O #4F #18 F11 #00 #45
; P #50 #19 F12 #00 #46
; [ #5B #1A PrScrn --- #47
; ] #5D #1B ScrlLock #00 #48
; CapsLock #00 #1C NumLock #00 #49
; A #41 #1D / #2F #4A
; S #53 #1E * #2A #4B
; D #44 #1F - #2D #4C
; F #46 #20 + #2B #4D
; G #47 #21 enter #0D #4E
; H #48 #22 Del . #00 #4F
; J #4A #23 Ins 0 #00 #50
; K #4B #24 End 1 #00 #51
; L #4C #25 Down 2 #00 #52
; ; #3B #26 PgDw 3 #00 #53
; ' #27 #27 Left 4 #00 #54
; Enter #0D #28 5 #00 #55
; LShift --- #29 Right 6 #00 #56
; Z #5A #2A Home 7 #00 #57
; X #58 #2B Up 8 #00 #58
; C #43 #2C PgUp 9 #00 #59
; <20>ਫ®¦¥­¨¥ . <20> ©â  âਡã⮢ ⥪á⮢®£® íªà ­ 
; ¡¨â 7 - <20>ਧ­ ª ¬¥àæ ­¨ï ᨬ¢®« 
; ¡¨âë 6,5,4 - –¢¥â ä®­  ᨬ¢®«  8 梥⮢ (0...7) RGB
; ¡¨âë 3,2,1,0 - –¢¥â ᨬ¢®«  16 梥⮢ (0...15) IRGB
; –¢¥â  ¤«ï ä®­  ¨ ¤«ï ᨬ¢®« :
; 0 0h 0000b - —ñà­ë©
; 1 1h 0001b - ‘¨­¨©
; 2 2h 0010b - ‡¥«ñ­ë©
; 3 3h 0011b - ƒ®«ã¡®© (樠­)
; 4 4h 0100b - Šà á­ë©
; 5 5h 0101b - ”¨®«¥â®¢ë©
; 6 6h 0110b - Š®à¨ç­¥¢ë©
; 7 7h 0111b - <20>¥«ë©
; ’®«ìª® ¤«ï ᨬ¢®« :
; 8 8h 1000b - ‘¥àë©
; 9 9h 1001b - Ÿàª®-ᨭ¨©
; 10 Ah 1010b - Ÿàª®-§¥«ñ­ë©
; 11 Bh 1011b - Ÿàª®-£®«ã¡®©
; 12 Ch 1100b - Ÿàª®-ªà á­ë©
; 13 Dh 1101b - Ÿàª®-䨮«¥â®¢ë©
; 14 Eh 1110b - †ñ«âë©
; 15 Fh 1111b - Ÿàª®-¡¥«ë©
;