bug fixing

This commit is contained in:
Anatoliy Belyanskiy 2023-11-17 02:11:03 +10:00
parent 6333672fa6
commit f93e0ad5b2
5 changed files with 177 additions and 131 deletions

View File

@ -1,6 +1,7 @@
!FIXIT
[ ] D:\>copy dss\system.dos c:\system.dos
[ ] D:\>copy dss\system.dos c:\system.dos (bp 812d, 8136)
Can't open source file
[ ] E:\BIN\MENU>c:\dss
çâ®-â® ¯à® § ¯®«­¥­­®áâì ¤¨à¥ªâ®à¨¨
[ ] C:\????? ¨«¨ ?????

View File

@ -39,7 +39,7 @@ ATTRIB: ;!TEST Current Dir ;[x] 15/10/23
RET C
LD A,C
;
;
INC B
DEC B
JP Z,.RATTRIB
@ -49,21 +49,31 @@ ATTRIB: ;!TEST Current Dir ;[x] 15/10/23
SCF
RET
.RATTRIB:
XOR A
;!TEST ;[ ] 16/11/23 optimize get attribute
;XOR A
;
CALL .OPENATR ;R02
RET C
LD B,(IY+_sFM.ATTRIBUT)
PUSH BC
CALL CLOSE
POP BC
RET C
LD A,B
;AND A
;!TEST ;[ ] 16/11/23 optimize get attribute
LD A,(HANDBUF+_sFM.ATTRIBUT)
;LD B,(IY+_sFM.ATTRIBUT)
;PUSH BC
;CALL CLOSE
;POP BC
;RET C
;LD A,B
;
RET
.WATTRIB:
PUSH AF
XOR A
;!TEST ;[ ] 16/11/23 optimize get attribute
LD (OPEN.TMP),A
;
CALL .OPENATR ;R02
;!TEST ;[ ] 16/11/23 optimize get attribute
CALL NC,OPEN.FM
;
POP BC
RET C
SET 7,(IY+_sFM.ACCESS_MODE)
@ -71,27 +81,27 @@ ATTRIB: ;!TEST Current Dir ;[x] 15/10/23
LD (IY+_sFM.ATTRIBUT),B
PUSH BC
CALL CLOSE
POP BC
.error: POP BC
RET C
LD A,B
;AND A
RET
;R02
.OPENATR:
LD (OPEN.TMP),A ; à ¡. ï祩ª  (§¤¥áì  âਡãâ § ¯¨á¨)
;!TEST ;[ ] 16/11/23 optimize get attribute
;LD (OPEN.TMP),A ; à ¡. ï祩ª  (§¤¥áì  âਡãâ § ¯¨á¨)
;
CALL GETWORD ; â¥áâ ­  ¤®¯ãáâ. ¨¬ï ¨ ­ áâà. ­  ¤¨áª
RET C
; LD HL,TMPNAME
; LD DE,MASKARE
CALL MASK
RET C
LD A,FAT_ATTR.NoVolID
CALL SEARCH.Custom
; JR NC,OPENAT ; ­  ¯®¨áª ᢮¡. ¤¥áªà¨¯â®à 
; ; § ¯¨áì ­¥ ­ ©¤¥­ 
; RET
RET C ; § ¯¨áì ­¥ ­ ©¤¥­ 
JP OPEN.FM ; ­  ¯®¨áª ᢮¡. ¤¥áªà¨¯â®à 
;!TEST ;[ ] 16/11/23 optimize get attribute
JP SEARCH.Custom
;CALL SEARCH.Custom
;RET C ; § ¯¨áì ­¥ ­ ©¤¥­ 
;JP OPEN.FM ; ­  ¯®¨áª ᢮¡. ¤¥áªà¨¯â®à 
;
;
;R02
////////////////////////////////////////////////////////////////////////
@ -308,28 +318,24 @@ RENAME: ;!TEST Current Dir ;[x] 15/10/23
; CF=1, A - ª®¤ ®è¨¡ª¨.
////////////////////////////////////////////////////////////////////////
OPEN_FN:;!TEST Current Dir ;[x] 15/10/23
LD C,A
LD (OPEN.TMP),A
PUSH HL
PUSH BC
CALL DIR_PATH_CHECK.forceCheck
POP BC
POP HL
RET C
LD A,C
JR OPEN.start
;!FIXIT ᤥ« âì ª ª ¢ mkdir ¨«¨ rmdir?
;
;R08
OPEN: LD (.TMP),A ; enter point for CREATE
CALL GETWORD
OPEN: LD (.TMP),A ; enter point from CREATE
.start: CALL GETWORD
RET C
; LD HL,TMPNAME
; LD DE,MASKARE
CALL MASK
CALL MASK ; enter point from OPEN_FN
RET C
.FILE: CALL SEARCH.File ; enter point for EXEC
.FILE: CALL SEARCH.File ; enter point from EXEC
RET C
;R02
.FM: CALL GET_FM ; enter point for ATTRIB
.FM: CALL GET_FM ; enter point from ATTRIB
RET C
LD A,C
EX AF,AF'
@ -1204,8 +1210,6 @@ DOSNAME:
;----------------------------------------------------------------------;
; —⥭¨¥ ॣ¨áâ஢ CMOS
; ¢å®¤: d=­®¬¥à ॣ¨áâà 
@ -1368,32 +1372,69 @@ RMKTIME:
;----------------------------------------------------------------------;
; HL - 11 bytes filename "FILENAMEEXT"
; DE - DOS filename "FILENAME.EXT",0
;!FIXIT ­¥ª®à४⭮ à ¡®â ¥â
; GETNAME:
; LD BC,#08FF
; .GETN1: LD A,(HL)
; CP " "
; JR NZ,.GETN3
; .GETN2: INC HL
; DJNZ .GETN2
; JR .GETN4
; .GETN3: LDI
; DJNZ .GETN1
; ;
; .GETN4: LD A,(HL)
; CP " "
; LD A,"."
; JR NZ,.GETN5
; LD A,#00
; .GETN5: LD (DE),A
; INC DE
; RET Z
; LD B,#03
; .GETN6: LD A,(HL)
; CP " "
; RET Z
; LDI
; XOR A
; LD (DE),A
; DJNZ .GETN6
; RET
;---------------;---------------;---------------
GETNAME:
LD BC,#08FF
.GETN1: LD A,(HL)
CP " "
JR NZ,.GETN3
.GETN2: INC HL
DJNZ .GETN2
JR .GETN4
.GETN3: LDI
DJNZ .GETN1
.GETN4: LD A,(HL)
CP " "
LD A,"."
JR NZ,.GETN5
LD A,#00
.GETN5: LD (DE),A
INC DE
RET Z
LD B,#03
.GETN6: LD A,(HL)
CP " "
RET Z
LD A,' '
.loop: CP (HL)
JR Z,.skip
LDI
DJNZ .loop
;;;;
JP .extension
;;;;
.skip: LD C,B
LD B,0
; CF=0
ADC HL,BC
;;;;
.extension:
CP (HL)
LD A,"."
JR NZ,.copy_extension
XOR A
.copy_extension:
LD (DE),A
INC DE
RET Z ;no copy extension
; copy extension
LD BC,#03FF ;!HARDCODE ¤«¨­  à áè¨à¥­¨ï + áçñâ稪
LD A,' '
.loop2: CP (HL)
JR Z,.exit
LDI
DJNZ .loop2
.exit: XOR A
LD (DE),A
DJNZ .GETN6
RET
;----------------------------------------------------------------------;
@ -1403,6 +1444,7 @@ GETNAME:
;
; ¢å®¤: a= âਡãâ § ¯¨á¨
; ¢ë室: de'=¨­¤¥ªá § ¯¨á¨ ¢ ᯨ᪥ ª â «®£ 
; (HANDBUF) = file's direcory record
; CF - ª â «®£ ­¥ ­ ©¤¥­
SEARCH:
.Dir: LD A,FAT_ATTR.DIRECTORY
@ -1498,6 +1540,7 @@ SEARCH:
;----------------------------------------------------------------------;
; ’¥áâ ­  ¤®¯ãá⨬®¥ ¨¬ï ¨ ­ áâநâìáï ­  ¤¨áª.
; ¢å®¤: hl=áâப  ¨¬¥­¨
; ¢ë室: (TMPNAME)
GETWORD:
; !TEST
INC HL
@ -1517,11 +1560,21 @@ GETWORD:
INC HL
PUSH HL
;!TEST CHNDISK OPENDSK
;CALL OPENDSK
CALL CHNDISK
;CALL OPENDSK
;
POP HL
RET C
LD A,(HL)
OR A
RET Z
CP ' ' ;
RET Z
CP '\' ;
SCF
LD A,DSS_Error.sys.PATH_NOT_FOUND
RET NZ
INC HL
;
.dir_loop:
LD DE,TMPNAME
@ -1529,7 +1582,7 @@ GETWORD:
;
.loop: LD A,(HL)
INC HL
CP '\'
CP '\' ;
JR Z,.DIR_NAME
; AND A
; JR Z,.DIR_NAME
@ -1544,6 +1597,7 @@ GETWORD:
LD A,DSS_Error.sys.INVALID_NAME
SCF
RET
;
.DIR_NAME:
XOR A
LD (DE),A
@ -1631,7 +1685,8 @@ OPENDIR:;!TEST ;[ ] some optimize
LD (HL),'\'
INC HL
LD (HL),#00
AND A
; CF=0
;AND A
RET
.SUBDIR:
CP "."
@ -1679,7 +1734,8 @@ OPENDIR:;!TEST ;[ ] some optimize
EX DE,HL
;
CALL LOADDIR
AND A
; CF=0
;AND A
RET
;----------------------------------------------------------------------;
@ -1691,97 +1747,96 @@ FINDDIR:
;
PUSH AF
LD IX,DIRPAGE.buffer
.F_01: LD A,(IX+00)
.big_loop:
LD A,(IX+00)
OR A
JR Z,.error
CP #E5
JR Z,.F_03
LD A,(IX+11)
AND #10
JR Z,.F_03
JR Z,.next_step
LD A,(IX+11) ;!HARDCODE
AND #10 ;!HARDCODE
JR Z,.next_step
LD HL,MASKARE
LD D,XH
LD E,XL
EX DE,HL
LD B,11
LD B,11 ;!HARDCODE
.loop: LD A,(DE)
CP "?"
JR Z,.F_05
JR Z,.compared
CP (HL)
JR NZ,.F_03
.F_05: INC HL
JR NZ,.next_step
.compared:
INC HL
INC DE
DJNZ .loop
;
LD A,(IX+0)
CP "."
JP NZ,.ADDSPEC
LD A,(IX+1)
LD A,(IX+1) ;!HARDCODE
CP "."
JP NZ,.IT_DIR
;LD HL,CurrentDirectory
LD HL,WorkDirectory
LD D,H
LD E,L
INC HL
;LD BC,CurrentDirectory.DEPTH
LD BC,WorkDirectory.DEPTH
XOR A
CPIR ;!FIXIT ­¥â ¯à®¢¥àª¨ ­  § ¢¥à襭¨¥ ¯® BC=0
DEC HL ;R09 ;[x] ¨á¯à ¢«¥­ ¡ £ á ¯ àᨭ£®¬ ¡ãä¥à  ª â «®£ 
DEC HL ;R09
DEC HL
;LD BC,CurrentDirectory.DEPTH
LD BC,WorkDirectory.DEPTH
LD A,'\'
CPDR
INC HL
;AND A
; CF = 0
EX DE,HL
; CF = 0
SBC HL,DE
EX DE,HL
JR NZ,.MM3
JP .MM2_5
.F_03: LD BC,#0020
INC HL
.MM3: LD (HL),0
JP .IT_DIR
;
.next_step:
LD BC,#0020 ;!HARDCODE
ADD IX,BC
JR NC,.F_01
JR NC,.big_loop
;
.error: POP AF
OUT (SLOT3),A
LD A,DSS_Error.sys.PATH_NOT_FOUND
SCF
RET
.ADDSPEC:
LD E,XL
LD D,XH
LD HL,WorkDirectory+1
LD BC,WorkDirectory.DEPTH-1
; XOR A
; CPIR ;!FIXIT ­¥â ¯à®¢¥àª¨ ­  § ¢¥à襭¨¥ ¯® BC=0
; DEC HL
; DEC HL
; LD A,'\' ; #5C
; CP (HL)
; INC HL
; JR Z,.ADDSPE0
; LD (HL),A
; INC HL
; .ADDSPE0:
CALL .CHECK_SLASH
;R11
LD A,B
AND A
JR NZ,.MM1
JR NZ,.nxt
LD A,C
CP 8
CP 8+1+3 ;!HARDCODE ¨¬ï ª â «®£  + â®çª  + à áè¨à¥­¨¥
JR C,FINDDIR.error
;R11
LD BC,#0820
.nxt: ;
LD E,XL
LD D,XH
; [ ] ®¯â¨¬¨§ æ¨ï ¯® à §¬¥àã
EX DE,HL
CALL GETNAME
EX DE,HL
;
/*
LD BC,256*8 + ' ' ;!HARDCODE
.MM1: LD A,(DE)
INC DE
CP C
JR Z,.MM2
LD (HL),A ;!FIXIT ¢®â âãâ ¬®¦¥â ¢ë«¥§ âì §  ¯à¥¤¥«ë ¡ãä¥à  ¯à¨ ¤«¨­­®¬ ¯ã⨠¨ £à®å âì ª®¤ ¨ ¤ ­­ë¥. R11 ¢à¥¬¥­® «¥ç¨â ª®áâë«ñ¬
INC HL
.MM2 DJNZ .MM1
.MM2 DJNZ .MM1 ;x42-40 50-55
LD A,(DE)
INC DE
CP C
@ -1803,6 +1858,7 @@ FINDDIR:
.MM2_5: INC HL
.MM3: LD (HL),0
; JP IT_DIR
*/
.IT_DIR:
LD E,(IX+_sFM.ST_CLUSTER)
LD D,(IX+_sFM.ST_CLUSTER+1)
@ -2138,24 +2194,14 @@ DIR_PATH_CHANGE:
ADD 'A'
LD (CurrentPath),A
;
.Current: ;LD HL,WorkDirectory
;LD DE,CurrentDirectory
;LD BC,DIRECTORY_PATH_LENGTH
;LDIR
;RET
LD HL,CurrentDirectory
.Current: LD HL,CurrentDirectory
JP CURRDIR
;
.FullWork: LD A,(CurrentPath)
SUB 'A'
LD (FatBuffer.DRIVE),A
;
.Work: ;LD HL,CurrentDirectory
;LD DE,WorkDirectory
;LD BC,DIRECTORY_PATH_LENGTH
;LDIR
;RET
LD HL,WorkDirectory
.Work: LD HL,WorkDirectory
JP CURRDIR_FN
;
@ -2196,11 +2242,10 @@ DIR_PATH_CHECK: LD A,(HL)
INC HL
INC DE
JR Z,.loop
JP .gotoPath
;
JR .ReDir
.end: CP (HL)
RET Z
.ReDir: LD HL,CurrentPath
JR .gotoPath
;
.checkDrive: LD HL,CurrentPath
@ -2209,6 +2254,7 @@ DIR_PATH_CHECK: LD A,(HL)
CP (HL)
RET
.gotoPath: CALL FINDDIR.CHECK_SLASH
LD HL,CurrentPath
JP GETWORD
;----------------------------------------------------------------------;

View File

@ -590,7 +590,7 @@ READ: LD (.R_POINT),HL
CALL SET_FM
RET C
CALL TSTSIZE
;!FIXIT ¬®¦­® ¯¥à¥­¥á⨠¢ ­ ç «® ¯à®æ¥¤ãàë
;
LD A,D
OR E
JP Z,.NOREAD

View File

@ -707,7 +707,6 @@ FINDPATH:
CALL NZ,CHDIR
JR C,.BADPATH
LD HL,CORE_BUFFERS.EXEBUFF
;LD DE,MASKARE
CALL MASK.name
JR C,.BADPATH
CALL TST_EXT

View File

@ -1 +1 @@
595
618