| 1 | 1 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,16 @@ |
| 1 |
+( usage: uxncli console.read.rom ) |
|
| 2 |
+ |
|
| 3 |
+|10 @Console &vector $2 &read $1 &pad $4 &type $1 &write $1 &error $1 |
|
| 4 |
+ |
|
| 5 |
+|0100 |
|
| 6 |
+ |
|
| 7 |
+@on-reset ( -> ) |
|
| 8 |
+ ;on-console .Console/vector DEO2 |
|
| 9 |
+ ( type something in the console ) |
|
| 10 |
+ BRK |
|
| 11 |
+ |
|
| 12 |
+@on-console ( -> ) |
|
| 13 |
+ .Console/read DEI .Console/write DEO |
|
| 14 |
+ #0a .Console/write DEO |
|
| 15 |
+ BRK |
|
| 16 |
+ |
| ... | ... |
@@ -1,113 +1,113 @@ |
| 1 |
-( usage: uxncli console.rom arg1 arg2 arg3 |
|
| 2 |
- Prints Hello Uxn!, and listens for incoming stdin events on enter. ) |
|
| 1 |
+( usage: uxncli console.rom arg1 arg2 arg3 Prints Hello Uxn!, and listens for incoming stdin events on enter. ) |
|
| 3 | 2 |
|
| 4 | 3 |
|10 @Console &vector $2 &read $1 &pad $4 &type $1 &write $1 &error $1 |
| 5 | 4 |
|
| 6 |
-|00 |
|
| 5 |
+|0000 |
|
| 7 | 6 |
|
| 8 | 7 |
@buf |
| 9 | 8 |
|
| 10 |
-|0100 ( -> ) |
|
| 9 |
+|0100 |
|
| 11 | 10 |
|
| 12 |
- ( set vector ) |
|
| 11 |
+@on-reset ( -> ) |
|
| 13 | 12 |
;on-argument .Console/vector DEO2 |
| 14 |
- ( print hello ) |
|
| 15 |
- ;hello-txt pstr |
|
| 16 |
- ( when arguments are queued ) |
|
| 17 |
- .Console/type DEI #00 EQU ?&no-queue |
|
| 18 |
- ;queue-txt pstr |
|
| 19 |
- &no-queue |
|
| 20 |
- |
|
| 21 |
-BRK |
|
| 13 |
+ ;dict/hello <print-str> |
|
| 14 |
+ .Console/type DEI ?&has-arg |
|
| 15 |
+ BRK |
|
| 16 |
+ &has-arg ( -> ) |
|
| 17 |
+ ;dict/queue <print-str> |
|
| 18 |
+ BRK |
|
| 22 | 19 |
|
| 23 | 20 |
@on-argument ( -> ) |
| 24 |
- |
|
| 25 |
- .Console/type DEI ?&no-argend |
|
| 21 |
+ .Console/type DEI ?&>no-argend |
|
| 26 | 22 |
;on-stdin .Console/vector DEO2 |
| 27 |
- BRK |
|
| 28 |
- &no-argend |
|
| 23 |
+ BRK &>no-argend |
|
| 29 | 24 |
.Console/read DEI .buf skey ?&eval |
| 30 |
- |
|
| 31 |
-BRK |
|
| 32 |
- |
|
| 33 |
-&eval ( -> ) |
|
| 34 |
- |
|
| 35 |
- print-type |
|
| 36 |
- ;yousent-txt pstr |
|
| 25 |
+ BRK |
|
| 26 |
+ &eval ( -> ) |
|
| 27 |
+ <print-type> |
|
| 28 |
+ ;dict/yousent <print-str> |
|
| 37 | 29 |
LIT "" #18 DEO |
| 38 |
- ;buf pstr |
|
| 39 |
- LIT "" #18 DEO #0a18 DEO |
|
| 40 |
- ;buf sclr |
|
| 41 |
- |
|
| 42 |
- .Console/type DEI #04 NEQ ?&no-close |
|
| 43 |
- ;argend-txt pstr |
|
| 44 |
- ;on-stdin .Console/vector DEO2 |
|
| 45 |
- &no-close |
|
| 46 |
- |
|
| 47 |
-BRK |
|
| 30 |
+ ;buf <print-str> |
|
| 31 |
+ LIT "" #18 DEO |
|
| 32 |
+ #0a18 DEO |
|
| 33 |
+ ;buf sclr .Console/type DEI #04 NEQ ?&>no-close |
|
| 34 |
+ ;dict/argend <print-str> |
|
| 35 |
+ ;on-stdin .Console/vector DEO2 &>no-close |
|
| 36 |
+ BRK |
|
| 48 | 37 |
|
| 49 | 38 |
@on-stdin ( -> ) |
| 50 |
- |
|
| 51 | 39 |
.Console/read DEI .buf skey ?&eval |
| 52 |
- |
|
| 53 |
-BRK |
|
| 54 |
- |
|
| 55 |
-&eval ( -> ) |
|
| 56 |
- |
|
| 57 |
- print-type |
|
| 58 |
- ;buf ;quit-txt scmp ?&quit |
|
| 59 |
- ;yousaid-txt pstr |
|
| 40 |
+ BRK |
|
| 41 |
+ &eval ( -> ) |
|
| 42 |
+ <print-type> |
|
| 43 |
+ ;buf ;dict/quit scmp ?&quit |
|
| 44 |
+ ;dict/yousaid <print-str> |
|
| 60 | 45 |
LIT "" #18 DEO |
| 61 |
- ;buf pstr |
|
| 62 |
- LIT "" #18 DEO #0a18 DEO |
|
| 63 |
- ;buf sclr |
|
| 64 |
- |
|
| 65 |
-BRK |
|
| 66 |
- |
|
| 67 |
-&quit ( buf* -> ) |
|
| 68 |
- |
|
| 69 |
- #010f DEO |
|
| 70 |
- |
|
| 71 |
-BRK |
|
| 72 |
- |
|
| 73 |
-@print-type ( -- ) |
|
| 74 |
- |
|
| 75 |
- [ LIT2 00 -Console/type ] DEI #01 GTH DUP ADD ;types ADD2 LDA2 |
|
| 46 |
+ ;buf <print-str> |
|
| 47 |
+ LIT "" #18 DEO |
|
| 48 |
+ #0a18 DEO |
|
| 49 |
+ ;buf sclr BRK |
|
| 50 |
+ &quit ( buf* -> ) |
|
| 51 |
+ #010f DEO |
|
| 52 |
+ BRK |
|
| 76 | 53 |
|
| 77 |
-!pstr |
|
| 54 |
+@<print-type> ( -- ) |
|
| 55 |
+ [ LIT2 00 -Console/type ] DEI #01 GTH DUP ADD ;types ADD2 LDA2 !<print-str> |
|
| 78 | 56 |
|
| 79 | 57 |
( |
| 80 | 58 |
@|stdlib ) |
| 81 | 59 |
|
| 82 |
-@pstr ( str* -- ) |
|
| 83 |
- |
|
| 84 |
- &while |
|
| 60 |
+@<print-str> ( str* -- ) |
|
| 61 |
+ !& |
|
| 62 |
+ &while ( -- ) |
|
| 85 | 63 |
LDAk #18 DEO |
| 86 |
- INC2 LDAk ?&while |
|
| 87 |
- POP2 |
|
| 88 |
- |
|
| 89 |
-JMP2r |
|
| 90 |
- |
|
| 91 |
-@skey ( key buf -- proc ) OVR #20 LTH ?&eval #00 SWP sput #00 JMP2r &eval POP2 #01 JMP2r |
|
| 92 |
-@sclr ( str* -- ) LDAk ?&w POP2 JMP2r &w STH2k #00 STH2r STA INC2 LDAk ?&w POP2 JMP2r |
|
| 93 |
-@scap ( str* -- end* ) LDAk ?&w JMP2r &w INC2 LDAk ?&w JMP2r |
|
| 94 |
-@sput ( chr str* -- ) scap INC2k #00 ROT ROT STA STA JMP2r |
|
| 95 |
-@scmp ( a* b* -- f ) STH2 &l LDAk LDAkr STHr ANDk #00 EQU ?&e NEQk ?&e POP2 INC2 INC2r !&l &e NIP2 POP2r EQU JMP2r |
|
| 96 |
-@phex ( short* -- ) SWP phex/b &b ( byte -- ) DUP #04 SFT phex/c &c ( char -- ) #0f AND DUP #09 GTH #27 MUL ADD #30 ADD #18 DEO JMP2r |
|
| 64 |
+ INC2 & LDAk ?&while |
|
| 65 |
+ POP2 JMP2r |
|
| 66 |
+ |
|
| 67 |
+@skey ( key buf -- proc ) |
|
| 68 |
+ OVR #20 LTH ?&eval |
|
| 69 |
+ #00 SWP sput #00 JMP2r |
|
| 70 |
+ &eval POP2 #01 JMP2r |
|
| 71 |
+ |
|
| 72 |
+@sclr ( str* -- ) |
|
| 73 |
+ !& |
|
| 74 |
+ &while ( -- ) |
|
| 75 |
+ STH2k #00 STH2r STA |
|
| 76 |
+ INC2 & LDAk ?&while |
|
| 77 |
+ POP2 JMP2r |
|
| 78 |
+ |
|
| 79 |
+@scap ( str* -- end* ) |
|
| 80 |
+ !& |
|
| 81 |
+ &while ( -- ) |
|
| 82 |
+ INC2 & LDAk ?&while |
|
| 83 |
+ JMP2r |
|
| 84 |
+ |
|
| 85 |
+@sput ( chr str* -- ) |
|
| 86 |
+ scap INC2k #00 ROT ROT STA |
|
| 87 |
+ STA |
|
| 88 |
+ JMP2r |
|
| 89 |
+ |
|
| 90 |
+@scmp ( a* b* -- f ) |
|
| 91 |
+ STH2 |
|
| 92 |
+ &loop ( -- ) |
|
| 93 |
+ LDAk LDAkr STHr ANDk #00 EQU ?&e |
|
| 94 |
+ NEQk ?&e |
|
| 95 |
+ POP2 INC2 INC2r !&loop |
|
| 96 |
+ &e NIP2 POP2r EQU JMP2r |
|
| 97 | 97 |
|
| 98 | 98 |
( |
| 99 | 99 |
@|assets ) |
| 100 | 100 |
|
| 101 | 101 |
@types |
| 102 |
- =std-txt |
|
| 103 |
- =arg-txt |
|
| 104 |
- |
|
| 105 |
-@hello-txt "Welcome 20 "to 20 "Uxn! 0a $1 |
|
| 106 |
-@yousaid-txt "You 20 "said: 20 $1 |
|
| 107 |
-@yousent-txt "You 20 "sent: 20 $1 |
|
| 108 |
-@std-txt "(std) $1 |
|
| 109 |
-@arg-txt "(arg) $1 |
|
| 110 |
-@quit-txt "quit $1 |
|
| 111 |
-@argend-txt "(argend) 0a $1 |
|
| 112 |
-@queue-txt "(queue) 0a $1 |
|
| 102 |
+ =dict/std =dict/arg |
|
| 103 |
+ |
|
| 104 |
+@dict ( ) |
|
| 105 |
+ &hello "Welcome 20 "to 20 "Uxn! 0a $1 |
|
| 106 |
+ &yousaid "You 20 "said: 20 $1 |
|
| 107 |
+ &yousent "You 20 "sent: 20 $1 |
|
| 108 |
+ &std "(std) $1 |
|
| 109 |
+ &arg "(arg) $1 |
|
| 110 |
+ &quit "quit $1 |
|
| 111 |
+ &argend "(argend) 0a $1 |
|
| 112 |
+ &queue "(queue) 0a $1 |
|
| 113 | 113 |
|