FizzBuzz for KANRININ/3
STATUS: 故障中x2
FizzBuzz問題流行ってますね〜
もともとは、プログラマを雇用するときに、ちょっとでもプログラム書けるのかをテストするのに使ったとい問題。発端は→どうしてプログラマに・・・プログラムが書けないのか?。
ルールは、『1から100までの数を表示する。ただし、3で割り切れるときは「Fizz」、5で割り切れる場合は「Buzz」、両方で割り切れる場合は「FizzBuzz」と表示する』というもの。
「1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, Fizz Buzz, 16・・・」という感じになればOK。
詳しくは、WikiPediaみてね。→http://ja.wikipedia.org/wiki/Fizz_Buzz
で、これを解くのが流行ってるのは、いかに短い行数で実現するかとか綺麗にかけるとか、珍しい言語で書けるかとかってみんなで遊んでいるから。
昨晩はbig-brosさんが、S-OS"SWORD"上で動くZ80のコードを書いてましたよ。→せっかくだから俺もZ80版を書いてみるぜ!
S-OSにZ80とはナツカシス
じゃあ僕は、KANRININ/3用を書いてみる〜
KANRININ/3って何?って?
1ウン年前に作ったX1用オリジナルOSです(というかモニタ? PC88用も作ったょ)。
ニッチさでなら負けないぞ!(ぉ
; FizzBuzz for KANRININ/3 X1 ; KANRININ/3 SYSTEM CALLS (ダイジェスト) [@CLS] EQU 00042H ; ガメンクリア (A=0:テキスト 1:グラフィック) [@CHPUT] EQU 00030H ; 1モジヒョウジ (A=アスキーコード) [@MSG] EQU 00036H ; DWカラノモジレツヒョウジ [@MUL_A] EQU 000F&H ; HL=HL*A [@DEV_A] EQU 000F9H ; HL=HL/A [@COMP] EQU 00108H ; CP DE,HL [@HL_DEC] EQU 00144H ; MEM[DE-]=STR$(HL) [@S_WAIT] EQU 001ADH ; キーガ オサレルマデマツ OFFSET 0C000H-02000H ; バイナリハ 0C000H ニセイセイサレル ORG 02000H ; ジッコウバンチハ 02000H START: ; ガメンショキカ [@CLS] ; ヘンスウショキカ LD HL,1 ; ショキチハ 1 LD B,100 ; 100カイ ループ ; ループ (100カイ) LOOP: LD D,H LD E,L ; HLガ3デワリキレルカチェック LD A,3 PUSH HL CALL [@DEV_A] ; HL=HL/A CALL [@MIL_A] ; HL=HL*A CALL [@COMP] ; (DEトヒカク , HLガモトニモドッチレバワリキレタ) POP HL JP Z,PT_FIZZ ; ワリキレルナラ PT_FIZZ ヘ ; HLガ5デワリキレルカチェック LD A,5 PUSH HL CALL [@DEV_A] CALL [@MIL_A] CALL [@COMP] POP HL JP Z,PT_BUZZ ; ワリキレルナラ PT_BUZZ ヘ ; 10シンスウ スウチ ヒョウジ LD DE,MSG_STR CALL [@HL_DEC] ; HLノアタイヲ 10シンスウニシテ DEカラノメモリニカクノウ LD DE,MSG_STR CALL [@MSG] JP PT_TAIL PT_FIZZ: ; FIZZ ヒョウジ LD DE,MSG_FIZZ CALL [@MSG] LD A,5 PUSH HL CALL [@DEV_A] CALL [@MIL_A] CALL [@COMP] ; DEガ5デワリキレルカチェック POP HL JP NZ,PT_TAIL PT_BUZZ: ; BUZZ ヒョウジ LD DE,MSG_BUZZ CALL [@MSG] PT_TAIL: LD A,"," CALL [@CHPUT] INC HL DJNZ LOOP ; シュウリョウ CALL [@S_WAIT] ; キーニュウリョクマチ JP START ; モジレツ/WORK MSG_FIZZ: DB "Fizz",0 MSG_BUZZ: DB "Buzz",0 MSG_STR: DS 10 ; 10シンスウヘンカンヨウバッファ (10Byte)
● 実行方法(ぉ
【必要環境】
シャープX1シリーズ(要2D ディスクドライブ) ※
OS: S-OS"SWORD" X1用
アセンブラ: REDA
※ エミュレーターでも可 (「X Millenium」など)
【アセンブル方法】
S-OS上のREDAで、上記ソースを入力。
Aコマンドでコンパイル
Qコマンドで、モニターに戻って以下のコマンドでセーブ
S COMMAND.COM:C000:CFFF:2000
【KANRININ/3の入手】
以下のページでダウンロードできる「S-OS EMULATOR for Kanrinin/3 X1
」のディスクイメージ含まれています。
S-OS EMULATOR for Kanrinin/3 X1
【KANRININ/3へのインストール】
「アセンブル方法」で生成した、「COMMAND.COM」ファイルをKANRININ/3のディスクに(上書き)コピーしてください。
【起動方法】
KANRININ/3のディスクをFDD0に挿入しIPLリセットしてください。