return to main page


Table of Contents - most recent near the top (here)

Lozenge and percent - from Bill Worthington /11/16/04
one quick point on the lozenge and percent -- i.e. right and left parenthesis. It depended on the print-train (and perhaps the keypunch) character set you used as to which way _*you*_ saw them.

The 1401 treated the BCD character as the _same_ and let the compiler -- FORTRAN, COBOL, RPG, Autocoder, SPS, FARGO, etc. -- determine how to use it. The BCD representation was always *CBA84* for the lozenge/right parenthesis and *A84 *for the percent/left parenthesis. (The punched card representations were *12-4-8 *and *0-4-8* respectively.)

P.S. There was a 1401 _internal_ representation for the parentheses; but they had no corresponding print character.

P.P.S. There was also the same situation for the = and *#*, the *'* and *@ *and the *+ *and *& *characters.

Regards, Bill

PI and subroutine linkage? from Ron Mak 11/15/04
Hi, Ed.

I programmed several Ramanujan pi formulas and the Machin formula in the book before I did the Borwein formula, which I didn't attempt to prove. I had a table of other arctan-based pi formulas. I also included a factoid: In 1949, it took the Eniac 70 hours to compute 2,035 decimal digits of pi. It now takes my 1.7 GHz PC 9 seconds to do so, and my SunBlade 1000 workstation takes 2 seconds. So would it take the 1401 around 49 hours?

Good luck with your pi program. Feel free to use my web page to compare your results. Actually, I've gotten through life OK assuming pi = 3. So what if all my circles are a bit lopsided.

There was quite a flury of PI e-mail about this time from lots of folks. PI and methods to compute it make a very interesting chapter in the history of mathematics and computation. The Internet does a good job on this topic.

We can start a math library. But I vaguely remember that there wasn't a standard way to write subroutines in SPS/Autocoder. Programmer did stuff like put a B (branch) instruction at the end of the subroutine, which the calling routine modified to set the correct return address before branching to the start of the subroutine. There wasn't a standard way to pass in argument values or to return function values, either. Or, maybe I just never learned the right way to do it.

I think the Martians are taking the rovers for rides. [Headline: "Senior NASA scientist claims in e-mail that ..."] The "clean" rover is running at about 85% power, while the "dusty" rover is down to around 35%. But they've lasted through the Martian winter, and the days are getting longer again. -- Anonymous

Van Snyder answers Ed's questions 11/10/04
> ----- Original Message -----
> From: "Van Snyder" 
>  > I have a few.  I have the Autocoder that Dick Weaver sent me and two
> core-
> > dump routines.  I've disassembled both of them.
> Was this manual or using a disassembler program or ... ?
> I was going to do a disassembler for the 1401 as a way to learning
> its programmer interface - disassemble to Autocoder input and
> available for manual editing to give names, comments, ...
I disassembled these by hand, since almost every card was an overlay.
> ...
> > I have SPS that I've never done anything with.  IIRC, I got two-tape
> > Autocoder and SPS from Paul Pierce.
> are these on machine media of some kind, or paper?
These are both in machine-readable form.
> > I have the source code for Autocoder, which I keyed in from the CE manual
> > and assembled with my Autocoder.  Except for slightly different strategies
> > to assign set-word-mark instructions arising from DA's to individual load
> > cards, the deck I produced is the same as the one I got from Dick, so I
> > think the source is OK.
> What is "DA's"?
DA is the Autocoder "define area" macro. You'd write
area DA 10x80
to define an area named "area" of ten records of 80 characters each. You could also add an index register to specify that references to "area" should have the index register tag automatically included, a record mark to indicate that each record ends with a record mark (adding one to the amount of core set aside for each record), or a G to indicate that a group mark with a word mark should follow the area. Then, for each field named "field", you'd write
field m,n
for fields extending from m to n and needing a word mark at m, or
field p for subfields ending at p and not needing a word mark.
> Would you like to share the above, as in letting me post it on the web site?
Sure, we can put it there. Should I send it to you or Sellam? I'll let somebody else worry whether there might be an IBM copyright problem.
> > > Task #3:  Evaluate 1401 simulators and emulators.  Dan McInnis has
> > > already started with one.  Each evaluator should e-mail a short summary
> > > of what was good or bad.  This will be useful information to give out to
> > > students of our classes.
> > I've used simh_v3.2 for several things, but Autocoder doesn't work in it.
> > I suspect there's something wrong with load-mode tape input, but I haven't
> > been able to repair it.  It has facilities for breakpoints and dumping,
> > and to configure the simulator for many different machine configurations.
> > I just added a trace, and Bob Supnik just added a history buffer.  It
> doesn't
> > do column binary read or punch, or move-and-binary-[de]code.
> > (Does the CHM machine have column binary?)
> The 1401 experts are trying HARD to find the ALDs (Automated Logic Diagrams)
> for this machine to see what we have.
I don't think it would harm the machine to try to read a card in column binary and see whether the right stuff shows up in 401-480 and 501-580, or it check stops. Similarly for multiply, start read feed, ....
> > Other than not running Autocoder, it appears to be accurate.
> >
> > I have the simulator that Newcomer and Jaeger wrote, but it's for Windoze,
> > which I don't have, so I never compiled it or ran it.
> What is the source in?
It's all in C. It looks like it has a lot of Microsoft dialect, so I didn't even try to compile it with gcc on Linux.
> > I wrote an Autocoder that doesn't do macros (other than CHAIN) or IOCS.
> > It's all in Fortran 90.  I don't have a Windoze Fortran compiler, but I'm
> > confident it's portable.  Does anybody want the source, or a Linux
> executable
> > to play with?
> I'm highly curious  about both the source and Linus executable.
> Do you have instructions - I do read text in desperate situations ;-)
Right now, the only executable I have is for Linux. Should we post executables, or just source? I know that there are not many people with Fortran compilers nowadays. I haven't tried g95 on this code.

My autocoder also handles SFX a little differently, so I had to change a couple of lines of the Autocoder I keyed in from the CE manual.

I've attached this. It's a gnuzip-compressed tar file, which WinZip knows how to handle -- except maybe the end-of-line is LF instead of CRLF. Wordpad handles this, but Notepad does not. For Linux, just un-tar it by using "tar xzf autocoder_f90.tgz" I _think_ I linked it with static libraries from the compiler vendor (Lahey/Fujitsu). Let me know if it complains about missing "jwe...." stuff. If you run it with the "-h" option, it prints its command-line usage and quits.

There's also a "tapedump" to dump an object tape. Input is stdin, output is stdout. It has no options.

> Do you have some examples of source code?
The biggest example I have is Autocoder. It would be nice to have Sort 7 or COBOL or .... I recently sent two Mersenne-prime routines to Ronald Mak. Altogether, I have 29 files, some of which are snippets or macros.
> -----------------------------
> I understand there is a "compressed" object code format.
> Do you know anything about that?
I think SPS-I produced one object card for each instruction, DC or DCW. There was a program that "compressed" this to use fewer cards. Autocoder automatically produces "compressed" format: columns 1-39 are text to be loaded, 40-71 are instructions to do the loading, 72-75 are sequence numbers, and 76-80 are ID from cc 76-80 of the JOB card.

At least on the 709x, IBSYS could produce "prest" source decks, in which runs of two or more blanks were replaced by a count of the number of blanks, and then the result was punched in column binary. It typically reduced the number of cards by about a factor of six. I wrote my own version of this for the Univac, and then stored a bunch of Varian microprograms using it (I had a prest-deck reader for the V-70). Brian Knittel recently read some of these decks for me. I had to write software to rescue them (again), but I did have the V-70 listings to guide me.

> At
> I have an
>    "1402 Card Reader Character Set"
> and
> Is this accurate,  complete,
>     and a reasonable way to present a confusing situation?
Plus zero and Minus zero print as ? and !, respectively. Left and Right parentheses print as such on the H chain, and as % and lozenge (box, square), respectively, on the A chain. There's a chart on page 170 of A24-1403-5, which is at as
> I understand there is a "memory dump to printer" button
> on one of the 1401 control panels.  What format is
> the memory dump contents seen on the printer?
This is done by turning the "Mode Switch" to "Storage Print Out", setting the "Manual Address" dial's two high-order digits to the desired band of core to print, and pressing "Start". With a 1403 Model 1, this prints 100 characters from the xy01 location dialed in from the console, with word marks, as if by a Write "2" instruction followed by a Write Word Marks "2)" instruction (where ")" is lozenge). With a 1403 Model 2 or a 1404, this prints 132 characters starting at xy01. This is described on page 9 of the 1401 operators guide, which is available at as

I used this to dump 1-100 before loading a dump program that also printed sense switch settings, high-low-equal, overflow, and the address on each line. I have two dump programs that do this, but I don't know whether the non-German one is the one I used in 1966-67 (the German one definitely isn't!).

Let me know if there's more stuff you want me to send. I don't want to burden your bandwidth without an invitation.

1401 Demos from Ron Mak 11/1/2004
I had a meeting with Dag Spicer and Kirsten Tashev last Friday to discuss what we want to do with the 1401 after it is operational, with regards to exhibition (demos) and programming classes. I plan to do a write-up of my ideas shortly.

But in the meantime, here are some of my thoughts regarding demos.

The 1401 system is over 40 years old. Most of the museum visitors will have never seen one, let alone one in operation. In fact, many (if not most) visitors have never seen a punch-card-based mainframe in action, since they grew up with PCs and workstations.

Therefore, I believe even a "mundane" demo would be impressive, one that shows reading in a program deck, flashing lights on the console, tapes reading and writing, and the line printer printing. If we let small groups of visitors into the machine room (under strict "no touching" orders), they will also be able to sense and hear what it was like to work with computer equipment back then. To accomplish that, I would like to see the 1401 system running a typical application, such as generating a payroll or a sales report.

Sure, we can do some fun things like the 1403 music program. But demoing the system by making it do something it was never intended to do would present an invalid educational experience.

-- Ron

P.S. If give advanced programming courses and a student wants to write a program that does something unusual, then that's a different matter.

 -----Original Message-----
> From: Sellam Ismail  
> Sent: Monday, November 01, 2004 4:55 PM
> To: Ted Johnston
> Cc: Dick Weaver; Robert Garner; 1401_software; 
> James Turley; 
> Bob Smith; Bill Selmeier; Paul Pierce
> Subject: RE: 1401 demos
> > The term pushing to its limits is a little scarry with
> > a 40 year old machine.  I think she should be treated  
> > a bit as a lovely old lady and not stressed.  I think  
> > we ought to talk to the CEs who are working on the 
> > 1403 to get their take on such programs.  Ted
> I didn't mean we should torture this poor computer.   
> But I would like to
> see the machine perform sstuff that would be more out  
> of the bounds of normal operation (short of physical   
> torment). 
> You know, stuff that it wasn't "intended" to do.  
> Playful stuff, like games and such.
> -- 
> Sellam Ismail


1401 Demos from Bill Selmeier 11/1/2004
I'd like to see a demo that illustrates computing for most people from the early '60s. Make the IBM129 key punch operational and put it in the entry way. Let people punch their name into a card and append it to a small program that will be read through the card reader, blink the lights, spin some tape and print out a single page with text about the IBM1401 and that has their name embedded in the content.


1401 Demos from Van Snyder 10/25/04
Robert Garner wrote:
> I can imagine some fun/interesting demo programs that 
> highlight the impressive, kinetic, and palpable hardware!
> (But not over stress it!  
> :-)
> For instance, simultaneously running the card reader,
> tape drives, and printer.  I know some folks have spoken 
> about a Knuth-inspired, 3-tape-drive merge/sort program.
> I could imagine categories of demos, depending on the 
> visitor level.
When I visited the operating 1401 at the Haus zur Geschichte der IBM Datenverarbeitung in Sindelfingen, Germany (near Stuttgart), Heinz Oberle ran a "demo" program that at least exercised the disk drive and tape drives. IIRC, the program was read from cards, not from tape. I'll ask him if we can get it -- preferably the source for it.

Has the software delivered with the machine been inventoried? One good "demo" candidate would be Sort 7. It's about 2000 cards just for the "object" deck. It used a two-way four-tape balanced merge.

> I'd like to encourage the software team to discuss 
> demo ideas, (ideally in a meeting).
> Can such demos be written and debugged on the 1401 
> simulator, SIMH:
> or David Weibel's Java simulator (and tutorial)?:
The IBM Autocoder distribution 1401-AU-037 plus ten revision letters that Dick Weaver gave me doesn't run on simh v2.9-10. The "deck" installs and generates an operational tape, which boots, but then crashes, I think in phase 5. I haven't had time to dig into the simulator to find out why it doesn't work. I'm just speculating, but I think the problem is related to load-mode tape input.

I have successfully run some tiny programs in simh. I haven't tried some bigger ones. One that I ran is a core-dump from Germany, that includes the sense switches and the overflow and high-low-equal settings.

I wrote an Autocoder (that doesn't do macros other than CHAIN) for my PC -- all in Fortran 90. Except for minor differences in how DA allocates set- word-mark instructions to object cards, it produces the same distribution deck for Autocoder as the one I got from Dick.

BTW, Dick also gave me a CE manual for Autocoder, from which I "keypunched" the source for Autocoder. I also "keypunched" the text and patches from the ten update letters.

> A hands-on demo for the general visitor could involve 
>  - punching their names into cards, 
>  - reading the cards in on the 1402,
>  - merging the names from an existing/dummy list 
>      on (an already mounted) mag tape, 
>  - then having the list printed out in order.
> Perhaps, to add interest, with really high salaries and
> fun job descriptions! ;-)
I have no idea where 1403 ribbons can be gotten. The best price I've seen for cards is $32/2000 for plain (5081) cards, from Cardamation.
> I can imagine "advanced" classes for writing/debugging 
> Autocode programs  and special diagnostics, particularly 
>   for when the machine is acting up.
> Akin to a "trail maintenance crew," an on-going seminar 
> for writing programs that diagnose the machine might 
> be a way to keep it going for many years.
Paul Pierce has the IBM diagnostics. That would be a good starting point.

-- Van Snyder