Wed Sep 11 11:34:03 EDT 2024

COS 109 Toy Machine Simulator -- Single-step version

(You must have Javascript enabled.) Type your program in the left (pinkish) window. You must put labels in the first column and instructions like GET or ADD after the first column, i.e., one or more spaces before them. You can optionally use a colon after a label to make its role clearer. The simulator does not distinguish upper case from lower case, and is not robust, so be sure to spell instructions correctly and format code carefully.

Push RUN to start your program running. A dialog box will appear when a GET is executed, and output from PRINT will appear in the right (orangey) window. The simulator will stop if you Cancel a GET or push return without entering anything.

Push RESTART to restart, then STEP to single-step your program; the next instruction to be executed will be displayed.

               Accumulator:

                                                

          Next instruction:     

Syntax reminder

     get       get a number from keyboard into accumulator
     print     print contents of accumulator
     load Val  load accumulator with Val (Val unchanged)
     store M   store contents of accumulator into memory location called M (accumulator unchanged)
     add Val   add Val to contents of accumulator (Val unchanged)
     sub Val   subtract Val from contents of accumulator (Val unchanged)
     goto L    go to instruction labeled L
     ifpos L   go to instruction labeled L if accumulator is >= zero
     ifzero L  go to instruction labeled L if accumulator is zero
     stop      stop running
   M Num       before program runs, set this memory location (called M) to numeric value Num
If Val is a name like Sum, it refers to a labeled memory location. If Val is a number like 17, that value is used directly. So add Sum means to add the contents of the memory location named Sum to the value in the accumulator (leaving Sum's contents unchanged), while add 1 means to add 1 to the value in the accumulator.

If you want to see how the simulator works, Tools / Web Developer / Page Source in Firefox, Customize / Tools / View source in Chrome, or Developer / View Source in Safari.

There is a limit of 1000 instructions by default, to make it easier to prevent infinite loops.