------------------------------------------------------------ Z80用 アセンブラ「ピコ アセンブラ」 + Z80 シミュレータ「ピコ Z80 シミュレータ」 ---------- --------- --------- / / / / / / / / / / / -------- / / / / / / / / / / / / --------- --------- -------- Pico Assembler Pico Z80 Simulator V e r s i o n . 1 . 0 5 Copyright (C) 2009 ゆちボンソフト Programed by ゆちボン(あるる) ------------------------------------------------------------ ・はじめに このたびは Z80用アセンブラ「ピコアセンブラ」をダウンロード していただきありがとうございます。 本取扱説明書は「MS ゴシック」などのフォントだと見やすくなります。 Z80用のアセンブラ + シミュレータです。 アセンブリは非公開命令にも対応しております。 注意:シミュレートは不完全です、未定義命令、割り込み関連にはほとんど対応しておりません。    今後のバージョンアップで対応したいと思います。 うまくアセンブル+シミュレートできない場合はご連絡をお願いします。 ・アセンブラの使い方 ファイルをD&Dでアセンブルできます。 コマンドプロンプトから「pico [ファイル名]」でもOKです。 そのまま実行したらファイル選択で選ぶことも可能です アセンブル後は「[元のファイル名].code」に書き出します。 ・シミュレータの使い方 ※おそらくシミュレータにはまだ演算関連のバグが潜んでいます。 フラグ変化がおかしいなどございましたら連絡をお願いします。 右側にあるLOADボタンでZ80コードを読み込みます。 -> 注意:最初に開始アドレス(開始Adr)を指定しておいてください。 [ Z80 RUN > ]ボタンを押すと実行します。 [ Z80 STOP || ]ボタンで一時停止します。(RUNボタンで再開) [ Z80 HALT ■ ]ボタンで停止します。 [ Z80 LINE |> ]ボタンで1行実行します。 @ 実行スピードについて 実行スピードを上げることができます。 じっくり確認してプログラムを実行したい場合は1にして ぱぱっと動かしたい場合は5にしてください。 @ 実行モードについて 実行モードは IOモード および VRAMモードが存在します。 VRAMモードは完全におまけです^^; -> Z80でマシンを組んでみたいという願望から勝手にできちゃいました * IOモード I/Oポートは通常通りにシミュレートします。 * 仮想Z80PCモード( VRAMモード ) I/Oポートを16bitでアクセスできるモードにします。 Cレジスタで指定するところをBCレジスタでアクセスすることができます -> OUT A,(p)などの直接指定の場合は   Z80の仕様上(むしろ回路接続上?)、上位8bitが直接指定,下位8bitはAレジスタになります メモリマップについては次の項目をご覧ください ・シミュレータスペック 仮想Z80PCモードもあわせて書いております。 CPU Z80 (動作クロック数・・・PC、実行スピードによって違う^^;) メモリ メインメモリ 64KB + VRAM 48KB + 未使用/オプション部分 16KB I/Oポートの中のメモリマップ - VRAMモード時 0x0000 〜 0xBF00 - VRAM 0xBF01 〜 0xBFFF - 未使用 0xC000 〜 0xC0FF - キーボードの状態 0xC100 - 画面更新スイッチ (0の場合は描画する) 0xC110 - 掛ける数 16bit 0xC112 - 掛けられる数 16bit 0xC114 - 掛け算の結果(下位16bit) 0xC116 - 掛け算の結果(上位16bit) 0xC118 - 割る数 16bit 0xC11A - 割られる数 16bit 0xC11C - 割り算の結果 16bit 0xC11E - 割り算の結果(余り) 16bit 0xC120 - 座標1X 0xC121 - 座標1Y 0xC122 - 座標2X 0xC123 - 座標2Y 0xC124 - 座標3X 0xC125 - 座標3Y 0xC126 - 図形の色 0xC127 - 描画図形 0=なし / 1=線 / 2=箱 / 3=円 / 4=三角形 / 5=枠のみ箱 / 6=枠のみ円 / 7=枠のみ三角形 / 8=座標1から座標2へコピー / 9=文字列描画 -> 8の場合は座標3の大きさでコピー -> 9の場合は座標1に描画、文字色は図形の色で決定 0xC128 〜 0xC12F - 未定義 0xC130 〜 0xC2FF - 表示用文字列バッファ 0xC300 〜 0xEFFF - 未定義 (予約部分) 0xF000 〜 0xFFFF - 未使用 掛け算など、値を求めるものは掛ける数を代入した瞬間に値が返ってきます。 未定義の部分は今後バージョンアップした時に定義するかもしれません。 未使用の部分は自由にメモリとしてお使い下さい。 VRAM 256*192固定 8色、パレット指定なし(今後変わります) 描画コマンドあり 線、箱、円、三角形、コピー、文字表示 ・プログラム例 ORG $100 ; 開始 LD A,255 ; A=255 LD B,10H ; B=10H (16) ADD A,2 ; A+=2 END ; 終了 なお、ORG,ENDをつけ忘れてもアセンブルできますが他のZ80アセンブラ同様 なる別つけることをお勧めします。(開始アドレスが強制的に$00になるため) ・命令一覧 (一部) ここには一部の命令について解説しています -> 他のZ80アセンブラと違うかもしれない部分について あとマクロも解説しています。 そのほかの命令などはネットにあるZ80の資料などをご覧ください。 通常命令は他のアセンブラと違うかもしれないものを記述しております。 @通常命令 SUB r or n 引き算命令。Aレジスタから別のレジスタ、数値を引く 一部アセンブラでは SUB A,〜〜 と書くみたいですがA,は必要ありません。 ほかにも、Or,And,Xorなどがありますがその命令もA,は必要ありません。 @プリプロセッサ .OUT '〜〜〜' アセンブル後のファイルの出力先指定。 必ず ' で囲んでください。 .INC '〜〜〜' 指定したファイルをバイナリ配置します。 必ず ' で囲んでください @マクロ命令 DB n,'String',… データ格納命令(擬似命令)。指定したデータを配置 文字列を格納する場合は ' で囲みます。 EQU(=) 特殊 EQU命令は特殊な命令です。マクロの定義をします。 例: TEST EQU 100 これはコードに TEST という識別子があれば 100 に置き換えるという意味です。 いくつも定義することができますが、ネストは不可です(工夫をすればできないことはありませんが) ダメな例: TEST_A = 100 ; =でも代用可能。しかしスペースを前後に入れないと認識しません TEST_B EQU 20 TEST_C EQU TEST_A ; このTEST_Aは100に置き換わりません。 LD A,TEST_C ・シミュレートできないもの 1.割り込み関係の命令 2.未定義命令のほとんど ・使い道 1.CPUの仕組みの勉強などに! 2.アセンブラの勉強に! 3.Z80というCPUを懐かしむために! 4.急用でZ80を使わなければならないとき! 5.遊びたいとき! 6.暇つぶししたいとき! にどうぞ。効果覿面・・・とは言えませんがまぁそこそこ使えるでしょう。 ・そのほか注意してほしいこと 再配布は厳禁です。 ・バージョン情報 Ver.1.05 : バグ修正 @アセンブラ 正しいコードを書いても不明なコードを吐き出すバグを修正。 LD A,(BC)などがまともなコードをはかないバグを修正 Ver.1.04 : バグ修正 @アセンブラ 一部命令がアセンブルできないバグを修正。 EQU / ラベル最大定義可能数を1024に増やした Ver.1.03 : バグ修正、機能追加 @アセンブラ 一部命令が小文字でアセンブルできないバグを修正 EX コードがはけなかったバグを修正。 EX AF,AF'がエラーになるバグを修正 DB 〜〜 文字列を書いたら 00H をはきまくるバグを修正。 DBの出力がおかしくなるバグを修正 .OUT 出力先指定命令追加。 .INC 取り込み命令追加。 注意:ソースコード分割用ではありません。 @シミュレータ 一部変な挙動を修正 Ver.1.02 : 機能追加 @シミュレータ 実行モード、実行スピードを分けるように 一命令実行機能をつけた 逆アセンブル機能をつけた Ver.1.01 : バグ修正 @アセンブラ ADD IX,IX / ADD IY,IY 以上2つが正常にアセンブルできないバグを修正。 @シミュレータ ADD IX,IX / ADD IY,IY 以上2つが実行できないバグを修正。 ADD A,A 命令でフラグが変わらない時があるバグを修正 @サンプル mul.z80にソースコード上のバグがあったので修正 Ver.1.00 : 初期バージョン コンテスト公開バージョン 2009/08/01 Ver.0.01 : 開発開始 2009/05/01開始 ・開発者 / 配布元 プログラム ゆちボン(あるる) --------- ゆちボンのホームページ http://happytown.orahoo.com/yutibonsoft_hp/