home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / snip9707.zip / PCHWIO.C < prev    next >
C/C++ Source or Header  |  1997-07-05  |  1KB  |  73 lines

  1. /* +++Date last modified: 05-Jul-1997 */
  2.  
  3. /*
  4. **  PCHWIO.C - SNIPPETS portable hardware I/O access under DOS
  5. **
  6. **  public domain by Bob Stout
  7. */
  8.  
  9. #include "pchwio.h"
  10. #include "mk_fp.h"
  11.  
  12. #if defined(__ZTC__) && !defined(__SC__)
  13.  
  14. void FAR * getvect(unsigned intnum)
  15. {
  16.       unsigned seg, off;
  17.  
  18.       int_getvector(intnum, &off, &seg);
  19.       return MK_FP(seg, off);
  20. }
  21.  
  22. void setvect(unsigned intnum, void (INTERRUPT FAR *handler)())
  23. {
  24.       unsigned seg = FP_SEG(handler), off = FP_OFF(handler);
  25.  
  26.       int_setvector(intnum, off, seg);
  27. }
  28.  
  29. #endif /* ZTC getvect(), setvect() */
  30.  
  31.  
  32.  
  33. #if defined(_MSC_VER) || defined(__WATCOMC__) || \
  34.       defined(__ZTC__) || defined(__SC__)
  35.  
  36. #if !defined(MK_FP)
  37.  #define MK_FP(seg,off) ((void far *)(((long)(seg) << 16)|(unsigned)(off)))
  38. #endif
  39.  
  40. unsigned char Peekb(unsigned seg, unsigned ofs)
  41. {
  42.         unsigned char FAR *ptr;
  43.  
  44.         ptr = MK_FP(seg, ofs);
  45.         return *ptr;
  46. }
  47.  
  48. unsigned short Peekw(unsigned seg, unsigned ofs)
  49. {
  50.         unsigned FAR *ptr;
  51.  
  52.         ptr = MK_FP(seg, ofs);
  53.         return *ptr;
  54. }
  55.  
  56. void Pokeb(unsigned seg, unsigned ofs, unsigned char ch)
  57. {
  58.         unsigned char FAR *ptr;
  59.  
  60.         ptr = MK_FP(seg, ofs);
  61.         *ptr = ch;
  62. }
  63.  
  64. void Pokew(unsigned seg, unsigned ofs, unsigned short num)
  65. {
  66.         unsigned FAR *ptr;
  67.  
  68.         ptr = MK_FP(seg, ofs);
  69.         *ptr = num;
  70. }
  71.  
  72. #endif /* MSC/ZTC/WC Peek(), poke() */
  73.