home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Crawly Crypt Collection 1
/
crawlyvol1.bin
/
tt
/
tt2sthi
/
tt2sthi.c
< prev
next >
Wrap
C/C++ Source or Header
|
1991-04-08
|
2KB
|
86 lines
#include<stdlib.h>
#include<stdio.h>
#include<tos.h>
#include<string.h>
typedef enum {FALSE, TRUE} boolean;
#define ST_LORES 0
#define ST_HIRES 2
boolean set_st_hires(void);
boolean get_cookie(char *cookie, long *value);
main()
{
if (set_st_hires())
puts("Resolution changed to ST-high.");
else
puts("Resolution not changed.");
return 0;
}
boolean set_st_hires(void)
{ long _VDO;
/* Change resolution to ST_HIRES */
/* First check whether we started from ST_LORES */
/* We may already be in a higer resolution */
if (Getrez() > ST_LORES)
return FALSE;
/* Get the _VDO (video) cookie, if it doesn't exist we have */
/* some old TOS version, no resolution change */
if (!get_cookie("_VDO", &_VDO) || _VDO < 0x200)
return FALSE;
/* values for _VDO are: */
/* 0x000 for normal ST, 0x100 for STe and 0x200 for TT */
/* return if we do not have TT video hardware */
/* change the resolution to ST_HIRES */
Setscreen((long *) -1,(long *) -1, 2);
/* Set colors to normal monochrome*/
EsetColor(254, 0);
EsetColor(255, 4095);
return TRUE;
}
/* function get_cookie*/
/* return true if cookie found, cookie value in value */
/* adapted from Rolf Kotzian, St Computer januar 91 */
boolean get_cookie(char *cookie, long *value)
{ long old_stack;
long *cookiejar;
/* get pointer to cookiejar*/
if ((int) Super((long *) 1L)== -1) /*already in supervisor mode*/
cookiejar=*((long **) 0x5a0L);
else
{ old_stack=Super(0L);
cookiejar=*((long **) 0x5a0L);
Super((void *) old_stack);
}
if (!cookiejar) /*No cookie jar*/
return FALSE;
do
{ if (!strncmp((char *)cookiejar, cookie, 4))
{ if (value)
{ *value=cookiejar[1];
return TRUE;
}
}
else
cookiejar=&cookiejar[2];
} while (cookiejar[0]); /*NULL-cookie?*/
return FALSE;
}