home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Simtel MSDOS 1992 December
/
simtel1292_SIMTEL_1292_Walnut_Creek.iso
/
msdos
/
c
/
cnews008.arc
/
HGRAPH.ARC
/
H_GRAPH.C
< prev
next >
Wrap
C/C++ Source or Header
|
1988-05-14
|
2KB
|
103 lines
#include <h_graph.h>
#include <conio.h>
#include <dos.h>
int h_isherc()
{
union REGS reg;
char save_byte;
extern char far *h_p;
reg.h.ah=15;
int86(16,®,®);
if(reg.h.al!=7) return(-1);
save_byte=*(h_p+65535);
h_p=H_MEMLOC;
*(h_p+65535)=170;
if(*(h_p+65535)!=170) return(1);
*(h_p+65535)=85;
if(*(h_p+65535)!=85) return(1);
*(h_p+65535)=save_byte;
return(0);
}
int h_init(mode)
int mode;
{
extern int h_vpage,h_apage,h_xpos,h_ypos;
extern int h_pmode,h_vmode,h_color,h_start;
extern int h_xmax,h_xmin,h_ymax,h_ymin;
extern char far *h_p;
char text[]={97,80,82,15,25,6,25,25,2,13,11,12,0,0,0,0};
char graph[]={53,45,46,7,91,2,87,87,2,3,0,0,0,0,0,0};
char *ptr;
unsigned i;
union REGS reg;
outp(MODEPORT,((h_vmode==99)?2:0));
ptr=((mode==99)?graph:text);
reg.h.ah=0;
reg.h.al=((mode==99)?6:7);
int86(0x10,®,®);
outp(MODEPORT,((mode==99)?2:0));
for(i=0;i<16;i++)
{
outp(ADDRPORT,i);
outp(DATAPORT,*(ptr+i));
}
h_vpage=h_apage=h_xmin=h_ymin=h_ypos=h_xpos=h_pmode=h_start=0;
h_vmode=((mode==99)?99:7);
h_xmax=719;
h_ymax=347;
if(mode==99)
{
for(i=0;i<65535;i++) *(h_p+i)=0;
}
h_color=1;
outp(MODEPORT,((mode==99)?10:8));
return(h_vmode);
}
int h_setvpage(page)
int page;
{
extern int h_vpage;
extern int h_vmode;
int old_page;
if(h_vmode==99)
{
outp(MODEPORT,10+((page==1)?128:0));
}
old_page=h_vpage;
h_vpage=page;
return(old_page);
}
void h_onoff(on)
int on;
{
extern int h_vmode;
extern int h_vpage;
outp(MODEPORT,((on)?8:0)+((h_vpage==1)?128:0)+((h_vmode==99)?2:0));
}
int m_init(buttons)
int *buttons;
{
union REGS reg;
reg.x.ax=0;
int86(0x33,®,®);
*buttons=reg.x.bx;
return(reg.x.ax);
}
void m_cursor(on)
int on;
{
union REGS reg;
reg.x.ax=((on)?1:2);
int86(0x33,®,®);
}