промежуточная 2

This commit is contained in:
Anatoliy Belyanskiy 2023-10-14 23:40:22 +10:00
parent 33b49c9f4d
commit 66c77848ed
8 changed files with 436 additions and 91 deletions

View File

@ -176,28 +176,27 @@ CONTINUE:
IF UNIVERSAL_BOOT IF UNIVERSAL_BOOT
LD A,(DRIVE) LD A,(DRIVE)
LD C,#00 LD C,Dss.Version
RST #10 RST ToDSS
jp c,XFAIL.fail jp c,XFAIL.fail
LD A,STARTDO LD A,STARTDO
CALL DOSMESS CALL DOSMESS
LD A,(DRIVE) LD A,(DRIVE)
LD B,1 LD BC,Dss.BootDSK.Set*256 + Dss.BootDSK
LD C,Dss.BootDSK RST ToDSS
RST #10
LD B,0 LD B,0
ELSE ELSE
IF ORIGINAL_DSS IF ORIGINAL_DSS
LD C,#00 LD C,Dss.Version
RST #10 RST ToDSS
ELSE ELSE
LD A,(DRIVE) LD A,(DRIVE)
LD C,#00 LD C,Dss.Version
RST #10 RST ToDSS
jp c,XFAIL.fail jp c,XFAIL.fail
ENDIF ENDIF
@ -206,27 +205,26 @@ CONTINUE:
IF ORIGINAL_DSS IF ORIGINAL_DSS
LD A,(DRIVE) LD A,(DRIVE)
LD B,1 LD BC,Dss.BootDSK.Set*256 + Dss.BootDSK
LD C,Dss.BootDSK RST ToDSS
RST #10
LD B,0 LD B,0
ENDIF ENDIF
ENDIF ENDIF
LD C,Dss.BootDSK LD C,Dss.BootDSK
RST #10 RST ToDSS
ADD A,"A" ADD A,"A"
LD HL,ROOT LD HL,ROOT
LD (HL),A LD (HL),A
LD C,Dss.ChDir LD C,Dss.ChDir
RST #10 RST ToDSS
LD HL,PSHELL LD HL,PSHELL
LD BC,Dss.Exec LD BC,Dss.Exec
RST #10 RST ToDSS
LD A,NOSHELL LD A,NOSHELL
JP XFAIL JP XFAIL
@ -235,7 +233,7 @@ ROOT: DB 'X:\',0
DOSMESS CALL FMESAGE DOSMESS CALL FMESAGE
LD C,Dss.PChars LD C,Dss.PChars
RST #10 RST ToDSS
RET RET
XFAIL: CALL DOSMESS XFAIL: CALL DOSMESS

View File

@ -31,6 +31,18 @@
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
ATTRIB: ATTRIB:
_mSavePath 1 _mSavePath 1
;!Test Current Dir
LD C,A
PUSH HL
PUSH BC
CALL DIR_PATH_CHECK
POP BC
POP HL
RET C
LD A,C
;
INC B INC B
DEC B DEC B
JP Z,.RATTRIB JP Z,.RATTRIB
@ -90,14 +102,27 @@ ATTRIB:
; OUTPUT: A - FM ; OUTPUT: A - FM
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
CREATE: _mSavePath 0 CREATE: _mSavePath 0
;!Test Current Dir
PUSH HL
CALL DIR_PATH_CHECK
POP HL
RET C
;
CALL .Prepare CALL .Prepare
RET C RET C
CALL SEARCH CALL SEARCH
CALL NC,DELETE ;FILE EXIST RECREAT CALL NC,DELETE ;FILE EXIST RECREAT
JR .DO JR .DO
;
; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00 ; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00
; OUTPUT: A - FM ; OUTPUT: A - FM
.NEW: _mSavePath 0 .NEW: _mSavePath 0
;!Test Current Dir
PUSH HL
CALL DIR_PATH_CHECK
POP HL
RET C
;
CALL .Prepare CALL .Prepare
RET C RET C
CALL SEARCH CALL SEARCH
@ -154,11 +179,18 @@ CREATE: _mSavePath 0
JP MASK JP MASK
CREAT_N EQU CREATE.NEW CREAT_N EQU CREATE.NEW
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
; INPUT: HL - "c:\dir\filename.ext",#00 without simbols * ? ; INPUT: HL - "c:\dir\filename.ext",#00 without simbols * ?
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
DEL_FN: ;!TEST DEL_FN: ;!TEST
_mSavePath 1 _mSavePath 1
;!Test Current Dir
PUSH HL
CALL DIR_PATH_CHECK
POP HL
RET C
;
CALL GETWORD ; â¥áâ ­  ¤®¯ãáâ. ¨¬ï ¨ ­ áâà. ­  ¤¨áª CALL GETWORD ; â¥áâ ­  ¤®¯ãáâ. ¨¬ï ¨ ­ áâà. ­  ¤¨áª
RET C RET C
LD HL,TMPNAME LD HL,TMPNAME
@ -213,7 +245,17 @@ DELETE: SET_PAGE_X DIRPAGE
; INPUT: HL - "old_name.ext",#00 without simbols * ? ; INPUT: HL - "old_name.ext",#00 without simbols * ?
; DE - "new_name.ext",#00 without simbols * ? ; DE - "new_name.ext",#00 without simbols * ?
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
RENAME: PUSH DE RENAME:
;!Test Current Dir
PUSH HL
PUSH DE
CALL DIR_PATH_CHECK.forceCheck
POP DE
POP HL
RET C
;
PUSH DE
LD DE,MASKARE LD DE,MASKARE
CALL MASK CALL MASK
POP DE POP DE
@ -273,6 +315,16 @@ RENAME: PUSH DE
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
OPEN_FN: OPEN_FN:
_mSavePath 1 _mSavePath 1
;!Test Current Dir
LD C,A
PUSH HL
PUSH BC
CALL DIR_PATH_CHECK.forceCheck
POP BC
POP HL
RET C
LD A,C
;
;R08 ;R08
OPEN: LD (F_FIRST.ACCESS),A OPEN: LD (F_FIRST.ACCESS),A
CALL GETWORD CALL GETWORD
@ -319,8 +371,11 @@ OPEN: LD (F_FIRST.ACCESS),A
RET RET
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
; ;‚室­ë¥ §­ ç¥­¨ï:
; ; C - #12
; A - ä ©«®¢ë© ¬ ­¨¯ã«ïâ®à
;‚ë室­ë¥ §­ ç¥­¨ï:
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
CLOSE_FN: CLOSE_FN:
_mSavePath 1 _mSavePath 1
@ -376,10 +431,31 @@ CLOSE: LD (F_FIRST.ACCESS),A
RET RET
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
; ;‚室­ë¥ §­ ç¥­¨ï:
; ; C - #19
; HL - 㪠§ â¥«ì ­  ä ©«®¢ãî ᯥæ¨ä¨ª æ¨î
; DE - à ¡®ç¨© ¡ãä¥à 44 ¡ ©â , ¥á«¨ B=0, ¨­ ç¥ 256 ¡ ©â
; A -  âਡãâë, ¨á¯®«ì§ã¥¬ë¥ ¯à¨ ¯®¨áª¥
; B = 0 - ¨¬ï ­ ©¤¥­­®£® ä ©«  ¢ ä®à¬ â¥ 11 ¡ ©â "FilenameExt"
; B = 1 - ¨¬ï ­ ©¤¥­­®£® ä ©«  ¢ ä®à¬ â¥ DOS "filename.ext",0
;‚ë室­ë¥ §­ ç¥­¨ï:
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
F_FIRST: F_FIRST:
;!Test Current Dir
LD C,A
PUSH HL
PUSH DE
PUSH BC
CALL DIR_PATH_CHECK
POP BC
POP DE
POP HL
RET C
LD A,C
;
LD (.ACCESS),A LD (.ACCESS),A
LD (.DTABUF),DE LD (.DTABUF),DE
LD A,B LD A,B
@ -487,6 +563,13 @@ F_NEXT:
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
;!TODO ᤥ« âì ¤«ï ª ¦¤®£® ¤à ©¢  § ¯®¬¨­ ­¨¥ ⥪ã饩 ¤¨à४â®à¨¨, ¯®ª  âãâ § £«ã誠 ;!TODO ᤥ« âì ¤«ï ª ¦¤®£® ¤à ©¢  § ¯®¬¨­ ­¨¥ ⥪ã饩 ¤¨à४â®à¨¨, ¯®ª  âãâ § £«ã誠
; RestoreDIR: ; RestoreDIR:
CHNDISK_FN:
CALL CHNDISK
RET C
PUSH AF
CALL DIR_PATH_CHANGE.FullCurrent
POP AF
RET
CHNDISK: CHNDISK:
;!TEST ;!TEST
CALL OPENDSK CALL OPENDSK
@ -516,12 +599,13 @@ CHNDISK:
; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1 ; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
; !FIXIT ¬®¦¥â ¢ë©â¨ §  ¯à¥¤¥«ë ¡ãä¥à ? ; !FIXIT ¬®¦¥â ¢ë©â¨ §  ¯à¥¤¥«ë ¡ãä¥à ?
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
CURRDIR: EX DE,HL CURRDIR: LD DE,WorkDirectory
LD HL,CurrentDirectory JR CURRDIR_FN.skip
CURRDIR_FN:
LD DE,CurrentDirectory
.skip: EX DE,HL
XOR A XOR A
.loop: ;LD A,(HL) .loop: CP (HL)
;OR A
CP (HL)
LDI LDI
JR NZ,.loop JR NZ,.loop
RET RET
@ -778,10 +862,14 @@ PUT_D_T:
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
CHDIR_FN: CHDIR_FN:
_mSavePath 0 _mSavePath 0
; EX DE,HL ;!Test Current Dir
; LD HL,OPENDIR.dir PUSH HL
; LD (HL),CurrentDirectory CALL DIR_PATH_CHECK
; CALL CHDIR POP HL
RET C
;
CALL CHDIR
JP DIR_PATH_CHANGE.FullCurrent
; RET ; RET
; ;
CHDIR: CALL GETWORD ; â¥áâ ­  ¤®¯ãáâ. ¨¬ï ¨ ­ áâà. ­  ¤¨áª CHDIR: CALL GETWORD ; â¥áâ ­  ¤®¯ãáâ. ¨¬ï ¨ ­ áâà. ­  ¤¨áª
@ -801,6 +889,17 @@ CHDIR: CALL GETWORD ;
; INPUT: HL - "C:\DIR\DIR\DIR_NAME",0 ; INPUT: HL - "C:\DIR\DIR\DIR_NAME",0
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
MKDIR: _mSavePath 1 MKDIR: _mSavePath 1
;!Test Current Dir
LD C,A
PUSH HL
PUSH BC
CALL DIR_PATH_CHECK
POP BC
POP HL
RET C
LD A,C
;
CALL GETWORD ; â¥áâ ­  ¤®¯ãáâ. ¨¬ï ¨ ­ áâà. ­  ¤¨áª CALL GETWORD ; â¥áâ ­  ¤®¯ãáâ. ¨¬ï ¨ ­ áâà. ­  ¤¨áª
RET C RET C
LD HL,TMPNAME ; 8.3 ¨¬ï LD HL,TMPNAME ; 8.3 ¨¬ï
@ -965,6 +1064,17 @@ MKDIR: _mSavePath 1
; INPUT: HL - "C:\DIR\DIR\DIR_NAME",0 ; INPUT: HL - "C:\DIR\DIR\DIR_NAME",0
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
RMDIR: _mSavePath 1 RMDIR: _mSavePath 1
;!Test Current Dir
LD C,A
PUSH HL
PUSH BC
CALL DIR_PATH_CHECK
POP BC
POP HL
RET C
LD A,C
;
CALL GETWORD CALL GETWORD
RET C RET C
LD HL,TMPNAME LD HL,TMPNAME
@ -1051,9 +1161,35 @@ RMDIR: _mSavePath 1
LD A,DSS_Error.sys.DIR_NOT_EMPTY LD A,DSS_Error.sys.DIR_NOT_EMPTY
SCF SCF
RET RET
////////////////////////////////////////////////////////////////////////
;‚室­ë¥ §­ ç¥­¨ï:
; C - #44
; B = 0, ¯à¥®¡à §®¢ âì ¨§ 11 ᨬ¢®«ì­®£® ä®à¬ â  ¢ ä®à¬ â „Ž‘
; HL - 11 ᨬ¢®«®¢ ¨¬¥­¨ ä ©« 
; DE - ¡ãä¥à ¤«ï ¨¬¥­¨ ¢ ä®à¬ â¥ „Ž‘
; B = 1, ¯à¥®¡à §®¢ âì ¨§ ä®à¬ â  „Ž‘ ¢ 11 ᨬ¢®«ì­ë© ä®à¬ â
; HL - ¨¬ï ä ©«  ¢ ä®à¬ â¥ „Ž‘
; DE - 11 ᨬ¢®«®¢ ¨¬¥­¨ ä ©« 
;‚ë室­ë¥ §­ ç¥­¨ï:
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
////////////////////////////////////////////////////////////////////////
DOSNAME:
INC B
DEC B
JP Z,GETNAME
DEC B
JP Z,MASK
LD A,DSS_Error.sys.INVALID_FUNCTION
SCF
RET
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
; —⥭¨¥ ॣ¨áâ஢ CMOS ; —⥭¨¥ ॣ¨áâ஢ CMOS
@ -1263,19 +1399,6 @@ WRT_HND:
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
;----------------------------------------------------------------------;
DOSNAME:
INC B
DEC B
JP Z,GETNAME
DEC B
JP Z,MASK
LD A,DSS_Error.sys.INVALID_FUNCTION
SCF
RET
;----------------------------------------------------------------------;
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
; HL - 11 bytes filename "FILENAMEEXT" ; HL - 11 bytes filename "FILENAMEEXT"
; DE - DOS filename "FILENAME.EXT",0 ; DE - DOS filename "FILENAME.EXT",0
@ -1599,16 +1722,19 @@ FINDDIR:
LD A,(IX+1) LD A,(IX+1)
CP "." CP "."
JP NZ,.IT_DIR JP NZ,.IT_DIR
LD HL,CurrentDirectory ;LD HL,CurrentDirectory
LD HL,WorkDirectory
LD D,H LD D,H
LD E,L LD E,L
INC HL INC HL
LD BC,CurrentDirectory.DEPTH ;LD BC,CurrentDirectory.DEPTH
LD BC,WorkDirectory.DEPTH
XOR A XOR A
CPIR ;!FIXIT ­¥â ¯à®¢¥àª¨ ­  § ¢¥à襭¨¥ ¯® BC=0 CPIR ;!FIXIT ­¥â ¯à®¢¥àª¨ ­  § ¢¥à襭¨¥ ¯® BC=0
DEC HL ;R09 ;[x] ¨á¯à ¢«¥­ ¡ £ á ¯ àᨭ£®¬ ¡ãä¥à  ª â «®£  DEC HL ;R09 ;[x] ¨á¯à ¢«¥­ ¡ £ á ¯ àᨭ£®¬ ¡ãä¥à  ª â «®£ 
DEC HL DEC HL
LD BC,CurrentDirectory.DEPTH ;LD BC,CurrentDirectory.DEPTH
LD BC,WorkDirectory.DEPTH
LD A,'\' LD A,'\'
CPDR CPDR
INC HL INC HL
@ -1630,8 +1756,10 @@ FINDDIR:
.ADDSPEC: .ADDSPEC:
LD E,XL LD E,XL
LD D,XH LD D,XH
LD HL,CurrentDirectory+1 ;LD HL,CurrentDirectory+1
LD BC,CurrentDirectory.DEPTH-1 ;LD BC,CurrentDirectory.DEPTH-1
LD HL,WorkDirectory+1
LD BC,WorkDirectory.DEPTH-1
XOR A XOR A
CPIR ;!FIXIT ­¥â ¯à®¢¥àª¨ ­  § ¢¥à襭¨¥ ¯® BC=0 CPIR ;!FIXIT ­¥â ¯à®¢¥àª¨ ­  § ¢¥à襭¨¥ ¯® BC=0
DEC HL DEC HL
@ -1933,7 +2061,77 @@ SAVEDIR:
AND A AND A
RET RET
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
;DIRSIZE: WORD 0 ; ŕ §ŹĽŕ ᯨ᪠ Ş â ŤŽŁ  size_cash_directory
;----------------------------------------------------------------------;
DIR_PATH_CHANGE:
.FullCurrent: LD A,(FatBuffer.DRIVE)
ADD 'A'
LD (CurrentPath),A
;
.Current: LD HL,WorkDirectory
LD DE,CurrentDirectory
LD BC,DIRECTORY_PATH_LENGTH
LDIR
RET
;
.FullWork: LD A,(CurrentPath)
SUB 'A'
LD (FatBuffer.DRIVE),A
;
.Work: LD HL,CurrentDirectory
LD DE,WorkDirectory
LD BC,DIRECTORY_PATH_LENGTH
LDIR
RET
DIR_PATH_CHECK: LD A,(HL)
CP '\'
JR NZ,.notRootDir
;
CALL .checkDrive
RET Z
LD A,(CurrentPath)
SUB 'A'
JP OPENDSK
;
.notRootDir: INC HL
LD A,(HL)
CP ':'
RET Z
;
.forceCheck: CALL .checkDrive
JR Z,.checkDir
;
LD HL,CurrentPath
LD A,(FatBuffer.DRIVE)
ADD 'A'
CP (HL)
JP NZ,GETWORD
;
.checkDir: LD HL,CurrentDirectory+1
LD DE,WorkDirectory+1
;
.loop: LD A,(DE)
AND A
JR Z,.end
CP (HL)
INC HL
INC DE
JR Z,.loop
;
JR .ReDir
.end: CP (HL)
RET Z
.ReDir: LD HL,CurrentDirectory
JP GETWORD
;
.checkDrive: LD HL,CurrentPath
LD A,(FatBuffer.DRIVE)
ADD 'A'
CP (HL)
RET
;----------------------------------------------------------------------;
@ -1957,6 +2155,7 @@ MASKARE: BLOCK 8,0 ;
;//MODULE: DOS5 ;//MODULE: DOS5
;[END] ;[END]
;DIRSIZE: WORD 0 ; à §¬¥à ᯨ᪠ ª â «®£  size_cash_directory
;!TODO ? ;!TODO ?

View File

@ -551,7 +551,7 @@ TSTSIZE XOR A
; HL - ADDRESS ; HL - ADDRESS
; DE - SIZE ; DE - SIZE
; A - FM ; A - FM
READ_FN: ;READ_FN:
; _mSavePath 1 ; _mSavePath 1
; HL - ADDRESS ; HL - ADDRESS
; DE - SIZE ; DE - SIZE

View File

@ -141,6 +141,12 @@ NDISK11:
; ¢å®¤: ­¥â ; ¢å®¤: ­¥â
; ¢ë室: A - ­®¬¥à ¤¨áª  (0=A,1=B,..) ; ¢ë室: A - ­®¬¥à ¤¨áª  (0=A,1=B,..)
;///////////////////////////////////////////////////////////////////// ;/////////////////////////////////////////////////////////////////////
CURRDSK_FN:
LD A,(CurrentPath)
SUB 'A'
RET NC
LD A,DSS_Error.sys.INVALID_DRIVE
RET
CURRDSK: LD A,(FatBuffer.DRIVE) CURRDSK: LD A,(FatBuffer.DRIVE)
AND A AND A
RET RET
@ -160,10 +166,20 @@ CURRDSK: LD A,(FatBuffer.DRIVE)
;///////////////////////////////////////////////////////////////////// ;/////////////////////////////////////////////////////////////////////
DISKINF: DISKINF:
CP #FF ; !FIXIT WorkDirectory CP #FF ; !FIXIT WorkDirectory
JR Z,CURRDS ;R06 ;!TEST Current Dir
;JR Z,CURRDS ;R06
JR NZ,.CustomDisk
LD A,(CurrentPath)
SUB 'A'
LD HL,FatBuffer.DRIVE
CP (HL)
JR Z,CURRDS
;
.CustomDisk:
CALL CHNDISK ;R06 CALL CHNDISK ;R06
RET C ;R06 RET C ;R06
CURRDS: LD HL,2 CURRDS:
LD HL,2
LD BC,0 LD BC,0
FRESP: PUSH BC FRESP: PUSH BC
CALL R_F_FAT CALL R_F_FAT
@ -540,7 +556,7 @@ DOS_X_Error:
;!TODO ª ¡ãä¥à ¬! ;!TODO ª ¡ãä¥à ¬!
FatBuffer: FatBuffer:
.MSG: DB 'FAT' .MSG: DB 'FAT'
.READ_PG: DB #00 .READ_PG: DB #00 ;!TODO ­Ľ ¨áŻŽŤě§ăîâáď ­ĽŞŽâŽŕëĽ §­ çĽ­¨ď, ­Ž § ¤ăŹŞ  ­ĽŻŤŽĺ ď)))
.BLOCK: DB #00 .BLOCK: DB #00
.DIR_CLU: DW #0000 .DIR_CLU: DW #0000
.DRIVE: DB #FF .DRIVE: DB #FF
@ -562,11 +578,13 @@ FatBuffer:
; ;
;!TODO ª ¡ãä¥à ¬! ;!TODO ª ¡ãä¥à ¬!
CurrentPath: DB 'X'
DB ':'
CurrentDirectory: DB '\' CurrentDirectory: DB '\'
.DEPTH: EQU DIRECTORY_PATH_LENGTH .DEPTH: EQU DIRECTORY_PATH_LENGTH
BLOCK CurrentDirectory.DEPTH,0 ; ­¥ .DEPTH-1 ç⮡ ¡ë« 0 ¢ ª®­æ¥ BLOCK CurrentDirectory.DEPTH,0 ; ­¥ .DEPTH-1 ç⮡ ¡ë« 0 ¢ ª®­æ¥
IF SAVE_PATH_MACRO IF SAVE_PATH_CODE
WorkDirectory: DB '\' WorkDirectory: DB '\'
.DEPTH: EQU DIRECTORY_PATH_LENGTH .DEPTH: EQU DIRECTORY_PATH_LENGTH
BLOCK WorkDirectory.DEPTH,0 ; ­¥ .DEPTH-1 ç⮡ ¡ë« 0 ¢ ª®­æ¥ BLOCK WorkDirectory.DEPTH,0 ; ­¥ .DEPTH-1 ç⮡ ¡ë« 0 ¢ ª®­æ¥
@ -597,7 +615,7 @@ SAVE_CUR_PATH
LD A,":" LD A,":"
LD (HL),A LD (HL),A
INC HL INC HL
CALL CURRDIR CALL CURRDIR_FN
; ¯®ç¥¬ã ­¥ POP AF : OUT (SLOT3),A ; ¯®ç¥¬ã ­¥ POP AF : OUT (SLOT3),A
//POP BC //POP BC

View File

@ -377,10 +377,10 @@ GO_ZERO EQU #0000
ADRST10: ;DS 512 ;,0 ADRST10: ;DS 512 ;,0
;...............................................[LOW ADDRESS ]: ;...............................................[LOW ADDRESS ]:
; 0 1 2 3 4 5 6 7 8 9 DEC HEX ; 0 1 2 3 4 5 6 7 8 9 DEC HEX
DB low F_START, low CHNDISK, low CURRDSK, low DISKINF, low NOPS, low NOPS, low NOPS, low NOPS, low SCANDRV, low BOOTDSK ; 0 00..09 DB low F_START, low CHNDISK_FN, low CURRDSK_FN,low DISKINF, low NOPS, low NOPS, low NOPS, low NOPS, low SCANDRV, low BOOTDSK ; 0 00..09
DB low CREATE, low CREAT_N, low NOPS, low NOPS, low DEL_FN, low NOPS, low RENAME, low OPEN_FN, low CLOSE_FN, low READ_FN ; 1 0A..13 DB low CREATE, low CREAT_N, low NOPS, low NOPS, low DEL_FN, low NOPS, low RENAME, low OPEN_FN, low CLOSE_FN, low READ ; 1 0A..13
DB low WRITE, low MOVE_FP, low ATTRIB, low GET_D_T, low PUT_D_T, low F_FIRST, low F_NEXT, low MKDIR, low RMDIR, low CHDIR_FN ; 2 14..1D DB low WRITE, low MOVE_FP, low ATTRIB, low GET_D_T, low PUT_D_T, low F_FIRST, low F_NEXT, low MKDIR, low RMDIR, low CHDIR_FN ; 2 14..1D
DB low CURRDIR, low NOPS, low NOPS, low SYSTIME, low SETTIME, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 3 1E..27 DB low CURRDIR_FN,low NOPS, low NOPS, low SYSTIME, low SETTIME, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 3 1E..27
DB low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low WAITKEY, low SCANKEY ; 4 28..31 DB low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low WAITKEY, low SCANKEY ; 4 28..31
DB low ECHOKEY, low CTRLKEY, low NOPS, low K_CLEAR, low K_SETUP, low TESTKEY, low SETWIN, low SETWIN1, low SETWIN2, low SETWIN3 ; 5 32..3B DB low ECHOKEY, low CTRLKEY, low NOPS, low K_CLEAR, low K_SETUP, low TESTKEY, low SETWIN, low SETWIN1, low SETWIN2, low SETWIN3 ; 5 32..3B
DB low FREEMEM, low GETMEM, low RETMEM, low SETMEM, low EXEC, low LEAVE, low WAIT, low GSWITCH, low DOSNAME, low EX_PATH ; 6 3C..45 DB low FREEMEM, low GETMEM, low RETMEM, low SETMEM, low EXEC, low LEAVE, low WAIT, low GSWITCH, low DOSNAME, low EX_PATH ; 6 3C..45
@ -404,10 +404,10 @@ ADRST10: ;DS 512 ;,0
;[ ] R09 ;[ ] R09
ENDIF ENDIF
;...............................................[HIGH ADDRESS]: ;...............................................[HIGH ADDRESS]:
DB high F_START,high CHNDISK,high CURRDSK,high DISKINF,high NOPS, high NOPS, high NOPS, high NOPS, high SCANDRV, high BOOTDSK DB high F_START, high CHNDISK_FN,high CURRDSK_FN,high DISKINF,high NOPS, high NOPS, high NOPS, high NOPS, high SCANDRV, high BOOTDSK
DB high CREATE, high CREAT_N, high NOPS, high NOPS, high DEL_FN, high NOPS, high RENAME, high OPEN_FN,high CLOSE_FN,high READ DB high CREATE, high CREAT_N, high NOPS, high NOPS, high DEL_FN, high NOPS, high RENAME, high OPEN_FN,high CLOSE_FN,high READ
DB high WRITE, high MOVE_FP, high ATTRIB, high GET_D_T,high PUT_D_T,high F_FIRST,high F_NEXT, high MKDIR, high RMDIR, high CHDIR_FN DB high WRITE, high MOVE_FP, high ATTRIB, high GET_D_T,high PUT_D_T,high F_FIRST,high F_NEXT, high MKDIR, high RMDIR, high CHDIR_FN
DB high CURRDIR,high NOPS, high NOPS, high SYSTIME,high SETTIME,high NOPS, high NOPS, high NOPS, high NOPS, high NOPS DB high CURRDIR_FN,high NOPS, high NOPS, high SYSTIME,high SETTIME,high NOPS, high NOPS, high NOPS, high NOPS, high NOPS
DB high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high WAITKEY, high SCANKEY DB high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high WAITKEY, high SCANKEY
DB high ECHOKEY, high CTRLKEY, high NOPS, high K_CLEAR,high K_SETUP,high TESTKEY,high SETWIN, high SETWIN1,high SETWIN2, high SETWIN3 DB high ECHOKEY, high CTRLKEY, high NOPS, high K_CLEAR,high K_SETUP,high TESTKEY,high SETWIN, high SETWIN1,high SETWIN2, high SETWIN3
DB high FREEMEM, high GETMEM, high RETMEM, high SETMEM, high EXEC, high LEAVE, high WAIT, high GSWITCH,high DOSNAME, high EX_PATH DB high FREEMEM, high GETMEM, high RETMEM, high SETMEM, high EXEC, high LEAVE, high WAIT, high GSWITCH,high DOSNAME, high EX_PATH

View File

@ -672,7 +672,7 @@ FINDPATH:
SET_PAGE_X ENVPAGE SET_PAGE_X ENVPAGE
PUSH AF PUSH AF
CALL CURRDSK CALL CURRDSK_FN
ADD A,"A" ADD A,"A"
LD HL,TMP_CURDIR LD HL,TMP_CURDIR
LD (HL),A LD (HL),A
@ -680,7 +680,7 @@ FINDPATH:
LD A,":" LD A,":"
LD (HL),A LD (HL),A
INC HL INC HL
CALL CURRDIR CALL CURRDIR_FN
CALL MAKE_PATH_ARRAY CALL MAKE_PATH_ARRAY
LD HL,PATH_PNT_ARRAY LD HL,PATH_PNT_ARRAY
@ -769,6 +769,7 @@ ENVPATH DB "PATH=",0
; !TODO ‘„…‹€’œ <E28098>“Š<E28099>މ ¨ ®¡®§­ ç¨âì áâà ­¨æã ; !TODO ‘„…‹€’œ <E28098>“Š<E28099>މ ¨ ®¡®§­ ç¨âì áâà ­¨æã
TMP_CURDIR_AUTO EQU #FB00 TMP_CURDIR_AUTO EQU #FB00
PATH_PNT_ARRAY EQU #FC80 PATH_PNT_ARRAY EQU #FC80
; !FIXIT ­¥ ­ã¦­® ¥á«¨ SAVE_PATH_MACRO = 1
TMP_CURDIR EQU #FD00 TMP_CURDIR EQU #FD00
ENVTEMP EQU #FE00 ENVTEMP EQU #FE00
@ -949,6 +950,10 @@ NOINK: LD A,H
JP NZ,ERREXE0 JP NZ,ERREXE0
LD B,L LD B,L
LD HL,_RET_1
LD (_ret),HL
JP _TST_PROC
/*
;!FIXIT double 1 ;!FIXIT double 1
CALL GETMEM CALL GETMEM
JP C,ERREXE0 JP C,ERREXE0
@ -1031,10 +1036,12 @@ FRC000: LD A,(DE)
LD A,(EXE_FM) LD A,(EXE_FM)
CALL MOVE_FP CALL MOVE_FP
;R02 ;R02
LD SP,#403F ;!HARDCODE STACK before start EXE. “áâ ­ ¢«¨¢ ¥âáï ª®£¤  ¢®âª­ãâë DSS_PAGE LD SP,#403F ;!HARDCODE STACK before start EXE. “áâ ­ ¢«¨¢ ¥âáï ª®£¤  ¢®âª­ãâë SHARED_PAGE
; ;
; ;
LD DE,(CORE_BUFFERS.EXEBUFF.LD_ADDR) */
_RET_1: LD DE,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
XOR A XOR A
LD H,A LD H,A
LD L,A LD L,A
@ -1045,7 +1052,8 @@ FRC000: LD A,(DE)
CALL READ ; ç⥭¨¥ ¨§ ä ©«  CALL READ ; ç⥭¨¥ ¨§ ä ©« 
LD A,(EXE_FM) ; ¤¥áªà. ä ©«  LD A,(EXE_FM) ; ¤¥áªà. ä ©« 
CALL CLOSE ; § ªàëâì ä ©« CALL CLOSE ; § ªàëâì ä ©«
JP _TST_PROC_2
/*
;!FIXIT double 2 ;!FIXIT double 2
;R09 ;R09
;_mRestorePath ;_mRestorePath
@ -1067,6 +1075,7 @@ FRC000: LD A,(DE)
RET RET
; ;
*/
;[ ] ;[ ]
RETFAR: LD B,DSS_Error.sys.UNEXPECTED_APP_TRMN RETFAR: LD B,DSS_Error.sys.UNEXPECTED_APP_TRMN
JP LEAVE ; § ¢¥àè¨âì ¯à®£à ¬¬ã (¯à®æ¥áá) JP LEAVE ; § ¢¥àè¨âì ¯à®£à ¬¬ã (¯à®æ¥áá)
@ -1121,7 +1130,10 @@ PRELOAD: EX DE,HL
OR L OR L
JR Z,NOINK2 JR Z,NOINK2
INC B INC B
NOINK2: NOINK2: LD HL,_RET_2
LD (_ret),HL
JR _TST_PROC
/*
;!FIXIT double 1 ;!FIXIT double 1
CALL GETMEM CALL GETMEM
JP C,ERREXE0 JP C,ERREXE0
@ -1204,15 +1216,17 @@ FRC000H: LD A,(DE)
LD A,(EXE_FM) LD A,(EXE_FM)
CALL MOVE_FP CALL MOVE_FP
;R02 ;R02
LD SP,#403F ;!HARDCODE STACK before start EXE. “áâ ­ ¢«¨¢ ¥âáï ª®£¤  ¢®âª­ãâë DSS_PAGE LD SP,#403F ;!HARDCODE STACK before start EXE. “áâ ­ ¢«¨¢ ¥âáï ª®£¤  ¢®âª­ãâë SHARED_PAGE
; ;
; ;
*/
LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR) ; ¡ãä¥à _RET_2: LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR) ; ¡ãä¥à
LD DE,(CORE_BUFFERS.EXEBUFF.LOADER) ; ç¨á«® ç¨â. ¡ ©â LD DE,(CORE_BUFFERS.EXEBUFF.LOADER) ; ç¨á«® ç¨â. ¡ ©â
LD A,(EXE_FM) ; ¤¥áªà. ä ©«  LD A,(EXE_FM) ; ¤¥áªà. ä ©« 
CALL READ ; ç⥭¨¥ ¨§ ä ©«  CALL READ ; ç⥭¨¥ ¨§ ä ©« 
JP _TST_PROC_2
/*
;!FIXIT double 2 ;!FIXIT double 2
;R09 ;R09
;_mRestorePath ;_mRestorePath
@ -1234,6 +1248,121 @@ FRC000H: LD A,(DE)
RET RET
; ;
*/
;-----------------------------------------------------------------------
_TST_PROC:
;!FIXIT double 1
CALL GETMEM
JP C,ERREXE0
LD (EXE_MEM),A
EXX
POP DE ;á­¨¬ ¥¬ á® á⥪   ¤à¥á ¢®§¢à â 
LD HL,#0000
ADD HL,SP
LD SP,(EXSTACK)
PUSH HL
PUSH DE
IN A,(SLOT3)
LD D,A
IN A,(SLOT2)
LD E,A
IN A,(SLOT1)
PUSH DE
PUSH AF
LD (EXSTACK),SP
LD SP,HL
EXX
; <20>Ž•<C5BD><EFBFBD>Ÿ…Ÿ DE ¯¥à¥¤ ¢ë§®¢®¬ BIOS,   ¡¨®á ¯®ª  ¥£® ¨ ­¥ ¯®àâ¨â
LD A,(EXE_MEM)
LD DE,RAMMAP
LD BC,0*256 + BIOS.GetMemPage
RST ToBIOS
LD (DE),A
INC DE
LD A,(EXE_MEM)
LD BC,1*256 + BIOS.GetMemPage
RST ToBIOS
LD (DE),A
INC DE
LD A,(EXE_MEM)
LD BC,2*256 + BIOS.GetMemPage
RST ToBIOS
LD (DE),A
INC DE
LD A,(EXE_MEM)
LD BC,3*256 + BIOS.GetMemPage
RST ToBIOS
LD (DE),A
;^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^;
LD HL,(CMDLINE)
LD DE,CORE_BUFFERS.SECBUF+1
CALL SCOPYS
LD A,#80 ;!HARDCODE cmd line size
SUB B
LD (CORE_BUFFERS.SECBUF),A
;R02
LD SP,CORE_BUFFERS.EXEBUFF+510 ;‚áâ ¢«ï¥âáï ¢ SHARED_PAGE
;
LD A,SHARED_PAGE
OUT (SLOT1),A
OUT (SLOT2),A
OUT (SLOT3),A
LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
LD DE,RAMMAP
LD A,H
AND #C0
CP #40
JR Z,FR4000
CP #80
JR Z,FR8000
CP #C0
JR Z,FRC000
FR4000: LD A,(DE)
OUT (SLOT1),A
INC DE
FR8000: LD A,(DE)
OUT (SLOT2),A
INC DE
FRC000: LD A,(DE)
OUT (SLOT3),A
CALL M_PSP
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
;R02
LD SP,#403F ;!HARDCODE STACK before start EXE. “áâ ­ ¢«¨¢ ¥âáï ª®£¤  ¢®âª­ãâë SHARED_PAGE
;
_ret+1: JP 0
;
_TST_PROC_2:
;!FIXIT double 2
;R09
;_mRestorePath
;
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,(CORE_BUFFERS.EXEBUFF.PC_REG)
LD DE,RETFAR ;  ¤à¥á ¯/¯ "­¥®¦¨¤ ­­®¥ § ¢¥à襭¨¥ ¯à®æ¥áá "
PUSH DE
PUSH HL
_mRestorePath
RET
;
;-----------------------------------------------------------------------
;///////////////////////////////////////////////////////////////////// ;/////////////////////////////////////////////////////////////////////
; ”ã­ªæ¨ï #41. ‡ ¢¥àè¨âì ¯à®£à ¬¬ã (¯à®æ¥áá). ; ”ã­ªæ¨ï #41. ‡ ¢¥àè¨âì ¯à®£à ¬¬ã (¯à®æ¥áá).
@ -1322,7 +1451,7 @@ M_PSP: LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
LD (HL),B LD (HL),B
INC HL INC HL
;!FIXIT âãâ ¢®ááâ ­ ¢«¨¢ âì ¯à ¢¨«ì­ë© ª â «®£ ;!FIXIT âãâ ¢®ááâ ­ ¢«¨¢ âì ¯à ¢¨«ì­ë© ª â «®£
CALL CURRDSK CALL CURRDSK_FN
ADD A,'A' ADD A,'A'
LD (HL),A LD (HL),A
INC HL INC HL
@ -1330,7 +1459,7 @@ M_PSP: LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
LD (HL),A LD (HL),A
INC HL INC HL
PUSH HL PUSH HL
CALL CURRDIR CALL CURRDIR_FN
; ;
POP HL POP HL
XOR A XOR A

View File

@ -1 +1 @@
474 483

View File

@ -15,7 +15,8 @@ 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 0 ;\____ «¨¡® â®, «¨¡® â®
DEFINE SAVE_PATH_CODE 1 ;/
DEFINE MINIMUM_BIOS_VERSION 2*256 + 55 ; version 2.55 DEFINE MINIMUM_BIOS_VERSION 2*256 + 55 ; version 2.55
; ;
;-------------------[MEMORY]-------------------------; ;-------------------[MEMORY]-------------------------;
@ -32,7 +33,7 @@ DRVPAGE EQU 3
DEFINE USING_MEMPAGES 4 ; à §¬¥à ¡«®ª  ¤®¯®«­¨â¥«ì­ëå áâà ­¨æ DEFINE USING_MEMPAGES 4 ; à §¬¥à ¡«®ª  ¤®¯®«­¨â¥«ì­ëå áâà ­¨æ
COREPAGE EQU 4 ; ®­  ®â¤¥«ì­® ¨ ­¥ á ¡«®ª®¬ ¢ëè¥. COREPAGE EQU 4 ; ®­  ®â¤¥«ì­® ¨ ­¥ á ¡«®ª®¬ ¢ëè¥.
;----------------------------------------------------------------------- ;-----------------------------------------------------------------------
DIRECTORY_PATH_LENGTH EQU 256 ; '\' + 1..255 DIRECTORY_PATH_LENGTH EQU 256 ; '\' + 255, 0
ENVIRONMENT_STRING_LENGTH EQU 255 ENVIRONMENT_STRING_LENGTH EQU 255
TXTADDR EQU #C000 TXTADDR EQU #C000