7 ms·
Hehe. When I was about 12, I printed out the entire disassembly for the Disk version of Elite on the BBC, on a dot matrix printer. Because dot matrix paper is
by jlokier 6y ago
Hehe.
When I was about 12, I printed out the entire disassembly for the Disk version of Elite on the BBC, on a dot matrix printer.
Because dot matrix paper is continuous with perforations, the printout filled much of my room, and I pored over it, writing notes and getting to learn all the little tricks and algorithms!
So I had my own fully documented source code for Elite back in the day :-)
- quickthrower2 6y agoThat's crazy. When I was 12 I tried to learn assembler on BBC from a book and just didn't get it at all, even the basics. How did you even grok a printout like that?
- jlokier 6y agoI didn't have many books, but I did have the BBC Advanced User Guide. That's the one with all those VDU codes and ∗FX commands. Near the back there was a two page table containing a dense opcode map (the byte values) of the 6502, its mnemonics, and a tiny notation hinting what they might do. I've just looked it up. It's the "old" book of that name, not the "new" one. See pages 502-503 of this scan: http://bbc.nvg.org/doc/BBCUserGuide-1.00.pdf http://bbc.nvg.org/doc/BBCUserGuide-1.00.pdf Poorly scanned, but I recognise the table. I stared at that table, intrigued, not really knowing what it was, until I started guessing what the mnemonics stood for. Gradually it made sense - after months! Eventually I was able to guess enough to write 6502 inside BBC Basic, and some time after that I was able to disassemble binaries in 6502 and Z80 (I had a Z80 second processor), and eventually graduated to hacking games to modify them, give them infinite lives, change the keys, things like that. No doubt there was the occasional bit of assembly language in magazine listings to provide a guide to the syntax. I don't remember having a 6502 disassembler, but I don't remember writing one either. I did receive a lot of games and utilities so I might have received a disassembler too. Hacking games that don't want to be hacked required a fair amount of dedication though, so I might have written one among the other tools needed for hacking; I don't remember. My favourite BBC Micro hacks were: - Poking the ULA with a non-standard palette bit pattern, allowing me to produce a 7-colour mode in high resolution (contradicting the received wisdom about what was possible to pack into the pixel bytes), and similar colour graphics quality to a ZX Spectrum. I ported a game from the Spectrum using this technique, but never published it. - Pixel-smooth vertical scrolling by poking the CRTC on timed interrupts to modify the character height dynamically, so as to squash a row at the top and expand a row at the bottom to shift the image with pixel precision (contradicting the received wisdom that the CRTC could only scroll character cells). - "Super mode 7", running the Teletext mode with the pixel clock set to double frequency like in mode 0. This caused the Teletext character generator to process 80 characters per line instead of 40. But instead of showing 80 characters, it showed every alternate character, while still updating the colours or other attributes from the hidden characters. This allowed clean coloured text to be displayed without gaps between different colours as Teletext normally required. Proper syntax highlighting :-) - Mixing graphics and Teletext on different rows using timed interrupts, so as to render something like a text editor with pixel graphics in between blocks of text. This is a variation of the technique used by Elite to show a colourful status area with a higher-resolution main 3d area. - Modulating the volume on the sound channel at high speed, to turn the sound chip into a DAC, and therefore any audio waveform we wanted. I miss those fun days, where we could prod and poke at things and all sorts of useful magic happened.
- aswinmohanme 6y agoPeople like me never have to poke around to find anything. Everything is either answered by a Youtube video or Stackoverflow, but it only gives a surface level understanding of everything, and we become clueless when something breaks.
- jlokier 6y agoThe computer manuals in those days were excellent, especially the more advanced manuals. They included circuit diagrams, data sheets for individual chips, just about every detail of how the system worked. You'd still have to figure out a lot just to understand those reference manuals, and guess a lot, especially with no internet and no good library (my local library did not have books like this!). I only had a very small number of books. But I did have the Advanced Guide. Having so much detail available in reference manuals was great for a young mind! Also when I was like 7-8 (edit: previously wrote 10) I was given the Ladybird book for young children: "The Computer (How It Works)".[1] A tiny book. In retrospect I learned a lot of great grounding from that book even though I hadn't yet seen an actual computer. I guess it gave me an appreciation for the video games I played with on show in the supermarket, and the pictures of minicomputers and microcomputers I saw in hand-me-down computer magazines. [1] https://www.amazon.co.uk/Computer-Ladybird-How-Works/dp/072140619X https://www.amazon.co.uk/Computer-Ladybird-How-Works/dp/0721... I'm occasionally asked, by people who find learning this stuff frustrating, where did I learn about logic circuits, where did I learn about assembly, where did I learn about RAM and ROM, etc. and for a long time I couldn't put my finger on it. I think it started with being exposed to that book and some early computer magazines at a young age, without even seeing or touching a real machine for a year or so afterwards.
- pmiller2 6y agoI don’t remember when the last time I worked with a computer that even had a manual as such. I think it was my TI-99/4A, but it could have been the Tandy 1000HX. Edit: wrongola! Turns out, the last machine I worked with that had a real manual was either a MicroVAX, or a PDP-11, both of which I used in college. Writing ASM for the PDP-11 was great! I just wish I was better at program then, lol. :)
- bee_rider 6y agoWhen I was 12, I tried to program a Mario knockoff into my calculator. I wrote the program to show the first screen of my super cool game, got about as far as programming what happened when you hit right, and realized I was likely missing something (loops).
- djaychela 6y agoI suffered a similar fate (z 80 based) - led to me stop trying to learn programming for many years after that as I thought I must be thick! Glad to see I wasn't the only one (I mean that in a nice way!)
- deleted 6y ago[deleted]
- tasogare 6y agoMe learning JavaScript (DHTML) circa 2004: "why does this document.write(i) override the whole thing? There is no point using loops or JavaScript if the only thing I can see is the last iteration". Then I didn’t touch that language for more than a decade, even after have learned programming.
- raxxorrax 6y agoNot the same generation but I didn't have anything remotely close to a computer at that age. Still better off than pupils with a smartphone today, but having such manuals that actually do teach would be an awesome thing to have again.
- mrmonkeyman 6y agoThat's nothing. I did the same thing, but at 3yo and I only looked at the entire printout once.
- DEADBEEFC0FFEE 6y agoYou must have been very proficient, my understanding is the Elite code was particularly optimised. I tried 6502 on the beeb but really found it a slog.
- jlokier 6y agoThe Elite code was great for learning techniques from! I recommend everyone should read some well optimised code occasionally, and figure out how it works, to see how it's done. I didn't know much in the way of assembler techniques before reading the Elite code. For example I didn't even know how to do things like multiply or square root, or draw lines efficiently. That's where I learned those things. It did take quite a lot of studying the printout to get it. So many "aha! that's how they do it" moments.
- NCG_Mike 6y agoI assume they had a scaled up integer sin and tan tables and used matrices for scale, rotation and projection? I do remember seeing this in 68K.
- MarkMoxon 6y agoThere are tables for sin, cos and arctan, but these are only used for drawing the planet’s circles. All the ship-drawing and universe manipulation is done using the small angle approximation, so there’s no need for lookup tables. Lots more info here: https://www.bbcelite.com/explore/articles/deep_dive_pitching_and_rolling.html https://www.bbcelite.com/explore/articles/deep_dive_pitching...
- peignoir 6y agoThat’s impressive indeed! When I was 12ish I was just struggling with BASIC and PASCAL on PC. No documentation nothing... had to wait a couple of years to learn assembler on an hp48 and later to have a pirate version of Borland C and some books to make sense of the things I would randomly understand ... oh and I loved elite :)
- jzzskijj 6y agoSounds quite familiar. I was 11 years and struggling with assembler on Atari ST. There was a short series of 68000 assembly basics in a Finnish computer magazine (MikroBitti) and some sources on disk magazines (Maggie by The Lost Boys).
- jacquesm 6y agoSame here, but with the source code for Microsoft basic on a Dragon 32, and then later again with the MOS and Basic roms for the BBC Micro. It is really nice to be able to say you know what every byte in your computer is for.
- 72deluxe 6y agoI remember designing glyphs on grid paper and an animating a character to walk across the screen thanks to an "advanced bbc micro techniques" book I found in the library. I didn't understand the section on 3D objects at all though! I still don't, although I did find the book and port it to C++ the other year to draw a poor-man's 3D system in wxWidgets. Fascinating.
- stevesimmons 6y agoWhen I was 12 - probably a few years before you - I didn't have a dot matrix printer so I wrote out the entire disassembly of the Vic-20 ROM in school exercise books. That took the first few days of the 1983 summer holidays. The rest of the holiday was spent happily analysing it and annotating my source code, figuring out how BASIC worked, including the floating point routines.
- drclau 6y agoHeh. When I was 12, I had a Romanian Z80 based computer, that would run BASIC. Because I didn’t have a tape drive for it, I was writing entire programs and then write them down on paper, and “reload” them after the computer would reset, or if I were lucky, just the next day. At one point I figured out the opcodes for Z80 were at the end of the somewhat thin manual, and that I can read/write straight into memory. That was so much fun. This was a lifetime ago, I hope what I remember is correct. Later on, I got a second hand 8086 based PC, which came with a full setup: central unit, display (monochrome), keyboard and mouse, and 5.25” floppy disk drive. Oh, right, and it had a big, loud, slow 20MiB HDD. It came with some early DOS and GEM desktop environment. On this machine I encountered the first computer virus, named Romania.856. By that time I had access to BBS through some friends, and I got to download various docs about assembler and so on. I had and loved F-Prot antivirus for its database of virus descriptions. So I set myself to reverse engineer this virus (I had no idea it’s called reverse engineering), by using the old debug.com (or was it exe?) that came with DOS. I wish I still had my notes from back then. At some point I got Turbo Debugger too, that made things so much easier. I was merely 14 years old, and spent a whole summer doing things like that, while other kids were doing whatever other kids normally do. I learned everything about that virus, and later about others.
- enneff 6y agoIt was DEBUG.COM until MS-DOS 5.0, then it became an EXE. I remember finding it a very mysterious program as a young child, and it was only after I'd learned some programming that I started to realize what it was for. Computing was so much easier to understand back then!
- worstenbrood 6y agoBack in the day we had to use debug.com at school to program small assembler apps. Most frustrating experience ever :) The things you had to do to fix a typo...
- 7thaccount 6y agoThere are a couple of recent (either recently released or will be released in the future) 8-bit computers that retain the fun of those old computers while giving them some modern conveniences like an SD card and some even have ethernet. The ZX spectrum Next looks amazing. Then there is the 8-bit guy's Commander X-16 which is being built by him and many other volunteers and should be ready for Kickstarter soon. Also there is the Mega65 project which is a very similar project to the Commander X16. Also there is the Color Maximite 2, which seems to be a screaming fast BASIC computer not meant to be fully compatible with any machine that I'm aware of. Some of these are implemented on FPGA and others on actual chips and some have the keyboard/computer integrated, while others do not. Either way, I'm really excited to finally be able to buy one of these fun old machines where you can fully understand the full system and easily make simple games.