I think a lot of the maintainability with C is down to style and
organisation. My background was in mechanical engineering but got into
computing during my degree and went on to get a job at a software house
and trained in C where the company's in house style made the code easier
to follow IMO than K&R style and my engineering background helped with
organisation. I provided a university technician with the source code
for a port of his PCB program to Windows in C and he found it easy to
follow whereas he often found students C code difficult because of how
they were taught to write C.
"David Billington" wrote in message
On 03/10/2020 14:28, Jim Wilkins wrote:
....................
I think a lot of the maintainability with C is down to style and
organisation. My background was in mechanical engineering but got into
computing during my degree and went on to get a job at a software house
and trained in C where the company's in house style made the code easier
to follow IMO than K&R style and my engineering background helped with
organisation. I provided a university technician with the source code
for a port of his PCB program to Windows in C and he found it easy to
follow whereas he often found students C code difficult because of how
they were taught to write C.
===========================Yes, I've seen some that looked like the programmer's main goal was job
security. Perhaps engineers are more relaxed when programming because they
have other valuable skills.
I began with an LSI-11 flavor of Pascal customized for hardware control, an
uneasy fit due to Pascal's strict typing versus variables that were
bit-mapped binary register contents, but most of my early programming
experience was hand-written assembly code for the 8080 computer I
scratch-built. It forced me to be careful to comment everything well enough
that I could understand and improve it later. Eventually I wrote a text
editor that could assemble new or disassemble older code line by line, but
by then I had coded perhaps 10,000 lines by hand and needed to expand the
16K memory.
As soon as I had acquired enough RAM I dropped the habit of writing tricky,
tightly condensed code. The company made production memory wafer testers for
National Semi et al and the engineers received pre-production samples of new
devices like the 6116, which were typically too slow (500nS) to use for much
beyond evaluation, so after they were done they gave them to me.
http://ee-classes.usc.edu/ee459/library/datasheets/6116SA.pdf
It can use the same socket as a 2716 UVPROM. There's also a 2816 EEPROM
variant.
I backed them with NiCads so I wouldn't have to boot from the Teletype each
time.
DESCRIPTION
The bpp driver provides a general-purpose bi-directional
interface to parallel devices. It supports a variety of out-
put (printer) and input (scanner) devices, using programm-
able timing relationships between the various handshake sig-
nals.
==================================================================== Beyond that -- you would need to write your own C library
routines to take place of the built (or loaded) into the kernel drivers.
For the first unix box I had -- a "Cosmos CMS-16/UNX" (MC-68000
on Intel Multibus) I wound up writing a program to access an I/O device
from a hamfest -- Nicad cells along the top edge, and a crystal
oscillator and a bunch of counters which served as a clock/calendar, and
I could use it to automatically set the clock when I booted the system.
Before that I had to key the time in every time I booted.
To access it -- I needed to use a root only system call to map
the memory of the board's registers into the program space, so I could
access the registers. I also wrote a similar program which would copy
the current date/time into the card, to set it *once* -- or after a DST
change. (Oh yes, speaking of DST -- this was just after a change of the
offsets of DST -- and a open-source library and database for those, so
they can be changed at need. (It is still in unix/linux flavors.) I
compiled that on the system, and used it in my own programs which needed
to deal with the date and time. But many other programs used the
original library -- and I did not have source to change them. Also, the
OS had compiled in a PST/PDT constant. Since I did not have the source
for the kernel, I had to learn how to find and change the constant to
move it to the east coast. I named the machine "Owlsley", figuring that
someone who made and used his own LSD would have a weaker linkage to his
current location than most people. :-)
O.K. So -- the clock update would override the access to the
parallel port registers?
Makes me think of GWBASIC (or the BASIC which came with early
MS-DOS system) which was derived from the BASIC for the Altair disk
8800. (8" disk, hard sectored, IIRC). On the Altair, the system booted
BASIC off the floppy, and then BASIC controlled read/write to the disk,
for saving programs and data files.
It happened to bypass the drivers in MS-DOS, so a program
written in it could create files with spaces in the file names. No
way to rename or delete the files from the OS command line. The only
way was to do it from within BASIC (not documented anywhere that I could
find -- but I had to figure it out to get rid of a file left behind by
someone running the typing tutor program.
Sort of like a unix system providing networked file systems to a
lot of (mostly unix) systems, and one or two Macintoshes. The Mac user
could name a file something like "data-04/23/80", where unix systems
will not allow a '/' or a null in a filename. The only way to clean up
the filesystem (so backups would not fail) was to unmount the file
system, and then use emacs (super-editor) to edit the directory in the
raw. Change the '/'s into '-'s and then I could delete them from the
mounted filesystem. (Of course, now not a problem, because Mac's OS-X
has a unix under the GUI, so the '/' in a filename is no longer allowed.
:-)
O.K. Depending on the model, it may have been one I worked on.
For a while I was in the test equipment repair division. IIRC, that was
about the time that Tek was moving from listing input capacitance in uuF
to pF on the front of vertical plugins.
555555555555555555555555555
My 531A and 541 suffer high voltage arcing. What's an acceptable cleaning
method and solvent? I realize they are good mainly for backup heat on chilly
mornings, except that I have type W and 1L5 plugins.
555555555555555555555555555
555555555555555555555555555
The only job I did that needed the full speed of machine language was
experimenting with an open-loop driver to step a drum printer head with
critical damping, ie as fast as possible without overshoot. So I wrote it in
80286 Assembly. The non-contact position sensor was a small Radio Shack
solar cell partly shaded by the head.
The printer port is hardware-limited to about 1 uS minimum pulse width,
plenty fast for 100 KHz I2C data.
555555555555555555555555555
555555555555555555555555555
It's an interrupt that paused whatever my program was doing, such as
counting a timing loop. I had to complete a time-critical task in less than
55mS and then poll the timer until it changed. I2C has a synchronous clock
and isn't too fussy about timing, but the computers the program might run on
could have CPU clocks anywhere between 50 MHz and ~1.5 GHz so I needed to
measure the speed of timing loops and adjust them into a more reasonable
range.
555555555555555555555555555
Sort of like a unix system providing networked file systems to a
lot of (mostly unix) systems, and one or two Macintoshes. The Mac user
could name a file something like "data-04/23/80", where unix systems
will not allow a '/' or a null in a filename. The only way to clean up
the filesystem (so backups would not fail) was to unmount the file
system, and then use emacs (super-editor) to edit the directory in the
raw. Change the '/'s into '-'s and then I could delete them from the
mounted filesystem. (Of course, now not a problem, because Mac's OS-X
has a unix under the GUI, so the '/' in a filename is no longer allowed.
:-)
555555555555555555555555555
I've modified file structures without OS interference by passing the raw
data through an HP1000 minicomputer running my assembly program. That's not
the easy way but the boss liked to challenge me.
Mitre avoided PCs after the Cuckoo's Nest incident. We had Macs and SPARCs
which were less well supported than PCs as CAD and lab machines. I had to
design and build a 16-bit A/D data acquisition board for a Mac and write its
LabVIEW driver. The Mac was a fine computer as long as you did what Apple
knew you should, but our research needs went much further. I don't avoid
them now out of ignorance. The $5 - $20 laptops I find at flea markets are
retired business-class PCs like this D630, and I know how to upgrade and use
them for what I want; HDTV recorders, data acquisition, SDR radio, etc.
https://en.wikipedia.org/wiki/Software-defined_radio
"SpeakEasy, the military software radio was formulated by Wayne Bonser, then
of Rome Air Development Center (RADC), now Rome Labs; by Alan Margulies of
MITRE Rome, NY;"
Rome Labs didn't have technicians who could build it (I was told) so SDR
landed in my lab at MITRE Bedford, MA, as unlike the radio/radar techs I had
considerable experience in A/D converters and computer hardware and circuit
board design, and can solder tiny surface mount parts.
The concept of SDR receivers is old, the enabler was an A/D converter fast
enough to digitize the IF frequency, not just the baseband. The fastest
available went into digital oscilloscopes so they were what we used. A few
years earlier it had been a struggle to obtain an A/D fast enough for an
optical document scanner. The scanner processor was that same TMS320, for
which I designed the DRAM controller, another see-if-he-can-do-it challenge.
The enabler for SDR transmitters is the Direct Digital Synthesizer. I was
using Molybdenum-cased hybrid modules with hand-written single digit serial
numbers. I milled an aluminum model of the DDS at home to avoid handling the
static sensitive parts while figuring out how to fit them and an adequate
heatsink into the narrow space of a VME slot.
https://en.wikipedia.org/wiki/Direct_digital_synthesis
555555555555555555555555555
I have no idea. I haven't used the parallel printer port for
I/O like that. I would have been more likely to wire-wrap up a custom
MC-6800 or MC-6809 board with enough PIA chips to do the readings, and
transfer them via serial port.
=============Here's how to control the printer port in C:
http://electrosofts.com/parallel/
A useful first exercise is to write a program that displays a graphic of the
port and the state of each bit.
"DoN. Nichols" wrote in message
...
The first digital voltmeter was a NLS (Non-Liner Systems) which
used a Kelvin-Varley divider implemented in stepper switches, and a
digital readout consisting of sheets of Lexan with the digits engraved
in them, and lit from little aircraft lamps (327 if 28V, 328 if 6V,
other numbers for other voltages.)
The big nuisance was when the voltage you were measuring was
drifting up and down a little. As it goes up, you would hear click,
click, click, but if it went down you would get rrrrrr, rrrrrr, rrrrrr,
rrrrr, click, click, click. At least it had sound deadening in it, but
when I had to work on them in the shop, the noise was a real pain. ...
Enjoy,
DoN.
====================Stepping switches and relays arose after an undertaker became upset that the
local telephone operator, the wife of his competitor, was diverting phone
calls away from him, so he invented what became the dial system to eliminate
her.
https://en.wikipedia.org/wiki/Strowger_switch
"Early advertising called the new invention the "girl-less, cuss-less,
out-of-order-less, wait-less telephone".
In 1940 US cryptographic researchers figured out that the Japanese cipher
machine used telephone stepping relays to implement a complex automatic
version of the Crackerjack secret decoder ring. The researchers happened to
choose the same model of relay to build their decryption device.
https://ciphermachines.com/purple
It didn't help predict Pearl Harbor because the Japanese hid their real plan
among a flood of plausible fake ones such as destroying the lock gates of
the Panama canal. We did the same to disguise the target of D-Day.
I'm very familiar with those. I built a small dial exchange
with original versions of the Strowger switches -- one line finder, one
selector (one dial digit), and one connector (two dial digits). (Later
AT&T cloned them, and called them 10x10s.)
And I think that, based on the complexity of the Strowger
switches, he was mis-employed as an undertaker. :-) He really had to be
a good machinist to make the prototypes, and good with relay logic to
design the circuitry.
Those steppers were two-axis -- first up to one of ten levels,
and then rotate to one of ten positions. And they could reset directly
with a single pulse to a solenoid.
The ones in the NLS were unidirectional, 11 positions, with
three sets of wipers at 120 degrees, so it took 33 steps to do a full
rotation of the wipers. And there was no reset, so you had to go at
least 10 steps to reach a zero point again.
There were other steppers, ten position after stepping off the
at rest positions, and a single pulse to a solenoid to let the stepper
spring back to the rest position. I used one of these as a line finder
before I got the proper Strowger two-directional one. With the right
relays, the line finders, or the connectors could really jump through
hoops.
And the associated telephone set, was mis-called "The world's
most beautiful telephone". :-)
"DoN. Nichols" wrote in message
And I think that, based on the complexity of the Strowger
switches, he was mis-employed as an undertaker. :-) He really had to be
a good machinist to make the prototypes, and good with relay logic to
design the circuitry.
-----------------
All he lacked was an assistant named Igor.
"DoN. Nichols" wrote in message
O.K. The inexpensive style. :-) I prefer crimpers which are
ratchet controlled -- or the hydraulic ones which have a release at a
specific pressure -- 8500 PSI for the ones by AMP -- including
electrically pumped as well as foot pumped.
===================================I'll gladly order and use the proper crimper if the company will pay for it;
the hand tools can cost hundreds of dollars. For home use I collect what I
find at flea markets, otherwise I rely on pull and resistance testing to
determine the suitability of a crimp with alternate tooling. At Mitre we had
a pull force tester to check wiring for aircraft.
https://www.andilog.com/How-to-check-crimp-terminals-on-wires.html
My HF carbon pile load tester allows a voltage drop check of crimps at 100A.
Even 1A is enough to measure the voltage drop and resistance in an inch of
12 AWG wire. For my solar wiring I short the far end and measure the total
loop resistance to see if it matches what that length and gauge of wire
should show. As a result I've upgraded most of my solar house wiring
backbone to 10 AWG and reassigned the older, thinner wire.
Ox-Gard appears to protect exposed outdoor connections such as SAE (flat
trailer) connectors for several years.
It helps that I used to work with the crimpers at Melpar, where
we built (among other things) flight simulators to mil-specs. So I
could recognize the crimpers at hamfests.
O.K. For that, you really do want to measure the resistance.
Good thing to know. This is the compound used to protect
aluminum wiring connections, or something similar?
Enjoy,
DoN.
P.S. I may have just answered another of your articles by 'r' (Reply)
instead of 'f' (Followup). At least on gmail it will get to
you.
"Snag" wrote in message
Time marches on ... and with it my desire to work any harder than I
absolutely have to . There is wood involved in this project , along with
the metalworking .
A year or so back I built myself a small pivoting jib crane to move
firewood from the trailer to the log splitter . With a boat winch for
the lifting , it worked remarkably well . I was using a cable with a
choker loop in the business end up until a few days ago , and it too
worked . But the other day my neighbor (not the blacksmith neighbor ,
this guy is fairly new to the neighborhood) brought me a set of
unfinished log tongs . I had to drill for and install a pivot bolt and I
did a little rework of the ring and shackle assembly . That made things
a lot faster and less work too ... so today , just to ice the cake , I
bought a HF 2500 lb 12V winch to replace the hand cranked unit . I'm
kinda laid up right now with a couple of probably-cracked ribs from a
slip while dismounting the Rusty Tractor , so I'm using the time for
things that aren't as strenuous as handling 100-150 pound chunks of log .
Just took the dog for a walk and got to thinking , I need to make the
winch mount removable so I can also mount it on the Rusty Tractor and
use it out in the woods to drag logs into position ... I think something
resembling a trailer receiver hitch . I'll still have to deal with the
power cables , maybe something like a dryer outlet so it's just all plug
and play . This winch came with only a wireless control , the first
thing I did when I got it home and open was take the cover off the
control unit . Looks to be very easy to convert to a cabled control when
this wireless remote dies . And it surely will , just a matter of when
and where .
...--
Snag
Illegitimi non
carborundum
======================I've been through all that too. At first I put the 12V ATV winch on the
pickup truck trailer hitch but the cable all wound on one side and logs dug
into the dirt and jammed when they hit rocks or fallen trees, Winching
worked better from the swiveling truck bed crane that helped lift jammed
logs, like the short crane on a skidder.
After struggling with cheap cable pullers and boat winches for a long time I
upgraded to chain falls and lever chain hoists for lifting and short
horizontal pulls. A 3/4 ton lever hoist has been the most useful for logging
and works well horizontally, which is awkward with chain falls. I use those
mainly on the sawmill because I can stand further away from the load. My HF
electric hoist is too fast and jerky for precise positioning on the saw bed,
though fine for stacking beams from a safe distance.
I quickly learned not to trust log tongs until the tips had been hammered in
a ways. A chain with a grab hook is nearly as simple to connect and doesn't
fall off as easily if unloaded. I only use the tongs to lift one end of logs
for clearance, then toss the chain underneath. 5/16" x 5' is a handy size,
with a longer and stronger 3/8" chain for backup on logs bigger than 5'
around. I looked at but didn't buy log skidding chain hardware because I'm
less concerned with speed and more with safety, since I lift while standing
near the log instead of from the cab.
Anderson (or clone) connectors are a better choice than a 30A dryer plug for
high current DC connectors. Since the pins are shielded and bidirectional
the same connectors are safe to draw load current from the battery or put it
in from a charger. AC plugs aren't safe if the male side is hot. All the DC
connections in my solar system are Andersons because battery and
inverter/charger power can flow either way.
https://www.truckelectrics.com/blogs/news/anderson-connectors-what-size-cable
(Amazon.com product link shortened)
Mine were surplus with cables attached. The connector pins had been crimped
onto the wire in several placed with a round punch.
The U1R battery in my small tractor didn't take well to the current a 2500#
winch draws. When I load-tested a new, freshly charged U1R it couldn't quite
reach its CCR rating.
A regular chainsaw chain can rip log sections too heavy to lift or too
tangled to split in half or quarters quite efficiently as long as you don't
cut exactly parallel to the grain, which clogs the saw with strips.
Since the upper section of the crane is removable , I bolted the
winch to it . I'll build a "pin" that will mount on the trailer and one
that will fit into the trailer hitch socket for the crane section to
drop into . The swiveling upper section is female .
I'm not trying for precision positioning , I just want to get the
rounds off a trailer and onto the splitter .
Ive ordered a battery for this , will be kept on a trickle charger
most of the time . I won't be getting anywhere near the capacity of the
winch as a general rule . If i decide the battery isn't working out , I
have a backup plan to draw power from the camper's deep cycle battery .
I need to find some more 8 ga or heavier wire for the hookup , I'm a few
feet short . I'm undecided about how to handle the power hookups when
it's not on the crane base .
"Snag" wrote in message
Since the upper section of the crane is removable , I bolted the
winch to it . I'll build a "pin" that will mount on the trailer and one
that will fit into the trailer hitch socket for the crane section to
drop into . The swiveling upper section is female .
I'm not trying for precision positioning , I just want to get the
rounds off a trailer and onto the splitter .
"Jim Wilkins" wrote in message
... If [the table] was larger I could position it between the splitter
and the trailer and roll or hoist large rounds onto it.
=====I had to stop editing for a dental appointment.
To summarize, I think your answer is a dedicated or temporary table that you
can hoist rounds from the trailer onto at one end and roll them onto the
splitter beam at the other. It could be as simple as planks or loading ramps
resting on sawhorses or the side of the trailer. My experience is that the
table top should be at least large enough to hold half plus a quarter of the
round back out of the way while you split the other quarter, and high enough
to roll heavy pieces onto the beam but not so high that they snag on it
while being split. About 6" below the top of the beam works for me.
https://www.motherearthnews.com/diy/build-a-log-splitting-table-zmaz02onzgoe
-jsw
I made a small, sturdy table to store the splitter on so it can occupy
the same covered space as my non-folding shop crane. When splitting I
put the table under the wedge end so splits fall onto it instead of the
ground. If it was larger I could position it between the splitter and
the trailer and roll or hoist large rounds onto it. I don't because I
can put the splitter under the sawmill's overhead gantry hoist.
--
I built a rack on my splitter . About 16" wide total , I can balance
a piece on the edge while splitting another . Pieces too big to balance
"Snag" wrote in message
I built a rack on my splitter . About 16" wide total , I can balance
a piece on the edge while splitting another . Pieces too big to balance
on the edge get suspended on the jib crane and swiveled out of my way .
I do have to make sure the column is plumb or pieces can come back ...
=============Gravity must be female, she always gets her way.
"Snag" wrote in message
I built a rack on my splitter . About 16" wide total , I can balance
a piece on the edge while splitting another .
===================That seems to be the common solution. I think a larger table works better
but it requires storage space and a separate trip to the firewood.
--
...The original plan was to haul the
jib crane out into the woods , but as it turned out that's just not
Ooh, sweet crane setup. Probably a couple grand when available.
==================================If I was to make a portable take-down gantry from scratch instead of
material already on hand I'd buy 4" channel iron which the Harbor Freight 1
ton trolley fits without modification, and make connections between the
channels and legs that are less flexible than a chained tripod. Mine is
meant to move logs and boulders to the trail on a forested hillside and
requires considerable care to keep it from swaying and tipping. At the trail
the shop crane converted to a low-bed trailer can take over. The gantry
isn't high enough to load a pickup truck because I wanted to assemble it
without climbing a stepladder on soft sloping ground. You could make it
higher for firm level ground or pavement.
The last time I used the gantry more or less free-standing was with an
electric hoist so I could stand back the length of the control cable. The
beam was bolted to vertical wood posts braced with diagonal legs borrowed
from tripods, and guyed to everything within reach.
To set it up I place a W-folding step ladder at the center with boards
across the rungs at beam height, then balance the two channels on the boards
and attach the supports to the ends. Once the beam is suspended I remove
the boards and lift the ladder over the beam. Disassembly is the reverse.
Two channels aren't ideal structurally, they just reduce lifted weight to
allow assembly without a helper. They came from a heap of disassembled
pallet racks and I had to use what was available, mostly C3x4.1 and a few
C4x5.4, all 8' long.
https://jonochshorn.com/scholarship/calculators-st/index.html
Be careful when using those calculators. The closest I saw that
applies to the problem at hand assumes continuous lateral bracing,
which is a reasonable assumption for a typical building floor system,
but not for a simply supported lifting beam.
https://jonochshorn.com/scholarship/calculators-st/example8.6/index.html
A potential failure mode of a slender beam is somewhat analogous to
column buckling.
https://en.wikipedia.org/wiki/Buckling#Lateral-torsional_buckling
The AISC steel construction manual's beam tables & graphs take the
beam's unbraced length into account.
Also keep in mind that both the AISC and (I presume) that calculator
use a factor of safety of 1.67. The FS for a lifting device is
typically much greater.
Polytechforum.com is a website by engineers for engineers. It is not affiliated with any of manufacturers or vendors discussed here.
All logos and trade names are the property of their respective owners.