I would have killed for this back when I had an A500. It seemed like dark magic and all I could find was a book on ASM game programming tricks, which was too advanced for me.
Everything was relative on the Amiga. The only thing absolute was AbsExecBase at 0x4. You get a pointer to this library and then, from there, you can locate more libraries by calling FindLibrary() (or something like that).
AbsExecBase is the ultimate proof of the old adage "Any problem in computer science can be solved with an additional layer of indirection".
In a sense it was a Component Object Model(COM) like the one in Windows. You call exec->OpenLibrary("name of lib", version_of_lib) and it returns a pointer to a table of function pointers of which you know the offsets of. It could even handle multiple versions of a library in principle. In reality makers of libraries just made sure the function table was the same, and added new stuff at the end.
You have to call CloseLibrary(libptr) to release the instance. Pretty similar to Objective-C's and COM's release().
OpenLibrary was allowed to return a different pointer for each call, but the early exec.library did not do this AFAIK.
Great design really. And how signals and message system works is just beautiful as well. I really get why Matt Dillon(of FreeBSD and DragonflyBSD) wanted something similar in the BSD kernel.
I still have the Amiga Kernel Reference Manual for exec in my shelf.
Boy, I miss those days :(
I've tried several times to make a tiny kernel for x86, but always feel it's either too old interfaces like the PIC, TIMER, VGA, IDE etc, or chip specific. I can't give my friend a bootable USB because he/she might have a different hardware setup.
Plus using BBSs implied buying a modem and paying for long distance phone calls. Both completely out of my parents' budget.
It was no secret people were looking at each other's code. Reviewing the code was a way to learn about how to implement demo routines. But it was also a practical way to learn about programming the machine itself. Things you will not find in any manual.
I was not making a claim about licensing. Perhaps you are not familiar with the notion of a metaphor.
Just shipping a binary that happens to be very close to the language used to write that program wouldn't qualify as open source (and it would still be missing a lot of useful information, such as loop labels, memory location names, etc...).
But the demo scene was anti-commercial in nature. The creators gave their demos away in good will. Nobody cared if their work was reused unless it was a blatant rip-off or was used for commercial gain. And disassembly was standard operating procedure to hack on the source code.
So there was some sort of ethos at work, which seemed to arise naturally and spontaneously. And it reminds me of the open source spirit.
> it would still be missing a lot of useful information, such as loop labels, memory location names, etc...
I agree the disassembled code would be missing these things. But they are only conveniences for an assembly programmer.
There is almost 1:1 correspondence between assembly code and machine code, which makes the task a lot easier than disassembling optimized C code for example.
And on a practical level, the lack of labels and names doesn't stop you doing what you want with the code.
For example the IDE used in the Scoopex tutorial above is ASM-One by TFA. But TFA are not the original author. ASM-One was a commercial product. And TFA added some very useful extensions despite not having the source code!
I have used quite a few Amiga music trackers over the years. But they all descended from the disassembled code of Karsten Obarski's abandoned Ultimate Soundtracker [1]. The lack of assembly code was never a practical problem.
Meanwhile the Amiga shipped with a fully multitasking windowed OS, 4096 colours, higher resolutions (until VGA), the copper (a coprocessor that let you update things like the palette and video registers synced to the raster beam, e.g. to let you combine multiple graphics modes on the same screen, or duplicate hardware sprites multiple times on the screen without involving the CPU), the blitter (letting you move areas of memory; geared towards moving graphical objects while the CPU did other things), 4 voices of sampled music, and a CPU (M68000) that was simply far more pleasant to program for.
For most of us who saw Amigas in the early days, the PC looked like a dinosaur.
That year is when I realized it was time to sell my Amiga and buy a PC because the future had just jumped to a different hardware architecture.
To me, booting Windows 95 was as jaw dropping as seeing the ray traced juggler demo and Marble Madness on an Amiga 1000 Kickstart 1.0 in 1986.
What killed the Amiga apart from the Commodore bankruptcy was hardware costs and lack of viable 3D support on the low end far more than Windows 95.
I still have mine, suped up with a 68010, that'll get you 5% in a tight loop.
What seemed to sink the Amiga in the long run was that to go from OCS to ECS or AGA you basically had to buy a new computer.
But a PC could go from EGA to VGA by swapping out a card.
Never mind that the first 3D accelerators were pass through concoctions, where the VGA card had a short cable run over to the 3D card that in turn was connected to the screen.
Linux was slightly convenient on PC in 1995 if you really cared about: (1) a basically Unix-y userland, with all the good and bad that implies. Shells and stuff worked better than cygwin (2) tcp stack (3) gcc
That's really it. X was a fucking nightmare to get to work "correctly" and then, as now, "correctly" on X means "it handles a remote networking case no one cares about better than the alternatives but still poorly, and everything else about it is totally broken."
Hardware support for every feature that was becoming interesting in PCs in 1995 (basically anything where economies of scale were making interesting stuff cheap) was absolutely terrible on Linux. Drivers for PC hardware, even the kind of PC hardware nerds liked (SCSI CD-ROM drives) were super flaky or non-existent. Application software was horrendous. There was no support at all for anything that still had a licensing regime around codecs, which, at the time included all the media software.
Linux was "quite good" in that you could set it up in a corner of your house and run httpd. That was dope in 1995. But compared to Amiga as a user-facing hacking desktop, it sucked shit. Hell, it sucked shit compared to a PC running Windows or a Mac.
Seriously, find a 486SX/25 w/ 4MB ram, a 160MB disk, a decent modem, and an S3 video card and put like, Yggdrasil on it. It will be way less fun to fuck around w/ than an old Amiga/Mac/NeXT/BeBox/SGI....at least in 1995 an Intel machine running DOS could run DOOM. It's probably the least-fun hardware/os combo from 1995 you could dredge up to play with.
At the same time there's also still a very active competitive amiga programming community², making things like these:
https://www.youtube.com/watch?v=GE7vbzMYYRc -- https://www.youtube.com/watch?v=EpK3Kp7-0zU -- https://www.youtube.com/watch?v=RPdB_zdyMbM -- https://www.youtube.com/watch?v=7cOjC-nhs_o -- https://www.youtube.com/watch?v=jziQBWQxvok
² http://www.pouet.net/prodlist.php?platform%5B0%5D=Amiga+AGA&...
For examples, shadertoy.com is full of cool shader-only effects and entire demos.
There is a Bad Apple on an oscilloscope and a TI calculator so obviously there would be an Amiga version. Not as impressive as the Commodore C64 version which is an insane feat of compression: http://csdb.dk/release/?id=131628 (reminds me of the famous state of the art amiga demo).
Briefly Bad Apple was a sport akin to porting Doom to the most unexpected platform you could think of.
"I had a bunch of friends who I loved dearly, but in many ways were exhibiting all the traditional programmer stereotype themes of being just overly focused on things I didn't think mattered and at that time programming perhaps also was a little bit different. Growing up, programming was assembler and C. I had a lot of friends in what was called the ‘demo scene’, which is mostly an European thing where you had all these guys on the Commodore 64 and on the Amiga writing these really awesome visual displays of various kinds, and all that stuff was usually in assembler. I had absolutely zero interest in learning or doing anything with assembler, it just didn't make any sense to me at all.
I only really got interested in programming when I stumbled across languages that made sense to me on the level that makes sense to me, which is at the very least high level languages like Java, PHP, or whatever have you, anything that's above the “I have to dick around with pointers” or I actually have to move memory spaces around; that stuff has absolutely zero interest to me at all.
I didn't start programming until I was in my late twenties, and even then I didn't start programming because I wanted to be a programmer. I started programming because I wanted a few programs. And that was apparently the easiest way to get there because the other way of getting programs is that you actually have to talk to programmers, which is surprisingly painful at times. I found that the easiest way was just to pick it up and learn it myself."
Source: http://www.transcribed-interview.com/dhh-rails-david-heineme...
I first got into programming in high school when I took AP Computer Science. To be honest, I hated it and didn't pick up web development until several years after that experience. I thought programming sucked. I literally said multiple times, "I will never program. This is the worst!" I think there were two reasons for this: the programs I was writing were impractical combined with pressure to perform well in the class. It's tough teaching a beginning programming class because most start at the CLI. Although the CLI is great at helping students learn the basics of programming (e.g., loops, conditionals, OOP, etc.), it still left me wanting more. Back then, I was still at a loss as to how someone would write a GUI program, similar to the programs I used all of the time on a computer, not the CLI "junk" I was writing for class.
Nonetheless, I picked up web development on my own time and the experience has been incredible. I even developed a preference for the CLI in the practical productivity CLI tools afford a web developer (e.g., git, touch, mkdir, ssh, psql, etc.) And I must admit that basic programming skills that I learned in AP Comp Sci gave me a leg up in getting started, thereby making the path to writing practical stuff for the web a lot shorter.
I guess it's kind of vain for me to share my personal story here, but I bet others had a similar experience. If you took an intro programming class in HS or University and you hated it, give programming another shot. This time, you won't have to worry about a grade or writing shitty programs you don't care about. Start a project, get coding, and I think you'll fall in love.
Putting that aside, I think the DHH comment isn't the full story on demoscene. Demoscene people were interested in those languages because that's where you perhaps could do the most interesting things at the time. Some people still cling to that, and some don't. For example Farbrausch, one of the most famous demo teams, released the tool they were using themselves, called werkkzeug, which was basically a GUI way to generate cool demos that still were tiny and had procedurally generated textures and effects etc etc. Similarly, I've seen a neat demos that use modern tools, a lot use GPUs and shaders these days, but it depends what they're trying to do. Sometimes they want to squeeze all that into a tiny binary - can we have a fully running game engine in smaller size than a jpeg of my face? But a lot of times size isn't a consideration, and it's about how cool of a thing can you do!
One example that comes to mind is Agenda Circling Forth. I think it's very beautiful. I wouldn't hesitate to call it art at this point. Here is a video of it running: https://www.youtube.com/watch?v=L5w7Gh7WBjw
Some articles with more technical details: https://directtovideo.wordpress.com/2010/04/19/agenda-circli... https://directtovideo.wordpress.com/2009/10/06/a-thoroughly-...
Tens of millions of particles, and in 2010! Very impressive, and you'll notice that almost none of the discussion is about assembly and compilers and bit twiddling.
So what did all this effort accomplish? First of all, fun! I don't think anyone worried about any of this if they didn't think it was enjoyable. Second, a lot of interesting ideas were created and popularized that made their way into the roots of the computer graphics and video game industries of today. And a lot of the people came from there too. A lot of these people work at Unreal, CryTek, etc where they build the engines that power games we play today. Unfortunately I think it's hard for a small demo team today to "beat" the output of years of concerted effort and millions of research and man hours that goes into something like the Unreal Engine. So fun matters more.
I guess there's also an interest in those things because of a "back to the basics" feel. If you want to do any computer graphics today you need tools upon tools upon tools upon languages and it's all a bit too much. Some folks yearn for the days where they can write some code that looks like "top left pixel is green". A bit similar to why people had so much fun with neocities recently.
Anyway, these are my two cents on why people enjoy this. Raining on people's parade is not a nice thing and I keep seeing it happen here.
WinUAE Demo Toolchain 5: http://www.pouet.net/prod.php?which=65625
And here you can find plenty old and new demos for all sorts of platforms: http://www.pouet.net/prodlist.php
Enjoy!