mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 17:31:47 +03:00
...
This commit is contained in:
parent
fed7066721
commit
59a72bf084
112
DSS/DOS5.ASM
112
DSS/DOS5.ASM
@ -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
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
522
|
537
|
||||||
@ -1 +1 @@
|
|||||||
94
|
96
|
||||||
@ -1 +1 @@
|
|||||||
Subproject commit 4c835d305fd5d1bc296039706d5e163c1f2224ca
|
Subproject commit 8641b77d8ebe42ae042bb8df3902300e678048eb
|
||||||
Loading…
Reference in New Issue
Block a user