Speeeeeeeed))))

This commit is contained in:
Anatoliy Belyanskiy 2023-07-08 00:05:39 +10:00
parent aae08dd436
commit e542bc0bd3
10 changed files with 137 additions and 175 deletions

View File

@ -512,11 +512,7 @@ DEPLOY:
POP AF
OUT (SLOT3),A
;!TEST
;LD A,DRVPAGE
;CALL BANK
SET_PAGE_X DRVPAGE
;
SET_PAGE_X DRVPAGE
PUSH AF
LD HL,DRV_CONTENT

View File

@ -69,10 +69,9 @@ WATTRIB PUSH AF
; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00
; OUTPUT: A - FM
CREATE:
_mSavePath
AND #E7 ;R04
AND #E7 ;R04 %76A00SHR = !FAT_ATTR
LD (ACCESS),A
LD (PATH0),HL
CALL GETWORD
@ -90,7 +89,7 @@ CREATE:
; OUTPUT: A - FM
CREAT_N:
_mSavePath
AND #E7 ;R04 %76A00SHR
AND #E7 ;R04 %76A00SHR = !FAT_ATTR
LD (ACCESS),A
LD (PATH0),HL
CALL GETWORD
@ -152,17 +151,12 @@ DELETE LD DE,MASKARE
CALL SEARCH
RET C
DELFILE:
;!TEST
;LD A,DIRPAGE
;CALL BANK
SET_PAGE_X DIRPAGE
;
SET_PAGE_X DIRPAGE
;PUSH AF
LD (IX+_sFM.NAME),#E5
LD E,(IX+_sFM.ST_CLUSTER)
LD D,(IX+_sFM.ST_CLUSTER+1)
;POP AF
OUT (SLOT3),A
LD A,E
OR D
@ -183,7 +177,6 @@ SMALDEL CALL SAVEDIR
; INPUT: HL - "old_name.ext",#00 without simbols * ?
; DE - "new_name.ext",#00 without simbols * ?
RENAME PUSH DE
LD DE,MASKARE
CALL MASK
@ -198,7 +191,8 @@ RENAME PUSH DE
RET Z
PUSH DE
CALL LOADDIR
LD A,#33
;LD A,#33
LD A,FAT_ATTR.NoSYSnoVolID
CALL ASEARCH
POP HL
RET C
@ -213,18 +207,14 @@ RENAME PUSH DE
SCF
RET Z
PUSH IX
LD A,#33
LD A,FAT_ATTR.NoSYSnoVolID
CALL ASEARCH
POP IX
LD A,DSS_Error.sys.FILE_EXISTS
CCF
RET C
;!TEST
;LD A,DIRPAGE
;CALL BANK
SET_PAGE_X DIRPAGE
;
SET_PAGE_X DIRPAGE
LD HL,MASKARE
LD D,XH
@ -245,7 +235,7 @@ OPENATR:
LD DE,MASKARE
CALL MASK
RET C
LD A,#37 ;%00AD0SHR
LD A,FAT_ATTR.NoVolID
CALL ASEARCH
JR NC,OPENAT
RET
@ -338,11 +328,7 @@ CLOSE2: LD A,B
EX DE,HL
PUSH HL
;!TEST
;LD A,DIRPAGE
;CALL BANK
SET_PAGE_X DIRPAGE
;
SET_PAGE_X DIRPAGE
POP HL
LD BC,#0020
@ -362,11 +348,7 @@ HANDBUF: BLOCK HANDBUF.SIZE,0
WRT_HND:
;!TEST
;LD A,DIRPAGE
;CALL BANK
SET_PAGE_X DIRPAGE
;
SET_PAGE_X DIRPAGE
PUSH AF
LD IX,DIR
@ -453,6 +435,8 @@ GETN6: LD A,(HL)
DTABUF: DW #0000
CURHND: DW #0000
NO_NEXT: DB #00
.YES EQU 0
.NO EQU #FF
FNDMODE: DB #00
F_FIRST:
@ -474,12 +458,12 @@ F_FIRST:
RET C
LD HL,MASKARE
LD DE,(DTABUF)
LD BC,11
LD BC,11 ;!HARDCODE
LDIR
LD A,(ACCESS)
LD (DE),A
INC DE
FIND_S: LD BC,#0020
FIND_S: INC DE
LD BC,#0020
ADD IX,BC
LD (CURHND),IX
LD HL,HANDBUF+12
@ -492,15 +476,15 @@ FIND_S: LD BC,#0020
LD A,(FNDMODE)
OR A
JR NZ,FIND_M2
LD BC,11
LD BC,11 ;!HARDCODE
LDIR
LD A,#FF
LD A,NO_NEXT.NO
LD (NO_NEXT),A
XOR A
RET
FIND_M2:
CALL GETNAME
LD A,#FF
LD A,NO_NEXT.NO
LD (NO_NEXT),A
XOR A
RET
@ -511,54 +495,53 @@ F_NEXT: LD A,(NO_NEXT)
SCF
RET Z
LD (DTABUF),DE
EX DE,HL
LD DE,MASKARE
LD HL,(DTABUF)
LD BC,11
LD BC,11 ;!HARDCODE
LDIR
XOR A
LD (NO_NEXT),A
LD A,(HL)
PUSH HL
CALL NSEARCH
POP DE
EX AF,AF'
XOR A
LD (NO_NEXT),A
EX AF,AF'
RET C
INC DE
JP FIND_S
NSEARCH:
EX AF,AF'
;!TEST
;LD A,DIRPAGE
;CALL BANK
SET_PAGE_X DIRPAGE
;
SET_PAGE_X DIRPAGE
PUSH AF
EX AF,AF'
CPL
LD C,A
LD IX,(CURHND)
EXX
LD DE,0
EXX
LD IX,(CURHND)
LD A,XH
OR XL
JR Z,SEARCH3.error
JP SEARCH1
DSEARCH:
LD A,#10
LD A,FAT_ATTR.DIRECTORY
CALL ASEARCH
RET NC
LD A,4
LD A,DSS_Error.sys.PATH_NOT_FOUND
RET
SEARCH: LD A,#23 ;%00100011 ;!!!!! ă ‘ ©¬ ­  #27 - %0010'0111
SEARCH: LD A,FAT_ATTR.NoDIRnoVolID
ASEARCH:
EX AF,AF' ; 76ADLSHR
;!TEST
;LD A,DIRPAGE
;CALL BANK
SET_PAGE_X DIRPAGE
;
SET_PAGE_X DIRPAGE
PUSH AF
EX AF,AF'
CPL
@ -571,7 +554,7 @@ SEARCH1:
LD A,(IX+00)
OR A
JR Z,SEARCH4
CP #E5
CP #E5 ;!HARDCODE #E5 - § ¯¨áì ¢ ¤¨à¥ªâ®à¨¨ ᢮¡®¤­ , â ª ª ª ä ©«/¤¨à¥ªâ®à¨ï ¡ë«¨ 㤠«¥­ë
JR Z,SEARCH3
LD A,(IX+11)
AND C
@ -606,9 +589,14 @@ SEARCH3:
EXX
INC DE
EXX
LD DE,#0020
LD DE,#0020 ;!HARDCODE
ADD IX,DE
JR NC,SEARCH1
.error: POP AF
OUT (SLOT3),A
LD A,DSS_Error.sys.TOO_MANY_FILES_IN_DIR
SCF
RET
SEARCH4:
POP AF
OUT (SLOT3),A
@ -636,7 +624,7 @@ GETWORD:
RET
.DIR_NAME:
LD A,#00
XOR A
LD (DE),A
PUSH HL
LD HL,TMPNAME
@ -665,8 +653,6 @@ TMPNAME: DB ' ',#00 ; 12
;!TODO ᤥ« âì ¤«ï ª ¦¤®£® ¤à ©¢  § ¯®¬¨­ ­¨¥ ⥪ã饩 ¤¨à४â®à¨¨, ¯®ª  âãâ § £«ã誠
; RestoreDIR:
;
CHNDISK:
CALL OPENDSK
;????? R10
@ -693,6 +679,13 @@ CHNDISK:
;
;????? R10
OPENDSK:
;!TEST
LD C,A
LD A,(FatBuffer.DRIVE)
CP C
JR Z,.exit
LD A,C
;
PUSH AF
LD C,Dss.DRV.Open
RST ToDSS.DRV
@ -702,7 +695,7 @@ OPENDSK:
LD (FatBuffer.DRIVE),A
CALL RD_BPB
RET C
LD A,(LDRIVE)
.exit: LD A,(LDRIVE)
AND A
RET
.error: CP DSS_Error.sys.INVALID_DRIVE
@ -712,12 +705,14 @@ OPENDSK:
RET
;
OPENDIR XOR A
OPENDIR:
XOR A
CALL SET_FM
LD A,(HL)
OR A
JP NZ,SUBDIR
REROOT1 LD DE,0
REROOT1:
LD DE,0
LD (IY+_sFM.ST_CLUSTER),E
LD (IY+_sFM.ST_CLUSTER+1),D
CALL LOADDIR
@ -728,34 +723,37 @@ REROOT1 LD DE,0
AND A
RET
SUBDIR CP "."
SUBDIR: CP "."
JR NZ,SUBDIR2
LD A,(IY+_sFM.ST_CLUSTER) ;R05
OR (IY+_sFM.ST_CLUSTER+1) ;R05
LD A,(IY+_sFM.ST_CLUSTER) ;R05 ;!FIXIT ¬®¦­® ¯¥à¥¤¥« âì ­  ¯àï¬ë¥ áá뫪¨ ¡¥§ IY
OR (IY+_sFM.ST_CLUSTER+1) ;R05 ;!FIXIT ¬®¦­® ¯¥à¥¤¥« âì ­  ¯àï¬ë¥ áá뫪¨ ¡¥§ IY
JR NZ,SUDI1 ;R05
INC HL ;R05
LD A,(HL) ;R05
OR A ;R05
DEC HL ;R05
JR Z,REROOT1 ;R05
SUDI1 EXX
SUDI1: EXX
LD HL,MASKARE
LD DE,MASKARE+1
LD BC,10
LD (HL),#20
LD BC,10 ;!HARDCODE
LD (HL),' '
LDIR
EXX
LD DE,MASKARE
SUBDIR0 LDI
SUBDIR0:
LDI
LD A,(HL)
OR A
JR NZ,SUBDIR0
JR SUBDIR3
SUBDIR2 LD DE,MASKARE
SUBDIR2:
LD DE,MASKARE
CALL MASK
RET C
SUBDIR3 CALL FINDDIR
SUBDIR3:
CALL FINDDIR
RET C
LD (IY+_sFM.ST_CLUSTER),E
LD (IY+_sFM.ST_CLUSTER+1),D
@ -822,7 +820,7 @@ FINDDIR:
EX DE,HL
; JR NZ,ROTZ
JR NZ,MM3
JR MM2_5
JP MM2_5
; INC HL
; ROTZ LD (HL),0
; JP IT_DIR
@ -1588,7 +1586,7 @@ MKDIR:
RET C
CALL LOADDIR
CALL DSEARCH
LD A,15
LD A,DSS_Error.sys.DIR_EXISTS
CCF
RET C
CALL G_CLUST
@ -1656,11 +1654,9 @@ MKD03 INC HL
DJNZ MKD03
INC HL
PUSH HL
;!TEST
;LD A,DIRPAGE
;CALL BANK
SET_PAGE_X DIRPAGE
;
SET_PAGE_X DIRPAGE
POP HL
PUSH AF
LD A,(DIR)

View File

@ -381,11 +381,9 @@ S4C02 INC HL
; JP C,RDERR1
LD HL,0
LD (FATCASH),HL
;!TEST
;LD A,FATPAGE
;CALL BANK
SET_PAGE_X FATPAGE
;
SET_PAGE_X FATPAGE
PUSH AF
XOR A
CALL RE_FAT
@ -459,12 +457,8 @@ SAVE_CUR_PATH
PUSH DE
PUSH BC
PUSH AF
;
;!TEST
;LD A,ENVPAGE
;CALL BANK
SET_PAGE_X ENVPAGE
;
SET_PAGE_X ENVPAGE
PUSH AF
CALL CURRDSK
@ -501,13 +495,8 @@ BACK_CUR_PATH:
PUSH DE
PUSH BC
PUSH AF
;
;!TEST
;LD A,ENVPAGE
;CALL BANK
SET_PAGE_X ENVPAGE
;
SET_PAGE_X ENVPAGE
PUSH AF
LD HL,TMP_CURDIR

View File

@ -1,11 +1,17 @@
;
MACRO SET_PAGE_X new_page
LD A,(BANKTBL+new_page)
LD B,A
LD C,SLOT3
IN A,(SLOT3)
OUT (C),B
IF OLD_SET_BANK
LD A,new_page
CALL BANK
ELSE
LD A,(BANKTBL+new_page)
LD B,A
LD C,SLOT3
IN A,(SLOT3)
OUT (C),B
ENDIF
ENDM
;

View File

@ -28,12 +28,7 @@ ENVIRON:
RET
INITENV:
;!TEST
;LD A,ENVPAGE
;CALL BANK
SET_PAGE_X ENVPAGE
;
SET_PAGE_X ENVPAGE
PUSH AF
;!TEST
LD A,(BOOTDRV)
@ -60,11 +55,9 @@ INITENV:
READENV:
PUSH HL
;!TEST
;LD A,ENVPAGE
;CALL BANK
SET_PAGE_X ENVPAGE
;
SET_PAGE_X ENVPAGE
LD H,A
LD C,SLOT3
IN L,(C)
@ -95,11 +88,7 @@ READENV:
GETENV: PUSH DE
CALL ENV_EX
;!TEST
;LD A,ENVPAGE
;CALL BANK
SET_PAGE_X ENVPAGE
;
SET_PAGE_X ENVPAGE
EX AF,AF'
CALL F_ENV
@ -121,13 +110,10 @@ GE_1: EX AF,AF'
RET
SETENV: CALL ENV_EX
;!TEST
;LD A,ENVPAGE
;CALL BANK
SET_PAGE_X ENVPAGE
;
SET_PAGE_X ENVPAGE
PUSH AF
;
CALL F_ENV
JR NC,PENV
XOR A

View File

@ -559,12 +559,8 @@ CHECKPATH: ; !TODO ᤥ
RELATIVE_DIR EQU 0
ABSOLUTE_DIR EQU 1
FINDPATH
;!TEST
;LD A,ENVPAGE
;CALL BANK
SET_PAGE_X ENVPAGE
;
FINDPATH:
SET_PAGE_X ENVPAGE
PUSH AF
CALL CURRDSK
@ -579,7 +575,7 @@ FINDPATH
CALL MAKE_PATH_ARRAY
LD HL,PATH_PNT_ARRAY
NEXTPATHI
NEXTPATHI:
LD E,(HL)
INC HL
LD D,(HL)
@ -602,20 +598,20 @@ NEXTPATHI
CALL TST_EXT
JR C,BADPATH
CALL SEARCH
BADPATH
BADPATH:
POP BC
POP HL
JR NC,PATHFOUND
DJNZ NEXTPATHI
SCF
PATHFOUND
PATHFOUND:
POP BC
LD A,B
OUT (SLOT3),A
; LD A,DSS_Error.sys.PATH_NOT_FOUND ;????? ­ã¦¥­ «¨ âãâ ª®¤ ®è¨¡ª¨?
RET
GOTO_CURDIR
GOTO_CURDIR:
PUSH HL
LD HL,TMP_CURDIR
;
@ -625,11 +621,11 @@ GOTO_CURDIR
POP HL
RET
MAKE_PATH_ARRAY
MAKE_PATH_ARRAY:
LD HL,PATH_PNT_ARRAY-1 ;R04 -1
LD DE,ENVTEMP-1
LD B,#00
NEXTAR LD (HL),C ;R04
NEXTAR: LD (HL),C ;R04
INC HL ;R04
XOR A
LD (DE),A
@ -642,12 +638,12 @@ NEXTAR LD (HL),C ;R04
;R04 LD (HL),C
;R04 INC HL
INC B
NEXTRT LD A,(DE)
NEXTRT: LD A,(DE)
CP #5C ;\
JR NZ,NEXTCH
NEXTDR SET ABSOLUTE_DIR,C
NEXTRL ;SET RELATIVE_DIR,C
NEXTCH LD A,(DE)
NEXTDR: SET ABSOLUTE_DIR,C
NEXTRL: ;SET RELATIVE_DIR,C ;!TODO ????
NEXTCH: LD A,(DE)
CP ";"
JR Z,NEXTAR
INC DE
@ -724,9 +720,8 @@ EXEC1:
EXEC0_SHORT:
;SHORT NAME
; TRY TO FIND IN CURRENT DIRECTORY
;
; LD (CMDLINE),HL
LD A,#01
LD A,#01 ; %7600000R = !FAT_ATTR
LD (ACCESS),A
CALL GETWORD
RET C

View File

@ -62,12 +62,8 @@ R_F_FAT EX DE,HL
RET C
EXX
;!TEST
;LD A,FATPAGE
;CALL BANK
SET_PAGE_X FATPAGE
;
SET_PAGE_X FATPAGE
EXX
PUSH HL
PUSH AF
@ -223,11 +219,9 @@ W_T_FAT PUSH DE
LD A,10
RET C
EXX
;!TEST
;LD A,FATPAGE
;CALL BANK
SET_PAGE_X FATPAGE
;
SET_PAGE_X FATPAGE
EXX
PUSH HL
PUSH AF
@ -349,11 +343,8 @@ RE_FAT PUSH HL
POP HL
RET
WR_FAT EXX
;!TEST
;LD A,FATPAGE
;CALL BANK
SET_PAGE_X FATPAGE
WR_FAT: EXX
SET_PAGE_X FATPAGE
;
EXX
PUSH AF
@ -362,7 +353,8 @@ WR_FAT EXX
OUT (SLOT3),A
RET
WR_FAT_ LD HL,(FATCASH)
WR_FAT_:
LD HL,(FATCASH)
LD H,0
LD (FATCASH),HL
ADD HL,HL
@ -387,7 +379,8 @@ WR_FAT_ LD HL,(FATCASH)
SBC HL,DE
JP C,FATERR
LD A,L
WALLFAT LD H,B
WALLFAT:
LD H,B
LD L,C
LD DE,(FatBuffer.FAT_FRM)
ADD HL,DE
@ -472,8 +465,8 @@ FATERR: POP HL
; SCF
RET
FATCASH DW #0000
MAX_CLU DW #0FF0
FATCASH: WORD #0000
MAX_CLU: WORD #0FF0
;//MODULE: FAT_X
;[END]

View File

@ -191,7 +191,7 @@ WINCOPY: AND A
PUSH AF ;R02
XOR A
EX AF,AF' ;R03
LD A,B ;R03 ;!TEST
LD A,B ;R03
EX AF,AF' ;R03
LD C,BIOS.WIN_COPY
DI ;R02
@ -213,7 +213,7 @@ WINREST: AND A
PUSH AF ;R02
XOR A
EX AF,AF' ;R03
LD A,B ;R03 ;!TEST
LD A,B ;R03
EX AF,AF' ;R03
DI ;R02
LD C,BIOS.WIN_RESTORE
@ -269,7 +269,7 @@ SCROLL: DJNZ SCR_DW
SCR_DW: DJNZ SCR_ERR
LD B,A
LD C,L
PUSH BC ;R03 ;!TEST
PUSH BC ;R03
PUSH DE
PUSH HL
LD XH,D
@ -281,7 +281,7 @@ SCR_DW: DJNZ SCR_ERR
RST ToBIOS
POP HL
POP DE
POP BC ;R03 ;!TEST
POP BC ;R03
XOR A
CP B
JR Z,SCROLL.print
@ -561,7 +561,7 @@ SVTEXT1 LD (SVHL1),HL
LD DE,#0000
EX AF,AF' ;R03
LD A,(BANKTBL+TXTPAGE)
LD B,A ;!TEST
LD B,A
EX AF,AF' ;R03
LD C,BIOS.WIN_COPY
XOR A
@ -591,7 +591,7 @@ SVHL1+1:
LD DE,#0000
EX AF,AF' ;R03
LD A,(BANKTBL+TXTPAGE)
LD B,A ;!TEST
LD B,A
EX AF,AF' ;R03
LD C,BIOS.WIN_RESTORE
XOR A

View File

@ -15,7 +15,8 @@
;
;-------------------[MEMORY]-------------------------;
DEFINE USING_MEMPAGES 4
DEFINE OLD_SET_BANK 0
;!FIXIT ᤥ« âì ⨯  DIRPAGE EQU 0 + BANKTBL ¨ ã¯à®áâ¨âì BANK
DIRPAGE EQU 0
FATPAGE EQU 1

@ -1 +1 @@
Subproject commit 3fa91af2db4f96a96f3342d7291deb4d63a90591
Subproject commit d3626cafdbc4a718c1bb02da6d4c3dc806875896