Mail Archives: djgpp/1993/06/12/14:35:44
Hi:
Go32 1.10 uses ESI to return bytes per scan line information. But the ESI
register in GrSetMode() function is not saved(in libgr.a). This may cause
problem if you program uses ESI as register variable.
Here is the corrected version(setmode.s in libgr.a):
/* This is file _INIT.S */
/*
** Copyright (C) 1991 DJ Delorie, 24 Kirsten Ave, Rochester NH 03867-2954
**
** This file is distributed under the terms listed in the document
** "copying.dj", available from DJ Delorie at the address above.
** A copy of "copying.dj" should accompany this file; if not, a copy
** should be available from where this file was obtained. This file
** may not be distributed without a verbatim copy of "copying.dj".
**
** This file is distributed WITHOUT ANY WARRANTY; without even the implied
** warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
.data
.globl __GrCurMode
.comm __GrCurMode,4
.globl __GrSetModeHook
.comm __GrSetModeHook,4
.text
.globl _GrSetMode
_GrSetMode:
push %ebp
movl %esp,%ebp
pushl %ebx
pushl %esi
pushl %edi
movl 8(%ebp),%eax
movl %eax,__GrCurMode
movb $0xff,%ah
movl 12(%ebp),%ecx
movl 16(%ebp),%edx
int $0x10
movl %ecx,__GrSizeX
movl %edx,__GrSizeY
decl %ecx
decl %edx
movl %ecx,__GrMaxX
movl %edx,__GrMaxY
movl %ebx,__GrCanBcopyInBlit
call _GrRefreshColors
cmpl $0,__GrSetModeHook
je L1
call *__GrSetModeHook
L1:
popl %edi
popl %esi
popl %ebx
popl %ebp
ret
- Raw text -