Rocksolid Light

Welcome to novaBBS (click a section below)

mail  files  register  newsreader  groups  login

Message-ID:  

"We can't schedule an orgy, it might be construed as fighting" -- Stanley Sutton


tech / sci.electronics.design / Re: arm assembly examples

SubjectAuthor
* arm assembly examplesHul Tytus
+* Re: arm assembly examplesLasse Langwadt Christensen
|+- Re: arm assembly examplesHul Tytus
|`* Re: arm assembly examplesnone
| `* Re: arm assembly examplesDon Y
|  `* Re: arm assembly examplesnone
|   `* Re: arm assembly examplesDon Y
|    +* Re: arm assembly examplesDimiter_Popoff
|    |+* Re: arm assembly examplesDon Y
|    ||+* Re: arm assembly examplesDimiter_Popoff
|    |||`* Re: arm assembly examplesDon Y
|    ||| `* Re: arm assembly examplesDimiter_Popoff
|    |||  `* Re: arm assembly examplesDon Y
|    |||   `* Re: arm assembly examplesnone
|    |||    `* Re: arm assembly examplesDon Y
|    |||     `* Re: arm assembly examplesnone
|    |||      `- Re: arm assembly examplesDon Y
|    ||`* Re: arm assembly examplesnone
|    || `- Re: arm assembly examplesDon Y
|    |`* Re: arm assembly examplesSpehro Pefhany
|    | +* Re: arm assembly examplesDon Y
|    | |`* Re: arm assembly examplesSpehro Pefhany
|    | | `- Re: arm assembly examplesDon Y
|    | `* Re: arm assembly examplesHul Tytus
|    |  +- Re: arm assembly examplesSpehro Pefhany
|    |  `- Re: arm assembly examplesDon Y
|    `* Re: arm assembly examplesnone
|     `- Re: arm assembly examplesDon Y
`* Re: arm assembly examplesDon Y
 `* Re: arm assembly examplesHul Tytus
  `- Re: arm assembly examplesDon Y

Pages:12
Re: arm assembly examples

<s7taq1$jji$1@dont-email.me>

  copy mid

https://www.novabbs.com/tech/article-flat.php?id=63378&group=sci.electronics.design#63378

  copy link   Newsgroups: sci.electronics.design
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: blockedo...@foo.invalid (Don Y)
Newsgroups: sci.electronics.design
Subject: Re: arm assembly examples
Date: Mon, 17 May 2021 01:51:03 -0700
Organization: A noiseless patient Spider
Lines: 52
Message-ID: <s7taq1$jji$1@dont-email.me>
References: <s7636j$k0i$1@reader1.panix.com>
<9c663ab9-64d6-48ae-a9d7-db8ad66d0d34n@googlegroups.com>
<609e6f7d$0$29327$e4fe514c@news.xs4all.nl> <s7mh22$e4o$1@dont-email.me>
<609fc975$0$29317$e4fe514c@news.xs4all.nl> <s7p41q$2jl$1@dont-email.me>
<s7pcun$82t$1@dont-email.me> <eog2ag1innjupe5b78h155jcp2pr4pcrhe@4ax.com>
<s7rv2u$jfp$1@dont-email.me> <8m14ag5nnjhffm5p651ifeld97gk9j9kp9@4ax.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Mon, 17 May 2021 08:51:13 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="f8f1fecbe6cdd1d6d0a15f789cecf66b";
logging-data="20082"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/oOfWhkXBjHRfTULEnuOF+"
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101
Thunderbird/52.1.1
Cancel-Lock: sha1:xeXwdWvuZhvbn5Ejx4GcF9Y5j6s=
In-Reply-To: <8m14ag5nnjhffm5p651ifeld97gk9j9kp9@4ax.com>
Content-Language: en-US
 by: Don Y - Mon, 17 May 2021 08:51 UTC

On 5/16/2021 11:12 PM, Spehro Pefhany wrote:
> On Sun, 16 May 2021 13:24:51 -0700, Don Y
> <blockedofcourse@foo.invalid> wrote:
>
>> On 5/16/2021 9:10 AM, Spehro Pefhany wrote:
>>> On Sun, 16 May 2021 00:03:17 +0300, Dimiter_Popoff <dp@tgi-sci.com>
>>> wrote:
>>>
>>>> On 5/15/2021 21:31, Don Y wrote:
>>>>> On 5/15/2021 6:15 AM, albert wrote:
>>>>> .........
>>>>>>
>>>>>> I can tell you that comparing binaries where there is a byte inserted
>>>>>> here and there is much more unpleasant than comparing disassemblies.
>>>>>
>>>>> You have to ensure the disassembled output generates the same INPUT
>>>>> format of the *other* assembler. If not, you can't mechanically do
>>>>> the comparison.
>>>>
>>>> Hi Don,
>>>> his approach has an advantage: the binary code is unambiguous, i.e.
>>>> the disassembler has no choice but to write the correct opcode.
>>>> If the "other" assembler does not understand it it will produce
>>>> some error etc., gives you another level of verification.
>>>>
>>>> Could be handy in some cases.
>>>>
>>>> Dimiter
>>>
>>> I remember porting some substantial code to a new assembler (there
>>> were a *lot* of syntactical differences. It also spit out somewhat
>>> different hex code even when it was working perfectly, something about
>>> the way gaps in memory were dealt with differed, so I had to write a
>>> simple program to do a meaningful comparison. The name Dunfield comes
>>> to mind.
>>
>> Then you either didn't have the code residing in the same places
>> *or* your mapping of instructions was faulty and possibly neglected
>> some assembler directive that changed the assembler's context.
>> (or, the "new"/old assembler was broken in some way)
>>
>> A port should yield the same binary. If you don't have the same
>> binary, you don't have the same *product*.
>
> How do you define the "same binary"? Is the gap between interrupt
> vectors and program start filled with 0x00, 0xFF or left undefined?

*You* tell it.

How do you compute a checksum over a memory space if you don't know
how every location *in* that space will be defined?

Re: arm assembly examples

<s86hb7$kus$1@reader1.panix.com>

  copy mid

https://www.novabbs.com/tech/article-flat.php?id=63623&group=sci.electronics.design#63623

  copy link   Newsgroups: sci.electronics.design
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!panix!not-for-mail
From: ht...@panix.com (Hul Tytus)
Newsgroups: sci.electronics.design
Subject: Re: arm assembly examples
Date: Thu, 20 May 2021 20:37:59 +0000 (UTC)
Organization: PANIX Public Access Internet and UNIX, NYC
Lines: 43
Message-ID: <s86hb7$kus$1@reader1.panix.com>
References: <s7636j$k0i$1@reader1.panix.com> <9c663ab9-64d6-48ae-a9d7-db8ad66d0d34n@googlegroups.com> <609e6f7d$0$29327$e4fe514c@news.xs4all.nl> <s7mh22$e4o$1@dont-email.me> <609fc975$0$29317$e4fe514c@news.xs4all.nl> <s7p41q$2jl$1@dont-email.me> <s7pcun$82t$1@dont-email.me> <eog2ag1innjupe5b78h155jcp2pr4pcrhe@4ax.com>
NNTP-Posting-Host: panix3.panix.com
X-Trace: reader1.panix.com 1621543079 21468 166.84.1.3 (20 May 2021 20:37:59 GMT)
X-Complaints-To: abuse@panix.com
NNTP-Posting-Date: Thu, 20 May 2021 20:37:59 +0000 (UTC)
 by: Hul Tytus - Thu, 20 May 2021 20:37 UTC

Spehro - Dunfield's assembler (which was bought on your good recomendation)
would put nop's into the code before labels if needed to keep the positions
correct. If memory serves, multiple "1st passes" would trim the count of nops.
The # of "1st passes" could be set on the command line.

Hul

Spehro Pefhany <speffSNIP@interlogdotyou.knowwhat> wrote:
> On Sun, 16 May 2021 00:03:17 +0300, Dimiter_Popoff <dp@tgi-sci.com>
> wrote:

> >On 5/15/2021 21:31, Don Y wrote:
> >> On 5/15/2021 6:15 AM, albert wrote:
> >> .........
> >>>
> >>> I can tell you that comparing binaries where there is a byte inserted
> >>> here and there is much more unpleasant than comparing disassemblies.
> >>
> >> You have to ensure the disassembled output generates the same INPUT
> >> format of the *other* assembler.? If not, you can't mechanically do
> >> the comparison.
> >
> >Hi Don,
> >his approach has an advantage: the binary code is unambiguous, i.e.
> >the disassembler has no choice but to write the correct opcode.
> >If the "other" assembler does not understand it it will produce
> >some error etc., gives you another level of verification.
> >
> >Could be handy in some cases.
> >
> >Dimiter
> >

> I remember porting some substantial code to a new assembler (there
> were a *lot* of syntactical differences. It also spit out somewhat
> different hex code even when it was working perfectly, something about
> the way gaps in memory were dealt with differed, so I had to write a
> simple program to do a meaningful comparison. The name Dunfield comes
> to mind.

> --
> Best regards,
> Spehro Pefhany

Re: arm assembly examples

<rljdag9kr4qtqin9fd9qeflqocgishoh88@4ax.com>

  copy mid

https://www.novabbs.com/tech/article-flat.php?id=63626&group=sci.electronics.design#63626

  copy link   Newsgroups: sci.electronics.design
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: speffS...@interlogDOTyou.knowwhat (Spehro Pefhany)
Newsgroups: sci.electronics.design
Subject: Re: arm assembly examples
Date: Thu, 20 May 2021 17:05:09 -0400
Organization: A noiseless patient Spider
Lines: 15
Message-ID: <rljdag9kr4qtqin9fd9qeflqocgishoh88@4ax.com>
References: <s7636j$k0i$1@reader1.panix.com> <9c663ab9-64d6-48ae-a9d7-db8ad66d0d34n@googlegroups.com> <609e6f7d$0$29327$e4fe514c@news.xs4all.nl> <s7mh22$e4o$1@dont-email.me> <609fc975$0$29317$e4fe514c@news.xs4all.nl> <s7p41q$2jl$1@dont-email.me> <s7pcun$82t$1@dont-email.me> <eog2ag1innjupe5b78h155jcp2pr4pcrhe@4ax.com> <s86hb7$kus$1@reader1.panix.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Injection-Info: reader02.eternal-september.org; posting-host="f3338f996a55eba7e0fb65ae35344790";
logging-data="29509"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+NZOMZc0CTiT/0cSJiBEqx"
Cancel-Lock: sha1:ZfuCFcrUkvcnFVvSlLnCekdUH5g=
X-Newsreader: Forte Agent 4.2/32.1118
 by: Spehro Pefhany - Thu, 20 May 2021 21:05 UTC

On Thu, 20 May 2021 20:37:59 +0000 (UTC), Hul Tytus <ht@panix.com>
wrote:

>Spehro - Dunfield's assembler (which was bought on your good recomendation)
>would put nop's into the code before labels if needed to keep the positions
>correct. If memory serves, multiple "1st passes" would trim the count of nops.
>The # of "1st passes" could be set on the command line.
>
>Hul

LOL how many decades ago was that?

--
Best regards,
Spehro Pefhany

Re: arm assembly examples

<s88v7j$13t$1@dont-email.me>

  copy mid

https://www.novabbs.com/tech/article-flat.php?id=63669&group=sci.electronics.design#63669

  copy link   Newsgroups: sci.electronics.design
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: blockedo...@foo.invalid (Don Y)
Newsgroups: sci.electronics.design
Subject: Re: arm assembly examples
Date: Fri, 21 May 2021 11:46:58 -0700
Organization: A noiseless patient Spider
Lines: 95
Message-ID: <s88v7j$13t$1@dont-email.me>
References: <s7636j$k0i$1@reader1.panix.com>
<9c663ab9-64d6-48ae-a9d7-db8ad66d0d34n@googlegroups.com>
<609e6f7d$0$29327$e4fe514c@news.xs4all.nl> <s7mh22$e4o$1@dont-email.me>
<609fc975$0$29317$e4fe514c@news.xs4all.nl> <s7p41q$2jl$1@dont-email.me>
<s7pcun$82t$1@dont-email.me> <eog2ag1innjupe5b78h155jcp2pr4pcrhe@4ax.com>
<s86hb7$kus$1@reader1.panix.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Fri, 21 May 2021 18:47:16 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="b0bde0489ea8e4085413486c91169b1d";
logging-data="1149"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+m2OORfTq6ZqKQZ26unB+s"
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101
Thunderbird/52.1.1
Cancel-Lock: sha1:PwrtfKc63K42GPUmFN8VowbTh5w=
In-Reply-To: <s86hb7$kus$1@reader1.panix.com>
Content-Language: en-US
 by: Don Y - Fri, 21 May 2021 18:46 UTC

On 5/20/2021 1:37 PM, Hul Tytus wrote:
> Spehro - Dunfield's assembler (which was bought on your good recomendation)
> would put nop's into the code before labels if needed to keep the positions
> correct. If memory serves, multiple "1st passes" would trim the count of nops.
> The # of "1st passes" could be set on the command line.

How does the position of the "label" NOT immediately abut the
code that immediately preceded it?

<code1>
<code2>
<code3>
label: <code4>
<code5>

What "magic" would cause a gap to manifest between <code3> and <code4>?

An assembler should only "generate code" (i.e., consume address space)
for sections that have been defined by the programmer.

section CODE
foo: <code1>
<code2>
baz: <code3>

section DATA
bar: <data1>
<data2>

E.g., <data1> has no defined relationship (location-wise) to <code3>.

Additionally, if another module has:

section CODE
phoo: <code11>
<code22>
<code33>

then <code11>'s relationship to <code1> and <code3> is defined in the linkage
editor (depending on how the modules are ordered, foo may precede/follow phoo.

If bar if located (by the linkage editor *or* loader) at an address 0x800000
greater than the end of the CODE section, you don't expect the assembler
to specify values for ANY of those 0x800000 locations in that gap.

Just like:

section VECTORS
vectortable: <vector1>
<vector2>
<vector3>

section CODE
reset: <code0>
...

would allow vectortable and reset to be placed at arbitrary
addresses (at link/load) with NOTHING specified for the
addresses between them.

The contents of that unspecified memory would depend on
something OTHER than the assembler/linker/loader.

[Some really old tools only supported a couple of predefined
sections/segments -- like "code" and "data" -- but the principle
is the same. Where those sections resided was dictated AFTER
the ASM stage]

If, for example, you were burning PROMS, then whatever was
IN those locations when you burned the PROM would remain
(unless your programmer decides to force something into them).

E.g., if your CPU expects a reset vector up near 0xFFFF and
then the lowest *used* address is 0x4000 for a total of 0x1234
bytes, then the range of addresses 0x4000-0x5233 will be
altered along with the few bytes up near 0xFFFF -- the rest of
the address space will be "unaltered". So, if you *want*
something at any of those addresses, you have to explicitly
*tell* the assembler/linker/loader.

If you were dynamically loading the "program" into RAM,
then however the RAM is initialized by (or before) the loader
would determine what resides in those addresses. (e.g.,
memory is often "cleared" prior to being used).

E.g., my "programs" (processes) run in a 64b address space.
But, if the actual code is only a "few KB", then only a
"few KB" of addresses (regardless of how sparsely they may
be located) get "altered" when a program loads (the loader
is told where in that address space each section needs
to reside).

Re: arm assembly examples

<60a839a9$0$22708$e4fe514c@news.xs4all.nl>

  copy mid

https://www.novabbs.com/tech/article-flat.php?id=63683&group=sci.electronics.design#63683

  copy link   Newsgroups: sci.electronics.design
Path: i2pn2.org!i2pn.org!paganini.bofh.team!news.dns-netz.com!news.freedyn.net!newsfeed.xs4all.nl!newsfeed7.news.xs4all.nl!nzpost1.xs4all.net!not-for-mail
Newsgroups: sci.electronics.design
References: <s7636j$k0i$1@reader1.panix.com> <s7pq06$n75$1@dont-email.me> <60a11e88$0$29321$e4fe514c@news.xs4all.nl> <s7r7pu$n34$1@dont-email.me>
Subject: Re: arm assembly examples
X-Newsreader: trn 4.0-test77 (Sep 1, 2010)
From: alb...@cherry (none)
Originator: albert@cherry.(none) (albert)
Date: 21 May 2021 22:52:25 GMT
Lines: 68
Message-ID: <60a839a9$0$22708$e4fe514c@news.xs4all.nl>
NNTP-Posting-Host: 57bdf691.news.xs4all.nl
X-Trace: G=0PhNRnX+,C=U2FsdGVkX1+bToKE+RCRaDc/cgDQ4aVnxUihStzK6TEAUIF2bgj8H9p04zVcPyHBCYIK6Z8H56jRlbHr+3hqe4Gf9NTni5bxtiqmIueR2mwyoeaZo3Nq9rNohFY9hjkP
X-Complaints-To: abuse@xs4all.nl
 by: none - Fri, 21 May 2021 22:52 UTC

In article <s7r7pu$n34$1@dont-email.me>,
Don Y <blockedofcourse@foo.invalid> wrote:
>On 5/16/2021 6:30 AM, albert wrote:
>> This is the reason for having minor upgrades on top of stable
>> versions.
>
>If the vendor won't provide an upgrade to the version you have
>(as was the case in the example I provided, above), then you
>are forced to either:
>- live with what you have
>- update to the new version/product
>- pick a new vendor/product

- modify the tool using reverse engineering.

Case in point. One of my job assignments used an old c-compiler
where it was not even known who owned the copyright.
There was a problem though, the embedded software did not longer
fit in the ROMS. I fixed up the c-code but that only went so far.
It seemed impossible to use some other c-compiler because of
extensive libraries that had a different calling convention from the usual.
I managed to use the gnu c-compiler, after modifying said
compiler to use that particular calling convention.

>
>If I am developing something new (hardware, software, documentation),
>then I *might* be able to tolerate a "change" -- what I have at the
>time isn't final and, presumably, I can notice any deviation in performance
>over *my* working set.
>
>A DTP product changed how it would layout the page from one version to
>the next. With several hundred pages of finished documentation behind
>me, I wasn't keen on having to manually *tweek* each of those pages to
>ensure page-breaks, paragraph breaks, flows, illustrations, etc. would
>all end up "where they used to".
>
>So, I simply chose to live with the (now known) problems in the previous
>version -- at least until the project was complete (and make a note
>not to use the upgraded tool on any future work on it)
>
>If, OTOH, I am supporting some existing "product" (hardware, software,
>documentation), then there is usually too much risk to making such a change
>*if* I can work-around any existing problems in the old tool.
>
>I maintain VMs of each required guest OS with these apps preinstalled.
>So, if client X needs some work done on a project I designed for him,
>I can start up the VM that hosts the toolchain that I was using when
>I last worked on his product. Because I will have made a commitment
>to make the changes in a certain time/money budget and can't factor
>in the potential cost of some newer version of "his" toolchain not
>working as memory suggests it would.
>
>[I've had clients update their tools and then want me to make
>some changes with their new tools -- only to accept the job by using
>their *old* tools ("But, those ran on W98!" "Yeah? And I've got a
>W98 machine, here, with them installed.") This is both a blessing
>and a curse -- as it allows them to drop stuff in my lap solely
>because they didn't maintain a proper development environment]

Fixing a Microsoft product is probably not feasable, so you had
no choice.

Groetjes Albert
--
"in our communism country Viet Nam, people are forced to be
alive and in the western country like US, people are free to
die from Covid 19 lol" duc ha
albert@spe&ar&c.xs4all.nl &=n http://home.hccnet.nl/a.w.m.van.der.horst

Re: arm assembly examples

<s89f0i$sg8$1@dont-email.me>

  copy mid

https://www.novabbs.com/tech/article-flat.php?id=63685&group=sci.electronics.design#63685

  copy link   Newsgroups: sci.electronics.design
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: blockedo...@foo.invalid (Don Y)
Newsgroups: sci.electronics.design
Subject: Re: arm assembly examples
Date: Fri, 21 May 2021 16:16:17 -0700
Organization: A noiseless patient Spider
Lines: 93
Message-ID: <s89f0i$sg8$1@dont-email.me>
References: <s7636j$k0i$1@reader1.panix.com> <s7pq06$n75$1@dont-email.me>
<60a11e88$0$29321$e4fe514c@news.xs4all.nl> <s7r7pu$n34$1@dont-email.me>
<60a839a9$0$22708$e4fe514c@news.xs4all.nl>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Fri, 21 May 2021 23:16:34 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="0461873ca74e8f9c70a01e9b752fad12";
logging-data="29192"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19s0eytCFuycKpAfa4U9V0k"
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101
Thunderbird/52.1.1
Cancel-Lock: sha1:xNG9vUnNY+qznCTzKxAq3vf37hw=
In-Reply-To: <60a839a9$0$22708$e4fe514c@news.xs4all.nl>
Content-Language: en-US
 by: Don Y - Fri, 21 May 2021 23:16 UTC

On 5/21/2021 3:52 PM, albert wrote:
> In article <s7r7pu$n34$1@dont-email.me>,
> Don Y <blockedofcourse@foo.invalid> wrote:
>> On 5/16/2021 6:30 AM, albert wrote:
>>> This is the reason for having minor upgrades on top of stable
>>> versions.
>>
>> If the vendor won't provide an upgrade to the version you have
>> (as was the case in the example I provided, above), then you
>> are forced to either:
>> - live with what you have
>> - update to the new version/product
>> - pick a new vendor/product
>
> - modify the tool using reverse engineering.
>
> Case in point. One of my job assignments used an old c-compiler
> where it was not even known who owned the copyright.
> There was a problem though, the embedded software did not longer
> fit in the ROMS. I fixed up the c-code but that only went so far.
> It seemed impossible to use some other c-compiler because of
> extensive libraries that had a different calling convention from the usual.
> I managed to use the gnu c-compiler, after modifying said
> compiler to use that particular calling convention.

But, that's not modifying "the tool"; it's creating a *new* tool
to provide the functionality needed (leveraging some preexisting tool).

E.g., I have added a syntax of:
object=>method(params...)
to my sources. This intentionally mimics the normal
struct->member(...)
syntax. But, handles the case where "object" isn't a pointer to
anything *in* your address space. Rather, it is an *identifier*
that references something in the kernel's address space which,
in turn, references some real code in yet another address space.

[A more banal imlementation would be something like:
method(object_id, params...)
but that means "method" can't easily be overloaded for different
TYPES of objects]

My point being that I can leverage the existing toolchain to
provide this functionality without having to create my own
compiler, etc.

>> If I am developing something new (hardware, software, documentation),
>> then I *might* be able to tolerate a "change" -- what I have at the
>> time isn't final and, presumably, I can notice any deviation in performance
>> over *my* working set.
>>
>> A DTP product changed how it would layout the page from one version to
>> the next. With several hundred pages of finished documentation behind
>> me, I wasn't keen on having to manually *tweek* each of those pages to
>> ensure page-breaks, paragraph breaks, flows, illustrations, etc. would
>> all end up "where they used to".
>>
>> So, I simply chose to live with the (now known) problems in the previous
>> version -- at least until the project was complete (and make a note
>> not to use the upgraded tool on any future work on it)
>>
>> If, OTOH, I am supporting some existing "product" (hardware, software,
>> documentation), then there is usually too much risk to making such a change
>> *if* I can work-around any existing problems in the old tool.
>>
>> I maintain VMs of each required guest OS with these apps preinstalled.
>> So, if client X needs some work done on a project I designed for him,
>> I can start up the VM that hosts the toolchain that I was using when
>> I last worked on his product. Because I will have made a commitment
>> to make the changes in a certain time/money budget and can't factor
>> in the potential cost of some newer version of "his" toolchain not
>> working as memory suggests it would.
>>
>> [I've had clients update their tools and then want me to make
>> some changes with their new tools -- only to accept the job by using
>> their *old* tools ("But, those ran on W98!" "Yeah? And I've got a
>> W98 machine, here, with them installed.") This is both a blessing
>> and a curse -- as it allows them to drop stuff in my lap solely
>> because they didn't maintain a proper development environment]
>
> Fixing a Microsoft product is probably not feasable, so you had
> no choice.

Exactly. The 'realization" was that this would, forever, be a
game of wack-a-mole. "Sorry, I'm not keen on playing..."

Instead, identify the problems with a particular toolchain
(you likely already know these if you've used it extensively).
Then, come up with workarounds for those -- and use them
religiously!

Or, pick a new tool that you can *fix* if its maintainers
opt to "abandon" it.

Pages:12
server_pubkey.txt

rocksolid light 0.9.81
clearnet tor