-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 4eb459e
Showing
350 changed files
with
205,669 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
genera.network: tap1:CHAOS|402;host=777,tap0:INTERNET|192.168.2.2;gateway=192.168.2.1;host=192.168.2.1 | ||
|
||
genera.virtualMemory: 512 | ||
genera.trace: no | ||
genera.worldSearchPath: /home/lispm/snap5/jj-vlm:/home/lispm/snap5/vlods:/var/lib/symbolics | ||
*main.geometry: 1280x1024+0+1024 | ||
*coldLoad.geometry: 800x600+1280+0 | ||
*coldLoad.iconic: yes | ||
*coldLoad.background: gray85 | ||
*coldLoad.foreground: gray15 | ||
|
||
genera.world: ../vlods/Genera-8-5.vlod | ||
genera.spy: no | ||
|
||
genera.debugger: VLM_debugger | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
/Makefile | ||
/Makefile.in | ||
/aclocal.m4 | ||
/autom4te.cache/ | ||
/config.* | ||
/VLM_debugger | ||
/m4/ | ||
/stamp-h? | ||
.deps/ | ||
.dirstamp | ||
*.o | ||
*~ | ||
/autoscan.* | ||
/configure.scan | ||
/keyboard.c | ||
/keyboard | ||
/machine | ||
/2machines | ||
/tozeb | ||
/vlm-*.xz | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
authors: | ||
vlm on alpha:P.T.Withington, Scott McKay, and Gary Palter at Symbolics Inc. | ||
Paul Robertson at Dynamic Object Language Group | ||
see: http://pt.withy.org/publications/VLM.html | ||
|
||
x86_64 port: by bard parker ([email protected]) | ||
|
||
last modified: Joachim Jachemich ([email protected]) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
/usr/share/automake-1.13/COPYING |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
in 2013 disassembled Brad's genera to locate and fix the integer division | ||
code. Located and binary patched it - integer division works ok. | ||
Oct 2014 eventually located the vlm source code and began to work on it. | ||
in 2014 changed stub/process.lisp to work with clisp | ||
implemented rational division as "asm" operation in | ||
alpha-emulator/imacmath.lisp and stub/process.lisp | ||
implemented double-float trap as "c" code in | ||
alpha-emulator/imactrap.lisp and stub/process.lisp | ||
implemented networking using a tap interface for internet | ||
as well as chaos in life-support/network-tap-linux.c. | ||
floor/ceiling/round produce erroneous results - fixed them by | ||
introducing new "pseudo" alpha-ops and generating code in | ||
stub/process.lisp to make use of the libm-functions | ||
floor, ceil, trunc, and rint functions. | ||
in 2015 implemented check for and workaround for X11 with xcb in | ||
life-support/cold-load.c and life-support/console.c | ||
changed keyboard detection code and key translation for | ||
the cold-load/debugger window in life-support/cold-load.c | ||
changed timing in life-support/signals.c and utilitites.c | ||
implemented nfs version 3 client in LISP. | ||
implemented a server for the "MINI" protocol in LISP, | ||
patched qld and friends to be able to do a cold load | ||
using two OG2 instances. Finally able to do a cold-load. | ||
Still looking for the cold-load generator sources... | ||
Implemented a few additions to the embedded communication | ||
area (cwd, home dir), added block-size setting for FEP-disks, | ||
added unix crypt as a callable routine. Did some changes to | ||
gc routines to be able to gc even more areas. Succeeded in | ||
saving worlds smaller then the original 8-5 world. | ||
Aug 2016 made a version of genera work on the alpha using the | ||
original alpha-assembly generation, fixed some glitches | ||
when shutting down genera (move termination of network in front | ||
of all other termination routines). moved to the x64 version as well | ||
Oct 2016 added alpha assembly instruction in alpha-emulator/imactrap.lisp | ||
to correctly identify double-float traps. Tested on alpha, then | ||
also moved to the x64 version. | ||
Nov 2016 worked on the chaosnet network module for Linux 'til | ||
Nov 2017 | ||
Nov 2017 moved the source tree into an autoconf/automake project | ||
fixed a lot of compilation warnings | ||
Feb 2018 cleaned up the sources | ||
reverted useless code changes in emulator/interface.c | ||
04/21/18 added <dev>:MAC|aa:bb:cc:dd:ee:ff to network options on | ||
request from Jean Marangos. This is an additional option for the | ||
interface and is used for CHAOS as well as INTERNET interfaces. By | ||
default the tap interface code will generate a new MAC address for | ||
the OG2 end of the tap tunnel each time genera is started. | ||
04/24/18 developed a LISP patch to use the hosts time at startup instead | ||
of asking around on the network | ||
04/26/18 added "host=address" option to network specifications, so a | ||
network specification could now look like | ||
"tap0:INTERNET|192.168.2.2;gateway=192.168.2.1;host=192.168.2.1", | ||
for example or | ||
"tap0:CHAOS|401;host=777". By default the tap interface code | ||
assumes its host is ".1" on the guests subnet for ip, or "377" on the | ||
guest subnet for chaos. Giving the "host=" option will override | ||
this default, should you ever need it. I you give the host option | ||
the address used should be the same address you've used when you | ||
configured the tap interface. | ||
added some of the LISP patches I use to the OG2-patches directory | ||
04/27/18 removed "while (1);" from vpunt() to allow termination after an | ||
error | ||
04/28/18 use ucontext_t instead of struct ucontext in emulator/interfac.c | ||
and emulator/memory.c as reported by Seth Morabito | ||
added extern definitions for fixtfloat, _ADDS, _SUBS, _MULS, _DIVS | ||
as those caused gcc hickups on Ubuntu reported by Seth Morabito | ||
bumped version to vlm-0.99-1 | ||
04/29/18 fixed a bug in life-support/disks.c where passing a negative | ||
blocksize lead to non-logical blocksize settings | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,240 @@ | ||
# | ||
# Builds the Ivory Emulator (VLM) | ||
# | ||
# The command line to build an emulator is | ||
# | ||
# make {OPTIONS="option1 option2 ..."} {NONSHARED=YES} TARGET | ||
# | ||
# where TARGET is either "genera", "minima", or "iverify". The makefile will | ||
# automatically include the -DGENERA, -DMINIMA, or -DIVERIFY preprocessor option | ||
# when invoking the compiler and assembler. | ||
# | ||
# On the make command line, use OPTIONS="option1 option2 ..." to specify compiler | ||
# and assembler options, notably preprocessor options. | ||
# | ||
# The main preprocessor options used throughout the sources are | ||
# GENERA to build an emulator that is intended to run Genera | ||
# MINIMA to build an emulator that is intended to run Minima | ||
# IVERIFY to build an emulator that is intended to run the instruction test suite | ||
# TRACING to enable instruction tracing and counting | ||
# CACHEMETERING to enable instruction cache metering facilities | ||
# TRAPMETERING to enable trap metering facilities | ||
# STATISTICS to enable other statistics-gathering facilities | ||
# if enabled: | ||
# EXECTIMES : enable execution times statistics | ||
# ends up in "usagedata.lisp" / "usagedata.text" after a vlm run | ||
# DEBUGGING to enable debugging facilities | ||
# DEBUG* to enable other, more specific debugging facilities | ||
# AUTOSTART to immediately start execution of the loaded image without waiting for | ||
# a :Start Interactor command from the Minima Debugger. (This option is defined | ||
# automatically when the TARGET is "genera".) | ||
# USE_CPU_FOR_MICROSECOND_CLOCK to use the process CPU time rather than elapsed time | ||
# as the value of Ivory's microsecond clock | ||
# DISK_SIZE_1536 to enable disks.c to read 1536 bytes sectors | ||
# instead of the default 8192 byte sectors | ||
# DEBUG_DISK | ||
# enable disk read/write verbosity | ||
# DEBUG_NETWORk | ||
# Networking debug verbosity | ||
# if enabled: | ||
# DEBUG_CHAOS | ||
# DEBUG_IP | ||
# DEBUG_ARP | ||
# DEBUG_ICMP | ||
# verbosity of indiv. netwoeking parts | ||
# | ||
# For example, to create an emulator that runs Genera but waits for a :Start Interactor | ||
# command from the Minima Debugger before booting and also has debugging features enabled, | ||
# | ||
# make genera OPTIONS="-DDEBUGGING -UAUTOSTART" | ||
# | ||
# If you specify a target different from your last build, you must remove all object | ||
# files first to ensure that everything is properly compiled. Use the "clean" target. | ||
# | ||
# In fact, if you change any settings between builds, it's a good idea to build from scratch | ||
# | ||
# On the make command line, use PROFILE=YES to build the VLM using the profiling option | ||
# to gather statistics on execution frequencies. | ||
# | ||
# On the make command line, use NONSHARED=YES to build the VLM using the non-shared | ||
# libraries. (The default is to use the shared libraries.) | ||
# | ||
|
||
|
||
LIFE = ./life-support | ||
EMULATOR = ./emulator | ||
G5EMULATOR = ./g5-emulator | ||
X86EMULATOR = ./x86_64-emulator | ||
OTHER = ./other | ||
|
||
CPU = $(X86EMULATOR) | ||
CLISP = /usr/bin/clisp | ||
CCL=/home/lispm/ccl/scripts/ccl64 | ||
OPTIMOPT = -Ofast -march=native -fno-strict-aliasing | ||
NOCONAOPTIMOPT = -Ofast -march=nocona -fno-strict-aliasing | ||
|
||
genera: MAINOPTIONS = -DGENERA -DAUTOSTART -DUSE_TAP #-DUSE_CPU_FOR_MICROSECOND_CLOCK | ||
minima: MAINOPTIONS = -DMINIMA -DUSE_TAP | ||
iverify: MAINOPTIONS = -DIVERIFY -DUSE_TAP | ||
|
||
genera.nocona: MAINOPTIONS = -DGENERA -DAUTOSTART -DUSE_TAP #-DUSE_CPU_FOR_MICROSECOND_ | ||
|
||
SYMBOLSOPT = | ||
#SYMBOLSOPT = -g | ||
|
||
# -foptimize-sibling-calls -fstrength-reduce \ | ||
# -fexpensive-optimizations \ | ||
# -fsched-interblock -fsched-spec -fpeephole2 \ | ||
# -freorder-blocks -freorder-functions \ | ||
# -funit-at-a-time \ | ||
# -falign-functions -falign-jumps -falign-loops -falign-labels \ | ||
# -fcrossjumping \ | ||
# -finline-functions -frename-registers -funswitch-loops \ | ||
# -fregmove \ | ||
# -fcse-follow-jumps \ | ||
# -fcse-skip-blocks -frerun-cse-after-loop -frerun-loop-opt -fgcse \ | ||
# -fgcse-lm -fgcse-sm -fgcse-las -fdelete-null-pointer-checks \ | ||
# -foptimize-sibling-calls -fcaller-saves -Winline \ | ||
# -fno-strict-aliasing \ | ||
# -fschedule-insns -fschedule-insns2 | ||
|
||
# broken | ||
#-fstrict-aliasing | ||
#-fschedule-insns -fschedule-insns2 | ||
|
||
#-fforce-mem -foptimize-sibling-calls -fstrength-reduce -fcse-follow-jumps | ||
#-fcse-skip-blocks -frerun-cse-after-loop -frerun-loop-opt -fgcse | ||
#-fgcse-lm -fgcse-sm -fgcse-las -fdelete-null-pointer-checks | ||
#-fexpensive-optimizations -fregmove -fschedule-insns -fsched-ule-insns2 | ||
#-fsched-interblock -fsched-spec -fcaller-saves -fpeep-hole2 | ||
#-freorder-blocks -freorder-functions -fstrict-aliasing | ||
#-funit-at-a-time -falign-functions -falign-jumps -falign-loops | ||
#-falign-labels -fcrossjumping | ||
|
||
#-finline-functions, -fweb, -frename-registers and -funswitch-loops | ||
|
||
CFLAGS = $(OPTIMOPT) $(SYMBOLSOPT) -std=gnu99 -I/usr/X11R6/include -I. -I$(LIFE) -I$(EMULATOR) -I$(X86EMULATOR) $(MAINOPTIONS) $(OPTIONS) | ||
AFLAGS = $(SYMBOLSOPT) -I. -I$(LIFE) -I$(EMULATOR) -I$(X86EMULATOR) $(MAINOPTIONS) $(OPTIONS) | ||
|
||
.SUFFIXES: | ||
.SUFFIXES: .o .c .S | ||
|
||
.c.o: | ||
$(CC) $(CFLAGS) -o $@ -c $< | ||
|
||
.S.o: | ||
$(CC) $(AFLAGS) -o $@ -c $< | ||
|
||
SRCS = main.c spy.c world_tools.c utilities.c \ | ||
$(LIFE)/cold_load.c $(LIFE)/console.c $(LIFE)/disks.c $(LIFE)/initialization.c \ | ||
$(LIFE)/network.c $(LIFE)/message_channels.c $(LIFE)/polling.c $(LIFE)/queues.c \ | ||
$(LIFE)/signals.c $(LIFE)/unixcrypt.c \ | ||
$(EMULATOR)/interfac.c $(EMULATOR)/interpds.c $(EMULATOR)/externals.c \ | ||
$(EMULATOR)/memory.c | ||
|
||
NETWORKSOURCES = $(LIFE)/network-osf.c \ | ||
$(LIFE)/network-linux.c $(LIFE)/network-tun-linux.c \ | ||
$(LIFE)/network-darwin.c $(LIFE)/network-libpcap.c | ||
|
||
FAKEEMULATOR=y | ||
ifndef FAKEEMULATOR | ||
ASMS = $(EMULATOR)/emulator.S | ||
EMULATOROBJ = $(EMULATOR)/emulator.o | ||
COMPONENTS = $(CPU)/idispat.s $(CPU)/ifuncom1.s $(CPU)/ifuncom2.s \ | ||
$(CPU)/ifungene.s $(CPU)/ifunfcal.s $(CPU)/ifunloop.s \ | ||
$(CPU)/ifunlist.s $(CPU)/ifuninst.s $(CPU)/ifunmath.s \ | ||
$(CPU)/ifunarra.s $(CPU)/ifunmove.s $(CPU)/ifunpred.s \ | ||
$(CPU)/ifunsubp.s $(CPU)/ifunfext.s $(CPU)/ifunlexi.s \ | ||
$(CPU)/ifunbits.s $(CPU)/ifunblok.s $(CPU)/ifunbind.s \ | ||
$(CPU)/ifunfull.s $(CPU)/ifunbnum.s $(CPU)/ifuntrap.s \ | ||
$(CPU)/ihalt.s $(CPU)/idouble.s $(CPU)/ifunjosh.s \ | ||
$(CPU)/ifuntran.s | ||
else | ||
# ASMS = $(EMULATOR)/fake_emulator.c | ||
# EMULATOROBJ = $(EMULATOR)/fake_emulator.o | ||
ASMS = stub/stub.c | ||
EMULATOROBJ = stub/stub.o | ||
COMPONENTS = | ||
endif | ||
|
||
OBJS = $(LIFE)/cold_load.o $(LIFE)/console.o $(LIFE)/disks.o $(LIFE)/initialization.o \ | ||
$(LIFE)/network.o $(LIFE)/message_channels.o $(LIFE)/polling.o $(LIFE)/queues.o \ | ||
$(LIFE)/signals.o $(LIFE)/unixcrypt.o \ | ||
world_tools.o utilities.o spy.o \ | ||
$(EMULATOR)/interfac.o $(EMULATOR)/interpds.o $(EMULATOR)/externals.o \ | ||
$(EMULATOR)/memory.o $(EMULATOROBJ) | ||
|
||
EMULATORINCLUDES = $(EMULATOR)/aihead.h $(CPU)/aistat.h $(EMULATOR)/ivoryrep.h | ||
|
||
OTHEROBJS = | ||
|
||
ifdef NONSHARED | ||
OTHEROBJS += | ||
# LIBRARIES = -lpthread -lc -lX11 -lm -lpcap | ||
LIBRARIES = -lpthread -lc -lX11 -lm | ||
EARLYLIBS = -L/opt/ppc64/X11R6/lib | ||
else | ||
OTHEROBJS += | ||
# LIBRARIES = -lpthread -lc -lX11 -lm | ||
# EARLYLIBS = -L/opt/ppc64/X11R6/lib | ||
# LIBRARIES = -rdynamic -lpthread -lc -lX11 -lm -ldl -lX11-xcb -lpcap | ||
# LIBRARIES = -rdynamic -lpthread -lc -lX11 -lm -ldl -lX11-xcb | ||
LIBRARIES = -rdynamic -lpthread -lc -lX11 -lm -ldl -lcrypt | ||
EARLYLIBS = -L/usr/X11R6/lib64 -L/usr/X11R6/lib | ||
endif | ||
|
||
ifdef PROFILE | ||
override PROFILE = -p | ||
endif | ||
|
||
all: clean genera | ||
nocona: clean genera.nocona | ||
|
||
$(SRCS): $(EMULATORINCLUDES) | ||
|
||
$(LIFE)/network.o: $(NETWORKSOURCES) $(EMULATORINCLUDES) | ||
|
||
alpha-emulator/aistat.h: alpha-emulator/aistat.sid | ||
$(CCL) -b -Q -l compile-alpha-emulator.lisp </dev/null | ||
|
||
emulator/aihead.h: emulator/aihead.sid | ||
$(CCL) -b -Q -l compile-alpha-emulator.lisp </dev/null | ||
|
||
$(CPU)/aistat.h: alpha-emulator/aistat.sid | ||
$(CCL) -b -Q -l compile-alpha-emulator.lisp </dev/null | ||
cp alpha-emulator/aistat.h $(CPU)/aistat.h | ||
|
||
stub/stub.o: stub/i*.c stub/float2 stub/dispatch stub/*.c alpha-emulator/*.lisp $(EMULATORINCLUDES) | ||
|
||
stub/i*.c: alpha-emulator/*.as alpha-emulator/*lisp alpha-emulator/*.c alpha-emulator/*.h stub/*.lisp $(EMULATORINCLUDES) | ||
cd stub ; $(CLISP) process.lisp | ||
|
||
$(EMULATOROBJ): $(ASMS) $(COMPONENTS) $(EMULATORINCLUDES) | ||
|
||
$(EMULATOR)/externals.o: $(EMULATOR)/externals.c $(EMULATORINCLUDES) | ||
$(EMULATOR)/interpds.o: $(EMULATOR)/interpds.c $(EMULATORINCLUDES) $(EMULATOR)/asmfuns.h | ||
$(EMULATOR)/interfac.o: $(EMULATOR)/interfac.c $(EMULATORINCLUDES) | ||
spy.o: spy.c $(EMULATORINCLUDES) | ||
|
||
genera: CFLAGS = $(OPTIMOPT) $(SYMBOLSOPT) -std=gnu99 -I/usr/X11R6/include -I. -I$(LIFE) -I$(EMULATOR) -I$(X86EMULATOR) $(MAINOPTIONS) $(OPTIONS) | ||
|
||
genera: main.o byteswap_world.o $(OBJS) $(OTHEROBJS) | ||
cc $(PROFILE) -o genera $(EARLYLIBS) $(OTHEROBJS) main.o $(OBJS) $(LIBRARIES) | ||
cc $(PROFILE) -o byteswap_world $(EARLYLIBS) $(OTHEROBJS) byteswap_world.o $(OBJS) $(LIBRARIES) | ||
|
||
#OPTIMOPT = -Ofast -march=nocona -fno-strict-aliasing | ||
genera.nocona: CFLAGS = $(NOCONAOPTIMOPT) $(SYMBOLSOPT) -std=gnu99 -I/usr/X11R6/include -I. -I$(LIFE) -I$(EMULATOR) -I$(X86EMULATOR) $(MAINOPTIONS) $(OPTIONS) | ||
|
||
genera.nocona: main.o byteswap_world.o $(OBJS) $(OTHEROBJS) | ||
cc $(PROFILE) -o genera.nocona $(EARLYLIBS) $(OTHEROBJS) main.o $(OBJS) $(LIBRARIES) | ||
cc $(PROFILE) -o byteswap_world.nocona $(EARLYLIBS) $(OTHEROBJS) byteswap_world.o $(OBJS) $(LIBRARIES) | ||
|
||
minima: main.o $(OBJS) $(OTHEROBJS) | ||
cc $(PROFILE) -o minima $(EARLYLIBS) $(OTHEROBJS) main.o $(OBJS) $(LIBRARIES) | ||
|
||
iverify: main.o $(OBJS) $(OTHEROBJS) | ||
cc $(PROFILE) -o iverify $(EARLYLIBS) $(OTHEROBJS) main.o $(OBJS) $(LIBRARIES) | ||
|
||
clean: | ||
rm -f main.o byteswap_world.o $(OBJS) *~ ./stub/i*.c ./stub/*~ $(LIFE)/*~ $(EMULATOR)/*~ $(CPU)/*~ **/*~ | ||
|
Oops, something went wrong.