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

View File

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

View File

@ -8,13 +8,22 @@
////////////////////////////////////////////////////////////////////////
ATTRIB: ;!TEST Current Dir ;[x] 15/10/23
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 BC
CALL DIR_PATH_CHECK
POP BC
POP HL
RET C
LD A,C
.old_EXE: LD A,C
;
;
INC B

View File

@ -11,6 +11,15 @@
////////////////////////////////////////////////////////////////////////
CHDIR_FN:
;!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
CALL DIR_PATH_CHECK
POP HL

View File

@ -6,12 +6,20 @@
CREATE: ;!TEST Current Dir ;[x] 15/10/23 ;CREATE_FN:
PUSH HL
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
CALL DIR_PATH_CHECK
POP BC
POP HL
RET C
LD A,C
.old_EXE: LD A,C
;
CALL .Prepare
RET C
@ -33,12 +41,20 @@ CREATE: ;!TEST Current Dir ;[x] 15/10/23 ;CREATE_FN:
.NEW: ;!TEST Current Dir ;[x] 15/10/23
PUSH HL
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
CALL DIR_PATH_CHECK
POP BC
POP HL
RET C
LD A,C
.old_EXE_: LD A,C
;
CALL .Prepare
RET C

View File

@ -4,12 +4,20 @@
////////////////////////////////////////////////////////////////////////
DEL_FN: ;!TEST
;!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
CALL DIR_PATH_CHECK
POP HL
RET C
;
CALL GETWORD ; â¥áâ ­  ¤®¯ãáâ. ¨¬ï ¨ ­ áâà. ­  ¤¨áª
.old_EXE: CALL GETWORD ; â¥áâ ­  ¤®¯ãáâ. ¨¬ï ¨ ­ áâà. ­  ¤¨áª
RET C
CALL MASK
RET C

View File

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

View File

@ -20,9 +20,17 @@ F_FIRST:
LD (.FNDMODE),A
PUSH HL
;!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
RET C
;
.old_EXE:
POP HL
CALL GETWORD
;CALL LOADDIR

View File

@ -14,7 +14,14 @@ MKDIR:
RET
;
; 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
POP HL
RET C

View File

@ -15,11 +15,18 @@
OPEN_FN: ;!TEST Current Dir ;[x] 15/10/23
;AND #7F ; ACCESS_MODE bit7 - ¤«ï ¢­ãâ७­¥£® ¨á¯®«ì§®¢ ­¨ï))) ;!TODO
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
CALL DIR_PATH_CHECK.forceCheck
POP HL
RET C
;JR .start
.old_EXE: ;JR .start
;!FIXIT ᤥ« âì ª ª ¢ mkdir ¨«¨ rmdir?
;R008 ;
.start: CALL GETWORD

View File

@ -16,22 +16,7 @@ READ: LD (.R_POINT),HL
CALL OPENDSK
JP C,.ERR_1
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
.ROV4: POP BC
PUSH BC

View File

@ -10,6 +10,13 @@
; DE - "new_name.ext",#00 without simbols * ?
////////////////////////////////////////////////////////////////////////
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 DE
CALL DIR_PATH_CHECK.forceCheck
@ -17,6 +24,7 @@ RENAME: ;!TEST Current Dir ;[x] 15/10/23
POP HL
RET C
;
.old_EXE:
PUSH DE
;LD DE,MASKARE
CALL MASK.name

View File

@ -9,6 +9,13 @@
; INPUT: HL - "C:\DIR\DIR\DIR_NAME",0
////////////////////////////////////////////////////////////////////////
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
CALL DIR_PATH_CHECK
POP HL

View File

@ -35,9 +35,17 @@ SCANDRV:
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
; 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)
SUB 'A'
CALL OPENDSK
;
LD HL,CORE_BUFFERS.CurrentDirectory
CALL CHDIR
JR NC,.exit
@ -51,8 +59,20 @@ SCANDRV:
EI
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.size EQU $-.BOOT_DSK_LOST
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
;///////////////////////////////////////////////////////////////////////
;

View File

@ -38,22 +38,7 @@ WRITE: ;!TEST ;!TODO 5/12/23 ; [ ]
CALL OPENDSK
JR C,.ERR1
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
;
.WOV4: POP BC

View File

@ -6,6 +6,14 @@
; C - ­®¬¥à ¯®á«¥¤­¥£® ¤¨áª  ¢ á¨á⥬¥
;/////////////////////////////////////////////////////////////////////
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 C,A
LD A,(CORE_BUFFERS.CurrentPath)

View File

@ -122,11 +122,19 @@ DISKINF: LD C,B
RET
;
CP #FF ; !FIXIT WorkDirectory
;!TEST Current Dir
;!TEST !Current Dir
;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'
LD HL,CORE_BUFFERS.FatBuffer.DRIVE
.old_EXE: LD HL,CORE_BUFFERS.FatBuffer.DRIVE
CP (HL)
JR Z,.CheckFreeSpace
;

View File

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

View File

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

View File

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

View File

@ -16,7 +16,9 @@
.LD_ADDR WORD 00 ; 16-17 €¤à¥á à á¯®«®¦¥­¨ï ª®¤  ¢ ¯ ¬ï⨠(#4100-#FFFF)
.PC_REG WORD 00 ; 18-19 €¤à¥á ¢ ¯ ¬ïâ¨ á ª®â®à®£® § ¯ãáâ¨âáï ª®¤ (Reg. PC)
.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
;

View File

@ -1,7 +1,18 @@
IFNDEF INCREASE_BUILD
DEFINE INCREASE_BUILD 0
ELSE
DEFINE+ INCREASE_BUILD 1
ENDIF
;------------------[ „®áâ ñ¬ ⥪ãéãî ¤ âã ¨ BUILD++ ]-----------------[]
LUA PASS1
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")
else
dss_build = get_build("./DSS/build.txt")
end
if dss_build > 999 then
dss_build = 999
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
LD E,0
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
.BELL: LD DE,1200
PUSH HL
@ -128,18 +140,7 @@ PUTCHAR:
._CHAR: LD BC,1*256 + BIOS.LP_PRINT_SYM
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 CHECK_DRIVE_CHANGE 1 ; 1 - â®à¬®§­¥¥, ­® ¡¥§®¯ á­¥¥
DEFINE NON_REMOVABLE_FDD 0
;
DEFINE OLD_DSS_FOR_OLD_EXE 0 ; !TODO
;
;-------------------[MEMORY]-------------------------;
DEFINE PORTAL.RSTx18_SWITCH_ADDRESS #82