From 548f31286ab49aa891dfc5d72536d7175496f006 Mon Sep 17 00:00:00 2001 From: sparky4 Date: Fri, 26 Jun 2015 15:10:04 -0500 Subject: [PATCH] wwww merging~ modified: 16.LIB modified: 16.exe modified: Project 16.bfproject new file: inputext.exe modified: makefile modified: maptest.exe modified: pcxtest.exe modified: scroll.exe new file: src/inputest.c renamed: 16/cawat/16_in.c -> src/lib/16_in.c renamed: 16/cawat/16_in.h -> src/lib/16_in.h renamed: 16/cawat/16_us.h -> src/lib/16_us.h modified: src/lib/lib_head.h modified: test.exe modified: test2.exe --- 16.LIB | Bin 35328 -> 35328 bytes 16.exe | Bin 45333 -> 45376 bytes Project 16.bfproject | 28 ++++---- inputext.exe | 0 makefile | 21 ++++-- maptest.exe | Bin 48286 -> 48422 bytes pcxtest.exe | Bin 64193 -> 64286 bytes scroll.exe | Bin 58409 -> 58468 bytes src/inputest.c | 31 ++++++++ {16/cawat => src/lib}/16_in.c | 105 +-------------------------- {16/cawat => src/lib}/16_in.h | 132 ++++++++++++++++++++++++++++------ {16/cawat => src/lib}/16_us.h | 0 src/lib/lib_head.h | 25 +++---- test.exe | Bin 39861 -> 39954 bytes test2.exe | Bin 41134 -> 41227 bytes 15 files changed, 179 insertions(+), 163 deletions(-) create mode 100644 inputext.exe create mode 100644 src/inputest.c rename {16/cawat => src/lib}/16_in.c (85%) rename {16/cawat => src/lib}/16_in.h (55%) rename {16/cawat => src/lib}/16_us.h (100%) diff --git a/16.LIB b/16.LIB index 33cc1111da23d7588cc1dcad044b472bfe3e1b6b..c73feb572011cdd2623cd108b800b377ab4d7935 100644 GIT binary patch delta 1377 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 b9WZur#)H6I;)KRJB)gEH(|@pQvl03aOOI>M diff --git a/pcxtest.exe b/pcxtest.exe index 86dc0e75f2fce9a663f3f30dac9cd1ddf45e41a2..c8da1701a45208a1c79287342701ef1b0002b567 100644 GIT binary patch delta 6676 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 N1iie)j!8!7{{Xmts*C^t diff --git a/scroll.exe b/scroll.exe index 81bf2fa2d11e31f8855d7a7a997a79171d879079..5c8ec4c5aa1ecbc6f5332b4a83cfc06528e2784e 100644 GIT binary patch delta 5795 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 Pgk#!w-7Gt<5TXAEQUFY4 delta 5259 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 bSJhB{?NJzgEf8M%TJ4y1P3OkbLPGurAOTM_ diff --git a/src/inputest.c b/src/inputest.c new file mode 100644 index 00000000..d6a843aa --- /dev/null +++ b/src/inputest.c @@ -0,0 +1,31 @@ +/* Project 16 Source Code~ + * Copyright (C) 2012-2015 sparky4 & pngwen & andrius4669 + * + * This file is part of Project 16. + * + * Project 16 is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * Project 16 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see , or + * write to the Free Software Foundation, Inc., 51 Franklin Street, + * Fifth Floor, Boston, MA 02110-1301 USA. + * + */ +/* + input test +*/ +#include "src/lib/16_in.h" + +void +main(int argc, char *argv[]) +{ + +} \ No newline at end of file diff --git a/16/cawat/16_in.c b/src/lib/16_in.c similarity index 85% rename from 16/cawat/16_in.c rename to src/lib/16_in.c index f8d3178e..34679d96 100644 --- a/16/cawat/16_in.c +++ b/src/lib/16_in.c @@ -35,110 +35,7 @@ // DEBUG - there are more globals // -#include "16_in.h" - -// Global variables - boolean JoystickCalibrated=false; // MDM (GAMERS EDGE) - added - ControlType ControlTypeUsed; // MDM (GAMERS EDGE) - added - - boolean Keyboard[NumCodes], - JoysPresent[MaxJoys], - MousePresent; - boolean Paused; - char LastASCII; - ScanCode LastScan; - KeyboardDef KbdDefs[MaxKbds] = {{0x1d,0x38,0x47,0x48,0x49,0x4b,0x4d,0x4f,0x50,0x51}}; - JoystickDef JoyDefs[MaxJoys]; - ControlType Controls[MaxPlayers]; - -#ifdef DEMO0 - Demo DemoMode = demo_Off; - byte __segment *DemoBuffer; - word DemoOffset,DemoSize; -#endif - -// Internal variables -static boolean IN_Started; -static boolean CapsLock; -static ScanCode CurCode,LastCode; -static byte far ASCIINames[] = // Unshifted ASCII for scan codes - { -// 0 1 2 3 4 5 6 7 8 9 A B C D E F - 0 ,27 ,'1','2','3','4','5','6','7','8','9','0','-','=',8 ,9 , // 0 - 'q','w','e','r','t','y','u','i','o','p','[',']',13 ,0 ,'a','s', // 1 - 'd','f','g','h','j','k','l',';',39 ,'`',0 ,92 ,'z','x','c','v', // 2 - 'b','n','m',',','.','/',0 ,'*',0 ,' ',0 ,0 ,0 ,0 ,0 ,0 , // 3 - 0 ,0 ,0 ,0 ,0 ,0 ,0 ,'7','8','9','-','4','5','6','+','1', // 4 - '2','3','0',127,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 5 - 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 6 - 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 // 7 - }, - far ShiftNames[] = // Shifted ASCII for scan codes - { -// 0 1 2 3 4 5 6 7 8 9 A B C D E F - 0 ,27 ,'!','@','#','$','%','^','&','*','(',')','_','+',8 ,9 , // 0 - 'Q','W','E','R','T','Y','U','I','O','P','{','}',13 ,0 ,'A','S', // 1 - 'D','F','G','H','J','K','L',':',34 ,'~',0 ,'|','Z','X','C','V', // 2 - 'B','N','M','<','>','?',0 ,'*',0 ,' ',0 ,0 ,0 ,0 ,0 ,0 , // 3 - 0 ,0 ,0 ,0 ,0 ,0 ,0 ,'7','8','9','-','4','5','6','+','1', // 4 - '2','3','0',127,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 5 - 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 6 - 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 // 7 - }, - far SpecialNames[] = // ASCII for 0xe0 prefixed codes - { -// 0 1 2 3 4 5 6 7 8 9 A B C D E F - 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 0 - 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,13 ,0 ,0 ,0 , // 1 - 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 2 - 0 ,0 ,0 ,0 ,0 ,'/',0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 3 - 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 4 - 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 5 - 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 6 - 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 // 7 - }, - -#if 0 - *ScanNames[] = // Scan code names with single chars - { - "?","?","1","2","3","4","5","6","7","8","9","0","-","+","?","?", - "Q","W","E","R","T","Y","U","I","O","P","[","]","|","?","A","S", - "D","F","G","H","J","K","L",";","\"","?","?","?","Z","X","C","V", - "B","N","M",",",".","/","?","?","?","?","?","?","?","?","?","?", - "?","?","?","?","?","?","?","?","\xf","?","-","\x15","5","\x11","+","?", - "\x13","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?", - "?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?", - "?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?" - }, // DEBUG - consolidate these -#endif - - far ExtScanCodes[] = // Scan codes with >1 char names - { - 1,0xe,0xf,0x1d,0x2a,0x39,0x3a,0x3b,0x3c,0x3d,0x3e, - 0x3f,0x40,0x41,0x42,0x43,0x44,0x57,0x59,0x46,0x1c,0x36, - 0x37,0x38,0x47,0x49,0x4f,0x51,0x52,0x53,0x45,0x48, - 0x50,0x4b,0x4d,0x00 - }; -#if 0 - *ExtScanNames[] = // Names corresponding to ExtScanCodes - { - "Esc","BkSp","Tab","Ctrl","LShft","Space","CapsLk","F1","F2","F3","F4", - "F5","F6","F7","F8","F9","F10","F11","F12","ScrlLk","Enter","RShft", - "PrtSc","Alt","Home","PgUp","End","PgDn","Ins","Del","NumLk","Up", - "Down","Left","Right","" - }; -#endif -static Direction DirTable[] = // Quick lookup for total direction - { - dir_NorthWest, dir_North, dir_NorthEast, - dir_West, dir_None, dir_East, - dir_SouthWest, dir_South, dir_SouthEast - }; - -static void (*INL_KeyHook)(void); -static void interrupt (*OldKeyVect)(void); - -static char *ParmStrings[] = {"nojoys","nomouse",nil}; +#include "src/lib/16_in.h" // Internal routines diff --git a/16/cawat/16_in.h b/src/lib/16_in.h similarity index 55% rename from 16/cawat/16_in.h rename to src/lib/16_in.h index e5adb56d..262f7b11 100644 --- a/16/cawat/16_in.h +++ b/src/lib/16_in.h @@ -26,12 +26,8 @@ #ifndef __16_IN__ #define __16_IN__ -#include "lib_head.h" -#include "16_us.h" - -#ifndef __TYPES__ -//#include "ID_Types.h" -#endif +#include "src/lib/lib_head.h" +#include "src/lib/16_us.h" #ifdef __DEBUG__ #define __DEBUG_InputMgr__ @@ -86,6 +82,17 @@ typedef byte ScanCode; #define sc_F11 0x57 #define sc_F12 0x59 +#define sc_1 0x02 +#define sc_2 0x03 +#define sc_3 0x04 +#define sc_4 0x05 +#define sc_5 0x06 +#define sc_6 0x07 +#define sc_7 0x08 +#define sc_8 0x09 +#define sc_9 0x0a +#define sc_0 0x0b + #define sc_A 0x1e #define sc_B 0x30 #define sc_C 0x2e @@ -173,25 +180,106 @@ typedef struct { joyMultXL,joyMultYL, joyMultXH,joyMultYH; } JoystickDef; -// Global variables -extern boolean Keyboard[], - MousePresent, - JoysPresent[]; -extern boolean Paused; -extern char LastASCII; -extern ScanCode LastScan; -extern KeyboardDef KbdDefs[]; -extern JoystickDef JoyDefs[]; -extern ControlType Controls[MaxPlayers]; - -extern boolean JoystickCalibrated; // MDM (GAMERS EDGE) - added -extern ControlType ControlTypeUsed; // MDM (GAMERS EDGE) - added +/* +============================================================================= + + GLOBAL VARIABLES + +============================================================================= +*/ + +// +// configuration variables +// +boolean MousePresent; +boolean JoysPresent[MaxJoys]; +boolean JoyPadPresent; + + +// Global variables + boolean JoystickCalibrated=false; // MDM (GAMERS EDGE) - added + ControlType ControlTypeUsed; // MDM (GAMERS EDGE) - added + + boolean Keyboard[NumCodes]; + boolean Paused; + char LastASCII; + ScanCode LastScan; + + KeyboardDef KbdDefs[] = {0x1d,0x38,0x47,0x48,0x49,0x4b,0x4d,0x4f,0x50,0x51}; + JoystickDef JoyDefs[MaxJoys]; + ControlType Controls[MaxPlayers]; + + dword MouseDownCount; + #ifdef DEMO0 -extern Demo DemoMode; -extern byte __segment *DemoBuffer; -extern word DemoOffset,DemoSize; + Demo DemoMode = demo_Off; + byte /*_seg*/ *DemoBuffer; + word DemoOffset,DemoSize; #endif + + + +/* +============================================================================= + + LOCAL VARIABLES + +============================================================================= +*/ +static byte far ASCIINames[] = // Unshifted ASCII for scan codes + { +// 0 1 2 3 4 5 6 7 8 9 A B C D E F + 0 ,27 ,'1','2','3','4','5','6','7','8','9','0','-','=',8 ,9 , // 0 + 'q','w','e','r','t','y','u','i','o','p','[',']',13 ,0 ,'a','s', // 1 + 'd','f','g','h','j','k','l',';',39 ,'`',0 ,92 ,'z','x','c','v', // 2 + 'b','n','m',',','.','/',0 ,'*',0 ,' ',0 ,0 ,0 ,0 ,0 ,0 , // 3 + 0 ,0 ,0 ,0 ,0 ,0 ,0 ,'7','8','9','-','4','5','6','+','1', // 4 + '2','3','0',127,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 5 + 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 6 + 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 // 7 + }, + far ShiftNames[] = // Shifted ASCII for scan codes + { +// 0 1 2 3 4 5 6 7 8 9 A B C D E F + 0 ,27 ,'!','@','#','$','%','^','&','*','(',')','_','+',8 ,9 , // 0 + 'Q','W','E','R','T','Y','U','I','O','P','{','}',13 ,0 ,'A','S', // 1 + 'D','F','G','H','J','K','L',':',34 ,'~',0 ,'|','Z','X','C','V', // 2 + 'B','N','M','<','>','?',0 ,'*',0 ,' ',0 ,0 ,0 ,0 ,0 ,0 , // 3 + 0 ,0 ,0 ,0 ,0 ,0 ,0 ,'7','8','9','-','4','5','6','+','1', // 4 + '2','3','0',127,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 5 + 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 6 + 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 // 7 + }, + far SpecialNames[] = // ASCII for 0xe0 prefixed codes + { +// 0 1 2 3 4 5 6 7 8 9 A B C D E F + 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 0 + 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,13 ,0 ,0 ,0 , // 1 + 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 2 + 0 ,0 ,0 ,0 ,0 ,'/',0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 3 + 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 4 + 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 5 + 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 6 + 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 // 7 + }; + + +static boolean IN_Started; +static boolean CapsLock; +static ScanCode CurCode,LastCode; + +static Direction DirTable[] = // Quick lookup for total direction + { + dir_NorthWest, dir_North, dir_NorthEast, + dir_West, dir_None, dir_East, + dir_SouthWest, dir_South, dir_SouthEast + }; + +static void (*INL_KeyHook)(void); +static void interrupt (*OldKeyVect)(void); + +static char *ParmStrings[] = {"nojoys","nomouse",nil}; // Function prototypes #define IN_KeyDown(code) (Keyboard[(code)]) diff --git a/16/cawat/16_us.h b/src/lib/16_us.h similarity index 100% rename from 16/cawat/16_us.h rename to src/lib/16_us.h diff --git a/src/lib/lib_head.h b/src/lib/lib_head.h index 3d5355d3..2ff4819f 100644 --- a/src/lib/lib_head.h +++ b/src/lib/lib_head.h @@ -121,20 +121,14 @@ #define KEY_MENU (0x75) */ -//#define FARPTR(S, O) MK_FP(S, O) - -//#define inportb(P) inp(P) -//#define outportb(P,V) outp(P,V) -//#define outportw(P,V) outpw(P,V) - -//#define R_AX w.ax -//#define R_BX w.bx -//#define R_BP w.bp -//#define R_ES w.es - -/* WARNING: for 32-bit code, unused fields of regs_t -must be zeroed before using this macro */ -//#define trap(N,R) intr(N,R) +#define nil ((void *)0) + +dword far* clockdw= (dword far*) 0x046C; /* 18.2hz clock */ + +#define peekb(segm,ofs) (*(byte far*)MK_FP((segm),(ofs))) +#define peekw(segm,ofs) (*(word far*)MK_FP((segm),(ofs))) +#define pokeb(segm,ofs,value) (peekb((segm),(ofs)) = (byte)(value)) +#define pokew(segm,ofs,value) (peekw((segm),(ofs)) = (word)(value)) typedef union REGPACK regs_t; typedef enum {false,true} boolean; @@ -144,7 +138,4 @@ void* AllocateLargestFreeBlock(size_t* Size); size_t GetFreeSize(void); long int filesize(FILE *fp); -/* THIS FUNCTION CONVERTS A POINTER TO AN INTEL LONG */ -//int long ptr2long(char *p); - #endif/*_LIBHEAD_H_*/ diff --git a/test.exe b/test.exe index 6097e1dfdf1511b5de489cf98257062c57f2afbc..122bcab19501373c21079bc5461b43d87bf6a02a 100644 GIT binary patch delta 4971 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 diff --git a/test2.exe b/test2.exe index 6cda8f02dfa3d95e63531197b00c0cd07bdce644..cea7c7d33afc1cef186fc34713398e040625aac9 100644 GIT binary patch delta 5387 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 delta 4978 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