commit 8895a82

zzo38  ·  2023-09-06 05:17:29 +0000 UTC
parent 3390b8c
Add prg/euctronto32.tal (convert EUC-TRON to TRON-32BE)
1 files changed,  +61, -0
+61, -0
 1@@ -0,0 +1,61 @@
 2+\\ Convert EUC-TRON to TRON-32BE
 3+\\ (public domain)
 4+
 5+\\ (Note: This program does not (currently) attempt to convert ASCII to
 6+\\ JIS, therefore resulting in the "JIS-hybrid TRON-32", rather than the
 7+\\ "pure TRON-32".
 8+
 9+|0100
10+  [& BRK STH2 #12 DEI JMP2r ]@ INC2rk LITr 10 DEO2r EQUrk JSRr
11+
12+  JSR2rk
13+  DUP #7f GTH [?
14+    \\ single byte
15+    @single
16+    #0018 DEOk DEOk DEOk NIP DEO
17+    JMP2k
18+  ]@
19+  DUP #a0 LTH [?
20+    \\ double byte JIS X 0208 or first plane of JIS X 0213
21+    #7f AND
22+    @double
23+    #0018 DEO #2118 DEOk NIP DEO
24+    JSR2rk
25+    #7f AND #18 DEO
26+    JMP2k
27+  ]@
28+  DUP #8e NEQ [?
29+    \\ katakana
30+    POP ;single JMP2rk
31+  ]@
32+  DUP #8f NEQ [?
33+    \\ double byte JIS X 0212 or second plane of JIS X 0213
34+    DUP EOR JSR2rk
35+    DUP #ee LTH [? #5e SUB @ndouble NIP !double ]@
36+    DUP #af GTH ?ndouble
37+    ;jisx ADD2 LDA !double
38+  ]@
39+  \\ TRON character (now the code #88 to #8d is on stack, to save for later)
40+  #8000  ( zone plane_add volume )
41+  JSR2rk DUP #fe AND #90 NEQ [? ROT INC EOR #c0 MUL SWP JSR2rk ]@
42+  [@ DUP #80 NEQ ?q POP INC JSR2rk ]!
43+  @q  ( zone plane_add volume plane )
44+  SWP #18 DEO
45+  ADD #18 DEO
46+  JSR2rk JSR2rk
47+  ROT #0007 SFT2 ;zone ADD2 LDA2 JSR2
48+  SUB2 SWP #18 DEOk NIP DEO JMP2k
49+
50+\_@a1'- \@jisx
51+(  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f  )
52+     87 a2 88 89 8a a6 a7 8b a9 aa ab 8c 8d 8e 8f
53+
54+\_@0110"- \@zone :z8 :z9 :za :zb :zc :zd
55+
56+@z8 #8080 JMP2r
57+@z9 #0080 JMP2r
58+@za #8000 JMP2r
59+@zb DUP2k EOR2 JMP2r
60+@zc DUP #c0 LTH [? SWP #8040 JMP2r ]@ #2080 JMP2r
61+@zd DUP #bf GTH [? #2000 JMP2r ]@ DUP #df GTH [? SWP #0040 ]@ #6060 JMP2r
62+