mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-17 18:30:35 +03:00
промежуточное
This commit is contained in:
parent
59a72bf084
commit
c37fdf343c
@ -184,10 +184,10 @@ CONTINUE:
|
||||
CALL DOSMESS
|
||||
|
||||
LD A,(DRIVE)
|
||||
LD BC,Dss.BootDSK.Set*256 + Dss.BootDSK
|
||||
LD BC,Dss.BootDSK.Set
|
||||
RST ToDSS
|
||||
|
||||
LD B,0
|
||||
LD B,high Dss.BootDSK.Get
|
||||
ELSE
|
||||
|
||||
IF ORIGINAL_DSS
|
||||
@ -205,10 +205,10 @@ CONTINUE:
|
||||
|
||||
IF ORIGINAL_DSS
|
||||
LD A,(DRIVE)
|
||||
LD BC,Dss.BootDSK.Set*256 + Dss.BootDSK
|
||||
LD BC,Dss.BootDSK.Set
|
||||
RST ToDSS
|
||||
|
||||
LD B,0
|
||||
LD B,high Dss.BootDSK.Get
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
|
||||
@ -1,8 +1,9 @@
|
||||
!TODO
|
||||
‚ ¦®¥:
|
||||
|
||||
[ ] ¯¥à¥¤ ç «®¬ à ¡®âë «î¡®© ¯à®æ¥¤ãàë § ¯¨á¨/çâ¥¨ï ¤à ©¢ ãáâ ¢«¨¢ âì ä« £, ç⮡ ¥ ¡ë«® ¯®¢â®à®£® ¢ë§®¢ (¨§ ¯à¥àë¢ ¨ï, ¯à¨¬¥à)
|
||||
[ ] ¡«®ª¨à®¢ª ä ©«®¢ ¢ ä ©«®¢ëå ¬ ¨¯ã«ïâ®à å (ç⮡ ¥ ®âªàë¢ âì § ¯¨áì 㦥 ®âªàëâë© § ¯¨áì ä ©«, ¯à¨¬¥à)
|
||||
‘।¥¥:
|
||||
[ ] ¯¥à¥¤ à¥áª ®¬ ¤à ©¢®¢ ¯à®¢¥àïâì ®âªàëâë¥ åí¤«ë ¨ ¥á«¨ ¡ãª¢ ¤¨áª ¬¥ï¥âáï, â® ¬¥ïâì ¤à ©¢ ¢ åí¤«¥
|
||||
[x] ;!TEST ¯¥à¥¤ à¥áª ®¬ ¤à ©¢®¢ ¯à®¢¥àïâì ®âªàëâë¥ åí¤«ë ¨ ¥á«¨ ¡ãª¢ ¤¨áª ¬¥ï¥âáï, â® ¬¥ïâì ¤à ©¢ ¢ åí¤«¥
|
||||
[ ] ç âì à ¡®â âì á äãªæ¨ï¬¨ REMOVABLE ¨ MEDIA CHECK rst #18. ‚®§¢à é âì § 票¥ #FF, ¥á«¨ ¯®à冷ª ¡ãª¢ ¨§¬¥¨«áï
|
||||
|
||||
‚®®¡é¥ ¥ ¢ ¦®¥:
|
||||
@ -11,14 +12,16 @@
|
||||
|
||||
DSS 1.70.2
|
||||
ˆ§¬¥¥¨ï ¯®á«¥ ¢¥àᨨ 1.70
|
||||
[+] ¨á¯à ¢«¥ ¡ £ á "C:\>CD E:\"
|
||||
[+] ¨á¯à ¢«¥ ¡ £ á ¯¥à¥ª«î票¥¬ ¤à㣮© ¤¨áª ¨§ ¥ª®à¥¢®© ¤¨à¥ªâ®à¨¨, ª®£¤ ®¢®¬ ¤¨áª¥ ®ª §ë¢ «áï ¢ ¥áãé¥áâ¢ãî饩 ¤¨à¥ªâ®à¨¨
|
||||
[+] ¯à¨ ç⥨¨/§ ¯¨á¨ ä ©« ¥ ¯à®¨á室¨â ¨§¡ëâ®ç®¥ ¯¥à¥ç¨âë¢ ¨¥ ª« áâ¥à®¢ ®â ç « ä ©«
|
||||
CORE:
|
||||
[+] ¯à¨ ç⥨¨/§ ¯¨á¨ ä ©« ¥ ¯à®¨á室¨â "宫®á⮥" ¯¥à¥ç¨âë¢ ¨¥ ª« áâ¥à®¢ ®â ç « ä ©«
|
||||
[+] ¯¥à¥ç¨âë¢ ¨¥ BPB ⥯¥àì ¤¥« ¥âáï ¥ ª ¦¤ë© ç¨å, ª®£¤ ¤® (¨ ¡ £ ¯à¨ § £à㧪¥ á ¤¨áª "B:" ¥â :-P )
|
||||
[+] ¨§¬¥¥ à ¡®â á RAM DISK, ⥯¥àì ® ¬®¦¥â ¡ëâì § £àã§®çë¬
|
||||
[+] ¯¥à¥å®¤ ¤à㣮© ¤¨áª ¯à®¨á室¨â ¡¥§ ¡ £ á ¤¨à¥ªâ®à¨¥© ®â áâ ண® ¤¨áª
|
||||
[+] ¨á¯à ¢«¥ë ¡ £¨ á ®¡à ¡®âª®© ¡ãä¥à®¢ ª®¬ ¤®© áâப¨
|
||||
[+] ¨á¯à ¢«¥ë ¡ £¨ ¢ äãªæ¨ïå: WINCOPY, WINREST, SCROLL, SETVMOD, SELPAGE
|
||||
SHELL:
|
||||
[+] ¨á¯à ¢«¥ ¡ £ á "C:\>CD E:\"
|
||||
[+] ¨á¯à ¢«¥ë ¡ £¨ á ®¡à ¡®âª®© ¡ãä¥à®¢ ª®¬ ¤®© áâப¨
|
||||
UNSORTED:
|
||||
[+] ¨á¯à ¢«¥ ¡ £ á ¯¥à¥ª«î票¥¬ ¤à㣮© ¤¨áª ¨§ ¥ª®à¥¢®© ¤¨à¥ªâ®à¨¨, ª®£¤ ®¢®¬ ¤¨áª¥ ®ª §ë¢ «áï ¢ ¥áãé¥áâ¢ãî饩 ¤¨à¥ªâ®à¨¨
|
||||
[+] ¬¥«ª¨¥ ¨ ¥ ®ç¥ì ®¯â¨¬¨§ 樨
|
||||
|
||||
;ˆ§¬¥¥¨ï ¯®á«¥ ¢¥àᨨ 1.60
|
||||
|
||||
170
DSS/DOS5.ASM
170
DSS/DOS5.ASM
@ -316,6 +316,7 @@ OPEN_FN:;!TEST Current Dir ;[x] 15/10/23
|
||||
POP HL
|
||||
RET C
|
||||
LD A,C
|
||||
;!FIXIT ᤥ« âì ª ª ¢ mkdir ¨«¨ rmdir
|
||||
;
|
||||
;R08
|
||||
OPEN: LD (.TMP),A ; enter point for CREATE
|
||||
@ -328,7 +329,15 @@ OPEN: LD (.TMP),A ; enter point for CREATE
|
||||
.FILE: CALL SEARCH ; enter point for EXEC
|
||||
RET C
|
||||
;R02
|
||||
.FM: CALL GET_FM ; enter point for ATTRIB
|
||||
.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
|
||||
RET C
|
||||
LD A,C
|
||||
EX AF,AF'
|
||||
@ -390,6 +399,13 @@ CLOSE: LD (.TMP),A
|
||||
LD D,(IY+_sFM.DIR_CLUSTER)
|
||||
LD E,(IY+_sFM.DIR_CLUSTER+1)
|
||||
PUSH DE
|
||||
; [ ] 13/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
|
||||
@ -866,7 +882,14 @@ CHDIR_FN:
|
||||
POP HL
|
||||
RET C
|
||||
CALL CHDIR
|
||||
JP DIR_PATH_CHANGE.FullCurrent
|
||||
; ¥á«¨ 㤠ç®, â® ª®¯¨à㥬 WorkDirectory ¢ CurrentDirectory
|
||||
JP NC,DIR_PATH_CHANGE.FullCurrent
|
||||
; ¥á«¨ ¥ã¤ ç®, â® ¢®§¢à é ¥¬áï â㤠®âªã¤ ¯à¨è«¨
|
||||
PUSH AF
|
||||
LD HL,CurrentDirectory
|
||||
CALL CHDIR
|
||||
POP AF
|
||||
RET
|
||||
;
|
||||
CHDIR: CALL GETWORD ; â¥áâ ¤®¯ãáâ. ¨¬ï ¨ áâà. ¤¨áª
|
||||
RET C
|
||||
@ -876,6 +899,7 @@ CHDIR: CALL GETWORD ;
|
||||
CALL NZ,OPENDIR
|
||||
RET
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
; ”ãªæ¨ï #1B. ‘®§¤ ¨¥ ª â «®£ .
|
||||
;
|
||||
@ -893,15 +917,22 @@ MKDIR: ;!TEST Current Dir ;[x] 15/10/23
|
||||
POP HL
|
||||
RET C
|
||||
LD A,C
|
||||
CALL .START
|
||||
PUSH AF
|
||||
LD HL,CurrentDirectory
|
||||
CALL CHDIR
|
||||
POP AF
|
||||
RET
|
||||
;
|
||||
|
||||
CALL GETWORD ; â¥áâ ¤®¯ãáâ. ¨¬ï ¨ áâà. ¤¨áª
|
||||
.START: CALL GETWORD ; â¥áâ ¤®¯ãáâ. ¨¬ï ¨ áâà. ¤¨áª
|
||||
RET C
|
||||
LD HL,TMPNAME ; 8.3 ¨¬ï
|
||||
LD DE,MASKARE ; ¡ãä¥à ¨¬¥¨ 11 ᨬ¢. ä®à¬ â
|
||||
CALL MASK ; ¯à¥®¡à. ¨¬ï 8.3 -> 11 ä®à¬ â
|
||||
RET C
|
||||
CALL LOADDIR ; ¯à®ç¨â âì ᯨ᮪ ª â «®£
|
||||
;!TEST optimization à ¥¥ GETWORD 㦥 § £à㧨« ¤¨à¥ªâ®à¨î
|
||||
;CALL LOADDIR ; ¯à®ç¨â âì ᯨ᮪ ª â «®£
|
||||
;
|
||||
CALL DSEARCH ; ¯®¨áª § ¯¨á¨ ª â «®£ ¢ ᯨ᪥ ¤¨áª
|
||||
LD A,DSS_Error.sys.DIR_EXISTS
|
||||
CCF
|
||||
@ -1049,6 +1080,7 @@ MKDIR: ;!TEST Current Dir ;[x] 15/10/23
|
||||
AND A
|
||||
RET
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
; ”ãªæ¨ï #1C. “¤ «¥¨¥ ª â «®£ .
|
||||
; Œ®¦® 㤠«¨âì ⮫쪮 ¯ãá⮩ ª â «®£.
|
||||
@ -1067,8 +1099,15 @@ RMDIR: ;!TEST Current Dir ;[x] 15/10/23
|
||||
POP HL
|
||||
RET C
|
||||
LD A,C
|
||||
CALL .START
|
||||
PUSH AF
|
||||
LD HL,CurrentDirectory
|
||||
CALL CHDIR
|
||||
CALL DIR_PATH_CHANGE.Current
|
||||
POP AF
|
||||
RET
|
||||
;
|
||||
CALL GETWORD
|
||||
.START: CALL GETWORD
|
||||
RET C
|
||||
LD HL,TMPNAME
|
||||
LD DE,MASKARE
|
||||
@ -1605,7 +1644,9 @@ TMPNAME: DZ ' ' ; 12
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
|
||||
;----------------------------------------------------------------------;
|
||||
;----------------------------------------------------------------------;
|
||||
; IN: A - drive number
|
||||
;
|
||||
;????? R10
|
||||
OPENDSK:
|
||||
;!TEST DRV.Open ®¡å®¤
|
||||
@ -1616,6 +1657,13 @@ 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
|
||||
@ -1666,18 +1714,17 @@ OPENDIR:
|
||||
DEC HL ;R05
|
||||
JR Z,.REROOT1 ;R05
|
||||
.SUDI1: EXX
|
||||
LD HL,MASKARE
|
||||
LD DE,MASKARE+1
|
||||
LD BC,10 ;!HARDCODE
|
||||
LD (HL),' '
|
||||
LDIR
|
||||
LD HL,MASKARE ;!FIXIT ¬®¦® ¥ § â¨à âì ¯à¥¤¢ à¨â¥«ì®?
|
||||
LD DE,MASKARE+1
|
||||
LD BC,10 ;!HARDCODE
|
||||
LD (HL),' '
|
||||
LDIR
|
||||
EXX
|
||||
LD DE,MASKARE
|
||||
.SUBDIR0:
|
||||
LDI
|
||||
.loop: LDI
|
||||
LD A,(HL)
|
||||
OR A
|
||||
JR NZ,.SUBDIR0
|
||||
JR NZ,.loop
|
||||
JR .SUBDIR3
|
||||
.SUBDIR2:
|
||||
LD DE,MASKARE
|
||||
@ -1688,7 +1735,7 @@ OPENDIR:
|
||||
RET C
|
||||
LD (IY+_sFM.ST_CLUSTER),E
|
||||
LD (IY+_sFM.ST_CLUSTER+1),D
|
||||
LD DE,#4000
|
||||
LD DE,#4000 ;!HARDCODE
|
||||
LD (IY+_sFM.F_SIZE),E
|
||||
LD (IY+_sFM.F_SIZE+1),D
|
||||
CALL LOADDIR
|
||||
@ -1993,11 +2040,11 @@ LOADDIR:
|
||||
PUSH AF
|
||||
;!TEST no ldir
|
||||
; ®ç¨áâ¨âì ª¥è ª â «®£
|
||||
;LD HL,#C000
|
||||
;LD DE,#C001
|
||||
;LD BC,#3FFF
|
||||
;LD (HL),L
|
||||
;LDIR
|
||||
; LD HL,#C000
|
||||
; LD DE,#C001
|
||||
; LD BC,#3FFF
|
||||
; LD (HL),L
|
||||
; LDIR
|
||||
;
|
||||
LD A,(FatBuffer.DRIVE) ; ®¬¥à ¤¨áª
|
||||
LD (IY+_sFM.DRIVE),A ; á®åà. ¢ ¤¥áªà¨¯â®à
|
||||
@ -2010,7 +2057,7 @@ LOADDIR:
|
||||
LD DE,#4000 ; ᪮«ìª®
|
||||
XOR A ; ¤¥áªà¨¯â®à
|
||||
CALL READ ; ç⥨¥ ¨§ ä ©«
|
||||
LD (SAVEDIR.DIRSIZE),DE ; ç¨á«® ¯à®ç¨â. ¡ ©â®¢
|
||||
LD (SAVEDIR.DIRSIZE),DE ; ç¨á«® ¯à®ç¨â. ¡ ©â®¢
|
||||
POP AF
|
||||
OUT (SLOT3),A
|
||||
AND A
|
||||
@ -2019,11 +2066,17 @@ LOADDIR:
|
||||
LD HL,(FatBuffer.DIR_FRH) ; áâ. à §àï¤
|
||||
LD IX,(FatBuffer.DIR_FRL) ; ®¬¥à «®£. ᥪâ®à
|
||||
LD A,(FatBuffer.DIR_S_S)
|
||||
LD B,32 ; !HARDCODE à §¬¥à root-ª â «®£
|
||||
SUB B
|
||||
JR NC,.RTD1
|
||||
ADD A,B
|
||||
LD B,A ; ç¨á«® ᥪâ®à®¢
|
||||
;!TEST
|
||||
LD B,32 ; !HARDCODE 16384/(sector 512). à §¬¥à root-ª â «®£
|
||||
CP B
|
||||
JR NC,.RTD1
|
||||
LD B,A ; ç¨á«® ᥪâ®à®¢
|
||||
;LD B,32 ; !HARDCODE 16384/(sector 512). à §¬¥à root-ª â «®£
|
||||
;SUB B
|
||||
;JR NC,.RTD1
|
||||
;ADD A,B
|
||||
;LD B,A ; ç¨á«® ᥪâ®à®¢
|
||||
;
|
||||
.RTD1: LD A,(FatBuffer.DRIVE) ; ®¬¥à ¤¨áª
|
||||
LD DE,DIR ; ¡ãä¥à
|
||||
LD C,Dss.DRV.Read ; ç⥨¥ ᥪâ®à®¢
|
||||
@ -2086,26 +2139,34 @@ SAVEDIR:
|
||||
|
||||
|
||||
;----------------------------------------------------------------------;
|
||||
;!TEST Current Dir ;[x] 15/10/23
|
||||
DIR_PATH_CHANGE:
|
||||
.FullCurrent: LD A,(FatBuffer.DRIVE)
|
||||
ADD 'A'
|
||||
LD (CurrentPath),A
|
||||
;
|
||||
.Current: LD HL,WorkDirectory
|
||||
LD DE,CurrentDirectory
|
||||
LD BC,DIRECTORY_PATH_LENGTH
|
||||
LDIR
|
||||
RET
|
||||
.Current: ;LD HL,WorkDirectory
|
||||
;LD DE,CurrentDirectory
|
||||
;LD BC,DIRECTORY_PATH_LENGTH
|
||||
;LDIR
|
||||
;RET
|
||||
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
|
||||
.Work: ;LD HL,CurrentDirectory
|
||||
;LD DE,WorkDirectory
|
||||
;LD BC,DIRECTORY_PATH_LENGTH
|
||||
;LDIR
|
||||
;RET
|
||||
LD HL,WorkDirectory
|
||||
JP CURRDIR_FN
|
||||
;
|
||||
|
||||
;
|
||||
DIR_PATH_CHECK: LD A,(HL)
|
||||
CP '\'
|
||||
JR NZ,.notRootDir
|
||||
@ -2158,6 +2219,41 @@ 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
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
|
||||
|
||||
|
||||
252
DSS/DOS_FM.ASM
252
DSS/DOS_FM.ASM
@ -118,7 +118,8 @@ GET_FM: LD IY,0
|
||||
|
||||
; HL:IX - OFFSET POINTER
|
||||
; A - FILE MANIPULATOR
|
||||
MOVE_FP CALL SET_FM
|
||||
MOVE_FP:
|
||||
CALL SET_FM
|
||||
RET C
|
||||
INC B
|
||||
DEC B
|
||||
@ -254,7 +255,6 @@ BLOK_RD: PUSH BC
|
||||
POP DE
|
||||
JP BLOKRD2
|
||||
;
|
||||
|
||||
BLOKRD1:
|
||||
PUSH BC
|
||||
CALL R_F_FAT
|
||||
@ -357,15 +357,18 @@ BLOKWRC:
|
||||
;[x] SAVE CLUSTER AFTER WRITE ;!TEST
|
||||
POP BC
|
||||
;
|
||||
BLOKWR0 POP BC
|
||||
BLOK_WR.ErrorWrite:
|
||||
POP BC
|
||||
POP DE
|
||||
LD A,DSS_Error.sys.WRITE_ERROR
|
||||
SCF
|
||||
RET
|
||||
|
||||
;WRITE SECTORS OF FILE
|
||||
;HL:DE - FP (in sectors)
|
||||
;HL:DE - FP (in sectors), IX - data in RAM
|
||||
; B - Amount sectors
|
||||
BLOK_WR PUSH BC
|
||||
BLOK_WR:
|
||||
PUSH BC
|
||||
LD (READ.MEM),IX
|
||||
LD A,(CORE_BUFFERS.BootSector.S_P_C) ;SECTORS PER CLUSTER
|
||||
LD C,A
|
||||
@ -396,7 +399,7 @@ BLOK_WR PUSH BC
|
||||
CALL WR_FAT
|
||||
POP HL
|
||||
POP BC
|
||||
JP BLOKWR2
|
||||
JP .WR2
|
||||
|
||||
.saveClustersOffset:
|
||||
;[x] SAVE CLUSTER AFTER WRITE ;!TEST
|
||||
@ -404,7 +407,7 @@ BLOK_WR PUSH BC
|
||||
LD D,(IY+_sFM.KnownCluster_H)
|
||||
LD A,D
|
||||
OR E
|
||||
JR Z,BLOKWR2
|
||||
JR Z,.WR2
|
||||
;
|
||||
PUSH DE
|
||||
PUSH HL
|
||||
@ -426,30 +429,30 @@ BLOK_WR PUSH BC
|
||||
POP DE
|
||||
;
|
||||
EX DE,HL
|
||||
JP BLOKWR2
|
||||
JP .WR2
|
||||
.noOptimization_1:
|
||||
POP BC
|
||||
.noOptimization_2:
|
||||
POP HL
|
||||
POP DE
|
||||
JP BLOKWR2
|
||||
JP .WR2
|
||||
;
|
||||
|
||||
|
||||
BLOKWR1 PUSH BC
|
||||
.loop: PUSH BC
|
||||
CALL R_F_FAT
|
||||
JR NC,BLOKWRB
|
||||
JR NC,.WRB
|
||||
PUSH HL
|
||||
CALL INC_FAT
|
||||
POP HL
|
||||
JR C,BLOKWRC
|
||||
CALL R_F_FAT
|
||||
BLOKWRB POP BC
|
||||
.WRB: POP BC
|
||||
EX DE,HL
|
||||
DEC BC
|
||||
BLOKWR2 LD A,B
|
||||
.WR2: LD A,B
|
||||
OR C
|
||||
JR NZ,BLOKWR1
|
||||
JR NZ,.loop
|
||||
|
||||
;[x] SAVE CLUSTER AFTER WRITE ;!TEST
|
||||
LD (IY+_sFM.KnownCluster_L),L
|
||||
@ -465,9 +468,9 @@ BLOKWR2 LD A,B
|
||||
SUB E
|
||||
LD C,A
|
||||
CP B
|
||||
JR C,BLOKWR3 ;SIZE > RESIDUE CLUSTER
|
||||
JR C,.WR3 ;SIZE > RESIDUE CLUSTER
|
||||
LD C,B ;SIZE < CLUSTER
|
||||
BLOKWR3 LD A,B
|
||||
.WR3: LD A,B
|
||||
SUB C
|
||||
LD B,A
|
||||
PUSH HL
|
||||
@ -476,94 +479,99 @@ BLOKWR3 LD A,B
|
||||
CALL NSECTOR
|
||||
POP DE
|
||||
ADD IX,DE
|
||||
JR NC,BLOKWR4
|
||||
JR NC,.WR4
|
||||
INC HL
|
||||
BLOKWR4 LD DE,(READ.MEM)
|
||||
LD A,(FatBuffer.DRIVE)
|
||||
LD B,C
|
||||
LD C,Dss.DRV.Write
|
||||
RST ToDSS.DRV
|
||||
JP C,BLOKWR0
|
||||
POP BC
|
||||
LD HL,(READ.MEM)
|
||||
LD DE,(CORE_BUFFERS.BootSector.B_P_S)
|
||||
BLOKWR5 ADD HL,DE
|
||||
DEC C
|
||||
JR NZ,BLOKWR5
|
||||
LD (READ.MEM),HL
|
||||
POP DE
|
||||
; DOUBLE 1
|
||||
.WR4: LD DE,(READ.MEM)
|
||||
LD A,(FatBuffer.DRIVE)
|
||||
LD B,C
|
||||
LD C,Dss.DRV.Write
|
||||
RST ToDSS.DRV
|
||||
JP C,.ErrorWrite
|
||||
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
|
||||
BLOKWR6 LD HL,CORE_BUFFERS.BootSector.S_P_C
|
||||
.WR6: LD HL,CORE_BUFFERS.BootSector.S_P_C
|
||||
LD A,B
|
||||
SUB (HL)
|
||||
LD B,A
|
||||
LD C,(HL)
|
||||
JR NC,BLOKWR7
|
||||
JR NC,.WR7
|
||||
LD B,0
|
||||
ADD A,(HL) ;0 AND CF
|
||||
LD C,A
|
||||
OR A ;CLEAR CF
|
||||
RET Z
|
||||
BLOKWR7 EX DE,HL
|
||||
.WR7: EX DE,HL
|
||||
PUSH BC
|
||||
CALL R_F_FAT
|
||||
JR NC,BLOKWR9
|
||||
JR NC,.WR9
|
||||
PUSH HL
|
||||
CALL INC_FAT
|
||||
POP HL
|
||||
JR C,BLOKWRA
|
||||
JR C,.ErrorFull
|
||||
CALL R_F_FAT
|
||||
BLOKWR9 POP BC
|
||||
.WR9: POP BC
|
||||
EX DE,HL
|
||||
PUSH HL
|
||||
PUSH BC
|
||||
CALL NSECTOR
|
||||
LD DE,(READ.MEM)
|
||||
LD A,(FatBuffer.DRIVE)
|
||||
LD B,C
|
||||
LD C,Dss.DRV.Write
|
||||
RST ToDSS.DRV
|
||||
JP C,BLOKWR0
|
||||
; DOUBLE 1
|
||||
LD DE,(READ.MEM)
|
||||
LD A,(FatBuffer.DRIVE)
|
||||
LD B,C
|
||||
LD C,Dss.DRV.Write
|
||||
RST ToDSS.DRV
|
||||
JP C,.ErrorWrite
|
||||
POP BC
|
||||
LD HL,(READ.MEM)
|
||||
LD DE,(CORE_BUFFERS.BootSector.B_P_S)
|
||||
.loop3: ADD HL,DE
|
||||
DEC C
|
||||
JR NZ,.loop3
|
||||
LD (READ.MEM),HL
|
||||
POP DE
|
||||
;
|
||||
JR .WR6
|
||||
.ErrorFull:
|
||||
POP BC
|
||||
LD HL,(READ.MEM)
|
||||
LD DE,(CORE_BUFFERS.BootSector.B_P_S)
|
||||
BLOKWR8 ADD HL,DE
|
||||
DEC C
|
||||
JR NZ,BLOKWR8
|
||||
LD (READ.MEM),HL
|
||||
POP DE
|
||||
JR BLOKWR6
|
||||
|
||||
BLOKWRA POP BC
|
||||
LD A,DSS_Error.sys.DISK_FULL
|
||||
SCF
|
||||
RET
|
||||
|
||||
TSTSIZE XOR A
|
||||
TSTSIZE:
|
||||
XOR A
|
||||
LD (READ.COD),A
|
||||
LD L,(IY+32) ;FP LOW _sFM.F_POSITION
|
||||
LD H,(IY+33)
|
||||
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+34) ;FP HIGH
|
||||
LD H,(IY+35)
|
||||
LD L,(IY+_sFM.F_POSITION+2) ;FP HIGH
|
||||
LD H,(IY+_sFM.F_POSITION+3)
|
||||
ADC HL,DE
|
||||
EXX ;HL':HL - NEW FP
|
||||
LD C,(IY+28) ; _sFM.F_SIZE
|
||||
LD B,(IY+29) ;SIZE LOW
|
||||
EXX ;HL':HL - NEW FP
|
||||
LD C,(IY+_sFM.F_SIZE)
|
||||
LD B,(IY+_sFM.F_SIZE+1) ;SIZE LOW
|
||||
AND A
|
||||
SBC HL,BC
|
||||
EXX
|
||||
LD C,(IY+30) ;SIZE HIGH
|
||||
LD B,(IY+31)
|
||||
LD C,(IY+_sFM.F_SIZE+2) ;SIZE HIGH
|
||||
LD B,(IY+_sFM.F_SIZE+3)
|
||||
SBC HL,BC
|
||||
EXX
|
||||
RET C ;OK READ ALL
|
||||
RET C ;OK READ ALL
|
||||
EX DE,HL
|
||||
SBC HL,DE ;VERY BIG
|
||||
SBC HL,DE ;VERY BIG
|
||||
EX DE,HL
|
||||
LD A,#FF
|
||||
LD (READ.COD),A
|
||||
@ -577,7 +585,7 @@ TSTSIZE XOR A
|
||||
; HL - ADDRESS
|
||||
; DE - SIZE
|
||||
; A - FM
|
||||
READ: LD (R_POINT),HL
|
||||
READ: LD (.R_POINT),HL
|
||||
LD (.S_POINT),HL
|
||||
CALL SET_FM
|
||||
RET C
|
||||
@ -628,17 +636,17 @@ READ: LD (R_POINT),HL
|
||||
JR Z,.ROV2
|
||||
LD (.SECTORH),HL
|
||||
LD (.SECTORL),DE
|
||||
LD IX,(R_POINT)
|
||||
.R_POINT+2: LD IX,0
|
||||
CALL BLOK_RD
|
||||
JP C,.ERR_1
|
||||
LD DE,(R_POINT)
|
||||
LD DE,(.R_POINT)
|
||||
.MEM+1: LD HL,0 // LD HL,(READMEM)
|
||||
AND A
|
||||
SBC HL,DE
|
||||
LD C,H
|
||||
LD B,0
|
||||
ADD HL,DE
|
||||
LD (R_POINT),HL
|
||||
LD (.R_POINT),HL
|
||||
SRL C
|
||||
.SECTORL+1: LD HL,0 // LD HL,(SECTORL)
|
||||
ADD HL,BC
|
||||
@ -665,14 +673,13 @@ READ: LD (R_POINT),HL
|
||||
OUT (C),B
|
||||
JP C,.ERR_1
|
||||
LD HL,CORE_BUFFERS.BUFFER
|
||||
LD DE,(R_POINT)
|
||||
LD DE,(.R_POINT)
|
||||
POP BC
|
||||
LDIR
|
||||
LD (R_POINT),DE
|
||||
.ROV6:
|
||||
.S_POINT+1: LD HL,0
|
||||
LD DE,(R_POINT)
|
||||
EX DE,HL
|
||||
LD (.R_POINT),DE
|
||||
.ROV6: LD HL,(.R_POINT)
|
||||
.S_POINT+1: LD DE,0
|
||||
;EX DE,HL
|
||||
AND A
|
||||
SBC HL,DE
|
||||
PUSH HL
|
||||
@ -709,7 +716,7 @@ READ: LD (R_POINT),HL
|
||||
ADC HL,BC
|
||||
EXX
|
||||
POP DE
|
||||
LD HL,512
|
||||
LD HL,512 ;!HARDCODE
|
||||
AND A
|
||||
SBC HL,DE
|
||||
LD B,H
|
||||
@ -721,13 +728,13 @@ READ: LD (R_POINT),HL
|
||||
ADD HL,BC
|
||||
LD B,H
|
||||
LD C,L
|
||||
LD HL,0
|
||||
LD HL,0 ;!TODO ¬®¦® âãâ ã¯à®áâ¨âì ¤ «ì¥©èãî ¢¥âªã?
|
||||
.ROV3: PUSH HL
|
||||
LD HL,CORE_BUFFERS.BUFFER
|
||||
ADD HL,DE
|
||||
LD DE,(R_POINT)
|
||||
LD DE,(.R_POINT)
|
||||
LDIR
|
||||
LD (R_POINT),DE
|
||||
LD (.R_POINT),DE
|
||||
EXX
|
||||
JP .ROV4
|
||||
.ERR_3: POP HL
|
||||
@ -750,11 +757,11 @@ RD_ONLY: POP DE
|
||||
; HL - ADDRESS
|
||||
; DE - SIZE
|
||||
; A - FM
|
||||
WRITE: LD (R_POINT),HL
|
||||
LD (READ.S_POINT),HL
|
||||
WRITE: LD (.R_POINT),HL
|
||||
LD (.S_POINT),HL
|
||||
PUSH DE
|
||||
CALL SET_FM
|
||||
JP C,PWERR1
|
||||
JR C,PWERR1
|
||||
LD A,(IY+_sFM.ACCESS_MODE)
|
||||
AND FAT_ATTR.READ_ONLY
|
||||
JR NZ,RD_ONLY
|
||||
@ -762,7 +769,13 @@ WRITE: LD (R_POINT),HL
|
||||
SET 5,(IY+_sFM.ATTRIBUT)
|
||||
LD A,(IY+_sFM.DRIVE)
|
||||
CALL OPENDSK
|
||||
JP C,PWERR1
|
||||
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
|
||||
@ -779,38 +792,39 @@ WRITE: LD (R_POINT),HL
|
||||
; BC - FP residue (in bytes)
|
||||
LD A,B
|
||||
OR C
|
||||
JP NZ,WOV1
|
||||
WOV4: POP BC
|
||||
JP NZ,.WOV1
|
||||
.WOV4: POP BC
|
||||
PUSH BC
|
||||
SRL B
|
||||
JR Z,WOV2
|
||||
JR Z,.WOV2
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
PUSH BC
|
||||
R_POINT+2: LD IX,0 // LD IX,(R_POINT)
|
||||
|
||||
.R_POINT+2:
|
||||
LD IX,0
|
||||
CALL BLOK_WR
|
||||
POP BC
|
||||
JP C,PWERR3
|
||||
JR C,PWERR3
|
||||
LD C,B
|
||||
LD HL,(R_POINT)
|
||||
LD DE,#0200
|
||||
WOV5: ADD HL,DE
|
||||
DJNZ WOV5
|
||||
LD (R_POINT),HL
|
||||
LD B,0
|
||||
LD HL,(.R_POINT)
|
||||
LD DE,#0200 ;!HARDCODE
|
||||
.WOV5: ADD HL,DE
|
||||
DJNZ .WOV5
|
||||
; B=0
|
||||
LD (.R_POINT),HL
|
||||
;LD B,0
|
||||
POP HL
|
||||
ADD HL,BC
|
||||
EX DE,HL
|
||||
POP HL
|
||||
LD C,B
|
||||
ADC HL,BC
|
||||
WOV2: POP BC
|
||||
.WOV2: POP BC
|
||||
LD A,B
|
||||
AND #01
|
||||
LD B,A
|
||||
OR C
|
||||
JP Z,WOV6
|
||||
JR Z,.WOV6
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
PUSH BC
|
||||
@ -825,11 +839,11 @@ WOV2: POP BC
|
||||
LD C,SLOT3
|
||||
OUT (C),B
|
||||
LD DE,CORE_BUFFERS.BUFFER
|
||||
LD HL,(R_POINT)
|
||||
LD HL,(.R_POINT)
|
||||
POP BC
|
||||
JP C,PWERR2
|
||||
LDIR
|
||||
LD (R_POINT),HL
|
||||
LD (.R_POINT),HL
|
||||
POP DE
|
||||
POP HL
|
||||
LD IX,CORE_BUFFERS.BUFFER+#C000
|
||||
@ -843,9 +857,10 @@ WOV2: POP BC
|
||||
LD C,SLOT3
|
||||
OUT (C),B
|
||||
RET C
|
||||
WOV6: LD DE,(READ.S_POINT)
|
||||
LD HL,(R_POINT)
|
||||
AND A
|
||||
.WOV6: LD HL,(.R_POINT)
|
||||
.S_POINT+1: LD DE,0
|
||||
; CF=0
|
||||
;AND A
|
||||
SBC HL,DE
|
||||
PUSH HL
|
||||
EX DE,HL
|
||||
@ -855,18 +870,19 @@ WOV6: LD DE,(READ.S_POINT)
|
||||
CALL MOVE_FP.F_current
|
||||
CALL MOVE_CP
|
||||
POP DE
|
||||
RET NC
|
||||
LD L,(IY+32)
|
||||
LD H,(IY+33)
|
||||
LD C,(IY+34)
|
||||
LD B,(IY+35)
|
||||
LD (IY+28),L
|
||||
LD (IY+29),H
|
||||
LD (IY+30),C
|
||||
LD (IY+31),B
|
||||
RET NC ; …᫨ à §¬¥à ä ©« ¤¨áª¥ <20>… áâ « ¡®«ìè¥, 祬 ¡ë«
|
||||
; …᫨ à §¬¥à ä ©« ¤¨áª¥ áâ « ¡®«ìè¥, 祬 ¡ë«
|
||||
LD L,(IY+_sFM.F_POSITION+0)
|
||||
LD H,(IY+_sFM.F_POSITION+1)
|
||||
LD C,(IY+_sFM.F_POSITION+2)
|
||||
LD B,(IY+_sFM.F_POSITION+3)
|
||||
LD (IY+_sFM.F_SIZE+0),L
|
||||
LD (IY+_sFM.F_SIZE+1),H
|
||||
LD (IY+_sFM.F_SIZE+2),C
|
||||
LD (IY+_sFM.F_SIZE+3),B
|
||||
AND A
|
||||
RET
|
||||
WOV1: PUSH BC
|
||||
.WOV1: PUSH BC
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
LD IX,CORE_BUFFERS.BUFFER+#C000
|
||||
@ -884,7 +900,7 @@ WOV1: PUSH BC
|
||||
EXX
|
||||
POP DE
|
||||
JP C,PWERR1
|
||||
LD HL,512
|
||||
LD HL,512 ;!HARDCODE
|
||||
AND A
|
||||
SBC HL,DE
|
||||
LD B,H
|
||||
@ -892,18 +908,18 @@ WOV1: PUSH BC
|
||||
POP HL
|
||||
AND A
|
||||
SBC HL,BC
|
||||
JR NC,WOV3
|
||||
JR NC,.WOV3
|
||||
ADD HL,BC
|
||||
LD B,H
|
||||
LD C,L
|
||||
LD HL,0
|
||||
WOV3: PUSH HL
|
||||
.WOV3: PUSH HL
|
||||
LD HL,CORE_BUFFERS.BUFFER
|
||||
ADD HL,DE
|
||||
LD DE,(R_POINT)
|
||||
LD DE,(.R_POINT)
|
||||
EX DE,HL
|
||||
LDIR
|
||||
LD (R_POINT),HL
|
||||
LD (.R_POINT),HL
|
||||
EXX
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
@ -925,7 +941,7 @@ WOV3: PUSH HL
|
||||
POP HL
|
||||
LD C,B
|
||||
ADC HL,BC
|
||||
JP WOV4
|
||||
JP .WOV4
|
||||
|
||||
////////////// OLD ////////////////
|
||||
; HL - CLUSTER
|
||||
|
||||
@ -882,7 +882,7 @@ EXEC0_SHORT:
|
||||
; GET PATH AND ETC.
|
||||
LD HL,ENVPATH
|
||||
LD DE,ENVTEMP
|
||||
LD B,Dss.Environ.Get
|
||||
LD B,high Dss.Environ.Get
|
||||
CALL ENVIRON
|
||||
|
||||
LD HL,(CMDLINE)
|
||||
|
||||
@ -16,14 +16,14 @@ R_CLUST LD HL,#0001
|
||||
|
||||
G_CLUST:
|
||||
.num+1: LD HL,#0001
|
||||
G_CLUS1: INC HL ; ®¬¥à ª« áâ¥à
|
||||
.loop: INC HL ; ®¬¥à ª« áâ¥à
|
||||
CALL R_F_FAT ; ¯à®ç¨â âì ¨§ ª¥è FAT- ®¬¥à á«¥¤. ª« áâ¥à
|
||||
CP DSS_Error.sys.DISK_FULL
|
||||
SCF
|
||||
RET Z ; ®è¨¡ª ?
|
||||
LD A,D
|
||||
OR E
|
||||
JR NZ,G_CLUS1
|
||||
JR NZ,.loop
|
||||
LD (G_CLUST.num),HL
|
||||
XOR A
|
||||
RET
|
||||
@ -36,9 +36,9 @@ INC_FAT PUSH HL
|
||||
PUSH HL
|
||||
PUSH HL
|
||||
EX DE,HL ; hl=®¬¥à ª« áâ¥à
|
||||
INC_FA2 CALL R_F_FAT ; ¯à®ç¨â âì ¨§ ª¥è FAT- ®¬¥à á«¥¤. ª« áâ¥à
|
||||
.loop: CALL R_F_FAT ; ¯à®ç¨â âì ¨§ ª¥è FAT- ®¬¥à á«¥¤. ª« áâ¥à
|
||||
EX DE,HL
|
||||
JR NC,INC_FA2 ; ¥ ª®¥æ 楯®çª¨
|
||||
JR NC,.loop ; ¥ ª®¥æ 楯®çª¨
|
||||
EX DE,HL
|
||||
POP DE ; ®¬¥à ª« áâ¥à
|
||||
CALL W_T_FAT ; § ¯¨á âì ¢ ª¥è FAT- ®¬¥à ª« áâ¥à
|
||||
@ -59,6 +59,7 @@ INC_FA2 CALL R_F_FAT ;
|
||||
; CF - ª®¥æ 楯®çª¨
|
||||
;!FIXIT ¤ «¥¥ § â®çª â®, çâ® ¢ DE ¢á¥£¤ 0 - à §¤¥« ¥ ¡®«ìè¥ 2Gb
|
||||
;-----------------------------------------------------------
|
||||
;!FIXIT ®â¤ ñâ à §ë© CF ¯à¨ 㤠箬 § ¢¥à襨¨ ¢ § ¢¨á¨¬®á⨠®â FAT16/FAT12
|
||||
R_F_FAT:
|
||||
EX DE,HL
|
||||
LD HL,(MAX_CLU)
|
||||
@ -171,7 +172,8 @@ R_F_F16:
|
||||
; RR H ; ᤢ¨£ ¢¯à ¢® ç¥à¥§ CF
|
||||
; RR L ; CLUSTER * 1.5
|
||||
; PUSH AF ; á®åà. ä« £
|
||||
R_F_F12 LD D,H
|
||||
R_F_F12:
|
||||
LD D,H
|
||||
LD E,L
|
||||
RR H
|
||||
RR L ; ᤢ¨£ ¢¯à ¢® ç¥à¥§ CF
|
||||
@ -217,7 +219,8 @@ R_F_F12 LD D,H
|
||||
; RR E
|
||||
; RR D
|
||||
; RR E
|
||||
R_F_F01 LD A,E
|
||||
R_F_F01:
|
||||
LD A,E
|
||||
AND #F0
|
||||
RR D ; ¢¯à ¢® 4 ¡¨âa
|
||||
RRA
|
||||
@ -228,7 +231,8 @@ R_F_F01 LD A,E
|
||||
RR D
|
||||
RRA
|
||||
LD E,A
|
||||
R_F_F02 POP AF
|
||||
R_F_F02:
|
||||
POP AF
|
||||
OUT (SLOT3),A
|
||||
LD HL,#0FEF
|
||||
XOR A ; ®¡ã«ï¥¬ CF ¨ ãáâ ¢«¨¢ ¥¬ ª®¤ ®è¨¡ª¨ = ã«î
|
||||
@ -295,7 +299,8 @@ W_T_F16:
|
||||
RET
|
||||
;
|
||||
; fat12
|
||||
W_T_F12 PUSH DE
|
||||
W_T_F12:
|
||||
PUSH DE
|
||||
LD D,H
|
||||
LD E,L
|
||||
; ADD HL,HL
|
||||
@ -408,35 +413,34 @@ RE_FAT: PUSH HL
|
||||
; <20>®¤ª«îç¨âì ¡ ªã ª¥è FAT ¨ § ¯¨á âì ¥£® ¤¨áª
|
||||
WR_FAT: SET_PAGE_X FATPAGE
|
||||
PUSH AF
|
||||
CALL .Start
|
||||
CALL .Start ;!TODO ¥â ª®âà®«ï ®è¨¡®ª
|
||||
POP AF
|
||||
OUT (SLOT3),A
|
||||
RET
|
||||
; ‡ ¯¨áì ª¥è (¢á¥£®?) FAT- ¤¨áª
|
||||
.Start: LD HL,(FATCASH)
|
||||
LD H,0
|
||||
LD (FATCASH),HL
|
||||
;LD (FATCASH),HL
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
ADD HL,HL ;FAT BLOCK * 16 = SECTOR OF FAT ;!TODO FATcacheSize
|
||||
ADD HL,HL ;FAT BLOCK * 16 = SECTOR OF FAT ;!TODO FATcacheSize
|
||||
|
||||
PUSH HL
|
||||
LD B,H
|
||||
LD C,L ;BC - BLOCK OF FAT
|
||||
LD DE,16 ;!HARDCODE ;!TODO FATcacheSize
|
||||
ADD HL,DE ;+ SIZE CASH (16 SECTORS)
|
||||
|
||||
LD DE,(CORE_BUFFERS.BootSector.S_P_F) ; ᥪâ®à®¢ FAT
|
||||
LD A,16 ;!HARDCODE ; MAX ç¨á«® ᥪâ®à®¢ ¤«ï çâ¥¨ï ¢ ªíè ;!TODO FATcacheSize
|
||||
LD C,L ;BC - BLOCK OF FAT
|
||||
LD DE,16 ;!HARDCODE ;!TODO FATcacheSize
|
||||
ADD HL,DE ;+ SIZE CASH (16 SECTORS)
|
||||
LD A,E ;!HARDCODE ; MAX ç¨á«® ᥪâ®à®¢ ¤«ï çâ¥¨ï ¢ ªíè ;!TODO FATcacheSize
|
||||
LD DE,(CORE_BUFFERS.BootSector.S_P_F) ; ᥪâ®à®¢ FAT
|
||||
AND A
|
||||
SBC HL,DE
|
||||
JR C,.WALLFAT
|
||||
EX DE,HL
|
||||
LD HL,16 ;!HARDCODE ; ç¨á«® ᥪâ®à®¢ ;!TODO FATcacheSize
|
||||
LD HL,16 ;!HARDCODE ; ç¨á«® ᥪâ®à®¢ ;!TODO FATcacheSize
|
||||
; CF = 0
|
||||
SBC HL,DE
|
||||
JP C,FATERR
|
||||
JP C,.ERR
|
||||
LD A,L
|
||||
.WALLFAT:
|
||||
LD H,B
|
||||
@ -466,9 +470,15 @@ WR_FAT: SET_PAGE_X FATPAGE
|
||||
LD A,(FatBuffer.DRIVE)
|
||||
LD C,Dss.DRV.Write
|
||||
RST ToDSS.DRV
|
||||
AND A ;!TODO ¥â ª®âà®«ï ®è¨¡®ª
|
||||
;
|
||||
.ERR: LD A,0
|
||||
LD (FATCASH.Update),A
|
||||
RET NC
|
||||
POP HL
|
||||
; CF = 1
|
||||
RET
|
||||
;R01
|
||||
|
||||
;R01WR_FAT LD HL,(FATCASH)
|
||||
;R01 LD H,0
|
||||
;R01 LD (FATCASH),HL
|
||||
@ -521,10 +531,6 @@ WR_FAT: SET_PAGE_X FATPAGE
|
||||
;R01 RST #18
|
||||
;R01 RET
|
||||
|
||||
FATERR: POP HL
|
||||
; CF = 1
|
||||
RET
|
||||
|
||||
FATCASH: WORD #0000
|
||||
.Block EQU FATCASH
|
||||
.Update EQU FATCASH+1
|
||||
|
||||
@ -23,31 +23,31 @@ RESERVED2 BLOCK 490,0
|
||||
;File Manipulator (FM)
|
||||
STRUCT _sFM ; 47 bytes
|
||||
; from FAT
|
||||
.NAME: TEXT 8,{". "," "} ;+00 NAME
|
||||
.EXT: TEXT 3,{" "," "} ;+08 EXT
|
||||
.ATTRIBUT: BYTE #10 ;+11 ATTRIBUT
|
||||
.RESERVED_NT: BYTE #00 ;+12 RESERVED
|
||||
.RESERVED_FAT32: BYTE #00 ;+13 RESERVED
|
||||
.CREATE_TIME_FAT32: WORD #0000 ;+14 RESERVED
|
||||
.CREATE_DATE_FAT32: WORD #0000 ;+16 RESERVED
|
||||
.RESERVED_FAT32_1: WORD #0000 ;+18 RESERVED
|
||||
.RESERVED_FAT32_2: WORD #0000 ;+20 RESERVED
|
||||
.TIME: WORD #0000 ;+22 TIME
|
||||
.DATE: WORD #0000 ;+24 DATE
|
||||
.ST_CLUSTER: WORD #0000 ;+26 START CLUSTER
|
||||
.F_SIZE: DWORD #00000000 ;+28 SIZE FILE
|
||||
.NAME: TEXT 8,{". "," "} ;+ #00 +00 NAME
|
||||
.EXT: TEXT 3,{" "," "} ;+ #08 +08 EXT
|
||||
.ATTRIBUT: BYTE #10 ;+ #0B +11 ATTRIBUT
|
||||
.RESERVED_NT: BYTE #00 ;+ #0C +12 RESERVED
|
||||
.RESERVED_FAT32: BYTE #00 ;+ #0D +13 RESERVED
|
||||
.CREATE_TIME_FAT32: WORD #0000 ;+ #0E +14 RESERVED
|
||||
.CREATE_DATE_FAT32: WORD #0000 ;+ #10 +16 RESERVED
|
||||
.RESERVED_FAT32_1: WORD #0000 ;+ #12 +18 RESERVED
|
||||
.RESERVED_FAT32_2: WORD #0000 ;+ #14 +20 RESERVED
|
||||
.TIME: WORD #0000 ;+ #16 +22 TIME
|
||||
.DATE: WORD #0000 ;+ #18 +24 DATE
|
||||
.ST_CLUSTER: WORD #0000 ;+ #1A +26 START CLUSTER
|
||||
.F_SIZE: DWORD #00000000 ;+ #1C +28 SIZE FILE
|
||||
; from Core
|
||||
.F_POSITION: DWORD #00000000 ;+32 FILE POSITION (FP)
|
||||
.DIR_CLUSTER: WORD #0000 ;+36 DIRECTORY CLUSTER
|
||||
.HANDLE: WORD #0000 ;+38 HANDLE NUMBER
|
||||
.DRIVE: BYTE #00 ;+40 DRIVE OR CURRENT
|
||||
.ACCESS_MODE: BYTE #00 ;+41 ACCESS MODE ¯à¨§ ª ¨§¬¥¥¨ï ä ©«
|
||||
.TASK_NUM: BYTE #00 ;+42 TASK
|
||||
;.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 ‘â à訩 ¡ ©â ᬥ饨ï (¢ ª« áâ¥à å) ®â®á¨â¥«ì® ç « ä ©« ¤«ï á®åà ¥®£® ®¬¥à ª« áâ¥à .
|
||||
.F_POSITION: DWORD #00000000 ;+ #20 +32 FILE POSITION (FP)
|
||||
.DIR_CLUSTER: WORD #0000 ;+ #24 +36 DIRECTORY CLUSTER
|
||||
.HANDLE: WORD #0000 ;+ #26 +38 HANDLE NUMBER
|
||||
.DRIVE: BYTE #00 ;+ #28 +40 DRIVE OR CURRENT
|
||||
.ACCESS_MODE: BYTE #00 ;+ #29 +41 ACCESS MODE ¯à¨§ ª ¨§¬¥¥¨ï ä ©«
|
||||
.TASK_NUM: BYTE #00 ;+ #2A +42 TASK
|
||||
;.EMPTY: BYTE #00 ;+ #2B +43 EMPTY
|
||||
.KnownCluster_L: BYTE 0 ;+ #2B +43 Œ« ¤è¨© ¡ ©â ®¬¥à ª« áâ¥à ¤«ï ª®â®à®£® ¨§¢¥áâ® ®â®á¨â¥«ì®¥ ᬥ饨¥ ¢ãâà¨ ä ©«
|
||||
.KnownCluster_H: BYTE 0 ;+ #2C +44 ‘â à訩 ¡ ©â ®¬¥à ª« áâ¥à ¤«ï ª®â®à®£® ¨§¢¥áâ® ®â®á¨â¥«ì®¥ ᬥ饨¥ ¢ãâà¨ ä ©«
|
||||
.KnownOffset_L: BYTE 0 ;+ #2D +45 Œ« ¤è¨© ¡ ©â ᬥ饨ï (¢ ª« áâ¥à å) ®â®á¨â¥«ì® ç « ä ©« ¤«ï á®åà ¥®£® ®¬¥à ª« áâ¥à .
|
||||
.KnownOffset_H: BYTE 0 ;+ #2E +46 ‘â à訩 ¡ ©â ᬥ饨ï (¢ ª« áâ¥à å) ®â®á¨â¥«ì® ç « ä ©« ¤«ï á®åà ¥®£® ®¬¥à ª« áâ¥à .
|
||||
ENDS
|
||||
;
|
||||
|
||||
|
||||
@ -1 +1 @@
|
||||
537
|
||||
567
|
||||
@ -1,5 +1,5 @@
|
||||
;
|
||||
DEFINE TEST_FEATURE 1
|
||||
DEFINE TEST_FEATURE 0
|
||||
;
|
||||
|
||||
;
|
||||
|
||||
@ -403,7 +403,7 @@ EVALSTR: ld a,(hl)
|
||||
ld h,b ; hl=¨¬ï ¯¥à¥¬.
|
||||
ld l,c
|
||||
inc hl
|
||||
ld bc,Dss.Environ.Get*256 + Dss.Environ ; ¯®«ãç¨âì ¯¥à¥¬. ®ªà㦥¨ï
|
||||
ld bc,Dss.Environ.Get ; ¯®«ãç¨âì ¯¥à¥¬. ®ªà㦥¨ï
|
||||
RST ToDSS
|
||||
.TNOVAR: pop hl
|
||||
inc hl
|
||||
|
||||
@ -27,7 +27,7 @@ cmd_path:
|
||||
ld (hl),"A"
|
||||
dec hl
|
||||
ld (hl),"P" ; ç «® áâப¨ ¨¬¥¨
|
||||
ld bc,Dss.Environ.Set*256 + Dss.Environ ; ãáâ ./㤠«¨âì ¯¥à¥¬. ®ªà㦥¨ï
|
||||
ld bc,Dss.Environ.Set ; ãáâ ./㤠«¨âì ¯¥à¥¬. ®ªà㦥¨ï
|
||||
RST ToDSS
|
||||
call c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
||||
ret
|
||||
@ -36,7 +36,7 @@ cmd_path:
|
||||
A85B9: ;ld de,T9186 ; ªã¤
|
||||
ld de,work_buffer1;
|
||||
ld hl,T858C ; ¨¬ï ¯¥à¥¬¥®© "PATH="
|
||||
ld bc,Dss.Environ.Get*256 + Dss.Environ ; ¯®«ãç¨âì ¯¥à¥¬¥ãî ®ªà㦥¨ï
|
||||
ld bc,Dss.Environ.Get ; ¯®«ãç¨âì ¯¥à¥¬¥ãî ®ªà㦥¨ï
|
||||
RST ToDSS
|
||||
jp c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
||||
ld hl,T858C ; "PATH=",0
|
||||
|
||||
@ -14,7 +14,7 @@ cmd_set:ld a,(de) ;
|
||||
jr c,cmd_set
|
||||
dec de
|
||||
ex de,hl
|
||||
ld bc,Dss.Environ.Set*256 + Dss.Environ
|
||||
ld bc,Dss.Environ.Set
|
||||
RST ToDSS
|
||||
call c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
||||
ret
|
||||
@ -22,7 +22,7 @@ cmd_set:ld a,(de) ;
|
||||
; <20>®ª § âì á¨á⥬®¥ ®ªà㦥¨¥
|
||||
A85EE: ;ld hl,T9186 ; ªã¤
|
||||
ld hl,work_buffer1;
|
||||
ld bc,Dss.Environ.Read*256 + Dss.Environ ; ¯®«ãç¨âì á¨áâ. ®ªà㦥¨¥
|
||||
ld bc,Dss.Environ.Read ; ¯®«ãç¨âì á¨áâ. ®ªà㦥¨¥
|
||||
RST ToDSS
|
||||
;ld hl,T9186
|
||||
ld hl,work_buffer1;
|
||||
|
||||
@ -1 +1 @@
|
||||
Subproject commit 8641b77d8ebe42ae042bb8df3902300e678048eb
|
||||
Subproject commit b69773d50cb2c0e1da44f7f20c7daa32871f2308
|
||||
Loading…
Reference in New Issue
Block a user