Added SDA.
Update DTA/PSP to use SDA. Added some more pic commands. Cleaned dos.cpp up a bit. Handled some more calls in dos.cpp. Changed execute and terminate to mess less with the dta. Removed all dta references and changes in PSP. Added some messages to messagefile for mount. Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@1787
This commit is contained in:
parent
afbc7f8828
commit
e3a7a48687
15 changed files with 271 additions and 180 deletions
|
@ -16,7 +16,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/* $Id: shell.cpp,v 1.40 2004-02-19 12:00:38 qbix79 Exp $ */
|
||||
/* $Id: shell.cpp,v 1.41 2004-05-04 18:34:08 qbix79 Exp $ */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
|
@ -376,8 +376,9 @@ void SHELL_Init() {
|
|||
strcpy(tail.buffer,init_line);
|
||||
MEM_BlockWrite(PhysMake(psp_seg,128),&tail,128);
|
||||
/* Setup internal DOS Variables */
|
||||
dos.dta=psp.GetDTA();
|
||||
dos.psp=psp_seg;
|
||||
|
||||
dos.dta(RealMake(psp_seg,0x80));
|
||||
dos.psp(psp_seg);
|
||||
|
||||
Program * new_program;
|
||||
SHELL_ProgramStart(&new_program);
|
||||
|
|
|
@ -16,6 +16,8 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/* $Id: shell_batch.cpp,v 1.13 2004-05-04 18:34:08 qbix79 Exp $ */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/* $Id: shell_cmds.cpp,v 1.40 2004-04-01 13:00:05 qbix79 Exp $ */
|
||||
/* $Id: shell_cmds.cpp,v 1.41 2004-05-04 18:34:08 qbix79 Exp $ */
|
||||
|
||||
#include <string.h>
|
||||
|
||||
|
@ -121,7 +121,7 @@ void DOS_Shell::CMD_DELETE(char * args) {
|
|||
//end can't be 0, but if it is we'll get a nice crash, who cares :)
|
||||
char * end=strrchr(full,'\\')+1;*end=0;
|
||||
char name[DOS_NAMELENGTH_ASCII];Bit32u size;Bit16u time,date;Bit8u attr;
|
||||
DOS_DTA dta(dos.dta);
|
||||
DOS_DTA dta(dos.dta());
|
||||
while (res) {
|
||||
dta.GetResult(name,size,date,time,attr);
|
||||
if (!(attr & (DOS_ATTR_DIRECTORY|DOS_ATTR_READ_ONLY))) {
|
||||
|
@ -286,7 +286,7 @@ void DOS_Shell::CMD_DIR(char * args) {
|
|||
*(strrchr(path,'\\')+1)=0;
|
||||
WriteOut(MSG_Get("SHELL_CMD_DIR_INTRO"),path);
|
||||
|
||||
DOS_DTA dta(dos.dta);
|
||||
DOS_DTA dta(dos.dta());
|
||||
bool ret=DOS_FindFirst(args,0xffff & ~DOS_ATTR_VOLUME);
|
||||
if (!ret) {
|
||||
WriteOut(MSG_Get("SHELL_CMD_FILE_NOT_FOUND"),args);
|
||||
|
@ -359,7 +359,7 @@ void DOS_Shell::CMD_DIR(char * args) {
|
|||
|
||||
void DOS_Shell::CMD_COPY(char * args) {
|
||||
StripSpaces(args);
|
||||
DOS_DTA dta(dos.dta);
|
||||
DOS_DTA dta(dos.dta());
|
||||
Bit32u size;Bit16u date;Bit16u time;Bit8u attr;
|
||||
char name[DOS_NAMELENGTH_ASCII];
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/* $Id: shell_misc.cpp,v 1.28 2004-01-10 14:03:36 qbix79 Exp $ */
|
||||
/* $Id: shell_misc.cpp,v 1.29 2004-05-04 18:34:08 qbix79 Exp $ */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
@ -196,7 +196,7 @@ void DOS_Shell::InputCommand(char * line) {
|
|||
bool res = DOS_FindFirst(mask, 0xffff & ~DOS_ATTR_VOLUME);
|
||||
if (!res) break; // TODO: beep
|
||||
|
||||
DOS_DTA dta(dos.dta);
|
||||
DOS_DTA dta(dos.dta());
|
||||
char name[DOS_NAMELENGTH_ASCII];Bit32u size;Bit16u date;Bit16u time;Bit8u attr;
|
||||
|
||||
while (res) {
|
||||
|
@ -369,10 +369,10 @@ void DOS_Shell::Execute(char * name,char * args) {
|
|||
MEM_BlockWrite(SegPhys(ss)+reg_sp+0x100,&cmd,128);
|
||||
/* Parse FCB (first two parameters) and put them into the current DOS_PSP */
|
||||
Bit8u add;
|
||||
FCB_Parsename(dos.psp,0x5C,0x00,cmd.buffer,&add);
|
||||
FCB_Parsename(dos.psp,0x6C,0x00,&cmd.buffer[add],&add);
|
||||
block.exec.fcb1=RealMake(dos.psp,0x5C);
|
||||
block.exec.fcb2=RealMake(dos.psp,0x6C);
|
||||
FCB_Parsename(dos.psp(),0x5C,0x00,cmd.buffer,&add);
|
||||
FCB_Parsename(dos.psp(),0x6C,0x00,&cmd.buffer[add],&add);
|
||||
block.exec.fcb1=RealMake(dos.psp(),0x5C);
|
||||
block.exec.fcb2=RealMake(dos.psp(),0x6C);
|
||||
/* Set the command line in the block and save it */
|
||||
block.exec.cmdtail=RealMakeSeg(ss,reg_sp+0x100);
|
||||
block.SaveData();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue