Thank you very much for the kind words. Congratulations on your interest
in hands-on computer design. I too have worked on an 1130, but it doesn't have the same sentimental attachment, understandable, really. For the youngsters on the list, here's a bit of my personal computing history. Nothing particularly unusual, but like so many other accounts, it serves to underscore how far we've come. I wrote my first program on a Data General Nova running time shared BASIC at the University of Waterloo, Physics room 342B in 1977. Then I discovered the Math Building. In the late 70s Waterloo had quite a collection of IBM 360s and 370s, DASDs, tape drives, etc. in a huge 2 story "red room", then at the architectural centre of the Math and Computing buliding, the "red room". Generally speaking, these ran VM/CMS. (And a WIDJET virtual card reader/printer: "WIDJET:...your job is in queue position 29...29...29...28...28...29...30... ... .) But the best computing environments on campus were provided by the Math Faculty Computing Facility. First I used their 36-bit Honeywell 66/60 (time shared GCOS). Most programs were written in B -- including rmcrook/adv/hstar, a.k.a. Collossal Cave Adventure! Later, I moved on to a pdp-11/45 running Waterloo Unix v6 in MC6098a. I remember finding pointers in C puzzling -- who allocates the storage pointers point to? Oh, I do... :-) The K&R C book hadn't been out for long. Accounts were free for the asking, even for precocious 9th graders, and anyone could walk in off the street and sign into the open jqpublic guest account. My first non-trivial C program was a Robots game that used cursor addressing control codes (pre-curses, I think). The source to most everything was there for the reading. (By the way I now have a QBUS pdp-11 that I made by mating a MicroVax chassis and a QBUS pdp-11/53 (see http://users.safeaccess.com/engdahl/PDP-11_53.htm for the general idea) and it runs 2.11 BSD with networking (when I power it up, once in a blue moon).) In 11th? grade I took computer programming in high school. All the schools in Waterloo County shared a single IBM 1130 that I never saw. (But I do have one of its core planes.) Instead, we would enter FORTRAN programs using a soft pencil on optically marked cards (same size as punched cards) -- or you could do your card punching at the university. (Ah, the 026 keypunch, what fun.) You'd place your program and data card deck into a box, with all the other students' programs, which would be shipped off to the 1130, and two days later you'd receive a print out of your job run. How sad if you made a trivial mistake and would have to wait two more business days for another run! Later I did meet an actual 1130 at Bayview Secondary School (or some such) in Thornhill, Ontario. The student I was visiting with told me he used to run a monitor program (?) that would lock up the machine at a preprogrammed time if he had a particular class he wanted to skip. Like clockwork, the machine would stop dead, and the hapless teacher would have little choice but to page this student to come and fix whatever the problem might be... So (if I may indulge the list) would you care to regale us a bit with your 1130 memories? And/or what you think an FPGA reimplementation might entail, if it isn't too early to ask? Thanks. Jan Gray |
|
1130 reminiscing
Started by ●October 23, 2004
Reply by ●October 23, 20042004-10-23
Well, it all started a long time ago and in a place far away... I was working as an electrician for an aerospace company and had started college at night (1969). I was about to get laid off when the company decided to promote me to a staff position analyzing certain aspects of our maintenance operations. I met a guy in the metalurgy department, discussed what I wanted to do and he introduced me to the IBM 1130. Over the next 4 years as I completed college I had almost unlimited access to the machine and its most important peripheral: the CalComp 565 plotter. Just the thing for Bode plots using the IBM Electronic Circuit Analysis Program (ECAP). Oh, and I did a lot of Operations Research kinds of things for the company. Time/motion, that kind of thing. Very interesting for a kid still trying to get through college. After college I moved north to LA and worked for a computer manufacturer doing electrical engineering for their computer facilities. I didn't have access any longer so in 1974 I set out to duplicate the 1130 with 74xxx chips and blown-link proms for the microcode. I had the processor nearly complete but memory wasn't available (to me, anyway) and, about the time it was, the Altair 8800 was introduced. So, I bought one... It had memory - 256 bytes! In 1975 I decided to pursue hardware design (still working as an electrical engineer in power design) so I grabbed up an MSEE at Loyola Marymount in 1976. I actually got credit for taking classes I would have taken as an elective! I never actually worked in electronic engineering, I stayed with electrical power until I retired last December. Somehow, I have always remained attached to the 1130. It isn't a particularly interesting computer, I did most everything in Fortran so the hardware was obscured anyway, but it shaped my interest in everything that has come since. At one time I had ALL of the documentation for the machine. I believe I had everything IBM ever printed and that was a lot. I no longer have it but I have recovered some from the Internet. I may still have the microfiche for the OS, Assembler and 26 pass Fortran compiler. I haven't gone looking for it lately. By the 1980s I had a lot of CP/M software and did a little consulting to write BIOSs to attach hard drives to various machines including the Apple IIE. Interesting stuff... I think I got CP/M running in 1976, right after I moved to Silicon Valley. But then, along came UCSD Pascal (1980?) and I really became interested in block structured languages. I had written a tiny Algol compiler using Data General Basic in grad school but here was the real deal, complete with every line of source. Like an idiot, I let the source listing get away and I don't know if I can boot the remaining 8" floppies - the Altair is missing a power supply. So, that's about it... A life long love affair with computers. The only guy around that would spend 5 years in college for a hobby, never deriving serious income from the effort. No regrets: electrical engineering kept me well fed and constantly employed for a long time. I ran across the T80 core a couple of years ago in the context of PacMan. So, I decided to build it using Tony Burch's B5-300 boards. Along the way I decided to revisit CP/M instead so I built a MAME arcade machine to play PacMan (actually so my grandson can play Bionic Commando) and moved on with the CP/M project. It is working; I don't take credit for anything except the IDE attachment and the BIOS. Daniel Wallner deserves all of the credit for the core. It's time to revisit UCSD Pascal. They yanked all of the licenses after a couple of years and rendered the system useless from a commercial point of view. So, it died about 1982 maybe '83. But I remember, at least in concept, how the interpreter worked on the 8080. And, even given the 2 MHz 8080 and the fact that the language was interpreted, the system was fast. Not blistering fast like a Pentium but workably fast. I have never seen the CDC 6600 implementation but since core speed was around 3 uS and instruction times were around 1 uS, it would seem than I can get an FPGA to run at least 20 times as fast. Maybe more since I won't be interpreting the code on a processor that was never intended to do so. Heck, I might get 50 to 100 times the speed - of a mainframe! I'll never match the floating point speed or the integer multiplication/division (well, maybe but I'm not counting on it) but that is unimportant. With a 32 bit word, integer arithmetic will be used 99% of the time and most of that will be addition/subtraction. So that's how I got here... I love every aspect of computers and I know how they work at a very detailed level. Blown-link proms, wire wrapped 74xxx and all. Now if I can just catch on to this FPGA stuff... --- In , "Jan Gray" <jsgray@a...> wrote: > Thank you very much for the kind words. Congratulations on your interest in > hands-on computer design. > > I too have worked on an 1130, but it doesn't have the same sentimental > attachment, understandable, really. For the youngsters on the list, here's > a bit of my personal computing history. Nothing particularly unusual, but > like so many other accounts, it serves to underscore how far we've come. > > I wrote my first program on a Data General Nova running time shared BASIC at > the University of Waterloo, Physics room 342B in 1977. Then I discovered the > Math Building. In the late 70s Waterloo had quite a collection of IBM 360s > and 370s, DASDs, tape drives, etc. in a huge 2 story "red room", then at the > architectural centre of the Math and Computing buliding, the "red room". > Generally speaking, these ran VM/CMS. (And a WIDJET virtual card > reader/printer: "WIDJET:...your job is in queue position > 29...29...29...28...28...29...30... ... .) > > But the best computing environments on campus were provided by the Math > Faculty Computing Facility. First I used their 36-bit Honeywell 66/60 (time > shared GCOS). Most programs were written in B -- including > rmcrook/adv/hstar, a.k.a. Collossal Cave Adventure! Later, I moved on to a > pdp-11/45 running Waterloo Unix v6 in MC6098a. I remember finding pointers > in C puzzling -- who allocates the storage pointers point to? Oh, I do... > :-) The K&R C book hadn't been out for long. Accounts were free for the > asking, even for precocious 9th graders, and anyone could walk in off the > street and sign into the open jqpublic guest account. My first non-trivial > C program was a Robots game that used cursor addressing control codes > (pre-curses, I think). The source to most everything was there for the > reading. > > (By the way I now have a QBUS pdp-11 that I made by mating a MicroVax > chassis and a QBUS pdp-11/53 (see > http://users.safeaccess.com/engdahl/PDP-11_53.htm for the general idea) and > it runs 2.11 BSD with networking (when I power it up, once in a blue moon).) > > In 11th? grade I took computer programming in high school. All the schools > in Waterloo County shared a single IBM 1130 that I never saw. (But I do > have one of its core planes.) Instead, we would enter FORTRAN programs > using a soft pencil on optically marked cards (same size as punched > cards) -- or you could do your card punching at the university. (Ah, the > 026 keypunch, what fun.) > > You'd place your program and data card deck into a box, with all the other > students' programs, which would be shipped off to the 1130, and two days > later you'd receive a print out of your job run. How sad if you made a > trivial mistake and would have to wait two more business days for another > run! > > Later I did meet an actual 1130 at Bayview Secondary School (or some such) > in Thornhill, Ontario. The student I was visiting with told me he used to > run a monitor program (?) that would lock up the machine at a preprogrammed > time if he had a particular class he wanted to skip. Like clockwork, the > machine would stop dead, and the hapless teacher would have little choice > but to page this student to come and fix whatever the problem might be... > > So (if I may indulge the list) would you care to regale us a bit with your > 1130 memories? And/or what you think an FPGA reimplementation might entail, > if it isn't too early to ask? > > Thanks. > Jan Gray |
Reply by ●October 23, 20042004-10-23
The IBM 1130 is a general purpose stored program computer with an address range of 32K words of 16 bits. It has a limited number of registers: accumulator, accumulator extension (for double work ops such as multiply/divide), a program counter (15 bits) and 3 index registers which were located in RAM on the 1130 and in hardware on the 1800 which was an industrial control version of the same machine. We had one of these 1800s doing data collection on the high speed wind tunnel. The instruction format: (Bits are numbered LEFT to RIGHT!) Bits 0-4 - OP code Bit 5 - Format bit - 2 word instruction if set Bits 6-7 - Tag bits, indicating which index register to use, if any Bits 8-15 - Displacement for relative addressing Bit 8 - Indirect addressing bit in two-word format Bit 9 - Branch out of interrupt flag for BSC instruction Bits 10-15 - Condition indicator bits for BSC and BSI instructions Bits 0-15 - Full address for two-word instructions. Notice the six bits of condition indicator bits. This allows a single instruction to branch on ANY combination of overflow, carry, even number, plus, minus or zero. The instruction set: Load and Store group - Load Accumulator Double Load - load accumulator and extension Store Accumulator Double Store Load Index Store Index Load Status Store Status Arithmetic group - Add Double Add Subtract Double Subtract Multiply Divide And Or Exclusive Or Shift group - Shift Left Logical - Accumulator only Shift Left Logical - Accumulator and Extension Shift Left and Count - Accumulator and Extension Shift Left and Count - Accumulator only Shift Right Logical - Accumulator only Shift Right Arithmetically - Accumulator and Extension Rotate Right - Accumulator and Extension Branch group - Branch and Store I (this is a call - see note) Branch or Skip on Condition Modify Index and Skip Wait IO group Execute I/O note: the Branch and Store I is a call. It worked by storing the return address in the first word of the called procedure while beginning execution in the second word. This pretty much blew recursion and re-entrancy out of the water. Addressing modes are absolute, indexed, indirect and relative and indexed can be combined with indirect. From a hardware point of view there is nothing difficult about the processor. There are some oddities about the Branch or Skip on Condition - sometimes it is the true condition, sometimes the false but the op code is the same. I believe IBM called the IO channel a 'stunt box'. Gettiing this to work in an FPGA may be a challenge because documentation is slim. It depends on whether running factory software is a goal. If not then just hang an IDE drive on the system and call it good. The original machine was about the size of a standard desk with a full size printer and card reader/punch adjacent. There was an IBM Selectric device for the console but it was seldom used. Nobody wanted to give up the space in memory for the code to drive it. In our shop the machines had 8K words and WOULD NEVER be upgraded because the powers that be wanted to push people to the CDC 6400. There were 16 console switches - a feature seriously lacking on modern computers! The disk subsystem used an interchangeable cartridge with 512,000 words of 16 bit storage. Core speed was 3.6 uS and most instructions took one cycle. The actual word was 18 bits wide but only 16 contained data. Building the processor would be fairly straight forward. The difficulty is creating the software to make it play. Everything would have to be written from descriptions and old source listings available on the Internet. The relocatable assembler, loader, disk monitor system, Fortran compiler (all 26 phases) would need to be coded from scratch. The 'stunt box' would need to be created from vague descriptions and implement what little is known of the IO system. The machine did have various interrupt facilities and it may be possible from the source listings to figure out how it all worked. I had thought to skip past this and implement just enough for the disk and printer. I don't imagine I'll get a reader/punch any time soon. But a 100x speedup certainly seems possible! And it certainly won't challenge the facilities of the Spartan 3 Starter Board. Richard |
|
Reply by ●October 23, 20042004-10-23
rtstofer wrote: > > The IBM 1130 is a general purpose stored program computer with an > address range of 32K words of 16 bits. It has a limited number of > registers: accumulator, accumulator extension (for double work ops > such as multiply/divide), a program counter (15 bits) and 3 index > registers which were located in RAM on the 1130 and in hardware on > the 1800 which was an industrial control version of the same > machine. Hey I even used one once in 1981. The only odd thing with the IBM1130 is the disk layout: 321 words per sector, 4 sectors per track, 2 tracks per cylinder, 200 cylinders per disk. |
|
Reply by ●October 24, 20042004-10-24
--- In , ben franchuk <bfranchuk@j...> wrote: > rtstofer wrote: > > > > The IBM 1130 is a general purpose stored program computer with an > > address range of 32K words of 16 bits. It has a limited number of > > registers: accumulator, accumulator extension (for double work ops > > such as multiply/divide), a program counter (15 bits) and 3 index > > registers which were located in RAM on the 1130 and in hardware on > > the 1800 which was an industrial control version of the same > > machine. > Hey I even used one once in 1981. The only odd thing with the > IBM1130 is the disk layout: 321 words per sector, 4 sectors per track, > 2 tracks per cylinder, 200 cylinders per disk. I think there are more oddities than that but you certainly hit on one of them. The reversal in the sense of Branch or Skip on Condition as a function of whether it is a one-word or two-word instruction strikes me as a major oddity. You have to pay very close attention to the format bit to determine whether the skip occurs on the true condition or the false condition. Odd... Storing the return address in the first word of the subroutine led to the familiar Label: DC *-* * is the value of the location counter so * minus * is zero and we're just creating a constant 0 as a place holder for the return address. Useful to know when look at core dumps! If the routine has never been called the value will still be 0. |
Reply by ●October 24, 20042004-10-24