 Amiga, I think for a lot of you, it is perhaps, like for me, a reminder of the use. Perhaps your first computer even was one. Okay, some of you may be a little too young. Some of you perhaps weren't so young when they had an Amiga. That's a nice thing about Congress. It's such a nice mixture. So today, all of us get a nice introduction and how the hardware design of our Amiga works and how to program it. And I will give you one very, very small spoiler. You didn't program it with Java. So please welcome Rara with a big round of applause. OK, welcome everybody from my side. Thank you for your nice introduction. Welcome to my vintage talk here. So we're actually going to talk about something that happened roughly about 30 years ago. So it was really hard work for me to prepare that because at once upon a time at, let's say, in the mid of the 80s, I knew a lot about Amiga and Amiga programming and stuff like that, but I forgot more or less everything. Well, five years ago, there was a talk I don't know if it was exactly five years, but a few years ago, there was a talk about the C64 computer. So I think everybody knows that in here. It was a great talk and that was the inspiration for me to give a talk about the Amiga computer, but it took some time to, well, launch this. Well, OK, it started like this. OK, so it's pretty full in here. So as I said, 30 years ago, I think at least 50 percent in here are here because you had an Amiga as well. So please raise your hands. Who had an Amiga computer? OK, that's at least 50 percent. OK, and the other 50 percent in here are here to learn something about the history. So probably you even weren't born at that time. So it started at it started on my attic. I, well, was opening. You see, there's a lot of dust and looking for if there's some hardware and software and so on and try to find something about the computer. Well, and I found a lot. Many thanks to my brothers who delivered some computers to me. So actually one Amiga 500 and Amiga 1000 because my own computers didn't work anymore. I have one also, but it doesn't work. I was unable to, well, launch it. OK, before we dig into details, I try to show something to you. So in real, I have here the famous Amiga emulator. You know, it's it's called UAE. So some people say it's the Unix Amiga emulator, but actually originally it was called the unusable Amiga emulator. OK, why was it called unusable? Because the hardware was so powerful that in the mid of the 90s, when this emulator was programmed, it was unable to emulate anything in accurate time. Let's say in accurate time it worked, of course, but very slow. And it even doesn't work on my computer very well. But OK, let's see what happens. So there's a piece of software that I wrote somewhere around 90. It takes a long time to load because it's a disk drive. It's not a real, it's an emulated disk drive. Everybody knows that. OK, that's typical Amiga style. What what can we see here? We see here in the middle, there is a you see a picture, which is somehow moving. Then we have the Starfield, the moving Starfield background here. Every let's say every software had something like this. Then there is a sprite coming in here. And there's a strong line, of course. It moves. OK, on the original model, it's really smooth. It's not perfectly smooth in here, but that's because of the computer. And then we'll see there is a second scrolling line coming up here. Hopefully, I take some time. There's sound also, but actually it doesn't matter. We can't hear it. Yes, I'm not connected. Just believe me, there's sound. OK, so you see, there is a second scrolling line and it makes a weird it's not just a straight. It's it's a sign or something like a sign. It moves very smoothly here. OK, so now I stop this, remove that any. OK, so go here. OK. So let's continue with this. This intro, this intro that you've just seen that I have written that on myself and about 1990, 1991. I was member of a cracker and sprinter group, bad boy, as probably some of you at the time then. And one important thing that to demonstrate your programming power was that all those sprinter groups and cracker groups programmed intros like this, where everything was moving and and colored and fancy like this to demonstrate their programming power. So it was usual at the time then. OK, so let's have a look at the history of the Amiga computer. So at 1984, that was the first chaos communication Congress. So actually, it doesn't have to do anything with the Amiga computer, but it's just to show you, let's say, what happened during this century. The first Amiga actually appeared in 1985. It was the Amiga 1000 model. And then they had to follow up models. It was the 500 and the 2000 model, which were more or less the same, actually, so the one had more capabilities for expansion and slots and so on. But the basic code was actually the same. And many years later, so 1990, there appeared the Amiga 3000 model. And then later, they came up with that's not completely some other models like the 1200, which I think is your here. Yeah, OK. So the 1200 appeared in 1992 and the Amiga 4000 model. OK, what happened then? You know, all those two computer games here. I mentioned them because those two computer games were the first computer games, in my opinion, which ruled the market, which were on the IBM compatible market, the first computer games that were comparable in power to the Amiga computer Amiga computers games. Well, OK, what happened then? 1994, bankruptcy of the Commodore company. Um, so actually, we don't really know. Yes, we know officially. So the reason was that they did a huge investment in further development of computer hardware, so specifically the graphics hardware and so on. But what they did not see is that other vendors didn't sleep in the time. So that's from 1985 to 1994. It's nine years, so more or less 10 years. And the other vendors didn't sleep. They created cool hardware as well. And well, so in my opinion, it was too late. And additionally, they had two extremely successful models during this century. So there was a C64, everybody knows, was one of the most successful models ever. And then they had the Amiga 500, which was so. And the other models, but the 500 sold sold most. And then, well, so they hadn't to do any marketing anything. It was just successful because of the model's great rate. And that's, in my opinion, the reason why they simply died. OK, but the Amiga didn't die. There is further history. It's not complete here because I'd like to talk about the old, the original models here. So there is the Amiga one, which is PowerPC based. And it has the Amiga OS4 version, Amiga operating system version 4 and was further developed by some companies. So here I write IPR and entertainment, but there were several companies involved in the license was sold from one to the next company and so on. OK, however, so it's still alive. The last version of the OS4 was released, I think, in 2014. OK, here's the primary models what we have here. So that's the first one. It's the Amiga 1000. It's a desktop model with a keyboard. Here we have the typical small Amiga 500 all in one package. So keyboard inside, disk drive inside in the side mouse. That's an external disk drive as well here. And this is the larger Amiga 2000 model. So from the hardware base, it's actually the same as the 500. And but it came with, you see, a second slot for disk drive here. And even you could build in hardware and several other additional hardware extensions. OK, let's talk about competitors. So Amiga was not alone in the market. There were some other models. Of course, that's not a complete list, but that's what I think it's important to mention. So there's the Atari ST family. So it's not just one computer, it's a family of computers. They had the same CPU. So it's a 6, 8K Motorola CPU, as it was used in Amiga 500 computer and Amiga computer. It was released in 1985 as well. Then we have the Acorn Accommodus. It was also a pretty powerful computer and it had the ARM version 2 CPU. So everybody knows the ARM CPU today. It's still here. It's a risk type CPU. It was released in 1987. Then we had Apple. Apple had a lot of different models. One which I consider as comparable or let's say competitor is the Macintosh series. They were built with 6, 8K processor as well and was released in 1985. They were not as successful as the other computers because they were, as Apple is today, unbelievable, very expensive. OK, unbelievable. So they cost three times what the other computers cost at that time. And then we have the Intel-based model. So the so-called IBM PC compatible. There were the 8088 and 8086 and 286. I don't mention them here. So I started with the 386 processor type models because they were powerful enough because the microprocessor is very powerful compared with the 6, 8K processor of Motorola. But the rest of the design, so everything else of the design is pretty straightforward. So there was a CPU, there was a bus and some peripheral devices attached around, but no, let's say, no special stuff like we have seen in those other models here. Just to give you an outline about what also happened in this century. So the VGA card, so the videographics array appeared in 1987. We had the OS2 operating system, which was also a multitasking operating system, which was, let's say, comparable to the Amigos operating system, which is a multitasking operating system as well. Then we have several UNIXes, but the UNIX, I do not list UNIX here because UNIX typically was run on the mainframe and mainframe was not something that somebody could afford for buying at home. Okay, so this is about personal computers that people could buy for at home. We had the Windows version 3 in 1990, it was the first version which could be considered as a real multitasking system. So the version 2 and 1 was just, well, something suspending tasks in the background. And well, to mention Linux, Linux the first to release more or less appeared in 1991. So we are before everything. Yes, OS version. So operating system versions of Amiga computer, the first one was the 1.X, which were released with Amiga 1000 in the first models of the 502,000. It's original versions. On the Amiga 1000, you had to boot them from disk. On the other models, they were built in on a ROM, on a ROM chip, so you just switched on and was here. Then we had the version 2, which appeared about 1990, which was available actually on the Amiga 3000, but it was backwards compatible, so you could build in a ROM chip into the 502,000 models. And then there is newer versions, which is still available today. This is the 4.X, there are some versions around. But as I say here, it's non-commodores, so under license, some companies further developed those, further developed this operating system, which was based on the 3.0 version. This is also PowerPC-based, which is another CPU family, and it's chip set independent. Chip set independent means the Amiga had, I will talk about this later, had a very powerful chip set built in, it was a custom made chip set, and the operating system depended on this. And the new version, so the 4.X operating system was completely independent of this, so you could actually well run it on this computer, I don't know if it works, but probably. Okay, there are some books that I found on my attic. The most important is this here, is the Amiga hardware reference manual. It tells everything about the hardware. So the hardware was open, so open in the sense of, so you knew the circuit diagrams, everything. It was very well documented. It was not allowed to build a computer like this, because there were, yes, it was protected of course, but opening in the sense of it was completely documented. And this book tells everything about how the hardware works. Then of course I have here the 68K micro processor instruction manual, which is important as well. Then here, this is the Amiga basic book, which was shipped with the model. There was an Amiga basic interpreter shipped with it and it was very well documented here. There are some other books like this, so it's everything German, I'm from Austria. Amiga profi know how and Amiga intern, that's a documentation of the system calls. So it had a set, several hundred system calls built into several libraries to deal with graphics, with the graphical user interface to deal with the hardware, with the disk and so on. And it was very well documented. For example, in those books. Of course there were a lot of magazines, I just found one that's a kickstart. There was also another magazine which was called the Amiga magazine. And well, like a magazine, it presented new games and some tips and tricks and so on. Then I have this crap here. Okay, so my laser pointers. Okay, the floppy book, actually that was a piece of crap. Like this can here, it's suggested to make some jumps into the ROM. So it lists here, you can see this, but that's an example of a listing where it discusses some features that were in the disk library and it's suggested to jump into the ROM, which well, if a new version, then the addresses will change and so on. Okay, however, let's have a look at the core component. So what was built into this computer? The core was a Motorola 6 8K microprocessor. It was a more or less 32-bit microprocessor in Sysc architecture. It had a 512K RAM on board, expandable up to eight megabyte, more or less, a little bit more, but more or less like this. The operating system was a preemptive, real-time multitasking operating system. So there was no other operating system beside Unix, of course, but in the personal computer world, there was no other operating system, more or less, who had those features, so a real multitasking operating system. It had some serial parallel ports for connecting printers and modems and whatever, mouse, joystick, and so on. It had built-in three and a half inch disk drive and what else did we have? There was an expansion slot and a 500 model. There was one for the front side bus where it could attach external hardware, such as a hard disk controller. And it had analog and digital video output and yes, of course, audio output as well. So here, we should see now that's the back view of the Amiga 500 model. So what we can see here is a composite video output. It was more or less useless. I don't know why it was here. So it was monochrome only, so black and white. This is the video output here. So it had analog and digital, so RGB signals here. That's the connector for the power. Then we have here disk drive, parallel port and serial port are another order. Then we have here the audio output, so stereo audio to left and right and for attaching to external devices, such as mouse or joystick. That's what it looked from backside. Well, some further technical specifications. The CPU ran at 7.09379 megahertz. On the European models, and the American models had some moderate frequency, so you might ask why is this such odd frequency. This is because the complete hardware was synchronized to the video signal that was standard at the time then. So it's a PAL signal and the complete hardware was synchronized to that video signal. And because we had in Europe, no, we don't have anymore, but we had in Europe the PAL signal. This is why the frequency is such an odd frequency. The whole bus timing we'll see then is synchronized completely to that bus. They had some custom made chips, so special chips which did the complete stuff in audio, video and everything else. That's well known, Ignis, Paula and Denise. It had some co-processors internally. I will talk about this a little bit later. This is the copper and the glitter. It had several other DMA channels, so for those who don't know what a DMA is. So in traditional design, you have a CPU and CPU accesses the bus and everything attached, only the CPU. And if you have a DMA channel, then there is another device wherever who can also access the bus, so which means in parallel, of course not perfectly in parallel, but several devices can access the bus and the memory. That's DMA. Well, the DMA was used for audio bit planes and all features, which means you could do several tasks without using the CPU, so the DMA does that, not the CPU. We have a pixel resolution of up to 64 times 512 on the European models, more or less, so you could configure this a little bit, but that's more or less the standard resolution and 12-bit color depth, which is about 4,069 colors. So the CJA graphics card, which was at the same time, has 16 colors fixed, but it couldn't display all at the same time. We have four audio channels and, well, everything was interrupt controlled, which is nice for software. Okay, about programming languages. So the main programming language was C. Everything was programmed in C, so everything, so the typical software was programmed in C. Of course, if their timing was essential, then we had Assembler and, of course, Amiga Basic was also here for whatever. It was built, it was not built in, but it came chipped with the software and it was the book as well. And with the versions two and above there was a REX, so it's Amiga REX. REX is a scripting language which was originally developed by IBM and it was implemented in those, so it's, let's say, compared to Visual Basic or something like that. You could script a lot of stuff with this. Here, that's a typical C header of a function. It looked like this. It's Kearning-Hammond-Ritchie C because the C89 standard appeared in 1989, so this is before. Okay, let's have a look at the CPU. The CPU, the 68K CPU, was one of the most powerful CPUs at that time and I think that's the reason why it was built in so much computers. It was actually released in 1979, which is pretty early, compared to the other CPU competitors, like Intel, for example. They had the 8088, which is a 16-bit CPU with an 8-bit bus, okay? Six-bit opcodes, also going on instruction set, which means you could combine any addressing mode with every other addressing mode. So this comes in handy for programming. It's perfect for programming. It's really perfect for programming if you want to program in a sampler. Of course, in C, you don't see that. It had 12 different address modes, so register, register, indirect, and memory, direct, and so on, okay? It had a nearly 32-bit ILO, so that's the component within the CPU who actually does the operation, so the addition, multiplication, and stuff like that. So nearly is because it wasn't perfect, but nearly. It had eight registers for data, eight registers for address, including the stack pointer, which was the last address register. Of course, it has systems, data's register as all other CPUs have as well. It had a very sophisticated interrupt structure. So 256 different interrupts were possible, not just external hardware interrupts. But also, you could define software interrupts, which allowed to actually implement your own instructions. And it appeared to have user and supervisor mode. So that's the first step into real multitasking systems. User and supervisor mode, so the CPU operates in the user mode. There is a limited instruction set and the supervisor mode where you can do everything, and that's necessary if you want to implement real multitasking with the, let's say, prevention that some user land tasks access something else in the kernel, for example. The same concept was implemented in the Intel world in the 286, I don't know exactly the year, but more or less at the same time. It had externally a 16-bit data bus, and this meant that you always needed at least two bus cycles to fetch a whole 32-bit word into the CPU, so externally just 16-bit. And 24-bit address bus externally, which gives a complete total address space of 16 megabytes. Well, that's an example for a typical 68K assembler. Well, it looks like every other assembler, it's AT&T syntax, which means from left to right, okay, more or less. Like Intel here, you see that .w and .l here, that indicates the size of the operation. So 32-bit or 16-bit or 8-bit only. Okay, follow-up models, so there were some follow-up models. This was a 68010 model, which had a virtual memory support. The 68K didn't have virtual memory support. Which would be necessary for good operating system. Then we had the 6820, which had a real full 32-bit auto and externally 32-bit bus. And the memory management unit. So the memory management unit is, in my opinion, the biggest lack of the Amiga computer because it had so the original models. So memory management unit is necessary for preventing access to, let's say, disallowed memory regions so that the kernel could lock a user land process somewhere into a specific memory area. The Amiga didn't have that. Or the original models didn't have that. Yes, and then came some other models. That's not complete. You see it continues here. Okay, that's the main part of the Amiga 500. What we see here is, on the left side here, that's the CPU. So it's a DIL-PEC 264 pins. It's a 68K processor. Then here is the ROM. Actually, that's an extension. I built myself here for the new Kickstart. So that's the ROM. Here down below we have the dynamic RAM. So it's 512K. Here is the Agnes. So that's more one of the core parts of the custom chips here. Then we have here Paula, which was mainly used for the audio DMA and audio output. What else do we have here? This is Denise. Denise is responsible for the video output and the video DMA. Then we have here what else? This is Gary. So Gary is a, let's say, stupid bus controller. There's the complete bus arbitration for communication between those chips. And here are two CIAs. So they called it CIAs. Not what you think. So CIA means complex interface adapter. Basically, it's a typical peripheral device. So it had some parallel IOs. It had some serial ports and some interrupt lodging and stuff like that. So basic peripheral device, what do you need in a computer? This is the disk drive. Well, yes. And here's the connectors where I've shown you the picture before from the back side. Yes, that's a two megabyte extension. So one step back here is a connector. You see you could plug in here something. It's the internal connector. For example, this here, so that's a two megabyte internal RAM extension. So actually it's 1.8 megabyte. You will see then why. Slow RAM. Okay, we'll see why it's slow RAM. This was about 200 euros. So 25 years ago for two megabytes. Okay. Here we have the Amiga 2000 model. So the hardware, it's more or less the same. We have here the 68K processor. Here's the RAM. There we have the Gary. And here we have, sorry, here's the RAM. And here is, I don't know, one is Gary. And then we have Denise and Paula. Here the two CIAs. This was called Buster. So it was a specific device which controlled here the extension boards. Although the real Amiga extension boards are these here, the lower one. So, okay, doesn't work. I go here. So these one are called Sorrow Slots. So they were connected to the bus of the Amiga computer. And those slots here are ISA slots, 16 and 8-bit ISA slots. So you could insert a bridge card which had a, for example, a 286 CPU on board. And then you could add standard IBM compatible cards in here into the other ISA slots. They were just connected. There was no connection to the rest of the system. Here we had a slot for a co-processor like a floating point unit. And on this side here is another connector. It was a connection to the video hardware and it allowed to add a specific video card with which you could synchronize the board. So the whole Amiga board to the external video clock. And what you could do with this is mixing video signals. Yeah, okay. There's this crossing controller. Okay. So here I have a hardware block diagram. It looked like this. So that's actually a wire, more or less a wire diagram where we can see here on the left side the CPUs. Here's the data bus, address bus. And here the three custom-made chips which were connected through a bus here as well. And here below we had the 512K built-in RAM. And, well, expansion boards and so on. But what's more interesting is this here, that's a functional block diagram. So this actually shows here on the left side the CPU. And this is what we today call the front side bus. So that's actually a CPU bus. It's the data and the address bus. Directly connected to we had the two CIAs for the serial ports and so on. Here's the kickstart. So that's a ROM which had the operating system in it. Here the connection to the expansion connectors for external hardware. And here in between there is a bus arbitration. So let's say some logic. And on the right side here we see the chips. So the custom-made chips, it's Agnes, Paul and Denise. And what they actually did is they built actually two computers into one motherboard. And they were completely separated by this bus logic here. So this was the custom chips which had their own bus. They could communicate to each other and of course access what was called the chip RAM. It was called chip RAM because the chips, the custom-made chips could access the chip RAM and was completely separated from the CPU on the other side. The 68K CPU had connectors for external bus arbitration. That means it was possible that other devices outside could access the bus, which was necessary for the DMA of course, okay? So if the CPU here, so the 68K CPU wanted to access this memory, it had to request this. So go to the bus arbiter and say, I'd like to access the bus now. And the bus arbiter could say yes or no, okay? And that's actually so what the power of the computer made. So we had the custom chips which were a computer for themselves, okay? And they hadn't to wait for the CPU or whatever. Okay, this is the memory map of the Amia computer. We have a total of 16 megabytes. So that's a 24-bit, that's a 24-bit address here. So here on top, so at the lowest addresses, we have here the chip RAM. So this is the RAM that you've seen before where the chips can access. Newer models could access the next 512K, so that's one megabyte. And even newer models, so with the ECS, so there was a bit big fat Agnes and the ECS Agnes, however, it could even access in total two megabytes of memory, the chips could access this. So on the previous diagram, that the chips is that what's on the right side. Then here is a whole of eight megabyte, all the config space. That means that's a memory space which was dedicated to the extension hardware, okay? And as the previous diagram showed, the chips couldn't access that. Then we have some, the CIA is here. And this is, this here is internal expansion slot 1.5 and 256K, that was, so I'll show you this again here. That's here, it was on the internal bus of the chips. And the memory, so the address allocation was done in that way, however, and that's why the internal memory expansion just had 1.8 megabytes here, because the other address is very served for something else. Okay, then at the end of the memory, we had 256K ROM for the version one of the operating system and the new operating system, so two and up to version, above version two, we had another 256, so 512 in total. Okay, have a look at the custom chips. They had some special function registers where you could control them. Mainly they did the interrupt control of everything here and the bus control, so all chips together, okay? The bus control means controlling who accesses the bus, because always just a single device can access the bus, so those control this. There was the Bitplane, the AudioDiskDMA in here and the Blitter and the Copper, so which were special processors, which I will explain immediately. So the BitplaneDMA is the DMA, which is responsible for displaying whatever, something, okay? It had several resolutions here, so 320 to 640 times 512, so that were more or less the standard resolutions. You could have up to six Bitplanes and the Bitplanes actually selected the colors, so the colors were not stored like this today in a PNG or in a modern graphics card directly, so the Bitplanes were decoded a color register and the color register then holds the color actually, so and within the color register, you could define the color, so it's three times four bits, so which makes up 4,096 total colors. And it had some special modes, so it's a dual play field mode. I will show that in the next slide. Then it had the hold and modify ham, so hold and modify mode. With this mode, you could display all colors at the same time and rarely used half bright mode where it could display 64 colors at once, so at the same time. Here you can see how the Bitplanes work, so the Bitplanes is a memory regions, just memory regions containing the bits for one bit, okay? Of course, memory is byte-oriented, not bit-oriented, so one byte always contains eight bits and the hardware then took all those five planes, overlaid them and took out those one bit of each Bitplane and those together give the address of the color register and the actual color then was stored within the color register here, okay? So that is not the color, that's the number of the register which then contains the color. Here we have the dual play field mode, so in the dual play field mode, the hardware combined two separate play fields, which mean you had two separate visual objects somewhere and the hardware combined them like it is shown here, so it had typical gaming view of whatever here, you have a tank here, whatever, so there's one play field which is the display where you see everything and here's the background image and the hardware then combined both together and there is a transparent color where the second Bitplane was added from the hardware itself, okay? Yes, we had sprites, so I'm not sure if everybody knows what a sprite is, so a sprite is a graphics object which is added by hardware, so it's not combined with the CPU somewhere, it's just a piece of hard, it's just done by hardware, so it's a small image which is added to the total image by hardware, so the Amiga computer had eight independent sprites by default, each had two Bitplanes, so which means it's three colors because one is transparent, you could also combine two sprites and you had just four, but each sprite then had 15 colors, so four bits is 15 colors and the transparent color, but you had the possibility to reuse DMA channels in a later time of the screen build up, okay? So if you have in the upper portion of the screen eight sprites and you could reuse it in the lower portion again, so then you had more or less 16 or how many you even can program in your software and it had a hardware-based collision detection, so collision detection is important if you have several sprites, you think on a game there's something moving and if they collide, then something happens, something explodes or whatever, you gain some whatever health points or stuff like that and the collision actually of the two sprites were done by hardware, so during screen build ups or during combination of Bitplanes, it compared each bit to each other and then it recognized there is a collision and there was a register, special function registers, a custom chip register where it could ask for with the CPU and see okay, there is a collision now. Well, okay, that's display generation, how display generation actually works, okay? We have up to six Bitplanes and the six Bitplanes are memory programmed, so there is not a fixed address, so you put the stuff somewhere into the chip memory and then you assign the value to the chip register and say okay, this Bitplanes starts there and there and there and there, so there was no fixed address, that's true for the sprites as well and you could, of course, pixel position them, not just bytes, so because a byte is eight pixels, of course, yeah? And the video hardware reads the bits, determines priority, so which is higher, which is lower, so which Bitplane is above which other Bitplane, then it chooses the color from the color registers, it generates the beam color, so what you actually see on the screen and it detects collision, if there is a collision. Okay, the copper is one of the important co-processors, or one of the most co-processors, it's beam synchronized, that means the whole system, as I said in the beginning, is synchronized with the video signal and in former times the video signal was generated by video beam, who was drawing, okay, I think everybody knows that, and the whole system was synchronized to that, okay, and the copper was synchronized to that beam, so the copper knew at every time where exactly the beam is and that's important for smooth graphics, because if you don't have that, it starts to flicker and stuff like that, what you've seen on the Intel test drive implementation and stuff like that. It had three commands, the weight, the move, and the skip instruction, so you could wait for a specific beam position and then move, so write data to some register, so you could at a specific position modify some, let's say the sprite address, so you could start and use sprite at a specific address of the beam and it had a skip instruction with which you could skip if the beam was already behind the location where you were waiting for, okay. It could even modify its own registers, so its own program, so it had an own program which was called the copper list and it had bus priority over the glitter and the CPU, so that means if there was urgent access to the bus because only a single device can access the bus at one time, the copper got priority to fulfill its task. Then we have the glitter, which is the second very important co-processor in the computer, so glitter actually means block image transfer, so it was a DMA system which could copy image blocks from A to B. And image blocks, the interesting about image blocks, that's not a linear memory space because if you just cut out the piece of an image, then you have behind, there is something that you have to skip and the glitter was possible to do that. That was also responsible for the smooth-moving graphics user interface, so you could move the windows around and that was really quick, it was everything done with the glitter. The glitter actually had three DMA sources, so you could copy from three different sources, combine them in some specific way, so it was able to define 256 different Boolean factions to combine the bits from those three sources and then it wrote it to a specific memory destination which is the fourth DMA channel. Additionally, it had the possibility for shifting and masking because as you know, memory is byte-oriented and not bit-oriented, but if you want to move just a single bit, then you have to do something and this was done in hardware as well, so bit-shifting is this and masking, if at the end is something that you want not to copy. It had a descending and an ascending operation mode which is important if you want to copy overlapping memory areas, so you have to copy in the right order. If you don't do that in the right order, then you will get some crap on the display. It could fill areas and it could draw lines. Everything in hardware, you did not use the CPU for that. It was everything done by the glitter. Okay, here's an interesting diagram. That's a bus timing. It looks a little bit weird, I know, but copy this from a book. So this line here is the bus timing and this, so here that's a continuation of here. That's a complete bus timing of a horizontal line of the beam on the screen. So not on the screen, so you have on the screen here also an area where you don't see it. That's a complete bus timing here. What we see here is time slots. So here the gray and here and here and here. Every slot is one bus cycle where whatever device could access the bus. And the timing was here made in such a way that the even cycles that's here and here, so in between the even cycle. So this is an even cycle and this and this and this was used by the CPU. And this was done in that way because the 68K needed two bus cycles for execution of instruction. And the first cycle, it fetched the instruction and the second cycle, it did nothing on the bus. It actually executed the instruction. And so because of that, they combined, so they interleaved it with the hardware that in the second cycle, the hardware was accessing the bus. So the CPU more or less actually didn't see that somebody else is doing something, okay? But as we can see here, the black here and here and here and here, that's a bit plane DMA. So we have here the bit planes, one, five, three and so on. So there are more or less no cycles, free for the CPU. So the CPU was locked out from the memory. The CPU had to wait actually for the chip ram. The chip ram was attached to the custom chips. And because of that, it was called slow ram, okay? Slow ram is because the chips were accessing the bus here for the display and it couldn't access it anymore. And that's why it's called slow ram compared to the fast ram, which was in this eight megabyte auto-config space. The chips hadn't accessed there. And that's why it was called slow and fast ram. Okay, audio hardware, it had four independent eight-bit audio channels with roughly about 28K sampling rate, which gives an audio frequency of about, yeah, let's say 15 kilohertz audio frequency. And it had additional support for frequency and amplitude modulation, which you can additionally do with those channels, function-based. So you feed one audio channel with the sample and the second audio channel with the function that modulates the first channel. Of course, it was interrupt-driven, so if the sample data was at its end, it generated an interrupt and the CPU could feed a new address into the audio registers. So here, a brief interrupt summary. Everything was interrupt-controlled, and that's nice because the hardware tells you, or you is the CPU, so the hardware tells the CPU if something is to do. So the CPU doesn't have to wait for it. So we have the vertical blank interrupt. That's pretty interesting. That's if the beam is finished with display here in the right lower corner, then it generates an interrupt. And while the beam returns to the left upper corner, there is time for the CPU because during this time, the Bitplane Dima isn't doing anything. That's about 4,600 cycles. Within these cycles, you could do a lot of stuff. So in the intro that I showed you before, it runs smoothly because most of the control stuff is done during this vertical blank, and everything else is then done by the hardware. We have the copper interrupt. You could wait for specific beams. The audio interrupt, as I just explained, we have a Blitter finished, so if the Blitter was ready copying something, there's the disk interrupt. The disk was also Dima-driven, so the data transfer was not done by the CPU. It was done by a DMA channel as well. The CIS, of course, generated an interrupt as usual for serial data ready or whatever, and we had here some external interrupts for the expansion ports. Okay, finally, some data about the floppy disk, which was the default, well, storage medium for the Amiga computer. It was a flexible disk controller, so it was not completely fixed hardware or whatever. You could program it in several ways. It was possible to attach up to four disk drives, and you could actually simultaneously access several drives, and it was nice to copy software because you had three disks, so three drives to write and one to read at one time. The standard format was 80 tracks, two sides, 11 sectors, which gives about 880 kilobytes, and because of the controller being so flexible, it could read even other formats, such as the IBM PC format, which was then at the time then used, which with just nine sectors here, for example. The file system was originally called, so originally it was called just file system, but later it was then called old file system. It had 488 bytes per sector, so actually it had, of course, 512, but 24 at the beginning were used for error checking or stuff like that, so it was well-designed for floppy disk drives, which yes, as I remember, every third disk was corrupt. And then later they developed the file system, which was mainly made for the hard drives, and then they filled up the 24 bytes with data, so you got some additional data to store on the disk drive. Yes, so a brief introduction into the Amiga hardware. Are there any questions? Yeah. For the question? For the question? Great, my mic, I know, my mic does. So, yeah. Am I working? Okay, I have a question regarding this price. You said it has hardware sprite collision detection. Was that like on the 64 where you only knew which sprite was involved in any collisions, or did it also tell you who collided with whom? Something in between, something in between. So it combined always two sprites, so you then had to programmatically find out which sprite it was, but you had four sprites, so you could find out in pairs of two which sprite collides to the others, okay? Okay, yeah. Any questions? Do we have any more questions? If so, please stand up and go to the mic, so I have both eyes closed. Do we have a question from the internet? No? I have a second question then. And the copper weight command. Yeah. So, would you specify if that could wait for lines or also for- For specific beam positions. So you could actually wait for here. So it's not for lines, you could actually for specific pixel positions you could wait. Thanks. Okay, I think we don't have any more questions and we are also more or less at the end of our time. So, thank you very much. Thank you very much. It was really amazing talk. Perhaps one or the other person will take out his or her old Amiga again and play around with it again after this nice trip down memory lane.