<< Back

 

Cesky: , English:

TALKING

or How it all happened

 


So - it started with the dinosaurs. The Germans, actually. They happened to be born - in the middle of a freezing January in 1963. And so there were four of us. Mum Růžena, a teacher at the secondary school, dad Ladislav, a clerk at Jednota, my brother Ladislav, 5 years older, and me.

I was famous at birth, when they wrote about me and my mother in the newspapers. :-)

My mother was not the typical strict mother, but a kind and caring mother. It was Dad who was the strict one, who sometimes gave her a few slaps. And my brother - he was my Big Brother, the caring Big Teacher. And I was the spoiled brat who was indulged and pampered. Mommy's daddy was a baker. We used to hear stories from Mom when, for example, she was carrying a loaf of bread to the oven, tripped and imprinted her knees in the bread. And then my grandfather broke the cooker on it.

My grandmother always took care of me when my mother couldn't.

Lanzhot, my native village in the southernmost part of South Moravia, was actually not a village, but a township. I don't even know why. Our street used to be Souhrady and then Palacký, and I don't know why they renamed it either. I guess it was guilty of something against the new political system.

I remember this picture. Mr. Photographer was there.

with a lightning bolt on a stand and they kept asking me for something.

In front of our house there was a "Puddle" ("Luza" in Czech), a large area without puddles, but probably once upon a time it used to be a pond, according to the name. As a result, we used to have carousels right outside our windows at feasts. I remember the craftsmen from Slovakia who used to ride their bikes through here. For one thing, it was the tinker who used to call out his usual "Wire it up, cloth the pots!" and then the grinder who called out "Scissors! Knives! I'm grinding!" And then there were the old gypsy women going around offering willow brooms. They were not paid with money, but with old worn-out clothes.

We had 2 huge walnut trees in front of the house, just like everyone else on the street. They always smelled wonderful, especially in the spring when the fat caterpillar-looking blossoms fell off. I used to love those drives home from school when the sun was shining and the nuts smelled so good. There were always lots of nuts. But then one day my father decided to cut down the nuts, saying they were shading us. And all the neighbors followed him. From then on, the house used to be hot in the summer and the street lost its charm, especially when they paved the sidewalks and paved the road.

We had the first car in the street, a Skoda 1201 "estate car". Older. Dad often fixed it, but it certainly contributed to my brother becoming a skilled mechanic and plumber.

I've always been more into DIY or building things. But strangely enough, I always looked forward to playing with it after I built that complicated train track with automatically controlled switches, for example. But the moment I finished it, I stopped enjoying it. Probably a peculiarity of designers - the main thing is the journey, solving some problem, but then the result is no longer interesting.

My most important book in life was called "Sholim, Me and Transistors", which I discovered in my father's library. I implemented many of the experiments in the book, but at first I didn't understand what they were doing with the transistor, because that's what they called a pocket transistor radio at that time. Until I understood that a transistor was a component and not a radio. And in time I also became the proud owner of the first two 102NU71s, bought in Roznov at Sedlacek.

In retrospect, it strikes me that in addition to building the various movers, blinkers, receivers and interval wipers, I also tinkered with household appliances - and my parents let me do it. I guess they trusted me a lot when I was taking apart and assembling a home tube gramophone or tinkering with our Anabela TV, and even energizing it. But even my dad was a handyman - he remembered how he and a friend were rewiring some military equipment for a transmitter and a friend came running up to them and heard their "dude, it works!" on the radio. There was generally a lot of trust and acceptance in our house. It wasn't until time passed that I found out it wasn't so obvious elsewhere. For example, I never got an allowance - my parents always gave me whatever I needed because they knew I was thrifty and wouldn't spend unnecessarily. On the other hand, they encouraged me not to buy only the cheapest cafeteria lunches in high school. Trust people - and they will become honest.

Roznov pod Radhostem became my attraction because it meant the production of those wonderful semiconductor electrical components. In 1977 I got into the national round of the Integra competition, where we built our first amplifiers with MDA2010 and got a package of magical semiconductor components. I completely fell in love with Roznov and signed up for the electronics career.

Then followed 4 years of grammar school in Breclav and then 5 years at the electrical faculty of Brno University of Technology, majoring in radio engineering. There I met my wife, a builder, and in the last year of my studies we got married. After school, in September 1986, I started working - and where else but at Tesla Roznov. Just not to semiconductors, but as a Robotron computer technician in the production of colour screens.

I met my first computer in high school, at a Svazarm day. It was a Sinclair ZX81. We admired this technical marvel and especially the game "Cannon", which consisted of shooting at a target at a given angle and speed. The cannon was represented by black and white "cube graphics", with output to a portable TV Merkur.

In Amateur Radio I came across a description of an 8-bit Intel 8008 processor with a 14-bit bus. I devoured the descriptions of the instructions and was mesmerized by the possibilities of what such a single integrated circuit could do. And I wished I could meet it.

I fell so far into microcomputer technology that I started building my own microcomputer in college, based on the 8-bit U880D processor (the East German equivalent of the Z80), with the generous help of kit descriptions published in Amateur Radio at the time. I designed most of the parts myself. Especially the display card. Although it worked in black and white character mode (MHB2114 static memory, ROM character generator), it also allowed square pseudo-graphics. The memory module was assembled from MHB4116 dynamic memories. I had the transformer wound by a classmate at a plant. Unfortunately my biggest snag was the printed circuit board bus, which got corroded, so there were reliability issues. And also because I used integrated circuit sockets instead of hard to find FRB connectors. I made a membrane keyboard, out of stencil and photo paper glued to the PCB.

When I managed to get the computer up and running, it was just a "piece of bare metal". It had no firmware to begin with, of course, so playing with it for the first time meant connecting a series of Isostat switches to it and first cramming a short boot program in binary code using DMA transfer every time it was turned on. This introductory program included a basic monitor program with keyboard and display operation. Using this, I typed the boot program in HEX code on the keyboard, which was used to pull the program from the tape recorder. The data format was based on that of the then most successful gaming computer, the ZX Spectrum. Writing the program consisted of typing the program in HEX code (I had already manually compiled the program on paper), typing the code to save it to the tape recorder, and then saving the program to the tape recorder.

After the first familiarization attempts I already dared to write firmware for my "PC". I had 1 KB PROM memory ready for it. At that time it was still unwashable, hard to find and also expensive. That's why I had only one attempt, which had to work. I went through the firmware program over and over again looking for possible errors. Testing beforehand was not possible. When I finished development, I handed the source code to a classmate who burned it on his ZX Spectrum. I inserted the PROM into the computer, turned it on - and it actually worked, and even without error! It was possible to write programs in HEX code, save them to the tape recorder, and load them back.

My next "computer" was a TI-58C calculator. My parents bought it for me at Tuzex when I was in college, with vouchers for 4700 CZK (I wrote that I was pampered and spoiled!). At the time, that meant two average salaries. I had a lot of fun on the calculator and later wrote an emulator for it in Peter, because I liked it a lot. What it could do back then!

After graduating from college, I was required to complete a year of mandatory military training.  But I was lucky. There was a Sharp MZ-821 computer purchased, which I could play with in my spare time, and whose graphic capabilities and hardware and software equipment captivated me. At first, we played games on it, which my colleagues would get from God knows where. Then I started writing my own programs in Basic. And eventually I started to crack its internal code. Gradually, I wrote out the contents of his monitor program and then the Basic interpreter and some other programs and solved them. There was no disassembler available, so I did everything from a HEX dump using instruction tables, which soon became useless because I already remembered the codes. I described many workbooks in this way with processor instructions, the meaning of which I then deciphered until it was clear what each part of the program did. Deciphering someone else's finished programs always gave me the most programming knowledge.

I became so familiar with the Sharp MZ-821 computer that I had to buy one immediately after my military training. I drove around several towns and asked the Electro stores if they had it. Finally I got it in Vsetín, although only the version without the tape recorder, MZ-811, for 6800 CZK. I remember, when I brought it home triumphantly and happily, the disapproving and reproachful looks of my wife. I didn't understand how she could not share the joy of such a wonderful machine! I hooked the Sharp up to my beloved Grundig CN 510 tapedeck and have been feeding it with programs I brought back from military training.

After returning from military training, I continued at Tesla Roznov as a Robotron computer technician. I was not attracted to large mainframe computers, I specialized in peripherals based on 8-bit U880D processors. Again, the thirst for knowledge prevailed, and soon I knew many devices not only in terms of hardware, but also in terms of software and firmware. These included the K6314 printers, the UBT and BDT terminals, whose EEPOMs I disassembled. These included the K5120 microcomputers with the SIOS (internal binary code interpreter) and SCPX (a variant of the CP/M system) operating systems.

Many new notebooks were filled with listings of disassembled programs. The most interesting for me was the SCPX system. I created a code back-translation program to help me parse and trace programs to distinguish between code and data, and to allow easy annotation of references and references.

I first saw an IBM PC series computer in 1988, when my boss called me in to advise him on how to use one. It was a brand new Robotron XT 5 MHz with a 20 MB hard drive and a black and green monitor. I showed him a few commands from the CP/M environment (like DIR, TYPE and Ctrl+P) which, strangely enough, also worked in DOS. The computer started to be used for database systems, but also for games. Eventually I also started to get into it and get familiar with PC programs.

After some time, several new PC-AT 12 MHz computers with 40 MB hard disk (allegedly for 470 000 each) and many floppy disks with software were purchased from Slusovice. These were mostly English programs, which had been cleaned up in the binary code and copyrighted by Slusovice. I also started to use the PC extensively, besides my own software creation, as a CAD station (OrCAD for schematics and Redboard for circuit boards).

When working with PCs, there was a need to facilitate file manipulation, which is what file managers were used for. My favourite tools were the Ergo file manager and the Context text editor. I wrote drivers for the Context editor to support English and to work in both graphical and text mode, and for the next few years I used it as a programming editor. The Ergo file manager was eventually superseded by PCTools (PCShell) and then replaced by the brilliant Norton Commander.

Soon the spectre of the software police and the need to legalise software began to emerge. Software prices were still unacceptable even for the enterprise at the time, so the suggestion was made that I try to create a replacement for the most widely used of the programs - Norton Commander. I gave it a try, and so in 1990 the MNShell program was created, later renamed DOS Manager. Its popularity in the company grew rapidly until the idea of leaving my job and going into business came up. The Rožnov company Golem, which was then dealing with the Hradba protection system (used to protect against illegal copying of programs), seized on this and offered me cooperation and their rich business experience. And so I left my job and plunged into the business sphere.

DOS Manager was our main sales item.

By the way, I became acquainted with the Golem company by the fact that they were looking for someone through my boss to test the puncture resistance of their Hradba. I kind of surprised them by breaking it. They didn't expect someone to do such a detailed analysis with simulations to remove the various layers of protection. But it allowed them to find the weaknesses in the Hradba and improve it.

Along with the DOS Manager, a bunch of single-purpose utilities (which eventually reached 250 in number, all in assembly language) were developed and shipped with it. Among the most interesting and popular was the Czech keyboard driver, which in the mini version took up exactly 1 sector (512 bytes) on disk and 256 bytes in memory. The richer version (CSKEY) included several layout variants and character sets (including special features such as a frame generator) and was distributed among people as shareware. I have received more than one postal order from satisfied CSKEY users. The English driver for the displays was also interesting. The mini version took 422 bytes on disk, 336 bytes in memory, and worked by direct access to the hardware by synthetically adding diacritics to existing characters.

I continued working on the DOS Manager program (in assembler) and together with other members of Golem we started to market it. The program was extremely successful. There were many positive reviews in magazines. I remember the 1992 Invex exhibition, to which we brought 10 XT computers from Novy Bor with colour monitors. We hung eight monitors on the ceiling bracket of the booth, two computers remained as backups. All the monitors were running color banners, especially for the DOS Manager program. At that time, graphics on computers was just developing, so these 16-color banners were very eye-catching to all passersby.

The banners were created in Animator, a program I developed for this purpose at the time. It was a programming tool with its own language, mainly aimed at creating animations. It allowed to work in graphic and text mode, and had its own image format (including text mode images), which could be obtained by scanning the programs screen. In addition to handcuffs, I created, for example, the game Privatization in this tool. Every year it created PF New Year animated cards, which became quite popular.

Our animated banners at Invex 1992 attracted a lot of attention.

As part of DOS Manager, the game Train was created in 1993. It was just a little game, a development of the idea of the game Snake. It had 50 scenes. My wife and I worked together to devise and test the scenes. For some unfathomable reason, the play Train became unexpectedly popular among people.

The Train game has become unexpectedly popular.

Despite the success of DOS Manager, we began to feel its shortcomings. The main shortcoming was the limitation of the program to 64 KB, because it was compiled as a COM file. This was convenient for the minimal complexity of the program, but insufficient for the growing number of files in users' directories. Also, it was no longer possible to add additional features to the program. Therefore, in parallel with the improvements to DOS Manager 1, version 2, compiled as an EXE program, began to appear in 1992, with many new features (again in assembly language).

 

Animator was a programming tool for creating animations and games.

DOS Manager 2 had a lot of advantages, such as the number of files in a directory limited only by the size of the memory (around 10 thousand), file functions not only for selected files, but also for files searched continuously on the whole disk or in a directory, a disk editor, a text editor up to 250 MB, 3 modes of starting programs, a calendar from year 1, a very accurate line calculator, long Windows names and many others. Unfortunately, its development was not fast enough. The first version was released in 1996, by which time Windows 95 had already become a widespread system and interest in file managers was rapidly declining. People were satisfied with Windows Explorer. Therefore, DOS Manager 2 was not as successful on the market as its predecessor, although qualitatively they were not comparable.

The first version of Peter was created in DOS.

Along with DOS Manager I also occasionally worked with Animator as a graphical programming tool. At the insistence of my then eight year old son, in 1996 I started working on a new experiment - to create a programming tool for children. I used my experience with Animator to create a DOS interpreter of the program, based on Karel principles, with enhanced capabilities, such as the ability to place arbitrary icons on the fields of the board to display simple graphics. The not-so-childlike robot Karel and his girlfriend Karla were soon transformed into Peter Rabbit and Petra Rabbit, inspired by the picture on his daughter's T-shirt and the then-airing series "Peter Rabbit Stories". Later, Petra was replaced by Lucy, due to easier name recognition in foreign languages.

Text-based program writing proved unacceptable for child users, so I started to study Windows programming as a necessary environment for the creation of the new file manager I was planning. Programming in assembly language under Windows seemed very interesting, but it was quite laborious and I did not yet know the Windows environment well enough to create in this style. The book "Mastering Delphi" changed everything. I was impressed by its clarity and clarity and started to delve into Windows programming in Delphi, supported by other Windows books (English documentation books from Microsoft). The first experiments with a Windows file manager began to emerge, and the first concept of a programming tool for children in a graphical environment appeared.

A small digression was the creation of a Windows version of Baltik, for SGP Systems, in the autumn of 1997. I took advantage of the experience of the upcoming version of Peter and adapted it to Baltik 3.0, and as a result Baltik was completed very soon. Due to time constraints, we did not adequately treat the contract in advance, and so not only did I never get paid for the work, but later, after the release of my own Petro, disputes over authorship arose, leading to comical situations where I was attacked in Bytes magazine for plagiarizing my own program Train (the popularized "rabbit case"). After all, Peter and I had become competitors of Baltik, and this provoked a backlash (ironically, I was competing with myself). But it had a positive result - I found out that this is not the way through Delphi.

I continued working on Peter, but abandoned Delphi because it was impossible to write a program efficiently enough, i.e. at a low enough level. I chose Microsoft VC++ because it "let me lower" into the system, which was quite essential for such a real-time program.

Initially I used MFC libraries, which I later abandoned because they were very limiting. After half a year of work, I started writing Peter practically again - but this time without MFC, just with the bare API. I was surprised to discover how much easier programming without MFC was. Many problems completely disappeared.

The basic requirement for Peter was to be fast enough. Therefore, right from the start I dropped the CRT core program and replaced everything with custom handlers. So the first step was to create an empty program that had 4 KB - i.e. just the EXE header and some internal variables that the compiler required and that are normally found in the CRT module. This was more difficult than I imagined, the compiler required a lot of things that were difficult to find out about because they are not normally documented. But in the end it worked.

One of the first things I built into Peter was a memory manager to replace the memory functions from the deleted CRT library. I knew from the Delphi and VC++ source code how their memory managers worked, and I knew they didn't work very efficiently. The memory manager I created was 15x faster than the VC++ manager and 4x faster than the Delphi manager in tests. It partitioned virtual memory into groups of memory blocks of the same size to the power of 2, linked together in a chain using links. I used this manager successfully in many other programs later on.

By the way - what about our company names? When I started my business, I chose the business name "Nemecek Software". Some of my first programs were created under this name. Then I teamed up with the Golem company, but we didn't want to mix products (they were creating their Castle), so we formed "Gema Soft", under which DOS Manager and my other programs were offered. And when Peter was created, it was such an important new product that we started a new company for it, "Gemtree Software". Gemtree was the name for some Australian bonsai, but we saw the similarity to Peter's tree structure - the icons on the branches of the tree structure are like gems on the branches of a tree.

Gemtree Peter

One of the things that often surprised people about Peter is that it is an interpreter, because it is comparable in speed to compilers in many areas. The source code (in binary form) is also the executing code of the program. Each program is stored directly in an EXE file along with the interpeter, so that a program created in Petro can be run directly as a regular Windows executable without requiring any environment to be installed, and at the same time such a program can be opened in the Petro editor and the program can be browsed or edited.

I consider the most interesting part of Petro to be the 3D graphics. It's an area that I'm very interested in and have enjoyed creating. Peter internally handles the object management of the 3D world, all the matrix transformations, scene rendering, texture overlays. All of this is handled for DirectX 3 (where complex implementation buffers are used) to DirectX 8, and also for OpenGL interfaces. Peter makes sure that the programmer, as far as possible, doesn't have to worry about anything. He doesn't need to know what interface the program is running under (although he can specify this if he wants to), Peter blurs the distinction between interfaces. And it is more true here than elsewhere that a program in Peter is very fast, as demonstrated by the 3D games created in Peter.

Many games have been written in Peter, many of them winning Becherovka competitions (e.g. Bechtor, 13 Ghosts, Turbo Cars, Codename 236 and others), proving the quality of the Peter environment.

Despite our great enthusiasm for the cause, the market response to Peter has been small. Over time we came to the realization that there are very few creative people out there, most people are just consumers. On the other hand, there was tremendous interest in the programs created in Petro - especially the Desktop Games program, which became the absolute most downloaded program from our web site and spread avalanche-like all over the world (especially to the USA). The most popular game in our country was Ants, inspired by Arcomage from Might and Magic. Incidentally, Might and Magic 6 has become my all-time favorite game, I revisit it often, and it was the impetus for my venturing into 3D graphics programming.

The train from 13 Ghosts.

Of course - freeware doesn't make anyone a living. For me, it meant getting a job in 2002 at Income in Prague (initially only for a while, but it turned out to be 20 years) and continuing to create my own work as a hobby. This also brought an advantage - I didn't have to worry about the marketability of my programs anymore and could make everything available as freeware. I was never really into money and doing something for profit, so that was a relief. Nevertheless, I believe that new interesting creations will continue to be made.

TexiGen texture generator has become very popular.

The most popular of my later creations was TexiGen, a texture generator I made to create for photo banks. Photo bankers started using it heavily to populate photo banks with textures and other creations. In this case, it may have been a mistake to release the program as freeware, because after an initial upswing, the sales of my creations on photobanks quickly declined, due to other photobankers filling up their photobanks with TexiGen creations. As usual for me, I have once again created competition for myself.

For a couple of years I was involved in the creation of the Litos operating system. Until I realized that it was an impossible task for an individual. Mainly because by the time any part of it is implemented, it's already obsolete. But thanks to my Litos experience, I implemented an RTOS operating system for ARM processors, for my employer.

I finished the Litos8 mini-system, but it was a rather useless attempt.

There are still many plans I would like to implement. Hopefully there will be enough time for them. My biggest interest at the moment is the realization of various microcomputers and calculators. I'm moving back from the pure software engineering areas back to basting, like in my younger days. The skills and time are slowly dwindling, but the dreams are still big. I wish I had a longer day and more years to live. There is still so much to discover and play with!

 

Miroslav Nemecek

June 2022

<< Back