In picking up a Pi Zero W in prep’ for project Power Book, I ended up buying a Raspberry Pi 4 while I was at Microcenter. Been wanting one for years, but every time I’ve talked myself into it, they didn’t happen to have the one I wanted. Well this time they had a whole bushel of the newer variant with 8 GB of RAM.

Running the Raspberry Pi Diagnostics on my old card, basically made the tool shout “Hey, are you kidding me or is this made out of cardboard?”

pi@magic:~ $ cat rpdiags.txt

Raspberry Pi Diagnostics – version 0.9

Fri May  7 11:19:27 2021


Test : SD Card Speed Test

Run 1

prepare-file;0;0;6763;13

seq-write;0;0;7742;15

rand-4k-write;0;0;1055;263

rand-4k-read;4820;1205;0;0

Sequential write speed 7742 KB/sec (target 10000) – FAIL

Note that sequential write speed declines over time as a card is used – your card may require reformatting

Random write speed 263 IOPS (target 500) – FAIL

Random read speed 1205 IOPS (target 1500) – FAIL

Run 2

prepare-file;0;0;7121;13

seq-write;0;0;7514;14

rand-4k-write;0;0;921;230

rand-4k-read;4861;1215;0;0

Sequential write speed 7514 KB/sec (target 10000) – FAIL

Note that sequential write speed declines over time as a card is used – your card may require reformatting

Random write speed 230 IOPS (target 500) – FAIL

Random read speed 1215 IOPS (target 1500) – FAIL

Run 3

prepare-file;0;0;8261;16

seq-write;0;0;8197;16

rand-4k-write;0;0;303;75

rand-4k-read;5050;1262;0;0

Sequential write speed 8197 KB/sec (target 10000) – FAIL

Note that sequential write speed declines over time as a card is used – your card may require reformatting

Random write speed 75 IOPS (target 500) – FAIL

Random read speed 1262 IOPS (target 1500) – FAIL

Test FAIL

Since my old MicroSD card is literally crap, and always has been crap. And I can’t remember how far back that particular SanDisk goes, except at the time 8 GB was a fair price to capacity rating. I decided to splurge on a nice new Samsung card.

pi@victory:~ $ cat rpdiags.txt

Raspberry Pi Diagnostics – version 0.9

Fri Aug  6 20:15:09 2021


Test : SD Card Speed Test

Run 1

prepare-file;0;0;28432;55

seq-write;0;0;28248;55

rand-4k-write;0;0;4178;1044

rand-4k-read;14747;3686;0;0

Sequential write speed 28248 KB/sec (target 10000) – PASS

Random write speed 1044 IOPS (target 500) – PASS

Random read speed 3686 IOPS (target 1500) – PASS

Test PASS

So much nicer 😜.

Here is the Crystal Disk Mark on the Samsung when I first plugged it into my PC.

——————————————————————————

CrystalDiskMark 8.0.4 x64 (C) 2007-2021 hiyohiyo

                                  Crystal Dew World: https://crystalmark.info/

——————————————————————————

* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]

* KB = 1000 bytes, KiB = 1024 bytes


[Read]

  SEQ    1MiB (Q=  8, T= 1):    95.913 MB/s [     91.5 IOPS] < 86494.56 us>

  SEQ    1MiB (Q=  1, T= 1):    94.791 MB/s [     90.4 IOPS] < 11043.40 us>

  RND    4KiB (Q= 32, T= 1):     9.103 MB/s [   2222.4 IOPS] < 14370.86 us>

  RND    4KiB (Q=  1, T= 1):     7.239 MB/s [   1767.3 IOPS] <   564.70 us>


[Write]

  SEQ    1MiB (Q=  8, T= 1):    67.578 MB/s [     64.4 IOPS] <122501.70 us>

  SEQ    1MiB (Q=  1, T= 1):    68.031 MB/s [     64.9 IOPS] < 15374.68 us>

  RND    4KiB (Q= 32, T= 1):     3.327 MB/s [    812.3 IOPS] < 39199.31 us>

  RND    4KiB (Q=  1, T= 1):     2.873 MB/s [    701.4 IOPS] <  1423.66 us>


Profile: Default

   Test: 1 GiB (x5) [E: 0% (0/60GiB)]

   Mode:

   Time: Measure 5 sec / Interval 5 sec 

   Date: 2021/08/06 20:02:47

     OS: Windows 10 Professional [10.0 Build 19043] (x64)

I’ve actually owned hard drives slower :P.

PowerBook Duo 230

So, I kind of lost my marbles and decided to work on a nearly 30 year old computer as a project. Growing up in a PC family: my knowledge of the classic Mac operating system is quite limited compared to modern anything, or even ye ol’ MS-DOS. I’ve also never been as fond of emulators as actual hardware.

Bits & Pieces
From different sources:
  • PowerBook Duo 230 /w charger and dead battery
  • MiniDock with the modem, HDI and mDIN connectors
  • External HDI-20 floppy
  • 20 MB RAM module (not pictured)
The laptop is known to have a dead SCIS drive, so it’s a bit of a project out the barn door. One that I hope to solve with a RaSCSI in the long run. Powering it on stand alone with the charger for a quick test, I’ve actually never heard a drive sound that so bad. I’m guessing the head must be glued wherever it is parked. 
But it still booted to the old GUI BIOS like ROM with its floppy icon of sadness, as expected. Trying to connect it to the dock and power up, I was only able to get an odd chime and then couldn’t get anything to power on.

Partial disassembly

Unfortunately while I was getting some tools to begin disassembly: the charger went POOF and lovely smoke. I’m going to take a guess that it blew a capacitor, and trying to power the dock was the final nail in its coffin. Fortunately it was only plugged into the wall at the time, and didn’t scorch my secondary desk — which is conveniently located near windows.
On a positive side: I managed to disassemble the Duo without breaking the tabs on the upper frame nor miraculously the ones on the center clutch cover. I found the 250 video at Jason’s Macintosh Museum a superb example of the process. I’ve no interest in complete tear down, so I stopped at detaching the screen and hard drive.
Forgot how much the smell of rubbing alcohol sucks, but with plenty of that and some gauging with a take out plastic knife, I removed the turned-to-goo rubber feet from the bottom frame and screen bezel. At first I didn’t care, since it was just sticking a bit. Then I noticed the grey goo was coming off on my desk, and then they had to die.
Aside from Apple’s fondness for little plastic bezels, the Duo 200 series is actually easier to take apart than my old ThinkPad X61/T61 series. The Duo’s plastic seems a little less terrifying than I expected, but to my understanding how brittle the plastic has become is a major problem in such old PowerBooks. Therefore, I am taking great care.
Much to my surprise it looks like the unit has a memory module installed. Size unknown, can’t find enough indications on the chips to tell. In any case, if I get her operational whichever module is larger will be the one fitted.
Problems to be solved:
  1. Power
  2. Storage
  3. Software
Not sure that any third party replacement chargers exist at this point. It’s old enough that it’s hard to even look for a replacement. Best plan is probably take the charger to work, crack it open, and see what can be done with the remains of the adapter. As far as I can tell the 24V chargers from the old G3/G4 models have a smaller tip. May be better off digging up a suitable 24V charger, cutting the tips, splicing the old one to a younger adapter, and borrowing some heat shrink.
I assume it’s possible to split and replace the cells in the NiMH battery pack, but that’s not really a priority to me. I’ve heard that Battery’s Plus does that, but the ones near me don’t.
Storage wise I would like to fit a RaSCSI with a Pi Zero in place of the internal drive if possible. By being careful not to fubar the ribbon cable to the old 320M Quantum drive, I think that should be fairly painless aside from making sure the headers are on the right side of the board. Pre-emptively, I’ve resurrected my old Pi 2 Model B. When kits or assembled boards are available, RaSCSI is my plan.
I just don’t see a point to buying a 30 year old hard drive. They’re expensive time bombs, and it’s probably cheaper to buy a few PowerBook 100/200 series for parts than acquire a drive on its own. No one has made this kind of drive since the mid ’90s or so.
Software is fairly easier a solution. My plan is a boot floppy, but it may be possible to just setup an image in an emulator and load it on a RaSCSI. The hardware pickles need solving first. I’d like to get System 7.5.x or 7.6 operational. Preferably on something NOT a 30-year old hard drive. On my OpenBSD machine, I’ve setup Basilisk II but had no luck installing system 7.x there. Hopefully, I’ll have the opportunity to try on the Duo itself.
Also, I should probably try and crack open that floppy drive and see what parts may need lubrication.

In getting ready for a project that involves a ~30 year old computer, I found myself working through a heap of old 3.5″ diskettes. Simple mount it, make sure it’s blank, and do a trivial I/O test; repeat that a few times on several and do a heavy I/O test on a few. To make the process go faster, I wrote a quick shell script so I could cycle through the heap.

Signs that I am getting old may include:

  1. Finding 720 K diskettes mixed in with the 1440 K floppies.
  2. Remembering what Double Density (DD) and High Density (HD) means.
  3. Finding unlabeled MS-DOS 5.0 upgrade disks among the 720 K collection.
  4. Wondering if I’m the only one who used to label their damn disks.
  5. Wondering how much a pack of floppy disk labels costs nowadays.
Oh, and did I mention being sad that at least one looks like it failed? That’s not counting the ones I chucked in the “Not sure I wanna test this” bin for the quality of tape for fear they’ll muck up the drive head. Nor another that I suspect is either failed, or that someone did cpio > floppy off a SCO or Xenix box and don’t care to determine which.
Yeah, there’s something clearly wrong with this picture.

USB-C all the things

The way it used to be:

  1. Grab [Micro]SD card.
  2. Go get my card reader from my backpack.
  3. Unplug controller cable.
  4. Plug into front panel USB-A.
  5. Wish I had more USB 3.0 ports

The way me me like:

  1. Grab [Micro]SD card.
  2. Grab spare USB-C hub from closet bin.
  3. Plug into front panel USB-C.
Rimuru has mainly USB-3.0 ports, and her first refit was included a 10 Gbps USB-C expansion card to free up my front panel. So in the back I have two cables run up to my desk to handle older devices.
  1. USB-A 2.0 extension cable suitable for controllers and flash drives, jacked into one of the A ports in back.
  2. USB-A 3.0 extension cable suitable for old hard drives and portable devices, jacked into one of the A ports in back.
While leaving my front panel free with its USB-C, USB-A, and audio ports. So most of the time I just end up plugging into the front panel C port. If I want something with SD, rather than fishing my adapter out of my backpack: I just use a USB-C hub. Another perk of sorts is having two of those, one for my backpack and one for home. They were originally intended for my Galaxy Tab S3 and iPad Pro, since my previous PC was built at the dawn of the USB-A 3.0 era. But I had planned ahead based on the assumption that someday my PCs would get with the 21st century, lol.
Can you tell that I don’t really miss USB-A very much? It’s mostly retained here for equipment that lasts nigh for ever, like my web cam; or for flash drives that I usually use for booting older computers.
Actually, I don’t really buy USB-A flash drives anymore either. The newer ones that I have all came from the local Microcenter mailing out coupons, or to phrase it kindly: “Please folks, we wanna get rid of these things. Take a coupon for a free one, and please give a few coupons to your friends!”
Because of performance: I’ll usually reach for my hard disk and solid state portable drives that have a USB Micro-B 3.0 interfaces. Rather than using A to Micro-B cables, I’ve started to use C -> Micro B cable for that ^_^.

Ever since getting the Raspberry Pi Pico, there have been two experimental projects in the back of my mind.

The first is of course: how to run DooM on the Pico. Based on what I’ve seen, I suspect the main point of suffering would be the limited ram compared to a i486 machine. Most of the console ports back in the day managed to show horn things into fairly modest systems, and I bet the two cores would work great for doing video/controller input on one core while the actual game runs on the other. What I haven’t been able to decide on is what path to take to explore that project. In my mind: I kind of see it as a more “Game Boy” like hand held with a screen and controls than anything else. I certainly don’t want to do ASCII doom over COM port :P. It would also be preferable to have separate storage that can address the storage capacity of WADs without having to cookie cutter a level into available flash, making the hand held style even more appropriate.

Second is building what in essence would be a personal computer. In essence a lot like ’70s kit computers such as the Altair, but imagined through the eyes of a geek that grew up in front of an MS-DOS machine. It’s stuck in my head a while that the Pico is far more powerful than the early CP/M and DOS based systems, and that it isn’t that complicated to connect the pico to external devices. From the prospective of fun, I think it would be neat to design a simple system around the Pico and built out something like a PC around it. On the downside, while creating a disk operating system in the vain of CP/M isn’t that big a stretch: I can’t really say that I fancy bootstrapping a toolchain to write programs for a custom operating system. But it’s an idea that keeps floating around whenever I look at how powerful the Pico is.

As a side note, I kind of wonder how hard it would be to replace the CRT in an old Macintosh SE style case with a similar sized LCD panel. While gutting the rest of the insides, and just using it as the mechanical environment to mount stuff. Really, I’m not sure if that’s brilliant or sacrilegious of such historic machines. Although to be fair, people have done some strange things with the cases of old busted Macs over the years….hehe.

Now this is very interesting. Both because SCSI2SD is a bit expensive, and because the newer V6 boards would need an adapter to hook up to an old Mac. But on the flipside while the current SCSI2SD seems pretty swell for connecting to other SCSI devices via adapters; a Raspberry Pi itself is a pretty general reusable platform.

As far as I’ve been able to figure out, old Macs have ridiculously slow SCSI buses by modern standards of any mass storage device, and I think they didn’t even support DMA until the late ‘90s. But to be fair hard drives were typically in the 10s of megabytes in the late 80s – early 90s, and a few hundred megs at the most.

Signs of a simpleton having fun with a new microcontroller:

  1. Write a program that makes the LED blink like a mother fucker.
  2. Write a program that spams a hello world to USB serial.
  3. Write a Read Eval Print Loop over USB serial.
Compared to what I’ve done in C with simpler micros like the 8051 family, I’m finding the RP2040 really damned nice. Not only because of the Cortex M0’s horse power, but because of the really nice library that comes with the Raspberry Pi Pico. For the hell of it, I decided to abuse it with some simple C++ by for the REPL just to see that C++ I/O and string handling, does in fact work.
Of course, me being me, I ended up with a really simple set of commands:

static string evalline(const string& line)
 {
     if (line.empty())
         return “”;
     if (line == “monkey”)
         return “Willow?”;
     if (line == “monster”)
         return “Corky?”;
     if (line == “sweet”)
         return “Misty?”;
     if (line == “help”)
         return “Try nicknames with fur”;
     blink(100);
     blink(100);
     blink(100);
     return string(“Unknown command: “) + line;
 }

Because why not? 😜

Pimoroni’s New Pico Display Takes It to the Max

“Damn it, people! Stop making me want a handheld Pico that can play DooM!” — Terry Poulin upon seeing how many buttons this display has.
A reoccurring thought of late has been just how much of DooM could fit within the Pico’s memory constraints, and a practical way to handle storing the wad files externally.

WHERE ARE ALL THE CHEAP X86 SINGLE BOARD PCS?

Interesting picture it paints, but perhaps short sighted.
Part of the rise of the PC IMHO: owes to the level of binary compatibility Intel’s x86 processors maintained, and the relatively open hardware architecture around that processor. I don’t think I even met a 5 1/4” our Tandy failed to run until the late ‘90s. Which surprises me even more today than it did then.
I rather like ARM’s approach to the whole IP core thing. ARM processors are largely ARM processors the way Intel processors are largely Intel processors. But the relationship between architecture and a product in your hands is quite different. Because of this we have a very broad range of ARM based products and vendors out there, and while compiling code retains strong compatibility the overall hardware varies significantly.
While ARM largely focused on doing its share well, and other companies doing what they do well. Intel largely retained control over its niche, occasionally spreading into other hardware fronts. In practice Intel and AMD are the only big players in x86 today, and Intel has often helmed the development. You can get an ARM based processor from more vendors than you can shake a stick at, or given sufficient cash and effort start developing your own hardware around it. If you want an x86 then odds are you’re buying Intel, or second sourcing from AMD.
While I think the compatibility made a big difference, I’m not so sure that we benefited from Intel’s monopoly over its ISA. When I think about why there are few cheap ass x86 SBCs, I usually think of this as “Because that’s not Intel’s market” — and Intel’s the real stick in that mud.