1
0
Fork 0

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:
Peter Veenstra 2004-05-04 18:34:08 +00:00
parent afbc7f8828
commit e3a7a48687
15 changed files with 271 additions and 180 deletions

View file

@ -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);

View file

@ -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>

View file

@ -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];

View file

@ -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();