home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
alib
/
d9xx
/
d952
/
machv.lha
/
MachV
/
programmer.lha
/
headers
/
mach.h
next >
Wrap
C/C++ Source or Header
|
1993-12-17
|
20KB
|
490 lines
#ifndef MACH_H
#define MACH_H
/* $Log: mach.h,v $
* Revision 37.002 93/10/14 08:48:00 Brian
* Release 5.0.
*
*
*/
#include <ctype.h>
#include <devices/input.h>
#include <devices/inputevent.h>
#include <dos/datetime.h>
#include <exec/types.h>
#include <exec/libraries.h>
#include <exec/memory.h>
#include <exec/ports.h>
#include <exec/semaphores.h>
/* Clock Types */
#define CLOCK_ONLY 0 /* hh:mm:ss */
#define CLOCK_PLUSMEMORY 1 /* Chip xxxx Fast xxxxx hh:mm:ss */
#define CLOCK_MEMORYONLY 2 /* Chip xxxx Fast xxxxx */
#define CLOCK_PLUSDATE 3 /* 03-16-93 hh:mm:ss */
#define CLOCK_COORDS 4 /* xxx yyy */
#define CLOCK_COMMANDBAR 5 /* gadgets only! */
#define CLOCK_BORDER_RIGHT 0 /* size gadget uses border on right. Normal */
#define CLOCK_BORDER_BOTTOM 1 /* size gadget uses bottom border */
#define CLOCK_BORDERLESS 2 /* no border at all! */
#define KEYTASK "KeyTask" /* task name for "Select A Hotkey" */
#define MACHV_REXX "MACHV_REXX"
#define UNKEYED 128 /* index for unkeyed macros */
#define MAXKEYS 128 /* keycodes 0-127. 128 is unkeyed */
#define MAX_CFG_TITLE 80 /* configuration title length */
#define MAX_LIST_TITLE 15 /* list window title */
#define MAX_LIST_STRINGBUF 14 /* string gadget under list gadget */
#define MAX_MACRO_NAME MAX_LIST_STRINGBUF
#define MAX_DIR_NAME 80 /* path to MachV.prefs */
#define MAX_FILE_NAME 31 /* MachV.prefs */
#define MAX_PASTE_APPEND 7 /* pasting prepend and append text */
#define MAX_ALARM_COMMAND 80 /* length of command for CLK_ALARM to use */
#define MAX_SETMACH_PATH 40 /* path to find SetMachV */
#define MAX_CUSTOM_MESSAGE 30 /* largest message for the clock. inc. \0 */
#define MAX_VARIABLE 80 /* number of chars for ml_Variable */
#define MAX_VARNAME 40 /* number of chars for ml_VarName */
#define MAX_AREXX_RESULT 80 /* max length of results returned */
#define MAX_NO_LAYERS 10 /* number of window titles to NOT layer */
#define DEFAULTS_SIZE 41 /* sizeof default cfg */
#define GAD_NOPOS -1 /* clock gadget has no position yet */
/* The following are set in ml_GeneralEvent and then MachV is signaled.
Some must be send with PutMsg(). These are noted below. */
#define GE_BBLANK 0 /* blank the screen */
#define GE_BUNBLANK 1 /* unblank it */
#define GE_BBEEP 2 /* tell MachV to beep */
#define GE_BKILLCLOCK 3 /* kill the clock */
#define GE_BRUNCLOCK 4 /* run it */
#define GE_BADDCONFIG 5 /* add new configuration. Use PutMsg() */
#define GE_BDELCONFIG 6 /* del configuration. Use PutMsg() */
#define GE_BSAVECONFIG 7 /* save configuration. Use PutMsg() */
#define GE_BLOADCONFIG 8 /* load configuration. Use PutMsg() */
#define GE_BSET_VARIABLE 9 /* set variable ml_VarName to ml_Variable */
#define GE_BUPDATESETMACH 10 /* tell MachV to send update msg to interface */
#define GE_BLOADBEEP 11 /* load a beep sound file. pathname in */
/* ml_BeepFileName */
#define GE_BSCREENUP 12 /* tell MachV to tell interface to come */
/* to front and scroll up. */
#define GE_BABORTPRINT 13 /* abort printing */
#define GE_BDISPLAYTIME 14 /* display time (or message) in clock */
#define GE_BFREEGADGETS 15 /* free clock gadgets */
#define GE_BSET_MOUSE_PORT 16 /* set mouse port. port in mc_MousePort */
#define GE_BNEWCONFIG 17 /* tell MachV to switch configurations */
#define GE_BPRINTCLIP 18 /* print clipboard */
#define GE_BUPDATE_PATTERNS 19 /* tell MachV to update its StringPatterns */
#define GE_BTRACE 20 /* toggle tracing */
#define GE_BNEW_WINDOW 21 /* tell MachV a new window is active */
#define GE_BHOTKEY 22 /* tell MachV to do a hotkey */
#define GE_BDO_VAR 23 /* set variable ml_VarName to ml_Variable */
/* Use PutMsg(). \0 as first char gets it. */
/* -1 as 1st char deletes the variable. */
/* general event signals */
#define GE_BLANK (1 << GE_BBLANK)
#define GE_UNBLANK (1 << GE_BUNBLANK)
#define GE_BEEP (1 << GE_BBEEP)
#define GE_KILLCLOCK (1 << GE_BKILLCLOCK)
#define GE_RUNCLOCK (1 << GE_BRUNCLOCK)
#define GE_ADDCONFIG (1 << GE_BADDCONFIG)
#define GE_DELCONFIG (1 << GE_BDELCONFIG)
#define GE_SAVECONFIG (1 << GE_BSAVECONFIG)
#define GE_LOADCONFIG (1 << GE_BLOADCONFIG)
#define GE_SET_VARIABLE (1 << GE_BSET_VARIABLE)
#define GE_UPDATESETMACH (1 << GE_BUPDATESETMACH)
#define GE_LOADBEEP (1 << GE_BLOADBEEP)
#define GE_SCREENUP (1 << GE_BSCREENUP)
#define GE_ABORTPRINT (1 << GE_BABORTPRINT)
#define GE_DISPLAYTIME (1 << GE_BDISPLAYTIME)
#define GE_FREEGADGETS (1 << GE_BFREEGADGETS)
#define GE_SET_MOUSE_PORT (1 << GE_BSET_MOUSE_PORT)
#define GE_NEWCONFIG (1 << GE_BNEWCONFIG)
#define GE_PRINTCLIP (1 << GE_BPRINTCLIP)
#define GE_UPDATE_PATTERNS (1 << GE_BUPDATE_PATTERNS)
#define GE_TRACE (1 << GE_BTRACE)
#define GE_NEW_WINDOW (1 << GE_BNEW_WINDOW)
#define GE_HOTKEY (1 << GE_BHOTKEY)
#define GE_DO_VAR (1 << GE_BDO_VAR)
/* These are set in ml_MouseEvents and then MachV is signaled. The handler */
/* usually is the only one that needs to set these. */
#define ME_BSUN 0 /* activate window under mouse */
#define ME_BKEYSUN 1 /* activate window under mouse caused by keystroke */
#define ME_BCLICKTF 2 /* move window under mouse to front */
#define ME_BCYCLE 3 /* move window or screen under mouse to back */
#define ME_BMOUSEOFF 4 /* turn mouse pointer off */
#define ME_SUN (1 << ME_BSUN)
#define ME_KEYSUN (1 << ME_BKEYSUN)
#define ME_CLICKTF (1 << ME_BCLICKTF)
#define ME_CYCLE (1 << ME_BCYCLE)
#define ME_MOUSEOFF (1 << ME_BMOUSEOFF)
/* SetMachV's screen flags. Set in ml_ScreenFlags */
#define SF_WB 1 /* Open on Workbench */
#define SF_CUSTOM 2 /* Open on custom screen */
#define SF_LACE 4 /* Use interlaced custom screen */
#define SF_SCROLL 8 /* Scroll up from bottom */
#define SF_TITLEBAR 0x10 /* Show titlebar */
/* ml_Trace flags. Set in ml_Trace */
#define TRACE_SERIAL 1
#define TRACE_CONSOLE 2
/* used to wakeup tasks or interface */
#define SIG_WAKEUP SIGBREAKF_CTRL_F
/* mc_Flag flags */
#define MC_BSUNMOUSE 0 /* can sun? */
#define MC_BKEYACTIVATE 1 /* do key activate? */
#define MC_BMOUSETOMENU 2 /* allow mouse to menu? */
#define MC_BMENU_WRAP 3 /* let mouse wrap around menus? */
#define MC_BWINDOWCYCLE 4 /* window cycling? */
#define MC_BAUTO_POPTOP 5 /* auto pop to front? */
#define MC_BKEYCLICK 6 /* key clicking? */
#define MC_BCLOCK 7 /* clock on? */
#define MC_BVERTICALCLOCK 8 /* vertical clock? */
#define MC_BCLOCKTOPWINDOW 9 /* clock can pop to top window? */
#define MC_BCLOCKFLOAT 10 /* clock can float when screen scrolls? */
#define MC_BCLOCK_GADGETS 11 /* clock has gadgets? */
#define MC_BCLOCK_SECONDS 12 /* clock has seconds? */
#define MC_BMETER 13 /* meter on? */
#define MC_BSPLINES 14 /* splines blanking? */
#define MC_BQUICKBLANK 15 /* quick blanking on? */
#define MC_BSPEAKMESSAGES 16 /* speak messages? */
#define MC_BDEBUG 17 /* debug mode? */
#define MC_BBUTTONSWAP 18 /* swap left and right mouse buttons? */
#define MC_BHOLDQUALS 19 /* hold qualifiers? */
#define MC_BHOTKEYENABLED 20 /* hotkeys enabled? */
#define MC_BSEND_UPKEYS 21 /* send up key after each down key? */
#define MC_BNOCAPSLOCK 22 /* disabled caps lock key? */
#define MC_BCLIP_REMOVELF 23 /* remove lf? */
#define MC_BCLIP_CRLF 24 /* lf to crlf? */
#define MC_BFREEZEVERT 25 /* no vertical movements? */
#define MC_BFREEZEHORZ 26 /* no horz movements */
#define MC_BKEYSOFF 27 /* no keys? */
//#define MC_BBORDERLESS 28 /* no border? */
//#define MC_BBORDERBOTTOM 29 /* border bottom */
#define MC_SUNMOUSE (1 << MC_BSUNMOUSE)
#define MC_KEYACTIVATE (1 << MC_BKEYACTIVATE)
#define MC_MOUSETOMENU (1 << MC_BMOUSETOMENU)
#define MC_MENU_WRAP (1 << MC_BMENU_WRAP)
#define MC_WINDOWCYCLE (1 << MC_BWINDOWCYCLE)
#define MC_AUTO_POPTOP (1 << MC_BAUTO_POPTOP)
#define MC_KEYCLICK (1 << MC_BKEYCLICK)
#define MC_CLOCK (1 << MC_BCLOCK)
#define MC_VERTICALCLOCK (1 << MC_BVERTICALCLOCK)
#define MC_CLOCKTOPWINDOW (1 << MC_BCLOCKTOPWINDOW)
#define MC_CLOCKFLOAT (1 << MC_BCLOCKFLOAT)
#define MC_CLOCK_GADGETS (1 << MC_BCLOCK_GADGETS)
#define MC_CLOCK_SECONDS (1 << MC_BCLOCK_SECONDS)
#define MC_METER (1 << MC_BMETER)
#define MC_SPLINES (1 << MC_BSPLINES)
#define MC_QUICKBLANK (1 << MC_BQUICKBLANK)
#define MC_SPEAKMESSAGES (1 << MC_BSPEAKMESSAGES)
#define MC_DEBUG (1 << MC_BDEBUG)
#define MC_BUTTONSWAP (1 << MC_BBUTTONSWAP)
#define MC_HOLDQUALS (1 << MC_BHOLDQUALS)
#define MC_HOTKEYENABLED (1 << MC_BHOTKEYENABLED)
#define MC_SEND_UPKEYS (1 << MC_BSEND_UPKEYS)
#define MC_NOCAPSLOCK (1 << MC_BNOCAPSLOCK)
#define MC_CLIP_REMOVELF (1 << MC_BCLIP_REMOVELF)
#define MC_CLIP_CRLF (1 << MC_BCLIP_CRLF)
#define MC_FREEZEVERT (1 << MC_BFREEZEVERT)
#define MC_FREEZEHORZ (1 << MC_BFREEZEHORZ)
#define MC_KEYSOFF (1 << MC_BKEYSOFF)
//#define MC_BORDERLESS (1 << MC_BBORDERLESS)
//#define MC_BORDERBOTTOM (1 << MC_BBORDERBOTTOM)
/* Macro mo_Flags. These control action of individual macros */
#define MFLG_BAUTOEXEC 0 /* auto executing macro */
#define MFLG_BGLOBAL 1 /* accessible from all configurations? */
#define MFLG_BNONRECURSE 2 /* non-recursive */
#define MFLG_BGADGET 3 /* has a gadget in the clock */
#define MFLG_BRELATIVE 4 /* mouse moves relative to window le/te */
#define MFLG_BTEMP 5 /* temporary? do not save */
#define MFLG_BDISABLED 6 /* disabled? key passed through */
#define MFLG_BWRITEPROT 7 /* write protected. cannot record over it */
#define MFLG_BSUPPRESS_MSG 8 /* do not show Executing Macro */
#define MFLG_BRESUME 9 /* macro resume execution */
#define MFLG_BCOUNTDOWN 10 /* counting down (for "Later" alarms) */
#define MFLG_BREXXMACRO 11 /* macro came from arexx */
#define MFLG_BWAIT_WINDOW 12 /* macro is waiting for a window */
#define MFLG_BRECURSE 13 /* recursive. execute again */
#define MFLG_BRESERVED2 14 /* */
#define MFLG_BRESERVED3 15 /* */
#define MFLG_BRESERVED4 16 /* */
#define MFLG_AUTOEXEC (1 << MFLG_BAUTOEXEC)
#define MFLG_GLOBAL (1 << MFLG_BGLOBAL)
#define MFLG_NONRECURSE (1 << MFLG_BNONRECURSE)
#define MFLG_GADGET (1 << MFLG_BGADGET)
#define MFLG_RELATIVE (1 << MFLG_BRELATIVE)
#define MFLG_TEMP (1 << MFLG_BTEMP)
#define MFLG_DISABLED (1 << MFLG_BDISABLED)
#define MFLG_WRITEPROT (1 << MFLG_BWRITEPROT)
#define MFLG_SUPPRESS_MSG (1 << MFLG_BSUPPRESS_MSG)
#define MFLG_MACRO_TOGGLE (1 << MFLG_BMACRO_TOGGLE)
#define MFLG_RESUME (1 << MFLG_BRESUME)
#define MFLG_COUNTDOWN (1 << MFLG_BCOUNTDOWN)
#define MFLG_REXXMACRO (1 << MFLG_BREXXMACRO)
#define MFLG_WAIT_WINDOW (1 << MFLG_BWAIT_WINDOW)
#define MFLG_RECURSE (1 << MFLG_BRECURSE)
/* Macro mo_Link.ln_Type */
#define NT_MACRO_SOLO 250 /* only executes when no others are waiting */
#define NT_MACRO_RESUMEING 251 /* macro is resumeing execution */
#define NT_MACRO_READY 252 /* ready to execute */
#define NT_MACRO_RUNNING 253 /* is currently running */
#define NT_MACRO_WAITING 254 /* is waiting */
/* ml_MachForbid Flags */
#define MF_NOHANDLER 0x8000 /* forbid all handler action */
/* Interface sends these mm_Commands to MachV.
mm_SubCommands are the general and mouse events listed above,
that is, GE_RUNCLOCK, GE_LOADCONFIG, ME_MOUSEOFF etc.
*/
#define MACHV_GENERAL_EVENT 1
#define MACHV_MOUSE_EVENT 2
/* MachV sends these mm_Commands to the interface */
#define IFACE_GOTKEY 1 /* if "KeyTask" is running and user clicked */
/* on clock gadget */
#define IFACE_SCREENUP 2 /* interface screen front and up */
#define IFACE_UPDATE 4 /* update interface gadgets */
#define IFACE_DEBUG 8 /* debug msg. display malfunctioning hotkey */
/* with IFACE_UPDATE command, these mm_SubCommands */
#define UPDATE_CLIP_WINDOW 0x1
#define UPDATE_CLOCK_WINDOW 0x2
#define UPDATE_MFEAT_WINDOW 0x4
#define UPDATE_MISC_WINDOW 0x8
#define UPDATE_FLAGS_WINDOW 0x10
#define UPDATE_MACROS 0x20
#define UPDATE_ALL 0x40
/* CodeLetterTable is an array of IECODEs and the ascii letter used to
represent it. E = ESC, D = Del, u = up arrow etc. Numerics are special
in that they change with the keyboard in use. When MachV is first run,
these are setup.
*/
#define CT_FIRST_NUMERIC 24 /* index into ml_CLTable 1st numeric */
#define CT_LAST_NUMERIC 41 /* index for ml_CLTable last numeric */
/* all locale text. ml_AppStrings will point to these */
#ifndef STRINGARRAY
struct AppString
{
LONG as_ID;
STRPTR as_Str;
};
#endif
/* message to and from interface */
struct MachMessage {
struct Message mm_Msg;
UWORD mm_Command; /* MACHV_GENERAL_EVENT, MACHV_MOUSE_EVENT, */
/* or IFACE_ command */
ULONG mm_SubCommand; /* the GE_ or ME_ event, or UPDATE_ command */
UWORD mm_Code; /* debug keycode */
UWORD mm_Qualifier; /* its qualifier */
UWORD mm_MacroPos; /* position in macro of error */
};
struct TaskInfo {
struct Task *Task;
long Sig;
};
/* string and its wildcard pattern */
struct StringPattern {
char *sp_String;
STRPTR sp_Pattern;
};
/* code and letter table. see above */
struct Code_Letter_Table {UBYTE code;char letter;};
/* qualifier and letter table */
struct Qual_Letter_Table {UWORD code;UWORD letter;};
/* Every macro has this struct */
struct MacroObject {
struct Node mo_Link; /* for key and execution list linking */
UWORD mo_Position; /* ordinal position (also long aligns) */
long mo_Size; /* size of macro (including \0) */
char *mo_Macro; /* the macro string! */
char *mo_ResumePos; /* position in macro to resume at */
APTR *mo_Owner; /* config owner or ARexx message ptr */
char mo_Name[MAX_MACRO_NAME]; /* mo_Link.ln_Name points here */
UWORD mo_Flags; /* see MFLG_ above */
UWORD mo_Qual; /* hotkey qualifier for this macro */
UWORD mo_Code; /* hotkey code */
WORD mo_ExeCnt; /* number of times this macro has executed */
WORD mo_DelayCnt; /* how long to delay before re-executing */
BYTE mo_ErrorCode; /* this macro's error code */
WORD mo_LE; /* only relevant when MFLG_GADGET is set. */
WORD mo_TE; /* " */
UWORD mo_GID; /* (mo_Code << 8) | mo_Qual */
};
/* every configuration has one of these structs */
struct MachCfg {
struct Node mc_Link;
struct List mc_Hotkeys[MAXKEYS+1]; /* the configs hotkeys */
struct Gadget *mc_CustomGadgets; /* list of gadgets for clock */
char mc_Title[MAX_CFG_TITLE]; /* to match window, screen or program name */
char mc_Append[MAX_PASTE_APPEND+1]; /* text to append when pasting*/
char mc_Prepend[MAX_PASTE_APPEND+1]; /* text to prepend */
char mc_ClockFont[MAX_FILE_NAME]; /* null for default font */
ULONG mc_Clocksignature; /* signature using leftedge, topedge, type etc. */
WORD mc_Cost; /* clock meter cost or time in minutes */
WORD mc_Position; /* ordinal number of configuration. */
WORD mc_Registered; /* 43 for registered version 4.3 */
WORD mc_Accel; /* acceleration -9 to 9 */
WORD mc_Threshold; /* acceleration threshold 0 to 9 */
WORD mc_Clickstofront; /* number of clicks required */
WORD mc_Clockle; /* clock left edge */
WORD mc_Clockte;
WORD mc_Clockwidth;
WORD mc_Clockheight;
WORD mc_Altle; /* alternate (zoomed) left edge */
WORD mc_Altte;
WORD mc_Altwidth;
WORD mc_Altheight;
WORD mc_Timele; /* left edge for time */
WORD mc_Timete; /* top edge for time */
WORD mc_Timetext; /* time pen for clock */
WORD mc_Timeback; /* background pen */
WORD mc_Datedelay; /* delay in seconds to show date */
WORD mc_Lowmem; /* low memory alert in kbytes */
WORD mc_Hours; /* 12 or 24 */
WORD mc_Rate; /* rate for meter */
WORD mc_Blankdelay; /* delay in seconds */
WORD mc_Blanklevel; /* 0 to 15 */
WORD mc_Mouseoffdelay; /* delay in seconds */
WORD mc_Normalpriority; /* -127 to 127 */
WORD mc_Playbackpriority;
WORD mc_Playdelay; /* delay between mouse moves during playback in 50ths */
WORD mc_Buffersize; /* buffer size when recording */
WORD mc_Chardelay; /* delay in 50ths of sec. when pasting*/
WORD mc_Linedelay;
UWORD mc_MMB; /* qualifiers to substitute for mmb */
WORD mc_MousePort; /* 0 or 1 */
WORD mc_BeepVolume; /* 0-64 */
WORD mc_KeyClickVolume; /* 0-64 */
WORD mc_Clocktype; /* CLOCK_ONLY, CLOCK_PLUSMEMORY etc. */
WORD mc_ClockBorder; /* CLOCK_BORDERLESS, CLOCK_BORDER_RIGHT etc. */
WORD mc_DateFormat; /* FORMAT_DOS, FORMAT_INT, FORMAT_USA, FORMAT_CDN */
WORD mc_DateSeparator; /* -, /, . etc. */
WORD mc_NextLE; /* left edge for next gadget to be added */
WORD mc_NextTE;
WORD mc_Pad; /* ensure longword alignment from mc_Registered! */
ULONG mc_Flags; /* sunmouse, cycle, clock on, etc */
struct StringPattern mc_SunWindows; /* for windows that this will work in */
struct StringPattern mc_KeyActWindows;
struct StringPattern mc_AutoPopWindows;
struct StringPattern mc_CycleWindows;
struct StringPattern mc_MTMWindows;
struct StringPattern mc_MenuWrapWindows;
struct StringPattern mc_ClickWindows;
struct StringPattern mc_ClockScreens;
};
/* the library base. Everything is accessible from here */
struct MachLibrary {
struct Library ml_Lib;
ULONG ml_SegList;
ULONG ml_Flags;
APTR ml_ExecBase;
struct SignalSemaphore ml_BaseSemaphore; /* Semaphore to Obtain/Release */
struct List ml_ConfigHead; /* The first configuration */
struct MachCfg *ml_CurConfig; /* The current configuration */
struct List *ml_MacroQueue; /* Macros executing or waiting. */
struct MsgPort *ml_MsgPort; /* MachV receives msgs here */
struct Window *ml_ClockWindow; /* NULL if no clock */
struct Window *ml_InterfaceWindow;/* Pointer to interface window. */
struct Window *ml_ListWindow; /* List window pointer if open */
struct MsgPort *ml_Interface_Port; /* Interface receives msgs here */
struct TaskInfo ml_MachV_Task; /* MachV itself! */
struct TaskInfo ml_Interface_Task; /* User interface task */
struct Task *ml_List_Task; /* Task spawned by mach.library */
struct Task *ml_ScrCloseTask; /* Task currently closing a screen */
struct AppString *ml_AppStrings; /* All text (localized) */
struct Code_Letter_Table *ml_CLTable; /* iecodes and their letters */
char *ml_ListSelection; /* last list selection */
char *ml_TempMacroBuffer; /* ptr to recording buffer */
char *ml_Variable; /* ptr to buffer MAX_VARIABLE in len */
char *ml_VarName; /* ptr to name of variable */
char *ml_RegName; /* ptr to registered users name/num */
char *ml_Interface_Path; /* path to interface */
char ml_PrefsDirName[MAX_DIR_NAME]; /* path to prefs */
char ml_PrefsFileName[MAX_FILE_NAME];/* name of pref file */
char ml_BeepFileName[MAX_DIR_NAME+MAX_FILE_NAME];
char ml_AlarmCommand[MAX_ALARM_COMMAND]; /* default echo >speak: */
ULONG ml_MouseEvent; /* MachV mouse events */
ULONG ml_GeneralEvent; /* MachV other events */
ULONG ml_ReqKeyQual; /* -1 = request key/qualifier from MachV */
UWORD ml_GVF_Flags; /* Flags for env variables. def = GVF_LOCAL_ONLY */
WORD ml_MachForbid; /* Forbid the handler from doing anything! */
WORD ml_Recording; /* Currently recording a macro. */
WORD ml_SuspendAll; /* Suspend MachV */
WORD ml_HandlerPri; /* priority of interrupt handler */
UWORD ml_Trace; /* Trace options. TRACE_SERIAL or TRACE_CONSOLE */
UWORD ml_ScreenFlags; /* SetMachV screen types desired */
char *ml_TodaysDate; /* e.g. 03-25-93 (updated every second) */
char *ml_TodaysTime; /* e.g. 17:45:29 (updated every second) */
WORD ml_Smle; /* Left/Top edges of SetMachV windows */
WORD ml_Smte;
WORD ml_Cliple;
WORD ml_Clipte;
WORD ml_Mfeatle;
WORD ml_Mfeatte;
WORD ml_Cfeatle;
WORD ml_Cfeatte;
WORD ml_Miscle;
WORD ml_Miscte;
};
#endif