mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 01:11:48 +03:00
доделать OPENDIR
This commit is contained in:
parent
cfb3543373
commit
53d3408ec0
@ -27,6 +27,8 @@ MAX_SECTORS_PER_PAGE EQU #20 ;
|
||||
LOAD_SECTORS EQU SECTORS_OF_LOADER.AFTER_BPB
|
||||
LOADER_IN_BPB:
|
||||
.MAX_SIZE EQU _sBOOT_SECTOR.PARTITION_TABLE - _sBOOT_SECTOR_PARAMS_FAT32
|
||||
FATPAGE:
|
||||
.cache EQU #C000
|
||||
;------------------------------------------------------------------------------
|
||||
|
||||
DISP ORG_ADDRESS
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
; INPUT: HL - "C:\DIR\DIR\DIR_NAME[\]",0
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
CHDIR_FN:
|
||||
;!TEST Current Dir ;[x] 15/10/23
|
||||
; Current Dir 15/10/23
|
||||
;
|
||||
PUSH HL
|
||||
CALL DIR_PATH_CHECK
|
||||
@ -32,5 +32,5 @@ CHDIR: CALL SetPath_GetName ;
|
||||
LD A,(HL)
|
||||
OR A
|
||||
RET Z
|
||||
JP OPENDIR
|
||||
JP OPENDIR ; !FIXIT ¢®§¬®¦®, çâ® ¨§¡ëâ®ç® ¯®á«¥ SetPath_GetName
|
||||
;
|
||||
@ -1,24 +0,0 @@
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
;
|
||||
;
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
CHDISK_FN: CALL CHDISK
|
||||
RET C
|
||||
PUSH AF
|
||||
CALL DIR_PATH_CHANGE.FullCurrent
|
||||
POP AF
|
||||
RET
|
||||
CHDISK: ;[x] ¡®«¥¥ ª®à४â ï ᬥ ¤¨áª
|
||||
CALL OPENDSK
|
||||
;
|
||||
;R010
|
||||
RET C
|
||||
LD HL,CORE_BUFFERS.WorkDirectory
|
||||
LD (HL),0
|
||||
PUSH AF
|
||||
CALL OPENDIR
|
||||
POP BC
|
||||
RET C
|
||||
LD A,B
|
||||
RET
|
||||
;
|
||||
@ -1,4 +1,3 @@
|
||||
; [x] fat32 ;!TEST
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
;‚å®¤ë¥ § 票ï:
|
||||
; C - #12
|
||||
@ -28,14 +27,14 @@ CLOSE_FN: LD (.TMP),A
|
||||
LD D,(IY+_sFM.DIR_CLUSTER_H+1)
|
||||
PUSH DE
|
||||
;
|
||||
; [x] 15/11/2023 -bug with bad clusters ;!TEST
|
||||
; 15/11/2023 -bug with bad clusters
|
||||
LD A,(IY+_sFM.DRIVE)
|
||||
CALL OPENDSK
|
||||
JR C,.error
|
||||
;
|
||||
XOR A
|
||||
CALL SET_FM
|
||||
; [x] fat32
|
||||
; fat32
|
||||
POP DE
|
||||
LD (IY+_sFM.DIR_CLUSTER_H),E
|
||||
LD (IY+_sFM.DIR_CLUSTER_H+1),D
|
||||
@ -45,11 +44,13 @@ CLOSE_FN: LD (.TMP),A
|
||||
POP DE
|
||||
LD (IY+_sFM.DIR_CLUSTER_L),E
|
||||
LD (IY+_sFM.DIR_CLUSTER_L+1),D
|
||||
; [x] 15/11/2023 -bug with bad clusters ;!TEST
|
||||
; 15/11/2023 -bug with bad clusters
|
||||
LD (IY+_sFM.FS_REC.FIRST_CLUSTER_L),E
|
||||
LD (IY+_sFM.FS_REC.FIRST_CLUSTER_L+1),D
|
||||
;
|
||||
CALL LOADDIR ; [ ] big dir
|
||||
LD L,(IY+_sFM.HANDLE)
|
||||
LD H,(IY+_sFM.HANDLE+1)
|
||||
CALL LOADDIR.Custom ; [ ] big dir
|
||||
; [ ] big dir
|
||||
;!TODO ®â¬®â âì ªíè ¤® 㦮£® record index?
|
||||
;
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
; A - File attribute
|
||||
; OUTPUT: A - FM
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
CREATE: ;!TEST Current Dir ;[x] 15/10/23 ;CREATE_FN:
|
||||
CREATE: ; Current Dir 15/10/23 ;CREATE_FN:
|
||||
PUSH HL
|
||||
LD C,A
|
||||
;
|
||||
@ -31,7 +31,7 @@ CREATE: ;!TEST Current Dir ;[x] 15/10/23 ;CREATE_FN:
|
||||
;
|
||||
; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00
|
||||
; OUTPUT: A - FM
|
||||
.NEW: ;!TEST Current Dir ;[x] 15/10/23
|
||||
.NEW: ; Current Dir 15/10/23
|
||||
PUSH HL
|
||||
LD C,A
|
||||
;
|
||||
@ -97,7 +97,7 @@ CREATE: ;!TEST Current Dir ;[x] 15/10/23 ;CREATE_FN:
|
||||
LD (.PATH0),HL
|
||||
CALL SetPath_GetName
|
||||
RET C
|
||||
; [x] 26/06/2024 {64 kb cluster}
|
||||
; 26/06/2024 {64 kb cluster}
|
||||
CALL CHECK_64kb_CLUSTER
|
||||
RET C
|
||||
;
|
||||
|
||||
@ -1,31 +1,22 @@
|
||||
; [x] fat32 ;!TEST
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
; INPUT: HL - "c:\dir\filename.ext",#00 without simbols * ?
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
DEL_FN: ;Current Dir ;[x] 15/10/23
|
||||
DEL_FN: ; Current Dir 15/10/23
|
||||
PUSH HL
|
||||
CALL DIR_PATH_CHECK
|
||||
POP HL
|
||||
RET C
|
||||
;
|
||||
CALL SetPath_GetName ; â¥áâ ¤®¯ãáâ. ¨¬ï ¨ áâà. ¤¨áª
|
||||
RET C
|
||||
; [x] 26/06/2024 {64 kb cluster}
|
||||
CALL CHECK_64kb_CLUSTER
|
||||
RET C
|
||||
;
|
||||
CALL MASK
|
||||
CALL SetPath_GetName ; â¥áâ ¤®¯ãáâ. ¨¬ï ¨ áâà. ¤¨áª
|
||||
RET C
|
||||
; [x] 26/06/2024 {64 kb cluster}
|
||||
CALL CHECK_64kb_CLUSTER
|
||||
RET C
|
||||
;
|
||||
;!TEST optimization
|
||||
;LD HL,MASKARE
|
||||
;LD BC,11
|
||||
;LD A,"?"
|
||||
;CPIR
|
||||
;LD A,DSS_Error.sys.INVALID_NAME
|
||||
;SCF
|
||||
CALL CHECK_NAME
|
||||
CALL MASK
|
||||
RET C
|
||||
;
|
||||
CALL CHECK_NAME
|
||||
RET Z
|
||||
;
|
||||
CALL LOADDIR ; [ ] big dir
|
||||
|
||||
@ -350,18 +350,17 @@ _TST_PROC: CALL GETMEM
|
||||
LD DE,RAMMAP
|
||||
LD A,H
|
||||
AND #C0
|
||||
;!TEST
|
||||
CP #80
|
||||
JR Z,FR8000
|
||||
JR NC,FRC000
|
||||
;
|
||||
FR4000: LD A,(DE)
|
||||
JR Z,.from_8000
|
||||
JR NC,.from_C000
|
||||
; from_4000
|
||||
LD A,(DE)
|
||||
OUT (SLOT1),A
|
||||
INC DE
|
||||
FR8000: LD A,(DE)
|
||||
.from_8000: LD A,(DE)
|
||||
OUT (SLOT2),A
|
||||
INC DE
|
||||
FRC000: LD A,(DE)
|
||||
.from_C000: LD A,(DE)
|
||||
OUT (SLOT3),A
|
||||
;CALL M_PSP
|
||||
;
|
||||
@ -388,11 +387,9 @@ _TST_PROC_2:
|
||||
EX DE,HL
|
||||
LD XH,D
|
||||
LD XL,E
|
||||
;LD HL,(CORE_BUFFERS.EXEBUFF.PC_REG)
|
||||
LD DE,RETFAR ; ¤à¥á ¯/¯ "¥®¦¨¤ ®¥ § ¢¥à襨¥ ¯à®æ¥áá "
|
||||
PUSH DE
|
||||
;PUSH HL
|
||||
;!TEST Current Dir ;[x] 15/10/23
|
||||
; Current Dir 15/10/23
|
||||
PUSH IX
|
||||
LD HL,CORE_BUFFERS.CurrentPath
|
||||
LD A,(CORE_BUFFERS.EXEBUFF.VERSION)
|
||||
@ -711,12 +708,12 @@ FINDPATH:
|
||||
POP AF
|
||||
RET
|
||||
.MAKE_PATH_ARRAY:
|
||||
LD HL,ENVPAGE.PATH_PNT_ARRAY-1 ;R04 -1
|
||||
LD HL,ENVPAGE.PATH_PNT_ARRAY-1
|
||||
LD DE,ENVPAGE.ENVTEMP-1
|
||||
LD B,#00
|
||||
.NEXTAR:
|
||||
LD (HL),C ;R04
|
||||
INC HL ;R04
|
||||
LD (HL),C
|
||||
INC HL
|
||||
XOR A
|
||||
LD (DE),A
|
||||
LD C,A
|
||||
@ -725,8 +722,6 @@ FINDPATH:
|
||||
INC HL
|
||||
LD (HL),D
|
||||
INC HL
|
||||
;R04 LD (HL),C
|
||||
;R04 INC HL
|
||||
INC B
|
||||
.NEXTRT:
|
||||
LD A,(DE)
|
||||
@ -747,8 +742,8 @@ FINDPATH:
|
||||
JR Z,.NEXTRT
|
||||
OR A
|
||||
JR NZ,.NEXTCH
|
||||
LD (HL),C ;R04
|
||||
INC HL ;R04
|
||||
LD (HL),C
|
||||
INC HL
|
||||
LD (HL),A
|
||||
INC HL
|
||||
LD (HL),A
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
F_FIRST_FN: CALL F_FIRST.INIT_VARS
|
||||
PUSH HL
|
||||
;!TEST Current Dir ;[x] 15/10/23
|
||||
; Current Dir 15/10/23
|
||||
CALL DIR_PATH_CHECK
|
||||
POP HL
|
||||
RET C
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
; [x] fat32 ;!TEST
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
; ”γ<CEB3>ζ¨ο #1B. ‘®§¤ ¨¥ <20> β «®£ .
|
||||
;
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
; [x] fat32 ;!TEST
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
; ”ãªæ¨ï #11. Žâªàë⨥ ä ©« .
|
||||
;
|
||||
@ -12,7 +11,7 @@
|
||||
; ¢ë室: CF=0, A - ¤¥áªà¨¯â®à ä ©« .
|
||||
; CF=1, A - ª®¤ ®è¨¡ª¨.
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
OPEN_FN: ;!TEST Current Dir ;[x] 15/10/23
|
||||
OPEN_FN: ; Current Dir 15/10/23
|
||||
;AND #7F ; ACCESS_MODE bit7 - ¤«ï ¢ãâ॥£® ¨á¯®«ì§®¢ ¨ï))) ;!TODO
|
||||
LD (.TMP),A
|
||||
PUSH HL
|
||||
|
||||
@ -146,14 +146,11 @@ READ: LD (.R_POINT),HL
|
||||
ADD HL,DE
|
||||
;
|
||||
EXX
|
||||
;LD DE,0 ;!TEST
|
||||
LD L,(IY+_sFM.F_POSITION+2) ;FP HIGH
|
||||
LD H,(IY+_sFM.F_POSITION+3)
|
||||
;!TEST
|
||||
JR NC,.no_inc_hl
|
||||
INC HL
|
||||
;ADC HL,DE
|
||||
JR NC,.no_inc_hl
|
||||
;
|
||||
INC HL
|
||||
.no_inc_hl: EXX ;HL':HL - NEW FP
|
||||
;
|
||||
LD C,(IY+_sFM.FS_REC.F_SIZE)
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
; INPUT: HL - "old_name.ext",#00 without simbols * ?
|
||||
; DE - "new_name.ext",#00 without simbols * ?
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
RENAME: ;!TEST Current Dir ;[x] 15/10/23
|
||||
RENAME: ; Current Dir 15/10/23
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
CALL DIR_PATH_CHECK.forceCheck
|
||||
@ -30,19 +30,12 @@ RENAME: ;!TEST Current Dir ;[x] 15/10/23
|
||||
CALL MASK.name
|
||||
POP DE
|
||||
RET C
|
||||
;!TEST optimization
|
||||
;LD HL,MASKARE
|
||||
;LD BC,11
|
||||
;LD A,"?"
|
||||
;CPIR
|
||||
;LD A,DSS_Error.sys.INVALID_NAME
|
||||
;SCF
|
||||
CALL CHECK_NAME
|
||||
;
|
||||
CALL CHECK_NAME
|
||||
RET Z
|
||||
;
|
||||
PUSH DE
|
||||
CALL LOADDIR ; [ ] big dir ; ¯à®ç¨â âì ᯨ᮪ ª â «®£
|
||||
;LD A,#33
|
||||
LD A,FAT_ATTR.NoSYSnoVolID
|
||||
CALL SEARCH.Custom ; ¯®¨áª § ¯¨á¨ "old_name.ext" ¢ ᯨ᪥ ¤¨áª
|
||||
POP HL
|
||||
@ -50,16 +43,10 @@ RENAME: ;!TEST Current Dir ;[x] 15/10/23
|
||||
;LD DE,MASKARE
|
||||
CALL MASK.name
|
||||
RET C
|
||||
;!TEST optimization
|
||||
;LD HL,MASKARE
|
||||
;LD BC,11
|
||||
;LD A,"?"
|
||||
;CPIR
|
||||
;LD A,DSS_Error.sys.INVALID_NAME
|
||||
;SCF
|
||||
CALL CHECK_NAME
|
||||
;
|
||||
CALL CHECK_NAME
|
||||
RET Z
|
||||
;
|
||||
PUSH IX
|
||||
LD A,FAT_ATTR.NoSYSnoVolID
|
||||
CALL SEARCH.Custom ; ¯®¨áª § ¯¨á¨ "new_name.ext" ¢ ᯨ᪥ ¤¨áª
|
||||
@ -67,7 +54,7 @@ RENAME: ;!TEST Current Dir ;[x] 15/10/23
|
||||
LD A,DSS_Error.sys.FILE_EXISTS
|
||||
CCF
|
||||
RET C
|
||||
|
||||
;
|
||||
SET_PAGE_X DIRPAGE
|
||||
EX AF,AF'
|
||||
;
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
; [x] fat32 ;!TEST
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
; ”ãªæ¨ï #1C. “¤ «¥¨¥ ª â «®£ .
|
||||
; Œ®¦® 㤠«¨âì ⮫쪮 ¯ãá⮩ ª â «®£.
|
||||
@ -8,7 +7,7 @@
|
||||
;
|
||||
; INPUT: HL - "C:\DIR\DIR\DIR_NAME",0
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
RMDIR: ;!TEST Current Dir ;[x] 15/10/23
|
||||
RMDIR: ; Current Dir 15/10/23
|
||||
PUSH HL
|
||||
CALL DIR_PATH_CHECK
|
||||
POP HL
|
||||
|
||||
@ -209,7 +209,7 @@ OPENDSK: ;!TEST DRV.Open
|
||||
|
||||
|
||||
;----------------------------------------------------------------------;
|
||||
;!TEST Current Dir ;[x] 15/10/23
|
||||
;! Current Dir 15/10/23
|
||||
DIR_PATH_CHANGE:
|
||||
.FullCurrent: LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
|
||||
ADD 'A'
|
||||
|
||||
172
DSS/FS/FAT.asm
172
DSS/FS/FAT.asm
@ -318,7 +318,6 @@ SEARCH:
|
||||
|
||||
;----------------------------------------------------------------------;
|
||||
; FIND "MASKAREA" IN DIRECTORY
|
||||
; [x] fat32 ;!TEST
|
||||
; ¢ë室: IY:DE - cluster number
|
||||
FINDDIR: SET_PAGE_X DIRPAGE
|
||||
;
|
||||
@ -467,34 +466,81 @@ FINDDIR: SET_PAGE_X DIRPAGE
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
|
||||
;----------------------------------------------------------------------;
|
||||
âãâ ¤®¤¥« âì
|
||||
; ‚室: IY - 㪠§ ⥫ì ç «® ä ©«®¢®£® ¬ ¨¯ã«ïâ®à
|
||||
CHECK_ROOT_CLUSTER:
|
||||
EX DE,HL
|
||||
LD HL,(CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L) ;R005
|
||||
LD A,L
|
||||
OR H
|
||||
LD HL,(CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H)
|
||||
;EX DE,HL
|
||||
; LD HL,(CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L)
|
||||
; LD A,L
|
||||
; OR H
|
||||
; LD HL,(CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H)
|
||||
; OR L
|
||||
; OR H
|
||||
;EX DE,HL
|
||||
CALL CHECK_FIRST_CLUSTER
|
||||
; RET NZ
|
||||
|
||||
; LD A,(CORE_BUFFERS.FS_Buffer.FAT_TYPE)
|
||||
; CP FAT_TYPE.x32
|
||||
; CALL Z,SET_FAT_ROOT_DIR_CLUSTER
|
||||
; ;
|
||||
; XOR A
|
||||
RET
|
||||
;
|
||||
; .fat32root: CALL SET_FAT32_ROOT_DIR_CLUSTER
|
||||
; OR A
|
||||
; RET
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
|
||||
;----------------------------------------------------------------------;
|
||||
SET_FAT_ROOT_DIR_CLUSTER:
|
||||
LD HL,(CORE_BUFFERS.FS_Buffer.RootDirStartCluster_L)
|
||||
LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L),HL
|
||||
LD HL,(CORE_BUFFERS.FS_Buffer.RootDirStartCluster_H)
|
||||
LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H),HL
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------
|
||||
; ¢å®¤: IY - 㪠§ ⥫ì ç «® ä ©«®¢®£® ¬ ¨¯ã«ïâ®à
|
||||
; ¢ë室: HL':HL - first cluster
|
||||
; ZF = 0 ¥á«¨ ¯¥à¢®£® ª« áâ¥à ¥â
|
||||
CHECK_FIRST_CLUSTER:
|
||||
EXX
|
||||
LD L,(IY+_sFM.FS_REC.FIRST_CLUSTER_H) ; START CLUSTER High
|
||||
LD H,(IY+_sFM.FS_REC.FIRST_CLUSTER_H+1)
|
||||
LD A,L
|
||||
OR H
|
||||
EXX
|
||||
LD L,(IY+_sFM.FS_REC.FIRST_CLUSTER_L) ; START CLUSTER
|
||||
LD H,(IY+_sFM.FS_REC.FIRST_CLUSTER_L+1)
|
||||
OR L
|
||||
OR H
|
||||
EX DE,HL
|
||||
RET
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
|
||||
;----------------------------------------------------------------------;
|
||||
; ¢å®¤: HL - ¨¬ï ¤¨à¥ªâ®à¨¨
|
||||
; [x] fat32 ;!TEST
|
||||
|
||||
OPENDIR: LD IY,CORE_BUFFERS.FM_BUF
|
||||
LD A,(HL)
|
||||
OR A
|
||||
JR NZ,.SUBDIR
|
||||
;
|
||||
.REROOT: LD DE,0 ; !FIXIT ; [ ] CDFS - ¡à âì ¯¥à¢ë© ª« áâ¥à ¨§ ¯¥à¥¬¥®©
|
||||
LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L),DE
|
||||
LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H),DE
|
||||
CALL LOADDIR ; [ ] big dir
|
||||
âãâ ¤®¤¥« âì
|
||||
.REROOT: CALL SET_FAT_ROOT_DIR_CLUSTER
|
||||
;LD DE,0 ; ¯à¨§ ª root dir ; !FIXIT ; [ ] CDFS - ¡à âì ¯¥à¢ë© ª« áâ¥à ¨§ ¯¥à¥¬¥®©
|
||||
;LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L),DE
|
||||
;LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H),DE
|
||||
.reroot: CALL LOADDIR ; [ ] big dir
|
||||
; CF=0
|
||||
LD HL,CORE_BUFFERS.WorkDirectory
|
||||
LD (HL),'\'
|
||||
INC HL
|
||||
INC HL
|
||||
LD (HL),#00
|
||||
;AND A
|
||||
RET
|
||||
@ -502,7 +548,12 @@ OPENDIR: LD IY,CORE_BUFFERS.FM_BUF
|
||||
.SUBDIR: CP "."
|
||||
JR NZ,.SUBDIR2
|
||||
; fat32
|
||||
CALL CHECK_ROOT_CLUSTER
|
||||
; !TEST 04/01/2026
|
||||
EX DE,HL
|
||||
CALL CHECK_ROOT_CLUSTER
|
||||
;CALL CHECK_FIRST_CLUSTER
|
||||
EX DE,HL
|
||||
;
|
||||
JR NZ,.no_root ;R005
|
||||
; "cd ." or "cd .."
|
||||
;R005
|
||||
@ -546,7 +597,8 @@ OPENDIR: LD IY,CORE_BUFFERS.FM_BUF
|
||||
; <20>à®ç¨â âì ᯨ᮪ ª â «®£
|
||||
; ¢å®¤ (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L), (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H)
|
||||
LOADDIR: ;!TODO optimize
|
||||
CALL LOAD_SAVE_DIR_PREPARE
|
||||
LD HL,0
|
||||
.Custom: CALL LOAD_SAVE_DIR_PREPARE
|
||||
.next: PUSH AF
|
||||
EX AF,AF'
|
||||
JR NZ,.read_dir ; root dir or not
|
||||
@ -582,8 +634,7 @@ LOADDIR: ;!TODO optimize
|
||||
JR NC,.RTD1
|
||||
;
|
||||
LD B,A ; ç¨á«® ᥪâ®à®¢
|
||||
.RTD1: LD A,(CORE_BUFFERS.FS_Buffer.DRIVE) ; ®¬
|
||||
¥à ¤¨áª
|
||||
.RTD1: LD A,(CORE_BUFFERS.FS_Buffer.DRIVE) ; ®¬¥à ¤¨áª
|
||||
LD DE,DIRPAGE.buffer ; ¡ãä¥à
|
||||
LD C,Dss.DRV.Read ; ç⥨¥ ᥪâ®à®¢
|
||||
RST ToDSS.DRV
|
||||
@ -601,8 +652,7 @@ LOADDIR: ;!TODO optimize
|
||||
|
||||
|
||||
|
||||
ld
|
||||
; ¤®¤¥« âì ¯¥à¥¤ çã ID § ¯¨á¨ ¤¨à¥ªâ®à¨¨ ¨ § £à㧪¨ ¯® ¥© 㦮£® ªã᪠¢ ªíè
|
||||
; [ ] ¤®¤¥« âì ¯¥à¥¤ çã ID § ¯¨á¨ ¤¨à¥ªâ®à¨¨ ¨ § £à㧪¨ ¯® ¥© 㦮£® ªã᪠¢ ªíè
|
||||
;!TODO FAT procedures
|
||||
;----------------------------------------------------------------------;
|
||||
; ‚室:
|
||||
@ -613,27 +663,21 @@ LOAD_SAVE_DIR_PREPARE:
|
||||
; HLIX = (HL*32) & #1FC000 ᬥ饨¥ ã¦ë© ¡«®ª ¯® #4000 ¡ ©â®¢
|
||||
XOR A
|
||||
LD XL,A
|
||||
LD L,A
|
||||
LD E,A
|
||||
LD A,H
|
||||
AND #0E
|
||||
LD H,E
|
||||
AND #FE
|
||||
RRA
|
||||
RR L
|
||||
RR E
|
||||
LD (CORE_BUFFERS.FS_Buffer.DIR_BLOCK),A
|
||||
RRA
|
||||
RR L
|
||||
RR E
|
||||
RRA
|
||||
RR L
|
||||
LD E,L
|
||||
RR E
|
||||
LD XH,E
|
||||
LD L,A
|
||||
; ;
|
||||
;
|
||||
; A = ®¬¥à ¡«®ª ªíè ¤¨à¥ªâ®à¨¨
|
||||
RL E
|
||||
RLA
|
||||
RL E
|
||||
RLA
|
||||
LD (CORE_BUFFERS.FS_Buffer.DIR_BLOCK),A
|
||||
;
|
||||
XOR A ; FILE MANIPULATOR = 0
|
||||
;LD H,A
|
||||
;LD L,A
|
||||
@ -648,11 +692,6 @@ LOAD_SAVE_DIR_PREPARE:
|
||||
LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
|
||||
LD (CORE_BUFFERS.FM_BUF.DRIVE),A
|
||||
;;;;;;;;
|
||||
;LD A,(IY+_sFM.FS_REC.FIRST_CLUSTER_L)
|
||||
;OR (IY+_sFM.FS_REC.FIRST_CLUSTER_L+1)
|
||||
;OR (IY+_sFM.FS_REC.FIRST_CLUSTER_H)
|
||||
;OR (IY+_sFM.FS_REC.FIRST_CLUSTER_H+1)
|
||||
;
|
||||
XOR A
|
||||
LD D,#40
|
||||
LD E,A
|
||||
@ -755,9 +794,10 @@ LOAD_SAVE_DIR_PREPARE:
|
||||
#1FFFE0 & #3FFF €¤à¥á 㦮© ¯®§¨æ¨¨ ¢ ªíè
|
||||
(#1FFFE0 & #1FC000)<<2 ¤¢¨£ ¥¬ ¡ ©â 2 ¨ 3 ç⮡ ¯®«ãç¨âì ®¬¥à ¡«®ª
|
||||
*/
|
||||
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
|
||||
|
||||
; [ ] big dir
|
||||
; ᪮¯¨à®¢ âì § ¯¨áì ¢ ᯨ᮪ ¤¨áª (ª â «®£ ) de ix iy
|
||||
; ¨ á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
||||
@ -1409,7 +1449,7 @@ FS_Buffer:
|
||||
;!TODO record index. ¢®§¬®¦®, çâ® ¬®¦¥â á«®¬ âìáï, ¥á«¨ ¡®«ìè¥ áâà ¨æë
|
||||
DELETE_REC_FAT: SET_PAGE_X DIRPAGE
|
||||
EX AF,AF'
|
||||
CALL DELETE_LFN_RECORDS ; [x] 㤠«¥¨¥ § ¯¨á¨ LFN
|
||||
CALL DELETE_LFN_RECORDS ; [ ] big dir ; [x] 㤠«¥¨¥ § ¯¨á¨ LFN
|
||||
LD (IX + FAT_DIRECTORY_RECORD.NAME),#E5 ; ¯à¨§ ª 㤠«¥¨ï ä ©«
|
||||
; fat32
|
||||
LD L,(IX+FAT_DIRECTORY_RECORD.FIRST_CLUSTER_H) ; ü ¯¥à¢®£® ª« áâ¥à
|
||||
@ -1495,7 +1535,6 @@ SET_NEW_FREE_CLUSTER:
|
||||
; RET
|
||||
|
||||
;
|
||||
; [x] fat32 ;!TEST
|
||||
; ©â¨ ¯¥à¢ë© ᢮¡®¤ë© ª« áâ¥à ;!TODO ¯à®¢¥à¨âì ¯¥à¥¡®à ª« áâ¥à®¢
|
||||
; ¢ë室: HL - ¬« ¤è¨© ®¬¥à ᢮¡®¤®£® ª« áâ¥à
|
||||
; HL' - áâ à訩 ®¬¥à ᢮¡®¤®£® ª« áâ¥à
|
||||
@ -1590,7 +1629,6 @@ SET_NEW_FREE_CLUSTERS:
|
||||
; ;
|
||||
|
||||
;
|
||||
; [x] fat32 ;!TEST
|
||||
; <20>ਪ९¨âì ª ¯®á«¥¤¥¬ã ª« áâ¥àã æ¥¯®çª¨ ®¢ë© ¯ãá⮩ ª« áâ¥à
|
||||
; ‚室: HL':HL - ®¬¥à ª« áâ¥à ª ª®â®à®¬ã ¯à¨ªà¥¯¨âì ¯ãá⮩
|
||||
; ‚ë室: HL':HL - ®¬¥à ª« áâ¥à ª ª®â®à®¬ã ¯à¨ªà¥¯¨«áï ¯ãá⮩
|
||||
@ -1625,7 +1663,7 @@ INC_FAT: PUSH HL ; ⥪
|
||||
EXX
|
||||
;
|
||||
CALL WRITE_TO_FAT ; § ¯¨á âì ¢ ª¥è FAT- ®¬¥à ª« áâ¥à
|
||||
;!TEST ;!TODO 2/12/23 ; [ ] ¡ £ á ¨§¡ëâ®ç®© § ¯¨áìî WRITE_FAT_TABLE?
|
||||
; 02/12/23 ¡ £ á ¨§¡ëâ®ç®© § ¯¨áìî WRITE_FAT_TABLE
|
||||
;CALL WRITE_FAT_TABLE ; ¯®¤ª«. ¡ ªã ª¥è FAT ¨ § ¯¨á âì ¥£® ¤¨áª
|
||||
;
|
||||
EXX
|
||||
@ -1639,10 +1677,9 @@ INC_FAT: PUSH HL ; ⥪
|
||||
XOR A ; 㬥ìè¨âì
|
||||
CALL SET_NEW_FREE_CLUSTERS ; [ ] free clusters for FSInfo
|
||||
RET
|
||||
;RX01
|
||||
|
||||
|
||||
; [x] fat32 ;!TEST
|
||||
|
||||
; ¢å®¤: hl = ¬« ¤è¥¥ á«®¢® ®¬¥à ª« áâ¥à ¤«ï áà ¢¥¨ï á FAT_Max_Cluster
|
||||
; hl' = áâ à襥 á«®¢® ®¬¥à ª« áâ¥à ¤«ï áà ¢¥¨ï á FAT_Max_Cluster (⮫쪮 ¤«ï fat32)
|
||||
CHECK_CLUSTER_IS_SMALLER:
|
||||
@ -1670,7 +1707,6 @@ CHECK_CLUSTER_IS_SMALLER:
|
||||
;
|
||||
|
||||
;
|
||||
;[x] fat32 ;!TEST
|
||||
;------------------------------------------------------------------------------------------------
|
||||
; <20>à®ç¨â âì ¨§ ª¥è FAT- ®¬¥à á«¥¤. ª« áâ¥à
|
||||
; ¢å®¤: hl - ®¬¥à ª« áâ¥à (¬« ¤è¥¥ á«®¢®)
|
||||
@ -1802,8 +1838,6 @@ SET_FAT32_CACHE_BLOCK_CHANGED_REGION:
|
||||
LD (CORE_BUFFERS.FS_Buffer.CacheUpdated),A
|
||||
RET
|
||||
|
||||
;
|
||||
; [x] fat32 ;!TEST
|
||||
;
|
||||
; !TODO optimize
|
||||
; ¯à¨ § ¯¨á¨ ¢ ªíè § ç¥¨ï ®â¬¥ç âì ç¥à¥§ OR ¢ ï祩ª¥ FS_Buffer.SectorOfCacheBlock
|
||||
@ -1913,8 +1947,7 @@ WRITE_TO_FAT: LD DE,(CORE_BUFFERS.FS_Buffer.END_CHAIN_CLUSTER_L) ;
|
||||
POP DE
|
||||
JR .exit
|
||||
;
|
||||
.FAT32: ; [x] fat32 ;!TEST
|
||||
EXX
|
||||
.FAT32: EXX
|
||||
PUSH DE ; áâ à訩 ®¬¥à ª« áâ¥à ª®â®àë© ¢¯¨á âì
|
||||
PUSH HL ; áâ à襥 á«®¢® ®¬¥à ª« áâ¥à ¢ ª®â®àë© § ¯¨á âì
|
||||
EXX
|
||||
@ -1942,7 +1975,6 @@ WRITE_TO_FAT: LD DE,(CORE_BUFFERS.FS_Buffer.END_CHAIN_CLUSTER_L) ;
|
||||
|
||||
|
||||
|
||||
; [x] fat32 ;!TEST
|
||||
;FAT_BLOCK * Sectors_in_Block = SECTOR_OF_FAT
|
||||
; in: HL - Cache block
|
||||
; out: C:HL - logical number
|
||||
@ -1981,7 +2013,6 @@ GET_SECTOR_OF_FAT:
|
||||
;;;;;;;;;
|
||||
|
||||
|
||||
; [x] fat32 ;!TEST
|
||||
;RE_FAT:
|
||||
;RX01
|
||||
; <20>à®ç¨â âì ¢ ª¥è •• ᥪâ®à®¢ FAT-
|
||||
@ -2021,7 +2052,7 @@ READ_FAT_TABLE: PUSH HL
|
||||
RET
|
||||
|
||||
|
||||
; [x] fat32 ;!TEST
|
||||
|
||||
; <20>®¤ª«îç¨âì ¡ ªã ª¥è FAT ¨ § ¯¨á âì ¥£® ¤¨áª
|
||||
WRITE_FAT_TABLE:
|
||||
SET_PAGE_X FATPAGE
|
||||
@ -2228,9 +2259,9 @@ WRITE_FAT_TABLE:
|
||||
POP DE
|
||||
POP AF
|
||||
RET
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------
|
||||
;
|
||||
;[x] fat32 ;!TEST
|
||||
;¢å®¤: HL':HL - ®¬¥à ª« áâ¥à
|
||||
;¢ë室: HL - ¤à¥á 㦮© ï祩ª¨ ¢ áâà ¨æ¥ FATPAGE
|
||||
GET_FAT32_CELL: ; ¤¢¨£ ¥¬ ¢«¥¢® HL':H
|
||||
@ -2344,8 +2375,6 @@ GET_FAT12_CELL: LD D,H
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
;[x] fat32 ;!TEST
|
||||
;CLUSTER_TO_SECTOR:
|
||||
; in: HL':HL - CLUSTER
|
||||
; out: HL:IX - SECTOR
|
||||
@ -2394,7 +2423,6 @@ CLUSTER_TO_SECTOR:
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
; [x] fat32 ;!TEST
|
||||
; READ SECTORS OF FILE
|
||||
; ¢å®¤: HL:DE - FP (in sectors)
|
||||
; IY - FM
|
||||
@ -2561,24 +2589,8 @@ BLOCK_READ: LD (READ.PointerOnBuffer),IX
|
||||
RET
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
; [x] fat32
|
||||
; ¢å®¤: IY - FM
|
||||
; ¢ë室: HL':HL - first cluster
|
||||
; ZF = 0 ¥á«¨ ¯¥à¢®£® ª« áâ¥à ¥â
|
||||
CHECK_FIRST_CLUSTER:
|
||||
EXX
|
||||
LD L,(IY+_sFM.FS_REC.FIRST_CLUSTER_H) ; START CLUSTER High
|
||||
LD H,(IY+_sFM.FS_REC.FIRST_CLUSTER_H+1)
|
||||
LD A,L
|
||||
OR H
|
||||
EXX
|
||||
LD L,(IY+_sFM.FS_REC.FIRST_CLUSTER_L) ; START CLUSTER
|
||||
LD H,(IY+_sFM.FS_REC.FIRST_CLUSTER_L+1)
|
||||
OR L
|
||||
OR H
|
||||
RET
|
||||
|
||||
; [x] fat32
|
||||
;-----------------------------------------------------------------------
|
||||
; WRITE SECTORS OF FILE
|
||||
; ¢å®¤: HL:DE - FP (in sectors)
|
||||
; IX - data in RAM
|
||||
@ -2595,16 +2607,6 @@ BLOCK_WRITE: LD (READ.PointerOnBuffer),IX
|
||||
PUSH BC ; ¬« ¤è¥¥ á«®¢® ®¬¥à ª« áâ¥à
|
||||
PUSH DE ; fat32 áâ à襥 á«®¢® ®¬¥à ª« áâ¥à
|
||||
;
|
||||
; EXX
|
||||
; LD L,(IY+_sFM.FS_REC.FIRST_CLUSTER_H) ; START CLUSTER High
|
||||
; LD H,(IY+_sFM.FS_REC.FIRST_CLUSTER_H+1)
|
||||
; LD A,L
|
||||
; OR H
|
||||
; EXX
|
||||
; LD L,(IY+_sFM.FS_REC.FIRST_CLUSTER_L) ; START CLUSTER
|
||||
; LD H,(IY+_sFM.FS_REC.FIRST_CLUSTER_L+1)
|
||||
; OR L
|
||||
; OR H
|
||||
CALL CHECK_FIRST_CLUSTER
|
||||
JR NZ,.FindCluster
|
||||
;
|
||||
|
||||
@ -37,8 +37,8 @@
|
||||
; .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
|
||||
; .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
|
||||
; from Core
|
||||
|
||||
@ -1 +1 @@
|
||||
3
|
||||
4
|
||||
@ -69,6 +69,7 @@ MINIMUM_BIOS_VERSION EQU 3*256 + 06 ; version 3.06
|
||||
;-----------------------------------------------[^^^^^^]
|
||||
|
||||
;-----------------------------------------------[«®£.®¬¥à áâà ¨æ]
|
||||
IFUSED DIRPAGE
|
||||
DEFINE USING_MEMPAGES 4 ; à §¬¥à ¡«®ª ¤®¯®«¨â¥«ìëå áâà ¨æ
|
||||
; ªíè ᯨ᪠ª â «®£
|
||||
DIRPAGE EQU 0 + (low BANKTBL)
|
||||
@ -85,6 +86,7 @@ ENVPAGE EQU TXTPAGE
|
||||
DRVPAGE EQU 3 + (low BANKTBL)
|
||||
;
|
||||
COREPAGE EQU 4 + (low BANKTBL) ; ® ®â¤¥«ì® ¨ ¥ á ¡«®ª®¬ ¢ëè¥.
|
||||
ENDIF
|
||||
;-----------------------------------------------[^^^^^^^^^^^^^^^^^^]
|
||||
|
||||
DIRECTORY_PATH_LENGTH EQU 256 ; '\' + 255, 0
|
||||
|
||||
@ -1 +1 @@
|
||||
527
|
||||
531
|
||||
148
TMP_CODE.ASM
148
TMP_CODE.ASM
@ -375,3 +375,151 @@ SAVEDIR: ;!TODO optimize
|
||||
RET
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; [ ] ¤®¤¥« âì ¯¥à¥¤ çã ID § ¯¨á¨ ¤¨à¥ªâ®à¨¨ ¨ § £à㧪¨ ¯® ¥© 㦮£® ªã᪠¢ ªíè
|
||||
;!TODO FAT procedures
|
||||
;----------------------------------------------------------------------;
|
||||
; ‚室:
|
||||
; HL - ID § ¯¨á¨, ª®â®àë© ¤®«¦¥ ¯®¯ áâì ¢ Š<>˜
|
||||
; ‚ë室: A - ‘âà ¨æ , ª®â®à ï ¡ë« ¢ SLOT3 ¤® ¢ë§®¢
|
||||
; ZF' - RootDir
|
||||
LOAD_SAVE_DIR_PREPARE:
|
||||
; [ ] ‚室: HL - ID § ¯¨á¨, ª®â®àë© ¤®«¦¥ ¯®¯ áâì ¢ Š<>˜
|
||||
; [ ] ‚ë室: HLIX - ᬥ饨¥ ¢ ä ©«¥ ª â «®£ ã¦ë© ¡«®ª ¯® #4000 ¡ ©â®¢
|
||||
; HLIX = (HL*32) & #1FC000 ᬥ饨¥ ã¦ë© ¡«®ª ¯® #4000 ¡ ©â®¢
|
||||
XOR A
|
||||
LD XL,A
|
||||
LD E,A
|
||||
LD A,H
|
||||
LD H,E
|
||||
AND #FE
|
||||
RRA
|
||||
RR E
|
||||
LD (CORE_BUFFERS.FS_Buffer.DIR_BLOCK),A
|
||||
RRA
|
||||
RR E
|
||||
RRA
|
||||
RR E
|
||||
LD XH,E
|
||||
LD L,A
|
||||
; ;
|
||||
;
|
||||
XOR A ; FILE MANIPULATOR = 0
|
||||
;LD H,A
|
||||
;LD L,A
|
||||
;LD IX,0
|
||||
LD B,A ; ®â ç « ä ©«
|
||||
CALL MOVE_FP
|
||||
|
||||
SET_PAGE_X DIRPAGE
|
||||
AND A
|
||||
PUSH AF
|
||||
;
|
||||
LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
|
||||
LD (CORE_BUFFERS.FM_BUF.DRIVE),A
|
||||
;;;;;;;;
|
||||
XOR A
|
||||
LD D,#40
|
||||
LD E,A
|
||||
LD HL,(CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L)
|
||||
EXX
|
||||
LD D,A
|
||||
LD E,A
|
||||
LD HL,(CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H)
|
||||
OR H
|
||||
OR L
|
||||
EXX
|
||||
OR H
|
||||
OR L
|
||||
;;;;;;;;
|
||||
PUSH AF
|
||||
CALL NZ,.CalcDirSize
|
||||
;
|
||||
LD (CORE_BUFFERS.FM_BUF.FS_REC.F_SIZE),DE
|
||||
EXX
|
||||
LD (CORE_BUFFERS.FM_BUF.FS_REC.F_SIZE + 2),DE
|
||||
POP AF
|
||||
EX AF,AF'
|
||||
POP AF
|
||||
RET
|
||||
;
|
||||
.CalcDirSize: ; calc dir size in clusters
|
||||
LD DE,0
|
||||
;LD HL,(CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L)
|
||||
;EXX
|
||||
; LD HL,(CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H)
|
||||
.loop: ; ;
|
||||
;EXX
|
||||
INC DE ; <20> ¤¥¥¬áï âãâ â®, ç⮠ᯥæ¨ä¨ª æ¨ï ¢ë¯®«ï¥âáï ¨ ¯¥à¥¯®«¥¨ï ¥ ¡ã¤¥â
|
||||
PUSH DE
|
||||
CALL READ_FROM_FAT
|
||||
EX DE,HL
|
||||
POP DE
|
||||
EXX
|
||||
EX DE,HL
|
||||
EXX
|
||||
JR NC,.loop
|
||||
;
|
||||
; DE - à §¬¥à ¤¨à¥ªâ®à¨¨ ¢ ª« áâ¥à å
|
||||
;!FIXIT ¬®¦® ®¯â¨¬¨§ãâì ª®«-¢® ᤢ¨£®¢
|
||||
;0001 0000 0000 0000 max ª®«-¢® ª« áâ¥à®¢
|
||||
; ¯à¨¬¥à
|
||||
;0000 0000 0000 0111 Clusters
|
||||
; 0100 0000 SectorsPerCluster
|
||||
;0000 0010 0000 0000 BytesPerSector
|
||||
; D' E' D E
|
||||
;0000 0000 0000 0011 1000 0000 0000 0000
|
||||
;
|
||||
LD A,(CORE_BUFFERS.FS_Buffer.SectorsPerCluster)
|
||||
LD BC,(CORE_BUFFERS.FS_Buffer.BytesPerSector)
|
||||
; DE':DE - ª®«-¢® ª« áâ¥à®¢
|
||||
; A - à §¬¥à ª« áâ¥à ¢ ᥪâ®à å
|
||||
; BC - à §¬¥à ᥪâ®à ¢ ¡ ©â å
|
||||
; --> DE*BC*A = DE':DE ¤«ï ®â¢¥â å¢ â¨â, ¯®å®¤ã, 4å ॣ¨áâ஢
|
||||
EXX
|
||||
LD DE,0
|
||||
EXX
|
||||
SRL B
|
||||
RR C
|
||||
RRCA
|
||||
JR C,.loop2
|
||||
;
|
||||
.loop1: ;
|
||||
SLA E
|
||||
RL D
|
||||
EXX
|
||||
RL E
|
||||
RL D
|
||||
;RL C
|
||||
EXX
|
||||
;
|
||||
RRCA
|
||||
JR NC,.loop1
|
||||
;
|
||||
.loop2: ;
|
||||
SLA E
|
||||
RL D
|
||||
EXX
|
||||
RL E
|
||||
RL D
|
||||
;RL C
|
||||
EXX
|
||||
;
|
||||
SRL B
|
||||
RR C
|
||||
JR NC,.loop2
|
||||
; <-- DE*BC*A = DE':DE
|
||||
RET
|
||||
|
||||
/* 4 3 2 1
|
||||
#FFFF<<5 = #1FFFE0 = 0000 0000 0001 1111 1111 1111 1110 0000
|
||||
|
||||
#FFFF ®¬¥à § ¯¨á¨
|
||||
#1FFFE0 ᬥ饨¥ § ¯¨áì ¢ ä ©«¥ ¤¨à¥ªâ®à¨¨
|
||||
#1FFFE0 & #1FC000 ᬥ饨¥ ã¦ë© ¡«®ª ¯® #4000 ¡ ©â®¢
|
||||
#1FFFE0 & #3FFF €¤à¥á 㦮© ¯®§¨æ¨¨ ¢ ªíè
|
||||
(#1FFFE0 & #1FC000)<<2 ¤¢¨£ ¥¬ ¡ ©â 2 ¨ 3 ç⮡ ¯®«ãç¨âì ®¬¥à ¡«®ª
|
||||
*/
|
||||
;----------------------------------------------------------------------;
|
||||
Loading…
Reference in New Issue
Block a user