some bug fixes with shell. Testing independed current dir

This commit is contained in:
Anatoliy Belyanskiy 2023-10-06 00:31:46 +10:00
parent bd5eb85d7b
commit f236cf5bcf
16 changed files with 356 additions and 275 deletions

View File

@ -29,7 +29,7 @@
; B = 1 SET ATTRIB
; OUTPUT: A - ATTRIB
ATTRIB:
_mSavePath
_mSavePath 1
INC B
DEC B
JP Z,RATTRIB
@ -48,7 +48,7 @@ RATTRIB XOR A
POP BC
RET C
LD A,B
AND A
;AND A
RET
WATTRIB PUSH AF
@ -64,47 +64,29 @@ WATTRIB PUSH AF
POP BC
RET C
LD A,B
AND A
;AND A
RET
; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00
; OUTPUT: A - FM
CREATE:
_mSavePath
AND #E7 ;R04 %76A00SHR = !FAT_ATTR
LD (ACCESS),A
LD (PATH0),HL
CALL GETWORD
RET C
LD HL,TMPNAME
LD DE,MASKARE
CALL MASK
RET C
CALL SEARCH
JR C,CREAT ;NO FILE, CREAT NEW.
CALL DELFILE ;FILE EXIST RECREAT
JP CREAT
; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00
; OUTPUT: A - FM
CREAT_N:
_mSavePath
AND #E7 ;R04 %76A00SHR = !FAT_ATTR
LD (ACCESS),A
LD (PATH0),HL
CALL GETWORD
RET C
LD HL,TMPNAME
LD DE,MASKARE
CALL MASK
CREATE: _mSavePath 0
CALL .Prepare
RET C
CALL SEARCH
CALL NC,DELFILE ;FILE EXIST RECREAT
JR .DO
; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00
; OUTPUT: A - FM
.NEW: _mSavePath 0
CALL .Prepare
RET C
CALL SEARCH
LD A,DSS_Error.sys.FILE_EXISTS
CCF
RET C
CREAT LD HL,MASKARE
;
.DO: LD HL,MASKARE
LD DE,HANDBUF
LD BC,11
LDIR
@ -112,10 +94,12 @@ CREAT LD HL,MASKARE
LD A,(ACCESS)
LD (HL),A
INC HL
LD BC,#0A00
FIHND LD (HL),C
LD BC,#0A00 ;!HARDCODE
;
.loop1: LD (HL),C
INC HL
DJNZ FIHND
DJNZ .loop1
;
PUSH HL
CALL SYSTIME
CALL MK_TIME
@ -129,19 +113,42 @@ FIHND LD (HL),C
LD (HL),B
INC HL
LD BC,#0600
FIHND1 LD (HL),C
;
.loop2: LD (HL),C
INC HL
DJNZ FIHND1
DJNZ .loop2
;
CALL WRT_HND
CALL SAVEDIR
LD HL,(PATH0)
XOR A
JP OPEN ;R08
.Prepare:
AND #E7 ;R04 %76A00SHR = !FAT_ATTR
LD (ACCESS),A
LD (PATH0),HL
CALL GETWORD
RET C
LD HL,TMPNAME
LD DE,MASKARE
JP MASK
CREAT_N EQU CREATE.NEW
; INPUT: HL - "filename.ext",#00 without simbols * ?
DELETE: LD DE,MASKARE
CALL MASK
RET C
DELETE:
;!TEST
_mSavePath 1
CALL GETWORD ; âĽáâ ­  ¤ŽŻăáâ. ¨Źď ¨ ­ áâŕ. ­  ¤¨áŞ
RET C
LD HL,TMPNAME
LD DE,MASKARE
CALL MASK
RET C
;
; LD DE,MASKARE
; CALL MASK
; RET C
LD HL,MASKARE
LD BC,11
LD A,"?"
@ -263,9 +270,9 @@ OPENATR:
; ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
//////////////////////////////////////////////////////////////////////
OPEN_FN:
_mSavePath
OPEN: ;R08
LD (ACCESS),A
_mSavePath 1
;R08
OPEN: LD (ACCESS),A
CALL GETWORD
RET C
LD HL,TMPNAME
@ -300,7 +307,7 @@ OPENAT: ;R02
LD (IY+_sFM.F_POSITION+3),A
LD A,(FatBuffer.DRIVE)
LD (IY+_sFM.DRIVE),A
LD HL,FM_BUF+_sFM.ST_CLUSTER
LD HL,CORE_BUFFERS.FM_BUF+_sFM.ST_CLUSTER
LD E,(HL)
INC HL
LD D,(HL)
@ -311,9 +318,9 @@ OPENAT: ;R02
RET
CLOSE_FN:
_mSavePath
CLOSE: ;R08
LD (ACCESS),A
_mSavePath 1
;R08
CLOSE: LD (ACCESS),A
CALL SET_FM
RET C
LD A,(TASK)
@ -631,25 +638,81 @@ SEARCH4:
SCF
RET
; ;!TEST
; SAVE_CURRENT_PATH:
; SET_PAGE_X ENVPAGE
; PUSH AF
; CALL CURRDSK
; ADD A,"A"
; LD HL,TMP_CURDIR
; LD (HL),A
; INC HL
; LD A,":"
; LD (HL),A
; INC HL
; CALL CURRDIR
; POP AF
; OUT (SLOT3),A
; RET
; BACK_CURRENT_PATH:
; SET_PAGE_X ENVPAGE
; PUSH AF
; LD HL,TMP_CURDIR
; CALL CHDIR
; POP AF
; OUT (SLOT3),A
; RET
; ;
;-------------------------------------------------
; ’¥áâ ­  ¤®¯ãá⨬®¥ ¨¬ï ¨ ­ áâநâìáï ­  ¤¨áª.
; ¢å®¤: hl=áâப  ¨¬¥­¨
;-------------------------------------------------
GETWORD:
; !TEST
INC HL
LD A,(HL)
DEC HL
CP ':'
JR NZ,.dir_loop
LD A,(HL)
CP 'a'
JR C,.next
CP '{'
JR NC,.next
SUB #20
.next: SUB 'A'
INC HL
INC HL
PUSH HL
;!TEST CHNDISK OPENDSK
;CALL OPENDSK
CALL CHNDISK
;
POP HL
RET C
;
.dir_loop:
LD DE,TMPNAME
LD BC,#0DFF
;
.loop: LD A,(HL)
INC HL
CP '\'
JR Z,.DIR_NAME
CP ':'
JR Z,.DRV_NAME
;CP ':'
;JR Z,.DRV_NAME
LD (DE),A
INC DE
CP ' '+1
CCF
RET NC
DJNZ .loop
;
; ;!TEST
; CALL BACK_CURRENT_PATH
;
LD A,DSS_Error.sys.INVALID_NAME
SCF
RET
@ -661,25 +724,25 @@ GETWORD:
LD HL,TMPNAME
CALL OPENDIR
POP HL
JR NC,GETWORD
RET
RET C
JR .dir_loop
.DRV_NAME:
LD A,(TMPNAME)
CP 'a'
JR C,.next
CP '{'
JR NC,.next
SUB #20
.next: SUB 'A'
PUSH HL
;!TEST CHNDISK OPENDSK
CALL OPENDSK
;CALL CHNDISK
;
POP HL
JP NC,GETWORD
RET
; .DRV_NAME:
; LD A,(TMPNAME)
; CP 'a'
; JR C,.next
; CP '{'
; JR NC,.next
; SUB #20
; .next: SUB 'A'
; PUSH HL
; ;!TEST CHNDISK OPENDSK
; ;CALL OPENDSK
; CALL CHNDISK
; ;
; POP HL
; RET C
; JR .loop
; <20>ãä¥à ¨¬¥­¨ 8.3 ä®à¬ â 
TMPNAME: DZ ' ' ; 12 ¯à®¡¥«®¢ ¨ 0
@ -687,8 +750,8 @@ TMPNAME: DZ ' ' ; 12
; RestoreDIR:
CHNDISK:
;!TEST
;CALL OPENDSK
CALL OPENDSK.force
CALL OPENDSK
;CALL OPENDSK.force
;
;????? R10
RET C
@ -700,8 +763,6 @@ CHNDISK:
POP BC
RET C
LD A,B
RET
; RET C
; PUSH AF
; CALL LOADDIR
@ -741,7 +802,7 @@ OPENDIR:
CALL SET_FM
LD A,(HL)
OR A
JP NZ,SUBDIR
JR NZ,SUBDIR
REROOT1:
LD DE,0
LD (IY+_sFM.ST_CLUSTER),E
@ -1659,7 +1720,9 @@ RMKTIME EX DE,HL
;
; INPUT: HL - "C:\DIR\DIR\DIR_NAME[\]",0
//////////////////////////////////////////////////////////////////////
CHDIR: CALL GETWORD ; âĽáâ ­  ¤ŽŻăáâ. ¨Źď ¨ ­ áâŕ. ­  ¤¨áŞ
CHDIR:
_mSavePath 0
.tmp: CALL GETWORD ; âĽáâ ­  ¤ŽŻăáâ. ¨Źď ¨ ­ áâŕ. ­  ¤¨áŞ
RET C
LD HL,TMPNAME
LD A,(HL)
@ -1676,7 +1739,7 @@ CHDIR: CALL GETWORD ;
; INPUT: HL - "C:\DIR\DIR\DIR_NAME",0
//////////////////////////////////////////////////////////////////////
MKDIR:
_mSavePath
_mSavePath 1
CALL GETWORD ; â¥áâ ­  ¤®¯ãáâ. ¨¬ï ¨ ­ áâà. ­  ¤¨áª
RET C
LD HL,TMPNAME ; 8.3 ¨¬ï
@ -1735,7 +1798,7 @@ MKDIR:
CALL WRT_HND ; ᪮¯¨à. ­®¢ãî § ¯¨áì ¢ ᯨ᮪ ¤¨áª  (ª â «®£ )
CALL SAVEDIR ; á¡à®á¨âì ª¥è ª â «®£  ­  ¤¨áª
LD HL,SECBUF ; ĄăäĽŕ
LD HL,CORE_BUFFERS.SECBUF ; ĄăäĽŕ
LD (HL),"." ; § ¯¨áì ⥪. ª â «®£ 
LD BC,10*256 + ' ' ; b=áç¥â稪, c=¯à®¡¥«
@ -1795,7 +1858,7 @@ MKD04 EX DE,HL
POP HL
CALL NSECTOR
LD A,(BootSector.S_P_C) ; ἪâŽŕŽ˘ ­  ŞŤ áâĽŕ
LD A,(CORE_BUFFERS.BootSector.S_P_C) ; ἪâŽŕŽ˘ ­  ŞŤ áâĽŕ
MKD12 PUSH AF
PUSH HL ; áâ. à §àï¤
PUSH IX ; ­®¬¥à «®£. ᥪâ®à 
@ -1805,15 +1868,15 @@ MKD12 PUSH AF
OUT (SLOT3),A
;
LD A,(FatBuffer.DRIVE)
LD DE,SECBUF+#C000
LD DE,CORE_BUFFERS.SECBUF+#C000
LD BC,1*256 + Dss.DRV.Write
RST ToDSS.DRV
;
POP AF
OUT (SLOT3),A
LD HL,SECBUF
LD DE,SECBUF+1
LD HL,CORE_BUFFERS.SECBUF
LD DE,CORE_BUFFERS.SECBUF+1
LD BC,511
LD (HL),0
LDIR ;!FIXIT ­ã¦­® «¨ â ª ¬­®£® £à®å âì?
@ -1841,7 +1904,7 @@ MKD11 POP AF
; INPUT: HL - "C:\DIR\DIR\DIR_NAME",0
//////////////////////////////////////////////////////////////////////
RMDIR:
_mSavePath
_mSavePath 1
CALL GETWORD
RET C
LD HL,TMPNAME
@ -1862,7 +1925,7 @@ RMDIR:
PUSH IX
RMD17 PUSH HL
CALL NSECTOR
LD A,(BootSector.S_P_C)
LD A,(CORE_BUFFERS.BootSector.S_P_C)
RMD12 PUSH AF
PUSH HL
PUSH IX
@ -1871,7 +1934,7 @@ RMD12 PUSH AF
IN A,(SLOT0)
OUT (SLOT3),A
LD DE,SECBUF+#C000
LD DE,CORE_BUFFERS.SECBUF+#C000
LD BC,1*256 + Dss.DRV.Read
LD A,(FatBuffer.DRIVE)
RST ToDSS.DRV
@ -1880,7 +1943,7 @@ RMD12 PUSH AF
OUT (SLOT3),A
LD B,16 ;!HARDCODE 16 * 32 = 512; 32 - à §¬¥à § ¯¨á¨, 512 - à §¬¥à áç¨â ­­®£® ᥪâ®à 
LD HL,SECBUF
LD HL,CORE_BUFFERS.SECBUF
RMD10 LD A,(HL)
OR A
JP Z,RMD15 ;DIR EMPTY

View File

@ -47,8 +47,8 @@ FM_BUF: _sFM
JR NC,ABS_FM
PUSH DE
LD IY,FM_BUF
LD DE,FM_BUF.Size
LD IY,CORE_BUFFERS.FM_BUF
LD DE,CORE_BUFFERS.FM_BUF.Size
AND A
JR Z,.endLoop
.loop: ADD IY,DE
@ -82,8 +82,8 @@ RES_FM:
GET_FM: LD B,FMCOUNT
LD C,#FF
LD IY,FM_BUF-FM_BUF.Size
LD DE,FM_BUF.Size
LD IY,CORE_BUFFERS.FM_BUF - CORE_BUFFERS.FM_BUF.Size
LD DE,CORE_BUFFERS.FM_BUF.Size
.loop: ADD IY,DE
INC C
LD A,(IY+0)
@ -175,7 +175,7 @@ BLOKRD0 POP BC
; B - Amount sectors
BLOK_RD: PUSH BC
LD (READ.MEM),IX
LD A,(BootSector.S_P_C) ;SECTORS PER CLUSTER
LD A,(CORE_BUFFERS.BootSector.S_P_C) ;SECTORS PER CLUSTER
LD C,A
LD B,0 ;!FIXIT
;HL:DE / BC => DE:IX HL-OSTATOK
@ -255,7 +255,7 @@ BLOKRD2:
POP DE
POP BC
LD A,(BootSector.S_P_C)
LD A,(CORE_BUFFERS.BootSector.S_P_C)
SUB E
LD C,A ;\
CP B ; \
@ -280,7 +280,7 @@ BLOKRD4 LD DE,(READ.MEM)
JP C,BLOKRD0
POP BC
LD HL,(READ.MEM)
LD DE,(BootSector.B_P_S)
LD DE,(CORE_BUFFERS.BootSector.B_P_S)
BLOKRD5 ADD HL,DE
DEC C
JR NZ,BLOKRD5
@ -289,7 +289,7 @@ BLOKRD5 ADD HL,DE
LD A,B
OR A
RET Z
BLOKRD6 LD HL,BootSector.S_P_C
BLOKRD6 LD HL,CORE_BUFFERS.BootSector.S_P_C
LD A,B
SUB (HL)
LD B,A
@ -317,7 +317,7 @@ BLOKRD7 EX DE,HL
JP C,BLOKRD0
POP BC
LD HL,(READ.MEM)
LD DE,(BootSector.B_P_S)
LD DE,(CORE_BUFFERS.BootSector.B_P_S)
BLOKRD8 ADD HL,DE
DEC C
JR NZ,BLOKRD8
@ -345,7 +345,7 @@ BLOKWR0 POP BC
; B - Amount sectors
BLOK_WR PUSH BC
LD (READ.MEM),IX
LD A,(BootSector.S_P_C) ;SECTORS PER CLUSTER
LD A,(CORE_BUFFERS.BootSector.S_P_C) ;SECTORS PER CLUSTER
LD C,A
LD B,0
;HL:DE / BC => DE:IX HL-OSTATOK
@ -440,7 +440,7 @@ BLOKWR2 LD A,B
POP DE
POP BC
LD A,(BootSector.S_P_C)
LD A,(CORE_BUFFERS.BootSector.S_P_C)
SUB E
LD C,A
CP B
@ -465,7 +465,7 @@ BLOKWR4 LD DE,(READ.MEM)
JP C,BLOKWR0
POP BC
LD HL,(READ.MEM)
LD DE,(BootSector.B_P_S)
LD DE,(CORE_BUFFERS.BootSector.B_P_S)
BLOKWR5 ADD HL,DE
DEC C
JR NZ,BLOKWR5
@ -474,7 +474,7 @@ BLOKWR5 ADD HL,DE
LD A,B
OR A
RET Z
BLOKWR6 LD HL,BootSector.S_P_C
BLOKWR6 LD HL,CORE_BUFFERS.BootSector.S_P_C
LD A,B
SUB (HL)
LD B,A
@ -507,7 +507,7 @@ BLOKWR9 POP BC
JP C,BLOKWR0
POP BC
LD HL,(READ.MEM)
LD DE,(BootSector.B_P_S)
LD DE,(CORE_BUFFERS.BootSector.B_P_S)
BLOKWR8 ADD HL,DE
DEC C
JR NZ,BLOKWR8
@ -556,9 +556,11 @@ READ: LD (R_POINT),HL
CALL SET_FM
RET C
CALL TSTSIZE
LD A,D
OR E
JP Z,.NOREAD ;!FIXIT ¬®¦­® ¯¥à¥­¥á⨠¢ ­ ç «® ¯à®æ¥¤ãàë
;!FIXIT ¬®¦­® ¯¥à¥­¥á⨠¢ ­ ç «® ¯à®æ¥¤ãàë
LD A,D
OR E
JP Z,.NOREAD
;
PUSH DE
LD A,(IY+_sFM.DRIVE)
CALL OPENDSK
@ -625,7 +627,7 @@ READ: LD (R_POINT),HL
OR C
JP Z,.ROV6
PUSH BC
LD IX,BUFFER+#C000
LD IX,CORE_BUFFERS.BUFFER+#C000
LD B,1
IN A,(SLOT3)
PUSH AF
@ -636,7 +638,7 @@ READ: LD (R_POINT),HL
LD C,SLOT3
OUT (C),B
JP C,.ERR_1
LD HL,BUFFER
LD HL,CORE_BUFFERS.BUFFER
LD DE,(R_POINT)
POP BC
LDIR
@ -661,7 +663,7 @@ READ: LD (R_POINT),HL
.ROV1: PUSH BC
PUSH HL
PUSH DE
LD IX,BUFFER+#C000
LD IX,CORE_BUFFERS.BUFFER+#C000
LD B,1
IN A,(SLOT3)
PUSH AF
@ -695,7 +697,7 @@ READ: LD (R_POINT),HL
LD C,L
LD HL,0
.ROV3: PUSH HL
LD HL,BUFFER
LD HL,CORE_BUFFERS.BUFFER
ADD HL,DE
LD DE,(R_POINT)
LDIR
@ -786,7 +788,7 @@ WOV2: POP BC
PUSH HL
PUSH DE
PUSH BC
LD IX,BUFFER+#C000
LD IX,CORE_BUFFERS.BUFFER+#C000
LD B,1
IN A,(SLOT3)
PUSH AF
@ -796,7 +798,7 @@ WOV2: POP BC
POP BC
LD C,SLOT3
OUT (C),B
LD DE,BUFFER
LD DE,CORE_BUFFERS.BUFFER
LD HL,(R_POINT)
POP BC
JP C,PWERR2
@ -804,7 +806,7 @@ WOV2: POP BC
LD (R_POINT),HL
POP DE
POP HL
LD IX,BUFFER+#C000
LD IX,CORE_BUFFERS.BUFFER+#C000
LD B,1
IN A,(SLOT3)
PUSH AF
@ -841,7 +843,7 @@ WOV6: LD DE,(READ.S_POINT)
WOV1: PUSH BC
PUSH HL
PUSH DE
LD IX,BUFFER+#C000
LD IX,CORE_BUFFERS.BUFFER+#C000
LD B,1
IN A,(SLOT3)
PUSH AF
@ -870,7 +872,7 @@ WOV1: PUSH BC
LD C,L
LD HL,0
WOV3: PUSH HL
LD HL,BUFFER
LD HL,CORE_BUFFERS.BUFFER
ADD HL,DE
LD DE,(R_POINT)
EX DE,HL
@ -879,7 +881,7 @@ WOV3: PUSH HL
EXX
PUSH HL
PUSH DE
LD IX,BUFFER+#C000
LD IX,CORE_BUFFERS.BUFFER+#C000
LD B,1
IN A,(SLOT3)
PUSH AF
@ -905,7 +907,7 @@ WOV3: PUSH HL
; NSECTOR: DEC HL
; DEC HL
; EX DE,HL
; LD A,(BootSector.S_P_C)
; LD A,(CORE_BUFFERS.BootSector.S_P_C)
; LD B,A
; LD HL,0
; LD IX,0
@ -924,7 +926,7 @@ WOV3: PUSH HL
NSECTOR: DEC HL
DEC HL
LD DE,0
LD A,(BootSector.S_P_C)
LD A,(CORE_BUFFERS.BootSector.S_P_C)
XOR 1
JR Z,.skip
;

View File

@ -182,8 +182,8 @@ FRESP2: LD D,B
LD E,C
LD HL,(MAX_CLU)
DEC HL
LD BC,(BootSector.B_P_S)
LD A,(BootSector.S_P_C)
LD BC,(CORE_BUFFERS.BootSector.B_P_S)
LD A,(CORE_BUFFERS.BootSector.S_P_C)
AND A
RET
@ -232,7 +232,7 @@ RD_BPB: LD C,SLOT3
OUT (SLOT3),A
;R08
;LD DE,BOOT+#C000
LD DE,SECBUF+#C000
LD DE,CORE_BUFFERS.SECBUF+#C000
;R08
LD A,(FatBuffer.DRIVE) ;¢ë§®¢ RD_BPB ¬®¦¥â ¢ ¤ «ì­¥©è¥¬ ¯®­ ¤®¡¨âìáï, ¯ã᪠© ®­  á ¬  ¤®áâ ñâ ¯¥à¥¬¥­­ãî DRIVE
@ -245,21 +245,21 @@ RD_BPB: LD C,SLOT3
//PUSH IY ; ¯®ª  ¡¥§ ¨­¤¥ªá­®£®, ­® ¬®¦¥â ¯à¨£®¤¨âìáï
LD DE,#AA55 ; ᨣ­ âãà  ;R05
LD HL,(SECBUF+510) ;R08 ;R07
LD HL,(CORE_BUFFERS.SECBUF+510) ;R08 ;R07
;R05
AND A
SBC HL,DE
JP NZ,DOS_X_Error.UnknownBPB
;R08
LD HL,SECBUF
LD DE,BootSector
LD HL,CORE_BUFFERS.SECBUF
LD DE,CORE_BUFFERS.BootSector
LD BC,_sBOOT_SEC ; size
LDIR
;
//LD IY,BootSector ; ¯®ª  ¡¥§ ¨­¤¥ªá­®£®, ­® ¬®¦¥â ¯à¨£®¤¨âìáï
//LD A,(IY+_sBOOT_SEC.ID_FORM)
LD A,(BootSector.ID_FORM)
LD A,(CORE_BUFFERS.BootSector.ID_FORM)
CP #F0
JP C,DOS_X_Error.UnknownBPB
@ -272,7 +272,7 @@ RD_BPB: LD C,SLOT3
//LD L,(IY+_sBOOT_SEC.RESERVE) ;Reserve sec
//LD H,(IY+_sBOOT_SEC.RESERVE+1)
LD HL,(BootSector.RESERVE)
LD HL,(CORE_BUFFERS.BootSector.RESERVE)
;
; LD E,(IY+_sBOOT_SEC.HIDDEN) ;Hidden sec
@ -285,10 +285,10 @@ RD_BPB: LD C,SLOT3
//LD E,(IY+_sBOOT_SEC.S_P_F) ; sectors in FAT
//LD D,(IY+_sBOOT_SEC.S_P_F+1)
LD DE,(BootSector.S_P_F)
LD DE,(CORE_BUFFERS.BootSector.S_P_F)
LD A,(BootSector.FAT_NUM) ; amount FATs
LD A,(CORE_BUFFERS.BootSector.FAT_NUM) ; amount FATs
CP 1
JR Z,.loop1
DEC A
@ -305,7 +305,7 @@ RD_BPB: LD C,SLOT3
//LD C,(IY+_sBOOT_SEC.B_P_S) ; Size sectors
//LD B,(IY+_sBOOT_SEC.B_P_S+1)
LD BC,(BootSector.B_P_S)
LD BC,(CORE_BUFFERS.BootSector.B_P_S)
; RL C
; RL B
; RL C
@ -330,7 +330,7 @@ RD_BPB: LD C,SLOT3
//LD E,(IY+_sBOOT_SEC.F_P_DIR) ; Number file handel
//LD D,(IY+_sBOOT_SEC.F_P_DIR+1)
LD DE,(BootSector.F_P_DIR)
LD DE,(CORE_BUFFERS.BootSector.F_P_DIR)
EX DE,HL
DEC HL
@ -359,9 +359,9 @@ RD_BPB: LD C,SLOT3
//LD L,(IY+_sBOOT_SEC.B_P_S) ; Size sector
//LD H,(IY+_sBOOT_SEC.B_P_S+1)
LD HL,(BootSector.B_P_S) ; Size sector
LD HL,(CORE_BUFFERS.BootSector.B_P_S) ; Size sector
LD A,(BootSector.S_P_C) ;!TODO FATcacheSize
LD A,(CORE_BUFFERS.BootSector.S_P_C) ;!TODO FATcacheSize
;NEXTAD3
; .loop3: ADD HL,BC ; calc. cluster size
; DEC A
@ -389,7 +389,7 @@ RD_BPB: LD C,SLOT3
ENDIF
////////////////////////////////////////////////////////////////////////
LD HL,BootSector.ID_FAT ;!!!!!   ¥á«¨ IY ¨á¯®«ì§ã¥âáï ¤«ï ¯¥à¥¬¥­­®£® BootSector, â® ¡ã¤¥â ¡ £ 
LD HL,CORE_BUFFERS.BootSector.ID_FAT ;!!!!!   ¥á«¨ IY ¨á¯®«ì§ã¥âáï ¤«ï ¯¥à¥¬¥­­®£® BootSector, â® ¡ã¤¥â ¡ £ 
LD DE,FatBuffer.MSG
LD B,3
;R_BPBL1
@ -426,9 +426,9 @@ RD_BPB: LD C,SLOT3
//LD C,(IY+_sBOOT_SEC.S_P_T) ; Sector per track
//LD B,(IY+_sBOOT_SEC.S_P_T+1)
LD BC,(BootSector.S_P_T) ; Sector per track
LD BC,(CORE_BUFFERS.BootSector.S_P_T) ; Sector per track
LD A,(BootSector.HEADS) ;!!!!!   ¥á«¨ IY ¨á¯®«ì§ã¥âáï ¤«ï ¯¥à¥¬¥­­®£® BootSector, â® ¡ã¤¥â ¡ £ 
LD A,(CORE_BUFFERS.BootSector.HEADS) ;!!!!!   ¥á«¨ IY ¨á¯®«ì§ã¥âáï ¤«ï ¯¥à¥¬¥­­®£® BootSector, â® ¡ã¤¥â ¡ £ 
.BPB_L1: ; calc. sector per cylinder
ADD HL,BC
DEC A
@ -446,7 +446,7 @@ RD_BPB: LD C,SLOT3
//LD L,(IY+_sBOOT_SEC.S_P_D)
//LD H,(IY+_sBOOT_SEC.S_P_D+1)
LD HL,(BootSector.S_P_D)
LD HL,(CORE_BUFFERS.BootSector.S_P_D)
LD A,H
OR L
@ -454,11 +454,11 @@ RD_BPB: LD C,SLOT3
;
//LD L,(IY+_sBOOT_SEC.BPB_BIG_TOTAL_SECTORS)
//LD H,(IY+_sBOOT_SEC.BPB_BIG_TOTAL_SECTORS+1)
LD HL,(BootSector.BPB_BIG_TOTAL_SECTORS)
LD HL,(CORE_BUFFERS.BootSector.BPB_BIG_TOTAL_SECTORS)
//LD C,(IY+_sBOOT_SEC.BPB_BIG_TOTAL_SECTORS+2)
//LD B,(IY+_sBOOT_SEC.BPB_BIG_TOTAL_SECTORS+3)
LD BC,(BootSector.BPB_BIG_TOTAL_SECTORS+2)
LD BC,(CORE_BUFFERS.BootSector.BPB_BIG_TOTAL_SECTORS+2)
AND A
SBC HL,DE
@ -469,7 +469,7 @@ RD_BPB: LD C,SLOT3
;AND A ;âãâ CF ¯®«î¡ á á¡à®è¥­ ¤®«¦¥­ ¡ëâì
SBC HL,DE
LD BC,0
.HDDBIG: LD A,(BootSector.S_P_C) ;!!!!!   ¥á«¨ IY ¨á¯®«ì§ã¥âáï ¤«ï ¯¥à¥¬¥­­®£® BootSector, â® ¡ã¤¥â ¡ £ 
.HDDBIG: LD A,(CORE_BUFFERS.BootSector.S_P_C) ;!!!!!   ¥á«¨ IY ¨á¯®«ì§ã¥âáï ¤«ï ¯¥à¥¬¥­­®£® BootSector, â® ¡ã¤¥â ¡ £ 
SCF
.S4C01: RRA
JR C,.S4C02
@ -506,7 +506,7 @@ RD_BPB: LD C,SLOT3
RET
.IBM_DOS:
LD A,(BootSector.ID_FORM)
LD A,(CORE_BUFFERS.BootSector.ID_FORM)
CP #F0
JR C,DOS_X_Error.UnknownBPB
;????? ­ ¤® «¨ ¨§¬¥­¨âì?
@ -582,7 +582,7 @@ SAVE_CUR_PATH
CALL CURRDSK
ADD A,"A"
LD HL,TMP_CURDIR
LD HL,TMP_CURDIR_AUTO
LD (HL),A
INC HL
LD A,":"
@ -608,7 +608,8 @@ SAVE_CUR_PATH
; !TODO ¯®ç¨­¨âì
BACK_CUR_PATH:
PUSH IY
RET NC
.force: PUSH IY
PUSH IX
PUSH HL
PUSH DE
@ -618,8 +619,8 @@ BACK_CUR_PATH:
SET_PAGE_X ENVPAGE
PUSH AF
LD HL,TMP_CURDIR
CALL CHDIR
LD HL,TMP_CURDIR_AUTO
CALL CHDIR.tmp
; ¯®ç¥¬ã ­¥ POP AF : OUT (SLOT3),A
//POP BC

View File

@ -320,7 +320,7 @@ F_START: DI
LDIR
;R07 ;R11
;R11
LD HL,FM_BUF
LD HL,CORE_BUFFERS.FM_BUF
LD (HL),'.'
;R11
;---------------------------;
@ -456,6 +456,7 @@ ADRST10: ;DS 512 ;,0
;
CLEAR_ZONE.start EQU $
MODULE CORE_BUFFERS
BUFFERSplace _sBuffers=$
FM_BUF _sFM = BUFFERSplace.FileManipulator
.Size EQU _sFM
@ -465,15 +466,15 @@ EXEBUFF _sEXE_HEADER = BUFFERSplace.EXE_Header
XSTACK EQU BUFFERSplace.Stack.SPoint
BUFFER EQU BUFFERSplace.Buffer
SECBUF EQU BUFFER ;!TODO ®â¤¥«¨âì SECBUF ®â BUFFER
ENDMODULE
CLEAR_ZONE.size EQU _sBuffers
ASSERT (BUFFERSplace+_sBuffers)<#3FFF, "Warning!!! OUT OF SLOT0"
ASSERT (CORE_BUFFERS.BUFFERSplace+_sBuffers)<#4000, "Warning!!! OUT OF SLOT0"
DISPLAY "--- --- --- --- --- --- --- ---"
DISPLAY "BUFFERSplace.BootSector ",/H,BUFFERSplace.BootSector
DISPLAY "BootSector ", /H, BootSector
DISPLAY "EXEBUFF ", /H, EXEBUFF
DISPLAY "Size ", /H, EXEBUFF-BootSector
DISPLAY "BUFFERSplace.BootSector ",/H,CORE_BUFFERS.BUFFERSplace.BootSector
DISPLAY "BootSector ", /H, CORE_BUFFERS.BootSector
DISPLAY "EXEBUFF ", /H, CORE_BUFFERS.EXEBUFF
DISPLAY "Size ", /H, CORE_BUFFERS.EXEBUFF - CORE_BUFFERS.BootSector
DISPLAY "--- --- --- --- --- --- --- ---"
@ -508,12 +509,12 @@ BUFFER EQU XSTACK+1
SECBUF EQU BUFFER
;R11 ////////////////////////////////
*/
DISPLAY "FM_BUF addr: ",/H,FM_BUF
DISPLAY "FM_BUF.Size: ",/H,FM_BUF.Size
DISPLAY "FM_BUF.FullSize: ",/H,FM_BUF.FullSize
DISPLAY "EXEBUFF: ",/H,EXEBUFF
DISPLAY "XSTACK: ",/H,XSTACK
DISPLAY "BUFFER: ",/H,BUFFER
DISPLAY "FM_BUF addr: ",/H,CORE_BUFFERS.FM_BUF
DISPLAY "FM_BUF.Size: ",/H,CORE_BUFFERS.FM_BUF.Size
DISPLAY "FM_BUF.FullSize: ",/H,CORE_BUFFERS.FM_BUF.FullSize
DISPLAY "EXEBUFF: ",/H,CORE_BUFFERS.EXEBUFF
DISPLAY "XSTACK: ",/H,CORE_BUFFERS.XSTACK
DISPLAY "BUFFER: ",/H,CORE_BUFFERS.BUFFER
;
;
;> > > > > > > > > > > > > > > > BUFFERS < < < < < < < < < < < < < < < <
@ -523,8 +524,7 @@ SECBUF EQU BUFFER
;|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||;
; !!!!! íâ  ¯à®æ¥¤ãà  § âàñâáï ¯®á«¥ ¨á¯®«­¥­¨ï
DEPLOY:
;Allocate memory
DEPLOY: ;Allocate memory
LD BC,USING_MEMPAGES*256 + BIOS.GetMem
RST ToBIOS
RET C ;R10
@ -550,7 +550,7 @@ DEPLOY:
OUT (SLOT3),A
SET_PAGE_X DRVPAGE
\
PUSH AF
LD HL,DRV_CONTENT
LD DE,#C000
@ -562,14 +562,8 @@ DEPLOY:
OUT (SLOT3),A
AND A ;R10
RET
; .halt: POP HL ;á­¨¬ ¥¬ «¨è­¥¥ á® á⥪ 
; ; LD A,DSS_Error.sys.NOT_ENOUGH_MEMORY
; ; SCF
; RET
; defb 0
IF ENVVALUE != BUFFER
IF ENVVALUE != CORE_BUFFERS.BUFFER
ASSERT "Warning! ENVVALUE != BUFFER"
//BLOCK 1000,0
ENDIF

View File

@ -149,17 +149,21 @@ XLAT_T: DB #00,#43,#00,#3F,#3D,#3B,#3C,#46,#00,#44,#42,#40,#3E,#0F,#00,#00 ;00
;
;
MACRO _mSavePath
MACRO _mSavePath force
IF SAVE_PATH_MACRO
PUSH HL
LD HL,BACK_CUR_PATH
IF force==1
LD HL,BACK_CUR_PATH.force
ELSE
LD HL,BACK_CUR_PATH
ENDIF
EX (SP),HL
CALL SAVE_CUR_PATH
ENDIF
ENDM
MACRO _mRestorePath
IF SAVE_PATH_MACRO
CALL BACK_CUR_PATH
CALL BACK_CUR_PATH.force
ENDIF
ENDM
MACRO _mRestorStackAfterRestorePath

View File

@ -4,7 +4,7 @@
;---------------------------------------------------------------
;Rev Date Name Description
;---------------------------------------------------------------
;R02 13-05-2023 BAO ˆ­¨æ¨ «¨§ æ¨ï ¯¥à¥¬¥­­®© BOOTDSK ¯à¨ áâ à⥠;!TODO ¯à®¢¥à¨âì ª ª ã ‘ ©¬ ­  ᤥ« ­®
;R02 13-05-2023 BAO ˆ­¨æ¨ «¨§ æ¨ï ¯¥à¥¬¥­­®© BOOTDSK ¯à¨ áâ àâ¥
;R03 09-03-2007 VAS ”ã­ªæ¨ï ENV_EX ⥯¥àì ®¡à¥§ ¥â ᫨誮¬ ¤«¨­­ãî áâப㠯¥à¥¤ ¢ë室®¬
;R01 19-11-2002 DNS CORRECT DE ADDRESS IN GETENV
;---------------------------------------------------------------
@ -13,6 +13,7 @@
; ”ã­ªæ¨ï #46. ‘¨á⥬­®¥ ®ªà㦥­¨¥.
;
; ¢å®¤: B - ­®¬¥à ¯®¤ä㭪樨:
; B=#FF, ¨­¨æ¨ «¨§ æ¨ï
; B=0, ¯®«ã祭¨¥ á¨á⥬­®£® ®ªà㦥­¨ï.
; HL - ¡ãä¥à
; B=1, ¯®«ãç¨âì ¯¥à¥¬¥­­ãî ®ªà㦥­¨ï.
@ -47,6 +48,7 @@ ENVIRON:
INITENV:
SET_PAGE_X ENVPAGE
PUSH AF
;
;R02
LD A,(BOOTDRV)
ADD A,'A'
@ -65,6 +67,7 @@ INITENV:
AND A
SBC HL,DE
LD (ENVSIZE),HL
;
POP AF
OUT (SLOT3),A
AND A
@ -82,6 +85,7 @@ READENV:
LD C,SLOT3
IN L,(C)
EXX
LD HL,ENVIRONMENT
INC HL
POP DE
@ -265,8 +269,8 @@ ENV_E2 LD A,(HL)
SCF
RET
ENVNAME EQU EXEBUFF ;DS 32
ENVVALUE EQU BUFFER //#3800 ; BUFFER ;DS 128
ENVNAME EQU CORE_BUFFERS.EXEBUFF ;DS 32
ENVVALUE EQU CORE_BUFFERS.BUFFER //#3800 ; BUFFER ;DS 128
ENVSIZE DW DEF_ENV_SIZE ;E_END-ENVIRONMENT ;160

View File

@ -6,7 +6,7 @@
;---------------------------------------------------------------
;Rev Date Name Description
;---------------------------------------------------------------
;R12 20-07-2023 BAO <20>ਠ§ ¢¥à襭¨¨ ¯à¨«®¦¥­¨ï ç¥à¥§ äã­ªæ¨î #41 ¨«¨ " ¢ à¨©­®" ¢ ¢®§¢à é ¥¬®¥ ¯à¨«®¦¥­¨¥ ¯¥à¥¤ ñâáï ª®¤ ®è¨¡ª¨ ¨ ä« £ CF=1
//;R12 20-07-2023 BAO <20>ਠ§ ¢¥à襭¨¨ ¯à¨«®¦¥­¨ï ç¥à¥§ äã­ªæ¨î #41 ¨«¨ " ¢ à¨©­®" ¢ ¢®§¢à é ¥¬®¥ ¯à¨«®¦¥­¨¥ ¯¥à¥¤ ñâáï ª®¤ ®è¨¡ª¨ ¨ ä« £ CF=1
;R11 17-04-2023 BAO OPTIMIZED BUFFERS, FREED UP 768 BYTES FOR CODE
;R10 13-04-2023 BAO FIX BUG WITH PARSING DIRECTORY BUFFER
;R09 14-04-2003 DNS NOW EXEC DON'T FOLLOW TO PROGRAM'S DIR
@ -135,7 +135,7 @@ EXTN_PR EQU 1 ;%00000010
NAM_PR EQU 0 ;%00000001
EX_PATH: EXX
LD HL,NM_PATH_A ;BUILT-IN BUFFER FOR PATH ;!FIXIT ­¥ çñ, çâ® ¨á¯®«ì§ã¥âáï ®¡é¨© ¡ãä¥à?
LD HL,NM_PATH_A ;BUILT-IN BUFFER FOR PATH ;!!!!! ¨á¯®«ì§ã¥âáï ®¡é¨© ¡ãä¥à
LD (NM_PATH),HL
LD HL,NM_NAME_A
LD (NM_NAME),HL
@ -364,7 +364,7 @@ NM_NAME_A: DB " ",#00
NM_EXTN_A: DB " ",0
NM_PATH_A EQU BUFFER ;DS 256
NM_PATH_A EQU CORE_BUFFERS.BUFFER ;DS 256 ;!!!!! shared buffer
//////////////////////////////////////////////////////////////////////
@ -646,27 +646,6 @@ SETWIN2 LD C,BIOS.GetMemPage
; // SLOT0 - #C2 %1100'0010
; // SLOT0 - #E2 %1110'0010
;/////////////////////////////////////////////////////////////////////
; ”ã­ªæ¨ï #40. ‚믮«­¨âì ä ©«.
;
; ¢å®¤: HL - 㪠§ â¥«ì ­  ¨¬ï ä ©« 
; B=0 - § £à㧨âì ¨ ¢ë¯®«­¨âì ¯à®£à ¬¬ã á ª®à®âª¨¬ ¨¬¥­¥¬ (¡¥§ ¯®«­®£® ¯ã⨠¤® ¯à®£à ¬¬ë)
; B=1 - § £à㧨âì ¨ ¢ë¯®«­¨âì ¯à®£à ¬¬ã á ¯®«­ë¬ ¯ãâñ¬ ¤® ¯à®£à ¬¬ë
; ¢ë室: A - ª®¤ § ¢¥à襭¨ï, ¥á«¨ CF=0
; ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
;/////////////////////////////////////////////////////////////////////
EXEC:
_mSavePath
INC B ;R03
DEC B ;R03
JP Z,EXEC0 ;R03
DEC B ;R03
JP Z,EXEC1 ;R03
LD A,DSS_Error.sys.INVALID_FUNCTION ;R03
SCF ;R03
RET ;R03
CHECKPATH: ; !TODO ᤥ« âì ¯à®¢¥àªã ­  ª®«¨ç¥á⢮ 横«®¢
LD A,(HL)
INC HL
@ -697,7 +676,7 @@ FINDPATH:
CALL MAKE_PATH_ARRAY
LD HL,PATH_PNT_ARRAY
NEXTPATHI:
.NEXTPATHI:
LD E,(HL)
INC HL
LD D,(HL)
@ -708,22 +687,22 @@ NEXTPATHI:
PUSH BC
EX DE,HL
CALL Z,GOTO_CURDIR
CALL CHDIR
JR C,BADPATH
LD HL,EXEBUFF
CALL CHDIR.tmp
JR C,.BADPATH
LD HL,CORE_BUFFERS.EXEBUFF
LD DE,MASKARE
CALL MASK
JR C,BADPATH
JR C,.BADPATH
CALL TST_EXT
JR C,BADPATH
JR C,.BADPATH
CALL SEARCH
BADPATH:
.BADPATH:
POP BC
POP HL
JR NC,PATHFOUND
DJNZ NEXTPATHI
JR NC,.PATHFOUND
DJNZ .NEXTPATHI
SCF
PATHFOUND:
.PATHFOUND:
POP BC
LD A,B
OUT (SLOT3),A
@ -733,7 +712,7 @@ PATHFOUND:
GOTO_CURDIR:
PUSH HL
LD HL,TMP_CURDIR
CALL CHDIR
CALL CHDIR.tmp
POP HL
RET
@ -779,7 +758,8 @@ NEXTCH: LD A,(DE)
ENVPATH DB "PATH=",0
;;;
; !TODO ‘„…‹€’œ <E28098>“Š<E28099>މ
; !TODO ‘„…‹€’œ <E28098>“Š<E28099>މ ¨ ®¡®§­ ç¨âì áâà ­¨æã
TMP_CURDIR_AUTO EQU #FB00
PATH_PNT_ARRAY EQU #FC80
TMP_CURDIR EQU #FD00
ENVTEMP EQU #FE00
@ -792,9 +772,18 @@ DECTASK: LD HL,TASK ;R08
DEC (HL) ;R08
RET ;R08
;------------------------------------------------------------------------
;/////////////////////////////////////////////////////////////////////
; ”ã­ªæ¨ï #40. ‚믮«­¨âì ä ©«.
;
; ¢å®¤: HL - 㪠§ â¥«ì ­  ¨¬ï ä ©« 
; B=0 - § £à㧨âì ¨ ¢ë¯®«­¨âì ¯à®£à ¬¬ã á ª®à®âª¨¬ ¨¬¥­¥¬ (¡¥§ ¯®«­®£® ¯ã⨠¤® ¯à®£à ¬¬ë)
; B=1 - § £à㧨âì ¨ ¢ë¯®«­¨âì ¯à®£à ¬¬ã á ¯®«­ë¬ ¯ãâñ¬ ¤® ¯à®£à ¬¬ë
; ¢ë室: A - ª®¤ § ¢¥à襭¨ï, ¥á«¨ CF=0
; ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
;---------------------------------------------------------------------
; ‡ £à㧨âì ¨ ¢ë¯®«­¨âì ¯à®£à ¬¬ã.
; äã­ª. 40h, B=0.
; äã­ª. #40, B=0.
;
; 1) Žâªà뢠¥â exe-ä ©« ­  ç⥭¨¥;
; 2) ‘ç¨â뢠¥â ¢ à ¡®çãî ®¡« áâì ¯à¥ä¨ªá exe-ä ©« ;
@ -816,13 +805,22 @@ DECTASK: LD HL,TASK ;R08
; -01 1 db ? ; “஢¥­ì ⥪ã饩 ¯à®£à ¬¬ë
; +00 1 db ? ; „«¨­  ª®¬-áâப¨
; +01 127 ds ? ; <20> à ¬¥âàë ª®¬-áâப¨, § ª ­ç¨¢ ¥âáï ­ã«¥¬
;------------------------------------------------------------------------
EXEC0: LD (CMDLINE),HL
;/////////////////////////////////////////////////////////////////////
EXEC: _mSavePath 1
INC B ;R03
DEC B ;R03
JR Z,.VAR_1 ;R03
DEC B ;R03
JR Z,.VAR_2 ;R03
LD A,DSS_Error.sys.INVALID_FUNCTION ;R03
SCF ;R03
RET ;R03
;
.VAR_1: LD (CMDLINE),HL
CALL CHECKPATH ;CHECK FOR '\' - SHORT/FULL NAME
LD HL,(CMDLINE)
JR C,EXEC0_SHORT
EXEC1: CALL EXEC_1
.VAR_2: CALL EXEC_1
SCF
RET ; File not found - exit
@ -846,6 +844,7 @@ EXEC_1: LD (CMDLINE),HL
CALL DECTASK ;R08
AND A
RET
;
.noError:
POP HL ; 㡨ࠥ¬ «¨è­¨©  ¤à¥á_¢®§¢à â _¢_¢ë§¢ ¢èãî_¯à®æ¥¤ãàã
JP EXEC02 ;R07 CONTINUE EXECUTING PROGRAM
@ -865,7 +864,7 @@ EXEC0_SHORT:
CALL ENVIRON
LD HL,(CMDLINE)
LD DE,EXEBUFF
LD DE,CORE_BUFFERS.EXEBUFF
COPYEXN: LD A,(HL)
LDI
OR A
@ -876,16 +875,16 @@ COPYEXN: LD A,(HL)
RET C
;
LD HL,(CMDLINE)
JR EXEC1
JR EXEC.VAR_2
EXEC02: LD (EXE_FM),A
LD HL,EXEBUFF
LD HL,CORE_BUFFERS.EXEBUFF
LD DE,#0080 ;!#0200(512) ;R02
LD A,(EXE_FM)
CALL READ
JP C,ERREXE
LD IX,EXEBUFF
LD HL,(EXEBUFF)
LD IX,CORE_BUFFERS.EXEBUFF
LD HL,(CORE_BUFFERS.EXEBUFF)
LD DE,'E'+'X'*256
;AND A ; ­¥ ­ã¦­®, ¥á«¨ ¡ë ¡ë« CF=1, â® çãâì ¢ëè¥ ¬ë ¡ë ã諨 ­  JP C,ERREXE
SBC HL,DE
@ -900,13 +899,14 @@ EXEC02: LD (EXE_FM),A
; LD HL,TASK
; INC (HL)
;
; HERE TO DO: BACK TO CURRDIR
; !TODO: BACK TO CURRDIR
;
;R09
_mRestorStackAfterRestorePath
_mRestorePath
;R09
;
LD DE,(EXEBUFF.LOADER)
LD DE,(CORE_BUFFERS.EXEBUFF.LOADER)
LD A,E
OR D
JP NZ,PRELOAD
@ -919,7 +919,7 @@ EXEC02: LD (EXE_FM),A
LD B,#02
LD A,(EXE_FM)
CALL MOVE_FP
LD DE,(EXEBUFF.LD_ADDR)
LD DE,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
LD A,D
AND #3F
LD D,A
@ -985,19 +985,19 @@ NOINK: LD A,H
LD (DE),A
;^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^;
LD HL,(CMDLINE)
LD DE,SECBUF+1
LD DE,CORE_BUFFERS.SECBUF+1
CALL SCOPYS
LD A,#80
LD A,#80 ;!HARDCODE cmd line size
SUB B
LD (SECBUF),A
LD (CORE_BUFFERS.SECBUF),A
;R02
LD SP,EXEBUFF+510 ;‚áâ ¢«ï¥âáï ¢ DSS_PAGE
LD SP,CORE_BUFFERS.EXEBUFF+510 ;‚áâ ¢«ï¥âáï ¢ SHARED_PAGE
;
LD A,SHARED_PAGE
OUT (SLOT1),A
OUT (SLOT2),A
OUT (SLOT3),A
LD HL,(EXEBUFF.LD_ADDR)
LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
LD DE,RAMMAP
LD A,H
AND #C0
@ -1016,8 +1016,10 @@ FR8000: LD A,(DE)
FRC000: LD A,(DE)
OUT (SLOT3),A
CALL M_PSP
LD HL,(EXEBUFF.OFFCOD2)
LD IX,(EXEBUFF.OFFCOD1)
LD HL,(CORE_BUFFERS.EXEBUFF.OFFCOD2)
LD IX,(CORE_BUFFERS.EXEBUFF.OFFCOD1)
LD B,Dss.Move_FP.FrStart
LD A,(EXE_FM)
CALL MOVE_FP
@ -1025,13 +1027,13 @@ FRC000: LD A,(DE)
LD SP,#403F ;!HARDCODE STACK before start EXE. “áâ ­ ¢«¨¢ ¥âáï ª®£¤  ¢®âª­ãâë DSS_PAGE
;
;
LD DE,(EXEBUFF.LD_ADDR)
LD DE,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
XOR A
LD H,A
LD L,A
SBC HL,DE
EX DE,HL ; de=ç¨á«® ç¨â. ¡ ©â
LD HL,(EXEBUFF.LD_ADDR) ; ¡ãä¥à
LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR) ; ¡ãä¥à
LD A,(EXE_FM) ; ¤¥áªà. ä ©« 
CALL READ ; ç⥭¨¥ ¨§ ä ©« 
LD A,(EXE_FM) ; ¤¥áªà. ä ©« 
@ -1041,15 +1043,15 @@ FRC000: LD A,(DE)
;R09
_mRestorePath
;
LD SP,(EXEBUFF.SP_REG)
LD HL,(EXEBUFF.LD_ADDR)
LD SP,(CORE_BUFFERS.EXEBUFF.SP_REG)
LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
LD DE,#0080
AND A
SBC HL,DE
EX DE,HL
LD XH,D
LD XL,E
LD HL,(EXEBUFF.PC_REG)
LD HL,(CORE_BUFFERS.EXEBUFF.PC_REG)
LD DE,RETFAR ;  ¤à¥á ¯/¯ "­¥®¦¨¤ ­­®¥ § ¢¥à襭¨¥ ¯à®æ¥áá "
PUSH DE
PUSH HL
@ -1094,7 +1096,7 @@ ERREXE: PUSH AF
RET
PRELOAD: EX DE,HL
LD DE,(EXEBUFF.LD_ADDR)
LD DE,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
LD A,D
AND #3F
LD D,A
@ -1131,7 +1133,7 @@ NOINK2:
LD (EXSTACK),SP
LD SP,HL
EXX
;...... ;!FIXIT.<2E>….Ž•<C5BD><EFBFBD>Ÿ….DE.¯¥à¥¤.¢ë§®¢®¬.BIOS..............................;
; <20>Ž•<C5BD><EFBFBD>Ÿ…Ÿ DE ¯¥à¥¤ ¢ë§®¢®¬ BIOS,   ¡¨®á ¯®ª  ¥£® ¨ ­¥ ¯®àâ¨â
LD A,(EXE_MEM)
LD DE,RAMMAP
LD BC,#00*256 + BIOS.GetMemPage
@ -1154,19 +1156,19 @@ NOINK2:
LD (DE),A
;^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^;
LD HL,(CMDLINE)
LD DE,SECBUF+1
LD DE,CORE_BUFFERS.SECBUF+1
CALL SCOPYS
LD A,#80
SUB B
LD (SECBUF),A
LD (CORE_BUFFERS.SECBUF),A
;R02
LD SP,EXEBUFF+510 ;‚áâ ¢«ï¥âáï ¢ DSS_PAGE
LD SP,CORE_BUFFERS.EXEBUFF+510 ;‚áâ ¢«ï¥âáï ¢ SHARED_PAGE
;
LD A,SHARED_PAGE
OUT (SLOT1),A
OUT (SLOT2),A
OUT (SLOT3),A
LD HL,(EXEBUFF.LD_ADDR)
LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
LD DE,RAMMAP
LD A,H
AND #C0
@ -1185,8 +1187,9 @@ FR8000H: LD A,(DE)
FRC000H: LD A,(DE)
OUT (SLOT3),A
CALL M_PSP
LD HL,(EXEBUFF.OFFCOD2)
LD IX,(EXEBUFF.OFFCOD1)
LD HL,(CORE_BUFFERS.EXEBUFF.OFFCOD2)
LD IX,(CORE_BUFFERS.EXEBUFF.OFFCOD1)
LD B,Dss.Move_FP.FrStart
LD A,(EXE_FM)
CALL MOVE_FP
@ -1195,8 +1198,8 @@ FRC000H: LD A,(DE)
;
;
LD HL,(EXEBUFF.LD_ADDR) ; ¡ãä¥à
LD DE,(EXEBUFF.LOADER) ; ç¨á«® ç¨â. ¡ ©â
LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR) ; ¡ãä¥à
LD DE,(CORE_BUFFERS.EXEBUFF.LOADER) ; ç¨á«® ç¨â. ¡ ©â
LD A,(EXE_FM) ; ¤¥áªà. ä ©« 
CALL READ ; ç⥭¨¥ ¨§ ä ©« 
@ -1204,15 +1207,15 @@ FRC000H: LD A,(DE)
;R09
_mRestorePath
;
LD SP,(EXEBUFF.SP_REG)
LD HL,(EXEBUFF.LD_ADDR)
LD SP,(CORE_BUFFERS.EXEBUFF.SP_REG)
LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
LD DE,#0080
AND A
SBC HL,DE
EX DE,HL
LD XH,D
LD XL,E
LD HL,(EXEBUFF.PC_REG)
LD HL,(CORE_BUFFERS.EXEBUFF.PC_REG)
LD DE,RETFAR
PUSH DE
PUSH HL
@ -1251,12 +1254,14 @@ LEAVE: LD A,B
LD SP,HL
EX DE,HL
LD A,(ERLEVEL)
AND A
;R12
JR Z,.exit
CP DSS_Error.sys.UNEXPECTED_APP_TRMN
JR NZ,.exit
SCF
JP (HL)
;
.exit: JP (HL)
.exit: AND A
JP (HL)
;/////////////////////////////////////////////////////////////////////
; ”ã­ªæ¨ï #42. <20>®«ãç¨âì ª®¤ § ¢¥à襭¨ï ¯à®£à ¬¬ë.
@ -1267,13 +1272,17 @@ LEAVE: LD A,B
WAIT: LD A,(ERLEVEL)
AND A
RET
;/////////////////////////////////////////////////////////////////////
M_PSP: LD HL,(EXEBUFF.LD_ADDR)
;!TODO § ¬¥­¨âì âãâ CALL CURRDIR ¨ CALL CURRDSK ­  ¤à㣮¥, ª®£¤  ¡ã¤¥â á®åà ­ïâìáï current dir
M_PSP: LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
DEC H
LD D,H
LD E,L
INC DE
LD BC,#00FF
LD BC,#00FF ;!HARDCODE
LD (HL),B
LDIR
EX DE,HL
@ -1283,7 +1292,7 @@ M_PSP: LD HL,(EXEBUFF.LD_ADDR)
EX DE,HL
LD XH,D
LD XL,E
LD HL,SECBUF
LD HL,CORE_BUFFERS.SECBUF
LD C,(HL)
INC C
LDIR
@ -1333,7 +1342,7 @@ M_PSP: LD HL,(EXEBUFF.LD_ADDR)
;
RET
SCOPYS: LD BC,#80*256 + ' '+1
SCOPYS: LD BC,#80*256 + ' '+1 ;!HARDCODE cmd line size
.loop: LD A,(HL)
CP C
JR C,.copy
@ -1343,7 +1352,7 @@ SCOPYS: LD BC,#80*256 + ' '+1
LD (DE),A
LD B,#80
RET
.copy: LD BC,#80*256 + ' '
.copy: LD BC,#80*256 + ' ' ;!HARDCODE cmd line size
.loop2: LD A,(HL)
LD (DE),A
INC HL
@ -1367,7 +1376,7 @@ EXE_MEM: DB #00 ;
CMDLINE: DW #0000
EXSTACK: DW XSTACK ;  ¤à¥á á⥪ 
EXSTACK: DW CORE_BUFFERS.XSTACK ;  ¤à¥á á⥪ 
;R11 \\\\\\\\\\\\\\\\\\\\\\\\\\\\
;;

View File

@ -427,7 +427,7 @@ WR_FAT: SET_PAGE_X FATPAGE
LD DE,16 ;!HARDCODE ;!TODO FATcacheSize
ADD HL,DE ;+ SIZE CASH (16 SECTORS)
LD DE,(BootSector.S_P_F) ; ᥪâ®à®¢ ­  FAT
LD DE,(CORE_BUFFERS.BootSector.S_P_F) ; ᥪâ®à®¢ ­  FAT
LD A,16 ;!HARDCODE ; MAX ç¨á«® ᥪâ®à®¢ ¤«ï ç⥭¨ï ¢ ªíè ;!TODO FATcacheSize
AND A
SBC HL,DE

View File

@ -423,9 +423,9 @@ KILL_FM:
POP BC
PUSH AF
; ˜¥àá⨬ ¬ ­¨¯ã«ïâ®àë ­  ­ «¨ç¨¥ ¢ ­¨å £à®å­ã⮣® ¤à ©¢ 
LD IY,FM_BUF-FM_BUF.Size + #C000
LD IY,CORE_BUFFERS.FM_BUF - CORE_BUFFERS.FM_BUF.Size + #C000
LD B,FMCOUNT
LD DE,FM_BUF.Size
LD DE,CORE_BUFFERS.FM_BUF.Size
.loop_fm:
ADD IY,DE
LD A,(IY+_sFM.DRIVE)

View File

@ -412,6 +412,8 @@ REMOV_H:
AND A
RET
RESE_H: XOR A
RET
@ -419,13 +421,12 @@ STAT_H: XOR A
RET
CHEK_H:
;!TEST
LD A,#FF
;XOR A
;
AND A
LD A,#FF
;XOR A
;AND A
RET
;HL:IX - SECTOR
; DE - ADDRESS
GBPB_H: PUSH IY
@ -444,8 +445,8 @@ GBPB_H: PUSH IY
POP DE
POP IY
LD BC,1*256 + BIOS.DRV_READ
RST ToBIOS
RET
JP ToBIOS
;RET
;HL:IX - SECTOR
; DE - ADDRESS

View File

@ -1 +1 @@
397
454

View File

@ -15,7 +15,7 @@ DSS_MAX_DRIVES_AMOUNT EQU 26
DEFINE TABisSPACES 0
DEFINE EnoughtOnly_LF 0
DEFINE CLASSIC_CURSOR 0
DEFINE SAVE_PATH_MACRO 0
DEFINE SAVE_PATH_MACRO 1
DEFINE MINIMUM_BIOS_VERSION 2*256 + 55 ; version 2.55
;
;-------------------[MEMORY]-------------------------;

View File

@ -3,14 +3,13 @@
; DEL, ERASE. “¤ «¨âì ä ©«
;
;///////////////////////////////////////////////////
cmd_del:ex de,hl
;ld de,T9186
cmd_del: ex de,hl
ld de,work_buffer1;
ld c,Dss.GSwitch
RST ToDSS
;ld hl,T9186
ld hl,work_buffer1;
ld c,Dss.Delete
RST ToDSS
call c,print_err_message ; ¢ë¢®¤ á®®¡é¥­¨ï
ret
;///////////////////////////////////////////////////

View File

@ -4,7 +4,7 @@
;
;///////////////////////////////////////////////////
cmd_dir: push de
ld c,Dss.CurDisk ; ã§­ âì ⥪. ¤¨áª
ld c,Dss.CurDisk ; ã§­ âì ⥪. ¤¨áª
RST ToDSS
ld (disk+1),a ; ­®¬¥à ¤¨áª 
call read_disk_info ; ¯à®ç¨â âì ¬¥âªã ¨ á¥à¨©­ë© ­®¬¥à ¤¨áª 
@ -16,12 +16,15 @@ cmd_dir: push de
ex de,hl
ld a,(hl)
or a
jr nz,$+5 ; § ¤ ­  ¬ áª  ¨¬¥­
jr nz,1F ; § ¤ ­  ¬ áª  ¨¬¥­
ld hl,mask_fname ; "*.*"
;ld de,T9186 ; ¡ãä¥à
ld de,work_buffer1 ; 80
1: ld de,work_buffer1 ; 80
ld c,Dss.GSwitch ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬-áâப¨
RST ToDSS
; [ ] 1/10/23
;
;ld hl,T9186 ; ¨¬ï ä ©« 
;ld de,T9186 ; ¡ãä¥à
ld hl,work_buffer1 ; ¨¬ï ä ©« 

View File

@ -120,6 +120,7 @@ NOUP: sub "A" ;
ld (hl),0
dec hl
ld (hl),'\'
;!TODO ¤®áâ ¢ âì system_path ®â¤¥«ì­® ¤«ï ª ¦¤®£® ¤¨áª  (¨«¨ ¢ ï¤à¥ ᤥ« âì?)
IFDEF MANY_SYS_PATHES
ld c,Dss.ChDir ; ãáâ. ⥪. ¯ãâì
@ -155,10 +156,10 @@ A839D: ld bc,0*256 + Dss.Exec ;
;R10
ret nc ; Ok
ld hl,(D8374)
cp 3 ; ª®¤ ®è¨¡ª¨ "ä ©« ­¥ ®¡­ à㦥­"
cp DSS_Error.sys.FILE_NOT_FOUND
jr nz,A83DD
push hl
;ld a,(D96AD) ;; ¤«¨­  áâப¨ (inline.asm)
;ld a,(D96AD) ; ¤«¨­  áâப¨ (inline.asm)
ld a,(struct_input_line+4) ; ¤«¨­  áâப¨
ld b,a
A83AF: ld a,(hl)
@ -199,6 +200,6 @@ A83D7: ld bc,0*256 + Dss.Exec ;
;R10
ret nc
A83DD: cp DSS_Error.sys.INVALID_HANDLE ; ª®¤ ®è¨¡ª¨ "­¥â ¤¥áªà¨¯â®à "
jp nc,print_err_message ; ¢ë¢®¤ á®®¡é¥­¨ï
xor a ; ¨­¤¥ªá "Bad command or file name"
jp nc,print_err_message ; ¢ë¢®¤ á®®¡é¥­¨ï
xor a ; ¨­¤¥ªá "Bad command or file name"
jp print_err_message

View File

@ -1 +1 @@
80
84