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
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
Tant que j'y suis j'ai branché mon lecteur de CD-ROM Apple que j'utilisais avec l'Atari Falcon (et par miracle j'ai trouvé le bon câble SCSI au fond de la boîte à bouts de PC).
Pas de soucis, ça fonctionne du premier coup. #retrocomputing#apple#macintosh#68k#Mac68k
Il reste un problème à régler sur le Mac : la souris ne fonctionne que sur un axe.
Je l'ai démontée pour comprendre : le plastique de l'axe Y est cassé (regardez bien la pièce au centre de la photo du côté bas, par rapport à celle de gauche)
Je vais réparer ça #retrocomputing#apple#macintosh#68k
Alors oui, j'en avais déjà un, mais ce lecteur de CD #apple était vraiment pas cher 😅 Il est en excellent état et en plus il fonctionne !
Il est un peu plus petit que celui que j'avais et c'est un tiroir classique (et pas un caddie). #retrocomputing#macintosh#68k#SCSI
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.
Here are the kinds of mistakes you make when you emulate a CPU:
Forgot to update a flag
Wrong register used (doh!)
Wrong width (did a byte op but it's a word - often copy paste error)
Borked logic (oops I thought rotate did X but it does Y)
Behaviour of the op is unclear (What is pushed on the stack on a Line1010/1111 exception? Does the program counter point to the current instruction or the next? I had to wing it looking at how the code behaves on the other side)
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: