#include "metab.h" extern FILE * kbdmf; extern FILE * ffp; extern int kbdmstate; extern int ovreq, ovreq2, ovsub, ovsub2; extern char Argbuf[128]; ovmain( x, f, n ) { switch ( x ) { case 0: { /* start keyboard macro */ if ( kbdmf != NULL || ffptest() || kbdmstate != 0 ) { notnow: mlwrite("Not Now"); return (FALSE); } strcpy( Argbuf, "KY+BD+MC.KBM" ); /***********************kbdmf = fopen( "KY+BD+MC.KBM", "w" ); */ ovreq = 33; ovsub2 = 3; ret29: ovreq2 = 29; rettrue: return ( 1 ); } /* end case 1 */ case 3: { /* continue from case 1 */ kbdmf = ffp; ffp = NULL; if ( kbdmf == NULL ) { retbeep: return ( ctrlg()); } mlwrite("[StartMac]"); kbdmstate = 1; goto rettrue; } /* end case 3 */ case 1: { /* end macro */ if ( kbdmf == NULL || ffptest() || ( kbdmstate != 1 && kbdmstate != 2 )) { goto notnow; } fclose( kbdmf ); kbdmstate = 0; mlwrite( ( kbdmstate == 1 ) ? "[EndMac]" : "[MacDone]" ); kbdmf = NULL; goto rettrue; } /* end case 1 */ case 2: { /* execute macro */ if ( kbdmf != NULL || ffptest() || kbdmstate != 0 ) { goto notnow; } strcpy( Argbuf, "KY+BD+MC.KBM" ); ovreq = 32; ovsub2 = 4; goto ret29; } case 4: { /* continue case 2 */ kbdmf = ffp; ffp = NULL; if ( kbdmf == NULL ) { goto retbeep; } kbdmstate = 2; goto rettrue; } } } ffptest() { if ( ffp == NULL ) return ( 0 ); return ( ffp->_flags ); }  .