From 06db3d96258f6c6a60ae4ec36fe8e8dcd29ffe86 Mon Sep 17 00:00:00 2001
From: dzwdz
Date: Wed, 31 Jul 2024 21:49:19 +0200
Subject: m8trix post
---
 src/feed.ass  |   1 +
 src/m8trix.md | 363 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 364 insertions(+)
 create mode 100644 src/m8trix.md
(limited to 'src')
diff --git a/src/feed.ass b/src/feed.ass
index c058348..bbd578e 100644
--- a/src/feed.ass
+++ b/src/feed.ass
@@ -1,5 +1,6 @@
 # actually simple syndication
 # https://tilde.town/~dzwdz/ass/
+2024-07-31	https://tilde.town/~dzwdz/blog/m8trix.html	Dissecting m8trix
 2023-08-19	https://tilde.town/~dzwdz/blog/tui.html	On TUIs
 2023-07-23	https://tilde.town/~dzwdz/blog/our.html	/town/our, a tildebrained irc bot
 2023-05-25	https://tilde.town/~dzwdz/blog/feeds.html	Linear feeds are a dark pattern
diff --git a/src/m8trix.md b/src/m8trix.md
new file mode 100644
index 0000000..d8b0cd9
--- /dev/null
+++ b/src/m8trix.md
@@ -0,0 +1,363 @@
+---
+title: Dissecting m8trix
+date: 2024-07-31
+---
+
+[m8trix](https://www.pouet.net/prod.php?which=63126)
+by
+[HellMood](https://www.pouet.net/user.php?who=97586)
+is one of my favorite demos.
+It packs a pretty cool Matrix-style effect in only 8 bytes:
+
+animated gif (epilepsy warning)
+ +
+
C:\M8TRIX>debug M8TRIX.COM
+-U ; disassemble the beginning of the program
+073D:0100 C41C              LES     BX,[SI]
+073D:0102 9F                LAHF
+073D:0103 AB                STOSW
+073D:0104 47                INC     DI
+073D:0105 47                INC     DI
+073D:0106 EBF9              JMP     0101
+-U 101 ; disassemble the loop body
+073D:0101 1C9F              SBB     AL,9F
+073D:0103 AB                STOSW
+073D:0104 47                INC     DI
+073D:0105 47                INC     DI
+073D:0106 EBF9              JMP     0101
+-R ; look at the registers
+AX=FFFF BX=0000 CX=0008 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
+DS=073D ES=073D SS=073D CS=073D IP=0100 NV UP EI PL ZR NA PE NC
+073D:0100 C41C              LES     BX,[SI]                        DS:0000=20CD
+AX=FFFF BX=0000 CX=0008 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
+DS=073D ES=073D SS=073D CS=073D IP=0100 NV UP EI PL ZR NA PE NC
+073D:0100 C41C              LES     BX,[SI]                        DS:0000=20CD
+-T ; single step and show register state
+AX=FFFF BX=20CD CX=0008 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
+DS=073D ES=9FFF SS=073D CS=073D IP=0102 NV UP EI PL ZR NA PE NC
+-d 0000
+073D:0000  CD 20 FF 9F 00 EA FF FF-AD DE BD 1D 94 01 00 00 . ..............
+[...]
+-u 0000
+073D:0000 CD20              INT     20
+073D:0002 FF9F00EA          CALL    FAR [BX+EA00]
+[...]
+AX=FFFF BX=1CC4 CX=0008 DX=0000 SP=FFFE BP=0000 SI=0100 DI=0000
+DS=073D ES=AB9F SS=073D CS=073D IP=0102 NV UP EI PL ZR NA PE NC
+073D:0102 9F                LAHF
+-t
+AX=46FF BX=1CC4 CX=0008 DX=0000 SP=FFFE BP=0000 SI=0100 DI=0000
+DS=073D ES=AB9F SS=073D CS=073D IP=0103 NV UP EI PL ZR NA PE NC
+-rax 02FF
+-rax 02FF
+-r
+AX=02FF BX=1CC4 CX=0008 DX=0000 SP=FFFE BP=0000 SI=0100 DI=0000
+DS=073D ES=AB9F SS=073D CS=073D IP=0103 NV UP EI PL ZR NA PE NC
+073D:0103 AB                STOSW
+-t
+AX=02FF BX=1CC4 CX=0008 DX=0000 SP=FFFE BP=0000 SI=0100 DI=0002
+DS=073D ES=AB9F SS=073D CS=073D IP=0104 NV UP EI PL ZR NA PE NC
+AX=02FF BX=1CC4 CX=0008 DX=0000 SP=FFFE BP=0000 SI=0100 DI=0002
+DS=073D ES=AB9F SS=073D CS=073D IP=0104 NV UP EI PL ZR NA PE NC
+073D:0104 47                INC     DI
+-t
+AX=02FF BX=1CC4 CX=0008 DX=0000 SP=FFFE BP=0000 SI=0100 DI=0003
+DS=073D ES=AB9F SS=073D CS=073D IP=0105 NV UP EI PL NZ NA PE NC
+073D:0105 47                INC     DI
+-t
+AX=02FF BX=1CC4 CX=0008 DX=0000 SP=FFFE BP=0000 SI=0100 DI=0004
+DS=073D ES=AB9F SS=073D CS=073D IP=0106 NV UP EI PL NZ NA PO NC
+073D:0106 EBF9              JMP     0101
+-t
+AX=02FF BX=1CC4 CX=0008 DX=0000 SP=FFFE BP=0000 SI=0100 DI=0004
+DS=073D ES=AB9F SS=073D CS=073D IP=0101 NV UP EI PL NZ NA PO NC
+073D:0101 1C9F              SBB     AL,9F
+AX=02FF BX=1CC4 CX=0008 DX=0000 SP=FFFE BP=0000 SI=0100 DI=0004
+DS=073D ES=AB9F SS=073D CS=073D IP=0101 NV UP EI PL NZ NA PO NC
+073D:0101 1C9F              SBB     AL,9F
+-t
+AX=0260 BX=1CC4 CX=0008 DX=0000 SP=FFFE BP=0000 SI=0100 DI=0004
+DS=073D ES=AB9F SS=073D CS=073D IP=0103 NV UP EI PL NZ NA PE NC
+-rax 028F
+-r
+AX=028F BX=1CC4 CX=0008 DX=0000 SP=FFFE BP=0000 SI=0100 DI=0008
+DS=073D ES=AB9F SS=073D CS=073D IP=0101 NV UP EI PL NZ NA PO NC
+073D:0101 1C9F              SBB     AL,9F
+-t
+AX=02F0 BX=1CC4 CX=0008 DX=0000 SP=FFFE BP=0000 SI=0100 DI=0008
+DS=073D ES=AB9F SS=073D CS=073D IP=0103 NV UP EI NG NZ NA PE CY
+-rip 0101 ; i don't care about the rest of the loop, just run the SBB again
+-t
+AX=0250 BX=1CC4 CX=0008 DX=0000 SP=FFFE BP=0000 SI=0100 DI=0008
+DS=073D ES=AB9F SS=073D CS=073D IP=0103 NV UP EI PL NZ AC PE NC
+C:\M8TRIX>debug M7TRIX.COM
+-U
+073D:0100 C41C              LES     BX,[SI]
+073D:0102 9F                LAHF
+073D:0103 AB                STOSW
+073D:0104 91                XCHG    AX,CX
+073D:0105 EBFA              JMP     0101
+-U 101
+073D:0101 1C9F              SBB     AL,9F
+073D:0103 AB                STOSW
+073D:0104 91                XCHG    AX,CX
+073D:0105 EBFA              JMP     0101
+