return to main page
Programming / Data Processing Classes
-----Original Message----- From: Robert Garner [mailto:robgarn@mac.com] Sent: Monday, December 17, 2007 11:32 PM To: Len Shustek; Timothy Dirks Cc: David Cortesi; Frank King; Mike Cheponis; Allen Palmer; Bill Worthington; Dan McInnis; Ron Mak; randall.neff@gmail.com; Kirsten Tashev; Alex Bochannek; Grant Saviers; Ed Thelen; Robert Garner; Dag Spicer; Robert B Garner; David Pease; Jim Somers; 1401_software@computerhistory.org Subject: Ron Mak's 1401 programming class proposal Len, Tim, In our conversations you've mentioned an interest in a Museum-sponsored class for programming and instruction on the IBM 1401. Woz was excited about that same possibility when he visited the 1401 a year ago; i.e., a "bare bones" offering of the entire spectrum from "from transistors to system programming!" Here is a write-up Ron Mak did a couple years ago proposing such a class, still vital now:
Table of Contents:
- Ron Mak's Initial Proposal Nov 2004
- Ron's update Jan 2008
- Ed Thelen's two cents Jan 2008
- Frank King offers to get the 2000 card/min 084 going
Ron's Initial Proposal
1401 Software Group
Ronald Mak
November 5, 2004
This informal write–up describes some ideas for what the 1401 Software Group can do in conjunction with the 1401 Restoration Project at the Computer History Museum.
The Software Group will have two overarching goals:
- Provide demo programs that will make the 1401 system perform for museum visitors.
- Conduct classes about the 1401 that can include historically accurate, hands–on programming sessions with the system.
Demo programs
There are many kinds of demo programs, and they can target different audiences.
The 1401 system is over 40 years old. Most of the museum visitors have never seen one, let alone one in operation. Since they grew up with PCs and workstations, many (if not most) visitors have never experienced a punch-card-based computer in action.
Therefore, 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 do–not–touch rules), they will also sense and hear what it was like to work with computer equipment back then. For this kind of demo, we can have the 1401 system running a typical application, such as generating a payroll or a sales report.
We won’t ignore some of the fun things people did with the 1401. The program that plays 1403 printer music comes to mind. However, the 1401 was primarily a business system and wasn’t the "hacker’s computer" like the PDP–1 that college students had access to back then. Therefore, we shouldn’t go overboard with these kinds of demos.
During a brainstorming meeting at the museum on October 29 with Dag Spicer, Kirsten Tashev, and Ron Mak, Dag suggested having an "interactive" demo, such as a simple biorhythm program. A visitor would punch some personal information (or a trained docent would do the punching) onto a card, and the program would read in the card and print out a biorhythm chart. The visitor would be able to take home the punched card and the printout.
Where will we get demo programs? We will use existing programs that we can find, such as a business application or a utility program like tape sort–merge. We’ll need to learn how to run them and supply them with appropriate data. We’ll have to write other demo programs ourselves or have students from our classes write them.
Classes
With a working 1401 system, we’ll be able to conduct short but engaging classes about the computer. For example, we can have a 90–minute class that covers:
- Some historical facts about the system, such as why it was an important computer in its day.
- An overview of the machine architecture.
- How to program the computer, including a dozen or so Autocoder assembly instructions.
- A simple programming problem.
- A talk by an "old timer" about personal experiences working with the 1401.
- Watching a demo in the machine room.
A longer class could add another 90 minutes during which the students can keypunch a short program (either one given in the class or ones they write on their own), feed the cards into the 1402, have the 1401 run the program, and watch their output print on the 1403. (All of this would be under strict supervision by trained volunteer operators.) This would provide a fantastic experience for today’s PC and workstation crowd.
If we run classes on Saturday, we could do the short 90–minute class before lunch and the longer 3–hour class after lunch. We may want to set a minimum age for the students, say high school level or older.
These classes will undoubtedly inspire some advanced students to study the machine in greater depth on their own, and they will want to write programs that are more complex. We certainly want to encourage that, and we’ll point those students to the online 1401 documentation and simulators.
Dag suggested that we consider a batch computing service. Advanced students can arrange time to come into the museum to keypunch their program decks. They’ll leave their programs for the trained volunteer operators to run, perhaps on a weekly or semiweekly basis. Students will undoubtedly learn about desk checking their jobs before submitting them.
We should foster ties with the computer science departments of our local universities. Computer architecture classes can benefit from having a "live dinosaur" from which students can learn what the old masters had accomplished. The 1401 had several unique architectural features. The antique programming techniques to deal with a very limited amount of memory are useful today for programming embedded microprocessors.
Example programming problem
Here’s a simple problem that takes advantage of the 1401’s variable–length words. Compute and print the Mersenne prime number 211,213 – 1, which was the largest known prime number when mathematicians discovered it in 1963. Hint: The number has 3,376 digits.
First solution: Allocate and zero out a 3,376–character word, and add 1 to it. Repeatedly double the word’s value 11,213 times, subtract 1, and print the value.
This solution will work, but it is somewhat slow, since the computer spends much of its time needlessly doubling leading zeros.
Second solution: Allocate and zero out a 3,376–character word, and add 1 to it. Now set the wordmark at the rightmost character of the word (where the initial 1 is), thereby making the word as short as possible. Repeatedly double the word’s value, but each time first check the character where the wordmark is located. If that character is nonzero (or, more precisely, 5 or greater), move the wordmark one character to the left –– i.e., grow the length of the word by one character whenever necessary. After 11,213 doublings, subtract 1 and print the value.
This solution will run about twice as fast as the first solution. By watching the console lights, you can see the doublings taking longer and longer as the length of the word increases.
Students can learn how to read the instruction timing charts and see who can come up with the fastest program. Or, they can try to write the shortest program. Can you solve this problem on a 1401 system that has only 4K of memory?
Resources
The Software Group will work closely with the museum staff. Kirsten noted that the museum is currently formulating its education plans. The staff needs to investigate what impact such classes will have on museum resources and whether they would be feasible. Perhaps the 1401 classes can be the prototypes.
Members of the 1401 Hardware Group have also cautioned that the restored system may not be production quality, so we’ll need their guidance regarding how much stress we can put on the hardware.
The availability of supplies may be limited, such as blank punched cards, wide fan–folded printout paper, printer ribbons and carriage control tapes, magnetic tapes, etc. How many working keypunch machines does the museum have?