App_EXE_Version - экспериментальная фишка для запуска старых приложений без Current Dir

This commit is contained in:
Anatoliy Belyanskiy 2024-03-27 03:36:05 +10:00
parent 69829e359a
commit 32a1547722
16 changed files with 1249 additions and 1213 deletions

View File

@ -144,6 +144,10 @@ MSG0: DB 0
MSGE DB 0 MSGE DB 0
CONTINUE: CONTINUE:
;!TEST 26/03/2024
LD SP,#C000
;
LD HL,0 LD HL,0
LD (DISKL),HL LD (DISKL),HL
LD (DISKH),HL LD (DISKH),HL
@ -160,7 +164,7 @@ CONTINUE:
LD HL,(FCLUSTR) LD HL,(FCLUSTR)
LD DE,#C000 LD DE,#C000
CALL FLOAD CALL FLOAD ; § £à㧪 
DI DI
XOR A XOR A
OUT (SYS_PORT.OFF),A OUT (SYS_PORT.OFF),A
@ -448,6 +452,7 @@ IBMDOS_ LD A,(IY+_sBOOT_SECTOR_PARAMS.DRIVE_TYPE)
LD HL,#0FFF LD HL,#0FFF
JR BPB_FAT JR BPB_FAT
; ¯®¨áª system.dos
GETROOT: LD HL,(DIR_FRH) GETROOT: LD HL,(DIR_FRH)
LD IX,(DIR_FRL) LD IX,(DIR_FRL)
LD BC,(DISKL) LD BC,(DISKL)
@ -514,6 +519,7 @@ SEARCH2: LD A,(DE)
; HL - CLUSTER ; HL - CLUSTER
; DE - ADDRESS ; DE - ADDRESS
;!TODO ᤥ« âì âãâ ®¯à¥¤¥«¥­¨¥ à §¬¥à  SYSTEM.DOS ¨ ¢®§¬®¦­®áâì § £à㧨âì ¡®«ìè¥ 1 áâà ­¨æë
FLOAD: LD (READMEM),DE FLOAD: LD (READMEM),DE
LD_FILE: PUSH HL LD_FILE: PUSH HL
CALL NSECTOR CALL NSECTOR

View File

@ -57,6 +57,14 @@
include 'API/DosName.asm' include 'API/DosName.asm'
include 'API/Read.asm' include 'API/Read.asm'
include 'API/Write.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/Environ.ASM'
include 'API/Lib_Sub.asm' include 'API/Lib_Sub.asm'

101
DSS/API/AppInfo.asm Normal file
View 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
View 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
View File

@ -0,0 +1,10 @@
//////////////////////////////////////////////////////////////////////
; ”ã­ªæ¨ï #3C. ˆ­ä®à¬ æ¨ï ® ¯ ¬ïâ¨.
;
; ¢å®¤: ­¥â
; ¢ë室: HL - ®¡é¥¥ ª®«-¢® áâà ­¨æ
; BC - ª®«-¢® ᢮¡. áâà ­¨æ
//////////////////////////////////////////////////////////////////////
FREEMEM: LD C,BIOS.GetMemSize
JP ToBIOS
;

31
DSS/API/GSwitch.asm Normal file
View 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
View 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
View 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
View 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
View 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

View File

@ -367,12 +367,12 @@ RAMDTBL EQU LOGDRV + LOGDRV.Size
; ;
ENDMODULE ENDMODULE
////////////////////////////////////////////////////////////////////////; ////////////////////////////////////////////////////////////////////////;
DISPLAY "DEVICE start: ", /H, DEVICE ;DISPLAY "DEVICE start: ", /H, DEVICE
DISPLAY "Old DEVICE start: ", /H, OLD_TABLES.DEVICE ;DISPLAY "Old DEVICE start: ", /H, OLD_TABLES.DEVICE
DISPLAY "LOGDRV start: ", /H, LOGDRV ;DISPLAY "LOGDRV start: ", /H, LOGDRV
DISPLAY "Old LOGDRV start: ", /H, OLD_TABLES.LOGDRV ;DISPLAY "Old LOGDRV start: ", /H, OLD_TABLES.LOGDRV
DISPLAY "RAMDTBL start: ", /H, RAMDTBL ;DISPLAY "RAMDTBL start: ", /H, RAMDTBL
DISPLAY "Old RAMDTBL start: ", /H, OLD_TABLES.RAMDTBL ;DISPLAY "Old RAMDTBL start: ", /H, OLD_TABLES.RAMDTBL
; ;
;DRV_TEMP_BUFFER: ;DRV_TEMP_BUFFER:

View File

@ -285,8 +285,10 @@ CLEAR_BUFFER_AND_INIT_PROC:
;R07 JP INIT2 ;R03 ;R07 JP INIT2 ;R03
; DS $/256+1*256-$,0 c:\bin\menu ; DS $/256+1*256-$,0 c:\bin\menu
;----------------------------------------------------------------------;
MEMTAB: BLOCK 256,0
;----------------------------------------------------------------------;
MEMTAB BLOCK 256,0
_mInfoALIGN 256,0 _mInfoALIGN 256,0
;------------------------------------------------------------------------------------------------------------------------; ;------------------------------------------------------------------------------------------------------------------------;
GO_ZERO EQU #0000 GO_ZERO EQU #0000
@ -386,6 +388,9 @@ CurrentDirectory: DB '\'
.DEPTH: EQU DIRECTORY_PATH_LENGTH .DEPTH: EQU DIRECTORY_PATH_LENGTH
BLOCK CurrentDirectory.DEPTH,0 ; ­¥ .DEPTH-1 ç⮡ ¡ë« 0 ¢ ª®­æ¥ BLOCK CurrentDirectory.DEPTH,0 ; ­¥ .DEPTH-1 ç⮡ ¡ë« 0 ¢ ª®­æ¥
; ;
; !TODO ¤®¯¨«¨âì WorkPath?
;WorkPath: DB 'X'
; DB ':'
WorkDirectory: DB '\' WorkDirectory: DB '\'
.DEPTH: EQU DIRECTORY_PATH_LENGTH .DEPTH: EQU DIRECTORY_PATH_LENGTH
BLOCK WorkDirectory.DEPTH,0 ; ­¥ .DEPTH-1 ç⮡ ¡ë« 0 ¢ ª®­æ¥ BLOCK WorkDirectory.DEPTH,0 ; ­¥ .DEPTH-1 ç⮡ ¡ë« 0 ¢ ª®­æ¥
@ -411,12 +416,12 @@ SECBUF EQU BUFFER ;!TODO
CLEAR_ZONE.size EQU _sBuffers CLEAR_ZONE.size EQU _sBuffers
ASSERT (CORE_BUFFERS.BUFFERSplace+_sBuffers)<#4000, "Warning!!! OUT OF SLOT0" ASSERT (CORE_BUFFERS.BUFFERSplace+_sBuffers)<#4000, "Warning!!! OUT OF SLOT0"
DISPLAY "--- --- --- --- --- --- --- ---" ;DISPLAY "--- --- --- --- --- --- --- ---"
DISPLAY "BUFFERSplace.BootSector ",/H,CORE_BUFFERS.BUFFERSplace.BootSector ;DISPLAY "BUFFERSplace.BootSector ",/H,CORE_BUFFERS.BUFFERSplace.BootSector
DISPLAY "BootSector ", /H, CORE_BUFFERS.BootSector ;DISPLAY "BootSector ", /H, CORE_BUFFERS.BootSector
DISPLAY "EXEBUFF ", /H, CORE_BUFFERS.EXEBUFF ;DISPLAY "EXEBUFF ", /H, CORE_BUFFERS.EXEBUFF
DISPLAY "Size ", /H, CORE_BUFFERS.EXEBUFF - CORE_BUFFERS.BootSector ;DISPLAY "Size ", /H, CORE_BUFFERS.EXEBUFF - CORE_BUFFERS.BootSector
DISPLAY "--- --- --- --- --- --- --- ---" ;DISPLAY "--- --- --- --- --- --- --- ---"
/* /*
@ -561,7 +566,7 @@ DEPLOY: ;Allocate memory
OUT (SLOT3),A OUT (SLOT3),A
SET_PAGE_X DRVPAGE SET_PAGE_X DRVPAGE
\
PUSH AF PUSH AF
LD HL,DRV_CONTENT LD HL,DRV_CONTENT
LD DE,#C000 LD DE,#C000
@ -592,8 +597,8 @@ DRV_CONTENT:
ENT ENT
DRV_CONTENT.SIZE EQU $-DRV_CONTENT DRV_CONTENT.SIZE EQU $-DRV_CONTENT
DISPLAY " END ADDRESS: ",/H,$ DISPLAY "END ADDRESS: ",/H,$
// ASSERT $<#4001,'-> Memory leack!!!'; ASSERT $<#4001,'-> Memory leack!!!';
;[END] ;[END]
; ;

File diff suppressed because it is too large Load Diff

View File

@ -2,6 +2,10 @@
DEFINE TEST_FEATURE 0 DEFINE TEST_FEATURE 0
; ;
;
DEFINE MINIMUM_EXE_VERSION 1
;
; ;
DEFINE SHORT_RSTx10_TABLE 0 ; 㪮à®ç¥­­ ï â ¡«¨æ  ä㭪権 rst #10. 96 ä㭪権. DEFINE SHORT_RSTx10_TABLE 0 ; 㪮à®ç¥­­ ï â ¡«¨æ  ä㭪権 rst #10. 96 ä㭪権.
DEFINE COMPILE_UNUSED_CODE 0 DEFINE COMPILE_UNUSED_CODE 0
@ -31,35 +35,35 @@ FAT_TYPE:
.x32 EQU 32 .x32 EQU 32
.x16 EQU 16 .x16 EQU 16
.x12 EQU 12 .x12 EQU 12
/*
define _bit (1<?((FAT_CACHE.Sectors-1) ; 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)) ; define _shift _bit&1)) + _bit&2)) + _bit&4)) + _bit&8)) + _bit&16)) + _bit&32)) + _bit&64)) + _bit&128))
; ; ;
FAT_CACHE: ; FAT_CACHE:
.Size EQU #2000 ; .Size EQU #2000
.Sector_Size EQU #200 ; .Sector_Size EQU #200
.Sectors EQU .Size / .Sector_Size ; .Sectors EQU .Size / .Sector_Size
; for FAT16 ; ; for FAT16
.bytes_record_16 EQU 2 ; .bytes_record_16 EQU 2
.Degree_16 EQU _shift ; .Degree_16 EQU _shift
.Size_Mask_16 EQU high (.Size/.bytes_record_16 - 1) ; .Size_Mask_16 EQU high (.Size/.bytes_record_16 - 1)
.Part_Mask_16 EQU ((1<<(.bytes_record_16*8)) / (.Size/2))-1 ; .Part_Mask_16 EQU ((1<<(.bytes_record_16*8)) / (.Size/2))-1
; for FAT12 ;!TODO ; ; for FAT12 ;!TODO
.bytes_record_12 EQU 2 ; .bytes_record_12 EQU 2
.Degree_12 EQU _shift ; .Degree_12 EQU _shift
.Size_Mask_12 EQU high (.Size/.bytes_record_12 - 1) ; .Size_Mask_12 EQU high (.Size/.bytes_record_12 - 1)
.Part_Mask_12 EQU ((1<<(.bytes_record_12*8)) / (.Size/2))-1 ; .Part_Mask_12 EQU ((1<<(.bytes_record_12*8)) / (.Size/2))-1
DISPLAY "bytes_record_16 = ",/H,.bytes_record_16 ; DISPLAY "bytes_record_16 = ",/H,.bytes_record_16
DISPLAY "Degree_16 = ",/H,.Degree_16 ; DISPLAY "Degree_16 = ",/H,.Degree_16
DISPLAY "Size_Mask_16 = ",/H,.Size_Mask_16 ; DISPLAY "Size_Mask_16 = ",/H,.Size_Mask_16
DISPLAY "Part_Mask_16 = ",/H,.Part_Mask_16 ; DISPLAY "Part_Mask_16 = ",/H,.Part_Mask_16
DISPLAY "bytes_record_12 = ",/H,.bytes_record_12 ; DISPLAY "bytes_record_12 = ",/H,.bytes_record_12
DISPLAY "Degree_12 = ",/H,.Degree_12 ; DISPLAY "Degree_12 = ",/H,.Degree_12
DISPLAY "Size_Mask_12 = ",/H,.Size_Mask_12 ; DISPLAY "Size_Mask_12 = ",/H,.Size_Mask_12
DISPLAY "Part_Mask_12 = ",/H,.Part_Mask_12 ; DISPLAY "Part_Mask_12 = ",/H,.Part_Mask_12
undefine _bit ; undefine _bit
undefine _shift ; undefine _shift
*/
FAT_CACHE: FAT_CACHE:
.Sector_Size EQU #200 .Sector_Size EQU #200
.Degree EQU 4 .Degree EQU 4

View File

@ -36,6 +36,7 @@
;R01 19-11-2002 DNS ADD ENVIRONMENT %VARIABLE% IN ECHO ;R01 19-11-2002 DNS ADD ENVIRONMENT %VARIABLE% IN ECHO
;=====================================================================[] ;=====================================================================[]
DEFINE SHELL_COMPILATION 1 DEFINE SHELL_COMPILATION 1
DEFINE App_EXE_Version 1
includelua 'Shared_includes/lua/Functions.lua' includelua 'Shared_includes/lua/Functions.lua'
include 'shared_includes/constants/bios_equ.inc' include 'shared_includes/constants/bios_equ.inc'

@ -1 +1 @@
Subproject commit 68681fbc50da463f1debae860e6db64603886d39 Subproject commit 3941b4176ff1c200fe0cca11bc5bbe7de1b69b68