~aleteoryx/uxn

ref: a5d56a84a4e22a94a4971c6a07e3949b47d449db uxn/rot.tal -rw-r--r-- 820 bytes
a5d56a84Aleteoryx rot13 cipher 5 days ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
( usage: uxncli rot.rom [ k ] <message.txt
  by waso amisi )

@on-reset ( -> )
	;on-arg ;on-stdin
	#17 DEI ?{ SWP2 } POP2
	#10 DEO2
	BRK

@on-arg ( -> )
	#17 DEI
	#02 NEQk ?{ POP2 !/one-digit }
	INC EQUk ?usage

	( argend )
	,/offset LDR ;try-rot/offset STA
	;on-stdin #10 DEO2
	BRK
@on-arg/one-digit ( -> )
	#d012 DEI ADD DUP	( subtract "0 )
	#09 GTH ?usage
	[ LIT2 &offset 00 0a ]
	MUL ADD ,/offset STR
	BRK
	
@usage ( -- )
	;/str
	&puts
		LDAk #18 DEO
		INC2 LDAk ?/puts
	#800f DEO BRK
@usage/str "usage: 20 "uxncli 20 "rot.rom 20 "[ 20 "k 20 "] 20 "<message.txt 0a 00

@on-stdin ( -> )
	#12 DEI
	LIT "A try-rot
	LIT "a try-rot
	#18 DEO
	BRK

@try-rot ( c n -- c )
	SUBk #1a			( c n c-n 1a )
	LTHk ?{ POP2 POP JMP2r }
	[ LIT &offset 0d ]
	ROT ADD SWP			( c n rot 1a )
	DIVk MUL SUB			( mod )
	ADD
	#18 DEO
	POP2 BRK