Paolo Amoroso's Journal

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

When I decide to buy a tech product or gadget, I know how to use it even before ordering or ever having held it in my hands.

How? As a side effect of researching the product.

To learn more, I download the manual or visit the documentation website and read it in full. Reviews, unboxing videos on YouTube, blog posts, and Reddit discussions are other valuable sources of information and tips.

By the time the product is in my hands, I know how to operate and find my way around it. Reading the manual also gives a heads up on any required setup steps, data I need to gather, decisions to make, handling precautions, usage quirks, and useful features.

This knowledge saves time when I want to get up to speed with a new gadget.

#misc

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

In the Crostini Linux Minicom terminal emulation session of this screenshot, a hello world Intel 8080 Assembly program run under CP/M on the Z80-MBC2 Z80 homebrew computer, printing the string Greetings from Suite8080 to the console.

Screenshot of a Crostini Linux Minicom session showing a hello world Assembly demo running under CP/M on a Z80-MBC2 Z80 computer.

It may not seem like much, but it's a personal achievement I'm proud of.

The demo program comes with Suite8080, a suite of Intel 8080 Assembly cross-development tools I'm writing in Python. I created the demo, assembled it with my own assembler, and run it on actual hardware. Just a few months ago I didn't think I could do this.

Running the demo also helped me put together and test a cross-development toolchain based on Suite8080. For example, I learnt how to transfer files via XMODEM from Crostini to the Z80 board.

I can't wait to use the toolchain to develop more code for the Z80-MBC2.

#Suite8080 #z80mbc2 #sbc #CPM

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

It turns out the Z80-MBC2 Z80 homebrew computer does work with chromeOS. This screenshot of a Minicom session under Crostini Linux shows CP/M 3.0 booting up on the Z80 board.

The Z80-MBC2 Z80 computer booting up CP/M 3.0 in a Minicom session under Crostini Linux on an ASUS Chromebox 3.

It took some troubleshooting of the connection between the Z80-MBC2 and my Chromebox to make chromeOS detect the board. How?

I just re-plugged the board's USB cable into the Chromebox.

The idea came as a result of asking for help on r/chromeos. A redditor noted connecting a USB serial device to a chromeOS machine is a bit hit and miss, i.e. some attempts to connect may not be successful.

This prompted me to re-plug the Z80-MBC2, and chromeOS popped up a notification to let me share the detected USB device with Crostini. It's been working consistently since then.

Interestingly, the board is supported only under Crostini but not in the Android container or the web subsystem of chromeOS, as the Serial USB Terminal Android app and the web apps based on the USB Web Serial API still don't detect the Z80-MBC2.

I can finally dive into and play with this awesome gadget. Fun ahead!

#z80mbc2 #sbc

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

The Z80-MBC2 board, a Z80 homebrew computer I ordered, finally arrived and I connected it via serial USB to my i7 ASUS Chromebox 3, hoping to control the board from a terminal emulator.

I got a professionally assembled and tested Z80-MBC2 unit and the developer confirmed I hooked it up correctly, so I'm confident the hardware is working. All the right leds are on, as shows this photo of the board connected to the Chromebox at right (the “Z80 inside” logo alone is worth the board).

Z80-MBC2 Z80 computer board connected to an ASUS Chromebox 3.

However, the Chromebox doesn't recognize the board neither under Crostini, nor Android, nor chromeOS.

In Crostini, the output of lsusb doesn't list the board:

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

The output of usb-devices doesn't list it either:

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480 MxCh= 8
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev=05.10
S:  Manufacturer=Linux 5.10.110-15808-ge5740beba59b xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=0000:00:0c.0
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I:  If#=0x0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub

T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=5000 MxCh= 8
D:  Ver= 3.00 Cls=09(hub  ) Sub=00 Prot=03 MxPS= 9 #Cfgs=  1
P:  Vendor=1d6b ProdID=0003 Rev=05.10
S:  Manufacturer=Linux 5.10.110-15808-ge5740beba59b xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=0000:00:0c.0
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I:  If#=0x0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub

There's no entry related to the Z80-MBC2 in the output of ls -l /dev:

total 0
drwxr-xr-x 3 root   root          60 Jun 16 12:30 bus
crw--w---- 1 root   tty     136,   0 Jun 16 12:30 console
lrwxrwxrwx 1 root   root          11 Jun 16 12:30 core -> /proc/kcore
drwxr-xr-x 2 root   root          80 Jun 16 12:30 dri
lrwxrwxrwx 1 root   root          13 Jun 16 12:30 fd -> /proc/self/fd
crw-rw-rw- 1 nobody nogroup   1,   7 Jun 16 12:30 full
crw-rw-rw- 1 root   root     10, 229 Jun 16 12:30 fuse
lrwxrwxrwx 1 root   root          12 Jun 16 12:30 initctl -> /run/initctl
crw-rw---- 1 root   kvm      10, 232 Jun 16 12:30 kvm
lrwxrwxrwx 1 root   root          28 Jun 16 12:30 log -> /run/systemd/journal/dev-log
drwxr-xr-x 2 nobody nogroup       60 Jun 16 12:30 lxd
drwxrwxrwt 2 nobody nogroup       40 Jun 16 12:30 mqueue
drwxr-xr-x 2 root   root          60 Jun 16 12:30 net
crw-rw-rw- 1 nobody nogroup   1,   3 Jun 16 12:30 null
crw-rw-rw- 1 root   root      5,   2 Jun 16 12:43 ptmx
drwxr-xr-x 2 root   root           0 Jun 16 12:30 pts
crw-rw-rw- 1 nobody nogroup   1,   8 Jun 16 12:30 random
drwxrwxrwt 2 root   root          40 Jun 16 12:30 shm
drwxr-xr-x 2 root   root         140 Jun 16 12:30 snd
lrwxrwxrwx 1 root   root          15 Jun 16 12:30 stderr -> /proc/self/fd/2
lrwxrwxrwx 1 root   root          15 Jun 16 12:30 stdin -> /proc/self/fd/0
lrwxrwxrwx 1 root   root          15 Jun 16 12:30 stdout -> /proc/self/fd/1
crw-rw-rw- 1 nobody nogroup   5,   0 Jun 16 12:30 tty
crw-rw-rw- 1 nobody nogroup   1,   9 Jun 16 12:30 urandom
crw-rw-rw- 1 root   root    245,   0 Jun 16 12:30 wl0
crw-rw-rw- 1 nobody nogroup   1,   5 Jun 16 12:30 zero

In the Android contanier I use the Serial USB Terminal terminal emulator app, but the Z80-MBC2 doesn't show up in its list of USB devices.

Finally, on chromeOS I use a few terminal emulator web apps based on the USB Web Serial API, such as this one. Again, there's no Z80-MBC2 entry in the app's list of USB devices.

I connected the Z80 board also to my Lenovo Yoga N26 Chromebook. Same result under chromeOS and Android, i.e. the device isn't detected. I don't use Crostini on the Chromebook.

I have a couple more things to try, but I suspect chromeOS doesn't support the board's serial adapter.

I knew USB is chromeOS' Achille's heel. But, although I expected USB issues with Crostini because of its heavily sandboxed environment, what suprised me is the Z80-MBC2 is not detected by chromeOS or the Android container, which may have fewer USB restrictions and wider support.

#z80mbc2 #sbc #CPM

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

Simon Wilson celebrated 20 years of blogging by featuring his most influential posts, describing his publishing platforms and tools, and discussing the evolution of his blog's design. Simon's software development career is equally impressive as he was a co-creator of the Django Python web framework.

#blogging

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

I'm about to resume working on my Suite8080 project after putting it aside for a few months. And I bought a Z80 homebrew computer.

To refresh my 8080 Assembly to work on the Suite8080 code, and my Z80 to play with the new computer, I'm rereading the book Z-80 and 8080 Assembly Language Programming by Kathe Spracklen (Hayden Books, 1979).

It's a short, clear resource that includes several worked out exercises. It presents and compares the code samples and concepts in both instruction sets. The book also covers how to implement basic data structures in Assembly, which makes it stand out.

#Assembly #intel8080 #z80 #books

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

While I decide what to do with my old blog, I turned off commenting. I have always moderated comments and never let any junk show up, but these days the volume of comment spam is annoying enough to no longer justify the effort. Besides, socials killed blog commenting anyway and I haven't been getting any legitimate ones for years.

#blogging

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

8bitnews is a newsletter curating and handpicking retrocomputing content. I read it cover to cover and don't miss an issue.

The newsletter covers retrocomputing news and projects with quality curation, a wide variety of resources, and a distinctive upbeat voice. I particularly like 8bitnews for its wide scope. While many retrocomputing blogs and publications focus on gaming, 8bitnews shares also content about vintage-related technologies, devices, software, and programming.

#retrocomputing #newsletters

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

The historical novel The Physicists’ Daughter by Mary Anna Evans has just been published.

As a beta reader I had the opportunity of contributing feedback on the manuscript. I loved the story, the protagonist, and the setting. I nodded at all the geeky references to physics and the history of 20th century science, which is not suprising given the author's professional background in physics and engineering. However, the novel is for everyone and hooks you from the start.

A couple of decades ago I helped Evans brainstorm an astronomy related plot element of her novel Artifacts, and I have been enjoying her books since then.

#books

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

Since getting a Xiaomi Redmi Watch 2 Lite smartwatch I've been monitoring the battery usage of the Mi Fitness (Xiaomi Wear) companion app for Android. On my Pixel 4 XL phone, with the watch turned off battery usage was at 10%, then dropped to an acceptable 4% a couple of days later.

I'll wear the watch mostly when on the go, so I want to control the resources the app consumes when the device is not in use.

#Android #smartwatch

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

Enter your email to subscribe to updates.