Newsgroups: alt.folklore.computers Date: Wed, 29 Sep 1999 08:24:37 -0500 From: James Hague X-Sender: jhague@babba.advancenet.net Subject: Features of old assemblers Message-ID: x-no-archive: yes MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII NNTP-Posting-Host: babba.advancenet.net Lines: 8 Path: chonsp.franklin.ch!pfaff.ethz.ch!news-zh.switch.ch!news-ge.switch.ch!isdnet!netnews.com!newspeer1.nac.net!nntp1.savvis.net!news.advancenet.net!babba.advancenet.net!jhague A number of times in the 1990s I've seen comments along the lines of "young 'uns using today's assemblers don't realize how poor those tools are compared to the assemblers of the 1960s." Why is this? What kinds of things could a top-of-the-line 60s assembler do that don't exist in what's been the "standard" breed of assembler for the last twenty years? James ###### From: Jim Stewart Newsgroups: alt.folklore.computers Subject: Re: Features of old assemblers Date: Wed, 29 Sep 1999 08:47:58 -0700 Organization: http://www.jkmicro.com Message-ID: <0E02AC32C17538A4.C4FBFC7B66F07326.F49F92291EB0DBC0@lp.airnews.net> X-Orig-Message-ID: <37F234AE.AC471A6D@jkmicro.com> References: Reply-To: jstewart@jkmicro.com Abuse-Reports-To: abuse at airmail.net to report improper postings NNTP-Proxy-Relay: library1.airnews.net NNTP-Posting-Time: Wed Sep 29 10:45:48 1999 NNTP-Posting-Host: !_kEq1k-X@llFV4FV&2)EYVtu (Encoded at Airnews!) Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Mailer: Mozilla 4.61 [en] (Win98; I) X-Accept-Language: en Lines: 28 Path: chonsp.franklin.ch!pfaff.ethz.ch!news-zh.switch.ch!news-ge.switch.ch!news.belnet.be!colt.net!dispose.news.demon.net!demon!europa.netcrusader.net!205.252.116.205!howland.erols.net!firehose.mindspring.net!news.airnews.net!cabal10.airnews.net!cabal1.airnews.net!news-f.iadfw.net!usenet James Hague wrote: > > A number of times in the 1990s I've seen comments along the lines of > "young 'uns using today's assemblers don't realize how poor those tools > are compared to the assemblers of the 1960s." Why is this? What kinds of > things could a top-of-the-line 60s assembler do that don't exist in what's > been the "standard" breed of assembler for the last twenty years? I started with PAL3 on a PDP 8/L. All upper case, no macros, no automatic dealing with the "page exceeded" issue. The biggest issue was the slow I/O. Punching and loading your source code on the tty was a big hassle, with the assembler needing 2 passes to generate a binary and a 3rd for a listing. Life wasn't bad if you had a high speed reader-punch. I also spent a summer developing various small programs on an IMSAI 8080. The "development environment" was a rommed copy of the Processor Tech assembler debugger, a cassette drive for storage, and a Bytesaver for saving/testing binary images. Life sucked but I was young. The CP/M based assemblers were ok, though I remember a hellish 2 days trying to figure out why my 50 page program wouldn't assemble and wouldn't give an error message. There was a non-printing char in the middle of the code. Jim ###### Message-ID: <37F22B70.6FCC45DC@iedu.org> From: Morris Dovey Reply-To: mrdovey@iedu.org Organization: http://www.iedu.org/mrd X-Mailer: Mozilla 4.61 [en] (X11; U; Linux 2.0.36 i686) X-Accept-Language: en, fr, pt-BR, ru, es MIME-Version: 1.0 Newsgroups: alt.folklore.computers Subject: Re: Features of old assemblers References: Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Lines: 22 Date: Wed, 29 Sep 1999 10:08:32 -0500 NNTP-Posting-Host: 207.108.37.10 X-Trace: news.uswest.net 938617832 207.108.37.10 (Wed, 29 Sep 1999 10:10:32 CDT) NNTP-Posting-Date: Wed, 29 Sep 1999 10:10:32 CDT Path: chonsp.franklin.ch!pfaff.ethz.ch!news-zh.switch.ch!newsfeed-zh.ip-plus.net!news.ip-plus.net!News.Amsterdam.UnisourceCS!skynet.be!logbridge.uoregon.edu!news-out.uswest.net!news.uswest.net!not-for-mail James Hague wrote: > > A number of times in the 1990s I've seen comments along the lines of > "young 'uns using today's assemblers don't realize how poor those tools > are compared to the assemblers of the 1960s." Why is this? What kinds of > things could a top-of-the-line 60s assembler do that don't exist in what's > been the "standard" breed of assembler for the last twenty years? James... The beauty of features probably lies in the eyes of the beholder. I recall some sixties assemblers that weren't particularly 'beautiful'. There were features in some assemblers I particularly liked, such as beign able to use both keyword and positional macro parameters, the ability to declare both 'strong' and 'weak' external linkages (although this was, of course, strongly dependent on a cooperative linker), and a few others. Morris Dovey West Des Moines, Iowa USA mrdovey@iedu.org ###### From: Tim Shoppa Newsgroups: alt.folklore.computers Subject: Re: Features of old assemblers Date: Wed, 29 Sep 1999 11:31:41 -0400 Organization: Trailing Edge Technology Message-ID: <37F1F89D.7BE1C7C6@trailing-edge.com> References: NNTP-Posting-Host: timaxp.trailing-edge.com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Trace: ffx2nh5.news.uu.net 938619124 1350 63.73.218.130 (29 Sep 1999 15:32:04 GMT) X-Complaints-To: news@ffx2nh5.news.uu.net NNTP-Posting-Date: 29 Sep 1999 15:32:04 GMT X-Mailer: Mozilla 3.03Gold (X11; I; OpenVMS V7.0 DEC 3000 Model 300L) Lines: 53 Path: chonsp.franklin.ch!pfaff.ethz.ch!news-zh.switch.ch!news-ge.switch.ch!news.belnet.be!colt.net!dispose.news.demon.net!demon!newsfeed.tli.de!do.de.uu.net!uunet!ams.uu.net!nyc.uu.net!ffx.uu.net!ffx2nh5!not-for-mail James Hague wrote: > > A number of times in the 1990s I've seen comments along the lines of > "young 'uns using today's assemblers don't realize how poor those tools > are compared to the assemblers of the 1960s." Why is this? What kinds of > things could a top-of-the-line 60s assembler do that don't exist in what's > been the "standard" breed of assembler for the last twenty years? The problem with the "standard" breed of assembler for the past twenty years is that it's based on the Unix "as" assembler and (optionally) the Unix "cpp" for macro expansion. While "as" and "cpp" are marginally useful for the world where they were developed in (tiny textbook programs written by one or maybe two programmers sharing the project) they are completely useless for large, complex programs with rich data structures and many authors. Real macro assemblers have * provisions for multiple layers of local labels * precise control over scope of definitions * macro expansions which use the above two features to generate new labels as necessary, and definitions which have meaningful scope * macro expansions with rich argument, conditional, and looping constructs (about the only thing you get from "cpp" is a piss-poor subset of the conditionals you might expect.) * keyword and positional arguments * rich support for string manipulation within the macro language * the ability to precisely control when and where expressions are to be evaluated (i.e. the ability to have a macro argument expanded in the scope of the calling program, or to have it evaluated sometime during macro expansion, as necessary). Of course, support for many of the rich features above aren't easily implemented in the yacc-style grammar that seems to have been the rage for the last couple decades, so if you show such things to a young (i.e. less than 35-year-old) programmer their mind won't understand the concepts. Heck, most programmers these days have been taught since day one that labels are never allowed, much less a "goto" or "branch"! -- Tim Shoppa Email: shoppa@trailing-edge.com Trailing Edge Technology WWW: http://www.trailing-edge.com/ 7328 Bradley Blvd Voice: 301-767-5917 Bethesda, MD, USA 20817 Fax: 301-767-5927 ###### From: Mike Swaim Subject: Re: Features of old assemblers Newsgroups: alt.folklore.computers References: Organization: PointeCom User-Agent: tin/pre-1.4-980818 ("Laura") (UNIX) (FreeBSD/2.2.8-RELEASE (i386)) Lines: 16 Message-ID: NNTP-Posting-Date: Wed, 29 Sep 1999 11:57:58 CDT X-Trace: sv1-fGj/+/YHGyaGzPEktew3Z+cTCEgaCvONjWKYtprQsDsUGbfl+l6nOgYDTavBRZ56PgM9pIZKgsByjja!c3zMv70nHGs= X-Complaints-To: abuse@GigaNews.Com X-Abuse-Info: Please be sure to forward a copy of ALL headers X-Abuse-Info: Otherwise we will be unable to process your complaint properly Date: Wed, 29 Sep 1999 16:57:58 GMT Path: chonsp.franklin.ch!pfaff.ethz.ch!news-zh.switch.ch!news-ge.switch.ch!news-fra1.dfn.de!news0.de.colt.net!blackbush.xlink.net!newsfeed.tli.de!newsfeed.cwix.com!nntp2.giganews.com!news6.giganews.com.POSTED!gemini.c-com.net!swaim James Hague wrote: : A number of times in the 1990s I've seen comments along the lines of : "young 'uns using today's assemblers don't realize how poor those tools : are compared to the assemblers of the 1960s." Why is this? Back when assemblers were an important means of writing programs, there was an incentive to write good tools. In the PC (and probably Workstation) world, assembly language isn't used as much as other languages, such as Pascal, C, or BASIC (and their descendants). Those languages have gotten spiffy tools/development environments, while assembly language has been relatively neglected. -- Mike Swaim, Avatar of Chaos: Disclaimer:I sometimes lie. Home: swaim@c-com.net Alum: swaim@alumni.rice.edu Quote: "Boingie"^4 Y,W&D ###### From: arlin@metronet.com (Arlin Collins) Newsgroups: alt.folklore.computers Subject: Re: Features of old assemblers Date: 30 Sep 1999 03:37:11 GMT Organization: Texas Metronet, Inc Lines: 18 Message-ID: <7sult7$1gu$1@news.metronet.com> NNTP-Posting-Host: 192.245.137.3 X-Newsreader: TIN [version 1.2 PL2] Path: chonsp.franklin.ch!pfaff.ethz.ch!news-zh.switch.ch!news-ge.switch.ch!news.belnet.be!newspump.monmouth.com!newspeer.monmouth.com!news-feeds.jump.net!diablo.metronet.com!news.metronet.com!arlin James Hague (jhague@dadgum.com) wrote: : A number of times in the 1990s I've seen comments along the lines of : "young 'uns using today's assemblers don't realize how poor those tools : are compared to the assemblers of the 1960s." Why is this? What kinds of : things could a top-of-the-line 60s assembler do that don't exist in what's : been the "standard" breed of assembler for the last twenty years? my "assembly" experience was during the 70's on CDC 6000 and Cyber series... I wrote a couple 15K-line routines and supported the Scope, NOS/BE systems and what I miss the most today (not just assembly, but c and fortran) is a nice throough XREF listing, showing my variables where defined, type, where set and referenced. It always gave me a "bigger picture" of my code in context of the memory usage and use of my own functions/sub and use of library routines. Arlin Collins ###### Date: 30 Sep 99 09:41:32 -0800 From: "Charlie Gibbs" Subject: Re: Features of old assemblers References: <7sult7$1gu$1@news.metronet.com> Message-ID: <2618.942T1628T5814673@sky.bus.com> Newsgroups: alt.folklore.computers Lines: 52 X-Newsreader: THOR 2.5a (Amiga;TCP/IP) NNTP-Posting-Host: news.skybus.com X-Trace: 30 Sep 1999 09:59:46 -0800, news.skybus.com Path: chonsp.franklin.ch!pfaff.ethz.ch!news-zh.switch.ch!news-ge.switch.ch!news.maxwell.syr.edu!hammer.uoregon.edu!newsfeed.direct.ca!east1.newsfeed.sprint-canada.net!news.westel.com!news.skybus.com!204.244.247.117 In article <7sult7$1gu$1@news.metronet.com> arlin@metronet.com (Arlin Collins) writes: > my "assembly" experience was during the 70's on CDC 6000 > and Cyber series... I wrote a couple 15K-line routines > and supported the Scope, NOS/BE systems and what I miss > the most today (not just assembly, but c and fortran) > is a nice throough XREF listing, showing my variables > where defined, type, where set and referenced. > It always gave me a "bigger picture" of my code in context > of the memory usage and use of my own functions/sub > and use of library routines. Amen! To me, a good cross-reference listing was not an option, but an essential programming tool. Back in those days, you did a lot more desk checking than now, because as a programmer you got rock-bottom priority when it came to getting test runs. In my Univac 9300 days, I wrote my own assembler. It met my design criterion of running twice as fast as Univac's, which meant that our largest program, which took 40 minutes to assemble using their assembler, only took 20 on mine, which meant I could fit into smaller, more freqently available time slots on the machine. In addition, my assembler had a good cross-reference listing (symbol name, value, ESID, and line where it was defined, in addition to the lines where the symbol was referenced), whereas the Univac assembler had no cross-reference listing of any sort. One day, while visiting an IBM shop, I saw one of their assembly listings that had a separate cross-reference listing for all of the literals used in the program. I went right back and added it to my assembler. I was quite disappointed when I went from the 9300 to the 90/30, and found that the OS/3 assembler didn't have a literal cross-reference. But I got over that once I got my own OS/3 assembler written. That's the nice thing about having source code - you can put in your own features and fix bugs quickly. There was the time I spent hours trying to track down a bug caused by saying DS instead of DC when declaring (what I thought was) an initialized storage area. After spending half an hour with the assembler source code, it started issuing warnings whenever this happened, so I was never caught by that bug again. A good macro processor can be a bear to write, but you can sure do some weird and wonderful things once it's working - like that recursive macro that generates solutions to the Towers of Hanoi without producing any executable code (the solution is in the assembly listing itself). -- cgibbs@sky.bus.com (Charlie Gibbs) Remove the first period after the "at" sign to reply. ###### From: jones@cs.uiowa.edu (Douglas W. Jones,201H MLH,3193350740,3193382879) Newsgroups: alt.folklore.computers Subject: Re: Features of old assemblers Date: 30 Sep 1999 15:11:45 GMT Organization: The University of Iowa Lines: 55 Message-ID: <7svujh$gua$1@flood.weeg.uiowa.edu> References: NNTP-Posting-Host: pyrite.cs.uiowa.edu Path: chonsp.franklin.ch!pfaff.ethz.ch!news-zh.switch.ch!newsfeed-zh.ip-plus.net!news.ip-plus.net!News.Amsterdam.UnisourceCS!newshunter!cosy.sbg.ac.at!news-feed.inet.tele.dk!bofh.vszbr.cz!nntp.primenet.com!nntp.gctr.net!newsfeed.berkeley.edu!remarQ73!supernews.com!remarQ.com!news-in.usenetserver.com!news.usenetserver.com!uunet!ffx.uu.net!news.uiowa.edu!not-for-mail From article , by James Hague : > A number of times in the 1990s I've seen comments along the lines of > "young 'uns using today's assemblers don't realize how poor those tools > are compared to the assemblers of the 1960s." Why is this? What kinds of > things could a top-of-the-line 60s assembler do that don't exist in what's > been the "standard" breed of assembler for the last twenty years? A decent macro assembler is a general purpose programming language, even if you completely ignore the machine language of the machine it was designed to generate code for. Macro-11, its predecessor Macro-10 and its successor for the VAX were among the best ever. Consider the following fairly example recalled from memory, some syntax may be wrong: ;----------- ; macros to create an assembly-time stack ; sp is the stack pointer ; stack0, stack1, stack2 etc are the stack itself ; the macro expander elides single quotes in the expansion ; the macro expander replaces #var with the decimal value of var sp = 0 .MACRO push i stack'#sp' = i sp = sp + 1 .ENDMAC .MACRO pop i i = stack'#sp' .ENDMAC ;----------- ; fibonacci i j sets j to the ith Fibonacci number ; it has 2 local variables ; it is recursive .MACRO fibonacci i j push a push b .IF (i)<2 j = (i) .ELSE fibonacci i-1 a fibonacci i-2 b j = a + b .ENDIF pop b pop a .ENDMAC I've been giving away code for a free macro assembler that can do this kind of thing for a number of years (see http://www.cs.uiowa.edu/cross/ for both the machine independant and various machine dependant versions, manuals, etc). Doug Jones jones@cs.uiowa.edu ###### From: timothy.mccaffrey@spam2filter.unisys.com.takethisoff (Tim McCaffrey) Newsgroups: alt.folklore.computers Subject: Re: Features of old assemblers Date: 30 Sep 1999 16:58:12 GMT Organization: A series networking Lines: 14 Message-ID: <7t04r4$akp$1@mail.pl.unisys.com> References: <7svujh$gua$1@flood.weeg.uiowa.edu> NNTP-Posting-Host: tr-mccafftm.tr.unisys.com X-Newsreader: WinVN 0.99.9 (Released Version) (x86 32bit) Path: chonsp.franklin.ch!pfaff.ethz.ch!news-zh.switch.ch!newsfeed-zh.ip-plus.net!news.ip-plus.net!News.Amsterdam.UnisourceCS!uunet!ams.uu.net!ffx.uu.net!bbnews1!bbnews1.unisys.com!eanews1!eanews1.unisys.com!plnews.pl.unisys.com!not-for-mail In article <7svujh$gua$1@flood.weeg.uiowa.edu>, jones@cs.uiowa.edu says... > > >I've been giving away code for a free macro assembler that can do this >kind of thing for a number of years (see http://www.cs.uiowa.edu/cross/ >for both the machine independant and various machine dependant versions, >manuals, etc). > > Doug Jones > jones@cs.uiowa.edu File not found. ###### From: dg@pearl.tao.co.uk (David Given) Newsgroups: alt.folklore.computers Subject: Re: Features of old assemblers Date: Thu, 30 Sep 1999 17:21:04 +0100 Organization: I'm organised? Wow! Lines: 17 Message-ID: References: <7svujh$gua$1@flood.weeg.uiowa.edu> NNTP-Posting-Host: 212.19.67.123 Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: 938756984 IIX5YQT0T437BD413C uk25.supernews.com X-Complaints-To: newsabuse@remarq.com X-Newsreader: knews 1.0b.1 Path: chonsp.franklin.ch!pfaff.ethz.ch!news-zh.switch.ch!news-ge.switch.ch!news.belnet.be!colt.net!newsfeed.icl.net!newsfeed.axxsys.net!remarQ-easT!remarQ73!supernews.com!remarQ.com!remarQ69!127.0.0.1!nobody In article <7svujh$gua$1@flood.weeg.uiowa.edu>, jones@cs.uiowa.edu (Douglas W. Jones,201H MLH,3193350740,3193382879) writes: [...] > I've been giving away code for a free macro assembler that can do this > kind of thing for a number of years (see http://www.cs.uiowa.edu/cross/ > for both the machine independant and various machine dependant versions, > manuals, etc). ITYM http://www.cs.uiowa.edu/~jones/cross/ BTW, that's a truly horrific photo. -- +- David Given ---------------McQ-+ "What appears to be a sloppy or meaningless | Work: dg@tao-group.com | use of words may well be a completely | Play: dgiven@iname.com | correct use of words to express sloppy or +- http://wired.st-and.ac.uk/~dg -+ meaningless ideas." --- Anonymous Diplomat ###### From: Tracy Nelson Newsgroups: alt.folklore.computers Subject: Re: Features of old assemblers Date: Thu, 30 Sep 1999 17:50:46 -0400 Organization: Ralph Spoilsport Motors Lines: 7 Message-ID: <37F3DB36.C96BCD4C@fast.net> References: <7svujh$gua$1@flood.weeg.uiowa.edu> <7t04r4$akp$1@mail.pl.unisys.com> NNTP-Posting-Host: maxtnt10-abe-400.fast.net Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Mailer: Mozilla 4.61 [en] (X11; U; Linux 2.2.5-15 i686) X-Accept-Language: en Path: chonsp.franklin.ch!pfaff.ethz.ch!news-zh.switch.ch!news-ge.switch.ch!news.maxwell.syr.edu!nntp.abs.net!newsfeed.fast.net!news.fast.net!not-for-mail Tim McCaffrey wrote: > In article <7svujh$gua$1@flood.weeg.uiowa.edu>, jones@cs.uiowa.edu says... > >I've been giving away code for a free macro assembler that can do this > >kind of thing for a number of years (see http://www.cs.uiowa.edu/cross/ > File not found. Try http://www.cs.uiowa.edu/~jones/cross ###### From: Tracy Nelson Newsgroups: alt.folklore.computers Subject: Re: Features of old assemblers Date: Thu, 30 Sep 1999 17:52:30 -0400 Organization: Ralph Spoilsport Motors Lines: 8 Message-ID: <37F3DB9E.AE566980@fast.net> References: <7sult7$1gu$1@news.metronet.com> NNTP-Posting-Host: maxtnt10-abe-400.fast.net Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Mailer: Mozilla 4.61 [en] (X11; U; Linux 2.2.5-15 i686) X-Accept-Language: en Path: chonsp.franklin.ch!pfaff.ethz.ch!news-zh.switch.ch!news-ge.switch.ch!news.maxwell.syr.edu!howland.erols.net!newsfeed.fast.net!news.fast.net!not-for-mail Arlin Collins wrote: > what I miss > the most today (not just assembly, but c and fortran) > is a nice throough XREF listing, showing my variables > where defined, type, where set and referenced. Amen! If more compilers had this feature, we wouldn't have deal with Hungarian notation... ###### From: jmfbahciv@aol.com Newsgroups: alt.folklore.computers Subject: Re: Features of old assemblers Date: Fri, 01 Oct 99 10:25:12 GMT Organization: UltraNet Communications, Inc. Lines: 31 Message-ID: <7t29pa$pa3$1@winter.news.rcn.net> References: <7sult7$1gu$1@news.metronet.com> <2618.942T1628T5814673@sky.bus.com> X-Trace: VJkIab/crVBEWLEwMeA6KPUUSLY3JWvmD4+PfRtko8U= X-Complaints-To: abuse@rcn.com NNTP-Posting-Date: 1 Oct 1999 12:34:50 GMT X-Newsreader: News Xpress Version 1.0 Beta #4 Path: chonsp.franklin.ch!pfaff.ethz.ch!news-zh.switch.ch!news-ge.switch.ch!isdnet!howland.erols.net!outgoing.news.rcn.net.MISMATCH!feed1.news.rcn.net!rcn!d2 In article <2618.942T1628T5814673@sky.bus.com>, "Charlie Gibbs" wrote: >In article <7sult7$1gu$1@news.metronet.com> arlin@metronet.com >(Arlin Collins) writes: > >> my "assembly" experience was during the 70's on CDC 6000 >> and Cyber series... I wrote a couple 15K-line routines >> and supported the Scope, NOS/BE systems and what I miss >> the most today (not just assembly, but c and fortran) >> is a nice throough XREF listing, showing my variables >> where defined, type, where set and referenced. >> It always gave me a "bigger picture" of my code in context >> of the memory usage and use of my own functions/sub >> and use of library routines. > >Amen! To me, a good cross-reference listing was not an option, >but an essential programming tool. Back in those days, you did >a lot more desk checking than now, because as a programmer you >got rock-bottom priority when it came to getting test runs. We used cross-refs and something we called GLOBs...and we didn't ever have to wait for other jobs taking higher turnaround time priority :-). GLOBs were global cross-refs. So a listing of COMCON.MAC had its cross-ref at the end; the GLOV had everybody's. /BAH Subtract a hundred and four for e-mail. ###### From: jones@cs.uiowa.edu (Douglas W. Jones,201H MLH,3193350740,3193382879) Newsgroups: alt.folklore.computers Subject: Re: Features of old assemblers Date: 1 Oct 1999 14:24:47 GMT Organization: The University of Iowa Lines: 16 Message-ID: <7t2g7f$55a$1@flood.weeg.uiowa.edu> References: <7t04r4$akp$1@mail.pl.unisys.com> NNTP-Posting-Host: pyrite.cs.uiowa.edu Path: chonsp.franklin.ch!pfaff.ethz.ch!news-zh.switch.ch!news-ge.switch.ch!news.maxwell.syr.edu!logbridge.uoregon.edu!nuq-peer.news.verio.net!news.verio.net!ord-feed.news.verio.net!feed.news.verio.net!news.uiowa.edu!not-for-mail From article <7t04r4$akp$1@mail.pl.unisys.com>, by timothy.mccaffrey@spam2filter.unisys.com.takethisoff (Tim McCaffrey): > In article <7svujh$gua$1@flood.weeg.uiowa.edu>, jones@cs.uiowa.edu says... >>I've been giving away code for a free macro assembler that can do this >>kind of thing for a number of years (see http://www.cs.uiowa.edu/cross/ >>for both the machine independant and various machine dependant versions, >>manuals, etc). > File not found. Oops. Bad citation. Try: http://www.cs.uiowa.edu/~jones/cross/ Doug Jones jones@cs.uiowa.edu ###### Newsgroups: alt.folklore.computers References: <7sult7$1gu$1@news.metronet.com> <2618.942T1628T5814673@sky.bus.com> From: jata@aepiax.net (Julian Thomas) Subject: Re: Features of old assemblers Message-ID: <37f4d58c$3$wg$mr2ice@news.epix.net> X-Newsreader: MR/2 Internet Cruiser Edition for OS/2 v1.61 b61 Lines: 29 Date: Fri, 01 Oct 1999 15:38:55 GMT NNTP-Posting-Host: 199.224.125.18 X-Complaints-To: abuse@epix.net X-Trace: news1.epix.net 938792335 199.224.125.18 (Fri, 01 Oct 1999 11:38:55 EDT) NNTP-Posting-Date: Fri, 01 Oct 1999 11:38:55 EDT Path: chonsp.franklin.ch!pfaff.ethz.ch!news-zh.switch.ch!news-ge.switch.ch!news.belnet.be!newsfeeds.belnet.be!news.belnet.be!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed1.earthlink.net!newsfeed.berkeley.edu!news-xfer.epix.net!news1.epix.net!not-for-mail Relative to this discussion is a short essay on the construction of assemblers. The classic model is the 2 pass assembler (sometimes preceded by a macro expansion pass), where a symbol table is built in memory on the first pass, and the definitions are plugged in on the second. An alternative model, which I first implemented on a cross assembler (DASH) running on a machine with very limited memory (D1000), was to write all symbol definitions and references out to tape, then sort them by symbol then type (def or ref). Once this was done, the defs could be plugged into the refs, which were then resorted into program sequence order; the final pass merged the sort output into the code. A subsequent implementation (ARGUS, for the H800; I didn't do it) carried this to a further extreme - the first pass processed ALL the programs on the input tape; all the defs and refs were sorted (obvioulsy they included the program sequence number on the input tape) and processed, then the resorted tape was merged into the code, program by program. -- Julian Thomas: jt . epix @ net http://home.epix.net/~jt remove letter a for email (or switch . and @) Boardmember of POSSI.org - Phoenix OS/2 Society, Inc http://www.possi.org In the beautiful Finger Lakes Wine Country of New York State! -- -- 99 percent of lawyers give the rest a bad name. ###### From: "Rob Nicholson" Newsgroups: alt.folklore.computers Subject: Re: Features of old assemblers Date: Fri, 1 Oct 1999 18:40:44 +0100 Organization: Customer of Planet Online Lines: 17 Message-ID: <7t2sj9$nm1$1@news6.svr.pol.co.uk> References: <7sult7$1gu$1@news.metronet.com> <2618.942T1628T5814673@sky.bus.com> <37f4d58c$3$wg$mr2ice@news.epix.net> NNTP-Posting-Host: modem-70.caffeine.dialup.pol.co.uk X-Trace: news6.svr.pol.co.uk 938800553 24257 62.136.56.70 (1 Oct 1999 17:55:53 GMT) NNTP-Posting-Date: 1 Oct 1999 17:55:53 GMT X-Complaints-To: abuse@theplanet.net X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 5.00.2014.211 X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2014.211 Path: chonsp.franklin.ch!pfaff.ethz.ch!news-zh.switch.ch!news-ge.switch.ch!feed2.news.luth.se!luth.se!news-peer-europe.sprintlink.net!news.sprintlink.net!news.algonet.se!algonet!newsfeed.tli.de!blackbush.xlink.net!news0.de.colt.net!colt.net!diablo.theplanet.net!news.theplanet.net!newspost.theplanet.net!not-for-mail > A subsequent implementation (ARGUS, for the H800; I didn't do it) carried > this to a further extreme - the first pass processed ALL the programs on > the input tape; all the defs and refs were sorted (obvioulsy they included Cross assemblers for games systems (e.g. 68000, 65816) got quite sophisticated. PSY-Q and SNASM were amongst the most popular. Assembly speed (lines / second) became quite a battle ground :-) The macro language got very powerful. I think one of the fastest was single pass - any forward references were back patched as they were resolved. This was a complex task as on some processors (e.g. the 65816), you couldn't tell how must space a particular instruction would occupy until the address was resolved. Rob. ###### From: hmv@port.ac.uk (Mike Meredith at home) Newsgroups: alt.folklore.computers Subject: Re: Features of old assemblers Date: Fri, 1 Oct 1999 22:30:09 +0100 Organization: Customer of Planet Online Lines: 19 Sender: mike@port.ac.uk Message-ID: <1593t7.1ft9.ln@predator> References: <37F1F89D.7BE1C7C6@trailing-edge.com> NNTP-Posting-Host: modem-218.name65.dialup.pol.co.uk Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: news8.svr.pol.co.uk 938813690 20788 62.136.192.218 (1 Oct 1999 21:34:50 GMT) NNTP-Posting-Date: 1 Oct 1999 21:34:50 GMT X-Complaints-To: abuse@theplanet.net X-Newsreader: knews 1.0b.1 Path: chonsp.franklin.ch!pfaff.ethz.ch!news-zh.switch.ch!newsfeed-zh.ip-plus.net!news.ip-plus.net!News.Amsterdam.UnisourceCS!skynet.be!diablo.theplanet.net!news.theplanet.net!newspost.theplanet.net!predator!nobody Hi In article <37F1F89D.7BE1C7C6@trailing-edge.com>, Tim Shoppa writes: > The problem with the "standard" breed of assembler for the past > twenty years is that it's based on the Unix "as" assembler and > (optionally) the Unix "cpp" for macro expansion. While "as" > and "cpp" are marginally useful for the world where they were Of course you aren't supposed to write assembler programs under Unix, which could be why the standard tools are so bad. I can remember an assembler on the BBC that was better. Even someone who hasn't written any assembler since the days of the Z80 can tell you that basing assemblers on the standard Unix tools is a *bad* mistake. (apologies for any writing glitches after 3/4 of a bottle of port --- it's been a *BAD* week) ###### From: Brian Inglis Newsgroups: alt.folklore.computers Subject: Re: Features of old assemblers Date: Sat, 02 Oct 1999 03:09:26 -0600 Organization: Systematic Software Reply-To: Brian.dot.Inglis@SystematicSw.ab.ca Message-ID: References: <37F1F89D.7BE1C7C6@trailing-edge.com> X-Newsreader: Forte Agent 1.6/32.525 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit NNTP-Posting-Host: 207.148.138.99 X-Original-NNTP-Posting-Host: 207.148.138.99 X-Trace: 2 Oct 1999 03:09:28 -0700, 207.148.138.99 X-Original-NNTP-Posting-Host: 204.50.1.43 Lines: 116 Path: chonsp.franklin.ch!pfaff.ethz.ch!news-zh.switch.ch!newsfeed-zh.ip-plus.net!news.ip-plus.net!News.Amsterdam.UnisourceCS!uunet!ams.uu.net!grolier!dispose.news.demon.net!demon!cpk-news-hub1.bbnplanet.com!news.gtei.net!WCG!WCG2!207.228.64.29!nntp.cadvision.com!news.cadvision.com!207.148.138.99 On Wed, 29 Sep 1999 11:31:41 -0400, Tim Shoppa wrote: >James Hague wrote: >> >> A number of times in the 1990s I've seen comments along the lines of >> "young 'uns using today's assemblers don't realize how poor those tools >> are compared to the assemblers of the 1960s." Why is this? What kinds of >> things could a top-of-the-line 60s assembler do that don't exist in what's >> been the "standard" breed of assembler for the last twenty years? > >The problem with the "standard" breed of assembler for the past >twenty years is that it's based on the Unix "as" assembler and >(optionally) the Unix "cpp" for macro expansion. While "as" >and "cpp" are marginally useful for the world where they were >developed in (tiny textbook programs written by one or maybe two >programmers sharing the project) they are completely useless for >large, complex programs with rich data structures and many >authors. > >Real macro assemblers have > >* provisions for multiple layers of local labels > >* precise control over scope of definitions > >* macro expansions which use the above two features to generate > new labels as necessary, and definitions which have meaningful > scope > >* macro expansions with rich argument, conditional, and looping > constructs (about the only thing you get from "cpp" is a > piss-poor subset of the conditionals you might expect.) > >* keyword and positional arguments > >* rich support for string manipulation within the macro language > >* the ability to precisely control when and where expressions > are to be evaluated (i.e. the ability to have a macro argument > expanded in the scope of the calling program, or to have it > evaluated sometime during macro expansion, as necessary). > >Of course, support for many of the rich features above aren't >easily implemented in the yacc-style grammar that seems to have >been the rage for the last couple decades, so if you show such >things to a young (i.e. less than 35-year-old) programmer their >mind won't understand the concepts. Heck, most programmers these >days have been taught since day one that labels are never allowed, >much less a "goto" or "branch"! Real Assemblers for Real Assembler Programmers (with apologies to Real -- also Integer and Character -- Programmers everywhere) files -- if it won't let you either include a bunch of other assembler files or concatenate them on input, and produce either relocatable or absolute object code, it ain't a Real Assembler constants -- if you can't specify characters, strings, integers and floating point numbers in any notation or base from 2 to 16, including exponents, and change it for every value, it ain't a Real Assembler opcodes and operands -- if you can't rename every machine instruction and register to mnemonics you *CAN* remember, define all the ones the manufacturer "forgot" to document, and any you may have added yourself, it ain't a Real Assembler macros -- if it doesn't support indefinite recursion, and you can't assemble the solution to "Towers of Hanoi" as a constant, it ain't a Real Assembler local labels -- if you have to manually assign a unique 6 character name to every start of loop and end of loop label, it ain't a Real Assembler conditionals -- if it can't tell you what make, model and serial number of machine, OS environment and version, assembler version, section properties, argument data type, length and any other machine dependent variation imaginable, and allow you to decide which instruction to generate this macro call, it ain't a Real Assembler loops -- if it isn't automatically implied for lists of data, simple for unrolling instruction loops, and programmable for iterating over argument lists, it ain't a Real Assembler structured data -- if you can't feed it a list of nodes (suitably "parenthesized") and have it generate a fully linked balanced binary tree, it ain't a Real Assembler structured programming -- if you can't write block structured macros, and use them to assemble a simple ratfor program directly into machine code, it ain't a Real Assembler configuration -- if it won't let you assemble a program to be optionally burnt into ROM, booted directly, or run under an OS, at assembly time, it ain't a Real Assembler output -- if it doesn't give you numeric and mnemonic instructions and addresses, and cross reference listing of both names and values, sorted by both name and value, on any page size you happen to have a use for, or in any way stop you from using it either to process [nt]roff input, or produce word processed output, it ain't a Real Assembler (hey, it's the *only* tool available on some systems ...) Real Assembler Programmers don't write instructions, they write macros, and call them in interesting ways. (with apologies to the originator of whatever the original saying was -- I'm bushed!) Thanks. Take care, Brian Inglis Calgary, Alberta, Canada -- Brian_Inglis@CSi.com (Brian dot Inglis at SystematicSw dot ab dot ca) use address above to reply ###### From: hawk@hawkins.cba.uni.edu (Richard E. Hawkins) Newsgroups: alt.folklore.computers Subject: Re: Features of old assemblers Date: 2 Oct 1999 10:17:41 -0500 Organization: House of Hawkins Lines: 36 Message-ID: <7t57ml$of3$1@hawkins.cba.uni.edu> References: <37F1F89D.7BE1C7C6@trailing-edge.com> NNTP-Posting-Host: hawkins.cba.uni.edu Path: chonsp.franklin.ch!pfaff.ethz.ch!news-zh.switch.ch!newsfeed-zh.ip-plus.net!news.ip-plus.net!News.Amsterdam.UnisourceCS!skynet.be!logbridge.uoregon.edu!news.physics.uiowa.edu!news.uni.edu!not-for-mail In article , Brian Inglis wrote: Ohmygoodness! I damn near wrote a Real Assembler when I added mail-merge to LyX :) Someday, I really should put at least an option that lets users check for circular recursion, but I was only interested in two or three levels--but it was easier to write it with unlimited recursion than some arbitrary level. [It was time to send out letters for jobs, and I realized that it would be easier to add mail-merge to lyx than to fight with the brain-dead excuse for mailmerge in the current versions of word {which was slavishly copied, moronic-idea for moronic-idea by staroffice}. I was right. I'm not sure what more damning thing you can possibly say about someone's software than that it's easier to write your own than to use it . . . btw, with minor changes, it could bolt on to almost anything, so if someone needs such a thing for a product, I'll release it under almost any free license (not the GPL, though). It substitutes, does conditionals, and parses through the changes it makes, allowing recursion. It would need an external concept of a buffer, and external functions for manipulating the buffer.] hawk -- Prof. Richard E. Hawkins, Esq. hawk@hawkins.cba.uni.edu (319) 266-7114 http://eyry.econ.iastate.edu/hawk These opinions will not be those of UNI until it pays my retainer. ###### From: Charles Richmond Newsgroups: alt.folklore.computers Subject: Re: Features of old assemblers Date: Sat, 02 Oct 1999 16:06:06 +0000 Organization: Cannine Computer Center Lines: 21 Message-ID: <37F62D6F.22BCA722@plano.net> References: <37F1F89D.7BE1C7C6@trailing-edge.com> <7t57ml$of3$1@hawkins.cba.uni.edu> Reply-To: richmond@plano.net X-Complaints-To: newsabuse@supernews.com X-Mailer: Mozilla 4.03 (Macintosh; I; 68K) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Path: chonsp.franklin.ch!pfaff.ethz.ch!news-zh.switch.ch!news-ge.switch.ch!news-fra1.dfn.de!unlisys!news.snafu.de!newsfeed.tli.de!remarQ-easT!rQdQ!supernews.com!remarQ.com!corp.supernews.com!not-for-mail Richard E. Hawkins wrote: > > [snip...] [snip...] [snip...] > > [It was time to send out letters for jobs, and I realized that it would > be easier to add mail-merge to lyx than to fight with the brain-dead > excuse for mailmerge in the current versions of word {which was > slavishly copied, moronic-idea for moronic-idea by staroffice}. > > I was right. I'm not sure what more damning thing you can possibly > say about someone's software than that it's easier to write your own > than to use it . . . > You could say that it slavishly copied all the moronic ideas of some piece of Microsoft bloatware. That would be more damning...and actually that is essentially what you *did* say. -- +-------------------------------------------------------------+ | Charles and Francis Richmond | +-------------------------------------------------------------+ ###### Sender: lynn@LYNNPC Newsgroups: alt.folklore.computers Subject: Re: Features of old assemblers References: <7svujh$gua$1@flood.weeg.uiowa.edu> Reply-To: Anne & Lynn Wheeler From: Anne & Lynn Wheeler Message-ID: Organization: Wheeler&Wheeler Lines: 8 User-Agent: Gnus/5.070095 (Pterodactyl Gnus v0.95) Emacs/20.4 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Sat, 02 Oct 1999 20:51:34 GMT NNTP-Posting-Host: 209.63.28.138 X-Complaints-To: support@adcomsys.net X-Trace: news-west.eli.net 938897494 209.63.28.138 (Sat, 02 Oct 1999 14:51:34 MDT) NNTP-Posting-Date: Sat, 02 Oct 1999 14:51:34 MDT Path: chonsp.franklin.ch!pfaff.ethz.ch!news-zh.switch.ch!newsfeed-zh.ip-plus.net!news.ip-plus.net!news.datacomm.ch!newscore.gigabell.net!newsfeeds.belnet.be!news.belnet.be!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.cwix.com!nuq-peer.news.verio.net!news.verio.net!easynews!news-west.eli.net!not-for-mail note that bit.listserv.ibm-main has been recently been running an assembler 101 thread. -- -- Anne & Lynn Wheeler | lynn@adcomsys.net, lynn@garlic.com http://www.garlic.com/~lynn/ http://www.adcomsys.net/lynn/ ###### From: john@polo.demon.co.uk (John Winters) Newsgroups: alt.folklore.computers Subject: Re: Features of old assemblers Date: 3 Oct 1999 19:14:29 +0100 Organization: The Linux Emporium Message-ID: <7t86e5$n2a$1@polo.demon.co.uk> References: <37F1F89D.7BE1C7C6@trailing-edge.com> <1593t7.1ft9.ln@predator> NNTP-Posting-Host: unseen.linuxemporium.co.uk X-NNTP-Posting-Host: unseen.linuxemporium.co.uk:194.70.1.33 X-Trace: news.demon.co.uk 938974674 nnrp-06:19901 NO-IDENT unseen.linuxemporium.co.uk:194.70.1.33 X-Complaints-To: abuse@demon.net Lines: 25 Path: chonsp.franklin.ch!pfaff.ethz.ch!news-zh.switch.ch!news-ge.switch.ch!news.maxwell.syr.edu!howland.erols.net!europa.netcrusader.net!194.159.255.21!dispose.news.demon.net!demon!news.demon.co.uk!demon!unseen.linuxemporium.co.uk!polo.demon.co.uk!not-for-mail In article <1593t7.1ft9.ln@predator>, Mike Meredith at home wrote: >Hi > >In article <37F1F89D.7BE1C7C6@trailing-edge.com>, > Tim Shoppa writes: >> The problem with the "standard" breed of assembler for the past >> twenty years is that it's based on the Unix "as" assembler and >> (optionally) the Unix "cpp" for macro expansion. While "as" >> and "cpp" are marginally useful for the world where they were > >Of course you aren't supposed to write assembler programs under >Unix, which could be why the standard tools are so bad. I can >remember an assembler on the BBC that was better. System ADE from System Software in Sheffield. A remarkable assembler development environment for such a small machine. (Still got a copy in a box somewhere.) John -- John Winters. Wallingford, Oxon, England. The Linux Emporium - a source for Linux CDs in the UK See http://www.linuxemporium.co.uk/ ###### From: hawk@hawkins.cba.uni.edu (Richard E. Hawkins) Newsgroups: alt.folklore.computers Subject: Re: Features of old assemblers Date: 4 Oct 1999 13:26:36 -0500 Organization: House of Hawkins Lines: 27 Message-ID: <7targs$5s1$1@hawkins.cba.uni.edu> References: <7t57ml$of3$1@hawkins.cba.uni.edu> <37F62D6F.22BCA722@plano.net> NNTP-Posting-Host: hawkins.cba.uni.edu Path: chonsp.franklin.ch!pfaff.ethz.ch!news-zh.switch.ch!news-ge.switch.ch!news-fra1.dfn.de!news0.de.colt.net!colt.net!newsfeed.icl.net!logbridge.uoregon.edu!news.physics.uiowa.edu!news.uni.edu!not-for-mail In article <37F62D6F.22BCA722@plano.net>, Charles Richmond wrote: >Richard E. Hawkins wrote: >> I was right. I'm not sure what more damning thing you can possibly >> say about someone's software than that it's easier to write your own >> than to use it . . . >You could say that it slavishly copied all the moronic ideas of some >piece of Microsoft bloatware. That would be more damning...and actually >that is essentially what you *did* say. Yes, I suppose you're right :) Now that you mention it, I think I first saw the moronic new form in staroffice, and reacted with "even microsoft couldn't be that dumb--could they?" The first year, it actually took three computers to process the data-- a linux box on my desk handling the data base of names, a mac that could run an older version of word with a comprehensible mail-merge, and a windows machine to print the mac word file . . . -- Prof. Richard E. Hawkins, Esq. hawk@hawkins.cba.uni.edu (319) 266-7114 http://eyry.econ.iastate.edu/hawk These opinions will not be those of UNI until it pays my retainer. ###### From: jmfbahciv@aol.com Newsgroups: alt.folklore.computers Subject: Re: Features of old assemblers Date: Tue, 05 Oct 99 09:24:18 GMT Organization: UltraNet Communications, Inc. Lines: 29 Message-ID: <7tcno9$br2$5@autumn.news.rcn.net> References: <7t57ml$of3$1@hawkins.cba.uni.edu> <37F62D6F.22BCA722@plano.net> <7targs$5s1$1@hawkins.cba.uni.edu> X-Trace: gnkCZe8CGRasEFpCb8Mdm0iKCoM/20zcqfKllv0Nx3E= X-Complaints-To: abuse@rcn.com NNTP-Posting-Date: 5 Oct 1999 11:34:33 GMT X-Newsreader: News Xpress Version 1.0 Beta #4 Path: chonsp.franklin.ch!pfaff.ethz.ch!news-zh.switch.ch!newsfeed-zh.ip-plus.net!news.ip-plus.net!nyc-news-feed1.bbnplanet.com!washdc3-snh1.gtei.net!cpk-news-hub1.bbnplanet.com!news.gtei.net!feed1.news.rcn.net!rcn!d15 In article <7targs$5s1$1@hawkins.cba.uni.edu>, hawk@hawkins.cba.uni.edu (Richard E. Hawkins) wrote: >In article <37F62D6F.22BCA722@plano.net>, >Charles Richmond wrote: >>Richard E. Hawkins wrote: > >>> I was right. I'm not sure what more damning thing you can possibly >>> say about someone's software than that it's easier to write your own >>> than to use it . . . > >>You could say that it slavishly copied all the moronic ideas of some >>piece of Microsoft bloatware. That would be more damning...and actually >>that is essentially what you *did* say. > >Yes, I suppose you're right :) Now that you mention it, I think I first >saw the moronic new form in staroffice, and reacted with "even microsoft >couldn't be that dumb--could they?" > >The first year, it actually took three computers to process the data-- >a linux box on my desk handling the data base of names, a mac that could >run an older version of word with a comprehensible mail-merge, and >a windows machine to print the mac word file . . . > > Now that's hacking :-)....but terribly sad. /BAH Subtract a hundred and four for e-mail. ###### Newsgroups: alt.folklore.computers From: ehrice@his.com (Edward Rice) Subject: Re: Features of old assemblers Message-ID: Organization: NDS Date: Wed, 13 Oct 1999 02:23:31 -0400 References: NNTP-Posting-Host: pm9-199.his.com Lines: 46 X-Authenticated-User: ehrice Path: chonsp.franklin.ch!pfaff.ethz.ch!news-zh.switch.ch!news-ge.switch.ch!newsfeeds.belnet.be!news.belnet.be!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!nntp.abs.net!outfeed1.news.cais.net!news4.his.com!user In article , James Hague wrote: > A number of times in the 1990s I've seen comments along the lines of > "young 'uns using today's assemblers don't realize how poor those tools > are compared to the assemblers of the 1960s." Why is this? What kinds of > things could a top-of-the-line 60s assembler do that don't exist in what's > been the "standard" breed of assembler for the last twenty years? (apologies for late posting) CDC provided users of their 3000-series machines (and I think the 6000-series as well) with an assembler named "META". It was a characteristic of META that your first pseudo-op was to include the machine definition for the computer you were then running on. This definition told META the word size, byte size, possibly some register sizes and counts, and then continued with a definition of the machine instructions for that computer. Lacking those instructions, you could simply describe some other machine and have META spew out relocatable object for an entirely different computer. Bell Labs took IBM's FORTRAN Assembly Program (FAP, the assembler for the pre-IBSYS FORTRAN Monitor System, or FMS) and added to it, staying within the bounds of the 32K-words IBM 7094. Once it had been augmented, it was pretty much a full programming language (see also Doug Jones's comments about implementing an assembler-time stack with macros). At Johns Hopkins University, Dr. William Huggins of the E.E. department established ways to define massively nested macros to generate "code" that could be passed along to a Stromberg-Carlson 4020 film recorder. Then he had his students use the graphics primitives he'd defined to create computer-generated movies illustrating a variety of Double-E principles which he needed to show his students, and the films were used as educational tools for some time. The standard CDC assembler, something called "COMPASS" (Compatible Assembler), had a version on pretty much every CDC machine. COMPASS had a relaxed syntax that allowed you to code in what looked like blank-delimited "English" text. It wasn't any more complex than the instructions that ADVENT understood (MOVE ALPHA TO XR1. LOAD AREG FROM BETA PLUS INDEX3.), but with enough effort it could be done. (The machine language was simple enough that this kind of assist wasn't broadly required, but the ability to do it was cool.)