mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 17:31:47 +03:00
some bug fixes with shell. Testing independed current dir
This commit is contained in:
parent
bd5eb85d7b
commit
f236cf5bcf
227
DSS/DOS5.ASM
227
DSS/DOS5.ASM
@ -29,7 +29,7 @@
|
|||||||
; B = 1 SET ATTRIB
|
; B = 1 SET ATTRIB
|
||||||
; OUTPUT: A - ATTRIB
|
; OUTPUT: A - ATTRIB
|
||||||
ATTRIB:
|
ATTRIB:
|
||||||
_mSavePath
|
_mSavePath 1
|
||||||
INC B
|
INC B
|
||||||
DEC B
|
DEC B
|
||||||
JP Z,RATTRIB
|
JP Z,RATTRIB
|
||||||
@ -48,7 +48,7 @@ RATTRIB XOR A
|
|||||||
POP BC
|
POP BC
|
||||||
RET C
|
RET C
|
||||||
LD A,B
|
LD A,B
|
||||||
AND A
|
;AND A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
WATTRIB PUSH AF
|
WATTRIB PUSH AF
|
||||||
@ -64,47 +64,29 @@ WATTRIB PUSH AF
|
|||||||
POP BC
|
POP BC
|
||||||
RET C
|
RET C
|
||||||
LD A,B
|
LD A,B
|
||||||
AND A
|
;AND A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00
|
|
||||||
; OUTPUT: A - FM
|
|
||||||
CREATE:
|
|
||||||
_mSavePath
|
|
||||||
AND #E7 ;R04 %76A00SHR = !FAT_ATTR
|
|
||||||
LD (ACCESS),A
|
|
||||||
LD (PATH0),HL
|
|
||||||
CALL GETWORD
|
|
||||||
RET C
|
|
||||||
LD HL,TMPNAME
|
|
||||||
LD DE,MASKARE
|
|
||||||
CALL MASK
|
|
||||||
RET C
|
|
||||||
CALL SEARCH
|
|
||||||
|
|
||||||
JR C,CREAT ;NO FILE, CREAT NEW.
|
|
||||||
CALL DELFILE ;FILE EXIST RECREAT
|
|
||||||
JP CREAT
|
|
||||||
|
|
||||||
; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00
|
; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00
|
||||||
; OUTPUT: A - FM
|
; OUTPUT: A - FM
|
||||||
CREAT_N:
|
CREATE: _mSavePath 0
|
||||||
_mSavePath
|
CALL .Prepare
|
||||||
AND #E7 ;R04 %76A00SHR = !FAT_ATTR
|
RET C
|
||||||
LD (ACCESS),A
|
CALL SEARCH
|
||||||
LD (PATH0),HL
|
CALL NC,DELFILE ;FILE EXIST RECREAT
|
||||||
CALL GETWORD
|
JR .DO
|
||||||
RET C
|
; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00
|
||||||
LD HL,TMPNAME
|
; OUTPUT: A - FM
|
||||||
LD DE,MASKARE
|
.NEW: _mSavePath 0
|
||||||
CALL MASK
|
CALL .Prepare
|
||||||
RET C
|
RET C
|
||||||
CALL SEARCH
|
CALL SEARCH
|
||||||
|
|
||||||
LD A,DSS_Error.sys.FILE_EXISTS
|
LD A,DSS_Error.sys.FILE_EXISTS
|
||||||
CCF
|
CCF
|
||||||
RET C
|
RET C
|
||||||
CREAT LD HL,MASKARE
|
;
|
||||||
|
.DO: LD HL,MASKARE
|
||||||
LD DE,HANDBUF
|
LD DE,HANDBUF
|
||||||
LD BC,11
|
LD BC,11
|
||||||
LDIR
|
LDIR
|
||||||
@ -112,10 +94,12 @@ CREAT LD HL,MASKARE
|
|||||||
LD A,(ACCESS)
|
LD A,(ACCESS)
|
||||||
LD (HL),A
|
LD (HL),A
|
||||||
INC HL
|
INC HL
|
||||||
LD BC,#0A00
|
LD BC,#0A00 ;!HARDCODE
|
||||||
FIHND LD (HL),C
|
;
|
||||||
|
.loop1: LD (HL),C
|
||||||
INC HL
|
INC HL
|
||||||
DJNZ FIHND
|
DJNZ .loop1
|
||||||
|
;
|
||||||
PUSH HL
|
PUSH HL
|
||||||
CALL SYSTIME
|
CALL SYSTIME
|
||||||
CALL MK_TIME
|
CALL MK_TIME
|
||||||
@ -129,19 +113,42 @@ FIHND LD (HL),C
|
|||||||
LD (HL),B
|
LD (HL),B
|
||||||
INC HL
|
INC HL
|
||||||
LD BC,#0600
|
LD BC,#0600
|
||||||
FIHND1 LD (HL),C
|
;
|
||||||
|
.loop2: LD (HL),C
|
||||||
INC HL
|
INC HL
|
||||||
DJNZ FIHND1
|
DJNZ .loop2
|
||||||
|
;
|
||||||
CALL WRT_HND
|
CALL WRT_HND
|
||||||
CALL SAVEDIR
|
CALL SAVEDIR
|
||||||
LD HL,(PATH0)
|
LD HL,(PATH0)
|
||||||
XOR A
|
XOR A
|
||||||
JP OPEN ;R08
|
JP OPEN ;R08
|
||||||
|
.Prepare:
|
||||||
|
AND #E7 ;R04 %76A00SHR = !FAT_ATTR
|
||||||
|
LD (ACCESS),A
|
||||||
|
LD (PATH0),HL
|
||||||
|
CALL GETWORD
|
||||||
|
RET C
|
||||||
|
LD HL,TMPNAME
|
||||||
|
LD DE,MASKARE
|
||||||
|
JP MASK
|
||||||
|
CREAT_N EQU CREATE.NEW
|
||||||
|
|
||||||
|
|
||||||
; INPUT: HL - "filename.ext",#00 without simbols * ?
|
; INPUT: HL - "filename.ext",#00 without simbols * ?
|
||||||
DELETE: LD DE,MASKARE
|
DELETE:
|
||||||
|
;!TEST
|
||||||
|
_mSavePath 1
|
||||||
|
CALL GETWORD ; âĽáâ ¤ŽŻăáâ. ¨Źď ¨ áâŕ. ¤¨áŞ
|
||||||
|
RET C
|
||||||
|
LD HL,TMPNAME
|
||||||
|
LD DE,MASKARE
|
||||||
CALL MASK
|
CALL MASK
|
||||||
RET C
|
RET C
|
||||||
|
;
|
||||||
|
; LD DE,MASKARE
|
||||||
|
; CALL MASK
|
||||||
|
; RET C
|
||||||
LD HL,MASKARE
|
LD HL,MASKARE
|
||||||
LD BC,11
|
LD BC,11
|
||||||
LD A,"?"
|
LD A,"?"
|
||||||
@ -263,9 +270,9 @@ OPENATR:
|
|||||||
; ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
; ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
OPEN_FN:
|
OPEN_FN:
|
||||||
_mSavePath
|
_mSavePath 1
|
||||||
OPEN: ;R08
|
;R08
|
||||||
LD (ACCESS),A
|
OPEN: LD (ACCESS),A
|
||||||
CALL GETWORD
|
CALL GETWORD
|
||||||
RET C
|
RET C
|
||||||
LD HL,TMPNAME
|
LD HL,TMPNAME
|
||||||
@ -300,7 +307,7 @@ OPENAT: ;R02
|
|||||||
LD (IY+_sFM.F_POSITION+3),A
|
LD (IY+_sFM.F_POSITION+3),A
|
||||||
LD A,(FatBuffer.DRIVE)
|
LD A,(FatBuffer.DRIVE)
|
||||||
LD (IY+_sFM.DRIVE),A
|
LD (IY+_sFM.DRIVE),A
|
||||||
LD HL,FM_BUF+_sFM.ST_CLUSTER
|
LD HL,CORE_BUFFERS.FM_BUF+_sFM.ST_CLUSTER
|
||||||
LD E,(HL)
|
LD E,(HL)
|
||||||
INC HL
|
INC HL
|
||||||
LD D,(HL)
|
LD D,(HL)
|
||||||
@ -311,9 +318,9 @@ OPENAT: ;R02
|
|||||||
RET
|
RET
|
||||||
|
|
||||||
CLOSE_FN:
|
CLOSE_FN:
|
||||||
_mSavePath
|
_mSavePath 1
|
||||||
CLOSE: ;R08
|
;R08
|
||||||
LD (ACCESS),A
|
CLOSE: LD (ACCESS),A
|
||||||
CALL SET_FM
|
CALL SET_FM
|
||||||
RET C
|
RET C
|
||||||
LD A,(TASK)
|
LD A,(TASK)
|
||||||
@ -631,25 +638,81 @@ SEARCH4:
|
|||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
|
||||||
|
; ;!TEST
|
||||||
|
; SAVE_CURRENT_PATH:
|
||||||
|
; SET_PAGE_X ENVPAGE
|
||||||
|
; PUSH AF
|
||||||
|
; CALL CURRDSK
|
||||||
|
; ADD A,"A"
|
||||||
|
; LD HL,TMP_CURDIR
|
||||||
|
; LD (HL),A
|
||||||
|
; INC HL
|
||||||
|
; LD A,":"
|
||||||
|
; LD (HL),A
|
||||||
|
; INC HL
|
||||||
|
; CALL CURRDIR
|
||||||
|
; POP AF
|
||||||
|
; OUT (SLOT3),A
|
||||||
|
; RET
|
||||||
|
; BACK_CURRENT_PATH:
|
||||||
|
; SET_PAGE_X ENVPAGE
|
||||||
|
; PUSH AF
|
||||||
|
; LD HL,TMP_CURDIR
|
||||||
|
; CALL CHDIR
|
||||||
|
; POP AF
|
||||||
|
; OUT (SLOT3),A
|
||||||
|
; RET
|
||||||
|
; ;
|
||||||
;-------------------------------------------------
|
;-------------------------------------------------
|
||||||
; ’¥áâ ¤®¯ãá⨬®¥ ¨¬ï ¨ áâநâìáï ¤¨áª.
|
; ’¥áâ ¤®¯ãá⨬®¥ ¨¬ï ¨ áâநâìáï ¤¨áª.
|
||||||
; ¢å®¤: hl=áâப ¨¬¥¨
|
; ¢å®¤: hl=áâப ¨¬¥¨
|
||||||
;-------------------------------------------------
|
;-------------------------------------------------
|
||||||
GETWORD:
|
GETWORD:
|
||||||
|
; !TEST
|
||||||
|
INC HL
|
||||||
|
LD A,(HL)
|
||||||
|
DEC HL
|
||||||
|
CP ':'
|
||||||
|
JR NZ,.dir_loop
|
||||||
|
|
||||||
|
LD A,(HL)
|
||||||
|
CP 'a'
|
||||||
|
JR C,.next
|
||||||
|
CP '{'
|
||||||
|
JR NC,.next
|
||||||
|
SUB #20
|
||||||
|
.next: SUB 'A'
|
||||||
|
INC HL
|
||||||
|
INC HL
|
||||||
|
PUSH HL
|
||||||
|
;!TEST CHNDISK OPENDSK
|
||||||
|
;CALL OPENDSK
|
||||||
|
CALL CHNDISK
|
||||||
|
;
|
||||||
|
POP HL
|
||||||
|
RET C
|
||||||
|
;
|
||||||
|
.dir_loop:
|
||||||
LD DE,TMPNAME
|
LD DE,TMPNAME
|
||||||
LD BC,#0DFF
|
LD BC,#0DFF
|
||||||
|
;
|
||||||
.loop: LD A,(HL)
|
.loop: LD A,(HL)
|
||||||
INC HL
|
INC HL
|
||||||
CP '\'
|
CP '\'
|
||||||
JR Z,.DIR_NAME
|
JR Z,.DIR_NAME
|
||||||
CP ':'
|
;CP ':'
|
||||||
JR Z,.DRV_NAME
|
;JR Z,.DRV_NAME
|
||||||
LD (DE),A
|
LD (DE),A
|
||||||
INC DE
|
INC DE
|
||||||
CP ' '+1
|
CP ' '+1
|
||||||
CCF
|
CCF
|
||||||
RET NC
|
RET NC
|
||||||
DJNZ .loop
|
DJNZ .loop
|
||||||
|
;
|
||||||
|
; ;!TEST
|
||||||
|
; CALL BACK_CURRENT_PATH
|
||||||
|
;
|
||||||
LD A,DSS_Error.sys.INVALID_NAME
|
LD A,DSS_Error.sys.INVALID_NAME
|
||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
@ -661,25 +724,25 @@ GETWORD:
|
|||||||
LD HL,TMPNAME
|
LD HL,TMPNAME
|
||||||
CALL OPENDIR
|
CALL OPENDIR
|
||||||
POP HL
|
POP HL
|
||||||
JR NC,GETWORD
|
RET C
|
||||||
RET
|
JR .dir_loop
|
||||||
|
|
||||||
.DRV_NAME:
|
; .DRV_NAME:
|
||||||
LD A,(TMPNAME)
|
; LD A,(TMPNAME)
|
||||||
CP 'a'
|
; CP 'a'
|
||||||
JR C,.next
|
; JR C,.next
|
||||||
CP '{'
|
; CP '{'
|
||||||
JR NC,.next
|
; JR NC,.next
|
||||||
SUB #20
|
; SUB #20
|
||||||
.next: SUB 'A'
|
; .next: SUB 'A'
|
||||||
PUSH HL
|
; PUSH HL
|
||||||
;!TEST CHNDISK OPENDSK
|
; ;!TEST CHNDISK OPENDSK
|
||||||
CALL OPENDSK
|
; ;CALL OPENDSK
|
||||||
;CALL CHNDISK
|
; CALL CHNDISK
|
||||||
;
|
; ;
|
||||||
POP HL
|
; POP HL
|
||||||
JP NC,GETWORD
|
; RET C
|
||||||
RET
|
; JR .loop
|
||||||
; <20>ãä¥à ¨¬¥¨ 8.3 ä®à¬ â
|
; <20>ãä¥à ¨¬¥¨ 8.3 ä®à¬ â
|
||||||
TMPNAME: DZ ' ' ; 12 ¯à®¡¥«®¢ ¨ 0
|
TMPNAME: DZ ' ' ; 12 ¯à®¡¥«®¢ ¨ 0
|
||||||
|
|
||||||
@ -687,8 +750,8 @@ TMPNAME: DZ ' ' ; 12
|
|||||||
; RestoreDIR:
|
; RestoreDIR:
|
||||||
CHNDISK:
|
CHNDISK:
|
||||||
;!TEST
|
;!TEST
|
||||||
;CALL OPENDSK
|
CALL OPENDSK
|
||||||
CALL OPENDSK.force
|
;CALL OPENDSK.force
|
||||||
;
|
;
|
||||||
;????? R10
|
;????? R10
|
||||||
RET C
|
RET C
|
||||||
@ -700,8 +763,6 @@ CHNDISK:
|
|||||||
POP BC
|
POP BC
|
||||||
RET C
|
RET C
|
||||||
LD A,B
|
LD A,B
|
||||||
RET
|
|
||||||
|
|
||||||
; RET C
|
; RET C
|
||||||
; PUSH AF
|
; PUSH AF
|
||||||
; CALL LOADDIR
|
; CALL LOADDIR
|
||||||
@ -741,7 +802,7 @@ OPENDIR:
|
|||||||
CALL SET_FM
|
CALL SET_FM
|
||||||
LD A,(HL)
|
LD A,(HL)
|
||||||
OR A
|
OR A
|
||||||
JP NZ,SUBDIR
|
JR NZ,SUBDIR
|
||||||
REROOT1:
|
REROOT1:
|
||||||
LD DE,0
|
LD DE,0
|
||||||
LD (IY+_sFM.ST_CLUSTER),E
|
LD (IY+_sFM.ST_CLUSTER),E
|
||||||
@ -1659,7 +1720,9 @@ RMKTIME EX DE,HL
|
|||||||
;
|
;
|
||||||
; INPUT: HL - "C:\DIR\DIR\DIR_NAME[\]",0
|
; INPUT: HL - "C:\DIR\DIR\DIR_NAME[\]",0
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
CHDIR: CALL GETWORD ; âĽáâ ¤ŽŻăáâ. ¨Źď ¨ áâŕ. ¤¨áŞ
|
CHDIR:
|
||||||
|
_mSavePath 0
|
||||||
|
.tmp: CALL GETWORD ; âĽáâ ¤ŽŻăáâ. ¨Źď ¨ áâŕ. ¤¨áŞ
|
||||||
RET C
|
RET C
|
||||||
LD HL,TMPNAME
|
LD HL,TMPNAME
|
||||||
LD A,(HL)
|
LD A,(HL)
|
||||||
@ -1676,7 +1739,7 @@ CHDIR: CALL GETWORD ;
|
|||||||
; INPUT: HL - "C:\DIR\DIR\DIR_NAME",0
|
; INPUT: HL - "C:\DIR\DIR\DIR_NAME",0
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
MKDIR:
|
MKDIR:
|
||||||
_mSavePath
|
_mSavePath 1
|
||||||
CALL GETWORD ; â¥áâ ¤®¯ãáâ. ¨¬ï ¨ áâà. ¤¨áª
|
CALL GETWORD ; â¥áâ ¤®¯ãáâ. ¨¬ï ¨ áâà. ¤¨áª
|
||||||
RET C
|
RET C
|
||||||
LD HL,TMPNAME ; 8.3 ¨¬ï
|
LD HL,TMPNAME ; 8.3 ¨¬ï
|
||||||
@ -1735,7 +1798,7 @@ MKDIR:
|
|||||||
|
|
||||||
CALL WRT_HND ; ᪮¯¨à. ®¢ãî § ¯¨áì ¢ ᯨ᮪ ¤¨áª (ª â «®£ )
|
CALL WRT_HND ; ᪮¯¨à. ®¢ãî § ¯¨áì ¢ ᯨ᮪ ¤¨áª (ª â «®£ )
|
||||||
CALL SAVEDIR ; á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
CALL SAVEDIR ; á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
||||||
LD HL,SECBUF ; ĄăäĽŕ
|
LD HL,CORE_BUFFERS.SECBUF ; ĄăäĽŕ
|
||||||
LD (HL),"." ; § ¯¨áì ⥪. ª â «®£
|
LD (HL),"." ; § ¯¨áì ⥪. ª â «®£
|
||||||
LD BC,10*256 + ' ' ; b=áç¥â稪, c=¯à®¡¥«
|
LD BC,10*256 + ' ' ; b=áç¥â稪, c=¯à®¡¥«
|
||||||
|
|
||||||
@ -1795,7 +1858,7 @@ MKD04 EX DE,HL
|
|||||||
|
|
||||||
POP HL
|
POP HL
|
||||||
CALL NSECTOR
|
CALL NSECTOR
|
||||||
LD A,(BootSector.S_P_C) ; ἪâŽŕŽ˘ ŞŤ áâĽŕ
|
LD A,(CORE_BUFFERS.BootSector.S_P_C) ; ἪâŽŕŽ˘ ŞŤ áâĽŕ
|
||||||
MKD12 PUSH AF
|
MKD12 PUSH AF
|
||||||
PUSH HL ; áâ. à §àï¤
|
PUSH HL ; áâ. à §àï¤
|
||||||
PUSH IX ; ®¬¥à «®£. ᥪâ®à
|
PUSH IX ; ®¬¥à «®£. ᥪâ®à
|
||||||
@ -1805,15 +1868,15 @@ MKD12 PUSH AF
|
|||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
;
|
;
|
||||||
LD A,(FatBuffer.DRIVE)
|
LD A,(FatBuffer.DRIVE)
|
||||||
LD DE,SECBUF+#C000
|
LD DE,CORE_BUFFERS.SECBUF+#C000
|
||||||
LD BC,1*256 + Dss.DRV.Write
|
LD BC,1*256 + Dss.DRV.Write
|
||||||
RST ToDSS.DRV
|
RST ToDSS.DRV
|
||||||
;
|
;
|
||||||
POP AF
|
POP AF
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
|
|
||||||
LD HL,SECBUF
|
LD HL,CORE_BUFFERS.SECBUF
|
||||||
LD DE,SECBUF+1
|
LD DE,CORE_BUFFERS.SECBUF+1
|
||||||
LD BC,511
|
LD BC,511
|
||||||
LD (HL),0
|
LD (HL),0
|
||||||
LDIR ;!FIXIT 㦮 «¨ â ª ¬®£® £à®å âì?
|
LDIR ;!FIXIT 㦮 «¨ â ª ¬®£® £à®å âì?
|
||||||
@ -1841,7 +1904,7 @@ MKD11 POP AF
|
|||||||
; INPUT: HL - "C:\DIR\DIR\DIR_NAME",0
|
; INPUT: HL - "C:\DIR\DIR\DIR_NAME",0
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
RMDIR:
|
RMDIR:
|
||||||
_mSavePath
|
_mSavePath 1
|
||||||
CALL GETWORD
|
CALL GETWORD
|
||||||
RET C
|
RET C
|
||||||
LD HL,TMPNAME
|
LD HL,TMPNAME
|
||||||
@ -1862,7 +1925,7 @@ RMDIR:
|
|||||||
PUSH IX
|
PUSH IX
|
||||||
RMD17 PUSH HL
|
RMD17 PUSH HL
|
||||||
CALL NSECTOR
|
CALL NSECTOR
|
||||||
LD A,(BootSector.S_P_C)
|
LD A,(CORE_BUFFERS.BootSector.S_P_C)
|
||||||
RMD12 PUSH AF
|
RMD12 PUSH AF
|
||||||
PUSH HL
|
PUSH HL
|
||||||
PUSH IX
|
PUSH IX
|
||||||
@ -1871,7 +1934,7 @@ RMD12 PUSH AF
|
|||||||
IN A,(SLOT0)
|
IN A,(SLOT0)
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
|
|
||||||
LD DE,SECBUF+#C000
|
LD DE,CORE_BUFFERS.SECBUF+#C000
|
||||||
LD BC,1*256 + Dss.DRV.Read
|
LD BC,1*256 + Dss.DRV.Read
|
||||||
LD A,(FatBuffer.DRIVE)
|
LD A,(FatBuffer.DRIVE)
|
||||||
RST ToDSS.DRV
|
RST ToDSS.DRV
|
||||||
@ -1880,7 +1943,7 @@ RMD12 PUSH AF
|
|||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
|
|
||||||
LD B,16 ;!HARDCODE 16 * 32 = 512; 32 - à §¬¥à § ¯¨á¨, 512 - à §¬¥à áç¨â ®£® ᥪâ®à
|
LD B,16 ;!HARDCODE 16 * 32 = 512; 32 - à §¬¥à § ¯¨á¨, 512 - à §¬¥à áç¨â ®£® ᥪâ®à
|
||||||
LD HL,SECBUF
|
LD HL,CORE_BUFFERS.SECBUF
|
||||||
RMD10 LD A,(HL)
|
RMD10 LD A,(HL)
|
||||||
OR A
|
OR A
|
||||||
JP Z,RMD15 ;DIR EMPTY
|
JP Z,RMD15 ;DIR EMPTY
|
||||||
|
|||||||
@ -47,8 +47,8 @@ FM_BUF: _sFM
|
|||||||
JR NC,ABS_FM
|
JR NC,ABS_FM
|
||||||
PUSH DE
|
PUSH DE
|
||||||
|
|
||||||
LD IY,FM_BUF
|
LD IY,CORE_BUFFERS.FM_BUF
|
||||||
LD DE,FM_BUF.Size
|
LD DE,CORE_BUFFERS.FM_BUF.Size
|
||||||
AND A
|
AND A
|
||||||
JR Z,.endLoop
|
JR Z,.endLoop
|
||||||
.loop: ADD IY,DE
|
.loop: ADD IY,DE
|
||||||
@ -82,8 +82,8 @@ RES_FM:
|
|||||||
|
|
||||||
GET_FM: LD B,FMCOUNT
|
GET_FM: LD B,FMCOUNT
|
||||||
LD C,#FF
|
LD C,#FF
|
||||||
LD IY,FM_BUF-FM_BUF.Size
|
LD IY,CORE_BUFFERS.FM_BUF - CORE_BUFFERS.FM_BUF.Size
|
||||||
LD DE,FM_BUF.Size
|
LD DE,CORE_BUFFERS.FM_BUF.Size
|
||||||
.loop: ADD IY,DE
|
.loop: ADD IY,DE
|
||||||
INC C
|
INC C
|
||||||
LD A,(IY+0)
|
LD A,(IY+0)
|
||||||
@ -175,7 +175,7 @@ BLOKRD0 POP BC
|
|||||||
; B - Amount sectors
|
; B - Amount sectors
|
||||||
BLOK_RD: PUSH BC
|
BLOK_RD: PUSH BC
|
||||||
LD (READ.MEM),IX
|
LD (READ.MEM),IX
|
||||||
LD A,(BootSector.S_P_C) ;SECTORS PER CLUSTER
|
LD A,(CORE_BUFFERS.BootSector.S_P_C) ;SECTORS PER CLUSTER
|
||||||
LD C,A
|
LD C,A
|
||||||
LD B,0 ;!FIXIT
|
LD B,0 ;!FIXIT
|
||||||
;HL:DE / BC => DE:IX HL-OSTATOK
|
;HL:DE / BC => DE:IX HL-OSTATOK
|
||||||
@ -255,7 +255,7 @@ BLOKRD2:
|
|||||||
|
|
||||||
POP DE
|
POP DE
|
||||||
POP BC
|
POP BC
|
||||||
LD A,(BootSector.S_P_C)
|
LD A,(CORE_BUFFERS.BootSector.S_P_C)
|
||||||
SUB E
|
SUB E
|
||||||
LD C,A ;\
|
LD C,A ;\
|
||||||
CP B ; \
|
CP B ; \
|
||||||
@ -280,7 +280,7 @@ BLOKRD4 LD DE,(READ.MEM)
|
|||||||
JP C,BLOKRD0
|
JP C,BLOKRD0
|
||||||
POP BC
|
POP BC
|
||||||
LD HL,(READ.MEM)
|
LD HL,(READ.MEM)
|
||||||
LD DE,(BootSector.B_P_S)
|
LD DE,(CORE_BUFFERS.BootSector.B_P_S)
|
||||||
BLOKRD5 ADD HL,DE
|
BLOKRD5 ADD HL,DE
|
||||||
DEC C
|
DEC C
|
||||||
JR NZ,BLOKRD5
|
JR NZ,BLOKRD5
|
||||||
@ -289,7 +289,7 @@ BLOKRD5 ADD HL,DE
|
|||||||
LD A,B
|
LD A,B
|
||||||
OR A
|
OR A
|
||||||
RET Z
|
RET Z
|
||||||
BLOKRD6 LD HL,BootSector.S_P_C
|
BLOKRD6 LD HL,CORE_BUFFERS.BootSector.S_P_C
|
||||||
LD A,B
|
LD A,B
|
||||||
SUB (HL)
|
SUB (HL)
|
||||||
LD B,A
|
LD B,A
|
||||||
@ -317,7 +317,7 @@ BLOKRD7 EX DE,HL
|
|||||||
JP C,BLOKRD0
|
JP C,BLOKRD0
|
||||||
POP BC
|
POP BC
|
||||||
LD HL,(READ.MEM)
|
LD HL,(READ.MEM)
|
||||||
LD DE,(BootSector.B_P_S)
|
LD DE,(CORE_BUFFERS.BootSector.B_P_S)
|
||||||
BLOKRD8 ADD HL,DE
|
BLOKRD8 ADD HL,DE
|
||||||
DEC C
|
DEC C
|
||||||
JR NZ,BLOKRD8
|
JR NZ,BLOKRD8
|
||||||
@ -345,7 +345,7 @@ BLOKWR0 POP BC
|
|||||||
; B - Amount sectors
|
; B - Amount sectors
|
||||||
BLOK_WR PUSH BC
|
BLOK_WR PUSH BC
|
||||||
LD (READ.MEM),IX
|
LD (READ.MEM),IX
|
||||||
LD A,(BootSector.S_P_C) ;SECTORS PER CLUSTER
|
LD A,(CORE_BUFFERS.BootSector.S_P_C) ;SECTORS PER CLUSTER
|
||||||
LD C,A
|
LD C,A
|
||||||
LD B,0
|
LD B,0
|
||||||
;HL:DE / BC => DE:IX HL-OSTATOK
|
;HL:DE / BC => DE:IX HL-OSTATOK
|
||||||
@ -440,7 +440,7 @@ BLOKWR2 LD A,B
|
|||||||
|
|
||||||
POP DE
|
POP DE
|
||||||
POP BC
|
POP BC
|
||||||
LD A,(BootSector.S_P_C)
|
LD A,(CORE_BUFFERS.BootSector.S_P_C)
|
||||||
SUB E
|
SUB E
|
||||||
LD C,A
|
LD C,A
|
||||||
CP B
|
CP B
|
||||||
@ -465,7 +465,7 @@ BLOKWR4 LD DE,(READ.MEM)
|
|||||||
JP C,BLOKWR0
|
JP C,BLOKWR0
|
||||||
POP BC
|
POP BC
|
||||||
LD HL,(READ.MEM)
|
LD HL,(READ.MEM)
|
||||||
LD DE,(BootSector.B_P_S)
|
LD DE,(CORE_BUFFERS.BootSector.B_P_S)
|
||||||
BLOKWR5 ADD HL,DE
|
BLOKWR5 ADD HL,DE
|
||||||
DEC C
|
DEC C
|
||||||
JR NZ,BLOKWR5
|
JR NZ,BLOKWR5
|
||||||
@ -474,7 +474,7 @@ BLOKWR5 ADD HL,DE
|
|||||||
LD A,B
|
LD A,B
|
||||||
OR A
|
OR A
|
||||||
RET Z
|
RET Z
|
||||||
BLOKWR6 LD HL,BootSector.S_P_C
|
BLOKWR6 LD HL,CORE_BUFFERS.BootSector.S_P_C
|
||||||
LD A,B
|
LD A,B
|
||||||
SUB (HL)
|
SUB (HL)
|
||||||
LD B,A
|
LD B,A
|
||||||
@ -507,7 +507,7 @@ BLOKWR9 POP BC
|
|||||||
JP C,BLOKWR0
|
JP C,BLOKWR0
|
||||||
POP BC
|
POP BC
|
||||||
LD HL,(READ.MEM)
|
LD HL,(READ.MEM)
|
||||||
LD DE,(BootSector.B_P_S)
|
LD DE,(CORE_BUFFERS.BootSector.B_P_S)
|
||||||
BLOKWR8 ADD HL,DE
|
BLOKWR8 ADD HL,DE
|
||||||
DEC C
|
DEC C
|
||||||
JR NZ,BLOKWR8
|
JR NZ,BLOKWR8
|
||||||
@ -556,9 +556,11 @@ READ: LD (R_POINT),HL
|
|||||||
CALL SET_FM
|
CALL SET_FM
|
||||||
RET C
|
RET C
|
||||||
CALL TSTSIZE
|
CALL TSTSIZE
|
||||||
|
;!FIXIT ¬®¦® ¯¥à¥¥á⨠¢ ç «® ¯à®æ¥¤ãàë
|
||||||
LD A,D
|
LD A,D
|
||||||
OR E
|
OR E
|
||||||
JP Z,.NOREAD ;!FIXIT ¬®¦® ¯¥à¥¥á⨠¢ ç «® ¯à®æ¥¤ãàë
|
JP Z,.NOREAD
|
||||||
|
;
|
||||||
PUSH DE
|
PUSH DE
|
||||||
LD A,(IY+_sFM.DRIVE)
|
LD A,(IY+_sFM.DRIVE)
|
||||||
CALL OPENDSK
|
CALL OPENDSK
|
||||||
@ -625,7 +627,7 @@ READ: LD (R_POINT),HL
|
|||||||
OR C
|
OR C
|
||||||
JP Z,.ROV6
|
JP Z,.ROV6
|
||||||
PUSH BC
|
PUSH BC
|
||||||
LD IX,BUFFER+#C000
|
LD IX,CORE_BUFFERS.BUFFER+#C000
|
||||||
LD B,1
|
LD B,1
|
||||||
IN A,(SLOT3)
|
IN A,(SLOT3)
|
||||||
PUSH AF
|
PUSH AF
|
||||||
@ -636,7 +638,7 @@ READ: LD (R_POINT),HL
|
|||||||
LD C,SLOT3
|
LD C,SLOT3
|
||||||
OUT (C),B
|
OUT (C),B
|
||||||
JP C,.ERR_1
|
JP C,.ERR_1
|
||||||
LD HL,BUFFER
|
LD HL,CORE_BUFFERS.BUFFER
|
||||||
LD DE,(R_POINT)
|
LD DE,(R_POINT)
|
||||||
POP BC
|
POP BC
|
||||||
LDIR
|
LDIR
|
||||||
@ -661,7 +663,7 @@ READ: LD (R_POINT),HL
|
|||||||
.ROV1: PUSH BC
|
.ROV1: PUSH BC
|
||||||
PUSH HL
|
PUSH HL
|
||||||
PUSH DE
|
PUSH DE
|
||||||
LD IX,BUFFER+#C000
|
LD IX,CORE_BUFFERS.BUFFER+#C000
|
||||||
LD B,1
|
LD B,1
|
||||||
IN A,(SLOT3)
|
IN A,(SLOT3)
|
||||||
PUSH AF
|
PUSH AF
|
||||||
@ -695,7 +697,7 @@ READ: LD (R_POINT),HL
|
|||||||
LD C,L
|
LD C,L
|
||||||
LD HL,0
|
LD HL,0
|
||||||
.ROV3: PUSH HL
|
.ROV3: PUSH HL
|
||||||
LD HL,BUFFER
|
LD HL,CORE_BUFFERS.BUFFER
|
||||||
ADD HL,DE
|
ADD HL,DE
|
||||||
LD DE,(R_POINT)
|
LD DE,(R_POINT)
|
||||||
LDIR
|
LDIR
|
||||||
@ -786,7 +788,7 @@ WOV2: POP BC
|
|||||||
PUSH HL
|
PUSH HL
|
||||||
PUSH DE
|
PUSH DE
|
||||||
PUSH BC
|
PUSH BC
|
||||||
LD IX,BUFFER+#C000
|
LD IX,CORE_BUFFERS.BUFFER+#C000
|
||||||
LD B,1
|
LD B,1
|
||||||
IN A,(SLOT3)
|
IN A,(SLOT3)
|
||||||
PUSH AF
|
PUSH AF
|
||||||
@ -796,7 +798,7 @@ WOV2: POP BC
|
|||||||
POP BC
|
POP BC
|
||||||
LD C,SLOT3
|
LD C,SLOT3
|
||||||
OUT (C),B
|
OUT (C),B
|
||||||
LD DE,BUFFER
|
LD DE,CORE_BUFFERS.BUFFER
|
||||||
LD HL,(R_POINT)
|
LD HL,(R_POINT)
|
||||||
POP BC
|
POP BC
|
||||||
JP C,PWERR2
|
JP C,PWERR2
|
||||||
@ -804,7 +806,7 @@ WOV2: POP BC
|
|||||||
LD (R_POINT),HL
|
LD (R_POINT),HL
|
||||||
POP DE
|
POP DE
|
||||||
POP HL
|
POP HL
|
||||||
LD IX,BUFFER+#C000
|
LD IX,CORE_BUFFERS.BUFFER+#C000
|
||||||
LD B,1
|
LD B,1
|
||||||
IN A,(SLOT3)
|
IN A,(SLOT3)
|
||||||
PUSH AF
|
PUSH AF
|
||||||
@ -841,7 +843,7 @@ WOV6: LD DE,(READ.S_POINT)
|
|||||||
WOV1: PUSH BC
|
WOV1: PUSH BC
|
||||||
PUSH HL
|
PUSH HL
|
||||||
PUSH DE
|
PUSH DE
|
||||||
LD IX,BUFFER+#C000
|
LD IX,CORE_BUFFERS.BUFFER+#C000
|
||||||
LD B,1
|
LD B,1
|
||||||
IN A,(SLOT3)
|
IN A,(SLOT3)
|
||||||
PUSH AF
|
PUSH AF
|
||||||
@ -870,7 +872,7 @@ WOV1: PUSH BC
|
|||||||
LD C,L
|
LD C,L
|
||||||
LD HL,0
|
LD HL,0
|
||||||
WOV3: PUSH HL
|
WOV3: PUSH HL
|
||||||
LD HL,BUFFER
|
LD HL,CORE_BUFFERS.BUFFER
|
||||||
ADD HL,DE
|
ADD HL,DE
|
||||||
LD DE,(R_POINT)
|
LD DE,(R_POINT)
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
@ -879,7 +881,7 @@ WOV3: PUSH HL
|
|||||||
EXX
|
EXX
|
||||||
PUSH HL
|
PUSH HL
|
||||||
PUSH DE
|
PUSH DE
|
||||||
LD IX,BUFFER+#C000
|
LD IX,CORE_BUFFERS.BUFFER+#C000
|
||||||
LD B,1
|
LD B,1
|
||||||
IN A,(SLOT3)
|
IN A,(SLOT3)
|
||||||
PUSH AF
|
PUSH AF
|
||||||
@ -905,7 +907,7 @@ WOV3: PUSH HL
|
|||||||
; NSECTOR: DEC HL
|
; NSECTOR: DEC HL
|
||||||
; DEC HL
|
; DEC HL
|
||||||
; EX DE,HL
|
; EX DE,HL
|
||||||
; LD A,(BootSector.S_P_C)
|
; LD A,(CORE_BUFFERS.BootSector.S_P_C)
|
||||||
; LD B,A
|
; LD B,A
|
||||||
; LD HL,0
|
; LD HL,0
|
||||||
; LD IX,0
|
; LD IX,0
|
||||||
@ -924,7 +926,7 @@ WOV3: PUSH HL
|
|||||||
NSECTOR: DEC HL
|
NSECTOR: DEC HL
|
||||||
DEC HL
|
DEC HL
|
||||||
LD DE,0
|
LD DE,0
|
||||||
LD A,(BootSector.S_P_C)
|
LD A,(CORE_BUFFERS.BootSector.S_P_C)
|
||||||
XOR 1
|
XOR 1
|
||||||
JR Z,.skip
|
JR Z,.skip
|
||||||
;
|
;
|
||||||
|
|||||||
@ -182,8 +182,8 @@ FRESP2: LD D,B
|
|||||||
LD E,C
|
LD E,C
|
||||||
LD HL,(MAX_CLU)
|
LD HL,(MAX_CLU)
|
||||||
DEC HL
|
DEC HL
|
||||||
LD BC,(BootSector.B_P_S)
|
LD BC,(CORE_BUFFERS.BootSector.B_P_S)
|
||||||
LD A,(BootSector.S_P_C)
|
LD A,(CORE_BUFFERS.BootSector.S_P_C)
|
||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
@ -232,7 +232,7 @@ RD_BPB: LD C,SLOT3
|
|||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
;R08
|
;R08
|
||||||
;LD DE,BOOT+#C000
|
;LD DE,BOOT+#C000
|
||||||
LD DE,SECBUF+#C000
|
LD DE,CORE_BUFFERS.SECBUF+#C000
|
||||||
;R08
|
;R08
|
||||||
LD A,(FatBuffer.DRIVE) ;¢ë§®¢ RD_BPB ¬®¦¥â ¢ ¤ «ì¥©è¥¬ ¯® ¤®¡¨âìáï, ¯ã᪠© ® á ¬ ¤®áâ ñâ ¯¥à¥¬¥ãî DRIVE
|
LD A,(FatBuffer.DRIVE) ;¢ë§®¢ RD_BPB ¬®¦¥â ¢ ¤ «ì¥©è¥¬ ¯® ¤®¡¨âìáï, ¯ã᪠© ® á ¬ ¤®áâ ñâ ¯¥à¥¬¥ãî DRIVE
|
||||||
|
|
||||||
@ -245,21 +245,21 @@ RD_BPB: LD C,SLOT3
|
|||||||
//PUSH IY ; ¯®ª ¡¥§ ¨¤¥ªá®£®, ® ¬®¦¥â ¯à¨£®¤¨âìáï
|
//PUSH IY ; ¯®ª ¡¥§ ¨¤¥ªá®£®, ® ¬®¦¥â ¯à¨£®¤¨âìáï
|
||||||
|
|
||||||
LD DE,#AA55 ; ᨣ âãà ;R05
|
LD DE,#AA55 ; ᨣ âãà ;R05
|
||||||
LD HL,(SECBUF+510) ;R08 ;R07
|
LD HL,(CORE_BUFFERS.SECBUF+510) ;R08 ;R07
|
||||||
;R05
|
;R05
|
||||||
AND A
|
AND A
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
JP NZ,DOS_X_Error.UnknownBPB
|
JP NZ,DOS_X_Error.UnknownBPB
|
||||||
;R08
|
;R08
|
||||||
LD HL,SECBUF
|
LD HL,CORE_BUFFERS.SECBUF
|
||||||
LD DE,BootSector
|
LD DE,CORE_BUFFERS.BootSector
|
||||||
LD BC,_sBOOT_SEC ; size
|
LD BC,_sBOOT_SEC ; size
|
||||||
LDIR
|
LDIR
|
||||||
;
|
;
|
||||||
|
|
||||||
//LD IY,BootSector ; ¯®ª ¡¥§ ¨¤¥ªá®£®, ® ¬®¦¥â ¯à¨£®¤¨âìáï
|
//LD IY,BootSector ; ¯®ª ¡¥§ ¨¤¥ªá®£®, ® ¬®¦¥â ¯à¨£®¤¨âìáï
|
||||||
//LD A,(IY+_sBOOT_SEC.ID_FORM)
|
//LD A,(IY+_sBOOT_SEC.ID_FORM)
|
||||||
LD A,(BootSector.ID_FORM)
|
LD A,(CORE_BUFFERS.BootSector.ID_FORM)
|
||||||
|
|
||||||
CP #F0
|
CP #F0
|
||||||
JP C,DOS_X_Error.UnknownBPB
|
JP C,DOS_X_Error.UnknownBPB
|
||||||
@ -272,7 +272,7 @@ RD_BPB: LD C,SLOT3
|
|||||||
|
|
||||||
//LD L,(IY+_sBOOT_SEC.RESERVE) ;Reserve sec
|
//LD L,(IY+_sBOOT_SEC.RESERVE) ;Reserve sec
|
||||||
//LD H,(IY+_sBOOT_SEC.RESERVE+1)
|
//LD H,(IY+_sBOOT_SEC.RESERVE+1)
|
||||||
LD HL,(BootSector.RESERVE)
|
LD HL,(CORE_BUFFERS.BootSector.RESERVE)
|
||||||
;
|
;
|
||||||
|
|
||||||
; LD E,(IY+_sBOOT_SEC.HIDDEN) ;Hidden sec
|
; LD E,(IY+_sBOOT_SEC.HIDDEN) ;Hidden sec
|
||||||
@ -285,10 +285,10 @@ RD_BPB: LD C,SLOT3
|
|||||||
|
|
||||||
//LD E,(IY+_sBOOT_SEC.S_P_F) ; sectors in FAT
|
//LD E,(IY+_sBOOT_SEC.S_P_F) ; sectors in FAT
|
||||||
//LD D,(IY+_sBOOT_SEC.S_P_F+1)
|
//LD D,(IY+_sBOOT_SEC.S_P_F+1)
|
||||||
LD DE,(BootSector.S_P_F)
|
LD DE,(CORE_BUFFERS.BootSector.S_P_F)
|
||||||
|
|
||||||
|
|
||||||
LD A,(BootSector.FAT_NUM) ; amount FATs
|
LD A,(CORE_BUFFERS.BootSector.FAT_NUM) ; amount FATs
|
||||||
CP 1
|
CP 1
|
||||||
JR Z,.loop1
|
JR Z,.loop1
|
||||||
DEC A
|
DEC A
|
||||||
@ -305,7 +305,7 @@ RD_BPB: LD C,SLOT3
|
|||||||
|
|
||||||
//LD C,(IY+_sBOOT_SEC.B_P_S) ; Size sectors
|
//LD C,(IY+_sBOOT_SEC.B_P_S) ; Size sectors
|
||||||
//LD B,(IY+_sBOOT_SEC.B_P_S+1)
|
//LD B,(IY+_sBOOT_SEC.B_P_S+1)
|
||||||
LD BC,(BootSector.B_P_S)
|
LD BC,(CORE_BUFFERS.BootSector.B_P_S)
|
||||||
; RL C
|
; RL C
|
||||||
; RL B
|
; RL B
|
||||||
; RL C
|
; RL C
|
||||||
@ -330,7 +330,7 @@ RD_BPB: LD C,SLOT3
|
|||||||
|
|
||||||
//LD E,(IY+_sBOOT_SEC.F_P_DIR) ; Number file handel
|
//LD E,(IY+_sBOOT_SEC.F_P_DIR) ; Number file handel
|
||||||
//LD D,(IY+_sBOOT_SEC.F_P_DIR+1)
|
//LD D,(IY+_sBOOT_SEC.F_P_DIR+1)
|
||||||
LD DE,(BootSector.F_P_DIR)
|
LD DE,(CORE_BUFFERS.BootSector.F_P_DIR)
|
||||||
|
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
DEC HL
|
DEC HL
|
||||||
@ -359,9 +359,9 @@ RD_BPB: LD C,SLOT3
|
|||||||
|
|
||||||
//LD L,(IY+_sBOOT_SEC.B_P_S) ; Size sector
|
//LD L,(IY+_sBOOT_SEC.B_P_S) ; Size sector
|
||||||
//LD H,(IY+_sBOOT_SEC.B_P_S+1)
|
//LD H,(IY+_sBOOT_SEC.B_P_S+1)
|
||||||
LD HL,(BootSector.B_P_S) ; Size sector
|
LD HL,(CORE_BUFFERS.BootSector.B_P_S) ; Size sector
|
||||||
|
|
||||||
LD A,(BootSector.S_P_C) ;!TODO FATcacheSize
|
LD A,(CORE_BUFFERS.BootSector.S_P_C) ;!TODO FATcacheSize
|
||||||
;NEXTAD3
|
;NEXTAD3
|
||||||
; .loop3: ADD HL,BC ; calc. cluster size
|
; .loop3: ADD HL,BC ; calc. cluster size
|
||||||
; DEC A
|
; DEC A
|
||||||
@ -389,7 +389,7 @@ RD_BPB: LD C,SLOT3
|
|||||||
ENDIF
|
ENDIF
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
LD HL,BootSector.ID_FAT ;!!!!! ¥á«¨ IY ¨á¯®«ì§ã¥âáï ¤«ï ¯¥à¥¬¥®£® BootSector, â® ¡ã¤¥â ¡ £
|
LD HL,CORE_BUFFERS.BootSector.ID_FAT ;!!!!! ¥á«¨ IY ¨á¯®«ì§ã¥âáï ¤«ï ¯¥à¥¬¥®£® BootSector, â® ¡ã¤¥â ¡ £
|
||||||
LD DE,FatBuffer.MSG
|
LD DE,FatBuffer.MSG
|
||||||
LD B,3
|
LD B,3
|
||||||
;R_BPBL1
|
;R_BPBL1
|
||||||
@ -426,9 +426,9 @@ RD_BPB: LD C,SLOT3
|
|||||||
|
|
||||||
//LD C,(IY+_sBOOT_SEC.S_P_T) ; Sector per track
|
//LD C,(IY+_sBOOT_SEC.S_P_T) ; Sector per track
|
||||||
//LD B,(IY+_sBOOT_SEC.S_P_T+1)
|
//LD B,(IY+_sBOOT_SEC.S_P_T+1)
|
||||||
LD BC,(BootSector.S_P_T) ; Sector per track
|
LD BC,(CORE_BUFFERS.BootSector.S_P_T) ; Sector per track
|
||||||
|
|
||||||
LD A,(BootSector.HEADS) ;!!!!! ¥á«¨ IY ¨á¯®«ì§ã¥âáï ¤«ï ¯¥à¥¬¥®£® BootSector, â® ¡ã¤¥â ¡ £
|
LD A,(CORE_BUFFERS.BootSector.HEADS) ;!!!!! ¥á«¨ IY ¨á¯®«ì§ã¥âáï ¤«ï ¯¥à¥¬¥®£® BootSector, â® ¡ã¤¥â ¡ £
|
||||||
.BPB_L1: ; calc. sector per cylinder
|
.BPB_L1: ; calc. sector per cylinder
|
||||||
ADD HL,BC
|
ADD HL,BC
|
||||||
DEC A
|
DEC A
|
||||||
@ -446,7 +446,7 @@ RD_BPB: LD C,SLOT3
|
|||||||
|
|
||||||
//LD L,(IY+_sBOOT_SEC.S_P_D)
|
//LD L,(IY+_sBOOT_SEC.S_P_D)
|
||||||
//LD H,(IY+_sBOOT_SEC.S_P_D+1)
|
//LD H,(IY+_sBOOT_SEC.S_P_D+1)
|
||||||
LD HL,(BootSector.S_P_D)
|
LD HL,(CORE_BUFFERS.BootSector.S_P_D)
|
||||||
|
|
||||||
LD A,H
|
LD A,H
|
||||||
OR L
|
OR L
|
||||||
@ -454,11 +454,11 @@ RD_BPB: LD C,SLOT3
|
|||||||
;
|
;
|
||||||
//LD L,(IY+_sBOOT_SEC.BPB_BIG_TOTAL_SECTORS)
|
//LD L,(IY+_sBOOT_SEC.BPB_BIG_TOTAL_SECTORS)
|
||||||
//LD H,(IY+_sBOOT_SEC.BPB_BIG_TOTAL_SECTORS+1)
|
//LD H,(IY+_sBOOT_SEC.BPB_BIG_TOTAL_SECTORS+1)
|
||||||
LD HL,(BootSector.BPB_BIG_TOTAL_SECTORS)
|
LD HL,(CORE_BUFFERS.BootSector.BPB_BIG_TOTAL_SECTORS)
|
||||||
|
|
||||||
//LD C,(IY+_sBOOT_SEC.BPB_BIG_TOTAL_SECTORS+2)
|
//LD C,(IY+_sBOOT_SEC.BPB_BIG_TOTAL_SECTORS+2)
|
||||||
//LD B,(IY+_sBOOT_SEC.BPB_BIG_TOTAL_SECTORS+3)
|
//LD B,(IY+_sBOOT_SEC.BPB_BIG_TOTAL_SECTORS+3)
|
||||||
LD BC,(BootSector.BPB_BIG_TOTAL_SECTORS+2)
|
LD BC,(CORE_BUFFERS.BootSector.BPB_BIG_TOTAL_SECTORS+2)
|
||||||
|
|
||||||
AND A
|
AND A
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
@ -469,7 +469,7 @@ RD_BPB: LD C,SLOT3
|
|||||||
;AND A ;âãâ CF ¯®«î¡ á á¡à®è¥ ¤®«¦¥ ¡ëâì
|
;AND A ;âãâ CF ¯®«î¡ á á¡à®è¥ ¤®«¦¥ ¡ëâì
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
LD BC,0
|
LD BC,0
|
||||||
.HDDBIG: LD A,(BootSector.S_P_C) ;!!!!! ¥á«¨ IY ¨á¯®«ì§ã¥âáï ¤«ï ¯¥à¥¬¥®£® BootSector, â® ¡ã¤¥â ¡ £
|
.HDDBIG: LD A,(CORE_BUFFERS.BootSector.S_P_C) ;!!!!! ¥á«¨ IY ¨á¯®«ì§ã¥âáï ¤«ï ¯¥à¥¬¥®£® BootSector, â® ¡ã¤¥â ¡ £
|
||||||
SCF
|
SCF
|
||||||
.S4C01: RRA
|
.S4C01: RRA
|
||||||
JR C,.S4C02
|
JR C,.S4C02
|
||||||
@ -506,7 +506,7 @@ RD_BPB: LD C,SLOT3
|
|||||||
RET
|
RET
|
||||||
|
|
||||||
.IBM_DOS:
|
.IBM_DOS:
|
||||||
LD A,(BootSector.ID_FORM)
|
LD A,(CORE_BUFFERS.BootSector.ID_FORM)
|
||||||
CP #F0
|
CP #F0
|
||||||
JR C,DOS_X_Error.UnknownBPB
|
JR C,DOS_X_Error.UnknownBPB
|
||||||
;????? ¤® «¨ ¨§¬¥¨âì?
|
;????? ¤® «¨ ¨§¬¥¨âì?
|
||||||
@ -582,7 +582,7 @@ SAVE_CUR_PATH
|
|||||||
|
|
||||||
CALL CURRDSK
|
CALL CURRDSK
|
||||||
ADD A,"A"
|
ADD A,"A"
|
||||||
LD HL,TMP_CURDIR
|
LD HL,TMP_CURDIR_AUTO
|
||||||
LD (HL),A
|
LD (HL),A
|
||||||
INC HL
|
INC HL
|
||||||
LD A,":"
|
LD A,":"
|
||||||
@ -608,7 +608,8 @@ SAVE_CUR_PATH
|
|||||||
|
|
||||||
; !TODO ¯®ç¨¨âì
|
; !TODO ¯®ç¨¨âì
|
||||||
BACK_CUR_PATH:
|
BACK_CUR_PATH:
|
||||||
PUSH IY
|
RET NC
|
||||||
|
.force: PUSH IY
|
||||||
PUSH IX
|
PUSH IX
|
||||||
PUSH HL
|
PUSH HL
|
||||||
PUSH DE
|
PUSH DE
|
||||||
@ -618,8 +619,8 @@ BACK_CUR_PATH:
|
|||||||
SET_PAGE_X ENVPAGE
|
SET_PAGE_X ENVPAGE
|
||||||
PUSH AF
|
PUSH AF
|
||||||
|
|
||||||
LD HL,TMP_CURDIR
|
LD HL,TMP_CURDIR_AUTO
|
||||||
CALL CHDIR
|
CALL CHDIR.tmp
|
||||||
|
|
||||||
; ¯®ç¥¬ã ¥ POP AF : OUT (SLOT3),A
|
; ¯®ç¥¬ã ¥ POP AF : OUT (SLOT3),A
|
||||||
//POP BC
|
//POP BC
|
||||||
|
|||||||
@ -320,7 +320,7 @@ F_START: DI
|
|||||||
LDIR
|
LDIR
|
||||||
;R07 ;R11
|
;R07 ;R11
|
||||||
;R11
|
;R11
|
||||||
LD HL,FM_BUF
|
LD HL,CORE_BUFFERS.FM_BUF
|
||||||
LD (HL),'.'
|
LD (HL),'.'
|
||||||
;R11
|
;R11
|
||||||
;---------------------------;
|
;---------------------------;
|
||||||
@ -456,6 +456,7 @@ ADRST10: ;DS 512 ;,0
|
|||||||
;
|
;
|
||||||
CLEAR_ZONE.start EQU $
|
CLEAR_ZONE.start EQU $
|
||||||
|
|
||||||
|
MODULE CORE_BUFFERS
|
||||||
BUFFERSplace _sBuffers=$
|
BUFFERSplace _sBuffers=$
|
||||||
FM_BUF _sFM = BUFFERSplace.FileManipulator
|
FM_BUF _sFM = BUFFERSplace.FileManipulator
|
||||||
.Size EQU _sFM
|
.Size EQU _sFM
|
||||||
@ -465,15 +466,15 @@ EXEBUFF _sEXE_HEADER = BUFFERSplace.EXE_Header
|
|||||||
XSTACK EQU BUFFERSplace.Stack.SPoint
|
XSTACK EQU BUFFERSplace.Stack.SPoint
|
||||||
BUFFER EQU BUFFERSplace.Buffer
|
BUFFER EQU BUFFERSplace.Buffer
|
||||||
SECBUF EQU BUFFER ;!TODO ®â¤¥«¨âì SECBUF ®â BUFFER
|
SECBUF EQU BUFFER ;!TODO ®â¤¥«¨âì SECBUF ®â BUFFER
|
||||||
|
ENDMODULE
|
||||||
CLEAR_ZONE.size EQU _sBuffers
|
CLEAR_ZONE.size EQU _sBuffers
|
||||||
|
|
||||||
ASSERT (BUFFERSplace+_sBuffers)<#3FFF, "Warning!!! OUT OF SLOT0"
|
ASSERT (CORE_BUFFERS.BUFFERSplace+_sBuffers)<#4000, "Warning!!! OUT OF SLOT0"
|
||||||
DISPLAY "--- --- --- --- --- --- --- ---"
|
DISPLAY "--- --- --- --- --- --- --- ---"
|
||||||
DISPLAY "BUFFERSplace.BootSector ",/H,BUFFERSplace.BootSector
|
DISPLAY "BUFFERSplace.BootSector ",/H,CORE_BUFFERS.BUFFERSplace.BootSector
|
||||||
DISPLAY "BootSector ", /H, BootSector
|
DISPLAY "BootSector ", /H, CORE_BUFFERS.BootSector
|
||||||
DISPLAY "EXEBUFF ", /H, EXEBUFF
|
DISPLAY "EXEBUFF ", /H, CORE_BUFFERS.EXEBUFF
|
||||||
DISPLAY "Size ", /H, EXEBUFF-BootSector
|
DISPLAY "Size ", /H, CORE_BUFFERS.EXEBUFF - CORE_BUFFERS.BootSector
|
||||||
DISPLAY "--- --- --- --- --- --- --- ---"
|
DISPLAY "--- --- --- --- --- --- --- ---"
|
||||||
|
|
||||||
|
|
||||||
@ -508,12 +509,12 @@ BUFFER EQU XSTACK+1
|
|||||||
SECBUF EQU BUFFER
|
SECBUF EQU BUFFER
|
||||||
;R11 ////////////////////////////////
|
;R11 ////////////////////////////////
|
||||||
*/
|
*/
|
||||||
DISPLAY "FM_BUF addr: ",/H,FM_BUF
|
DISPLAY "FM_BUF addr: ",/H,CORE_BUFFERS.FM_BUF
|
||||||
DISPLAY "FM_BUF.Size: ",/H,FM_BUF.Size
|
DISPLAY "FM_BUF.Size: ",/H,CORE_BUFFERS.FM_BUF.Size
|
||||||
DISPLAY "FM_BUF.FullSize: ",/H,FM_BUF.FullSize
|
DISPLAY "FM_BUF.FullSize: ",/H,CORE_BUFFERS.FM_BUF.FullSize
|
||||||
DISPLAY "EXEBUFF: ",/H,EXEBUFF
|
DISPLAY "EXEBUFF: ",/H,CORE_BUFFERS.EXEBUFF
|
||||||
DISPLAY "XSTACK: ",/H,XSTACK
|
DISPLAY "XSTACK: ",/H,CORE_BUFFERS.XSTACK
|
||||||
DISPLAY "BUFFER: ",/H,BUFFER
|
DISPLAY "BUFFER: ",/H,CORE_BUFFERS.BUFFER
|
||||||
;
|
;
|
||||||
;
|
;
|
||||||
;> > > > > > > > > > > > > > > > BUFFERS < < < < < < < < < < < < < < < <
|
;> > > > > > > > > > > > > > > > BUFFERS < < < < < < < < < < < < < < < <
|
||||||
@ -523,8 +524,7 @@ SECBUF EQU BUFFER
|
|||||||
|
|
||||||
;|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||;
|
;|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||;
|
||||||
; !!!!! íâ ¯à®æ¥¤ãà § âàñâáï ¯®á«¥ ¨á¯®«¥¨ï
|
; !!!!! íâ ¯à®æ¥¤ãà § âàñâáï ¯®á«¥ ¨á¯®«¥¨ï
|
||||||
DEPLOY:
|
DEPLOY: ;Allocate memory
|
||||||
;Allocate memory
|
|
||||||
LD BC,USING_MEMPAGES*256 + BIOS.GetMem
|
LD BC,USING_MEMPAGES*256 + BIOS.GetMem
|
||||||
RST ToBIOS
|
RST ToBIOS
|
||||||
RET C ;R10
|
RET C ;R10
|
||||||
@ -550,7 +550,7 @@ DEPLOY:
|
|||||||
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
|
||||||
@ -562,14 +562,8 @@ DEPLOY:
|
|||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
AND A ;R10
|
AND A ;R10
|
||||||
RET
|
RET
|
||||||
; .halt: POP HL ;ᨬ ¥¬ «¨è¥¥ á® á⥪
|
|
||||||
; ; LD A,DSS_Error.sys.NOT_ENOUGH_MEMORY
|
|
||||||
; ; SCF
|
|
||||||
; RET
|
|
||||||
|
|
||||||
; defb 0
|
IF ENVVALUE != CORE_BUFFERS.BUFFER
|
||||||
|
|
||||||
IF ENVVALUE != BUFFER
|
|
||||||
ASSERT "Warning! ENVVALUE != BUFFER"
|
ASSERT "Warning! ENVVALUE != BUFFER"
|
||||||
//BLOCK 1000,0
|
//BLOCK 1000,0
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|||||||
@ -149,17 +149,21 @@ XLAT_T: DB #00,#43,#00,#3F,#3D,#3B,#3C,#46,#00,#44,#42,#40,#3E,#0F,#00,#00 ;00
|
|||||||
;
|
;
|
||||||
|
|
||||||
;
|
;
|
||||||
MACRO _mSavePath
|
MACRO _mSavePath force
|
||||||
IF SAVE_PATH_MACRO
|
IF SAVE_PATH_MACRO
|
||||||
PUSH HL
|
PUSH HL
|
||||||
|
IF force==1
|
||||||
|
LD HL,BACK_CUR_PATH.force
|
||||||
|
ELSE
|
||||||
LD HL,BACK_CUR_PATH
|
LD HL,BACK_CUR_PATH
|
||||||
|
ENDIF
|
||||||
EX (SP),HL
|
EX (SP),HL
|
||||||
CALL SAVE_CUR_PATH
|
CALL SAVE_CUR_PATH
|
||||||
ENDIF
|
ENDIF
|
||||||
ENDM
|
ENDM
|
||||||
MACRO _mRestorePath
|
MACRO _mRestorePath
|
||||||
IF SAVE_PATH_MACRO
|
IF SAVE_PATH_MACRO
|
||||||
CALL BACK_CUR_PATH
|
CALL BACK_CUR_PATH.force
|
||||||
ENDIF
|
ENDIF
|
||||||
ENDM
|
ENDM
|
||||||
MACRO _mRestorStackAfterRestorePath
|
MACRO _mRestorStackAfterRestorePath
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
;---------------------------------------------------------------
|
;---------------------------------------------------------------
|
||||||
;Rev Date Name Description
|
;Rev Date Name Description
|
||||||
;---------------------------------------------------------------
|
;---------------------------------------------------------------
|
||||||
;R02 13-05-2023 BAO ˆ¨æ¨ «¨§ æ¨ï ¯¥à¥¬¥®© BOOTDSK ¯à¨ áâ à⥠;!TODO ¯à®¢¥à¨âì ª ª ã ‘ ©¬ ᤥ« ®
|
;R02 13-05-2023 BAO ˆ¨æ¨ «¨§ æ¨ï ¯¥à¥¬¥®© BOOTDSK ¯à¨ áâ àâ¥
|
||||||
;R03 09-03-2007 VAS ”ãªæ¨ï ENV_EX ⥯¥àì ®¡à¥§ ¥â ᫨誮¬ ¤«¨ãî áâப㠯¥à¥¤ ¢ë室®¬
|
;R03 09-03-2007 VAS ”ãªæ¨ï ENV_EX ⥯¥àì ®¡à¥§ ¥â ᫨誮¬ ¤«¨ãî áâப㠯¥à¥¤ ¢ë室®¬
|
||||||
;R01 19-11-2002 DNS CORRECT DE ADDRESS IN GETENV
|
;R01 19-11-2002 DNS CORRECT DE ADDRESS IN GETENV
|
||||||
;---------------------------------------------------------------
|
;---------------------------------------------------------------
|
||||||
@ -13,6 +13,7 @@
|
|||||||
; ”ãªæ¨ï #46. ‘¨á⥬®¥ ®ªà㦥¨¥.
|
; ”ãªæ¨ï #46. ‘¨á⥬®¥ ®ªà㦥¨¥.
|
||||||
;
|
;
|
||||||
; ¢å®¤: B - ®¬¥à ¯®¤äãªæ¨¨:
|
; ¢å®¤: B - ®¬¥à ¯®¤äãªæ¨¨:
|
||||||
|
; B=#FF, ¨¨æ¨ «¨§ æ¨ï
|
||||||
; B=0, ¯®«ã票¥ á¨á⥬®£® ®ªà㦥¨ï.
|
; B=0, ¯®«ã票¥ á¨á⥬®£® ®ªà㦥¨ï.
|
||||||
; HL - ¡ãä¥à
|
; HL - ¡ãä¥à
|
||||||
; B=1, ¯®«ãç¨âì ¯¥à¥¬¥ãî ®ªà㦥¨ï.
|
; B=1, ¯®«ãç¨âì ¯¥à¥¬¥ãî ®ªà㦥¨ï.
|
||||||
@ -47,6 +48,7 @@ ENVIRON:
|
|||||||
INITENV:
|
INITENV:
|
||||||
SET_PAGE_X ENVPAGE
|
SET_PAGE_X ENVPAGE
|
||||||
PUSH AF
|
PUSH AF
|
||||||
|
;
|
||||||
;R02
|
;R02
|
||||||
LD A,(BOOTDRV)
|
LD A,(BOOTDRV)
|
||||||
ADD A,'A'
|
ADD A,'A'
|
||||||
@ -65,6 +67,7 @@ INITENV:
|
|||||||
AND A
|
AND A
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
LD (ENVSIZE),HL
|
LD (ENVSIZE),HL
|
||||||
|
;
|
||||||
POP AF
|
POP AF
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
AND A
|
AND A
|
||||||
@ -82,6 +85,7 @@ READENV:
|
|||||||
LD C,SLOT3
|
LD C,SLOT3
|
||||||
IN L,(C)
|
IN L,(C)
|
||||||
EXX
|
EXX
|
||||||
|
|
||||||
LD HL,ENVIRONMENT
|
LD HL,ENVIRONMENT
|
||||||
INC HL
|
INC HL
|
||||||
POP DE
|
POP DE
|
||||||
@ -265,8 +269,8 @@ ENV_E2 LD A,(HL)
|
|||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
|
|
||||||
ENVNAME EQU EXEBUFF ;DS 32
|
ENVNAME EQU CORE_BUFFERS.EXEBUFF ;DS 32
|
||||||
ENVVALUE EQU BUFFER //#3800 ; BUFFER ;DS 128
|
ENVVALUE EQU CORE_BUFFERS.BUFFER //#3800 ; BUFFER ;DS 128
|
||||||
|
|
||||||
ENVSIZE DW DEF_ENV_SIZE ;E_END-ENVIRONMENT ;160
|
ENVSIZE DW DEF_ENV_SIZE ;E_END-ENVIRONMENT ;160
|
||||||
|
|
||||||
|
|||||||
177
DSS/EXECUTE.ASM
177
DSS/EXECUTE.ASM
@ -6,7 +6,7 @@
|
|||||||
;---------------------------------------------------------------
|
;---------------------------------------------------------------
|
||||||
;Rev Date Name Description
|
;Rev Date Name Description
|
||||||
;---------------------------------------------------------------
|
;---------------------------------------------------------------
|
||||||
;R12 20-07-2023 BAO <20>ਠ§ ¢¥à襨¨ ¯à¨«®¦¥¨ï ç¥à¥§ äãªæ¨î #41 ¨«¨ " ¢ ਩®" ¢ ¢®§¢à é ¥¬®¥ ¯à¨«®¦¥¨¥ ¯¥à¥¤ ñâáï ª®¤ ®è¨¡ª¨ ¨ ä« £ CF=1
|
//;R12 20-07-2023 BAO <20>ਠ§ ¢¥à襨¨ ¯à¨«®¦¥¨ï ç¥à¥§ äãªæ¨î #41 ¨«¨ " ¢ ਩®" ¢ ¢®§¢à é ¥¬®¥ ¯à¨«®¦¥¨¥ ¯¥à¥¤ ñâáï ª®¤ ®è¨¡ª¨ ¨ ä« £ CF=1
|
||||||
;R11 17-04-2023 BAO OPTIMIZED BUFFERS, FREED UP 768 BYTES FOR CODE
|
;R11 17-04-2023 BAO OPTIMIZED BUFFERS, FREED UP 768 BYTES FOR CODE
|
||||||
;R10 13-04-2023 BAO FIX BUG WITH PARSING DIRECTORY BUFFER
|
;R10 13-04-2023 BAO FIX BUG WITH PARSING DIRECTORY BUFFER
|
||||||
;R09 14-04-2003 DNS NOW EXEC DON'T FOLLOW TO PROGRAM'S DIR
|
;R09 14-04-2003 DNS NOW EXEC DON'T FOLLOW TO PROGRAM'S DIR
|
||||||
@ -135,7 +135,7 @@ EXTN_PR EQU 1 ;%00000010
|
|||||||
NAM_PR EQU 0 ;%00000001
|
NAM_PR EQU 0 ;%00000001
|
||||||
|
|
||||||
EX_PATH: EXX
|
EX_PATH: EXX
|
||||||
LD HL,NM_PATH_A ;BUILT-IN BUFFER FOR PATH ;!FIXIT ¥ çñ, çâ® ¨á¯®«ì§ã¥âáï ®¡é¨© ¡ãä¥à?
|
LD HL,NM_PATH_A ;BUILT-IN BUFFER FOR PATH ;!!!!! ¨á¯®«ì§ã¥âáï ®¡é¨© ¡ãä¥à
|
||||||
LD (NM_PATH),HL
|
LD (NM_PATH),HL
|
||||||
LD HL,NM_NAME_A
|
LD HL,NM_NAME_A
|
||||||
LD (NM_NAME),HL
|
LD (NM_NAME),HL
|
||||||
@ -364,7 +364,7 @@ NM_NAME_A: DB " ",#00
|
|||||||
|
|
||||||
NM_EXTN_A: DB " ",0
|
NM_EXTN_A: DB " ",0
|
||||||
|
|
||||||
NM_PATH_A EQU BUFFER ;DS 256
|
NM_PATH_A EQU CORE_BUFFERS.BUFFER ;DS 256 ;!!!!! shared buffer
|
||||||
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
@ -646,27 +646,6 @@ SETWIN2 LD C,BIOS.GetMemPage
|
|||||||
; // SLOT0 - #C2 %1100'0010
|
; // SLOT0 - #C2 %1100'0010
|
||||||
; // SLOT0 - #E2 %1110'0010
|
; // SLOT0 - #E2 %1110'0010
|
||||||
|
|
||||||
|
|
||||||
;/////////////////////////////////////////////////////////////////////
|
|
||||||
; ”ãªæ¨ï #40. ‚믮«¨âì ä ©«.
|
|
||||||
;
|
|
||||||
; ¢å®¤: HL - 㪠§ â¥«ì ¨¬ï ä ©«
|
|
||||||
; B=0 - § £à㧨âì ¨ ¢ë¯®«¨âì ¯à®£à ¬¬ã á ª®à®âª¨¬ ¨¬¥¥¬ (¡¥§ ¯®«®£® ¯ã⨠¤® ¯à®£à ¬¬ë)
|
|
||||||
; B=1 - § £à㧨âì ¨ ¢ë¯®«¨âì ¯à®£à ¬¬ã á ¯®«ë¬ ¯ãâñ¬ ¤® ¯à®£à ¬¬ë
|
|
||||||
; ¢ë室: A - ª®¤ § ¢¥à襨ï, ¥á«¨ CF=0
|
|
||||||
; ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
|
||||||
;/////////////////////////////////////////////////////////////////////
|
|
||||||
EXEC:
|
|
||||||
_mSavePath
|
|
||||||
INC B ;R03
|
|
||||||
DEC B ;R03
|
|
||||||
JP Z,EXEC0 ;R03
|
|
||||||
DEC B ;R03
|
|
||||||
JP Z,EXEC1 ;R03
|
|
||||||
LD A,DSS_Error.sys.INVALID_FUNCTION ;R03
|
|
||||||
SCF ;R03
|
|
||||||
RET ;R03
|
|
||||||
|
|
||||||
CHECKPATH: ; !TODO ᤥ« âì ¯à®¢¥àªã ª®«¨ç¥á⢮ 横«®¢
|
CHECKPATH: ; !TODO ᤥ« âì ¯à®¢¥àªã ª®«¨ç¥á⢮ 横«®¢
|
||||||
LD A,(HL)
|
LD A,(HL)
|
||||||
INC HL
|
INC HL
|
||||||
@ -697,7 +676,7 @@ FINDPATH:
|
|||||||
|
|
||||||
CALL MAKE_PATH_ARRAY
|
CALL MAKE_PATH_ARRAY
|
||||||
LD HL,PATH_PNT_ARRAY
|
LD HL,PATH_PNT_ARRAY
|
||||||
NEXTPATHI:
|
.NEXTPATHI:
|
||||||
LD E,(HL)
|
LD E,(HL)
|
||||||
INC HL
|
INC HL
|
||||||
LD D,(HL)
|
LD D,(HL)
|
||||||
@ -708,22 +687,22 @@ NEXTPATHI:
|
|||||||
PUSH BC
|
PUSH BC
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
CALL Z,GOTO_CURDIR
|
CALL Z,GOTO_CURDIR
|
||||||
CALL CHDIR
|
CALL CHDIR.tmp
|
||||||
JR C,BADPATH
|
JR C,.BADPATH
|
||||||
LD HL,EXEBUFF
|
LD HL,CORE_BUFFERS.EXEBUFF
|
||||||
LD DE,MASKARE
|
LD DE,MASKARE
|
||||||
CALL MASK
|
CALL MASK
|
||||||
JR C,BADPATH
|
JR C,.BADPATH
|
||||||
CALL TST_EXT
|
CALL TST_EXT
|
||||||
JR C,BADPATH
|
JR C,.BADPATH
|
||||||
CALL SEARCH
|
CALL SEARCH
|
||||||
BADPATH:
|
.BADPATH:
|
||||||
POP BC
|
POP BC
|
||||||
POP HL
|
POP HL
|
||||||
JR NC,PATHFOUND
|
JR NC,.PATHFOUND
|
||||||
DJNZ NEXTPATHI
|
DJNZ .NEXTPATHI
|
||||||
SCF
|
SCF
|
||||||
PATHFOUND:
|
.PATHFOUND:
|
||||||
POP BC
|
POP BC
|
||||||
LD A,B
|
LD A,B
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
@ -733,7 +712,7 @@ PATHFOUND:
|
|||||||
GOTO_CURDIR:
|
GOTO_CURDIR:
|
||||||
PUSH HL
|
PUSH HL
|
||||||
LD HL,TMP_CURDIR
|
LD HL,TMP_CURDIR
|
||||||
CALL CHDIR
|
CALL CHDIR.tmp
|
||||||
POP HL
|
POP HL
|
||||||
RET
|
RET
|
||||||
|
|
||||||
@ -779,7 +758,8 @@ NEXTCH: LD A,(DE)
|
|||||||
ENVPATH DB "PATH=",0
|
ENVPATH DB "PATH=",0
|
||||||
|
|
||||||
;;;
|
;;;
|
||||||
; !TODO ‘„…‹€’œ ‘’<E28098>“Š’“<E28099>މ
|
; !TODO ‘„…‹€’œ ‘’<E28098>“Š’“<E28099>މ ¨ ®¡®§ ç¨âì áâà ¨æã
|
||||||
|
TMP_CURDIR_AUTO EQU #FB00
|
||||||
PATH_PNT_ARRAY EQU #FC80
|
PATH_PNT_ARRAY EQU #FC80
|
||||||
TMP_CURDIR EQU #FD00
|
TMP_CURDIR EQU #FD00
|
||||||
ENVTEMP EQU #FE00
|
ENVTEMP EQU #FE00
|
||||||
@ -792,9 +772,18 @@ DECTASK: LD HL,TASK ;R08
|
|||||||
DEC (HL) ;R08
|
DEC (HL) ;R08
|
||||||
RET ;R08
|
RET ;R08
|
||||||
|
|
||||||
;------------------------------------------------------------------------
|
|
||||||
|
;/////////////////////////////////////////////////////////////////////
|
||||||
|
; ”ãªæ¨ï #40. ‚믮«¨âì ä ©«.
|
||||||
|
;
|
||||||
|
; ¢å®¤: HL - 㪠§ â¥«ì ¨¬ï ä ©«
|
||||||
|
; B=0 - § £à㧨âì ¨ ¢ë¯®«¨âì ¯à®£à ¬¬ã á ª®à®âª¨¬ ¨¬¥¥¬ (¡¥§ ¯®«®£® ¯ã⨠¤® ¯à®£à ¬¬ë)
|
||||||
|
; B=1 - § £à㧨âì ¨ ¢ë¯®«¨âì ¯à®£à ¬¬ã á ¯®«ë¬ ¯ãâñ¬ ¤® ¯à®£à ¬¬ë
|
||||||
|
; ¢ë室: A - ª®¤ § ¢¥à襨ï, ¥á«¨ CF=0
|
||||||
|
; ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||||||
|
;---------------------------------------------------------------------
|
||||||
; ‡ £à㧨âì ¨ ¢ë¯®«¨âì ¯à®£à ¬¬ã.
|
; ‡ £à㧨âì ¨ ¢ë¯®«¨âì ¯à®£à ¬¬ã.
|
||||||
; äãª. 40h, B=0.
|
; äãª. #40, B=0.
|
||||||
;
|
;
|
||||||
; 1) Žâªàë¢ ¥â exe-ä ©« ç⥨¥;
|
; 1) Žâªàë¢ ¥â exe-ä ©« ç⥨¥;
|
||||||
; 2) ‘ç¨âë¢ ¥â ¢ à ¡®çãî ®¡« áâì ¯à¥ä¨ªá exe-ä ©« ;
|
; 2) ‘ç¨âë¢ ¥â ¢ à ¡®çãî ®¡« áâì ¯à¥ä¨ªá exe-ä ©« ;
|
||||||
@ -816,13 +805,22 @@ DECTASK: LD HL,TASK ;R08
|
|||||||
; -01 1 db ? ; “஢¥ì ⥪ã饩 ¯à®£à ¬¬ë
|
; -01 1 db ? ; “஢¥ì ⥪ã饩 ¯à®£à ¬¬ë
|
||||||
; +00 1 db ? ; „«¨ ª®¬-áâப¨
|
; +00 1 db ? ; „«¨ ª®¬-áâப¨
|
||||||
; +01 127 ds ? ; <20> à ¬¥âàë ª®¬-áâப¨, § ª 稢 ¥âáï ã«¥¬
|
; +01 127 ds ? ; <20> à ¬¥âàë ª®¬-áâப¨, § ª 稢 ¥âáï ã«¥¬
|
||||||
;------------------------------------------------------------------------
|
;/////////////////////////////////////////////////////////////////////
|
||||||
EXEC0: LD (CMDLINE),HL
|
EXEC: _mSavePath 1
|
||||||
|
INC B ;R03
|
||||||
|
DEC B ;R03
|
||||||
|
JR Z,.VAR_1 ;R03
|
||||||
|
DEC B ;R03
|
||||||
|
JR Z,.VAR_2 ;R03
|
||||||
|
LD A,DSS_Error.sys.INVALID_FUNCTION ;R03
|
||||||
|
SCF ;R03
|
||||||
|
RET ;R03
|
||||||
|
;
|
||||||
|
.VAR_1: LD (CMDLINE),HL
|
||||||
CALL CHECKPATH ;CHECK FOR '\' - SHORT/FULL NAME
|
CALL CHECKPATH ;CHECK FOR '\' - SHORT/FULL NAME
|
||||||
LD HL,(CMDLINE)
|
LD HL,(CMDLINE)
|
||||||
JR C,EXEC0_SHORT
|
JR C,EXEC0_SHORT
|
||||||
|
.VAR_2: CALL EXEC_1
|
||||||
EXEC1: CALL EXEC_1
|
|
||||||
SCF
|
SCF
|
||||||
RET ; File not found - exit
|
RET ; File not found - exit
|
||||||
|
|
||||||
@ -846,6 +844,7 @@ EXEC_1: LD (CMDLINE),HL
|
|||||||
CALL DECTASK ;R08
|
CALL DECTASK ;R08
|
||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
|
;
|
||||||
.noError:
|
.noError:
|
||||||
POP HL ; ã¡¨à ¥¬ «¨è¨© ¤à¥á_¢®§¢à â _¢_¢ë§¢ ¢èãî_¯à®æ¥¤ãàã
|
POP HL ; ã¡¨à ¥¬ «¨è¨© ¤à¥á_¢®§¢à â _¢_¢ë§¢ ¢èãî_¯à®æ¥¤ãàã
|
||||||
JP EXEC02 ;R07 CONTINUE EXECUTING PROGRAM
|
JP EXEC02 ;R07 CONTINUE EXECUTING PROGRAM
|
||||||
@ -865,7 +864,7 @@ EXEC0_SHORT:
|
|||||||
CALL ENVIRON
|
CALL ENVIRON
|
||||||
|
|
||||||
LD HL,(CMDLINE)
|
LD HL,(CMDLINE)
|
||||||
LD DE,EXEBUFF
|
LD DE,CORE_BUFFERS.EXEBUFF
|
||||||
COPYEXN: LD A,(HL)
|
COPYEXN: LD A,(HL)
|
||||||
LDI
|
LDI
|
||||||
OR A
|
OR A
|
||||||
@ -876,16 +875,16 @@ COPYEXN: LD A,(HL)
|
|||||||
RET C
|
RET C
|
||||||
;
|
;
|
||||||
LD HL,(CMDLINE)
|
LD HL,(CMDLINE)
|
||||||
JR EXEC1
|
JR EXEC.VAR_2
|
||||||
|
|
||||||
EXEC02: LD (EXE_FM),A
|
EXEC02: LD (EXE_FM),A
|
||||||
LD HL,EXEBUFF
|
LD HL,CORE_BUFFERS.EXEBUFF
|
||||||
LD DE,#0080 ;!#0200(512) ;R02
|
LD DE,#0080 ;!#0200(512) ;R02
|
||||||
LD A,(EXE_FM)
|
LD A,(EXE_FM)
|
||||||
CALL READ
|
CALL READ
|
||||||
JP C,ERREXE
|
JP C,ERREXE
|
||||||
LD IX,EXEBUFF
|
LD IX,CORE_BUFFERS.EXEBUFF
|
||||||
LD HL,(EXEBUFF)
|
LD HL,(CORE_BUFFERS.EXEBUFF)
|
||||||
LD DE,'E'+'X'*256
|
LD DE,'E'+'X'*256
|
||||||
;AND A ; ¥ 㦮, ¥á«¨ ¡ë ¡ë« CF=1, â® çãâì ¢ëè¥ ¬ë ¡ë ã諨 JP C,ERREXE
|
;AND A ; ¥ 㦮, ¥á«¨ ¡ë ¡ë« CF=1, â® çãâì ¢ëè¥ ¬ë ¡ë ã諨 JP C,ERREXE
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
@ -900,13 +899,14 @@ EXEC02: LD (EXE_FM),A
|
|||||||
; LD HL,TASK
|
; LD HL,TASK
|
||||||
; INC (HL)
|
; INC (HL)
|
||||||
;
|
;
|
||||||
; HERE TO DO: BACK TO CURRDIR
|
; !TODO: BACK TO CURRDIR
|
||||||
;
|
;
|
||||||
;R09
|
;R09
|
||||||
_mRestorStackAfterRestorePath
|
_mRestorStackAfterRestorePath
|
||||||
|
_mRestorePath
|
||||||
;R09
|
;R09
|
||||||
;
|
;
|
||||||
LD DE,(EXEBUFF.LOADER)
|
LD DE,(CORE_BUFFERS.EXEBUFF.LOADER)
|
||||||
LD A,E
|
LD A,E
|
||||||
OR D
|
OR D
|
||||||
JP NZ,PRELOAD
|
JP NZ,PRELOAD
|
||||||
@ -919,7 +919,7 @@ EXEC02: LD (EXE_FM),A
|
|||||||
LD B,#02
|
LD B,#02
|
||||||
LD A,(EXE_FM)
|
LD A,(EXE_FM)
|
||||||
CALL MOVE_FP
|
CALL MOVE_FP
|
||||||
LD DE,(EXEBUFF.LD_ADDR)
|
LD DE,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
|
||||||
LD A,D
|
LD A,D
|
||||||
AND #3F
|
AND #3F
|
||||||
LD D,A
|
LD D,A
|
||||||
@ -985,19 +985,19 @@ NOINK: LD A,H
|
|||||||
LD (DE),A
|
LD (DE),A
|
||||||
;^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^;
|
;^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^;
|
||||||
LD HL,(CMDLINE)
|
LD HL,(CMDLINE)
|
||||||
LD DE,SECBUF+1
|
LD DE,CORE_BUFFERS.SECBUF+1
|
||||||
CALL SCOPYS
|
CALL SCOPYS
|
||||||
LD A,#80
|
LD A,#80 ;!HARDCODE cmd line size
|
||||||
SUB B
|
SUB B
|
||||||
LD (SECBUF),A
|
LD (CORE_BUFFERS.SECBUF),A
|
||||||
;R02
|
;R02
|
||||||
LD SP,EXEBUFF+510 ;‚áâ ¢«ï¥âáï ¢ DSS_PAGE
|
LD SP,CORE_BUFFERS.EXEBUFF+510 ;‚áâ ¢«ï¥âáï ¢ SHARED_PAGE
|
||||||
;
|
;
|
||||||
LD A,SHARED_PAGE
|
LD A,SHARED_PAGE
|
||||||
OUT (SLOT1),A
|
OUT (SLOT1),A
|
||||||
OUT (SLOT2),A
|
OUT (SLOT2),A
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
LD HL,(EXEBUFF.LD_ADDR)
|
LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
|
||||||
LD DE,RAMMAP
|
LD DE,RAMMAP
|
||||||
LD A,H
|
LD A,H
|
||||||
AND #C0
|
AND #C0
|
||||||
@ -1016,8 +1016,10 @@ FR8000: LD A,(DE)
|
|||||||
FRC000: LD A,(DE)
|
FRC000: LD A,(DE)
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
CALL M_PSP
|
CALL M_PSP
|
||||||
LD HL,(EXEBUFF.OFFCOD2)
|
|
||||||
LD IX,(EXEBUFF.OFFCOD1)
|
|
||||||
|
LD HL,(CORE_BUFFERS.EXEBUFF.OFFCOD2)
|
||||||
|
LD IX,(CORE_BUFFERS.EXEBUFF.OFFCOD1)
|
||||||
LD B,Dss.Move_FP.FrStart
|
LD B,Dss.Move_FP.FrStart
|
||||||
LD A,(EXE_FM)
|
LD A,(EXE_FM)
|
||||||
CALL MOVE_FP
|
CALL MOVE_FP
|
||||||
@ -1025,13 +1027,13 @@ FRC000: LD A,(DE)
|
|||||||
LD SP,#403F ;!HARDCODE STACK before start EXE. “áâ ¢«¨¢ ¥âáï ª®£¤ ¢®âªãâë DSS_PAGE
|
LD SP,#403F ;!HARDCODE STACK before start EXE. “áâ ¢«¨¢ ¥âáï ª®£¤ ¢®âªãâë DSS_PAGE
|
||||||
;
|
;
|
||||||
;
|
;
|
||||||
LD DE,(EXEBUFF.LD_ADDR)
|
LD DE,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
|
||||||
XOR A
|
XOR A
|
||||||
LD H,A
|
LD H,A
|
||||||
LD L,A
|
LD L,A
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
EX DE,HL ; de=ç¨á«® ç¨â. ¡ ©â
|
EX DE,HL ; de=ç¨á«® ç¨â. ¡ ©â
|
||||||
LD HL,(EXEBUFF.LD_ADDR) ; ¡ãä¥à
|
LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR) ; ¡ãä¥à
|
||||||
LD A,(EXE_FM) ; ¤¥áªà. ä ©«
|
LD A,(EXE_FM) ; ¤¥áªà. ä ©«
|
||||||
CALL READ ; ç⥨¥ ¨§ ä ©«
|
CALL READ ; ç⥨¥ ¨§ ä ©«
|
||||||
LD A,(EXE_FM) ; ¤¥áªà. ä ©«
|
LD A,(EXE_FM) ; ¤¥áªà. ä ©«
|
||||||
@ -1041,15 +1043,15 @@ FRC000: LD A,(DE)
|
|||||||
;R09
|
;R09
|
||||||
_mRestorePath
|
_mRestorePath
|
||||||
;
|
;
|
||||||
LD SP,(EXEBUFF.SP_REG)
|
LD SP,(CORE_BUFFERS.EXEBUFF.SP_REG)
|
||||||
LD HL,(EXEBUFF.LD_ADDR)
|
LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
|
||||||
LD DE,#0080
|
LD DE,#0080
|
||||||
AND A
|
AND A
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
LD XH,D
|
LD XH,D
|
||||||
LD XL,E
|
LD XL,E
|
||||||
LD HL,(EXEBUFF.PC_REG)
|
LD HL,(CORE_BUFFERS.EXEBUFF.PC_REG)
|
||||||
LD DE,RETFAR ; ¤à¥á ¯/¯ "¥®¦¨¤ ®¥ § ¢¥à襨¥ ¯à®æ¥áá "
|
LD DE,RETFAR ; ¤à¥á ¯/¯ "¥®¦¨¤ ®¥ § ¢¥à襨¥ ¯à®æ¥áá "
|
||||||
PUSH DE
|
PUSH DE
|
||||||
PUSH HL
|
PUSH HL
|
||||||
@ -1094,7 +1096,7 @@ ERREXE: PUSH AF
|
|||||||
RET
|
RET
|
||||||
|
|
||||||
PRELOAD: EX DE,HL
|
PRELOAD: EX DE,HL
|
||||||
LD DE,(EXEBUFF.LD_ADDR)
|
LD DE,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
|
||||||
LD A,D
|
LD A,D
|
||||||
AND #3F
|
AND #3F
|
||||||
LD D,A
|
LD D,A
|
||||||
@ -1131,7 +1133,7 @@ NOINK2:
|
|||||||
LD (EXSTACK),SP
|
LD (EXSTACK),SP
|
||||||
LD SP,HL
|
LD SP,HL
|
||||||
EXX
|
EXX
|
||||||
;...... ;!FIXIT.<2E>….‘Ž•<C5BD>€<EFBFBD>Ÿ…’.DE.¯¥à¥¤.¢ë§®¢®¬.BIOS..............................;
|
; <20>… ‘Ž•<C5BD>€<EFBFBD>Ÿ…’‘Ÿ DE ¯¥à¥¤ ¢ë§®¢®¬ BIOS, ¡¨®á ¯®ª ¥£® ¨ ¥ ¯®àâ¨â
|
||||||
LD A,(EXE_MEM)
|
LD A,(EXE_MEM)
|
||||||
LD DE,RAMMAP
|
LD DE,RAMMAP
|
||||||
LD BC,#00*256 + BIOS.GetMemPage
|
LD BC,#00*256 + BIOS.GetMemPage
|
||||||
@ -1154,19 +1156,19 @@ NOINK2:
|
|||||||
LD (DE),A
|
LD (DE),A
|
||||||
;^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^;
|
;^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^;
|
||||||
LD HL,(CMDLINE)
|
LD HL,(CMDLINE)
|
||||||
LD DE,SECBUF+1
|
LD DE,CORE_BUFFERS.SECBUF+1
|
||||||
CALL SCOPYS
|
CALL SCOPYS
|
||||||
LD A,#80
|
LD A,#80
|
||||||
SUB B
|
SUB B
|
||||||
LD (SECBUF),A
|
LD (CORE_BUFFERS.SECBUF),A
|
||||||
;R02
|
;R02
|
||||||
LD SP,EXEBUFF+510 ;‚áâ ¢«ï¥âáï ¢ DSS_PAGE
|
LD SP,CORE_BUFFERS.EXEBUFF+510 ;‚áâ ¢«ï¥âáï ¢ SHARED_PAGE
|
||||||
;
|
;
|
||||||
LD A,SHARED_PAGE
|
LD A,SHARED_PAGE
|
||||||
OUT (SLOT1),A
|
OUT (SLOT1),A
|
||||||
OUT (SLOT2),A
|
OUT (SLOT2),A
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
LD HL,(EXEBUFF.LD_ADDR)
|
LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
|
||||||
LD DE,RAMMAP
|
LD DE,RAMMAP
|
||||||
LD A,H
|
LD A,H
|
||||||
AND #C0
|
AND #C0
|
||||||
@ -1185,8 +1187,9 @@ FR8000H: LD A,(DE)
|
|||||||
FRC000H: LD A,(DE)
|
FRC000H: LD A,(DE)
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
CALL M_PSP
|
CALL M_PSP
|
||||||
LD HL,(EXEBUFF.OFFCOD2)
|
|
||||||
LD IX,(EXEBUFF.OFFCOD1)
|
LD HL,(CORE_BUFFERS.EXEBUFF.OFFCOD2)
|
||||||
|
LD IX,(CORE_BUFFERS.EXEBUFF.OFFCOD1)
|
||||||
LD B,Dss.Move_FP.FrStart
|
LD B,Dss.Move_FP.FrStart
|
||||||
LD A,(EXE_FM)
|
LD A,(EXE_FM)
|
||||||
CALL MOVE_FP
|
CALL MOVE_FP
|
||||||
@ -1195,8 +1198,8 @@ FRC000H: LD A,(DE)
|
|||||||
;
|
;
|
||||||
;
|
;
|
||||||
|
|
||||||
LD HL,(EXEBUFF.LD_ADDR) ; ¡ãä¥à
|
LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR) ; ¡ãä¥à
|
||||||
LD DE,(EXEBUFF.LOADER) ; ç¨á«® ç¨â. ¡ ©â
|
LD DE,(CORE_BUFFERS.EXEBUFF.LOADER) ; ç¨á«® ç¨â. ¡ ©â
|
||||||
LD A,(EXE_FM) ; ¤¥áªà. ä ©«
|
LD A,(EXE_FM) ; ¤¥áªà. ä ©«
|
||||||
CALL READ ; ç⥨¥ ¨§ ä ©«
|
CALL READ ; ç⥨¥ ¨§ ä ©«
|
||||||
|
|
||||||
@ -1204,15 +1207,15 @@ FRC000H: LD A,(DE)
|
|||||||
;R09
|
;R09
|
||||||
_mRestorePath
|
_mRestorePath
|
||||||
;
|
;
|
||||||
LD SP,(EXEBUFF.SP_REG)
|
LD SP,(CORE_BUFFERS.EXEBUFF.SP_REG)
|
||||||
LD HL,(EXEBUFF.LD_ADDR)
|
LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
|
||||||
LD DE,#0080
|
LD DE,#0080
|
||||||
AND A
|
AND A
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
LD XH,D
|
LD XH,D
|
||||||
LD XL,E
|
LD XL,E
|
||||||
LD HL,(EXEBUFF.PC_REG)
|
LD HL,(CORE_BUFFERS.EXEBUFF.PC_REG)
|
||||||
LD DE,RETFAR
|
LD DE,RETFAR
|
||||||
PUSH DE
|
PUSH DE
|
||||||
PUSH HL
|
PUSH HL
|
||||||
@ -1251,12 +1254,14 @@ LEAVE: LD A,B
|
|||||||
LD SP,HL
|
LD SP,HL
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
LD A,(ERLEVEL)
|
LD A,(ERLEVEL)
|
||||||
AND A
|
|
||||||
;R12
|
;R12
|
||||||
JR Z,.exit
|
CP DSS_Error.sys.UNEXPECTED_APP_TRMN
|
||||||
|
JR NZ,.exit
|
||||||
SCF
|
SCF
|
||||||
|
JP (HL)
|
||||||
;
|
;
|
||||||
.exit: JP (HL)
|
.exit: AND A
|
||||||
|
JP (HL)
|
||||||
|
|
||||||
;/////////////////////////////////////////////////////////////////////
|
;/////////////////////////////////////////////////////////////////////
|
||||||
; ”ãªæ¨ï #42. <20>®«ãç¨âì ª®¤ § ¢¥àè¥¨ï ¯à®£à ¬¬ë.
|
; ”ãªæ¨ï #42. <20>®«ãç¨âì ª®¤ § ¢¥àè¥¨ï ¯à®£à ¬¬ë.
|
||||||
@ -1267,13 +1272,17 @@ LEAVE: LD A,B
|
|||||||
WAIT: LD A,(ERLEVEL)
|
WAIT: LD A,(ERLEVEL)
|
||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
|
;/////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
M_PSP: LD HL,(EXEBUFF.LD_ADDR)
|
|
||||||
|
|
||||||
|
;!TODO § ¬¥¨âì âãâ CALL CURRDIR ¨ CALL CURRDSK ¤à㣮¥, ª®£¤ ¡ã¤¥â á®åà ïâìáï current dir
|
||||||
|
M_PSP: LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
|
||||||
DEC H
|
DEC H
|
||||||
LD D,H
|
LD D,H
|
||||||
LD E,L
|
LD E,L
|
||||||
INC DE
|
INC DE
|
||||||
LD BC,#00FF
|
LD BC,#00FF ;!HARDCODE
|
||||||
LD (HL),B
|
LD (HL),B
|
||||||
LDIR
|
LDIR
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
@ -1283,7 +1292,7 @@ M_PSP: LD HL,(EXEBUFF.LD_ADDR)
|
|||||||
EX DE,HL
|
EX DE,HL
|
||||||
LD XH,D
|
LD XH,D
|
||||||
LD XL,E
|
LD XL,E
|
||||||
LD HL,SECBUF
|
LD HL,CORE_BUFFERS.SECBUF
|
||||||
LD C,(HL)
|
LD C,(HL)
|
||||||
INC C
|
INC C
|
||||||
LDIR
|
LDIR
|
||||||
@ -1333,7 +1342,7 @@ M_PSP: LD HL,(EXEBUFF.LD_ADDR)
|
|||||||
;
|
;
|
||||||
RET
|
RET
|
||||||
|
|
||||||
SCOPYS: LD BC,#80*256 + ' '+1
|
SCOPYS: LD BC,#80*256 + ' '+1 ;!HARDCODE cmd line size
|
||||||
.loop: LD A,(HL)
|
.loop: LD A,(HL)
|
||||||
CP C
|
CP C
|
||||||
JR C,.copy
|
JR C,.copy
|
||||||
@ -1343,7 +1352,7 @@ SCOPYS: LD BC,#80*256 + ' '+1
|
|||||||
LD (DE),A
|
LD (DE),A
|
||||||
LD B,#80
|
LD B,#80
|
||||||
RET
|
RET
|
||||||
.copy: LD BC,#80*256 + ' '
|
.copy: LD BC,#80*256 + ' ' ;!HARDCODE cmd line size
|
||||||
.loop2: LD A,(HL)
|
.loop2: LD A,(HL)
|
||||||
LD (DE),A
|
LD (DE),A
|
||||||
INC HL
|
INC HL
|
||||||
@ -1367,7 +1376,7 @@ EXE_MEM: DB #00 ;
|
|||||||
|
|
||||||
CMDLINE: DW #0000
|
CMDLINE: DW #0000
|
||||||
|
|
||||||
EXSTACK: DW XSTACK ; ¤à¥á á⥪
|
EXSTACK: DW CORE_BUFFERS.XSTACK ; ¤à¥á á⥪
|
||||||
|
|
||||||
;R11 \\\\\\\\\\\\\\\\\\\\\\\\\\\\
|
;R11 \\\\\\\\\\\\\\\\\\\\\\\\\\\\
|
||||||
;;
|
;;
|
||||||
|
|||||||
@ -427,7 +427,7 @@ WR_FAT: SET_PAGE_X FATPAGE
|
|||||||
LD DE,16 ;!HARDCODE ;!TODO FATcacheSize
|
LD DE,16 ;!HARDCODE ;!TODO FATcacheSize
|
||||||
ADD HL,DE ;+ SIZE CASH (16 SECTORS)
|
ADD HL,DE ;+ SIZE CASH (16 SECTORS)
|
||||||
|
|
||||||
LD DE,(BootSector.S_P_F) ; ᥪâ®à®¢ FAT
|
LD DE,(CORE_BUFFERS.BootSector.S_P_F) ; ᥪâ®à®¢ FAT
|
||||||
LD A,16 ;!HARDCODE ; MAX ç¨á«® ᥪâ®à®¢ ¤«ï çâ¥¨ï ¢ ªíè ;!TODO FATcacheSize
|
LD A,16 ;!HARDCODE ; MAX ç¨á«® ᥪâ®à®¢ ¤«ï çâ¥¨ï ¢ ªíè ;!TODO FATcacheSize
|
||||||
AND A
|
AND A
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
|
|||||||
@ -423,9 +423,9 @@ KILL_FM:
|
|||||||
POP BC
|
POP BC
|
||||||
PUSH AF
|
PUSH AF
|
||||||
; ˜¥àá⨬ ¬ ¨¯ã«ïâ®àë «¨ç¨¥ ¢ ¨å £à®åã⮣® ¤à ©¢
|
; ˜¥àá⨬ ¬ ¨¯ã«ïâ®àë «¨ç¨¥ ¢ ¨å £à®åã⮣® ¤à ©¢
|
||||||
LD IY,FM_BUF-FM_BUF.Size + #C000
|
LD IY,CORE_BUFFERS.FM_BUF - CORE_BUFFERS.FM_BUF.Size + #C000
|
||||||
LD B,FMCOUNT
|
LD B,FMCOUNT
|
||||||
LD DE,FM_BUF.Size
|
LD DE,CORE_BUFFERS.FM_BUF.Size
|
||||||
.loop_fm:
|
.loop_fm:
|
||||||
ADD IY,DE
|
ADD IY,DE
|
||||||
LD A,(IY+_sFM.DRIVE)
|
LD A,(IY+_sFM.DRIVE)
|
||||||
|
|||||||
@ -412,6 +412,8 @@ REMOV_H:
|
|||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
RESE_H: XOR A
|
RESE_H: XOR A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
@ -419,13 +421,12 @@ STAT_H: XOR A
|
|||||||
RET
|
RET
|
||||||
|
|
||||||
CHEK_H:
|
CHEK_H:
|
||||||
;!TEST
|
|
||||||
LD A,#FF
|
LD A,#FF
|
||||||
;XOR A
|
;XOR A
|
||||||
;
|
;AND A
|
||||||
AND A
|
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
|
||||||
;HL:IX - SECTOR
|
;HL:IX - SECTOR
|
||||||
; DE - ADDRESS
|
; DE - ADDRESS
|
||||||
GBPB_H: PUSH IY
|
GBPB_H: PUSH IY
|
||||||
@ -444,8 +445,8 @@ GBPB_H: PUSH IY
|
|||||||
POP DE
|
POP DE
|
||||||
POP IY
|
POP IY
|
||||||
LD BC,1*256 + BIOS.DRV_READ
|
LD BC,1*256 + BIOS.DRV_READ
|
||||||
RST ToBIOS
|
JP ToBIOS
|
||||||
RET
|
;RET
|
||||||
|
|
||||||
;HL:IX - SECTOR
|
;HL:IX - SECTOR
|
||||||
; DE - ADDRESS
|
; DE - ADDRESS
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
397
|
454
|
||||||
@ -15,7 +15,7 @@ DSS_MAX_DRIVES_AMOUNT EQU 26
|
|||||||
DEFINE TABisSPACES 0
|
DEFINE TABisSPACES 0
|
||||||
DEFINE EnoughtOnly_LF 0
|
DEFINE EnoughtOnly_LF 0
|
||||||
DEFINE CLASSIC_CURSOR 0
|
DEFINE CLASSIC_CURSOR 0
|
||||||
DEFINE SAVE_PATH_MACRO 0
|
DEFINE SAVE_PATH_MACRO 1
|
||||||
DEFINE MINIMUM_BIOS_VERSION 2*256 + 55 ; version 2.55
|
DEFINE MINIMUM_BIOS_VERSION 2*256 + 55 ; version 2.55
|
||||||
;
|
;
|
||||||
;-------------------[MEMORY]-------------------------;
|
;-------------------[MEMORY]-------------------------;
|
||||||
|
|||||||
@ -3,14 +3,13 @@
|
|||||||
; DEL, ERASE. “¤ «¨âì ä ©«
|
; DEL, ERASE. “¤ «¨âì ä ©«
|
||||||
;
|
;
|
||||||
;///////////////////////////////////////////////////
|
;///////////////////////////////////////////////////
|
||||||
cmd_del:ex de,hl
|
cmd_del: ex de,hl
|
||||||
;ld de,T9186
|
|
||||||
ld de,work_buffer1;
|
ld de,work_buffer1;
|
||||||
ld c,Dss.GSwitch
|
ld c,Dss.GSwitch
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
;ld hl,T9186
|
|
||||||
ld hl,work_buffer1;
|
ld hl,work_buffer1;
|
||||||
ld c,Dss.Delete
|
ld c,Dss.Delete
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
call c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
call c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
||||||
ret
|
ret
|
||||||
|
;///////////////////////////////////////////////////
|
||||||
@ -16,12 +16,15 @@ cmd_dir: push de
|
|||||||
ex de,hl
|
ex de,hl
|
||||||
ld a,(hl)
|
ld a,(hl)
|
||||||
or a
|
or a
|
||||||
jr nz,$+5 ; § ¤ ¬ ᪠¨¬¥
|
jr nz,1F ; § ¤ ¬ ᪠¨¬¥
|
||||||
ld hl,mask_fname ; "*.*"
|
ld hl,mask_fname ; "*.*"
|
||||||
;ld de,T9186 ; ¡ãä¥à
|
;ld de,T9186 ; ¡ãä¥à
|
||||||
ld de,work_buffer1 ; 80
|
1: ld de,work_buffer1 ; 80
|
||||||
ld c,Dss.GSwitch ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬-áâப¨
|
ld c,Dss.GSwitch ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬-áâப¨
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
|
; [ ] 1/10/23
|
||||||
|
|
||||||
|
;
|
||||||
;ld hl,T9186 ; ¨¬ï ä ©«
|
;ld hl,T9186 ; ¨¬ï ä ©«
|
||||||
;ld de,T9186 ; ¡ãä¥à
|
;ld de,T9186 ; ¡ãä¥à
|
||||||
ld hl,work_buffer1 ; ¨¬ï ä ©«
|
ld hl,work_buffer1 ; ¨¬ï ä ©«
|
||||||
|
|||||||
@ -120,6 +120,7 @@ NOUP: sub "A" ;
|
|||||||
ld (hl),0
|
ld (hl),0
|
||||||
dec hl
|
dec hl
|
||||||
ld (hl),'\'
|
ld (hl),'\'
|
||||||
|
|
||||||
;!TODO ¤®áâ ¢ âì system_path ®â¤¥«ì® ¤«ï ª ¦¤®£® ¤¨áª (¨«¨ ¢ ï¤à¥ ᤥ« âì?)
|
;!TODO ¤®áâ ¢ âì system_path ®â¤¥«ì® ¤«ï ª ¦¤®£® ¤¨áª (¨«¨ ¢ ï¤à¥ ᤥ« âì?)
|
||||||
IFDEF MANY_SYS_PATHES
|
IFDEF MANY_SYS_PATHES
|
||||||
ld c,Dss.ChDir ; ãáâ. ⥪. ¯ãâì
|
ld c,Dss.ChDir ; ãáâ. ⥪. ¯ãâì
|
||||||
@ -155,10 +156,10 @@ A839D: ld bc,0*256 + Dss.Exec ;
|
|||||||
;R10
|
;R10
|
||||||
ret nc ; Ok
|
ret nc ; Ok
|
||||||
ld hl,(D8374)
|
ld hl,(D8374)
|
||||||
cp 3 ; ª®¤ ®è¨¡ª¨ "ä ©« ¥ ®¡ à㦥"
|
cp DSS_Error.sys.FILE_NOT_FOUND
|
||||||
jr nz,A83DD
|
jr nz,A83DD
|
||||||
push hl
|
push hl
|
||||||
;ld a,(D96AD) ;; ¤«¨ áâப¨ (inline.asm)
|
;ld a,(D96AD) ; か┃<E3818B> 痰牀<E797B0> (inline.asm)
|
||||||
ld a,(struct_input_line+4) ; ¤«¨ áâப¨
|
ld a,(struct_input_line+4) ; ¤«¨ áâப¨
|
||||||
ld b,a
|
ld b,a
|
||||||
A83AF: ld a,(hl)
|
A83AF: ld a,(hl)
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
80
|
84
|
||||||
Loading…
Reference in New Issue
Block a user