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