Mama Wrote the Code...

D

Dean Hoffman

Guest
that put men on the moon. I don\'t know how such things are done but Margaret Hamilton led the team that did. The article says she had her little one with her at work now and then.
<https://www.foxnews.com/lifestyle/meet-american-who-wrote-moon-landing-software-margaret-hamilton-computer-whiz-mom>
 
On 4/29/2023 1:02 AM, Dean Hoffman wrote:
that put men on the moon. I don\'t know how such things are done but
Margaret Hamilton led the team that did. The article says she had her
little one with her at work now and then.
https://www.foxnews.com/lifestyle/meet-american-who-wrote-moon-landing-software-margaret-hamilton-computer-whiz-mom
The fact that it was done -- or, done by a woman -- isn\'t the impressive
aspect.

Rather, the fact that such a thing could be done with the sorts of
*tools* that were available back then.

I recall writing i4004 code and \"assembling\" it with a little index
card (cheat sheet) that I kept folded in my wallet.

Moving to the i8080/85 was pure luxury -- an assembler AND a linkage editor
(instead of writing big blocks of monolithic code).

Nowadays, writing code is a piece of cake; compilers even alert you
to errors in your code, support versioning, simulation, etc.
 
On Sat, 29 Apr 2023 01:16:28 -0700, Don Y
<blockedofcourse@foo.invalid> wrote:

On 4/29/2023 1:02 AM, Dean Hoffman wrote:
that put men on the moon. I don\'t know how such things are done but
Margaret Hamilton led the team that did. The article says she had her
little one with her at work now and then.
https://www.foxnews.com/lifestyle/meet-american-who-wrote-moon-landing-software-margaret-hamilton-computer-whiz-mom
The fact that it was done -- or, done by a woman -- isn\'t the impressive
aspect.

Rather, the fact that such a thing could be done with the sorts of
*tools* that were available back then.

I recall writing i4004 code and \"assembling\" it with a little index
card (cheat sheet) that I kept folded in my wallet.

Moving to the i8080/85 was pure luxury -- an assembler AND a linkage editor
(instead of writing big blocks of monolithic code).

Nowadays, writing code is a piece of cake; compilers even alert you
to errors in your code, support versioning, simulation, etc.

But can\'t spot fundamental bugs.
 
On Saturday, April 29, 2023 at 3:16:47 AM UTC-5, Don Y wrote:
On 4/29/2023 1:02 AM, Dean Hoffman wrote:
that put men on the moon. I don\'t know how such things are done but
Margaret Hamilton led the team that did. The article says she had her
little one with her at work now and then.
https://www.foxnews.com/lifestyle/meet-american-who-wrote-moon-landing-software-margaret-hamilton-computer-whiz-mom
The fact that it was done -- or, done by a woman -- isn\'t the impressive
aspect.

Rather, the fact that such a thing could be done with the sorts of
*tools* that were available back then.

I recall writing i4004 code and \"assembling\" it with a little index
card (cheat sheet) that I kept folded in my wallet.

Moving to the i8080/85 was pure luxury -- an assembler AND a linkage editor
(instead of writing big blocks of monolithic code).

Nowadays, writing code is a piece of cake; compilers even alert you
to errors in your code, support versioning, simulation, etc.

CBS was the only tv network we could get way back when. I remember some of the shots of the ground crew sitting behind what looked like long tables. All white guys, all with ties and white shirts.
No jackets. A woman must\'ve felt like a duck in a desert.
 
On 4/29/2023 4:54 AM, Dean Hoffman wrote:
On Saturday, April 29, 2023 at 3:16:47 AM UTC-5, Don Y wrote:
On 4/29/2023 1:02 AM, Dean Hoffman wrote:
that put men on the moon. I don\'t know how such things are done but
Margaret Hamilton led the team that did. The article says she had her
little one with her at work now and then.
https://www.foxnews.com/lifestyle/meet-american-who-wrote-moon-landing-software-margaret-hamilton-computer-whiz-mom


The fact that it was done -- or, done by a woman -- isn\'t the impressive
aspect.

Rather, the fact that such a thing could be done with the sorts of *tools*
that were available back then.

I recall writing i4004 code and \"assembling\" it with a little index card
(cheat sheet) that I kept folded in my wallet.

Moving to the i8080/85 was pure luxury -- an assembler AND a linkage
editor (instead of writing big blocks of monolithic code).

Nowadays, writing code is a piece of cake; compilers even alert you to
errors in your code, support versioning, simulation, etc.

CBS was the only tv network we could get way back when. I remember some of
the shots of the ground crew sitting behind what looked like long tables.
All white guys, all with ties and white shirts. No jackets. A woman
must\'ve felt like a duck in a desert.

Yeah. I\'ve only known a handful of female engineers. But, I think that
may be a generational thing; the previous generation largely sets the
expectations of the one that follows -- largely by the opportunities
they make available and the \"support\" they provide.

\"Find yourself a man...\"

I have numerous older friends who are stuck in this mold; most \"well provided
for\" but bored out of their gourds (not motivated to have any \"interests of
substance\"). Then, hubby dies (kids are grown) and they\'re rudderless.

Sadly, engineering is probably one of the areas where you can achieve
as an individual without the cooperation/participation of the rest
of the \"herd\".

The female engineers mentioned above have all opted to leave engineering
after \"finding a man\". :<
 
On Sat, 29 Apr 2023 01:16:28 -0700, Don Y
<blockedofcourse@foo.invalid> wrote:

On 4/29/2023 1:02 AM, Dean Hoffman wrote:
that put men on the moon. I don\'t know how such things are done but
Margaret Hamilton led the team that did. The article says she had her
little one with her at work now and then.
https://www.foxnews.com/lifestyle/meet-american-who-wrote-moon-landing-software-margaret-hamilton-computer-whiz-mom
The fact that it was done -- or, done by a woman -- isn\'t the impressive
aspect.

Rather, the fact that such a thing could be done with the sorts of
*tools* that were available back then.

I recall writing i4004 code and \"assembling\" it with a little index
card (cheat sheet) that I kept folded in my wallet.

Moving to the i8080/85 was pure luxury -- an assembler AND a linkage editor
(instead of writing big blocks of monolithic code).

Nowadays, writing code is a piece of cake; compilers even alert you
to errors in your code, support versioning, simulation, etc.

That\'s yesterday. You can now get AI to write the entire program for
you. That\'s going to put an awful lot of people out of a job!
 
On Sat, 29 Apr 2023 14:21:05 +0100, Cursitor Doom <cd@notformail.com>
wrote:

On Sat, 29 Apr 2023 01:16:28 -0700, Don Y
blockedofcourse@foo.invalid> wrote:

On 4/29/2023 1:02 AM, Dean Hoffman wrote:
that put men on the moon. I don\'t know how such things are done but
Margaret Hamilton led the team that did. The article says she had her
little one with her at work now and then.
https://www.foxnews.com/lifestyle/meet-american-who-wrote-moon-landing-software-margaret-hamilton-computer-whiz-mom
The fact that it was done -- or, done by a woman -- isn\'t the impressive
aspect.

Rather, the fact that such a thing could be done with the sorts of
*tools* that were available back then.

I recall writing i4004 code and \"assembling\" it with a little index
card (cheat sheet) that I kept folded in my wallet.

Moving to the i8080/85 was pure luxury -- an assembler AND a linkage editor
(instead of writing big blocks of monolithic code).

Nowadays, writing code is a piece of cake; compilers even alert you
to errors in your code, support versioning, simulation, etc.

That\'s yesterday. You can now get AI to write the entire program for
you. That\'s going to put an awful lot of people out of a job!

Do you just ask the ai thing \"Write me a billion dollar video game\" ?
 
On 29/04/2023 15:15, John Larkin wrote:
On Sat, 29 Apr 2023 14:21:05 +0100, Cursitor Doom <cd@notformail.com
wrote:

On Sat, 29 Apr 2023 01:16:28 -0700, Don Y
blockedofcourse@foo.invalid> wrote:

On 4/29/2023 1:02 AM, Dean Hoffman wrote:
that put men on the moon. I don\'t know how such things are done but
Margaret Hamilton led the team that did. The article says she had her
little one with her at work now and then.
https://www.foxnews.com/lifestyle/meet-american-who-wrote-moon-landing-software-margaret-hamilton-computer-whiz-mom
The fact that it was done -- or, done by a woman -- isn\'t the impressive
aspect.

Remember that historically it was often the women who were the manual
computors doing the detailed calculations behind the scenes. They seldom
got promoted out of that rut but a handful did. There is a rather nice
film about three such women in the Apollo programme. Hidden Figures.

https://www.imdb.com/title/tt4846340/

Same applied to code breaking during WWII.

Rather, the fact that such a thing could be done with the sorts of
*tools* that were available back then.

I recall writing i4004 code and \"assembling\" it with a little index
card (cheat sheet) that I kept folded in my wallet.

I recall someone who still coded 6502 by hand in hex long after
assemblers were available and routine. I could never understand why...

Moving to the i8080/85 was pure luxury -- an assembler AND a linkage editor
(instead of writing big blocks of monolithic code).

Nowadays, writing code is a piece of cake; compilers even alert you
to errors in your code, support versioning, simulation, etc.

That\'s yesterday. You can now get AI to write the entire program for
you. That\'s going to put an awful lot of people out of a job!

Do you just ask the ai thing \"Write me a billion dollar video game\" ?

You can certainly ask an AI to do all the backgrounds for game scenes
and get a much quicker result than having human graphic artists do it.

But pop songs are easier money and virtual AI avatars can work 24/7 and
in different venues at the same time. Korean J-pop already has Eternity
which is completely AI based. Other virtual pop groups so far to date
use head replacement on real dancers or performers in motion suits.

https://en.wikipedia.org/wiki/Eternity_(group)

We are not that far off having AI\'s that can take a set of
specifications for a program and churn out code that will implement
whatever the specification asks for. The problem then becomes one of
specifying unambiguously what you want well enough that you don\'t get
unwelcome surprises when the edge cases that you haven\'t thought of
arise in use. It pushes the problem up another level to the domain
experts to say *exactly* what they want. The generation after that AI\'s
will ask leading questions of the domain expert(s) to catch all the edge
cases. Some static analysis tools are already quite good at it.

I don\'t expect to see software development cease to be a viable career
in the next decade but after that quite a few white collar jobs could
well fall to AI. Lawyers look particularly vulnerable to being out AI\'d.

--
Martin Brown
 
On 4/29/2023 7:59 AM, Martin Brown wrote:
The fact that it was done -- or, done by a woman -- isn\'t the impressive
aspect.

Remember that historically it was often the women who were the manual computors
doing the detailed calculations behind the scenes. They seldom got promoted out
of that rut but a handful did. There is a rather nice film about three such
women in the Apollo programme. Hidden Figures.

Yup. We watched that about 5 or 6 years back. There are similar
stories of \"female achievement\" that seem to be slow to make it
out to the masses (ISTR Curie\'s bio was released recently)

> Same applied to code breaking during WWII.

Yeah, yet another film, there. But, the emphasis on Turing.

Rather, the fact that such a thing could be done with the sorts of
*tools* that were available back then.

I recall writing i4004 code and \"assembling\" it with a little index
card (cheat sheet) that I kept folded in my wallet.

I recall someone who still coded 6502 by hand in hex long after assemblers were
available and routine. I could never understand why...

(sigh) I had an employer who routinely started arguments about whether
or not Z80 code should be expressed in (split-)octal or hex. I just
looked at him, bewildered, and said \"Is there something wrong with
SYMBOLIC??\"

[Classic case of a guy developing a skillset when it was needed...
and never realizing that the need no longer persists and his
skillset has little value!]

We are not that far off having AI\'s that can take a set of specifications for a
program and churn out code that will implement whatever the specification asks
for. The problem then becomes one of specifying unambiguously what you want
well enough that you don\'t get unwelcome surprises when the edge cases that you
haven\'t thought of arise in use.

And.... that\'s the rub. Writing \"bug-free\" code is relatively easy and
a low skill job. Figuring out what the code should *do* is where all
the bugs creep in!

Especially for anything that isn\'t just a variation on a \"batch\" program
(start here... do this... then this... end here!) -- regardless of complexity!

It pushes the problem up another level to the
domain experts to say *exactly* what they want.

But, then the problem becomes one of finding an unambiguous \"specification
language\" that, itself, doesn\'t look/feel/cost like \"writing code\".

The generation after that AI\'s
will ask leading questions of the domain expert(s) to catch all the edge cases.
Some static analysis tools are already quite good at it.

My experience is that they are good at *probing* those cases but still
put the developer in a reactive role: \"fix these bugs!\"

I don\'t expect to see software development cease to be a viable career in the
next decade but after that quite a few white collar jobs could well fall to AI.
Lawyers look particularly vulnerable to being out AI\'d.

Hardware designs will be relatively simple to \"can\": \"give me a <blah>
with these specifications. connect it to a <bazz> with these other
specifications.\"

Web portals will be cookie cutter (they already are, for the most part).

I imagine accounting and medical coding will as well (if not already!)

The harder part (unspoken) will be in the verification/validation
of these solutions -- esp when you consider how the AI\'s are \"trained\".
 
On 29/04/2023 09:02, Dean Hoffman wrote:
that put men on the moon. I don\'t know how such things are done but Margaret Hamilton led the team that did. The article says she had her little one with her at work now and then.
https://www.foxnews.com/lifestyle/meet-american-who-wrote-moon-landing-software-margaret-hamilton-computer-whiz-mom

What about Katherine Johnson, Dorothy Vaughan, and Mary Jackson?

Oh wait, they\'re black. Fox probably doesn\'t count them as American.

--
Brian Gregory (in England).
 
On Sat, 29 Apr 2023 08:15:25 -0700, Don Y
<blockedofcourse@foo.invalid> wrote:

On 4/29/2023 7:59 AM, Martin Brown wrote:

I recall someone who still coded 6502 by hand in hex long after assemblers were
available and routine. I could never understand why...

(sigh) I had an employer who routinely started arguments about whether
or not Z80 code should be expressed in (split-)octal or hex. I just
looked at him, bewildered, and said \"Is there something wrong with
SYMBOLIC??\"

8080/Z80 are essentially octal machines and as such very easy to
program in octal (or binary). I still do not understand why later
tools went into hexadecimal.In octal, there is only a few opcodes you
have to remember, the register numbering was straight forward. Branch
targets were absolute, so you could get the branch target directly
from the coding sheet.Inserting/removing instructions between the
branch instruction and branch target did not need borsch
recalculations.

With processors like 6800 used PC relative branch offsets, so
calculating the branch instruction offset was a mess and had to be
redone if instructions were added/removed between branch instruction
and target.

Then the question of debugging. In many cases the debugging had to be
done in octal using computer front panel switches or some EPROM
routine reading octal digits from some sort of keypad. No use of
symbolics.

It is not that self evident when to switch to symbolic. Depends on
processor type and tools available.

[Classic case of a guy developing a skillset when it was needed...
and never realizing that the need no longer persists and his
skillset has little value!]

A good macro assembler can be more versatile than some high level
language source manipulation in e.g. C.
 
On 4/30/2023 1:54 AM, upsidedown@downunder.com wrote:
On Sat, 29 Apr 2023 08:15:25 -0700, Don Y
blockedofcourse@foo.invalid> wrote:

On 4/29/2023 7:59 AM, Martin Brown wrote:

I recall someone who still coded 6502 by hand in hex long after assemblers were
available and routine. I could never understand why...

(sigh) I had an employer who routinely started arguments about whether
or not Z80 code should be expressed in (split-)octal or hex. I just
looked at him, bewildered, and said \"Is there something wrong with
SYMBOLIC??\"

8080/Z80 are essentially octal machines and as such very easy to
program in octal (or binary). I still do not understand why later
tools went into hexadecimal.In octal, there is only a few opcodes you
have to remember, the register numbering was straight forward.

Why should you have to remember something as banal as an opcode map?
That\'s like committing to memory the integrals of all the oddball
functions instead of just looking them up (or, letting a symbolic
tool do that on your behalf).

Why would you *want* to write code in ANY numeric form?
Why would you want to *recognize* opcodes in numeric form?
There were tools available that let you use symbolic instructions
and would display dumps as such.

His adherence to (split-)octal derived from the fact that he had
built hardware tools to let you monitor and patch running code
using 7-segment displays -- hexadecimal would have been required
buying four \"more expensive\" displays instead of relying on
six run-of-the-mill 7-segment displays.

Hex keypads are/were common (telco). And, you still need
OTHER keys to indicate the actions that you want to
perform: specify high address, specify low address (no,
you couldn\'t specify 0177777 but had to, instead, specify
0377 0377 as two separate operations), read/write, set
PC, etc.

Branch
targets were absolute, so you could get the branch target directly
from the coding sheet.Inserting/removing instructions between the
branch instruction and branch target did not need borsch
recalculations.

Z80 also has relative branch instructions (the 808x doesn\'t.)
And, you still need to have bound the executable *to* a particular
set of addresses in order to be able to reference specific
locations (as control flow targets as well as data references).

With processors like 6800 used PC relative branch offsets, so
calculating the branch instruction offset was a mess and had to be
redone if instructions were added/removed between branch instruction
and target.

This was even harder with the i4004 as you needed to know where
(within a page) the target was located cuz the branch simply
replaced (PCm,PCl) keeping PCh from the executing opcode.
If the target was on some other page, then you had to use a
long jump.

[Conditional branches were always within the same page as the
bits in the instruction that would have specified PCh for
a long jump were used to select the condition of interest!]

EXCEPT that PCh could end up at PCh+1 if the instruction had
been located at (PCh,0xF,0xF)! (for obvious reasons if you think
about how the device was implemented)

So, not only did you need to keep track of where the target
was but also had to keep track of FROM where you were
accessing it!

Then the question of debugging. In many cases the debugging had to be
done in octal using computer front panel switches or some EPROM
routine reading octal digits from some sort of keypad. No use of
symbolics.

In embedded systems, there\'s no \"front panel\". The boss in
question could just as easily have used a hex keypad and
14 segment displays but opted for \"on the cheap\". How
much money did he really think he was saving?

And, for machines (minis) with front panels and \"bit switches\",
they could just as easily be grouped in sets of 4 as sets of 3
(e.g., Nova); and the \"display\" was still binary so does it
matter if you read 0177777 off a coding sheet or 0xFFFF?
(in each case, you have to mentally map a non-binary character
into a set of 3 (or 4) bits.

It is not that self evident when to switch to symbolic. Depends on
processor type and tools available.

*I* used a cheap ICE with a serial port to my workstation.
It was likely less money outlayed than having the boss
build yet another of his \"poor man\'s *monitor* (which
only worked if the code was well behaved -- because the
code executed IN the target) and was useless for bringing
up NEW hardware (again, cuz the code had to run IN the target)

So, *I* could patch code symbolically while others were
wasting time remembering the opcode for EX (HL),SP or
Call PO,<target>

[Classic case of a guy developing a skillset when it was needed...
and never realizing that the need no longer persists and his
skillset has little value!]

A good macro assembler can be more versatile than some high level
language source manipulation in e.g. C.

That depends on what you are writing and who has to look at your
code AFTER you\'ve written it! You write *once* but it is
read MANY times so where should the emphasis be?!

OTOH, Macro assemblers tend to have better \"macro\" capabilities
than the preprocessor (or M4).
 
On 30/04/2023 11:02, Don Y wrote:
On 4/30/2023 1:54 AM, upsidedown@downunder.com wrote:

8080/Z80 are essentially octal machines and as such very easy to
program in octal (or binary). I still do not understand why later
tools went into hexadecimal.In octal, there is only a few opcodes you
have to remember, the register numbering was straight forward.

Why should you have to remember something as banal as an opcode map?

To be fair in the early days on hardware that was as primitive as hell
it helped a lot if you could recognise bits of code in an environment
where disassemblers were still running on mainframes.

That\'s like committing to memory the integrals of all the oddball
functions instead of just looking them up (or, letting a symbolic
tool do that on your behalf).

Again it helps to know some of the basic tricks and standard forms so
that you know what you are looking for. MAxima and its ilk are getting
better but they are only usable as a tool and sometimes oddly baulk at
relatively simple problems. I was probably in the last generation taught
some of the ways to do physics problems analytically that would today
just be thrown at a fluid in cell simulation without a second thought.

Why would you *want* to write code in ANY numeric form?
Why would you want to *recognize* opcodes in numeric form?
There were tools available that let you use symbolic instructions
and would display dumps as such.

Not on the most basic processors and environments there weren\'t. I have
vague recollections of SC/PM and 1802 aka COSMAC being available early
on. There were some expensive breakout boards and ICE\'s. We had the one
for 9995 and 9900 as well as various mainframe style Logitech tools (of
mouse fame but long before they had popularised it they sold compilers).

His adherence to (split-)octal derived from the fact that he had
built hardware tools to let you monitor and patch running code
using 7-segment displays -- hexadecimal would have been required
buying four \"more expensive\" displays instead of relying on
six run-of-the-mill 7-segment displays.

I think octal dates back much further to using mass produced decimal
nixie tubes but only using digits 0-7 in each one. I recall having to
bootstrap the PDP7 from the front panel to load the tape reader to then
load a programme. It was a very nifty machine with a type 340 vector
graphics display and could play a mean game of asteroids and dodgy chess
where it would sometimes cheat if you backed it into a corner.

The bootstrap reader tape would get very dog eared and have to be
repunched from time to time.

And, for machines (minis) with front panels and \"bit switches\",
they could just as easily be grouped in sets of 4 as sets of 3
(e.g., Nova); and the \"display\" was still binary so does it
matter if you read 0177777 off a coding sheet or 0xFFFF?
(in each case, you have to mentally map a non-binary character
into a set of 3 (or 4) bits.

There were a couple of Novas in the same room but they didn\'t have
anything like the appeal of the PDP-7 with its fancy vector graphics.

It is not that self evident when to switch to symbolic. Depends on
processor type and tools available.

*I* used a cheap ICE with a serial port to my workstation.

Very early on (as students) we pretty much only had bare metal CPUs with
not much memory to play with and native cunning to get it all working.
Data entry was painful especially on the Sinclair MK14 implementation
which assumed a terminal and required manual pressing of term/mem/term
as each byte was entered in hex. OTOH it was a bargain for £40 a kit.

6502 based Acorn atom and their much nicer BBC Micro were amongst the
first truly successful mass market home computers in the UK.

Sinclair reacted by launching their rival Z80 based ZX Spectrum which
also had its adherents (it was also cheaper and so more popular).

--
Martin Brown
 
On 4/30/2023 3:02 AM, Don Y wrote:
With processors like 6800 used PC relative branch offsets, so
calculating the branch instruction offset was a mess and had to be
redone if instructions were added/removed between branch instruction
and target.

This was even harder with the i4004 as you needed to know where
(within a page) the target was located cuz the branch simply
replaced (PCm,PCl) keeping PCh from the executing opcode.

For example:

0x100 FOO JUN BAZ ; actually transfers control to FOO
0x1FF BAR JUN FOO ; actually transfers control to BAZ
0x200 BAZ ... ; OK
0x2FE BAH JUN BAZ ; OK

If the target was on some other page, then you had to use a
long jump.

[Conditional branches were always within the same page as the
bits in the instruction that would have specified PCh for
a long jump were used to select the condition of interest!]

So, use of a JCN in the above failed instructions would also fail
in the same way. If the target of the JCN is in another page,
then you need a trampoline to get there!

[A *tool* can detect this -- once the addresses are bound -- but
doing it by hand leaves you at the mercy of your own discipline!]

Note that *inserting* an instruction could result in one of these
instructions moving from a \"safe\" location (in memory) -- i.e.,
something that avoids XFF addresses -- to an unsafe one. So,
adding an instruction *here* could force you to have to recode
some other thing, *there*.

0x100 FOO JUN BAZ ; actually transfers control to FOO
0x1FF BAR JUN FOO ; actually transfers control to BAZ
0x200 BAZ ... ; OK
0x201 FUD ... ; OK
0x205 NEW NOP ; added instruction here, moves BAH
0x2FF BAH JUN FUD ; actually transfers control to ELSE
0x301 ELSE ...

[Note that BAZ is technically *within* the BAR instruction
(though likely not intended as such) and FUD may be within BAZ]

With relative jumps, all you have to worry about is if your
insertion moves the target out of RANGE, regardless of where
you are in the physical address space.

[Hopefully I didn\'t screw up any of these examples...]
 
On 4/30/2023 4:00 AM, Martin Brown wrote:
On 30/04/2023 11:02, Don Y wrote:
On 4/30/2023 1:54 AM, upsidedown@downunder.com wrote:

8080/Z80 are essentially octal machines and as such very easy to
program in octal (or binary). I still do not understand why later
tools went into hexadecimal.In octal, there is only a few opcodes you
have to remember, the register numbering was straight forward.

Why should you have to remember something as banal as an opcode map?

To be fair in the early days on hardware that was as primitive as hell it
helped a lot if you could recognise bits of code in an environment where
disassemblers were still running on mainframes.

If you\'re producing a product that you intend to sell, then
you invest in the tools that you need to make that development
more efficient.

If you\'re a hobbyist, then your time has no value! :>

For the i4004, our tools ran on an \'11.

That belonged to ACCOUNTING! <frown> Who were very possessive
of their \"toy\" (\"We have to run payroll, today!\") and couldn\'t
understand why ENGINEERING would have need for a computer
(back then, devices didn\'t have MPUs inside)

And, the code image was stored in 1702\'s. So, examining
memory (with any sort of tool) was no better than
reading the program LISTING. And, patching meant burning
a new set of EPROMs.

It wasn\'t until the mid/late 70\'s that the possibility of running
code out of RAM came about (2Kx8 devices stacked to emulate
some size EPROM with a write-protect switch glued on back)

But, by then, you had a development system that could build
a new image in a matter of minutes; why bother with patching
and wondering if you\'ve patched it properly?

The only appeal of the \"live monitor\" was in watching values
change or altering values to see how the code would handle
them (cuz there was no \"console\" available on whatever
device you were building).

But, this relies on the code -- including your patches -- behaving
as a crash was not recoverable (other than RESET).

No reason not to use a UART to connect to some other
\"user friendly\" device that allows you to monitor and
patch live systems. And, gives you a bit of history
to review (on a glass TTY).

I built one system where an MCU acted as the \"watchdog\"
device (having control over the main processor\'s AND field\'s
reset signals). It could be used to move characters to/from
a running monitor in the product.

AND, on power up, it could claim the entire address space
of the main CPU so \"all\" memory accesses (opcode fetches!)
would be directed to that MCU and, from there, out to
an external device via its UART. Effectively TFTP boot
over a serial port byte-at-a-time (long before I\'d seen
tftpd/bootpd)

That\'s like committing to memory the integrals of all the oddball
functions instead of just looking them up (or, letting a symbolic
tool do that on your behalf).

Again it helps to know some of the basic tricks and standard forms so that you
know what you are looking for. MAxima and its ilk are getting better but they
are only usable as a tool and sometimes oddly baulk at relatively simple
problems. I was probably in the last generation taught some of the ways to do
physics problems analytically that would today just be thrown at a fluid in
cell simulation without a second thought.

I can do a cube root longhand. I can\'t imagine a situation
where I would even bother to try! \"Where did I place that
calculator...?\"

Why would you *want* to write code in ANY numeric form?
Why would you want to *recognize* opcodes in numeric form?
There were tools available that let you use symbolic instructions
and would display dumps as such.

Not on the most basic processors and environments there weren\'t. I have vague
recollections of SC/PM and 1802 aka COSMAC being available early on. There were
some expensive breakout boards and ICE\'s. We had the one for 9995 and 9900 as
well as various mainframe style Logitech tools (of mouse fame but long before
they had popularised it they sold compilers).

I recall buying a cheap ICE (~$2K) -- the size of for the Z80 that talked to
tools on a CP/M machine. The ICE could operate standalone (without requiring
any code IN the target) using a hex keypad and many-digit LED display *or*
connected to a computer and operated remotely.

So, I could single-step the processor -- altering the contents of registers
between instructions to suit my needs -- or let it run to a breakpoint
and capture the trace for display on my computer. Then, patch the code,
recompile (assemble) and download the \"fixed\" image.

Using the boss\'s tools, you\'d be watching octal characters and wondering
what the processor was doing:
OK, the two 3-digit displays are now telling me the current address...
And now the data (opcode) at that address (and its successor)
Based on my *memory* of that opcode, I can figure out what register
will be targeted by this instruction and check it\'s current contents
Then, step the processor and verify the address has changed as expected
And that the register has changed as well
Whew! Now I only have to do that a few dozen more times to see if
this STANZA of code is working properly!

His adherence to (split-)octal derived from the fact that he had
built hardware tools to let you monitor and patch running code
using 7-segment displays -- hexadecimal would have been required
buying four \"more expensive\" displays instead of relying on
six run-of-the-mill 7-segment displays.

I think octal dates back much further to using mass produced decimal nixie
tubes but only using digits 0-7 in each one. I recall having to bootstrap the
PDP7 from the front panel to load the tape reader to then load a programme. It
was a very nifty machine with a type 340 vector graphics display and could play
a mean game of asteroids and dodgy chess where it would sometimes cheat if you
backed it into a corner.

The Imlac PDS-1 was my first vector graphics workstation
(though I\'ve designed vector graphic display systems in the
years since -- one was even fast enough to emulate a raster
IF you had a really fast monitor! The monitor would SCREAM,
literally, as you yanked the deflection amplifiers around!)

The bootstrap reader tape would get very dog eared and have to be repunched
from time to time.

And, for machines (minis) with front panels and \"bit switches\",
they could just as easily be grouped in sets of 4 as sets of 3
(e.g., Nova); and the \"display\" was still binary so does it
matter if you read 0177777 off a coding sheet or 0xFFFF?
(in each case, you have to mentally map a non-binary character
into a set of 3 (or 4) bits.

There were a couple of Novas in the same room but they didn\'t have anything
like the appeal of the PDP-7 with its fancy vector graphics.

My exposure to Novas was in the Reading Machine. There, I\'d have to write
a little test program to exercise something that wasn\'t working and
\"bit switch\" it into core (yes, real core) to troubleshoot the problem.
The reading machine only had audio output so a \'scope was your only
real \"diagnostic display\"

It is not that self evident when to switch to symbolic. Depends on
processor type and tools available.

*I* used a cheap ICE with a serial port to my workstation.

Very early on (as students) we pretty much only had bare metal CPUs with not
much memory to play with and native cunning to get it all working. Data entry
was painful especially on the Sinclair MK14 implementation which assumed a
terminal and required manual pressing of term/mem/term as each byte was entered
in hex. OTOH it was a bargain for £40 a kit.

I never used an MPU in school. We had bigger machines EVERYWHERE.
And, the goal was to teach concepts not implementations. So, each
class was hosted by different machines, languages, OSs, etc.

You might be tasked with *designing* a processor but not USING one.

6502 based Acorn atom and their much nicer BBC Micro were amongst the first
truly successful mass market home computers in the UK.

Sinclair reacted by launching their rival Z80 based ZX Spectrum which also had
its adherents (it was also cheaper and so more popular).

Aside from MPUs in devices that I\'d built, I didn\'t have a \"personal
computer\" until late in the Z80 game (a Z80 with 512KB of DRAM).
Wanna build something? Use the tools at work to burn EPROMs.

Then, a \'386 made the Z80 box nostalgic.

Now, I am far more interested in the \"school-boy\" concepts that
were not commercially practical at that time. E.g., paged MMU
in a consumer (nonPC) product?? Multiprocessor?? Hot swappable
failure discovery/recovery?? Symbolic execution?? Wow!
 
On Sat, 29 Apr 2023 20:59:28 +0100, Brian Gregory
<void-invalid-dead-dontuse@email.invalid> wrote:

On 29/04/2023 09:02, Dean Hoffman wrote:
that put men on the moon. I don\'t know how such things are done but Margaret Hamilton led the team that did. The article says she had her little one with her at work now and then.
https://www.foxnews.com/lifestyle/meet-american-who-wrote-moon-landing-software-margaret-hamilton-computer-whiz-mom

What about Katherine Johnson, Dorothy Vaughan, and Mary Jackson?

Oh wait, they\'re black. Fox probably doesn\'t count them as American.

\'Hidden Figures\' didn\'t make the display shelf in the local library,
during Black History Week.

Maybe needs a new title, somehing more memorable like . . . . . .

RL
 
On Sun, 30 Apr 2023 11:54:13 +0300, upsidedown@downunder.com wrote:

On Sat, 29 Apr 2023 08:15:25 -0700, Don Y
blockedofcourse@foo.invalid> wrote:

On 4/29/2023 7:59 AM, Martin Brown wrote:


I recall someone who still coded 6502 by hand in hex long after assemblers were
available and routine. I could never understand why...

(sigh) I had an employer who routinely started arguments about whether
or not Z80 code should be expressed in (split-)octal or hex. I just
looked at him, bewildered, and said \"Is there something wrong with
SYMBOLIC??\"

8080/Z80 are essentially octal machines and as such very easy to
program in octal (or binary). I still do not understand why later
tools went into hexadecimal.In octal, there is only a few opcodes you
have to remember, the register numbering was straight forward. Branch
targets were absolute, so you could get the branch target directly
from the coding sheet.Inserting/removing instructions between the
branch instruction and branch target did not need borsch
recalculations.

With processors like 6800 used PC relative branch offsets, so
calculating the branch instruction offset was a mess and had to be
redone if instructions were added/removed between branch instruction
and target.

Then the question of debugging. In many cases the debugging had to be
done in octal using computer front panel switches or some EPROM
routine reading octal digits from some sort of keypad. No use of
symbolics.

It is not that self evident when to switch to symbolic. Depends on
processor type and tools available.


[Classic case of a guy developing a skillset when it was needed...
and never realizing that the need no longer persists and his
skillset has little value!]

A good macro assembler can be more versatile than some high level
language source manipulation in e.g. C.

We programmed the 6800 (and 6802 and 6803) in assembler. The assembler
was just a lot of macros in the PDP-11 assembly language, so it listed
in octal.

Macro-11 was, by design, a beautiful programming language that
part-timed as an assembler.
 
On Saturday, April 29, 2023 at 4:02:11 AM UTC-4, Dean Hoffman wrote:
that put men on the moon. I don\'t know how such things are done but Margaret Hamilton led the team that did. The article says she had her little one with her at work now and then.
https://www.foxnews.com/lifestyle/meet-american-who-wrote-moon-landing-software-margaret-hamilton-computer-whiz-mom

Primitive little nothing of a minimalist computer. Article is just more redacted history. Not quite as bad as that previous fiction about a woman programmer, who worked in data reduction on GEOSAT, inventing the concept of GPS. Turns out the publicity campaign for that bs originated with a totally unqualified sorority \"sister.\"
These kinds of stories originate with activities dependent on government funding. Listen to these lunatics and they\'ll have you believing Sally Hemmings wrote the original draft to the Declaration of Independence.
 
On Sun, 30 Apr 2023 08:52:08 -0700 (PDT), Fred Bloggs
<bloggs.fredbloggs.fred@gmail.com> wrote:

On Saturday, April 29, 2023 at 4:02:11?AM UTC-4, Dean Hoffman wrote:
that put men on the moon. I don\'t know how such things are done but Margaret Hamilton led the team that did. The article says she had her little one with her at work now and then.
https://www.foxnews.com/lifestyle/meet-american-who-wrote-moon-landing-software-margaret-hamilton-computer-whiz-mom


Primitive little nothing of a minimalist computer. Article is just more redacted history. Not quite as bad as that previous fiction about a woman programmer, who worked in data reduction on GEOSAT, inventing the concept of GPS. Turns out the publicity campaign for that bs originated with a totally unqualified sorority \"sister.\"
These kinds of stories originate with activities dependent on government funding. Listen to these lunatics and they\'ll have you believing Sally Hemmings wrote the original draft to the Declaration of Independence.

You can be cynical and mock, but I saw on CNN the other day that Rosa
Parks was responsible for the moon landings. It was she who guided and
mentored Werner Von Braun in the development of the space program -
yet she never got any credit for it. Well, until CNN broke the story
that the right-wing media had covered up all these years, I guess.
 
On Sun, 30 Apr 2023 03:02:34 -0700, Don Y
<blockedofcourse@foo.invalid> wrote:

On 4/30/2023 1:54 AM, upsidedown@downunder.com wrote:
On Sat, 29 Apr 2023 08:15:25 -0700, Don Y
blockedofcourse@foo.invalid> wrote:

On 4/29/2023 7:59 AM, Martin Brown wrote:

I recall someone who still coded 6502 by hand in hex long after assemblers were
available and routine. I could never understand why...

(sigh) I had an employer who routinely started arguments about whether
or not Z80 code should be expressed in (split-)octal or hex. I just
looked at him, bewildered, and said \"Is there something wrong with
SYMBOLIC??\"

8080/Z80 are essentially octal machines and as such very easy to
program in octal (or binary). I still do not understand why later
tools went into hexadecimal.In octal, there is only a few opcodes you
have to remember, the register numbering was straight forward.

Why should you have to remember something as banal as an opcode map?
That\'s like committing to memory the integrals of all the oddball
functions instead of just looking them up (or, letting a symbolic
tool do that on your behalf).

Early 4 and 8 bitters had so little memory, so there was no way of
running a native assembler and even less a compiler. Later on with
Intellec/Excorciser it became possible to run them natively.

Until then you had to run some sort of cross-assemblers on a mainframe
or minicomputer. The licence could be quite expensive, assuming all
terminal is running the same assembler simultaneously. In some cases a
specific crossassembler was not available or could not be used e.g.
due to export regulations. I have written several crossassemblers for
various (some of which quite exotic)targets running on a mimicomputer.
Why would you *want* to write code in ANY numeric form?
Why would you want to *recognize* opcodes in numeric form?
There were tools available that let you use symbolic instructions
and would display dumps as such.
 

Welcome to EDABoard.com

Sponsor

Back
Top