OSDN Git Service

updated copyleft and need to test and fix newer version of open watcom
[proj16/16.git] / src / lib / 16_t.h
index ada39a1..1e07121 100755 (executable)
@@ -1,5 +1,5 @@
 /* Project 16 Source Code~\r
- * Copyright (C) 2012-2016 sparky4 & pngwen & andrius4669 & joncampbell123 & yakui-lover\r
+ * Copyright (C) 2012-2022 sparky4 & pngwen & andrius4669 & joncampbell123 & yakui-lover\r
  *\r
  * This file is part of Project 16.\r
  *\r
@@ -41,27 +41,98 @@ typedef unsigned long int diword;
 typedef signed long int sdiword;\r
 \r
 typedef        enum    {false,true}    boolean;\r
+typedef        enum    {ichi,ni,san,yon,go,roku,shichi,hachi,kyu,ju,juichi,juni,jusan,juyon,jugo,juroku}       nibble;\r
+//typedef      unsigned nibb:4 nibble;\r
+\r
+#define HI_NIBBLE(b) (((b) >> 4) & 0x0F)\r
+#define LO_NIBBLE(b) ((b) & 0x0F)\r
 /*typedef unsigned memseg;\r
 \r
 memptr should be replaced by memseg in code.\r
-\r
 on usage where you need pointer convert memseg type (segment) to far pointer by\r
 MK_FP(segment value, 0)*/\r
-#ifdef __WATCOMC__\r
+       #ifdef __WATCOMC__\r
+//typedef void __based( void ) * memptr;       ////old //----typedef void __based(__self) * memptr;\r
 //typedef unsigned short _seg; // it will contains segment value (as Borland _seg)\r
 #define _seg __based( void )\r
-#define __SEGA __segment\r
-#endif\r
+       #endif\r
+\r
+typedef void _seg * memptr;\r
+\r
+#define MEMPTRCONV                     (memptr *)&\r
+\r
+//bcc\r
 #ifdef __BORLANDC__\r
-//typedef void _seg * memptr;\r
-#define __SEGA _seg\r
+#define MEMPTRANDPERCONV       &\r
+//#define BYTEFARPTRCONV               (unsigned char far *)\r
+//#define SMDPTRANDPERCONV     &\r
+//#define SDFPTRANDPERCONV     &\r
+//#define OBTPTRANDPERCONV     &\r
+//#define SDTPTRANDPERCONV     &\r
+\r
+#define _nmalloc malloc\r
+#define _nfree free\r
+\r
+#define _nheapwalk heapwalk\r
+#define _fheapwalk farheapwalk\r
+\r
+//heapinfo vars\r
+#define _heapinfo heapinfo\r
+#define _pentry        ptr\r
+#define _size  size\r
+#define _useflag       in_use\r
 #endif\r
+//\r
 \r
-typedef void _seg * memptr;//typedef void __based( void ) * memptr;    ////old //----typedef void __based(__self) * memptr;\r
+//wcc\r
+#ifdef __WATCOMC__     //functions found in borland c but not watcom c\r
+#define MEMPTRANDPERCONV\r
+//#define BYTEFARPTRCONV\r
+//#define SMDPTRANDPERCONV     (void *)&\r
+//#define SDFPTRANDPERCONV     (struct diskfree_t *)&\r
+//#define OBTPTRANDPERCONV     (void const *)&\r
+//#define SDTPTRANDPERCONV     (struct dostime_t *)&\r
 \r
-#ifdef __WATCOMC__\r
 #define _argv __argv\r
 #define _argc __argc\r
+#define EINVFMT EMFILE\r
+#define geninterrupt(n) int86(n,&CPURegs,&CPURegs);\r
+\r
+#define peekb(segm,ofs) (*(byte far*)MK_FP((segm),(ofs)))\r
+#define peek(segm,ofs) (*(word far*)MK_FP((segm),(ofs)))\r
+#define pokeb(segm,ofs,value) (peekb((segm),(ofs)) = (byte)(value))\r
+#define poke(segm,ofs,value) (peek((segm),(ofs)) = (word)(value))\r
+\r
+#define inportb(port)          inp(port)\r
+#define inport(port)           inpw(port)\r
+#define outportb(port, val)    outp(port, val)\r
+#define outport(port, val)     outpw(port, val)\r
+\r
+#define asm __asm\r
+#define getvect _dos_getvect\r
+#define setvect _dos_setvect\r
+\r
+#define farmalloc _fmalloc\r
+#define farfree _ffree\r
+#define nearmalloc _nmalloc\r
+#define nearfree _nfree\r
+\r
+//from http://www.verycomputer.com/3_65d875cc818b54ec_1.htm\r
+void clrscr(void);\r
+#pragma aux clrscr=\\r
+       " mov ah, 0fh "\\r
+       " int 10h "\\r
+       " xor ah, ah "\\r
+       " int 10h ";\r
+\r
+//from http://stackoverflow.com/questions/18425748/gotoxy-function-using-printf-s-position\r
+inline void gotoxy(int x,int y)\r
+{\r
+       printf("\x1B[%d;%df", y, x);\r
+       fflush(stdout);  // @jxh\r
+}\r
 #endif\r
 \r
+#define PFDT   printf(".");\r
+\r
 #endif/*_TYPE_H_*/\r