
Commodore 64で動作するLinux 30
ストーリー by nagazou
趣味 部門より
趣味 部門より
Commodore 64上でLinuxを実行しようとする「semu-c64」プロジェクトという試みがあるそうだ。とはいえ実機で動作させているのではなく、RISC-V32アーキテクチャのマシン上で仮想化されたCommodore 64を動かし、その上でLinuxがエミュレートされるという無理矢理な形で開発が進められているようだ。現状で動作させるにはRAM拡張ユニットも必要な状況。現時点では起動だけでも数時間が必要とされ、最適化をして10倍の速度向上が図られたとしても実用性は全くないと思われる。それでも、プロジェクト側は新たな技術的なトリックやアプローチに対する驚きや楽しさがあると述べている(GitHub semu-c64、LINUX ON A COMMODORE 64)。
RAM拡張ユニットを追加しても (スコア:2)
320KBなのか。フットプリント足らなくない?
Re: (スコア:0)
Readmeには16メガって書いてあるけどどこから320k?
Re:RAM拡張ユニットを追加しても (スコア:2)
実機のREUが256KB追加で、元々と合わせて320KBだと思ったんだけど、
エミュレータだから16MBに設定ってしれっと書いてありますね。
バンク切り替えどんなけ~。
Re: (スコア:0)
Commodore 64の実機のRAMが 本体64KB + 拡張ユニット256KB = 320KB
Commodore64のCPU、MOS 6510は6502に8ビットの汎用I/Oポートを追加 (スコア:0)
してそのうち1bitをアドレスバスとしてROM/IO と RAMをバンク切り替え出来るようにしたものらしい
よくわからないけど、実質8bitCPUの6502にlinuxを移植したってこと?
Cコンパイラとライブラリが頑張れば実行時間はかかるものの動きはするってことだろうか。
Re:Commodore64のCPU、MOS 6510は6502に8ビットの汎用I/Oポートを追加 (スコア:3, 参考になる)
ストーリーには
って書かれてますがこれは逆で、
ってことで、
RISC-Vのエミュレーター「semu」を、
6502のコードを吐くllvm-mosを使って、Commodore64で動くように移植して、
その上でLinuxを動かしてるみたいです。
C64自体も実機ではなくVICE [sourceforge.io]というC64エミュレーター上で動かしてますが、
そのC64エミュがRISC-V上で動いてる、って記述は見当たりませんでした。
でも、エミュレータを動かすのに、わざわざRISC-Vプラットフォームを用意する可能性は低いと思います。
おまけ:参考ストーリー: 8ビット/24MHz動作の「ATmega1284p」プロセッサでARM Linuxを動かす、ログインできるまで6時間 [hardware.srad.jp]
こっちは、8bit ワンチップマイコンの実機で、ARMエミュレーターを動かしてその上でLinuxを動作させてました。
Re: (スコア:0)
仮にエミュレーターじゃなくネイティブ移植だったら数時間が数時間に短縮されるの?
Re: (スコア:0)
「6502ネイティブコードで動くLinux」となると大幅に書き換えが必要で「Linuxクローン」にも程遠い「Linuxっぽい何か」にしかならないと思う。
それよりC64エミュレータはC64の動作に合わせるために稼働中のほとんどが待ち時間だろうから、いっしょにエミュレーションしてるはずの周辺デバイスも含めてノーウェイトに近い動作にすれば100MHz相当くらいはいけるんじゃないかな
Re:Commodore64のCPU、MOS 6510は6502に8ビットの汎用I/Oポートを追加 (スコア:1)
報告では、エミュレータを実機より速く動かす「warp mode」でも、ブートメッセージが出るまで数分かかった、ってことです。
画面キャプチャを見ると、1200%ぐらいの表示になってるので、12倍速。
「10倍高速化しても実用にならない」ってのは、そのあたりから来た数字なんだと思います。
なお、#4520490 で挙げたAVR(atmega1284 24MHz)なLinuxは、ARM 6.5kHzぐらいのエミュレーションだそうです。
Re: (スコア:0)
力技にも程がすぎる
普通?に8bitcpuにポートしたと(できたと)してもまともに動きそうにないのにCPUエミュレーターを動かしてその上で動かすとかクレイジーだ
Re: (スコア:0)
linuxは32bitが前提なので、RISC-Vシミュレータは最も安易な方法だよ。
メモリ容量をのぞけば(これは難問)、動くのは当たり前でごくつまらない話。youtuberの「やってみた」レベル。
Re: (スコア:0)
6809ならわかる(6809にはOS-9というUNIXライクOSがある)が、6502で???すごい話だ。
Re: (スコア:0)
https://en.wikipedia.org/wiki/GeckOS [wikipedia.org]
unixライクなだけなら実機で動くのがある。
Re: (スコア:0)
6809でLinuxを動かそうとしたら今回と同じアプローチは採りやすい方法だと思うがOS-9が何関係あると言いたいんだかサッパリわからん。
アメリカ人の (スコア:0)
Commodore 64やAmigaに対する熱意は日本でいうと何に相当するんだろう
Re: (スコア:0)
MSXとX68000かな
#C64とかAmigaの信者が他機種を攻撃しまくるかは知らない
Re:アメリカ人の (スコア:1)
「MZ-700に不可能はない」の方が近い気がする。
Re: (スコア:0)
N氏を嫌いになってもいいからMSXを嫌いにならないで
Re: (スコア:0)
にっしっし
Re: (スコア:0)
TOWNSとX68000 ?
AT互換機になる前のFMRもなかなか独特で面白かった、結構TOWNSに継承されてるけど。
Re: (スコア:0)
TOWNSってそんなにユーザーの熱意が注がれているんかな?
X68000は、今でもたまにニュースになったり、
X(旧ツイッター)でも関連ツイートが流れてくることが結構多いけどTOWNSは見た記憶が無い。
TOWNSは教育用に売れてビジネスでは成功したけど一般ユーザー向けのイメージがちょっと薄いような気がするのだけど。
Re: (スコア:0)
TOWNSも富士通からフリーソフトウェアコレクションなんてソフトウェア集が何本も出るくらい一般プログラマ層厚かったですよ。
ソフト流通ルートとしてNiftyを抱えていたのも大きかったのでしょうね。
開発環境は独特で高価でしたが……
Re:アメリカ人の (スコア:1)
X68000にはアセンブラとリンカがこっそり標準添付だったので、
本体を買うだけでいきなりプログラミングできた、というのが大きいかな、と。
XC(X68k標準の有償Cコンパイラ)が
バカすぎた最適化が貧弱だったせいか、結構早期に、gcc+glibcが移植されて、フリーなC言語開発環境も出来たし。
TOWNSの方も、公式の開発ツールは 「RUN386(386|DOS Extender)」上の「HIGH-C」でしたけど、
RUN386互換のEXE386が無償公開され、その上でGCCが動いたので、フリーで開発環境をそろえることもできたと思います。
Re: (スコア:0)
X68000はMS-DOSがMASMを付属してるからアセンブラを付けてみた的な感じで
TOWNSはmacのHyperCardを意識したかどうかはわからないけどオーサリングツールのTownsGEARが付属してた。
Re: (スコア:0)
バカすぎるXCでもVer1.0はコンパイルが速かったので好きでした。
2.0になってコンパイルが非常に遅くなってしまい、1.0はアセンブラで書かれてて2.0はCで書いたのかなーなどと思った。
Re: (スコア:0)
今の熱気の違いは「X68kのときはこれしかなく飛びついたが、TOWNSのときはX68kと選べた」というのがある気がする。
Re: (スコア:0)
「俺にはこれしかないんだ!だからこれが最高のマシンなんだ!」的な
あとは、BIOSから開発環境までのかなりの部分が無償公開されているのでエミュの障壁が低いのはあるかもしれない。
当時の環境完全再現しようとすると、あれが入ってないこれも入ってないってなったりしますが・・
Re: (スコア:0)
カスタムチップ全盛時代に登場したX68000と比較すると
TOWNSはカスタムチップへの依存度が低かったこともエミュレーションしやすい理由だろうな
Re: (スコア:0)
TOWNSのエミュレータって、恐ろしく出来が良い「うんづ」と「津軽」以外知らないが他に何がある?
今ほどCPUパワーがない時代でも、PC互換機ではCPUエミュが必要なくて、パフォーマンスが出やすそう。
Re: (スコア:0)
選べたら選べたで
「俺が選んだこっちは最強」というバイアスはあるように思う。
ただ、あえて当時32ビットのTOWNSではなく16ビットで速度的にも不利なX68kを選んだ場合の思い入れのほうが強いのかな。