Interface for qBeta module object

Origin: LIB

BasicSystem: obj
   %module Containers,LIB.StringLib,LIB.containers.QueueLib
   %include Containers,LIB.StringLib
   %public
   BasicSystem:
      %public
      Lock:
         %globals
         dummy: var integer
         bbb: var integer
         free_M: var integer
         %Public
         id: ref String
         init:
         get:
            res: var integer
            i: var integer
            loop: obj
               --disable
               
         free:
      BasicProcess:
         %Public
         in id: ref String
         status: var integer
         start:< -- need id as argument
      Scheduler:
         %Public
         active: ref BasicProcess
      thisCore:
         -- BasicSystem:: Core should be mved to here!
         %basic
         out C: ref core
      Core:
         -- should be moved to BETA,
         -- but depends on Scheduler
         -- could perhaps just be Object?
         -- but for thisCore.main.active, active is defined in Scheduler
         -- perhaps a super scheduler should be defined in BETA.xbeta
         -- main: ref BasicProces, thus also BasicProcess in BETA
         -- or perhaps thisCore here?
         %core
         %Public
         main: ref Scheduler
         attach:
            in M: ref Scheduler
      noOfCores: val
      cores: obj
         C1: ref Core
         C2: ref Core
         C3: ref Core
         C4: ref Core
            -- should be array
            
         init:
            S: ref Scheduler
      P_status: obj
         %globals
         %Public
         ACTIVE: val
         WAITING: val
         TERMINATED: val
      ProcessQueue: LIB.Containers.QueueLib.Queue
         --%globals
         %Public
         displayx:
      sch: obj
         L: obj Lock
         M: var integer
         %Public
         entry:
         add:
         dcr:
         running:
            out B: var Boolean
      SQS: obj
         Q: obj ProcessQueue
         L: obj Lock
         V: var integer
         W: var integer
         %Public
         entry:
         init: entry
         insert: entry
            in P: ref BasicProcess
         removeNext:
            out P: ref BasicProcess
         remove: entry
            in P: ref BasicProcess
         isEmpty:
            out B: var Boolean
         display: entry
         addWaiting: entry
         dcrWaiting: entry
         hasWaiting:
            out B: var boolean
      coreLock: obj Lock
      console: obj
         L: obj Lock
         %public
         display:
      keyboard: obj BasicProcess("Keyboard")
         B: obj Indexed(,integer)
         next: var integer
         top: var integer
         echo: var Boolean
         %Public
         Kscan:
            loopB: obj
         get:
            in caller: ref BasicProcess
            out ch: var char
            waitForChar: obj
      init: