WEBVTT

00:00.000 --> 00:15.000
I would like to show you the last Z80 computer ever made, at least for some definition of

00:15.000 --> 00:17.000
computer.

00:17.000 --> 00:21.000
And for some definition of made.

00:21.000 --> 00:25.600
Because the 80 computers are still being made today, you can get one for one hundred

00:25.600 --> 00:27.600
per a few euros from Amazon.

00:27.600 --> 00:30.600
And it will be shipped tomorrow for free.

00:30.600 --> 00:36.600
But the only reason this is using a Z80 is for compatibility reasons with a long family

00:36.600 --> 00:40.600
of previous machines that stretches back to the late 80s.

00:40.600 --> 00:45.600
So if they build this today, they would probably use ARM or X5.

00:45.600 --> 00:47.600
So that's not what I have in mind.

00:47.600 --> 00:51.600
And of course, you can also find the Z80 in embedded systems.

00:51.600 --> 00:56.600
And in hobby machines made for fans of retro computer.

00:56.600 --> 00:58.600
So for people like you.

00:58.600 --> 01:02.600
So again, that's not really what I would like to talk about.

01:02.600 --> 01:11.600
What I really want to know is when was the last time that somebody sat down to design a completely new computer

01:11.600 --> 01:15.600
and he tectr for the general public.

01:15.600 --> 01:20.600
So not for you.

01:20.600 --> 01:25.600
And he decided that the Z80 was the best match for it.

01:25.600 --> 01:30.600
So I asked tragedy.

01:30.600 --> 01:32.600
And it showed me this.

01:32.600 --> 01:34.600
Which is a nice guess.

01:34.600 --> 01:38.600
But of course, tragedy is wrong.

01:38.600 --> 01:44.600
Because two years later, we got a nice Z80 based pound-top, for example.

01:44.600 --> 01:52.600
And yet, two years after that, we got this.

01:52.600 --> 01:54.600
A sweet call mail station.

01:54.600 --> 02:01.600
And this is the last Z80 based architecture that I was able to find.

02:01.600 --> 02:04.600
So what is the mail station?

02:04.600 --> 02:11.600
Well, in the 90s, there was a choice to build the built machines that were labeled as

02:11.600 --> 02:16.600
internet appliances to make connecting to the internet easier.

02:16.600 --> 02:26.600
If you ever wanted to go online on Windows 95, you know that it's, let's say, not very easy.

02:26.600 --> 02:33.600
So for many people, it was a standing block to go online and use the web or the email.

02:33.600 --> 02:39.600
So many companies built specialized appliances that let you just plug it in,

02:39.600 --> 02:42.600
turn it on, and it would work.

02:42.600 --> 02:50.600
So the official slogan through the main station was email made easy.

02:50.600 --> 02:56.600
You just plug the machine into your phone line.

02:56.600 --> 03:05.600
You turn it on, it would dial to the ESP phone number and you could send and receive emails.

03:05.600 --> 03:11.600
For some reason, they renamed it very quickly to email without a PC.

03:11.600 --> 03:16.600
So I guess that was not that easy after all.

03:16.600 --> 03:18.600
But that's the main station.

03:18.600 --> 03:26.600
And if you look at the hardware specs, it has a blazing fast Z80 processor running at 20 megahertz.

03:26.600 --> 03:32.600
A lot of memory, a modem, and it has even a printer port.

03:32.600 --> 03:38.600
So you could not only read your emails on the screen, but actually print them out.

03:38.600 --> 03:43.600
And it will prove very useful in a few minutes.

03:43.600 --> 03:50.600
So because it's a specialized machine, it stretches a little bit the definition of a computer.

03:50.600 --> 03:57.600
But at least for me, if it works like a computer and it works like a computer, then probably it's a computer.

03:57.600 --> 04:05.600
And the most important reason why I think so is that because it can run custom applications.

04:05.600 --> 04:15.600
So you are not limited just to the email sending receiving firmware that's on the machine, but you can also run your code on it.

04:15.600 --> 04:19.600
And if you can run application, then of course you can hack the machine.

04:19.600 --> 04:24.600
And that's the most important thing you do with the computer.

04:24.600 --> 04:27.600
Let's do it.

04:27.600 --> 04:34.600
First, I would like to show you the official method of running applications on this machine.

04:34.600 --> 04:40.600
If you power it on, you can see a little Yahoo icon.

04:40.600 --> 04:48.600
And if you choose this many options, you get a list of various information channels.

04:48.600 --> 04:52.600
In this case, these are top stories and TV types.

04:52.600 --> 04:59.600
Also subscribe to weather forecasts, stock quotes, horoscopes, these kind of things.

04:59.600 --> 05:05.600
And this would be updated on your machine every day.

05:05.600 --> 05:10.600
So if you choose top stories, for example, this is what you get.

05:10.600 --> 05:19.600
Because it's an American machine or the top stories about mass shootings.

05:19.600 --> 05:29.600
And you would think that this is some kind of America language that is used to display this information on your screen, but it's not.

05:29.600 --> 05:35.600
It's a bit map.

05:35.600 --> 05:47.600
And those top stories icon that you just clicked is an application written in the 80 assembly code that displays this bit map on your screen.

05:48.600 --> 05:55.600
So you could have any kind of application written and you could just run it the same way.

05:55.600 --> 06:08.600
So the way it works is if you subscribe to an information channel, Yahoo sends you an email every day with an updated application.

06:08.600 --> 06:34.600
Your computer downloads this email and without telling you, it does not put it in your inbox, but it just extracts the application and puts it in the Yahoo folder.

06:34.600 --> 06:42.600
And this application can run any Z80 codes.

06:42.600 --> 06:52.600
And it because it's as 80, that's of course no memory protection.

06:52.600 --> 07:01.600
So as you should know, the first rule of image security is do not open unknown attachments.

07:01.600 --> 07:14.600
But it does not apply to the main station because in the main station, you don't open the attachments, the computer opens them for you.

07:14.600 --> 07:20.600
So of course, the creators of the machine thought about some security issues.

07:20.600 --> 07:26.600
So there is some kind of checksum that must be correct in order for all these to work.

07:26.600 --> 07:30.600
So they even find a patent where you can read about all these.

07:30.600 --> 07:37.600
So I was not really familiar with this simple desk version of encryption.

07:37.600 --> 07:43.600
So I asked John GPT how easy it would be to crack it.

07:43.600 --> 07:50.600
And the answer was not very much.

07:50.600 --> 07:56.600
So what you could do?

07:56.600 --> 08:04.600
What you could do is write your application and send yourself 1224 emails with different checksums.

08:04.600 --> 08:10.600
And one of them is guaranteed to work.

08:10.600 --> 08:13.600
There's only one tiny little problem here.

08:13.600 --> 08:18.600
You would need to have an email account configured on your station.

08:18.600 --> 08:25.600
And if you try to do that, you may get the screen.

08:25.600 --> 08:30.600
So I called this number.

08:30.600 --> 08:33.600
And I was put on hold.

08:33.600 --> 08:38.600
It was half an hour of my life that I will never get back.

08:38.600 --> 08:47.600
And finally I learned that support for the main station stopped about 20 years ago.

08:47.600 --> 08:49.600
So the dial-up numbers don't work.

08:49.600 --> 08:51.600
The servers don't exist anymore.

08:51.600 --> 08:55.600
They will not configure the email address for me.

08:55.600 --> 08:59.600
But don't worry, we are not done yet.

08:59.600 --> 09:07.600
When the machines were released to the market, some enterprising hacker disordered the wrong sheep from the mainboards.

09:07.600 --> 09:13.600
And when it analyzes, he found those ASCII strings.

09:14.600 --> 09:21.600
So those strings suggest that there is some way to update the software on the machine.

09:21.600 --> 09:28.600
So a couple of guys got together and they started analyzing the code around those strings.

09:28.600 --> 09:34.600
And they came up with nice diagrams that show how the code works.

09:34.600 --> 09:39.600
It's really easy to follow and there's just 10 pages of it.

09:39.600 --> 09:49.600
So if you look at the diagrams and analyze how they work, it's basically this.

09:49.600 --> 09:52.600
And the one ever used one of those?

09:52.600 --> 09:54.600
Yeah.

09:54.600 --> 09:55.600
Yeah, exactly.

09:55.600 --> 09:59.600
So the main station has a pointer port, right?

09:59.600 --> 10:08.600
And a smart company named LappLink came up with a way to use a pointer port for bi-directional configuration.

10:08.600 --> 10:15.600
Because in addition to the data bits, the pointer port has also some lines to which status back from the pointer later.

10:15.600 --> 10:22.600
The pointer is busy, the pointer is out of paper, the pointer is on fire.

10:22.600 --> 10:28.600
So if you cross-connect those status bits with data bits, you can send data back and forth.

10:28.600 --> 10:34.600
So using this kind of cable, you can upgrade the firmware on the main station.

10:34.600 --> 10:41.600
So I wrote a short program, which does exactly that.

10:41.600 --> 10:48.600
The only tiny little problem is that you need to upgrade the whole one megabyte of firmware.

10:48.600 --> 10:57.600
So even if you write a tiny change to some tiny function in the wrong, you still need to upload the whole one megabyte through the cable.

10:57.600 --> 11:05.600
And if something wrong happens in the middle of this process, you get a breakdown of the station.

11:05.600 --> 11:10.600
Trust me, I should know.

11:10.600 --> 11:15.600
So is there an easier way to do it?

11:15.600 --> 11:17.600
Well, there is.

11:17.600 --> 11:20.600
At least for some definition of easier.

11:21.600 --> 11:33.600
If you power on your station and press a secret key combination, you will get a nice diagnostic mini, which asks you to choose one of the six options.

11:33.600 --> 11:35.600
Don't do that, of course.

11:35.600 --> 11:40.600
But press another secret key combination.

11:40.600 --> 11:55.600
And you will get a hex viewer, which allows you to view the contents of the flash chip that holds all the user data and settings.

11:55.600 --> 12:01.600
And using yet another secret combination,

12:01.600 --> 12:07.600
turns the hex viewer into a hex editor.

12:07.600 --> 12:21.600
So you can write your application and enter the hex decimal codes for all the bytes in your app in the editor and then you can run it.

12:21.600 --> 12:27.600
But if for some reason you don't want to do that, you can use that instead.

12:27.600 --> 12:31.600
This is called a stage one loader.

12:31.600 --> 12:35.600
It's a program that's 64 bytes long.

12:35.600 --> 12:48.600
And because the main station film already has the ladling transfer routines built in, it uses the existing ROM to download and execute the program from the PC.

12:48.600 --> 12:56.600
So all you ever need to do is to enter those 64 bytes into your machine and you're done.

12:56.600 --> 13:08.600
And then you can upload a stage 2 loader, which is a very nice mini-driven application that allows you to upload and download data from the main station.

13:08.600 --> 13:11.600
And then you have hacked it.

13:11.600 --> 13:15.600
So what have people done with the machine so far?

13:15.600 --> 13:25.600
Well, of course, because it has a more than somebody built a nice application that allows you to dial into your local BBS and interact with it.

13:25.600 --> 13:34.600
And if you don't like the modem, that's also why if I want to do it, that's somebody built.

13:34.600 --> 13:46.600
And of course, since it's a Z80 machine, you would like to run CPM on it, which is unfortunately not that easy because it has ROM at the bottom of the memory map.

13:46.600 --> 13:51.600
So somebody built a hardware modification to put RAM there instead.

13:51.600 --> 14:00.600
And then he wrote a nice CPM BIOS and he wrote, I think, something like that.

14:00.600 --> 14:04.600
Okay, so these are some of the projects that I find on the internet.

14:04.600 --> 14:08.600
But the most important project has not been written yet.

14:08.600 --> 14:12.600
And maybe you are the one who's going to write it.

14:13.600 --> 14:30.600
If you want to do that, I created a main station function library, which allows you to interact with some such hardware functions as screen keyboard timers, interrupts, modems, stuff like that.

14:30.600 --> 14:35.600
We added some more resources, so there's an emulator here as well.

14:35.600 --> 14:40.600
It's pretty basic, but it works, so you don't really need an actual machine.

14:40.600 --> 14:43.600
You can write your code and run it in the emulator.

14:43.600 --> 14:48.600
There are some sample codes, libraries, documentation, data sheets.

14:48.600 --> 14:52.600
All you ever need to hack the main station is here.

14:52.600 --> 14:57.600
But I also have those two boxes here with me.

15:00.600 --> 15:04.600
And each box contains a main station.

15:04.600 --> 15:11.600
We've staged to loader already installed, so you don't ever need to use the hex editor.

15:11.600 --> 15:21.600
A U of P on the power supply, a lapling cable, and my email address.

15:21.600 --> 15:34.600
So if you want to get your hands on a Z80 machine and do some hacking, find me after the talk, and one of those boxes will be yours.

15:34.600 --> 15:37.600
Otherwise, thank you very much.

15:37.600 --> 15:47.600
I'm for questions.

15:47.600 --> 15:52.600
We have one here.

15:52.600 --> 15:58.600
How many did you break?

15:58.600 --> 16:05.600
Three.

16:05.600 --> 16:11.600
Three broken and he still has two to give away.

16:11.600 --> 16:15.600
And I still have eight at home, so.

16:15.600 --> 16:18.600
How the graphics work is it just a framework?

16:18.600 --> 16:20.600
It's just a framework, yes.

16:20.600 --> 16:24.600
Have anyone wrote a demo, demo scene demos?

16:24.600 --> 16:31.600
There are some applications in the GitHub repository that draw a bit up on the screen, for example.

16:31.600 --> 16:36.600
So you could count it as kind of demo, I guess.

16:36.600 --> 16:42.600
Maybe you can write about the one.

16:42.600 --> 16:46.600
Okay, over here.

16:46.600 --> 16:52.600
Can I have sound or can I convert modern port to make sound or something?

16:52.600 --> 16:55.600
I tried that.

16:55.600 --> 16:58.600
I haven't had success so far.

16:58.600 --> 17:02.600
So yes, there is a modern chip and there is a speaker.

17:02.600 --> 17:10.600
And from the data sheet of the modern chip, I concluded that it is possible to play some wave sounds.

17:10.600 --> 17:14.600
But so far, I was unlucky in that.

17:14.600 --> 17:23.600
So it could be done probably, but I can't be 100% sure.

17:23.600 --> 17:25.600
Double question.

17:25.600 --> 17:32.600
What if I tried to refresh the firmware on one of the broken consoles?

17:32.600 --> 17:35.600
And does it run doom?

17:35.600 --> 17:38.600
Okay, number two, not yet.

17:38.600 --> 17:41.600
That is a matter of time, of course.

17:41.600 --> 17:48.600
Number one, if you break your main station, it means that the code, on the main station side,

17:48.600 --> 17:52.600
used to download the firmware is not working anymore.

17:52.600 --> 17:55.600
So you can't re-flash a briefed my station.

17:55.600 --> 17:59.600
What you can do, of course, is to disolder the wrong chip.

17:59.600 --> 18:05.600
Use your eProm programmer to reprogram properly and then solder it back.

18:05.600 --> 18:11.600
Some people have reported success with doing that.

18:11.600 --> 18:16.600
You have time for one very short question, and I can ask a question of to come up to the front.

18:16.600 --> 18:19.600
Test somebody over there, I think.

18:22.600 --> 18:27.600
Where the system updates, cryptographically secured, or was it SDS again?

18:27.600 --> 18:29.600
Now, there are not cryptographically secure.

18:29.600 --> 18:32.600
You just push bites to the machine.

18:36.600 --> 18:38.600
Okay, thumbs up. May thanks, Michel.

18:38.600 --> 18:40.600
Thank you very much.

