6 ms·
Knowledge was also extremely unevenly distributed. I had a Commodore 64 in the early 90s and I wanted to understand more about machine code. But I had no docum
by barrkel 5y ago
Knowledge was also extremely unevenly distributed.
I had a Commodore 64 in the early 90s and I wanted to understand more about machine code. But I had no documentation about the opcodes and didn't know how to get any, beyond a basic intro in an Usborne children's programming book (I think it was this one: https://archive.org/details/machine-code-for-beginners https://archive.org/details/machine-code-for-beginners). I was able to write a loop and was amazed by the speed, but couldn't get much further.
If a book wasn't in my local library or bookshop, it essentially didn't exist to me. I had no means of search or discovery.
- chrismcb 5y agoI got most of my knowledge from magazines, based, and a few good books. But you make a very valid point.
- brucehoult 5y agoIn the late 70s the Apple ][ came with a manual with a terse but just good enough description of the 6502 and its opcodes, especially when combined with the source code for the machine's ROM. At least it was good enough for 17 year old me, who had never seen a computer before, to write some useful programs in 6502 machine code. One of the first was something that replaced ("shimmed") the standard keyboard input function with code that fed text to the printer from a file on floppy disk whenever the computer was waiting for user input. Given the usual small buffer in the printer that meant the printer hardly ever stopped.
- glandium 5y agoMy first computer was an Oric Atmos, and it came with two manuals, one of which had a thorough introduction to the 6502 machine code.
- aa-jv 5y agoThe Oric Atmos is still a wonderful machine! Still got yours in the attic somewhere? Join the crew at DF [1] and Oric.org [2] to bring that thing back to life. Some truly astonishing software [3] for the Oric has been written in the 21st century - including last years winner of the "10-line Basic Competition", which is pretty awesome if you're an Oric fan and haven't seen it yet [4]. Just imagine what it would have been like for Oric fans if rax and folks like Twlighte (RIP) had been active in the 80's, pushing these machines to their limits as they do now .. [1] - http://forum.defence-force.org/ http://forum.defence-force.org/ [2] - http://oric.org/ http://oric.org/ [3] - https://defence-force.org/index.php?page=games https://defence-force.org/index.php?page=games [4] - https://bunsen.itch.io/moon-landing-by-rax https://bunsen.itch.io/moon-landing-by-rax
- agumonkey 5y agoNo clubs either ?
- parenthesis 5y agoI had a lot of the Usborne books. I knew of the existence of the machine code one from the backs of the ones I had, but no bookshop ever had a copy. I finally bought a copy in a second hand shop a few years ago (I haven't actually read it though!) I had a Spectrum in the late 80s. I learned the basics of Z80 programming from An Introduction to Z80 Machine Code by R.A. and J.W. Penfold - published by Bernard Babani, well known for their electronics books. A family friend (more into electronics than programming) who had given me the Spectrum, also gave me some Babani BASIC books. I guess that's how I knew about the existence of the Z80 book, and got a copy of that. I wrote a simple text editor for the Spectrum in BASIC, but all the checks as to whether you had pressed a key (combination) with a special meaning (arrow keys etc.) meant that it couldn't keep up with even fairly slow typing. (The code in question was a big sequence of lines of the form IF <this key was pressed> THEN <GOTO or GOSUB (can't remember which) to somewhere>. I'm wondering now whether you could make a faster dispatch mechanism in Spectrum BASIC instead of this naive solution.) So I wrote an assembly routine just to deal with this bit. I didn't have an assembler. But, the wonderful Spectrum manual contained this table: https://worldofspectrum.org/ZXBasicManual/zxmanappa.html https://worldofspectrum.org/ZXBasicManual/zxmanappa.html which I used to hand assemble my program. (I don't think I'll ever forget that ret is 201). When I gave away all my Spectrum stuff a few years ago, I kept the manuals.
- mellavora 5y agoOh, man! I remember sitting by the fireplace one evening, as giant picture-perfect snowflakes floated down outside. My wife was sitting in an armchair nursing our newborn child, and I was hand-transcribing assembler into hexcode for one of my class assignments, using a printed lookup table. By candlelight. It felt like a scene out of some retro-future sci-fi movie.
- Donckele 5y agoThat vision brings a smile.
- musicale 5y agoThis is a nice chart (though arranged for disassembly/decoding rather than assembly) and shows how accessible 8-bit architectures really are. You could probably memorize the opcodes and program directly in machine code! It's also interesting how the core (presumably 8080) instructions are one byte.
- joosters 5y agoThat Usborne book series was amazing - it seems amazing nowdays that there were books explaining machine code targeted at children, young me was so glad that they existed. I can remember writing machine code for my spectrum with it (and the spectrum owners' manual also had an appendix with what I remember was just a plain 0-255 list of bytes => instruction mnemonics!)
- Patient0 5y agoThis. I remember forking out... $50?... to buy the Commodore 64 Reference Manual from a specialist bookstore (we had to drive there). I was so excited when I brought it home and could finally write programs in assembly (to put sprites on the border using raster interrupts!).
- commandlinefan 5y agoI bought a book on assembler and was heartbroken when I realized I had to buy an actual assembler before I could run the programs.
- pjmlp 5y agoOn the other hand we were much more creative, as there weren't anyone cargo culting what best practices were supposed to be. System programming in BASIC doing PEEK and POKE across all memory map, writing machine code loaded from DATA statements, no one telling that the one letter language was the only way of doing such endevours. Later on, the same kind of low level programming with Pascal and Basic compilers on 16 bit computers thanks to some books on the local library.
- makapuf 5y agoIt was diverse, instead of current monoculture of c c++ c# rust nim zig js typescript python Perl or go , we could use both languages: Basic OR raw assembly!
- 7thaccount 5y agoI think this is a reference to some movie where someone says "we like both kinds of music...country AND western".
- makapuf 5y agoThis was in the blues brothers : https://www.rottentomatoes.com/m/blues_brothers/quotes/ https://www.rottentomatoes.com/m/blues_brothers/quotes/
- 7thaccount 5y agoThank you! My dad quoted it all the time, but I didn't know where it came from lol.
- saltminer 5y agoThe clip: https://www.youtube.com/watch?v=vS-zEH8YmiM https://www.youtube.com/watch?v=vS-zEH8YmiM
- pjmlp 5y agoThat wasn't the point I was making.
- ajsnigrutin 5y agoYep, this was the limiting factor in doing anything. Not being able to get information, and not having anyone to communicate to about problems (as in stackexchange now.. where you're able to ask a specific problem, and someone from the other side of the globe can answer in a matter of minutes). Also, hadware was really limiting... which i kinda wish was still a fact for web developers, but we're too far for that, sadly.
- rbanffy 5y agoI was lucky to get a slightly improved Apple II+ clone (in Brazil we couldn't import computers, so local manufacturers didn't reinvent too many wheels) and to grow up in São Paulo, a very large city with a thriving industry and tech scene in the 70's and 80's. The most valuable resource was the community. We'd put free ads in classified papers (a bit like Craigslist, but on paper) for trading pirated software (legally buying software was pretty impossible too - you could pay, but you'd be paying a pirate, so we decided to short-circuit those). This formed communities that ended up meeting on various early BBSs. I got tons of photocopied documentation (yep - buying books was also quite impossible because the military dictatorship controlled payments and made paying a foreign entity painful) that really helped me getting up to speed with both BASIC and the tooling (these names may be unfamiliar to most people, but I edited BASIC programs with Beagle Bros' GPLE and another tool I can't remember the name, that did line renumbering and some in-memory source-code optimizations (compressing multiple lines into a single one when syntax allows). My work desk had two computers - a tricked out Apple II+ clone where I edited the code (which had an 80-column Videx - clone, of course - connected to a second monitor), and an Apple //e clone where I tested the program after I saved the original, ran all the optimizers (which reduced memory footprint significantly), and created the program disk (all floppies back then) to be run on the //e clone. Occasionally I had a third one, one identical to the classroom computers (because my //e was a "//e enhanced" clone and the classroom ones weren't)
- louthy 5y ago> Knowledge was also extremely unevenly distributed. Absolutely. Your comments about how hard it was to find even basic info was completely different to my experience in 1985 with a BBC Micro Model B, the manual [1], was a very comprehensive introduction to programming, starting with BASIC and going into 6502 assembly: it was and is the reason I'm a software engineer (I was 10 years old at the time). The reason for the difference was probably due to the BBC Computer Literacy Project [2], which aimed to make the UK the most computer literate country on Earth at the time. Even with this awesome introduction, learning programming required a brute-force-of-will approach. Much trial and error, and not much help from the machine (and no tools). One thing I still have slight PTSD over is that if you wrote anything in assembly and it crashed, then you'd have to reset the computer, losing the typed in program. So if you didn't save, you lost your work. But saving meant recording to a cassette tape, hardly CTRL+S! [1] http://bbc.nvg.org/doc/BBCUserGuide-1.00.pdf http://bbc.nvg.org/doc/BBCUserGuide-1.00.pdf [2] https://www.bbc.co.uk/taster/pilots/computer-literacy-project https://www.bbc.co.uk/taster/pilots/computer-literacy-projec...
- barrkel 5y agoI blew up my C64 poking at the chips on the board inside, a spark one day and it died. It booted up fine and showed the READY prompt but the cursor block never appeared and it froze before it could accept keyboard input. I then got a second-hand Amstrad CPC464, but this time I got a manual (I didn't get a manual with the C64, it was a gift from a family friend) and a non-functional tape drive, which, unlike the C64, was integrated. It also came with a monochrome monitor! Every program I wrote I had to erase before I could write a new one. I wrote an alarm-clock program which made an air-raid siren noise that woke me up every morning, and I had to rewrite it again every night. The BBC project was hugely worthwhile, IMO. It had side-effects in Ireland, I had a couple of friends with BBC computers, and of course there were all those Usborne books, though Vic-20, TRS-80 and friends (before my time) probably helped too.
- commandlinefan 5y ago> I had to erase before I could write a new one Mine had an output port that would allow you to save programs to an external cassette recorder (cassette recorder not included). I had a pile of unlabelled cassette tapes with programs I was sure I was going to want to reuse some day.
- SketchySeaBeast 5y ago100% this. I tried to get started as a kid in the early 90's, but there were no resources available for me. Even trying to reverse engineer Gorillas was too much for me at the time, and I didn't have any documentation to help. I got to loops and reading strings, but that was as far as I could go on my own. Rural Alberta sadly also didn't have any libraries or bookshops I could draw from. Back then it really required being in the right place to have an opportunity to learn. Now you just need an internet connection.
- Clubber 5y agoThat was one of the great things about Amazon back in the mid-late 90s, they had a huge selection of computer books at just the right time in computing. I spent hundreds of dollars on those things and still have a bookshelf full of mid-late 90s programming books.
- taffronaut 5y agoI needed to write screen addressing routines in assembler for the Apple II in 1983. I went to my local bookshop in Sheffield and bought "Apple II Assembly Language by Marvin L. De Jong". This was for my undergrad project and I pretty much have a degree because of that awesome book.
- timbit42 5y agoI got some info from magazines, particularly Jim Butterfield articles, and there were books advertised in them with more detailed info.
- ZetaZero 5y agoI lucked out in a Kmart finding this one: https://www.amazon.com/Machine-language-beginners-programming-programmers/dp/0942386116 https://www.amazon.com/Machine-language-beginners-programmin...
- bsder 5y ago> I had a Commodore 64 in the early 90s and I wanted to understand more about machine code. The problem was that you were too late. Machines like the C64, the TRS-80 Model I, the CoCo, etc. all had specialist magazines dedicated to them ... back in the early to mid 80s. These were really good for distributing knowledge. Unfortunately, the ascendancy of the IBM PC by the early 1990s wiped this stuff out. And most libraries got rid of those periodicals if they had even carried them at that point.