home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / listings / v_08_04 / 8n04100a < prev    next >
Text File  |  1990-03-20  |  3KB  |  122 lines

  1.  
  2.  
  3. ************************************************************
  4. Psuedo code for interrupt handler:
  5.  
  6. On keyboard interrupt do {
  7.     save context
  8.     if keyboard has input, save with work request to level3 queue
  9.     if block is ready {
  10.         reset indicator
  11.         add check_1st_blk to level2 queue
  12.         }
  13.     restore context
  14.     enable interrupts
  15.     return from interrupt
  16.     }
  17.  
  18. On timer interrupt do {
  19.     save context
  20.     if write ok flag set{  /*done with interrupts off to avoid clash */
  21.         initiate write
  22.         clear flag
  23.         }
  24.     enable interrupts
  25.     capture sample, save with work request to level2 queue
  26.     step minute counter, on overflow {
  27.         reset counter
  28.         put minute change work request in level3 queue
  29.         }
  30.     return from interrupt
  31.     }
  32.    
  33. Psuedo code for tasks
  34.  
  35. Analyze sample {
  36.    perform statistical analysis
  37.    if out of bounds {
  38.       compute correction
  39.       output correction
  40.       }
  41.    return       
  42.    }
  43.  
  44. Check Block Pt 1{
  45.    compute partial checksum
  46.    save result with pt2 work request in level2 queue
  47.    return
  48.    }
  49.  
  50. Check Block Pt 2{
  51.    continue checksum
  52.    save result with pt3 work request in level2 queue
  53.    return
  54.    }
  55.  
  56. Check Block pt3 {
  57.    continue checksum
  58.    save result with pt4 work request in level2 queue
  59.    return
  60.    }
  61.  
  62. Check Block pt4 {
  63.    complete checksum
  64.    if ok, set write ok flag
  65.    return
  66.    }
  67.  
  68. Parse input {
  69.    save input parameter in command line buffer.
  70.    If input keystroke is a terminal symbol{
  71.        parse buffer;
  72.        output manual correction;
  73.        clear buffer;
  74.        }
  75.    return;
  76.    }
  77.  
  78. Minute change{
  79.    increment minutes-ones
  80.    add work request for digit change to minutes-ones to level4 queue
  81.    add work request for digit step level3 queue
  82.    on overflow {
  83.       add work request for digit change to minutes-tens to level 4 queue
  84.       add work request for digit step level3 queue
  85.       }
  86.    on tens overflow {
  87.       add work request for digit change to hours-ones to level 4 queue
  88.       add work request for digit step level3 queue
  89.       }
  90.    on hours ones overflow {
  91.       add work request for digit change to hours-tens to level 4 queue
  92.       add work request for digit step level3 queue
  93.       }
  94.    on hours-twelve overflow {
  95.       add work request for digit change to hours-ones to level 4 queue
  96.       for (i=0; i<8; i++)
  97.         add work request for digit step to level3 queue
  98.       add work request for digit change to hours-tens to level 4 queue
  99.       add work request for digit step to level 3 queue
  100.       }
  101.    }
  102.  
  103. digit change {
  104.    set multiplexor to select requested digit
  105.    }
  106.  
  107. digit step {
  108.    for (i=1; i<60; i++) {
  109.      add work request for one_pulse to level4 queue
  110.      }
  111.    }
  112.  
  113. one_pulse {
  114.    pulse stepping motor
  115.    busy-wait for 10 ms
  116.    return
  117.    }
  118. ****************************Listing 7***********************
  119.  
  120.  
  121.  
  122.