usim

Check-in [bfcbe36d94]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:README.md, lmdf.text: Update.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | ams/sdl
Files: files | file ages | folders
SHA3-256: bfcbe36d94fd5bafa8519840160349c1ec81af6da75a502d3c2589fd07c4721f
User & Date: ams 2024-06-18 15:01:11
Context
2024-06-19
06:45
Move allup key handling to respective backend. check-in: 032a512225 user: ams tags: ams/sdl
2024-06-18
15:01
README.md, lmdf.text: Update. check-in: bfcbe36d94 user: ams tags: ams/sdl
14:49
Break out some duplicate code in "allup" routines. check-in: 822c10cf21 user: ams tags: ams/sdl
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to README.md.

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

When usim starts, it tries to read usim.ini which is a INI style
configuration file consisting of sections, and key/value pairs.

## `usim` section

  - `state_filename`: Specifies a state file that is saved either when
    a user sends SIGINFO/SIGUSR1, or on halt if the -d option was
    passed to usim.

  - `sys_directory`: Specifies a directory where all System sources
    live, by mapping the `/tree` prefix in the FILE server to this directory. 
	Note that all other files and directories, outside `/tree` are
    also available through the local FILE server. Better: use the `fs_root_directory` option below.

  - `fs_root_directory`: Specifies where the root of the files served by the local FILE server is. 
	This provides a better "sandbox" for the FILE server than the `sys_directory` option.
	If your sources were previously in your `sys` subdirectory, if you move them to a `tree`
	subdirectory of the `fs_root_directory`, everything will work fine.
	You can use links in the `fs_root_directory` if you want to use directories outside it, e.g. `/tmp` or `/home`.

  - `kbd`: Specify what keyboard type to use.  This affects what type
    of a keyboard the CADR sees, _not_ the actual keyboard layout from
    the host.  Possible values are:

      - `knight`: Send Knight (old) keyboard scancodes.  [Keyboard
        layout](https://tumbleweed.nu/lm-3/schematics/knight-1-layout.png)
      - `cadet`: Send Space-Cadet (new) keyboard scancodes. [Keyboard
	Layout](https://tumbleweed.nu/lm-3/schematics/cadet-1-layout.png),
	[Front
	keys](https://tumbleweed.nu/lm-3/schematics/cadet-2-layout.png).

  - `grab_keyboard`: If set to `true', try to grab the keyboard.

## `ucode` section

  - `prommcr_filename`: Specifies the boot PROM microcode load.

  - `promsym_filename`: Specifies the symbol table for the boot PROM.

  - `mcrsym_filename`: Specifies the symbol table for the microcode.

## `chaos` section

  - `backend`: Specifies which back-end to use; possible values are:
     - `daemon`: Tries to connect to the `chaosd` daemon.
     - `local`: Uses the embedded Chaosnet NCP.
     - `udp`: Uses Chaos-over-UDP to a Chaosnet bridge.

  - `myname`: Specifies the name of the simulated machine; this is
    used to figure out which Chaosnet address we have.

  - `servername`: Specifies the name of the NCP; this is only used
    when the Chaosnet backend is `local` (or `udp` with the `udp_local_hybrid` option, see below).

  - `bridgeip`: IP or host name of the Chaosnet bridge to use for Chaos-over-UDP.
  - `bridgeport`: UDP port of the Chaosnet bridge (default 42042)
  - `bridgeport_local`: Local UDP port to use for Chaos-over-UDP (default 42042).
  - `bridgechaos`: Chaosnet address of the Chaosnet bridge (octal).
  - `udp_local_hybrid`: Use a hybrid of "local" and "udp", where the address of `servername` is treated locally, but all others are handled over UDP. Requires `udp` backend and configuration of `servername` (and `hosts`).

  - `hosts`: Hosts table containing hostname to Chaosnet address
    mappings.  The format of this file is the same as for the Lisp
    Machine.

## `disk` section

  - `disk0_filename`, `disk1_filename`, `disk2_filename`,
    `disk3_filename`, `disk4_filename`, `disk5_filename`,
    `disk6_filename`, `disk7_filename`:
    Specify which disks drives are available.

## `trace` section

  - `level`: Specify trace level.  See utrace.h for possible levels

  - `facilities`: Specify what facilities to trace.  See utrace.h for
    possible values.

## `idle` section

  - `cycles`: amount of cycles since last work to consider idle

  - `quantum`: cycles to wait until sleep call








|
|


|

|

|






|
|

|
|
|

















|
|
|


|


|








|
|




|
|
|






|







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

When usim starts, it tries to read usim.ini which is a INI style
configuration file consisting of sections, and key/value pairs.

## `usim` section

  - `state_filename`: Specifies a state file that is saved either when
	a user sends SIGINFO/SIGUSR1, or on halt if the -d option was
	passed to usim.

  - `sys_directory`: Specifies a directory where all System sources
	live, by mapping the `/tree` prefix in the FILE server to this directory.
	Note that all other files and directories, outside `/tree` are
	also available through the local FILE server. Better: use the `fs_root_directory` option below.

  - `fs_root_directory`: Specifies where the root of the files served by the local FILE server is.
	This provides a better "sandbox" for the FILE server than the `sys_directory` option.
	If your sources were previously in your `sys` subdirectory, if you move them to a `tree`
	subdirectory of the `fs_root_directory`, everything will work fine.
	You can use links in the `fs_root_directory` if you want to use directories outside it, e.g. `/tmp` or `/home`.

  - `kbd`: Specify what keyboard type to use.  This affects what type
	of a keyboard the CADR sees, _not_ the actual keyboard layout from
	the host.  Possible values are:

	  - `knight`: Send Knight (old) keyboard scancodes.  [Keyboard
		layout](https://tumbleweed.nu/lm-3/schematics/knight-1-layout.png)
	  - `cadet`: Send Space-Cadet (new) keyboard scancodes. [Keyboard
	Layout](https://tumbleweed.nu/lm-3/schematics/cadet-1-layout.png),
	[Front
	keys](https://tumbleweed.nu/lm-3/schematics/cadet-2-layout.png).

  - `grab_keyboard`: If set to `true', try to grab the keyboard.

## `ucode` section

  - `prommcr_filename`: Specifies the boot PROM microcode load.

  - `promsym_filename`: Specifies the symbol table for the boot PROM.

  - `mcrsym_filename`: Specifies the symbol table for the microcode.

## `chaos` section

  - `backend`: Specifies which back-end to use; possible values are:
	 - `daemon`: Tries to connect to the `chaosd` daemon.
	 - `local`: Uses the embedded Chaosnet NCP.
	 - `udp`: Uses Chaos-over-UDP to a Chaosnet bridge.

  - `myname`: Specifies the name of the simulated machine; this is
	used to figure out which Chaosnet address we have.

  - `servername`: Specifies the name of the NCP; this is only used
	when the Chaosnet backend is `local` (or `udp` with the `udp_local_hybrid` option, see below).

  - `bridgeip`: IP or host name of the Chaosnet bridge to use for Chaos-over-UDP.
  - `bridgeport`: UDP port of the Chaosnet bridge (default 42042)
  - `bridgeport_local`: Local UDP port to use for Chaos-over-UDP (default 42042).
  - `bridgechaos`: Chaosnet address of the Chaosnet bridge (octal).
  - `udp_local_hybrid`: Use a hybrid of "local" and "udp", where the address of `servername` is treated locally, but all others are handled over UDP. Requires `udp` backend and configuration of `servername` (and `hosts`).

  - `hosts`: Hosts table containing hostname to Chaosnet address
	mappings.  The format of this file is the same as for the Lisp
	Machine.

## `disk` section

  - `disk0_filename`, `disk1_filename`, `disk2_filename`,
	`disk3_filename`, `disk4_filename`, `disk5_filename`,
	`disk6_filename`, `disk7_filename`:
	Specify which disks drives are available.

## `trace` section

  - `level`: Specify trace level.  See utrace.h for possible levels

  - `facilities`: Specify what facilities to trace.  See utrace.h for
	possible values.

## `idle` section

  - `cycles`: amount of cycles since last work to consider idle

  - `quantum`: cycles to wait until sleep call

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
205
   | F4           | n/a        | Terminal     |
   | F5           | Top-H      | Help         |
   | F6           | Clear      | Clear-Input  |
   | F7           | Break      | Break        |
   | ------------ | ---------- | ------------ |
   | Page Up      | Top-Call   | Abort        |
   | Page Down    |            | Resume       |
   | Home      |                   | Break        |
   | End          | Top-CR     | End          |

# What programs are here?

  - usim: MIT CADR simulator
  - diskmaker: utility for managing disk packs

Debugging utilities:

  - readmcr: microcode disassembler
  - di: macrocode disassembler
  - lod: examine load bands

# Release History

> v0.10 - TBD

> v0.9 - Minor speedups.
>        Mac OSX (little endian) fixes.







|










<
<







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
   | F4           | n/a        | Terminal     |
   | F5           | Top-H      | Help         |
   | F6           | Clear      | Clear-Input  |
   | F7           | Break      | Break        |
   | ------------ | ---------- | ------------ |
   | Page Up      | Top-Call   | Abort        |
   | Page Down    |            | Resume       |
   | Home         |            | Break        |
   | End          | Top-CR     | End          |

# What programs are here?

  - usim: MIT CADR simulator
  - diskmaker: utility for managing disk packs

Debugging utilities:

  - readmcr: microcode disassembler



# Release History

> v0.10 - TBD

> v0.9 - Minor speedups.
>        Mac OSX (little endian) fixes.
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
and Howard 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?".

# Appendix A: Dump file format

The dump file is a sequence of 32 bit words.  It starts with one word
of magic ("LDMF"), followed by a word of the current version (0x0001
at the moment).  It then consists of a sequence of segments.  Each
segment starts with a one-word tag (four ASCII letters), then a
one-word length, then <length> words of data.

At the moment, the following segments are dumped:

  - LVMS: Lisp Machine Version (78, 98 or 99)
  - PDLI: the PDL index
  - PDLP: the PDL pointer
  - LCLV: the last value of LC
  - LCHL: the list of recent LC values
  - L1MP: the L1 map (one word per entry)
  - L2MP: the L2 map (one word per entry)
  - PDLM: the PDL memory
  - PMEM: the physical memory

Any program reading or writing dump files should just ignore any
unknown segments.







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
239
240
241
242
243
244
245























and Howard 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?".























Changes to lmdf.text.

1
2





















3
4
5
6
7
8
9
LMDF format description






















LMDF Format (version 1); roughly

  4c4d 4446 0100 0000	LMDF....	; 32-bit magic  + 32-bit version
  5044 4c49 0100 0000	PDLI....	; 32-bit string + 32-bit length
  0301 0000 		     	....		; data...
  5044 4c50 0100 0000	PDLP....	
  0701 0000               	....


>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







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
LMDF format description

The dump file is a sequence of 32 bit words.  It starts with one word
of magic ("LDMF"), followed by a word of the current version (0x0001
at the moment).  It then consists of a sequence of segments.  Each
segment starts with a one-word tag (four ASCII letters), then a
one-word length, then <length> words of data.

At the moment, the following segments are dumped:

  - LVMS: Lisp Machine Version (78, 98 or 99)
  - PDLI: the PDL index
  - PDLP: the PDL pointer
  - LCLV: the last value of LC
  - LCHL: the list of recent LC values
  - L1MP: the L1 map (one word per entry)
  - L2MP: the L2 map (one word per entry)
  - PDLM: the PDL memory
  - PMEM: the physical memory

Any program reading or writing dump files should just ignore any
unknown segments.

LMDF Format (version 1); roughly

  4c4d 4446 0100 0000	LMDF....	; 32-bit magic  + 32-bit version
  5044 4c49 0100 0000	PDLI....	; 32-bit string + 32-bit length
  0301 0000 		     	....		; data...
  5044 4c50 0100 0000	PDLP....	
  0701 0000               	....