1
0
Fork 0

Add Beta2 patch:Fix nc5 installer.

Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@2731
This commit is contained in:
Peter Veenstra 2007-01-08 20:36:53 +00:00
parent 24b3c2a1b8
commit ca8b788e12
3 changed files with 52 additions and 11 deletions

View file

@ -16,7 +16,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/* $Id: dos_inc.h,v 1.64 2007-01-08 20:10:34 qbix79 Exp $ */
/* $Id: dos_inc.h,v 1.65 2007-01-08 20:36:53 qbix79 Exp $ */
#ifndef DOSBOX_DOS_INC_H
#define DOSBOX_DOS_INC_H
@ -616,7 +616,9 @@ struct DOS_Block {
RealPt mediaid;
RealPt tempdta;
RealPt tempdta_fcbdelete;
RealPt dcbs;
RealPt dbcs;
RealPt filenamechar;
RealPt collatingseq;
Bit8u* country;//Will be copied to dos memory. resides in real mem
} tables;
Bit16u loaded_codepage;

View file

@ -16,7 +16,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/* $Id: dos.cpp,v 1.97 2007-01-08 19:45:39 qbix79 Exp $ */
/* $Id: dos.cpp,v 1.98 2007-01-08 20:36:53 qbix79 Exp $ */
#include <stdlib.h>
#include <string.h>
@ -838,8 +838,8 @@ static Bitu DOS_21Handler(void) {
break;
case 0x63: /* DOUBLE BYTE CHARACTER SET */
if(reg_al == 0) {
SegSet16(ds,RealSeg(dos.tables.dcbs));
reg_si=RealOff(dos.tables.dcbs);
SegSet16(ds,RealSeg(dos.tables.dbcs));
reg_si=RealOff(dos.tables.dbcs);
reg_al = 0;
CALLBACK_SCF(false); //undocumented
} else reg_al = 0xff; //Doesn't officially touch carry flag
@ -870,14 +870,24 @@ static Bitu DOS_21Handler(void) {
}
CALLBACK_SCF(false);
break;
case 0x05: // Get pointer to filename terminator table
mem_writeb(data + 0x00, reg_al);
mem_writed(data + 0x01, dos.tables.filenamechar);
reg_cx = 5;
CALLBACK_SCF(false);
break;
case 0x06: // Get pointer to collating sequence table
mem_writeb(data + 0x00, reg_al);
mem_writed(data + 0x01, dos.tables.collatingseq);
reg_cx = 5;
CALLBACK_SCF(false);
break;
case 0x02: // Get pointer to uppercase table
case 0x03: // Get pointer to lowercase table
case 0x04: // Get pointer to filename uppercase table
case 0x05: // Get pointer to filename terminator table
case 0x06: // Get pointer to collating sequence table
case 0x07: // Get pointer to double byte char set table
mem_writeb(data + 0x00, reg_al);
mem_writed(data + 0x01, dos.tables.dcbs); //used to be 0
mem_writed(data + 0x01, dos.tables.dbcs); //used to be 0
reg_cx = 5;
CALLBACK_SCF(false);
break;

View file

@ -16,7 +16,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/* $Id: dos_tables.cpp,v 1.25 2007-01-08 20:10:34 qbix79 Exp $ */
/* $Id: dos_tables.cpp,v 1.26 2007-01-08 20:36:53 qbix79 Exp $ */
#include "dosbox.h"
#include "mem.h"
@ -108,8 +108,37 @@ void DOS_SetupTables(void) {
/* Allocate DCBS DOUBLE BYTE CHARACTER SET LEAD-BYTE TABLE */
dos.tables.dcbs=RealMake(DOS_GetMemory(12),0);
mem_writed(Real2Phys(dos.tables.dcbs),0); //empty table
dos.tables.dbcs=RealMake(DOS_GetMemory(12),0);
mem_writed(Real2Phys(dos.tables.dbcs),0); //empty table
/* FILENAME CHARACTER TABLE */
dos.tables.filenamechar=RealMake(DOS_GetMemory(2),0);
mem_writew(Real2Phys(dos.tables.filenamechar)+0x00,0x16);
mem_writeb(Real2Phys(dos.tables.filenamechar)+0x02,0x01);
mem_writeb(Real2Phys(dos.tables.filenamechar)+0x03,0x00); // allowed chars from
mem_writeb(Real2Phys(dos.tables.filenamechar)+0x04,0xff); // ...to
mem_writeb(Real2Phys(dos.tables.filenamechar)+0x05,0x00);
mem_writeb(Real2Phys(dos.tables.filenamechar)+0x06,0x00); // excluded chars from
mem_writeb(Real2Phys(dos.tables.filenamechar)+0x07,0x20); // ...to
mem_writeb(Real2Phys(dos.tables.filenamechar)+0x08,0x02);
mem_writeb(Real2Phys(dos.tables.filenamechar)+0x09,0x0e); // number of illegal separators
mem_writeb(Real2Phys(dos.tables.filenamechar)+0x0a,0x2e);
mem_writeb(Real2Phys(dos.tables.filenamechar)+0x0b,0x22);
mem_writeb(Real2Phys(dos.tables.filenamechar)+0x0c,0x2f);
mem_writeb(Real2Phys(dos.tables.filenamechar)+0x0d,0x5c);
mem_writeb(Real2Phys(dos.tables.filenamechar)+0x0e,0x5b);
mem_writeb(Real2Phys(dos.tables.filenamechar)+0x0f,0x5d);
mem_writeb(Real2Phys(dos.tables.filenamechar)+0x10,0x3a);
mem_writeb(Real2Phys(dos.tables.filenamechar)+0x11,0x7c);
mem_writeb(Real2Phys(dos.tables.filenamechar)+0x12,0x3c);
mem_writeb(Real2Phys(dos.tables.filenamechar)+0x13,0x3e);
mem_writeb(Real2Phys(dos.tables.filenamechar)+0x14,0x2b);
mem_writeb(Real2Phys(dos.tables.filenamechar)+0x15,0x3d);
mem_writeb(Real2Phys(dos.tables.filenamechar)+0x16,0x3b);
mem_writeb(Real2Phys(dos.tables.filenamechar)+0x17,0x2c);
/* COLLATING SEQUENCE TABLE */
dos.tables.collatingseq=RealMake(DOS_GetMemory(17),0);
mem_writew(Real2Phys(dos.tables.collatingseq),0x100);
for (i=0; i<256; i++) mem_writeb(Real2Phys(dos.tables.collatingseq)+i+2,i);
/* Create a fake FCB SFT */
seg=DOS_GetMemory(4);