text: /*
  **  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() */
  