This commit is contained in:
Anatoliy Belyanskiy 2023-11-11 00:26:36 +10:00
parent fed7066721
commit 59a72bf084
7 changed files with 181 additions and 117 deletions

View File

@ -78,7 +78,7 @@ ATTRIB: ;!TEST Current Dir ;[x] 15/10/23
RET RET
;R02 ;R02
.OPENATR: .OPENATR:
LD (F_FIRST.ACCESS),A ; à ¡. ï祩ª  (§¤¥áì  âਡãâ § ¯¨á¨) LD (OPEN.TMP),A ; à ¡. ï祩ª  (§¤¥áì  âਡãâ § ¯¨á¨)
CALL GETWORD ; â¥áâ ­  ¤®¯ãáâ. ¨¬ï ¨ ­ áâà. ­  ¤¨áª CALL GETWORD ; â¥áâ ­  ¤®¯ãáâ. ¨¬ï ¨ ­ áâà. ­  ¤¨áª
RET C RET C
LD HL,TMPNAME LD HL,TMPNAME
@ -130,7 +130,7 @@ CREATE: ;!TEST Current Dir ;[x] 15/10/23
LD BC,11 LD BC,11
LDIR LDIR
EX DE,HL EX DE,HL
LD A,(F_FIRST.ACCESS) .TMP+1: LD A,0
LD (HL),A LD (HL),A
INC HL INC HL
LD BC,#0A00 ;!HARDCODE LD BC,#0A00 ;!HARDCODE
@ -165,7 +165,7 @@ CREATE: ;!TEST Current Dir ;[x] 15/10/23
JP OPEN ;R08 JP OPEN ;R08
.Prepare: .Prepare:
AND #E7 ;R04 %76A00SHR = !FAT_ATTR AND #E7 ;R04 %76A00SHR = !FAT_ATTR
LD (F_FIRST.ACCESS),A LD (.TMP),A
LD (.PATH0),HL LD (.PATH0),HL
CALL GETWORD CALL GETWORD
RET C RET C
@ -318,17 +318,17 @@ OPEN_FN:;!TEST Current Dir ;[x] 15/10/23
LD A,C LD A,C
; ;
;R08 ;R08
OPEN: LD (F_FIRST.ACCESS),A OPEN: LD (.TMP),A ; enter point for CREATE
CALL GETWORD CALL GETWORD
RET C RET C
LD HL,TMPNAME LD HL,TMPNAME
LD DE,MASKARE LD DE,MASKARE
CALL MASK CALL MASK
RET C RET C
.FILE: CALL SEARCH .FILE: CALL SEARCH ; enter point for EXEC
RET C RET C
;R02 ;R02
.FM: CALL GET_FM .FM: CALL GET_FM ; enter point for ATTRIB
RET C RET C
LD A,C LD A,C
EX AF,AF' EX AF,AF'
@ -341,11 +341,17 @@ OPEN: LD (F_FIRST.ACCESS),A
LD HL,HANDBUF LD HL,HANDBUF
LD BC,HANDBUF.SIZE LD BC,HANDBUF.SIZE
LDIR LDIR
LD A,(F_FIRST.ACCESS) .TMP+1: LD A,0
LD (IY+_sFM.ACCESS_MODE),A LD (IY+_sFM.ACCESS_MODE),A
LD A,(TASK) LD A,(TASK)
LD (IY+_sFM.TASK_NUM),A LD (IY+_sFM.TASK_NUM),A
XOR A XOR A
;
LD (IY+_sFM.KnownCluster_L),A
LD (IY+_sFM.KnownCluster_H),A
LD (IY+_sFM.KnownOffset_L),A
LD (IY+_sFM.KnownOffset_H),A
;
LD (IY+_sFM.F_POSITION),A LD (IY+_sFM.F_POSITION),A
LD (IY+_sFM.F_POSITION+1),A LD (IY+_sFM.F_POSITION+1),A
LD (IY+_sFM.F_POSITION+2),A LD (IY+_sFM.F_POSITION+2),A
@ -371,7 +377,7 @@ OPEN: LD (F_FIRST.ACCESS),A
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
CLOSE_FN: CLOSE_FN:
;R08 ;R08
CLOSE: LD (F_FIRST.ACCESS),A CLOSE: LD (.TMP),A
CALL SET_FM CALL SET_FM
RET C RET C
LD A,(TASK) LD A,(TASK)
@ -390,20 +396,25 @@ CLOSE: LD (F_FIRST.ACCESS),A
LD (IY+_sFM.DIR_CLUSTER),D LD (IY+_sFM.DIR_CLUSTER),D
LD (IY+_sFM.DIR_CLUSTER+1),E LD (IY+_sFM.DIR_CLUSTER+1),E
CALL LOADDIR CALL LOADDIR
LD A,(F_FIRST.ACCESS) .TMP+1: LD A,0
CALL SET_FM CALL SET_FM
LD HL,DIR ;
LD DE,#0020 ;TEST 9/11/23
LD C,(IY+_sFM.HANDLE) ; LD HL,DIR
LD B,(IY+_sFM.HANDLE+1) ; LD DE,#0020
JR .CLOSE2 ; LD C,(IY+_sFM.HANDLE)
.CLOSE1: ; LD B,(IY+_sFM.HANDLE+1)
ADD HL,DE ; JR .CLOSE2
DEC BC ; .CLOSE1:
.CLOSE2: ; ADD HL,DE
LD A,B ; DEC BC
OR C ; .CLOSE2:
JR NZ,.CLOSE1 ; 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
@ -417,7 +428,7 @@ CLOSE: LD (F_FIRST.ACCESS),A
OUT (SLOT3),A OUT (SLOT3),A
CALL SAVEDIR CALL SAVEDIR
.NOTMODF: .NOTMODF:
LD A,(F_FIRST.ACCESS) LD A,(.TMP)
CALL RES_FM CALL RES_FM
RET RET
@ -445,7 +456,7 @@ F_FIRST:
; RET C ; RET C
; LD A,C ; LD A,C
; ; ; ;
LD (.ACCESS),A LD (.TMP),A
LD (.DTABUF),DE LD (.DTABUF),DE
LD A,B LD A,B
LD (.FNDMODE),A LD (.FNDMODE),A
@ -461,8 +472,7 @@ F_FIRST:
LD DE,MASKARE LD DE,MASKARE
CALL MASK CALL MASK
RET C RET C
.ACCESS+1: LD A,(.TMP)
LD A,0
CALL SEARCH.ASEARCH CALL SEARCH.ASEARCH
RET C RET C
LD HL,MASKARE LD HL,MASKARE
@ -470,7 +480,7 @@ F_FIRST:
LD DE,0 LD DE,0
LD BC,11 ;!HARDCODE LD BC,11 ;!HARDCODE
LDIR LDIR
LD A,(.ACCESS) .TMP+1: LD A,0
LD (DE),A LD (DE),A
.FIND_S: .FIND_S:
INC DE INC DE
@ -538,10 +548,11 @@ F_NEXT:
EX AF,AF' EX AF,AF'
CPL CPL
LD C,A LD C,A
;TEST 9/11/23
EXX ; EXX
LD DE,0 ; LD DE,0
EXX ; EXX
;
.CURHND+2: .CURHND+2:
LD IX,0 LD IX,0
LD A,XH LD A,XH
@ -1339,9 +1350,10 @@ WRT_HND:
PUSH AF PUSH AF
LD IX,DIR LD IX,DIR
EXX ;TEST 9/11/23
LD DE,0 ; EXX
EXX ; LD DE,0
; EXX
; ;
.loop: LD A,(IX+00) .loop: LD A,(IX+00)
OR A OR A
@ -1430,20 +1442,23 @@ DSEARCH:
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
;OUT: DE' - ¯®à浪®¢ë© ­®¬¥à FM
SEARCH: LD A,FAT_ATTR.NoDIRnoVolID SEARCH: LD A,FAT_ATTR.NoDIRnoVolID
.ASEARCH: .ASEARCH:
EX AF,AF' ; 76ADLSHR ; A = 76ADLSHR
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
LD IX,DIR LD IX,DIR
EXX ;TEST 9/11/23
LD DE,0 ; EXX
EXX ; LD DE,0
; EXX
;
.SEARCH1: .SEARCH1:
LD A,(IX+00) LD A,(IX+00)
OR A OR A
@ -1468,8 +1483,16 @@ SEARCH: LD A,FAT_ATTR.NoDIRnoVolID
INC HL INC HL
INC DE INC DE
DJNZ .SEARCH2 DJNZ .SEARCH2
;!TEST 9/11/23
; LD D,XH
; LD E,XL
LD D,XH LD D,XH
LD E,XL LD E,XL
EXX
LD D,XH
LD E,XL
EXX
;
LD HL,HANDBUF LD HL,HANDBUF
EX DE,HL EX DE,HL
LD BC,HANDBUF.SIZE LD BC,HANDBUF.SIZE
@ -1479,12 +1502,14 @@ SEARCH: LD A,FAT_ATTR.NoDIRnoVolID
AND A AND A
RET RET
.SEARCH3: .SEARCH3:
EXX ;!TEST 9/11/23
INC DE ; EXX
EXX ; INC DE
; EXX
;
LD DE,#0020 ;!HARDCODE LD DE,#0020 ;!HARDCODE
ADD IX,DE ADD IX,DE
JR NC,SEARCH.SEARCH1 JR NC,.SEARCH1
.error: POP AF .error: POP AF
OUT (SLOT3),A OUT (SLOT3),A
LD A,DSS_Error.sys.TOO_MANY_FILES_IN_DIR LD A,DSS_Error.sys.TOO_MANY_FILES_IN_DIR
@ -2143,6 +2168,7 @@ HANDBUF: BLOCK HANDBUF.SIZE,0
MASKARE: BLOCK 8,0 ; ¨¬ï ä ©«  MASKARE: BLOCK 8,0 ; ¨¬ï ä ©« 
BLOCK 3,0 ; à áè. BLOCK 3,0 ; à áè.
BLOCK 21,0 ; 11+21=32 BLOCK 21,0 ; 11+21=32
;TMP_BYTE: DB 0 ; ACCESS:
; ;
;PATH0: DW #0000 ;PATH0: DW #0000

View File

@ -59,19 +59,18 @@ FM_BUF: _sFM
; A=0 ; A=0
OR (IY) ;+00 NAME OR (IY) ;+00 NAME
ENDM ENDM
////////////////////////////////////////////////////////////////////////
SET_FM:
_mFM_FIND
SET_FM: _mFM_FIND
LD A,DSS_Error.sys.NO_ERROR LD A,DSS_Error.sys.NO_ERROR
RET NZ RET NZ
ABS_FM LD A,DSS_Error.sys.INVALID_HANDLE ABS_FM LD A,DSS_Error.sys.INVALID_HANDLE
SCF SCF
RET RET
RES_FM:
_mFM_FIND
RES_FM: _mFM_FIND
LD A,DSS_Error.sys.INVALID_HANDLE LD A,DSS_Error.sys.INVALID_HANDLE
;EXX ;EXX
SCF SCF
@ -79,7 +78,7 @@ RES_FM:
XOR A XOR A
LD (IY+0),A LD (IY+0),A
RET RET
;
GET_FM: LD B,FMCOUNT GET_FM: LD B,FMCOUNT
LD C,#FF LD C,#FF
LD IY,CORE_BUFFERS.FM_BUF - CORE_BUFFERS.FM_BUF.Size LD IY,CORE_BUFFERS.FM_BUF - CORE_BUFFERS.FM_BUF.Size
@ -93,6 +92,29 @@ GET_FM: LD B,FMCOUNT
LD A,DSS_Error.sys.NO_HANDLES LD A,DSS_Error.sys.NO_HANDLES
SCF SCF
RET RET
/*
;!TEST CHECK LOCKING 10/11/2023
GET_FM: LD IY,0
LD (.freeHandle),IY
;
LD B,FMCOUNT
LD C,#FF
LD IY,CORE_BUFFERS.FM_BUF - CORE_BUFFERS.FM_BUF.Size
LD DE,CORE_BUFFERS.FM_BUF.Size
.loop: ADD IY,DE
INC C
; CHECK LOCKING
;
.cont: LD A,(IY+0)
OR A
RET Z
DJNZ .loop
LD A,DSS_Error.sys.NO_HANDLES
SCF
RET
*/
; HL:IX - OFFSET POINTER ; HL:IX - OFFSET POINTER
; A - FILE MANIPULATOR ; A - FILE MANIPULATOR
@ -157,7 +179,7 @@ MOVE_CP:
;-------------------- ;--------------------
ECL2: ECL2:
;!TEST SAVE CLUSTER AFTER READ ;[x] SAVE CLUSTER AFTER READ ;!TEST
POP BC POP BC
; ;
POP BC POP BC
@ -188,15 +210,15 @@ BLOK_RD: PUSH BC
LD H,(IY+_sFM.ST_CLUSTER+1) LD H,(IY+_sFM.ST_CLUSTER+1)
LD A,H LD A,H
OR L OR L
;!TEST SAVE CLUSTER AFTER READ ;[x] SAVE CLUSTER AFTER READ ;!TEST
;JR NZ,BLOKRD2 ;JR NZ,BLOKRD2
PUSH BC PUSH BC
JR NZ,.testFunc JR NZ,.saveClustersOffset
; ;
JP ECL2 ;R01 JR BLOKRD0 JP ECL2 ;R01 JR BLOKRD0
.testFunc: .saveClustersOffset:
;!TEST SAVE CLUSTER AFTER READ ;[x] SAVE CLUSTER AFTER READ ;!TEST
LD E,(IY+_sFM.KnownCluster_L) LD E,(IY+_sFM.KnownCluster_L)
LD D,(IY+_sFM.KnownCluster_H) LD D,(IY+_sFM.KnownCluster_H)
LD A,D LD A,D
@ -225,13 +247,13 @@ BLOK_RD: PUSH BC
EX DE,HL EX DE,HL
JP BLOKRD2 JP BLOKRD2
;
.noOptimization_1: .noOptimization_1:
POP BC POP BC
.noOptimization_2: .noOptimization_2:
POP HL POP HL
POP DE POP DE
JP BLOKRD2 JP BLOKRD2
;
BLOKRD1: BLOKRD1:
PUSH BC PUSH BC
@ -245,7 +267,7 @@ BLOKRD2:
OR C OR C
JR NZ,BLOKRD1 JR NZ,BLOKRD1
;!TEST SAVE CLUSTER AFTER READ ;[x] SAVE CLUSTER AFTER READ ;!TEST
LD (IY+_sFM.KnownCluster_L),L LD (IY+_sFM.KnownCluster_L),L
LD (IY+_sFM.KnownCluster_H),H LD (IY+_sFM.KnownCluster_H),H
POP BC POP BC
@ -332,7 +354,7 @@ ECL1 AND A
BLOKWRC: BLOKWRC:
POP BC POP BC
;!TEST SAVE CLUSTER AFTER WRITE ;[x] SAVE CLUSTER AFTER WRITE ;!TEST
POP BC POP BC
; ;
BLOKWR0 POP BC BLOKWR0 POP BC
@ -358,10 +380,10 @@ BLOK_WR PUSH BC
LD H,(IY+_sFM.ST_CLUSTER+1) LD H,(IY+_sFM.ST_CLUSTER+1)
LD A,H LD A,H
OR L OR L
;!TEST SAVE CLUSTER AFTER WRITE ;[x] SAVE CLUSTER AFTER WRITE ;!TEST
;JR NZ,BLOKWR2 ;JR NZ,BLOKWR2
PUSH BC PUSH BC
JR NZ,.testFunc JR NZ,.saveClustersOffset
; ;
PUSH BC PUSH BC
CALL G_CLUST CALL G_CLUST
@ -376,14 +398,14 @@ BLOK_WR PUSH BC
POP BC POP BC
JP BLOKWR2 JP BLOKWR2
.testFunc: .saveClustersOffset:
;!TEST SAVE CLUSTER AFTER WRITE ;[x] SAVE CLUSTER AFTER WRITE ;!TEST
LD E,(IY+_sFM.KnownCluster_L) LD E,(IY+_sFM.KnownCluster_L)
LD D,(IY+_sFM.KnownCluster_H) LD D,(IY+_sFM.KnownCluster_H)
LD A,D LD A,D
OR E OR E
JR Z,BLOKWR2 JR Z,BLOKWR2
;
PUSH DE PUSH DE
PUSH HL PUSH HL
PUSH BC PUSH BC
@ -392,27 +414,26 @@ BLOK_WR PUSH BC
LD A,D LD A,D
OR E OR E
JR Z,.noOptimization_1 JR Z,.noOptimization_1
;
POP HL POP HL
AND A AND A
SBC HL,DE SBC HL,DE
JR C,.noOptimization_2 JR C,.noOptimization_2
;
LD C,L LD C,L
LD B,H LD B,H
POP HL POP HL
POP DE POP DE
;
EX DE,HL EX DE,HL
JP BLOKWR2 JP BLOKWR2
;
.noOptimization_1: .noOptimization_1:
POP BC POP BC
.noOptimization_2: .noOptimization_2:
POP HL POP HL
POP DE POP DE
JP BLOKWR2 JP BLOKWR2
;
BLOKWR1 PUSH BC BLOKWR1 PUSH BC
@ -430,7 +451,7 @@ BLOKWR2 LD A,B
OR C OR C
JR NZ,BLOKWR1 JR NZ,BLOKWR1
;!TEST SAVE CLUSTER AFTER WRITE ;[x] SAVE CLUSTER AFTER WRITE ;!TEST
LD (IY+_sFM.KnownCluster_L),L LD (IY+_sFM.KnownCluster_L),L
LD (IY+_sFM.KnownCluster_H),H LD (IY+_sFM.KnownCluster_H),H
POP BC POP BC
@ -735,7 +756,7 @@ WRITE: LD (R_POINT),HL
CALL SET_FM CALL SET_FM
JP C,PWERR1 JP C,PWERR1
LD A,(IY+_sFM.ACCESS_MODE) LD A,(IY+_sFM.ACCESS_MODE)
AND #01 AND FAT_ATTR.READ_ONLY
JR NZ,RD_ONLY JR NZ,RD_ONLY
SET 7,(IY+_sFM.ACCESS_MODE) SET 7,(IY+_sFM.ACCESS_MODE)
SET 5,(IY+_sFM.ATTRIBUT) SET 5,(IY+_sFM.ATTRIBUT)

View File

@ -822,7 +822,8 @@ ENVTEMP EQU #FE00
; +00 1 db ? ; „«¨­  ª®¬-áâப¨ ; +00 1 db ? ; „«¨­  ª®¬-áâப¨
; +01 127 ds ? ; <20> à ¬¥âàë ª®¬-áâப¨, § ª ­ç¨¢ ¥âáï ­ã«¥¬ ; +01 127 ds ? ; <20> à ¬¥âàë ª®¬-áâப¨, § ª ­ç¨¢ ¥âáï ­ã«¥¬
;///////////////////////////////////////////////////////////////////// ;/////////////////////////////////////////////////////////////////////
EXEC: INC B ;R03 EXEC: LD (CMDLINE),HL
INC B ;R03
DEC B ;R03 DEC B ;R03
JR Z,.VAR_1 ;R03 JR Z,.VAR_1 ;R03
DEC B ;R03 DEC B ;R03
@ -831,19 +832,19 @@ EXEC: INC B ;R03
SCF ;R03 SCF ;R03
RET ;R03 RET ;R03
; ;
.VAR_1: LD (CMDLINE),HL .VAR_1: ;LD (CMDLINE),HL
CALL CHECKPATH ;CHECK FOR '\' - SHORT/FULL NAME CALL CHECKPATH ;CHECK FOR '\' - SHORT/FULL NAME
LD HL,(CMDLINE) ;LD HL,(CMDLINE)
JR C,EXEC0_SHORT JR C,EXEC0_SHORT
.VAR_2: CALL EXEC_1 .VAR_2: CALL EXEC_1
SCF SCF
RET ; File not found - exit RET ; File not found - exit
; ¯à¨ ¢ë室¥ á ®è¨¡ª®©, ¢ ॣ¨áâॠ€ - ª®¤ ®è¨¡ª¨ ; ¯à¨ ¢ë室¥ á ®è¨¡ª®©, ¢ ॣ¨áâॠ€ - ª®¤ ®è¨¡ª¨
EXEC_1: LD (CMDLINE),HL EXEC_1: ;LD (CMDLINE),HL
LD A,#01 ; %7600000R = !FAT_ATTR ;!HARDCODE LD HL,(CMDLINE)
LD (F_FIRST.ACCESS),A LD A,FAT_ATTR.READ_ONLY
LD (OPEN.TMP),A
CALL GETWORD CALL GETWORD
RET C RET C
LD HL,TMPNAME LD HL,TMPNAME
@ -855,14 +856,20 @@ EXEC_1: LD (CMDLINE),HL
RET C RET C
_mINCTASK ;R08 _mINCTASK ;R08
CALL OPEN.FILE CALL OPEN.FILE
JR NC,.noError JR C,.Error
_mDECTASK ;R08
AND A
RET
;
.noError:
POP HL ; 㡨ࠥ¬ «¨è­¨©  ¤à¥á_¢®§¢à â _¢_¢ë§¢ ¢èãî_¯à®æ¥¤ãàã POP HL ; 㡨ࠥ¬ «¨è­¨©  ¤à¥á_¢®§¢à â _¢_¢ë§¢ ¢èãî_¯à®æ¥¤ãàã
JP EXEC02 ;R07 CONTINUE EXECUTING PROGRAM JP EXEC02 ;R07 CONTINUE EXECUTING PROGRAM
.Error: _mDECTASK ;R08
AND A
RET
; JR NC,.noError
; _mDECTASK ;R08
; AND A
; RET
; ;
; .noError:
; POP HL ; 㡨ࠥ¬ «¨è­¨©  ¤à¥á_¢®§¢à â _¢_¢ë§¢ ¢èãî_¯à®æ¥¤ãàã
; JP EXEC02 ;R07 CONTINUE EXECUTING PROGRAM
;SHORT NAME ;SHORT NAME
@ -871,7 +878,7 @@ EXEC0_SHORT:
CALL EXEC_1 CALL EXEC_1
RET C RET C
;FILE NO FOUND, SEARCHING IN PATH ;FILE NOT FOUND, SEARCHING IN PATH
; GET PATH AND ETC. ; GET PATH AND ETC.
LD HL,ENVPATH LD HL,ENVPATH
LD DE,ENVTEMP LD DE,ENVTEMP
@ -960,8 +967,10 @@ _RET_1: LD DE,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR) ; ¡ãä¥à LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR) ; ¡ãä¥à
LD A,(EXE_FM) ; ¤¥áªà. ä ©«  LD A,(EXE_FM) ; ¤¥áªà. ä ©« 
CALL READ ; ç⥭¨¥ ¨§ ä ©«  CALL READ ; ç⥭¨¥ ¨§ ä ©« 
LD A,(EXE_FM) ; ¤¥áªà. ä ©«  ;!TEST ;[x] no close source EXE file before start 08/11/23
CALL CLOSE ; § ªàëâì ä ©« ; LD A,(EXE_FM) ; ¤¥áªà. ä ©« 
; CALL CLOSE ; § ªàëâì ä ©«
;
JP _TST_PROC_2 JP _TST_PROC_2
RETFAR: LD B,DSS_Error.sys.UNEXPECTED_APP_TRMN RETFAR: LD B,DSS_Error.sys.UNEXPECTED_APP_TRMN
@ -1111,7 +1120,7 @@ FRC000: LD A,(DE)
LD HL,(CORE_BUFFERS.EXEBUFF.OFFCOD2) LD HL,(CORE_BUFFERS.EXEBUFF.OFFCOD2)
LD IX,(CORE_BUFFERS.EXEBUFF.OFFCOD1) LD IX,(CORE_BUFFERS.EXEBUFF.OFFCOD1)
LD B,Dss.Move_FP.FrStart LD B,high Dss.Move_FP.FrStart
LD A,(EXE_FM) LD A,(EXE_FM)
CALL MOVE_FP CALL MOVE_FP
;R02 ;R02
@ -1162,7 +1171,8 @@ LEAVE: LD A,B
LD SP,(EXSTACK) LD SP,(EXSTACK)
;[x] 25/10/23 close EXE FM ;[x] 25/10/23 close EXE FM
POP AF POP AF
CALL RES_FM ;CALL RES_FM
CALL CLOSE
_mDECTASK _mDECTASK
; ;
POP AF POP AF
@ -1198,9 +1208,7 @@ WAIT: LD A,(ERLEVEL)
RET RET
;///////////////////////////////////////////////////////////////////// ;/////////////////////////////////////////////////////////////////////
;
;!TODO § ¬¥­¨âì âãâ CALL CURRDIR ¨ CALL CURRDSK ­  ¤à㣮¥, ª®£¤  ¡ã¤¥â á®åà ­ïâìáï current dir
M_PSP: LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR) M_PSP: LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
DEC H DEC H
LD D,H LD D,H

View File

@ -21,28 +21,37 @@ RESERVED2 BLOCK 490,0
; ;
;File Manipulator (FM) ;File Manipulator (FM)
STRUCT _sFM ; 44 bytes STRUCT _sFM ; 47 bytes
; from FAT
.NAME: TEXT 8,{". "," "} ;+00 NAME .NAME: TEXT 8,{". "," "} ;+00 NAME
.EXT: TEXT 3,{" "," "} ;+08 EXT .EXT: TEXT 3,{" "," "} ;+08 EXT
.ATTRIBUT: BYTE #10 ;+11 ATTRIBUT .ATTRIBUT: BYTE #10 ;+11 ATTRIBUT
.KnownCluster_L: BYTE 0 ;+12 Œ« ¤è¨© ¡ ©â ­®¬¥à  ª« áâ¥à  ¤«ï ª®â®à®£® ¨§¢¥áâ­® ®â­®á¨â¥«ì­®¥ ᬥ饭¨¥ ¢­ãâਠ䠩«  .RESERVED_NT: BYTE #00 ;+12 RESERVED
.KnownCluster_H: BYTE 0 ;+13 ‘â à訩 ¡ ©â ­®¬¥à  ª« áâ¥à  ¤«ï ª®â®à®£® ¨§¢¥áâ­® ®â­®á¨â¥«ì­®¥ ᬥ饭¨¥ ¢­ãâਠ䠩«  .RESERVED_FAT32: BYTE #00 ;+13 RESERVED
.KnownOffset_L: BYTE 0 ;+14 Œ« ¤è¨© ¡ ©â ᬥ饭¨ï (¢ ª« áâ¥à å) ®â­®á¨â¥«ì­® ­ ç «  ä ©«  ¤«ï á®åà ­¥­­®£® ­®¬¥à  ª« áâ¥à . .CREATE_TIME_FAT32: WORD #0000 ;+14 RESERVED
.KnownOffset_H: BYTE 0 ;+15 ‘â à訩 ¡ ©â ᬥ饭¨ï (¢ ª« áâ¥à å) ®â­®á¨â¥«ì­® ­ ç «  ä ©«  ¤«ï á®åà ­¥­­®£® ­®¬¥à  ª« áâ¥à . .CREATE_DATE_FAT32: WORD #0000 ;+16 RESERVED
.RESERVED_X: BLOCK 6,0 ;+16 RESERVED .RESERVED_FAT32_1: WORD #0000 ;+18 RESERVED
.RESERVED_FAT32_2: WORD #0000 ;+20 RESERVED
.TIME: WORD #0000 ;+22 TIME .TIME: WORD #0000 ;+22 TIME
.DATE: WORD #0000 ;+24 DATE .DATE: WORD #0000 ;+24 DATE
.ST_CLUSTER: WORD #0000 ;+26 START CLUSTER .ST_CLUSTER: WORD #0000 ;+26 START CLUSTER
.F_SIZE: DWORD #0000 ;+28 SIZE FILE .F_SIZE: DWORD #00000000 ;+28 SIZE FILE
.F_POSITION: DWORD #0000 ;+32 FILE POSITION (FP) ; from Core
.F_POSITION: DWORD #00000000 ;+32 FILE POSITION (FP)
.DIR_CLUSTER: WORD #0000 ;+36 DIRECTORY CLUSTER .DIR_CLUSTER: WORD #0000 ;+36 DIRECTORY CLUSTER
.HANDLE: WORD #0000 ;+38 HANDLE NUMBER .HANDLE: WORD #0000 ;+38 HANDLE NUMBER
.DRIVE: BYTE #00 ;+40 DRIVE OR CURRENT .DRIVE: BYTE #00 ;+40 DRIVE OR CURRENT
.ACCESS_MODE: BYTE #00 ;+41 ACCESS MODE ¯à¨§­ ª ¨§¬¥­¥­¨ï ä ©«  .ACCESS_MODE: BYTE #00 ;+41 ACCESS MODE ¯à¨§­ ª ¨§¬¥­¥­¨ï ä ©« 
.TASK_NUM: BYTE #00 ;+42 TASK .TASK_NUM: BYTE #00 ;+42 TASK
.EMPTY: BYTE #00 ;+43 EMPTY ;.EMPTY: BYTE #00 ;+43 EMPTY
.KnownCluster_L: BYTE 0 ;+43 Œ« ¤è¨© ¡ ©â ­®¬¥à  ª« áâ¥à  ¤«ï ª®â®à®£® ¨§¢¥áâ­® ®â­®á¨â¥«ì­®¥ ᬥ饭¨¥ ¢­ãâਠ䠩« 
.KnownCluster_H: BYTE 0 ;+44 ‘â à訩 ¡ ©â ­®¬¥à  ª« áâ¥à  ¤«ï ª®â®à®£® ¨§¢¥áâ­® ®â­®á¨â¥«ì­®¥ ᬥ饭¨¥ ¢­ãâਠ䠩« 
.KnownOffset_L: BYTE 0 ;+45 Œ« ¤è¨© ¡ ©â ᬥ饭¨ï (¢ ª« áâ¥à å) ®â­®á¨â¥«ì­® ­ ç «  ä ©«  ¤«ï á®åà ­¥­­®£® ­®¬¥à  ª« áâ¥à .
.KnownOffset_H: BYTE 0 ;+46 ‘â à訩 ¡ ©â ᬥ饭¨ï (¢ ª« áâ¥à å) ®â­®á¨â¥«ì­® ­ ç «  ä ©«  ¤«ï á®åà ­¥­­®£® ­®¬¥à  ª« áâ¥à .
ENDS ENDS
; ;
;
; NAM EQU 0 ; LEN4 EQU 31 ; NAM EQU 0 ; LEN4 EQU 31
; EXT EQU 8 ; POS1 EQU 32 ; EXT EQU 8 ; POS1 EQU 32
; ATR EQU 11 ; POS2 EQU 33 ; ATR EQU 11 ; POS2 EQU 33

View File

@ -1 +1 @@
522 537

View File

@ -1 +1 @@
94 96

@ -1 +1 @@
Subproject commit 4c835d305fd5d1bc296039706d5e163c1f2224ca Subproject commit 8641b77d8ebe42ae042bb8df3902300e678048eb