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