Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
Niidae Wiki
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
Lisp machine
(section)
Page
Discussion
English
Read
Edit
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
View history
General
What links here
Related changes
Page information
Appearance
move to sidebar
hide
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Technical overview== Initially the Lisp machines were designed as personal workstations for software development in Lisp. They were used by one person and offered no multi-user mode. The machines provided a large, black and white, bitmap display, keyboard and mouse, network adapter, local hard disks, more than 1 MB RAM, serial interfaces, and a local bus for extension cards. Color graphics cards, tape drives, and laser printers were optional. The processor did not run Lisp directly, but was a [[stack machine]] with instructions optimized for compiled Lisp. The early Lisp machines used microcode to provide the instruction set. For several operations, type checking and dispatching was done in hardware at runtime. For example, only one addition operation could be used with various numeric types (integer, float, rational, and complex numbers). The result was a very compact compiled representation of Lisp code. The following example uses a function that counts the number of elements of a list for which a predicate returns <code>true</code>. <syntaxhighlight lang="lisp"> (defun example-count (predicate list) (let ((count 0)) (dolist (i list count) (when (funcall predicate i) (incf count))))) </syntaxhighlight> The disassembled machine code for above function (for the Ivory microprocessor from Symbolics): <syntaxhighlight lang="nasm"> Command: (disassemble (compile #'example-count)) 0 ENTRY: 2 REQUIRED, 0 OPTIONAL ;Creating PREDICATE and LIST 2 PUSH 0 ;Creating COUNT 3 PUSH FP|3 ;LIST 4 PUSH NIL ;Creating I 5 BRANCH 15 6 SET-TO-CDR-PUSH-CAR FP|5 7 SET-SP-TO-ADDRESS-SAVE-TOS SP|-1 10 START-CALL FP|2 ;PREDICATE 11 PUSH FP|6 ;I 12 FINISH-CALL-1-VALUE 13 BRANCH-FALSE 15 14 INCREMENT FP|4 ;COUNT 15 ENDP FP|5 16 BRANCH-FALSE 6 17 SET-SP-TO-ADDRESS SP|-2 20 RETURN-SINGLE-STACK </syntaxhighlight> The operating system used [[virtual memory]] to provide a large address space. Memory management was done with garbage collection. All code [[ single address space operating system | shared a single address space]]. All data objects were stored with a tag in memory, so that the type could be determined at runtime. Multiple execution threads were supported and termed ''processes''. All processes ran in the one address space. All operating system software was written in Lisp. Xerox used Interlisp. Symbolics, LMI, and TI used Lisp Machine Lisp (descendant of MacLisp). With the appearance of Common Lisp, Common Lisp was supported on the Lisp Machines and some system software was ported to Common Lisp or later written in Common Lisp. Some later Lisp machines (like the TI MicroExplorer, the Symbolics MacIvory or the Symbolics UX400/1200) were no longer complete workstations, but boards designed to be embedded in host computers: Apple [[Macintosh II]] and [[Sun-3]] or [[Sun-4]]. Some Lisp machines, such as the Symbolics XL1200, had extensive graphics abilities using special graphics boards. These machines were used in domains like medical image processing, 3D animation, and CAD.
Summary:
Please note that all contributions to Niidae Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Encyclopedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Search
Search
Editing
Lisp machine
(section)
Add topic