<< Back

 

Cesky: , English:

History

Interview published on http://www.osdos.net/ on 3/9/2007 and 4/3/2007.

Any of us who started with PCs in the early 90's lived through a time when DOS was the uncrowned king of all available computers.  We all had our favourite games and programs that we all remember fondly. My favorite game was VLAK (TRAIN in English) and my favorite application was DOS MANAZER (DOS MANAGER in English).  Both of these programs have a common author, Ing. Miroslav Nemecek.  And since almost every week you send me programs and utilities from this author, I asked him if he would reminisce and give an interview for our WEB about the time that shaped the future.

So let's start from the beginning. When did you first encounter a computer?

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 a black and white "cube graphic" with output to a portable TV Merkur.

Sinclair ZX81

I assume it wasn't just it?

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

Procesor Intel 8008

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 help of a kit 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, the biggest snag was the PCB bus, which I found slightly corroded and so there were some reliability issues. And also because instead of hard to find FRB connectors I used integrated circuit sockets. I made a membrane keyboard out of stencil and photo paper glued to a circuit board.

Východoněmecký klon Z80 procesor U880D

Your beginnings with computers were through hardware, and how did you get into programming?

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, though, so the first time I played with it meant connecting a series of Isostat switches to it and first cranking up a short boot program using a DMA transfer every time I turned it on. This meant: lock the DMA with the switch, reset the CPU, set the binary code of the program byte on the switches, hit write to memory, and continue like this for all other program bytes. Finally, unlock the DMA and let the CPU start from scratch again. This initial program contained a basic monitor program with keyboard and display operation. With its help, I typed in the HEX code for the boot program, 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 (which I had already manually compiled on paper - you can imagine the manual "reallocation" when inserting the instruction into the middle of the program), writing the code to save it to the tape recorder, and then saving it to the tape recorder.

Mikropočítač Ondra (rok 1986)

So your first program was firmware (BIOS)?

Actually, yes. 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 not yet erasable, 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.

And after college, I suppose, straight into the arms of programming...?

Nope, after finishing college (1986) straight into the arms of the 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 capabilities 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 began to know this computer really intimately. And finally I started to crack its internal code. Gradually, I wrote out the contents of its monitor program and then the Basic interpreter and some other programs and deciphered them. It was not possible to use a disassembler, so I did everything from a HEX dump using instruction tables, which soon became useless once I 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. I think that deciphering other people's finished programs gave me the most programming knowledge.

Sharp MZ-821

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

Jehličková tiskárna Robotron K6314

And further notebooks were written... :-)

Yes, many new workbooks were filled with a listing of disassembled programs. The most interesting for me was the SCPX system. I also created a program to help me reverse engineer the code. However, it was not just a simple disassembler. It was possible to specify which part of the code was data and which was program, and how to translate which part. There was also an automatic tracing feature, where the program would go through the code being translated and try to guess which all places the program could go. In addition, it created labels for jumps and data points. This was followed by a manual analysis of the code with the support of the program, where the translation method could be further refined. When a comment was entered, the program also displayed the comment for all references to that location.

Our readers would also like to know when you first encountered a computer in today's sense of the word, i.e. IBM-PC?

The first time I saw an IBM PC series computer was 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.

Robotron XT A7100

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

And that's probably where programming for PCs started... ?

Yes. 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 my main programming editor. The Ergo file manager was eventually superseded by PCTools (PCShell) and then replaced by the brilliant Norton Commander.

Soon the specter of the software police and the need to legalize software began to appear. Software prices were still unaffordable even for the enterprise at that time, and 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 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 their cooperation and their extensive business experience. And so I left my job and plunged into the business sphere.

So from now on you started to make a living as a full time programmer ?

Actually, yes.  Along with 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, for example, the Czech keyboard driver, which took up exactly 1 sector (512 bytes) on disk and 256 bytes in memory in the mini version. 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. Currently, all the source code for the programs is freely available - either directly downloadable (http://sweb.cz/Panda38 or another part at http://mnsoft.wz.cz) or on request (no time to prepare them all, so more by appointment).

DOS MANAŽER

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 many magazines. I remember the Invex 1991 exhibition, where we brought 10 XT computers from Nový Bor with colour monitors. 8 of them were hung on the ceiling console (not the console :-) ) of the stand, 2 remained as backups. On all monitors ran color banners, especially on the DOS Manager program. At this time graphics on computers were just emerging, so these 16-color banners were very eye-catching to all passers-by.

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 working in graphic and text mode, 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.

Continued next time........ :-)


And today I have prepared for you the second part of the interview with Ing. Miroslav Nemecek, who will reveal the fate of his programs and what he is currently working on.

What was the next fate of DOS Manager?

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 with many new features (again in assembly code), began to be developed in 1992.

DOS Manager 2 had heaps of advantages, such as the number of files in a directory limited only by the size of the memory (around 10,000), 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 program launching modes, a calendar from year 1, a very accurate line calculator, long Windows names and many more. 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. Therefore, DOS Manager 2 was no longer as successful on the market as its predecessor, although qualitatively they were not comparable. Nowadays, it is still offered by the successor company GEMA Soft under version 2.10 (from 1998, http://www.gemtree.cz/gemasoft/dosman.htm), but its development is not continuing, although some of the downsides are already known, such as not supporting long names under Windows NT/2000/XP, crashing when cancelling a file with a name longer than about 200 characters, and looping when renaming a directory with a character change to a position higher than 11.

I know that besides DOS Manager you have also been working with Peter. How was it created?

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 Karl's principles, with extended capabilities, such as the ability to place arbitrary icons on the fields of the board to display simple graphics. The little child 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 Luka (to distinguish names in foreign languages).

Novoroční přání PF1993

The text writing of the program proved unacceptable for child users and 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 with the support of other Windows books (English documentation books from Microsoft). The first attempts at a Windows file manager began to emerge, and the first concept of a programming tool for children in a graphical environment appeared.

První verze Petra v DOS

Reportedly, you also participated in the development of SGP's Baltic. Is that true?

In the autumn of 1997, our company was approached by Mr. Soukup (who was a regular customer of the Hradba protection system), the author of the Baltazar programming tool (http://www.sgpsys.com), asking us to create a Windows version of his Baltík program for him. It was a rather tricky deadline, a couple of weeks, and he was supposedly going to demonstrate the new Baltik to Microsoft representatives at Invex 1997. After some haggling, we finally accepted the invitation (Mr. Soukup had been urging us to work on his products for several months before in vain). Unfortunately, due to time constraints, everything was done over the phone, without any written contract.

I started to create the new Baltik 2.0 in Delphi, because I used a semi-finished product that I had prepared for my Peter. I wanted to apply my ideas about a new programming tool for children in Baltik. However, Mr. Soukup turned out to be the main obstacle in my work. He demanded too strictly his ideas about the program, which were based on his DOS version. It even happened several times that I promoted an idea, and after much argument (again over the phone) I relented and removed the feature from the program. Well, after some time, Soukup then came up with exactly the same idea as his own and I had to add it back in. So - the work was finally done on time after several sleepless weeks of great work stress, but with great disgust for the creation and the conviction that I never want to have anything to do with Mr. Soukup again. This was one of the reasons why I sent Mr. Soukup not only the finished program, but also all the source texts of the program, so that he could finish any further changes himself (which was not the right move, as I later realized).

Baltík 2.0

So then you went back to Peter again?

The demonstration of the new Baltik to Microsoft did not happen after all. After the exhibition, I continued to work on the program according to Mr. Soukup's requirements and ideas until February 1998, when I refused further cooperation. Time passed and Mr. Soukup, instead of the agreed payments for the work, made excuses about his poor financial situation. This continued for the next few years. In the meantime I started working on my Peter again. I implemented my ideas (rejected by Mr. Soukup) - building the program by placing icons in a tree, which allowed to "fold" parts of the program clearly. And also automatic syntax checking, where only meaningful elements can be appended together.

I abandoned Delphi because it was not possible 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 the MFC libraries. Very often I encountered almost unsolvable problems with MFC and came to the conclusion that the library, by circumventing its drawbacks and errors, was holding me back from my work rather than being beneficial.

And then you abandoned the MFC and went back to the "heart of the matter"?

After half a year of work, I started writing Peter again - but this time without MFC, only with the bare API. I was surprised to discover how easy programming without MFC is. Many problems completely disappeared. The basic requirement for Peter was to be fast enough. That's why I dropped the CRT core program right from the start and replaced everything with custom handlers. So the first step was to create a program that was 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.

Petr pro Windows

What do you appreciate most about Peter?

One of the things that surprises many 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. He does all this for DirectX 3 (where complex implementation buffers are used) to DirectX 8 and also for OpenGL interfaces. Peter makes sure that the programmer doesn't have to worry about anything if possible. 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 distinctions 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, Coda 236 and others), proving the quality of the Peter environment.

A good example of the speed of Petra is the Sinusovka program. It is a small program, but - Baltik contains a similar program, it takes tens of seconds to render one sine wave. In Peter, similar sinusoids are drawn several dozen per second.

Hra 13 duchů

And how did the launch of Peter continue?

After the end of the "cooperation" with Mr. Soukup, the money extraction for the work done continued. We watched him slowly modifying his Baltík (now in version 3). More precisely, not him, but the people he employed to do this work. For obvious reasons we preferred to keep the information about Peter secret for the time being. We didn't know how Mr. Soukup would approach it. We were, after all, his emerging competitors. Paradoxically, I became a competitor to myself (in the Peter and Baltik programmes).

On June 1, 1999 (Children's Day) we finally launched the first version of Peter (http://www.gemtree.cz and http://www.gemtree.com). We published information about it, featured it in magazines, participated in exhibitions and expected responses. The first response came, but it was from a slightly different side than we expected. Mr. Soukup started to fight us with all means, and not very clean ones. In cooperation with some editors of PC magazines, such as Chip, he unleashed a big smear campaign called "The Rabbit Cause" with the help of the writer Rudolf Pecinovsky.

In the published article they proved our plagiarism, how we imitated which programs, but above all how we stole Mr. Soukup's ideas from Baltik and how we tricked him. In doing so, Mr. Soukup still did not pay us for our work on Baltik, he made sales of Baltik without any written contract with me as the author, so the illegality and violation of copyright law was actually committed by him (and still is). It reminds me of the famous saying "The thief cries out: catch the thief!" An interesting proof of plagiarism was shown by Mr. Pecinovsky when he compared Peter with Baltik by comparing two sample programs (building a house) created in Baltik and in Peter (or a matter of user use of the tools, not a comparison of the tools themselves) and he modified the program in Peter himself to be as close as possible to the Baltik version. However, I was most amused by the evidence of plagiarism based on the Train game that appeared in Peter, as a plagiarism of a well-known DOS game - apparently the gentlemen did not know that I was also the author of the original DOS version.

Hra Vlak pro Windows

After much arguing within the company, we finally chose the tactic of ignoring it, as there was really no point in responding to the rumours and lies. At the same time, we were worried about what Mr. Soukup might commit next. We just observed how Mr. Soukup had modified Baltik so that the names of functions and variables were not visible in it (probably by some correction program that replaced them with symbols that said nothing), which would prove the originality of the code. Eventually the noise died down (especially when Mr. Soukup pushed his way into the infamous Indochine event) and we continued our work on Peter.

Despite our great enthusiasm for the cause, however, the market response was small. Over time, we came to the realization that there were very few creative people. 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). Of course - freeware does not feed anyone. So we were forced to venture into other areas.

What are you working on now?

I currently have a new hobby that has completely captivated me. It started the moment I installed the Linux operating system on my PC. But Linux is not a hobby, quite the opposite. After many attempts to break into the world of Linux, I have come to the conclusion that there is still a lot of work to be done in this area. I discovered how user-unfriendly, difficult to access and uncluttered this area is, and how I would have done many things differently. It is only suitable for young bright computer professionals who do not regret the time spent studying and experimenting.

That's why the idea of starting to create my own system, according to my own ideas and requirements, gradually grew in me. A system that would be clear, simple and yet powerful enough. It doesn't matter if it doesn't replace other systems - even real-time applications can be of sufficient benefit. I first started by creating my own version of DOS (Litux project, http://litux.wz.cz). My intention was to create a freely distributable DOS that would not have the disadvantages of other similar systems - i.e. it must be miniature and yet work in real processor mode (which is one of the great advantages of DOS).

Over time, I have come to the conclusion that perhaps this is more of a waste of time, that I should rather pursue a "real system". So I abandoned DOS in the middle, perhaps as an inspiration to other programmers, and embarked on the Litos multitasking system (entirely in assembly language, http://litos.wz.cz) that I am currently working on. Whether I will be successful in this area I don't know. But I stick to the idea that one shouldn't think in advance "what for", but if there is a desire to create something, then one should create - and it will all somehow work itself out.

Operační systém Litos

Thank you very much for the interview and I wish you, on behalf of WEB and its readers, every success in your future projects.

<< Back