Welcome home! Let's get you a nice cozy heatsink and get you settled back in your case. Thanks to Amiga of Rochester for getting everything fixed up! #motorola#retrocomputing#68k#mac68k
Logic board and PSU recapped, 68LC040 replaced with the real deal, 16 meg memory upgrade, a nice new @BlueSCSI, and a new (hopefully) quieter fan. I'd love to get a full 1024k of VRAM but those SIMMs are hard to come by. #retrocomputing#mac68k
this is Ryza! she's a PowerBook 180 in fairly good condition and the nicest 68k Mac i own.
this MARCHINTOSH, i'm going to try to upgrade Ryza with a WiFi-capable PiSCSI (fka RaSCSI) so i can test and someday play Atelier Esri, my homebrew Atelier demake.
i'm also going to try out a brand new JCS PowerBook 1xx battery. and while i'm in there, i can at least inventory the capacitors and check the PRAM battery.
unfortunately, like most 180s, her active matrix screen is developing "tunnel vision", slowly fading from the corners inward as long as she's on. (it reverts when she's not, but it can take multiple days, far slower than the fading).
fortunately, Ryza has video output and is capable of driving a VGA monitor or capture box, so i won't need to rely on her screen too much.
Welcome to #MOVember, one asm MOV instruction each day.
The Motorola MC68000 has a BEAST of a MOV instruction.
Official assembler mnemonic: MOVE. Refreshingly clear!
You could move to and from registers and/or memory. 8-, 16-, 32- data sizes. Post increment, predecrement. Including memory-to-memory moves (Ferris Bueller soundtrack voice: Oh Yeah).
*d++ = *s++ is a single instruction in 68000.
Officially destination on the right: MOVE A7,D0 copies the A7 register to D0
> In this IBM article from 2005, it is covered how the Motorola m68k, MIPS and PowerPC CPUs of that era handled unaligned access. The interesting thing to note here is that until the 68020, unaligned access would always throw a bus error. MIPS CPUs didn’t bother with unaligned access in the name of speed, and PowerPC took a hybrid approach, with 32-bit unaligned access allowed, but 64-bit (floating point) unaligned access resulting a bus error.
Getting a weird bug deep down in the Mac initialization routines makes me regret not taking the time to make unit test for every single freaking opcode.
Yeah that would have been very time consuming.
But stepping in assembly code you don't understand looking for the moment something borks is too.
And it's probably due to a missing semicolon somewhere.
Hey it was only silly old me with a bug in my video class (e.g. incrementing the memory address before drawing the pixels :meow_googlytrash: )
Much better. Not sure how I'm going to deal with the annoying moire effects though.
So, CPU is 80%+ implemented I guess, woot!
I'm going to focus on the Mac part for a bit probably. The floppy scares me because I can do a standard floppy controller but this one is a Woz creation, so it's probably impossible to grok for a mere human.
I'm not sure why "a lot of instructions have a .byte/.word/.long versions" didn't scream "templates!!" at me sooner, but at least I caught it before I've done everything.
Welp that's almost 500 fewer lines of copy-pasted stuff (with random bonus bugs because you forgot to set a flag in one of the three versions). And more savings as I implement the rest.
Something something we're gonna need a bigger boat.
Well that's a bit tight. I'm not sure how I'll fit a 20-byte instruction (the maximum possible) in this... 12-byte area (the section with the dots).
And that leaves 32 characters for the disassembly... which fits most instructions but some need a bit more room too.
And then you have the pathological case, the worst possible instruction on the 68000: