%i   "inc8.sfl"

submod_class   inc8 {
   input     a<8> ;
   output    s<8> ;
   instrin   do ;
   instr_arg do(a) ;
   }

module  pc {
/* module description of an Program Counter */
   input     in<8> ;
   output    out<8> ;
   reg       pc<8> ;
   instrin   load ;
   instrin   inc ;
   instrin   reset ;
   instrin   hold ;
   inc8      inc_8 ;

   instruct  reset
   /* if reset is active */
      par {
         pc := 0b00000000 ;
         out = pc ;
         }
   instruct hold
   /* if hold is active */
         out = pc ;
   instruct load
   /* if load is active */
      par {
         pc := in ;
         out = pc ;
         }
   instruct inc
   /* if inc is active */
      par {
         pc := inc_8.do(pc).s ;
         out = pc ;
         }
   }