WEBVTT

00:00.000 --> 00:12.040
We have a small today because I was not making it easy on myself and the exact point where

00:12.040 --> 00:27.960
I thought it would not break, which means modern technology is not working.

00:27.960 --> 00:36.280
Because the old one always works.

00:36.280 --> 00:45.680
So if you're seeing the external camera, you don't need or have a...

00:45.680 --> 00:52.680
Okay, so it's not my setup.

00:52.680 --> 01:05.240
Okay, I'll start anyway, without...

01:05.240 --> 01:12.800
You won't see the slide, I will, okay, just gives your imagination.

01:12.800 --> 01:24.320
So on my, so I work in IT, but on my own time, I also do IT, like all of you, I guess.

01:24.320 --> 01:32.560
And what I do is, I'm very, very deeply interesting in understanding the history of computing

01:32.560 --> 01:35.120
for a main reason.

01:35.120 --> 01:44.800
I'm younger than the average, retro computing guy, and I'm born with computers.

01:44.800 --> 01:53.120
I didn't discover, I didn't leave the evolution myself, that's not a problem.

01:53.120 --> 02:02.400
What I will do is, you will see the slides if you have good glasses, okay?

02:02.400 --> 02:06.960
It's all tech, always work.

02:06.960 --> 02:14.400
So, and I don't, now, so I'm going to be on the side, just to make sure I'm always right.

02:14.400 --> 02:22.400
Okay, so you can follow what actually what I do is all computers on social networks,

02:22.400 --> 02:26.880
some of you already know me, because I'm always tinkering, I'm trying to repair them,

02:26.880 --> 02:32.360
and I'm creating exhibitions to make my collection live.

02:32.360 --> 02:40.040
Since I'm doing that, I was always dreaming, like, someday, someday.

02:40.040 --> 02:46.520
I'd create my own architecture, my own 8-bit computer.

02:46.520 --> 02:52.600
And I've always been playing, since I'm restoring them, I have no electronic degree,

02:52.600 --> 02:57.160
so I've been learning on the flight, like, doing it.

02:57.160 --> 03:03.960
So, what I've been doing is, at some point, I've been playing with logic gates, with CPUs.

03:05.400 --> 03:13.720
One of my preferred computers, the Apple II, I've been reconstructing, reconstructing an Apple

03:13.720 --> 03:22.840
one, but I've not designed it, I've altered the PCB, the chips, and I just followed the plan.

03:23.640 --> 03:26.280
So, at some point, I wanted my own.

03:29.000 --> 03:37.240
I was also at the same time reading assembly lines by Roger Wagner, if you know that book,

03:37.240 --> 03:44.040
I really, if you don't alter it, it's one of the best assembly book on the 65 or two you can find.

03:45.000 --> 03:56.040
And so, all of that was on the same time, on my free time, and suddenly I discovered Beninter's channel.

03:56.040 --> 04:04.360
I assume, most of you already know it, and I was like, oh, he made it look like it's

04:04.440 --> 04:16.440
easy actually, maybe I can do it. So, I, like, watched all the videos he made in one day.

04:18.440 --> 04:26.600
And then I watched all the videos he made in one other day, and then I watched them all again,

04:26.600 --> 04:32.520
but stopping on every piece of paper he was putting out, and downloaded all the documentation he had.

04:33.480 --> 04:41.320
And I think that's one thing I learned from him, from his channel, it's all in the dark.

04:42.040 --> 04:48.680
The documentation is not a tutorial, but it's a specification, and so I was reading all the dark,

04:49.400 --> 04:55.640
and at the time I was like, okay, I could do that. The documentation says it's easy,

04:56.600 --> 05:03.080
and then you still reading the documentation and you say, oh wait, this component can do that too.

05:05.080 --> 05:14.840
So, maybe I can do also another feature, and that's where I came with a plan of building my own

05:14.840 --> 05:21.000
computer. I had the basic, in my head it was all simple, obviously it wasn't.

05:21.560 --> 05:30.440
But I wanted tons of RAM. I'm repairing old computers since a long time, and RAM is the biggest

05:30.440 --> 05:35.880
bottleneck of old retro computers. So, I wanted the most RAM I can fit in that.

05:37.400 --> 05:46.520
I wanted it to have an expansion slot for implementation. I wanted to be able to take this computer

05:46.600 --> 05:54.520
I will build as a base for future builds to learn something new after that. Otherwise,

05:54.520 --> 06:03.320
I built it, and I moved on, I can die. So, I wanted it to be also as simple as possible,

06:03.320 --> 06:09.960
because I started building a small community online, and I wanted people following me to be able

06:09.960 --> 06:20.440
to reproduce it on their own. So, of course, I had to integrate one chip that's not made anymore.

06:22.280 --> 06:31.160
It's just to make sure people are deserving it. And I wanted a mini-tell output, the

06:31.240 --> 06:38.360
minute I don't know if you know that device. It's a French device. It's from the 80's, so

06:39.320 --> 06:48.440
cool. That's perfectly in the theme. It's a decent small terminal. You can put in 40 or 80

06:48.440 --> 07:00.920
columns. It receives TTL level RS32, 232, and it is configurable, like a VT100.

07:01.160 --> 07:08.120
For example, you have comments you can send. It's not the same comments than VT100. We'll come back

07:08.120 --> 07:14.040
on that. It's only, there are many, many of them in France. You can find them in all three

07:14.040 --> 07:22.760
markets for 10 or 15 bucks. And also, the other reason why I choose a mini-tell, or at least

07:22.760 --> 07:33.800
the terminal is I'm lazy as fuck. I don't want to write the video signal myself. I don't want

07:33.800 --> 07:42.600
to make it currently. I just want to mess with the microprocessor. So, a terminal already has all

07:42.680 --> 07:51.080
the third tree to translate ASCII text into video. So, that's for later the part where I can

07:51.080 --> 08:02.040
generate video. So, what my computer would be, I started writing a plan. 65.2 CPU. I love Apple

08:02.040 --> 08:08.040
2, as I said. Also, I had all the documentation, because I binge watched Banditers channel

08:08.040 --> 08:17.160
about 65.2. It's also still produced. So, that's cool. The third key of RAM, that's huge.

08:18.040 --> 08:25.480
That's like I've not been bottlenecked yet with it. So, that's really huge.

08:28.600 --> 08:34.680
Atari controllers. If you, I don't know if you can see from the front, you can see the slides.

08:34.680 --> 08:41.800
I'm controlling them was an Atari controller. Because it's a very, very simple controller. It's

08:41.800 --> 08:52.120
dry contacts. You just have to ground lines. We'll come back on that. One channel does

08:52.120 --> 09:00.120
there. A kid's a buzzer. The same time you use with altrinos. Because I just want to have sounds

09:00.120 --> 09:08.520
really some kind of. And the the mini-tell and a lot of extension, which has the address bus

09:09.720 --> 09:21.640
that the database and the interruption vectors. So, you cannot see it. So, that's cool.

09:21.720 --> 09:30.360
This is the address map I came up with. There are some loss, acceptable loss. But what we have is

09:30.360 --> 09:41.720
32K of RAM. 8K that are lost just for 16 addresses. But I didn't want to put too many

09:42.360 --> 09:54.360
TTL for decoding. So, I had to make some compromise. An extension slot for the extension slot.

09:54.360 --> 10:04.520
If I wanted to use just a wrong, a simple wrong, I left 8K also available with a chip select

10:04.520 --> 10:12.520
line on the extension slot. So, if you're just the the the main goal is to have just one chip

10:12.520 --> 10:18.360
on one PCB, nothing else. And you have an extension slot. You can run code from that. That's

10:18.360 --> 10:29.000
actually how I run the the current presentation. And then 16 kilobytes for the internal wrong,

10:29.080 --> 10:38.120
the system. At boot, I've built a boot menu because now that I've read what you've

10:38.120 --> 10:46.840
gotten as book I can write assembly. So, I've made a boot menu. I've integrated

10:46.840 --> 10:53.640
wasmon for those of who are not familiar with wasmon. It's the monitor from Steve Bosniank,

10:53.720 --> 11:07.160
from the Apple one. And it's quite cool because you can access it in only 254 bytes. You can access

11:07.160 --> 11:13.720
the memory. You can really write it. You can basically do whatever each value, low level, but you

11:13.720 --> 11:23.240
can see what's going up. The Microsoft basic, because it seems now that it's not selling anymore,

11:23.320 --> 11:31.480
it's open source. Since the last system, it's open source, Microsoft basic. First, Microsoft

11:32.280 --> 11:40.440
open source program ever. The buzzer is playable from the basic. I've played with it a little

11:40.440 --> 11:47.400
bit, the functions in the basic to integrate access to the buzzer. And the Atari controllers are

11:47.480 --> 11:55.800
also readable from Microsoft basic. You can also, of course, access them from assembly,

11:55.800 --> 12:03.000
and I've written the documentation for that if you want to. And I told you the

12:03.000 --> 12:11.640
monitor is configurable like a BT100. Of course, there is no implementation in assembly 65 or

12:11.640 --> 12:19.240
two to do that. So I've written library to do that. And it's still in progress, but it's

12:19.240 --> 12:32.840
already, as you can see, working enough. For the raw extension in the menu, I've found a really cool

12:32.840 --> 12:43.480
way of displaying if the raw extension is plenty or not. 65 or two have, let's say it's a feature

12:43.480 --> 12:48.920
for sake of it. If you're trying to access an address, that's not linked to anything. Nothing is

12:48.920 --> 12:57.880
responding on the address. The high byte of the address will be the response. That's due to

12:57.880 --> 13:05.320
the internal cabling of the processor. So you just have to compare the address you're trying to

13:05.320 --> 13:14.040
access with itself. And if it's equal, then there's nothing on the other side of the line.

13:14.840 --> 13:21.880
So if you're trying to access the external ROM, I just try to access the first address,

13:22.600 --> 13:30.200
which is a-o-o, and if the answer is a-o, then there's nothing. If it's not,

13:32.600 --> 13:44.280
I've written, I've written a small metadata format. Basically, I reinvented the header,

13:44.280 --> 13:51.480
because the first a-bite of your ROM has to be askytext. And that's what will be displayed in

13:51.480 --> 13:59.160
the menu, just simple as that. So your program has to start at the 9th byte.

14:01.960 --> 14:07.000
Then for the minute I've written examples that I will not go through, because you don't see

14:07.000 --> 14:14.680
shit, and that's assembly on a 9-inch monitor, and your 8-t-purpose purple, people. Sorry.

14:15.640 --> 14:21.960
So I'm not going through that. For the controller, the controller is pretty simple.

14:23.000 --> 14:29.400
There is a ground, and all the buttons are on a different line, bringing it low to ground.

14:29.400 --> 14:37.640
So all you have to do is have all your entries pulled up, basically when it's resting,

14:37.640 --> 14:46.200
and as soon as you're pushing a button, it's going to be pulled down, and I'm using VIA.

14:47.400 --> 14:54.520
You can be familiar with it if you're tingling with virtual computing, it's pretty well used.

14:54.520 --> 15:03.720
It's the 65-22, so it's in the 65 family, and it's basically like GPIO for a Raspberry Pi.

15:03.960 --> 15:13.560
It gives you controllable input outputs. So I've all my inputs pulled up, and when one is

15:13.560 --> 15:21.080
pulled down, I know which buttons we've pressed. So why should you build one?

15:22.280 --> 15:29.160
I encourage you to not go to my GitHub, and to not follow all the plans I've gave you.

15:29.880 --> 15:37.400
I encourage you to build your own, and to think why you're doing that. The reasons for that

15:37.400 --> 15:45.160
is when you do that, it's so simple, so low level, you cannot blame anyone for a mistake.

15:45.160 --> 15:57.640
Not even Windows this time. So if something is not going well, it's either a bad wire or a bad line of

15:58.600 --> 16:08.120
code, just it. Also, you will relearn, because you think you know it, but you don't, I can assure you.

16:08.120 --> 16:20.840
You will relearn that abstraction is a huge luxury we have today. At this point, even assembly

16:20.920 --> 16:29.800
outputs are an extraction, because in the end, it all comes back to the state, the electrical

16:29.800 --> 16:37.960
state you have on each line. So even writing in exile decimal, that's a representation

16:37.960 --> 16:45.480
of an electrical state. If you don't have that in mind the whole time, you will fight, it won't

16:46.440 --> 16:55.160
work. It's just a simpler way, a fancier way of representing it. In the end, there is no

16:55.160 --> 17:07.160
exer decimal number, it's just an electrical state. And so why did I do it? First, because it's pointless.

17:08.040 --> 17:15.880
And I love pointless things. I don't, when I don't know where it goes.

17:18.440 --> 17:36.600
Second, I want to trip and press my mother. She wasn't. She did this. And it's one of the best

17:37.160 --> 17:45.480
procrastination excuses I've ever had. I don't want to watch dishes because I've my computer

17:45.480 --> 17:55.240
to work on. And lastly, it's fucking fun. I can show you that the adrenaline you will get under

17:55.240 --> 18:00.360
the dopamine you will get from that is better than any substance. So when it's working,

18:00.360 --> 18:08.440
when you have characters printing on it. It's a shot. It's a really long. So if you want to

18:09.720 --> 18:15.320
see this project evolving, because I'm already working on the next step, which is loading from

18:15.320 --> 18:22.760
the cassette, you can come join me on my social networks, which are memoirs, which is French

18:22.840 --> 18:31.320
for Rome. And, or you can go to the GitHub, memoir not, also. And you will find everything

18:31.320 --> 18:36.040
I've documented, everything I can. Thank you for listening to me, and I'll turn things

18:36.040 --> 18:38.680
today.

