| ... | ... |
@@ -3,41 +3,30 @@ |
| 3 | 3 |
for multiples of five, print "Buzz" |
| 4 | 4 |
for multiples of both three and five, print "FizzBuzz" ) |
| 5 | 5 |
|
| 6 |
-%MOD { DIVk MUL SUB }
|
|
| 7 |
-%HALT { #01 #0f DEO }
|
|
| 8 |
-%EMIT { #18 DEO }
|
|
| 9 |
-%RTN { JMP2r }
|
|
| 10 |
- |
|
| 11 |
-@program |
|
| 12 |
- |
|
| 13 |
-|0100 ( -> ) |
|
| 6 |
+|0100 ( -> ) @program |
|
| 14 | 7 |
|
| 15 | 8 |
#6400 |
| 16 | 9 |
&loop |
| 17 |
- LITr 00 |
|
| 18 |
- DUP #03 MOD ,&no3 JCN ;fizz-txt ;print-str JSR2 INCr &no3 |
|
| 19 |
- DUP #05 MOD ,&no5 JCN ;buzz-txt ;print-str JSR2 INCr &no5 |
|
| 20 |
- STHr ,&resume JCN |
|
| 21 |
- ( print decimal ) |
|
| 22 |
- DUPk #0a DIV #30 ADD EMIT |
|
| 23 |
- #0a MOD #30 ADD EMIT |
|
| 24 |
- &resume |
|
| 25 |
- ( add linebreak ) #0a EMIT |
|
| 10 |
+ ( dec ) |
|
| 11 |
+ DUPk #0a DIV ,print-num JSR |
|
| 12 |
+ #0a ,mod JSR ,print-num JSR |
|
| 13 |
+ ( space ) |
|
| 14 |
+ #2018 DEO |
|
| 15 |
+ ( text ) |
|
| 16 |
+ DUP #03 ,mod JSR ,&no3 JCN ;s/fizz ,print-str JSR &no3 |
|
| 17 |
+ DUP #05 ,mod JSR ,&no5 JCN ;s/buzz ,print-str JSR &no5 |
|
| 18 |
+ ( linebreak ) #0a18 DEO |
|
| 26 | 19 |
INC GTHk ,&loop JCN |
| 27 | 20 |
POP2 |
| 28 |
- |
|
| 29 |
- HALT |
|
| 21 |
+ ( halt ) |
|
| 22 |
+ #010f DEO |
|
| 30 | 23 |
|
| 31 | 24 |
BRK |
| 32 | 25 |
|
| 33 |
-@print-str ( addr* -- ) |
|
| 34 |
- |
|
| 35 |
- &loop |
|
| 36 |
- LDAk EMIT |
|
| 37 |
- INC2 LDAk ,&loop JCN |
|
| 38 |
- POP2 |
|
| 39 |
- |
|
| 40 |
-RTN |
|
| 26 |
+@mod ( a b -- c ) DIVk MUL SUB JMP2r |
|
| 27 |
+@print-num ( num -- ) #30 ADD #18 DEO JMP2r |
|
| 28 |
+@print-str ( addr* -- ) &loop LDAk #18 DEO INC2 LDAk ,&loop JCN POP2 JMP2r |
|
| 41 | 29 |
|
| 42 |
-@fizz-txt "Fizz $1 |
|
| 43 |
-@buzz-txt "Buzz $1 |
|
| 30 |
+@s |
|
| 31 |
+ &fizz "Fizz $1 |
|
| 32 |
+ &buzz "Buzz $1 |