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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -423,9 +423,9 @@ KILL_FM:
POP BC POP BC
PUSH AF 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 B,FMCOUNT
LD DE,FM_BUF.Size LD DE,CORE_BUFFERS.FM_BUF.Size
.loop_fm: .loop_fm:
ADD IY,DE ADD IY,DE
LD A,(IY+_sFM.DRIVE) LD A,(IY+_sFM.DRIVE)

View File

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

View File

@ -1 +1 @@
397 454

View File

@ -15,7 +15,7 @@ DSS_MAX_DRIVES_AMOUNT EQU 26
DEFINE TABisSPACES 0 DEFINE TABisSPACES 0
DEFINE EnoughtOnly_LF 0 DEFINE EnoughtOnly_LF 0
DEFINE CLASSIC_CURSOR 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 DEFINE MINIMUM_BIOS_VERSION 2*256 + 55 ; version 2.55
; ;
;-------------------[MEMORY]-------------------------; ;-------------------[MEMORY]-------------------------;

View File

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

View File

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

View File

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

View File

@ -1 +1 @@
80 84