Shared_Includes/constants/dss_equ.inc
2026-04-01 14:32:32 +10:00

623 lines
23 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)
;---------------------------------------
;-----------------------------<ATTRIBUTES>-----------------------------;
;!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
CDFS_ATTR:
.NOT_LAST_EXTENT EQU %1000'0000 ; bit 7
.RESERVED_6 EQU %0100'0000 ; bit 6
.RESERVED_5 EQU %0010'0000 ; bit 5
.EXTENDED_PERMISSIONS EQU %0001'0000 ; bit 4
.EXTENDED_FORMAT EQU %0000'1000 ; bit 3
.ASSOCIATED EQU %0000'0100 ; bit 2
.DIRECTORY EQU %0000'0010 ; bit 1
.HIDDEN EQU %0000'0001 ; bit 0
;----------------------------------------------------------------------;
;------------[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
.Attrib.Get EQU #00*256 + .Attrib
.Attrib.Set EQU #01*256 + .Attrib
.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
.F_First.All_FATname EQU .F_First.FATname or #8000
.F_First.All_DOSname EQU .F_First.DOSname or #8000
; from FAT
; .NAME: BLOCK 8 ;+ #00 +00 NAME
; .EXT: BLOCK 3 ;+ #08 +08 EXT
; search attribute BYTE ;+ #0B +11
; .RESERVED_NT: BYTE ;+ #0C +12 RESERVED
; .RESERVED_FAT32: BYTE ;+ #0D +13 RESERVED
; .CREATE_TIME_FAT32: WORD ;+ #0E +14 RESERVED
; .CREATE_DATE_FAT32: WORD ;+ #10 +16 RESERVED
; .RESERVED_FAT32_1: WORD ;+ #12 +18 RESERVED
; .FIRST_CLUSTER_H: WORD ;+ #14 +20 START CLUSTER high
; .TIME: WORD ;+ #16 +22 TIME
; .DATE: WORD ;+ #18 +24 DATE
; .FIRST_CLUSTER_L: WORD ;+ #1A +26 START CLUSTER low
; .F_SIZE: DWORD ;+ #1C +28 SIZE FILE
; .ATTRIBUT: BYTE ;+ #20 +32 ATTRIBUT
; file name ;+ #21 +33 name FAT or DOS (with zero end of str) 11 or 2..13 bytes
; ¯®á«¥¤­¨© ¡ ©â ;+ #2D +45 FAT name or max + #2E +46 for DOS name
.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
.K_SETUP.ShowCursor EQU 3*256 + .K_SETUP
.K_SETUP.HideCursor EQU 4*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.GetMoreParams EQU #03*256 + .DRV.GenIOCTL ; Get More Device Parameters
.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 ; 0 - ­¥â ®è¨¡®ª
.Unknown_Error EQU #00 ;
.INVALID_FUNCTION EQU #01 ; 1 - ­¥¢¥à­ë© ­®¬¥à ä㭪樨
.INVALID_DRIVE EQU #02 ; 2 - ­¥¯à ¢¨«ì­ë© ­®¬¥à ãáâனá⢠
.FILE_NOT_FOUND EQU #03 ; 3 - ä ©« ­¥ ®¡­ à㦥­
.PATH_NOT_FOUND EQU #04 ; 4 - ­¥¢¥à­ë© ¯ãâì
.INVALID_HANDLE EQU #05 ; 5 - ­¥áãé¥áâ¢ãî騩 ä ©«®¢ë© ¬ ­¨¯ã«ïâ®à
.NO_HANDLES EQU #06 ; 6 - ­¥â ᢮¡®¤­®£® ä ©«®¢®£® ¬ ­¨¯ã«ïâ®à 
.FILE_EXISTS EQU #07 ; 7 - ä ©« áãé¥áâ¢ã¥â
.READONLY EQU #08 ; 8 - ä ©« ⮫쪮 ¤«ï ç⥭¨ï
.ROOT_OVERFLOW EQU #09 ; 9 - ¯¥à¥¯®«­¥­¨¥ 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 - á¡®© ¤¨áª 
.MEDIA_CHANGED EQU #1C ; 28 - ᬥ­  ­®á¨â¥«ï
.BUSY_NO_MEDIA EQU #1D ; 29 - “áâனá⢮ § ­ïâ® ¨«¨ ­®á¨â¥«ì ­¥ ç¨â ¥âáï (­¥â ­®á¨â¥«ï)
.NOT_ENOUGH_MEMORY EQU #1E ; 30 - ­¥¤®áâ â®ç­® ¯ ¬ïâ¨
.INVALID_MEMORY_HND EQU #1F ; 31 - ­¥áãé¥áâ¢ãî騩 ¡«®ª ¯ ¬ïâ¨
.NOT_SUPPORTED 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 - § à¥§¥à¢¨à®¢ ­® ;!TODO BIOS.Error.NotSupported
;.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 - ­¥¯à ¢¨«ì­ë© ¢¨¤¥®à¥¦¨¬
;.RESERVED_49 EQU #31 ; 49 - § à¥§¥à¢¨à®¢ ­®
; ... ; ...
;.RESERVED_127 EQU #7F ; 127 - § à¥§¥à¢¨à®¢ ­®
;
; ®è¨¡ª¨ ¤à ©¢¥à®¢ ­ ª®¯¨â¥«¥©
DRV_MASK: EQU #80
drv:
.NO_ERROR EQU DRV_MASK | BIOS.Error.NoErrors ; #80 - NO ERRORS
.INVALID_COMMAND EQU DRV_MASK | BIOS.Error.InvalidSubFunction ; #81 - BAD COMMAND
.INVALID_DRIVE EQU DRV_MASK | BIOS.Error.BadNumber ; #82 - BAD DRIVE NUMBER
.UNKNOWN_FORMAT EQU DRV_MASK | BIOS.Error.UnknownDevice ; #83 - UNKNOW FORMAT
.NOT_READY EQU DRV_MASK | BIOS.Error.NotReady ; #84 - NOT READY
.SEEK_ERROR EQU DRV_MASK | BIOS.Error.Seek ; #85 - SEEK ERROR
.SECTOR_NOT_FOUND EQU DRV_MASK | BIOS.Error.SectorNotFound ; #86 - SECTOR NOT FOUND
.CRC_ERROR EQU DRV_MASK | BIOS.Error.CRC ; #87 - CRC ERROR
.WRITE_PROTECT EQU DRV_MASK | BIOS.Error.WriteProtect ; #88 - WRITE PROTECT
.READ_ERROR EQU DRV_MASK | BIOS.Error.Read ; #89 - READ ERROR
.WRITE_ERROR EQU DRV_MASK | BIOS.Error.Write ; #8A - WRITE ERROR
.GENERAL_FAILURE EQU DRV_MASK | BIOS.Error.Failure ; #8B - FAILURE
.DEVICE_BUSY EQU DRV_MASK | BIOS.Error.Busy ; #8C - BUSY (DEVICE OPENED)
;reserved EQU DRV_MASK | #CD
;reserved EQU DRV_MASK | #CE
;reserved EQU DRV_MASK | #CF
;reserved EQU DRV_MASK | #D0
;reserved EQU DRV_MASK | #D1
;reserved EQU DRV_MASK | #D2
;reserved EQU DRV_MASK | #D3
;reserved EQU DRV_MASK | #D4
;reserved EQU DRV_MASK | #D5
;reserved EQU DRV_MASK | #D6
;reserved EQU DRV_MASK | #D7
;reserved EQU DRV_MASK | #D8
;reserved EQU DRV_MASK | #D9
;reserved EQU DRV_MASK | #DA
;reserved EQU DRV_MASK | #DB
;reserved EQU DRV_MASK | #DC
;reserved EQU DRV_MASK | #DD
;reserved EQU DRV_MASK | #DE
.NotSupported EQU DRV_MASK | BIOS.Error.NotSupported
drv.ATAPI:
.NoSence EQU DRV_MASK | BIOS.Error.ATAPI.NoSence
.RecoveredError EQU DRV_MASK | BIOS.Error.ATAPI.RecoveredError
.NotReady EQU DRV_MASK | BIOS.Error.ATAPI.NotReady
.MediumError EQU DRV_MASK | BIOS.Error.ATAPI.MediumError
.HardwareError EQU DRV_MASK | BIOS.Error.ATAPI.HardwareError
.IllegalRequest EQU DRV_MASK | BIOS.Error.ATAPI.IllegalRequest
.UnitAttention EQU DRV_MASK | BIOS.Error.ATAPI.UnitAttention
.DataProtect EQU DRV_MASK | BIOS.Error.ATAPI.DataProtect
; EQU DRV_MASK | BIOS.Error.ATAPI;
; EQU DRV_MASK | BIOS.Error.ATAPI;
; EQU DRV_MASK | BIOS.Error.ATAPI;
.AbortedCommand EQU DRV_MASK | BIOS.Error.ATAPI.AbortedCommand
; EQU DRV_MASK | BIOS.Error.ATAPI;
; EQU DRV_MASK | BIOS.Error.ATAPI;
.Miscompare EQU DRV_MASK | BIOS.Error.ATAPI.Miscompare
; EQU DRV_MASK | BIOS.Error.ATAPI;
.TimeOut EQU DRV_MASK | BIOS.Error.ATAPI.TimeOut
;
; 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
;
;
STRUCT DSS_FCB_MAIN ; File Control Block
.NAME: BLOCK 8," " ;+ #00 +00. NAME
.EXT: BLOCK 3," " ;+ #08 +08. EXT
.SEARCH_ATTRIBUT BYTE FAT_ATTR.DIRECTORY ;+ #0B +11.
.RESERVED_NT: BYTE 0 ;+ #0C +12. RESERVED
.RESERVED_FAT32: BYTE 0 ;+ #0D +13. RESERVED
.CREATE_TIME_FAT32: WORD 0 ;+ #0E +14. RESERVED
.CREATE_DATE_FAT32: WORD 0 ;+ #10 +16. RESERVED
.RESERVED_FAT32_1: WORD 0 ;+ #12 +18. RESERVED
.FIRST_CLUSTER_H: WORD 0 ;+ #14 +20. START CLUSTER high
.TIME: WORD 0 ;+ #16 +22. TIME
.DATE: WORD 0 ;+ #18 +24. DATE
.FIRST_CLUSTER_L: WORD 0 ;+ #1A +26. START CLUSTER low
.F_SIZE: DWORD 0 ;+ #1C +28. SIZE FILE
.ATTRIBUT: BYTE FAT_ATTR.DIRECTORY ;+ #20 +32. ATTRIBUT
ENDS ;+ #21 +33.
;
STRUCT DSS_FCB_FAT_NAME
.MAIN DSS_FCB_MAIN
.FULL_FILE_NAME BLOCK 11," " ;+ #21 +33. 11 symbols fat name
ENDS ;+ #2B +43.
STRUCT DSS_FCB_DOS_NAME
.MAIN DSS_FCB_MAIN
.FULL_FILE_NAME BLOCK 13," " ;+ #21 +33. 12 symbols fat name + zero byte
ENDS ;+ #2E +46. for DOS name
; !TODO
STRUCT DSS_EFCB ; Extended File Control Block
; [ ] LFN
; [ ] Many files in dir
; ...
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 - Ÿàª®-¡¥«ë©
;