「IchigoJam初号機」
まだLEDが無い!ピン配置がCPUの仕様そのままで、生々しい感じが特徴。
「BASIC+Z80アセンブラ プログラミング」 by 庄司渉氏
前提知識不要でやさしく使えた、MSX BASIC言語でプログラミングを始め、マシン語を学びコンピューターの本質を知ったあの頃。それはかつてのコンピューターを学ぶ、世界中の王道でした。80年代の熱さが感じられる一冊。現代でもBASICではじめるのは意外とありなのでは?と思って作ったIchigoJamです。
Z80マシン語の仕様とアセンブリ言語が丁寧に解説された後に続く、演習問題がおもしろい。こちら問20でルートを計算せよという問題の解説。Math.sqrt などで簡単に計算できてしまう現代、その中身を探るのも面白い。整数であれば奇数を引いた回数を数えるだけというシンプルなアルゴリズム!
IchigoJam BASICで書けば、こういう感じ。
10 INPUT A 20 B=0 30 A=A-B 40 IF A>0 B=B+2:GOTO30 50 ?B/2
ちゃんとルートの計算できてる!
本入門書のスタイルは、まずはロジックをBASICで確認して、マシン語にするスタイル。
Z80アセンブラ、標準アセンブリ言語とBASIC風表記も併記されていて分かりやすい!
HL, BC はZ80のレジスタ(最も高速な記憶装置)で、CYは引き算結果が溢れた時のフラグ。RAM(一般のメモリ、記憶装置)は M(アドレス) と表記されています。
IchigoJam 1.4、Arm Cortex-M0 のアセンブラasm15でも表記してみます。
R1=0 @LOOP R0=R0-R1 IF MI GOTO @END R1+=2 GOTO @LOOP @END R0=R1>>1 RET
Z80では+1しかできませんが、Armでは+2も可能なのでも更にシンプルに表現可能です。 アセンブルして、動かすと高速ルート計算ロジックのできあがり!
10 POKE#700,0,33,64,26,1,212,2,49,251,231,72,8,112,71 20 ?USR(#700,144) RUN 12
コンピューターのピーク性能を出せるだけでなく、プログラムサイズも14byteとコンパクト!
ラジオ番組「CyberValley, Japan Radio」の放送前に「朝生情報 晴ればれ』 元気シルバー ナツメロとともに 《青空会》」の801回目の放送後の青空日出夫さんに会いました!鯖江産のIchigoJamをプレゼント!サイバーなコラボもできるといいかも!
「87歳・地域FM局パーソナリティーが放送800回:中日新聞Web」
「CyberFriday / サイバーフライデー」
5/27、最終金曜日はサイバーフライデー!今回も前回と同じ、福井市片町LUFFにて開催。
出展無料、発表無料、私は今回、IchigoJam初号機の動体展示にチャレンジ!
未来づくりに興味ある方、ぜひどうぞ!