CRISS CP/M Provides Modern Hardware For A Classic OS

Today you might choose run Windows, Linux, MacOS or some other OS on your computer. Back in the 1980s however, you generally had little choice: a certain home computer came with a certain OS, and that was it. If yours was based on a Z80 processor, chances are it ran CP/M. While differences in hardware often made direct data exchange difficult, CP/M provided at least a basic level of software compatibility between various Z80-based computers. Although eventually supplanted by MS-DOS (which initially aimed to be compatible with CP/M), enthusiasts kept the classic OS running on old hardware throughout the 90s and even beyond.

[Igor] decided to make a 21st-century CP/M machine by designing the CRISS, a single-board computer based mainly on AVR microcontrollers. The CPU is a 20 MHz ATMEGA1284P, which imitates a 4 MHz Z80 through machine-code emulation. A pair of ATMEGA328s run the peripheral controller and a VGA output, so the CRISS can be used with modern monitors. True to its heritage however, the image is monochrome green-on-black, looking instantly familiar to users of Kaypros, Osbornes and other contemporary CP/M machines.

Software is loaded through an SD card that holds floppy images. The CRISS can directly run programs written for the Kaypro II and Robotron 1715 computers, although other platforms can be supported as well with a software upgrade. [Igor] shows it running programs ranging from the Turbo Pascal compiler to games like Xonix and Tetris.

Housed in a neat little case, the CRISS can communicate with standard PS/2 keyboards and serial printers. Even an Ethernet port is provided for those willing to experiment with network connectivity (a rare feature in the 1980s).

We love seeing modern retro builds like this; similar projects we’ve covered before include the compact ZZ80MB and the huge Z20X. Others have used different ways of running CP/M on modern hardware, such as booting it directly on a Raspberry Pi or emulating an Altair on an ESP32.

Zigbee-Based Wireless Arduinos, Demystified

Hackday regular [Akiba] is working on a series of video tutorials guiding newbies into the world of the 802.15.4 wireless protocol stack — also known as ZigBee. So far, his tutorials include a “getting started with chibiArduino”, his own Arduino-based wireless library, as well as a more basic tutorial on how radio works.

[Akiba] already made a name for himself though a large number of wireless projects, including his Saboten sensor boards, which are ruggedized for long-term environmental monitoring. The Saboten boards use the same wireless stack as his Arduino-compatible wireless development boards, his Freakduino products. The latest version features an ATmega 1284P with 8x the RAM and 4x the flash of the older, 328P-based Freakduinos. It comes in both 900 MHz and 2.4 GHz and there’s also a special 900 Mhz “Long Range” variant. The boards include some great power-saving features, including switchable status LEDs and on-board battery regulation circuity allowing one to run a full year on two AA cells while in sleep mode. They also have a USB stick configuration that is great for Raspberry Pi projects and for running straight from the PC.

For more [Akiba] goodness, check out our colleague [Sophi]’s SuperCon interview with him as well as our coverage of his Puerto Rico lantern project.

Portable Apple II On An AVR

The Apple II was one of the first home computers. Designed by Steve “Woz” Wozniak, it used the MOS technologies 6502 processor, an 8-bit processor running at about 1 MHz. [Maxstaunch] wrote his bachelor thesis about emulating the 6502 in software on an AVR1284 and came up with a handheld prototype Apple II with screen and keyboard.

pic_15
Prototype on veroboard

Originally, [maxstrauch] wanted to build an NES, which uses the same 6502 processor, but he calculated the NES’s Picture Processing Unit would be too complicated for the AVR, so he started on emulating the Apple II instead. It’s not quite there – it can only reference 12K of memory instead of the 64K on the original, so hi-res graphic mode, and therefore, many games, won’t work, but lo-res mode works as well as BASIC (both Integer BASIC and Applesoft BASIC.)

[Maxstrauch] details the 6502 in his thesis and, in a separate document, he gives an overview of the project. A third document has the schematic he used to build his emulator. His thesis goes into great detail about the 6502 and how he maps it to the AVR microcontroller. The build itself is pretty impressive, too. Done on veroboard, the build has a display, keyboard and a small speaker as well as a micro SD card for reading and storing data. For more 6502 projects, check out the Dis-Integrated 6502 and also, this guide to building a homebrew 6502.

Continue reading “Portable Apple II On An AVR”

A device that reads sheet music and outputs MIDI

Sheet Music To MIDI Converter

Learning to read sheet music is a challenge for new musicians, so a group of Cornell students decided to make a robot do it instead. For their final project, they built a robotic sheet music reader (link warning: this page seems to automatically start a .mov file download when loaded).

As an input, the robot takes a piano roll. This is a long strip of paper with music printed on it, which can easily be fed through the reader. A rotational servo keeps the strip feeding at a constant speed, and passes it through the reader.

The reader is based on a Melexis MLX75306 linear optical array. This IC is a 142 x 1 array of photodiodes, which is designed for fuel quality sensing in cars. In this project, it’s been repurposed as a camera to read the music as it passes by. An array of LEDs illuminates the piano roll, providing a more accurate reading.

The components are connected to an Atmel ATmega1284P, which does all the required control and processing. It creates a MIDI output of the piano roll, which can be connected to any hardware or software synthesizer.

Acoustic Impulse Marker Tracks Sounds With A Pencil

Acoustic Impulse Marker (aiming device)

Two students at Cornell University have put together a rather curious sound tracking device called an Acoustic Impulse Marker.

[Adam Wrobel] and [Michael Grisanti] study electrical and computer science, and for their final microcontroller class they decided to build this device using the venerable ATmega 1284p.

The system uses a three-microphone array to accurately position sharp noises within 5 degrees of accuracy. The microcontroller detects the “acoustic delay” between the microphones which allows it to identify the location of the sound’s source vector. It does this using an 8-stage analog system which converts the sounds from each microphone into a binary signal, which identifies when each microphone heard the noise. The resultant 3 binary signals are then compared for their time delay, it selects the two closest microphones, and then does a simple angle calculation based on the magnitudes of each to determine the sounds position. Continue reading “Acoustic Impulse Marker Tracks Sounds With A Pencil”

The Most Basic BASIC Computer

AVR microcontrollers can do pretty much anything nowadays. Blinking LEDs, handling sensor inputs, engine control modules, and now, thanks to [Dan], a small single chip BASIC computer with only ten parts (and four of them are capacitors).

[Dan]’s homebrew computer has it all. The ATmega 1284P microcontroller outputs a composite video signal and handles inputs from a PS/2 keyboard. The microcontroller runs at 16 MHz, has 7 kB of memory for programs, and can use a separate EEPROM to store data. It also has an array of GPIO pins for interacting with the physical world.

For software, the microcontroller runs a version of BASIC called Tiny BASIC plus, which is a stripped-down language that can fit in 3 kB of memory. This is crucial if you’re in the 1970s or if you’re programming on an AVR microcontroller in the 21st century.

We’ve seen other Arduinos and AVR-type microcontrollers that can run BASIC, but this one has a great form factor and clean look. It’s also a great way to get familiar with homebrew computing and the BASIC programming language!