アカウント名:
パスワード:
今や組込みすらRTOSが必要なレベルだと32bit系だし、今でも8bit使ってるようなものって、リソース厳しくてRTOSなしだよねぇ。
使うのが目的ではないでしょう。
すごく初期段階にしてカーネル40KBだそうで、もうアドレス空間が埋まりそうだし。
Z80でC言語とか、コンパイラはなにを使ってるのかな。LSI-C80で非再帰モードとかバンバン使わないとまともなコードにならんと思う。
Z80でC言語とか、コンパイラはなにを使ってるのかな。
Makefile [github.com] を見ればわかる。Z80 なら SDCC - Small Device C Compiler [sourceforge.net],6502 なら cc65 - a freeware C compiler for 6502 based systems [cc65.org],M6809 なら gcc となっている。
MSXとか
UZIXとかありましたけど今はもう開発終了してるんですかね?
PC-G800シリーズはメモリが要件に達してないか…PC-1600Kなら可?
OS-9/6809 Level1 [roug.org]とか、実メモリが64KBなくても結構動いたようですし。実際、メインRAM領域が62KB程度の富士通 FM-7 [fm-7.com]でも、使おうと思えば結構使えたんですよね。マルチユーザ・マルチタスクで。
しかも、アプリをPascalっぽい構造化BASIC(実際、UCSD-Pのように独自中間コードに変換してて、ネィティブなマシン語にはコンパイルしていなかった)のBASIC09 [syakazuka.com]コンパイラで書いたりとかも出来た。# MMUが使えると、より大きなメモリ空間と、ハードウェアでのプロセス保護が出来るLevel2と言うのもあって、確か768KBの拡張メモリとかも売りだされてた。
こう考えると、カーネルの設計さえコンパクト化できれば、そこそこ使えるものが出来るんじゃないですかね。今時ならばFPGA上にZ80や6809をいれ込んだりも出来るでしょうし、キーボードやディスプレイはUSBでつなげば良いですし。# USBコントローラが別に必要で、FPGAの制御コアが32bit ARMだからそちらを使うと言うのはいかがなものか。と言う展開もありえますが(^_^;
Z80でPIC(position-independent code)で、リエントラントなコードを書くのって難しくない?
# とは云え、PICでリエントラントである事が、OS-9/6809のフットプリントを小さくするのに、どれ位寄与したかは謎。
>Z80でPIC(position-independent code)で、リエントラントなコードを書くのって難しくない?
非常に難しいと思います。出来なくはないでしょうが。githubのZX SpectrumやFPGA上でのZ80を想定したマシン依存部分のコード(の中の定義ファイル)を斜め読みしてると、ユーザ領域は、プロセスごとに1バンク持たせて、CPU側からは固定アドレスにアサインされてるかのように見せようとしてるのではないか?と言う感じがしますよ。プロセスの数が多くなったらスワップアウト/スワップインを行うとか。
#あくまで、十分一寸斜め読みしただけなので外してるかもしれませんが。
># とは云え、PICでリエントラントである事が、OS-9/6809のフットプリントを小さくするのに、どれ位寄与したかは謎。
まぁ、そこは64KBのバンク切り替えのない領域にプロセスを詰め込むには必須だったと思います。(あの時代なら256KBのバンク切り替え可能なメモリがあればお大尽だったので)カーネルも相当モジュール化されてましたし、そこら辺の含めてリエントラントにしておかないとスタックやらデータ領域やら再配置するのが難しかったですから。そうしないと、マルチユーザやマルチタスクを実現しつつメモリを節約するのは困難になりますし。
>>Z80でPIC(position-independent code)で、リエントラントなコードを書くのって難しくない?
> 非常に難しいと思います。出来なくはないでしょうが。
難しいってのは確かだけど、非常にってほどではないかと。PC相対アドレッシングがないってのが最大の問題だけど、固定番地の手続きを呼び出して、スタック上の戻りアドレスすなわち呼び出し側のPCを使うってのが定番テクニックだったと思います。(OSのエントリーポイントとして固定番地の手続きは必須なので、それが若干増えること自体は問題なし)
>Z80でPIC(position-independent code)で、リエントラントなコードを書くのって難しくない?8個あるRST命令の一つを強制すればできなくも無いんじゃないかとRST XXDW $ - JUMP_LABELとかRST XXDB CONDITION_JP_INSTRUCTIONDW $-JUMP_LABELとか前者でRST XXの先でRST命令をJPへ書き換えてスタックの戻りアドレスを一つ前に書き換えでRST命令のアドレスに差し戻すか後者でアドレス計算してからRST XXをNOPに書き換えてから戻れば継続処理できる。初回実行だけど遅いけど(キャッシュが無いCPUだから問題無い)
#これ書いてあったの月刊ASCIIかBit別冊のどれかだけどうろ覚えだなぁ
具体的なことを何一つ書けない間抜けな人は黙ってて
知らないというのは幸せだなあ。
#2714128とは別人だが、知ってるしFM-7の前機種Micro-8使っててマルチタスクでちゃんと使えてたぞ。マルチユーザの方は普通はやらなかったけど、シリアルで端末繋いで動かしてみたことはある。あまり問題なかった。(メモリ内でいろいろやってる分には速度的にも気にならなかった。ふたり同時にディスクにアクセスに行くとちょっと遅かった)知らないのはどっちだ。
「結構動いた」「結構使えた」ってレベルからは遠かったと思うが。
例えば、2.4GHz帯のデータ通信用のチップなど内蔵8052コアで、高頻度の非同期なイベントを処理しまくっています。そういったものがRTOS的なフレームワーク無しで作れるかというと、とても大変な上に実際に出来上がったものはRTOSに限りなく近いでものになるでしょう。
バンク切り替えとかサポートしたら結構面白そう。
ていうか、gitのFUZIX/Kernelの説明を見るとバンク切り替えができることを前提としてるように思える。ああ、もう懐かしいわ、exxとかex af,af' とかpush/popの山。リアルタイムモニタ作ると絶対にこれが出てくる。
1990年ごろまでZ80やってたけど、いまだと64kByteのメモリなんて逆に見つけづらかったりしない? 数メガのチップをバンク切り替え風に使うとかしてるのかな?
いまだと64kByteのメモリなんて逆に見つけづらかったりしない?
いまに限らずZ80現役当時でも64kB(=512kb)なんて切の悪い容量のRAMはまずなかったでしょ。UV-EPROMとかにはあったけど。
そうだね。たとえば、4116を8個並べて、16KBのメモリ空間を作っていたんだ。まあ、日立の64kbit SRAMで8KBってのもやったことはあるが。
>いまに限らずZ80現役当時でも64kB(=512kb)なんて切の悪い容量のRAMはまずなかったでしょ。UV-EPROMとかにはあったけど。Byteサイズは無いけど4164(1bit x 64K)を8つが当時64KByteフル実装なマイコンにおける標準的な構成でしたね。これ以下だと4116を8つで16KByte構成(PC8001とか)512kbitだと8bitサイズのUVEPROM以外なかったような?(DRAMって1bitデータの16pin物と4bitデータの20pinが主流だったような?)
> いまに限らずZ80現役当時でも64kB(=512kb)なんて切の悪い容量のRAMはまずなかったでしょ。
えーっと、MZ-80BMZ-2000MZ-700…
その辺りの機種に使われてるのは1個16kbか64kbのDRAMでしょ。馬鹿は黙っててね。
あー、すいません。親ポスト読まずに反射的に書いてました。1chip で64KBって意味だったのね。
ターゲットはエミュレータなのかな。外部記憶なし、ファイルシステムなしだとすればまさにタスクスイッチャーとしてのRTOSな感じ?ネットワーク+プロトコルはシリアルでやれるか・・・。
今時の3GHzとかのPCだと Z-80 300MHz ぐらいになるんだろうか。
結構いろんなプラットフォーム [github.com]で動かそうとしてますよ。MSXとかZX Spectrum 128とかTRS80とかDragon64とか…この調子だとAppleIIとかでも動かしかねない。# ここにFM-7/77/AVがないのは、まぁ、国際的な知名度なのでしょうね。
8bitOS上で64bitアクセサレータ用のアプリケーションコードをIOして64bitアクセサレータ用のアプリケーション同士の動作を調停する。
現実には、ぱちんこの検定に通すためには主基板ROMは16KB以下(更にプログラム領域3KB以下でデータ領域3KB以下)でないと駄目で、貧民的プラグラミングが求められるので無理です。
一方サブ基板は動画&音声データの塊演出だけでなく、図柄変動(数字が動いて止まる奴)もスプライト描画とかではなく動画でやって合成してるとか聞いたことがまあせいぜい10個強の3桁だから、リーチで特殊な動きするときとか考えても今の記憶装置なら収まるのか…
主基板ROMは16KB以下(更にプログラム領域3KB以下でデータ領域3KB以下)
16KB-3KB-3KB=10KB
ROMにコードとデータ以外で何が入ってるの??
ROMの入手性を勘案して、充分かつ最もミニマムな容量で設定しているだけだと思いますよ。最も今ではLETechかIDNACのロム(CPUと周辺、ROM込み。不正改造が困難なchip)しか実質採用できませんので単独でROMを載せていることは、まずないと思いますが。
単純にその決まりができた当時8KB以下のROMは製造してなかったとか。
現代でも16kB(=128kb)のROMなんて製造されてないのでは?
128kbitのROMだったら、SPIとかI2Cのでよければ、RSコンポーネンツで注文すると1個150円、午前中に注文して早ければ翌夕方には届くくらいではないかと。よくルータとかPCとかネットワークカードとかFPGA基板とかに乗ってません?
CPUから命令フェッチするには一旦RAMに展開せんでもいかんシリアルROMなんてパチ関係のプログラム用に使えるわけない
内蔵じゃない外付けパラレルROMで16kBってのが難しいってことですか?
RAMにコードを展開する、すなわちコードを書き替えられる(可能性あり)ということでまず認定通らないですね。
シリアルのROM上のコードをZ80が実行できるのかちょっと考えてから書き込めばいいのに。
(できる|できない)で言えばできますね。効率は悪いですが。
シフトレジスタなどでシリアルパラレル変換しながらになりますからね。CPUの8倍以上速いシリアルメモリが必要そうだけど、Z80相手なら余裕かも。SPI接続のRAMですけど23LC1024をZ80に繋いだことはあるが、その時はIO空間にマップしてデータを置いたのみで、さすがにメインアドレス空間にマップしてコードを載せて直接実行はしなかった。
90はパチンコの話だということも理解できないアスぺだからしかたないね
128Kbitの単体ROMが小容量過ぎて存在しないかというと、需要があってシリアルならいくらでもある。専用品だとかメーカー限定とかDCから動作とかTTLとか後出しの条件が出てくるなら、知らない。だいたいZ80ともどこにも書いてないし、どうせパチンコ専用のSoCがあって事実上一択なんでしょ?
専用品だとかメーカー限定とかDCから動作とかTTLとか後出しの条件が出てくるなら、知らない。
パチ前提というのはわかりきってる話では?
じゃあパチを定義したらいいんじゃないの?
恥ずかしい奴だなw
一応言っとくわー、レイシストは隔離板から出てくんなw
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
あつくて寝られない時はhackしろ! 386BSD(98)はそうやってつくられましたよ? -- あるハッカー
しかし何に使うんだろう (スコア:0)
今や組込みすらRTOSが必要なレベルだと32bit系だし、今でも8bit使ってるようなものって、リソース厳しくてRTOSなしだよねぇ。
Re:しかし何に使うんだろう (スコア:2, すばらしい洞察)
使うのが目的ではないでしょう。
すごく初期段階にしてカーネル40KBだそうで、もうアドレス空間が埋まりそうだし。
Z80でC言語とか、コンパイラはなにを使ってるのかな。
LSI-C80で非再帰モードとかバンバン使わないとまともなコードにならんと思う。
Re:しかし何に使うんだろう (スコア:3, 参考になる)
Makefile [github.com] を見ればわかる。
Z80 なら SDCC - Small Device C Compiler [sourceforge.net],
6502 なら cc65 - a freeware C compiler for 6502 based systems [cc65.org],
M6809 なら gcc となっている。
Re:しかし何に使うんだろう (スコア:1)
MSXとか
Re: (スコア:0)
UZIXとかありましたけど
今はもう開発終了してるんですかね?
Re: (スコア:0)
PC-G800シリーズはメモリが要件に達してないか…
PC-1600Kなら可?
つ【OS-9】(Re:しかし何に使うんだろう (スコア:1)
OS-9/6809 Level1 [roug.org]とか、実メモリが64KBなくても結構動いたようですし。
実際、メインRAM領域が62KB程度の富士通 FM-7 [fm-7.com]でも、使おうと思えば結構使えたんですよね。マルチユーザ・マルチタスクで。
しかも、アプリをPascalっぽい構造化BASIC(実際、UCSD-Pのように独自中間コードに変換してて、ネィティブなマシン語にはコンパイルしていなかった)のBASIC09 [syakazuka.com]コンパイラで書いたりとかも出来た。
# MMUが使えると、より大きなメモリ空間と、ハードウェアでのプロセス保護が出来るLevel2と言うのもあって、確か768KBの拡張メモリとかも売りだされてた。
こう考えると、カーネルの設計さえコンパクト化できれば、そこそこ使えるものが出来るんじゃないですかね。
今時ならばFPGA上にZ80や6809をいれ込んだりも出来るでしょうし、キーボードやディスプレイはUSBでつなげば良いですし。
# USBコントローラが別に必要で、FPGAの制御コアが32bit ARMだからそちらを使うと言うのはいかがなものか。と言う展開もありえますが(^_^;
Re: (スコア:0)
Z80でPIC(position-independent code)で、リエントラントなコードを書くのって難しくない?
# とは云え、PICでリエントラントである事が、OS-9/6809のフットプリントを小さくするのに、どれ位寄与したかは謎。
Re:つ【OS-9】(Re:しかし何に使うんだろう (スコア:1)
>Z80でPIC(position-independent code)で、リエントラントなコードを書くのって難しくない?
非常に難しいと思います。出来なくはないでしょうが。
githubのZX SpectrumやFPGA上でのZ80を想定したマシン依存部分のコード(の中の定義ファイル)を斜め読みしてると、ユーザ領域は、プロセスごとに1バンク持たせて、CPU側からは固定アドレスにアサインされてるかのように見せようとしてるのではないか?と言う感じがしますよ。プロセスの数が多くなったらスワップアウト/スワップインを行うとか。
#あくまで、十分一寸斜め読みしただけなので外してるかもしれませんが。
># とは云え、PICでリエントラントである事が、OS-9/6809のフットプリントを小さくするのに、どれ位寄与したかは謎。
まぁ、そこは64KBのバンク切り替えのない領域にプロセスを詰め込むには必須だったと思います。(あの時代なら256KBのバンク切り替え可能なメモリがあればお大尽だったので)
カーネルも相当モジュール化されてましたし、そこら辺の含めてリエントラントにしておかないとスタックやらデータ領域やら再配置するのが難しかったですから。
そうしないと、マルチユーザやマルチタスクを実現しつつメモリを節約するのは困難になりますし。
Re: (スコア:0)
>>Z80でPIC(position-independent code)で、リエントラントなコードを書くのって難しくない?
> 非常に難しいと思います。出来なくはないでしょうが。
難しいってのは確かだけど、非常にってほどではないかと。
PC相対アドレッシングがないってのが最大の問題だけど、固定番地の手続きを呼び出して、
スタック上の戻りアドレスすなわち呼び出し側のPCを使うってのが定番テクニックだったと思います。
(OSのエントリーポイントとして固定番地の手続きは必須なので、それが若干増えること自体は問題なし)
Re: (スコア:0)
>Z80でPIC(position-independent code)で、リエントラントなコードを書くのって難しくない?
8個あるRST命令の一つを強制すればできなくも無いんじゃないかと
RST XX
DW $ - JUMP_LABEL
とか
RST XX
DB CONDITION_JP_INSTRUCTION
DW $-JUMP_LABEL
とか
前者でRST XXの先でRST命令をJPへ書き換えてスタックの戻りアドレスを一つ前に書き換えでRST命令のアドレスに差し戻すか
後者でアドレス計算してからRST XXをNOPに書き換えてから戻れば継続処理できる。
初回実行だけど遅いけど(キャッシュが無いCPUだから問題無い)
#これ書いてあったの月刊ASCIIかBit別冊のどれかだけどうろ覚えだなぁ
Re:つ【OS-9】(Re:しかし何に使うんだろう (スコア:1)
具体的なことを何一つ書けない間抜けな人は黙ってて
Re: (スコア:0)
知らないというのは幸せだなあ。
#2714128とは別人だが、知ってるしFM-7の前機種Micro-8使っててマルチタスクでちゃんと使えてたぞ。
マルチユーザの方は普通はやらなかったけど、シリアルで端末繋いで動かしてみたことはある。あまり問題なかった。
(メモリ内でいろいろやってる分には速度的にも気にならなかった。ふたり同時にディスクにアクセスに行くとちょっと遅かった)
知らないのはどっちだ。
Re: (スコア:0)
「結構動いた」「結構使えた」ってレベルからは遠かったと思うが。
Re: (スコア:0)
例えば、2.4GHz帯のデータ通信用のチップなど内蔵8052コアで、高頻度の非同期なイベントを処理しまくっています。
そういったものがRTOS的なフレームワーク無しで作れるかというと、とても大変な上に実際に出来上がったものはRTOSに限りなく近いでものになるでしょう。
Re: (スコア:0)
バンク切り替えとかサポートしたら結構面白そう。
Re:しかし何に使うんだろう (スコア:3, 興味深い)
ていうか、gitのFUZIX/Kernelの説明を見るとバンク切り替えができることを前提としてるように思える。
ああ、もう懐かしいわ、exxとかex af,af' とかpush/popの山。リアルタイムモニタ作ると絶対にこれが出てくる。
1990年ごろまでZ80やってたけど、いまだと64kByteのメモリなんて逆に見つけづらかったりしない? 数メガのチップをバンク切り替え風に使うとかしてるのかな?
Re: (スコア:0)
いまだと64kByteのメモリなんて逆に見つけづらかったりしない?
いまに限らずZ80現役当時でも64kB(=512kb)なんて切の悪い容量のRAMはまずなかったでしょ。UV-EPROMとかにはあったけど。
Re: (スコア:0)
そうだね。
たとえば、4116を8個並べて、16KBのメモリ空間を作っていたんだ。
まあ、日立の64kbit SRAMで8KBってのもやったことはあるが。
Re: (スコア:0)
>いまに限らずZ80現役当時でも64kB(=512kb)なんて切の悪い容量のRAMはまずなかったでしょ。UV-EPROMとかにはあったけど。
Byteサイズは無いけど4164(1bit x 64K)を8つが当時64KByteフル実装なマイコンにおける標準的な構成でしたね。
これ以下だと4116を8つで16KByte構成(PC8001とか)
512kbitだと8bitサイズのUVEPROM以外なかったような?(DRAMって1bitデータの16pin物と4bitデータの20pinが主流だったような?)
Re: (スコア:0)
> いまに限らずZ80現役当時でも64kB(=512kb)なんて切の悪い容量のRAMはまずなかったでしょ。
えーっと、
MZ-80B
MZ-2000
MZ-700
…
Re: (スコア:0)
その辺りの機種に使われてるのは1個16kbか64kbのDRAMでしょ。馬鹿は黙っててね。
Re: (スコア:0)
あー、すいません。親ポスト読まずに反射的に書いてました。
1chip で64KBって意味だったのね。
Re: (スコア:0)
ターゲットはエミュレータなのかな。
外部記憶なし、ファイルシステムなしだとすれば
まさにタスクスイッチャーとしてのRTOSな感じ?
ネットワーク+プロトコルはシリアルでやれるか・・・。
今時の3GHzとかのPCだと Z-80 300MHz ぐらいになるんだろうか。
Re:しかし何に使うんだろう (スコア:2)
結構いろんなプラットフォーム [github.com]で動かそうとしてますよ。
MSXとかZX Spectrum 128とかTRS80とかDragon64とか…この調子だとAppleIIとかでも動かしかねない。
# ここにFM-7/77/AVがないのは、まぁ、国際的な知名度なのでしょうね。
Re: (スコア:0)
8bitOS上で64bitアクセサレータ用のアプリケーションコードをIOして64bitアクセサレータ用のアプリケーション同士の動作を調停する。
Re:しかし何に使うんだろう (スコア:5, 参考になる)
現実には、ぱちんこの検定に通すためには主基板ROMは16KB以下
(更にプログラム領域3KB以下でデータ領域3KB以下)でないと駄目で、
貧民的プラグラミングが求められるので無理です。
Re:しかし何に使うんだろう (スコア:1)
一方サブ基板は動画&音声データの塊
演出だけでなく、図柄変動(数字が動いて止まる奴)もスプライト描画とかではなく動画でやって合成してるとか聞いたことが
まあせいぜい10個強の3桁だから、リーチで特殊な動きするときとか考えても今の記憶装置なら収まるのか…
Re: (スコア:0)
主基板ROMは16KB以下
(更にプログラム領域3KB以下でデータ領域3KB以下)
16KB-3KB-3KB=10KB
ROMにコードとデータ以外で何が入ってるの??
Re:しかし何に使うんだろう (スコア:5, 参考になる)
ROMの入手性を勘案して、充分かつ最もミニマムな容量で設定しているだけだと思いますよ。
最も今ではLETechかIDNACのロム(CPUと周辺、ROM込み。不正改造が困難なchip)しか実質採用できませんので
単独でROMを載せていることは、まずないと思いますが。
Re: (スコア:0)
単純にその決まりができた当時8KB以下のROMは製造してなかったとか。
Re: (スコア:0)
現代でも16kB(=128kb)のROMなんて製造されてないのでは?
Re:しかし何に使うんだろう (スコア:2)
128kbitのROMだったら、SPIとかI2Cのでよければ、RSコンポーネンツで注文すると1個150円、午前中に注文して早ければ翌夕方には
届くくらいではないかと。よくルータとかPCとかネットワークカードとかFPGA基板とかに乗ってません?
Re: (スコア:0)
CPUから命令フェッチするには一旦RAMに展開せんでもいかんシリアルROMなんてパチ関係のプログラム用に使えるわけない
Re:しかし何に使うんだろう (スコア:2)
内蔵じゃない外付けパラレルROMで16kBってのが難しいってことですか?
Re: (スコア:0)
RAMにコードを展開する、すなわちコードを書き替えられる(可能性あり)ということでまず認定通らないですね。
Re: (スコア:0)
内蔵じゃない外付けパラレルROMで16kBってのが難しいってことですか?
シリアルのROM上のコードをZ80が実行できるのかちょっと考えてから書き込めばいいのに。
Re: (スコア:0)
シリアルのROM上のコードをZ80が実行できるのかちょっと考えてから書き込めばいいのに。
(できる|できない)で言えばできますね。効率は悪いですが。
Re: (スコア:0)
シフトレジスタなどでシリアルパラレル変換しながらになりますからね。CPUの8倍以上速いシリアルメモリが必要そうだけど、Z80相手なら余裕かも。
SPI接続のRAMですけど23LC1024をZ80に繋いだことはあるが、その時はIO空間にマップしてデータを置いたのみで、さすがにメインアドレス空間にマップしてコードを載せて直接実行はしなかった。
Re:しかし何に使うんだろう (スコア:2)
現代でも16kB(=128kb)のROMなんて製造されてないのでは?
Re: (スコア:0)
90はパチンコの話だということも理解できないアスぺだからしかたないね
Re:しかし何に使うんだろう (スコア:2)
128Kbitの単体ROMが小容量過ぎて存在しないかというと、需要があってシリアルならいくらでもある。
専用品だとかメーカー限定とかDCから動作とかTTLとか後出しの条件が出てくるなら、知らない。
だいたいZ80ともどこにも書いてないし、どうせパチンコ専用のSoCがあって事実上一択なんでしょ?
Re: (スコア:0)
専用品だとかメーカー限定とかDCから動作とかTTLとか後出しの条件が出てくるなら、知らない。
パチ前提というのはわかりきってる話では?
Re:しかし何に使うんだろう (スコア:2)
じゃあパチを定義したらいいんじゃないの?
Re: (スコア:0)
恥ずかしい奴だなw
Re: (スコア:0)
一応言っとくわー、レイシストは隔離板から出てくんなw