JavaScriptとHTML5で作ったUNIX v6 emulatorっぽい何かの紹介

http://d.hatena.ne.jp/takahirox/20110827/1314441832の続き

紹介動画


免責

まだバグバグな状態です。無限ループなどにはまる可能性もあります。自己責任で使用してください。

ローパワーなマシンだと結構遅いです。

使い方

下記のリンクをクリックしてください。Windows + Chrome環境のみで動作確認しています。

http://unix-v6-hacks.googlecode.com/git/html5/terminal.html

--allow-file-access-from-filesオプションをつけてchromeを実行しておく必要が有ります。このサイトを参考にしてください。

http://chrome.half-moon.org/43.html

emulatorのページを開いたらウィンドウ内にディスクイメージをドラッグ&ドロップしてください。ディスクイメージはこちらを使ってください。

http://gachapin.jp/v6root

バグのため(後述)、正式なものを使うとうまく動きません。バグを修正次第、上記ディスクイメージは削除します。

terminal

このterminalはかなり適当な実装です。リダイレクション、パイプ未実装。カーソルキーやその他色々なものが使えないし、使うとうまく動きません。

bundled functions

  • cd or chdir : ディレクトリ移動
  • edit : エディタ起動
  • filsys : superblock情報表示
  • dis : 逆アセンブラ
  • inode : inode情報表示
  • dp : 16進数ダンプ
  • text : テキストダンプ

trace

a.out(executable file)を実行後trace_dataをクリック。

バグリスト&未実装な箇所

  • filsys(superblock)のs_free, s_inodeが枯渇したときに補充しにいっていない
    • これが正式なディスクイメージだと動かない理由。s_inodeが5しかない
  • data block, inodeを解放するとき、s_free, s_inodeに戻しにいったり、戻しにいかなかったり
  • emulator上で生成したファイルがrmで削除できない
  • 一部のプログラムがうまく動いていない(wcとか)
  • 一部の命令未実装
  • 一部のsystem call未実装
  • u.u_ofileの実装がかなり適当
  • LARGE FILE対応していたり、していなかったり
  • binの下でlsがうまく動かない
  • edなど対話形式のプログラムが動かない
  • ls -lでファイルサイズが取得できていない
  • パーミッション(アクセス管理)未実装
  • trace情報や逆アセンブラで、一部表示がおかしい
  • ファイル抽出機能がない
  • その他色々

その他

emulatorというか、file system viewer + disassembler + a.out interpreterにterminalを被せたもの。

メモリ管理などはしていない。

徐々にemulatorに近づけていく予定。

昔のインターフェイスの方が好きな人はこちらへどうぞ。

http://unix-v6-hacks.googlecode.com/git/html5/file.html