forked from unya/usim
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathREADME
204 lines (148 loc) · 5.74 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
MIT CADR simulator
What is this?
-------------
This is a program was originally written by Brad Parker
<[email protected]>, and is designed to emulate the MIT CADR
microprocessor hardware and peripherals. The CADR is a second
generation MIT Lisp Machine, and a good description can be found at
https://lm-3.github.io/cadr.html .
This program interprets the microcode found in the machine starting
with the boot PROM which runs when the machine is first powered on.
The PROM microcode loads additional microcode from the simulated disk
and then boots the load band.
There is sufficient hardware support for the disk and network to
provide a reasonaly functional Lisp Machine experience.
Quickstart
----------
Grab the pre-made disk image and run as "./usim". Enter the data and
time and press "F1" and "F7" to clean up the display. You're up!
If you want to use the network download and run chaosd; see
https://github.com/lm-3/chaos .
Keyboard bindings
-----------------
Keys are mapped in the following manner by default:
esc Alt Mode
f1 Terminal
f2 System
f3 Network
f4 Abort
f5 Clear Input
f6 Help
f7 Page
f8
f9
f10
f11
f12
pgup Break
pgdn {appears to crash usim}
home Call
end End
backspace rubout
backspace Rub Out
To enable/disable "MORE processing":
Terminal-M Toggle **MORE** processing.
Terminal-0-M Disable **MORE** processing.
Building
--------
UNIX-like systems:
Just run "make".
Everything else:
Unsupported.
Making a disk
-------------
It is recommend to use the distributed disk image unless you
understand the structure of a Trident disk. The program "diskmaker"
will interpret a disk image partition table and make a new disk using
a template file.
The distributed disk was made using the default template. The
template file basically feeds all the parameters to "diskmaker" to
build a valid disk image an populate it with microcode and a load
band.
Running
-------
Everything basically works. The simulator will boot a load band and
talk on the (simulated) network.
The emulation is reasonably complete (modulo bugs). It gets through
the boot PROM code, loads the microcode band, copies the band to swap
and executes the load band cleanly. The system boots and runs.
The console display is drawn into an X11 window which tracks the mouse
and keyboard. The simplest way to run it is
./usim
You can make a warm start state file with
./usim -S
Run the emulator, enter the date and time. Then C-c twice. The
memory state will be saved in "usim.state". You can then warm start
to come up quickly:
./usim -w
Note that the warm start state file is intimately connected to the
disk image. If the two are mismatched bad things will happen. The
two files should be portable across different host operating systems.
The disk emulation reads from a "disk image" file which is constructed
with "diskmaker". The disk image looks like a Trident T-300 disk to
the microcode, complete with a parition table.
The TV board and IOB are emulated. An X11 window displays in
monochrome at 768x1024. The mouse and keyboard are tracked. The
keyboard is "mapped" to the old Knight keyboard.
The internal microsecond clock and the 60hz TV interrupt currently try
and use wall clock time for a more realistic simulation.
There is also emulation of the Chaosnet board. Packets are sent via a
Unix socket to a Chaos daemon which distributes them to various client
programs (see https://github.com/lm-3/chaos).
There are some hacks for noticing Unibus access but no Xbus/Unibus
mapping support.
There's still a long delay when booting the distributed world. The
system is available right away, however, try "F2-p". If you are
impatient try the warm start state file, but be sure to use it with
it's matching disk image!
The mouse emulation works but doesn't track exactly.
What programs are here?
-----------------------
usim - the CADR emulator
diskmaker - program to make Trident disk images for the MIT CADR from
a microcode (MCR) file, and a load band (LOD)
readmcr - utility to read MCR file
lod - utiltity to pick apart load bands and show their insides
lmfs - raw hack to read files from (Symbolics) LMFS paritition
cc - crude CADR debugger program
Recent Changes
--------------
v0.10 - TBD
v0.9 - Minor speedups.
Mac OSX (little endian) fixes.
Warm start support (usim.state).
Mouse/microcode synchronization (thanks to Devon for the idea)
v0.8 - Speedups and bug fixes.
chaosd/FILE server supports rebuilding sources from server.
Can now resize screen.
v0.7 - Added raw X11 support.
Bjorn Victor's new keyboard configuration code.
Diskmaker now takes a template file and will show info on existing
disk images.
v0.6 - Better network support.
Standing on the Shoulders of Giants
-----------------------------------
I (Brad Parker) would like to thanks the following people for helping
me on this, er, project:
Tom Knight
Howard Shrobe
Richard Greenblatt
Danial Weinreb
Al Kossow
George Carrette
Steve Krueger
Alastair Bridgewater
John Wroclawski
Bjorn Victor
Devon Sean McCullough
Without their support or encouragement I would probably not have done
this. Certainly if Al had not sent me the PROM images I would never
have started. And without Dan's box-of-tapes I could never have
succeeded. RG offered some good explainations when I was confused.
TK and Howie were extremely supportive at the just right moment (and
answered a lot of email). George offered many good suggestions and
answered lots of questions. Steve helped me locate missing pages from
"memo 528". Alastair did some amazing work on several explorer
emulators. Bjorn has used the code, offered many suggestions, fixes
and improvements. And John's office is where I first saw a 3600
console and said, "what's that?".