

************************************************************
Psuedo code for interrupt handler:

On keyboard interrupt do {
    save context
    if keyboard has input, save with work request to level3 queue
    if block is ready {
        reset indicator
        add check_1st_blk to level2 queue
        }
    restore context
    enable interrupts
    return from interrupt
    }

On timer interrupt do {
    save context
    if write ok flag set{  /*done with interrupts off to avoid clash */
        initiate write
        clear flag
        }
    enable interrupts
    capture sample, save with work request to level2 queue
    step minute counter, on overflow {
        reset counter
        put minute change work request in level3 queue
        }
    return from interrupt
    }
   
Psuedo code for tasks

Analyze sample {
   perform statistical analysis
   if out of bounds {
      compute correction
      output correction
      }
   return       
   }

Check Block Pt 1{
   compute partial checksum
   save result with pt2 work request in level2 queue
   return
   }

Check Block Pt 2{
   continue checksum
   save result with pt3 work request in level2 queue
   return
   }

Check Block pt3 {
   continue checksum
   save result with pt4 work request in level2 queue
   return
   }

Check Block pt4 {
   complete checksum
   if ok, set write ok flag
   return
   }

Parse input {
   save input parameter in command line buffer.
   If input keystroke is a terminal symbol{
       parse buffer;
       output manual correction;
       clear buffer;
       }
   return;
   }

Minute change{
   increment minutes-ones
   add work request for digit change to minutes-ones to level4 queue
   add work request for digit step level3 queue
   on overflow {
      add work request for digit change to minutes-tens to level 4 queue
      add work request for digit step level3 queue
      }
   on tens overflow {
      add work request for digit change to hours-ones to level 4 queue
      add work request for digit step level3 queue
      }
   on hours ones overflow {
      add work request for digit change to hours-tens to level 4 queue
      add work request for digit step level3 queue
      }
   on hours-twelve overflow {
      add work request for digit change to hours-ones to level 4 queue
      for (i=0; i<8; i++)
        add work request for digit step to level3 queue
      add work request for digit change to hours-tens to level 4 queue
      add work request for digit step to level 3 queue
      }
   }

digit change {
   set multiplexor to select requested digit
   }

digit step {
   for (i=1; i<60; i++) {
     add work request for one_pulse to level4 queue
     }
   }

one_pulse {
   pulse stepping motor
   busy-wait for 10 ms
   return
   }
****************************Listing 7***********************



