-bug with path

This commit is contained in:
Anatoliy Belyanskiy 2023-12-10 08:18:56 +10:00
parent 463c6155f5
commit a7da7376ec
10 changed files with 251 additions and 141 deletions

View File

@ -46,6 +46,6 @@ DEL_FN: ;!TEST
POP AF
POP DE
JP NC,.loop
CALL WR_FAT
CALL WR_FAT ;!FIXIT ¬®¦Ąâ ­Ą ­ă¦­  âăâ? ’ ¬ ¤ «ěčĄ ˇă¤Ąâ
JP SAVEDIR ; á¡à®á¨âì ª¥è ª â «®£  ­  ¤¨áª
;

View File

@ -350,9 +350,8 @@ BLOKRD8 ADD HL,DE
ECL1 AND A
RET
;--------------------
BLOKWRC:
;-----------------------------------------------------------------------
BLOK_WR.Error:
POP BC
;[x] SAVE CLUSTER AFTER WRITE ;!TEST
POP BC
@ -363,7 +362,7 @@ BLOK_WR.ErrorWrite:
LD A,DSS_Error.sys.WRITE_ERROR
SCF
RET
;
;WRITE SECTORS OF FILE
;HL:DE - FP (in sectors), IX - data in RAM
; B - Amount sectors
@ -390,13 +389,15 @@ BLOK_WR:
;
PUSH BC
CALL G_CLUST
JR C,BLOKWRC
JR C,.Error
LD (IY+_sFM.ST_CLUSTER),L
LD (IY+_sFM.ST_CLUSTER+1),H
LD DE,(FatBuffer.ENDCLUS)
CALL W_T_FAT
PUSH HL
CALL WR_FAT
;!TEST ;!TODO 2/12/23 [ ] ¡ £ á ¨§¡ëâ®ç­®© § ¯¨áìî WR_FAT?
;CALL WR_FAT ; ¯®¤ª«. ¡ ­ªã ª¥è  FAT ¨ § ¯¨á âì ¥£® ­  ¤¨áª
;
POP HL
POP BC
JP .WR2
@ -438,14 +439,13 @@ BLOK_WR:
JP .WR2
;
.loop: PUSH BC
CALL R_F_FAT
JR NC,.WRB
PUSH HL
CALL INC_FAT
POP HL
JR C,BLOKWRC
JR C,.Error
CALL R_F_FAT
.WRB: POP BC
EX DE,HL
@ -461,7 +461,6 @@ BLOK_WR:
LD (IY+_sFM.KnownOffset_L),C
LD (IY+_sFM.KnownOffset_H),B
;
POP DE
POP BC
LD A,(CORE_BUFFERS.BootSector.S_P_C)
@ -491,16 +490,20 @@ BLOK_WR:
POP BC
LD HL,(READ.MEM)
LD DE,(CORE_BUFFERS.BootSector.B_P_S)
;
.loop2: ADD HL,DE
DEC C
JR NZ,.loop2
;
LD (READ.MEM),HL
POP DE
;
LD A,B
OR A
RET Z
.WR6: LD HL,CORE_BUFFERS.BootSector.S_P_C
;
.big_loop:
LD HL,CORE_BUFFERS.BootSector.S_P_C
LD A,B
SUB (HL)
LD B,A
@ -541,7 +544,8 @@ BLOK_WR:
LD (READ.MEM),HL
POP DE
;
JR .WR6
JR .big_loop
;
.ErrorFull:
POP BC
LD A,DSS_Error.sys.DISK_FULL
@ -554,12 +558,19 @@ TSTSIZE:
LD L,(IY+_sFM.F_POSITION) ;FP LOW
LD H,(IY+_sFM.F_POSITION+1)
ADD HL,DE
;
EXX
LD DE,0
LD L,(IY+_sFM.F_POSITION+2) ;FP HIGH
LD H,(IY+_sFM.F_POSITION+3)
ADC HL,DE
;LD DE,0 ;!TEST
LD L,(IY+_sFM.F_POSITION+2) ;FP HIGH
LD H,(IY+_sFM.F_POSITION+3)
;!TEST
JR NC,.no_inc_hl
INC HL
;ADC HL,DE
;
.no_inc_hl:
EXX ;HL':HL - NEW FP
;
LD C,(IY+_sFM.F_SIZE)
LD B,(IY+_sFM.F_SIZE+1) ;SIZE LOW
AND A
@ -757,7 +768,18 @@ RD_ONLY: POP DE
; HL - ADDRESS
; DE - SIZE
; A - FM
WRITE: LD (.R_POINT),HL
WRITE:
;!TEST ;!TODO 5/12/23 [ ] ¡ £ á ¨§¡ëâ®ç­®© § ¯¨áìî WR_FAT?
CALL WRITE_
PUSH AF
LD A,(FatCache.Update)
OR A
CALL NZ,WR_FAT ; ¯®¤ª«. ¡ ­ªã ª¥è  FAT ¨ § ¯¨á âì ¥£® ­  ¤¨áª
POP AF
RET
;
;
WRITE_: LD (.R_POINT),HL
LD (.S_POINT),HL
PUSH DE
CALL SET_FM

View File

@ -456,7 +456,7 @@ DIR_PATH_CHECK: LD A,(HL)
CP ':'
RET Z
;
.forceCheck: LD HL,CurrentDirectory+1
.forceCheck: ;LD HL,CurrentDirectory+1
LD BC,CurrentDirectory.DEPTH-1
CALL .checkDrive
JR Z,.checkDir

View File

@ -923,7 +923,7 @@ EXEC02: LD (EXE_FM),A
LD XL,A
LD XH,A
;
LD B,#02
LD B,high Dss.Move_FP.FrEnd
LD A,(EXE_FM)
CALL MOVE_FP
LD DE,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
@ -931,8 +931,13 @@ EXEC02: LD (EXE_FM),A
AND #3F
LD D,A
ADD IX,DE
LD DE,#0000
ADC HL,DE
;!TEST
JR NC,.no_inc_hl
INC HL
;LD DE,#0000
;ADC HL,DE
;
.no_inc_hl:
LD A,XH
SLA A
RL L
@ -1251,7 +1256,7 @@ M_PSP: LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
CPIR ;!FIXIT ­¥â ¯à®¢¥àª¨ ­  ¢ë室 ¯® BC=0
DEC HL
DEC HL
LD A,'\'
LD A,'\' ;
CP (HL)
INC HL
JR Z,.YP_ESLA

View File

@ -309,6 +309,8 @@ FINDDIR:
RET Z
LD (HL),A
INC HL
LD (HL),0
INC HL
RET
;----------------------------------------------------------------------;

View File

@ -54,7 +54,7 @@ INC_FAT PUSH HL
LD DE,(FatBuffer.ENDCLUS) ; ­®¬¥à ª« áâ¥à 
CALL W_T_FAT ; § ¯¨á âì ¢ ª¥è FAT-  ­®¬¥à ª« áâ¥à 
;!TEST ;!TODO 2/12/23 [ ] ¡ £ á ¨§¡ëâ®ç­®© § ¯¨áìî WR_FAT?
CALL WR_FAT ; ¯®¤ª«. ¡ ­ªã ª¥è  FAT ¨ § ¯¨á âì ¥£® ­  ¤¨áª
;CALL WR_FAT ; ¯®¤ª«. ¡ ­ªã ª¥è  FAT ¨ § ¯¨á âì ¥£® ­  ¤¨áª
;
AND A
RET
@ -68,7 +68,6 @@ INC_FAT PUSH HL
; CF - ª®­¥æ 楯®çª¨
;!FIXIT ¤ «¥¥ § â®çª  ­  â®, çâ® ¢ DE ¢á¥£¤  0 - à §¤¥« ­¥ ¡®«ìè¥ 2Gb
;-----------------------------------------------------------
;!FIXIT ®â¤ ñâ à §­ë© CF ¯à¨ 㤠筮¬ § ¢¥à襭¨¨ ¢ § ¢¨á¨¬®á⨠®â FAT16/FAT12
R_F_FAT:
EX DE,HL
LD HL,(FAT_Max_Cluster)
@ -87,25 +86,26 @@ R_F_FAT:
JR Z,R_F_F12
; fat16, ¯à®áâ® ç¨â âì á«¥¤. ­®¬¥à
R_F_F16:
LD A,H
LD B,H
;AND #0F
AND FAT_CACHE.Size_Mask_16
LD H,A
LD A,B
; A=A/16 ; A - BLOCK FAT (1 BLOCK = 8192 BYTES)
DUP FAT_CACHE.Degree_16
RRCA
EDUP
;AND #0F
AND FAT_CACHE.Part_Mask_16
;
ADD HL,HL ; HL - FAT OFFSET (FROM CASH)
LD BC,(FatCache) ; C - BLOCK FAT IN CASH
CP C
CALL NZ,READ_FAT ; A != C - READ NEW BLOCK FAT
LD DE,FATPAGE.cache ; ­ ç «® ª¥è  FAT- 
ADD HL,DE ; ­  ï祩ªã FAT
; LD A,H
; LD B,H
; ;AND #0F
; AND FAT_CACHE.Size_Mask_16
; LD H,A
; LD A,B
; ; A=A/16 ; A - BLOCK FAT (1 BLOCK = 8192 BYTES)
; DUP FAT_CACHE.Degree_16
; RRCA
; EDUP
; ;AND #0F
; AND FAT_CACHE.Part_Mask_16
; ;
; ADD HL,HL ; HL - FAT OFFSET (FROM CASH)
; LD BC,(FatCache) ; C - BLOCK FAT IN CASH
; CP C
; CALL NZ,READ_FAT ; A != C - READ NEW BLOCK FAT
; LD DE,FATPAGE.cache ; ­ ç «® ª¥è  FAT- 
; ADD HL,DE ; ­  ï祩ªã FAT
CALL GET_FAT16_CELL
LD E,(HL) ; ¯à®ç¨â âì ­®¬¥à ª« áâ¥à 
INC HL
LD D,(HL)
@ -119,32 +119,34 @@ R_F_F16:
RET
;
R_F_F12:
LD D,H
LD E,L
RR H
RR L ; ᤢ¨£ ¢¯à ¢® ç¥à¥§ CF
PUSH AF ; á®åà. ä« £
ADD HL,DE ; CLUSTER * 1.5
;
;!FIXIT å¥à­ï ª ª ï-â®
;IF COMPILE_UNUSED_CODE
LD A,H
LD B,H
AND #1F
LD H,A
LD A,B
RLCA
RLCA
RLCA
AND #07
LD BC,(FatCache) ; C - BLOCK FAT IN CASH
CP C
CALL NZ,READ_FAT ; ¯à®ç¨â âì ¢ ª¥è 16 ᥪâ®à®¢ FAT- 
;ENDIF
;
LD DE,FATPAGE.cache ; ­ ç «® ª¥è  FAT- 
ADD HL,DE ; ­  ï祩ªã FAT
POP AF ; ¢®ááâ. ä« £
CALL GET_FAT12_CELL
; LD D,H
; LD E,L
; RR H
; RR L ; ᤢ¨£ ¢¯à ¢® ç¥à¥§ CF
; PUSH AF ; á®åà. ä« £
; ADD HL,DE ; CLUSTER * 1.5
; ;
; ;!FIXIT ®¯â¨¬¨§¨à®¢ âì
; ;IF COMPILE_UNUSED_CODE
; LD A,H
; LD B,H
; AND #1F
; LD H,A
; LD A,B
; RLCA
; RLCA
; RLCA
; AND #07
; LD BC,(FatCache) ; C - BLOCK FAT IN CASH
; CP C
; CALL NZ,READ_FAT ; ¯à®ç¨â âì ¢ ª¥è 16 ᥪâ®à®¢ FAT- 
; ;ENDIF
; ;
; LD DE,FATPAGE.cache ; ­ ç «® ª¥è  FAT- 
; ADD HL,DE ; ­  ï祩ªã FAT
; POP AF ; ¢®ááâ. ä« £
LD E,(HL)
INC HL
LD D,(HL)
@ -208,25 +210,26 @@ W_T_FAT:
JR Z,W_T_F12
W_T_F16:
PUSH DE
LD A,H
LD B,H
;AND #0F
AND FAT_CACHE.Size_Mask_16
LD H,A
LD A,B
; A=A/16 ; A - BLOCK FAT (1 BLOCK = 8192 BYTES)
DUP FAT_CACHE.Degree_16
RRCA
EDUP
;AND #0F
AND FAT_CACHE.Part_Mask_16
;
ADD HL,HL ; HL - FAT OFFSET (FROM CASH) ;!HARDCODE fat16 - à §¬¥à § ¯¨á¨ FAT
LD BC,(FatCache) ; C - BLOCK FAT IN CASH
CP C
CALL NZ,READ_FAT ; A != C - READ NEW BLOCK FAT
LD DE,FATPAGE.cache
ADD HL,DE ; ­  ï祩ªã FAT
; LD A,H
; LD B,H
; ;AND #0F
; AND FAT_CACHE.Size_Mask_16
; LD H,A
; LD A,B
; ; A=A/16 ; A - BLOCK FAT (1 BLOCK = 8192 BYTES)
; DUP FAT_CACHE.Degree_16
; RRCA
; EDUP
; ;AND #0F
; AND FAT_CACHE.Part_Mask_16
; ;
; ADD HL,HL ; HL - FAT OFFSET (FROM CASH) ;!HARDCODE fat16 - à §¬¥à § ¯¨á¨ FAT
; LD BC,(FatCache) ; C - BLOCK FAT IN CASH
; CP C
; CALL NZ,READ_FAT ; A != C - READ NEW BLOCK FAT
; LD DE,FATPAGE.cache
; ADD HL,DE ; ­  ï祩ªã FAT
CALL GET_FAT16_CELL
POP DE
LD (HL),E ; á®åà. ¢ ª¥è¥ FAT- 
INC HL ; ­®¬¥à ª« áâ¥à 
@ -244,37 +247,39 @@ W_T_F16:
; fat12
W_T_F12: ;!FIXIT ¯¥à¥¤¥« âì ­  ¯¥à¥¬¥­­ë¥ FAT_CACHE
PUSH DE
LD D,H
LD E,L
; ADD HL,HL
; ADD HL,DE
; LD D,H
; LD E,L
; ; ADD HL,HL
; ; ADD HL,DE
; ; RR H
; ; RR L ;CLUSTER * 1.5
; ; PUSH AF
; RR H
; RR L ;CLUSTER * 1.5
; PUSH AF
RR H
RR L ; ᤢ¨£ ¢¯à ¢® ç¥à¥§ CF
PUSH AF ; á®åà. ä« £
ADD HL,DE ; CLUSTER * 1.5
;
;!FIXIT å¥à­ï ª ª ï-â®
;IF COMPILE_UNUSED_CODE
LD A,H
LD B,H
AND #1F
LD H,A
LD A,B
RLCA
RLCA
RLCA
AND #07
LD BC,(FatCache) ; C - BLOCK FAT IN CASH
CP C
CALL NZ,READ_FAT ; ¯à®ç¨â âì ¢ ª¥è 16 ᥪâ®à®¢ FAT- 
;ENDIF
;
LD DE,FATPAGE.cache
ADD HL,DE
POP AF
; RR L ; ᤢ¨£ ¢¯à ¢® ç¥à¥§ CF
; PUSH AF ; á®åà. ä« £
; ADD HL,DE ; CLUSTER * 1.5
; ;
; ;!FIXIT ®¯â¨¬¨§¨à®¢ âì
; ;IF COMPILE_UNUSED_CODE
; LD A,H
; LD B,H
; AND #1F
; LD H,A
; LD A,B
; RLCA
; RLCA
; RLCA
; AND #07
; LD BC,(FatCache) ; C - BLOCK FAT IN CASH
; CP C
; CALL NZ,READ_FAT ; ¯à®ç¨â âì ¢ ª¥è 16 ᥪâ®à®¢ FAT- 
; ;ENDIF
; ;
; LD DE,FATPAGE.cache
; ADD HL,DE
; POP AF
CALL GET_FAT12_CELL
POP DE
JP C,W_T_F01 ; ­®¬¥à ­¥çñâ­ë©
LD (HL),E
@ -314,6 +319,10 @@ W_T_F01:;
POP AF
POP HL
OUT (SLOT3),A
; [x] 2/12/23 FAT ­¥ ¢á¥£¤  ¬®£ § ¯¨á âìáï ­  HDD
LD A,1
LD (FatCache.Update),A
;
AND A
RET
@ -429,11 +438,80 @@ WR_FAT: SET_PAGE_X FATPAGE
RET
;¢å®¤: HL - ­®¬¥à ª« áâ¥à 
;¢ë室: HL -  ¤à¥á ­ã¦­®© ï祩ª¨ ¢ áâà ­¨æ¥ FATPAGE
GET_FAT16_CELL:
LD A,H
LD B,H
;AND #0F
AND FAT_CACHE.Size_Mask_16
LD H,A
LD A,B
; A=A/16 ; A - BLOCK FAT (1 BLOCK = 8192 BYTES)
DUP FAT_CACHE.Degree_16
RRCA
EDUP
;AND #0F
AND FAT_CACHE.Part_Mask_16
;
ADD HL,HL ; HL - FAT OFFSET (FROM CASH)
LD BC,(FatCache) ; C - BLOCK FAT IN CASH
CP C
CALL NZ,READ_FAT ; A != C - READ NEW BLOCK FAT
LD DE,FATPAGE.cache ; ­ ç «® ª¥è  FAT- 
ADD HL,DE ; ­  ï祩ªã FAT
RET
;¢å®¤: HL - ­®¬¥à ª« áâ¥à 
;¢ë室: HL -  ¤à¥á ­ã¦­®© ï祩ª¨ ¢ áâà ­¨æ¥ FATPAGE
; CF - çñâ­ë©/­¥çñâ­ë©  ¤à¥á ª« áâ¥à 
GET_FAT12_CELL:
LD D,H
LD E,L
RR H
RR L ; ᤢ¨£ ¢¯à ¢® ç¥à¥§ CF
PUSH AF ; á®åà. ä« £
ADD HL,DE ; CLUSTER * 1.5
;
;!FIXIT ®¯â¨¬¨§¨à®¢ âì
;IF COMPILE_UNUSED_CODE
LD A,H
LD B,H
;
AND #1F
;AND FAT_CACHE.Size_Mask_16
;
LD H,A
LD A,B
;
RLCA
RLCA
RLCA
;DUP FAT_CACHE.Degree_16
; RRCA
;EDUP
AND #07
;AND FAT_CACHE.Part_Mask_16
;
LD BC,(FatCache) ; C - BLOCK FAT IN CASH
CP C
CALL NZ,READ_FAT ; ¯à®ç¨â âì ¢ ª¥è 16 ᥪâ®à®¢ FAT- 
;ENDIF
;
LD DE,FATPAGE.cache
ADD HL,DE
POP AF
RET
FatCache: WORD #0000
.Block EQU FatCache
.Update EQU FatCache+1
FAT_Max_Cluster: WORD #0FF0 ; ¬ ªá. ç¨á«® ª« áâ¥à®¢ FAT12 (¡¥§ á«ã¦.)
FAT_Max_Cluster: WORD #0FF0 ; ¬ ªá. ç¨á«® ª« áâ¥à®¢ (¡¥§ á«ã¦.)
;//MODULE: FAT_X
;[END]

View File

@ -4,8 +4,8 @@
;//CREATE: 19-05-1998 AUTHOR: Denis Parinov
;//UPDATE: 24-10-1999 DNS Restore module
CMOUSE EQU #1B ; !FIXIT ­  sp2000.inc
DMOUSE EQU #1A ; !FIXIT ­  sp2000.inc
PORT_MOUSE.Ctrl EQU Z84.SIO.Ch_B.Ctrl
PORT_MOUSE.Data EQU Z84.SIO.Ch_B.Data
; MOUSE SOFTWARE SPECIFICATION
;---------------------------------------------
@ -164,27 +164,30 @@ MS_INIT DI
;OUT (#10),A
;
XOR A ;LD A,0
OUT (CMOUSE),A
OUT (PORT_MOUSE.Ctrl),A
INC A ;LD A,1
OUT (CMOUSE),A
OUT (PORT_MOUSE.Ctrl),A
DEC A ;LD A,0
OUT (CMOUSE),A
OUT (PORT_MOUSE.Ctrl),A
LD A,3
OUT (CMOUSE),A
OUT (PORT_MOUSE.Ctrl),A
LD A,#41
OUT (CMOUSE),A
OUT (PORT_MOUSE.Ctrl),A
LD A,4
OUT (CMOUSE),A
OUT (PORT_MOUSE.Ctrl),A
;!TEST mouse
LD A,#47 ; ¯¥à¢ë© ¬­®¦¨â¥«ì = 16 875000/Œ­1*Œ­2=1215
;LD A,#44
;LD A,#04 ; ¯¥à¢ë© ¬­®¦¨â¥«ì = 1 875000/Œ­1*Œ­2=4807
OUT (PORT_MOUSE.Ctrl),A
;
OUT (CMOUSE),A
LD A,5
OUT (CMOUSE),A
LD A,#E0
OUT (CMOUSE),A
OUT (PORT_MOUSE.Ctrl),A
; [ ] ¤«ï ª®à४⭮£® ¨­¨â  Sega ¤¦®©á⨪  ¢ ¯®àâã ª¥¬¯áâ®­ ¤¦®©á⨪ 
LD A,%1110'0000
;LD A,%0110'0000
;
OUT (PORT_MOUSE.Ctrl),A
;!TEST mouse
LD A,#55
@ -637,10 +640,10 @@ MS003 POP BC
XOR A
RET
READ_M: IN A,(CMOUSE)
READ_M: IN A,(PORT_MOUSE.Ctrl)
RRCA
RET NC
IN A,(DMOUSE)
IN A,(PORT_MOUSE.Data)
LD L,A
BIT 6,A
CCF
@ -649,7 +652,7 @@ READ_M: IN A,(CMOUSE)
;!TEST mouse freeeeezzzz
LD BC,#2000
;
TST_01: IN A,(CMOUSE)
TST_01: IN A,(PORT_MOUSE.Ctrl)
RRCA
;!TEST mouse freeeeezzzz
JR C,.NXT
@ -662,7 +665,7 @@ TST_01: IN A,(CMOUSE)
;JR NC,TST_01
;
.NXT: IN A,(DMOUSE)
.NXT: IN A,(PORT_MOUSE.Data)
LD E,A
BIT 6,A
CCF
@ -671,7 +674,7 @@ TST_01: IN A,(CMOUSE)
;[x] mouse freeeeezzzz !TEST
LD BC,#2000
;
TST_02: IN A,(CMOUSE)
TST_02: IN A,(PORT_MOUSE.Ctrl)
RRCA
;[x] mouse freeeeezzzz !TEST
JR C,.NXT
@ -682,7 +685,7 @@ TST_02: IN A,(CMOUSE)
RET
;JR NC,TST_02
;
.NXT: IN A,(DMOUSE)
.NXT: IN A,(PORT_MOUSE.Data)
LD D,A
BIT 6,A
CCF

View File

@ -1 +1 @@
769
784

View File

@ -15,7 +15,7 @@
define _shift _bit&1)) + _bit&2)) + _bit&4)) + _bit&8)) + _bit&16)) + _bit&32)) + _bit&64)) + _bit&128))
;
FAT_CACHE:
.Size EQU #2000
.Size EQU #1000
.Sector_Size EQU #200
.Sectors EQU .Size / .Sector_Size
; for FAT16
@ -23,7 +23,7 @@ FAT_CACHE:
.Degree_16 EQU _shift
.Size_Mask_16 EQU high (.Size/.bytes_record_16 - 1)
.Part_Mask_16 EQU ((1<<(.bytes_record_16*8)) / (.Size/2))-1
; for FAT12
; for FAT12 ;!TODO
.bytes_record_12 EQU 2
.Degree_12 EQU _shift
.Size_Mask_12 EQU high (.Size/.bytes_record_12 - 1)

@ -1 +1 @@
Subproject commit 349ba286106d21a77cf3f8a25b6f7c952eccb046
Subproject commit 21c7eb690adb62e35c41fdcda76dc3bf97f369b4