Paolo Amoroso's Journal

Tech projects, hobby programming, and geeky thoughts of Paolo Amoroso

In these digital era there's a growing interest in analog writing with pen and paper, possibly fueled by a reaction to technology and a romantic vision of art.

Almost four decades ago, in 1983, I wrote a full-length book with these tools, all 216 pages of it. Plus one third of the manuscript worth of additional text I cut while editing. Also, for years I kept a personal journal with pen and paper.

Although a practical necessity back then, handwriting was an awful, time-consuming experience that brought no value to me.

Not anymore.

Now I use pen an paper only for occasional short notes of up to a couple of lines, and computers or other digital devices for everything else. I'm not missing the fascination with handwriting, at all.

You’ll have to pry my digital writing tools from my cold, dead hands.

#misc #publishing

Discuss... Email | Reply @amoroso@fosstodon.org

CP/M-86 is a footnote to the history of the personal computer, which is part of why it's interesting.

The downside is the limited popularity the operating system enjoyed makes it difficult to discover online resources, particularly software. I face this issue when looking for software and tools for my V20-MBC homebrew computer, which can run CP/M-86 with the Intel 8088 of its Nec V20.

Therefore, I'm keeping track of the programs and software collections I run across online.

I include a list here, which I'll revise and expand with more entries. On the V20-MBC I tested only a small fraction of this software, so some programs designed for vendor-specific CP/M-86 versions or machines may not run on the device.

Repositories and collections

Old BBS archives, repositories, personal websites, and CD-ROM collections are good starting points. CP/M-86 software in executable form is usually in a section under general CP/M resources.

I found these repositories and websites:

Programs and utilities

Some applications are provided for download from their own websites or distribution archives:

Source code

Some software that works on CP/M-86 is distributed in source form with no prepackaged binaries. It's usually available at general CP/M repositories, in sections specific to the programming language or environment it was developed with such as Turbo Pascal or BASIC. This code may need some tweaks to run on CP/M-86.

For example, the Walnut Creek CP/M CD-ROM has a Turbo Pascal section.

CP/M-86 Miscellaneous Ports is a collection of C and Unix tools ported to CP/M-86, such as yacc.

#v20mbc #retrocomputing

Discuss... Email | Reply @amoroso@fosstodon.org

Most instructional and tutorial videos of screencasts have a common flaw that makes them less effective.

The videos zip by over details such as menu and option selections, changes of settings, and manipulation of user interface elements. These key decision points and actions the users can glimpse only briefly are the whole point of a screencast. And they play out fast, too damn fast.

What makes the issue worse is screencasts are often published as animated GIFs, which don’t provide any control over playback speed or pausing.

Instead, let each action remain visible and motionless for at least 3-5 seconds. Leave menus open more, and don’t release the mouse button too early after a click. The screens with a lot of text or elaborate charts should remain motionless for longer.

#misc

Discuss... Email | Reply @amoroso@fosstodon.org

Delivering files to the Z80-MBC2 and V20-MBC homebrew computers is an essential capability for bringing new software and data to these CP/M devices.

In particular I need a file upload capability, a way of transferring text files from the host system to the remote CP/M devices. Why just text? Because a text stream is the lowest common denominator. The simplest, most ubiquitous, and versatile communication channel.

Encoding binary files as text, such as the Intel HEX format for executables or uuencoding, enables moving arbitrary files over text streams.

The problem

I want to transfer files in the most practical way, i.e. via the serial USB connection from the host system, my Chromebox (where the terminal emulator for controlling the devices runs under Crostini Linux), to the remote devices. I could copy the files to the microSD cards the homebrew computers use to simulate storage devices like hard disks, but this would require additional steps.

An obvious solution would be a file transfer protocol like the XMODEM utility that comes with the Z80-MBC2. But XMODEM file upload to the Z80-MBC2 has issues and the V20-MBC doesn't have XMODEM or other file transfer software preinstalled.

My initial workaround, dumping a text file from the terminal into a CP/M text editor, does the job but creates friction. I wanted a minimal upload channel with less friction, that relies only on native CP/M features, and can work also on the V20-MBC.

The solution: a minimal file transfer channel

I came up with a similar but more streamlined solution.

Like in the workaround, on Linux the process consists in dumping a text file from the terminal emulator.

But on CP/M, instead of running the ed editor to collect the file and manually save it, PIP automatically receives and saves the file. An additional advantage is PIP can handle arbitrarily long files whereas ed is limited to available memory.

There's a reason the CP/M system utility PIP is called Peripheral Interchange Program — emphasis mine. In addition to copying, renaming, and combining files, PIP can transfer data to and from the console and other peripherals. The new transfer channel relies on this feature by receiving the text coming from the console associated with the terminal emulator, and saving it to a file.

The process

How does transfers over this channel work? I initiate file uploads on Linux from the Minicom terminal emulator.

First, to introduce a character trasmission delay I change Minicom's settings with the Ctrl-A T F command, Terminal settings > Character tx delay (ms). A value of 1 ms works well on both the Z80-MBC2 and the V20-MBC.

Why a delay? Although the homebrew computers are connected via a 115200 bps serial link, these 8-bit and 16-bit systems can't keep up with the full speed with which the 64-bit Intel i7 Chrombox can pump data. Hence the need for a transmission delay.

Next, at the CP/M prompt I launch PIP:

G>pip filename.txt=con:

Since the destination of the data before the = symbol preceeds the source, the command instructs PIP save to FILENAME.TXT the data coming from the logical device con:, the source. By default CON: is associated with the console, i.e. Minicom on Linux.

The above command makes PIP receive the text stream Minicom sends over the serial line as if typed by the user at the keyboard. How can Minicom type text virtually? The program's Ctrl-A Y Paste file command allows to select and dump a Linux file, which is the last step of the transfer.

Then, on CP/M, the incoming text is saved to a file and rapidly printed on the screen line by line. The transfer may take up to a few minutes depending on the file size.

When PIP terminates, the new file is ready. A caveat is CP/M expects text files to be encoded with specific line break and end of file control characters, i.e. ^M^J and ^Z, not ^J and ^D like on Linux. If the end of file is missing, PIP pauses until the ^Z keystroke is entered manually.

The procedure works well on both the Z80-MBC2 and the V20-MBC.

Next steps

Dumping text files over a serial line is slow and more involved than dedicated file transfer protocols such as XMODEM, and works only one file at a time.

But text streams are universal, easy to use, and reliable. More importantly, these streams are the only way of uploading binary files encoded as text, such as executable programs not already stored on the remote device. For example, neither XMODEM nor other file transfer utilities are preinstalled under CP/M-86 on the V20-MBC.

I'll leverage this text channel to upload to the V20-MBC the Kermit communication program, which implements the transfer protocol by the same name. I'll see if Kermit can upload from Linux to the V20-MBC, and then the Z80-MBC2.

#z80mbc2 #v20mbc #retrocomputing

Discuss... Email | Reply @amoroso@fosstodon.org

Getting errors for basic disk access functions was a reminder WordStar must be configured for the CP/M system it runs on. The garbled text WordStar 3.30 rendered on the terminal under CP/M-86 on the V20-MBC drove the point home. Setting the terminal type to ANSI with the configuration utility WINSTALL.CMD fixed the issue.

#v20mbc #retrocomputing

Discuss... Email | Reply @amoroso@fosstodon.org

My memories of WordStar are fuzzy as I haven't been using it since the late 1980s and, even then, only on MS-DOS and not set up by me. So the errors for basic disk drive access functions I got from WordStar on CP/M surprised me.

My Z80-MBC2 and V20-MBC computers come with the word processor preinstalled, which runs under CP/M-80 on the former and CP/M-86 on the latter.

The e: drive holds the WordStar Release 4 files on the Z80-MBC2 with CP/M 3.0. I got an error about the program not finding its overlay files when starting it from a different drive, e.g. executing e:ws from F:. And the program's L command to change the logged drive to one other than A: or B: issued a file not found error.

Reading the manual clarified that, on CP/M-80, WordStar recognizes only A: and B: by default, but other drives can be accessed by installing the program with the INSTALL.COM utility or configuring it with WSCHANGE.COM.

The INSTALL.COM executable that ships with the Z80-MBC2 is designed for a version of WordStar different from the release 4 actually on the microcomputer. Therefore, I had to run WSCHANGE to change the settings with the option C (Computer: Disk Drives, WordStar Files > A (Disk Drives, Valid disk drives) > A (Valid disk drives).

The resulting configuration screen listed the valid disk drives, i.e. the floppy drives A: and B:, with the default where WordStar looks for the overlay files marked with an asterisk:

WordStar valid drive configuration screen.

The screen also allowed to add the letters of valid drives one by one, with the first set as the default drive. I typed E as that's where WordStar's files are on the Z80-MBC2 under CP/M 3.0. Then I added more drive letters as the mciroSD storage of the device emulates the hard disks from A: to P:. For each drive I answered no to the question on whether it's a floppy:

WordStar valid drive configuration screen.

Finally, the configuration program listed the new valid drives, i.e. A: through P: with E: coming first to indicate the default drive:

WordStar valid drive configuration screen.

On the V20-MBC under CP/M-86, WordStar release 3.30 detects all the drives A: to P: out of the box, but the default drive where the program looks for its files still needed to be configured. No WSCHANGE utility comes with the word processor on my device, so I used the installation program WINSTALL.CMD to set C: as the default. C is where WordStar's files are stored on the V20-MBC.

#z80mbc2 #v20mbc #retrocomputing

Discuss... Email | Reply @amoroso@fosstodon.org

Once the V20-MBC or Z80-MBC2 is plugged into a USB port of my Chromebox, starting a Minicom terminal emulator session makes the remote device boot up and display progress messages.

At some point, with the V20-MBC, starting Minicom did nothing and only the terminal printed its signon messages. The remote device wouldn't boot and there were no signs of life other than the lit LEDs.

The flat cable that runs from the V20-MBC ends in a serial-USB adapter with a USB connector that goes into the Chromebox. This is the adapter card with the USB connector at left and, at right, the pins the cable's connector plugs into:

Serial-USB adapter of the V20-MBC Nec V20 homebrew computer.

To troubleshoot the issue I unplugged the USB connector from the Chromebox, which is when the cable's connector came out from the pins. That made clear the issue was a loose plug. Plugging the adapter back into the cable, reconnecting to the Chromebox, and starting Minicom made the V20-MBC automatically boot up as usual.

#v20mbc #sbc

Discuss... Email | Reply @amoroso@fosstodon.org

Published links to the original sources of the media, quoted text, or other content shared online are increasingly less common. Not that they ever were much common.

Academia has always had a strong culture of crediting and referencing. And this is what the users with this background have been doing online since the early days of the Internet and the web. Most of those who still do are in academia or communities with similar values like bloggers and open-source developers. It’s a lost art, especially as more and more ordinary users come online.

Why take time and effort to link the sources?

The most obvious reason is fairness to the original creators of the content, who deserve recognition for their work. But there’s more to linking than crediting and fairness.

The references to the sources and other metadata are invaluable research tools.

They enable to track where ideas originate, how they spread, how influential they are. Metadata are essential for accessing the original content in its full form and the best available formats such as high-resolution images, complete videos, or the full text and context of quotes. References allow to explore the rest of the shared content and discover new ideas or overlooked portions of works.

But the most important reason for always providing full references and links to the sources is they enable uses not originally anticipated. The absence of sources makes all this unnecessarily difficult or impossible.

#misc

Discuss... Email | Reply @amoroso@fosstodon.org

Just4Fun, the maker of the Z80-MBC2 and V20-MBC homebrew computers, clarfied to me the absence of some files is intentional.

Under CP/M-86, the TOD.CMD command for displaying and changing the date and time was left out because, on the V20-MBC, the date can be changed only from the boot and configuration menu. ASSIGN.CMD, a command for assigning physical to logical devices, is specific to the CP/M-86 version for the IBM PC and hence redundant on the V20-MBC.

Just4Fun doesn't recall exactly, but the absence of the Turbo Pascal sample .PAS files on the Z80-MBC2 is likely a consequence of the development process, possibly an early mass storage space constraint.

#v20mbc #z80mbc2 #sbc

Discuss... Email | Reply @amoroso@fosstodon.org

Mastodon.technology, the Mastodon instance that hosted my account, will be shut down. The admin Ash Furrow took this decision for serious personal reasons.

As a Google+ survivor and a fediverse newbie with barely 7 months on Mastodon, the announcement startled me. I set out to find a good new home and now I'm on Fosstodon as @amoroso@fosstodon.org This instance is open to anyone interested in technology, with a focus on free and open-source software.

Fosstodon is culturally close to Mastodon.technology. Both have similar topics and values, and comparable user base sizes. Instead of a single maintainer like Mastodon.technology, a team of admins and moderators and more resources give Fosstodon some redundancy and assurance of longevity.

The Mastodon documentation explains the simple procedure for moving an account.

Creating an account on the new instance, transferring the data, and filling the profile was mostly seamless and took less than half an hour. Mastodon transferred my followers automatically, I only had to upload to Fosstodon the list of followed users downloaded from Mastodon.technology.

Although the process took care of my social graph, moving toots and media isn't supported and I could only download my old toots. Bummer, I hope the developers implement full content transfer soon.

#fediverse

Discuss... Email | Reply @amoroso@fosstodon.org

Enter your email to subscribe to updates.