Mail Archives: djgpp/2001/07/19/07:18:36
Eli Zaretskii wrote:
>On Thu, 19 Jul 2001 Sterten AT aol DOT com wrote:
>
>> 1) what's the shortest complete program that pokes a face (ascii 1)
>> into the exact middle of the screen and exits to DOS ?
>
>_farpokeb (_dos_ds, ScreenPrimary + 12*160 + 80, 1);
>
>(This is not a complete program, but the rest is easy to add.)
not for me. Although I found and printed some helpful tutorials
from avly meanwhile.
Here are my attempts so far:
------------------------------------------------------------------
#include<go32.h>
#include<dpmi.h>
#include<sys/farptr.h>
_farpokeb (_dos_ds, ScreenPrimary + 12*160 + 80, 1);
D:\GCC203>gcc video3.c -o video3.out
video3.c:5: parse error before `.'
video3.c:5: conflicting types for `_farpokeb'
d:/gcc203/include/sys/farptr.h:84: previous declaration of `_farpokeb'
video3.c:5: warning: data definition has no type or storage class
---------------------------------------------------------------------
#include<go32.h>
#include<dpmi.h>
#include<sys/nearptr.h>
unsigned char *videoptr=(unsigned char *)0xB8000;
__djgpp_nearptr_enable();
videoptr[12*160+80+__djgpp_conventional_base]=1;
__djgpp_nearptr_disable();
D:\GCC203>gcc video.c -o video.exe
video.c:7: warning: data definition has no type or storage class
video.c:8: variable-size type declared outside of any function
video.c:8: variable-sized object may not be initialized
video.c:8: conflicting types for `videoptr'
video.c:5: previous declaration of `videoptr'
video.c:8: warning: data definition has no type or storage class
video.c:9: conflicting types for `__djgpp_nearptr_disable'
d:/gcc203/include/sys/nearptr.h:20: previous declaration of
`__djgpp_nearptr_dis
able'
video.c:9: warning: data definition has no type or storage class
-------------------------------------------------------------------
#include<go32.h>
void main(){
--asm--("
movw %0,%%ax\n
movw %%ax,%%es\n
movl $0xb87d0,%%edi\n
movb $1,%%al\n
stosb\n
"
:
:"g"(_dos_ds)
);
}
D:\GCC203>gcc video2.c -o video2.exe
video2.c:3: parse error before `--'
------------------------------------------------------------------
>> 2) what , if it has to be fast (~50 cycles)
>
>The above line of code expands into 2 instructions of inline assembly.
>How much faster can you ask it to be?
that's OK. This was for the case that you were calling int 21h or such,
e.g. with printf
>> 3) what , if it is required to compile on a large variety of compilers ?
>
>Forget it: the glyph which will be displayed when you put ASCII 001 to
>the screen is not the same on each system, and the way to print directly
>to the screen memory is different on every OS and each compiler.
but it would be possible to write a routine, that works on the
-say- 5 most common compilers . Wouldn't it ?
It is very unsatisfactory IMO , when all the different compilers
are so much incompatible !
Guenter
- Raw text -