home *** CD-ROM | disk | FTP | other *** search
/ ftp.update.uu.se / ftp.update.uu.se.2014.03.zip / ftp.update.uu.se / pub / rainbow / cpm / emacs / emacssrc.lzh / ovkbdm29.c < prev    next >
C/C++ Source or Header  |  1992-03-11  |  2KB  |  77 lines

  1.  
  2. #include    "metab.h"
  3. extern FILE * kbdmf;
  4. extern FILE * ffp;
  5. extern int kbdmstate;
  6. extern int ovreq, ovreq2, ovsub, ovsub2;
  7. extern char Argbuf[128];
  8.  
  9. ovmain( x, f, n )
  10. {
  11.     switch ( x )
  12.     {    case 0:
  13.         {    /* start keyboard macro */
  14.             if ( kbdmf != NULL || ffptest() || kbdmstate != 0 )
  15.             {
  16. notnow:                mlwrite("Not Now");
  17.                 return (FALSE);
  18.             }
  19.             strcpy( Argbuf, "KY+BD+MC.KBM" );
  20. /***********************kbdmf = fopen( "KY+BD+MC.KBM", "w" ); */
  21.             ovreq  = 33;
  22.             ovsub2 = 3;
  23. ret29:            ovreq2 = 29;
  24. rettrue:        return ( 1 );
  25.         }    /* end case 1 */
  26.         case 3:
  27.         {    /* continue from case 1 */
  28.             kbdmf = ffp;
  29.             ffp = NULL;
  30.             if ( kbdmf == NULL )
  31.             {
  32. retbeep:            return ( ctrlg());
  33.             }
  34.             mlwrite("[StartMac]");
  35.             kbdmstate = 1;
  36.             goto rettrue;
  37.         }    /* end case 3 */
  38.         case 1:
  39.         {    /* end macro */
  40.             if ( kbdmf == NULL || ffptest() ||
  41.                 ( kbdmstate != 1  && kbdmstate != 2 ))
  42.             {    goto notnow;
  43.             }
  44.             fclose( kbdmf );
  45.             kbdmstate = 0;
  46.             mlwrite( ( kbdmstate == 1 )
  47.                 ? "[EndMac]" : "[MacDone]" );
  48.             kbdmf = NULL;
  49.             goto rettrue;
  50.         }    /* end case 1 */
  51.         case 2:
  52.         {    /* execute macro */
  53.             if ( kbdmf != NULL || ffptest() || kbdmstate != 0 )
  54.             {    goto notnow;
  55.             }
  56.             strcpy( Argbuf, "KY+BD+MC.KBM" );
  57.             ovreq  = 32;
  58.             ovsub2 = 4;
  59.             goto ret29;
  60.         }
  61.         case 4:
  62.         {    /* continue case 2 */
  63.             kbdmf = ffp;
  64.             ffp = NULL;
  65.             if ( kbdmf == NULL )
  66.             {    goto retbeep;
  67.             }
  68.             kbdmstate = 2;
  69.             goto rettrue;
  70.         }
  71.     }
  72. }
  73. ffptest()
  74. {    if ( ffp == NULL ) return ( 0 );
  75.     return ( ffp->_flags );
  76. }
  77.