-
Notifications
You must be signed in to change notification settings - Fork 0
/
b64enc.tal
37 lines (29 loc) · 795 Bytes
/
b64enc.tal
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
( uxncli b64enc.rom data )
|10 @Console &vector $2 &read $1 &pad $4 &type $1 &write $1 &error $1
|0000
@queue $1
@putsize $1
|0100
@on-reset ( -> )
;on-console .Console/vector DEO2
BRK
@on-console ( -> )
.Console/type DEI #04 EQU ?finalize
.Console/read DEI <base64>
BRK
@<base64> ( byte -- )
.putsize LDZ INC INC DUP2 SFT .queue LDZ ORA #00 SWP ;mime ADD2 LDA .Console/write DEO
SWP OVR #06 SWP SUB #40 SFT SFT #3f AND
SWP DUP #06 NEQ ?{ POP #00 SWP ;mime ADD2 LDA .Console/write DEO #0000 } .putsize STZ .queue STZ
JMP2r
@finalize ( -- )
.putsize LDZ
DUP ?{ !&ed }
#00 .queue LDZ ;mime ADD2 LDA .Console/write DEO
&l ( sz -- sz )
#3d18 DEO
INC INC DUP #06 NEQ ?&l
&ed #010f DEO
POP BRK
@mime
"ABCDEFGHIJKLMNOP "QRSTUVWXYZabcdef "ghijklmnopqrstuv "wxyz0123456789+/