From: Michael Sokolov <msokolov_at_ivan.Harhan.ORG>
Date: Sat Feb 26 13:43:11 2005

Well, seeing that everyone else is responding to this, I guess I should too.

Born on 1979-07-08 in Fryazino, Moscow region, USSR. First computer
experience: 1987 or so on a Soviet PDP-11 clone called BK0010. Thankfully
the (last remains of) the iron curtain still kept pee seas out of USSR
and I got the chance to grow up on real computers. BK0010 ("bytovoj komputer",
"home computer" in Russian) was a complete system in a keyboard form factor,
with the system board under the key switch board. Like every piece of
electronics in the Soviet Union, it came with complete schematics. The
CPU was K1801VM1, a single-chip PDP-11 implementation of original Soviet
design. The closest DEC CPU to it was LSI-11, except that LSI-11 was a board
and K1801VM1 was an IC (with 16-bit Q-bus on its pins). In fact the entire
1801 series of ICs had Q-bus on their pins: for example, there were KR1801RP1
masked ROMs with Q-bus on their pins, they spoke full Q-bus protocol and
were programmed with their base address in addition to data. Sockets for
these ROMs were essentially Q-bus slots, and hackers invented all kinds of
fun things to plug into them.

BK0010 was almost a real PDP-11 except for having no serial console (no
UARTs at all in fact, bummer) and no classic PDP-11 mass storage. Actually
the keyboard controller did present itself as the input half of a DL-11
(albeit at 177660 instead of 177560), and the keyboard produced ready KOI-7
codes, no ugly scan codes. But alas, the only output device was bitmapped
video. The machine did not come with a monitor for it, though, nor was one
sold separately. In order to use the computer, you were *expected* to take
a TV apart and modify its circuitry to make it into a monitor (disconnect
the tuner and make a connector to take in unmodulated video signal). Of
course all Soviet TVs also came with full schematics.

Mass storage was a home audio tape recorder. Many users also modified
the recorders as well to allow the computer to start and stop tape motion
(there was a signal brought out for that on the computer's tape connector,
controlled by a bit in a register). Tape I/O was all bit-banged.

It was a 16-bit system without any memory management, thus the total address
space was 64 KB. Of that 32 KB was DRAM, of which 16 KB was bitmapped video.
Effective program memory was 16 KB. ROMs offered a simple command monitor,
a collection of EMT-callable services to do otherwise tedious things like
putting characters on the bitmapped screen and reading and writing tape files
by bit-banging Manchester code, BASIC or FOCAL, and a diagnostic/test package
with a good hacker's debugger.

The debugger in the diagnostic ROM was much better than the bare minimum
in the main monitor ROM, but still could not assemble or disassemble mnemonics,
only octal codes at octal addresses. In other words, if you wanted to use
your computer beyond FOCAL or BASIC, the only thing it came with was the
ability to enter octal codes at octal addresses. Hey, they gave you the
power to write your own operating system from scratch in octal, what more
could you possibly want?!?!

That was my computer world at the age of 8. My dad belonged to a hacker
club that played with these wonderful home computers. They first wrote a
debugger that could assemble and disassemble mnemonics. It was still based
on absolute addresses, so branch targets still had to be absolute addresses
and if you wrote a sequence of instructions and realised you missed one in
the middle, you were out of luck. But still, it was PDP-11 mnemonics, not
just octal codes! (Though of course we had all learned PDP-11 opcodes so
deeply that I still remember many of them 16 years later.) That debugger
was used to write the first screen text editor (now you could actually
*SAVE* your programs in ASCII on audio tape!) and a true symbolic assembler
that translated assembly code from those ASCII files into object code.
The editor, assembler, linker and a few other things were packaged together
into our first integrated desktop environment!

BK0010 was succeeded by BK0011, which added a bank-switched memory system
(not compatible with standard PDP-11 MMU) to expand the memory from 32 KB
to 128 KB (went from K555RU6 DRAM chips to the very novel and expensive
K555RU5, Western equivalents 4116 and 4164, respectively) and a programmed
I/O (no DMA, no interrupts) floppy disk controller. Hey, *disks*!!! And
no more bit-banging, you can now just write a 16-bit word into a register
and the controller does MFM for you! Just make sure you write another
16-bit word in that register every 64 us. No hardware buffering!

Floppy disk and increased memory on BK0011 allowed it to run a modified
version of RT-11. My first operating system! The modifications were a
handler for the BK0011 floppy disk controller (BY) and a hack to the
monitor to change console CSR from 177560 to 177660 and go to that CSR
only for input. The output half was changed into a call to the BK0011
ROM to scribble on the bitmapped screen. RT-11 couldn't make use of BK0011's
non-standard bank-switched memory and ran with a fixed mapping set up by
the BY boot block, which gave it 24 kw to play with. SJ monitor only,
since the sans-DMA sans-interrupt floppy disk controller couldn't support

Throughout my entire childhood I dreamt of real computers: real large
PDP-11s with real serial consoles and terminals, real UNIBUS or Q-bus,
washing machine disk and tape drives, genuine RT-11 (didn't know about
RSX back then, I would have wanted it too had I known), etc. There were
such machines in the USSR, in fact there were some right at my parents'
workplace right in our town. (Fryazino was a science town.) IRE (Institute
of Radio Engineering and Electronics) was like a city within a city,
surrounded by a barbed wire fence. I would sometimes meet my parents at
the gate as they got off work, and I could peek through the glass gates
and see that were entire streets inside the facility. You had to have a
pass to get through the gates. Some people working there were able to
get passes issued for their children, and I kept begging my parents to
get me one so I could experience a real PDP-11 (well, a Soviet clone, but
a full-sized one unlike a BK "home computer").

As you can see, I had the blessing of growing up with the *proper* definition
of a computer: from the very beginning I absorbed the idea that a COMPUTER
is a big grey monster locked behind armed guards at a government facility
that only the most worthy can approach, NOT a home beige box that a moron
can sit in front of.

Then I had a dark period, a period of amnesia, as pee seas invaded my life.
When my parents first introduced me to them, I was utterly disgusted at
their architecture. It is such a piece of shit compared to PDP-11! But I
caved in under my parents' pressure and learned 8086 assembly, DOS, etc.
I was about 11 at the time, and by then I had already written my own OS
for BK0011. (It would boot from RT-11 and take over, loading itself into
BK0011 memory pages that RT-11 couldn't access due to the non-standard bank
switching scheme. The two OSes could then coexist, sort of like DOS and
Windows 3.x did.) In my teens I was a DOS god. In 1993 I won the 2nd prize
in assembly language programming at an all-union competition (meaning from
all over USSR). I cracked the toughest copyprotection, anti-disassembly
and anti-tracing systems in the entire world of DOS software, and I championed
Intel protected mode, having written my own 386 memory manager (like EMM386,
386Max, etc).

My recovery from pee sea amnesia came when (shortly after my parents moved
to USA, taking me along as baggage) I entered a university to study computer
science. I was suddenly exposed to VAXen, Suns, etc., running VMS, UNIX and
other fun things. And learning VAXen and UNIX brought a flashback (more
like a deluge) of fond childhood PDP-11 memories. That was when I shook
off the spiderwebs of pee sea amnesia and came back to being the person
I was destined to be: a passionate DEC and Classic Computer hacker!
The rest is history.

Received on Sat Feb 26 2005 - 13:43:11 GMT

This archive was generated by hypermail 2.3.0 : Fri Oct 10 2014 - 23:37:41 BST