Re: Home brew Z80 CP/M computer
- From: Jack Crenshaw <jcrens@xxxxxxxxxxxxx>
- Date: Wed, 31 Dec 2008 10:33:57 -0500
CBFalconer wrote:
Jack Crenshaw wrote:CBFalconer wrote:Jack Crenshaw wrote:I do indeed have SLRMAC. I used both versions. What I _DON'T_
... snip ...
Let's see, now, where did I put that SLR assembler? Oh, yeah.Some time ago I was collecting the various SLR assemblers, and
It's on my Kaypro, which is in a storage locker collecting dust,
and hasn't been run in 20 years, and I can't find the floppies
that go with it. Sigh.
was going to go over them and create a master list. I have the
receptions, but never did the work. However, the main thing I
was looking for was SLRMAC (which handled the original 8080
mnemnonics) and nobody had. Maybe you do? I can trade you a
nice pile of assemblers and linkers.
have is a computer to read the disks. Or even to know where they
are, since my last move.
Have you ever looked at Russell's linking technology? I got the
impression that it was the real secret behind the success of the
SLR tools. I think I figured out at least part of how it worked,
but never found out if I was right.
I would like to get a copy of SLRMAC. Since I like the TDL
opcodes, it is much more compatible with my style (as it once was).
Here is what I have, unchecked.
Archive: slrstuff.zip 964317 bytes 20 files
-rw-a-- 2.3 ntf 30724 bx stor 8-Nov-00 11:59 cpm/SLRASM.ZIP
-rw-a-- 2.3 ntf 8719 bx stor 8-Nov-00 12:00 cpm/slrdis.zip
-rw-a-- 2.3 ntf 154203 bx stor 9-Aug-00 11:47 cpm/slr_man.zip
-rw-a-- 2.3 ntf 45696 bx defN 20-Apr-03 05:39 cpm/SLR80A.LBR
-rw-a-- 2.3 ntf 46720 bx defN 20-Apr-03 05:40 cpm/SLR80B.LBR
-rw-a-- 2.3 ntf 193588 bx stor 14-Apr-03 22:04 cpm/SLR001.zip
-rw-a-- 2.3 ntf 30208 bx defN 20-Apr-03 05:40 cpm/SLR80C.LBR
-rw-a-- 2.3 ntf 48946 bx stor 16-Jul-89 19:10 cpm/slrnkpls.zip
-rw-a-- 2.3 ntf 90725 bx stor 31-May-90 21:02 cpm/slrnk.zip
-rw-a-- 2.3 ntf 33871 bx stor 19-Feb-90 13:02 cpm/slr180bd.zip
-rw-a-- 2.3 ntf 32765 bx stor 31-May-90 20:56 cpm/slr180.zip
-rw-a-- 2.3 ntf 53000 bx stor 9-Apr-89 21:43 cpm/slr-132.zip
-rw-a-- 2.3 ntf 46265 bx stor 16-Apr-03 07:58 cpm/slr.zip
-rw-a-- 2.3 ntf 82395 bx stor 16-Apr-03 18:15 cpm/slrnkp.zip
-rw-a-- 2.3 ntf 72064 bx defN 20-Apr-03 05:40 cpm/SLR180.LBR
-rw-a-- 2.3 ntf 2022 tx defN 21-Apr-03 17:55 cpm/slr80b.inf
-rw-a-- 2.3 ntf 252 tx defN 21-Apr-03 17:55 cpm/slr80c.inf
-rw-a-- 2.3 ntf 1768 tx defN 21-Apr-03 17:56 cpm/slr180.inf
-rw-a-- 2.3 ntf 2407 tx defN 21-Apr-03 17:54 cpm/slr80a.inf
-rw-a-- 2.3 ntf 1867 tx defN 26-Dec-06 08:05 cpm/slrnotes.txt
20 files, 978205 bytes uncompressed, 961687 bytes compressed: 1.7%
Give me a suitable address for you and I will email it. I can
receive attachments at maineline.net, below.
Thanks an awful lot, Chuck, but I have nothing to run the stuff on, at the moment. Everything's still in storage from my last move.
The documentation for SLR systems described the relocatable format,
which made much more sense than the silly Microsoft M80 version. It also worked.
Yeah, I know. I spent many pleasant evenings poring over it. It does indeed tell everything about how data is organized in the object files. But it doesn't say what the SLR tools do with it.
The thing that I absolutely _LOVED_ about the SLR tools was how well they dealt with external references. You could do things like set a register to the value of the difference of two unresolved references. Somehow, the system would figure out the ultimate addresses for those registers, and get the value right.
Reading between the lines, it was easy enough to figure out that Steve had defined a stack machine to do the address calculations, and embedded that into the linker.
But I think there was more to it than that. I think the real trick was to embed the same stack machine in the compiler itself. That's how he managed forward references in a single-pass assembler.
The idea is this: If, at some point, you have enough info to resolve a reference (including a simple forward jump), do it. Otherwise, emit some commands to the address calculator: "Things to do later." Make a note of where all these commands are.
Every time a new label comes up, see if it's referenced. If so, go resolve it now. Otherwise, leave the stack machine instructions in place.
This whole process filters all the way down to the linker, Any references left unresolved by the assembler simply stay in place, for the linker to resolve.
Perhaps you remember Jim Kyle? He wrote a column for Windows Tech.
Jim told me, back in the day, that Steve Russell had written a book documenting his linker technology. Jim was working with him to edit and clean up the book. But before they could get the book out, Steve got hired by Borland. The linker technology then disappeared into the depths of Borland, as a company proprietary secret.
I hear _THAT_. Welcome to the world of "maturity." Walks, laxatives, pills, eyeglasses, and lots of naps.
I am getting somewhat long in the tooth, so I hope I can work up
the energy to get everything rolling again.
Jack
.
- References:
- Home brew Z80 CP/M computer
- From: lynchaj
- Re: Home brew Z80 CP/M computer
- From: Jack Crenshaw
- Re: Home brew Z80 CP/M computer
- From: no . spam
- Re: Home brew Z80 CP/M computer
- From: Jack Crenshaw
- Re: Home brew Z80 CP/M computer
- From: CBFalconer
- Re: Home brew Z80 CP/M computer
- From: Jack Crenshaw
- Re: Home brew Z80 CP/M computer
- From: CBFalconer
- Home brew Z80 CP/M computer
- Prev by Date: Re: Home brew Z80 CP/M computer
- Next by Date: Re: Home brew Z80 CP/M computer
- Previous by thread: Re: Home brew Z80 CP/M computer
- Next by thread: Re: Home brew Z80 CP/M computer
- Index(es):
Relevant Pages
|