]> mj.ucw.cz Git - minsk.git/blob - readme.html
fa6e217f7fe060697484b880ee21ee21cf485c56
[minsk.git] / readme.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html40/strict.dtd">
2 <html><head>
3 <title>Minsk-2 Emulator</title>
4 <link rel=stylesheet title=Default href="minsk.css" type="text/css" media=all>
5 </head><body>
6 <h1>Minsk-2 Emulator</h1>
7
8 <p id=top>(see it <a href='.'>in action</a>)
9
10 <h2>Introduction</h2>
11
12 <p>This is an emulator of Минск-2 (Minsk-2) &ndash; a mainframe computer from
13 the Soviet era, produced around 1963 in the Byelorussian SSR.
14
15 <p>We have written the emulator for a task in the <a href='http://www.podrate.cz/'>Po drátě</a>
16 hacking contest (sorry, the page is in Czech only). The participants were to
17 find a password hidden in the machine's memory, which involved figuring out how
18 the machine works and reconstructing at least a part of its instruction set.
19 You can try your luck, the password is still there.
20
21 <p>Online resources about this machine are rather scarce. English Wikipedia contains
22 a fairly short article on the <a href='http://en.wikipedia.org/wiki/Minsk_family_of_computers'>Minsk
23 family of computers</a>, Russian Wikipedia reveals a couple of technical details on
24 <a href='http://ru.wikipedia.org/wiki/%D0%9C%D0%B8%D0%BD%D1%81%D0%BA-22'>Minsk-22</a>,
25 which is essentially Minsk-2 with extra memory. The Russian Virtual Computer Museum
26 tells the <a href='http://www.computer-museum.ru/english/minsk0.htm'>history of the
27 Minsk family</a> in its full glory, but it lacks details. The best resource we could
28 find is the book Programmirovanije dlja ECBM Minsk-22 by V. M. Salikov, and the emulator
29 is based solely on that plus a bit of guesswork.
30
31 <p>We have written a <a href='INSTRUCTIONS'>brief description of the instruction set</a>
32 for our own reference.
33
34 <p>When using the emulator, please make sure that your browser is able to display
35 Cyrillic letters, as all error messages are printed in Russian. (This is not historically
36 accurate, the real machine never printed error messages &ndash; it used signal lights on the
37 control panel instead.)
38
39 <h2>Features</h2>
40
41 <p>We have tried to get as close to the behavior of the real machine as we could,
42 but the description in the Salikov's book is not as detailed as we would wish,
43 so several things remained to be guessed. Here is a list of likely differences
44 against the real Minsk-2:
45
46 <ul>
47 <li>Rounding of fixed-point and floating-point computations is likely to be different.
48 <li>Arithmetic overflow is always fatal.
49 <li>Exact behavior of negative zero is unknown. We always produce positive zero as a result.
50 <li>Contents of the R1 and R2 registers displayed when the program stops probably
51     differ from the real front panel. However, the behavior visible to the program
52     should be correct.
53 <li>Among the rich set of I/O devices, only the line printer is implemented.
54 <li>Malformed instructions are probably handled differently.
55 </ul>
56
57 <h2>Input format</h2>
58
59 <p>The input to the emulator follows a fairly simple format:
60
61 <pre id=output><code>; An example
62
63 @0050
64 -62 00 7000 1000
65 -62 00 7006 1001
66 -62 00 7400 0000
67 -00 00 0000 0000
68 @1000
69 +65 45 53 53 56 17
70 +42 56 60 53 44 16
71 </code></pre>
72
73 <p>Empty lines and lines starting with a semicolon are ignored.
74 <code>@xxxx</code> sets the memory address (in octal), all other
75 lines specify signed 36-bit octal values to be written to consecutive
76 memory cells. Spaces inside numbers are purely decorative and the parser
77 ignores them.
78
79 <h2>Examples</h2>
80
81 <p>Here is a couple of easy example programs for you to try:
82
83 <ul>
84 <li><a href='.?example=hello'>Hello, world #1</a>
85 <li><a href='.?example=hello2'>Hello, world #2</a>
86 <li><a href='.?example=arith'>Aritmetics</a>
87 <li><a href='.?example=loop'>A simple loop</a>
88 </ul>
89
90 <h2>Author and copyright</h2>
91
92 <p>The emulator has been written by <a href='http://mj.ucw.cz/'>Martin Mareš</a>
93 in 2010 and it is copyrighted by its author.
94
95 <p>The program is free software. You can freely use it and distribute it under the terms of the
96 <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU General Public License version 2</a>.
97
98 <p>Bug reports and suggestions are welcome (especially from people who have encountered
99 the real Minsk), please contact the author by e-mail at <a href='mailto:mj@ucw.cz'>mj@ucw.cz</a>.
100
101 <h2>Download</h2>
102
103 <p>You can download the source code of the emulator from <a href='ftp://atrey.karlin.mff.cuni.cz/pub/local/mj/minsk'>our FTP server</a>.
104
105 <p>It has been developed on Linux with GCC and it should run on all POSIX systems,
106 possibly requiring trivial modifications.
107
108 </body></html>