超ミニBASIC for SH7046->ARM ver 0.11  Copyright (C)2005 A.Hiramatsu (05/01/08)  Modified 2005 Y.Sakamoto (05/11/14) ● はじめに  「超ミニBASIC for SH7046->ARM」(以下、本プログラム)は、 平松 明夫さんが作成した「超ミニBASIC for SH7046」BASICインタプリタを、私Y.Sakamoto(坂本 康博)がARMマイコンで動作するように改造して移植したものです。 ● 変更点  ARMマイコンで動作するように移植しました。ハードウェアに関係する一部の命令は使用出来ません。  オリジナルの「超ミニBASIC for SH7046」はA.Hiramatsu (平松 明夫さん)のホームページ  http://www.nana.or.jp/~hiramats/index.html  から無料で入手可能です。 ● 著作権について  原作の「超ミニBASIC for SH7046」に準じます。  なお、ARM用の除算部分はGNU-GCCの物を使用しました。 ● 配布条件  原作の「超ミニBASIC for SH7046」に準じます。 ● 免責 私 Y.Sakamoto(坂本 康博)は、本プログラムを使用したことにより発生した、いかなる損害についても一切責任を負いません。本プログラムを使用する方は各自の責任において使用してください。  「超ミニBASIC for SH7046」も併せて御覧下さい。 ● 連絡先  本プログラムについてのお問い合わせは電子メールにてお問い合わせください。  電子メールは私のホームページに記載しております。  坂本 康博(FREE WING)のホームページ  http://www.neko.ne.jp/~freewing/ ● ファイル内容 readme_arm.txt ... このファイル mk.bat ... アセンブル用バッチファイル arm_sh.inc ... マクロ定義 arm_uart.inc ... UART定義 test.ld ... リンカ指定 cmb7046a.s ... ARM版の"超ミニBASIC for SH7046->ARM"のソースファイル divsi3.s ... ARM用の除算部分(GNU-GCCのコードを使用しています。必要に応じて組み込んでください) ● 必要なもの  ARMマイコン基板(私はOLIMEXのOKI-H5003(Oki ML67Q5003)で動作確認をしました)  お持ちのARMマイコン基板に合わせてUART通信部分や初期化部分を適当に書き換えてください。  割り込み等は一切使いません。  使用資源はUARTとRAM/ROMだけです。  原則としてOki以外のARMマイコンでもUARTのアドレス定義を変えるだけで動きます。 ● 改版履歴 2005/11/14 ... ARMに移植完了 ● 使い方  「超ミニBASIC for SH7046」を御覧下さい。  なお、ARM移植版では内蔵I/Oのレジスタアドレス定義をしていませんので、必要に応じてソースリストを編集してください。  USR関数等も無効にしているので使えません。詳しくはソースリストを御覧下さい。 ● 謝辞  ARMマイコンでBASICが動いたら面白そうだとの発想から、以前より目を付けていた平松さんの「超ミニBASIC」のSH版を移植してみました。  移植を通じてSHとARMのアセンブリ言語の違いや、それぞれの設計思想に触れる事が出来て大変勉強になりました。  このようなキッカケの元になった「超ミニBASIC」を作られた平松さんにこの場をお借りしてお礼を申し上げます。 ● ベンチマーク  こちらのページのベンチマークをしました。  http://www.nana.or.jp/~hiramats/h8/cmb/cmbsh.html#benchi  ML67Q5003の内蔵RAMで動作させた結果です。  内蔵RAMのアクセスにはRead/Write共に3cycle掛かります。  Cache-ONの時はヒット時 1cycleです。  計算の答えは21660537でした。(PC-8801のN88-BASICでも同じ値なのでARM版もキチンと動いていると言えます)  60MHz,Cache-OFF :23秒  60MHz,Cache-ON : 9秒  30MHz,Cache-OFF :46秒  30MHz,Cache-ON :17秒  単純にクロック比でH8/3052に若干負けています。orz  ※SHからの単純移植なので命令の連携にARMでは冗長な所がかなりあります。(CMP+BRANCHの所とか)