5 ms·
> The undocumented C9 opcode is identical to the documented CB, far return instruction. I remember this. Once ... gosh, it's hard to believe how long ago that
by _ugfj 3y ago
> The undocumented C9 opcode is identical to the documented CB, far return instruction.
I remember this.
Once ... gosh, it's hard to believe how long ago that was now, but once I knew the entire Z80 opcode table off head. I could read the Z80 machine code and disassemble it. High school crowded that stuff out of my head, I went to a special math school, it was very very hard. Except... C9 was RET (and the Z80 is an extension of the Intel 8080). That has burned into me so deep I still remember, across more than 35 years. I will be 30 ;) years old in two weeks.
- gnat 3y agoI'm the same with LDA immediate = A9 in 6502 machine code, from my C64 days. It's disturbing how strongly burned-in those neurons are ...
- gilmore606 3y agoSYS 64738
- anyfoo 3y agoIn a similar vein, C000 == 49152 has been burned into my brain. I recognize it immediately, because that’s where most C64 assembly programs were loaded, followed by “SYS 49152” for loading them. A000 for example I recognize, but can’t tell you as quickly what it is in decimal as I can with C000.
- CptTightpants 3y agoThat address is where cartridges would appear in memory when plugged in, which is why it became SOP to use it.
- bonzini 3y agoNope it's because it's the only 4K of memory that BASIC did not use and that wasn't mapped under the system ROM; so it was a common place where to put assembly language code to be loaded with a BASIC program, or to be used while the BASIC interpreter was running. Cartridge ROM can appear at various places since they have access to the memory bus but $C000 can't be used as the only place for cartridge ROM.
- Someone 3y agoWeird how the brain works, given that 0xA000 = 0xA × 0x1000 = 10 × 0x1000 and I guess you know 0x1000 = 4096
- anyfoo 3y agoI just know 49152 on another level, as SYS49152 was part of very early childhood. No thinking at all necessary, even as trivial as 40960=10x4096. 49152 is ingrained.
- deleted 3y ago[deleted]
- crest 3y ago$18, $69, xx
- userbinator 3y agoI have most of the single-byte x86 opcodes still memorised - as many others have independently discovered, it's much easier in octal. 95 ba 07 01 cd 21 c3 48 65 6c 6c 6f 20 77 6f 72 6c 64 21 0d 0a 24
- messe 3y agoI recognize the "hello world" and "int 21h" but, can I ask why that instruction listing seems to start with "xchg (e)ax, (e)bp"?
- userbinator 3y agoSaves one byte since BP is 09xx on start for MS-DOS >= 4.0. Old demoscene sizecoding trick.
- djmips 3y agoI still remember 0x90 because I still use it all the time!
- donw 3y agoAs a total aside, domain expertise is kind of amazing. Like, you can look at a string of opcodes from a processor that you haven’t touched for a decade-plus, and still recognize what’s going on. It’s important to remember that applies in all fields. That bumpkin that grew up on a farm? Sure, he might not be able to write an award-winning essay, but he could probably tell you everything you need to know about your local soil chemistry and it’s suitability for various crops just by smelling it.
- sedatk 3y agoThere is a plaque with hex dump at the entrance of Computer History Museum in Mountain View, California. I immediately recognized the opcodes on it because I knew Z80 and they were in 8080 (I don't remember seeing any ED B0 or similar Z80 extensions). 01, 11, 21, C3 and CD’s all over. I think it was either a boot loader or a BASIC ROM startup code, but not sure. 8080 probably implies Altair BASIC because there was “(C) MICROSOFT” string in the code.
- watersb 3y agoSomewhere around here, I've got a notebook, it's pages of hex dump written with a pencil in a child's handwriting. I couldn't afford a printer.
- chx 3y agoThose years... yeah, they werelean. I grew up behind the Iron Curtain, the ZX Spectrum we had was smuggled into the country by my parents in 1985. What printer...? There was no printer to buy! More, we were soldering the data cable when it broke because what today looks like a bog standard 3.5mm mono cable was impossible to replace. It was not available and that was the end of the story.