mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 09:21:47 +03:00
исправлен улёт стека в ПЗУ в процедуре запуска EXE
исправлен баг со скроллом в ECHOKEY
This commit is contained in:
parent
058f5e4859
commit
bdef22154b
@ -4,21 +4,20 @@
|
|||||||
; ¢ه®¤: HL - ،من¥à ¢ ¯ ¬ï⨠256 ، ©â
|
; ¢ه®¤: HL - ،من¥à ¢ ¯ ¬ï⨠256 ، ©â
|
||||||
; ¢ëه®¤: A - ھ®¤ ®è¨،ھ¨, ¥ل«¨ CF=1
|
; ¢ëه®¤: A - ھ®¤ ®è¨،ھ¨, ¥ل«¨ CF=1
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
CURRDIR: LD DE,CORE_BUFFERS.WorkDirectory
|
CURRDIR: LD DE,CORE_BUFFERS.WorkDirectory
|
||||||
JR CURRDIR_FN.skip
|
JR CURRDIR_FN.skip
|
||||||
CURRDIR_FN:
|
CURRDIR_FN: LD DE,CORE_BUFFERS.CurrentDirectory
|
||||||
LD DE,CORE_BUFFERS.CurrentDirectory
|
.skip: EX DE,HL
|
||||||
.skip: EX DE,HL
|
LD BC,DIRECTORY_PATH_LENGTH ;[x] 15/11/2023 ¬®£«® ¢ë©â¨ § ¯à¥¤¥«ë ¡ãä¥à
|
||||||
LD BC,DIRECTORY_PATH_LENGTH ;[x] 15/11/2023 ¬®£«® ¢ë©â¨ § ¯à¥¤¥«ë ¡ãä¥à
|
XOR A
|
||||||
XOR A
|
.loop: CP (HL)
|
||||||
.loop: CP (HL)
|
LDI
|
||||||
LDI
|
JP PO,.error ;[x] 15/11/2023 ¬®£«® ¢ë©â¨ § ¯à¥¤¥«ë ¡ãä¥à
|
||||||
JP PO,.error ;[x] 15/11/2023 ¬®£«® ¢ë©â¨ § ¯à¥¤¥«ë ¡ãä¥à
|
JR NZ,.loop
|
||||||
JR NZ,.loop
|
RET
|
||||||
RET
|
;[x] 15/11/2023 ¬®£«® ¢ë©â¨ § ¯à¥¤¥«ë ¡ãä¥à
|
||||||
;[x] 15/11/2023 ¬®£«® ¢ë©â¨ § ¯à¥¤¥«ë ¡ãä¥à
|
.error: LD A,DSS_Error.sys.TOO_DEEP_DIR_DEPTH
|
||||||
.error: LD A,DSS_Error.sys.TOO_DEEP_DIR_DEPTH
|
SCF
|
||||||
SCF
|
RET
|
||||||
RET
|
;
|
||||||
;
|
|
||||||
;
|
;
|
||||||
@ -78,7 +78,12 @@ EXEC: LD (CMDLINE),HL
|
|||||||
JR Z,.VAR_1 ;R03
|
JR Z,.VAR_1 ;R03
|
||||||
DEC B ;R03
|
DEC B ;R03
|
||||||
JR Z,.VAR_2 ;R03
|
JR Z,.VAR_2 ;R03
|
||||||
LD A,DSS_Error.sys.INVALID_FUNCTION ;R03
|
;
|
||||||
|
; POP AF
|
||||||
|
; JP PO,.no_EI
|
||||||
|
; ;
|
||||||
|
; EI
|
||||||
|
.no_EI: LD A,DSS_Error.sys.INVALID_FUNCTION ;R03
|
||||||
SCF ;R03
|
SCF ;R03
|
||||||
RET ;R03
|
RET ;R03
|
||||||
;
|
;
|
||||||
@ -136,10 +141,10 @@ EXEC0_SHORT: ;
|
|||||||
CALL ENVIRON
|
CALL ENVIRON
|
||||||
LD HL,(CMDLINE)
|
LD HL,(CMDLINE)
|
||||||
LD DE,CORE_BUFFERS.EXEBUFF
|
LD DE,CORE_BUFFERS.EXEBUFF
|
||||||
COPYEXN: LD A,(HL)
|
.COPYEXN: LD A,(HL)
|
||||||
LDI
|
LDI
|
||||||
OR A
|
OR A
|
||||||
JR NZ,COPYEXN
|
JR NZ,.COPYEXN
|
||||||
|
|
||||||
CALL FINDPATH
|
CALL FINDPATH
|
||||||
;[x] 1/10/2023
|
;[x] 1/10/2023
|
||||||
@ -187,11 +192,8 @@ EXEC02: LD (EXE_FM),A
|
|||||||
AND #3F
|
AND #3F
|
||||||
LD D,A
|
LD D,A
|
||||||
ADD IX,DE
|
ADD IX,DE
|
||||||
;!TEST
|
JR NC,.no_inc_hl
|
||||||
JR NC,.no_inc_hl
|
INC HL
|
||||||
INC HL
|
|
||||||
;LD DE,#0000
|
|
||||||
;ADC HL,DE
|
|
||||||
;
|
;
|
||||||
.no_inc_hl: LD A,XH
|
.no_inc_hl: LD A,XH
|
||||||
SLA A
|
SLA A
|
||||||
@ -278,9 +280,9 @@ PRELOAD: EX DE,HL
|
|||||||
LD B,A
|
LD B,A
|
||||||
LD A,H
|
LD A,H
|
||||||
OR L
|
OR L
|
||||||
JR Z,NOINK2
|
JR Z,.NOINK
|
||||||
INC B
|
INC B
|
||||||
NOINK2: LD HL,_RET_2
|
.NOINK: LD HL,_RET_2
|
||||||
LD (_ret),HL
|
LD (_ret),HL
|
||||||
JR _TST_PROC
|
JR _TST_PROC
|
||||||
;
|
;
|
||||||
@ -293,6 +295,8 @@ _RET_2: LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR) ;
|
|||||||
;-------------------------------------------------------------------;[ ]
|
;-------------------------------------------------------------------;[ ]
|
||||||
_TST_PROC: CALL GETMEM
|
_TST_PROC: CALL GETMEM
|
||||||
JP C,ERREXE0
|
JP C,ERREXE0
|
||||||
|
;
|
||||||
|
DI
|
||||||
LD (EXE_MEM),A
|
LD (EXE_MEM),A
|
||||||
EXX
|
EXX
|
||||||
POP DE ;ᨬ ¥¬ á® á⥪ ¤à¥á ¢®§¢à â
|
POP DE ;ᨬ ¥¬ á® á⥪ ¤à¥á ¢®§¢à â
|
||||||
@ -312,55 +316,29 @@ _TST_PROC: CALL GETMEM
|
|||||||
PUSH AF ; +2
|
PUSH AF ; +2
|
||||||
LD (EXSTACK),SP
|
LD (EXSTACK),SP
|
||||||
LD SP,HL
|
LD SP,HL
|
||||||
; ;
|
;
|
||||||
EXX
|
EXX
|
||||||
;
|
;
|
||||||
;!TEST 27/03/2024
|
LD DE,RAMMAP+3
|
||||||
LD DE,RAMMAP+3
|
LD A,(EXE_MEM)
|
||||||
LD A,(EXE_MEM)
|
LD BC,4*256 + BIOS.GetMemPage
|
||||||
LD BC,4*256 + BIOS.GetMemPage
|
.mem_loop: PUSH AF
|
||||||
.mem_loop: PUSH AF
|
PUSH BC
|
||||||
PUSH BC
|
DEC B
|
||||||
DEC B
|
RST ToBIOS
|
||||||
RST ToBIOS
|
LD (DE),A
|
||||||
LD (DE),A
|
DEC DE
|
||||||
DEC DE
|
POP BC
|
||||||
POP BC
|
POP AF
|
||||||
POP AF
|
DJNZ .mem_loop
|
||||||
DJNZ .mem_loop
|
|
||||||
;
|
|
||||||
; LD DE,RAMMAP
|
|
||||||
; ;
|
|
||||||
; LD A,(EXE_MEM)
|
|
||||||
; 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 HL,(CMDLINE)
|
||||||
LD DE,CORE_BUFFERS.BUFFER+1
|
;LD DE,CORE_BUFFERS.BUFFER+1
|
||||||
|
LD DE,CORE_BUFFERS.BUFFER_CLP + 1
|
||||||
CALL SCOPYS
|
CALL SCOPYS
|
||||||
LD A,#80 ;!HARDCODE cmd line size
|
LD A,#80 ;!HARDCODE cmd line size
|
||||||
SUB B
|
SUB B
|
||||||
LD (CORE_BUFFERS.BUFFER),A
|
LD (CORE_BUFFERS.BUFFER_CLP),A
|
||||||
;
|
;
|
||||||
LD SP,CORE_BUFFERS.EXEBUFF + _sEXE_HEADER ;R02
|
LD SP,CORE_BUFFERS.EXEBUFF + _sEXE_HEADER ;R02
|
||||||
; ! „ «¥¥ á⥪ ¢ ã«¥¢®© áâà ¨æ¥! BIOS ¨ ¥ DSS-MAIN ¥ ¢ë§ë¢ âì
|
; ! „ «¥¥ á⥪ ¢ ã«¥¢®© áâà ¨æ¥! BIOS ¨ ¥ DSS-MAIN ¥ ¢ë§ë¢ âì
|
||||||
@ -385,7 +363,7 @@ FR8000: LD A,(DE)
|
|||||||
INC DE
|
INC DE
|
||||||
FRC000: LD A,(DE)
|
FRC000: LD A,(DE)
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
CALL M_PSP
|
;CALL M_PSP
|
||||||
;
|
;
|
||||||
LD HL,(CORE_BUFFERS.EXEBUFF.OFFCOD2)
|
LD HL,(CORE_BUFFERS.EXEBUFF.OFFCOD2)
|
||||||
LD IX,(CORE_BUFFERS.EXEBUFF.OFFCOD1)
|
LD IX,(CORE_BUFFERS.EXEBUFF.OFFCOD1)
|
||||||
@ -393,10 +371,21 @@ FRC000: LD A,(DE)
|
|||||||
LD A,(EXE_FM)
|
LD A,(EXE_FM)
|
||||||
CALL MOVE_FP
|
CALL MOVE_FP
|
||||||
;
|
;
|
||||||
LD SP,#403F ;R02 ;!HARDCODE STACK before start EXE. “áâ ¢«¨¢ ¥âáï ª®£¤ ¢®âªãâë SHARED_PAGE
|
;LD SP,#403F ;R02 ;!HARDCODE STACK before start EXE. “áâ ¢«¨¢ ¥âáï ª®£¤ ¢®âªãâë SHARED_PAGE
|
||||||
_ret+1: JP 0 ;EXEC02.RET1 ¨«¨ _RET_2
|
;LD A,R
|
||||||
|
;DI
|
||||||
_TST_PROC_2: LD SP,(CORE_BUFFERS.EXEBUFF.SP_REG)
|
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 HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
|
||||||
LD DE,#0080 ;!HARDCODE CLP_Buffer
|
LD DE,#0080 ;!HARDCODE CLP_Buffer
|
||||||
XOR A
|
XOR A
|
||||||
@ -404,10 +393,10 @@ _TST_PROC_2: LD SP,(CORE_BUFFERS.EXEBUFF.SP_REG)
|
|||||||
EX DE,HL
|
EX DE,HL
|
||||||
LD XH,D
|
LD XH,D
|
||||||
LD XL,E
|
LD XL,E
|
||||||
LD HL,(CORE_BUFFERS.EXEBUFF.PC_REG)
|
;LD HL,(CORE_BUFFERS.EXEBUFF.PC_REG)
|
||||||
LD DE,RETFAR ; ¤à¥á ¯/¯ "¥®¦¨¤ ®¥ § ¢¥à襨¥ ¯à®æ¥áá "
|
LD DE,RETFAR ; ¤à¥á ¯/¯ "¥®¦¨¤ ®¥ § ¢¥à襨¥ ¯à®æ¥áá "
|
||||||
PUSH DE
|
PUSH DE
|
||||||
PUSH HL
|
;PUSH HL
|
||||||
;!TEST Current Dir ;[x] 15/10/23
|
;!TEST Current Dir ;[x] 15/10/23
|
||||||
PUSH IX
|
PUSH IX
|
||||||
LD HL,CORE_BUFFERS.CurrentPath
|
LD HL,CORE_BUFFERS.CurrentPath
|
||||||
@ -420,7 +409,10 @@ _TST_PROC_2: LD SP,(CORE_BUFFERS.EXEBUFF.SP_REG)
|
|||||||
.set_path: CALL CHDIR_FN
|
.set_path: CALL CHDIR_FN
|
||||||
POP IX
|
POP IX
|
||||||
;
|
;
|
||||||
RET
|
EI
|
||||||
|
;RET
|
||||||
|
LD HL,(CORE_BUFFERS.EXEBUFF.PC_REG)
|
||||||
|
JP (HL)
|
||||||
;-----------------------------------------------------------------------
|
;-----------------------------------------------------------------------
|
||||||
; ! ¢ë§ë¢ ¥âáï ª®£¤ á⥪ ¢ ã«¥¢®© áâà ¨æ¥!
|
; ! ¢ë§ë¢ ¥âáï ª®£¤ á⥪ ¢ ã«¥¢®© áâà ¨æ¥!
|
||||||
M_PSP: LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
|
M_PSP: LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
|
||||||
@ -428,17 +420,18 @@ M_PSP: LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
|
|||||||
LD D,H
|
LD D,H
|
||||||
LD E,L
|
LD E,L
|
||||||
INC DE
|
INC DE
|
||||||
LD BC,#00FF ;!HARDCODE
|
LD BC,#00FF ;!FIXIT
|
||||||
LD (HL),B
|
LD (HL),B
|
||||||
LDIR
|
LDIR
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
DEC H
|
DEC H
|
||||||
LD DE,#0080
|
LD DE,#0080 ;!FIXIT
|
||||||
ADD HL,DE
|
ADD HL,DE
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
LD XH,D
|
LD XH,D
|
||||||
LD XL,E
|
LD XL,E
|
||||||
LD HL,CORE_BUFFERS.BUFFER
|
;LD HL,CORE_BUFFERS.BUFFER
|
||||||
|
LD HL,CORE_BUFFERS.BUFFER_CLP
|
||||||
LD C,(HL)
|
LD C,(HL)
|
||||||
INC C
|
INC C
|
||||||
LDIR
|
LDIR
|
||||||
@ -540,8 +533,8 @@ EXSTACK: DW CORE_BUFFERS.XSTACK.Spoint ;
|
|||||||
; 5) ‚ ॣ¨áâà A ¯®¬¥é ¥âáï ª®¤ ¢®§¢à â ¨ ¢ë¯®«ï¥âáï RET.
|
; 5) ‚ ॣ¨áâà A ¯®¬¥é ¥âáï ª®¤ ¢®§¢à â ¨ ¢ë¯®«ï¥âáï RET.
|
||||||
;
|
;
|
||||||
;/////////////////////////////////////////////////////////////////////
|
;/////////////////////////////////////////////////////////////////////
|
||||||
LEAVE: LD A,R
|
LEAVE: ;LD A,R
|
||||||
PUSH AF ; INT ON/OFF
|
;PUSH AF ; INT ON/OFF
|
||||||
DI
|
DI
|
||||||
;
|
;
|
||||||
LD A,B
|
LD A,B
|
||||||
@ -552,7 +545,7 @@ LEAVE: LD A,R
|
|||||||
;
|
;
|
||||||
_mDECTASK
|
_mDECTASK
|
||||||
;
|
;
|
||||||
POP DE ; INT ON/OFF
|
;POP DE ; INT ON/OFF
|
||||||
LD SP,(EXSTACK)
|
LD SP,(EXSTACK)
|
||||||
; âãâ á⥪ ¢ ã«¥¢®© áâà ¨æ¥!
|
; âãâ á⥪ ¢ ã«¥¢®© áâà ¨æ¥!
|
||||||
POP AF ; -2 EXSTACK size for 1 task
|
POP AF ; -2 EXSTACK size for 1 task
|
||||||
@ -563,15 +556,15 @@ LEAVE: LD A,R
|
|||||||
LD A,H
|
LD A,H
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
;
|
;
|
||||||
LD A,E ; INT ON/OFF
|
;LD A,E ; INT ON/OFF
|
||||||
POP DE ; -2
|
POP DE ; -2
|
||||||
POP HL ; -2
|
POP HL ; -2
|
||||||
LD (EXSTACK),SP
|
LD (EXSTACK),SP
|
||||||
LD SP,HL
|
LD SP,HL
|
||||||
;
|
;
|
||||||
;!TEST
|
;!TEST
|
||||||
AND %0000'0100 ; PO/PE flag
|
;AND %0000'0100 ; PO/PE flag
|
||||||
JR Z,.no_ei
|
;JR Z,.no_ei
|
||||||
EI
|
EI
|
||||||
.no_ei: ;
|
.no_ei: ;
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
|
|||||||
@ -12,9 +12,12 @@
|
|||||||
; CALL PUTCHAR
|
; CALL PUTCHAR
|
||||||
; JP PCHARS
|
; JP PCHARS
|
||||||
;///////////////////////////////////////////////////////////////////////
|
;///////////////////////////////////////////////////////////////////////
|
||||||
PCHARS: XOR A ; no attr-mode
|
PCHARS: XOR A
|
||||||
|
.NO_SCROLL: LD D,A
|
||||||
LD A,(CLEAR.shell_color)
|
LD A,(CLEAR.shell_color)
|
||||||
LD B,A
|
LD B,A
|
||||||
|
LD A,D
|
||||||
|
AND A ; no attr-mode
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
XOR A ; no XY-mode
|
XOR A ; no XY-mode
|
||||||
LD C,BIOS.LP_PR_LINE_DIR
|
LD C,BIOS.LP_PR_LINE_DIR
|
||||||
@ -22,6 +25,7 @@ PCHARS: XOR A ; no attr-mode
|
|||||||
JP ToBIOS
|
JP ToBIOS
|
||||||
;///////////////////////////////////////////////////////////////////////
|
;///////////////////////////////////////////////////////////////////////
|
||||||
; A - âਡãâë ¢ë¢®¤¨¬®£® ᨬ¢®« ¥á«¨ CF'
|
; A - âਡãâë ¢ë¢®¤¨¬®£® ᨬ¢®« ¥á«¨ CF'
|
||||||
|
; A' - ¥á«¨ !=0 â® ¡¥§ áªà®««
|
||||||
; CF - XY-mode
|
; CF - XY-mode
|
||||||
; DE - ¬¥á⮠ᨬ¢®« ¢ ®ª¥, ¥á«¨ CF=1
|
; DE - ¬¥á⮠ᨬ¢®« ¢ ®ª¥, ¥á«¨ CF=1
|
||||||
; HL - ¤à¥á á ¢ë¢®¤¨¬®© áâப®©
|
; HL - ¤à¥á á ¢ë¢®¤¨¬®© áâப®©
|
||||||
|
|||||||
@ -100,7 +100,8 @@
|
|||||||
|
|
||||||
|
|
||||||
;///////////////////////////////////////////////////////////////////////
|
;///////////////////////////////////////////////////////////////////////
|
||||||
PUTCHAR: PUSH HL
|
PUTCHAR: LD C,0
|
||||||
|
.NO_SCROLL: PUSH HL
|
||||||
;
|
;
|
||||||
LD L,A
|
LD L,A
|
||||||
XOR A ; no attr-mode
|
XOR A ; no attr-mode
|
||||||
@ -111,6 +112,7 @@ PUTCHAR: PUSH HL
|
|||||||
;
|
;
|
||||||
LD A,(CLEAR.shell_color)
|
LD A,(CLEAR.shell_color)
|
||||||
LD B,A
|
LD B,A
|
||||||
|
LD A,C
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
XOR A ; no XY-mode
|
XOR A ; no XY-mode
|
||||||
LD C,BIOS.LP_PR_LINE_DIR
|
LD C,BIOS.LP_PR_LINE_DIR
|
||||||
|
|||||||
@ -5,18 +5,16 @@
|
|||||||
; ¢ë室: A - ®¬¥à ¤¨áª (0=A,1=B,..)
|
; ¢ë室: A - ®¬¥à ¤¨áª (0=A,1=B,..)
|
||||||
; C - ®¬¥à ¯®á«¥¤¥£® ¤¨áª ¢ á¨á⥬¥
|
; C - ®¬¥à ¯®á«¥¤¥£® ¤¨áª ¢ á¨á⥬¥
|
||||||
;/////////////////////////////////////////////////////////////////////
|
;/////////////////////////////////////////////////////////////////////
|
||||||
CURDISK_FN:
|
CURDISK_FN: LD A,(LDRIVE)
|
||||||
LD A,(LDRIVE)
|
LD C,A
|
||||||
LD C,A
|
LD A,(CORE_BUFFERS.CurrentPath)
|
||||||
LD A,(CORE_BUFFERS.CurrentPath)
|
SUB 'A'
|
||||||
SUB 'A'
|
RET NC
|
||||||
RET NC
|
LD A,DSS_Error.sys.INVALID_DRIVE
|
||||||
LD A,DSS_Error.sys.INVALID_DRIVE
|
RET
|
||||||
RET
|
CURDISK: LD A,(LDRIVE)
|
||||||
CURDISK:
|
LD C,A
|
||||||
LD A,(LDRIVE)
|
LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
|
||||||
LD C,A
|
AND A
|
||||||
LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
|
RET
|
||||||
AND A
|
|
||||||
RET
|
|
||||||
;
|
;
|
||||||
@ -391,13 +391,15 @@ CurrentDirectory EQU BUFFERSplace.CurrentDirectory
|
|||||||
.DEPTH EQU DIRECTORY_PATH_LENGTH
|
.DEPTH EQU DIRECTORY_PATH_LENGTH
|
||||||
WorkDirectory EQU BUFFERSplace.WorkDirectory
|
WorkDirectory EQU BUFFERSplace.WorkDirectory
|
||||||
.DEPTH EQU DIRECTORY_PATH_LENGTH
|
.DEPTH EQU DIRECTORY_PATH_LENGTH
|
||||||
|
BUFFER_CLP EQU BUFFERSplace.BUFFER_CLP ; ¡ãä¥à ¤«ï CMD ¢ Execute.asm
|
||||||
ENDMODULE
|
ENDMODULE
|
||||||
CLEAR_ZONE.size EQU _sBuffers
|
CLEAR_ZONE.size EQU _sBuffers
|
||||||
ASSERT (CLEAR_ZONE.start + _sBuffers)<#4000, "Warning!!! OUT OF SLOT0"
|
ASSERT (CLEAR_ZONE.start + _sBuffers)<#4000, "Warning!!! OUT OF SLOT0"
|
||||||
|
ASSERT (#4000 - CORE_BUFFERS.BUFFER_CLP) > #100, "Warning!!! No memory for buffer!!!"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ’ãâ ¥ ¢áñ
|
||||||
DISPLAY "--- --- --- --- --- --- --- ---"
|
DISPLAY "--- --- --- --- --- --- --- ---"
|
||||||
DISPLAY "CLEAR_ZONE.start ", /H, CLEAR_ZONE.start
|
DISPLAY "CLEAR_ZONE.start ", /H, CLEAR_ZONE.start
|
||||||
DISPLAY "CLEAR_ZONE.Size ", /H, CLEAR_ZONE.size
|
DISPLAY "CLEAR_ZONE.Size ", /H, CLEAR_ZONE.size
|
||||||
@ -417,7 +419,7 @@ CLEAR_ZONE.size EQU _sBuffers
|
|||||||
DISPLAY " MemoryTable ", /H, CORE_BUFFERS.MemoryTable
|
DISPLAY " MemoryTable ", /H, CORE_BUFFERS.MemoryTable
|
||||||
DISPLAY " Size ", /H, _sBuffers - (CORE_BUFFERS.MemoryTable - CORE_BUFFERS.BUFFERSplace)
|
DISPLAY " Size ", /H, _sBuffers - (CORE_BUFFERS.MemoryTable - CORE_BUFFERS.BUFFERSplace)
|
||||||
DISPLAY "--- --- --- --- --- --- --- ---"
|
DISPLAY "--- --- --- --- --- --- --- ---"
|
||||||
DISPLAY "CLEAR_ZONE.End ", /H, CLEAR_ZONE.start + CLEAR_ZONE.size
|
DISPLAY "CLEAR_ZONE.End ", /H, CLEAR_ZONE.start + CLEAR_ZONE.size
|
||||||
DISPLAY "--- --- --- --- --- --- --- ---"
|
DISPLAY "--- --- --- --- --- --- --- ---"
|
||||||
|
|
||||||
|
|
||||||
@ -444,6 +446,7 @@ CLEAR_ZONE.size EQU _sBuffers
|
|||||||
EXPORT CORE_BUFFERS.CurrentDirectory.DEPTH
|
EXPORT CORE_BUFFERS.CurrentDirectory.DEPTH
|
||||||
EXPORT CORE_BUFFERS.WorkDirectory
|
EXPORT CORE_BUFFERS.WorkDirectory
|
||||||
EXPORT CORE_BUFFERS.WorkDirectory.DEPTH
|
EXPORT CORE_BUFFERS.WorkDirectory.DEPTH
|
||||||
|
EXPORT CORE_BUFFERS.BUFFER_CLP
|
||||||
;> > > > > > > > > > > > > > > > BUFFERS < < < < < < < < < < < < < < < <
|
;> > > > > > > > > > > > > > > > BUFFERS < < < < < < < < < < < < < < < <
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -204,7 +204,8 @@ ECHOKEY: CALL Cursor_On ;
|
|||||||
POP AF
|
POP AF
|
||||||
OR A
|
OR A
|
||||||
; [x] -bug with Vasil's version of cursor
|
; [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 BC
|
||||||
POP DE
|
POP DE
|
||||||
LD A,E
|
LD A,E
|
||||||
|
|||||||
@ -140,5 +140,6 @@
|
|||||||
.CurrentPath WORD 0
|
.CurrentPath WORD 0
|
||||||
.CurrentDirectory BLOCK DIRECTORY_PATH_LENGTH,0
|
.CurrentDirectory BLOCK DIRECTORY_PATH_LENGTH,0
|
||||||
.WorkDirectory BLOCK DIRECTORY_PATH_LENGTH,0
|
.WorkDirectory BLOCK DIRECTORY_PATH_LENGTH,0
|
||||||
|
.BUFFER_CLP BLOCK CLP_Buffer,0 ; ¡ãä¥à ¤«ï CLP § ¯ã᪠¥¬®£® ¢ Execute.asm
|
||||||
ENDS
|
ENDS
|
||||||
;
|
;
|
||||||
@ -1 +1 @@
|
|||||||
0
|
1
|
||||||
@ -3,26 +3,25 @@
|
|||||||
; CD, CHDIR. ‘¬¥ ª â «®£
|
; CD, CHDIR. ‘¬¥ ª â «®£
|
||||||
;
|
;
|
||||||
;///////////////////////////////////////////////////
|
;///////////////////////////////////////////////////
|
||||||
cmd_chdir:
|
cmd_chdir: ex de,hl
|
||||||
ex de,hl
|
ld de,Buffers.work.buffer1;
|
||||||
ld de,Buffers.work.buffer1;
|
ld c,Dss.GSwitch ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬-áâப¨
|
||||||
ld c,Dss.GSwitch ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬-áâப¨
|
RST ToDSS
|
||||||
RST ToDSS
|
xor a
|
||||||
xor a
|
ld hl,Buffers.work.buffer1;
|
||||||
ld hl,Buffers.work.buffer1;
|
cp (hl)
|
||||||
cp (hl)
|
jr nz,.chdir
|
||||||
jr nz,.chdir
|
ld (hl),"." ; ".." த¨â. ¯ ¯ª
|
||||||
ld (hl),"." ; ".." த¨â. ¯ ¯ª
|
inc hl
|
||||||
inc hl
|
ld (hl),"."
|
||||||
ld (hl),"."
|
inc hl
|
||||||
inc hl
|
ld (hl),0
|
||||||
ld (hl),0
|
dec hl
|
||||||
dec hl
|
dec hl
|
||||||
dec hl
|
.chdir: ld c,Dss.ChDir ; ᬥ¨âì ⥪. ª â «®£
|
||||||
.chdir: ld c,Dss.ChDir ; ᬥ¨âì ⥪. ª â «®£
|
RST ToDSS
|
||||||
RST ToDSS
|
call c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
||||||
call c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
jp Get_Path ; á®åà. ⥪. ¤¨áª ¨ ¯ãâì
|
||||||
jp Get_Path ; á®åà. ⥪. ¤¨áª ¨ ¯ãâì
|
|
||||||
; ; ¢ë¢®¤ á¨áâ. ¯ã⨠íªà
|
; ; ¢ë¢®¤ á¨áâ. ¯ã⨠íªà
|
||||||
; ld c,8Eh ; ã§ âì ¯®«®¦. ªãàá®à
|
; ld c,8Eh ; ã§ âì ¯®«®¦. ªãàá®à
|
||||||
; RST ToBIOS
|
; RST ToBIOS
|
||||||
|
|||||||
@ -4,9 +4,9 @@
|
|||||||
;
|
;
|
||||||
;///////////////////////////////////////////////////
|
;///////////////////////////////////////////////////
|
||||||
cmd_exit:
|
cmd_exit:
|
||||||
.TASKX+1: ld a,2 ; ã஢¥ì ⥪ã饣® 襫«
|
.TASKX+1: ld a,2 ; ã஢¥ì ⥪ã饣® 襫«
|
||||||
dec a
|
dec a
|
||||||
dec a
|
dec a
|
||||||
ret z ; a=2 (primary 襫«)
|
ret z ; a=2 (primary 襫«)
|
||||||
;pop hl ; ¢®ááâ. ¡ « á á⥪ (ã¡à âì ¢ë§®¢ COMP ¢ £«. 横«¥ ®¡®«®çª¨)
|
;pop hl ; ¢®ááâ. ¡ « á á⥪ (ã¡à âì ¢ë§®¢ COMP ¢ £«. 横«¥ ®¡®«®çª¨)
|
||||||
jp back_to_parent_process ; ¢¥àãâìáï ¢ த¨â. ¯à®æ¥áá
|
jp back_to_parent_process ; ¢¥àãâìáï ¢ த¨â. ¯à®æ¥áá
|
||||||
|
|||||||
@ -24,11 +24,11 @@ cmd_help: LD HL,.help_txt
|
|||||||
; ; ; ; ; ; ; ; ; ; ; ; ;
|
; ; ; ; ; ; ; ; ; ; ; ; ;
|
||||||
;
|
;
|
||||||
;LP_PR_LINE_DIR:
|
;LP_PR_LINE_DIR:
|
||||||
; A - âਡãâë ¢ë¢®¤¨¬®£® ᨬ¢®« ¥á«¨ ZF=0
|
; A - âਡãâë ¢ë¢®¤¨¬®£® ᨬ¢®« ¥á«¨ CF'
|
||||||
|
; A' - ¥á«¨ !=0 â® ¡¥§ áªà®««
|
||||||
; CF - XY-mode
|
; CF - XY-mode
|
||||||
; DE - ¬¥á⮠ᨬ¢®« ¢ ®ª¥, ¥á«¨ CF=1
|
; DE - ¬¥á⮠ᨬ¢®« ¢ ®ª¥, ¥á«¨ CF=1
|
||||||
; HL - ¤à¥á á ¢ë¢®¤¨¬®© áâப®©
|
; HL - ¤à¥á á ¢ë¢®¤¨¬®© áâப®©
|
||||||
; B - à §¤¥«¨â¥«ì
|
; B - 梥⠪®á®«¨ (¨á¯®«ì§ã¥âáï ¯à¨ áªà®««¥ ¨ ®ç¨á⪥ ®ª )
|
||||||
; IY - ¤¢ ᯥæ.ᨬ¢®« ¤«ï ¢ë室 á CF=1. „®«¦ë ¡ëâì à ¢ë B, ¥á«¨ ¥ ã¦ë
|
; IY - ¤¢ ᯥæ.ᨬ¢®« ¤«ï ¢ë室 á CF=1. „®«¦ë ¡ëâì à ¢ë B, ¥á«¨ ¥ ã¦ë
|
||||||
; A' - 梥⠪®á®«¨ (¨á¯®«ì§ã¥âáï ¯à¨ áªà®««¥ ¨ ®ç¨á⪥ ®ª )
|
|
||||||
; CF' - ¢ë¢®¤¨âì ᨬ¢®« á âਡãâ ¬¨
|
; CF' - ¢ë¢®¤¨âì ᨬ¢®« á âਡãâ ¬¨
|
||||||
@ -9,14 +9,14 @@ cmd_pause:
|
|||||||
LD A,LF
|
LD A,LF
|
||||||
LD C,Dss.PutChar
|
LD C,Dss.PutChar
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
LD A,R
|
;LD A,R
|
||||||
PUSH AF
|
;PUSH AF
|
||||||
LD C,Dss.WaitKey ; ¦¤¥¬ ¦ â¨ï ª« ¢¨è¨
|
LD C,Dss.WaitKey ; ¦¤¥¬ ¦ â¨ï ª« ¢¨è¨
|
||||||
EI
|
;EI
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
POP AF
|
;POP AF
|
||||||
DI
|
;DI
|
||||||
RET PO
|
;RET PO
|
||||||
EI
|
;EI
|
||||||
RET
|
RET
|
||||||
;ret
|
;///////////////////////////////////////////////////
|
||||||
|
|||||||
@ -3,8 +3,6 @@
|
|||||||
; REM. Š®¬¬¥â ਩ (¢ bat-ä ©«¥)
|
; REM. Š®¬¬¥â ਩ (¢ bat-ä ©«¥)
|
||||||
;
|
;
|
||||||
;///////////////////////////////////////////////////
|
;///////////////////////////////////////////////////
|
||||||
cmd_rem:; [x] 15/12/23 ¬®¦¥â ¨ ¥ ¯® ¤®¡¨âáï
|
cmd_rem: AND A
|
||||||
AND A
|
RET
|
||||||
;
|
|
||||||
ret
|
|
||||||
;
|
;
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
522
|
525
|
||||||
Loading…
Reference in New Issue
Block a user