mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 01:11:48 +03:00
App_EXE_Version - экспериментальная фишка для запуска старых приложений без Current Dir
This commit is contained in:
parent
69829e359a
commit
32a1547722
@ -144,6 +144,10 @@ MSG0: DB 0
|
||||
MSGE DB 0
|
||||
|
||||
CONTINUE:
|
||||
;!TEST 26/03/2024
|
||||
LD SP,#C000
|
||||
;
|
||||
|
||||
LD HL,0
|
||||
LD (DISKL),HL
|
||||
LD (DISKH),HL
|
||||
@ -160,7 +164,7 @@ CONTINUE:
|
||||
|
||||
LD HL,(FCLUSTR)
|
||||
LD DE,#C000
|
||||
CALL FLOAD
|
||||
CALL FLOAD ; § £à㧪
|
||||
DI
|
||||
XOR A
|
||||
OUT (SYS_PORT.OFF),A
|
||||
@ -448,6 +452,7 @@ IBMDOS_ LD A,(IY+_sBOOT_SECTOR_PARAMS.DRIVE_TYPE)
|
||||
LD HL,#0FFF
|
||||
JR BPB_FAT
|
||||
|
||||
; ¯®¨áª system.dos
|
||||
GETROOT: LD HL,(DIR_FRH)
|
||||
LD IX,(DIR_FRL)
|
||||
LD BC,(DISKL)
|
||||
@ -514,6 +519,7 @@ SEARCH2: LD A,(DE)
|
||||
|
||||
; HL - CLUSTER
|
||||
; DE - ADDRESS
|
||||
;!TODO ᤥ« âì âãâ ®¯à¥¤¥«¥¨¥ à §¬¥à SYSTEM.DOS ¨ ¢®§¬®¦®áâì § £à㧨âì ¡®«ìè¥ 1 áâà ¨æë
|
||||
FLOAD: LD (READMEM),DE
|
||||
LD_FILE: PUSH HL
|
||||
CALL NSECTOR
|
||||
|
||||
@ -57,6 +57,14 @@
|
||||
include 'API/DosName.asm'
|
||||
include 'API/Read.asm'
|
||||
include 'API/Write.asm'
|
||||
include 'API/FreeMem.asm'
|
||||
include 'API/GetMem.asm'
|
||||
include 'API/RetMem.asm'
|
||||
include 'API/SetMem.asm'
|
||||
include 'API/SetWin.asm'
|
||||
include 'API/AppInfo.asm'
|
||||
include 'API/Ex_Path.asm'
|
||||
include 'API/GSwitch.asm'
|
||||
include 'API/Environ.ASM'
|
||||
include 'API/Lib_Sub.asm'
|
||||
|
||||
|
||||
101
DSS/API/AppInfo.asm
Normal file
101
DSS/API/AppInfo.asm
Normal file
@ -0,0 +1,101 @@
|
||||
;---------------------------------------------------------------
|
||||
;Rev Date Name Description
|
||||
;---------------------------------------------------------------
|
||||
;R10 13-04-2023 BAO FIX BUG WITH PARSING DIRECTORY BUFFER
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
; !FIXIT âãâ ®¤¨ § âã¯ë ¨ ¤¥¡¨«¨§¬
|
||||
; ”ãªæ¨ï #47. <20>®«ã票¥ ¨ä®à¬ 樨 ¯à¨«®¦¥¨ï.
|
||||
;
|
||||
; ¢å®¤: HL - ¡ãä¥à ¤ ëå
|
||||
; B - ®¬¥à ¯®¤äãªæ¨¨:
|
||||
; B=0 - ¯®«ã票¥ ¯ à ¬¥â஢ ª®¬ ¤®© áâப¨
|
||||
; B=1 - ¯®«ã票¥ ¯®«®£® ¯ã⨠ª ª â «®£ã ¯à®£à ¬¬ë
|
||||
; B=2 - ¯®«ã票¥ ¯®«®£® ¯ã⨠¨ ¨¬¥¨ ä ©« ¯à®£à ¬¬ë
|
||||
; ¢ë室: ¥â
|
||||
;
|
||||
; APPLICATION INFO
|
||||
;====================
|
||||
; B = 0 - GET APP_PARAM
|
||||
; B = 1 - GET APP_PATH
|
||||
; B = 2 - GET APP_FULLNAME
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
;LAST_PSP_PTR: DW 0
|
||||
APPINFO: INC B
|
||||
;
|
||||
DJNZ .FN1
|
||||
; ¯®«ã票¥ ¯ à ¬¥â஢ ª®¬ ¤®© áâப¨ EX DE,HL
|
||||
XOR A
|
||||
LD (DE),A
|
||||
LD HL,(.LAST_PSP_PTR)
|
||||
LD C,(HL)
|
||||
INC C
|
||||
RET Z
|
||||
INC HL
|
||||
LDIR
|
||||
AND A
|
||||
RET
|
||||
|
||||
.FN1: DJNZ .FN2
|
||||
; ¯®«ã票¥ ¯®«®£® ¯ã⨠ª ª â «®£ã ¯à®£à ¬¬ë
|
||||
EX DE,HL
|
||||
.LAST_PSP_PTR+1:
|
||||
LD HL,0
|
||||
LD C,(HL)
|
||||
INC HL
|
||||
ADD HL,BC
|
||||
INC HL
|
||||
INC HL
|
||||
PUSH HL
|
||||
LD BC,#100 ;!HARDCODE ¤«¨ ª®¬¬ ¤®© áâப¨
|
||||
XOR A
|
||||
CPIR
|
||||
DEC HL ;R10 ;[x] ¨á¯à ¢«¥ ¡ £ á ¯ àᨣ®¬ ¡ãä¥à ª â «®£
|
||||
DEC HL ;R10,5 - ¥ â¥á⨫ ;!!!!!
|
||||
LD BC,#100 ;R10 ;[x] ¥ ¡ë«® í⮩ ª®¬ ¤ë, CPDR ¬®£ ¥ ¯à®è¥àáâ¨âì ¢áñ ;!HARDCODE ¤«¨ ª®¬¬ ¤®© áâப¨
|
||||
LD A,'\'
|
||||
CPDR
|
||||
INC HL
|
||||
INC HL
|
||||
POP BC
|
||||
AND A
|
||||
SBC HL,BC
|
||||
;R10 ;[x] ¬®£«® ¢áñ ¢ ª®á¬®á ã«¥â¥âì
|
||||
LD A,DSS_Error.sys.COMMON_ERROR
|
||||
JR C,.error
|
||||
;
|
||||
LD A,B ;EX HL,A,BC
|
||||
LD B,H
|
||||
LD H,A
|
||||
LD A,C
|
||||
LD C,L
|
||||
LD L,A
|
||||
LDIR
|
||||
XOR A
|
||||
LD (DE),A
|
||||
RET
|
||||
;
|
||||
.FN2: DJNZ .FN3
|
||||
; ¯®«ã票¥ ¯®«®£® ¯ã⨠¨ ¨¬¥¨ ä ©«
|
||||
EX DE,HL
|
||||
LD HL,(.LAST_PSP_PTR)
|
||||
LD C,(HL)
|
||||
INC HL
|
||||
ADD HL,BC
|
||||
INC HL
|
||||
INC HL
|
||||
;
|
||||
.loop LD A,(HL)
|
||||
LDI
|
||||
OR A
|
||||
JR NZ,.loop
|
||||
;
|
||||
RET
|
||||
;
|
||||
.FN3:
|
||||
;
|
||||
; ®è¨¡ª
|
||||
LD A,DSS_Error.sys.INVALID_FUNCTION
|
||||
.error: SCF
|
||||
RET
|
||||
;
|
||||
240
DSS/API/Ex_Path.asm
Normal file
240
DSS/API/Ex_Path.asm
Normal file
@ -0,0 +1,240 @@
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
; ”ãªæ¨ï #45. <20> §¡®à ª®¬ ¤®© áâப¨.
|
||||
;
|
||||
; ¢å®¤: HL - 㪠§ â¥«ì ª®¬ ¤®© áâப¨
|
||||
; DE - 㪠§ â¥«ì ¡ãä¥à ¯®«ì§®¢ ⥫ï
|
||||
; B - ®¬¥à ¯®¤äãªæ¨¨:
|
||||
; 0 - <20> §®¡à âì áâபã
|
||||
; 1 - ‚뤥«¨âì ¨¬ï ¤¨áª
|
||||
; 2 - ‚뤥«¨âì ¤¨à¥ªâ®à¨î
|
||||
; 3 - ‚뤥«¨âì ¨¬ï ä ©«
|
||||
; 4 - ‚뤥«¨âì à áè¨à¥¨¥ ä ©«
|
||||
; 5 - ‚뤥«¨âì ¨¬ï ¤¨áª , ¯ãâì ª ä ©«ã, ¨¬ï ä ©« ¨ à áè. ä ©«
|
||||
; 6 - ‡ १¥à¢¨à®¢ ®
|
||||
; 7 - ‚뤥«¨âì ¯ à ¬¥âà ª®¬ ¤®© áâப¨
|
||||
; 8 - <20>८¡à §®¢ âì ¨§ 11 ᨬ¢®«ì®£® ä®à¬ â ¢ ä®à¬ â „Ž‘
|
||||
; 9 - <20>८¡à §®¢ âì ¨§ ä®à¬ â „Ž‘ ¢ 11 ᨬ¢®«ìë© ä®à¬ â
|
||||
; ¢ë室: ¥â
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
GLOB_PR EQU 7 ;%10000000
|
||||
DRIV_PR EQU 3 ;%00001000
|
||||
PATH_PR EQU 2 ;%00000100
|
||||
EXTN_PR EQU 1 ;%00000010
|
||||
NAM_PR EQU 0 ;%00000001
|
||||
|
||||
EX_PATH: EXX
|
||||
LD HL,NM_PATH_A ;BUILT-IN BUFFER FOR PATH ;!!!!! ¨á¯®«ì§ã¥âáï ®¡é¨© ¡ãä¥à
|
||||
LD (NM_PATH),HL
|
||||
LD HL,NM_NAME_A
|
||||
LD (NM_NAME),HL
|
||||
LD HL,NM_EXTN_A
|
||||
LD (NM_EXTN),HL
|
||||
LD HL,NM_DRIVE_A
|
||||
LD (NM_DRIVE),HL
|
||||
EXX
|
||||
INC B
|
||||
DEC B
|
||||
JR Z,.FULL ;0 ; à §®¡à âì áâபã
|
||||
DEC B
|
||||
JR Z,.GET_DRIVE ;1 ; ¢ë¤¥«¨âì ¨¬ï ¤¨áª
|
||||
DEC B
|
||||
JR Z,.GET_PATH ;2 ; ¢ë¤¥«¨âì ¤¨à¥ªâ®à¨î
|
||||
DEC B
|
||||
JR Z,.GET_NAME ;3 ; ¢ë¤¥«¨âì ¨¬ï ä ©«
|
||||
DEC B
|
||||
JR Z,.GET_TYPE ;4 ; ¢ë¤¥«¨âì à áè¨à¥¨¥ ä ©«
|
||||
DEC B
|
||||
JR Z,.GET_ALL_EX ;5 ; ¢ë¤¥«¨âì ¤¨áª, ¯ãâì, ä ©« ¨ à áè.
|
||||
DEC B
|
||||
JR Z,.EX_RESR ;6 ; § १¥à¢¨à®¢ ®
|
||||
DEC B
|
||||
JP Z,GSWITCH ;7 ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬-áâப¨
|
||||
DEC B
|
||||
JP Z,GetName ;8 ; ¯à¥®¡à. ¨¬ï 11 -> 8.3 ä®à¬ â
|
||||
DEC B
|
||||
JP Z,MASK.custom ;9 ; ¯à¥®¡à. ¨¬ï 8.3 -> 11 ä®à¬ â
|
||||
.EX_RESR: LD A,DSS_Error.sys.INVALID_FUNCTION
|
||||
SCF
|
||||
RET
|
||||
; ‚뤥«¨âì ¨¬ï ¤¨áª
|
||||
.GET_DRIVE: LD (NM_DRIVE),DE
|
||||
CALL .FULL
|
||||
RET C
|
||||
LD DE,(NM_DRIVE)
|
||||
LD A,(DE)
|
||||
DEC A
|
||||
CP #FF
|
||||
RET Z
|
||||
CP "A"-1
|
||||
JR C,.GD_error
|
||||
CP "Z"
|
||||
JR NC,.GD_error
|
||||
SUB "A"-1
|
||||
RET
|
||||
;
|
||||
.GD_error: LD A,DSS_Error.sys.INVALID_DRIVE
|
||||
SCF
|
||||
RET
|
||||
|
||||
; ‚뤥«¨âì ¤¨à¥ªâ®à¨î
|
||||
.GET_PATH: LD (NM_PATH),DE
|
||||
JR .FULL
|
||||
|
||||
; ‚뤥«¨âì ¨¬ï ä ©«
|
||||
.GET_NAME: LD (NM_NAME),DE
|
||||
JR .FULL
|
||||
|
||||
; ‚뤥«¨âì à áè¨à¥¨¥ ä ©«
|
||||
.GET_TYPE: LD (NM_EXTN),DE
|
||||
JR .FULL
|
||||
; ‚뤥«¨âì ¤¨áª, ¯ãâì, ä ©« ¨ à áè.
|
||||
.GET_ALL_EX: EX DE,HL
|
||||
LD C,(HL)
|
||||
INC HL
|
||||
LD B,(HL)
|
||||
INC HL
|
||||
LD (NM_DRIVE),BC
|
||||
LD C,(HL)
|
||||
INC HL
|
||||
LD B,(HL)
|
||||
INC HL
|
||||
LD (NM_PATH),BC
|
||||
LD C,(HL)
|
||||
INC HL
|
||||
LD B,(HL)
|
||||
INC HL
|
||||
LD (NM_NAME),BC
|
||||
LD C,(HL)
|
||||
INC HL
|
||||
LD B,(HL)
|
||||
LD (NM_EXTN),BC
|
||||
EX DE,HL
|
||||
;JR EX_FULL
|
||||
; <20> §®¡à âì áâபã
|
||||
.FULL: EX AF,AF'
|
||||
EXX
|
||||
XOR A
|
||||
LD HL,(NM_PATH)
|
||||
LD (HL),A
|
||||
LD HL,(NM_NAME) ; ¤à¥á ¡ãä¥à ¯®¤ ¨¬ï ä ©«
|
||||
LD (HL),A
|
||||
LD HL,(NM_EXTN)
|
||||
LD (HL),A
|
||||
LD HL,(NM_DRIVE)
|
||||
LD (HL),A
|
||||
EXX
|
||||
EX AF,AF'
|
||||
.PAT0: LD DE,TMPBUF
|
||||
LD BC,#0D01 ;!HARDCODE áç¥â稪¨
|
||||
.PAT1: LD A,(HL)
|
||||
CALL UPPER ; a..z -> A..Z
|
||||
LD (DE),A
|
||||
INC HL
|
||||
INC DE
|
||||
INC C ; ++áç¥â稪
|
||||
CP '\'
|
||||
JR Z,.PATH_YEP
|
||||
CP ":"
|
||||
JR Z,.DRIVE_YEP
|
||||
CP "!"
|
||||
JR C,.NAME_YEP
|
||||
CP "?"
|
||||
JR Z,.GLOBP1
|
||||
CP "*"
|
||||
JR Z,.GLOBP1
|
||||
.PAT2: DJNZ .PAT1
|
||||
LD A,DSS_Error.sys.INVALID_NAME
|
||||
SCF
|
||||
RET
|
||||
;
|
||||
.GLOBP1: EX AF,AF'
|
||||
SET GLOB_PR,A
|
||||
EX AF,AF'
|
||||
JR .PAT2
|
||||
;
|
||||
.NAME_YEP: LD A,2
|
||||
CP C
|
||||
JR Z,.NOFNAME
|
||||
PUSH HL
|
||||
LD HL,TMPBUF
|
||||
LD DE,(NM_NAME) ; ¤à¥á ¡ãä¥à ¯®¤ ¨¬ï ä ©«
|
||||
LD B,0
|
||||
DEC C
|
||||
DEC C
|
||||
LD A,C
|
||||
LDIR
|
||||
LD C,A
|
||||
XOR A
|
||||
LD (DE),A
|
||||
LD HL,(NM_NAME)
|
||||
LD A,"."
|
||||
CPIR
|
||||
JR NZ,.NOEXTN
|
||||
LD C,3
|
||||
LD DE,(NM_EXTN)
|
||||
.EXTSK0: LD A,(HL)
|
||||
OR A
|
||||
JR NZ,.EXTSK1
|
||||
LD A,' '
|
||||
DEC HL
|
||||
.EXTSK1: LD (DE),A
|
||||
INC HL
|
||||
INC DE
|
||||
DEC C
|
||||
JR NZ,.EXTSK0
|
||||
XOR A
|
||||
LD (DE),A
|
||||
EX AF,AF'
|
||||
SET EXTN_PR,A ; 㪠§ ® à áè. ä ©«
|
||||
EX AF,AF'
|
||||
.NOEXTN: EX AF,AF'
|
||||
SET NAM_PR,A ; 㪠§ ® ¨¬ï ä ©«
|
||||
EX AF,AF'
|
||||
POP HL
|
||||
.NOFNAME: EX AF,AF'
|
||||
AND A
|
||||
RET
|
||||
;
|
||||
.DRIVE_YEP: XOR A
|
||||
LD (DE),A
|
||||
PUSH HL
|
||||
LD HL,TMPBUF
|
||||
LD DE,(NM_DRIVE)
|
||||
LD B,0
|
||||
LDIR
|
||||
POP HL
|
||||
EX AF,AF'
|
||||
SET DRIV_PR,A ; 㪠§ ® ¨¬ï ¤¨áª
|
||||
EX AF,AF'
|
||||
JP .PAT0
|
||||
;
|
||||
.PATH_YEP: XOR A
|
||||
LD (DE),A
|
||||
PUSH HL
|
||||
PUSH BC
|
||||
LD HL,(NM_PATH)
|
||||
LD BC,#00FF ; !FIXIT £«ã¡¨ ¡ãä¥à ¥ § ¢¨á¨â ®â CurrentDirectory.DEPTH
|
||||
CPIR
|
||||
DEC HL
|
||||
EX DE,HL
|
||||
LD HL,TMPBUF ; 12 ¯à®¡¥«®¢
|
||||
POP BC
|
||||
LD B,0
|
||||
LDIR
|
||||
POP HL
|
||||
EX AF,AF'
|
||||
SET PATH_PR,A
|
||||
EX AF,AF'
|
||||
JP .PAT0
|
||||
;!TODO ¯¥à¥¥áâ¨/§ ¬¥¨âì ®¡é¨©
|
||||
TMPBUF: DB " ",#00 ; 12 ¯à®¡¥«®¢
|
||||
NM_DRIVE: DW NM_DRIVE_A
|
||||
NM_NAME: DW NM_NAME_A
|
||||
NM_EXTN: DW NM_EXTN_A
|
||||
NM_PATH: DW NM_PATH_A
|
||||
NM_DRIVE_A: BLOCK 9,0
|
||||
NM_NAME_A: DB " ",#00 ; 12 ¯à®¡¥«®¢
|
||||
NM_EXTN_A: DB " ",0
|
||||
NM_PATH_A EQU CORE_BUFFERS.BUFFER ;DS 256 ;!!!!! shared buffer
|
||||
|
||||
|
||||
10
DSS/API/FreeMem.asm
Normal file
10
DSS/API/FreeMem.asm
Normal file
@ -0,0 +1,10 @@
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
; ”ãªæ¨ï #3C. ˆä®à¬ æ¨ï ® ¯ ¬ïâ¨.
|
||||
;
|
||||
; ¢å®¤: ¥â
|
||||
; ¢ë室: HL - ®¡é¥¥ ª®«-¢® áâà ¨æ
|
||||
; BC - ª®«-¢® ᢮¡. áâà ¨æ
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
FREEMEM: LD C,BIOS.GetMemSize
|
||||
JP ToBIOS
|
||||
;
|
||||
31
DSS/API/GSwitch.asm
Normal file
31
DSS/API/GSwitch.asm
Normal file
@ -0,0 +1,31 @@
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
; ”ãªæ¨ï #43. ‚뤥«¨âì ¯ à ¬¥âà ª®¬ ¤®© áâப¨.
|
||||
;
|
||||
; ¢å®¤: HL - 㪠§ â¥«ì ª®¬ ¤®© áâப¨
|
||||
; DE - ¡ãä¥à ¤«ï ¢ë¤¥«. ¯ à ¬¥âà
|
||||
; ¢ë室: HL - 㪠§ ⥫ì á«¥¤. ¯ à ¬¥âà ª®¬-áâப¨
|
||||
; CF=0 - ª®¥æ áâப¨ ¥ ¤®á⨣ãâ (¥áâì ¤à㣨¥ ¯ à ¬¥âàë)
|
||||
; CF=1 - ª®¥æ áâப¨ (¢ ¡ãä¥à ¯¥à¥¥áñ ¯®á«¥¤¨© ¯ à ¬¥âà ¨«¨ ®«ì)
|
||||
;
|
||||
;ENTRY: HL - COMMAND LINE
|
||||
; DE - SWITCH BUFFER
|
||||
;EXIT: BUFFER
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
GSWITCH: XOR A
|
||||
LD (DE),A
|
||||
.loop1: LD A,(HL)
|
||||
INC HL
|
||||
CP " "
|
||||
RET C
|
||||
JR Z,.loop1
|
||||
.loop2: LD (DE),A
|
||||
LD A,(HL)
|
||||
INC HL
|
||||
INC DE
|
||||
CP " "+1
|
||||
JR NC,.loop2
|
||||
CP " "
|
||||
LD A,0
|
||||
LD (DE),A
|
||||
RET
|
||||
;
|
||||
20
DSS/API/GetMem.asm
Normal file
20
DSS/API/GetMem.asm
Normal file
@ -0,0 +1,20 @@
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
; ”ãªæ¨ï #3D. ‚뤥«¥¨¥ ¡«®ª ¯ ¬ïâ¨.
|
||||
;
|
||||
; ¢å®¤: B - à §¬¥à ¡«®ª ¢ áâà ¨æ å ¯® 16kB
|
||||
; ¢ë室: A - ¨¤¥â¨ä¨ª â®à ¡«®ª ¯ ¬ïâ¨, ¥á«¨ CF=0
|
||||
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
GETMEM: LD C,BIOS.GetMem
|
||||
RST ToBIOS
|
||||
LD E,A
|
||||
LD A,DSS_Error.sys.NOT_ENOUGH_MEMORY
|
||||
RET C
|
||||
LD D,#00
|
||||
LD HL,MEMTAB ; ¬ áᨢ ᯨ᪠¢ë¤¥«. áâà ¨æ
|
||||
ADD HL,DE
|
||||
LD A,(TASK) ; ã஢¥ì ⥪ã饩 ¯à®£à ¬¬ë
|
||||
LD (HL),A
|
||||
LD A,E
|
||||
;AND A
|
||||
RET
|
||||
27
DSS/API/RetMem.asm
Normal file
27
DSS/API/RetMem.asm
Normal file
@ -0,0 +1,27 @@
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
; ”ãªæ¨ï #3E. Žá¢®¡®¦¤¥¨¥ ¡«®ª ¯ ¬ïâ¨.
|
||||
;
|
||||
; ¢å®¤: A - ¨¤¥â¨ä¨ª â®à ¡«®ª ¯ ¬ïâ¨
|
||||
; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
RETMEM: LD E,A
|
||||
LD D,#00
|
||||
LD HL,MEMTAB ; ¬ áᨢ ᯨ᪠¢ë¤¥«. áâà ¨æ
|
||||
ADD HL,DE
|
||||
LD A,(TASK) ; ã஢¥ì ⥪ã饩 ¯à®£à ¬¬ë
|
||||
CP (HL)
|
||||
LD A,DSS_Error.sys.INVALID_MEMORY_HND
|
||||
SCF
|
||||
RET NZ
|
||||
;PUSH DE
|
||||
LD A,E
|
||||
LD C,BIOS.FreeMem
|
||||
RST ToBIOS
|
||||
;POP DE
|
||||
LD A,DSS_Error.sys.INVALID_MEMORY_HND
|
||||
RET C
|
||||
LD HL,MEMTAB
|
||||
ADD HL,DE
|
||||
XOR A
|
||||
LD (HL),A
|
||||
RET
|
||||
72
DSS/API/SetMem.asm
Normal file
72
DSS/API/SetMem.asm
Normal file
@ -0,0 +1,72 @@
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
; ”ãªæ¨ï #3F. ˆ§¬¥¥¨¥ ¡«®ª ¯ ¬ïâ¨.
|
||||
;
|
||||
; ¢å®¤: A - ¨¤¥â¨ä¨ª â®à ¡«®ª ¯ ¬ïâ¨
|
||||
; B - ®¢ë© à §¬¥à ¡«®ª
|
||||
; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
SETMEM: LD E,A
|
||||
LD D,#00
|
||||
LD HL,MEMTAB
|
||||
ADD HL,DE
|
||||
LD A,(TASK)
|
||||
CP (HL)
|
||||
LD A,DSS_Error.sys.INVALID_MEMORY_HND
|
||||
SCF
|
||||
RET NZ
|
||||
LD D,B
|
||||
PUSH DE
|
||||
LD A,E
|
||||
CALL .SIZEBLK
|
||||
POP DE
|
||||
LD A,DSS_Error.sys.INVALID_MEMORY_HND
|
||||
RET C
|
||||
LD A,B
|
||||
CP D
|
||||
RET Z
|
||||
JR C,.INCMEM
|
||||
; DECMEM
|
||||
LD B,D
|
||||
LD A,E
|
||||
LD C,BIOS.DivMemBlocks
|
||||
RST ToBIOS
|
||||
LD A,B
|
||||
LD C,BIOS.FreeMem
|
||||
RST ToBIOS
|
||||
XOR A
|
||||
RET
|
||||
; „®¡ ¢¨âì áâà ¨æ ¯ ¬ï⨠ª ¡«®ªã
|
||||
.INCMEM:
|
||||
LD A,D
|
||||
SUB B
|
||||
LD B,A
|
||||
LD C,E
|
||||
PUSH BC
|
||||
LD C,BIOS.GetMem
|
||||
RST ToBIOS
|
||||
POP BC
|
||||
LD B,A
|
||||
LD A,DSS_Error.sys.NOT_ENOUGH_MEMORY
|
||||
RET C
|
||||
LD A,C
|
||||
LD C,BIOS.MergeMemBlocks
|
||||
RST ToBIOS
|
||||
XOR A
|
||||
RET
|
||||
;
|
||||
.SIZEBLK:
|
||||
LD B,#FF
|
||||
LD C,A
|
||||
.loop: INC B
|
||||
PUSH BC
|
||||
LD A,C
|
||||
LD C,BIOS.GetMemPage
|
||||
RST ToBIOS
|
||||
POP BC
|
||||
JR NC,.loop
|
||||
OR A
|
||||
SCF
|
||||
RET Z
|
||||
XOR A
|
||||
RET
|
||||
;
|
||||
96
DSS/API/SetWin.asm
Normal file
96
DSS/API/SetWin.asm
Normal file
@ -0,0 +1,96 @@
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
; ”ãªæ¨ï #38. <20>®¤ª«î票¥ áâà ¨æë ¯ ¬ïâ¨.
|
||||
;
|
||||
; ¢å®¤: A - ¨¤¥â¨ä. ¡«®ª ¯ ¬ïâ¨
|
||||
; B - ®¬¥à áâà ¨æë ¢ ¡«®ª¥ (0,1,2,..)
|
||||
; H - ¡¨âë 6 ¨ 7 § ¤ îâ ®¬¥à ®ª , ¢ ª®â®à®¥ ¡ã¤¥â ¯®¤ª«. áâà ¨æ
|
||||
; ¢ë室: A - ®¬¥à áâà ¨æë, ¥á«¨ CF=0
|
||||
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||||
; if B = 0FFh, then logical page number got from DE
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
SETWIN: LD C,A
|
||||
LD A,H
|
||||
AND %1100'0000
|
||||
JR NZ,.no_error
|
||||
OR %0100'0000
|
||||
.no_error: RRCA
|
||||
OR %100'0010
|
||||
LD H,A ;SLOT number
|
||||
LD A,C
|
||||
.ALL: LD C,BIOS.GetMemPage
|
||||
EX DE,HL
|
||||
RST ToBIOS
|
||||
EX DE,HL
|
||||
RET C
|
||||
LD C,H ;SLOT number
|
||||
IN B,(C)
|
||||
OUT (C),A
|
||||
LD A,B
|
||||
RET
|
||||
; SETWIN: BIT 7,H ; if #8000 or high?
|
||||
; JR Z,SETWIN1 ; no, go to open in SLOT1
|
||||
; BIT 6,H ; if #C000 or high?
|
||||
; JR Z,SETWIN2 ; no, go to open in SLOT2
|
||||
; JR SETWIN3 ; yes, go to open in SLOT3
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
; ”ãªæ¨ï #39. <20>®¤ª«î票¥ áâà ¨æë ¯ ¬ï⨠¢ ¯¥à¢®¥ ®ª®.
|
||||
;
|
||||
; ¢å®¤: A - ¨¤¥â¨ä. ¡«®ª ¯ ¬ïâ¨
|
||||
; B - ®¬¥à áâà ¨æë ¢ ¡«®ª¥ (0,1,2,..)
|
||||
; ¢ë室: A - ®¬¥à áâà ¨æë, ¥á«¨ CF=0
|
||||
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
SETWIN1: LD H,SLOT1
|
||||
JR SETWIN.ALL
|
||||
|
||||
; SETWIN1: LD C,BIOS.GetMemPage
|
||||
; EX DE,HL
|
||||
; RST ToBIOS
|
||||
; EX DE,HL
|
||||
; RET C
|
||||
; LD C,SLOT1
|
||||
; IN B,(C)
|
||||
; OUT (C),A
|
||||
; LD A,B
|
||||
; RET
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
; ”ãªæ¨ï #3A. <20>®¤ª«î票¥ áâà ¨æë ¯ ¬ï⨠¢® ¢â®à®¥ ®ª®.
|
||||
;
|
||||
; ¢å®¤: A - ¨¤¥â¨ä. ¡«®ª ¯ ¬ïâ¨
|
||||
; B - ®¬¥à áâà ¨æë ¢ ¡«®ª¥ (0,1,2,..)
|
||||
; ¢ë室: A - ®¬¥à áâà ¨æë, ¥á«¨ CF=0
|
||||
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
SETWIN2: LD H,SLOT2
|
||||
JR SETWIN.ALL
|
||||
; SETWIN2 LD C,BIOS.GetMemPage
|
||||
; EX DE,HL
|
||||
; RST ToBIOS
|
||||
; EX DE,HL
|
||||
; RET C
|
||||
; LD C,SLOT2
|
||||
; IN B,(C)
|
||||
; OUT (C),A
|
||||
; LD A,B
|
||||
; RET
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
; ”ãªæ¨ï #3B. <20>®¤ª«î票¥ áâà ¨æë ¯ ¬ï⨠¢ âà¥âì¥ ®ª®.
|
||||
;
|
||||
; ¢å®¤: A - ¨¤¥â¨ä. ¡«®ª ¯ ¬ïâ¨
|
||||
; B - ®¬¥à áâà ¨æë ¢ ¡«®ª¥ (0,1,2,..)
|
||||
; ¢ë室: A - ®¬¥à áâà ¨æë, ¥á«¨ CF=0
|
||||
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
SETWIN3: LD H,SLOT3
|
||||
JR SETWIN.ALL
|
||||
; SETWIN3: LD C,BIOS.GetMemPage
|
||||
; EX DE,HL
|
||||
; RST ToBIOS
|
||||
; EX DE,HL
|
||||
; RET C
|
||||
; LD C,SLOT3
|
||||
; IN B,(C)
|
||||
; OUT (C),A
|
||||
; LD A,B
|
||||
; RET
|
||||
@ -367,12 +367,12 @@ RAMDTBL EQU LOGDRV + LOGDRV.Size
|
||||
;
|
||||
ENDMODULE
|
||||
////////////////////////////////////////////////////////////////////////;
|
||||
DISPLAY "DEVICE start: ", /H, DEVICE
|
||||
DISPLAY "Old DEVICE start: ", /H, OLD_TABLES.DEVICE
|
||||
DISPLAY "LOGDRV start: ", /H, LOGDRV
|
||||
DISPLAY "Old LOGDRV start: ", /H, OLD_TABLES.LOGDRV
|
||||
DISPLAY "RAMDTBL start: ", /H, RAMDTBL
|
||||
DISPLAY "Old RAMDTBL start: ", /H, OLD_TABLES.RAMDTBL
|
||||
;DISPLAY "DEVICE start: ", /H, DEVICE
|
||||
;DISPLAY "Old DEVICE start: ", /H, OLD_TABLES.DEVICE
|
||||
;DISPLAY "LOGDRV start: ", /H, LOGDRV
|
||||
;DISPLAY "Old LOGDRV start: ", /H, OLD_TABLES.LOGDRV
|
||||
;DISPLAY "RAMDTBL start: ", /H, RAMDTBL
|
||||
;DISPLAY "Old RAMDTBL start: ", /H, OLD_TABLES.RAMDTBL
|
||||
|
||||
;
|
||||
;DRV_TEMP_BUFFER:
|
||||
|
||||
@ -285,8 +285,10 @@ CLEAR_BUFFER_AND_INIT_PROC:
|
||||
;R07 JP INIT2 ;R03
|
||||
; DS $/256+1*256-$,0 c:\bin\menu
|
||||
|
||||
;----------------------------------------------------------------------;
|
||||
MEMTAB: BLOCK 256,0
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
MEMTAB BLOCK 256,0
|
||||
_mInfoALIGN 256,0
|
||||
;------------------------------------------------------------------------------------------------------------------------;
|
||||
GO_ZERO EQU #0000
|
||||
@ -386,6 +388,9 @@ CurrentDirectory: DB '\'
|
||||
.DEPTH: EQU DIRECTORY_PATH_LENGTH
|
||||
BLOCK CurrentDirectory.DEPTH,0 ; ¥ .DEPTH-1 ç⮡ ¡ë« 0 ¢ ª®æ¥
|
||||
;
|
||||
; !TODO ¤®¯¨«¨âì WorkPath?
|
||||
;WorkPath: DB 'X'
|
||||
; DB ':'
|
||||
WorkDirectory: DB '\'
|
||||
.DEPTH: EQU DIRECTORY_PATH_LENGTH
|
||||
BLOCK WorkDirectory.DEPTH,0 ; ¥ .DEPTH-1 ç⮡ ¡ë« 0 ¢ ª®æ¥
|
||||
@ -411,12 +416,12 @@ SECBUF EQU BUFFER ;!TODO
|
||||
CLEAR_ZONE.size EQU _sBuffers
|
||||
|
||||
ASSERT (CORE_BUFFERS.BUFFERSplace+_sBuffers)<#4000, "Warning!!! OUT OF SLOT0"
|
||||
DISPLAY "--- --- --- --- --- --- --- ---"
|
||||
DISPLAY "BUFFERSplace.BootSector ",/H,CORE_BUFFERS.BUFFERSplace.BootSector
|
||||
DISPLAY "BootSector ", /H, CORE_BUFFERS.BootSector
|
||||
DISPLAY "EXEBUFF ", /H, CORE_BUFFERS.EXEBUFF
|
||||
DISPLAY "Size ", /H, CORE_BUFFERS.EXEBUFF - CORE_BUFFERS.BootSector
|
||||
DISPLAY "--- --- --- --- --- --- --- ---"
|
||||
;DISPLAY "--- --- --- --- --- --- --- ---"
|
||||
;DISPLAY "BUFFERSplace.BootSector ",/H,CORE_BUFFERS.BUFFERSplace.BootSector
|
||||
;DISPLAY "BootSector ", /H, CORE_BUFFERS.BootSector
|
||||
;DISPLAY "EXEBUFF ", /H, CORE_BUFFERS.EXEBUFF
|
||||
;DISPLAY "Size ", /H, CORE_BUFFERS.EXEBUFF - CORE_BUFFERS.BootSector
|
||||
;DISPLAY "--- --- --- --- --- --- --- ---"
|
||||
|
||||
|
||||
/*
|
||||
@ -561,7 +566,7 @@ DEPLOY: ;Allocate memory
|
||||
OUT (SLOT3),A
|
||||
|
||||
SET_PAGE_X DRVPAGE
|
||||
\
|
||||
|
||||
PUSH AF
|
||||
LD HL,DRV_CONTENT
|
||||
LD DE,#C000
|
||||
@ -592,8 +597,8 @@ DRV_CONTENT:
|
||||
ENT
|
||||
DRV_CONTENT.SIZE EQU $-DRV_CONTENT
|
||||
|
||||
DISPLAY " END ADDRESS: ",/H,$
|
||||
// ASSERT $<#4001,'-> Memory leack!!!';
|
||||
DISPLAY "END ADDRESS: ",/H,$
|
||||
ASSERT $<#4001,'-> Memory leack!!!';
|
||||
;[END]
|
||||
|
||||
;
|
||||
|
||||
1667
DSS/EXECUTE.ASM
1667
DSS/EXECUTE.ASM
File diff suppressed because it is too large
Load Diff
@ -2,6 +2,10 @@
|
||||
DEFINE TEST_FEATURE 0
|
||||
;
|
||||
|
||||
;
|
||||
DEFINE MINIMUM_EXE_VERSION 1
|
||||
;
|
||||
|
||||
;
|
||||
DEFINE SHORT_RSTx10_TABLE 0 ; 㪮à®ç¥ ï â ¡«¨æ äãªæ¨© rst #10. 96 äãªæ¨©.
|
||||
DEFINE COMPILE_UNUSED_CODE 0
|
||||
@ -31,35 +35,35 @@ FAT_TYPE:
|
||||
.x32 EQU 32
|
||||
.x16 EQU 16
|
||||
.x12 EQU 12
|
||||
/*
|
||||
define _bit (1<?((FAT_CACHE.Sectors-1)
|
||||
define _shift _bit&1)) + _bit&2)) + _bit&4)) + _bit&8)) + _bit&16)) + _bit&32)) + _bit&64)) + _bit&128))
|
||||
;
|
||||
FAT_CACHE:
|
||||
.Size EQU #2000
|
||||
.Sector_Size EQU #200
|
||||
.Sectors EQU .Size / .Sector_Size
|
||||
; for FAT16
|
||||
.bytes_record_16 EQU 2
|
||||
.Degree_16 EQU _shift
|
||||
.Size_Mask_16 EQU high (.Size/.bytes_record_16 - 1)
|
||||
.Part_Mask_16 EQU ((1<<(.bytes_record_16*8)) / (.Size/2))-1
|
||||
; for FAT12 ;!TODO
|
||||
.bytes_record_12 EQU 2
|
||||
.Degree_12 EQU _shift
|
||||
.Size_Mask_12 EQU high (.Size/.bytes_record_12 - 1)
|
||||
.Part_Mask_12 EQU ((1<<(.bytes_record_12*8)) / (.Size/2))-1
|
||||
DISPLAY "bytes_record_16 = ",/H,.bytes_record_16
|
||||
DISPLAY "Degree_16 = ",/H,.Degree_16
|
||||
DISPLAY "Size_Mask_16 = ",/H,.Size_Mask_16
|
||||
DISPLAY "Part_Mask_16 = ",/H,.Part_Mask_16
|
||||
DISPLAY "bytes_record_12 = ",/H,.bytes_record_12
|
||||
DISPLAY "Degree_12 = ",/H,.Degree_12
|
||||
DISPLAY "Size_Mask_12 = ",/H,.Size_Mask_12
|
||||
DISPLAY "Part_Mask_12 = ",/H,.Part_Mask_12
|
||||
undefine _bit
|
||||
undefine _shift
|
||||
*/
|
||||
|
||||
; define _bit (1<?((FAT_CACHE.Sectors-1)
|
||||
; define _shift _bit&1)) + _bit&2)) + _bit&4)) + _bit&8)) + _bit&16)) + _bit&32)) + _bit&64)) + _bit&128))
|
||||
; ;
|
||||
; FAT_CACHE:
|
||||
; .Size EQU #2000
|
||||
; .Sector_Size EQU #200
|
||||
; .Sectors EQU .Size / .Sector_Size
|
||||
; ; for FAT16
|
||||
; .bytes_record_16 EQU 2
|
||||
; .Degree_16 EQU _shift
|
||||
; .Size_Mask_16 EQU high (.Size/.bytes_record_16 - 1)
|
||||
; .Part_Mask_16 EQU ((1<<(.bytes_record_16*8)) / (.Size/2))-1
|
||||
; ; for FAT12 ;!TODO
|
||||
; .bytes_record_12 EQU 2
|
||||
; .Degree_12 EQU _shift
|
||||
; .Size_Mask_12 EQU high (.Size/.bytes_record_12 - 1)
|
||||
; .Part_Mask_12 EQU ((1<<(.bytes_record_12*8)) / (.Size/2))-1
|
||||
; DISPLAY "bytes_record_16 = ",/H,.bytes_record_16
|
||||
; DISPLAY "Degree_16 = ",/H,.Degree_16
|
||||
; DISPLAY "Size_Mask_16 = ",/H,.Size_Mask_16
|
||||
; DISPLAY "Part_Mask_16 = ",/H,.Part_Mask_16
|
||||
; DISPLAY "bytes_record_12 = ",/H,.bytes_record_12
|
||||
; DISPLAY "Degree_12 = ",/H,.Degree_12
|
||||
; DISPLAY "Size_Mask_12 = ",/H,.Size_Mask_12
|
||||
; DISPLAY "Part_Mask_12 = ",/H,.Part_Mask_12
|
||||
; undefine _bit
|
||||
; undefine _shift
|
||||
|
||||
FAT_CACHE:
|
||||
.Sector_Size EQU #200
|
||||
.Degree EQU 4
|
||||
|
||||
@ -36,6 +36,7 @@
|
||||
;R01 19-11-2002 DNS ADD ENVIRONMENT %VARIABLE% IN ECHO
|
||||
;=====================================================================[]
|
||||
DEFINE SHELL_COMPILATION 1
|
||||
DEFINE App_EXE_Version 1
|
||||
|
||||
includelua 'Shared_includes/lua/Functions.lua'
|
||||
include 'shared_includes/constants/bios_equ.inc'
|
||||
|
||||
@ -1 +1 @@
|
||||
Subproject commit 68681fbc50da463f1debae860e6db64603886d39
|
||||
Subproject commit 3941b4176ff1c200fe0cca11bc5bbe7de1b69b68
|
||||
Loading…
Reference in New Issue
Block a user