--- /dev/null
+#define IDSTRING "TED5v1.0"
+#define TITLESTR "TED5 vD.IP"
+#define IDSTSTR " "TITLESTR
+
+#include <stdio.h>
+#include <process.h>
+#include <io.h>
+#include <dos.h>
+#include <alloc.h>
+#include <dir.h>
+#include <mem.h>
+#include <string.h>
+#include <stdlib.h>
+#include <conio.h>
+#include <fcntl.h>
+#include "lib.h"
+#include "memmgr.h"
+#include "menu.h"
+#include "jhuff.h"
+#include "xms.h"
+
+#define SGN(x) (x>0?1:x<0?-1:0)
+#define OFF3(m,i) (*(long huge *)((char huge *)m+(i)*3)&0xffffff)
+
+
+//
+// Defs for TED5
+//
+
+typedef enum {TILES,MASKED,ICONS} screentype;
+typedef enum {DATA,CODE,FARDATA} segtype; // FOR MAKEOBJ ONLY
+
+#define SCindex 0x3C4
+#define SCmapmask 2
+#define GCindex 0x3CE
+#define GCreadmap 4
+#define GCmode 5
+#define crtcaddr 0x3d4
+
+//
+// STRUCTURE OF TED5 TEMPFILE WHILE LAUNCHING
+//
+typedef struct {
+ video lastmode;
+ char ext[4];
+ } TempStruct;
+
+//
+// STRUCTURE OF THE "TEDINFO.EXT" FILE THAT TED5 CREATES
+//
+typedef struct {
+ int level,lastvid,lastx,lasty,tsize;
+ int OldCgaXMS,OldEgaXMS,OldVgaXMS;
+ long OldCgaXMSsize,OldEgaXMSsize,OldVgaXMSsize;
+ int CgaXMSlook,EgaXMSlook,VgaXMSlook;
+ char permicon,pflags;
+ int oscrx,oscry;
+ char parmstring[64],launchname[14];
+ char BackgndColor;
+ char ImportPath[64];
+ } InfoStruct;
+
+//
+// STRUCTURE OF THE "GFXINFO?.EXT" FILE THAT IGRAB CREATES
+//
+typedef struct {
+ int num8,num8m,num16,num16m,num32,num32m;
+ int off8,off8m,off16,off16m,off32,off32m;
+ int numpics,numpicm,numsprites;
+ int offpic,offpicm,offsprites;
+ int offpicstr,offpicmstr,offsprstr;
+ int numexterns,offexterns;
+ } GfxStruct;
+
+//
+// TED5 LOADS & SAVES THIS HEADER FOR INTERNAL MAPFILE USAGE
+//
+typedef struct { unsigned maptype; //bit 0=bkgnd/1=frgnd/2=info
+ unsigned tsize; //1=8/2=16/3=32
+
+ unsigned numtplanes,oldtilenum;
+ long tileinfooff[10];
+ unsigned tileinfolen[10];
+ char tnames[10][8];
+
+ unsigned numtmplanes,oldtilemnum;
+ long tileinfomoff[10];
+ unsigned tileinfomlen[10];
+ char tmnames[10][8];
+
+ unsigned RLEWtag;
+ long dataoffsets[100];
+ long datalengths[100];
+
+ int NumIconRows;
+ } MapFileHeaderStr;
+
+//
+// TED5 SAVES THIS MAPFILE HEADER FOR THE GAME
+//
+typedef struct {
+ unsigned RLEWtag;
+ long dataoffsets[100];
+
+ } OutputHeadStr;
+
+//
+// EACH AND EVERY MAP HAS THIS HEADER (IF THE MAP EXISTS)
+//
+typedef struct { long mapbkgndpl;
+ long mapfrgndpl;
+ long mapinfopl;
+ unsigned mapbkgndlen;
+ unsigned mapfrgndlen;
+ unsigned mapinfolen;
+ unsigned width,height;
+ char name[16];
+ } MapHeaderStr;
+
+//
+// SPECIFY WHAT, WHEREFROM, AND HOW TO COPY A REGION
+//
+typedef struct {
+ char PlanesCopied; // use BPLANE,FPLANE,IPLANE to mask
+ int MapOrTileSelect; // 0:map,1:tileselect
+ int x,y,w,h; // from map or tileselect
+ } CopyStr;
+
+//
+// UNDO REGION
+//
+typedef struct {
+ int x,y,w,h;
+ } UndoStr;
+
+//
+// LAST-BUILT "VIEWMAP"
+//
+typedef struct {
+ unsigned step,built_flag,EGAseg,maxpack;
+ } VMapStr;
+
+
+//
+// HEADER FOR APPLE-PREFERRED FILES
+//
+typedef struct { long length;
+ char Kind[5];
+ int MasterMode;
+ int PixelsPerLine;
+ int NumColorTables;
+ int ColorTable[16];
+ int NumScanLines;
+ } ApPrefStr;
+
+#define CREATED 1
+#define NOTCREATED 2
+#define ANYLIST 3
+
+#define BPLANE 1
+#define FPLANE 2
+#define IPLANE 4
+
+#define O_FGNDBACK 4
+#define ICONBACK 3
+
+#define TINFOWIDTH 3
+#define TINFOHEIGHT 7
+#define TINFOHEIGHTEGA2 25
+
+extern MBarDef TED5MenuBar[];
+extern DialogDef DoCreated;
+
+extern UndoStr UndoRegion;
+extern CopyStr TileCopy;
+extern MapFileHeaderStr _seg *MapFileHeader;
+extern char _seg *Tinfo[10],_seg *TMinfo[10],_seg *GraphHeader;
+extern long _seg *XMSlookup,_seg *CgaXMSlookup,_seg *EgaXMSlookup,_seg *VgaXMSlookup;
+extern int _seg *MapBkgnd,_seg *MapFrgnd,_seg *MapInfoPl,
+ _seg *CutBkgnd,_seg *CutFrgnd,_seg *CutInfoPl;
+extern MapHeaderStr MapHeader;
+
+#if 0
+extern char far TOM; // JOKE SHIT!
+#endif
+
+extern TempStruct LaunchInfo;
+extern InfoStruct _seg *TEDInfo;
+extern GfxStruct _seg *GfxInfo;
+extern video lastvideo,videomode;
+extern screentype whichscreen;
+extern VMapStr VMapData;
+
+extern char launchname[64],ext[4],format[2],projname[64],mapname[64],planes,
+ infoname[64],mapheadname[64],tdata,MapNames[100][16],parmstring[64];
+extern char SM_name[64],SM_loadname[64],BkgndColor;
+
+extern unsigned temp,whichmap,numtplanes,tilenum,tilemnum,numtmplanes,left,
+ DirtyFlag,tilelen,tilemlen,whicht,whichtm,whichi,
+ tsize,infoy,infomaxw,mapwidth,mapheight,screenw,usingbat,
+ screenh,planeton,planemon,planeion,maxiconrows,lasticon,firsticon,
+ viewton,viewmon,viewion,XMSundoB,XMSundoF,XMSundoI,XMSmaps,
+ EgaXMS,CgaXMS,VgaXMS,xmshandle,GridMode,SnapMode,snapx,snapy,
+ snapxsize,snapysize,writeH,F3_flag,NoAbout;
+extern int tilebase,tilembase,infobaron,xbase,ybase,scrnbot,scrnrgt,
+ FillMode,PasteMode,SelectMode,SelX1,SelY1,PasteOK,SelX2,SelY2,pixelx,pixely,
+ selectcols,px,py,lastmap,TIybase,TIymbase,TIxbase,TIxmbase,BfillMode,
+ Plotting,TsearchMode;
+extern long CgaXMSsize,EgaXMSsize,VgaXMSsize;
+
+extern void far *XMSdriver;
+
+//
+// FUNCTION PROTOTYPES
+//
+
+//
+// LIB_A.ASM
+//
+extern void CGAcharout(int x,int y,char ch);
+extern void EGAcharout(int x,int y,char ch,video vid);
+extern void VGAcharout(int x,int y,char ch);
+
+//
+// TED5_A.ASM
+//
+extern unsigned EGA1lookup[200];
+extern unsigned EGA2lookup[200];
+extern void DrawTile(int x,int y,int tile);
+extern void CopyCGA(int srcx,int srcy,int width,int height,int destx,int desty);
+extern void CopyEGA(int srcx,int srcy,int width,int height,int destx,int desty);
+extern void CopyVGA(int srcx,int srcy,int width,int height,int destx,int desty);
+extern void Overlay(int tsize);
+
+//
+// TED5
+//
+void FindGraphFile(void);
+void HandleEvent(void);
+void Continuous(void);
+void LoadInfoFile(void);
+int LoadGraphStuff(int rtn,video newvid);
+void LoadMapHeader(void);
+void ParseCmdline(void);
+void InitTed5(void);
+void CallDesktop(void);
+void SelectTiles(int screen);
+void STnot(int x,int y);
+void DrawProjBord(int x,int y);
+void DrawInfoBar(void);
+void PrintCoords(void);
+void FigureScreenEdges(void);
+void errsound(void);
+void DrawMap(void);
+void CheckSelectEdges(int x,int y,int i,int j);
+int InputIconAmount(void);
+
+//
+// TED5-1
+//
+void Item_InputInfoplane(void);
+void Item_SelectTile(void);
+void Item_EditTinfoNames(void);
+void Item_BlockFill(void);
+void Item_TileSearch(void);
+void Item_Launch(void);
+void Item_Undo(void);
+void Item_TINFOCopy(void);
+
+void CreateMap(int exitok);
+int SelectMap(int exitok,int createflg,char *title);
+int PickMorePlanes(void);
+void DoBlockFill(void);
+void RemoveUndoBuffers(void);
+void AllocateUndoBuffers(void);
+void RestoreUndo(void);
+void SaveUndo(int x,int y,int w,int h);
+void CopyUndoRegion(void);
+void SaveOutputHeader(void);
+void SaveTEDInfo(void);
+void BackupFile(char *filename);
+
+void TInfoNon(int x,int y,int b);
+void TInfoNoff(int x,int y,int b);
+void TInfoMNon(int x,int y,int b);
+void TInfoMNoff(int x,int y,int b);
+void TIDoneOn(int x,int y);
+void TIDoneOff(int x,int y);
+
+
+//
+// TED5-2
+//
+void Item_About(void);
+void Item_ModeSwitch(void);
+void Item_DeleteMap(void);
+void Item_EditMap(void);
+void Item_SaveMap(void);
+void Item_CreateMap(void);
+void Item_Quit(void);
+void Item_MapStats(void);
+void Item_ToggleInfo(void);
+void Item_Amputate(void);
+void Item_SwitchMap(void);
+void Item_EditMapNames(void);
+void Item_Copy(void);
+void Item_Paste(void);
+void Item_LastVideo(void);
+void Item_FloodFill(void);
+void Item_LastMap(void);
+void Item_CountTiles(void);
+int CheckForMapSave(void);
+void DoFloodFill(int x,int y,int whichb);
+
+void DrawTileSelect(int deltarows,int *numrows,int *numcols);
+void DrawUnused(int deltarow);
+void DrawCurrentTiles(void);
+void ZeroModes(void);
+
+//
+// TED5-3
+//
+void Item_EditMapEdges(void);
+void Item_PrintMem(void);
+void Item_Huffman(void);
+void CheckInfoValues(int i,int j,int tilei);
+void PrintMem(int x,int y);
+void EraseFloatPaste(void);
+void DrawFloatPaste(void);
+void CopyScreen(int srcx,int srcy,int width,int height,int destx,int desty);
+void Item_LAUNCHname(void);
+void Item_PARMstring(void);
+void Item_ChangeIconRows(void);
+void Item_ChangeLaunchIcon(void);
+void Item_ChangeBkgndColor(void);
+
+//
+// TED5-4
+//
+void SignalSound(void);
+void Item_GraphicDump(void);
+void Item_EditTinfoValues(void);
+void Item_ProjectReSelect(void);
+void Item_AddDelTinfo(void);
+void Item_GridMode(void);
+void Item_SnapTog(void);
+void Item_ViewMap(void);
+void Item_ReviewMap(void);
+void Item_ImportMaps(void);
+void Item_VisitDOS(void);
+void Item_POtog(void);
+void Do_ViewMap(int how);
+int MakeOBJ(char *filename,char *destfilename,char *public,segtype whichseg,char *farname);
+void DrawTinfoScreen(int thescreen,int deltax,int deltay);
+void EnterTinfoValue(int whichtinfo,int mx,int my,int H_or_V);
+void UseTinfoValue(int whichtinfo,int mx,int my,int PickupOrDrop);