mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-16 01:41:17 +03:00
-bug: CLOSE_FN могла генерировать потерянные кластеры и запарывать файлы. И куча мелких правок заодно.
This commit is contained in:
parent
c37fdf343c
commit
34ee5a9db8
@ -1,3 +1,12 @@
|
||||
!FIXIT
|
||||
[ ] D:\>copy dss\system.dos c:\system.dos
|
||||
Can't open source file
|
||||
[ ] E:\BIN\MENU>c:\dss
|
||||
çâ®-â® ¯à® § ¯®«¥®áâì ¤¨à¥ªâ®à¨¨
|
||||
[ ] C:\????? ¨«¨ ?????
|
||||
¨á¯®«ï¥âáï ª ª ª®¬ ¤
|
||||
|
||||
-----------------------------------------------------------------------------------------------------------------------------------------------
|
||||
!TODO
|
||||
‚ ¦®¥:
|
||||
[ ] ¯¥à¥¤ ç «®¬ à ¡®âë «î¡®© ¯à®æ¥¤ãàë § ¯¨á¨/çâ¥¨ï ¤à ©¢ ãáâ ¢«¨¢ âì ä« £, ç⮡ ¥ ¡ë«® ¯®¢â®à®£® ¢ë§®¢ (¨§ ¯à¥àë¢ ¨ï, ¯à¨¬¥à)
|
||||
@ -8,7 +17,7 @@
|
||||
|
||||
‚®®¡é¥ ¥ ¢ ¦®¥:
|
||||
[ ] ¨á¯à ¢¨âì ¢ë室 ¨§ äãªæ¨¨ #41 ¯à¨ ¢®§¬®¦®¬ 㢥«¨ç¥¨¨ ®¬¥à â ᪨ 1 ¯à¨ 255
|
||||
-------------------------------
|
||||
-----------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
DSS 1.70.2
|
||||
ˆ§¬¥¥¨ï ¯®á«¥ ¢¥àᨨ 1.70
|
||||
|
||||
400
DSS/DOS5.ASM
400
DSS/DOS5.ASM
@ -81,12 +81,12 @@ ATTRIB: ;!TEST Current Dir ;[x] 15/10/23
|
||||
LD (OPEN.TMP),A ; à ¡. ï祩ª (§¤¥áì âਡãâ § ¯¨á¨)
|
||||
CALL GETWORD ; â¥áâ ¤®¯ãáâ. ¨¬ï ¨ áâà. ¤¨áª
|
||||
RET C
|
||||
LD HL,TMPNAME
|
||||
LD DE,MASKARE
|
||||
; LD HL,TMPNAME
|
||||
; LD DE,MASKARE
|
||||
CALL MASK
|
||||
RET C
|
||||
LD A,FAT_ATTR.NoVolID
|
||||
CALL SEARCH.ASEARCH
|
||||
CALL SEARCH.Custom
|
||||
; JR NC,OPENAT ; ¯®¨áª ᢮¡. ¤¥áªà¨¯â®à
|
||||
; ; § ¯¨áì ¥ ©¤¥
|
||||
; RET
|
||||
@ -106,7 +106,7 @@ CREATE: ;!TEST Current Dir ;[x] 15/10/23
|
||||
;
|
||||
CALL .Prepare
|
||||
RET C
|
||||
CALL SEARCH
|
||||
CALL SEARCH.File
|
||||
CALL NC,DELETE ;FILE EXIST RECREAT
|
||||
JR .DO
|
||||
;
|
||||
@ -120,7 +120,7 @@ CREATE: ;!TEST Current Dir ;[x] 15/10/23
|
||||
;
|
||||
CALL .Prepare
|
||||
RET C
|
||||
CALL SEARCH
|
||||
CALL SEARCH.File
|
||||
LD A,DSS_Error.sys.FILE_EXISTS
|
||||
CCF
|
||||
RET C
|
||||
@ -158,19 +158,21 @@ CREATE: ;!TEST Current Dir ;[x] 15/10/23
|
||||
DJNZ .loop2
|
||||
;
|
||||
CALL WRT_HND
|
||||
CALL SAVEDIR
|
||||
RET C
|
||||
;CALL SAVEDIR
|
||||
.PATH0+1:
|
||||
LD HL,0
|
||||
XOR A
|
||||
JP OPEN ;R08
|
||||
LD (OPEN.TMP),A
|
||||
JP OPEN.FILE ;R08
|
||||
.Prepare:
|
||||
AND #E7 ;R04 %76A00SHR = !FAT_ATTR
|
||||
AND #E7 ;R04 %76A00SHR = !FAT_ATTR ;!HARDCODE
|
||||
LD (.TMP),A
|
||||
LD (.PATH0),HL
|
||||
CALL GETWORD
|
||||
RET C
|
||||
LD HL,TMPNAME
|
||||
LD DE,MASKARE
|
||||
; LD HL,TMPNAME
|
||||
; LD DE,MASKARE
|
||||
JP MASK
|
||||
CREAT_N EQU CREATE.NEW
|
||||
|
||||
@ -187,8 +189,8 @@ DEL_FN: ;!TEST
|
||||
;
|
||||
CALL GETWORD ; â¥áâ ¤®¯ãáâ. ¨¬ï ¨ áâà. ¤¨áª
|
||||
RET C
|
||||
LD HL,TMPNAME
|
||||
LD DE,MASKARE
|
||||
; LD HL,TMPNAME
|
||||
; LD DE,MASKARE
|
||||
CALL MASK
|
||||
RET C
|
||||
;
|
||||
@ -203,7 +205,7 @@ DEL_FN: ;!TEST
|
||||
SCF
|
||||
RET Z
|
||||
CALL LOADDIR
|
||||
CALL SEARCH
|
||||
CALL SEARCH.File
|
||||
RET C
|
||||
;JP DELETE
|
||||
; ¯®¬¥â¨âì § ¯¨áì ª ª "㤠«¥ ï"
|
||||
@ -239,19 +241,17 @@ DELETE: SET_PAGE_X DIRPAGE
|
||||
; INPUT: HL - "old_name.ext",#00 without simbols * ?
|
||||
; DE - "new_name.ext",#00 without simbols * ?
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
RENAME:
|
||||
;!TEST Current Dir ;[x] 15/10/23
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
CALL DIR_PATH_CHECK.forceCheck
|
||||
POP DE
|
||||
POP HL
|
||||
RET C
|
||||
;
|
||||
|
||||
RENAME: ;!TEST Current Dir ;[x] 15/10/23
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
CALL DIR_PATH_CHECK.forceCheck
|
||||
POP DE
|
||||
POP HL
|
||||
RET C
|
||||
;
|
||||
PUSH DE
|
||||
LD DE,MASKARE
|
||||
CALL MASK
|
||||
;LD DE,MASKARE
|
||||
CALL MASK.name
|
||||
POP DE
|
||||
RET C
|
||||
LD HL,MASKARE
|
||||
@ -265,11 +265,11 @@ RENAME:
|
||||
CALL LOADDIR ; ¯à®ç¨â âì ᯨ᮪ ª â «®£
|
||||
;LD A,#33
|
||||
LD A,FAT_ATTR.NoSYSnoVolID
|
||||
CALL SEARCH.ASEARCH ; ŻŽ¨áŞ § Ż¨á¨ ˘ ᯨ᪼ ¤¨áŞ
|
||||
CALL SEARCH.Custom ; ŻŽ¨áŞ § Ż¨á¨ ˘ ᯨ᪼ ¤¨áŞ
|
||||
POP HL
|
||||
RET C
|
||||
LD DE,MASKARE
|
||||
CALL MASK
|
||||
;LD DE,MASKARE
|
||||
CALL MASK.name
|
||||
RET C
|
||||
LD HL,MASKARE
|
||||
LD BC,11
|
||||
@ -280,7 +280,7 @@ RENAME:
|
||||
RET Z
|
||||
PUSH IX
|
||||
LD A,FAT_ATTR.NoSYSnoVolID
|
||||
CALL SEARCH.ASEARCH ; ŻŽ¨áŞ § Ż¨á¨ ˘ ᯨ᪼ ¤¨áŞ
|
||||
CALL SEARCH.Custom ; ŻŽ¨áŞ § Ż¨á¨ ˘ ᯨ᪼ ¤¨áŞ
|
||||
POP IX
|
||||
LD A,DSS_Error.sys.FILE_EXISTS
|
||||
CCF
|
||||
@ -304,8 +304,8 @@ RENAME:
|
||||
; A=0 ç⥨¥/§ ¯¨áì
|
||||
; A=1 ç⥨¥
|
||||
; A=2 § ¯¨áì
|
||||
; ˘ë厤: A - ¤ĽáŞŕ¨ŻâŽŕ ä ŠŤ , ĽáŤ¨ CF=0
|
||||
; ŞŽ¤ Žč¨ĄŞ¨, ĽáŤ¨ CF=1
|
||||
; ˘ë厤: CF=0, A - ¤ĽáŞŕ¨ŻâŽŕ ä ŠŤ .
|
||||
; CF=1, A - ŞŽ¤ Žč¨ĄŞ¨.
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
OPEN_FN:;!TEST Current Dir ;[x] 15/10/23
|
||||
LD C,A
|
||||
@ -322,22 +322,14 @@ OPEN_FN:;!TEST Current Dir ;[x] 15/10/23
|
||||
OPEN: LD (.TMP),A ; enter point for CREATE
|
||||
CALL GETWORD
|
||||
RET C
|
||||
LD HL,TMPNAME
|
||||
LD DE,MASKARE
|
||||
; LD HL,TMPNAME
|
||||
; LD DE,MASKARE
|
||||
CALL MASK
|
||||
RET C
|
||||
.FILE: CALL SEARCH ; enter point for EXEC
|
||||
.FILE: CALL SEARCH.File ; enter point for EXEC
|
||||
RET C
|
||||
;R02
|
||||
.FM: ; enter point for ATTRIB
|
||||
; [ ] 13/11/2023 -bug with bad clusters ;!TEST
|
||||
; XOR A
|
||||
; CALL SET_FM
|
||||
; LD C,(IY+_sFM.ST_CLUSTER)
|
||||
; LD B,(IY+_sFM.ST_CLUSTER+1)
|
||||
; PUSH BC
|
||||
;
|
||||
CALL GET_FM
|
||||
.FM: CALL GET_FM ; enter point for ATTRIB
|
||||
RET C
|
||||
LD A,C
|
||||
EX AF,AF'
|
||||
@ -396,25 +388,28 @@ CLOSE: LD (.TMP),A
|
||||
RET NZ
|
||||
BIT 7,(IY+_sFM.ACCESS_MODE)
|
||||
JR Z,.NOTMODF
|
||||
LD D,(IY+_sFM.DIR_CLUSTER)
|
||||
LD E,(IY+_sFM.DIR_CLUSTER+1)
|
||||
LD E,(IY+_sFM.DIR_CLUSTER)
|
||||
LD D,(IY+_sFM.DIR_CLUSTER+1)
|
||||
PUSH DE
|
||||
; [ ] 13/11/2023 -bug with bad clusters ;!TEST
|
||||
; [ ] 15/11/2023 -bug with bad clusters ;!TEST
|
||||
LD A,(IY+_sFM.DRIVE)
|
||||
CALL OPENDSK
|
||||
IF TEST_FEATURE
|
||||
CALL SET_DIR
|
||||
ENDIF
|
||||
;
|
||||
XOR A
|
||||
CALL SET_FM
|
||||
POP DE
|
||||
LD (IY+_sFM.DIR_CLUSTER),D
|
||||
LD (IY+_sFM.DIR_CLUSTER+1),E
|
||||
LD (IY+_sFM.DIR_CLUSTER),E
|
||||
LD (IY+_sFM.DIR_CLUSTER+1),D
|
||||
; [ ] 15/11/2023 -bug with bad clusters ;!TEST
|
||||
LD (IY+_sFM.ST_CLUSTER),E
|
||||
LD (IY+_sFM.ST_CLUSTER+1),D
|
||||
;
|
||||
CALL LOADDIR
|
||||
.TMP+1: LD A,0
|
||||
CALL SET_FM
|
||||
;
|
||||
SET_PAGE_X DIRPAGE
|
||||
;
|
||||
;TEST 9/11/23
|
||||
; LD HL,DIR
|
||||
; LD DE,#0020
|
||||
@ -434,12 +429,10 @@ CLOSE: LD (.TMP),A
|
||||
LD D,YH
|
||||
LD E,YL
|
||||
EX DE,HL
|
||||
PUSH HL
|
||||
|
||||
SET_PAGE_X DIRPAGE
|
||||
|
||||
POP HL
|
||||
LD BC,#0020
|
||||
;PUSH HL
|
||||
;SET_PAGE_X DIRPAGE
|
||||
;POP HL
|
||||
LD BC,#0020 ;!HARDCODE
|
||||
LDIR
|
||||
OUT (SLOT3),A
|
||||
CALL SAVEDIR
|
||||
@ -484,12 +477,12 @@ F_FIRST:
|
||||
POP HL
|
||||
CALL GETWORD
|
||||
RET C
|
||||
LD HL,TMPNAME
|
||||
LD DE,MASKARE
|
||||
; LD HL,TMPNAME
|
||||
; LD DE,MASKARE
|
||||
CALL MASK
|
||||
RET C
|
||||
LD A,(.TMP)
|
||||
CALL SEARCH.ASEARCH
|
||||
CALL SEARCH.Custom
|
||||
RET C
|
||||
LD HL,MASKARE
|
||||
.DTABUF+1:
|
||||
@ -573,8 +566,8 @@ F_NEXT:
|
||||
LD IX,0
|
||||
LD A,XH
|
||||
OR XL
|
||||
JP Z,SEARCH.error
|
||||
JP SEARCH.SEARCH1
|
||||
JP Z,SEARCH.error_too_many_files
|
||||
JP SEARCH.loop
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
;
|
||||
@ -926,18 +919,18 @@ MKDIR: ;!TEST Current Dir ;[x] 15/10/23
|
||||
;
|
||||
.START: CALL GETWORD ; â¥áâ ¤®¯ãáâ. ¨¬ï ¨ áâà. ¤¨áª
|
||||
RET C
|
||||
LD HL,TMPNAME ; 8.3 ¨Źď
|
||||
LD DE,MASKARE ; ĄăäĽŕ ¨ŹĽ¨ 11 ᨏ˘. äŽŕŹ â
|
||||
;LD HL,TMPNAME ; 8.3 ¨Źď
|
||||
;LD DE,MASKARE ; ĄăäĽŕ ¨ŹĽ¨ 11 ᨏ˘. äŽŕŹ â
|
||||
CALL MASK ; ¯à¥®¡à. ¨¬ï 8.3 -> 11 ä®à¬ â
|
||||
RET C
|
||||
;!TEST optimization à ¥¥ GETWORD 㦥 § £à㧨« ¤¨à¥ªâ®à¨î
|
||||
;CALL LOADDIR ; ¯à®ç¨â âì ᯨ᮪ ª â «®£
|
||||
;
|
||||
CALL DSEARCH ; ŻŽ¨áŞ § Ż¨á¨ Ş â ŤŽŁ ˘ ᯨ᪼ ¤¨áŞ
|
||||
CALL SEARCH.Dir ; ŻŽ¨áŞ § Ż¨á¨ Ş â ŤŽŁ ˘ ᯨ᪼ ¤¨áŞ
|
||||
LD A,DSS_Error.sys.DIR_EXISTS
|
||||
CCF
|
||||
RET C ; ª â «®£ ©¤¥
|
||||
|
||||
;
|
||||
CALL G_CLUST
|
||||
RET C
|
||||
PUSH HL
|
||||
@ -953,11 +946,11 @@ MKDIR: ;!TEST Current Dir ;[x] 15/10/23
|
||||
LD (HL),A
|
||||
INC HL
|
||||
LD BC,#0A00 ; b=áç¥â稪
|
||||
|
||||
;
|
||||
.loop1: LD (HL),C
|
||||
INC HL
|
||||
DJNZ .loop1
|
||||
|
||||
;
|
||||
PUSH HL
|
||||
CALL SYSTIME ; ã§ âì ⥪. ¤ âã ¨ ¢à¥¬ï
|
||||
CALL MK_TIME ; § ª®¤¨à®¢ âì ¢à¥¬ï/¤ âã
|
||||
@ -977,21 +970,21 @@ MKDIR: ;!TEST Current Dir ;[x] 15/10/23
|
||||
LD (HL),D
|
||||
INC HL
|
||||
LD BC,#0400 ; b=áç¥â稪
|
||||
|
||||
;
|
||||
.loop2: LD (HL),C
|
||||
INC HL
|
||||
DJNZ .loop2
|
||||
|
||||
;
|
||||
CALL WRT_HND ; ᪮¯¨à. ®¢ãî § ¯¨áì ¢ ᯨ᮪ ¤¨áª (ª â «®£ )
|
||||
CALL SAVEDIR ; áĄŕŽá¨âě ŞĽč Ş â ŤŽŁ ¤¨áŞ
|
||||
;CALL SAVEDIR ; ¨ áĄŕŽá¨âě ŞĽč Ş â ŤŽŁ ¤¨áŞ
|
||||
LD HL,CORE_BUFFERS.SECBUF ; ¡ãä¥à
|
||||
LD (HL),"." ; § ¯¨áì ⥪. ª â «®£
|
||||
LD BC,10*256 + ' ' ; b=áç¥â稪, c=¯à®¡¥«
|
||||
|
||||
;
|
||||
.loop3: INC HL
|
||||
LD (HL),C
|
||||
DJNZ .loop3
|
||||
|
||||
;
|
||||
INC HL
|
||||
LD DE,HANDBUF+11 ; ï祩ª âਡã⮢ ä ©«
|
||||
EX DE,HL
|
||||
@ -1005,23 +998,14 @@ MKDIR: ;!TEST Current Dir ;[x] 15/10/23
|
||||
.MKD03: INC HL
|
||||
LD (HL),C
|
||||
DJNZ .MKD03
|
||||
|
||||
;
|
||||
INC HL
|
||||
|
||||
; IF OLD_SET_BANK
|
||||
; PUSH HL
|
||||
; ENDIF
|
||||
|
||||
SET_PAGE_X DIRPAGE
|
||||
|
||||
; IF OLD_SET_BANK
|
||||
; POP HL
|
||||
; ENDIF
|
||||
|
||||
PUSH AF
|
||||
LD A,(DIR)
|
||||
;
|
||||
LD A,(DIRPAGE.buffer)
|
||||
CP "."
|
||||
LD DE,DIR+11 ; âਥăâë § ݍá¨
|
||||
LD DE,DIRPAGE.buffer+11 ; âਥăâë § Ż¨á¨ ;!HARDCODE
|
||||
JP Z,.MKD04
|
||||
LD IX,HANDBUF
|
||||
XOR A
|
||||
@ -1033,7 +1017,7 @@ MKDIR: ;!TEST Current Dir ;[x] 15/10/23
|
||||
LDIR
|
||||
POP AF
|
||||
OUT (SLOT3),A
|
||||
|
||||
;
|
||||
EX DE,HL
|
||||
LD D,H
|
||||
LD E,L
|
||||
@ -1041,7 +1025,7 @@ MKDIR: ;!TEST Current Dir ;[x] 15/10/23
|
||||
LD (HL),0
|
||||
LD BC,512-65
|
||||
LDIR ;!FIXIT 㦮 «¨ â ª ¬®£® £à®å âì?
|
||||
|
||||
;
|
||||
POP HL
|
||||
CALL NSECTOR
|
||||
LD A,(CORE_BUFFERS.BootSector.S_P_C) ; ᥪâ®à®¢ ª« áâ¥à
|
||||
@ -1052,21 +1036,21 @@ MKDIR: ;!TEST Current Dir ;[x] 15/10/23
|
||||
PUSH AF
|
||||
IN A,(SLOT0)
|
||||
OUT (SLOT3),A
|
||||
;
|
||||
;
|
||||
LD A,(FatBuffer.DRIVE)
|
||||
LD DE,CORE_BUFFERS.SECBUF+#C000
|
||||
LD BC,1*256 + Dss.DRV.Write
|
||||
RST ToDSS.DRV
|
||||
;
|
||||
;
|
||||
POP AF
|
||||
OUT (SLOT3),A
|
||||
|
||||
;
|
||||
LD HL,CORE_BUFFERS.SECBUF
|
||||
LD DE,CORE_BUFFERS.SECBUF+1
|
||||
LD BC,511
|
||||
LD (HL),0
|
||||
LDIR ;!FIXIT 㦮 «¨ â ª ¬®£® £à®å âì?
|
||||
|
||||
;
|
||||
POP IX
|
||||
POP HL
|
||||
INC IX
|
||||
@ -1109,8 +1093,8 @@ RMDIR: ;!TEST Current Dir ;[x] 15/10/23
|
||||
;
|
||||
.START: CALL GETWORD
|
||||
RET C
|
||||
LD HL,TMPNAME
|
||||
LD DE,MASKARE
|
||||
; LD HL,TMPNAME
|
||||
; LD DE,MASKARE
|
||||
CALL MASK
|
||||
RET C
|
||||
LD HL,MASKARE
|
||||
@ -1121,7 +1105,7 @@ RMDIR: ;!TEST Current Dir ;[x] 15/10/23
|
||||
SCF
|
||||
RET Z
|
||||
CALL LOADDIR
|
||||
CALL DSEARCH
|
||||
CALL SEARCH.Dir
|
||||
RET C
|
||||
LD HL,(HANDBUF+_sFM.ST_CLUSTER)
|
||||
PUSH IX
|
||||
@ -1211,7 +1195,7 @@ DOSNAME:
|
||||
DEC B
|
||||
JP Z,GETNAME
|
||||
DEC B
|
||||
JP Z,MASK
|
||||
JP Z,MASK.custom
|
||||
LD A,DSS_Error.sys.INVALID_FUNCTION
|
||||
SCF
|
||||
RET
|
||||
@ -1382,56 +1366,6 @@ RMKTIME:
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
|
||||
;----------------------------------------------------------------------;
|
||||
; áŞŽŻ¨ŕŽ˘ âě § ݍáě ˘ ᯨᎪ ¤¨áŞ (Ş â ŤŽŁ )
|
||||
WRT_HND:
|
||||
SET_PAGE_X DIRPAGE
|
||||
|
||||
PUSH AF
|
||||
LD IX,DIR
|
||||
;TEST 9/11/23
|
||||
; EXX
|
||||
; LD DE,0
|
||||
; EXX
|
||||
;
|
||||
.loop: LD A,(IX+00)
|
||||
OR A
|
||||
JR Z,.WRT_HN2
|
||||
CP #E5
|
||||
JR Z,.WRT_HN2
|
||||
LD BC,#0020
|
||||
ADD IX,BC
|
||||
JR NC,.loop
|
||||
;
|
||||
POP AF
|
||||
OUT (SLOT3),A
|
||||
LD A,DSS_Error.sys.ROOT_OVERFLOW
|
||||
SCF
|
||||
RET
|
||||
.WRT_HN2:
|
||||
LD D,XH
|
||||
LD E,XL
|
||||
LD HL,HANDBUF
|
||||
LD BC,HANDBUF.SIZE
|
||||
LDIR
|
||||
POP AF
|
||||
OUT (SLOT3),A
|
||||
LD HL,DIR
|
||||
LD BC,(SAVEDIR.DIRSIZE)
|
||||
DEC BC
|
||||
ADD HL,BC
|
||||
AND A
|
||||
SBC HL,DE
|
||||
RET NC
|
||||
LD HL,(SAVEDIR.DIRSIZE)
|
||||
LD BC,(FatBuffer.B_P_C)
|
||||
ADD HL,BC
|
||||
LD (SAVEDIR.DIRSIZE),HL
|
||||
AND A
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
|
||||
;----------------------------------------------------------------------;
|
||||
; HL - 11 bytes filename "FILENAMEEXT"
|
||||
; DE - DOS filename "FILENAME.EXT",0
|
||||
@ -1471,57 +1405,54 @@ GETNAME:
|
||||
; ¢å®¤: a= âਡãâ § ¯¨á¨
|
||||
; ¢ë室: de'=¨¤¥ªá § ¯¨á¨ ¢ ᯨ᪥ ª â «®£
|
||||
; CF - ª â «®£ ¥ ©¤¥
|
||||
DSEARCH:
|
||||
LD A,FAT_ATTR.DIRECTORY
|
||||
CALL SEARCH.ASEARCH
|
||||
SEARCH:
|
||||
.Dir: LD A,FAT_ATTR.DIRECTORY
|
||||
CALL SEARCH.Custom
|
||||
RET NC
|
||||
LD A,DSS_Error.sys.PATH_NOT_FOUND
|
||||
CP DSS_Error.sys.PATH_NOT_FOUND + 1
|
||||
RET C
|
||||
;
|
||||
SCF
|
||||
LD A,DSS_Error.sys.TOO_MANY_FILES_IN_DIR
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
|
||||
;----------------------------------------------------------------------;
|
||||
;OUT: DE' - ŻŽŕď¤ŞŽ˘ëŠ ŽŹĽŕ FM
|
||||
SEARCH: LD A,FAT_ATTR.NoDIRnoVolID
|
||||
.ASEARCH:
|
||||
; A = 76ADLSHR
|
||||
EX AF,AF'
|
||||
;
|
||||
.File: LD A,FAT_ATTR.NoDIRnoVolID
|
||||
.Custom: EX AF,AF' ; A = 76ADLSHR
|
||||
SET_PAGE_X DIRPAGE
|
||||
PUSH AF
|
||||
EX AF,AF'
|
||||
;
|
||||
CPL
|
||||
LD C,A
|
||||
LD IX,DIR
|
||||
LD IX,DIRPAGE.buffer
|
||||
;TEST 9/11/23
|
||||
; EXX
|
||||
; LD DE,0
|
||||
; EXX
|
||||
;
|
||||
.SEARCH1:
|
||||
LD A,(IX+00)
|
||||
.loop: LD A,(IX+00)
|
||||
OR A
|
||||
JR Z,.SEARCH4
|
||||
JR Z,.error_file_not_found
|
||||
CP #E5 ;!HARDCODE #E5 - § ¯¨áì ¢ ¤¨à¥ªâ®à¨¨ ᢮¡®¤ , â ª ª ª ä ©«/¤¨à¥ªâ®à¨ï ¡ë«¨ 㤠«¥ë
|
||||
JR Z,.SEARCH3
|
||||
JR Z,.next_record
|
||||
LD A,(IX+11)
|
||||
AND C
|
||||
JR NZ,.SEARCH3
|
||||
JR NZ,.next_record
|
||||
LD HL,MASKARE
|
||||
LD D,XH
|
||||
LD E,XL
|
||||
LD B,11
|
||||
EX DE,HL
|
||||
.SEARCH2:
|
||||
.loop_compare:
|
||||
LD A,(DE)
|
||||
CP '?'
|
||||
JR Z,.SEARCH5
|
||||
JR Z,.next_char
|
||||
CP (HL)
|
||||
JR NZ,.SEARCH3
|
||||
.SEARCH5:
|
||||
JR NZ,.next_record
|
||||
.next_char:
|
||||
INC HL
|
||||
INC DE
|
||||
DJNZ .SEARCH2
|
||||
DJNZ .loop_compare
|
||||
;!TEST 9/11/23
|
||||
; LD D,XH
|
||||
; LD E,XL
|
||||
@ -1540,7 +1471,7 @@ SEARCH: LD A,FAT_ATTR.NoDIRnoVolID
|
||||
OUT (SLOT3),A
|
||||
AND A
|
||||
RET
|
||||
.SEARCH3:
|
||||
.next_record:
|
||||
;!TEST 9/11/23
|
||||
; EXX
|
||||
; INC DE
|
||||
@ -1548,13 +1479,15 @@ SEARCH: LD A,FAT_ATTR.NoDIRnoVolID
|
||||
;
|
||||
LD DE,#0020 ;!HARDCODE
|
||||
ADD IX,DE
|
||||
JR NC,.SEARCH1
|
||||
.error: POP AF
|
||||
JR NC,.loop
|
||||
.error_too_many_files:
|
||||
POP AF
|
||||
OUT (SLOT3),A
|
||||
LD A,DSS_Error.sys.TOO_MANY_FILES_IN_DIR
|
||||
SCF
|
||||
RET
|
||||
.SEARCH4:
|
||||
;
|
||||
.error_file_not_found:
|
||||
POP AF
|
||||
OUT (SLOT3),A
|
||||
LD A,DSS_Error.sys.FILE_NOT_FOUND
|
||||
@ -1657,13 +1590,6 @@ OPENDSK:
|
||||
LD A,C
|
||||
;
|
||||
.force: PUSH AF
|
||||
; [ ] 13/11/2023 -bug with bad clusters ;!TEST
|
||||
;PUSH AF
|
||||
;LD A,(FATCASH.Update)
|
||||
;OR A
|
||||
;CALL NZ,WR_FAT
|
||||
;POP AF
|
||||
;
|
||||
LD C,Dss.DRV.Open
|
||||
RST ToDSS.DRV
|
||||
POP BC
|
||||
@ -1727,8 +1653,8 @@ OPENDIR:
|
||||
JR NZ,.loop
|
||||
JR .SUBDIR3
|
||||
.SUBDIR2:
|
||||
LD DE,MASKARE
|
||||
CALL MASK
|
||||
;LD DE,MASKARE
|
||||
CALL MASK.name
|
||||
RET C
|
||||
.SUBDIR3:
|
||||
CALL FINDDIR
|
||||
@ -1750,7 +1676,7 @@ FINDDIR:
|
||||
SET_PAGE_X DIRPAGE
|
||||
;
|
||||
PUSH AF
|
||||
LD IX,DIR
|
||||
LD IX,DIRPAGE.buffer
|
||||
.F_01: LD A,(IX+00)
|
||||
OR A
|
||||
JR Z,.error
|
||||
@ -1888,6 +1814,7 @@ FINDDIR:
|
||||
|
||||
|
||||
;----------------------------------------------------------------------;
|
||||
; .custom:
|
||||
; <20>८¡à §®¢ âì ¨¬ï 8.3 -> 11 ä®à¬ â
|
||||
; ¢å®¤: hl = 8.3 ¨¬ï
|
||||
; de = ¡ãä¥à ¨¬¥¨ 11 ᨬ¢. ä®à¬ â
|
||||
@ -1897,7 +1824,9 @@ FINDDIR:
|
||||
; DE - 11 bytes filename
|
||||
; RET: C=2 FILE WITHOUT EXTENTION
|
||||
; C=1 FILE WITH EXTENTION
|
||||
MASK: PUSH HL
|
||||
MASK: LD HL,TMPNAME
|
||||
.name: LD DE,MASKARE
|
||||
.custom: PUSH HL
|
||||
PUSH DE
|
||||
LD H,D
|
||||
LD L,E
|
||||
@ -2053,10 +1982,11 @@ LOADDIR:
|
||||
LD A,D
|
||||
OR E
|
||||
JP Z,.LROTDIR ; root ??
|
||||
LD HL,DIR ; Şă¤
|
||||
LD HL,DIRPAGE.buffer ; Şă¤
|
||||
LD DE,#4000 ; ᪮«ìª®
|
||||
XOR A ; ¤¥áªà¨¯â®à
|
||||
CALL READ ; ç⥨¥ ¨§ ä ©«
|
||||
;!FIXIT ŻŕŽ˘ĽŕŞ Žč¨ĄŞă
|
||||
LD (SAVEDIR.DIRSIZE),DE ; ç¨á«® ¯à®ç¨â. ¡ ©â®¢
|
||||
POP AF
|
||||
OUT (SLOT3),A
|
||||
@ -2078,7 +2008,7 @@ LOADDIR:
|
||||
;LD B,A ; ç¨á«® ᥪâ®à®¢
|
||||
;
|
||||
.RTD1: LD A,(FatBuffer.DRIVE) ; ®¬¥à ¤¨áª
|
||||
LD DE,DIR ; ĄăäĽŕ
|
||||
LD DE,DIRPAGE.buffer ; ĄăäĽŕ
|
||||
LD C,Dss.DRV.Read ; ç⥨¥ ᥪâ®à®¢
|
||||
RST ToDSS.DRV
|
||||
POP AF
|
||||
@ -2088,6 +2018,56 @@ LOADDIR:
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
|
||||
;----------------------------------------------------------------------;
|
||||
; áŞŽŻ¨ŕŽ˘ âě § ݍáě ˘ ᯨᎪ ¤¨áŞ (Ş â ŤŽŁ )
|
||||
; ¨ áĄŕŽá¨âě ŞĽč Ş â ŤŽŁ ¤¨áŞ
|
||||
WRT_HND: SET_PAGE_X DIRPAGE
|
||||
EX AF,AF'
|
||||
;
|
||||
LD IX,DIRPAGE.buffer
|
||||
;TEST 9/11/23
|
||||
; EXX
|
||||
; LD DE,0
|
||||
; EXX
|
||||
;
|
||||
.loop: LD A,(IX+00)
|
||||
OR A
|
||||
JR Z,.WRT_HN2
|
||||
CP #E5
|
||||
JR Z,.WRT_HN2
|
||||
LD BC,#0020
|
||||
ADD IX,BC
|
||||
JR NC,.loop
|
||||
;
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
LD A,DSS_Error.sys.ROOT_OVERFLOW
|
||||
SCF
|
||||
RET
|
||||
.WRT_HN2:
|
||||
LD D,XH
|
||||
LD E,XL
|
||||
LD HL,HANDBUF
|
||||
LD BC,HANDBUF.SIZE
|
||||
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
|
||||
LD HL,(SAVEDIR.DIRSIZE)
|
||||
LD BC,(FatBuffer.B_P_C)
|
||||
ADD HL,BC
|
||||
LD (SAVEDIR.DIRSIZE),HL
|
||||
AND A
|
||||
JP SAVEDIR
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
|
||||
;----------------------------------------------------------------------;
|
||||
; ‘¡à®á¨âì ª¥è ª â «®£ ¤¨áª.
|
||||
; ¢å®¤: iy=áâàãªâãà ¤¥áªà¨¯â®à
|
||||
@ -2097,10 +2077,10 @@ SAVEDIR:
|
||||
LD IX,0
|
||||
LD B,0
|
||||
CALL MOVE_FP
|
||||
|
||||
;
|
||||
SET_PAGE_X DIRPAGE
|
||||
|
||||
PUSH AF
|
||||
;
|
||||
LD A,(FatBuffer.DRIVE)
|
||||
LD (IY+_sFM.DRIVE),A
|
||||
LD D,(IY+_sFM.ST_CLUSTER)
|
||||
@ -2108,7 +2088,7 @@ SAVEDIR:
|
||||
LD A,D
|
||||
OR E
|
||||
JP Z,.SROTDIR
|
||||
LD HL,DIR
|
||||
LD HL,DIRPAGE.buffer
|
||||
; à §¬¥à ᯨ᪠ª â «®£ size_cash_directory
|
||||
.DIRSIZE+1:
|
||||
LD DE,0
|
||||
@ -2128,7 +2108,7 @@ SAVEDIR:
|
||||
ADD A,B
|
||||
LD B,A
|
||||
.RTD1S: LD A,(FatBuffer.DRIVE)
|
||||
LD DE,DIR
|
||||
LD DE,DIRPAGE.buffer
|
||||
LD C,Dss.DRV.Write
|
||||
RST ToDSS.DRV
|
||||
POP AF
|
||||
@ -2219,47 +2199,11 @@ DIR_PATH_CHECK: LD A,(HL)
|
||||
JP GETWORD
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
;----------------------------------------------------------------------;
|
||||
IF TEST_FEATURE
|
||||
|
||||
; [ ] 13/11/2023 -bug with bad clusters ;!TEST
|
||||
; in: IY - FM ¤Ťď ä ŠŤ ¤¨ŕ༪âŽŕ¨î ŞŽâŽŕŽŁŽ Łŕ㧨Ź
|
||||
SET_DIR:
|
||||
LD L,(IY+_sFM.DIR_CLUSTER)
|
||||
LD H,(IY+_sFM.DIR_CLUSTER+1)
|
||||
;
|
||||
PUSH IY
|
||||
XOR A
|
||||
CALL SET_FM
|
||||
EX DE,HL
|
||||
LD L,(IY+_sFM.ST_CLUSTER)
|
||||
LD H,(IY+_sFM.ST_CLUSTER+1)
|
||||
AND A
|
||||
SBC HL,DE
|
||||
JR Z,.exit
|
||||
LD HL,#4000 ;!HARDCODE
|
||||
;LD A,D
|
||||
;OR E
|
||||
;JR Z,.ROOT
|
||||
|
||||
EX DE,HL
|
||||
LD (IY+_sFM.F_SIZE),E
|
||||
LD (IY+_sFM.F_SIZE+1),D
|
||||
LD (IY+_sFM.ST_CLUSTER),L
|
||||
LD (IY+_sFM.ST_CLUSTER+1),H
|
||||
CALL LOADDIR
|
||||
;
|
||||
.exit: POP IY
|
||||
RET
|
||||
|
||||
ENDIF
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
|
||||
|
||||
;!FIXIT ª ¡ãä¥à ¬
|
||||
; Œ áᨢ «®£. ®¬¥à®¢ ¡ ®ª à áè¨à¥¨ï DSS
|
||||
BANKTBL: BLOCK USING_MEMPAGES+1,#FF ; +1 ¤«ï COREPAGE
|
||||
;
|
||||
HANDBUF: BLOCK HANDBUF.SIZE,0
|
||||
MASKARE: BLOCK 8,0 ; ¨¬ï ä ©«
|
||||
BLOCK 3,0 ; à áè.
|
||||
|
||||
@ -770,12 +770,7 @@ WRITE: LD (.R_POINT),HL
|
||||
LD A,(IY+_sFM.DRIVE)
|
||||
CALL OPENDSK
|
||||
JR C,PWERR1
|
||||
; [ ] 13/11/2023 -bug with bad clusters ;!TEST
|
||||
; IF TEST_FEATURE
|
||||
; CALL SET_DIR
|
||||
; JR C,PWERR1
|
||||
; ENDIF
|
||||
;
|
||||
;
|
||||
LD C,(IY+_sFM.F_POSITION)
|
||||
LD A,(IY+_sFM.F_POSITION+1)
|
||||
LD E,A
|
||||
@ -882,6 +877,7 @@ WRITE: LD (.R_POINT),HL
|
||||
LD (IY+_sFM.F_SIZE+3),B
|
||||
AND A
|
||||
RET
|
||||
;
|
||||
.WOV1: PUSH BC
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
|
||||
140
DSS/DOS_X.ASM
140
DSS/DOS_X.ASM
@ -8,7 +8,7 @@
|
||||
;---------------------------------------------------------------
|
||||
;R13 06-04-2023 BAO ”ãªæ¨î SETBOOT ¬®¦® ¢ë§¢ âì ⮫쪮 à § (¥á«¨ § ¢¥àè¨âáï ª®à४â®)
|
||||
;R12 03-04-2023 BAO „®¡ ¢«¥ äãªæ¨ï à¥áª ¤à ©¢®¢ LD C,8 : RST #10
|
||||
;R11 15-04-2003 DNS ROUTINE FOR STORE CURDISK AND CURDIR ;!FIXIT à ¡®â ¥â ªà¨¢®
|
||||
;R11 - 15-04-2003 DNS ROUTINE FOR STORE CURDISK AND CURDIR
|
||||
;R10 03-04-2003 DNS IMPROVED FN. VERSION
|
||||
;R09 27-03-2003 DNS PASTED SET/GET BOOT FN.
|
||||
;R08 14-11-2002 DNS IMPROVE BPB-FUNCTION
|
||||
@ -593,79 +593,6 @@ WorkDirectory EQU CurrentDirectory
|
||||
.DEPTH EQU CurrentDirectory.DEPTH
|
||||
ENDIF
|
||||
|
||||
;R11
|
||||
; !TODO ¯®ç¨¨âì
|
||||
IF SAVE_PATH_MACRO
|
||||
SAVE_CUR_PATH
|
||||
PUSH IX
|
||||
PUSH IY
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
PUSH BC
|
||||
PUSH AF
|
||||
|
||||
SET_PAGE_X ENVPAGE
|
||||
PUSH AF
|
||||
|
||||
CALL CURRDSK
|
||||
ADD A,"A"
|
||||
LD HL,TMP_CURDIR_AUTO
|
||||
LD (HL),A
|
||||
INC HL
|
||||
LD A,":"
|
||||
LD (HL),A
|
||||
INC HL
|
||||
CALL CURRDIR_FN
|
||||
|
||||
; ¯®ç¥¬ã ¥ POP AF : OUT (SLOT3),A
|
||||
//POP BC
|
||||
//LD A,B
|
||||
//OUT (SLOT3),A
|
||||
POP AF
|
||||
OUT (SLOT3),A
|
||||
;
|
||||
;
|
||||
POP AF
|
||||
POP BC
|
||||
POP DE
|
||||
POP HL
|
||||
POP IY
|
||||
POP IX
|
||||
RET
|
||||
|
||||
; !TODO ¯®ç¨¨âì
|
||||
BACK_CUR_PATH:
|
||||
RET NC
|
||||
.force: PUSH IY
|
||||
PUSH IX
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
PUSH BC
|
||||
PUSH AF
|
||||
|
||||
SET_PAGE_X ENVPAGE
|
||||
PUSH AF
|
||||
|
||||
LD HL,TMP_CURDIR_AUTO
|
||||
CALL CHDIR
|
||||
|
||||
; ¯®ç¥¬ã ¥ POP AF : OUT (SLOT3),A
|
||||
//POP BC
|
||||
//LD A,B
|
||||
//OUT (SLOT3),A
|
||||
POP AF
|
||||
OUT (SLOT3),A
|
||||
;
|
||||
POP AF
|
||||
POP BC
|
||||
POP DE
|
||||
POP HL
|
||||
POP IX
|
||||
POP IY
|
||||
RET
|
||||
ENDIF
|
||||
;R11
|
||||
|
||||
;R12
|
||||
;///////////////////////////////////////////////////////////////////////
|
||||
; ”ãªæ¨ï #08 (DSS_RESCAN). <20>¥à¥áª ¨à®¢ âì ¤¥¢ ©áë á¨á⥬ë.
|
||||
@ -705,10 +632,6 @@ SCANDRV:
|
||||
;///////////////////////////////////////////////////////////////////////
|
||||
;
|
||||
|
||||
|
||||
;R12
|
||||
|
||||
|
||||
;GOD EQU 1999-1980*512
|
||||
|
||||
;FHAND DB " "
|
||||
@ -723,3 +646,64 @@ SCANDRV:
|
||||
;//MODULE: DOS_X
|
||||
;[END]
|
||||
|
||||
;R11
|
||||
; IF SAVE_PATH_MACRO
|
||||
; SAVE_CUR_PATH
|
||||
; PUSH IX
|
||||
; PUSH IY
|
||||
; PUSH HL
|
||||
; PUSH DE
|
||||
; PUSH BC
|
||||
; PUSH AF
|
||||
;
|
||||
; SET_PAGE_X ENVPAGE
|
||||
; PUSH AF
|
||||
;
|
||||
; CALL CURRDSK
|
||||
; ADD A,"A"
|
||||
; LD HL,TMP_CURDIR_AUTO
|
||||
; LD (HL),A
|
||||
; INC HL
|
||||
; LD A,":"
|
||||
; LD (HL),A
|
||||
; INC HL
|
||||
; CALL CURRDIR_FN
|
||||
;
|
||||
; POP AF
|
||||
; OUT (SLOT3),A
|
||||
;
|
||||
; POP AF
|
||||
; POP BC
|
||||
; POP DE
|
||||
; POP HL
|
||||
; POP IY
|
||||
; POP IX
|
||||
; RET
|
||||
;
|
||||
; BACK_CUR_PATH:
|
||||
; RET NC
|
||||
; .force: PUSH IY
|
||||
; PUSH IX
|
||||
; PUSH HL
|
||||
; PUSH DE
|
||||
; PUSH BC
|
||||
; PUSH AF
|
||||
;
|
||||
; SET_PAGE_X ENVPAGE
|
||||
; PUSH AF
|
||||
;
|
||||
; LD HL,TMP_CURDIR_AUTO
|
||||
; CALL CHDIR
|
||||
;
|
||||
; POP AF
|
||||
; OUT (SLOT3),A
|
||||
;
|
||||
; POP AF
|
||||
; POP BC
|
||||
; POP DE
|
||||
; POP HL
|
||||
; POP IX
|
||||
; POP IY
|
||||
; RET
|
||||
; ENDIF
|
||||
;
|
||||
|
||||
@ -148,31 +148,6 @@ XLAT_T: DB #00,#43,#00,#3F,#3D,#3B,#3C,#46,#00,#44,#42,#40,#3E,#0F,#00,#00 ;00
|
||||
ENDM
|
||||
;
|
||||
|
||||
;
|
||||
MACRO _mSavePath force
|
||||
IF SAVE_PATH_MACRO
|
||||
PUSH HL
|
||||
IF force==1
|
||||
LD HL,BACK_CUR_PATH.force
|
||||
ELSE
|
||||
LD HL,BACK_CUR_PATH
|
||||
ENDIF
|
||||
EX (SP),HL
|
||||
CALL SAVE_CUR_PATH
|
||||
ENDIF
|
||||
ENDM
|
||||
MACRO _mRestorePath
|
||||
IF SAVE_PATH_MACRO
|
||||
CALL BACK_CUR_PATH.force
|
||||
ENDIF
|
||||
ENDM
|
||||
MACRO _mRestorStackAfterRestorePath
|
||||
IF SAVE_PATH_MACRO
|
||||
POP HL ;CLEAR STACK "BACK_CUR_PATH"
|
||||
ENDIF
|
||||
ENDM
|
||||
;
|
||||
|
||||
;
|
||||
MACRO _mDSS_Version
|
||||
DB 'DSS_'
|
||||
@ -224,4 +199,30 @@ XLAT_T: DB #00,#43,#00,#3F,#3D,#3B,#3C,#46,#00,#44,#42,#40,#3E,#0F,#00,#00 ;00
|
||||
MACRO C_OSRELEASE
|
||||
DB "Estex DSS",0
|
||||
ENDM
|
||||
;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
;
|
||||
; MACRO _mSavePath force
|
||||
; IF SAVE_PATH_MACRO
|
||||
; PUSH HL
|
||||
; IF force==1
|
||||
; LD HL,BACK_CUR_PATH.force
|
||||
; ELSE
|
||||
; LD HL,BACK_CUR_PATH
|
||||
; ENDIF
|
||||
; EX (SP),HL
|
||||
; CALL SAVE_CUR_PATH
|
||||
; ENDIF
|
||||
; ENDM
|
||||
; MACRO _mRestorePath
|
||||
; IF SAVE_PATH_MACRO
|
||||
; CALL BACK_CUR_PATH.force
|
||||
; ENDIF
|
||||
; ENDM
|
||||
; MACRO _mRestorStackAfterRestorePath
|
||||
; IF SAVE_PATH_MACRO
|
||||
; POP HL ;CLEAR STACK "BACK_CUR_PATH"
|
||||
; ENDIF
|
||||
; ENDM
|
||||
;
|
||||
@ -182,7 +182,7 @@ EX_PATH: EXX
|
||||
DEC B
|
||||
JP Z,GETNAME ;8 ; ¯à¥®¡à. ¨¬ï 11 -> 8.3 ä®à¬ â
|
||||
DEC B
|
||||
JP Z,MASK ;9 ; ¯à¥®¡à. ¨¬ï 8.3 -> 11 ä®à¬ â
|
||||
JP Z,MASK.custom ;9 ; ¯à¥®¡à. ¨¬ï 8.3 -> 11 ä®à¬ â
|
||||
EX_RESR: LD A,DSS_Error.sys.INVALID_FUNCTION
|
||||
SCF
|
||||
RET
|
||||
@ -692,7 +692,7 @@ FINDPATH:
|
||||
;CALL CURRDIR_FN
|
||||
;
|
||||
CALL .MAKE_PATH_ARRAY
|
||||
LD HL,PATH_PNT_ARRAY
|
||||
LD HL,ENVPAGE.PATH_PNT_ARRAY
|
||||
.NEXTPATHI:
|
||||
LD E,(HL)
|
||||
INC HL
|
||||
@ -707,12 +707,12 @@ FINDPATH:
|
||||
CALL NZ,CHDIR
|
||||
JR C,.BADPATH
|
||||
LD HL,CORE_BUFFERS.EXEBUFF
|
||||
LD DE,MASKARE
|
||||
CALL MASK
|
||||
;LD DE,MASKARE
|
||||
CALL MASK.name
|
||||
JR C,.BADPATH
|
||||
CALL TST_EXT
|
||||
JR C,.BADPATH
|
||||
CALL SEARCH
|
||||
CALL SEARCH.File
|
||||
.BADPATH:
|
||||
POP BC
|
||||
POP HL
|
||||
@ -728,15 +728,14 @@ FINDPATH:
|
||||
.GOTO_CURDIR:
|
||||
PUSH AF
|
||||
PUSH HL
|
||||
;LD HL,TMP_CURDIR
|
||||
LD HL,CurrentDirectory
|
||||
CALL CHDIR
|
||||
POP HL
|
||||
POP AF
|
||||
RET
|
||||
.MAKE_PATH_ARRAY:
|
||||
LD HL,PATH_PNT_ARRAY-1 ;R04 -1
|
||||
LD DE,ENVTEMP-1
|
||||
LD HL,ENVPAGE.PATH_PNT_ARRAY-1 ;R04 -1
|
||||
LD DE,ENVPAGE.ENVTEMP-1
|
||||
LD B,#00
|
||||
.NEXTAR:
|
||||
LD (HL),C ;R04
|
||||
@ -778,15 +777,12 @@ FINDPATH:
|
||||
LD (HL),A
|
||||
RET
|
||||
|
||||
ENVPATH DB "PATH=",0
|
||||
ENVPATH: DB "PATH=",0
|
||||
|
||||
;;;
|
||||
; !TODO ‘„…‹€’œ ‘’<E28098>“Š’“<E28099>މ ¨ ®¡®§ ç¨âì áâà ¨æã
|
||||
TMP_CURDIR_AUTO EQU #FB00
|
||||
PATH_PNT_ARRAY EQU #FC80
|
||||
; !FIXIT ¥ 㦮 ¥á«¨ SAVE_PATH_MACRO = 1
|
||||
TMP_CURDIR EQU #FD00
|
||||
ENVTEMP EQU #FE00
|
||||
;TMP_CURDIR_AUTO EQU #FB00
|
||||
; ¥ 㦮 ¥á«¨ SAVE_PATH_MACRO = 1
|
||||
; TMP_CURDIR EQU #FD00
|
||||
|
||||
|
||||
;/////////////////////////////////////////////////////////////////////
|
||||
@ -847,8 +843,8 @@ EXEC_1: ;LD (CMDLINE),HL
|
||||
LD (OPEN.TMP),A
|
||||
CALL GETWORD
|
||||
RET C
|
||||
LD HL,TMPNAME
|
||||
LD DE,MASKARE
|
||||
; LD HL,TMPNAME
|
||||
; LD DE,MASKARE
|
||||
CALL MASK
|
||||
RET C
|
||||
CALL TST_EXT
|
||||
@ -877,11 +873,10 @@ EXEC_1: ;LD (CMDLINE),HL
|
||||
EXEC0_SHORT:
|
||||
CALL EXEC_1
|
||||
RET C
|
||||
|
||||
;FILE NOT FOUND, SEARCHING IN PATH
|
||||
; GET PATH AND ETC.
|
||||
LD HL,ENVPATH
|
||||
LD DE,ENVTEMP
|
||||
LD DE,ENVPAGE.ENVTEMP
|
||||
LD B,high Dss.Environ.Get
|
||||
CALL ENVIRON
|
||||
|
||||
|
||||
@ -94,7 +94,7 @@ R_F_F16:
|
||||
LD BC,(FATCASH) ; C - BLOCK FAT IN CASH
|
||||
CP C
|
||||
CALL NZ,RE_FAT ; A != C - READ NEW BLOCK FAT
|
||||
LD DE,FAT_CACHE ; ç ŤŽ ŞĽč FAT-
|
||||
LD DE,FATPAGE.cache ; ç «® ª¥è FAT-
|
||||
ADD HL,DE ; ï祩ªã FAT
|
||||
LD E,(HL) ; ¯à®ç¨â âì ®¬¥à ª« áâ¥à
|
||||
INC HL
|
||||
@ -196,7 +196,7 @@ R_F_F12:
|
||||
CALL NZ,RE_FAT ; ¯à®ç¨â âì ¢ ª¥è 16 ᥪâ®à®¢ FAT-
|
||||
ENDIF
|
||||
;
|
||||
LD DE,FAT_CACHE ; ç ŤŽ ŞĽč FAT-
|
||||
LD DE,FATPAGE.cache ; ç «® ª¥è FAT-
|
||||
ADD HL,DE ; ï祩ªã FAT
|
||||
POP AF ; ¢®ááâ. ä« £
|
||||
LD E,(HL)
|
||||
@ -286,7 +286,7 @@ W_T_F16:
|
||||
LD BC,(FATCASH) ; C - BLOCK FAT IN CASH
|
||||
CP C
|
||||
CALL NZ,RE_FAT ; A != C - READ NEW BLOCK FAT
|
||||
LD DE,FAT_CACHE
|
||||
LD DE,FATPAGE.cache
|
||||
ADD HL,DE ; ï祩ªã FAT
|
||||
POP DE
|
||||
LD (HL),E ; á®åà. ¢ ª¥è¥ FAT-
|
||||
@ -329,7 +329,7 @@ W_T_F12:
|
||||
CALL NZ,RE_FAT ; ¯à®ç¨â âì ¢ ª¥è 16 ᥪâ®à®¢ FAT-
|
||||
ENDIF
|
||||
;
|
||||
LD DE,FAT_CACHE
|
||||
LD DE,FATPAGE.cache
|
||||
ADD HL,DE
|
||||
POP AF
|
||||
POP DE
|
||||
@ -403,7 +403,7 @@ RE_FAT: PUSH HL
|
||||
LD IX,0
|
||||
ADD IX,DE ; ®¬¥à «®£. ᥪâ®à
|
||||
LD HL,0 ; áâ. à §àï¤ ; HL:IX - SECTOR FAT FOR READING
|
||||
LD DE,FAT_CACHE ; Şă¤ ; DE - FAT ADDRESS
|
||||
LD DE,FATPAGE.cache ; ªã¤ ; DE - FAT ADDRESS
|
||||
LD A,(FatBuffer.DRIVE) ; ®¬¥à ¤¨áª
|
||||
LD BC,16*256 + Dss.DRV.Read ;ॣ B: 16 * 512 = 8192 (CASH SIZE) ;!TODO FATcacheSize
|
||||
RST ToDSS.DRV
|
||||
@ -452,7 +452,7 @@ WR_FAT: SET_PAGE_X FATPAGE
|
||||
;HL:IX - SECTOR OF FAT FOR SAVE
|
||||
ADD IX,DE ; ®¬¥à «®£. ᥪâ®à
|
||||
LD HL,0 ; áâ. à §àï¤
|
||||
LD DE,FAT_CACHE ; ŽâŞă¤
|
||||
LD DE,FATPAGE.cache ; ®âªã¤
|
||||
LD B,A ; ç¨á«® ᥪâ®à®¢
|
||||
LD C,Dss.DRV.Write ; § ¯¨áì ᥪâ®à®¢
|
||||
LD A,(FatBuffer.DRIVE) ; ®¬¥à ¤¨áª
|
||||
@ -465,7 +465,7 @@ WR_FAT: SET_PAGE_X FATPAGE
|
||||
EX DE,HL
|
||||
LD IX,0
|
||||
ADD IX,DE
|
||||
LD DE,FAT_CACHE
|
||||
LD DE,FATPAGE.cache
|
||||
LD HL,0
|
||||
LD A,(FatBuffer.DRIVE)
|
||||
LD C,Dss.DRV.Write
|
||||
|
||||
@ -657,8 +657,9 @@ TST_01: IN A,(CMOUSE)
|
||||
LD A,B
|
||||
OR C
|
||||
JR NZ,TST_01
|
||||
;JR NC,TST_01
|
||||
SCF
|
||||
RET
|
||||
;JR NC,TST_01
|
||||
;
|
||||
|
||||
.NXT: IN A,(DMOUSE)
|
||||
@ -667,19 +668,19 @@ TST_01: IN A,(CMOUSE)
|
||||
CCF
|
||||
RET NZ
|
||||
|
||||
;!TEST mouse freeeeezzzz
|
||||
;[x] mouse freeeeezzzz !TEST
|
||||
LD BC,#2000
|
||||
;
|
||||
TST_02: IN A,(CMOUSE)
|
||||
RRCA
|
||||
;!TEST mouse freeeeezzzz
|
||||
;[x] mouse freeeeezzzz !TEST
|
||||
JR C,.NXT
|
||||
DEC BC
|
||||
LD A,B
|
||||
OR C
|
||||
JR NZ,TST_02
|
||||
;JR NC,TST_02
|
||||
RET
|
||||
;JR NC,TST_02
|
||||
;
|
||||
.NXT: IN A,(DMOUSE)
|
||||
LD D,A
|
||||
|
||||
@ -302,7 +302,8 @@ SETUP_CURSORS:
|
||||
|
||||
|
||||
|
||||
CTRLKEY LD HL,HOST
|
||||
CTRLKEY:
|
||||
LD HL,HOST
|
||||
LD A,(HEAD)
|
||||
CP (HL)
|
||||
LD BC,(KEYFLAG)
|
||||
@ -311,7 +312,8 @@ CTRLKEY LD HL,HOST
|
||||
DEC A
|
||||
RET
|
||||
|
||||
TESTKEY LD HL,HOST
|
||||
TESTKEY:
|
||||
LD HL,HOST
|
||||
LD A,(HEAD)
|
||||
CP (HL)
|
||||
RET Z
|
||||
@ -348,7 +350,8 @@ TESTKEY LD HL,HOST
|
||||
; RET
|
||||
|
||||
;small optimization
|
||||
K_CLEAR LD A,(HOST)
|
||||
K_CLEAR:
|
||||
LD A,(HOST)
|
||||
LD (HEAD),A
|
||||
LD A,#2F
|
||||
CP B
|
||||
@ -363,7 +366,7 @@ K_CLEAR LD A,(HOST)
|
||||
RET
|
||||
;
|
||||
|
||||
PUTSYM LD HL,HEAD
|
||||
PUTSYM: LD HL,HEAD
|
||||
LD A,(HOST)
|
||||
SUB 4
|
||||
AND #3F
|
||||
@ -386,7 +389,7 @@ PUTSYM LD HL,HEAD
|
||||
LD (HL),C
|
||||
RET
|
||||
|
||||
GETSYM LD HL,HOST
|
||||
GETSYM: LD HL,HOST
|
||||
LD A,(HEAD)
|
||||
CP (HL)
|
||||
RET Z
|
||||
@ -407,38 +410,41 @@ GETSYM LD HL,HOST
|
||||
LD C,(HL)
|
||||
RET
|
||||
|
||||
FULL_BF EX AF,AF'
|
||||
FULL_BF:
|
||||
EX AF,AF'
|
||||
BIT SF_BUFF,(IX+SOUND_K)
|
||||
JR Z,FBF
|
||||
JR Z,.FBF
|
||||
EXX
|
||||
LD DE,230
|
||||
LD HL,50
|
||||
CALL BEEP
|
||||
EXX
|
||||
FBF EX AF,AF'
|
||||
.FBF: EX AF,AF'
|
||||
RET
|
||||
.E0_KEY:
|
||||
SET FLAG_E0,(IX+KEYFLG)
|
||||
JR KEYSCAN.RESCAN
|
||||
.F0_KEY:
|
||||
SET FLAG_F0,(IX+KEYFLG)
|
||||
JR KEYSCAN.RESCAN
|
||||
.E1_KEY:
|
||||
SET FLAG_E1,(IX+KEYFLG)
|
||||
JR KEYSCAN.RESCAN
|
||||
|
||||
E0_KEY SET FLAG_E0,(IX+KEYFLG)
|
||||
JR RESCAN
|
||||
|
||||
F0_KEY SET FLAG_F0,(IX+KEYFLG)
|
||||
JR RESCAN
|
||||
|
||||
E1_KEY SET FLAG_E1,(IX+KEYFLG)
|
||||
JR RESCAN
|
||||
|
||||
KEYSCAN LD IX,KEYFLAG
|
||||
|
||||
RESCAN IN A,(COM_A)
|
||||
KEYSCAN:
|
||||
LD IX,KEYFLAG
|
||||
.RESCAN:
|
||||
IN A,(COM_A)
|
||||
BIT 0,A
|
||||
RET Z
|
||||
IN A,(DAT_A)
|
||||
CP #F0
|
||||
JR Z,F0_KEY
|
||||
JR Z,FULL_BF.F0_KEY
|
||||
CP #E0
|
||||
JR Z,E0_KEY
|
||||
JR Z,FULL_BF.E0_KEY
|
||||
CP #E1
|
||||
JR Z,E1_KEY
|
||||
JR Z,FULL_BF.E1_KEY
|
||||
BIT FLAG_F0,(IX+KEYFLG)
|
||||
JR NZ,UN_KEY
|
||||
LD L,A
|
||||
|
||||
@ -1 +1 @@
|
||||
567
|
||||
579
|
||||
@ -15,8 +15,7 @@ DSS_MAX_DRIVES_AMOUNT EQU 26
|
||||
DEFINE TABisSPACES 0
|
||||
DEFINE EnoughtOnly_LF 0
|
||||
DEFINE CLASSIC_CURSOR 0
|
||||
DEFINE SAVE_PATH_MACRO 0 ;\____ «¨¡® â®, «¨¡® â®
|
||||
DEFINE SAVE_PATH_CODE 1 ;/
|
||||
DEFINE SAVE_PATH_CODE 1
|
||||
DEFINE MINIMUM_BIOS_VERSION 2*256 + 55 ; version 2.55
|
||||
;
|
||||
;-------------------[MEMORY]-------------------------;
|
||||
@ -24,13 +23,22 @@ DSS_MAX_DRIVES_AMOUNT EQU 26
|
||||
; 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
|
||||
DEFINE USING_MEMPAGES 4 ; à §¬¥à ¡«®ª ¤®¯®«¨â¥«ìëå áâà ¨æ
|
||||
;
|
||||
COREPAGE EQU 4 ; ® ®â¤¥«ì® ¨ ¥ á ¡«®ª®¬ ¢ëè¥.
|
||||
;-----------------------------------------------------------------------
|
||||
DIRECTORY_PATH_LENGTH EQU 256 ; '\' + 255, 0
|
||||
@ -38,8 +46,8 @@ ENVIRONMENT_STRING_LENGTH EQU 255
|
||||
|
||||
TXTADDR EQU #C000
|
||||
ENVADDR EQU #E400
|
||||
DIR EQU #C000
|
||||
FAT_CACHE EQU #C000
|
||||
;DIR EQU #C000
|
||||
;FAT_CACHE EQU #C000
|
||||
|
||||
FMCOUNT EQU 10 ; Š®«¨ç¥á⢮ ä ©«®¢ëå ¬ ¨¯ã«ïâ®à®¢
|
||||
HANDBUF.SIZE EQU 32
|
||||
|
||||
Loading…
Reference in New Issue
Block a user