mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 09:21:47 +03:00
prepare for FAT "big dir" support
This commit is contained in:
parent
02fb3ddb32
commit
4da5e6c350
@ -37,6 +37,7 @@ ATTRIB: ; Current Dir ;[x] 15/10/23
|
|||||||
XOR A
|
XOR A
|
||||||
LD (OPEN_FN.TMP),A
|
LD (OPEN_FN.TMP),A
|
||||||
CALL .OPENATR ;R002
|
CALL .OPENATR ;R002
|
||||||
|
; DE = record index
|
||||||
CALL NC,OPEN_FN.FM
|
CALL NC,OPEN_FN.FM
|
||||||
;
|
;
|
||||||
POP BC
|
POP BC
|
||||||
|
|||||||
@ -6,10 +6,8 @@
|
|||||||
;‚ëå®¤ë¥ § 票ï:
|
;‚ëå®¤ë¥ § 票ï:
|
||||||
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
CLOSE_FN:
|
;CLOSE:
|
||||||
;R008 ;
|
CLOSE_FN: LD (.TMP),A
|
||||||
;CLOSE: ;
|
|
||||||
LD (.TMP),A
|
|
||||||
CALL SET_FM
|
CALL SET_FM
|
||||||
RET C
|
RET C
|
||||||
LD A,(TASK)
|
LD A,(TASK)
|
||||||
@ -20,10 +18,10 @@ CLOSE_FN:
|
|||||||
BIT 7,(IY+_sFM.ACCESS_MODE)
|
BIT 7,(IY+_sFM.ACCESS_MODE)
|
||||||
JR Z,.NOTMODF
|
JR Z,.NOTMODF
|
||||||
;
|
;
|
||||||
|
; ä ©« ¨§¬¥ñ
|
||||||
LD E,(IY+_sFM.DIR_CLUSTER_L)
|
LD E,(IY+_sFM.DIR_CLUSTER_L)
|
||||||
LD D,(IY+_sFM.DIR_CLUSTER_L+1)
|
LD D,(IY+_sFM.DIR_CLUSTER_L+1)
|
||||||
PUSH DE
|
PUSH DE
|
||||||
; [x] fat32
|
|
||||||
LD E,(IY+_sFM.DIR_CLUSTER_H)
|
LD E,(IY+_sFM.DIR_CLUSTER_H)
|
||||||
LD D,(IY+_sFM.DIR_CLUSTER_H+1)
|
LD D,(IY+_sFM.DIR_CLUSTER_H+1)
|
||||||
PUSH DE
|
PUSH DE
|
||||||
@ -50,27 +48,30 @@ CLOSE_FN:
|
|||||||
LD (IY+_sFM.FS_REC.FIRST_CLUSTER_L+1),D
|
LD (IY+_sFM.FS_REC.FIRST_CLUSTER_L+1),D
|
||||||
;
|
;
|
||||||
CALL LOADDIR
|
CALL LOADDIR
|
||||||
|
; [ ] big dir
|
||||||
|
;!TODO ®â¬®â âì ªíè ¤® 㦮£® record index?
|
||||||
|
;
|
||||||
.TMP+1: LD A,0
|
.TMP+1: LD A,0
|
||||||
CALL SET_FM
|
CALL SET_FM
|
||||||
;
|
;
|
||||||
SET_PAGE_X DIRPAGE
|
SET_PAGE_X DIRPAGE
|
||||||
;
|
EX AF,AF'
|
||||||
|
; [ ] big dir
|
||||||
;!TEST 9/11/23 record index
|
;!TEST 9/11/23 record index
|
||||||
; LD HL,DIR
|
LD HL,DIRPAGE.buffer
|
||||||
; LD DE,FAT_DIRECTORY_RECORD
|
LD DE,FAT_DIRECTORY_RECORD
|
||||||
; LD C,(IY+_sFM.HANDLE)
|
LD C,(IY+_sFM.HANDLE)
|
||||||
; LD B,(IY+_sFM.HANDLE+1)
|
LD B,(IY+_sFM.HANDLE+1)
|
||||||
; JR .CLOSE2
|
JR .CLOSE2
|
||||||
; .CLOSE1:
|
|
||||||
; ADD HL,DE
|
|
||||||
; DEC BC
|
|
||||||
; .CLOSE2:
|
|
||||||
; LD A,B
|
|
||||||
; OR C
|
|
||||||
; JR NZ,.CLOSE1
|
|
||||||
LD L,(IY+_sFM.HANDLE)
|
|
||||||
LD H,(IY+_sFM.HANDLE+1)
|
|
||||||
;
|
;
|
||||||
|
.CLOSE1: ADD HL,DE
|
||||||
|
DEC BC
|
||||||
|
.CLOSE2: LD A,B
|
||||||
|
OR C
|
||||||
|
JR NZ,.CLOSE1
|
||||||
|
;LD L,(IY+_sFM.HANDLE)
|
||||||
|
;LD H,(IY+_sFM.HANDLE+1)
|
||||||
|
;;;;;;;;;
|
||||||
LD D,YH
|
LD D,YH
|
||||||
LD E,YL
|
LD E,YL
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
@ -79,10 +80,10 @@ CLOSE_FN:
|
|||||||
;POP HL
|
;POP HL
|
||||||
LD BC,FAT_DIRECTORY_RECORD
|
LD BC,FAT_DIRECTORY_RECORD
|
||||||
LDIR
|
LDIR
|
||||||
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
CALL SAVEDIR
|
CALL SAVEDIR
|
||||||
.NOTMODF:
|
.NOTMODF: LD A,(.TMP)
|
||||||
LD A,(.TMP)
|
|
||||||
JP RES_FM
|
JP RES_FM
|
||||||
;
|
;
|
||||||
.error: POP DE
|
.error: POP DE
|
||||||
|
|||||||
@ -86,7 +86,10 @@ CREATE: ;!TEST Current Dir ;[x] 15/10/23 ;CREATE_FN:
|
|||||||
.PATH0+1: LD HL,0
|
.PATH0+1: LD HL,0
|
||||||
XOR A
|
XOR A
|
||||||
LD (OPEN_FN.TMP),A
|
LD (OPEN_FN.TMP),A
|
||||||
JP OPEN_FN.FILE ;R008
|
; DE - record index ¨§ WRT_HND
|
||||||
|
; !FIXIT ¬®¦® ®¯â¨¬¨§ãâì ¯¥à¥å®¤®¬ áà §ã
|
||||||
|
; ¢ë¤¥«¥¨¥ FM (GET_FM)
|
||||||
|
JP OPEN_FN.FILE
|
||||||
;
|
;
|
||||||
.Prepare: ;AND #E7 ;R004 %76A00SHR = !FAT_ATTR ;!HARDCODE
|
.Prepare: ;AND #E7 ;R004 %76A00SHR = !FAT_ATTR ;!HARDCODE
|
||||||
AND FAT_ATTR.NoDIRnoVolID
|
AND FAT_ATTR.NoDIRnoVolID
|
||||||
|
|||||||
@ -274,7 +274,7 @@ ENVVALUE EQU CORE_BUFFERS.BUFFER //#3800 ; BUFFER ;DS 128
|
|||||||
|
|
||||||
ENVSIZE DW DEF_ENV_SIZE ;E_END-ENVIRONMENT ;160
|
ENVSIZE DW DEF_ENV_SIZE ;E_END-ENVIRONMENT ;160
|
||||||
|
|
||||||
ENVIRONMENT EQU ENVADDR
|
ENVIRONMENT EQU ENVPAGE.ADDR
|
||||||
|
|
||||||
DEFAULT_ENV: DB 'BOOTDSK=' ;R02
|
DEFAULT_ENV: DB 'BOOTDSK=' ;R02
|
||||||
.boot_disk: DB 'X:',0 ;R02
|
.boot_disk: DB 'X:',0 ;R02
|
||||||
|
|||||||
@ -31,6 +31,7 @@ F_FIRST: CALL .INIT_VARS
|
|||||||
LD A,(.SEARCH_ATTRIBUT)
|
LD A,(.SEARCH_ATTRIBUT)
|
||||||
CALL SEARCH.Custom
|
CALL SEARCH.Custom
|
||||||
RET C
|
RET C
|
||||||
|
PUSH DE ; record index ¬®¦¥â ¨ ¥ 㦮
|
||||||
LD HL,CORE_BUFFERS.MASKARE
|
LD HL,CORE_BUFFERS.MASKARE
|
||||||
.DTABUF+1: LD DE,0
|
.DTABUF+1: LD DE,0
|
||||||
LD BC,FAT_DIRECTORY_RECORD.ATTRIBUT ; ª®¯¨à㥬 .NAME ¨ .EXT
|
LD BC,FAT_DIRECTORY_RECORD.ATTRIBUT ; ª®¯¨à㥬 .NAME ¨ .EXT
|
||||||
@ -38,11 +39,19 @@ F_FIRST: CALL .INIT_VARS
|
|||||||
.SEARCH_ATTRIBUT+1:
|
.SEARCH_ATTRIBUT+1:
|
||||||
LD A,0 ; DSS_FCB_MAIN.SEARCH_ATTRIBUT
|
LD A,0 ; DSS_FCB_MAIN.SEARCH_ATTRIBUT
|
||||||
LD (DE),A
|
LD (DE),A
|
||||||
|
; ¯à¨ ¯à릪¥ áî¤ á⥪¥ ¤®«¦¥ «¥¦ âì record index
|
||||||
.FIND_S: INC DE
|
.FIND_S: INC DE
|
||||||
;!TODO «ãçè¥ âã⠨ᯮ«ì§®¢ âì ª ª ¢ record index ¤«ï ¯¥à¥¡®à ª â «®£ > #4000 bytes
|
;!TODO «ãçè¥ âã⠨ᯮ«ì§®¢ âì ª ª ¢ record index ¤«ï ¯¥à¥¡®à ª â «®£ > #4000 bytes
|
||||||
LD BC,FAT_DIRECTORY_RECORD
|
LD BC,FAT_DIRECTORY_RECORD
|
||||||
ADD IX,BC
|
ADD IX,BC
|
||||||
LD (F_NEXT.CURHND),IX
|
LD (F_NEXT.CURHND),IX
|
||||||
|
; record index ¬®¦¥â ¨ ¥ 㦮
|
||||||
|
POP HL
|
||||||
|
;!FIXIT ¥â ¯à®¢¥àª¨ ¯¥à¥¯®«¥¨¥
|
||||||
|
; ¤¥¥¬áï, çâ® FAT ¡¥§ ª®á类¢
|
||||||
|
INC HL
|
||||||
|
LD (F_NEXT.RecordIndex),HL
|
||||||
|
;
|
||||||
LD HL,CORE_BUFFERS.HANDBUF + FAT_DIRECTORY_RECORD.RESERVED_NT
|
LD HL,CORE_BUFFERS.HANDBUF + FAT_DIRECTORY_RECORD.RESERVED_NT
|
||||||
LD BC,CORE_BUFFERS.HANDBUF.SIZE - FAT_DIRECTORY_RECORD.RESERVED_NT
|
LD BC,CORE_BUFFERS.HANDBUF.SIZE - FAT_DIRECTORY_RECORD.RESERVED_NT
|
||||||
LDIR
|
LDIR
|
||||||
@ -79,43 +88,44 @@ F_FIRST: CALL .INIT_VARS
|
|||||||
F_NEXT:
|
F_NEXT:
|
||||||
.NO_NEXT.YES EQU 0
|
.NO_NEXT.YES EQU 0
|
||||||
.NO_NEXT.NO EQU #FF
|
.NO_NEXT.NO EQU #FF
|
||||||
.NO_NEXT+1:
|
.NO_NEXT+1: LD A,0
|
||||||
LD A,0
|
|
||||||
OR A
|
OR A
|
||||||
LD A,DSS_Error.sys.INVALID_ACCESS
|
LD A,DSS_Error.sys.INVALID_ACCESS
|
||||||
SCF
|
SCF
|
||||||
RET Z
|
RET Z
|
||||||
|
;
|
||||||
LD (F_FIRST.DTABUF),DE
|
LD (F_FIRST.DTABUF),DE
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
LD DE,CORE_BUFFERS.MASKARE
|
LD DE,CORE_BUFFERS.MASKARE
|
||||||
LD BC,11 ;!HARDCODE
|
LD BC,11 ;!HARDCODE
|
||||||
LDIR
|
LDIR
|
||||||
|
;
|
||||||
XOR A ; F_NEXT.NO_NEXT.YES
|
XOR A ; F_NEXT.NO_NEXT.YES
|
||||||
LD (F_NEXT.NO_NEXT),A
|
LD (F_NEXT.NO_NEXT),A
|
||||||
|
|
||||||
LD A,(HL)
|
LD A,(HL)
|
||||||
PUSH HL
|
PUSH HL
|
||||||
CALL .NSEARCH
|
CALL .NSEARCH
|
||||||
POP DE
|
POP HL
|
||||||
RET C
|
RET C
|
||||||
|
;
|
||||||
|
PUSH DE
|
||||||
|
EX DE,HL
|
||||||
JP F_FIRST.FIND_S
|
JP F_FIRST.FIND_S
|
||||||
.NSEARCH:
|
;
|
||||||
EX AF,AF'
|
.NSEARCH: EX AF,AF'
|
||||||
SET_PAGE_X DIRPAGE
|
SET_PAGE_X DIRPAGE
|
||||||
;PUSH AF
|
;PUSH AF
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
CPL
|
CPL
|
||||||
LD C,A
|
LD C,A
|
||||||
;!TEST 9/11/23 record index
|
;!TEST 9/11/23 record index
|
||||||
; EXX
|
EXX
|
||||||
; LD DE,0
|
.RecordIndex+1: LD DE,0 ; record index ¬®¦¥â ¨ ¥ 㦮
|
||||||
; EXX
|
EXX
|
||||||
;
|
;
|
||||||
.CURHND+2:
|
.CURHND+2: LD IX,0 ; ¤à¥á á«¥¤ãî饩 § ¯¨á¨ ¢ ªíè¥ ¤¨à¥ªâ®à¨¨
|
||||||
LD IX,0
|
|
||||||
LD A,XH
|
LD A,XH
|
||||||
OR XL
|
OR XL
|
||||||
JP Z,SEARCH.error_too_many_files
|
JP Z,SEARCH.error_too_many_files ; [ ] big dir
|
||||||
JP SEARCH.loop
|
JP SEARCH.loop
|
||||||
;
|
;
|
||||||
129
DSS/API/Open.asm
129
DSS/API/Open.asm
@ -28,15 +28,20 @@ OPEN_FN: ;!TEST Current Dir ;[x] 15/10/23
|
|||||||
RET C
|
RET C
|
||||||
.FILE: CALL SEARCH.File ; enter point from EXEC, CREATE
|
.FILE: CALL SEARCH.File ; enter point from EXEC, CREATE
|
||||||
RET C
|
RET C
|
||||||
;R002 ;!TEST 9/11/23 record index
|
|
||||||
.FM: PUSH DE ; á®åà 塞 㪠§ â¥«ì § ¯¨áì ¢ ª â «®£¥ FS (¯®«ãç¥ ¨§ SEARCH)
|
|
||||||
;
|
;
|
||||||
CALL GET_FM ; enter point from ATTRIB
|
.FM: ; enter point from ATTRIB
|
||||||
RET C
|
;R002 ;!TEST 9/11/23 record index
|
||||||
LD A,C
|
PUSH DE ; á®åà 塞 㪠§ â¥«ì § ¯¨áì ¢ ª â «®£¥ FS (¯®«ãç¥ ¨§ SEARCH)
|
||||||
EX AF,AF'
|
;
|
||||||
|
CALL GET_FM
|
||||||
;!TEST 9/11/23 record index 㪠§ â¥«ì § ¯¨áì ¢ ª â «®£¥ FS
|
;!TEST 9/11/23 record index 㪠§ â¥«ì § ¯¨áì ¢ ª â «®£¥ FS
|
||||||
POP DE
|
POP DE
|
||||||
|
;
|
||||||
|
RET C
|
||||||
|
LD A,C ; ¤¥áªà¨¯â®à ä ©«
|
||||||
|
EX AF,AF'
|
||||||
|
;!TEST 9/11/23 record index 㪠§ â¥«ì § ¯¨áì ¢ ª â «®£¥ FS
|
||||||
|
;POP DE
|
||||||
; EXX
|
; EXX
|
||||||
LD (IY+_sFM.HANDLE),E
|
LD (IY+_sFM.HANDLE),E
|
||||||
LD (IY+_sFM.HANDLE+1),D
|
LD (IY+_sFM.HANDLE+1),D
|
||||||
@ -49,42 +54,94 @@ OPEN_FN: ;!TEST Current Dir ;[x] 15/10/23
|
|||||||
LDIR
|
LDIR
|
||||||
.TMP+1: LD A,0
|
.TMP+1: LD A,0
|
||||||
LD (IY+_sFM.ACCESS_MODE),A
|
LD (IY+_sFM.ACCESS_MODE),A
|
||||||
LD A,(TASK)
|
; ®¯â¨¬¨§ã« âãâ
|
||||||
LD (IY+_sFM.TASK_NUM),A
|
;LD A,(TASK)
|
||||||
;!FIXIT ®¯â¨¬¨§ãâì âãâ § ã«¥¨¥
|
;LD (IY+_sFM.TASK_NUM),A
|
||||||
|
;XOR A
|
||||||
|
;LD (IY+_sFM.OptimizedClusters),A
|
||||||
|
;LD (IY+_sFM.KnownCluster_L),A
|
||||||
|
;LD (IY+_sFM.KnownCluster_L+1),A
|
||||||
|
;LD (IY+_sFM.KnownOffset_L),A
|
||||||
|
;LD (IY+_sFM.KnownOffset_L+1),A
|
||||||
|
;; fat32
|
||||||
|
; LD (IY+_sFM.KnownCluster_H),A
|
||||||
|
; LD (IY+_sFM.KnownCluster_H+1),A
|
||||||
|
; LD (IY+_sFM.KnownOffset_H),A
|
||||||
|
; LD (IY+_sFM.KnownOffset_H+1),A
|
||||||
|
;;
|
||||||
|
;LD (IY+_sFM.F_POSITION),A
|
||||||
|
;LD (IY+_sFM.F_POSITION+1),A
|
||||||
|
;LD (IY+_sFM.F_POSITION+2),A
|
||||||
|
;LD (IY+_sFM.F_POSITION+3),A
|
||||||
|
;LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
|
||||||
|
;LD (IY+_sFM.DRIVE),A
|
||||||
|
;; fat32
|
||||||
|
;LD HL,CORE_BUFFERS.FM_BUF + _sFM.FS_REC.FIRST_CLUSTER_H
|
||||||
|
;LD E,(HL)
|
||||||
|
;INC HL
|
||||||
|
;LD D,(HL)
|
||||||
|
;LD (IY+_sFM.DIR_CLUSTER_H),E
|
||||||
|
;LD (IY+_sFM.DIR_CLUSTER_H+1),D
|
||||||
|
;;
|
||||||
|
;LD HL,CORE_BUFFERS.FM_BUF + _sFM.FS_REC.FIRST_CLUSTER_L ; work directory FM
|
||||||
|
;LD E,(HL)
|
||||||
|
;INC HL
|
||||||
|
;LD D,(HL)
|
||||||
|
;LD (IY+_sFM.DIR_CLUSTER_L),E
|
||||||
|
;LD (IY+_sFM.DIR_CLUSTER_L+1),D
|
||||||
|
;
|
||||||
|
PUSH IY
|
||||||
|
POP HL
|
||||||
|
LD DE,_sFM.F_POSITION
|
||||||
|
ADD HL,DE
|
||||||
XOR A
|
XOR A
|
||||||
LD (IY+_sFM.OptimizedClusters),A
|
LD (HL),A ; _sFM.F_POSITION
|
||||||
LD (IY+_sFM.KnownCluster_L),A
|
INC HL
|
||||||
LD (IY+_sFM.KnownCluster_L+1),A
|
LD (HL),A ; _sFM.F_POSITION + 1
|
||||||
LD (IY+_sFM.KnownOffset_L),A
|
INC HL
|
||||||
LD (IY+_sFM.KnownOffset_L+1),A
|
LD (HL),A ; _sFM.F_POSITION + 2
|
||||||
; fat32
|
INC HL
|
||||||
LD (IY+_sFM.KnownCluster_H),A
|
LD (HL),A ; _sFM.F_POSITION + 3
|
||||||
LD (IY+_sFM.KnownCluster_H+1),A
|
INC HL
|
||||||
LD (IY+_sFM.KnownOffset_H),A
|
|
||||||
LD (IY+_sFM.KnownOffset_H+1),A
|
|
||||||
;
|
;
|
||||||
LD (IY+_sFM.F_POSITION),A
|
EX DE,HL
|
||||||
LD (IY+_sFM.F_POSITION+1),A
|
LD HL,CORE_BUFFERS.FM_BUF + _sFM.FS_REC.FIRST_CLUSTER_L
|
||||||
LD (IY+_sFM.F_POSITION+2),A
|
LDI ; _sFM.DIR_CLUSTER_L
|
||||||
LD (IY+_sFM.F_POSITION+3),A
|
LDI ; _sFM.DIR_CLUSTER_L + 1
|
||||||
LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
|
|
||||||
LD (IY+_sFM.DRIVE),A
|
|
||||||
; fat32
|
|
||||||
LD HL,CORE_BUFFERS.FM_BUF + _sFM.FS_REC.FIRST_CLUSTER_H
|
LD HL,CORE_BUFFERS.FM_BUF + _sFM.FS_REC.FIRST_CLUSTER_H
|
||||||
LD E,(HL)
|
LDI ; _sFM.DIR_CLUSTER_H
|
||||||
INC HL
|
LDI ; _sFM.DIR_CLUSTER_H + 1
|
||||||
LD D,(HL)
|
EX DE,HL
|
||||||
LD (IY+_sFM.DIR_CLUSTER_H),E
|
|
||||||
LD (IY+_sFM.DIR_CLUSTER_H+1),D
|
|
||||||
;
|
;
|
||||||
LD HL,CORE_BUFFERS.FM_BUF+_sFM.FS_REC.FIRST_CLUSTER_L ; work directory FM
|
|
||||||
LD E,(HL)
|
|
||||||
INC HL
|
INC HL
|
||||||
LD D,(HL)
|
INC HL
|
||||||
LD (IY+_sFM.DIR_CLUSTER_L),E
|
LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
|
||||||
LD (IY+_sFM.DIR_CLUSTER_L+1),D
|
LD (HL),A ; _sFM.DRIVE
|
||||||
|
INC HL
|
||||||
|
INC HL
|
||||||
|
LD A,(TASK)
|
||||||
|
LD (HL),A ; _sFM.TASK_NUM
|
||||||
|
INC HL
|
||||||
;
|
;
|
||||||
|
XOR A
|
||||||
|
LD (HL),A ; _sFM.OptimizedClusters
|
||||||
|
INC HL
|
||||||
|
LD (HL),A ; _sFM.KnownCluster_L
|
||||||
|
INC HL
|
||||||
|
LD (HL),A ; _sFM.KnownCluster_L + 1
|
||||||
|
INC HL
|
||||||
|
LD (HL),A ; _sFM.KnownCluster_H
|
||||||
|
INC HL
|
||||||
|
LD (HL),A ; _sFM.KnownCluster_H + 1
|
||||||
|
INC HL
|
||||||
|
LD (HL),A ; _sFM.KnownOffset_L
|
||||||
|
INC HL
|
||||||
|
LD (HL),A ; _sFM.KnownOffset_L + 1
|
||||||
|
INC HL
|
||||||
|
LD (HL),A ; _sFM.KnownOffset_H
|
||||||
|
INC HL
|
||||||
|
LD (HL),A ; _sFM.KnownOffset_H + 1
|
||||||
|
; ;
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
|
|||||||
@ -193,7 +193,7 @@ SAVETXT: PUSH AF
|
|||||||
LD L,#28
|
LD L,#28
|
||||||
.SVTEXT1: LD (BACKTXT.WinMax),HL
|
.SVTEXT1: LD (BACKTXT.WinMax),HL
|
||||||
LD DE,#0000
|
LD DE,#0000
|
||||||
LD A,(BANKTBL + TXTPAGE)
|
LD A,((#FF00 & BANKTBL) + TXTPAGE)
|
||||||
LD B,A
|
LD B,A
|
||||||
|
|
||||||
LD C,BIOS.WIN_COPY
|
LD C,BIOS.WIN_COPY
|
||||||
@ -229,7 +229,7 @@ BACKTXT: PUSH AF
|
|||||||
LD IX,#C000
|
LD IX,#C000
|
||||||
.WinMax+1: LD HL,#2050
|
.WinMax+1: LD HL,#2050
|
||||||
LD DE,#0000
|
LD DE,#0000
|
||||||
LD A,(BANKTBL + TXTPAGE)
|
LD A,((#FF00 & BANKTBL) + TXTPAGE)
|
||||||
LD B,A
|
LD B,A
|
||||||
LD C,BIOS.WIN_RESTORE
|
LD C,BIOS.WIN_RESTORE
|
||||||
;[x] 29/9/23
|
;[x] 29/9/23
|
||||||
|
|||||||
@ -266,6 +266,10 @@ INTx38_Handler: PUSH AF
|
|||||||
POP AF
|
POP AF
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
|
;BLOCK #FD-$,#FF
|
||||||
|
BANKTBL: BLOCK (USING_MEMPAGES + 2),#FF
|
||||||
|
.Size EQU $-BANKTBL
|
||||||
|
ASSERT (high(BANKTBL + USING_MEMPAGES + 2) == high(BANKTBL)), "Error! Memory leak"
|
||||||
|
|
||||||
|
|
||||||
_mInfoALIGN 256,0
|
_mInfoALIGN 256,0
|
||||||
@ -362,10 +366,10 @@ MASKARE: BLOCK 8,0 ;
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
BANKTBL EQU ($ & #FF00) + (1<?($ & #FF)) * #100
|
; BANKTBL EQU ($ & #FF00) + (1<?($ & #FF)) * #100
|
||||||
.Size EQU USING_MEMPAGES + 2
|
; .Size EQU USING_MEMPAGES + 2
|
||||||
;> > > > > > > > > > > > > > > > BUFFERS < < < < < < < < < < < < < < < <
|
;> > > > > > > > > > > > > > > > BUFFERS < < < < < < < < < < < < < < < <
|
||||||
CLEAR_ZONE.start EQU BANKTBL + BANKTBL.Size
|
CLEAR_ZONE.start EQU $ ;BANKTBL + BANKTBL.Size
|
||||||
MODULE CORE_BUFFERS
|
MODULE CORE_BUFFERS
|
||||||
BUFFERSplace _sBuffers = CLEAR_ZONE.start
|
BUFFERSplace _sBuffers = CLEAR_ZONE.start
|
||||||
TMPNAME EQU BUFFERSplace.TMPNAME ; +-
|
TMPNAME EQU BUFFERSplace.TMPNAME ; +-
|
||||||
|
|||||||
197
DSS/FS/FAT.asm
197
DSS/FS/FAT.asm
@ -146,9 +146,9 @@ SEARCH:
|
|||||||
;!TEST 9/11/23 record index
|
;!TEST 9/11/23 record index
|
||||||
; ®¯â¨¬¨§ æ¨ï ¤«ï ¨¤¥ªá § ¯¨á¨ ¢ ᯨ᪥ ª â «®£ .
|
; ®¯â¨¬¨§ æ¨ï ¤«ï ¨¤¥ªá § ¯¨á¨ ¢ ᯨ᪥ ª â «®£ .
|
||||||
; <09>® ¤®¡¨âáï ¢¥àãâì ¤«ï ¯¥à¥¡®à ª â «®£ > #4000 ¡ ©â
|
; <09>® ¤®¡¨âáï ¢¥àãâì ¤«ï ¯¥à¥¡®à ª â «®£ > #4000 ¡ ©â
|
||||||
; EXX
|
EXX
|
||||||
; LD DE,0
|
LD DE,0
|
||||||
; EXX
|
EXX
|
||||||
;
|
;
|
||||||
.loop: LD A,(IX + FAT_DIRECTORY_RECORD.NAME)
|
.loop: LD A,(IX + FAT_DIRECTORY_RECORD.NAME)
|
||||||
OR A
|
OR A
|
||||||
@ -184,33 +184,34 @@ SEARCH:
|
|||||||
;
|
;
|
||||||
LD D,XH
|
LD D,XH
|
||||||
LD E,XL
|
LD E,XL
|
||||||
|
;!FIXIT ¬®¦¥â ¢ë室¥ ¯à®áâ® EXX?
|
||||||
;!TEST 9/11/23 record index
|
;!TEST 9/11/23 record index
|
||||||
; EXX
|
EXX
|
||||||
; PUSH DE
|
PUSH DE ; record index
|
||||||
; EXX
|
EXX
|
||||||
PUSH IX
|
;PUSH IX
|
||||||
;
|
;
|
||||||
LD HL,CORE_BUFFERS.HANDBUF
|
LD HL,CORE_BUFFERS.HANDBUF
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
LD BC,CORE_BUFFERS.HANDBUF.SIZE
|
LD BC,CORE_BUFFERS.HANDBUF.SIZE
|
||||||
LDIR
|
LDIR
|
||||||
;!TEST 9/11/23 record index
|
; record index
|
||||||
POP DE
|
POP DE
|
||||||
;
|
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
.next_record: LD DE,FAT_DIRECTORY_RECORD
|
.next_record: ;!TEST 9/11/23 record index
|
||||||
;!TEST 9/11/23 record index
|
EXX
|
||||||
; EXX
|
INC DE
|
||||||
; INC DE
|
EXX
|
||||||
; EXX
|
|
||||||
;
|
;
|
||||||
ADD IX,DE
|
LD DE,FAT_DIRECTORY_RECORD
|
||||||
|
ADD IX,DE ; [ ] big dir
|
||||||
JR NC,.loop
|
JR NC,.loop
|
||||||
|
;
|
||||||
.error_too_many_files:
|
.error_too_many_files:
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
@ -501,8 +502,8 @@ OPENDIR: LD IY,CORE_BUFFERS.FM_BUF
|
|||||||
EX DE,HL
|
EX DE,HL
|
||||||
LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L),HL ; fat32
|
LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L),HL ; fat32
|
||||||
LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H),IY ; fat32
|
LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H),IY ; fat32
|
||||||
LD HL,#4000 ;!HARDCODE
|
;LD HL,#4000 ;!HARDCODE
|
||||||
LD (CORE_BUFFERS.FM_BUF.FS_REC.F_SIZE),HL
|
;LD (CORE_BUFFERS.FM_BUF.FS_REC.F_SIZE),HL
|
||||||
;-------------; EX DE,HL
|
;-------------; EX DE,HL
|
||||||
; JP LOADDIR
|
; JP LOADDIR
|
||||||
|
|
||||||
@ -512,7 +513,8 @@ LOADDIR: ;!TODO optimize
|
|||||||
CALL LOAD_SAVE_DIR_PREPARE
|
CALL LOAD_SAVE_DIR_PREPARE
|
||||||
PUSH AF
|
PUSH AF
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
JR NZ,.read_dir
|
JR NZ,.read_dir ; root dir or not
|
||||||
|
; root dir
|
||||||
LD A,(CORE_BUFFERS.FS_Buffer.FAT_TYPE)
|
LD A,(CORE_BUFFERS.FS_Buffer.FAT_TYPE)
|
||||||
CP FAT_TYPE.x32
|
CP FAT_TYPE.x32
|
||||||
JR NZ,.LoadRootDir
|
JR NZ,.LoadRootDir
|
||||||
@ -541,16 +543,16 @@ LOADDIR: ;!TODO optimize
|
|||||||
LD B,32 ; !HARDCODE sector size 512. 16384/(sector 512). à §¬¥à root-ª â «®£
|
LD B,32 ; !HARDCODE sector size 512. 16384/(sector 512). à §¬¥à root-ª â «®£
|
||||||
CP B
|
CP B
|
||||||
JR NC,.RTD1
|
JR NC,.RTD1
|
||||||
|
;
|
||||||
LD B,A ; ç¨á«® ᥪâ®à®¢
|
LD B,A ; ç¨á«® ᥪâ®à®¢
|
||||||
.RTD1: PUSH AF ; 21/04/2025 fix ¬ãá®à ¢ áâà ¨æ¥ ª â «®£ , ¥á«¨ ª â «®£ ¬¥ìè¥ áâà ¨æë
|
.RTD1: LD A,(CORE_BUFFERS.FS_Buffer.DRIVE) ; ®¬¥à ¤¨áª
|
||||||
LD A,(CORE_BUFFERS.FS_Buffer.DRIVE) ; ®¬¥à ¤¨áª
|
|
||||||
LD DE,DIRPAGE.buffer ; ¡ãä¥à
|
LD DE,DIRPAGE.buffer ; ¡ãä¥à
|
||||||
LD C,Dss.DRV.Read ; ç⥨¥ ᥪâ®à®¢
|
LD C,Dss.DRV.Read ; ç⥨¥ ᥪâ®à®¢
|
||||||
RST ToDSS.DRV
|
RST ToDSS.DRV
|
||||||
; !FIXIT ¥â ¯à®¢¥àª¨ ®è¨¡ªã
|
; !FIXIT ¥â ¯à®¢¥àª¨ ®è¨¡ªã
|
||||||
; 21/04/2025 fix ¬ãá®à ¢ áâà ¨æ¥ ª â «®£ , ¥á«¨ ª â «®£ ¬¥ìè¥ áâà ¨æë
|
; 21/04/2025 fix ¬ãá®à ¢ áâà ¨æ¥ ª â «®£ , ¥á«¨ ª â «®£ ¬¥ìè¥ áâà ¨æë
|
||||||
POP AF
|
BIT 7,D
|
||||||
JR NC,.exit
|
JR Z,.exit
|
||||||
XOR A
|
XOR A
|
||||||
LD (DE),A
|
LD (DE),A
|
||||||
;
|
;
|
||||||
@ -571,35 +573,117 @@ LOAD_SAVE_DIR_PREPARE:
|
|||||||
LD IX,0
|
LD IX,0
|
||||||
LD B,A ; ®â ç « ä ©«
|
LD B,A ; ®â ç « ä ©«
|
||||||
CALL MOVE_FP
|
CALL MOVE_FP
|
||||||
;
|
|
||||||
SET_PAGE_X DIRPAGE
|
SET_PAGE_X DIRPAGE
|
||||||
AND A
|
AND A
|
||||||
EX AF,AF'
|
PUSH AF
|
||||||
;
|
;
|
||||||
LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
|
LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
|
||||||
LD (IY+_sFM.DRIVE),A
|
LD (CORE_BUFFERS.FM_BUF.DRIVE),A
|
||||||
;!FIXIT ¯¥à¥¤¥« âì à ¡®âã ¡¥§ IY
|
;;;;;;;;
|
||||||
LD A,(IY+_sFM.FS_REC.FIRST_CLUSTER_L)
|
;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_L+1)
|
||||||
OR (IY+_sFM.FS_REC.FIRST_CLUSTER_H)
|
;OR (IY+_sFM.FS_REC.FIRST_CLUSTER_H)
|
||||||
OR (IY+_sFM.FS_REC.FIRST_CLUSTER_H+1)
|
;OR (IY+_sFM.FS_REC.FIRST_CLUSTER_H+1)
|
||||||
;
|
;
|
||||||
|
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'
|
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 - à §¬¥à ¤¨à¥ªâ®à¨¨ ¢ ª« áâ¥à å
|
||||||
|
;
|
||||||
|
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
|
RET
|
||||||
|
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
; ᪮¯¨à®¢ âì § ¯¨áì ¢ ᯨ᮪ ¤¨áª (ª â «®£ ) de ix iy
|
; ᪮¯¨à®¢ âì § ¯¨áì ¢ ᯨ᮪ ¤¨áª (ª â «®£ ) de ix iy
|
||||||
; ¨ á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
; ¨ á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
||||||
; ¢å®¤: (HANDBUF) - § ¯¨áì ª â «®£
|
; ¢å®¤: (HANDBUF) - § ¯¨áì ª â «®£
|
||||||
|
; ¢ë室: DE - record index
|
||||||
WRT_HND:
|
WRT_HND:
|
||||||
SET_PAGE_X DIRPAGE
|
SET_PAGE_X DIRPAGE
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD HL,DIRPAGE.buffer
|
LD HL,DIRPAGE.buffer
|
||||||
;!TEST 9/11/23 record index
|
;!TEST 9/11/23 record index
|
||||||
; EXX
|
EXX
|
||||||
; LD DE,0
|
LD DE,0
|
||||||
; EXX
|
EXX
|
||||||
;
|
;
|
||||||
LD BC,FAT_DIRECTORY_RECORD
|
LD BC,FAT_DIRECTORY_RECORD
|
||||||
.loop: ;LD A,(IX+00)
|
.loop: ;LD A,(IX+00)
|
||||||
@ -626,23 +710,30 @@ WRT_HND:
|
|||||||
LDIR
|
LDIR
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
|
; ¯à®¢¥à塞, 㢥«¨ç¨«áï «¨ à §¬¥à ¤ ëå ¤¨à¥ªâ®à¨¨
|
||||||
LD HL,DIRPAGE.buffer
|
LD HL,DIRPAGE.buffer
|
||||||
LD BC,(SAVEDIR.DIRSIZE)
|
LD BC,(SAVEDIR.DIRSIZE)
|
||||||
DEC BC
|
DEC BC
|
||||||
ADD HL,BC
|
ADD HL,BC
|
||||||
AND A
|
AND A
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
JR NC,SAVEDIR
|
JR NC,.SAVEDIR
|
||||||
|
;
|
||||||
|
; à §¬¥à ¤ ëå ¤¨à¥ªâ®à¨¨ 㢥«¨ç¨«áï
|
||||||
LD HL,(SAVEDIR.DIRSIZE)
|
LD HL,(SAVEDIR.DIRSIZE)
|
||||||
LD BC,(CORE_BUFFERS.FS_Buffer.BytesPerCluster)
|
LD BC,(CORE_BUFFERS.FS_Buffer.BytesPerCluster)
|
||||||
ADD HL,BC
|
ADD HL,BC
|
||||||
LD (SAVEDIR.DIRSIZE),HL
|
LD (SAVEDIR.DIRSIZE),HL
|
||||||
AND A
|
AND A
|
||||||
;JP SAVEDIR
|
.SAVEDIR: EXX
|
||||||
|
PUSH DE
|
||||||
|
EXX
|
||||||
|
CALL SAVEDIR
|
||||||
|
POP DE
|
||||||
|
RET
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
; ‘¡à®á¨âì ª¥è ª â «®£ ¤¨áª.
|
; ‘¡à®á¨âì ª¥è ª â «®£ ¤¨áª.
|
||||||
; ¢å®¤: iy=áâàãªâãà ¤¥áªà¨¯â®à
|
; ¢å®¤: iy=áâàãªâãà ¤¥áªà¨¯â®à
|
||||||
; [x] fat32 ;!TEST
|
|
||||||
SAVEDIR: ;!TODO optimize
|
SAVEDIR: ;!TODO optimize
|
||||||
CALL LOAD_SAVE_DIR_PREPARE
|
CALL LOAD_SAVE_DIR_PREPARE
|
||||||
PUSH AF
|
PUSH AF
|
||||||
@ -920,7 +1011,6 @@ FAT_BPB: LD A,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.DRIVE_TYPE)
|
|||||||
LD H,A
|
LD H,A
|
||||||
LD D,H
|
LD D,H
|
||||||
LD E,L
|
LD E,L
|
||||||
;EX DE,HL
|
|
||||||
EXX
|
EXX
|
||||||
LD HL,(CORE_BUFFERS.FS_Buffer.SectorsPerFAT_L)
|
LD HL,(CORE_BUFFERS.FS_Buffer.SectorsPerFAT_L)
|
||||||
LD D,H
|
LD D,H
|
||||||
@ -930,14 +1020,6 @@ FAT_BPB: LD A,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.DRIVE_TYPE)
|
|||||||
LD A,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.Number_of_FATs)
|
LD A,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.Number_of_FATs)
|
||||||
DEC A
|
DEC A
|
||||||
LD B,A
|
LD B,A
|
||||||
; JR Z,.loop_mul_end
|
|
||||||
; ; .Number_of_FATs * .SectorsPerFAT
|
|
||||||
; .loop_mul: ADD HL,HL
|
|
||||||
; EX DE,HL
|
|
||||||
; ADC HL,HL
|
|
||||||
; EX DE,HL
|
|
||||||
; DJNZ .loop_mul
|
|
||||||
;
|
|
||||||
CALL NZ,ALL_SECTORS_PER_FATs
|
CALL NZ,ALL_SECTORS_PER_FATs
|
||||||
EXX
|
EXX
|
||||||
PUSH HL
|
PUSH HL
|
||||||
@ -983,7 +1065,6 @@ FAT_BPB: LD A,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.DRIVE_TYPE)
|
|||||||
LD HL,65524
|
LD HL,65524
|
||||||
SBC HL,BC
|
SBC HL,BC
|
||||||
JR C,.its_FAT32
|
JR C,.its_FAT32
|
||||||
;
|
|
||||||
; It's FAT16
|
; It's FAT16
|
||||||
LD A,(.UsesVarsFAT32)
|
LD A,(.UsesVarsFAT32)
|
||||||
AND A
|
AND A
|
||||||
@ -1021,16 +1102,6 @@ FAT_BPB: LD A,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.DRIVE_TYPE)
|
|||||||
LD HL,(CORE_BUFFERS.FS_Buffer.FAT1_SEC_L)
|
LD HL,(CORE_BUFFERS.FS_Buffer.FAT1_SEC_L)
|
||||||
LD DE,(CORE_BUFFERS.FS_Buffer.SectorsPerFAT_L)
|
LD DE,(CORE_BUFFERS.FS_Buffer.SectorsPerFAT_L)
|
||||||
AND #0F
|
AND #0F
|
||||||
;
|
|
||||||
; JR Z,.first_FAT_active
|
|
||||||
; LD B,A
|
|
||||||
; ;
|
|
||||||
; .fat_calc_loop: ADD HL,DE
|
|
||||||
; EXX
|
|
||||||
; ADC HL,DE
|
|
||||||
; EXX
|
|
||||||
; DJNZ .fat_calc_loop
|
|
||||||
;
|
|
||||||
LD B,A
|
LD B,A
|
||||||
CALL NZ,ALL_SECTORS_PER_FATs
|
CALL NZ,ALL_SECTORS_PER_FATs
|
||||||
;
|
;
|
||||||
@ -2071,8 +2142,7 @@ WRITE_FAT_TABLE:
|
|||||||
;[x] fat32 ;!TEST
|
;[x] fat32 ;!TEST
|
||||||
;¢å®¤: HL':HL - ®¬¥à ª« áâ¥à
|
;¢å®¤: HL':HL - ®¬¥à ª« áâ¥à
|
||||||
;¢ë室: HL - ¤à¥á 㦮© ï祩ª¨ ¢ áâà ¨æ¥ FATPAGE
|
;¢ë室: HL - ¤à¥á 㦮© ï祩ª¨ ¢ áâà ¨æ¥ FATPAGE
|
||||||
GET_FAT32_CELL:
|
GET_FAT32_CELL: ; ¤¢¨£ ¥¬ ¢«¥¢® HL':H
|
||||||
; ¤¢¨£ ¥¬ ¢«¥¢® HL':H
|
|
||||||
LD A,H
|
LD A,H
|
||||||
EXX
|
EXX
|
||||||
LD C,A
|
LD C,A
|
||||||
@ -2082,8 +2152,7 @@ GET_FAT32_CELL:
|
|||||||
LD A,C
|
LD A,C
|
||||||
;
|
;
|
||||||
LD B,FAT_CACHE.Degree ; 4 ᤢ¨£
|
LD B,FAT_CACHE.Degree ; 4 ᤢ¨£
|
||||||
.loop_block:
|
.loop_block: RLCA ; << H
|
||||||
RLCA ; << H
|
|
||||||
RL L ; << L'
|
RL L ; << L'
|
||||||
RL H ; << H'
|
RL H ; << H'
|
||||||
DJNZ .loop_block
|
DJNZ .loop_block
|
||||||
@ -2111,8 +2180,7 @@ GET_FAT32_CELL:
|
|||||||
;-----------------------------------------------------------------------
|
;-----------------------------------------------------------------------
|
||||||
;¢å®¤: HL - ®¬¥à ª« áâ¥à
|
;¢å®¤: HL - ®¬¥à ª« áâ¥à
|
||||||
;¢ë室: HL - ¤à¥á 㦮© ï祩ª¨ ¢ áâà ¨æ¥ FATPAGE
|
;¢ë室: HL - ¤à¥á 㦮© ï祩ª¨ ¢ áâà ¨æ¥ FATPAGE
|
||||||
GET_FAT16_CELL:
|
GET_FAT16_CELL: LD A,H
|
||||||
LD A,H
|
|
||||||
LD B,H
|
LD B,H
|
||||||
;AND #0F
|
;AND #0F
|
||||||
AND FAT_CACHE.Size_Mask_16
|
AND FAT_CACHE.Size_Mask_16
|
||||||
@ -2141,8 +2209,7 @@ GET_FAT16_CELL:
|
|||||||
;¢å®¤: HL - ®¬¥à ª« áâ¥à
|
;¢å®¤: HL - ®¬¥à ª« áâ¥à
|
||||||
;¢ë室: HL - ¤à¥á 㦮© ï祩ª¨ ¢ áâà ¨æ¥ FATPAGE
|
;¢ë室: HL - ¤à¥á 㦮© ï祩ª¨ ¢ áâà ¨æ¥ FATPAGE
|
||||||
; CF - çñâë©/¥çñâë© ¤à¥á ª« áâ¥à
|
; CF - çñâë©/¥çñâë© ¤à¥á ª« áâ¥à
|
||||||
GET_FAT12_CELL:
|
GET_FAT12_CELL: LD D,H
|
||||||
LD D,H
|
|
||||||
LD E,L
|
LD E,L
|
||||||
SRL H
|
SRL H
|
||||||
RR L ; ᤢ¨£ ¢¯à ¢® ç¥à¥§ CF
|
RR L ; ᤢ¨£ ¢¯à ¢® ç¥à¥§ CF
|
||||||
|
|||||||
@ -302,7 +302,7 @@ SETUP_CURSORS:
|
|||||||
;
|
;
|
||||||
in a,(SLOT3)
|
in a,(SLOT3)
|
||||||
push af ; 甌縲. <20>珥
|
push af ; 甌縲. <20>珥
|
||||||
ld a,(BANKTBL + TXTPAGE) ; 2-© «®£. ®¬¥à áâà ¨æë à áè. „Ž‘
|
ld a,((#FF00 & BANKTBL) + TXTPAGE) ; 2-© «®£. ®¬¥à áâà ¨æë à áè. „Ž‘
|
||||||
out (SLOT3),a
|
out (SLOT3),a
|
||||||
|
|
||||||
; ; <20><>腮碎 瓱痰. Л<><D09B><EFBFBD><EFBFBD>.
|
; ; <20><>腮碎 瓱痰. Л<><D09B><EFBFBD><EFBFBD>.
|
||||||
|
|||||||
@ -24,8 +24,10 @@
|
|||||||
|
|
||||||
;File Manipulator (FM)
|
;File Manipulator (FM)
|
||||||
;[ ] fat32
|
;[ ] fat32
|
||||||
|
; !!!!! ¨§-§ ¢áïª¨å ®¯â¨¬¨§ 権 áà ëå ¥ ¬¥ïâì ¬¥áâ ¬¨ ¨ç¥£®, ⮫쪮 ¤®¡ ¢«ïâì ¢ ª®¥æ
|
||||||
STRUCT _sFM ; 54 bytes
|
STRUCT _sFM ; 54 bytes
|
||||||
; from FAT
|
; from FAT
|
||||||
|
.FS_REC FAT_DIRECTORY_RECORD
|
||||||
; .NAME: TEXT 8,{". "," "} ;+ #00 +00 NAME
|
; .NAME: TEXT 8,{". "," "} ;+ #00 +00 NAME
|
||||||
; .EXT: TEXT 3,{" "," "} ;+ #08 +08 EXT
|
; .EXT: TEXT 3,{" "," "} ;+ #08 +08 EXT
|
||||||
; .ATTRIBUT: BYTE #10 ;+ #0B +11 ATTRIBUT
|
; .ATTRIBUT: BYTE #10 ;+ #0B +11 ATTRIBUT
|
||||||
@ -39,7 +41,6 @@
|
|||||||
; .DATE: WORD #0000 ;+ #18 +24 DATE
|
; .DATE: WORD #0000 ;+ #18 +24 DATE
|
||||||
; .FIRST_CLUSTER_L: WORD #0000 ;+ #1A +26 START CLUSTER ; [ ] fat32
|
; .FIRST_CLUSTER_L: WORD #0000 ;+ #1A +26 START CLUSTER ; [ ] fat32
|
||||||
; .F_SIZE: DWORD #00000000 ;+ #1C +28 SIZE FILE
|
; .F_SIZE: DWORD #00000000 ;+ #1C +28 SIZE FILE
|
||||||
.FS_REC FAT_DIRECTORY_RECORD
|
|
||||||
; from Core
|
; from Core
|
||||||
.F_POSITION DWORD #00000000 ;+ #20 +32 FILE POSITION (FP)
|
.F_POSITION DWORD #00000000 ;+ #20 +32 FILE POSITION (FP)
|
||||||
.DIR_CLUSTER_L WORD #0000 ;+ #24 +36 DIRECTORY CLUSTER LOW
|
.DIR_CLUSTER_L WORD #0000 ;+ #24 +36 DIRECTORY CLUSTER LOW
|
||||||
|
|||||||
158
DSS/defines.inc
158
DSS/defines.inc
@ -1,33 +1,101 @@
|
|||||||
;
|
; …᫨ define § ª®¬¬¥â¨à®¢ , â® ¢ ª®¤¥ ® ⮦¥ â ª¦¥
|
||||||
|
|
||||||
|
|
||||||
|
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||||
|
; Ž<EFBFBD>™……
|
||||||
|
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||||
DEFINE TEST_FEATURE 0
|
DEFINE TEST_FEATURE 0
|
||||||
;
|
|
||||||
|
|
||||||
;
|
|
||||||
DEFINE MINIMUM_EXE_VERSION 1
|
DEFINE MINIMUM_EXE_VERSION 1
|
||||||
;
|
|
||||||
|
|
||||||
;
|
|
||||||
DEFINE COMPILE_UNUSED_CODE 0
|
DEFINE COMPILE_UNUSED_CODE 0
|
||||||
;
|
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||||
; MOUSE
|
; MOUSE
|
||||||
|
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||||
DEFINE MOUSE_COM_BAUD 0 ; 1 - 2485, 2 - 4807, else - 1215 (default)
|
DEFINE MOUSE_COM_BAUD 0 ; 1 - 2485, 2 - 4807, else - 1215 (default)
|
||||||
DEFINE MOUSE_INT_ENABLED 0 ; INT from SIO ch. B
|
DEFINE MOUSE_INT_ENABLED 0 ; INT from SIO ch. B
|
||||||
DEFINE MOUSE_READ_PORT_TIMEOUT 5*512 ; Š®áâë«ìë© â ©¬- ãâ ®¦¨¤ ¨¥ ¡ ©â ®â ¬ë誨. …᫨ = 0, â® «¨è¨© ª®¤ ¥ ª®¬¯¨«¨âáï
|
DEFINE MOUSE_READ_PORT_TIMEOUT 5*512 ; Š®áâë«ìë© â ©¬- ãâ ®¦¨¤ ¨¥ ¡ ©â ®â ¬ë誨. …᫨ = 0, â® «¨è¨© ª®¤ ¥ ª®¬¯¨«¨âáï
|
||||||
|
;----------------------------------------------------;
|
||||||
|
IF MOUSE_COM_BAUD = 1
|
||||||
|
MOUSE_BAUD:
|
||||||
|
.multiplier_1 EQU %0100'0000 ; ¯¥à¢ë© ¬®¦¨â¥«ì = 16.
|
||||||
|
.multiplier_2 EQU 22 ; ¢â®à®© ¬®¦¨â¥«ì = 22. 875000/Œ1*Œ2=2485
|
||||||
|
ELSEIF MOUSE_COM_BAUD = 2
|
||||||
|
MOUSE_BAUD:
|
||||||
|
.multiplier_1 EQU %0000'0000 ; ¯¥à¢ë© ¬®¦¨â¥«ì = 1.
|
||||||
|
.multiplier_2 EQU 182 ; ¢â®à®© ¬®¦¨â¥«ì = 182. 875000/Œ1*Œ2=4807
|
||||||
|
ELSE
|
||||||
|
MOUSE_BAUD:
|
||||||
|
.multiplier_1 EQU %0100'0000 ; ¯¥à¢ë© ¬®¦¨â¥«ì = 16.
|
||||||
|
.multiplier_2 EQU 45 ; ¢â®à®© ¬®¦¨â¥«ì = 45. 875000/Œ1*Œ2=1215
|
||||||
|
ENDIF
|
||||||
|
;----------------------------------------------------;
|
||||||
|
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||||
; KEYBOARD
|
; KEYBOARD
|
||||||
|
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||||
DEFINE KEYBOARD_INT_ENABLED 0 ; INT from SIO ch. A
|
DEFINE KEYBOARD_INT_ENABLED 0 ; INT from SIO ch. A
|
||||||
DEFINE CHANGE_LANG_CTRL_SHIFT 1 ; [x] 0: Ctrl + Space, 1: Ctrl + Shift.
|
DEFINE CHANGE_LANG_CTRL_SHIFT 1 ; [x] 0: Ctrl + Space, 1: Ctrl + Shift.
|
||||||
DEFINE BREAK_PROCESS_CODE #AC00 ; CTRL+C
|
DEFINE BREAK_PROCESS_CODE #AC00 ; CTRL+C
|
||||||
DEFINE USE_E1_SCANCODE 0
|
DEFINE USE_E1_SCANCODE 0
|
||||||
;DEFINE CLASSIC_CURSOR 0
|
;DEFINE CLASSIC_CURSOR 0
|
||||||
|
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||||
|
; DSS
|
||||||
|
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||||
|
DEFINE NeedSafePort_Y 1
|
||||||
|
DEFINE NON_REMOVABLE_FDD 0
|
||||||
|
;-----------------------------------------------[VERSION]
|
||||||
|
DSS_MAX_SECTOR_SIZE EQU 512
|
||||||
|
DSS_MAX_DRIVES_AMOUNT EQU 26
|
||||||
|
MAX_RAMDRIVES EQU 16
|
||||||
|
MINIMUM_BIOS_VERSION EQU 3*256 + 06 ; version 3.06
|
||||||
|
DEFINE STR_MINIMUM_BIOS_VERSION '0' + high MINIMUM_BIOS_VERSION, '.', '0'+(low MINIMUM_BIOS_VERSION)/10, '0'+(low MINIMUM_BIOS_VERSION)-((low MINIMUM_BIOS_VERSION)/10)*10
|
||||||
|
;DEFINE TABisSPACES 0
|
||||||
|
;DEFINE EnoughtOnly_LF 0
|
||||||
|
;-----------------------------------------------[^^^^^^^]
|
||||||
;
|
;
|
||||||
|
;-----------------------------------------------[MEMORY]
|
||||||
|
DEFINE PORTAL.RSTx18_SWITCH_ADDRESS #82
|
||||||
|
;DEFINE OLD_SET_BANK 0
|
||||||
|
;-----------------------------------------------[^^^^^^]
|
||||||
|
|
||||||
;LD_DSK EQU 16 ; ¬ ªá¨¬ «ì®¥ ª®«¨ç¥á⢮ «®£¨ç¥áª¨å HDD ¤¨áª®¢ ¢ á¨á⥬¥
|
;-----------------------------------------------[«®£.®¬¥à áâà ¨æ]
|
||||||
|
DEFINE USING_MEMPAGES 4 ; à §¬¥à ¡«®ª ¤®¯®«¨â¥«ìëå áâà ¨æ
|
||||||
|
; ªíè ᯨ᪠ª â «®£
|
||||||
|
DIRPAGE EQU 0 + (low BANKTBL)
|
||||||
|
.buffer EQU #C000
|
||||||
|
FATPAGE EQU 1 + (low BANKTBL)
|
||||||
|
.cache EQU #C000
|
||||||
|
TXTPAGE EQU 2 + (low BANKTBL)
|
||||||
|
.ADDR EQU #C000
|
||||||
|
ENVPAGE EQU TXTPAGE
|
||||||
|
.PATH_PNT_ARRAY EQU #FC80
|
||||||
|
.ENVTEMP EQU #FE00
|
||||||
|
.ADDR EQU #E400
|
||||||
|
DRVPAGE EQU 3 + (low BANKTBL)
|
||||||
|
;
|
||||||
|
COREPAGE EQU 4 + (low BANKTBL) ; ® ®â¤¥«ì® ¨ ¥ á ¡«®ª®¬ ¢ëè¥.
|
||||||
|
;-----------------------------------------------[^^^^^^^^^^^^^^^^^^]
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
DIRECTORY_PATH_LENGTH EQU 256 ; '\' + 255, 0
|
||||||
DEFINE CHANGE_FREE_CLU_AFTER_DEL 1
|
ENVIRONMENT_STRING_LENGTH EQU 255
|
||||||
|
FMCOUNT EQU 10 ; Š®«¨ç¥á⢮ ä ©«®¢ëå ¬ ¨¯ã«ïâ®à®¢
|
||||||
|
;
|
||||||
|
SUBLOAD_SIZE EQU 2 ; ª®«-¢® ᥪâ®à®¢ ª®â®à®¥ ¤® ¯®¤£à㧨âì ¯®á«¥ § £à㧪¨ system.dos ¢ áâà ¨æã
|
||||||
|
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
SERVICE_SECTORS:
|
SERVICE_SECTORS:
|
||||||
.FAT12 EQU #0FEF
|
.FAT12 EQU #0FEF
|
||||||
.FAT16 EQU #FFEF
|
.FAT16 EQU #FFEF
|
||||||
@ -90,70 +158,4 @@ FAT_CACHE:
|
|||||||
;.Degree_12 EQU _shift
|
;.Degree_12 EQU _shift
|
||||||
;.Size_Mask_12 EQU high (.Size/.bytes_record_12 - 1)
|
;.Size_Mask_12 EQU high (.Size/.bytes_record_12 - 1)
|
||||||
;.Part_Mask_12 EQU ((1<<(.bytes_record_12*8)) / (.Size/2))-1
|
;.Part_Mask_12 EQU ((1<<(.bytes_record_12*8)) / (.Size/2))-1
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
DEFINE NeedSafePort_Y 1
|
|
||||||
; DEFINE TABisSPACES 0
|
|
||||||
; DEFINE EnoughtOnly_LF 0
|
|
||||||
DEFINE NON_REMOVABLE_FDD 0
|
|
||||||
;
|
|
||||||
DSS_MAX_SECTOR_SIZE EQU 512
|
|
||||||
DSS_MAX_DRIVES_AMOUNT EQU 26
|
|
||||||
MAX_RAMDRIVES EQU 16
|
|
||||||
MINIMUM_BIOS_VERSION EQU 3*256 + 06 ; version 2.55
|
|
||||||
DEFINE STR_MINIMUM_BIOS_VERSION '0' + high MINIMUM_BIOS_VERSION, '.', '0'+(low MINIMUM_BIOS_VERSION)/10, '0'+(low MINIMUM_BIOS_VERSION)-((low MINIMUM_BIOS_VERSION)/10)*10
|
|
||||||
|
|
||||||
;
|
|
||||||
;-------------------[MEMORY]-------------------------;
|
|
||||||
DEFINE PORTAL.RSTx18_SWITCH_ADDRESS #82
|
|
||||||
; DEFINE OLD_SET_BANK 0
|
|
||||||
|
|
||||||
;---------------------[ «®£.®¬¥à áâà ¨æ ¯ ¬ï⨠]---------------------
|
|
||||||
DEFINE USING_MEMPAGES 4 ; à §¬¥à ¡«®ª ¤®¯®«¨â¥«ìëå áâà ¨æ
|
|
||||||
; ªíè ᯨ᪠ª â «®£
|
|
||||||
DIRPAGE EQU 0
|
|
||||||
.buffer EQU #C000
|
|
||||||
FATPAGE EQU 1
|
|
||||||
.cache EQU #C000
|
|
||||||
TXTPAGE EQU 2
|
|
||||||
ENVPAGE EQU TXTPAGE
|
|
||||||
.PATH_PNT_ARRAY EQU #FC80
|
|
||||||
.ENVTEMP EQU #FE00
|
|
||||||
DRVPAGE EQU 3
|
|
||||||
;
|
|
||||||
COREPAGE EQU 4 ; ® ®â¤¥«ì® ¨ ¥ á ¡«®ª®¬ ¢ëè¥.
|
|
||||||
;-----------------------------------------------------------------------
|
|
||||||
DIRECTORY_PATH_LENGTH EQU 256 ; '\' + 255, 0
|
|
||||||
ENVIRONMENT_STRING_LENGTH EQU 255
|
|
||||||
|
|
||||||
TXTADDR EQU #C000
|
|
||||||
ENVADDR EQU #E400
|
|
||||||
;DIR EQU #C000
|
|
||||||
;FAT_CACHE EQU #C000
|
|
||||||
|
|
||||||
FMCOUNT EQU 10 ; Š®«¨ç¥á⢮ ä ©«®¢ëå ¬ ¨¯ã«ïâ®à®¢
|
|
||||||
;HANDBUF.SIZE EQU FAT_DIRECTORY_RECORD
|
|
||||||
;----------------------------------------------------;
|
|
||||||
;
|
|
||||||
|
|
||||||
;
|
|
||||||
;----------------------------------------------------;
|
|
||||||
IF MOUSE_COM_BAUD = 1
|
|
||||||
MOUSE_BAUD:
|
|
||||||
.multiplier_1 EQU %0100'0000 ; ¯¥à¢ë© ¬®¦¨â¥«ì = 16.
|
|
||||||
.multiplier_2 EQU 22 ; ¢â®à®© ¬®¦¨â¥«ì = 22. 875000/Œ1*Œ2=2485
|
|
||||||
ELSEIF MOUSE_COM_BAUD = 2
|
|
||||||
MOUSE_BAUD:
|
|
||||||
.multiplier_1 EQU %0000'0000 ; ¯¥à¢ë© ¬®¦¨â¥«ì = 1.
|
|
||||||
.multiplier_2 EQU 182 ; ¢â®à®© ¬®¦¨â¥«ì = 182. 875000/Œ1*Œ2=4807
|
|
||||||
ELSE
|
|
||||||
MOUSE_BAUD:
|
|
||||||
.multiplier_1 EQU %0100'0000 ; ¯¥à¢ë© ¬®¦¨â¥«ì = 16.
|
|
||||||
.multiplier_2 EQU 45 ; ¢â®à®© ¬®¦¨â¥«ì = 45. 875000/Œ1*Œ2=1215
|
|
||||||
ENDIF
|
|
||||||
;----------------------------------------------------;
|
|
||||||
;
|
|
||||||
|
|
||||||
;
|
|
||||||
;----------------------------------------------------;
|
|
||||||
SUBLOAD_SIZE EQU 2 ; ª®«-¢® ᥪâ®à®¢ ª®â®à®¥ ¤® ¯®¤£à㧨âì ¯®á«¥ § £à㧪¨ system.dos ¢ áâà ¨æã
|
|
||||||
;----------------------------------------------------;
|
|
||||||
@ -78,12 +78,12 @@ DEPLOY: ;Allocate memory
|
|||||||
RST ToBIOS
|
RST ToBIOS
|
||||||
; ¤®«¦ ¨¤â¨ ¯®á«¥ GetMemBlkPages, ç⮡ ¢¬¥áâ®
|
; ¤®«¦ ¨¤â¨ ¯®á«¥ GetMemBlkPages, ç⮡ ¢¬¥áâ®
|
||||||
; § ªàë¢ èª¨ #FF ¯®áâ ¢¨âì áâà ¨æã COREPAGE
|
; § ªàë¢ èª¨ #FF ¯®áâ ¢¨âì áâà ¨æã COREPAGE
|
||||||
LD HL,BANKTBL + COREPAGE
|
LD HL,COREPAGE + (#FF00 & BANKTBL)
|
||||||
IN A,(SLOT0)
|
IN A,(SLOT0)
|
||||||
LD (HL),A
|
LD (HL),A
|
||||||
; ¤«ï API ¤à ©¢¥à ¬ë誨
|
; ¤«ï API ¤à ©¢¥à ¬ë誨
|
||||||
LD (DRIVES_DRIVER.MOUSE_HANDLER.CorePage),A
|
LD (DRIVES_DRIVER.MOUSE_HANDLER.CorePage),A
|
||||||
LD A,(BANKTBL + DRVPAGE)
|
LD A,((#FF00 & BANKTBL) + DRVPAGE)
|
||||||
LD (RST_0x30.drv_page),A
|
LD (RST_0x30.drv_page),A
|
||||||
;
|
;
|
||||||
POP AF
|
POP AF
|
||||||
@ -113,4 +113,5 @@ DEPLOY: ;Allocate memory
|
|||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
|
.Size: EQU DEPLOY
|
||||||
;-----------------------------------------------------------------------;
|
;-----------------------------------------------------------------------;
|
||||||
@ -1 +1 @@
|
|||||||
Subproject commit 4da18d54c12e0f2ff4183be7a1cbf5882da1bd4f
|
Subproject commit 97d5ea8a4b1359d49fb706f24aae6af6bb4eef66
|
||||||
Loading…
Reference in New Issue
Block a user