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