福野泰介の一日一創 - create every day

マシン語でIchigoDotエミュレーター on IchigoJam - MA11締め切り!

2015/10/19
#IchigoJam #IchigoDot 

いよいよ迎えた日本最大のプログラミングコンテスト、MA11締め切り。 いくつかの作品を応募。 今年のハードウェアはAmazonでの販売も始まった、オープンソースハードウェアIchigoDot! 応募記念に、IchigoJamで動くIchigoDotの要、8x8のマトリクス表示をエミュレートするマシン語(C言語でつくってマシン語を生成)で、プログラムを作成。

IchigoDotエミュレーター on IchigoJam (※IchigoJam ver 1.1以降用)

1 'IchigoDot Emu 100 POKE#700,#F0,#B5,#08,#1C,#85,#B0,#80,#30,#00,#22,#01,#24,#17,#E0,#13,#4D 110 POKE#710,#C6,#18,#75,#19,#5F,#10,#07,#26,#01,#95,#F5,#1B,#27,#1C,#AF,#40 120 POKE#720,#03,#9D,#2D,#78,#02,#97,#2F,#40,#7F,#42,#01,#9E,#FF,#0F,#01,#33 130 POKE#730,#37,#70,#10,#2B,#EB,#D1,#01,#32,#20,#30,#10,#2A,#08,#D0,#16,#1C 140 POKE#740,#A6,#43,#80,#27,#8E,#19,#3F,#01,#F7,#19,#00,#23,#03,#97,#DE,#E7 150 POKE#750,#00,#20,#05,#B0,#F0,#BC,#02,#BC,#08,#47,#C0,#46,#08,#09,#00,#00 200 N=0 210 FOR I=0 TO 7:[I]=PEEK((249+N)*8+I):NEXT:A=USR(#700,0) 220 N=1-N:WAIT30:GOTO210

IchigoJam BASICプログラム
配列の0〜7の8bitを画面中央に表示するマシン語をA=USR(#700,0)で呼び出すことで高速描画!
IchigoDot用のゲームを考えるために使ってみてください。
100行から150行のマシン語は、CLPでパターンをクリアするまで残るので、LRUNで別プログラム呼び出しなどにすることで、メモリに余裕を持ったプログラミングも可能です!

#include <stdint.h> int16_t usr_calc(int16_t val, char* mem) { int i, j; for (i = 0; i < 16; i++) { for (j = 0; j < 16; j++) { mem[0x900 + (j + 8) + (i + 4) * 32] = (mem[0x800 + ((i >> 1) << 1)] & (1 << (7 - (j >> 1)))) > 0 } } return n; }

IchigoJam_bin2pokeでマシン語生成用、C言語で作成した、BASICの配列(#800以降、2byteずつ)の先頭8コを画面表示用メモリ(#900)から画面中央にオフセットした位置にキャラクターコード0と1を使って表示するプログラム。 (参考、IchigoJam ver 1.1βのメモリマップ

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / high-res profile image