Return to 1401 Software Development

ROPE/1401 (Ron's Own Programming Environment)

by Ron Mak, January 24, 2005
Here's version 0.1 [up to 0.2 now] of ROPE/1401 (Ron's Own Programming Environment) 
   for "beta testing".  The attached zip file is for Windows only.  
The Linux edition is mostly working, but I'm still having trouble 
   synchronizing Java and SIMH (my solution for Windows doesn't work 
   for Linux), and so that edition will come later.  
Some of you got a preview last Saturday on my laptop at the museum.
Create a directory, such as c:\rope1401, and unzip everything into 
that directory.  You will find:
    rope1401.exe -- the executable that starts up the main GUI window
    autocoder.exe -- the Windows edition of Van Snyder's Autocoder assembler
    i1401r.exe -- the SIMH 1401 simulator that I modified 
                  to talk nicely with Java
    *.gif -- three image files needed by the GUI
    *.s -- some sample autocoder programs written by Van and me
You can move the *.s assembly source files to another directory.  
However, all the other files must stay together, and do not rename them.
The *.cd, *.lst, and *.out files will all be created in the same 
  directory as the corresponding *.s file.
Give ROPE a try.  I know it's still flaky, but let me know what you 
   find something wrong or needs improvement. 
If you see a stack trace come out in the DOS window, 
   that means something bad has happened.  
Cut and paste the stack trace into an e-mail for me, 
   and tell me what you were doing when the trace occurred. 
So far, I've put in only a few error checks, 
   so it's still quite easy to make bad things happen.
(One major bad thing -- sometimes one or more orphaned 
   i1401r.exe instances are left running.  
If your machine slows way down, that's probably what happened.  
You'll have to use Task Manager to kill them.  
   An orphaned i1401r.exe chews up a lot of CPU time.)
You can forward this e-mail to anyone else you think might be interested, 
   but make sure it works for you first so I don't get swamped with complaints.
Simply run rope1401.exe.  
You can run it with a command line in a DOS window, 
   or you can double-click its name in a folder window.  
   In the latter case, it will open its own DOS window.  
You can even make a shortcut on your desktop and double-click that
ROPE needs the Java runtime engine (JRE).  
If you don't already have that installed, 
   ROPE will fail to start.  If so, 
    you need to download and install the JRE by going to  
After downloading the installer, 
    run it to install the JRE onto your system.  
    Then try running rope1401.exe again.
When the main GUI window first opens, 
   the only subwindow open will be the Edit window.   
Click the Browse button to open an assembly source file.
The Edit window currently has very limited editing capabilities.  
The Line and Column fields tell you where the cursor is.  
Press the Save button to save the file after you've made edits.  
Press the Assemble File button to invoke the Autocoder assembler.
Try assembling the file errors.s, which contains several syntax errors.  
The error messages will appear in the Assembly Errors box.  
Click on an error message, 
     and the editor will highlight the offending line.  
You can make corrections and then save or assemble.
Note that the Assemble File button will first save the file 
    before invoking the assembler.
Assembling a file will also open the Exec window.  
None of its buttons will be enabled if there are any assembly errors, 
   but you can scroll around and look at the errors in the listing.
The contents of the Exec window come from the Autocoder listing, 
   but without the page breaks and page headers.  
This window is where you'll execute your Autocoder program.
Try assembling an error-free program, such as mersenne.s.  
The Exec window will invoke the SIMH 1401 simulator i1401r.exe
   and issue the necessary "attach" commands to it to set up the files.  
   (The r is to differentiate from the original i1401.exe.)  
Any messages from SIMH will appear in the Simulator Messages box.  
The Printout window will also open at the bottom of the main GUI window, 
   hidden behind the other subwindows.
In the listing, you can set breakpoints on the lines 
   that are preceded by the blue + signs.  
Click START line with the mouse (listing line 127 for mersenne.s) , 
   and the + sign turns into a red ball.  
   Click the line again to turn off the breakpoint.  
You can set multiple breakpoints.  
The Exec windows issues the corresponding "br" and "nobr" commands to SIMH.
With the breakpoint set on the START line, click the Start Program button.  
   This issues a "b cdr" command to SIMH. 
     and the program will break at the START line.  
The current line will be highlighted.
The Start Program button has changed into the 
   Continue Program button (issues the "c" command). 
You can press it, or the the Single Step button (issues the "s") command.  
If you press the Auto Step button, 
   the Exec window will repeatedly issue the "s" command to SIMH, 
   until it reaches a breakpoint or a halt instruction.  
You can press the Faster or Slower buttons.  
The Auto Step button turns into a Stop Stepping button, 
   which you can press to stop the auto stepping.
The Quit button issues the "q" command.  You can press it any time, 
   but especially after your program is done.  
The Restart Simulator button restarts SIMH after you've quit it. 
You will need to reset your breakpoints after a restart.
The Kill Simulator program aborts SIMH, 
   which may be useful if your program is stuck in a loop after the "c" command.  
   (I don't know if this actually works.)
Press the Show Memory button to open a Memory window. 
   Enter the From and To addresses.  
   (If you only enter the From address, 
     it will assume the To address is the same as the From address.)  
For mersenne.s, try 3200 to 3700.  
   Press the Show button to get a memory dump.  
If you select Auto Update, 
   the memory dump will automatically update after each single step 
    at ??or?? a halt instruction.  
This is especially useful for watching memory change during auto stepping.
You can open multiple memory windows.  
   If they're all on auto update, things will get slower.  
If you have some windows on auto update and others not, 
you can then see how memory changed between breakpoints or halt instructions.
Press the Show Console button to open a Console window.  
This window shows:
  - the I instruction register, 
  - the A and B storage address registers, 
  - and the logic flags OVFLO, B = A, B # A (not equal to), B > A, and B < A.  
The Check box shows the Process and I/O check lights.  
The Parity box shows the A and B storage error flags.  
(I'm actually not sure what these are -- they're SIMH's ASERR and BSERR registers.  
  Parity is probably not the right label for them.)
The Console window also contains the sense switches, represented by checkboxes. 
Whenever a program starts, sense switch A is on, and all the others are off. 
   You can change the sense switch settings only after a program has started 
    and then is stopped at a breakpoint or a halt instruction.
You can only have at most one Console window open at a time.  
Like a Memory window, you can set it for auto update.  
If not, press the Update button to get the current settings.
The Printout window opens automatically at the bottom of the main GUI window, 
   often under the other subwindows.  
It shows what's been sent to the line printer.  
You can set it for auto update, or if not,    
    press the Update button to get the current printout.
1.  Generate a working Linux edition (definitely).
2.  Don't leave orphaned i1401r.exe instances behind (yeah, yeah, 
      I'll get to it).
2.  Make the Edit window better, such as Autocoder-specific tab stops 
      (only with sufficient bribes).
With ROPE, you can hang the machine, or you can hang yourself.
-- Ron
Ronald Mak
University Affiliated Research Center (UARC)
University of California at Santa Cruz
Mail Stop 269-3
NASA Ames Research Center
Moffett Field, CA  94035-1000
Office: (650) 604-0727
FAX: (650) 604-4036