@kissa.bsky.social
Tomfoolery, nincompoopery, programming
That’s why it would only affect your followers — don’t follow people who broadcast wrong signals.

I think subtle negative signals would be more useful than generally imagined, but textual medias rarely use them. TikTok can detect when people skip videos, but it’s harder in these Twitter clones
November 13, 2023 at 7:47 AM
Thank you! Kissa is a many-splendored thing
November 1, 2023 at 11:42 PM
Now I need to take a break of few days, weeks, or months, depending on when I next manage to free up some time. This was a miserable week for writing code: I had planned 5 full working days and got some 11+ hours done. But such is life sometimes
October 19, 2023 at 8:16 PM
Actually need to implement a bunch of arithmetic instructions and test them somehow efficiently. Here's a start.
October 19, 2023 at 8:15 PM
Here's the whole set of immediate instructions. This makes me reconsider the design, not only because of the effort of testing all of that stuff but also because I don't want to type "SHLAB" when I just want to do a 1-bit left shift. Maybe it's time to write some programs first and reconsider this.
October 19, 2023 at 9:11 AM
I'm deliberately making a 1:1 mapping between names and opcodes to make assembling and disassembling easier. I may have to walk back on this decision later. It makes more complex names for often used instructions:

addai a, 1234 ; a: augmented assignment, b: immediate
addab a, 10 ; b: byte immediate
October 19, 2023 at 8:23 AM
I'm starting to think that maybe augmented assignment forms should be the default and the RISC-style 3 operand forms be the exception, since we want as short programs as possible. And generally shorter mnemonics as well. Maybe in the next version!
October 18, 2023 at 1:09 PM
Augmented assignment instructions are derived from regular ones by appending "a" to the name, except for inc and dec (derived from add1 and sub1), and nop (derived from mov). Most instructions take 1 fewer parameter than the original one; nop, exceptionally, takes zero, for obvious reasons.
October 18, 2023 at 1:03 PM
Next, we want "augmented assignment" forms of those instructions (such as "a += b"), and then also immediate forms taking either a 8-bit or a 16-bit operand. The complexity is quickly getting out of hand. But let's start with the augmented ones:
October 18, 2023 at 12:57 PM
Notably missing: NOT (toggle all bits) and CLR. Though NOT is popular in many architectures, it's rarely used even in the kind of low-level programming I have in mind. CLR might find itself in the augmented instruction block (coming soon). Also absent: ROL and ROR, which might be fun for some uses.
October 18, 2023 at 12:39 PM
Got a cup of coffee and made a plan for arithmetic instructions. Note the absence of unsigned operators like logical shift right, because who needs those when all words are signed?

Note that mov is considered one of the arithmetic opcodes (it's similar in structure to e.g. neg, just does nothing)
October 18, 2023 at 12:26 PM
Here's the comment from 2022: github.com/nguillaumin/...

The 2002 (2004?) thing: nguillaumin.github.io/perihelion-m...

The 1994 thing can be found here: docs.dev-docs.org/htm/search.p...
October 17, 2023 at 9:27 PM
In other news, while looking for some m68k wisdom, I found a historical gem where James Ingram, who wrote "The 68000 programmer's introduction to demo techniques" (1994) commented on perihelion's "The Atari ST MC68000 Assembly Language Tutorials" (2002) just one year ago and found his own font there
October 17, 2023 at 9:24 PM
Writing tests is more convenient by allowing write8() to take multiple arguments:
October 17, 2023 at 9:12 PM
Let's make things a bit more consistent. Left: before, right: after
October 17, 2023 at 7:51 PM
And here is the core of the virtual machine:
October 17, 2023 at 9:31 AM
To read and write bytes we introduce readOperand() and writeOperand(), which are used to do the heavy lifting. We also need a function to read and sign-extend a byte, read8s(). Extra write function is not needed, write8 works for signed bytes as well.
October 17, 2023 at 9:27 AM
hi() and lo() set the 7th bit of the operand, which turns on byte addressing (as opposed to word addressing, which is the default)
October 17, 2023 at 9:18 AM