Beta DPS8/M simulator + Multics 12.6f


Magic Sam

Forever Homebrew
Joined
Aug 10, 2007
Messages
2,544
Age
42
Location
Yuzu onsen
Hi all :)

With a lot of help from Charles Anthony (one of the authors) and Vincent Scarafino (who ported the simulator to the Raspberry Pi), I have compiled the DPS8/M simulator on the Pandora:

http://multicians.org/simulator.html
https://sourceforge.net/projects/dps8m/

Grab it on the Repo while it's hot !

http://repo.openpandora.org/?page=detail&app=multics-magicsam

New in build #1

- DPS8/M simulator (32bit_new branch, latest git commit on July the 23rd)
- Libuv (from git)
- prt2pdf is in the bin directory: it converts simulated printed files to PDF
- Compiled with @ptitSeb 's latest beta Code::Blocks (GCC 7.1, all opimizations are ON)
- I wrote a simple zenity script to help you download / unpack the latest 12.6f Multics release (~120MB, ~570MB unzipped)

TODO:

- Find / make a better icon (fixed in build #2)
- Provide a better description (fixed in build #2)
- Add more previews
- Add the source code (fixed in build #2)

KNOWN BUGS:

- "instr_speed" (benchmark) doesn't work (the Pandora is too slow :( ) (see below)
- This "32bit_new" branch is pretty much untested, things will break

WHY ?

Because with this simulator, one can run the latest 12.6f Multics release on the Pandora :D

HOWTO:

http://swenson.org/multics_wiki/index.php?title=Getting_Started#Using_the_Multics_QuickStart

/!\ This application will have your Pandora's CPU and RAM for breakfast: overclock accordingly, and use some swap file /!\

* Click on the Multics icon in the Education menu (XFCE)

* If you don't already have Multics 12.6f installed, a simple zenity script will take care of that for you :)

* Be patient ! It takes 5+ minutes to boot...

* Wait until you see the following lines appear in your Multics Operator Console:
0939.3 RCP: Attached tapa_00 for Utility.SysDaemon.z
0939.3 RCP: Detached tapa_00 from Utility.SysDaemon.z
0939.3 RCP: Attached rdra for Utility.SysDaemon.z
0939.3 RCP: Detached rdra from Utility.SysDaemon.z
0939.3 RCP: Attached puna for Utility.SysDaemon.z
0939.3 RCP: Detached puna from Utility.SysDaemon.z
0939.3 RCP: Attached prta for Utility.SysDaemon.z
0939.3 RCP: Detached prta from Utility.SysDaemon.z

* Then, open a new terminal, and type:
telnet localhost 6180

* You'll be asked to choose a communication channel: just pick the first available one by pressing ENTER.

* Log in as "Repair" and change your password (default is "repair")
login Repair -cpw

When you are done, log off your "Repair" session (use the "logout" command), then follow this procedure to shutdown Multics (from the Operator Console):

http://swenson.org/multics_wiki/index.php?title=Using_Multics#Shutting_Down_Multics

Cheers, Magic Sam
 
Last edited:
Hi all :)

Charles Anthony told me how to fix the "instr_speed" issue:
Hot patch instructions:

Login as repair

[Fetch some source code:]

ac x >ldd>tools>s>bound_system_test_.s test_speed.alm

[Invoke an editor; it does not prompt]

qedx

[Read the source into the buffer]

r test_speed.alm

[Search for the code to be changed]

/instr_limit:/

[Multiply the time limits by 10]

.+1,.+15 s/00/000/

[Print the changed values]

.-15,.p

[should display:]

instr_limit:

dec 12000

dec 14000

dec 9000

dec 14000

dec 20000

dec 21000

dec 29000

dec 28000

dec 20000

dec 29000

dec 28000

dec 17000

dec 12000

dec 9000

dec 24000

[Save the changes]

w

[Quit the editor]

q

[Assemble the code]

alm test_speed

[Get the already compiled bits]

cp >ldd>tools>o>bound_system_test_.archive

[Move the patched code into the archive]

ac ud bound_system_test_ test_speed

[Bind the object files]

bind bound_system_test_

[Run the new executable]

[pwd]>instr_speed

Cheers, Magic Sam
 
Hi all !

@unused0 : welcome Charles ! And sorry for giving you too much credit (edited my first post) :p

Cheers, Magic Sam
[doublepost=1501612021,1501611365][/doublepost]@unused0: I see there's a lot of activity in the "rc9" branch. Will it lead to a new dps8/m 2.0 version soon ?

Cheers, Magic Sam
[doublepost=1501612397][/doublepost]And here are the results of "instr_speed" on my Rebirth @ 3 different clock speeds:

* 600 MHz
[pwd]>instr_speed
INSTRUCTION SPEED TEST -- 07/31/17 1005.2 pst Mon


* * * * * * * * * * * * * * * * * * * * * *


TEST 1: (lda/sta - even/odd)

MIPS AVE = 0.309, TIME AVE = 3409, 3236 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 2: (lda/sta - odd/even)

MIPS AVE = 0.302, TIME AVE = 3554, 3312 NANOSECONDS
PF = 0, LS = 1, CUTOFF = 14000

* * * * * * * * * * * * * * * * * * * * * *


TEST 3: (lda/lda/lda...)

MIPS AVE = 0.315, TIME AVE = 3347, 3173 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 4: (lda/sta - even/odd bit29)

MIPS AVE = 0.279, TIME AVE = 3881, 3582 NANOSECONDS
PF = 0, LS = 1, CUTOFF = 14000

* * * * * * * * * * * * * * * * * * * * * *


TEST 5: (eppbp/spribp - even/odd)

MIPS AVE = 0.347, TIME AVE = 3049, 2884 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 6: (eppbp/spribp - odd/even)

MIPS AVE = 0.338, TIME AVE = 3310, 2960 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 7: (eppbp/spribp - even/odd indirect)

MIPS AVE = 0.275, TIME AVE = 3818, 3631 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 8: (eppbp/spribp - odd/even indirect)

MIPS AVE = 0.265, TIME AVE = 4231, 3775 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 9: (eppbp/spribp - even/odd bit29)

MIPS AVE = 0.315, TIME AVE = 3550, 3176 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 10: (eppbp/spribp - even/odd bit29ind)

MIPS AVE = 0.255, TIME AVE = 4208, 3924 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 11: (eppbp/spribp - odd/even bit29ind)

MIPS AVE = 0.261, TIME AVE = 4027, 3832 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 12: (random mix)

MIPS AVE = 0.279, TIME AVE = 4039, 3582 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 13: (lda 0,du...)

MIPS AVE = 0.416, TIME AVE = 2552, 2405 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 14: (nop 0,du...)

MIPS AVE = 0.409, TIME AVE = 2592, 2444 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 15: (lprpbp/sprpbp - even/odd bit29)

MIPS AVE = 0.311, TIME AVE = 3448, 3214 NANOSECONDS
r 10:05 13.512 2

* 825 MHz
[pwd]>instr_speed
INSTRUCTION SPEED TEST -- 07/31/17 1017.7 pst Mon


* * * * * * * * * * * * * * * * * * * * * *


TEST 1: (lda/sta - even/odd)

MIPS AVE = 0.428, TIME AVE = 2470, 2338 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 2: (lda/sta - odd/even)

MIPS AVE = 0.417, TIME AVE = 2673, 2400 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 3: (lda/lda/lda...)

MIPS AVE = 0.433, TIME AVE = 2475, 2311 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 4: (lda/sta - even/odd bit29)

MIPS AVE = 0.400, TIME AVE = 2639, 2503 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 5: (eppbp/spribp - even/odd)

MIPS AVE = 0.469, TIME AVE = 2557, 2133 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 6: (eppbp/spribp - odd/even)

MIPS AVE = 0.491, TIME AVE = 2161, 2036 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 7: (eppbp/spribp - even/odd indirect)

MIPS AVE = 0.386, TIME AVE = 2732, 2591 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 8: (eppbp/spribp - odd/even indirect)

MIPS AVE = 0.372, TIME AVE = 2998, 2685 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 9: (eppbp/spribp - even/odd bit29)

MIPS AVE = 0.455, TIME AVE = 2325, 2197 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 10: (eppbp/spribp - even/odd bit29ind)

MIPS AVE = 0.364, TIME AVE = 2895, 2749 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 11: (eppbp/spribp - odd/even bit29ind)

MIPS AVE = 0.358, TIME AVE = 2969, 2790 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 12: (random mix)

MIPS AVE = 0.401, TIME AVE = 2690, 2494 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 13: (lda 0,du...)

MIPS AVE = 0.572, TIME AVE = 1866, 1749 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 14: (nop 0,du...)

MIPS AVE = 0.557, TIME AVE = 2007, 1794 NANOSECONDS
PF = 0, LS = 3, CUTOFF = 9000

* * * * * * * * * * * * * * * * * * * * * *


TEST 15: (lprpbp/sprpbp - even/odd bit29)

MIPS AVE = 0.440, TIME AVE = 2407, 2274 NANOSECONDS
r 10:17 9.485 2

* 1 GHz
[pwd]>instr_speed
INSTRUCTION SPEED TEST -- 07/31/17 1021.7 pst Mon


* * * * * * * * * * * * * * * * * * * * * *


TEST 1: (lda/sta - even/odd)

MIPS AVE = 0.517, TIME AVE = 2095, 1935 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 2: (lda/sta - odd/even)

MIPS AVE = 0.519, TIME AVE = 2041, 1926 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 3: (lda/lda/lda...)

MIPS AVE = 0.536, TIME AVE = 1979, 1865 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 4: (lda/sta - even/odd bit29)

MIPS AVE = 0.487, TIME AVE = 2171, 2052 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 5: (eppbp/spribp - even/odd)

MIPS AVE = 0.594, TIME AVE = 1822, 1684 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 6: (eppbp/spribp - odd/even)

MIPS AVE = 0.579, TIME AVE = 2108, 1727 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 7: (eppbp/spribp - even/odd indirect)

MIPS AVE = 0.464, TIME AVE = 2277, 2153 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 8: (eppbp/spribp - odd/even indirect)

MIPS AVE = 0.461, TIME AVE = 2370, 2170 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 9: (eppbp/spribp - even/odd bit29)

MIPS AVE = 0.547, TIME AVE = 1952, 1828 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 10: (eppbp/spribp - even/odd bit29ind)

MIPS AVE = 0.441, TIME AVE = 2393, 2268 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 11: (eppbp/spribp - odd/even bit29ind)

MIPS AVE = 0.429, TIME AVE = 2616, 2331 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 12: (random mix)

MIPS AVE = 0.481, TIME AVE = 2264, 2078 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 13: (lda 0,du...)

MIPS AVE = 0.710, TIME AVE = 1506, 1408 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 14: (nop 0,du...)

MIPS AVE = 0.701, TIME AVE = 1520, 1426 NANOSECONDS

* * * * * * * * * * * * * * * * * * * * * *


TEST 15: (lprpbp/sprpbp - even/odd bit29)

MIPS AVE = 0.534, TIME AVE = 1986, 1872 NANOSECONDS
r 10:21 7.777 2

Here are Vincent Scarafino's results on his Raspberry Pi 2 for comparison:

http://multicians.org/vfs-simulator.html

Cheers, Magic Sam
 
Last edited:
Hi all :)

Build #2 is on the Repo !

http://repo.openpandora.org/?page=detail&app=multics-magicsam

New in build #2
- Updated DPS8/M simulator (rc9 branch, latest git commit on August 10th 2017)
- Updated libuv (latest git commit on August 08th 2017)
- Compiled with @ptitSeb 's latest beta Code::Blocks
- Multics 12.6f is downloaded from sourceforge.net (instead of Amazon S3)
- New red and black icon
- New preview picture of a 6180 mainframe computer
- Added all source codes to src directory

Cheers, Magic Sam
 
Last edited:
Hi all,

This new build often crashes with the following error message:
DBG(47530170984907)> ERR ERR: Need status register data format
DBG(47530170984955)> ERR ERR: doPayloadChan expected IDCW 10 (12)
CONSOLE: ALERT
sys_trouble: Fault in idle process.
bce (crash) 0032.6: M->

I'm investigating...

Cheers, Magic Sam
 
Hi all,

That "fault in idle process" issue should now be fixed upstream, in the "tr_work" branch.

I'll update this package ASAP.

Cheers, Magic Sam
 
Hi all,

Dps8m v2.1 is (almost) out, and so is Multics Release 12.7 :)


I'll try my best to update my old package from 2017 as soon as possible :


Cheers, Magic Sam
 
Back
Top