Coder Social home page Coder Social logo

romanab / linux-vlm Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jjachemich/linux-vlm

0.0 0.0 0.0 1.35 MB

virtual lisp machine on linux

License: Other

Shell 0.89% C 34.53% Objective-C 0.14% Common Lisp 34.15% Assembly 16.80% Makefile 2.36% NewLisp 0.01% PostScript 10.69% M4 0.44%

linux-vlm's Introduction

vlm for linux on x86_64

if you don't know what it is, you probably don't want it...

based on the admirable work of Brad Parker who changed the alpha assembler
code generator to produce c-code runnable on an x86_64 platform

this version uses a TUNTAP tap device for networking, that way
it doesn't need root privileges to run if you define a tap
interface beforehand. I decided to use a tap (as opposed to a tun)
interface because access to the complete ethernet frame is possible
with a tap interface - making my life easier since I'm currently
writing a chaosnet network module for Linux and would need access to
the complete ethernet frame therefore. Also it is possible to put tap
devices on a bridge with different mac addresses to be able to run
multiple vlm instances communicating to each other via chaosnet.

this version has fixes for:
     - X11 with xcb lib (runs with or without xcb)
     since clx directly accesses the bar-bones X11-protocol, xcb
     gets confused when you try to XCloseDisplay/XSynch because clx tries
     to keep track of the X11 calls internally which it is unable to
     do with a mixture of XLIB calls and direct access to the X11-protocol.
     This in turn keeps the vlm from cleanly closing a display, which it
     uses when terminating and/or saving a LISP world.
     So, if we detect xcb being used, we use a workaround for closing
     X displays...

     - keyboard mapping for the cold-load/debugger window
     I deemed it unsatisfactory to not being able to use the CTRL-, META-,
     SUPER-, and HYPER- keys in the cold-load/debugger window, so I did setup
     a mapping for those keys like it is done in the GENERA system itself. You
     may use the same keys now in the cold-load/debugger window.

     - rational division (/ 3) yields 1/3 instead of 0
     doesn't work in Brads version, because rational division ought to
     produce a trap if there is a non-zero remainder from a division. I've
     decide to produce asm code for rational division by generating a new
     pseudo alpha instruction (x64ratquo) and generating asm code from that.
     see alpha-assembler/imacmath.lisp and stub/process.lisp

     - double float exceptions (/ 0.0d0) results in a valid trap now
     has not been implemented in the alpha assembly version (forgotten
     perhaps).
     Changed that in the generation of alpha assembly code (tested on an alpha
     as well). see alpha-assembler/imactrap.lisp.

there are extensions for:
      - blocksize settable for attach-disk-channel (to be able to use fep-file
      images with non-2048 word blocks, like images derived from ancient
      ESDI disks.

      - a unix crypt routine
      links to unix crypt to enable use of modern crypt algorithms.

      - unix cwd and unix home dir to be found in embedded communication area

      You won't be able to use these extensions if you do not patch and
      recompile respective the LISP definitions as well.

to install follow the instructions given in the file INSTALL.

./configure --help will give you some configuration options

linux-vlm's People

Contributors

jjachemich avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.