Fix nls upcase problem with SS!=DS.

git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@728 6ac86273-5f31-0410-b378-82cca8765d1b
This commit is contained in:
Bart Oldeman 2003-11-30 04:08:27 +00:00
parent a56e592871
commit 21f2b2ec5e
2 changed files with 9 additions and 2 deletions

View File

@ -72,6 +72,11 @@ void __int__(int);
#define CDECL _cdecl #define CDECL _cdecl
#define PASCAL pascal #define PASCAL pascal
#define __int__(intno) asm int intno; #define __int__(intno) asm int intno;
#define _SS SS()
static unsigned short __inline SS(void)
{
asm mov ax, ss;
}
#if defined(M_I286) /* /G3 doesn't set M_I386, but sets M_I286 TE */ #if defined(M_I286) /* /G3 doesn't set M_I386, but sets M_I286 TE */
#define I386 #define I386
@ -85,6 +90,9 @@ void __int__(int);
#define far __far #define far __far
#define CDECL __cdecl #define CDECL __cdecl
#define PASCAL pascal #define PASCAL pascal
#define _SS SS()
unsigned short SS(void);
#pragma aux SS = "mov dx,ss" value [dx];
#if _M_IX86 >= 300 #if _M_IX86 >= 300
#define I386 #define I386

View File

@ -475,9 +475,8 @@ VOID DosUpMem(VOID FAR * str, unsigned len)
unsigned char ASMCFUNC DosUpChar(unsigned char ch) unsigned char ASMCFUNC DosUpChar(unsigned char ch)
/* upcase a single character */ /* upcase a single character */
{ {
assertDSeqSS(); /* because "&ch" */
log(("NLS: DosUpChar(): in ch=%u (%c)\n", ch, ch > 32 ? ch : ' ')); log(("NLS: DosUpChar(): in ch=%u (%c)\n", ch, ch > 32 ? ch : ' '));
DosUpMem((UBYTE FAR *) & ch, 1); DosUpMem(MK_FP(_SS, &ch), 1);
log(("NLS: DosUpChar(): upcased ch=%u (%c)\n", ch, ch > 32 ? ch : ' ')); log(("NLS: DosUpChar(): upcased ch=%u (%c)\n", ch, ch > 32 ? ch : ' '));
return ch; return ch;
} }