I’ve done a little work on the KZ80:
I also started thinking about a standalone serial terminal. I don’t like that I need a full computer (e.g. RPi) to interact with the RC2014, so I’m thinking about how to do this using the same LCD I’m using for the KZ80 and an ATmega1284. I have some 16550s lying around, so I could use one of those for a true serial interface, I think. The hardest part is the keyboard; there’s some options for 5x8 keyboards, which I don’t like. At the same time, I don’t really want to do a PS/2 or USB keyboard. I guess the next step is to figure out the keyset I want, and figure out how to fit it into the available pins.
I am about to have about a month of free time, so in addition to these, I figured why not start learning Ada again. I opened up Programming in Ada 2012, which past me helpfully got both the Kindle and paper copies of. After that, I’m going to move on to the SPARK book.
I’m still working to decode the Quick Release Sector Format that Compaq used for software updates; I’ve got pretty much everything working except my checksum computation. Once that’s done, I can hopefully get into the BIOS of my Compaq SLT/286 - and maybe restore the RTC, which requires some surgery.
As I’ve become more active with Z80 homebrew computing, I’ve been going back and looking at old CP/M software. A lot of them are in some custom archival or compression format, and then I have to go back and figure out first what software was used, and then I have to find it and hope I don’t run into a dead end. It’s always a delight to run across something that was archived with LZMA or ZIP; I can even work those files on my Linux machine. Kind of anecdotal evidence in support of the article.
I assume that gzip will be the same way in the future, though you might not want to use it for reasons outlined in the article.
How many different old archive formats have you run into? Are they easy to find tools for, or to reverse engineering them?
I’ve run into a handful of them; most of them I wasn’t sufficiently interested to look too much further into them, but a few hours of Googling didn’t turn up the tools themselves.
Progress on the KZ80 is still moving slowly, but not in a bad
way. Realising that what I didn’t know about the CP/M memory
requirements is now limiting me, I’m trying to spend more time on
other Z80 machines to see what else I should be thinking of. It’s also
nice having a slow project.
There’s a general theme of wondering if where we ended up computing
wise is really necessary in my personal life, and trying to find ways
to make it more personal.
There’s a general theme of wondering if where we ended up computing wise is really necessary in my personal life, and trying to find ways to make it more personal.
There’s a general theme of wondering if where we ended up computing wise is really necessary in my personal life, and trying to find ways to make it more personal.
I’ve been thinking a lot about the same thing, alternating between the viewpoint of “everything should be designed as well as possible” and “who cares, I’ll just deal with it.” The entire information security industry wouldn’t exist if a memory-safe language became the underpinnings of computing instead of C, but at the same time Lisp Machines failed in the market then and something with the same philosophy probably wouldn’t succeed now.
I kind of like Yossi Kreinin’s philosophy (that programming is just shoveling virtual poo for a living). However, he works in an industry in which he doesn’t get a whole lot of control over his tech stack (low level stuff). His side project philosophy is great too.
An interesting middle ground is that of Paul Graham: he already knew a “fun” language that didn’t see a whole lot of use in industry and found that it allowed him to more effectively start Viaweb. Of course, the whole thing is pure survivorship bias.
Last weekend was pretty busy, but this weekend I need to sit down and start hashing out the peripherals for my Z80 laptop. I’m thinking I’ll start with a UART, then the keyboard (I think I’ve worked out how to use it), then the screen. At some point I need to add external storage; I’d prefer an SD or CF card, but I have a microSD board that already had the level shifters on it so I might use that.
Part of the I/O design is working out the address decoder; I’ve a few ideas but I need to write them down to make them clearer.
Any lobsters planning on putting a Librem 5 in their claws? Would love to hear more about it.
I backed it, but I’ve been continually thinking about unbacking it. As much as I want to like what they’re doing, there’s a lot I’ve not been impressed with (e.g. poor release communication, their handling of the librem.one service); I’ve been on the fence. Even after reading this, I have no idea what year my device will ship in. It reads like they’re slipping deadlines again, but don’t want to come out and say that. We’ll see, I guess.
Same on both counts. I also had a poor experience with a Librem notebook that I ended up returning; that soured me on their products in general.
Ordered mine… looking forward to it.
I guess I’m way too literal a person. I read licences. I read words and expect them to mean something.
People have been trained if they see an “I Accept” button, you click it and carry on.
It causes me mental anguish every damn time.
I’m just not the sort of person who can blindly do that.
I loathe “I Accept” buttons.
I think a lot of people have a mindset “Purism is free software, it should be cheaper and higher spec’d hardware”,
They forget usually phones are heavily subsidized by the network providers so they can lock you in and load you up with shitware and spyware and strap you down with EULA’s.
Yes, the privacy part will be a very nice to have. I want that.
But not nearly as much as I don’t want the lock in and shitware and spyware and EULA’s.
Not nearly as much as I want to be able to tinker and improve and feed my improvements into the ecosystem.
Not nearly as much as I want the acceptance and expectation from the people I pay my money to that…
I AM gROOT!
Backed their crowdfunder back … when? 2017? I plan on redeeming one from one of the later batches, so the review will takes some time still. Until then, my Nexus 5 will do fine.
o7 to you who still uses the Nexus 5. I used mine until late 2017 when I picked up a Pixel. I’m on a Pixel 3 now and can’t imagine using a N5 still.
I’m still using mine. It, uh… works?
I mean, it’s a mobile device, so I don’t expect it to be pleasant, but once I got ublock origin installed it became pretty tolerable.
I pre-ordered one way back when they had the crowdfund. I find this tiered release rather confusing, TBH. But it’s good that they’re finally starting to ship!
I pre-ordered a few months ago. I wasn’t sure I’d use it enough to justify the cost (I seriously doubt it’ll cover everything I want in a daily driver device) but I decided it was worth it, because it’s something I want to see exist, so given I can afford it, I should support it. The Google/Apple mobile duopoly we currently have isn’t a great situation, so more competition (even in a very niche form) is welcome. I’m still sad about the Palm Pre, to be honest!
However, this shipping announcement really rankled. Another 6-10 months to get a phone with a case that fits? I appreciate that they’re offering to bump people down the list, and I’ll definitely take them up on it if needed, but it feels quite disingenuous to claim “we hit our deadline” with this sort of half-baked rollout. I’m considering asking for a refund and judging the final result before committing to it now.
I was moments away from putting down for one, but then I checked the specs on the modem and backed out. The set of supported LTE bands was spotty enough that I couldn’t see myself using this overseas or even on certain domestic carriers without constantly fighting reception issues.
I preordered one at the beginning of the year and just got an email from Librem with effectively the same information as this blog post, promising more info in a few weeks.
This is a long update…
I’ve managed to make at least a little progress on the Z80 every
day. All my notes (including TODOs, a log of what I’ve been learning,
parts inventories, design notes, links, etc) is in a single org file
in a repo with datasheets, schematics, firmware, etc. which doesn’t
translate well to a blog format, though, and publishing that org file
as an HTML file (which I do, for my own use) is pretty ugly; I guess I
could make it look nice, but that’s time I could be spending working
on building a computer so it’s not going to happen.
The major updates since last week:
I’ve tried quitting, but I’m still using Eagle. Every time I use
KiCad, I last about 10 minutes before rage quitting and just going
to Eagle. A large part of this is due to the fact that I’m pretty
proficient at using Eagle, including adding parts where they don’t
I’ve decided on a Eurocard format for I/O and mainboard; the power
board is relatively simple and thus small. The two boards will use
an IDC40 interconnect, though; this would also give me the option of
stacking boards if I felt so inclined. Doing it this way lets me
work around the some of the limitations in Eagle that were holding
I found the MCP23008 and MCP23017 - they’re 8- and 16-bit I2C I/O
expanders, which will make life a lot easier, I think.
I found a display module
with a 5.7” 320x240 LCD. It has an LCD controller (an RA8835) that
I’ll probably drive with an I/O expander.
I came up with a first pass at an ATmega328-powered serial I/O
module, but then decided to start designing something around the
ATmega1284 to handle I/O in general. This would be my version of
their PIO; at first, I didn’t like this idea and wanted to do
everything with the Z80, and then realized this is basically how
everyone who makes computers does it. It’s not incompatible with my
goal of a system that I can more or less completely understand, so
I’m going forward with it.
Instead of coming up with some crazy dual clock system to support
single stepping, I realised I could just use an Arduino and a push
button; I also switched to an oscillator to save space and avoid
having to add the extra bulk of the crystal + resistors + 7400.
There was a lot of physical layout
mostly by way of paper cutouts in the shapes of the dev boards and
LCDs. I’ve discovered that my paper notebook that I’m tracking all
of this in is pretty close to the perfect size: 25x19cm
(9.8x7.5in). The biggest unknown right now is the keyboard (more on
that later). This also led to me messing around with FreeCAD (I
think I can get by with 3D printing the case) and realising I have
no clue what I’m doing. I did a little bit of SolidWorks in
university as part of a class, but that was over a decade ago. I’m
particularly not looking forward to figuring out the hinge.
I did a lot of thinking about the keyboard; I could build my own
using a 16-bit I/O expander and an 8-bit I/O expander. While looking
around on eBay for keyboard switches, I found a replacement
IBM 5140 keyboard
that I’m going to see if I can get to fit.
I realised that the SD card is going to require a 3.3V power rail,
so I added an appropriate regulator to the power supply. Right now,
it’s an LM1117, but I’m looking into whether I can get by with an
MCP-1700 regulator. It’s smaller, it should produce less heat, but
it can only drive 250mA. I think this should be enough, considering
I’m only using it for signaling and not driving anything that needs
a ton of current, but I’d like to be sure. I have a few ideas about
doing full-disk encryption using some Atmel secure memory chips
(I’ve used the AT88SC in the past, but I’m sure there’s newer/better
options); another idea is add some basic cryptographic primitives to
the I/O firmware, e.g. as an I/O device. That’s all pretty far down
In a memory layout writeup,
I’d mentioned that the outputs need to be buffered. I added in some
74545 line drivers for the address pins (a pair on the mainboard and
a pair on the I/O board) and a 74245 bus transceiver for the data
pins (again, on both boards); it looks like it works out such that
tying the direction pin on the transceiver to the Z80’s works as
intended. I’m still waiting on parts to arrive, so I haven’t been
able to physically verify this.
I finished a preliminary schematic (sheet 1,
sheet 2) and
for the main board; this has the Z80, associated support hardware,
and the memory. I’ve got a checklist of things to verify before I
have it fabricated as the boards will cost a decent chunk of money
and I’d like to get it right before sending them off to be
fabricated. This is also several orders of magnitude more complex
than any board I’ve previously done, so I did the layout using the
autorouter; eventually, I’d like to hand route it but that’s going
to take an incredible amount of time to do. I’m also not happy with
the large number of vias; I can’t do 4-layer boards in my EDA
software, which would help (while doubling the cost of the board). I
don’t have experience designing a board this complex and I don’t
really have a community of hardware engineers I can ask, so I don’t
really have a good intuition for how this will affect the
system. I’m trying to read up a lot on the subject to make up for
I’ve also been thinking about moving the clock to the power board
to support using an external clock for debugging. The power board
is pretty bare right now, so it’d simplify things somewhat. Again,
I’m not sure of the implications or impact of doing this.
I was supposed to have a book on
programming in Z80 assembly
show up this week but it appears to have been lost in the mail. I
have some others that are coming when they get here.
I bought a logic probe (~$20) to help debugging, and I’m unreasonably
excited to use it.
So the project is coming along; I’ll get some dev boards this week to
verify specific subsystems and I’m going to keep working on designing
the I/O board. My EEPROM programmer Arduino shield should arrive from
OSHPark late this week or early next week, and
there’s firmware to be written for that in the meantime.
I also bought an RC2014 that should show up
sometime this week and I can start tinkering with som Z80 code.
Awesome project. I’d say more but it’s late here and I’ve a QFT exam in the morning.
On the software side of things are you planning on writing everything yourself? If not, you could try porting CP/Mish an “open source sort-of-CP/M distribution”.
The plan so far is to write as much as I can myself, mostly because it’s an interesting problem and is something I’ve always wanted to do. I have the RC2014 to experiment with CP/M; since I’ve got the ability to select 8K banks of ROM at boot time, I might try porting it over CP/Mish at some point.
Good luck on your exam!
After hearing an extremely cheesy quote in a YouTube video about shaolin monks, I’m writing out a list of all side-projects I’d love to work on, selecting one of them and making a plan for what I’ll do about specifically this one the following week.
(I’m very much an “do this thing for a week, that thing for the next one, never finishing anything” guy.)
I did this in my bullet journal, and I like to think it was a really useful exercise. There’s a list of “ideas for projects” to record and not forget project ideas, but I’m trying to be focused on one thing at a time.
Having recently gotten into astrophotography, I will make another attempt at photographing Andromeda. I spent the past few days/nights getting familiar with my gear, trying things out, but unfortunately the sky is not very visible from my garden. Trees, buildings, and lights all block portions of the night sky. Fortunately there is a big heath/park about 5 minutes walking, which is surrounded by tall trees that block the street lights.
I fully expect to not get a decent picture, as astrophotography is surprisingly difficult. Instead, I am aiming for:
I had a lot of fun doing astrophotography for a bit, but I broke my telescope (we cross country skied it with three people into Yosemite, and it survived until I got home and dropped it).
Are you doing DSLR or CCD?
I am using a Nikon D700 DSLR. It’s starting to show its age a bit (e.g. the exposure wheel does not always respond), but apart from that it’s good enough for the coming years.
I have a D700 too, but I don’t shoot astro. It’s still a great camera.
I’ve got some social stuff happening; some of the first parts for my Z80 computer show up so I might try to finangle something together. I also need to start writing some of the firmware I’m going to need (an SIO controller and EEPROM programmer, for now).
I got an itch, so I started working on designing a Z80-based laptop. I have most of the mainboard figured out (I think), but still need to work out the keyboard (ideally some kind of mechanical keyboard) and graphics (thinking 7 or 8” 320x240 LCD). And I need to design the case. I’m toying with the idea of an ESP8266-based “modem” for it, too.
I was debating between the 6502 and the Z80, but then I found this book and that decided that.
I have a bunch of ideas that I really just don’t know if they’re even doable because I don’t really have much experience with designing this kind of hardware.
I’ve also been learning a lot of math lately, and still tinkering around with some robots.
Please post more about this project as it progresses. I found some appropriate context (and nostalgia) in this Z-80 advertisement from May 1976.
I’m tagging relevant posts with z80 on my site; if that’s what you’re looking for. Otherwise, I’ll probably post weekly here as I progress, assuming I do.
What are you doing for the screen interface? I’ve been working on a Z80 computer, and it seems hard to find a screen with reasonable resolution that the Z80 is fast enough to actually drive without some sort of coprocessor.
I don’t know yet; I haven’t ruled out the idea of making a GPU of sorts out of an AVR. Some options include an SSD1306 (I2C) or KS018B based display; if I do 320x240 it’s going to have to be monochrome simply on account of the memory that’s required for something like that.
Working on some robots of the rover variety, not doing anything serious and mostly just having fun figuring out how to do things with them.
I picked up an ESP32 handheld computer (e.g. this photo) that I want to do a bunch of things with, but first I have to write a basic UI for it. I got a LoRa module for it, but I haven’t gotten around to resoldering the radio’s CS pin (which is on the same pin as the keyboard’s interrupt pin). Ideally, I’ll get a basic scheme running on it, and maybe a Forth. This week, I’m just trying to get some basic functionality like a virtual console (for scrolling text and collecting user input) done.
(%?) <`hostname -s`:`whoami`> $ "
(0) <ono-sendai:kyle> $
Personal: my ~7 year old colo server failed this week, and I have to migrate over to another. I’m switching over to OpenBSD (and I switched my Thinkpad over), which I haven’t run in a few years so there’ll be some learning. I also wrote a Go version of signify and included the ability to encrypt using curve25519 (the same idea as this article) to scratch an itch.
Work: releasing my first real feature at the new job, which has taken a lot of learning in a new field and adapting to the work culture here. There’s a tight deadline (tomorrow!) that I’ve been trying to meet, which has been a little stressful.
I am at the Open Source Firmware Hackathon in Bochum learning about Coreboot from a lot of very smart people, and flashing it onto my X230!
I just librebooted (but soon to switch to coreboot) my x200… definitely a sigh of relief on seeing the bootscreen pop up.
I’m going to work on incorporating Distillery into my social networking product. I’ve used it in one other greenfield client project but this is going to be personal so I have a lot less restraint.
I’m also finishing up a series of posts about the IndieWeb in hopes of rallying more people to consider it as a network to venture to.
I’ve been spending a lot more time lately trying to figure out how to participate more in the IndieWeb. Are your posts online already, or are you going to post them all at once?
I’m working on more general posts but there’s a lot of stuff over at https://indieweb.org/why
Some I’ve written:
I’ve read some about it but don’t “get” it. Is the idea that everyone just builds a static personal website?
As best as I can tell, it’s that you own your content; which comes down to
It seems the big goal is that you own your content, you’re not beholden to some third party and not locked into a platform. For example, if Pelican somehow became unusable or Netlify went out of business, my posts are just markdown files in a directory. I could pretty easily port them elsewhere.
In the last week or two, I built an [SM]MS microblogging site for myself and a few other people. It’s in a pretty stable state in that I use it regularly and I have all the auto-ops stuff set up so merging PRs to master goes to “prod.” There’s a fair amount of work to take the codebase from “MVP I slapped together in a night or two” to “this isn’t too bad to work with,” and then I have a litany of small and large features I want to work on.
i really love simple interfaces and sms/calls are the best at that. i’m thinking of going further and actually send letters automatically, maybe even receive letters kinda like forms and then process them.
that would be the dream interface, no computer, just any random phone that could be picked up from any store, and for visuals, actual printed paper :)
there could even be some kind of automatic handwritten text to make it more human
Yep. I’ve debated trying a bunch of experiments, first with emails; Maybe collect all your thoughts and once a month or however long you can roll up all the posts and photos.
One thing though is that I’m debating supporting sending audio attachments, and I’m not sure how that plays with everything. The nice thing about having the site small, focused, and purposeful is that it’s fairly easy still to experiment.
Continuing to learn Rust and Erlang. Playing around with some ideas for different data-storage ideas, like a caching file system. Maybe trying to implement some old DHTs for fun.
Don’t be last / beer can sailing races are the most fun :) The competitive people get to be competitive, the people who just want sail a boat fast can, and lots of fun is (hopefully) had by all. Do y’all get together for beers and food at the end?
We generally hang around and have a cuppa together afterwards yeah. It’s not super competitive, and my first proper season of racing so not being last feels like an achievable goal, but still something I have to work at. (I raced twice last season, and accidentally came third in the class at the club overall for the year. Statistics are a funny thing.)
I think I’ll start reading through A Programmer’s Guide to Maths; I’ve also had this urge to play around with Smalltalk after reading The Dream Machine. Also, Easter brunch and trying to finish recovering a quick viral bug I caught the other day.