Creating a demo for an old phone - AONDEMO

    I wanted to make a demo ever since I got acquainted with this phenomenon of the computer subculture on the classic example of the Polish Lyra II . I also regularly wanted to put something on the largest Russian demopati, Chaos Constructions , but each time they did not reach. Finally, we managed to satisfy both needs at once, in the style of Van Damme (double blow, from a turntable) - to make and set AONDEMO . In the competition ZX Spectrum 640K Demo .

    We offer you a detailed guide on how you can get to life like this.


    Phones with the Automatic Number Identifier (AON), also known as the "identifier" or "electronic secretary", appeared in the USSR around 1989, and over the next 15 years they rapidly developed, passing from the means of earning students, unemployed engineers (along with assembling Spectrum) and entire cooperatives, to the main subject of activity of fairly large companies. In the mid-1990s, a similar phone was found in almost every apartment, and any user of the telephone network could understand the character of the dial tone on the handset if its number is now determined (fake beeps and the characteristic sound of the request). By 2004, the popularity of such devices had disappeared, the number identification service on the PBX itself first became paid, and then was completely eliminated, replaced by a more modern European standard.Paliha ).

    The scene of the developers and collectors of early AON is a reality parallel to the Russian Spectrum. Radio amateur roots and romance. Elemental development, development and artisanal production. Similar iron, similar interests, similar period and volume of popularity. Many people at first simultaneously engaged in both. Young authors all-Union software (Pavel Sukhodolsky, the author of Russia , was then about 15 years old), unattached code borrowing from each other, copyrights and messages in the code, fidosh addresses, articles in the press, books, mythology, and much more. A very large-scale, but already thoroughly sandy time history of the beginning of the digital age, still waiting for its researchers.

    Caller id and me

    My acquaintance with AON took place in the first half of the 90s, already after the first seen games on the Spectrum and Dandy, but shortly before the start of the creative-programming activity. I liked poking around with these phones, experimenting with keystrokes in fresh or unfamiliar firmware, listening to popular melodies in a “computer” version and being amazed at “computer” voices, as well as reading in instructions about mentioning unknown tape recordings and security guards , "Voice charge", "beeper". A childhood friend helped his father to assemble such devices, and I was fond of electronics and was just fascinated by computers, and thus snatched into secret knowledge about the Z80, BB55 and other magical designations. At the same time, "determinants" began to appear in all friends. They often broke and fell into my hands with a request to try to fix it, which I did, sometimes successfully, more often not. In the 2000s, this activity disappeared.

    In 2013, during the excavation of the farthest corners of the apartment, I came across a couple of preserved phones and remembered the old days. A little later, the then research in the field of 1-bit music, DIY-synthesizers and especially old computers such as KIM-1, led me to believe that AON is a ready-made, fully-fledged single-board computer that can be used for non-standard musical purposes ( drum machine or sequencer). Being enthusiastic, I began to write an emulator and disassemble the old firmware, but soon it turned out that the phones found earlier had been quite successfully thrown out during the cleaning process. The topic has been shelved.

    Gradually various interests, undertakings and subjects - development of PCSPE for PC Speaker, memories and interest in old phones with caller ID and their history, reading the site 155la3about rare Soviet radio components ( amazing segment indicators! ), old ideas about the musical use of this iron, the purchase of many Avito Caller IDs, as well as electronic parts and tools for various projects, continued work on the emulator, and so on - formed into the desired scheme. Shortly before the Multimatograf 2018, a logical connection between the “demo” and “telephone” entities (as far as I can remember, this was caused by the phrase “demo for the calculator”) was seen, and purposeful work began. Of course, nothing substantial was accomplished in a week or so, the matter slowed down, but resumed with the approach of CC2018. In the best traditions, with shock work and incredible efforts, two days and a night before the party, we managed to finish, finish and debug most of our plans, make and edit a video, and send the work to the competition early in the morning.

    Already after the release, I learned that seven-segment displays are not rare guests in the works for Wild Сompo . But I have not seen those, and have not heard of them before.


    In fact, AON is the simplest single-board computer with a seven-segment display, a telephone keypad, and a telephone line interface interface. For a decade and a half, iron changed, starting with the design on KR580VM80 (i8080) 1989 and ending with the custom R100-XP chip of Russia-Telecom 2003 (8051, periphery and analogue AY-3-8910 on a single chip), with many intermediate stops and branches.

    I chose the most classic and popular version of the 1990 design, historically and technically closest to the spirit of the Spectrum: Z80 at 4 MHz exactly, 2 kilobytes of static RAM, 8-64 kilobytes of ROM, port 8255 and timer 8253 with an input frequency of 1 MHz. One of the timer channels generates interrupts, another sound, the third is not involved. This scheme was presented in the form of “big” and “small” boards, the first was designed specifically for installation in the case of the Latvian push-button telephone VEF-TA-12 , the second was put in a wide variety of imported phones, mainly clones of Panasonic office phones . For these boards there were a variety of firmware, in particular, Arcturus-36 , Selene , Lira , Allo. And, of course, the most famous is Russia , up to version 23 inclusive.

    To reprogram the phone is very simple - just any 5-volt ROM of the necessary volume and programmer is enough. I used various EEPROMs from old motherboards and fresh Winbond W27C512 purchased in China, as well as the easiest and most affordable WizardProg-87 programmer.

    The greatest difficulty when working with iron was the state of the panels under the ROM on the boards of antiquity of a quarter of a century or more. They were not originally of high quality, but nowadays the contact in them is constantly lost, making it difficult to determine whether it is a mistake in the written code or just a non-contact in the socket. I tried to solve this issue by installing a ZIF socket, but the height of the other components on the board did not allow it to be soldered, and a stack of connectors for increasing the height, inserted into the original socket, also suffered from permanent loss of contact.


    Before starting the development of the demo, I wrote, or rather, I added the AON emulator started back in 2014. It was necessary to deal with some unobvious moments, and also to apply someone else's emulation code of the timer 8253 in order to get a more or less normal sound and interrupt frequency. The presence of an emulator and at least rudimentary debugging capabilities in it speeds up development many times over. Further, the code was mainly tested in the emulator, and only sometimes on the hardware, to make sure that everything works correctly and looks good on the LED display with a dynamic display, an adequate simulation of which I have not yet been able to do.

    The code was written in the usual SjAsmPlus. Caller ID has a rather bizarre memory card, probably the consequence of minimizing iron alterations when expanding ROM volumes for new, steeper firmware. As a result, although you can install up to 64 kilobytes of ROM, only 32 kilobytes are available in memory, alternating in banks of 8 kilobytes with RAM. The 32-kilobyte halves of the full ROM capacity can be switched by output to the port, but this was not needed for the demo, everything fit in 32K. In the ROM image, 8-kilobyte banks should go in succession, without gaps, therefore, by means of assembler directives and a BAT-file, we had to organize the placement of banks at the correct addresses with zeroes, separate saving and merging into the final image.

    Approximately half of the effects in the demo are written in honest code, and the second half, for which there was absolutely no time left, was made in the form of animation. The animation was drawn in the LED9ED editor-filler sketched in a hurry , which can be downloaded on my website.

    Due to the rather high density of effects, about 4 seconds per effect, and gradual shuffling of effects, closer to the deadline, it turned out that the content of the central 16-second part of the demo is completely absent, where the musical pseudo-polyphony unfolds in full force. An outright filler effect, though rather sticky, with falling segments, alternating with a previously written spectrum analyzer, was invented urgently. I had to hope that the high density of sound information will distract attention from the prolonged action on the display.

    The first names in the block of greetings - a tribute to the enthusiasts of the past. These are the names of the authors of the Caller ID firmware found in screensavers and code.

    Although it was not entirely in the topic, it would be unforgivable to miss the opportunity to show the famous seven-segment inscription EGOGY. The most logical place for it was found at the very end - the demo began with an imitation of a failure, and ended with an error message.

    Analysis of the software implementation of the effects does not make much sense, everything is quite transparent. The main feature of the platform, which is worth mentioning, is the need for software dynamic indication, that is, you need to constantly sort through the display bits and turn on the necessary segments. This is done through interrupts. The interrupt frequency is chosen rather high, 960 hertz (~ 4166 interrupt cycles), and the display is made by means of a list of arbitrary length describing the order of switching on the digits. In addition to the stable display with decent brightness, this made it possible to easily make two effects - “freeze” with the characteristic bright eight (busting of the digits stops working) and the effect of changing the brightness (in one cycle, some digits turn on several times). In the normal display mode, the refresh rate of the display is about 106 hertz,


    The only AON audio channel is built on one of the channels of the 8253 timer and essentially copies the PC Speaker device, only with a different input frequency - that is, it can buzz with a sound of a given pitch while the processor goes about its business. There is no possibility to change the shape and volume of the signal. Since I had been busy with the topic of music on classical PC Speaker for some time, I wrote the VSP-tool PCSPE for conveniently creating such music in modern DAWs and gained experience arranging strictly monophonic melodies (only one note always sounds at a time) - the solution it was obvious: not to write another 1-bit engine, but simply to make music in PCSPE and adapt it to caller ID. This is less laborious, and authentic in sound, and ideologically true - to squeeze the unusual out of the ordinary.

    Music was written inReaper . As an artistic idea to start the demo was an imitation of the standard Rus firmware launch, I precisely repeated this melody, imitated some typical sounds (button presses, standard bell), and built a rhythmic composition from them. Then the track gradually developed, based on the initial idea, along the path of gradual complication - more and more parties creating the illusion of simultaneous sounding of several channels. Since the idea of ​​the most difficult in the demo effect was a left-to-right symbol with different brightness levels, reminiscent of Kitt’s lighting engineering, I also made an insert with a melody from Knight Rider and found the right place for it.

    The chosen platform is very limited in visual aids, and to enhance the entertainment it was originally decided to make a track, that is, an exact synchronization of music and visual effects. Therefore, the music and the plot of the demo were mostly thought out and written in parallel. Unlike trackers, where you can see only the current pattern and order list, in the Reaper you can see the track and its structure as a whole, and also easily rearrange the fragments in places. This helped in making decisions about the structure and content of the demo.

    Unfortunately, it was very difficult to accurately synchronize the effects with the music. The sound in my raw emulator does not quite coincide with the display, frequent testing on hardware is difficult, and there was not enough time to develop a normal synchronization system for timestamps. As a result, in some places you can see not quite accurate effects hit the music. While there was still time, in the process, the timings were adjusted manually, but in the end I had to put up with not the most accurate synchronization and publish as is.

    In addition to the sounds, the firmware for AON was notable for voice samples. In the course of work, I sorted out their storage format and listened to samples in which there were many curious (3-4 different voices, unobtrusive borrowing them from firmware to firmware, phrases to send the subscriber to different places). There was an idea to make a demo-speech inset composed of these samples, saying something unexpected in a recognizable voice. But there was not enough time to invent a good idea and its implementation. As an interesting fact, the voice in old firmware is stored in the form of 4-bit samples with a sampling frequency of 4500-5000 Hz, and is played via PWM on the timer.


    To show a demo for an unusual iron, without being able to attend with this iron on the party, it took to record and edit the video - not an ordinary task for a programmer when creating a demo.

    In the development process, two devices were used, one completely unpresentable with a small board and one well-preserved classic VEF-TA-12 with a large board. Testing was carried out mainly on the first, and the last debugging touches and video recording - on the second. It also differs to the advantageous side visually with larger numbers on the display, although the type of indicator in it is the same. Probably played a role less distance from the display to the filter.

    An interesting feature of this display, the calculator ALS318, it turned out that all copies of AON with him, which I have in stock, some of the discharges have noticeably lost their brightness. Most likely the matter is that AONs liked to hang, and when it hangs, the dynamic indication stops working and one of the discharges lights up for a long time with full brightness. Although it would be possible to select and put on the most lively display, I didn’t do anything about it, having decided that it would add authenticity to the video.

    Everything was filmed at the last moment in a big hurry, on a regular video camera, and then quickly mounted into Blender - because there I somehow know how, and there was nothing else at hand. The introductory part is intended to remind what a miracle of technology, and explain how another program got there. There was also a frame in the plans with ROM insertion into the board, but he had to be abandoned due to the state of the ROM panel, requiring two-handed replacement with a long obscene grunt.

    Release and Results

    Section for those who are interested in the life of the demoscene and organizational subtleties.

    How is it that the demo was in the category of ZX Spectrum . Literally two weeks before the event, an amendment to the rules was introduced, saying that work "for the ZX Spectrum compatible computers and other computers released no later than 1991" is allowed to participate in this category. In fact, the category turned into a Combined Oldschool Demo , that is, a demo for any old computer platforms, and for reasons of a staged political nature, the name remains the same. Of course, this caused a certain amount of misunderstanding and criticism, and it was already beginning to become a local stsenovoy meme.

    Additionally, at the party itself, due to the lack of work in various contests, most of the demos for rare platforms and Wild were combined in the Combined Demo , and in the ZX Demo besides my work only one non-ZX work fell. In this situation, I think it would be more appropriate to single out these two works in Combined , leaving this time the competition with the ZX Spectrum in the title only for the ZX Spectrum. If I knew about this state of affairs at the time of sending the work, I would choose the category Combined Demo .

    For what reasons I decided not to be exhibited in the category Wild(it traditionally exhibits works in the format of video and animation, although theoretically it is also intended for work on non-standard platforms). I do not argue that in fact the work is very close to this direction. But still this is a real demo, with a real TRDa binary and source for a real and very popular platform in the past, akin to our home computers. It can be easily launched and viewed on real hardware - all you need is a programmer, as is the case with consoles. Iron itself is also quite affordable, definitely more accessible than, for example, the ZX-81. There is also some kind of emulator. In other words, this is not a one-time unique, difficult-to-repeat action in the form of a video (such as a demo for an ATM or a rare camera model), anyone can see my work and do something like that now quite easily.


    AONDEMO with AONZ80Emu source
    for Windows
    LED9ED for Windows
    PCSPE for DAW with VSTi support

    Also popular now: