return to main page

1401 Software Development

available for use on Win7, Mac and Linux

Goal: Show what ROPE can do, and how to use it -
ROPE is "our" 1401 Software development system
    - - includes "our" 1401 Autocoder assembler and 1401 emulator
    - runs on a home PC under Win7, Mac and LINUX.
    - run a debugged program on "our" IBM 1401 machines.

Table of Contents


Introduction to "ROPE"

from Ron Mak, April 2017, for another document :-))
To develop new 1401 software, volunteers use ROPE, a GUI-based integrated development environment (IDE) created by Ron Mak that runs on Windows, Linux, and Mac OS. [1] ROPE integrates an Autocoder assembler developed by Van Snyder [2] and the SimH 1401 simulator developed by Robert Supnik [3]. A programmer edits and assembles an Autocoder program, and then debugs it with breakpoints. The program can run normally, or it can run at slow speed or be single-stepped with the current statement highlighted. Separate live windows display memory, the machine console, and the printer output. After the program has run successfully under simulation, ROPE can produce an image of the object deck to be punched onto actual cards via a PC-to-keypunch linkage. Volunteers have used ROPE to create demo programs to run on the actual 1401 systems.

Ron Mak has made a Graphical Development Environment that combines:
    - a simple editor, with line and character positions displayed :-))
    - Van Snyder's Autocoder assembler
    - control of Bob Supnik's SIMH very competent and complete 1401 simulator
    - with the Autocoder output listing
    - set/unset a breakpoint, just click the line in the listing
and wrapped the above in a Graphical User's Interface (GUI) that makes life easy.

If you want to examine 1401 memory, just open a window or two, want to see printed output? it is in a window on screen, want an operator display? open a window, want to step one instruction? click a button. You should see a demo! much better than any typed description!

Ron calls his environment "ROPE" (Ron's Own Programming Environment)
I (Ed Thelen) think ROPE is WONDERFUL.
The example to the right is the 1st 1401 program I ever wrote and ran :-))

After down loading "ROPE" as below,
see Van Snyder's 1401 Programming Hints


ROPE example
also full size 300 KB
Added May 2017, from Ron Mak
Here’s ROPE executing of the Powers of 2 program:
  • A breakpoint was set at line 114, the first executable line of the program.
  • The program is paused at line 123, which is highlighted.
  • The printout window shows the live printer output.
  • The memory window shows the live contents of memory.
  • The console shows the live indicator lights.

  • ROPE is a Java program. The GUI is implemented with Swing (a Java graphics package).
  • I was a Senior Scientist at NASA when I wrote it ten years ago.
  • I wrote it over two nights while monitoring my software for the Mars rovers mission.
  • My Mars software was running without problems so I had time to work on ROPE.
  • My Java GUI invokes Van Snyder’s 1401 Autocoder assembler (written in Fortran 90) and Bob Supnik’s 1401 simulator (written in C).
  • I currently teach at San Jose State University. One of my former compiler students, Luca Severini, now maintains ROPE. He is also writing a Small C compiler for the 1401.


You can add these statements to the ROPE description for the geeks who want to know how the interactive Autocoder debugger works:

  • The ROPE GUI runs in one thread (“the IDE process”) and the 1401 simulator runs in another thread (“the debugger process”).
  • ROPE intercepts output from the simulator which it parses to update its display.
  • Then ROPE sends the next command to the simulator and waits for the next output.
I’ve attached a series of screen shots from a lecture I gave to my compiler class that describes a similar setup that I created for a Pascal interpreter. This isn’t too hard if you know what you’re doing! 8-)

– Ron
http://www.cs.sjsu.edu/~mak/

"ROPE", Ron Mak's Graphical User's Development Environment - updated Jan 3, 2010
(I find this easiest to download and run - Ed Thelen)
Here is early User Instructions and update instructions
- scanned 1401 Autocoder manual
Here is an on-line pdf of IBM's 1401 Reference Manual A24-1403-5 with a good description of the commands.
Windows update April 2008, v0.7, can use new Autocoder V3.1, rough 1401 running timer

Down load the zip file (for Windows only) at http://www.apropos-logic.com/ROPE1401v07.zip. This version incorporates Van Snyder's Autocoder assembler v. 3.1. -- Ron


LINUX Version (June 25, 2008)
Download it from http://www.apropos-logic.com/ROPE1401v07Linux.tar.gz. This matches the latest Windows version that I did last April (http://www.apropos-logic.com/ROPE1401v07.zip). Unzip and detar into your favorite directory. Then cd to the directory and run the shell script "./rope".
Note that I compiled the two binary executables "autocoder" and "i1401r" for an Intel box. This is version 3.1 of Autocoder and (sigh, still) version 3.3-1 of i1401 (simh) slightly modified to talk nicely with my Java code. -- Ron

SIMH Simulator
Note: you do not need the following information to run ROPE just fine. Reference only
From The Computer History Simulation Project
    - SIMH documentation by Bob Supnik
    - Supplemented I1401 User Manual - locally generated -
    - SIMH Help file
This simulator is command line only, no GUI at all. Really Spartan!
For really deep research,
    - Tricks for Simulating/Emulating the 1401 System
    - a listing of Van Snyder's Autocoder parameters & help file.
    - SIMH documentation by Bob Supnik

Autocoder Assembler
Note: you do not need the following information to run ROPE just fine. Reference only
Van Snyder Utilities.
Van Snyder remarks about MACROs - July 9, 2010
By "have to be five characters" I mean the names of macros in columns 16-20, to be used to search for macro template files, have to be five nonblank characters, or MA or ma. Actually, I check that the trimmed length is five, so having blanks in the middle would be OK. I suspect "real" Autocoder wouldn't accept that.

READ and OPEN are IOCS macros. My Autocoder doesn't support IOCS at all.

It does allow an op code in 19 and a D-modifler in 20, so long as 16-18 are blank.


Developers and users of our environment using ROPE
  • Bob Supnik - developed the simulator framework SIMH. (SIMH-FAQ is here.,
  • Bob Supnik - did 1401 simulator for framework SIMH.
  • Van Snyder - provided a very small number of bug fixes for the above simulation,
    and the AutoCoder assembler. Van can also supply a 1401 disassembler.
  • Ron Mak - incorporated all of the above into "ROPE", an easy to use Windows environment
  • Stan Paddock - provided the interface to a keypunch so you can punch ROPE object decks to run on an IBM 1401
    Stan also provides consulting to users.
  • Michael Albaugh - m.e.albaugh@gmail.com
  • Joel Franusic - < joel@franusic.com >
  • Ray Tracing from Lawrence Kesteloot - lk@teamten.com https://github.com/lkesteloot/1401
  • Luca Severini - lucaseverini@mac.com https://www.dropbox.com/s/bdgncrcaaa5e3a5/ROPE.zip?dl=0
  • Ken Shirriff - ken.shirriff@gmail.com
  • Paul Laughton - paul.laughton@gmail.com
  • Ed Thelen - ed@ed-thelen.org


- A known bug in ROPE. added April 13, 2013
Occasionally, exact circumstances unknown, ROPE gets into a mode where it loads and runs a previously assembled version of the program you are developing. The symptom is that you are looking at the current listing, but running a previous version, the changes you just made are not in the running code !!

Work-around - Just exit ROPE, ( the current source code has already been saved before the last assembly). Then restart ROPE, assemble the code you were working on, and you will then run the currently assembled code.


Paul Laughton (Nov 23, 2014) reports

This problem occurs when when using a card data input.

When you are using card input,
after you do a new assembly,
before you start the program again,
go to directory where your source program is
and delete any file of the form xxx_yyy.cd
(where xxx.s is your source filename and yyy.* is your card filename).


and Peripherals, card reader & punch, magnetic tapes. (printer is attached by default)
OK, the run time environment includes a display of the printout as it occurs :-))

Now about the other "standard" Peripherals, card reader & punch, magnetic tapes -
After assembling your program, another sub-window is displayed,
Before running your program you can "attach" the above peripherals by clicking on "Runtime Data..."
This image is for a sort I wrote which runs under ROPE simulation :-))
I understand that you can change the default file names.
I ?think? if you feed the card reader an ASCII file, that it will do "the right thing" and translate it to BCD.

2014 Latest and greatest ROPE from from Luca Severini Oct 17, 2014
Hi Lawrence,

I'm Luca Severini, a CS student and volunteer at the museum (I should say I was because know I don't have the time between school and work).

Ron Mak who, as you probably know, wrote Rope is one of my professors at SJSU. In the last period I worked on Rope adding some features and fixing bugs. I wish I could have more time to complete some useful features but I don't really have the time now. Hopefully I will finish to implement small-c for the end of the year as part of school project for my Compiler Design class.

I saw from the png in your repository that you are using it already... ;-) In any case here is the link to the latest version: https://www.dropbox.com/s/bdgncrcaaa5e3a5/ROPE.zip?dl=0

Any comment or suggestion about it is welcome.

Luca

2015 Latest and greatest ROPE aor PC & MAC from from Ken Shirriff Jan 16, 2015
PC Ed, here's the process I used to run ROPE 2.0 beta:
  1. Go to https://github.com/jpf/ROPE
  2. Click the "Download ZIP" button on the right. (Or clone the repository if you are familiar with git.)
  3. unzip (Expand) the downloaded ROPE-master.zip file.
  4. Go inside the ROPE-master directory and unzip the dist.zip file there.
    For some reason, on Windows this gives me warnings about "Do you want to copy this folder without encryption". Click "Yes" about 8 times.
    You have now installed ROPE and can run it:
  5. Go to the command prompt. (On Windows: Start, then type "cmd" into the search field.)
  6. Change directory to the dist directory you created when unzipping dist.zip.
  7. Type: java -jar rope1401.jar
To use ROPE, first note that the options under the File menu at the top don't really do anything, and creating a new file through the Edit window doesn't work either. You need to open an existing file by clicking Browse.

Go up a couple directories to ROPE-master, then down into examples and open lincoln.s. The left window is the source code. Click "Assemble file".
The right window is the assembled code. Click "Start program".
The window at the bottom is the printer output, and you should see an image of Lincoln there.

You can now edit the file in the left window, and then assemble and start as before. Note that spaces are very, very important.For example, everything must start in the right column and there are usually two spaces between the opcode and the arguments. The error messages are very basic; you may need to scan the right window carefully.

If you want to create a new file, you need to create it outside ROPE, and then load it with Browse.

The "Memory" window is very helpful for debugging. Word marks are indicated by a 1 under the character. Half my problems are due to word marks not where I expect them.

If the simulator goes into an infinite loop, I couldn't find any way to stop it except going back to the command line and giving a Control-C to the java command.


Here are instructions for Mac:
  1. Go to https://github.com/jpf/ROPE
  2. Click Download ZIP
  3. Open ROPE-master.zip and drag ROPE-master somewhere, e.g. Desktop
  4. Start a Terminal: Finder -> Application -> Utilities, double click on Terminal
  5. Type:
    cd Desktop/ROPE-master
    unzip dist.zip
  6. To run, type:
    cd dist
    java -jar rope1401.jar

    The java command gave me a weird clipboard error the first time but worked after that.

Ken

2016 Latest and greatest ROPE from Stan Paddock April 2016
Ed,

Attached is ROPE02.zip.
Extract from the zip file into c:\
In c:\ROPE02\bin, there is a batch file named ROPE.bat
You can put a shortcut to this file on your desktop or copy this file to your desktop.
There is a ROPE.ico that you can use to change the icon on the shortcut or the file.
C:\ROPE02\SourceFiles has a bunch of Autocoder files to examine or play with.
Your system must have a late version of JAVA installed.
Stan

"Luca Severini" From: Luca Severini < lucaseverini@gmail.com > May 31, 2017
For ROPE, there is the public repository on github:
https://github.com/lucaseverini/ROPE

For the App, I can provide the sources, with open source license, for the parts that I wrote. The rest has been written by Stan. However if you or someone else wants to use it, is more practical to provide the UIID of an iPhone and an email address so I can send an installation email for it.

If you want to bring a 1401 program from ROPE to the 1401 - added May 2022
From: Jack Ghiselli
To: ed ed-thelen.org
Subject: CHM: Operating instructions for PCWRITE

...

There exists a system called "ROPE" for preparing, assembling, and testing-via-simulator 1401 Autocoder programs. ROPE is described elsewhere.

If you want to bring a 1401 program from ROPE to the 1401, the CHM has a system for doing this. It apparently doesn't have a formal name, but I've called it PCWRITE, the name of the IBM PC program used. You bring your Autocoder object deck on a USB thumb drive, put it into the IBM PC, and punch an actual object deck on the 1402 Punch on CT. I needed to use this capability and found there wasn't any written instructions on how to use it. You had to go to Stan Paddock and get guidance. To help anybody else who wants to use the capability, I wrote up the attached PCWRITE Operating Instructions. I thought perhaps you could enroll them on your all-seeing data base of stuff, where people could find it if they need it.

There appear to be a couple of other methods for PC-to-1401 transfer that don't seem to be working at the moment. Also, I think Tom Szolyga is developing an improved system which he plans to attach to the DE 1401. I'll talk to him about creating operating instructions for it.

Attached is a PDF file.

Best regards, and thanks again for your archive,
--Jack

Coding Reference Documents
We are blessed by having a large number of 1401 documents on line at
http://www.bitsavers.org/pdf/ibm/1401/
courtesy of Al Kossow.

Of particular interest to people wishing to code and simulate the 1401 are:


Status from Luca Severini, Tue 7/5/2022. 1:19 AM
Hello everybody,

The Github pages (https://github.com/lucaseverini/ROPE) are up to date with the latest version of ROPE and all the necessary stuff to run it.
The only but serious issue is with the Autocoder binaries that don’t run on the latest Windows and macOS as they are still 32-bit (it should work until macOS Mojave and Windows 8).
There is an issue with the Autocoder source that is not completely compatible with more recent versions of Fortran compiler that I tried to compile Autocoder.
Stan Paddock contacted Van Snyder to have help in fixing that issue, but I didn’t hear back from him, so I don’t know what is the current situation there.
I have no problem to be contacted if I can be of any help.

Best,

Luca


from Ron Mak - I successfully run it on a 2019 Apple MacBook Pro (Intel architecture). January 7, 2024
I heard that some folks want to run ROPE on Mac OS. I successfully run it on a 2019 Apple MacBook Pro (Intel architecture). I don’t have access to a machine with the new Apple silicon.

Download and unzip this file http://www.cs.sjsu.edu/~mak/ROPEonIntelMacOS.zip and then cd into the directory.

Mac OS might not allow you to run the Autocoder and 1401 simulator executables. To bypass its security, enter these commands on the command line
     . /autocoder-3.13 -version (no space between the dot and the slash)
and then
    . /i1401r (no space between the dot and the slash)
After each command, you must give explicit permission to run the “unverified” application. See https://support.apple.com/en-us/HT202491. Terminate the simulator by entering q.

Now you should be able to run ROPE:
     java rope1401/Rope

I included several demo Autocoder programs (the *.s files).

These are not the latest and greatest ROPE, Autocoder, or simulator executables, just what I happen to have on my laptop. Van Snyder and I had major difficulties a couple of months ago trying to compile the latest version of his Autocoder source files due to problems with the gnu Fortran compiler.

In my (very little) spare time, I’ve been using ROPE to develop a personal project — Robert Garner knows what it is — which I hope will make it even easier to write demo programs for the 1401s. It’s going to take a while, but stay tuned!

— Ron

Ronald Mak
http://www.cs.sjsu.edu/~mak/


Hi Ron,

That sounds like me. I'd tried to get in touch with Van Snyder via email a few times, but I might've gotten filtered out. I was trying to get the source for the assembler to attempt to recompile it on Apple Silicon (I've since set up a different x86 box that runs things fine).

ROPE itself (the version currently hosted on GitHub and linked to via the info site) works fine on whatever JVM is packaged with current Apple Silicon Macs, but the assembler itself is the thing that is unwilling to work on those chips (it looks like there is some explicit architecture check, and it's rejecting Arm as "unknown" - this is in spite of the fact that it is running via the x86 emulation layer).

I'm happy to have a go at convincing it to compile on my machine.

-Sam


- from Peter Chang

Hi Ron,

Thank you very much. I tried to run ROPE on my Mac before.

After I downloaded your zip file, my Mac complains of missing libgfortran.3.dylib while running autocode-3.13 .

ROPEonIntelMacOS % ./autocoder-3.13 -version
dyld[86205]: Library not loaded: '/usr/local/lib/libgfortran.3.dylib'

Do you know where I could download this lib file ?

Thank you.

Peter


- from Ronald Mak/SJSU

Hi, Peter.

Oh, no! Library problems are the worst because once you install a missing library, it will complain about another one missing.

Try this: https://stackoverflow.com/questions/57207357/dyld-library-not-loaded-usr-local-gfortran-lib-libgfortran-3-dylib-reason-im

— Ron


Started in 2006
Last updated January 7, 2024
Return to
main page