CASL II
web 上で CASL II を simulate する site を見つけてしまったのでついカッとなっていろいろ書いてしまった。最近 code 書きたい欲がたまってたからちょっとやってみるかで 2 時間ほど使ってしまった。
javascript で実装してるのかと思いきやどうも host 側で実行した結果を返しているみたい。とりあえず階乗を計算する code を書いてみた。なんというか…、 bad knowhow ぽい変な technique がいっぱいあるね…。
MAIN START LAD GR0,2 CALL FACT RET ; factorial of n ; GR0 = GR0! ; initialize FACT LD GR1,GR0 LAD GR0,1 ; multiply FNEXT CALL MUL SUBA GR1,=1 CPA GR1,=1 JZE FEXIT JUMP FNEXT FEXIT RET ; multiplication ; GR0 = GR0 * GR1 ; save the values of the registers MUL PUSH 0,GR1 ; initialize XOR GR2,GR2 ; shift and add MNEXT SRL GR1,1 JOV ADDDGT JZE MEXIT JUMP NXTDGT ADDDGT ADDA GR2,GR0 NXTDGT SLL GR0,1 JNZ MNEXT ; restore the values of registers MEXIT LD GR0,GR2 POP GR1 RET END