NB. a small memory containing a machine language NB. program for c =: a + b NB. Computer tracing control trace =: 0 NB. Memory model mem =: 0 0 0 0 307 108 409 22 3 0 NB. memory operations access =: monad define y from mem ) store =: monad define mem =: (1 from y) (0 from y) amend mem ) NB. the processor registers pc =: 0 ir =: 0 ac =: 0 NB. the processor model proc =: monad define whilst. y do. NB. show registers and memory if tracing displayRegisters '' NB. fetch instruction ir =: access pc NB. increment pc pc =: pc + 1 NB. decode instruction 'opCode address' =: 100 100 rep ir NB. interpret instruction if. opCode = 1 do. ac =: ac + access address continue. end. if. opCode = 2 do. ac =: ac - access address continue. end. if. opCode = 3 do. ac =: access address continue. end. if. opCode = 4 do. store address , ac continue. else. 'invalid operation code' break. end. end. ) NB. the tracing function displayRegisters =: monad define if. trace do. display 'pc= ' , (format pc) , ', ir= ' , (format ir) , ', ac= ' , format ac display 'mem= ' , format mem else. 0 end. )