* Kの開発メモ #0005 -(by [[K]], 2013.05.29) -ここは川合の開発の進捗などをレポートするところです。 ** 2013.05.31 Fri -ちょっとバグってたので修正中。 -今日の成果: --http://osecpu.osask.jp/download/osecpu044a.zip ** 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); http://osecpu.osask.jp/download/app0038.png -ついでにこんなのも書いた。34バイト。 #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); } http://osecpu.osask.jp/download/app0039.jpg ** 2013.06.05 Wed -fillRectを使って http://hrb.osask.jp/figures.html の4日目の画面を作ってみた。122バイトだった。もしOSECPUなPCがあったとしたら、これはブートセクタに余裕で収まるサイズだ・・・。 -いろいろアプリを作っていて、これってもしかして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を使えるようにしてみた。 -今日の成果: --http://osecpu.osask.jp/download/osecpu045a.zip ** 2013.06.06 Thu -現在LivaさんにASKAはちょっと難しすぎるのでは?と指摘され中・・・。 --ということで苦し紛れに[[page0034]]の[Q0005]を書いた。 -やっと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); } -今日の成果: --http://osecpu.osask.jp/download/osecpu046a.zip --今回からMinGWのcc1.exeもバンドルしたのでアーカイブはかなり巨大です。 ** 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出来なくなっておりました。 -一応全部確認完了。 -今日の成果: --http://osecpu.osask.jp/download/osecpu047a.zip ** 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 -現在drawStringを実装中・・・できた! -今日の成果: --http://osecpu.osask.jp/download/osecpu048d.zip --このアーカイブにはext_tols/がないので、osecpu047a.zipからコピーしてください。 ** 2013.06.19 Wed -内部コードを整理中・・・ ** 2013.06.21 Fri -乱数のseedを提供するAPIを準備中 -今日の成果: --http://osecpu.osask.jp/download/osecpu049d.zip --このアーカイブにはext_tols/がないので、osecpu047a.zipからコピーしてください。 ** 2013.06.23 Sun -Livaさんがgithub上でOSECPUを公開してくれました。どうもありがとうございます! --https://github.com/liva/osecpu ** 2013.06.24 Mon -先日より、セキュリティキャンプの学生2人がOSECPUの開発に加わってくれています。とても頼もしいです。 -ver.0.50に向けて開発中・・・ --MacOS向けのソースの修正(thanks: [[Liva]]さん) --do構文のサポート(thanks: Irisさん) --junkApi_mallocの追加 -今日の成果: --http://osecpu.osask.jp/download/osecpu050d.zip --このアーカイブにはext_tols/がないので、osecpu047a.zipからコピーしてください。 ** 2013.06.27 Thu -昨日の成果: --http://osecpu.osask.jp/download/osecpu052d.zip --このアーカイブにはext_tols/がないので、osecpu047a.zipからコピーしてください。 --Irisさんが見つけてくれたバグを修正しています。 ** 2013.06.28 Fri -近況: --IrisさんがどんどんOSECPU-ASKAをマスターして、アプリを作ってくれています。サイズが小さくて楽しいです。 --LivaさんもOSECPUでとてもおもしろいことをやってくれたのですが、公開していいのかどうかわからないので、今は内緒です。 --OSECPU向けに高級言語を作っている人もいます。これも楽しみです!・・・これは公開されているから、もっと詳しく話してもいいのかも?? --06/21あたりから急ピッチでドキュメントが増えていますが、これはセキュリティキャンプの事前学習が始まって、質問を多数もらっているせいです。 -今日の成果: --http://osecpu.osask.jp/download/osecpu053d.zip --このアーカイブにはext_tols/がないので、osecpu047a.zipからコピーしてください。 --drawCharを追加しました。 ** 2013.07.03 Wed -昨日の成果: --http://osecpu.osask.jp/download/osecpu054d.zip --このアーカイブにはext_tols/がないので、osecpu047a.zipからコピーしてください。 --junkApi_mallocのフロントエンドコードを改変しました。 --junkApi_randの引数を変更しました。 ** 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; 」をうまくアセンブルできないバグを修正しました。 ---→ stringToElements()のバグ ** 2013.07.05 Fri -OSECPUの開発フェーズでは、実は「起承転結」を意識している。 --最初は「起」。サイズにこだわり始めたころが「承」。 --そしてjitcを入れた今が「転」。 -今日の成果: --http://osecpu.osask.jp/download/osecpu056d.zip --このアーカイブにはext_tols/がないので、osecpu047a.zipからコピーしてください。 --junkApi_jitc2を追加しました。 --http://osecpu.osask.jp/download/osecpu057d.zip --このアーカイブにはext_tols/がないので、osecpu047a.zipからコピーしてください。 --osectolsのappackのfor文に関するバグを修正しました(thanks: Irisさん)。 --http://osecpu.osask.jp/download/osecpu058d.zip --このアーカイブにはext_tols/がないので、osecpu047a.zipからコピーしてください。 --セキュリティチェックをそこそこやるようになりました。 ** 2013.07.07 Sun -開発が落ち着いたら、トップページのリリース版もアップデートしたい。 ** 2013.07.08 Mon -セキュリティエラー時に、デバッグモードを付けてみようと思って、実装しています。 --今夜リリース予定です。 -今日の成果: --http://osecpu.osask.jp/download/osecpu059d.zip --このアーカイブにはext_tols/がないので、osecpu047a.zipからコピーしてください。 --簡易デバッグ支援機能の追加とバグフィクスをしました。 ** 2013.07.09 Tue -今日の成果: --http://osecpu.osask.jp/download/osecpu060d.zip --このアーカイブにはext_tols/がないので、osecpu047a.zipからコピーしてください。 --APIにセキュリティチェックをつけました。 ---これで変なパラメータを渡してしまったとしても、異常終了することはなく、エラーを起こした行番号や、その時点でのレジスタ値を確認できるようになりました。 --PLMEMとPSMEM命令を追加しました。 ** 2013.07.12 Fri -今日の成果: --http://osecpu.osask.jp/download/osecpu061d.zip --このアーカイブにはext_tols/がないので、osecpu047a.zipからコピーしてください。 --標準入力を取れるようにしました。 --ハンドルを扱えるようにしました。 ** 2013.07.22 Mon -なんかここに書くのは久しぶりだなあ。 -標準出力をバイナリモードにしたくなってきた。そういう設定APIがほしい。 --API番号14,1(stdout),x,y --x = 3:mode-setting --y = 0:text-mode, 1:bin-UInt8, 2:bin-UInt16-BE, 3:bin-UInt16-LE,... 5 8E 3 1 : 2.5バイト ** 2013.07.23 Tue -今日の成果: --http://osecpu.osask.jp/download/osecpu062d.zip --このアーカイブにはext_tols/がないので、osecpu047a.zipからコピーしてください。 --セキュリティ機能を強化しようとしたけど未完成です。 --printfの%d的なAPIをつけました。 ** 2013.07.24 Tue -今日の成果: --http://osecpu.osask.jp/download/osecpu063d.zip --このアーカイブにはext_tols/がないので、osecpu047a.zipからコピーしてください。 --バグフィクスです。app0031が動くようになりました。 ** 2013.07.26 Fri -takeutch-kemecoさんが、OSECPUのLinux用ドライバを用意してくれたようです。 --https://gist.github.com/takeutch-kemeco/6078703 --これは是非マージしよう! ** 2013.07.29 Mon -OSECPUのインストールサイズを節約するために、syslib.oseに簡単なファイル圧縮をかけることにしました。 -50KB程度だったインストールサイズが、24KB程度になりました。半減ですね! -takeutch-kemecoさんの、OSECPUのLinux用ドライバもマージしました。 -今日の成果: --(準備中) --http://osecpu.osask.jp/download/osecpu064a.zip --インストールサイズを半減させました。 --takeutch-kemecoさんの、OSECPUのLinux用ドライバをマージしました。 * こめんと欄 #comment