decoration decoration
Stories

GROKLAW
When you want to know more...
decoration
For layout only
Home
Archives
Site Map
Search
About Groklaw
Awards
Legal Research
Timelines
ApplevSamsung
ApplevSamsung p.2
ArchiveExplorer
Autozone
Bilski
Cases
Cast: Lawyers
Comes v. MS
Contracts/Documents
Courts
DRM
Gordon v MS
GPL
Grokdoc
HTML How To
IPI v RH
IV v. Google
Legal Docs
Lodsys
MS Litigations
MSvB&N
News Picks
Novell v. MS
Novell-MS Deal
ODF/OOXML
OOXML Appeals
OraclevGoogle
Patents
ProjectMonterey
Psystar
Quote Database
Red Hat v SCO
Salus Book
SCEA v Hotz
SCO Appeals
SCO Bankruptcy
SCO Financials
SCO Overview
SCO v IBM
SCO v Novell
SCO:Soup2Nuts
SCOsource
Sean Daly
Software Patents
Switch to Linux
Transcripts
Unix Books

Gear

Groklaw Gear

Click here to send an email to the editor of this weblog.


You won't find me on Facebook


Donate

Donate Paypal


No Legal Advice

The information on Groklaw is not intended to constitute legal advice. While Mark is a lawyer and he has asked other lawyers and law students to contribute articles, all of these articles are offered to help educate, not to provide specific legal advice. They are not your lawyers.

Here's Groklaw's comments policy.


What's New

STORIES
No new stories

COMMENTS last 48 hrs
No new comments


Sponsors

Hosting:
hosted by ibiblio

On servers donated to ibiblio by AMD.

Webmaster
You are mistaken | 101 comments | Create New Account
Comments belong to whoever posts them. Please notify us of inappropriate comments.
You are mistaken
Authored by: bugstomper on Sunday, August 12 2012 @ 05:29 PM EDT
I still disagree. A language whose constructs and runtime provides multitasking capabilities still is not the same as an operating system. The first Wikipedia article you linked to, about Genera, does not say that LISP is the OS. Genera is an operating system that is written in LISP. One remarkable aspect of Genera is that it is written completely in LISP, right down to the device drivers and other pieces that in a conventional OS like the Linux kernel are written in assembler language. But just like GNU/Linux being mostly written in C does not make C an OS, Genera does not make LISP an OS. The Wikipedia article describes features of Genera which are not features of LISP itself.

The second article you linked to (which by the way is the same as your third link) starts out by contradicting you when it provides links to the Wikipedia article on LISP programming language and to the article on operating systems. Those articles define each in such a way that makes it clear that LISP is a programming language and not an OS. It then goes on to support your view with the single sentence, unsupported by a citation, that "Lisp was used as an operating system on some early machines. e.g. on the Lisp Machine and then at Symbolics with the Genera (operating system)". Yes that agrees with you. Yes I think that is an example of erroneous information in a Wikipedia article. It doesn't even make sense for the article to have an entry for Lisp which talks about Genera, and then further down in the same list a separate entry for Genera.

And more evidence that the Lisp Machine did not run LISP as its native machine instruction set. From an old Lisp Machine manual:

Nobody looks at machine language code by trying to interpret octal numbers by hand. Instead, there is a program called the Disassembler which converts the numeric representation of the instruction set into a more readable textual representation. It is called the Disassembler because it does the opposite of what an Assembler would do; however, there isn't actually any assembler that accepts this input format, since there is never any need to manually write assembly language for the Lisp Machine.

The simplest way to invoke the Disassembler is with the Lisp function disassemble. Here is a simple example. Suppose we type:

(defun foo (x)
    (assq 'key (get x 'propname)))

(compile 'foo)

(disassemble 'foo)

This defines the function foo, compiles it, and invokes the Disassembler to print out the textual representation of the result of the compilation.

Here is what it looks like:

22 MOVE D-PDL FEF|6       ;'KEY
23 MOVE D-PDL ARG|0       ;X
24 MOVE D-PDL FEF|7       ;'PROPNAME
25 (MISC) GET D-PDL
26 (MISC) ASSQ D-RETURN

The Disassembler is also used by the Error Handler and the Inspector.

When you see stuff like the above while using one of these programs, it is disassembled code, in the same format as the disassemble function uses. Inspecting a compiled code object shows the disassembled code.

Now, what does this mean? Before we get started, there is just a little bit of jargon to learn.

The acronym PDL stands for Push Down List, and means the same thing as Stack: a last-in first-out memory. The terms PDL and stack will be used interchangeably. The Lisp Machine's architecture is rather typical of "stack machines"; there is a stack that most instructions deal with, and it is used to hold values being computed, arguments, and local variables, as well as flow-of-control information. An important use of the stack is to pass arguments to instructions, though not all instructions take their arguments from the stack.

The acronym `FEF' stands for Function Entry Frame. A FEF is a compiled code object produced by the compiler.

The Lisp Machine had a stack oriented machine architecture, had its own machine language, and needed a operating system to make it useful. The OS, which eventually was Genera, just happened to be written in LISP, but LISP was not Genera.

[ Reply to This | Parent | # ]

Groklaw © Copyright 2003-2013 Pamela Jones.
All trademarks and copyrights on this page are owned by their respective owners.
Comments are owned by the individual posters.

PJ's articles are licensed under a Creative Commons License. ( Details )