mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 17:31:47 +03:00
HotFix 1.
Убран баг в ATTRIB для GET на разделе FAT с кластером 64 кб. Исправлен улёт стека в ПЗУ в процедуре запуска EXE. Исправлен баг со скроллом в ECHOKEY.
This commit is contained in:
parent
607856305f
commit
12c028744a
@ -1,9 +1,9 @@
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00
|
||||
; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00
|
||||
; A - ATTRIB
|
||||
; B - MODE
|
||||
; B = #00 GET ATTRIB
|
||||
; B = #01 SET ATTRIB
|
||||
; B - MODE:
|
||||
; 0 GET ATTRIB
|
||||
; 1 SET ATTRIB
|
||||
; OUTPUT: A - ATTRIB
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
ATTRIB: ;!TEST Current Dir ;[x] 15/10/23
|
||||
@ -15,6 +15,10 @@ ATTRIB: ;!TEST Current Dir ;[x] 15/10/23
|
||||
POP BC
|
||||
POP HL
|
||||
RET C
|
||||
; [x] Hotfix 1. á«ãç © çâ¥¨ï ¤«ï ®¡å®¤ ¯à®¢¥àª¨ CHECK_64kb_CLUSTER
|
||||
LD A,1
|
||||
LD (OPEN_FN.TMP),A
|
||||
;
|
||||
LD A,C
|
||||
;
|
||||
;
|
||||
@ -69,8 +73,11 @@ ATTRIB: ;!TEST Current Dir ;[x] 15/10/23
|
||||
CALL SetPath_GetName ; â¥áâ ¤®¯ãáâ. ¨¬ï ¨ áâà. ¤¨áª
|
||||
RET C
|
||||
; [ ] 26/06/2024
|
||||
CALL CHECK_64kb_CLUSTER
|
||||
RET C
|
||||
; [x] Hotfix 1. ¥á«¨ íâ® ¥ ç⥨¥, â® ¯à®¢¥à塞 à §¬¥à ª« áâ¥à
|
||||
LD A,(OPEN_FN.TMP)
|
||||
AND A
|
||||
CALL Z,CHECK_64kb_CLUSTER
|
||||
RET C
|
||||
;
|
||||
CALL MASK
|
||||
RET C
|
||||
|
||||
@ -136,10 +136,10 @@ EXEC0_SHORT: ;
|
||||
CALL ENVIRON
|
||||
LD HL,(CMDLINE)
|
||||
LD DE,CORE_BUFFERS.EXEBUFF
|
||||
COPYEXN: LD A,(HL)
|
||||
.COPYEXN: LD A,(HL)
|
||||
LDI
|
||||
OR A
|
||||
JR NZ,COPYEXN
|
||||
JR NZ,.COPYEXN
|
||||
|
||||
CALL FINDPATH
|
||||
;[x] 1/10/2023
|
||||
@ -278,9 +278,9 @@ PRELOAD: EX DE,HL
|
||||
LD B,A
|
||||
LD A,H
|
||||
OR L
|
||||
JR Z,NOINK2
|
||||
JR Z,.NOINK
|
||||
INC B
|
||||
NOINK2: LD HL,_RET_2
|
||||
.NOINK: LD HL,_RET_2
|
||||
LD (_ret),HL
|
||||
JR _TST_PROC
|
||||
;
|
||||
@ -293,6 +293,8 @@ _RET_2: LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR) ;
|
||||
;-------------------------------------------------------------------;[ ]
|
||||
_TST_PROC: CALL GETMEM
|
||||
JP C,ERREXE0
|
||||
;
|
||||
DI
|
||||
LD (EXE_MEM),A
|
||||
EXX
|
||||
POP DE ;ᨬ ¥¬ á® á⥪ ¤à¥á ¢®§¢à â
|
||||
@ -312,7 +314,7 @@ _TST_PROC: CALL GETMEM
|
||||
PUSH AF ; +2
|
||||
LD (EXSTACK),SP
|
||||
LD SP,HL
|
||||
; ;
|
||||
;
|
||||
EXX
|
||||
;
|
||||
;!TEST 27/03/2024
|
||||
@ -356,11 +358,12 @@ _TST_PROC: CALL GETMEM
|
||||
;
|
||||
;
|
||||
LD HL,(CMDLINE)
|
||||
LD DE,CORE_BUFFERS.BUFFER+1
|
||||
;LD DE,CORE_BUFFERS.BUFFER+1
|
||||
LD DE,CORE_BUFFERS.BUFFER_CLP + 1
|
||||
CALL SCOPYS
|
||||
LD A,#80 ;!HARDCODE cmd line size
|
||||
SUB B
|
||||
LD (CORE_BUFFERS.BUFFER),A
|
||||
LD (CORE_BUFFERS.BUFFER_CLP),A
|
||||
;
|
||||
LD SP,CORE_BUFFERS.EXEBUFF + _sEXE_HEADER ;R02
|
||||
; ! „ «¥¥ á⥪ ¢ ã«¥¢®© áâà ¨æ¥! BIOS ¨ ¥ DSS-MAIN ¥ ¢ë§ë¢ âì
|
||||
@ -385,7 +388,7 @@ FR8000: LD A,(DE)
|
||||
INC DE
|
||||
FRC000: LD A,(DE)
|
||||
OUT (SLOT3),A
|
||||
CALL M_PSP
|
||||
;CALL M_PSP
|
||||
;
|
||||
LD HL,(CORE_BUFFERS.EXEBUFF.OFFCOD2)
|
||||
LD IX,(CORE_BUFFERS.EXEBUFF.OFFCOD1)
|
||||
@ -393,10 +396,21 @@ FRC000: LD A,(DE)
|
||||
LD A,(EXE_FM)
|
||||
CALL MOVE_FP
|
||||
;
|
||||
LD SP,#403F ;R02 ;!HARDCODE STACK before start EXE. “áâ ¢«¨¢ ¥âáï ª®£¤ ¢®âªãâë SHARED_PAGE
|
||||
_ret+1: JP 0 ;EXEC02.RET1 ¨«¨ _RET_2
|
||||
|
||||
_TST_PROC_2: LD SP,(CORE_BUFFERS.EXEBUFF.SP_REG)
|
||||
;LD SP,#403F ;R02 ;!HARDCODE STACK before start EXE. “áâ ¢«¨¢ ¥âáï ª®£¤ ¢®âªãâë SHARED_PAGE
|
||||
;LD A,R
|
||||
;DI
|
||||
LD SP,#4100 ;R02 ;!HARDCODE STACK before start EXE. “áâ ¢«¨¢ ¥âáï ª®£¤ ¢®âªãâë SHARED_PAGE
|
||||
;PUSH AF
|
||||
_ret+1: JP 0 ;EXEC02.RET_1 ¨«¨ _RET_2
|
||||
;
|
||||
; áî¤ ¢®§¢à â ¨§ EXEC02.RET_1 ¨«¨ _RET_2
|
||||
_TST_PROC_2:
|
||||
; ! „ «¥¥ á⥪ ¢ ã«¥¢®© áâà ¨æ¥! BIOS ¨ ¥ DSS-MAIN ¥ ¢ë§ë¢ âì
|
||||
;
|
||||
LD SP,CORE_BUFFERS.EXEBUFF + _sEXE_HEADER
|
||||
CALL M_PSP
|
||||
LD SP,(CORE_BUFFERS.EXEBUFF.SP_REG)
|
||||
;
|
||||
LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
|
||||
LD DE,#0080 ;!HARDCODE CLP_Buffer
|
||||
XOR A
|
||||
@ -404,10 +418,10 @@ _TST_PROC_2: LD SP,(CORE_BUFFERS.EXEBUFF.SP_REG)
|
||||
EX DE,HL
|
||||
LD XH,D
|
||||
LD XL,E
|
||||
LD HL,(CORE_BUFFERS.EXEBUFF.PC_REG)
|
||||
;LD HL,(CORE_BUFFERS.EXEBUFF.PC_REG)
|
||||
LD DE,RETFAR ; ¤à¥á ¯/¯ "¥®¦¨¤ ®¥ § ¢¥à襨¥ ¯à®æ¥áá "
|
||||
PUSH DE
|
||||
PUSH HL
|
||||
;PUSH HL
|
||||
;!TEST Current Dir ;[x] 15/10/23
|
||||
PUSH IX
|
||||
LD HL,CORE_BUFFERS.CurrentPath
|
||||
@ -420,7 +434,9 @@ _TST_PROC_2: LD SP,(CORE_BUFFERS.EXEBUFF.SP_REG)
|
||||
.set_path: CALL CHDIR_FN
|
||||
POP IX
|
||||
;
|
||||
RET
|
||||
LD HL,(CORE_BUFFERS.EXEBUFF.PC_REG)
|
||||
EI
|
||||
JP (HL)
|
||||
;-----------------------------------------------------------------------
|
||||
; ! ¢ë§ë¢ ¥âáï ª®£¤ á⥪ ¢ ã«¥¢®© áâà ¨æ¥!
|
||||
M_PSP: LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
|
||||
@ -428,17 +444,18 @@ M_PSP: LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
|
||||
LD D,H
|
||||
LD E,L
|
||||
INC DE
|
||||
LD BC,#00FF ;!HARDCODE
|
||||
LD BC,#00FF ;!FIXIT
|
||||
LD (HL),B
|
||||
LDIR
|
||||
EX DE,HL
|
||||
DEC H
|
||||
LD DE,#0080
|
||||
LD DE,#0080 ;!FIXIT
|
||||
ADD HL,DE
|
||||
EX DE,HL
|
||||
LD XH,D
|
||||
LD XL,E
|
||||
LD HL,CORE_BUFFERS.BUFFER
|
||||
;LD HL,CORE_BUFFERS.BUFFER
|
||||
LD HL,CORE_BUFFERS.BUFFER_CLP
|
||||
LD C,(HL)
|
||||
INC C
|
||||
LDIR
|
||||
@ -540,8 +557,8 @@ EXSTACK: DW CORE_BUFFERS.XSTACK.Spoint ;
|
||||
; 5) ‚ ॣ¨áâà A ¯®¬¥é ¥âáï ª®¤ ¢®§¢à â ¨ ¢ë¯®«ï¥âáï RET.
|
||||
;
|
||||
;/////////////////////////////////////////////////////////////////////
|
||||
LEAVE: LD A,R
|
||||
PUSH AF ; INT ON/OFF
|
||||
LEAVE: ;LD A,R
|
||||
;PUSH AF ; INT ON/OFF
|
||||
DI
|
||||
;
|
||||
LD A,B
|
||||
@ -552,7 +569,7 @@ LEAVE: LD A,R
|
||||
;
|
||||
_mDECTASK
|
||||
;
|
||||
POP DE ; INT ON/OFF
|
||||
;POP DE ; INT ON/OFF
|
||||
LD SP,(EXSTACK)
|
||||
; âãâ á⥪ ¢ ã«¥¢®© áâà ¨æ¥!
|
||||
POP AF ; -2 EXSTACK size for 1 task
|
||||
@ -563,15 +580,15 @@ LEAVE: LD A,R
|
||||
LD A,H
|
||||
OUT (SLOT3),A
|
||||
;
|
||||
LD A,E ; INT ON/OFF
|
||||
;LD A,E ; INT ON/OFF
|
||||
POP DE ; -2
|
||||
POP HL ; -2
|
||||
LD (EXSTACK),SP
|
||||
LD SP,HL
|
||||
;
|
||||
;!TEST
|
||||
AND %0000'0100 ; PO/PE flag
|
||||
JR Z,.no_ei
|
||||
;AND %0000'0100 ; PO/PE flag
|
||||
;JR Z,.no_ei
|
||||
EI
|
||||
.no_ei: ;
|
||||
EX DE,HL
|
||||
|
||||
@ -12,9 +12,12 @@
|
||||
; CALL PUTCHAR
|
||||
; JP PCHARS
|
||||
;///////////////////////////////////////////////////////////////////////
|
||||
PCHARS: XOR A ; no attr-mode
|
||||
PCHARS: XOR A
|
||||
.NO_SCROLL: LD D,A
|
||||
LD A,(CLEAR.shell_color)
|
||||
LD B,A
|
||||
LD A,D
|
||||
AND A ; no attr-mode
|
||||
EX AF,AF'
|
||||
XOR A ; no XY-mode
|
||||
LD C,BIOS.LP_PR_LINE_DIR
|
||||
@ -22,6 +25,7 @@ PCHARS: XOR A ; no attr-mode
|
||||
JP ToBIOS
|
||||
;///////////////////////////////////////////////////////////////////////
|
||||
; A - âਡãâë ¢ë¢®¤¨¬®£® ᨬ¢®« ¥á«¨ CF'
|
||||
; A' - ¥á«¨ !=0 â® ¡¥§ áªà®««
|
||||
; CF - XY-mode
|
||||
; DE - ¬¥á⮠ᨬ¢®« ¢ ®ª¥, ¥á«¨ CF=1
|
||||
; HL - ¤à¥á á ¢ë¢®¤¨¬®© áâப®©
|
||||
|
||||
@ -100,7 +100,8 @@
|
||||
|
||||
|
||||
;///////////////////////////////////////////////////////////////////////
|
||||
PUTCHAR: PUSH HL
|
||||
PUTCHAR: LD C,0
|
||||
.NO_SCROLL: PUSH HL
|
||||
;
|
||||
LD L,A
|
||||
XOR A ; no attr-mode
|
||||
@ -111,6 +112,7 @@ PUTCHAR: PUSH HL
|
||||
;
|
||||
LD A,(CLEAR.shell_color)
|
||||
LD B,A
|
||||
LD A,C
|
||||
EX AF,AF'
|
||||
XOR A ; no XY-mode
|
||||
LD C,BIOS.LP_PR_LINE_DIR
|
||||
|
||||
@ -473,6 +473,7 @@ CurrentDirectory EQU BUFFERSplace.CurrentDirectory
|
||||
.DEPTH EQU DIRECTORY_PATH_LENGTH
|
||||
WorkDirectory EQU BUFFERSplace.WorkDirectory
|
||||
.DEPTH EQU DIRECTORY_PATH_LENGTH
|
||||
BUFFER_CLP EQU BUFFERSplace.BUFFER_CLP ; ¡ãä¥à ¤«ï CMD ¢ Execute.asm
|
||||
ENDMODULE
|
||||
;
|
||||
; CurrentPath EQU CORE_BUFFERS.BUFFERSplace + _sBuffers
|
||||
@ -486,6 +487,7 @@ CLEAR_ZONE.size EQU _sBuffers
|
||||
|
||||
|
||||
ASSERT (CLEAR_ZONE.start + _sBuffers)<#4000, "Warning!!! OUT OF SLOT0"
|
||||
ASSERT (#4000 - CORE_BUFFERS.BUFFER_CLP) > #100, "Warning!!! No memory for buffer!!!"
|
||||
|
||||
DISPLAY "--- --- --- --- --- --- --- ---"
|
||||
DISPLAY "CLEAR_ZONE.start ", /H, CLEAR_ZONE.start
|
||||
|
||||
@ -204,7 +204,8 @@ ECHOKEY: CALL Cursor_On ;
|
||||
POP AF
|
||||
OR A
|
||||
; [x] -bug with Vasil's version of cursor
|
||||
CALL NZ,PUTCHAR;.NO_SCROLL ; ¤®¡ ¢¨« ¢ë¢®¤ "a" íªà
|
||||
LD C,A
|
||||
CALL NZ,PUTCHAR.NO_SCROLL
|
||||
POP BC
|
||||
POP DE
|
||||
LD A,E
|
||||
|
||||
@ -130,5 +130,6 @@
|
||||
.CurrentPath WORD 0
|
||||
.CurrentDirectory BLOCK DIRECTORY_PATH_LENGTH,0
|
||||
.WorkDirectory BLOCK DIRECTORY_PATH_LENGTH,0
|
||||
.BUFFER_CLP BLOCK CLP_Buffer,0 ; ¡ãä¥à ¤«ï CMD ¢ Execute.asm
|
||||
ENDS
|
||||
;
|
||||
@ -1 +1 @@
|
||||
57
|
||||
59
|
||||
@ -24,11 +24,11 @@ cmd_help: LD HL,.help_txt
|
||||
; ; ; ; ; ; ; ; ; ; ; ; ;
|
||||
;
|
||||
;LP_PR_LINE_DIR:
|
||||
; A - âਡãâë ¢ë¢®¤¨¬®£® ᨬ¢®« ¥á«¨ ZF=0
|
||||
; A - âਡãâë ¢ë¢®¤¨¬®£® ᨬ¢®« ¥á«¨ CF'
|
||||
; A' - ¥á«¨ !=0 â® ¡¥§ áªà®««
|
||||
; CF - XY-mode
|
||||
; DE - ¬¥á⮠ᨬ¢®« ¢ ®ª¥, ¥á«¨ CF=1
|
||||
; HL - ¤à¥á á ¢ë¢®¤¨¬®© áâப®©
|
||||
; B - à §¤¥«¨â¥«ì
|
||||
; B - 梥⠪®á®«¨ (¨á¯®«ì§ã¥âáï ¯à¨ áªà®««¥ ¨ ®ç¨á⪥ ®ª )
|
||||
; IY - ¤¢ ᯥæ.ᨬ¢®« ¤«ï ¢ë室 á CF=1. „®«¦ë ¡ëâì à ¢ë B, ¥á«¨ ¥ ã¦ë
|
||||
; A' - 梥⠪®á®«¨ (¨á¯®«ì§ã¥âáï ¯à¨ áªà®««¥ ¨ ®ç¨á⪥ ®ª )
|
||||
; CF' - ¢ë¢®¤¨âì ᨬ¢®« á âਡãâ ¬¨
|
||||
@ -9,14 +9,13 @@ cmd_pause:
|
||||
LD A,LF
|
||||
LD C,Dss.PutChar
|
||||
RST ToDSS
|
||||
LD A,R
|
||||
PUSH AF
|
||||
;LD A,R
|
||||
;PUSH AF
|
||||
LD C,Dss.WaitKey ; ¦¤¥¬ ¦ â¨ï ª« ¢¨è¨
|
||||
EI
|
||||
;EI
|
||||
RST ToDSS
|
||||
POP AF
|
||||
DI
|
||||
RET PO
|
||||
EI
|
||||
;POP AF
|
||||
;DI
|
||||
;RET PO
|
||||
;EI
|
||||
RET
|
||||
;ret
|
||||
|
||||
@ -1 +1 @@
|
||||
522
|
||||
523
|
||||
Loading…
Reference in New Issue
Block a user