mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 01:11:48 +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
|
||||
LD (OPEN_FN.TMP),A
|
||||
CALL .OPENATR ;R002
|
||||
; DE = record index
|
||||
CALL NC,OPEN_FN.FM
|
||||
;
|
||||
POP BC
|
||||
|
||||
@ -6,10 +6,8 @@
|
||||
;‚ëå®¤ë¥ § 票ï:
|
||||
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
CLOSE_FN:
|
||||
;R008 ;
|
||||
;CLOSE: ;
|
||||
LD (.TMP),A
|
||||
;CLOSE:
|
||||
CLOSE_FN: LD (.TMP),A
|
||||
CALL SET_FM
|
||||
RET C
|
||||
LD A,(TASK)
|
||||
@ -20,10 +18,10 @@ CLOSE_FN:
|
||||
BIT 7,(IY+_sFM.ACCESS_MODE)
|
||||
JR Z,.NOTMODF
|
||||
;
|
||||
; ä ©« ¨§¬¥ñ
|
||||
LD E,(IY+_sFM.DIR_CLUSTER_L)
|
||||
LD D,(IY+_sFM.DIR_CLUSTER_L+1)
|
||||
PUSH DE
|
||||
; [x] fat32
|
||||
LD E,(IY+_sFM.DIR_CLUSTER_H)
|
||||
LD D,(IY+_sFM.DIR_CLUSTER_H+1)
|
||||
PUSH DE
|
||||
@ -50,27 +48,30 @@ CLOSE_FN:
|
||||
LD (IY+_sFM.FS_REC.FIRST_CLUSTER_L+1),D
|
||||
;
|
||||
CALL LOADDIR
|
||||
; [ ] big dir
|
||||
;!TODO ®â¬®â âì ªíè ¤® 㦮£® record index?
|
||||
;
|
||||
.TMP+1: LD A,0
|
||||
CALL SET_FM
|
||||
;
|
||||
SET_PAGE_X DIRPAGE
|
||||
;
|
||||
EX AF,AF'
|
||||
; [ ] big dir
|
||||
;!TEST 9/11/23 record index
|
||||
; LD HL,DIR
|
||||
; LD DE,FAT_DIRECTORY_RECORD
|
||||
; LD C,(IY+_sFM.HANDLE)
|
||||
; LD B,(IY+_sFM.HANDLE+1)
|
||||
; 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)
|
||||
LD HL,DIRPAGE.buffer
|
||||
LD DE,FAT_DIRECTORY_RECORD
|
||||
LD C,(IY+_sFM.HANDLE)
|
||||
LD B,(IY+_sFM.HANDLE+1)
|
||||
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)
|
||||
;;;;;;;;;
|
||||
LD D,YH
|
||||
LD E,YL
|
||||
EX DE,HL
|
||||
@ -79,10 +80,10 @@ CLOSE_FN:
|
||||
;POP HL
|
||||
LD BC,FAT_DIRECTORY_RECORD
|
||||
LDIR
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
CALL SAVEDIR
|
||||
.NOTMODF:
|
||||
LD A,(.TMP)
|
||||
.NOTMODF: LD A,(.TMP)
|
||||
JP RES_FM
|
||||
;
|
||||
.error: POP DE
|
||||
|
||||
@ -86,7 +86,10 @@ CREATE: ;!TEST Current Dir ;[x] 15/10/23 ;CREATE_FN:
|
||||
.PATH0+1: LD HL,0
|
||||
XOR 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
|
||||
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
|
||||
|
||||
ENVIRONMENT EQU ENVADDR
|
||||
ENVIRONMENT EQU ENVPAGE.ADDR
|
||||
|
||||
DEFAULT_ENV: DB 'BOOTDSK=' ;R02
|
||||
.boot_disk: DB 'X:',0 ;R02
|
||||
|
||||
@ -31,6 +31,7 @@ F_FIRST: CALL .INIT_VARS
|
||||
LD A,(.SEARCH_ATTRIBUT)
|
||||
CALL SEARCH.Custom
|
||||
RET C
|
||||
PUSH DE ; record index ¬®¦¥â ¨ ¥ 㦮
|
||||
LD HL,CORE_BUFFERS.MASKARE
|
||||
.DTABUF+1: LD DE,0
|
||||
LD BC,FAT_DIRECTORY_RECORD.ATTRIBUT ; ª®¯¨à㥬 .NAME ¨ .EXT
|
||||
@ -38,11 +39,19 @@ F_FIRST: CALL .INIT_VARS
|
||||
.SEARCH_ATTRIBUT+1:
|
||||
LD A,0 ; DSS_FCB_MAIN.SEARCH_ATTRIBUT
|
||||
LD (DE),A
|
||||
; ¯à¨ ¯à릪¥ áî¤ á⥪¥ ¤®«¦¥ «¥¦ âì record index
|
||||
.FIND_S: INC DE
|
||||
;!TODO «ãçè¥ âã⠨ᯮ«ì§®¢ âì ª ª ¢ record index ¤«ï ¯¥à¥¡®à ª â «®£ > #4000 bytes
|
||||
LD BC,FAT_DIRECTORY_RECORD
|
||||
ADD IX,BC
|
||||
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 BC,CORE_BUFFERS.HANDBUF.SIZE - FAT_DIRECTORY_RECORD.RESERVED_NT
|
||||
LDIR
|
||||
@ -79,43 +88,44 @@ F_FIRST: CALL .INIT_VARS
|
||||
F_NEXT:
|
||||
.NO_NEXT.YES EQU 0
|
||||
.NO_NEXT.NO EQU #FF
|
||||
.NO_NEXT+1:
|
||||
LD A,0
|
||||
.NO_NEXT+1: LD A,0
|
||||
OR A
|
||||
LD A,DSS_Error.sys.INVALID_ACCESS
|
||||
SCF
|
||||
RET Z
|
||||
;
|
||||
LD (F_FIRST.DTABUF),DE
|
||||
EX DE,HL
|
||||
LD DE,CORE_BUFFERS.MASKARE
|
||||
LD BC,11 ;!HARDCODE
|
||||
LDIR
|
||||
|
||||
;
|
||||
XOR A ; F_NEXT.NO_NEXT.YES
|
||||
LD (F_NEXT.NO_NEXT),A
|
||||
|
||||
LD A,(HL)
|
||||
PUSH HL
|
||||
CALL .NSEARCH
|
||||
POP DE
|
||||
POP HL
|
||||
RET C
|
||||
;
|
||||
PUSH DE
|
||||
EX DE,HL
|
||||
JP F_FIRST.FIND_S
|
||||
.NSEARCH:
|
||||
EX AF,AF'
|
||||
;
|
||||
.NSEARCH: EX AF,AF'
|
||||
SET_PAGE_X DIRPAGE
|
||||
;PUSH AF
|
||||
EX AF,AF'
|
||||
CPL
|
||||
LD C,A
|
||||
;!TEST 9/11/23 record index
|
||||
; EXX
|
||||
; LD DE,0
|
||||
; EXX
|
||||
EXX
|
||||
.RecordIndex+1: LD DE,0 ; record index ¬®¦¥â ¨ ¥ 㦮
|
||||
EXX
|
||||
;
|
||||
.CURHND+2:
|
||||
LD IX,0
|
||||
.CURHND+2: LD IX,0 ; ¤à¥á á«¥¤ãî饩 § ¯¨á¨ ¢ ªíè¥ ¤¨à¥ªâ®à¨¨
|
||||
LD A,XH
|
||||
OR XL
|
||||
JP Z,SEARCH.error_too_many_files
|
||||
JP Z,SEARCH.error_too_many_files ; [ ] big dir
|
||||
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
|
||||
.FILE: CALL SEARCH.File ; enter point from EXEC, CREATE
|
||||
RET C
|
||||
;R002 ;!TEST 9/11/23 record index
|
||||
.FM: PUSH DE ; á®åà 塞 㪠§ â¥«ì § ¯¨áì ¢ ª â «®£¥ FS (¯®«ãç¥ ¨§ SEARCH)
|
||||
;
|
||||
CALL GET_FM ; enter point from ATTRIB
|
||||
RET C
|
||||
LD A,C
|
||||
EX AF,AF'
|
||||
.FM: ; enter point from ATTRIB
|
||||
;R002 ;!TEST 9/11/23 record index
|
||||
PUSH DE ; á®åà 塞 㪠§ â¥«ì § ¯¨áì ¢ ª â «®£¥ FS (¯®«ãç¥ ¨§ SEARCH)
|
||||
;
|
||||
CALL GET_FM
|
||||
;!TEST 9/11/23 record index 㪠§ â¥«ì § ¯¨áì ¢ ª â «®£¥ FS
|
||||
POP DE
|
||||
;
|
||||
RET C
|
||||
LD A,C ; ¤¥áªà¨¯â®à ä ©«
|
||||
EX AF,AF'
|
||||
;!TEST 9/11/23 record index 㪠§ â¥«ì § ¯¨áì ¢ ª â «®£¥ FS
|
||||
;POP DE
|
||||
; EXX
|
||||
LD (IY+_sFM.HANDLE),E
|
||||
LD (IY+_sFM.HANDLE+1),D
|
||||
@ -49,42 +54,94 @@ OPEN_FN: ;!TEST Current Dir ;[x] 15/10/23
|
||||
LDIR
|
||||
.TMP+1: LD A,0
|
||||
LD (IY+_sFM.ACCESS_MODE),A
|
||||
LD A,(TASK)
|
||||
LD (IY+_sFM.TASK_NUM),A
|
||||
;!FIXIT ®¯â¨¬¨§ãâì âãâ § ã«¥¨¥
|
||||
; ®¯â¨¬¨§ã« âãâ
|
||||
;LD A,(TASK)
|
||||
;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
|
||||
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 (HL),A ; _sFM.F_POSITION
|
||||
INC HL
|
||||
LD (HL),A ; _sFM.F_POSITION + 1
|
||||
INC HL
|
||||
LD (HL),A ; _sFM.F_POSITION + 2
|
||||
INC HL
|
||||
LD (HL),A ; _sFM.F_POSITION + 3
|
||||
INC HL
|
||||
;
|
||||
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
|
||||
EX DE,HL
|
||||
LD HL,CORE_BUFFERS.FM_BUF + _sFM.FS_REC.FIRST_CLUSTER_L
|
||||
LDI ; _sFM.DIR_CLUSTER_L
|
||||
LDI ; _sFM.DIR_CLUSTER_L + 1
|
||||
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
|
||||
LDI ; _sFM.DIR_CLUSTER_H
|
||||
LDI ; _sFM.DIR_CLUSTER_H + 1
|
||||
EX DE,HL
|
||||
;
|
||||
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
|
||||
INC HL
|
||||
LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
|
||||
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'
|
||||
AND A
|
||||
RET
|
||||
|
||||
@ -193,7 +193,7 @@ SAVETXT: PUSH AF
|
||||
LD L,#28
|
||||
.SVTEXT1: LD (BACKTXT.WinMax),HL
|
||||
LD DE,#0000
|
||||
LD A,(BANKTBL + TXTPAGE)
|
||||
LD A,((#FF00 & BANKTBL) + TXTPAGE)
|
||||
LD B,A
|
||||
|
||||
LD C,BIOS.WIN_COPY
|
||||
@ -229,7 +229,7 @@ BACKTXT: PUSH AF
|
||||
LD IX,#C000
|
||||
.WinMax+1: LD HL,#2050
|
||||
LD DE,#0000
|
||||
LD A,(BANKTBL + TXTPAGE)
|
||||
LD A,((#FF00 & BANKTBL) + TXTPAGE)
|
||||
LD B,A
|
||||
LD C,BIOS.WIN_RESTORE
|
||||
;[x] 29/9/23
|
||||
|
||||
@ -266,6 +266,10 @@ INTx38_Handler: PUSH AF
|
||||
POP AF
|
||||
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
|
||||
@ -362,10 +366,10 @@ MASKARE: BLOCK 8,0 ;
|
||||
|
||||
|
||||
|
||||
BANKTBL EQU ($ & #FF00) + (1<?($ & #FF)) * #100
|
||||
.Size EQU USING_MEMPAGES + 2
|
||||
; BANKTBL EQU ($ & #FF00) + (1<?($ & #FF)) * #100
|
||||
; .Size EQU USING_MEMPAGES + 2
|
||||
;> > > > > > > > > > > > > > > > BUFFERS < < < < < < < < < < < < < < < <
|
||||
CLEAR_ZONE.start EQU BANKTBL + BANKTBL.Size
|
||||
CLEAR_ZONE.start EQU $ ;BANKTBL + BANKTBL.Size
|
||||
MODULE CORE_BUFFERS
|
||||
BUFFERSplace _sBuffers = CLEAR_ZONE.start
|
||||
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
|
||||
; ®¯â¨¬¨§ æ¨ï ¤«ï ¨¤¥ªá § ¯¨á¨ ¢ ᯨ᪥ ª â «®£ .
|
||||
; <09>® ¤®¡¨âáï ¢¥àãâì ¤«ï ¯¥à¥¡®à ª â «®£ > #4000 ¡ ©â
|
||||
; EXX
|
||||
; LD DE,0
|
||||
; EXX
|
||||
EXX
|
||||
LD DE,0
|
||||
EXX
|
||||
;
|
||||
.loop: LD A,(IX + FAT_DIRECTORY_RECORD.NAME)
|
||||
OR A
|
||||
@ -184,33 +184,34 @@ SEARCH:
|
||||
;
|
||||
LD D,XH
|
||||
LD E,XL
|
||||
;!FIXIT ¬®¦¥â ¢ë室¥ ¯à®áâ® EXX?
|
||||
;!TEST 9/11/23 record index
|
||||
; EXX
|
||||
; PUSH DE
|
||||
; EXX
|
||||
PUSH IX
|
||||
EXX
|
||||
PUSH DE ; record index
|
||||
EXX
|
||||
;PUSH IX
|
||||
;
|
||||
LD HL,CORE_BUFFERS.HANDBUF
|
||||
EX DE,HL
|
||||
LD BC,CORE_BUFFERS.HANDBUF.SIZE
|
||||
LDIR
|
||||
;!TEST 9/11/23 record index
|
||||
; record index
|
||||
POP DE
|
||||
;
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
EX AF,AF'
|
||||
AND A
|
||||
RET
|
||||
;
|
||||
.next_record: LD DE,FAT_DIRECTORY_RECORD
|
||||
;!TEST 9/11/23 record index
|
||||
; EXX
|
||||
; INC DE
|
||||
; EXX
|
||||
.next_record: ;!TEST 9/11/23 record index
|
||||
EXX
|
||||
INC DE
|
||||
EXX
|
||||
;
|
||||
ADD IX,DE
|
||||
LD DE,FAT_DIRECTORY_RECORD
|
||||
ADD IX,DE ; [ ] big dir
|
||||
JR NC,.loop
|
||||
;
|
||||
.error_too_many_files:
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
@ -501,8 +502,8 @@ OPENDIR: LD IY,CORE_BUFFERS.FM_BUF
|
||||
EX DE,HL
|
||||
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 HL,#4000 ;!HARDCODE
|
||||
LD (CORE_BUFFERS.FM_BUF.FS_REC.F_SIZE),HL
|
||||
;LD HL,#4000 ;!HARDCODE
|
||||
;LD (CORE_BUFFERS.FM_BUF.FS_REC.F_SIZE),HL
|
||||
;-------------; EX DE,HL
|
||||
; JP LOADDIR
|
||||
|
||||
@ -512,7 +513,8 @@ LOADDIR: ;!TODO optimize
|
||||
CALL LOAD_SAVE_DIR_PREPARE
|
||||
PUSH 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)
|
||||
CP FAT_TYPE.x32
|
||||
JR NZ,.LoadRootDir
|
||||
@ -541,16 +543,16 @@ LOADDIR: ;!TODO optimize
|
||||
LD B,32 ; !HARDCODE sector size 512. 16384/(sector 512). à §¬¥à root-ª â «®£
|
||||
CP B
|
||||
JR NC,.RTD1
|
||||
;
|
||||
LD B,A ; ç¨á«® ᥪâ®à®¢
|
||||
.RTD1: PUSH AF ; 21/04/2025 fix ¬ãá®à ¢ áâà ¨æ¥ ª â «®£ , ¥á«¨ ª â «®£ ¬¥ìè¥ áâà ¨æë
|
||||
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
|
||||
; !FIXIT ¥â ¯à®¢¥àª¨ ®è¨¡ªã
|
||||
; 21/04/2025 fix ¬ãá®à ¢ áâà ¨æ¥ ª â «®£ , ¥á«¨ ª â «®£ ¬¥ìè¥ áâà ¨æë
|
||||
POP AF
|
||||
JR NC,.exit
|
||||
BIT 7,D
|
||||
JR Z,.exit
|
||||
XOR A
|
||||
LD (DE),A
|
||||
;
|
||||
@ -571,35 +573,117 @@ LOAD_SAVE_DIR_PREPARE:
|
||||
LD IX,0
|
||||
LD B,A ; ®â ç « ä ©«
|
||||
CALL MOVE_FP
|
||||
;
|
||||
|
||||
SET_PAGE_X DIRPAGE
|
||||
AND A
|
||||
EX AF,AF'
|
||||
PUSH AF
|
||||
;
|
||||
LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
|
||||
LD (IY+_sFM.DRIVE),A
|
||||
;!FIXIT ¯¥à¥¤¥« âì à ¡®âã ¡¥§ IY
|
||||
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)
|
||||
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
|
||||
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 - à §¬¥à ¤¨à¥ªâ®à¨¨ ¢ ª« áâ¥à å
|
||||
;
|
||||
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
|
||||
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
; ᪮¯¨à®¢ âì § ¯¨áì ¢ ᯨ᮪ ¤¨áª (ª â «®£ ) de ix iy
|
||||
; ¨ á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
||||
; ¢å®¤: (HANDBUF) - § ¯¨áì ª â «®£
|
||||
; ¢ë室: DE - record index
|
||||
WRT_HND:
|
||||
SET_PAGE_X DIRPAGE
|
||||
EX AF,AF'
|
||||
LD HL,DIRPAGE.buffer
|
||||
;!TEST 9/11/23 record index
|
||||
; EXX
|
||||
; LD DE,0
|
||||
; EXX
|
||||
EXX
|
||||
LD DE,0
|
||||
EXX
|
||||
;
|
||||
LD BC,FAT_DIRECTORY_RECORD
|
||||
.loop: ;LD A,(IX+00)
|
||||
@ -626,23 +710,30 @@ WRT_HND:
|
||||
LDIR
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
; ¯à®¢¥à塞, 㢥«¨ç¨«áï «¨ à §¬¥à ¤ ëå ¤¨à¥ªâ®à¨¨
|
||||
LD HL,DIRPAGE.buffer
|
||||
LD BC,(SAVEDIR.DIRSIZE)
|
||||
DEC BC
|
||||
ADD HL,BC
|
||||
AND A
|
||||
SBC HL,DE
|
||||
JR NC,SAVEDIR
|
||||
JR NC,.SAVEDIR
|
||||
;
|
||||
; à §¬¥à ¤ ëå ¤¨à¥ªâ®à¨¨ 㢥«¨ç¨«áï
|
||||
LD HL,(SAVEDIR.DIRSIZE)
|
||||
LD BC,(CORE_BUFFERS.FS_Buffer.BytesPerCluster)
|
||||
ADD HL,BC
|
||||
LD (SAVEDIR.DIRSIZE),HL
|
||||
AND A
|
||||
;JP SAVEDIR
|
||||
.SAVEDIR: EXX
|
||||
PUSH DE
|
||||
EXX
|
||||
CALL SAVEDIR
|
||||
POP DE
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
; ‘¡à®á¨âì ª¥è ª â «®£ ¤¨áª.
|
||||
; ¢å®¤: iy=áâàãªâãà ¤¥áªà¨¯â®à
|
||||
; [x] fat32 ;!TEST
|
||||
SAVEDIR: ;!TODO optimize
|
||||
CALL LOAD_SAVE_DIR_PREPARE
|
||||
PUSH AF
|
||||
@ -920,7 +1011,6 @@ FAT_BPB: LD A,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.DRIVE_TYPE)
|
||||
LD H,A
|
||||
LD D,H
|
||||
LD E,L
|
||||
;EX DE,HL
|
||||
EXX
|
||||
LD HL,(CORE_BUFFERS.FS_Buffer.SectorsPerFAT_L)
|
||||
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)
|
||||
DEC 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
|
||||
EXX
|
||||
PUSH HL
|
||||
@ -983,7 +1065,6 @@ FAT_BPB: LD A,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.DRIVE_TYPE)
|
||||
LD HL,65524
|
||||
SBC HL,BC
|
||||
JR C,.its_FAT32
|
||||
;
|
||||
; It's FAT16
|
||||
LD A,(.UsesVarsFAT32)
|
||||
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 DE,(CORE_BUFFERS.FS_Buffer.SectorsPerFAT_L)
|
||||
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
|
||||
CALL NZ,ALL_SECTORS_PER_FATs
|
||||
;
|
||||
@ -2071,8 +2142,7 @@ WRITE_FAT_TABLE:
|
||||
;[x] fat32 ;!TEST
|
||||
;¢å®¤: HL':HL - ®¬¥à ª« áâ¥à
|
||||
;¢ë室: HL - ¤à¥á 㦮© ï祩ª¨ ¢ áâà ¨æ¥ FATPAGE
|
||||
GET_FAT32_CELL:
|
||||
; ¤¢¨£ ¥¬ ¢«¥¢® HL':H
|
||||
GET_FAT32_CELL: ; ¤¢¨£ ¥¬ ¢«¥¢® HL':H
|
||||
LD A,H
|
||||
EXX
|
||||
LD C,A
|
||||
@ -2082,8 +2152,7 @@ GET_FAT32_CELL:
|
||||
LD A,C
|
||||
;
|
||||
LD B,FAT_CACHE.Degree ; 4 ᤢ¨£
|
||||
.loop_block:
|
||||
RLCA ; << H
|
||||
.loop_block: RLCA ; << H
|
||||
RL L ; << L'
|
||||
RL H ; << H'
|
||||
DJNZ .loop_block
|
||||
@ -2111,8 +2180,7 @@ GET_FAT32_CELL:
|
||||
;-----------------------------------------------------------------------
|
||||
;¢å®¤: HL - ®¬¥à ª« áâ¥à
|
||||
;¢ë室: HL - ¤à¥á 㦮© ï祩ª¨ ¢ áâà ¨æ¥ FATPAGE
|
||||
GET_FAT16_CELL:
|
||||
LD A,H
|
||||
GET_FAT16_CELL: LD A,H
|
||||
LD B,H
|
||||
;AND #0F
|
||||
AND FAT_CACHE.Size_Mask_16
|
||||
@ -2141,8 +2209,7 @@ GET_FAT16_CELL:
|
||||
;¢å®¤: HL - ®¬¥à ª« áâ¥à
|
||||
;¢ë室: HL - ¤à¥á 㦮© ï祩ª¨ ¢ áâà ¨æ¥ FATPAGE
|
||||
; CF - çñâë©/¥çñâë© ¤à¥á ª« áâ¥à
|
||||
GET_FAT12_CELL:
|
||||
LD D,H
|
||||
GET_FAT12_CELL: LD D,H
|
||||
LD E,L
|
||||
SRL H
|
||||
RR L ; ᤢ¨£ ¢¯à ¢® ç¥à¥§ CF
|
||||
|
||||
@ -302,7 +302,7 @@ SETUP_CURSORS:
|
||||
;
|
||||
in a,(SLOT3)
|
||||
push af ; 甌縲. <20>珥
|
||||
ld a,(BANKTBL + TXTPAGE) ; 2-© «®£. ®¬¥à áâà ¨æë à áè. „Ž‘
|
||||
ld a,((#FF00 & BANKTBL) + TXTPAGE) ; 2-© «®£. ®¬¥à áâà ¨æë à áè. „Ž‘
|
||||
out (SLOT3),a
|
||||
|
||||
; ; <20><>腮碎 瓱痰. Л<><D09B><EFBFBD><EFBFBD>.
|
||||
|
||||
@ -24,8 +24,10 @@
|
||||
|
||||
;File Manipulator (FM)
|
||||
;[ ] fat32
|
||||
; !!!!! ¨§-§ ¢áïª¨å ®¯â¨¬¨§ 権 áà ëå ¥ ¬¥ïâì ¬¥áâ ¬¨ ¨ç¥£®, ⮫쪮 ¤®¡ ¢«ïâì ¢ ª®¥æ
|
||||
STRUCT _sFM ; 54 bytes
|
||||
; from FAT
|
||||
.FS_REC FAT_DIRECTORY_RECORD
|
||||
; .NAME: TEXT 8,{". "," "} ;+ #00 +00 NAME
|
||||
; .EXT: TEXT 3,{" "," "} ;+ #08 +08 EXT
|
||||
; .ATTRIBUT: BYTE #10 ;+ #0B +11 ATTRIBUT
|
||||
@ -39,7 +41,6 @@
|
||||
; .DATE: WORD #0000 ;+ #18 +24 DATE
|
||||
; .FIRST_CLUSTER_L: WORD #0000 ;+ #1A +26 START CLUSTER ; [ ] fat32
|
||||
; .F_SIZE: DWORD #00000000 ;+ #1C +28 SIZE FILE
|
||||
.FS_REC FAT_DIRECTORY_RECORD
|
||||
; from Core
|
||||
.F_POSITION DWORD #00000000 ;+ #20 +32 FILE POSITION (FP)
|
||||
.DIR_CLUSTER_L WORD #0000 ;+ #24 +36 DIRECTORY CLUSTER LOW
|
||||
|
||||
158
DSS/defines.inc
158
DSS/defines.inc
@ -1,33 +1,101 @@
|
||||
;
|
||||
; …᫨ define § ª®¬¬¥â¨à®¢ , â® ¢ ª®¤¥ ® ⮦¥ â ª¦¥
|
||||
|
||||
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
; Ž<EFBFBD>™……
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
DEFINE TEST_FEATURE 0
|
||||
;
|
||||
|
||||
;
|
||||
DEFINE MINIMUM_EXE_VERSION 1
|
||||
;
|
||||
|
||||
;
|
||||
DEFINE COMPILE_UNUSED_CODE 0
|
||||
;
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
|
||||
|
||||
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
; MOUSE
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
DEFINE MOUSE_COM_BAUD 0 ; 1 - 2485, 2 - 4807, else - 1215 (default)
|
||||
DEFINE MOUSE_INT_ENABLED 0 ; INT from SIO ch. B
|
||||
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
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
DEFINE KEYBOARD_INT_ENABLED 0 ; INT from SIO ch. A
|
||||
DEFINE CHANGE_LANG_CTRL_SHIFT 1 ; [x] 0: Ctrl + Space, 1: Ctrl + Shift.
|
||||
DEFINE BREAK_PROCESS_CODE #AC00 ; CTRL+C
|
||||
DEFINE USE_E1_SCANCODE 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) ; ® ®â¤¥«ì® ¨ ¥ á ¡«®ª®¬ ¢ëè¥.
|
||||
;-----------------------------------------------[^^^^^^^^^^^^^^^^^^]
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
DEFINE CHANGE_FREE_CLU_AFTER_DEL 1
|
||||
DIRECTORY_PATH_LENGTH EQU 256 ; '\' + 255, 0
|
||||
ENVIRONMENT_STRING_LENGTH EQU 255
|
||||
FMCOUNT EQU 10 ; Š®«¨ç¥á⢮ ä ©«®¢ëå ¬ ¨¯ã«ïâ®à®¢
|
||||
;
|
||||
SUBLOAD_SIZE EQU 2 ; ª®«-¢® ᥪâ®à®¢ ª®â®à®¥ ¤® ¯®¤£à㧨âì ¯®á«¥ § £à㧪¨ system.dos ¢ áâà ¨æã
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
SERVICE_SECTORS:
|
||||
.FAT12 EQU #0FEF
|
||||
.FAT16 EQU #FFEF
|
||||
@ -90,70 +158,4 @@ FAT_CACHE:
|
||||
;.Degree_12 EQU _shift
|
||||
;.Size_Mask_12 EQU high (.Size/.bytes_record_12 - 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
|
||||
; ¤®«¦ ¨¤â¨ ¯®á«¥ GetMemBlkPages, ç⮡ ¢¬¥áâ®
|
||||
; § ªàë¢ èª¨ #FF ¯®áâ ¢¨âì áâà ¨æã COREPAGE
|
||||
LD HL,BANKTBL + COREPAGE
|
||||
LD HL,COREPAGE + (#FF00 & BANKTBL)
|
||||
IN A,(SLOT0)
|
||||
LD (HL),A
|
||||
; ¤«ï API ¤à ©¢¥à ¬ë誨
|
||||
LD (DRIVES_DRIVER.MOUSE_HANDLER.CorePage),A
|
||||
LD A,(BANKTBL + DRVPAGE)
|
||||
LD A,((#FF00 & BANKTBL) + DRVPAGE)
|
||||
LD (RST_0x30.drv_page),A
|
||||
;
|
||||
POP AF
|
||||
@ -113,4 +113,5 @@ DEPLOY: ;Allocate memory
|
||||
OUT (SLOT3),A
|
||||
AND A
|
||||
RET
|
||||
.Size: EQU DEPLOY
|
||||
;-----------------------------------------------------------------------;
|
||||
@ -1 +1 @@
|
||||
Subproject commit 4da18d54c12e0f2ff4183be7a1cbf5882da1bd4f
|
||||
Subproject commit 97d5ea8a4b1359d49fb706f24aae6af6bb4eef66
|
||||
Loading…
Reference in New Issue
Block a user