From four to thirty two. Early years of computers and networks in Russia
Part I: From four to eight
I like to read the memoirs of people who observed the computers taking first steps in their countries. They always have something romantic about them. Usually, such memories are greatly influenced by the circumstances of that encounter with his first computer: it could be the workplace, or education establishment, it could be just an unexpected and random thing.
Like many of my friends, I was lucky to see the end of that special romantic period, when computer makers were not trying to please the regular users. They were creating the devices with distinctive and unique features they thought were right for some of reasons. This approach is clear to see in both software and hardware. Such features were making the device to sell in millions or be a commercial failure.
It all started differently for different people. Some of them were working with buzzing massive computers that could fill an entire room, the others had desktop-style home computers. There were people, who made their first computer themselves using specialist magazine publications. Different types of computers created the variety of specific traditions, interests and subcultures.
Not digging deeply into history let's divide people who engaged themselves with computers into several groups.
The very first group would contain the people working with computer networks. It is all about multi-user systems, mainframe systems, Unix and all kinds of black and white alphanumerical terminal access. I must mention that X.25 and the early Internet created their own different subcultures back then.
The second group is all about home computers. We are talking here about color graphics, sound playback, and creating programs using assembler language. The people of this group were not using computer networks. The examples of computers used in this group would include Commodore 64, Amiga, PC (at least for the time period when they were competing with Amiga), Atari, and some others.
The third group, best represented in the USSR and particularly in Russia — were people who built computers and were corresponding subculture (with borrowings of Western ones) by themselves. This is related to BK-0010, ZX Spectrum clones, Radio-86RK, Orion, Specialist.
As for me, my first serious encounter with a computer happened in 1989. I was studying in the school in Leningrad, USSR (now it is known as Saint-Petersburg, Russia).
My understanding of computers was pretty vague back then. That was the time I was trying to make some basic electronic circuits myself. Those creations were limited to basic register combinations, counters and logic schemes to make some nice flashing LEDs. I was using Soviet military chipsets of series-133 and series-134. I do remember reading about the NE555 timer in some of the translated books and seeing thrilling examples of circuits and applications using it. It was really exciting as there was no direct replacement of NE555 in Soviet chips.
There was an «Electronics» shop in Gagarin avenue. My father used to bring me there and those visits were something similar to visiting a museum. That was the main city shop which specialized in electronics. There were two sections: the first section was dedicated to electronic components and different devices, the other was like an exhibition. I was never interested in the first section, as the only components for sale were pretty basic and not of the best quality. The most interesting was always in the second section. It was absolutely empty as the products in that section were exclusively offered to large companies and were for sale on special request only. Of course, this section had the most interesting things: microprocessors in ceramic cases with golden plated contacts (the regular reference book would not even have a description for those!), fiber optical cables, visual indicators of various types – LED, luminescent. It was a small piece of our own VDNKh.
Closer to graduation I got programmable calculator «Electronica MK-61» and typed programs published in popular technical journal «Tekhnika-Molodyozi» — mostly simple games like «Landing on the Moon», experimented with undocumented functions (was made seven segment display show non-numeric symbols).
Although my father had access to «Iskra-226» (Wang 2200 clone) computers at the factory where he worked, and I had a possibility to come there sometimes, I had never done that because I was sure that some day there would be regular access to computers. I was convinced that very soon the computers would be readily available everywhere and there is no need to tease myself off in the meantime.
The school where I studied was quite ordinary and there weren't any computers (and even calculators). However, closer to my graduation (at the end of the 1980s) the USSR state became anxious of insufficiency of computer knowledge among people, so computer science lessons were held in another school which had two classes of Commodore 64 with disk drives and color displays.
It is worth mentioning that in those years Yamaha MSX-2 was considered as a standard by the Department of Education, but it wasn't obligatory. Because of lack of computers divergence of this standard was not uncommon. Nevertheless, a situation with three classes of exactly Commodore 64 was quite unusual. I personally know only two such cases — the second one was school in Moscow.
I clearly remember that during our first lesson we were left to ourselves. We were put at computers by the teacher and suggested trying to move the cursor across the screen and press some keys. Sometimes he answered our questions like «how to change the color of the cursor?».
That was something completely new to us, as none of us had ever had such an experience before.
The practical lessons were twice a week. It only took a couple of classes to see who is the most interested in computers and it did not take a long time to see three or four of us (unsurprisingly, guys) skipping the other classes to spend this time in the computer room. Those rooms were called «Vychislitenly Tsentr» – the «Computation centre» literally.
Most of the teachers showed understanding to us. If there were available computers, we were always allowed into the computer class, and disk drives were given (there were several of them and they often broke). The secretary usually allowed us to use her computer even if it required kicking out her son who only played games.
Back then, the USSR had no global networks as well as the earliest Western examples of such networks were pretty much uninspiring, at least judging by modern technological standards. That's why it was a serious achievement to obtain some software or just to get an answer for a computer related question. It was all the more so for the USSR where computers were much less common in contrast with the US.
Teachers were not able to help us so in several months we knew about those computers much more thаn they did.
There were a dozen floppy disks available for us. Most of them contained games, but we also found a «monitor» — simple assembler/disassembler/debugger. From the documentation we had а couple of books — Machine Language Manual in English (this significantly improved my English grades in school!) and Basic Manual in German. Unfortunately we couldn't take those valuable books home.
Within two years of our visits to «VC» (on good days we were there from morning till evening) we several times were visited by people «from outside» — as far as I remember, from Moscow school. They brought a 3.5" disk drive C1581 which was quite rare among Commodore 64 owners.
It was our rare chance to exchange the knowledge and get some new software. Every single book was a real treasure and was a subject for the most detailed inspection. We read every single sentence, every word and even letters trying to understand the meaning of particular words or phrases. There always were technical words and abbreviations that could not be translated using a regular dictionary.
There were attempts to make something useful out of our time spent with computers. The teachers asked us to help with creating some educational programs for other students. Such programs were usually written using built-in BASIC language and it would be true to say, this was the primary choice for C64 owners back then. BASIC language was a starting point for us too. Very soon it became clear that more serious programs and games are written in a different programming language. We got a good experience writing those educational programs in BASIC language and we were well aware about limitations of such programs – the execution performance was one of the major issues.
That was the time we reached «the next level». The things we started to perform the others would call a «hacking». Of course, we never knew that word back then. It was curiosity that pushed us to see how the particular pieces of code and data work together. We were changing small bits of code and testing what would change in the program.
Most of the computer games had short and nice looking introductions with music and sound effects. It could be scrolls, some graphics effects (sparkling color bars and logos were quite common) and music. Those start sequences were called «intro» for short and were added by computer software pirates. Those individuals and teams were stripping down the software off any protection and validation code, cheated the game engine for «infinite lives or ammo» and the program was distributed in this modified version. Such copies were mostly sent as 5.25" floppy disks via the regular post. BBS (Bulletin Board Service) for Commodore 64 was a rare thing anywhere in the world and the typical modem speed was quite slow and not exceeding 300 bps.
We admired those intros. It would be true to say that many of those intros were real pieces of art. Intro sequence was a «business card» for a group. It was the way to make a good impression. Apart from appearance, the intros were very technologically advanced. We are talking about the time when available computer memory and other sources was very limited and occupied by the game itself. The game itself must be optimized and compressed to allow adding an intro. The typical intro would take 2-3 kilobytes of space when the host game would take the rest of 30-50 kilobytes.
It is well known that in the USSR access to Western culture was very limited. Just to give you an example – the meaning of the word «Beatles» was unclear to me while I was seeing it written on the walls sometimes.
Therefore intros which later were grown to self-sufficient «demos» as well as games were the source of information from abroad. This information was not political, or protest driven as it was very common with music but in the meantime, they were concentrated showcases of some mixed elements of western culture and style for us.
We were unfamiliar with American culture and movies so we understood almost nothing. For example, we had no idea why in «Back to the Future» game somebody rode on a skateboard or why some pirate/cracker groups had such strange names like «Beastie Boys». But in spite of that we imbued with spirit itself — via way the pirates exchanged messages, special style of pictures, fonts, logos, music. And also because of declared values like value of original ideas and its implementations in combination with freedom of information exchange. That combination meant limitations. For example using someone else's code in intro wasn't welcome.
Probably that everything happened in that bubble world (it was called «on scene») still waiting for its serious researchers.
The contemporary debugging, disassembling and emulating tools are not even possible to compare with basic and most primitive tools available on Commodore 64 a long time ago. The modern approach is very different to what people tried to do before.
Usually we proceeded like that: loading program (1-2 minutes), loading monitor (half a minute), looking block of memory we were interested in (if code was packed or encrypted we also had to find out unpacker/decrypter code), inserting BRK opcode and run program. In most cases it led to computer freezing. There were a lot of reasons for that — for example, the monitor would load over program code or it changed some variables that were important for the program. Anyway, we had to switch off/on computer and disk drive and do the same thing over and over for dozens of times. If there wasn't any progress, we took another program and did the same with it.
This approach took a great amount of patience and time. It was a proper celebration every time we could extract a piece of code that could play a piece of music and save it as a stand-alone application. The real magic beyond our understanding were pieces of code that could write anything on the screen border. For a long time it was a real mystery for us.
The existence of dedicated hardware for graphics (VIC-II) and sound effects (SID) was making the experience of working with Commodore 64 very different compared to ZX Spectrum or even PC. It was like having a conversation with something that lives inside of the computer. We were putting random values at different memory addresses (POKE command) and were waiting for something to happen. Sometimes, we would get a square in the middle of the screen, or characters would appear distorted, the other time the entire screen was moving a few pixels in one direction. Of course, we were trying to record and systematize those observations which was a very difficult task due to the lack of information in general and the only available books in the language we did not know.
One of the unusual things was the sprites. At those times this word meant exactly hardware sprites — simple pictures 24x21 pixels size that were displayed by graphics chip using data from specific memory addresses. Being enabled, sprites were kind of «sticking» on the screen and kept there independently of foreground and even video mode.
As it was mentioned earlier, the main programming language for Commodore 64 was ROM BASIC. It was quite primitive. Despite all the variety of graphics and sound features of this computer, BASIC didn't support those features directly — we had to use POKE commands. Program which draws line took 2-3 screens of code and worked for several seconds. It was also non-trivial even to delete file from disk without using special utilities!
As we had a disk drive we could load extended BASIC (or anything else). But there were no disk drives quite often — some of them were used by students, others were just broken. This resulted in memorizing huge number of various memory addresses, values and their combinations which let us directly control computer chips using POKE/PEEK commands: enable and move sprites, change characters, make sounds, etc (I still can list powers of two at least till 2^16 even being awaken at night). We typed some command sequences without even thinking.
I remember one day we found only one vacant computer. Unluckily there were no vacant disk drives at all! Leaving wasn't an option, so in half an hour we wrote a game using just ROM BASIC — something like a maze scrolling top down and a cross (the «hero») which the player had to lead through. The main idea was a very small source that allowed us to enter it very fast using just a keyboard, without a disk drive. Full source took about one screen (40x25 chars).
Working with disk drives on Commodore 64 was different to the majority of other computers of that period. Starting with a special recording method which allowed to put on one side of the disk roughly 144kb of data (you could always cut through another gap to flip the disk itself thus enabling an ability to write on the other side of the same disk) and ending very unusual circuit design.
The main characteristic of the C1541 disk drive was its own processor (the same as in the computer), program memory and I/O port. As a matter of fact, the disk drive was a full-fledged computer and behaved accordingly.
This feature was utilized by some of the games and tools. For example, programs could implement their own low-level data exchange protocol between computer and disk drive to greatly reduce the loading time while the standard way protocol would take up to two minutes to transfer just 50 kilobytes of data. The other programs would control the disk drive LED switching it on and off according to some pattern. This code would run on the disk drive itself.
Software protection also extensively used disk drives features writing data between the tracks and even on non-existing ones. There were a lot of utilities designed to circumvent these protection schemes and copy disks. Disk drives malfunction after using such programs was common that made teachers angry. Broken disk drives would be taken to the IT lab nearby. Near the end of our «training» it turned out that most malfunctions were caused by the movement of magnetic head outside the nominal working area. It could be easily repaired by simple BASIC command like LOAD":*",8 which forced the disk drive to recalibrate. I do remember I was so proud to discover it, as it was not a random guess but a well-performed research.
Despite all that fun we had with digging deeper into the system we always had time to play the computer games too. Quite obviously, the teachers were strictly against the computer games in the classroom. The Commodore 64 had a good variety of high quality computer games compared to other computer platforms. Some of those games were the most popular for us: Cauldron II, Ghost'n'Goblins, Arkanoid, Driller. We were making the complete game level maps for Driller and Cauldron II using pieces of paper glued together. Many of the games would require a joystick. For obvious reasons the schools had small number of joysticks in the first place and their reliability left much to be desired. We had to construct our own joysticks and sockets. The Commodore 64 computer could mimic the joystick movement with a keyboard. Those keys were scattered all over the keyboard – one of the joystick ports is mapped to keys «C,B,M,F1,Z» (left, right, fire, up, down). The player had to hold the «space» key all the time to activate those shortcuts and was ok to have a piece of paper folded number time wedging the «space» key.
At some point, we received disks with the copies of high-level languages like C and Oxford Pascal. It was quite an awful experience. It was required to load a few modules from the disk in a very specific sequence (the editor, P-Code translator, linker, P-Code to executable compiler) just to convert a simplest dozen lines of Pascal source into an executable file. The entire procedure would take several minutes and produce a massive file. This file was a dozen times bigger than BASIC or Assembler equivalent. C language compiler was just slightly better. We accepted this situation «as is» and never really used those languages. Sadly we didn't get Forth at those times and knew nothing about it.
Despite lack of programs and manuals we sometimes even had secrets and «fought» with each other — demagnetized floppy disks and plotted against in various ways… I still have my old box which is reinforced with thick steel plates (if somebody took a magnet to the stack of floppy disks, it usually damaged data only on the top disk, but steel sheets provided additional guarantee).
«Swapping» was considered one of the most widespread ways to obtain new software in those years. As I have mentioned earlier, almost nobody used networks to exchange software on C64 because of lack of modems and expensive long distance calls. The lack of network shaped the entire computer subculture back then, but none of it is reflected in any of the movies. The hackers in those movies were always using networks.
It was just so hard to get hold of the source code of desired visual effect. Most of the demos and intros of that period had their own ideas and custom implementations in their code. Of course, there were plenty of attempts to disassemble the code and attempts to understand how it works but this is a very different thing to the source code of the effect. Also, attempts to use ripped parts of code (to make the same nice scrolling as in another intro, for example) were not welcomed by the scene members.
However there is an interesting fact that reusing the complete soundtrack from a game wasn't disgraceful.
The other person would ask – so what is the actual way the hacked games, demos and software was distributed? Every single established pirate group (or «crew») had a «swapper» member. The primary task for «swapper» was to keep in touch with other groups, send and receive disks from them. At some point, I met a person having his own Commodore 64. It was an extremely rare thing in St.Petersburg back then, true luxury. That guy knew English well and was exchanging disks with crews from other countries. I still have some of his disks with graffiti done in marker.
Surprisingly, such communication channels were fairly effective. The FBI had just started their fight against piracy and it was even enjoyable to escape from them. It wasn't uncommon to read about FBI operations and their heroes in cracktros and diskmags (people were proud of it).
Diskmags was another phenomenon that quickly lost its meaning due to the birth of global networks. It was the counterpart of print media (printed magazines, to be exact) targeted to sceners. Typically they were several executable files recorded on one side of a floppy disk. Some diskmags were born, others came to decay. Total number of them reached dozens. Most famous ones I saw were Propaganda, Pulse, Reformation, Domination, Shock.
Commodore 64 diskmags would typically have a number of articles, announcements, recent voting results for demoscene releases and software. It would have interviews with pirates and the creators of demos and intros as well.
The appearance of the diskmag had a paramount importance – all the artwork, logos, fonts and background music was carefully chosen and arranged together.
As long as diskmags were released not very often (in the course of collecting content), there was another way to spread the news — noters.
Noter was another, more frequent, standard way to spread the news. It is a very small executable file (less than a couple of kilobytes) with some text and music that is typically supplied with games and software disks. To a certain extent you can call it the replacement of «readme.txt».
There was no standard text editor supplied with Commodore 64, therefore Noter would always include a built-in text editor. This text editor would have rich text decorating features – not only colors and text styles could be changed but all the cursor movements and text changes were recorded and could be replayed. It could easily give the impression that you see a text that someone is typing right in front of you. When finished, the text and the recorded sequence would be saved as a new file – Noter was effectively cloning itself with modified text.
There is a big variety of pseudo graphic symbols in standard PETSCII charset on Commodore 64 computers. Those symbols could be used to make a simple drawing. This charset was more flexible compared to standard IBM PC charset. While IBM«s was mostly designed to help drawing tables, the PETSCII had much wider ways to use it. On top of that, the standard C64 keyboard is having pictures of all special symbols making the typing process very simple.
Pseudo graphic symbols were widely used to decorate the disk folder structure. The list of files was showing the file names exactly in the order they were recorded. It was possible to create empty files and draw a picture with filenames containing graphic symbols using special programs. You could make a simple drawing or crew logo and this practice was very widespread. Eventually, drawing with graphic symbols would evolve into PETSCII graphics competitions.
Alternative feature of graphic symbols would be an ability of C64 to shorten BASIC command into two symbols to speed up typing in the program. The first symbol would be a normal letter the other – pseudo graphic range symbol. In the program listing it was automatically expanded and seen as normal commands.
As for Cyrilic chars, in some computers they were preloaded in ROM, but it was easy to load them programmatically even using BASIC.
The other day we were checking the collection of floppy disks we had in school and found a disk with the „GEOS“ label. This word meant nothing to us back then but applying modern classification it was a full-featured graphics operating system. It was one of the most advanced pieces of software for Commodore 64. GEOS provided an efficient way of working with multiple disk drives, well-thought graphics mode, albeit quite slow. It supported a variety of peripheral devices like mice, laser printers and expanded memory units.
The supplied software would include graphics and text editor with custom fonts in WYSIWYG style, electronic spreadsheet, database system and publishing software. All of it was made bespoke to GEOS and was mind-bending considering it was available for home use 8-bit computers. Unlucky for us, we did not find GeoAssembler, GeoDebugger or any documentation supplied – so we could not do any development. All we could do – to get ourselves impressed by the level and complexity of this system and put it back on the shelf. It should be mentioned that the Windows operating system was still non-existent, and Macintosh was not realistic to see in the flesh in Russia back then.
Around this time our magazines „Radio“, „Modelist-konstruktor“, „Mikroprocessorniye sredstva i systemy“ started their series of articles on making your own home computer. This story developed along this Commodore 64 experience. Those computers were no match to Commodore 64 both by hardware capabilities and software availability.
Nonetheless, we always had a desire to make or at least buy DIY computer to have it within easy reach. One of the first and the most popular ones to make was „Radio-86RK“, but it required hard to get videochip 580VG75.
Another choice was „Irisha“ that was too complex to assemble and the „Spetsialist“ appeared much later. Majority of those DIY computers would not even have BASIC language built-in.
All in all, none of the listed choices progressed further than getting circuitry drawings or PCB with some components. Meanwhile, circuitry drawings of ZX Spectrum clones started to circulate around the country. It was uncomplicated, there was only one difficult-to-obtain (but available on the market) chip — z80. Furthermore, as far as it was functionally close enough to the original ZX Spectrum 48k, there was a lot of software and manuals available.
Shortly after that I bought a partially assembled PCB (»Leningrad" version) and got quite a usable Spectrum computer. One of my friends did the same.
My Spectrum experience did not last long. Most of the time I used it to play a couple of games missing on C64. ZX Spectrum was much simpler than C64 having basic graphics, sounds and overall software quality. The ZX Spectrum Scene was just starting and had no rich heritage of C64. All I remember is the computer game «Elite» which had a label «CRACKED BY NICOLAS RODIONOV» that replaced traditional intro and my experiments to connect an H306 analogue plotter using two DACs. I have managed to print the title screen from the «Tomahawk» game by moving a pen for each pixel and drawing a single point where it was needed. It took one hour to print a single picture.
ZX Spectrum was forgotten immediately after getting a new Commodore 128D.
C128 was a strange computer. It had two CPUs, two video adapters, and two video outputs. This arrangement allowed it to work in one of the three modes: Commodore 64, Commodore 128, and CP/M. The disk drive was capable to read PC-formatted floppy disks and allowed me to get acquainted with CP/M software like Turbo Pascal 3.0 and Wordstar. By then I got access to the PC though, so my interest in C128 was limited by using it basically in C64 mode.
Part II: From sixteen to thirty two
Still no networks
The very peak of «Perestroyka» (1990-1991) coincided with the end of my epoch of using 8-bit computers. That was the time the very first IBM PCs were imported into the country, but no one understood why. Luckily for me, I had a friend that started a joint venture with a USA company. He received a PC AT 286 20MHz 1Mb computer with CGA monitor and Star 9-pin dot matrix printer directly from the USA. My friend had no experience or knowledge to operate this computer and this was an expected situation for early PC adopters back then. The computer itself was in very advanced configuration – PC AT 286 20MHz at the time when even PC XT was still considered as a very good option. The weakest part of that computer was the CGA video adapter – it could only do 4 horrible colors at a very low resolution of 320x200 which was very limiting. Anyway, exploring MS DOS operating system was interesting and entertaining enough on its own.
Soon after I failed twice entry exams to the Leningrad Polytechnical University (it was for good because I would have been flunked anyway) I started working as a laboratory technician in the department of Computer Science of Leningrad Institute of Fine Mechanics and Optics (IFMO). At those times IFMO still didn't have its current status — there almost weren't any computers, except for the huge PDP-11 clone «SM-4», some Iskra-226 and a very few PCs.
My workplace was on the third floor where we had five MERA SM 7209 terminals. Our in-house computer gurus enhanced them to the level of more or less self-sufficient computers with z80 CPU, 128 K RAM and Bulgarian-made floppy disk drives. The students were rarely seen to be using those for anything but typing in some machine codes and using a primitive debugger/monitor. Such computers were not very reliable because of memory refresh issues. The probability of losing the entire program that took half an hour to type in was high. Students were trying to identify and share the most reliable memory ranges specific to a particular computer.
The computer laboratory technician position required me to solder back the failing equipment cables and prevent taking any further damage to the computers from students, especially when there was no university staff around. I spent my available time with an «Iskra 1030» computer. It was not a very successful clone of PC XT 4.7 Mhz with 512 kb of RAM and CGA video adapter. The next room was home to «Iskra 226» – a massive steel box similar to the Wang-2200 computer with BASIC interpreter. Strangely enough, your hand would get cold whilst working with this computer as there were not one but three powerful fans blowing directly at the keyboard. My experience with those computers was driven by curiosity rather than a practical purpose.
There was another lab technician in our department. He was responsible for the equipment in the room at the same floor but at the farthest side of the university building, we called that side «old block». Also, he was playing music in a heavy metal rock band which and the only time we had a chance to chat was monthly refuse disposal activities. The other days he could lock himself in the room to make himself busy with something very peculiar – those activities would force him to run across into the toilet «to hide from the crocodiles that were following him».
Meanwhile, I had full access to Iskra-1030 and Pravets-16. Pravets-16 arrived a bit later and was a clone of PC XT 4.7 Mhz with 640 kb of RAM and CGA video adapter. It was a better implementation than Iskra. Both of the computers were supplied with 10 or 20 megabytes HDDs with DOS v3.30. Most popular software existed only for DOS. Latest version of Windows was 2.0, it was awful and ran from the DOS too. It was impossible to imagine that Windows would become popular in just a few years.
DOS was an inevitable choice for the PCs of those years, and it had positive and negative aspects. Firstly, the pure DOS appeared as a very inconvenient way to start programs and manage files for a regular user.
On the other hand, there were more and more various utilities helping to deal with those routine operations. There was Norton Commander file manager and its blue two-sided panels were the icons of that epoch, especially in Russia. The single-task nature of DOS was addressed in DesqView, that allowed switching between a number of running applications even using XT computer. The variety of small «resident» programs provided instant access to the calculator, notebook and similar functionality. All in all, it was possible to create and adjust the comfortable working environment.
The viruses of that time were easy to detect and eliminate with popular antivirus software like Aidstest. The diversity and the speed of virus programs distribution was pretty easy to control, assuming the only way they could spread were the floppy disks.
I knew that computer networks existed in some research institutes and specialized establishments, but my knowledge was solely of theoretical nature. I saw a modem in the flesh just a couple of times. Even so, the overall situation with software supply was generally better than Commodore 64. More people purchased PCs and there were plenty of ways to exchange software. Computer piracy was not a big thing back then. No one would even bother tracking pirates down as there was no general understanding why copying some programs could be a bad idea. Of course, in reality we understood everything thanks to all of those sub-culture connections and scenes.
Radioelectronics Lyceum SPTU-38 was one of the biggest and most popular software exchange locations in St.Petersburg. Because of its cult status it really deserves to have a commemorative panel on the building itself.
This SPTU had a large computer classroom with a couple dozens of Yamaha MSX-II. Those computers were not so popular already, mostly because of several PCs on the other side of the classroom. The PCs were of quite decent type – mostly 286s or even 386s. They were always occupied by people coding in Turbo C, Watcom C (just C, no pluses) or even in Prologue computer language. There was a metal box full of 5.25" and 3.5" floppy disks next to the one of the PCs. It was the equivalent of a modern data-center of considerable capacity.
There was a procedure of working with this archive. We would approach and do a polite and quiet greeting. The person using the computer would ask «what you've got?» in the most incautious manner. We were hesitant to present our floppy disks which were quickly taken and put into a disk drive. The person would check the contents of those disks with no visible interest. We were really proud if any of our files or archives would be copied from our disks. When this ritual was complete, the person would usually allow us to use the computer and the box of floppy disks saying something like «just grab what you need».
The box was nicely organized, and the disks had labels with contents description. Still, it took some time to get around that collection. Some of the programs, like compilers with all its libraries, would take up to 10 different disks and the copying process wasn't quick in general. Even so, each visit would enrich us with such a number of programs and tools that it would take weeks to get through all of them. The copied programs were valuable assets for further software exchange in other locations.
A friend of mine had his own Tandy-1000. It was an IBM PCjr clone – similar to PC XT, but with 320x200x16 video mode and enhanced audio capabilities, well, compared to a regular PC beeper. The biggest issue came in a form of monochrome display capabilities in shades of black and green. It wasn't a big problem for 16-color requiring games, they would start and work perfectly. That was a time when Sierra made quests were really popular: Space Quest, Hero Quest, and Larry.
Meanwhile in IFMO I got PC AT 286 with EGA and Amstrad PC1640 (similar to PC XT with EGA Mono) as a replacement of Pravets. By that time I was skilled in x86 Assembler and Turbo Pascal programming as well as in PC hardware. However, in neglecting my responsibilities and work attitude I matched my above mentioned colleague from the old block. The only difference was that damage caused by taken substances was in a different league compared to the damages done to me by computers.
This quality of our work was best characterized by the fact that after we left those positions a year later, there was no need in this position altogether. As far as I heard – there were no objections.
I tried to enter IFMO the next year, but my score was below the acceptance threshold for the Computer Science department. Instead, I got myself into a brand new Mechatronics department (Mechanics + Electronics, literally) in 1991.
We had applied mathematics practical studies using SM-4 every month. I remember having no good feelings about that noisy wonder with scattered flashing lights separated by a glass wall. We had to use terminals to write a simple Fortran program implementing a mathematical model. The compilation process would require closing source code editor TED and running two other programs which usually took minutes. Everything was so slow in general, SM-4 resources were inadequate to work with a dozen of terminals, on top of that the system crashes required to start over with the source code from time to time.
A single class was enough to understand that I am not willing to come back there again. Still, I had to persuade my teacher that I've got the Fortran language knowledge and experience. I started to search for the way to get out of this situation by getting through a Fortran book. It wasn't a reading as such, just browsing. There was an idea to write a Turbo Pascal program that performed all required calculations and to print the listing of that program with all Pascal keywords replaced with Fortran ones. This is what I tried to bring to my teacher. Unsurprisingly, he was very confused and surprised. It was clear and obvious that such a Fortran program would not work at all, even if it was written using a PC computer. The most discouraging was to see the working program printing the correct results. The deception was of the highest quality and my Fortran teacher, apparently, wasn't all that confident in his Fortran knowledge. To make things even trickier I told him a story about a new dialect of Arity Fortran which I made up of recently released Arity Prolog. This little fraud ended well and everything was accepted.
The situation with computer availability continued to improve. First of all, I obtained my first PC-compatible home computer – SM-1810.13 «Nivka». It was a PC XT 4.7Mhz 640 kb RAM CGA video adapter computer assembled with soviet components in a massive «full tower» computer case. Video card and the processor were original components but the system bus was not standard and could not accept extension cards. It had a sound of a jet plane taking off all thanks to not one but four powerful mains voltage operated fans.
It did not take me long to increase the CPU clock speed to 10MHz. The only known side-effect was a disk drive controller chip ejecting himself from PCB which I fixed with teeing it down with some threads. Not long after that I got a PC AT 286 with EGA and consecutively VGA video cards. The computer upgrade process by boards and adapters replacement was quite popular.
Those days I spent a lot of time after the classes or even instead of my classes in the Computer Science department at IFMO. There were two IBM PS/2 Model 30 (PC 286 with MCGA video adapter and microchannel bus), few PC AT 286, and the fastest computer I saw at that time – PC AT 386SX running at 16Mhz with VGA adapter. I remember the attempts to install the OS/2 operating system on that machine. OS/2 version 1.0 was still a joint development effort of Microsoft and IBM.
It was around 1992 when I discovered FidoNet…
FidoNet and BBS
I had an unused modem for quite a while. It was in this «unused» state mainly down to two reasons. First of all, I had no one to connect to. On top of that it was an acoustic modem. This type of modem would require a phone handset to be connected to the modem using rubber sealed speaker and microphone outlets of the modem itself. The connection was established by using controls and buttons of the host phone itself. I will reveal no secret by saying I have never managed to connect to anyone using this modem.
The first modem that had a practical meaning was 1200 baud modem without MNP error correction protocol support. It was a full-size ISA board that required an active fan cooling for a reliable operation.
FidoNet was nothing like contemporary Internet. There are massive technological and organizational differences. Since the very start it was volunteer-driven network of «nodes» connected with each other in different towns and even countries. So-called «SysOps» (short for System Operator) had arrangements on data transfer, text electronic mail exchange, user base management, and resolving conflicts.
There was no membership cost and large nodes could be deployed in large companies that would actually foot the phone calls bill. Sometimes, it would include international calls as well. Any attempts to commercialize the FidoNet were terminated apart from some designated echo-conferences to buy and sell some hardware.
Echo-conference (or «echo» for short) was a main thing in FidoNet. I would describe it as a collection of global-size topic-driven forums. In contrast to the Internet, such forums could not have a dedicated owner, but rather had its own life within a network. Moderators were usually assigned by forum creators and managed the behaviour of participants and checked the content. To coordinate mail and echomail transfer as well as to warn or even excommunicate people who broke the rules there were network and regional coordinators and echo coordinators.
Technologically wise a typical FidoNet station was a computer connected to a phone line via modem and specialist software. It was a requirement to accept the other nodes' inbound connections at least for an hour within a day to do electronic mail exchange. More often, such stations used to be available during the night time when no people used the phone line; while the stations deployed in large companies could operate 24/7.
FidoNet used to have hundreds of active nodes and countless number of «points» at its height in the USSR. «Points» were managed by nodes through which they had access to electronic mail. That situation with the scale and efficiency of management was unique – such success was never seen in Europe or the USA.
FidoNet was different from the Internet for being not only the data transfer network but for being a society of people brought together by some basic democratic values allowing this network to exist. The mechanisms of those values' implementation were of a very pragmatic nature. Everything was designed to have a robust and reliable electronic mail exchange and to make sure that echo-conferences work as they should. All the proposed document alterations and changes were widely discussed and voted by Sysops. The same approach was used to elect system coordinators.
You needed nothing else but a computer with modem and configured software to get connected to FidoNet. Some of the FidoNet users improvised with electronic mail exchange using floppy disks – this rare sight was nicknamed «floppynet». The minimum level of computer knowledge required to set up computers and software was the most powerful filter to leave all of those occasional and random people outside the network. Most of the FidoNet users were in IT anyway, although there were non-technical background enthusiasts that wanted to discover this network and society. This type of semi-open society allowed to build a certain trust within users of FidoNet.
At the same time there was a version of an offline Internet called Relcom similar to the name of the largest provider. It was quite popular in companies and had newsgroups similar to echo-conferences. Those newsgroups were managed not in the best way and it was reflected in the quality of content too. It could be the lack of this natural filter as for FidoNet or absence of organized structure of echo-coordinators. It was a paid relationship between companies and providers which resulted in a mixture of spam and offtopic that no one could really stop. FidoNet users debated a lot about allowing the data exchange between certain FidoNet gateway nodes and such newsgroups.
FidoNet participation had a footprint in real life too. For example, it could be considered as a positive employment reference if an applicant was a FidoNet user. Also, the rumor had it — if the share of FidoNet users in one given company would exceed a certain number — the company is doomed and will eventually collapse.
On top of that it was common to mention that you are a FidoNet user to get a discount or additional services in computer hardware shops.
FidoNet coordinators were often well-known people in the real world. I remember the COMTEK exhibitions in Moscow in the late 90s. Those events were among other things informal meetings events for SysOps from Russia and ex-USSR states. They were gathering there in impressive numbers — just imagine a few thousands for people in a single square.
One day, a car with someone important inside tried to use the shortcut across that square instead of going all the way around it.
The car was moving slowly through the crowd while beeping and flashing lights. It managed to get to the middle of the square where was our regional FidoNet coordinator. I was talking to him that very moment when the car appeared high behind him. He glanced at my face looking behind him and instead of moving away he just waited and when the car literally touched him — he sat on a bonnet. The bodyguards jumped out of the car and took a menacing stance. It wasn't a smartest move as the other people got closer and decided to take part in this confrontation. The bodyguards were smart enough to see the size of the crowd around and finally they retreated in the car which moved back.
Bulletin Board System — or BBS for short coexisted with FidoNet those years. Those systems were hosted on the same computers as FidoNet stations and people often mixed those two in this country. BBS was different from FidoNet. While FidoNet station was a system to exchange electronic mail, the BBS allowed online access to the computer itself — contemporary telnet is the nearest thing. Anyone could call the phone number of BBS and start downloading files, read mail, or talk to sysop after logging in. The users were valued and ranked by sysops which would give them different connection time allowances and download limits. The user value would depend on the amount and quality of shared software or how well the administrator knows the user himself. The phone line impose a connection limit of a single user at a time, while the rest of the users would be dialing in repeatedly trying to connect. Finally, the active user would hit the time limit or the line would be dropped by the modem.
The connection was established by a terminal program. This program would control modem via serial port by sending commands like dial the phone number: 'ATPD123' or change the connection speed or protocol. It was common to keep the modem speaker turned on to control the connection status or to hear if another person picked up the phone. The modem would generate a noise-like connection sequence to synchronize connection parameters with the remote modem, people would even recognize connection parameters listening to those sounds. Sound would be turned off on successful connection and the user would see a connection confirmation in the terminal — something like 'CONNECT 2400/MNP'.
My home phone line was occupied by SkyNet Station BBS for a long time. It was really unusual and very interesting to talk to all those unknown callers from other towns and even countries. Some of them used «Iskra-2» (alternative industry-sponsored communication lines).
Because FidoNet/BBS stations' working time was from midnight to early morning, I often crashed out in some vulnerable moments during my classes in university. During the first and second course such an attitude to the study wasn't appropriate, but I was lucky.
Foreign BBS were one of the main sources to get new software, quite usually it was pirate software or warez. Those days the international calls were expensive, and people tried to use a company phone line to make them. Often, the company would not even know about such practices.
Because of calls costs there were a variety of attempts to fool the system and make free calls. Unfortunately, the 'bluebox' tricks known in the West did not work with local phone stations. By the time one creative person managed to adopt this approach to make it work in Russia. Sadly, by then BBS became obsolete.
The phone lines of that period left much to be deserved to say the least. At first typical modems would rarely hit the speed of 2400bps — most of the time the practical transfer speed would be much lower. There was rumor that the theoretical limit was 9600bps. It is fair to say — at the same time were people claiming 33 MHz to be the highest achievable frequency for CPUs. Of course, all of those numbers were about to change.
The new generation of more sophisticated modems arrived which could adapt better for phone lines of bad quality. Some of those modems could efficiently use the phone lines not very suitable for regular voice calls. Telebit modems were implementing PEP and TurboPEP protocols that could get to 23000 bps. Those were rare but very noise tolerant.
Zyxel (ZYX 19200bps) and US Robotics (HST 16800bps) modems were widespread. They supported the standard v32 (9600bps) and v32bis (14400bps) as well as their own higher speed protocols requiring compatible modems on both sides. The choice of Zyxel or US Robotics had a very religious taste to SysOps.
There was a curious story associated with HST protocol…
Initially, it was only supported in higher grade US Robotics Courier modems, and the cheaper model USR Sportster was released without HST support. A basic reverse engineering revealed that schematics of both modems are almost identical but firmware alterations wasn't enough to upgrade Sportster to Courier capabilities.
There was rivalry and some kind of a competition between two people in St.Petersburg was started. The intensity of this competition was much like a war sometimes. I remember bringing my Sportster to one of those gurus. I was told to wait for a couple hours for him to perform the required updates which would involve nothing less than particle matter accelerators in one of the research institutes. Of course it wasn't true and everything was much more down to Earth.
The other guru could be found in Medical University in Karpovka street. There was a large room with a large computer case taken from an older ES (IBM System/360 clone) computer. Inside of the case there was a mattress where you could find the sleeping owner. The semi-opened fireproof box that contained computer and modem acting as node 2:5030/131 was aligned to the wall.
The file sizes and storage size requirements were growing fast due to increased transfer speeds. HDDs were expensive and not very reliable and CDs were nowhere to be seen. Once, I saw an optical disk video player at LKI («Korabelka»). It was 1996, the disk was about 8" big and it had an analogue method of storing information.
That is why it was popular to increase the floppy disk capacity using different tricks. The special software would allow you to write 800kb of data into 360kb-rated floppy disk using 720kb capable floppy disk drive and 1.2mb floppy disks could be upgraded to 1.4mb. While it was nice to get extra floppy disk space it did not solve the major problem. We still needed to store all the software we had to exchange and backup. Losing a copy of the program was not an option considering how much effort it would require to get a replacement. Modern approach «why do I need to keep it — I will download it when I need it» was unfeasible.
One of the popular solutions was offered by a local company in Zelenograd. Arvid PC board would allow the use of a regular VHS player as a streamer. A single cassette would store up to 2Gb of data with all redundancy and error-correction codes. It was a very impressive capacity for those years while being affordable and reliable enough.
Hackers and the Demoscene
At that time, the IT labor market in Russia looked odd. There was a supply of high quality specialists with up to date IT knowledge but very limited demand for those positions. It was tricky for a good specialist to gain practical benefits. As a direct result — it was typical to see non-profit high complexity projects.
Around that time movements took its shapes — the software hacking and the demoscene. They were closely related in the beginning similar to the world of Commodore 64, although for different reasons.
It all started with 'warez': commercial games, tools, and any software products obtained for free. Even before Internet arrival we had it all — you could download fresh software releases via special BBSes hosted in the USA and Europe. There was also IceNet — the international network designed to exchange the software technically similar to FidoNet. Almost every single IceNet station in Russia was running a FidoNet node on the same machine. The real names were forbidden to use and I created my first nickname 'coderipper' there. Actually, 'nickname' is a term brought by IRC, we used to have 'aliases' instead.
Many software products tried their best to protect themselves from illegal copying. A hacker would have to have an excellent knowledge for hardware, software and system level functions. There was nothing like contemporary IDA or virtualization tools, the target program would easily detect the presence of debuggers like AFD or Turbo Debugger. Additional tricks were incorporated in code itself to prevent the popular disassembler tools like Sourcer to work properly.
This valuable knowledge found its purpose in creating simple but nice looking graphic effects — fire effect or plasma. I decided to create a new FidoNet echo-conference DEMO.DESIGN in 1994. We exchanged the programming ticks, collected new effects and discussed the way to implement or optimize particular algorithms and effects.
It was inevitable to move from discussion on effects to have our first coding competitions. The tasks and challenges were pushing the limits of creativity and code optimization — for example, «implement triangle rasterization using the smallest code footprint» or to write a tiny piece of code of no longer than 128 bytes that would do a certain visual effect. Target platform was PC AT 80286 running DOS as the most widespread and common.
Early 90s was the time period of early demoparties. They started to appear in Scandinavian countries and gathered demosceners coding visual effects with music. Basically, it is all about non-interactive visual effects with music showing the author's skills in programming, extensive knowledge of software and hardware features and designed to impress with complexity, performance or visual appearance of generated animation.
The demoparties were known in the late 80s but they were very localized due to the lack of networks and the not so legal nature of those events. Such demoparties used to exchange paid software and were pretty much «copy-parties». It all set to change with the Assembly demoparty held in Finland in 1992. This party is known because of the release of a hugely important 'Second Reality' demo and massive attendance figures of thousands of people from many countries.
Here, in Russia we saw it from a distance and due to the increasing activity in our DEMO.DESIGN conference we started thinking of having our own demoparty. It was August of 1995 when our group of friends with a couple sponsors hired the venue with equipment and Internet connection in Saint-Petersburg to make our first ever Russian demoparty — ENLiGHT'95. It was a massive success and we still keep it going every year as Chaos Constructions demoparty.
Sadly, not many pictures are available from those early years — the digital cameras were not around yet and no one could be bothered to bring in film cameras and prints. There are some VHS tapes which capture the spirit and atmosphere of those parties. We had no projector so we had to improvise with a couple of regular CRT TVs — nothing fancy. People gathered around, sat on the floor trying to see what was displayed. There were no laptops and the only computers available — three PC AT 486s along with Commodore Amiga and Commodore 64 were allocated exclusively for competition events and showcasing other demoscene releases. The voting was organized in written form on pieces of paper. Internet connection used to broadcast updates from the party over IRC.
The majority of releases were PC DOS based and were written either in Assembler and Turbo Pascal. As a good indication of the skill level of some participants I remember one of the participants used the demo music track written all by himself in the music sequencer (SoundWave tracker) that he created himself too. It did not stop there, his 3D visualization engine used polygonal models created in bespoke 3D modelling software he created himself again. Even by modern standards it is a massive effort and excellent skill set. Later, that demoscener went into the cryptographic technology industry.
Many developers were captivated by the idea of creating their own operating system. There was a very limited choice of general use operating systems around. Unix was so basic that many of the developers saw it as a pile of disconnected chips and boards instead of a fully operational computer. DOS and Windows 3.xx did not match expectations of the user and OS/2 was about to get to 'usable' state, granted you had a compatible computer too. Macs were hard to find and only a few lucky ones saw Macs in Russia at all.
We had different groups identifying and addressing the most important aspects of a modern operating system — from the distributed processing and data storage systems all the way to intermediate code capable of running on different hardware and software environments. There were many ideas of optimizing the performance for an average computer which at that time was pretty limited in resources.
Most of the operating system development discussion was in SPB.SYSPRG FidoNet echo-conference and regular offline meetings hosted by SysOp 2:5030/269 who was known for creating IBM/360 emulator for PC. There was no final OS product created as such — mostly due to the requirement to create device drivers for all existing variety of devices. That was a huge task on its own and it would require a massive team to support it. Still, it was an amazing and useful experience to get deeper into different architectures of available CPUs and design principles of existing operating systems. It really expanded our knowledge of computers and allowed us to see existing, new and 'so-called new' technologies from a very different point of view.
It should be mentioned here that apart from upgrading Sportsters into Couriers, SysOp of 2:5030/131 mentioned above created the RTS-386 system, that allowed a multiuser access with inexpensive terminals to a single PC AT 386. Every user would have a fully functional workplace in a Windows environment with graphics.
Sprint and Internet
One day my FidoNet friend sent me a message that he has access to the CompuServe network. Getting into CompuServe in St.Petersburg was similar to crossing the country border illegally. You were required to use the modem to call a well known phone number known only to the limited group of people. I still remember that phone number ending with '92' and can quote it at any time. The connection would require a symbol sequence to be typed in, then the login itself, the password and provide the details of a bank card. None of us had our own bank cards and the card details we were using came from a very dodgy source.
When the connection procedure was completed you could use a special DOS client application that allowed access to CompuServe features. The connection was very expensive and the time had to be used efficiently. I was downloading the new issues of Dr. Dobbs magazine and browsing Usenet groups.
Very soon the card details and logins were expired but we had a good taste of the network. Also, we have found that the phone number we used was a regional X.25 Sprint network access point. This network was used by large companies and banks to communicate with each other. While having direct access to a very powerful network we never had a slightest idea how to abuse it — it was just beyond of our interests. Some other people were trying to run a fraud using this system and quickly became a part of criminal chronicles in the news.
We did not have any good description of what we can do while connected to the network but few issues of Phrack magazine hinted us that typing in numbers and keywords would eventually connect us with other remote computers. We were never successful in connecting to really interesting places or rarely had access rights to do anything at the remote computer. All in all it was an amazing experience to connect to American bank mainframe and chat to another stranger who got there the same way as you are, it was quite an adventure.
I will need to explain a bit more there. Most of those unauthorized or backdoor connections were made because of curiosity or examination of technical and security flaws, or just to show the skill level. There was no monetary gain involved at all. You could not even name yourself a hacker as it was something on par of calling yourself to be the smartest person in front of others.
The word «hacker» itself had no negative attitude and just indicated a skilled and dedicated person who did something just out of curiosity, for the sake of the process itself, not necessarily limited to the IT industry.
Of course, the FBI would chase those down disregarding if hackers were doing their activities for profit or not which was known since C64 episodes from the 80s. Still, those cases were rare in the West and literally non-existent in Russia. The local law enforcement had no legislation on that matter or even understanding what is supposed to be good and what is not.
I discovered the fully-featured Internet in a very specific environment. A friend of mine invited me to his workplace one evening in 1993. He was working in a company in 'New Holland' which had a legitimate Internet connection. While his personal workspace had no direct Internet connection it was possible to connect to the other computer at the office floor via LAN. That other computer was configured to connect to the Internet via dialup to KIAE Moscow. Needless to say we were not paying for those phone calls.
Our first Internet experience at KIAE was Lynx — a text-only web browser. Also, we were quickly able to find how to start an IRC client which immediately asked us for a nickname. We needed to act fast and my second and much shorter nickname was generated there — «frog». It would be fair to say that our first Internet experience was very similar with Sprint experiments rather than modern Internet usage. Shortly after a number of local Internet providers appeared and there was no need to continue using those cumbersome and semi-legal ways to get to the Internet.
I saw my first web browser capable of displaying images and graphics in the office of Internet Service Provider 'Kaja' located in one of the basements close to the 'Rossiya' hotel.
The Internet was taking over — the dial up connection was easy to get for doing a job for someone or by sharing someone's login. All of that brought me to a brief introduction to Unix…
Education system and research institutes started to develop their own networks. The subsidiary of Steklov Mathematical Institute used a grant to install Sun Classic running Solaris 2.0 and dedicated line Internet connection. We could use this system thanks to FidoNet friends but it was not as convenient as using the dial-up at home and we made to share this connection. We knew nothing about Unix but still managed to rebuild SunOS pppd to run on Solaris. In moments of desperation I also had tried to code on Sun Classic using Sparc assembler.
The mobile devices came from the West and became popular in Russia around 1997. The first devices were pretty basic — the smartphones like Nokia 2110, 3110, 6210 or Siemens ME45. They had a limited set of features — phone calls, a simplistic notebook, and calendar. The numeric keyboard was limiting the amount of text could be typed in too. The mobile computers similar to Apple Newton were very expensive and hard to find. The things changed for the better with the introduction of PalmPilot by US Robotics. It was an inexpensive pocket-sized computer with a stylus designed primarily to make notes.
In a brief period of time few of my friends bought PalmPilots. I bought mine too. All of us had plenty of questions about software development and hardware accessories. We started an informal 'The club of mobile device owners' and had weekly meetings in the 'Kronverk' company office close to the Tekhnologichesky Institut subway station. This particular company was famous for hosting a large FidoNet node — 2:5030/2 and the Sysop of that node was elected twice as network coordinator.
The news about our club spread quickly. At that time there were no other clubs like ours and we saw more people coming with other mobile devices — PocketPC, Palm, Newton, Psion and other more exotic models. Our club was active for several years with weekly meetings at the History of Arts Institute. The active part of the club ceased to exist when all information and software became easy to get online. Nevertheless, people were coming to discuss general IT tops or just to have a good time in the company of friends.
Technology-driven clubs and societies either transformed into commercial projects or disappeared altogether as a result of widespread adoption of Internet, mobile devices and generally better access to information altogether.
The skilled IT jobs started to be paid well. People famous for doing projects of high complexity started to enjoy a proper compensation for their efforts. Money was set to become a decisive factor of choosing what to do in IT. Low level development survives in a limited number of applications and everything else becomes much less a creative process but rather an industrial scale routine job. Everyone has a computer or smartphone connected to the Internet these days — it requires no extraordinary skills to get information today. The only limits you can do online are usually the ones set by the legal system. It was all expected to see, but also it makes everything about computers to feel so ordinary. By removing those perils and challenges of early computers and networks we have lost that odd romantic feel about it.
I am curious what would be the next Big Thing, the technological breakthrough that will rival the arrival of computers and global networks?
(English version published in May, 2020)