This commit is contained in:
Anatoliy Belyanskiy 2024-06-15 04:49:18 +10:00
parent 51c118ee62
commit e20a714f08
26 changed files with 263 additions and 132 deletions

View File

@ -591,7 +591,7 @@ GET_BPB: LD HL,#0000
; ;
LD A,(FatBuffer.SectorsPerCluster) LD A,(FatBuffer.SectorsPerCluster)
; HL:DE / A => DE:BC, H=0, L - Žáâ âŽŞ ; HL:DE / A => DE:BC, H=0, L - Žáâ âŽŞ
;CALL DIV_for_SPC ;CALL DIV_by_Shifts
LD C,A LD C,A
DEC A DEC A
JR Z,.DIV_exit JR Z,.DIV_exit
@ -624,7 +624,7 @@ GET_BPB: LD HL,#0000
LD A,FAT_TYPE.x12 LD A,FAT_TYPE.x12
JR NC,.SET_VARS JR NC,.SET_VARS
; ;
LD HL,65525 LD HL,65524
SBC HL,BC SBC HL,BC
LD A,FAT_TYPE.x16 LD A,FAT_TYPE.x16
JR NC,.SET_VARS JR NC,.SET_VARS
@ -865,7 +865,7 @@ LOAD_CORE: LD (READMEM),DE
; ;
; HL:DE / A => DE:BC, H=0, L - Žáâ âŽŞ ; HL:DE / A => DE:BC, H=0, L - Žáâ âŽŞ
; DIV_for_SPC: ; DIV_by_Shifts:
; LD C,A ; LD C,A
; DEC A ; DEC A
; JR Z,.DIV_exit ; JR Z,.DIV_exit

View File

@ -6,7 +6,6 @@
; [x] - bug fixes and optimizations))) ; [x] - bug fixes and optimizations)))
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
; <20>ணࠬ¬  § ¯¨á¨ ­  FDD/HDD boot-§ £àã§ç¨ª  ¨ ä ©«®¢ á¨á⥬ë. ; <20>ணࠬ¬  § ¯¨á¨ ­  FDD/HDD boot-§ £àã§ç¨ª  ¨ ä ©«®¢ á¨á⥬ë.
; ;
; ‡ £à㦠¥â á¨áâ. ä ©«ë ¨§ ª®à­ï ¤¨áª , á ª®â®à®£® ¡ë«  ; ‡ £à㦠¥â á¨áâ. ä ©«ë ¨§ ª®à­ï ¤¨áª , á ª®â®à®£® ¡ë« 
@ -59,7 +58,7 @@
;.READ_PG: BYTE #00 ;!TODO ­¥ ¨á¯®«ì§ãîâáï ­¥ª®â®àë¥ §­ ç¥­¨ï, ­® § ¤ã¬ª  ­¥¯«®å ï))) ;.READ_PG: BYTE #00 ;!TODO ­¥ ¨á¯®«ì§ãîâáï ­¥ª®â®àë¥ §­ ç¥­¨ï, ­® § ¤ã¬ª  ­¥¯«®å ï)))
;.S_X_H: DWORD #0000 ; ª®«¨ç¥á⢮ ᥪâ®à®¢ ­  樫¨­¤à¥ ;.S_X_H: DWORD #0000 ; ª®«¨ç¥á⢮ ᥪâ®à®¢ ­  樫¨­¤à¥
ENDS ENDS
includelua 'Shared_includes/lua/Functions.lua'
include 'shared_includes/constants/sp2000.inc' include 'shared_includes/constants/sp2000.inc'
include 'shared_includes/constants/bios_equ.inc' include 'shared_includes/constants/bios_equ.inc'
include 'shared_includes/constants/dss_equ.inc' include 'shared_includes/constants/dss_equ.inc'
@ -69,6 +68,15 @@
;include 'DSS/structures.inc' ;include 'DSS/structures.inc'
include '../DSS/defines.inc' include '../DSS/defines.inc'
LUA PASS1
local date, month, year = Get_date_RU(sj.get_define("__DATE__"))
BuildDate = "'" .. date .. "." .. month .. "." .. year .. "'"
sj.insert_define("SYS_BUILD_DATE", BuildDate)
ENDLUA
LUA ALLPASS
sj.insert_define("SYS_BUILD_DATE", BuildDate)
ENDLUA
DEFINE EXEinfoMACRO 0 DEFINE EXEinfoMACRO 0
DEFINE App_EXE_Version 1 DEFINE App_EXE_Version 1
MACRO _mEXEinfo MACRO _mEXEinfo
@ -482,7 +490,7 @@ write_no_BPB: ld a,(disk) ;
ld b,a ld b,a
inc c inc c
scf scf
ret z ; !TODO § £à㧪  á à áè¨à¥­­®£® à §¤¥«  ­¥ ¯®¤¤¥à¦¨¢ ¥âáï ret z
dec c dec c
CP #80 ;!HARDCODE ⨯ ¤à ©¢  - HDD CP #80 ;!HARDCODE ⨯ ¤à ©¢  - HDD
JR NC,.skip_FAT_check JR NC,.skip_FAT_check
@ -566,10 +574,6 @@ get_drive_letter:
get_drive_err: scf ; ®è¨¡ª  get_drive_err: scf ; ®è¨¡ª 
ret ret
;---------------------------------------------------- ;----------------------------------------------------
; á®åà. ⥪. á¨á⥬­ë© ¤¨áª ¨ ¯ãâì ; á®åà. ⥪. á¨á⥬­ë© ¤¨áª ¨ ¯ãâì
;---------------------------------------------------- ;----------------------------------------------------
@ -630,8 +634,9 @@ messages: db 0
db "\r\nBoot and System files Installer v" ;0 db "\r\nBoot and System files Installer v" ;0
db major_version + '0','.' db major_version + '0','.'
db (minor_version / 10) + '0',(minor_version % 10) + '0','.' db (minor_version / 10) + '0',(minor_version % 10) + '0','.'
db "\r\n\nCopyright (c) 2006 Vasil Ivanov." db "\r\nBuild date ",SYS_BUILD_DATE
db "\r\n\nCopyright (c) 2023-2024 Sprinter Team." db "\r\nCopyright (c) 2006 Vasil Ivanov."
db "\r\nCopyright (c) 2023-2024 Sprinter Team."
db "\r\n\n",0 db "\r\n\n",0
; ;
db "System successfully installed on disk " ;1 db "System successfully installed on disk " ;1

View File

@ -8,13 +8,22 @@
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
ATTRIB: ;!TEST Current Dir ;[x] 15/10/23 ATTRIB: ;!TEST Current Dir ;[x] 15/10/23
LD C,A LD C,A
;
IF OLD_DSS_FOR_OLD_EXE
; [ ] 10/06/24
LD A,(EXE_VERSION)
OR A
JR Z,.old_EXE
;
ENDIF
;
PUSH HL PUSH HL
PUSH BC PUSH BC
CALL DIR_PATH_CHECK CALL DIR_PATH_CHECK
POP BC POP BC
POP HL POP HL
RET C RET C
LD A,C .old_EXE: LD A,C
; ;
; ;
INC B INC B

View File

@ -11,6 +11,15 @@
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
CHDIR_FN: CHDIR_FN:
;!TEST Current Dir ;[x] 15/10/23 ;!TEST Current Dir ;[x] 15/10/23
;
IF OLD_DSS_FOR_OLD_EXE
; [ ] 10/06/24
LD A,(EXE_VERSION)
OR A
JR Z,CHDIR
;
ENDIF
;
PUSH HL PUSH HL
CALL DIR_PATH_CHECK CALL DIR_PATH_CHECK
POP HL POP HL

View File

@ -6,12 +6,20 @@
CREATE: ;!TEST Current Dir ;[x] 15/10/23 ;CREATE_FN: CREATE: ;!TEST Current Dir ;[x] 15/10/23 ;CREATE_FN:
PUSH HL PUSH HL
LD C,A LD C,A
;
IF OLD_DSS_FOR_OLD_EXE
; [ ] 10/06/24
LD A,(EXE_VERSION)
OR A
JR Z,.old_EXE
ENDIF
;
PUSH BC PUSH BC
CALL DIR_PATH_CHECK CALL DIR_PATH_CHECK
POP BC POP BC
POP HL POP HL
RET C RET C
LD A,C .old_EXE: LD A,C
; ;
CALL .Prepare CALL .Prepare
RET C RET C
@ -33,12 +41,20 @@ CREATE: ;!TEST Current Dir ;[x] 15/10/23 ;CREATE_FN:
.NEW: ;!TEST Current Dir ;[x] 15/10/23 .NEW: ;!TEST Current Dir ;[x] 15/10/23
PUSH HL PUSH HL
LD C,A LD C,A
;
IF OLD_DSS_FOR_OLD_EXE
; [ ] 10/06/24
LD A,(EXE_VERSION)
OR A
JR Z,.old_EXE
ENDIF
;
PUSH BC PUSH BC
CALL DIR_PATH_CHECK CALL DIR_PATH_CHECK
POP BC POP BC
POP HL POP HL
RET C RET C
LD A,C .old_EXE_: LD A,C
; ;
CALL .Prepare CALL .Prepare
RET C RET C

View File

@ -4,12 +4,20 @@
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
DEL_FN: ;!TEST DEL_FN: ;!TEST
;!TEST Current Dir ;[x] 15/10/23 ;!TEST Current Dir ;[x] 15/10/23
;
IF OLD_DSS_FOR_OLD_EXE
; [ ] 10/06/24
LD A,(EXE_VERSION)
OR A
JR Z,.old_EXE
ENDIF
;
PUSH HL PUSH HL
CALL DIR_PATH_CHECK CALL DIR_PATH_CHECK
POP HL POP HL
RET C RET C
; ;
CALL GETWORD ; â¥áâ ­  ¤®¯ãáâ. ¨¬ï ¨ ­ áâà. ­  ¤¨áª .old_EXE: CALL GETWORD ; â¥áâ ­  ¤®¯ãáâ. ¨¬ï ¨ ­ áâà. ­  ¤¨áª
RET C RET C
CALL MASK CALL MASK
RET C RET C

View File

@ -87,7 +87,7 @@ EXEC: LD (CMDLINE),HL
;LD HL,(CMDLINE) ;LD HL,(CMDLINE)
JR C,EXEC0_SHORT JR C,EXEC0_SHORT
.VAR_2: CALL EXEC_1 .VAR_2: CALL EXEC_1
;LD A,DSS_Error.sys.FILE_NOT_FOUND LD A,DSS_Error.sys.FILE_NOT_FOUND
SCF SCF
RET ; File not found - exit RET ; File not found - exit
@ -124,8 +124,11 @@ EXEC_1: ;LD (CMDLINE),HL
; ;
;SHORT NAME ;SHORT NAME
;TRY TO FIND IN CURRENT DIRECTORY ;TRY TO FIND IN CURRENT DIRECTORY
EXEC0_SHORT: CALL EXEC_1 EXEC0_SHORT: ; ¥á«¨ ã¡à âì, â® ¡ã¤¥â ª ª ¢ linux - ª®à®âª®¥ ¨¬ï § ¯ã᪠¥â EXE ⮫쪮 ¨§ ¯à®¯¨á ­­ëå ¤¨à¥ªâ®à¨©,
;   ¥á«¨ ­ã¦­® § ¯ãáâ¨âì ä ©« ¨§ ⥪ã饩 ¤¨à¥ªâ®à¨¨, â® â ª: ".\run.exe"
CALL EXEC_1
RET C RET C
;
;FILE NOT FOUND, SEARCHING IN PATH ;FILE NOT FOUND, SEARCHING IN PATH
; GET PATH AND ETC. ; GET PATH AND ETC.
LD HL,ENVPATH LD HL,ENVPATH
@ -149,7 +152,7 @@ COPYEXN: LD A,(HL)
; ;
EXEC02: LD (EXE_FM),A EXEC02: LD (EXE_FM),A
LD HL,CORE_BUFFERS.EXEBUFF LD HL,CORE_BUFFERS.EXEBUFF
LD DE,#0080 ;!#0200(512) ;R02 LD DE,_sEXE_HEADER.UnUsedPoint ; #0080 ;!#0200(512) ;R02
LD A,(EXE_FM) LD A,(EXE_FM)
CALL READ CALL READ
JP C,ERREXE JP C,ERREXE
@ -169,6 +172,7 @@ EXEC02: LD (EXE_FM),A
;JP NZ,ERREXE ;JP NZ,ERREXE
LD A,MINIMUM_EXE_VERSION LD A,MINIMUM_EXE_VERSION
CP (IX + _sEXE_HEADER.VERSION) CP (IX + _sEXE_HEADER.VERSION)
LD A,DSS_Error.sys.UNKNOWN_EXE
JP C,ERREXE JP C,ERREXE
; ;
; ;
@ -301,17 +305,27 @@ _TST_PROC: CALL GETMEM
LD HL,#0000 LD HL,#0000
ADD HL,SP ADD HL,SP
LD SP,(EXSTACK) LD SP,(EXSTACK)
PUSH HL ; ! „ «¥¥ á⥪ ¢ ­ã«¥¢®© áâà ­¨æ¥! BIOS ¨ ­¥ DSS-MAIN ­¥ ¢ë§ë¢ âì
PUSH DE PUSH HL ; +2 EXSTACK size for 1 task
PUSH DE ; +2
;
IF OLD_DSS_FOR_OLD_EXE
; [ ] 10/06/24
LD A,(EXE_VERSION)
PUSH AF ; +2
;
ENDIF
;
IN A,(SLOT3) IN A,(SLOT3)
LD D,A LD D,A
IN A,(SLOT2) IN A,(SLOT2)
LD E,A LD E,A
IN A,(SLOT1) IN A,(SLOT1)
PUSH DE PUSH DE ; +2
PUSH AF PUSH AF ; +2
LD (EXSTACK),SP LD (EXSTACK),SP
LD SP,HL LD SP,HL
; ;
EXX EXX
; ;
;!TEST 27/03/2024 ;!TEST 27/03/2024
@ -360,9 +374,9 @@ _TST_PROC: CALL GETMEM
LD A,#80 ;!HARDCODE cmd line size LD A,#80 ;!HARDCODE cmd line size
SUB B SUB B
LD (CORE_BUFFERS.SECTOR_BUFFER),A LD (CORE_BUFFERS.SECTOR_BUFFER),A
;R02
LD SP,CORE_BUFFERS.EXEBUFF+510 ;‚áâ ¢«ï¥âáï ¢ SHARED_PAGE
; ;
LD SP,CORE_BUFFERS.EXEBUFF + _sEXE_HEADER ;R02
; ! „ «¥¥ á⥪ ¢ ­ã«¥¢®© áâà ­¨æ¥! BIOS ¨ ­¥ DSS-MAIN ­¥ ¢ë§ë¢ âì
LD A,SHARED_PAGE LD A,SHARED_PAGE
OUT (SLOT1),A OUT (SLOT1),A
OUT (SLOT2),A OUT (SLOT2),A
@ -375,12 +389,6 @@ _TST_PROC: CALL GETMEM
CP #80 CP #80
JR Z,FR8000 JR Z,FR8000
JR NC,FRC000 JR NC,FRC000
;CP #40
;JR Z,FR4000
;CP #80
;JR Z,FR8000
;CP #C0
;JR Z,FRC000
; ;
FR4000: LD A,(DE) FR4000: LD A,(DE)
OUT (SLOT1),A OUT (SLOT1),A
@ -397,9 +405,8 @@ FRC000: LD A,(DE)
LD B,high Dss.Move_FP.FrStart LD B,high Dss.Move_FP.FrStart
LD A,(EXE_FM) LD A,(EXE_FM)
CALL MOVE_FP CALL MOVE_FP
;R02
LD SP,#403F ;!HARDCODE STACK before start EXE. “áâ ­ ¢«¨¢ ¥âáï ª®£¤  ¢®âª­ãâë SHARED_PAGE
; ;
LD SP,#403F ;R02 ;!HARDCODE STACK before start EXE. “áâ ­ ¢«¨¢ ¥âáï ª®£¤  ¢®âª­ãâë SHARED_PAGE
_ret+1: JP 0 _ret+1: JP 0
_TST_PROC_2: LD SP,(CORE_BUFFERS.EXEBUFF.SP_REG) _TST_PROC_2: LD SP,(CORE_BUFFERS.EXEBUFF.SP_REG)
@ -418,6 +425,12 @@ _TST_PROC_2: LD SP,(CORE_BUFFERS.EXEBUFF.SP_REG)
PUSH IX PUSH IX
LD HL,CORE_BUFFERS.CurrentPath LD HL,CORE_BUFFERS.CurrentPath
LD A,(CORE_BUFFERS.EXEBUFF.VERSION) LD A,(CORE_BUFFERS.EXEBUFF.VERSION)
;
IF OLD_DSS_FOR_OLD_EXE
; [ ] 10/06/24
LD (EXE_VERSION),A
;
ENDIF
OR A OR A
JR NZ,.set_path JR NZ,.set_path
CALL DIR_PATH_CHANGE.FullCurrent CALL DIR_PATH_CHANGE.FullCurrent
@ -426,6 +439,7 @@ _TST_PROC_2: LD SP,(CORE_BUFFERS.EXEBUFF.SP_REG)
; ;
RET RET
;----------------------------------------------------------------------- ;-----------------------------------------------------------------------
; ! ¢ë§ë¢ ¥âáï ª®£¤  á⥪ ¢ ­ã«¥¢®© áâà ­¨æ¥!
M_PSP: LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR) M_PSP: LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
DEC H DEC H
LD D,H LD D,H
@ -517,6 +531,10 @@ SCOPYS: LD BC,#80*256 + ' '+1 ;!HARDCODE cmd line size
ENVPATH: DB "PATH=",0 ENVPATH: DB "PATH=",0
EXE_EXT: DB "EXE" EXE_EXT: DB "EXE"
TASK: DB #01 ; ã஢¥­ì ⥪ã饩 ¯à®£à ¬¬ë TASK: DB #01 ; ã஢¥­ì ⥪ã饩 ¯à®£à ¬¬ë
;
IF OLD_DSS_FOR_OLD_EXE
EXE_VERSION: DB #01 ; [ ] 10/06/24
ENDIF
RAMMAP: DB #00,#00,#00,#00 RAMMAP: DB #00,#00,#00,#00
ErrorLevel: DB #00 ; ª®¤ § ¢¥à襭¨ï ¯à®£à ¬¬ë (¯à®æ¥áá ) ErrorLevel: DB #00 ; ª®¤ § ¢¥à襭¨ï ¯à®£à ¬¬ë (¯à®æ¥áá )
EXE_FM: DB #00 ; ¤¥áªà. ä ©«  EXE_FM: DB #00 ; ¤¥áªà. ä ©« 
@ -550,20 +568,26 @@ LEAVE: LD A,B
_mDECTASK _mDECTASK
LD SP,(EXSTACK) LD SP,(EXSTACK)
; âãâ á⥪ ¢ ­ã«¥¢®© áâà ­¨æ¥! ; âãâ á⥪ ¢ ­ã«¥¢®© áâà ­¨æ¥!
POP AF POP AF ; -2 EXSTACK size for 1 task
POP HL POP HL ; -2
OUT (SLOT1),A OUT (SLOT1),A
LD A,L LD A,L
OUT (SLOT2),A OUT (SLOT2),A
LD A,H LD A,H
OUT (SLOT3),A OUT (SLOT3),A
POP DE ; [ ] 10/06/24
POP HL IF OLD_DSS_FOR_OLD_EXE
POP AF ; -2
LD (EXE_VERSION),A
ENDIF
;
POP DE ; -2
POP HL ; -2
LD (EXSTACK),SP LD (EXSTACK),SP
LD SP,HL LD SP,HL
; ;
;!TEST ;!TEST
EI ;EI
; ;
EX DE,HL EX DE,HL
LD A,(ErrorLevel) LD A,(ErrorLevel)
@ -650,7 +674,7 @@ CHECKPATH: ; !TODO ᤥ
RET Z RET Z
; CP '/' ;ALT SLASH ; CP '/' ;ALT SLASH
; RET Z ; RET Z
CP '!' CP " "+1
JR NC,CHECKPATH JR NC,CHECKPATH
RET RET
;----------------------------------------------------------------------- ;-----------------------------------------------------------------------

View File

@ -20,9 +20,17 @@ F_FIRST:
LD (.FNDMODE),A LD (.FNDMODE),A
PUSH HL PUSH HL
;!TEST Current Dir ;[x] 15/10/23 ;!TEST Current Dir ;[x] 15/10/23
; [ ] 10/06/24
IF OLD_DSS_FOR_OLD_EXE
LD A,(EXE_VERSION)
OR A
JR Z,.old_EXE
ENDIF
;
CALL DIR_PATH_CHECK CALL DIR_PATH_CHECK
RET C RET C
; ;
.old_EXE:
POP HL POP HL
CALL GETWORD CALL GETWORD
;CALL LOADDIR ;CALL LOADDIR

View File

@ -14,7 +14,14 @@ MKDIR:
RET RET
; ;
; Entry point ;!TEST Current Dir ;[x] 15/10/23 ; Entry point ;!TEST Current Dir ;[x] 15/10/23
.B: PUSH HL .B: ; [ ] 10/06/24
IF OLD_DSS_FOR_OLD_EXE
LD A,(EXE_VERSION)
OR A
JR Z,.START
ENDIF
;
PUSH HL
CALL DIR_PATH_CHECK CALL DIR_PATH_CHECK
POP HL POP HL
RET C RET C

View File

@ -15,11 +15,18 @@
OPEN_FN: ;!TEST Current Dir ;[x] 15/10/23 OPEN_FN: ;!TEST Current Dir ;[x] 15/10/23
;AND #7F ; ACCESS_MODE bit7 - ¤«ï ¢­ãâ७­¥£® ¨á¯®«ì§®¢ ­¨ï))) ;!TODO ;AND #7F ; ACCESS_MODE bit7 - ¤«ï ¢­ãâ७­¥£® ¨á¯®«ì§®¢ ­¨ï))) ;!TODO
LD (.TMP),A LD (.TMP),A
; [ ] 10/06/24
IF OLD_DSS_FOR_OLD_EXE
LD A,(EXE_VERSION)
OR A
JR Z,.old_EXE
ENDIF
;
PUSH HL PUSH HL
CALL DIR_PATH_CHECK.forceCheck CALL DIR_PATH_CHECK.forceCheck
POP HL POP HL
RET C RET C
;JR .start .old_EXE: ;JR .start
;!FIXIT ᤥ« âì ª ª ¢ mkdir ¨«¨ rmdir? ;!FIXIT ᤥ« âì ª ª ¢ mkdir ¨«¨ rmdir?
;R008 ; ;R008 ;
.start: CALL GETWORD .start: CALL GETWORD

View File

@ -16,22 +16,7 @@ READ: LD (.R_POINT),HL
CALL OPENDSK CALL OPENDSK
JP C,.ERR_1 JP C,.ERR_1
CALL GET_OFFSET_IN_SECTORS CALL GET_OFFSET_IN_SECTORS
; ;<3B> áçñâ ᬥ饭¨ï ¢ ᥪâ®à å ;!HARDCODE sector size ;
; LD H,0 ;!HARDCODE max file size = 8 gb
; LD E,(IY+_sFM.F_POSITION+1)
; LD D,(IY+_sFM.F_POSITION+2)
; LD L,(IY+_sFM.F_POSITION+3)
; LD A,E
; AND #01
; LD B,A
; LD C,(IY+_sFM.F_POSITION)
; RR L
; RR D
; RR E
; ;HL:DE FP (in sectors)
; ;BC FP residue (in bytes)
; ;
; OR C
JP NZ,.ROV1 JP NZ,.ROV1
.ROV4: POP BC .ROV4: POP BC
PUSH BC PUSH BC

View File

@ -10,6 +10,13 @@
; DE - "new_name.ext",#00 without simbols * ? ; DE - "new_name.ext",#00 without simbols * ?
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
RENAME: ;!TEST Current Dir ;[x] 15/10/23 RENAME: ;!TEST Current Dir ;[x] 15/10/23
; [ ] 10/06/24
IF OLD_DSS_FOR_OLD_EXE
LD A,(EXE_VERSION)
OR A
JR Z,.old_EXE
ENDIF
;
PUSH HL PUSH HL
PUSH DE PUSH DE
CALL DIR_PATH_CHECK.forceCheck CALL DIR_PATH_CHECK.forceCheck
@ -17,6 +24,7 @@ RENAME: ;!TEST Current Dir ;[x] 15/10/23
POP HL POP HL
RET C RET C
; ;
.old_EXE:
PUSH DE PUSH DE
;LD DE,MASKARE ;LD DE,MASKARE
CALL MASK.name CALL MASK.name

View File

@ -9,6 +9,13 @@
; INPUT: HL - "C:\DIR\DIR\DIR_NAME",0 ; INPUT: HL - "C:\DIR\DIR\DIR_NAME",0
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
RMDIR: ;!TEST Current Dir ;[x] 15/10/23 RMDIR: ;!TEST Current Dir ;[x] 15/10/23
; [ ] 10/06/24
IF OLD_DSS_FOR_OLD_EXE
LD A,(EXE_VERSION)
OR A
JR Z,.START
ENDIF
;
PUSH HL PUSH HL
CALL DIR_PATH_CHECK CALL DIR_PATH_CHECK
POP HL POP HL

View File

@ -35,9 +35,17 @@ SCANDRV:
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -; ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
; 4. ­  ¢á直© á«ãç © ¯¥à¥ç¨â뢠¥¬ ¤¨à४â®à¨î ; 4. ­  ¢á直© á«ãç © ¯¥à¥ç¨â뢠¥¬ ¤¨à४â®à¨î
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -; ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
; [ ] 10/06/24
IF OLD_DSS_FOR_OLD_EXE
LD A,(EXE_VERSION)
OR A
JR Z,.old_EXE
ENDIF
;
LD A,(CORE_BUFFERS.CurrentPath) LD A,(CORE_BUFFERS.CurrentPath)
SUB 'A' SUB 'A'
CALL OPENDSK CALL OPENDSK
;
LD HL,CORE_BUFFERS.CurrentDirectory LD HL,CORE_BUFFERS.CurrentDirectory
CALL CHDIR CALL CHDIR
JR NC,.exit JR NC,.exit
@ -51,8 +59,20 @@ SCANDRV:
EI EI
RET RET
; ;
; [ ] 10/06/24
IF OLD_DSS_FOR_OLD_EXE
.old_EXE: LD A,(CORE_BUFFERS.FatBuffer.DRIVE)
CALL OPENDSK
;
LD HL,CORE_BUFFERS.WorkDirectory
CALL CHDIR
JR NC,.exit
LD HL,CORE_BUFFERS.WorkDirectory
LD (HL),0
JR .exit
ENDIF
.BOOT_DSK_LOST: DZ "Boot drive lost o_O" .BOOT_DSK_LOST: DZ "Boot drive lost o_O"
.BOOT_DSK_LOST.size EQU $-.BOOT_DSK_LOST .BOOT_DSK_LOST.size EQU $-.BOOT_DSK_LOST
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -; ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
;/////////////////////////////////////////////////////////////////////// ;///////////////////////////////////////////////////////////////////////
;

View File

@ -38,22 +38,7 @@ WRITE: ;!TEST ;!TODO 5/12/23 ; [ ]
CALL OPENDSK CALL OPENDSK
JR C,.ERR1 JR C,.ERR1
CALL GET_OFFSET_IN_SECTORS CALL GET_OFFSET_IN_SECTORS
; ;<3B> áçñâ ᬥ饭¨ï ¢ ᥪâ®à å ;!HARDCODE sector size ;
; LD H,0 ;!HARDCODE max file size = 8 gb
; LD E,(IY+_sFM.F_POSITION+1)
; LD D,(IY+_sFM.F_POSITION+2)
; LD L,(IY+_sFM.F_POSITION+3)
; LD A,E
; AND #01
; LD B,A
; LD C,(IY+_sFM.F_POSITION)
; RR L
; RR D
; RR E
; ;HL:DE FP (in sectors)
; ;BC FP residue (in bytes)
; ;
; OR C
JP NZ,.WOV1 JP NZ,.WOV1
; ;
.WOV4: POP BC .WOV4: POP BC

View File

@ -6,6 +6,14 @@
; C - ­®¬¥à ¯®á«¥¤­¥£® ¤¨áª  ¢ á¨á⥬¥ ; C - ­®¬¥à ¯®á«¥¤­¥£® ¤¨áª  ¢ á¨á⥬¥
;///////////////////////////////////////////////////////////////////// ;/////////////////////////////////////////////////////////////////////
CURDISK_FN: CURDISK_FN:
;
IF OLD_DSS_FOR_OLD_EXE
; [ ] 10/06/24
LD A,(EXE_VERSION)
OR A
JR Z,CURDISK
;
ENDIF
LD A,(LDRIVE) LD A,(LDRIVE)
LD C,A LD C,A
LD A,(CORE_BUFFERS.CurrentPath) LD A,(CORE_BUFFERS.CurrentPath)

View File

@ -122,11 +122,19 @@ DISKINF: LD C,B
RET RET
; ;
CP #FF ; !FIXIT WorkDirectory CP #FF ; !FIXIT WorkDirectory
;!TEST Current Dir ;!TEST !Current Dir
;JR Z,CURRDS ;R06 ;JR Z,CURRDS ;R06
.CurrentDisk: LD A,(CORE_BUFFERS.CurrentPath) .CurrentDisk: ; [ ] 10/06/24
IF OLD_DSS_FOR_OLD_EXE
LD A,(EXE_VERSION)
OR A
LD A,(CORE_BUFFERS.FatBuffer.DRIVE)
JR Z,.old_EXE
ENDIF
;
LD A,(CORE_BUFFERS.CurrentPath)
SUB 'A' SUB 'A'
LD HL,CORE_BUFFERS.FatBuffer.DRIVE .old_EXE: LD HL,CORE_BUFFERS.FatBuffer.DRIVE
CP (HL) CP (HL)
JR Z,.CheckFreeSpace JR Z,.CheckFreeSpace
; ;

View File

@ -922,7 +922,7 @@ RD_BPB: ; LD C,SLOT3
; ;
LD A,(CORE_BUFFERS.FatBuffer.SectorsPerCluster) LD A,(CORE_BUFFERS.FatBuffer.SectorsPerCluster)
; HL:DE / A => DE:BC, H=0, L - ®áâ â®ª ; HL:DE / A => DE:BC, H=0, L - ®áâ â®ª
CALL DIV_for_SPC CALL DIV_by_Shifts
; ¢ëïá­ï¥¬ à §à來®áâì FAT ; ¢ëïá­ï¥¬ à §à來®áâì FAT
LD A,D LD A,D
OR E OR E
@ -932,7 +932,7 @@ RD_BPB: ; LD C,SLOT3
SBC HL,BC SBC HL,BC
JR NC,.its_FAT12 JR NC,.its_FAT12
; ;
LD HL,65525 LD HL,65524
SBC HL,BC SBC HL,BC
JR C,.its_FAT32 JR C,.its_FAT32
; ;

View File

@ -1027,8 +1027,8 @@ BLOCK_READ: LD (READ.PointerOnBuffer),IX
LD C,A LD C,A
PUSH BC ; B - ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥭¨ï, C - SectorsPerCluster PUSH BC ; B - ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥭¨ï, C - SectorsPerCluster
; HL:DE / A => DE:BC, H=0, L - ®áâ â®ª ; HL:DE / A => DE:BC, H=0, L - ®áâ â®ª
CALL DIV_for_SPC CALL DIV_by_Shifts
PUSH HL ; ®áâ â®ª DIV_for_SPC PUSH HL ; ®áâ â®ª DIV_by_Shifts
; [x] GET/SAVE CLUSTER NUMBER BEFORE/AFTER READ/WRITE ; [x] GET/SAVE CLUSTER NUMBER BEFORE/AFTER READ/WRITE
PUSH BC ; ¬« ¤è¥¥ á«®¢® ­®¬¥à  ª« áâ¥à  PUSH BC ; ¬« ¤è¥¥ á«®¢® ­®¬¥à  ª« áâ¥à 
PUSH DE ; [x] fat32 áâ à襥 á«®¢® ­®¬¥à  ª« áâ¥à  PUSH DE ; [x] fat32 áâ à襥 á«®¢® ­®¬¥à  ª« áâ¥à 
@ -1086,7 +1086,7 @@ BLOCK_READ: LD (READ.PointerOnBuffer),IX
POP BC ; ¬« ¤è¥¥ á«®¢® ­®¬¥à  ª« áâ¥à  POP BC ; ¬« ¤è¥¥ á«®¢® ­®¬¥à  ª« áâ¥à 
CALL SaveGotCluster CALL SaveGotCluster
; ;
POP DE ; D = 0, E = ®áâ â®ª DIV_for_SPC POP DE ; D = 0, E = ®áâ â®ª DIV_by_Shifts
POP BC ; B - ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥭¨ï, C - SectorsPerCluster POP BC ; B - ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥭¨ï, C - SectorsPerCluster
; (SP) = (RET) ; (SP) = (RET)
; à ¡®â  á ®áâ âª®¬ ®â ¤¥«¥­¨ï ; à ¡®â  á ®áâ âª®¬ ®â ¤¥«¥­¨ï
@ -1105,9 +1105,9 @@ BLOCK_READ: LD (READ.PointerOnBuffer),IX
EXX EXX
PUSH HL ; ­®¬¥à ª« áâ¥à  ¬« ¤è ï ç áâì PUSH HL ; ­®¬¥à ª« áâ¥à  ¬« ¤è ï ç áâì
PUSH BC ; B = ª®«¨ç¥á⢮ ᥪâ®à®¢ ­  ¤®ç¨âªã, C = (SectorsPerCluster - ®áâ â®ª) «¨¡® ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥭¨ï PUSH BC ; B = ª®«¨ç¥á⢮ ᥪâ®à®¢ ­  ¤®ç¨âªã, C = (SectorsPerCluster - ®áâ â®ª) «¨¡® ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥭¨ï
PUSH DE ; D = 0, E = ®áâ â®ª DIV_for_SPC PUSH DE ; D = 0, E = ®áâ â®ª DIV_by_Shifts
CALL CLUSTER_TO_SECTOR CALL CLUSTER_TO_SECTOR
POP DE ; D = 0, E = ®áâ â®ª DIV_for_SPC POP DE ; D = 0, E = ®áâ â®ª DIV_by_Shifts
ADD IX,DE ADD IX,DE
JR NC,.skip2 JR NC,.skip2
INC HL INC HL
@ -1222,8 +1222,8 @@ BLOK_WRITE: LD (READ.PointerOnBuffer),IX
LD C,A LD C,A
PUSH BC ; B - ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥭¨ï, C - SectorsPerCluster PUSH BC ; B - ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥭¨ï, C - SectorsPerCluster
; HL:DE / A => DE:BC, H=0, L - ®áâ â®ª ; HL:DE / A => DE:BC, H=0, L - ®áâ â®ª
CALL DIV_for_SPC CALL DIV_by_Shifts
PUSH HL ; ®áâ â®ª DIV_for_SPC PUSH HL ; ®áâ â®ª DIV_by_Shifts
;[x] GET/SAVE CLUSTER NUMBER BEFORE/AFTER READ/WRITE ;[x] GET/SAVE CLUSTER NUMBER BEFORE/AFTER READ/WRITE
PUSH BC ; ¬« ¤è¥¥ á«®¢® ­®¬¥à  ª« áâ¥à  PUSH BC ; ¬« ¤è¥¥ á«®¢® ­®¬¥à  ª« áâ¥à 
PUSH DE ; fat32 áâ à襥 á«®¢® ­®¬¥à  ª« áâ¥à  PUSH DE ; fat32 áâ à襥 á«®¢® ­®¬¥à  ª« áâ¥à 
@ -1310,7 +1310,7 @@ BLOK_WRITE: LD (READ.PointerOnBuffer),IX
POP BC POP BC
CALL SaveGotCluster CALL SaveGotCluster
; ;
POP DE ; D = 0, E = ®áâ â®ª DIV_for_SPC POP DE ; D = 0, E = ®áâ â®ª DIV_by_Shifts
POP BC ; B - ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥭¨ï, C - SectorsPerCluster POP BC ; B - ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥭¨ï, C - SectorsPerCluster
; (SP) = (RET) ; (SP) = (RET)
; ;
@ -1329,9 +1329,9 @@ BLOK_WRITE: LD (READ.PointerOnBuffer),IX
EXX EXX
PUSH HL ; ­®¬¥à ª« áâ¥à  ¬« ¤è ï ç áâì PUSH HL ; ­®¬¥à ª« áâ¥à  ¬« ¤è ï ç áâì
PUSH BC ; B = ª®«¨ç¥á⢮ ᥪâ®à®¢ ­  ¤®ç¨âªã, C = (SectorsPerCluster - ®áâ â®ª) «¨¡® ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥭¨ï PUSH BC ; B = ª®«¨ç¥á⢮ ᥪâ®à®¢ ­  ¤®ç¨âªã, C = (SectorsPerCluster - ®áâ â®ª) «¨¡® ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥭¨ï
PUSH DE ; D = 0, E = ®áâ â®ª DIV_for_SPC PUSH DE ; D = 0, E = ®áâ â®ª DIV_by_Shifts
CALL CLUSTER_TO_SECTOR CALL CLUSTER_TO_SECTOR
POP DE ; D = 0, E = ®áâ â®ª DIV_for_SPC POP DE ; D = 0, E = ®áâ â®ª DIV_by_Shifts
ADD IX,DE ADD IX,DE
JR NC,.skip2 JR NC,.skip2
INC HL INC HL

View File

@ -322,7 +322,7 @@ BC_Div_DE:
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
; HL:DE / A => DE:BC, H=0, L - ®áâ â®ª ; HL:DE / A => DE:BC, H=0, L - ®áâ â®ª
DIV_for_SPC: DIV_by_Shifts:
LD C,A LD C,A
DEC A DEC A
JR Z,.exit JR Z,.exit

View File

@ -16,7 +16,9 @@
.LD_ADDR WORD 00 ; 16-17 €¤à¥á à á¯®«®¦¥­¨ï ª®¤  ¢ ¯ ¬ï⨠(#4100-#FFFF) .LD_ADDR WORD 00 ; 16-17 €¤à¥á à á¯®«®¦¥­¨ï ª®¤  ¢ ¯ ¬ï⨠(#4100-#FFFF)
.PC_REG WORD 00 ; 18-19 €¤à¥á ¢ ¯ ¬ïâ¨ á ª®â®à®£® § ¯ãáâ¨âáï ª®¤ (Reg. PC) .PC_REG WORD 00 ; 18-19 €¤à¥á ¢ ¯ ¬ïâ¨ á ª®â®à®£® § ¯ãáâ¨âáï ª®¤ (Reg. PC)
.SP_REG WORD 00 ; 20-21 €¤à¥á á⥪  (Reg. SP) .SP_REG WORD 00 ; 20-21 €¤à¥á á⥪  (Reg. SP)
.RESERVED2 BLOCK 490,0 ; 22-512 Œ®¦­® ¨á¯®«ì§®¢ âì ¯®¤ ⥪áâ ¤«ï ¢ë¯¥­¤àñ¦  ¨«¨ ­¥ ¨á¯®«ì§®¢ âì .UnUsedPoint BYTE 0 ; 22
; ¢ .RESERVED2 ­¥«ì§ï ¯à®¯¨á âì BLOCK 512-.UnUsedPoint,0; ¯®í⮬ã å à¤ª®¤
.RESERVED2 BLOCK 512-23,0 ; 23-512 Œ®¦­® ¨á¯®«ì§®¢ âì ¯®¤ ⥪áâ ¤«ï ¢ë¯¥­¤àñ¦  ¨«¨ ­¥ ¨á¯®«ì§®¢ âì
ENDS ENDS
; ;

View File

@ -1,7 +1,18 @@
IFNDEF INCREASE_BUILD
DEFINE INCREASE_BUILD 0
ELSE
DEFINE+ INCREASE_BUILD 1
ENDIF
;------------------[ „®áâ ñ¬ ⥪ãéãî ¤ âã ¨ BUILD++ ]-----------------[] ;------------------[ „®áâ ñ¬ ⥪ãéãî ¤ âã ¨ BUILD++ ]-----------------[]
LUA PASS1 LUA PASS1
dss_date, dss_month, dss_year = Get_date_RU(sj.get_define("__DATE__")) dss_date, dss_month, dss_year = Get_date_RU(sj.get_define("__DATE__"))
if sj.get_define("INCREASE_BUILD") > "0" then
dss_build = increase_build("./DSS/build.txt") dss_build = increase_build("./DSS/build.txt")
else
dss_build = get_build("./DSS/build.txt")
end
if dss_build > 999 then if dss_build > 999 then
dss_build = 999 dss_build = 999
print("WARNING! Build > 999","WARNING! Build > 999","WARNING! Build > 999","WARNING! Build > 999","\aWARNING! Build > 999\a") print("WARNING! Build > 999","WARNING! Build > 999","WARNING! Build > 999","WARNING! Build > 999","\aWARNING! Build > 999\a")

View File

@ -113,6 +113,18 @@ PUTCHAR:
.CR_: CALL CURSOR .CR_: CALL CURSOR
LD E,0 LD E,0
JP LOCATE JP LOCATE
;
.control_characters:
CP #0D
JR Z,.CR_
CP #0A
JR Z,.LF_
CP #09
JR Z,.TB_
CP #08
JR Z,.BK_
CP #07 ; [x] Beep in PChars/PUTCHAR
RET NZ
; [x] Beep in PChars/PUTCHAR ; [x] Beep in PChars/PUTCHAR
.BELL: LD DE,1200 .BELL: LD DE,1200
PUSH HL PUSH HL
@ -128,18 +140,7 @@ PUTCHAR:
._CHAR: LD BC,1*256 + BIOS.LP_PRINT_SYM ._CHAR: LD BC,1*256 + BIOS.LP_PRINT_SYM
JP ToBIOS JP ToBIOS
; ;
.control_characters:
CP #0D
JR Z,.CR_
CP #0A
JR Z,.LF_
CP #09
JR Z,.TB_
CP #08
JR Z,.BK_
CP #07
JR Z,.BELL ; [x] Beep in PChars/PUTCHAR
RET
;-----[] ;-----[]
; ;
; ;

View File

@ -1 +1 @@
988 990

View File

@ -102,6 +102,9 @@ DSS_MAX_DRIVES_AMOUNT EQU 26
DEFINE MINIMUM_BIOS_VERSION 2*256 + 55 ; version 2.55 DEFINE MINIMUM_BIOS_VERSION 2*256 + 55 ; version 2.55
DEFINE CHECK_DRIVE_CHANGE 1 ; 1 - â®à¬®§­¥¥, ­® ¡¥§®¯ á­¥¥ DEFINE CHECK_DRIVE_CHANGE 1 ; 1 - â®à¬®§­¥¥, ­® ¡¥§®¯ á­¥¥
DEFINE NON_REMOVABLE_FDD 0 DEFINE NON_REMOVABLE_FDD 0
;
DEFINE OLD_DSS_FOR_OLD_EXE 0 ; !TODO
; ;
;-------------------[MEMORY]-------------------------; ;-------------------[MEMORY]-------------------------;
DEFINE PORTAL.RSTx18_SWITCH_ADDRESS #82 DEFINE PORTAL.RSTx18_SWITCH_ADDRESS #82