EmbeddedRelated.com
Forums
The 2024 Embedded Online Conference

1130 reminiscing

Started by Jan Gray October 23, 2004
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





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




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




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.




--- 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.



I'm trying to find a copy of the old IBM 360/370 Scientific Subroutine
Manual either in print or as a document. I want to use he documentation
of certain routines to design hardware assists in an fpga. TIA.

Mike Turner
Simpsonville, SC




The 2024 Embedded Online Conference