Kの開発メモ #0005
- (by K, 2013.05.29)
- ここは川合の開発の進捗などをレポートするところです。
2013.05.31 Fri
2013.06.03 Mon
- 今日はASKAでも世界最小helloとか世界最小charsを記述できるようにツールを強化した。
#include "osecpu_ask.h"
%include "osecpu_asm.h"
OSECPU_HEADER();
junkApi_putConstString('hello, world!');
#include "osecpu_ask.h"
%include "osecpu_asm.h"
OSECPU_HEADER();
for (R00 = 0x20; R00 != 0x7f; R00++) {
junkApi_putcharRxx(R00);
}
2013.06.04 Tue
- fillRectとfillOvalを書いてみた。サンプルとして日本の国旗を書いてみたら、21バイトで書けた。おお、なかなか小さい!
#include "osecpu_ask.h"
%include "osecpu_asm.h"
OSECPU_HEADER();
junkApi_fillRect(4, 640, 480, 0, 0, 7);
junkApi_fillOval(4, 300, 300, 170, 90, 1);

#include "osecpu_ask.h"
%include "osecpu_asm.h"
OSECPU_HEADER();
for (R00 = 0; R00 != 128; R00++) {
R01 = 144 - R00;
R01 *= 2;
R02 = (320 - 144) + R00;
R03 = (240 - 144) + R00;
R04 = R00 * 0x020201;
junkApi_fillOval(0, R01, R01, R02, R03, R04);
}

2013.06.05 Wed
- いろいろアプリを作っていて、これってもしかしてMS-DOSだともっと小さくなるのかなって作り比べたくなる時があったんだけど、いつもOSECPUが負けることは全くなくて、ついに作り比べようという気すら起きなくなった。
- 近いうちにやらなければいけないと思っていること:
- int32s i:R00; みたいな構文のサポート
- drawStringのサポート
- JIT on JIT
- intro
- 各種セキュリティ機能
- ちょっと最近のアプリをまとめてみるか・・・
- *が付いているのはまあまあマシなもの
app0025 - 18バイト - exitのテスト
app0026 - 9バイト - 9バイトのchars
app0027 - 16バイト - 16バイトの hello, world!
app0028 - 17バイト - 17バイトの hello, world!
app0029 - 8バイト - 8バイトのchars
app0030 - 15バイト - 15バイトの hello, world!
app0031 - 100バイト - 16進数の羅列のテキストファイルをバイナリファイルに変換
app0032 - 82バイト - app0031のエンジン部分のバイト数を計算
app0033 - - フロントエンドコードの研究用に書いただけ
app0034 - 9バイト - 6.5バイトで5バイト出力できることを確認
* app0035 - 15バイト - 15バイトのhelloがASKAで書けることを確認
* app0036 - 8バイト - 8バイトのcharsがASKAで書けることを確認
* app0037 - 33バイト - アセンブラ短歌に挑戦、難なく22BPTを達成
* app0038 - 21バイト - 日本の国旗
* app0039 - 31バイト - メタリックなボール
* app0040 - 122バイト - OS自作入門の4日目の画面、100バイト以上になったのは少しくやしい
app0041 - 130バイト - app0040を別の書き方で書き直してみたけど小さくならず
- putConstStringの中で、\n,\r,\tを使えるようにしてみた。
2013.06.06 Thu
- 現在LivaさんにASKAはちょっと難しすぎるのでは?と指摘され中・・・。
- やっとASKAにint32s構文を追加した!これでプログラムが書きやすくなる。
#include "osecpu_ask.h"
int32s xsiz:R00, ysiz:R01, x0:R02, y0:R03, col:R04, i:R05;
for (i = 0; i != 128; i++) {
xsiz = (144 - i) * 2;
ysiz = xsiz;
x0 = (320 - 144) + i;
y0 = (240 - 144) + i;
col = i * 0x020201;
junkApi_fillOval(0, xsiz, ysiz, x0, y0, col);
}
- 今日の成果:
2013.06.07 Fri
- 忘れそうなのでメモ(intro):
- if文も説明しなきゃいけないな
- sleepとinkeyも必要だな
- exitも一応説明しておくべきだな
- putConstStringとputcharRxxも
2013.06.09 Sun
- osecpu.cを改良して描画速度を改善した。月曜の夜にリリース予定。
2013.06.10 Mon
- app0020までソースを確認。・・・実はver0.46ではリリースを急いだせいで、多くのサンプルアプリのソースがmake出来なくなっておりました。
- 一応全部確認完了。
- 今日の成果:
2013.06.12 Wed
- うーん、なんかバグっている・・・。
- (数時間経過)
- なるほど、どういうバグなのか分かったぞ!ラベル番号が狂ってしまうバグだな。
- (1時間経過)
- とりあえず直った!
2013.06.13 Thu
- 文字列定数の処理を一般化しています。
- これができると、drawStringのサポートに一歩近づきます。
- ver.0.47までは、putStringにしか文字列定数を指定できませんでした。
- (数時間経過)
- とりあえず一般化はできた気がします。
2013.06.14 Fri
- drawStringのためのフォントデータを準備したところ(「はりぼてOS」で使ったものを流用)
- [速報] Livaさんがグラフィックス部分のMacOSへの移植に成功した模様。ver.0.48かver.0.49でマージ予定です。
2013.06.18 Tue
2013.06.19 Wed
2013.06.21 Fri
2013.06.23 Sun
- Livaさんがgithub上でOSECPUを公開してくれました。どうもありがとうございます!
2013.06.24 Mon
- 先日より、セキュリティキャンプの学生2人がOSECPUの開発に加わってくれています。とても頼もしいです。
- ver.0.50に向けて開発中・・・
- MacOS向けのソースの修正(thanks: Livaさん)
- do構文のサポート(thanks: Irisさん)
- junkApi_mallocの追加
2013.06.27 Thu
2013.06.28 Fri
- 近況:
- IrisさんがどんどんOSECPU-ASKAをマスターして、アプリを作ってくれています。サイズが小さくて楽しいです。
- LivaさんもOSECPUでとてもおもしろいことをやってくれたのですが、公開していいのかどうかわからないので、今は内緒です。
- OSECPU向けに高級言語を作っている人もいます。これも楽しみです!・・・これは公開されているから、もっと詳しく話してもいいのかも??
- 06/21あたりから急ピッチでドキュメントが増えていますが、これはセキュリティキャンプの事前学習が始まって、質問を多数もらっているせいです。
2013.07.03 Wed
2013.07.04 Thu
- 今日の成果:
- http://osecpu.osask.jp/download/osecpu055d.zip
- このアーカイブにはext_tols/がないので、osecpu047a.zipからコピーしてください。
- osecpuのラベル命令のバグを修正しました。
- osectolsのdb2binのラベル最適化のバグを修正しました。
- osectolsのappackがFF-02-02に対応しました。
- osectolsのASKAのtable_a[]にDDBEを追加。
- ASKAが「 SInt32 i:R00, j:R01; j = 2 * i - 1; 」をうまくアセンブルできないバグを修正しました。
2013.07.05 Fri
- OSECPUの開発フェーズでは、実は「起承転結」を意識している。
- 最初は「起」。サイズにこだわり始めたころが「承」。
- そしてjitcを入れた今が「転」。
2013.07.07 Sun
- 開発が落ち着いたら、トップページのリリース版もアップデートしたい。
2013.07.08 Mon
- セキュリティエラー時に、デバッグモードを付けてみようと思って、実装しています。
2013.07.09 Tue
- APIにセキュリティチェックをつけました。
- これで変なパラメータを渡してしまったとしても、異常終了することはなく、エラーを起こした行番号や、その時点でのレジスタ値を確認できるようになりました。
- PLMEMとPSMEM命令を追加しました。
こめんと欄