home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / CLIPPER / MISC / MAILBOX.ZIP / MPVAXSJT.C < prev    next >
Encoding:
C/C++ Source or Header  |  1988-06-27  |  2.7 KB  |  93 lines

  1. /****************************************************************************/
  2. /* mpvaxsjt.c -- REPLACEMENT setjmp & longjmp FUNCTIONS FOR VAX (TEST PGM)  */
  3. /* Created:  12/2/87        Release:  0.7        Version:  12/3/87   */
  4. /****************************************************************************
  5. (c) Copyright 1987 by Michael Benjamin Parker           (USA SS# 557-49-4130)
  6.  
  7. All Rights Reserved unless specified in the following include files: */
  8. #include "mptsk.cpy" /*
  9.  
  10. DO NOT REMOVE OR ALTER THIS NOTICE AND ITS PROVISIONS.
  11. ****************************************************************************/
  12. /* OVERVIEW:
  13.  
  14. This program tests the mpvaxsj functions.  See mpvaxsj.h for more details.
  15. */
  16. /****************************************************************************/
  17. /****************************************************************************/
  18. /****************************************************************************/
  19. #include "mpvaxsj.h"
  20. /****************************************************************************/
  21.  
  22. int    mpvaxsj_protofn(jmper)
  23.     MPVAXSJ    jmper;
  24. {
  25.     register int    a=    16;
  26.     register int    b=    17;
  27.     register int    c=    18;
  28.     register int    d=    19;
  29.     register int    e=    20;
  30.     register int    f=    21;
  31.     register int    g=    22;
  32.     register int    h=    23;
  33.     register int    i=    24;
  34.     register int     j=    25;
  35.     register int    k=    26;
  36.     register int    l=    27;
  37.     register int    m=    28;
  38.  
  39.     return(a+b+c+d+e+f+g+h+i+j+k+l+m);
  40. }
  41.  
  42. void    mpvaxsj_printsp()
  43. {
  44.     int    dumb[1];
  45.     printf("\tsp= %d,\tcond= %d,\tmask= %d,\tap= %d,\tfp= %d,\tpc= %d\n",
  46.         &(dumb[1]),dumb[1], dumb[2],   dumb[3], dumb[4], dumb[5]);
  47. }
  48.  
  49. void    mpvaxsj_test()
  50. {
  51.     MPVAXSJ    jmper;
  52.     int    ret;
  53.     register int    r11=    11;
  54.     register int    r10=    10;
  55.     register int    r9=    9;
  56.     register int    r8=    8;
  57.     register int    r7=    7;
  58.     register int    r6=    6;
  59.     register int    r5=    5;
  60.  
  61.     printf("\nSetting jumper.\n");
  62.     mpvaxsj_printsp();
  63.     printf("\tRegisters r5-r11: %d, %d, %d, %d, %d, %d, %d\n",
  64.                     r5, r6, r7, r8, r9, r10,r11);    
  65.     if (!(ret= mpvaxsj_setjmp(jmper))) {
  66.  
  67.         r5=r6=r7=r8=r9=r10=r11=    2;
  68.         printf("\nJumping Jumper\n");
  69.         mpvaxsj_printsp();
  70.         printf("\tRegisters r5-r11: %d, %d, %d, %d, %d, %d, %d\n",
  71.                         r5, r6, r7, r8, r9, r10,r11);
  72.         mpvaxsj_longjmp(jmper,2);
  73.         printf("\nShould Never Evaluate\n");
  74.     }
  75.     /* Return Value should be 2.  All registers should be restored */
  76.     printf("\nCatching Jump with a %d returned.\n",ret);
  77.         mpvaxsj_printsp();
  78.         printf("\tRegisters r5-r11: %d, %d, %d, %d, %d, %d, %d\n",
  79.                         r5, r6, r7, r8, r9, r10,r11);
  80. }
  81.  
  82. /*    Compile Command:    cc -g -o mpvaxsjt mpvaxsjt.c mpvaxsj.s
  83. */
  84.  
  85.     main()
  86. {
  87.     mpvaxsj_test();
  88.     printf("mpvaxsj_test() Returned\n");
  89. }
  90.  
  91. /****************************************************************************/
  92.  
  93.