mirror of
https://github.com/stargieg/bacnet-stack
synced 2025-10-26 23:35:52 +08:00
84 lines
1.3 KiB
C
84 lines
1.3 KiB
C
/*
|
|
** PCHWIO.C - SNIPPETS portable hardware I/O access under DOS
|
|
**
|
|
** public domain by Bob Stout
|
|
*/
|
|
|
|
#include "pchwio.h"
|
|
#include "mk_fp.h"
|
|
|
|
#if defined(__ZTC__) && !defined(__SC__)
|
|
|
|
void FAR *getvect(
|
|
unsigned intnum)
|
|
{
|
|
unsigned seg, off;
|
|
|
|
int_getvector(intnum, &off, &seg);
|
|
return MK_FP(seg, off);
|
|
}
|
|
|
|
void setvect(
|
|
unsigned intnum,
|
|
void (INTERRUPT FAR * handler) ())
|
|
{
|
|
unsigned seg = FP_SEG(handler), off = FP_OFF(handler);
|
|
|
|
int_setvector(intnum, off, seg);
|
|
}
|
|
|
|
#endif /* ZTC getvect(), setvect() */
|
|
|
|
|
|
|
|
#if defined(_MSC_VER) || defined(__WATCOMC__) || \
|
|
defined(__ZTC__) || defined(__SC__)
|
|
|
|
#if !defined(MK_FP)
|
|
#define MK_FP(seg,off) ((void far *)(((long)(seg) << 16)|(unsigned)(off)))
|
|
#endif
|
|
|
|
unsigned char Peekb(
|
|
unsigned seg,
|
|
unsigned ofs)
|
|
{
|
|
unsigned char FAR *ptr;
|
|
|
|
ptr = MK_FP(seg, ofs);
|
|
return *ptr;
|
|
}
|
|
|
|
unsigned short Peekw(
|
|
unsigned seg,
|
|
unsigned ofs)
|
|
{
|
|
unsigned FAR *ptr;
|
|
|
|
ptr = MK_FP(seg, ofs);
|
|
return *ptr;
|
|
}
|
|
|
|
void Pokeb(
|
|
unsigned seg,
|
|
unsigned ofs,
|
|
unsigned char ch)
|
|
{
|
|
unsigned char FAR *ptr;
|
|
|
|
ptr = MK_FP(seg, ofs);
|
|
*ptr = ch;
|
|
}
|
|
|
|
void Pokew(
|
|
unsigned seg,
|
|
unsigned ofs,
|
|
unsigned short num)
|
|
{
|
|
unsigned FAR *ptr;
|
|
|
|
ptr = MK_FP(seg, ofs);
|
|
*ptr = num;
|
|
}
|
|
|
|
#endif /* MSC/ZTC/WC Peek(), poke() */
|