commit 32a81c7

zzo38  ·  2026-08-26 04:10:56 +0000 UTC
parent 55fab05
Add prg/qoiff.tal
1 files changed,  +49, -0
+49, -0
 1@@ -0,0 +1,49 @@
 2+|0100
 3+  \\ Identification
 4+  LITr fd input INCr STHrk cinput
 5+  #18 STH2k DEO ( f )
 6+  #02f8 ADD2 STHrk DEO STHrk DEO ( ar )
 7+  #0f SUB STHrk DEO DEOr ( bf )
 8+  #6518 DEO #6c18 DEO #6418 DEO
 9+  \\ Width/height
10+  #f8 input #18 DEO INC DUP cinput
11+  \\ Two ignored bytes
12+  input #ff00 DUPk
13+@main
14+  input STHk #16 SFT INC LDR2 JMP2 =op_index =op_diff =op_luma =op_rgb
15+@op_rgb
16+  STHrk #fe LTH [?
17+    \\ RGB(A)
18+    POP POP2
19+    STHr INC
20+    input input STH2 input
21+    SWP [? input SWP ]@
22+    STHr STHr
23+    !send
24+  ]@
25+  \\ Run 1-62
26+  LITr 3f EORr
27+  LIT LIT2 ;send/op STA
28+  !send
29+@op_diff
30+  ( blue ) SWP2 STHrk #03 AND #02 SUB ADD ( graB )
31+  ( green ) SWP2 SWP STHrk #02 SFT #03 AND #02 SUB ADD ( aBrG )
32+  ( red ) SWP STHr #04 SFT #06 SUB ADD ( aBGR )
33+  !send
34+@op_luma
35+  LITr 60 ADDr
36+  ( green ) SWP STHrk ADD ( abrG )
37+  ( red ) SWP input STH STH2rk #04 SFT #08 SUB ADD ADD ( abGR )
38+  ( blue ) LITr 0f ANDr ADDr SWP2 STHr #08 SUB ADD SWP2 ( aBGR )
39+  !send
40+@op_index
41+  STHr #04 MUL LDZ2k ROT INC INC LDZ2 SWP2
42+@send
43+  OVR2 OVR2 OVR2 OVR2
44+  #67 MUL ADD #93 MUL ADD #75 MUL ADD #2c MUL
45+  STZ2k NIP NIP INC INC STZ2
46+  &loop OVR2 OVR2 sendpart sendpart
47+  &op !main POP2 INCr STHrk ?/loop LIT2 40 _/op STR BRK
48+
49+@cinput [? @input LITr _/x STR2r [; #10 DEO2 BRK ]@ #12 DEI LIT2 &x $2 JMP2 ]@ POP2r BRK
50+@sendpart [& ]@ #18 DEOk DEO JMP2r