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