]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/16_head.h
last time i will start wolf3d core port after exam on thursday
[16.git] / src / lib / 16_head.h
old mode 100644 (file)
new mode 100755 (executable)
index f74e882..c055943
@@ -1,5 +1,5 @@
 /* Project 16 Source Code~\r
- * Copyright (C) 2012-2015 sparky4 & pngwen & andrius4669\r
+ * Copyright (C) 2012-2018 sparky4 & pngwen & andrius4669 & joncampbell123 & yakui-lover\r
  *\r
  * This file is part of Project 16.\r
  *\r
  *\r
  */\r
 \r
-#if !defined(__LARGE__) && !defined(__COMPACT__) && !defined(__HUGE__)\r
-#error Invalid memory model for compiling project 16\r
-#endif\r
+//#if !defined(__LARGE__) && !defined(__COMPACT__) && !defined(__HUGE__)\r
+//#error Invalid memory model for compiling project 16\r
+//#endif\r
 \r
 #if !defined(__i86__) && defined(__i386__)\r
 #error i8088 only\r
 #endif\r
 \r
-#ifndef _LIBHEAD_H_\r
-#define _LIBHEAD_H_\r
+#ifndef __16_HEAD_H__\r
+#define __16_HEAD_H__\r
 #include <dos.h>\r
 #include <stdio.h>\r
-#include <conio.h> // just for wait\r
-#include <time.h> // just for wait\r
 #include <stdlib.h>\r
-#include <malloc.h>\r
+#include <conio.h> // this is where Open Watcom hides the outp() etc. functions // just for wait\r
+#include <time.h> // just for wait\r
 #include <ctype.h>\r
 #include <fcntl.h>\r
+#include <io.h>\r
 #include <sys/stat.h>\r
 #include <mem.h>\r
+#include <string.h>\r
+#include <limits.h>\r
+#include <errno.h>\r
+#include <process.h>\r
 #ifdef __WATCOMC__\r
 #include <i86.h>\r
 #include <unistd.h>\r
 #include <alloca.h>\r
-#include "src/lib/nyan/kitten.h"\r
+#include <stdint.h> //16_vrs.h\r
+#endif\r
+#ifdef __BORLANDC__\r
+#include <values.h>\r
+#include <dir.h>\r
+#define TILEWH 16\r
 #endif\r
-#include "src/lib/types.h"\r
+#include "src/lib/16_t.h"\r
+#include "src/lib/16_tdef.h"\r
+#include "src/lib/nyan/kitten.h"\r
 \r
-//0000 test type def wwww\r
-struct list {\r
-       struct list __based(__self) *next;\r
-       int         value;\r
-};\r
+#define VERSION __DATE__ " " __TIME__\r
 \r
 /* Control codes for all keys on the keyboard */\r
 //here temperarly\r
@@ -146,51 +153,100 @@ struct list {
 #define KEY_MENU               (0x75)\r
 */\r
 \r
-static dword far* clockdw= (dword far*) 0x046C; /* 18.2hz clock */\r
+//static word far* clockw= (word far*) 0x046C; /* 18.2hz clock */\r
 extern int                     profilehandle,debughandle;      //make it into game global\r
 \r
-#define __DEBUG__\r
+//#define OLD16_VL\r
 \r
 #define        nil     ((void *)0)\r
 \r
 #ifdef __WATCOMC__\r
-#define peekb(segm,ofs) (*(byte far*)MK_FP((segm),(ofs)))\r
-#define peekw(segm,ofs) (*(word far*)MK_FP((segm),(ofs)))\r
-#define pokeb(segm,ofs,value) (peekb((segm),(ofs)) = (byte)(value))\r
-#define pokew(segm,ofs,value) (peekw((segm),(ofs)) = (word)(value))\r
+//----#define _FCORELEFT 0x90000UL+16UL\r
+extern union REGS CPURegs;\r
 \r
-typedef union REGPACK  regs_t;\r
-#endif\r
+#define _AX CPURegs.x.ax\r
+#define _BX CPURegs.x.bx\r
+#define _CX CPURegs.x.cx\r
+#define _DX CPURegs.x.dx\r
 \r
-typedef        enum    {false,true}    boolean;\r
+#define _SI CPURegs.x.si\r
+#define _DI CPURegs.x.di\r
 \r
-#ifdef __WATCOMC__\r
-typedef void __based(__self) * memptr;\r
-#endif\r
-#ifdef __BORLANDC__\r
-typedef void _seg * memptr;\r
+#define _AH CPURegs.h.ah\r
+#define _AL CPURegs.h.al\r
+#define _BH CPURegs.h.bh\r
+#define _BL CPURegs.h.bl\r
+#define _CH CPURegs.h.ch\r
+#define _CL CPURegs.h.cl\r
+#define _DH CPURegs.h.dh\r
+#define _DL CPURegs.h.dl\r
+\r
+#define _CFLAG CPURegs.x.cflag\r
+\r
+#define geninterrupt(n) int86(n,&CPURegs,&CPURegs);\r
+\r
+\r
+typedef union REGPACK  regs_t;\r
 #endif\r
-typedef struct\r
-{\r
-       int old_mode;   //old video mode before game!\r
-       word frames_per_second;\r
-       clock_t t;\r
-       dword tiku;\r
-       word far* clock;\r
-       //handles for log files of the game gose here if wwww\r
-       //int heaphandle;\r
-} global_game_variables_t;\r
-\r
-/* local function */\r
-void wait(clock_t wait);\r
 \r
+// local function //\r
 long int filesize(FILE *fp);\r
+void clrstdin();\r
+char *remove_ext(char* mystr, char dot, char sep);\r
+void rotateR(byte arr[], byte n);\r
+void rotateL(byte arr[], byte n);\r
 void printmeminfoline(byte *strc, const byte *pee, size_t h_total, size_t h_used, size_t h_free);\r
-void print_normal_entry(char *text, dword total, dword used, dword free, byte *str);\r
-void convert(const char *format, dword num);\r
 int US_CheckParm(char *parm,char **strings);\r
-\r
-extern void CA_OpenDebug (void);\r
-extern void CA_CloseDebug (void);\r
-\r
-#endif/*_LIBHEAD_H_*/\r
+byte dirchar(byte in);\r
+void print_mem(void const *vp, size_t n);\r
+void hres (void);\r
+void regidump();\r
+\r
+//from https://stackoverflow.com/questions/111928/is-there-a-printf-converter-to-print-in-binary-format\r
+//printf("Leading text "BYTE_TO_BINARY_PATTERN, BYTE_TO_BINARY(byte));\r
+//For multi-byte types\r
+//printf("m: "BYTE_TO_BINARY_PATTERN" "BYTE_TO_BINARY_PATTERN"\n",             BYTE_TO_BINARY(m>>8), BYTE_TO_BINARY(m));\r
+#define BYTE_TO_BINARY_PATTERN "%c%c%c%c%c%c%c%c"\r
+#define BYTE_TO_BINARY(byte)   \\r
+       (byte & 0x80 ? '1' : '0'),      \\r
+       (byte & 0x40 ? '1' : '0'),      \\r
+       (byte & 0x20 ? '1' : '0'),      \\r
+       (byte & 0x10 ? '1' : '0'),      \\r
+       (byte & 0x08 ? '1' : '0'),      \\r
+       (byte & 0x04 ? '1' : '0'),      \\r
+       (byte & 0x02 ? '1' : '0'),      \\r
+       (byte & 0x01 ? '1' : '0')\r
+\r
+#define WORD_TO_BINARY_PATTERN "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c"\r
+#define WORD_TO_BINARY(word)   \\r
+       (word & 0x8000 ? '1' : '0'),    \\r
+       (word & 0x4000 ? '1' : '0'),    \\r
+       (word & 0x2000 ? '1' : '0'),    \\r
+       (word & 0x1000 ? '1' : '0'),    \\r
+       (word & 0x0800 ? '1' : '0'),    \\r
+       (word & 0x0400 ? '1' : '0'),    \\r
+       (word & 0x0200 ? '1' : '0'),    \\r
+       (word & 0x0100 ? '1' : '0'),    \\r
+       (word & 0x0080 ? '1' : '0'),    \\r
+       (word & 0x0040 ? '1' : '0'),    \\r
+       (word & 0x0020 ? '1' : '0'),    \\r
+       (word & 0x0010 ? '1' : '0'),    \\r
+       (word & 0x0008 ? '1' : '0'),    \\r
+       (word & 0x0004 ? '1' : '0'),    \\r
+       (word & 0x0002 ? '1' : '0'),    \\r
+       (word & 0x0001 ? '1' : '0')\r
+\r
+#define NIBBLE_TO_BINARY_PATTERN "%c%c%c%c"\r
+#define NIBBLE_TO_BINARY(nibble)       \\r
+       (nibble & 0x08 ? '1' : '0'),    \\r
+       (nibble & 0x04 ? '1' : '0'),    \\r
+       (nibble & 0x02 ? '1' : '0'),    \\r
+       (nibble & 0x01 ? '1' : '0')\r
+\r
+#define BOOLEAN_TO_BINARY_PATTERN "%c"\r
+#define BOOLEAN_TO_BINARY(boolean)     \\r
+       (boolean & 0x01 ? '1' : '0')\r
+\r
+#define PRINT_OPAQUE_STRUCT(p)  print_mem((p), sizeof(*(p)))\r
+\r
+#endif/*__16_HEAD_H__*/\r