326

(35 replies, posted in Other Platforms)

Nostalgic things


There is also a personal retro computing nostalgic factor that may feel kind of weird for you, but still. Back in the 1980s electronics and computer related stuff in USSR mostly were both rarity and luxury. People weren't yet much familiar to home computers, electronic games, video recorders, TVs with remote, FM radios, and such, it all was a technological novelty coming directly from foreign movies and sci-fi books. In the very late 80s these things started to get imported and appear on the black market under insane prices, and with the fall of USSR all kinds of imported and local built electronics flooded the country - you probably have heard of Spectrum clones and Dendy, as few examples of this.

For us kids of the time all kinds of previously unseen technology were extremely fascinating. Casio watches with melodies, Chinese sound effect keychains, Game&Watch clones, Brick Game (Tetris electronic game) - everything caught our curiosity and attention. We loved to explore its capabilities, disassemble it to see what is inside, and so on. AONs became part of this too. Besides the ever-fascinating clever use of the 7-segment LED display that used to produce cryptic text messages (Ln Hold), one thing we appreciated a lot was the sound. Right from the excerpt from the Mikhail Glinka's 'Glory' that played during power up sequence of the Rus firmware (originally a choir piece that sings 'Glory to Russia', akin to the firmware name that is short for Russia), to a few dozens of built-in ring tones and alarm melodies, which were versions of classical and popular music. We listened and loved to recognize the famous songs in this basic square tone computer renditions. As you may guess, with Z80 and 8253 on board it was all monophonic 1-bit square wave music, albeit nicely programmed. One missing historic piece that alongside the Speccy and NES music got many of us here interested in computer music in general.

A bit later the Rus firmware was upgraded with speech synthesis - male then female voice that could say the incoming call phone number, or current time, and some other things, constructed of pre-recorded words, like old talking clocks did. It also could be used to know who was calling when you're not at home, you could call to your own number and use tone dial phone (or portable DTMF beeper device even!) to enter password and hear the speech synthesizer talking you through the call list. It was very impressive at every level, and voice quality was pretty nice for the time. Think of how voice clips were impressive in early computer games.

Close friend of mine at the time (mid 1990s) was involved into production of AONs, his father ran that private business, so he helped with soldering and assembling a ton of them. Thanks to this I learned a lot about the internals, and was also fixing and upgrading AONs for my friends time to time. So it provided me with some early digital electronics skills.


I first got the idea to use the hardware to produce some sounds back in 2014, when I was thinking of creating a simple 1-bit DIY synth and was considering to use Z80. I thought I still owned a pair of old AONs that used to belong to my childhood friends in 90s, and did some research, planning, and programming of basic emulator to make further development more comfortable, with plans to create a simple 1-bit programmable drum machine out of it at first, and something more interesing eventually. Unfortunately, later it turned out both of these somehow went to trash during major cleanup at house at some point in 2013, and I havent't found another one. Then other stuff got priority, so I had to postpone the idea. Until now!


You can listen to some of the monophonic music here: https://www.youtube.com/watch?v=A0IKdIRfoFw. This is Rus-25 on the 80C31-based board, but the same music was in the Z80 version as well (Rus firmware went to 23rd revision there, then moved to the new HW).

You can hear the speech synthesiser in this boring and shaky video, as well as see some of the interface. Again some of 80C31-based versions. https://www.youtube.com/watch?v=SOHX96BbhCk

327

(35 replies, posted in Other Platforms)

Please note. This is a long-term project of mine that has low priority and may come to fruition in some future (or not). I don't know when I will have time to work on it, but once I do, I will post updates and write ups in this thread. I just thought it would be cool to share the inception and development process of the idea with you, hardcode 1-bit entusiasts, as it may have more interest to you than the actual project, and maybe could provide you with ideas and inspire to do some unusual and bizzare stuff too.


Some history


AON (Avtomaticheskij Opredelitel Nomera, roughly translates as Auto Caller ID) is a product of early spontaneous small business that exploded in Russia just along the fall of the Soviet Union (early 1990s). It is a land line telephone device, or an add-on device to a normal telephone, with the killer feature being the built-in Caller ID function, plus things like contact list, alarm clock, calculator, speech synthesizer, answering machine, and such. Kind of early smart phone, as it was seen back then, long before any cell phones. Caller ID service was implemented by the land line provider infrastructure to be used by special government services such as police, but was totally not seen in consumer devices before. Even push buttons phone was something of luxury high tech at the time, with most of phones around the country being rotary dial ones from 1960s. Tone dial support was almost absent at the time, and remains uncommon in Russia even today (pulse dial in most places).

AON devices got huge popularity - at some point like it was in like every 2-3nd house. About a hundred of versions were designed, developed, and produced by thousands of individuals at their homes - electronic engineers who lost their jobs or income at the difficult times of USSR dissolution, but now available opportunity of private business. It was kind of blend of DIY and business, very similar to that happened with ZX clones in Russia that first were constructed and produced by enthusiasts as well. Some of those individuals later formed legit small business as a company, and kept production active up until 2004. Since late 90s, phone line operator wasn't happy by the increased load to their infrastructure that previously wasn't even considered as a paid option. They tried to make it such, with very limited success at first - no one wanted to pay, yet it was impossible to block it separately from the main services until a major update in the land line infrastructure that happened in 2000s. Land phone popularity went down greatly with major spread of cell phones by then, so the era of AONs has come to end.

Being mostly private one-person operated business, the devices were'n developed as an actual commercial product, like a phone with its own exterior design and casing. It was rather a PCB that was built into some existing push button phone. At very first it was targeted to the only relatively obtainable model in USSR produced by the Latvian VEF company (VEF-TA-12), so the board was designed to fit the tricky outline of the phone shell, complete with LED display and buttons placements. Later, with the flood of imported push button cheap phones after 1991, Z80 board was redesigned to be smaller and universal, allowing to embed it into many different cases. Clones of the 90s Panasonic office phone design were among the most popular ones, but countless other kinds were available as well, as each individual produced AONs with whatever parts he could obtain.

Now we're getting to the most interesting part. All AONs inside is a mere single board 8-bit computer with very basic architecture, kind of a crude MCU.

At first it was an Intel 8080 clone based design, it had a few versions of the firmware with pretty limited functionality. Very quickly it got changed to Z80 (imported, later cloned), with 8255 and 8253 on the board. Boards were mostly made with Soviet-produced parts (clones of 74xx, Intel, and Zilog chips), including the only available back then 7-segment LED display with very tiny digits - you immediately recognize its look if you seen it once. Build quality of the devices of this period was a total disaster - hot glue, adhesive tape, and almost no screws all over the place - yet it still works even 25 years later. Z80 version remained the most popular design, with two main kinds of the PCB (large VEF-specific and 9x10 cm universal one) produced. Dozens of firmware versions (Alfa, Fortuna, Julia, Lira, Selena, Vega, and the incredibly popular Rus), as well as dozens of revisions has been made for this design, with different functionality and user interface. These could be interchanged with very minor modifications to the board, if any, so it makes kind of standardized platform. The simplest firmware was just 8K ROM, most advanced ones became as large as 64K.

In later years a new Intel 80C31-based hardware has been designed to improve functionality and cost even further. Cheap Chinese electronic parts became available at this point, so they were used more often, including larger and better LED displays, but still mostly done with chips in DIP packaging, so it remained easy to modify. These aren't as common as Z80 ones, though, but very interesting nevertheless.

Today these old phones relatively easy to obtain in Russia, about $5-15 used, as they no longer have much use. Some enthusiasts were using them as an MCU to control some stuff such as machinery, or a smart house, or a car computer, as it is cheap and very easy to hack and modify. A small self-contained device with 12 or more push buttons, 9-digit 7-segment LED display, Z80 or 80C31 inside, capable to produce audio through few outputs, capable to sample analog input (phone line), usually has ROM in a socket - you know where I'm coming from.


The original VEF-TA-12 based design. Display put to the place where the paper note originally located, so it looks like it is actually designed to be like that.
http://shiru.untergrund.net/temp1/aon_vef_ta_12_based.jpg


The most common Panasonic clone design. Also common for the later 80C31 devices. White was the most common, but there were other colors, and different number of extra buttons (shortcuts to different features).
http://shiru.untergrund.net/temp1/aon_panasonic_clone.jpg


Random chinese phone based design, lots of such stuff.
http://shiru.untergrund.net/temp1/aon_random_chinese_based_one.jpg

328

(20 replies, posted in Sinclair)

It will work, but basically it just inverts the idea of playing sound in spare CPU time that is left of a frame - the second apporoach I described above. Just different technical implementation.

Engines like Special FX work better with this approach, because of very short pins they're generating.

329

(5 replies, posted in Sinclair)

Another upcoming russian demoparty, Multimatograf 2018. Vologda, Russia, April 29-30. Remote entries allowed.

There is united 8-bit music compo, ZX beeper is allowed, as well as any sound chips and music made with 8-bit computers in general (some non-ZX 1-bit stuff may slip into).

330

(135 replies, posted in Sinclair)

Seen interesting comment on youtube recently where a guy explained his understanding of how Wham and other interleaving engines works. It is interesting way to look at the things. He considers that logic of such engines is:

- when both channels has output 0, engine outputs 0 to speaker, thus output weight is 0
- when both channels has output 1, engine outputs 1 to speaker, thus output weight is 1
- when channels output is not the same, engine outputs sequence of 1 and 0 at it maximum possible sample rate, which makes kind of output weight 0.5

331

(21 replies, posted in Sinclair)

Yes, I thought so as well, but wasn't sure 100% either.

I also suspected the exx fix affecting that (like third channel counter value gets lost between rows), but didn't found obvious errors with it.

332

(21 replies, posted in Sinclair)

No, I wasn't able to figure out clicks. You can hear it just by using the third channel, any notes, it is quite apparent.

333

(15 replies, posted in Sinclair)

Thanks, guys. Here is a little video that shows how the floppy song is made: https://www.youtube.com/watch?v=A6gGCLnFvPo

334

(15 replies, posted in Sinclair)

Yes, please test it in 0.29, as there were many fixes to many engines, and report if there are issues.

335

(15 replies, posted in Sinclair)

Wow, utz, that was Squat?! I thought it is one of your awesome engines.

Don't worry, AtariTufty, I earned my first ever last place this time too (in MP3), woohoo!

336

(15 replies, posted in Sinclair)

The results:

1.   7.88   D.S.F. by utz ^ irrlicht project
2.   7.55   Fase Cuatro by Shiru
3.   6.95   Headbanger by Shiru
4.   6.50   The Last Midnight by Tufty ^ 1-bit forum

Congratulations, utz!

337

(15 replies, posted in Sinclair)

I heard in the party's video stream that organizers were happy with quality of beeper entries this and past years, and only wish there were more entries.

338

(166 replies, posted in Sinclair)

New year, new update, v0.29.

Added Squeeker, Squeeker Plus, Vibra, nanobeep, Lyndon Sharp's engine from Super Dragon (Wham with sampled drums), Music Studio, ZX-3.

339

(15 replies, posted in Sinclair)

Just a day left before the deadline. Three entries so far. You still have a chance!

Interestingly, Super Dragon Slayer has not one, but two songs on the title screen, alternating after each game over.

The most fun part, as far as I understand the code, is that drum track pretty much independent from the tone channels, it is much shorter than the tone track, looped, and there is row counter that delays when the drum track starts to play relatively to the tone channels.

341

(166 replies, posted in Sinclair)

Added xtone too. Because with beeper engines we always have just one less than enough.

342

(166 replies, posted in Sinclair)

Actually, just thought to promote 0.28 to release. With 28 engines!

It got Quiet mode (for slower engines, you can enter notes without making sounds and related slowdowns), minor fixes, and more engines. Besides wtbeep, there is AntEater, povver, and quattropic now.

If you downloaded WIP build, redownload it, there were changes, including fixes in wtbeep.

343

(166 replies, posted in Sinclair)

Added wtbeep engine, added loop support to Pytha. No real version update, just these two engines and 0.28 WIP build (don't remember if I changed anything important).

344

(21 replies, posted in Sinclair)

Added this engine to 1tracker.

Minor issues. It seems that you messed up exx' in the pattern reading a bit, so you can't just have an empty row, or skip first or first and second channels. Edited the code to make it work. Also, there is loud clicks in the third channel after notes, unlike the first two.

garvalf wrote:

I see there is this project: https://playground.arduino.cc/Code/ArduZ80
Don't know if it's possible to use the other beeper engines on it!

It's also possible to drive a real z80 from arduino: http://baltazarstudios.com/arduino-zilog-z80/

I looked into this before. Unfortunately, ArduZ80 is not usable at all. It is incomplete, misses hundreds of opcodes, even some widely used documented ones, does not have any time tracking (very important for beeper uses), and is written in C, so likely not fast enough even in such incomplete form.

Hooking up actual Z80 does not make much sense to the original purpose - a beeper sound card. Z80 emulation on Arduino was considered to make device more accessible, reduce number of components and eliminate need of having EPROM burner. Otherwise you can just design the device with actual Z80, it just adds a few more logic chips (~10 chips total), and you need to program the boot ROM.

Still hope we'll do a full blown Z80 emulation with AY format player on Arduino eventually.

347

(15 replies, posted in Sinclair)

A smaller event with ZX beeper compo - Di Halt 2018 Lite. That's the little brother of the summer DI Halt. Deadline is around January 4th.

A 32-bit platform with horsepower of few dozens of Spectrums isn't really that interesting - it is too powerful. You can just play PCM audio on it, or tracker modules, or emulate whatever soundchip, all through 1-bit DAC.

As I never ever heard of it before seeing this post, I can imagine it going to be difficult to obtain as well. In general, it could be interesting to someone, but it falls to the same category as the fakebit VSTs and Arduino developments, just much less accessible than that.

Pi-R Squared has interesting sound. It may be the Savage engine (not too sure), considering there is Jas C. Brooke in the credits, but the noise sounds unusual. There is a scroller running along the music, too.

350

(20 replies, posted in Sinclair)

Here is rough outline how the second approach could work. It needs to have IM2 interrupts and HALT before a new game frame. Does not matter if there is few TV frames per game frame, but more constant CPU load time is preferred, to avoid major variations of the sound bursts duration.

Once program needs to perform HALT, it rather calls HALT_SE.

HALT_SE:
restore all registers required for sound/music generation
LOOP:
generate sound, needs to be the usual short loop
scf
BREAK=$
ccf
jp nc,LOOP
restore ccf opcode at BREAK
store back all registers, the point is to be able to smoothly resume sound generation during next call
ret


IM2 interrupt should just replace ccf at BREAK with nop, thus breaking the sound generation loop (could be any other way).