├── .github └── ISSUE_TEMPLATE │ ├── Bug_report.md │ └── Feature_request.md ├── AUTHORS ├── CODE_OF_CONDUCT.md ├── COPYING ├── ChangeLog ├── GNUmakefile.orig ├── INSTALL ├── Makefile.am ├── NEWS ├── OG2-patches ├── allow-multiple-ll-addresses.lisp ├── detect-keyboard-patch.lisp ├── emb-bufs.lisp ├── full-gc-patch.lisp ├── get-emb-host.lisp ├── host-ll-address.lisp ├── modifier-loop-patch.lisp ├── primary-network-address.lisp └── use-host-time.lisp ├── README ├── TAGS ├── TODO ├── acinclude.m4 ├── admin ├── Beta-II-priorities.text ├── Beta-test-customers.text ├── FCS-priorities.text ├── V1-project-plan.text ├── V2-priorities.text ├── bl11-release-notes.ps ├── bl12-release-notes.ps ├── digital-phone-numbers.text ├── issues.text ├── ivory-rev-5.text ├── mprotect-bug.c ├── optimizations.text ├── original-schedule.text ├── qar-procedures.txt ├── schedule.text ├── swapstat.c ├── verification.text └── vlm-installation.text ├── alpha-emulator ├── aistat.c ├── aistat.h ├── aistat.lisp ├── aistat.s ├── aistat.sid ├── alphamac.lisp ├── fcallmac.lisp ├── idispat.as ├── idispat.s ├── idouble.as ├── idouble.s ├── ifunarra.as ├── ifunarra.s ├── ifunbind.as ├── ifunbind.s ├── ifunbits.as ├── ifunbits.s ├── ifunblok.as ├── ifunblok.s ├── ifunbnum.as ├── ifunbnum.s ├── ifuncom1.as ├── ifuncom1.s ├── ifuncom2.as ├── ifuncom2.s ├── ifunfcal.as ├── ifunfcal.s ├── ifunfext.as ├── ifunfext.s ├── ifunfull.as ├── ifunfull.s ├── ifungene.as ├── ifungene.s ├── ifunhead.as ├── ifunhead.s ├── ifuninst.as ├── ifuninst.s ├── ifunjosh.as ├── ifunjosh.s ├── ifunlexi.as ├── ifunlexi.s ├── ifunlist.as ├── ifunlist.s ├── ifunloop.as ├── ifunloop.s ├── ifunmath.as ├── ifunmath.s ├── ifunmove.as ├── ifunmove.s ├── ifunpred.as ├── ifunpred.s ├── ifunsubp.as ├── ifunsubp.s ├── ifuntran.as ├── ifuntran.s ├── ifuntrap.as ├── ifuntrap.s ├── ihalt.as ├── ihalt.s ├── imacarra.lisp ├── imacbind.lisp ├── imacbits.lisp ├── imacblok.lisp ├── imacfext.lisp ├── imacgene.lisp ├── imacialu.lisp ├── imacinst.lisp ├── imacjosh.lisp ├── imaclexi.lisp ├── imaclist.lisp ├── imacloop.lisp ├── imacmath.lisp ├── imacpred.lisp ├── imacsubp.lisp ├── imactrap.lisp ├── intrpmac.lisp ├── kludges.s ├── memoryem.lisp └── stacklis.lisp ├── assembler ├── alpha.lisp ├── alphadsdl.lisp ├── alphapckg.lisp ├── power-sct-support.lisp ├── power.lisp ├── powerdsdl.lisp ├── powerpckg.lisp ├── sct-support.lisp └── sysdcl.lisp ├── c-emulator ├── dispatch.c ├── dispatch.h ├── emulator.c ├── emulator.h ├── initialization.c ├── ivory.h ├── memory.c ├── memory.h └── traps.c ├── compile ├── compile-aistat.lisp ├── compile-alpha-emulator.lisp ├── compile-g5-emulator.lisp ├── configure ├── configure.ac ├── depcomp ├── documentation ├── 64-bit-porting-guide.txt └── vlm-installation.txt ├── dot.VLM ├── emulator ├── BootComm.h ├── FEPComm.h ├── Makefile ├── Makefile.am ├── Makefile.in ├── SystemComm.h ├── aihead.c ├── aihead.h ├── aihead.lisp ├── aihead.s ├── aihead.sid ├── aistat.h ├── asmfuns.h ├── comments.text ├── emulator.S ├── errortbl.lisp ├── externals.c ├── failures.text ├── fake_emulator.c ├── interfac.c ├── interpds.c ├── ivory.h ├── ivoryrep.h ├── life_prototypes.h ├── life_types.h ├── memory.c ├── memory.h ├── pfilt_wrapper.h ├── support-sysdcl.lisp ├── sysdcl.lisp ├── testfunction.h ├── traps.c ├── traps.h ├── traps.lisp ├── traps.s ├── traps.sid └── usagedatarpt.lisp ├── g5-build.lisp ├── g5-emulator ├── aistat.c ├── aistat.h ├── aistat.lisp ├── aistat.s ├── aistat.sid ├── fcallmac.lisp ├── idispat.ppcs ├── idouble.ppcs ├── ifunarra.ppcs ├── ifunbind.ppcs ├── ifunbits.ppcs ├── ifunblok.ppcs ├── ifunbnum.ppcs ├── ifuncom1.ppcs ├── ifuncom2.ppcs ├── ifunfcal.ppcs ├── ifunfext.ppcs ├── ifunfull.ppcs ├── ifungene.ppcs ├── ifunhead.ppcs ├── ifuninst.ppcs ├── ifunjosh.ppcs ├── ifunlexi.ppcs ├── ifunlist.ppcs ├── ifunloop.ppcs ├── ifunmath.ppcs ├── ifunmove.ppcs ├── ifunpred.ppcs ├── ifunsubp.ppcs ├── ifuntran.ppcs ├── ifuntrap.ppcs ├── ihalt.ppcs ├── imacarra.lisp ├── imacbind.lisp ├── imacbits.lisp ├── imacblok.lisp ├── imacfext.lisp ├── imacgene.lisp ├── imacialu.lisp ├── imacinst.lisp ├── imacjosh.lisp ├── imaclexi.lisp ├── imaclist.lisp ├── imacloop.lisp ├── imacmath.lisp ├── imacpred.lisp ├── imacsubp.lisp ├── imactrap.lisp ├── intrpmac.lisp ├── kludges.s ├── memoryem.lisp ├── powermac.lisp └── stacklis.lisp ├── include ├── VLM_configuration.h ├── spy.h ├── std.h ├── swapbytes.h ├── utilities.h └── world_tools.h ├── install-sh ├── life-support ├── FEPComm.h ├── Makefile ├── Makefile.am ├── Makefile.in ├── SystemComm.h ├── chaos.h ├── cold_load.c ├── cold_load_keymappings.h ├── console.c ├── disks.c ├── embed.h ├── genera-cptfont.xbm ├── genera-icon-32.xbm ├── initialization.c ├── life_prototypes.h ├── life_types.h ├── message_channels.c ├── network-darwin.c ├── network-libpcap.c ├── network-linux.c ├── network-osf.c ├── network-tap-linux.c ├── network-tun-linux.c ├── network.c ├── polling.c ├── queues.c ├── signals-ptw.c ├── signals.c ├── symbolics_characters.h └── unixcrypt.c ├── missing ├── other └── pfopen.c ├── src ├── Makefile ├── Makefile.am ├── Makefile.in ├── byteswap_world.c ├── main.c ├── spy.c ├── utilities.c └── world_tools.c ├── stub ├── Makefile ├── Makefile.am ├── Makefile.in ├── README ├── blanks.c ├── clisp-support.lisp ├── dispatch ├── fib │ └── fib.lisp ├── float1 ├── float2 ├── idispat.c ├── idouble.c ├── ifunarra.c ├── ifunbind.c ├── ifunbits.c ├── ifunblok.c ├── ifunbnum.c ├── ifuncom1.c ├── ifuncom2.c ├── ifunfcal.c ├── ifunfext.c ├── ifunfull.c ├── ifungene.c ├── ifunhead.c ├── ifuninst.c ├── ifunjosh.c ├── ifunlexi.c ├── ifunlist.c ├── ifunloop.c ├── ifunmath.c ├── ifunmove.c ├── ifunpred.c ├── ifunsubp.c ├── ifuntran.c ├── ifuntrap.c ├── ihalt.c ├── intrpmac.lisp ├── makediff.sh ├── process.lisp └── stub.c ├── support ├── clear-all-histories.lisp ├── clisp-packages.lisp ├── clisp-support.lisp ├── compile-Minima-for-VLM.lisp ├── control-register-view.lisp ├── debug-kludges.lisp ├── development-sysdcl.lisp ├── more-VLM-access-path-hackery.lisp ├── openmcl-packages.lisp ├── openmcl-support.lisp ├── robust-MBIN.lisp ├── sbcl-packages.lisp ├── sbcl-support.lisp ├── start-without-Load-World.lisp └── unix-access-path.lisp ├── sysdcl.lisp ├── translator ├── hitlist.text ├── support-sysdcl.lisp ├── sysdcl.lisp ├── tranrule.lisp ├── translat.lisp ├── xtranrule.lisp └── xtranslat.lisp ├── unlock.lisp └── x86_64-emulator └── aistat.h /.github/ISSUE_TEMPLATE/Bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | 5 | --- 6 | 7 | **Describe the bug** 8 | A clear and concise description of what the bug is. 9 | 10 | **To Reproduce** 11 | Steps to reproduce the behavior: 12 | 1. Go to '...' 13 | 2. Click on '....' 14 | 3. Scroll down to '....' 15 | 4. See error 16 | 17 | **Expected behavior** 18 | A clear and concise description of what you expected to happen. 19 | 20 | **Screenshots** 21 | If applicable, add screenshots to help explain your problem. 22 | 23 | **Desktop (please complete the following information):** 24 | - OS: [e.g. iOS] 25 | - Browser [e.g. chrome, safari] 26 | - Version [e.g. 22] 27 | 28 | **Smartphone (please complete the following information):** 29 | - Device: [e.g. iPhone6] 30 | - OS: [e.g. iOS8.1] 31 | - Browser [e.g. stock browser, safari] 32 | - Version [e.g. 22] 33 | 34 | **Additional context** 35 | Add any other context about the problem here. 36 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/Feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | 5 | --- 6 | 7 | **Is your feature request related to a problem? Please describe.** 8 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 9 | 10 | **Describe the solution you'd like** 11 | A clear and concise description of what you want to happen. 12 | 13 | **Describe alternatives you've considered** 14 | A clear and concise description of any alternative solutions or features you've considered. 15 | 16 | **Additional context** 17 | Add any other context or screenshots about the feature request here. 18 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | authors: 2 | vlm on alpha:P.T.Withington, Scott McKay, and Gary Palter at Symbolics Inc. 3 | Paul Robertson at Dynamic Object Language Group 4 | see: http://pt.withy.org/publications/VLM.html 5 | 6 | x86_64 port: by bard parker (brad@unlambda.com) 7 | 8 | last modified: Joachim Jachemich (joachim@jachemich.de) 9 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. 6 | 7 | ## Our Standards 8 | 9 | Examples of behavior that contributes to creating a positive environment include: 10 | 11 | * Using welcoming and inclusive language 12 | * Being respectful of differing viewpoints and experiences 13 | * Gracefully accepting constructive criticism 14 | * Focusing on what is best for the community 15 | * Showing empathy towards other community members 16 | 17 | Examples of unacceptable behavior by participants include: 18 | 19 | * The use of sexualized language or imagery and unwelcome sexual attention or advances 20 | * Trolling, insulting/derogatory comments, and personal or political attacks 21 | * Public or private harassment 22 | * Publishing others' private information, such as a physical or electronic address, without explicit permission 23 | * Other conduct which could reasonably be considered inappropriate in a professional setting 24 | 25 | ## Our Responsibilities 26 | 27 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. 28 | 29 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. 30 | 31 | ## Scope 32 | 33 | This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. 34 | 35 | ## Enforcement 36 | 37 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at joachim@jachemich.de. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. 38 | 39 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. 40 | 41 | ## Attribution 42 | 43 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] 44 | 45 | [homepage]: http://contributor-covenant.org 46 | [version]: http://contributor-covenant.org/version/1/4/ 47 | -------------------------------------------------------------------------------- /COPYING: -------------------------------------------------------------------------------- 1 | /usr/share/automake-1.13/COPYING -------------------------------------------------------------------------------- /ChangeLog: -------------------------------------------------------------------------------- 1 | in 2013 disassembled Brad's genera to locate and fix the integer division 2 | code. Located and binary patched it - integer division works ok. 3 | Oct 2014 eventually located the vlm source code and began to work on it. 4 | in 2014 changed stub/process.lisp to work with clisp 5 | implemented rational division as "asm" operation in 6 | alpha-emulator/imacmath.lisp and stub/process.lisp 7 | implemented double-float trap as "c" code in 8 | alpha-emulator/imactrap.lisp and stub/process.lisp 9 | implemented networking using a tap interface for internet 10 | as well as chaos in life-support/network-tap-linux.c. 11 | floor/ceiling/round produce erroneous results - fixed them by 12 | introducing new "pseudo" alpha-ops and generating code in 13 | stub/process.lisp to make use of the libm-functions 14 | floor, ceil, trunc, and rint functions. 15 | in 2015 implemented check for and workaround for X11 with xcb in 16 | life-support/cold-load.c and life-support/console.c 17 | changed keyboard detection code and key translation for 18 | the cold-load/debugger window in life-support/cold-load.c 19 | changed timing in life-support/signals.c and utilitites.c 20 | implemented nfs version 3 client in LISP. 21 | implemented a server for the "MINI" protocol in LISP, 22 | patched qld and friends to be able to do a cold load 23 | using two OG2 instances. Finally able to do a cold-load. 24 | Still looking for the cold-load generator sources... 25 | Implemented a few additions to the embedded communication 26 | area (cwd, home dir), added block-size setting for FEP-disks, 27 | added unix crypt as a callable routine. Did some changes to 28 | gc routines to be able to gc even more areas. Succeeded in 29 | saving worlds smaller then the original 8-5 world. 30 | Aug 2016 made a version of genera work on the alpha using the 31 | original alpha-assembly generation, fixed some glitches 32 | when shutting down genera (move termination of network in front 33 | of all other termination routines). moved to the x64 version as well 34 | Oct 2016 added alpha assembly instruction in alpha-emulator/imactrap.lisp 35 | to correctly identify double-float traps. Tested on alpha, then 36 | also moved to the x64 version. 37 | Nov 2016 worked on the chaosnet network module for Linux 'til 38 | Nov 2017 39 | Nov 2017 moved the source tree into an autoconf/automake project 40 | fixed a lot of compilation warnings 41 | Feb 2018 cleaned up the sources 42 | reverted useless code changes in emulator/interface.c 43 | 04/21/18 added :MAC|aa:bb:cc:dd:ee:ff to network options on 44 | request from Jean Marangos. This is an additional option for the 45 | interface and is used for CHAOS as well as INTERNET interfaces. By 46 | default the tap interface code will generate a new MAC address for 47 | the OG2 end of the tap tunnel each time genera is started. 48 | 04/24/18 developed a LISP patch to use the hosts time at startup instead 49 | of asking around on the network 50 | 04/26/18 added "host=address" option to network specifications, so a 51 | network specification could now look like 52 | "tap0:INTERNET|192.168.2.2;gateway=192.168.2.1;host=192.168.2.1", 53 | for example or 54 | "tap0:CHAOS|401;host=777". By default the tap interface code 55 | assumes its host is ".1" on the guests subnet for ip, or "377" on the 56 | guest subnet for chaos. Giving the "host=" option will override 57 | this default, should you ever need it. I you give the host option 58 | the address used should be the same address you've used when you 59 | configured the tap interface. 60 | added some of the LISP patches I use to the OG2-patches directory 61 | 04/27/18 removed "while (1);" from vpunt() to allow termination after an 62 | error 63 | 04/28/18 use ucontext_t instead of struct ucontext in emulator/interfac.c 64 | and emulator/memory.c as reported by Seth Morabito 65 | added extern definitions for fixtfloat, _ADDS, _SUBS, _MULS, _DIVS 66 | as those caused gcc hickups on Ubuntu reported by Seth Morabito 67 | bumped version to vlm-0.99-1 68 | 04/29/18 fixed a bug in life-support/disks.c where passing a negative 69 | blocksize lead to non-logical blocksize settings 70 | 71 | -------------------------------------------------------------------------------- /Makefile.am: -------------------------------------------------------------------------------- 1 | SUBDIRS= emulator life-support stub src 2 | 3 | EXTRA_DIST=include admin alpha-emulator assembler c-emulator documentation g5-emulator other support translator x86_64-emulator emulator life-support stub src OG2-patches 4 | 5 | clean-local: clean-local-check 6 | .PHONY: clean-local-check 7 | clean-local-check: 8 | rm -f *~ .*~ 9 | -------------------------------------------------------------------------------- /NEWS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jjachemich/linux-vlm/4157f06770e81684c98056a9591af1a68af84806/NEWS -------------------------------------------------------------------------------- /OG2-patches/emb-bufs.lisp: -------------------------------------------------------------------------------- 1 | ;;; -*- Mode: LISP; Syntax: Common-Lisp; Package: USER; Base: 10; Patch-File: T -*- 2 | ;;; Patch file for Private version 0.0 3 | ;;; Written by Lisp Machine, 3/14/14 18:08:13 4 | ;;; while running on CHAOS from CHAOS-HOST:who-calls-chaos.vlod 5 | ;;; with Open Genera 2.0, Genera 8.5, Logical Pathnames Translation Files NEWEST, 6 | ;;; Ivory Revision 5, VLM Debugger 329, Genera program 9.0, DEC OSF/1 V127, 7 | ;;; 1280x956 24-bit TRUE-COLOR X Screen INTERNET|127.0.0.1:0.0 with 224 Genera fonts (The X.Org Foundation R11403901), 8 | ;;; Machine serial number 771101265, Linux, 9 | ;;; not Alpha (from DISTRIBUTION|DIS-EMB-HOST:/home/lispm/patches.sct/alpha.), 10 | ;;; doc ex drawings (from DISTRIBUTION|DIS-EMB-HOST:/home/lispm/patches.sct/docs-ellipse.), 11 | ;;; OpenSuse FSS (from DISTRIBUTION|DIS-EMB-HOST:/home/lispm/patches.sct/opensuse-fss-patch.), 12 | ;;; Allow multiple ll addresses (from DISTRIBUTION|DIS-EMB-HOST:/home/lispm/lsource/allow-multiple-ll-addresses.), 13 | ;;; primary network: parse :internet before :chaos (from DISTRIBUTION|DIS-EMB-HOST:/home/lispm/lsource/primary-network-address.), 14 | ;;; Rational quotient (from DISTRIBUTION|DIS-EMB-HOST:/home/lispm/lsource/rational-quotient.), 15 | ;;; disable lossage in get-emb-host (from CHAOS-HOST:/home/lispm/lsource/get-emb-host.lisp). 16 | 17 | 18 | (SCT:FILES-PATCHED-IN-THIS-PATCH-FILE 19 | "SYS:EMBEDDING;EMB-BUFFER.LISP.55") 20 | 21 | 22 | (SCT:NOTE-PRIVATE-PATCH "more emb eth packets and disk buffers") 23 | 24 | 25 | ;======================== 26 | (SCT:BEGIN-PATCH-SECTION) 27 | (SCT:PATCH-SECTION-SOURCE-FILE "SYS:EMBEDDING;EMB-BUFFER.LISP.55") 28 | #+IMACH 29 | (SCT:PATCH-SECTION-ATTRIBUTES 30 | "-*- Mode: LISP; Syntax: Common-Lisp; Base: 10; Package: COMMON-LISP-INTERNALS; Lowercase: Yes -*-") 31 | 32 | #+IMACH 33 | 34 | ;;; 35 | ;;; list of bufsize and how many to alloc at once 36 | ;;; I don't know how to make a defconstant list get wired, so use a function 37 | ;;; must do smallest first 38 | ;;; 39 | (defwiredfun map-over-emb-buf-sizes-and-counts (function) 40 | (declare (sys:downward-funarg function)) 41 | (funcall function 8 4) ; random small buffer 42 | (funcall function 32 8) ; other random buffer 43 | (funcall function 40 1) ; embedded DQE 44 | (funcall function 128 1) ; mac page 45 | #-VLM (funcall function 320 2) ; IMach page 46 | (funcall function 380 16) ; ethernet packet 47 | #+VLM (funcall function 2048 2)) ; VLM disk block 48 | 49 | ;;; 50 | ;;; faking an array of buf pools 51 | ;;; 52 | 53 | -------------------------------------------------------------------------------- /OG2-patches/host-ll-address.lisp: -------------------------------------------------------------------------------- 1 | ;;; -*- Mode: LISP; Syntax: Common-Lisp; Package: USER; Base: 10; Patch-File: T -*- 2 | ;;; Patch file for Private version 0.0 3 | ;;; Written by Lisp Machine, 11/03/14 17:03:40 4 | ;;; while running on CHAOS from CHAOS-HOST:chaos.vlod 5 | ;;; with Open Genera 2.0, Genera 8.5, Logical Pathnames Translation Files NEWEST, 6 | ;;; Ivory Revision 5, VLM Debugger 329, Genera program 9.0, DEC OSF/1 V127, 7 | ;;; 1280x976 24-bit TRUE-COLOR X Screen INTERNET|127.0.0.1:0.0 with 224 Genera fonts (The X.Org Foundation R11403901), 8 | ;;; Machine serial number 1860185938, 9 | ;;; more emb eth packets and disk buffers (from CHAOS-HOST:/home/lispm/lsource/emb-bufs.lisp), 10 | ;;; Allow multiple ll addresses (from CHAOS-HOST:/home/lispm/lsource/allow-multiple-ll-addresses.lisp), 11 | ;;; primary network: parse :internet before :chaos (from CHAOS-HOST:/home/lispm/lsource/primary-network-address.lisp), 12 | ;;; Reset arp (from CHAOS-HOST:/home/lispm/lsource/reset-arp.lisp), 13 | ;;; disable lossage in get-emb-host (from CHAOS-HOST:/home/lispm/lsource/get-emb-host.lisp), 14 | ;;; Full gc patches (from CHAOS-HOST:/home/lispm/lsource/full-gc-patch.lisp), 15 | ;;; disable GC during user disk io (from CHAOS-HOST:/home/lispm/lsource/user-disk-without-gc.lisp), 16 | ;;; doc ex drawings (from CHAOS-HOST:/home/lispm/lsource/docs-ellipse.lisp), 17 | ;;; OpenSuse FSS (from CHAOS-HOST:/home/lispm/lsource/opensuse-fss-patch.lisp), 18 | ;;; Linux, not Alpha (from CHAOS-HOST:/home/lispm/lsource/alpha.lisp), 19 | ;;; german keyboard (from CHAOS-HOST:/home/lispm/lsource/german-keyboard-patch.). 20 | 21 | 22 | (SCT:FILES-PATCHED-IN-THIS-PATCH-FILE 23 | "SYS:NETWORK;VLM-INTERFACES.LISP.4") 24 | 25 | 26 | (SCT:NOTE-PRIVATE-PATCH "Host ll address") 27 | 28 | 29 | ;======================== 30 | (SCT:BEGIN-PATCH-SECTION) 31 | (SCT:PATCH-SECTION-SOURCE-FILE "SYS:NETWORK;VLM-INTERFACES.LISP.4") 32 | #+VLM 33 | (SCT:PATCH-SECTION-ATTRIBUTES 34 | "-*- Mode: LISP; Package: NETWORK-INTERNALS; Base: 8; -*-") 35 | 36 | #+VLM 37 | 38 | (DEFMETHOD (:ADD-NETWORK VLM-ETHERNET-INTERFACE :AFTER) (NETWORK LOCAL-ADDRESS) 39 | (ignore network local-address) 40 | ;; dont assume the host to be on the same network interface 41 | nil 42 | ; (LET* ((PROTOCOL (CL:FIND NETWORK PROTOCOL-TABLE 43 | ; :KEY #'PROTOCOL-TABLE-ENTRY-NETWORK)) 44 | ; (CHANNEL (EEI-CHANNEL LOW-LEVEL-INTERFACE))) 45 | ; ;; If this is the network protocol the host wants to use to talk to us, pick up its address 46 | ; (WHEN (= (PROTOCOL-TABLE-ENTRY-PROTOCOL-NUMBER PROTOCOL) 47 | ; (EMB-NET-CHANNEL-HOST-PRIMARY-PROTOCOL CHANNEL)) 48 | ; (SETF (GETHASH (EMB-NET-CHANNEL-HOST-PRIMARY-ADDRESS CHANNEL) 49 | ; (PROTOCOL-TABLE-ENTRY-HASH-TABLE PROTOCOL)) 50 | ; LOCAL-HARDWARE-ADDRESS)))) 51 | ) 52 | 53 | -------------------------------------------------------------------------------- /OG2-patches/modifier-loop-patch.lisp: -------------------------------------------------------------------------------- 1 | ;;; -*- Mode: LISP; Syntax: Common-Lisp; Package: USER; Base: 10; Patch-File: T -*- 2 | ;;; Patch file for Private version 0.0 3 | ;;; Written by Lisp Machine, 5/04/16 16:30:27 4 | ;;; while running on CHAOS from CHAOS-HOST:chaos.vlod 5 | ;;; with Open Genera 2.0, Genera 8.5, Logical Pathnames Translation Files NEWEST, 6 | ;;; NFSv3 Client 10.0, Ivory Revision 5, VLM Debugger 329, Genera program 9.0, 7 | ;;; DEC OSF/1 V127, 8 | ;;; 1280x976 24-bit TRUE-COLOR X Screen INTERNET|127.0.0.1:0.0 with 224 Genera fonts (The X.Org Foundation R11702000), 9 | ;;; Machine serial number 356942099, 10 | ;;; more emb eth packets and disk buffers (from DISTRIBUTION|DIS-EMB-HOST:/home/lispm/lsource/emb-bufs.), 11 | ;;; Host ll address (from DISTRIBUTION|DIS-EMB-HOST:/home/lispm/lsource/host-ll-address.), 12 | ;;; Allow multiple ll addresses (from DISTRIBUTION|DIS-EMB-HOST:/home/lispm/lsource/allow-multiple-ll-addresses.), 13 | ;;; primary network: parse :internet before :chaos (from DISTRIBUTION|DIS-EMB-HOST:/home/lispm/lsource/primary-network-address.), 14 | ;;; disable lossage in get-emb-host (from DISTRIBUTION|DIS-EMB-HOST:/home/lispm/lsource/get-emb-host.), 15 | ;;; Full gc patches (from DISTRIBUTION|DIS-EMB-HOST:/home/lispm/lsource/full-gc-patch.), 16 | ;;; disable GC during user disk io (from DISTRIBUTION|DIS-EMB-HOST:/home/lispm/lsource/user-disk-without-gc.), 17 | ;;; OpenSuse FSS (from DISTRIBUTION|DIS-EMB-HOST:/home/lispm/lsource/opensuse-fss-patch.), 18 | ;;; Linux, not Alpha (from DISTRIBUTION|DIS-EMB-HOST:/home/lispm/lsource/alpha.), 19 | ;;; german keyboard (from DISTRIBUTION|DIS-EMB-HOST:/home/lispm/lsource/german-keyboard-patch.). 20 | 21 | 22 | (SCT:FILES-PATCHED-IN-THIS-PATCH-FILE 23 | "SYS:X11;SCREEN;X-CONSOLE.LISP.47") 24 | 25 | 26 | (SCT:NOTE-PRIVATE-PATCH "Modifier loop patch") 27 | 28 | 29 | ;======================== 30 | (SCT:BEGIN-PATCH-SECTION) 31 | (SCT:PATCH-SECTION-SOURCE-FILE "SYS:X11;SCREEN;X-CONSOLE.LISP.47") 32 | (SCT:PATCH-SECTION-ATTRIBUTES 33 | "-*- Base: 10; Package: X-SCREEN; Mode: LISP; Syntax: Common-lisp; Lowercase: T -*-") 34 | 35 | 36 | (defun-in-flavor (update-server-modifier-mapping x-console) () 37 | ) 38 | ; (loop 39 | ; for i below 10 40 | ; while 41 | ; (eq (xlib:with-server-grabbed (display) 42 | ; (loop 43 | ; with table = (sys:keyboard-keyboard-table cli::keyboard) 44 | ; with nshifts = (array-dimension table 0) 45 | ; with display-modifier-mapping = (display-modifier-mapping) 46 | ; with modifier-mapping = (copy-tree display-modifier-mapping) 47 | ; with bound-modifier-mapping = 48 | ; (bound-modifier-mapping table display-modifier-mapping) 49 | ; for code from (xlib:display-min-keycode display) 50 | ; to (xlib:display-max-keycode display) 51 | ; do (loop 52 | ; for shift below nshifts 53 | ; for key = (keyboard-table-lookup table code shift) 54 | ; when key 55 | ; thereis 56 | ; (loop 57 | ; for (name keys) on bound-modifier-mapping by #'cddr 58 | ; when (member key keys) 59 | ; do (pushnew code (getf modifier-mapping name)) 60 | ; and return t)) 61 | ; finally 62 | ; (return 63 | ; (unless (equal modifier-mapping display-modifier-mapping) 64 | ; (catch-network-errors () 65 | ; (apply #'xlib:set-modifier-mapping display modifier-mapping)))))) 66 | ; :busy) 67 | ; do (cli::console-beep self) 68 | ; (sleep 1))) 69 | 70 | -------------------------------------------------------------------------------- /OG2-patches/primary-network-address.lisp: -------------------------------------------------------------------------------- 1 | ;;; -*- Mode: LISP; Syntax: Common-Lisp; Package: USER; Base: 10; Patch-File: T -*- 2 | ;;; Patch file for Private version 0.0 3 | ;;; Written by Lisp Machine, 3/07/14 15:10:58 4 | ;;; while running on GENERA from JJS|INTERNET|192.168.5.1:jjs.vlod 5 | ;;; with Open Genera 2.0, Genera 8.5, Logical Pathnames Translation Files NEWEST, 6 | ;;; Ivory Revision 5, VLM Debugger 329, Genera program 9.0, DEC OSF/1 V127, 7 | ;;; 1280x956 24-bit TRUE-COLOR X Screen INTERNET|127.0.0.1:0.0 with 224 Genera fonts (The X.Org Foundation R11403901), 8 | ;;; Machine serial number 1833831759, 9 | ;;; Rational quotient (from GENERA-HOST:/home/lispm/lsource/rational-quotient.lisp), 10 | ;;; Linux, not Alpha (from GENERA-HOST:/home/lispm/patches.sct/alpha.lisp.~3~), 11 | ;;; doc ex drawings (from GENERA-HOST:/home/lispm/patches.sct/docs-ellipse.lisp.~3~), 12 | ;;; OpenSuse FSS (from GENERA-HOST:/home/lispm/patches.sct/opensuse-fss-patch.lisp.~1~). 13 | 14 | 15 | (SCT:FILES-PATCHED-IN-THIS-PATCH-FILE 16 | "SYS:NETWORK;NAMESPACES.LISP.859") 17 | 18 | 19 | (SCT:NOTE-PRIVATE-PATCH "primary network: parse :internet before :chaos") 20 | 21 | 22 | ;======================== 23 | (SCT:BEGIN-PATCH-SECTION) 24 | (SCT:PATCH-SECTION-SOURCE-FILE "SYS:NETWORK;NAMESPACES.LISP.859") 25 | (SCT:PATCH-SECTION-ATTRIBUTES 26 | "-*- Mode: LISP; Package: NETI; Base: 10; Lowercase: Yes -*-") 27 | 28 | 29 | ;;; Find the primary network address of the machine. 30 | ;;; This may have been specified with the Set Network-Address or Set Chaos-address command. 31 | ;;; We don't really handle the case of no network address yet. 32 | (defun get-primary-network-address () 33 | ;; first parse the strings from the FEP 34 | (parse-primary-network-address) 35 | ;; D,#TD1PsT[Begin using 006 escapes](1 0 (NIL 0) (NIL :ITALIC NIL) "CPTFONTI")Try chaos first and then Internet. 36 | 0 (loop for network-type in '(:internet :chaos) 37 | as entry = (get-primary-address-entry-of-type network-type) 38 | as network = (and entry 39 | (find-object-from-property-list :network :type network-type)) 40 | when network 41 | return 42 | (progn (setq *primary-network* network) 43 | (setq *primary-network-address* (primary-address-address-string entry))) 44 | finally 45 | (setq *primary-network* nil) 46 | (setq *primary-network-address* nil) 47 | (fsignal 48 | "No valid primary network address has been defined or the network specified in the ~ 49 | FEP could not be found."))) 50 | 51 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | vlm for linux on x86_64 2 | 3 | if you don't know what it is, you probably don't want it... 4 | 5 | based on the admirable work of Brad Parker who changed the alpha assembler 6 | code generator to produce c-code runnable on an x86_64 platform 7 | 8 | this version uses a TUNTAP tap device for networking, that way 9 | it doesn't need root privileges to run if you define a tap 10 | interface beforehand. I decided to use a tap (as opposed to a tun) 11 | interface because access to the complete ethernet frame is possible 12 | with a tap interface - making my life easier since I'm currently 13 | writing a chaosnet network module for Linux and would need access to 14 | the complete ethernet frame therefore. Also it is possible to put tap 15 | devices on a bridge with different mac addresses to be able to run 16 | multiple vlm instances communicating to each other via chaosnet. 17 | 18 | this version has fixes for: 19 | - X11 with xcb lib (runs with or without xcb) 20 | since clx directly accesses the bar-bones X11-protocol, xcb 21 | gets confused when you try to XCloseDisplay/XSynch because clx tries 22 | to keep track of the X11 calls internally which it is unable to 23 | do with a mixture of XLIB calls and direct access to the X11-protocol. 24 | This in turn keeps the vlm from cleanly closing a display, which it 25 | uses when terminating and/or saving a LISP world. 26 | So, if we detect xcb being used, we use a workaround for closing 27 | X displays... 28 | 29 | - keyboard mapping for the cold-load/debugger window 30 | I deemed it unsatisfactory to not being able to use the CTRL-, META-, 31 | SUPER-, and HYPER- keys in the cold-load/debugger window, so I did setup 32 | a mapping for those keys like it is done in the GENERA system itself. You 33 | may use the same keys now in the cold-load/debugger window. 34 | 35 | - rational division (/ 3) yields 1/3 instead of 0 36 | doesn't work in Brads version, because rational division ought to 37 | produce a trap if there is a non-zero remainder from a division. I've 38 | decide to produce asm code for rational division by generating a new 39 | pseudo alpha instruction (x64ratquo) and generating asm code from that. 40 | see alpha-assembler/imacmath.lisp and stub/process.lisp 41 | 42 | - double float exceptions (/ 0.0d0) results in a valid trap now 43 | has not been implemented in the alpha assembly version (forgotten 44 | perhaps). 45 | Changed that in the generation of alpha assembly code (tested on an alpha 46 | as well). see alpha-assembler/imactrap.lisp. 47 | 48 | there are extensions for: 49 | - blocksize settable for attach-disk-channel (to be able to use fep-file 50 | images with non-2048 word blocks, like images derived from ancient 51 | ESDI disks. 52 | 53 | - a unix crypt routine 54 | links to unix crypt to enable use of modern crypt algorithms. 55 | 56 | - unix cwd and unix home dir to be found in embedded communication area 57 | 58 | You won't be able to use these extensions if you do not patch and 59 | recompile respective the LISP definitions as well. 60 | 61 | to install follow the instructions given in the file INSTALL. 62 | 63 | ./configure --help will give you some configuration options 64 | -------------------------------------------------------------------------------- /TODO: -------------------------------------------------------------------------------- 1 | plans for further development: 2 | 3 | - reconsider using the tap interface using a different method to pick up / 4 | inject eth frames. A pf interface (BSD-like) isn't available for LINUX 5 | in a usable fashion like on the alpha ?? maybe try and use libpcap 6 | 7 | - clean up the life-support routines (partly done) 8 | 9 | - move everything into an autoconf/automake project (partly done, 10 | working at least) 11 | 12 | - instead of generating c-code maybe generate x64 assembly code directly - 13 | not much performance gain to be expected and lots of tedious work. 14 | with gcc, c-code is performant anyway... 15 | 16 | - build a time routine to be used instead of querying the network for 17 | universal time at startup. At least with ip this is still taking ages at 18 | startup, using chaosnet is faster, using a builtin routine would even be 19 | faster than that. Also find a way to get the DST from the embedding system 20 | because the LISP code used to dtermine DST is outdated and anyway only 21 | working for US DST definitions. 22 | 23 | - add an option for setting the guest MAC address like 24 | "tap0:MAC|01:02:03:04:05:06" to utilities.c and life-support/network-tap... 25 | probably needed to set a MAC address for MACSYMA key generation 26 | -------------------------------------------------------------------------------- /admin/Beta-test-customers.text: -------------------------------------------------------------------------------- 1 | 2 | 3 | A list of Beta test customers. 4 | 5 | D,#TD1PsT[Begin using 006 escapes](1 0 (NIL 0) (NIL :BOLD NIL) "CPTFONTCB")MCC0 (Austin, TX) 6 | 7 | Clive Dawson - clive@mcc.com 8 | Jan Voss - 9 | Doug Lenat - Lenat@mcc.com 10 | Mary Shephard - Mary@mcc.com 11 | David Gadbois - Gadbois@mcc.com 12 | - 512-338-3451 13 | Jamie Stevens - jamie@mcc.com 14 | - 512-338-3727 15 | - Jamie is doing the instalation of Beta I. 16 | R.V. Guha - Guha@mcc.com 17 | Dexter Pratt - Dexter@mcc.com 18 | 19 | 1EXXON0 (Baton Rouge, LA) 20 | 21 | (no electronic mail) 22 | Harry Moore - primary contact 23 | - 504-359-1356 24 | Craig Schiro - 25 | 26 | 1Army A.I. 27 | 28 | 0no know contact call Bill Wilkinson in the DC office. 29 | 30 | 1U.S.West 31 | 32 | 0Steve Laufman - project manager 33 | - 303-541-6298 34 | Rick Blumenthal - technical Leader 35 | - 303-541-6293 36 | 37 | 1Sandia 38 | -------------------------------------------------------------------------------- /admin/V2-priorities.text: -------------------------------------------------------------------------------- 1 | 2 | VLM 2.0 Project planning: project tasks. 3 | 4 | D,#TD1PsT[Begin using 006 escapes](1 0 (NIL 0) (NIL :ITALIC NIL) "CPTFONTI")(This is what we have been told is approved so0 1far.) 5 | 6 | 0Development time: 7 | 8 | 1a.Make Weak Space Work (ptw) - two weeks of research and, 9 | optimistically, four weeks to make it work. 10 | 1b. Slow DBFS -Statice () - Palter says two weeks. 11 | 12 | 2. Joshua () - 13 | 14 | 3. Translator (paul) - 15 | 16 | 4. Concordia (Stratis) - done, needs testing. 17 | 18 | 5. Metering (swm) - done 19 | 20 | Performance - 21 | 22 | Multiple VLMs on a single host (qa) - document and test. 23 | 24 | QA/SRG time - six weeks (30 days) after final freeze. 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 1(Not yet determined if these go in to release 2.0) 33 | 34 | 02. Floating point/Bignum "microcode" support () - 35 | 4. Motif Interface hack (swm) - 36 | 5. Make Genera have a single space type () - - currently cuts regions in 37 | half 38 | 6. Tape (palter) - half done, AXP support not there yet. 39 | 7. Book Reader Documentation () - (Get Concordia to write Book Reader 40 | files) 41 | 8. Gracefully degrade when there are insufficient map entries - e.g., 42 | disable IDS and continue 43 | 9. Op Code reordering. 44 | 10. Revamp tv: and color: doc to use CLIM. - 2 - 45 | 11. Implement IFUNCOM 1 and 2 - 3 - 46 | 12. Take FSEdit out of LMFS and put back in Genera. - make it use CLIM? 47 | 48 | 1Customer suggestions 49 | 50 | 01. At LUV barmar suggested that we remove the disk meters in peek if 51 | indeed they are not hooked to anything in open genera. - billw -------------------------------------------------------------------------------- /admin/digital-phone-numbers.text: -------------------------------------------------------------------------------- 1 | 2 | 3 | VAR group in Burlington 4 | (these are our primary business contacts, with whom we have the VAR agreement.) 5 | 6 | Debbie Power Bob Collins 7 | Account Rep. Sales Manager 8 | 617 273 6464 617 273 6664 9 | 10 | 11 | Alpha Migration Center in Merrimack, NH 12 | (these are the people who lent us time on Alpha before we got our own) 13 | 14 | Jim Seagraves Bob Grosso 15 | (Engineer ?) Manager, Migration Center 16 | 603 884 2924 603 884 1651 17 | MS MK02-2/F10 18 | beau@decvax.dec.com 19 | Digital Equipment Corporation 20 | 1 Digital Dr. 21 | Merrimack, NH 03054 22 | 23 | Jim Damoulakis 24 | jimd@nvsd4.enet.dec.com 25 | Sr. Open Systems Consultant 26 | Digital Equipment Corp. 27 | Burlington, MA 28 | 617-273-6477 29 | 30 | 31 | OSF group in Nashua, NH. 32 | 33 | John Nordlinger 34 | Compiler/Internals guy? 35 | 603-881-2894 36 | 37 | John Dustin 38 | Engineer for networking components of OSF 39 | Reference from Jim Damoulakis (15-JAN-1993) 40 | jsd@decvax.dec.com, jsd@zk3.dec.com 41 | 603-881-0326 42 | 43 | 44 | Field Service 45 | 1-800-354-9000 46 | Model # PE50A-A9. Internal name "Flamingo" for this model. 47 | Serial # AY233C1955 48 | 49 | Heather Grey 50 | OSF Network Support @ DEC 51 | 603-881-1079 52 | 53 | Andrew Duane 54 | alpha something-or-other at DEC (concerned with alpha 'date' slowdown) 55 | duane@aosg.gsf.dec.com - fails 56 | duane@alpha.aosg.gsf.dec.com - ?? 57 | duane@alpha.enet.dec.com - untried 58 | "alpha::duane"@decwrl.pa.dec.com - untried 59 | 603-884-5873 60 | FAX: 603-884-1685 (MS GSF1-1/K13) 61 | 62 | Ashoke Rampuria 63 | rampuria@zk3.dec.com 64 | Investigating "mprotect" problem 65 | 603-881-2886 -------------------------------------------------------------------------------- /admin/issues.text: -------------------------------------------------------------------------------- 1 | Open issues with DEC: 2 | 3 | Genera life support network issue -- Jim should have passed our question 4 | about promiscuous mode/network packet filter/etc. to development. -- 5 | Answer received, but unsatisfactory in practice. New much more involved 6 | query sent 12/21. 7 | 8 | DBX fails with the emulator because of some error having to do with 9 | select(). -- Have patch, but tape drive is croaked so can't load it! 10 | [field service log # LB5ED0 for tape drive problem] [Tape drive fixed] 11 | 12 | mmap has limit of 192 discontiguous segments; asked how to increase. 13 | Using more memory than you have hangs the machine; have program to test 14 | for size of swap space but it doesn't work. [increased mmap segments] 15 | 16 | 12/18: yduJ reported a hideous bug in BL10 where you can't reuse a port 17 | number until N hours later when it has closed itself. 18 | 19 | 12/18: yduJ sent off a crash dump to DEC from the tcp_output panic. 20 | 21 | 12/21: Palter found a bug in the C compiler that causes it to dump core. 22 | 23 | 12/21: Palter asked a bunch of threads questions about warnings from 24 | header files and support level of dbx and thread-friendly x libraries. 25 | 26 | Genera command line should allow user to specify swap-image size and 27 | pass in to genera (via life-support) to set *count-swap-pages*. This 28 | will allow trading off Genera GC overhead vs. how much swap space it 29 | tries to grab. 30 | 31 | Do stacks need to be chunk-aligned in Genera? I don't think so since 32 | they should not ever get protected or transport trap. 33 | 34 | Genera "allows" 2000 regions, which could me you could have 2000 mmap 35 | extents! -------------------------------------------------------------------------------- /admin/mprotect-bug.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | #define PAGESIZE (1024*8) 10 | #define MAPSIZE (1024*8*32) 11 | #define NMAP 30 12 | #define MAPBASE 0x20000000000 13 | 14 | long addrarr[NMAP]; 15 | long maddrarr[NMAP]; 16 | 17 | void segv_handler (int sigval, int code, register struct sigcontext *scp) 18 | { 19 | int ret; 20 | caddr_t aligned_vma = (caddr_t) (scp->sc_traparg_a0 & ~(PAGESIZE -1)); 21 | int prot = (random()&01)?(PROT_READ):(PROT_READ|PROT_WRITE); 22 | 23 | ret = mprotect(aligned_vma, PAGESIZE, prot); 24 | if(ret == -1) 25 | printf("mprotect/write failed @ 0x%lxprot %d, errno=%d\n", aligned_vma, prot, errno); 26 | 27 | ret = mvalid(aligned_vma, PAGESIZE, prot); 28 | if(ret == -1) 29 | printf("mvalid failed @ 0x%lx prot %d, errno=%d\n", aligned_vma, prot, errno); 30 | } 31 | 32 | main(int argc, char *argv[]) 33 | { 34 | int i, ret; 35 | long startaddr; 36 | int fd; 37 | struct sigaction action; 38 | 39 | fd = open(argv[1], O_RDONLY, 0); 40 | if (fd == -1) { 41 | printf("open failed, errno=%d\n", errno); 42 | } 43 | 44 | startaddr = 0; 45 | for(i=0; i