Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

The Analogic APL Machine

119 views
Skip to first unread message

James L. Ryan

unread,
Jun 30, 1996, 3:00:00 AM6/30/96
to

A few words about the Analogic APL Machine

The APL Machine was actually conceived at a New Years party where I was
introduced by Sandy Friedman who I worked with at a small Boston based
company called Planning Economics to a John Dobbs who was at that time
with Analogic and who was interested in making the array processors that
Analogic manufactured easy to program. The array processors were
typically attached to a DEC VAX and were programmed in Fortran using a
large library of subrouines which loaded and then executed microcode
into the Analogic array processor. We introduced John to APL and
suggested that it would be a much easier vehicle for programming the
Analogic array processors. The result of this New Years gathering was
the birth of the APL Machine (named in respect of the paper written by
Phil Abrams) project.

In addition to Sandy and myself, Ron Murray, Gordon Lassar, Reed Shilts.
Mike Duvos, Mike Berry, and John Delo were brought into the project. The
APL Machine evolved as an Analogic AP-500 array processor, in which the
APL primitives existed as microcode, driven by a Motorola 68000 based
computing system which ran both the interpreter and managed the I/0. The
design of the APL was somewhat unusual in that the disk contained the
universe of all APL objects and a workspace itself was merely a
directory of which of those objects were relevant to that workspace.
Appropriate activity counts were maintained for all objects so that the
appearance to the user was that of separate workspaces. The "peripheral
processor" as the 68000 component was called contained a routine which
constantly monitored the disk, performing on-the-fly optimization as the
software required that all APL objects on disk be in contiguous storage.
One of our favorite demonstrations was to pull the power plug while the
machine was running so that we could show how robust and stable the
optimizer was. The user's interface was via a PC which ran what we
called "the APL workstation." This software understood the nature of APL
objects and included function and data editors. Although the design
intent was for The APL Machine to be a multi-user station the software
development never evolved to that stage. One of the byproducts of the
project was the development of a multi-window interface to the IBM PC
which allowed concurrent varying sized windows to dynamically display
the current screens of up to 10 tasks. And this was on a PC before hard
disks were available!


--
James L. Ryan
P.O. Box 185, Woodstown, New Jersey 08098
+1 609-451-9439

Mike Duvos

unread,
Jul 1, 1996, 3:00:00 AM7/1/96
to

"James L. Ryan" <bosw...@waterw.com> writes:

> A few words about the Analogic APL Machine

[snip]

> One of the byproducts of the project was the development of
> a multi-window interface to the IBM PC which allowed
> concurrent varying sized windows to dynamically display the
> current screens of up to 10 tasks. And this was on a PC
> before hard disks were available!

Quite a few of the original design concepts from the APL Machine
project seem to have survived the test of time. We had "Windows"
on the first IBM PCs before well before DOS or hard drives became
available.

The APL Machine run-time model, with nested contexts containing
script and variables being instantated by multiple threads of
execution, also anticipated quite well the object-oriented
notions we see today in languages like Java. Although some of
this functionality was not implemented in user-visible form at
the time the project terminated, the underlying memory management
design, with its single monolithic universe of objects spanning
all workspaces in a manner translucent to the execution
mechanism, was definitely designed with such a scheme in mind.

Of course, the APL machine was a one-of-a-kind project. Binding
a system to exotic hardware today would be risky given the short
doubling time for performance in the microprocessor market. Even
the Symbolics and NeXT folks eventually had to bite the bullet
and port their systems to more mundane platforms, and the market
niche for a system like the APL Machine today would be
vanishingly narrow.

Perhaps someone someday will create a super platform-independent
APL combining the notions of the APL Machine execution and
virtual memory model together with nested arrays, the APL2
primitive and operator extensions, and other useful things, like
networking support. Such a system would do a great deal to
simplify the programming of supercomputers and scalable
architectures, much as the original APL Machine simplified the
programming of a rather obtuse array processor. The IBM APL2
product, with the added 3090 vector processor support, is a good
example of this kind of thinking in action, and permits
supercomputer power to be applied to problems with a very fast
development curve.

By the way, as an official APL Guru, what do you think of Ken
Iverson's latest invention, "J"?

--
Mike Duvos $ PGP 2.6 Public Key available $
m...@netcom.com $ via Finger. $


Erik T. Mueller

unread,
Jul 1, 1996, 3:00:00 AM7/1/96
to

> A few words about the Analogic APL Machine
> ... And this was on a PC before hard disks were available!

Going back to 1977, I wrote what might be the world's shortest
(vectors only) APL interpreter for the Intel 8080 microprocessor.
The original version used only 5376 bytes. Here it is (sorry
to post object code, but I can't resist):

*
* EMPL 1.0
* Copyright 1977 by Erik T. Mueller
* Intel Hex Format
*
:1000000031ff5fc33c00c5d2cd0016f680c3e70cbc
:10001000c3130d85c3100dc9cd940a2bc3f203cbb6
:10002000fec13fd0fedbc9a07efea0c02bc32800ce
:100030003e8dd7c9cdd5c5ccc35e13d201d100c585
:1000400001ffffc521022a221313221513221713c1
:10005000210000221913221b132a1d1323221d1312
:10006000cdda0c210112cd2d1121ffffcdf21300ad
:10007000cdc711cd840d214512cdc40cfea6ca8476
:1000800000c3920023cdc40ce7214512d29200c3d5
:10009000360e222113cdc40cfea9ca6202cdf9137b
:1000a0007efea5ca8701fe88ca42010000c39014e3
:1000b0000000e7d2b801cdcc0ccdc40cfe89cab487
:1000c00001feba23ca92002b2bfe8dcadc00c3b8f6
:1000d0000101d100c501ffffc5c36900cdce0a22d1
:1000e0002313cd010cfe08000000c2b8012a1f1323
:1000f0007cfeffc2fc007dfeffcad3112a21130043
:10010000cd9f0a5e23567bfeffc212017afeffca14
:10011000d311d52323222113e52a1b13e52a191312
:10012000e5212c01e521ffffe5c3d311e1221913dd
:10013000e1221b13e1222113e1221f132a2113c301
:100140009500df2a17137eb7c25401237eb7cac1b8
:1001500003c3550123234e23462a19137cb7c266d5
:10016000017db7ca69002378be2bdae403c27b01a4
:1001700079bedae403c27b01c3550223237e856f77
:100180003e008c67c37c14df214512eb2a17134e07
:100190002346d5115800cd260bd4df0dd123cdfb3e
:1001a0000bcaab01cdc5140bc39d013e8d12214579
:1001b00012c3cc14dfc3c1032a2113cdc40cfea289
:1001c000cae701324312dfcd01157efebbcad90159
:1001d000fe8dca091523c3ca01237efe8dcac10341
:1001e000c3bb01f7c3c103237efea52bc361152347
:1001f0007efe8dcaca01fea2caca01febbcaca01de
:10020000d7c3ef01e52a17134e2346cdfb0bc213cc
:1002100002e1c9235e23560000003a4312fea4cc3b
:100220002902c47a0d0bc30b027bf680d7af00c93d
:10023000222313cd010c2a2513221b136069fe080b
:10024000ca5102fe0bca4b02cdbd0bcdbd0bcdbdbd
:100250000b002219135e235623eb221f13eb23c33b
:10026000920023222713cdc40cfed1caac1523cd96
:10027000c40cfeccca0000fececa9a02fec1cacc93
:1002800002fec9caed02fed5cadc02fed2ca5e0376
:10029000fec3cad602fed4ca69002a1313cd9d1329
:1002a00000cdc50bcac802cd2d11237efe04cabce9
:1002b00002235e2356193ebbd7c3a10223235e232c
:1002c0005623eb2919c3b602f7c3e7022a1713cd49
:1002d000a31300c3a102cdda0cc3e70231ff5f0113
:1002e000d100c501ffffc52a2713c3c1032a1b1371
:1002f0007cb7c2fa027db7cadc07cd2d112a1f13c5
:10030000545dcddd0c3ea0d73eaad7f721000039c1
:10031000225913d17bfeffc213037bfeffc21303de
:10032000d17bfe2cca4403fe18ca3b03fed1c21384
:1003300003007afe00c4df0dc358137afe06ca4ad2
:1003400003cddf0d7afe01c4df0dc1e1c1d1424b07
:100350002243132100003900c3b013c31303cdccd3
:100360000ccdc40c222313cd010cb7f27503cd5f65
:100370000cb7fcdf0dc31315c3e70223222713cdef
:10038000c40cfec2ca8f03fec9caa103cddf0dcdc6
:10039000af032147137e23feffcae7020fd7c395a1
:1003a00003cdaf032a1d13ebcd430df7c3e702cdf9
:1003b000cc0ccdc40cfe85c28c03cd2914c28c0399
:1003c000c92a2113cd9f0a7efeffc25502237efe5d
:1003d000ff2bc255022a1f137cfeffc2e4037dfee1
:1003e000ffca6900d17afeffc2e4037bfeffc2e4cc
:1003f00003c9cdab0bcdd70a010000c50101000038
:10040000c501ab00c5c179fe89ca260ac52beffe1e
:10041000a7ca3a04fea4ca4104fec0ca5804fea9f1
:10042000ca720400000000000000000000e7dab714
:1004300004cdd30cda7b04cddf0dcda70a2bc3bdd1
:10044000042b222713cd840d214512cd9f0a2bcddd
:10045000a70a2a2713c3bd043ec0d73ebad700005f
:1004600000002be5cd840d214512dfe1cd410bc30a
:10047000bd04cdf203cd410bc3bd04010000cd96f8
:1004800004d29104cd800c2bd503cd96042bc37ed2
:1004900004c523c3bd04efcdd30c2bd07ecdd30c2c
:1004a0002bda9c04fead373fc2b3047ecdd30cd211
:1004b000b4043f23233fc9cdce0acde50aeb2a176a
:1004c00013ebcd6c0bc179322b1378322c13eb224a
:1004d0002d13ebcd6c0bc3f914ef7ecd440ac5fe92
:1004e00001caf304fe02ca0504c1eb2a1713ebcdbf
:1004f0006c0bc9c179322b1378322c13eb2a1713ea
:10050000ebcd6c0bc34506e52a2b137cb7c2e30584
:100510007de12229132a1713eb2a2d13feaccabe44
:1005200006fedbcaf6064eaf3210131a323113b98b
:10053000c28f052313461a323213b82b1bc28f0504
:10054000231300cdd505cdfb0bca8505c5e51a479c
:10055000d51bcdfc115ecdf907223313d1e1c12ba0
:100560002b1b1b0b2235132a3313e52a35133a10a4
:1005700013fe01c27b052323c34605fe02c24605c6
:100580001313c346052a3113e52a2913c3d9047e60
:10059000fe01c2b705237eb7c22e143e01321013ee
:1005a00023231a4f131a47e5cdd505e179323113cc
:1005b00078323213c346051afe01c4df0d131ab791
:1005c000c2ba05000000003e0232101313134e237e
:1005d0004600c33214c5e5606929e519545de1c1df
:1005e00009c1c9000000cdcb0bebcd4914cda20b46
:1005f0002a1f13e52a2113e52a1b13e52a1913e5ff
:10060000211806e521ffffe52a2b13221b13cdbd80
:100610000b7e232323c33e02e1221913e1221b1385
:10062000e1222113e1221f132a1713ebe17d12139c
:10063000feffc22c06e12237132a1713cde50a2a42
:100640003713c37215e52a2b137cb7c28c06e1cd94
:1006500064132a17134e2346fedccaa106fedeca27
:100660009206fea5ca8d07eb606922311329194253
:100670004bcdc50bca8206562b5e2bcd3607d5c394
:1006800071062a3113e52a2913c3d904cdcb0bc334
:1006900080142a1713360123360023712370c3f008
:1006a00006234e2346e56069223113e1cdfb0bcad8
:1006b000b706c50bc376142a3113e5c386061a4f55
:1006c000131a475e235623ebe509e52a1713444d19
:1006d000e17d02037c022a2d13444de12909cdc599
:1006e0000bcaf006001a0203131a020313c3de0634
:1006f000cd410bc386064e2346e560692231136067
:100700006929d1d519444dc31e1400cdc50bca2c7f
:10071000070a670b0a6f0b29197e323b13237e32bf
:100720003c132a3b13e52a3913c30b072a3113e57f
:100730002a2913c3d9043a2b13fedfc24207cdb1d5
:100740000cc9fea1c24e077ab7f0cdb10cc9fea606
:10075000c265077ab7c25d077bb7ca61071100009f
:10076000c9110100c9febfc4df0de5d52a3d131133
:10077000d611cdd911da7b072100007e235e23221a
:100780003d13e1ebc5cdeb08c123ebe1c9eb2a2911
:1007900013ef2b222913322b1360692919ebcdfba0
:1007a0000bc2ab07210000e5c386061a671b1a1ba4
:1007b0006f0bcdfb0bc2bf07e5210100c3a707c527
:1007c0001a471b1a1b4fd5545dc5d5c1d1cdf907aa
:1007d000d1c10bcdfb0bc2bf07c3b8072af712eb81
:1007e0002a5913cdb10c19eb0000000000cd430dc8
:1007f000211412cd2d11c3e7023a2b13feabc20513
:1008000008606919c9feadc21008cdb10cc301085a
:10081000feaac26308c3b614cd4b087ab800da5ded
:1008200008c22a087bb900da5d0878b7c2340879b3
:10083000b7ca3908190bc32a08f1f0ebcdb10ceb9c
:10084000c9d55059cdb10c424bd1c9b7fc41087a3a
:10085000b7fcb10c210000c9c5d5c1d1c9cd58081c
:10086000c32a08feafc27008cdbd146069c33a0840
:10087000feaec28008cd5808cdbd140000c33a08b2
:1008800060697caac37a15ebcdd911f52100003a35
:100890002b13febcc29b08f1d023c9fe99c2a60847
:1008a000f123d8c82bc9febec2b008f1d8c823c9ed
:1008b000fe8ec2b908f1d823c9febdc2c208f1c07c
:1008c00023c9fea3c2cb08f1c823c9fea7c2d7081b
:1008d000f1626bd06069c9fea2c4df0df1626bd812
:1008e0006069c9780000cd4b086069c3a51400cdcc
:1008f000fb08417de167cdfb0800c90eff0ccd066a
:1009000009d2fd0819c97d936f7c9a67c9c3dc14ad
:10091000cd410bcd0402f72bc3f2142a1713444d1b
:100920002a2513cdbd0b7efe04c24c0923235e2372
:100930005623eb2919eb2a2513cd260bca46091a93
:10094000771323c339090000221713c9235e2356e6
:1009500019c33509e322f912e3d1222313cd5f0c29
:10096000b7fa6c09cd1b0900000000002a1713eb31
:100970002a2313cd3d103e041213af1213eb22179e
:1009800013ebcd6c0be5e32af912e3c9cdce0acd0a
:100990005409cd410b2af7122217132a23132bc314
:1009a000f214ebcd410bcd54092af7122217132a6a
:1009b0002313cdbd0bebc9cdf203efe7d4df0dcd93
:1009c000ce0a222313cd5f0c606922fb120a670b4b
:1009d0000a6f2231132a17135e2356c178bac4df77
:1009e0000d79bbc2de09eb2919ebcd2c0bcae5143e
:1009f000234e234622fd122a31137cb8dcdf0d7d05
:100a0000b9dafc092afb12d5eb6069c12919d17248
:100a10002b7350592afd12c3ea092aff12d511017e
:100a200000d5c30314c92bcdd514ef000000fea4dc
:100a3000ca0d09fec0ca0d09fea9cab709e7da8cba
:100a400009cddf0de7da750a11df111afeffca5c66
:100a50000abe13c24b0a4f06003e02c911f4111a16
:100a6000feffca710abe13c25f0a4f06003e012b89
:100a7000c93e042bc9cdce0ac33a14cd010cb7fc34
:100a8000df0d2a2513c3411400ca590afe0bca6d93
:100a90000acddf0d7e23fe8dc8febbc8c3940a7e3f
:100aa00023fe8dc29f0ac9e3222f13e3c101000078
:100ab00016002b7efea7cac60afe8dcac60ae67fae
:100ac0005f03d5c3b20ac5c5e32a2f13e3c97ee786
:100ad0002bdace0a2323c9db01fe03c0211c12cd71
:100ae0002d11c36900e3222f13e3c12223132b220c
:100af0002713cd5f0cfe80ccdf0d0a570b0a5f6217
:100b00006b220113032909ebcd260bca180b1a67b8
:100b10001b1a6fe51bc36c152a0113e52a2713e581
:100b2000e32a2f13e3c978bac079bbc97cbac07d68
:100b3000bbc9e3222f13e3c12227132a2d13c34d70
:100b40000be3222f13e3c12227132a17134e234648
:100b5000eb606929191b1b462b4e2bc5cd2c0bc2f4
:100b6000570b2a2713e5e32a2f13e3c9e3222f1398
:100b7000e3c1222713c1791213781260692919cdb4
:100b80002c0bca8f0bc1137912137812c37f0b136e
:100b9000eb22f712ebcdab0b2a2713e5e32a2f1339
:100ba000e3c9e52a171322f712e1c9e5d52af7129e
:100bb000ebcdb10ceb39ebcdce13d1e1c97efeff0d
:100bc00023c2bd0bc978bcc079bdc9e3224113e380
:100bd000d1cdbd0b16002323237e2314feffc2d9e3
:100be0000b06002b4ec515c2e30bcdbd0bebc36b43
:100bf00014cda209d5e32a4113e3c978b7c079b768
:100c0000c9d5e52a2313eb2a1513444d2a1313ebf8
:100c1000e56069222513e178bac2210c79bbca5a72
:100c20000c0afeffca4d0cbe0323ca210c0afeffac
:100c300003c22d0c0afe04ca710c03d50a5f030a15
:100c400057606919444dd12a2313c3100c7ee70362
:100c5000da340c0a030303e1d1c93e80c3570cd533
:100c6000e52a2313eb2a1313444d2a1713ebc31061
:100c70000c03030a6f030a67032909444dc3470c99
:100c8000c51100007e321113feadc28f0c237ee62b
:100c90000f424beb29290929eb835f3e008a57233a
:100ca0007ecdd30cda8f0c3a1113feadccb10cc152
:100cb000c97b2f5f7a2f5713c9030afe8dc2b90c67
:100cc00003c3ff137efea0c023c3c40c7ee7d02362
:100cd000c3cc0cfeb03fd0febac9c325163edbd74d
:100ce000cd430d3eddd7c9fe81c2ee0c3edffe8452
:100cf000c2f50c3eaffe87c2fc0c3edcfe8bc2038d
:100d00000d3edbfe8cc20a0d3eddf5d7f1f680c943
:100d1000ca1000fe88c21f0d3ebdd73ebad7c9fe1d
:100d200089c22b0d3ebad73ebdd7c9fe8ec2370d44
:100d30003ebed73ebdd7c9fe99c206163ebcd73ec1
:100d4000bdd7c9e5d5c5eb110a00d506007cb7f2c1
:100d50005a0d3eadd7ebcdb10cebcdeb0878b1ca57
:100d6000680de56069c35a0d5d7bfe0aca760dd138
:100d7000c6b0d7c3690dc1d1e1c93ea0d7cd430ddf
:100d80003ea0d7c921451236a0237dfef5c2870dae
:100d900021451200cffe98c2a30dcdda0ccdc711ac
:100da000c3840dfe82c2b50d2b7dfe45dcdf0d3efa
:100db000ffd7c3940dfe86c2c90d237dfef0d4df9c
:100dc0000d3e20d70000c3940d7723fe8dcad90da8
:100dd0007dfef0d4df0dc3940d36ff2336ffc9e14d
:100de0007d00006f220313f72a1f137cfeffc2fc55
:100df0000d7dfeffca110efefeca2e0e2a1b13cd5c
:100e00002d11cda913002a21137ed723fe8dc209ef
:100e10000eaf321213212512cd2d112a0313ebcd63
:100e2000430df73a1213fe02cac80ec369003e0210
:100e3000321213c3150ecd5a15cd900e220513cdc7
:100e4000870e220713cd870e220913cd870e220ba2
:100e500013cdcc0ccdc40cfe8dc2840e2e001145da
:100e6000121afe8dca700ee713d2610e2cc3610eea
:100e70007d320d1378fe01ca9f0efe03cac10ffe1c
:100e800004cada0fcddf0dcdcc0cfe8dca9b0e232c
:100e9000cdc40ce70000d4df0d04c9d1c35c0e2a19
:100ea0000513222313cd010ce52a2513221b13e180
:100eb000e688faab0fccdf0d6069cd7e1331ff5fa2
:100ec00001d100c501ffffc521feff221f13003e17
:100ed000bed7cd840d214512cdc40cfea6ca431148
:100ee000fec0cab610fea4ca8310c39d14cdd30c95
:100ef000d4df0dcd800ce52a1913237eba2bc20353
:100f00000f7ebbdaa00f222113e1f5cdc40cfe8dbc
:100f1000ca5d0ff1c2200f00d5e5cd670fe1d1000a
:100f20000e04e5d5237e0cfe8dc2240f79323f13cb
:100f30002a2113e52a1713545d060009c122f7126e
:100f4000cde913d1e17b02037a02033a3f13d603c2
:100f500002037e02fe8d23c2510fc3c80ef1c2c828
:100f60000ecd670fc3c80e002a1713eb2a211344b6
:100f70004d2323237efe8dc2730f237e027abcc2d3
:100f8000840f7bbd0323c27b0f0b60692217130004
:100f9000c91a7778bac29a0f79bb1b2bc2910fc9b5
:100fa000232323cd9f0a0000c3fa0e3a0d13c60671
:100fb000320d13cd52103e08cd4d10cd7310c3bd70
:100fc0000e2a0713222313cd010ce52a2513221b19
:100fd00013e1e680fa1b10cddf0d2a09132223133b
:100fe000cd010ce52a2513221b13e1e680faf30f4d
:100ff000cddf0d3a0d13c609320d13cd52103e0947
:10100000cd4d102a0513cd3d102a0713cd3d102ad2
:101010000b13cd3d10cd7310c3bd0e3a0d13c60892
:10102000320d13cd52103e0bcd4d102a0513cd3d80
:10103000102a0913cd3d10cd7310c3bd0e7ee7d22b
:101040004810121323c33d103eff1213c91213138d
:1010500013c92a1713eb2a1b13e5626b3a0d134fc2
:10106000060009221713c1cd910f50592a2313cd21
:101070003d10c93eff12626b221913131213eb22ab
:101080001313c923cdc40ccdd30cda9310110a006d
:10109000c39610cd800c2a1913444d626b0afeffd3
:1010a000c2ae10030afeff0bc2ae10c3c80e7d0213
:1010b000037c02c3b90cc3be152a1b13cdc7113e56
:1010c000a6d72205137efeff23c2c5107efe08cae6
:1010d000fa1047232323cd2d113e89d72378fe0b09
:1010e000f5e5cc3c11e1cd2d11f1cafd103ea0d7a4
:1010f000cd781323cd2d11c3fd10cd3611f72af76e
:10110000155e2356237bfeffc211117afeffca240f
:1011100011cddd0c3ea0d7237ed7fe8dc217110066
:1011200023c30111cdc7113e8dd7c3c80e7efeff6c
:10113000c8d723c32d112a0513c32d11cd36113e57
:10114000a0d7c92a1b13cdbd0bcd1214237efeffe1
:10115000c24c11237efeffc24c115059cdb10ccdb3
:101160006d1300000023eb2a17137abcc274117ba5
:10117000bdca9111ebe5cdbd0b7ee1fe04ca911114
:10118000237efeffc28011237efeffc28011c36555
:10119000112213132a19135e23562323cdbf11ca1c
:1011a000690022ff127ee7dab4117efe8d23c2aa07
:1011b00011c39711cdcc0cfebaca1a0ac3aa117a70
:1011c000feffc07bfeffc9c506053ea0d705c2cc09
:1011d00011c1c93e0800c336027cbac07dbbc9ab91
:1011e000adaaafa7a2aebc99be8ebda3acdb89fff2
:1011f00000000000dfa1a6bfdcdea5ff1a4f562bc2
:10120000c9c5cdd0cca0b1aeb08dc3ccc5c1d2a024
:10121000d7d38dffa0c6d2c5c58dff008dc2d2c564
:10122000c1cb8dff0000c5d2d2cfd2a0ff01d1002b
:10123000c5c350156900cd5f83fe8fca3612c90041
:10124000000000c28da0a0a0a0a0a0a0a0a0a0a06f
:10125000a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a08e
:10126000a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a07e
:10127000a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a06e
:10128000a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a05e
:10129000a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a04e
:1012a000a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a03e
:1012b000a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a02e
:1012c000a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a01e
:1012d000a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a00e
:1012e000a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0fe
:1012f000a0a0a0a0a00000022a9209000000000007
:101300000006003a0400000000000000000000bfda
:1013100001b600022a022a022a000000000500ff8e
:10132000ff45124512102046124412ab003020f245
:10133000040600010031200000000000003005001c
:1013400000000000000000ad635d6161958d9fb1fc
:10135000636f6f6f6f1bff0031ff1fc3dc0731ff2f
:101360005fc32d12237e2b222913c90100e5197dad
:1013700002037c02e1c90107e5cd3c11e1c9221954
:10138000132b2b2b7efe08c8232323fe0bca93139b
:10139000cdbd0bcdbd0bcdbd0b221913c9444d2abc
:1013a0001513c9444d2a1313c92a1f13ebc3dd0caf
:1013b00022c91331f5122a4313cd2d115059cddd19
:1013c0000c3ea0d73eded7f7310000c31303000068
:1013d000002100ff197cb7f031ff5f01d100c5018a
:1013e000ffffc5cda20bcddf0dcdab0b221713c375
:1013f000910f221f13cda20bc9cdab0bc3d70a1976
:10140000c39d10cd54092af7122217132aff12c3c5
:10141000aa1123444d2a19132bc9ffffffff2a17d6
:1014200013ebe1223913c30b07237efe9ac92bc3aa
:10143000b705d5cdd505d1c3ac05e5222313c37bb4
:101440000a444de1fe09c3890ae3226914e3f1cda0
:1014500054092af71222171300002a2313cdbd0bbb
:10146000ebd5e32a6914e3c9000000ebcd320beba6
:101470002a1713c3f10bcdab0bc3ac0623c3660114
:101480002a1713ebcd6c0bc3ed05cd04022323c942
:10149000feddca7b03fe8dcac103c3b000fe8dca48
:1014a000c80ec3ed0ee56c26007ab7c2ef087bb715
:1014b000c2ef08cddf0d78aaf578c3180878aaf531
:1014c000cde308f1c97ef680121323c9133eff1243
:1014d0001312c39500e52a1713ebe1c9324312cd6d
:1014e0006c0bc31009219b09222f132afb122bc35b
:1014f0004d0baf327613c3d9043e01327613c307c6
:10150000053a7613b7c48a14c93a7613b7c43000c3
:10151000c3c103327713cd1b093a7713fe04cae720
:10152000022a1713eb2a1513cd2c0b226b13ca4278
:1015300015cdbd0b7efe04ca4215234e234609c3ba
:1015400028152a6b13221313c3e702cdd911ebc957
:1015500001ffffc5cdda0cc38515cdab0b2306000b
:10156000c9cac3013e01327613c3ef01cdab0bc331
:10157000080b3e01327613c3d904f28808ebcdd9ab
:1015800011ebc38b08210000221913221b132145e4
:10159000122221133e8d77233eff77237721ffff11
:1015a000221f132a002a221713c3b5152a17132244
:1015b000002ac328202a4500221513c32115cdda9d
:1015c0000c23cdc40ccdd30cdad115110000c3d43b
:1015d00015cd800c2a191322f7154e23462379fec8
:1015e000ffc2ea1578feffcab910cd260bd2b9109a
:1015f00023cd9f0ac3d7152911ffffffffffffff70
:10160000cd1020f680c9f5c5e67ffe0dcc1d16fe77
:101610007fc216163e0847cd0d20c1f1c93e0acd46
:1016200006163e0dc93e40cd06163e0dc3061600f9
:1016300000000000000000000000000000000000aa
:1016400036403640fbfffa3f3640fbfffa3ffb7f58
:101650003640fbfffa3ffb7f36403640fbfffa3f48
:10166000f97f56455645685124510a169030ea2aaa
:10167000fe7fb058004848484848484848000000a5
:101680000000000000000100b40101705024518ce2
:1016900055ae58c9611000000041004259450d2067
:1016a000445341534d0d00000000000000000000b5
*
* Customization for 8080 simulator
*
* I/O Routines
:0a160000db00c9d300c9d301c9768d
* WS start
:0215b000001722
:0215a40000172e
* WS start + 2
:020045000217a0
* WS end: flaw prohibits > 32K
:02000100ff7f7f
:0202dd00ff7fa1
:020ebe00ff7fb4
:02135f00ff7f0e
:0213d900ffff14
* input routine address
:020009000016df
* control-c check port
:010ad800011c
* output routine address
:020d3a0003169e
* clear screen routine address
:020cdb000616fb
* backspace character
:010db000083a
* forward space character
:010dc2002010
* operating system address
:0215b300091617
*
* Terminator
*
:00000001ff

That's all! Here's a sample session:

EMPL 1.0
CLEAR WS
...
\10
1 2 3 4 5 6 7 8 9 10
+%\10
55
)FNS
PAS;RHO;PRIME;COMP;SORT;REV;INIT;CHEKND;MND;MRD;RREV;DRHO;MRHO;PR;NPR;CPR;MO
DYAD;MOPR;DOPR;OUTPROD;
PAS 5
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
&PAS
>@
&R:=PAS N
[10] R:=\0
[20] P:=1
[30] PRINT: P
[40] =:PRINT*N>=^P:=(0,P)+P,0
>&

For more information, see:

Erik T. Mueller, "Here, Now: A Micro APL for 8080's",
Dr. Dobb's Journal, Vol. 2, No. 4, April 1977.

or

http://www.panix.com/~erik/Empl/Empl.html
(where I've put up a list of functions and an 8080 simulator in C
allowing you to run this on modern systems---why you would want
to, I don't know).

-Erik

Skip Cave

unread,
Jul 3, 1996, 3:00:00 AM7/3/96
to sk...@intervoice.com

Erik T. Mueller wrote:
>
> Going back to 1977, I wrote what might be the world's shortest
> (vectors only) APL interpreter for the Intel 8080 microprocessor.
> The original version used only 5376 bytes. Here it is (sorry
> to post object code, but I can't resist):
>

I still have a cassette tape of something called "APL80" that ran on my Radio Shack TRS80 Mod 1 "Trash 80". I
think that was your interpreter, wasn't it? It took several minutes to load from the audio cassette player, but
it was a real thrill to be able to run APL on my own "personal computer". Before that, I used UCC's "APLUM" and
then STSC for my company, but the timesharing charges were more than I wanted to pay for personal use. APL80
gave me my first taste of what I could do with APL when I wasn't always worrying about the time charges.

-Skip

James L. Ryan

unread,
Jul 3, 1996, 3:00:00 AM7/3/96
to

In my earlier history of the Analogic APL Machine I wrote:

> In addition to Sandy and myself, Ron Murray, Gordon Lassar, Reed Shilts.
> Mike Duvos, Mike Berry, and John Delo were brought into the project.

With apologies I should have also included the names of Dick Suitor and Dave Grantz.

James L. Ryan

unread,
Jul 4, 1996, 3:00:00 AM7/4/96
to

And with even further apologies I left out Carl Zimmerman.

Mike Duvos

unread,
Jul 5, 1996, 3:00:00 AM7/5/96
to

"James L. Ryan" <bosw...@waterw.com> writes:

> James L. Ryan wrote:

>> In my earlier history of the Analogic APL Machine I wrote:

>>> In addition to Sandy and myself, Ron Murray, Gordon Lassar,
>>> Reed Shilts. Mike Duvos, Mike Berry, and John Delo were
>>> brought into the project.

>> With apologies I should have also included the names of
>> Dick Suitor and Dave Grantz.

> And with even further apologies I left out Carl Zimmerman.

And Steve Atlas and Harvey Bingham. :)

0 new messages