2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

MSXハードソフトスレ2 (売買関係を除く)

1 :ナイコンさん:2008/01/24(木) 19:25:41 .net

MSXのハードやソフト、技術関係について語るスレです。


↓オクや売買に関する話はこちらの隔離スレで思う存分どうぞ。
■MSXハードソフトスレ(ヤフーオークション)■
http://bubble6.2ch.net/test/read.cgi/i4004/1201164364/





655 :ナイコンさん:2011/07/18(月) 22:09:10.09 .net
おっ、勇者が復活か?


656 :ナイコンさん:2011/07/20(水) 23:05:03.74 .net
MSXスレが無くなってみんなP6スレに流れてると思ったらここでやってたのかwww

657 :ナイコンさん:2011/07/24(日) 12:43:57.48 .net
オークションID:n34162288 タイトル:('_`)MSX 緊急出品!モリコ脅迫事件!...linecraft1さん

オークションID:n34162288 タイトル:('_`)MSX 緊急出品!モリコ脅迫事件!! という出品物があり、
その出品説明が商品の内容でなく,特定個人の情報を集める為だけに出品している内容になっており、ヤフー
に違反申告を申請しているのですが、ヤフーが全然、削除しません。どうしたら、削除してもらえるのでしょ
うか?また、こんな出品が許されていいのでしょうか?
http://page11.auctions.yahoo.co.jp/jp/auction/n34162288


質問日時: 2006/2/10 12:23:23
解決日時: 2006/2/11 21:05:42
回答数: 2
閲覧数: 633

658 :ナイコンさん:2011/07/24(日) 12:45:11.34 .net
qqqio_oipppさん

そうですね・・・。
Yahoo!がその吊りIDを取り締まらない為にこの方もこんな出品物を考えたのでしょう。
同情はしますが、許される事ではありません。
間違いなく違反ですから削除に値します。
一応違反報告に協力します。
二つ目のURLがガイドライン違反報告ですので、見かけた方はご利用下さい。

ochame_ranchanさん

諦めずに、何度も申告してみましょう。それにしても、この回答の内容では
今後も同じ事繰り返すでしょうね。反省出来る様な感じが見受けられません。
http://page7.auctions.yahoo.co.jp/jp/show/qanda?aID=g40700663

659 :ナイコンさん:2011/07/24(日) 12:47:57.08 .net
('_`)の人は勇者じゃなくて転売釣上師
>>許される事ではありません。
>>間違いなく違反ですから削除に値します。
>>今後も同じ事繰り返すでしょうね。反省出来る様な感じが見受けられません。

大阪から買うといいよ、評価もいいよ


660 :ナイコンさん:2011/08/26(金) 12:25:52.12 .net
(売り買い関係を除く)

661 :莫迦発見!:2011/09/14(水) 07:23:23.11 .net
652 :ナイコンさん:2011/07/17(日) 21:01:38.52
どうした!?
すごい勢いで藤原さんの出品がタイムアウトしている


662 :ナイコンさん:2011/09/16(金) 19:24:10.38 .net
MSXコンパチ互換の教育用自作コンピュータキットがあるらしいですよ。
http://www.offshore-ww.com/gr8bit-2.html

教育用途なので全ての部品は手作業で実装し、基盤がATX仕様で、ATXケースに収まる様子。
拡張カードはISAのような印象で組み合わせてシステムを構成。OSはMSX-DOS, CP/M, SymbOs対応だそうです。
デュアルコア可能で、MSXのゲームも動いてる様子です。

663 :ナイコンさん:2011/09/16(金) 23:20:03.08 .net
「学習用に最適」ってワンチップMSXの売り文句じゃなかったっけ?

ワンチップMSXは何をしている!www

664 :ナイコンさん:2011/09/18(日) 07:41:25.28 .net
また草はやしてみっともない(失笑)

665 :ナイコンさん:2011/09/19(月) 00:30:23.67 .net
(失笑)←も相当みっともない

666 :ナイコンさん:2011/09/19(月) 01:10:34.67 .net
てゆうか他人の書き込みにただ「みっともない」とかのケチつけるだけの奴が
一番みっともない。

>>662のキットについてとか、さんざん大風呂敷広げた挙句
盛り上がらずあっさり消えていったワンチップについてとか、
>>664なりの意見やら感想やら無いんかね。

ただたた他人の書き込みに「草はやしてみっともない」って、
そんな内容の無いつまらんこと書き込んで何がしたいのか。

667 :ナイコンさん:2011/09/19(月) 03:46:15.27 .net
>>666
自己紹介乙

668 :ナイコンさん:2011/09/23(金) 19:01:26.01 .net
>>666
みっともないwwwwwwwww(失笑)
そんな内容の無いつまらんこと書き込んで何がしたいの?(爆笑)

669 :ナイコンさん:2011/09/23(金) 22:04:03.73 .net
>>668
(失笑)(爆笑) そして草。みっともないのはお前だよ。

670 :ナイコンさん:2011/09/25(日) 01:36:02.73 .net
>>669
306 :「富士藁、吊上、キニシナイ。」らしい。 :2011/05/01(日) 06:35:41.12
25 人中、11人の方が、「このレビューが参考になった」と投票しています。
5つ星のうち 2.0 「炎上、騒動、キニシナイ。」ってさ。, 2010/2/17
By 犬橇舎 - レビューをすべて見る
(VINEメンバー) (トップ1000レビュアー) レビュー対象商品: 杏野はるなのレトロゲーム読本 (ブレインナビブックス) (単行本(ソフトカバー))
「炎上、騒動、キニシナイ。」らしい。

杏野はるなさんがレトロゲームが好きなのはわかった。
杏野はるなさん(と、その事務所)がそれをウリにしようとしているのもわかった。
(あるいはレトロゲームが好きというニッチなところを狙った”キャラ設定”を粛々とこなしている?)

「炎上、騒動、キニシナイ。」
というのを、周りに影響されず、自分の主義主張を曲げず表現する…という意味でとればいいんでしょうが、
ブログが炎上するのや騒動が起こるのは、アンチファンの荒らしが原因というわけではなく、
その主義主張、行動に疑問を感じる人が多いから。

炎上すべくして炎上しているのを「それを良し」としている人が書いたものが肌に合う人には向くんだと思います。
きっと。

「杏野はるなの」レトロゲーム読本なので、まず杏野はるなさんありきでいけば間違いはないんだと思います。
たぶん。
巻頭カラーページをグラビアで消化しているあたりとか。

「レトロゲームの本」、ではなく
やっぱ、「はるなさんありきのレトロゲームの本」。

671 :ナイコンさん:2011/09/25(日) 09:41:01.63 .net
  |┃             
  |┃    ガラッ   // ̄ ̄ ̄ ̄\ .
  |┃ 三     彳丿; \,,,,,,,,/ u lヽ
  |┃       入丿 -◎─◎- ;ヽミ.
  |┃ 三     | u:.:: (●:.:.●) u:.::|   フ〜! フ〜!!
  |┃        |  :∴) 3 (∴.:: |    お前らNX買ってお布施しろ
  |┃      ノ ヽ、   ,___,. u . ノ、   月10本じゃ飯が食えないじゃねーか!
  |┃ 三   /   ヽ:.___;;;;;;;;;;___.ノ  ヽ  モロモロキュッキュッキュッ!
,⊆ニ´⌒ ̄ ̄"  y            .;ヽ
゙⊂二、,ノ──-‐'´:   ・  人  ・ ,.y  i
  |┠ '      |    ̄      ̄ .|  .|
  |┃三      |   .        ノ.  ノ
  |┃       |.     (x)    9  /
  |┃       |    ヽ、_.∩ _,ノ彡 イ シャッシャッシャッシャッシャッシャッシャッシャッシャッシャッ
  |┃ 三.     |     (_)    |
  |┃        ヽ、___.人___.ノ

       基地外北海道民 38歳 犯罪者(似非経営者)

672 :ナイコンさん:2011/09/26(月) 11:23:09.77 .net
>>669
こういう頭の悪いニートって実際にいるんだな。

肛門期の幼児というのは、お前のようにウンコウンコ喜んでいる奴を指すんだよ。
お前以外の人間でそんな奴いるか? 誰一人いないだろ?
オウム返ししかできないみたいだけど、肛門期はお前にしか当てはまらないんだよ。
そんなこともわからないような馬鹿だから、草生やしているんだと思うが、
あまりにもみっともない、俺がお前なら迷わず自殺してるね。

673 :ナイコンさん:2011/09/26(月) 19:24:17.98 .net
そいつ叩いても効かないぞ。俺も前じゃれた事有るが見当違いの煽りを返す事しかしないんだ
。言葉が通じそうで通じない。わざとか病気か知らんが。

674 :ナイコンさん:2011/09/26(月) 19:34:57.33 .net
コピペに向かって、何話しかけてるの?

675 :ナイコンさん:2011/09/27(火) 05:11:16.67 .net
こぴぺ?検索しても出て来ませんが。

676 :ナイコンさん:2011/09/27(火) 06:01:50.45 .net
>>674
モロモロキュッキュッキュッ!

677 :ナイコンさん:2011/09/27(火) 08:09:14.88 .net
>>675
もらんぼんスレの>>500だよ。

678 :ナイコンさん:2011/09/27(火) 08:33:21.18 .net
おお、コピペなのね。ぐぐっても出なかったからさ。

679 :ナイコンさん:2011/09/29(木) 09:10:09.10 .net
>>678
こういう頭の悪い人間って実際にいるんだな。

肛門期の幼児というのは、お前のようにウンコウンコ喜んでいる奴を指すんだよ。
お前以外の人間でそんな奴いるか? 誰一人いないだろ?
オウム返ししかできないみたいだけど、肛門期はお前にしか当てはまらないんだよ。
そんなこともわからないような馬鹿だから、草生やしているんだと思うが、
あまりにもみっともない、俺がお前なら迷わず自殺してるね。

680 :ナイコンさん:2011/09/29(木) 10:04:59.87 .net
こいつ自分が言われて悔しかったから、
同じ文章をコピペしまくってるみたいだね。

681 :ナイコンさん:2011/09/29(木) 12:36:51.03 .net
>>660
恥ずかしいよねw
得意げに2ちゃんで長文。
仕事中ウンコしながら携帯でwww
あちこちで恥カキコがさらされているよwwwwwwww

682 :ナイコンさん:2011/09/29(木) 12:58:09.79 .net
その恥カキコとやらに完膚なきまでに論破された草生やし馬鹿が、
ファビョってコピペしまくっているわけですね。

683 :ナイコンさん:2011/09/29(木) 16:19:20.48 .net
安価まちがうなよぅ

684 :ナイコンさん:2011/09/29(木) 16:30:44.50 .net
ファビョっているから仕方ない

685 :ナイコンさん:2011/09/30(金) 00:20:39.04 .net
>>681
ほんと、ウンコって単語が好きなんだね。3歳児みたい。

686 :ナイコンさん:2011/10/06(木) 03:02:31.64 .net
C言語を用いる場合、多くの処理系がある。当時は高価であったが現在は無償公開
されているものが多い。
MSXCは完全なC言語ではなく、サブセットでSmallCと等しい。
現在のANSI-C以前に作成されたもので標準規格化以前のK&R-Cに準拠している。
したがって現在のC言語と表記がやや異なる部分がある。

このMSXCコンパイラは以下で入手する事が可能だ。欠けているファイルが有りやや古いが、
サンプルの実行などは十分だ。
http://www.z80.eu/downloads/ASCII-C11.zip
完全なソフトウエアパッケージと追加ライブラリを入手したければ、
MSXMagazine永久保存版を入手するのが良いだろう。

687 :ナイコンさん:2011/10/06(木) 03:07:42.04 .net
最初のプログラムとして一番有名なコードを示す。
この例は画面に文字列を表示するprintf()関数を使う例だ。このプログラムを例えば
hello.cとして保存し、DOS上で>c hello とコンパイルすればhello.comが作成される。
後はコマンドラインから、>hello と入力すれば作成したプログラムが実行される。

#include <stdio.h>

VOID main(){
printf("hello world");
}

688 :ナイコンさん:2011/10/06(木) 03:12:09.75 .net
CコンパイラはDOSから、三つのステージを経て実行形式を作成する。これはどのOSでも共通。
1,コンパイル(cf,cg)、2,アセンブル(m80)、3,リンク(l80)、の手順を踏む。
作成された*.comファイルを実行すれば、プログラムが起動する。
test1.cというプログラムをコンパイルするには、まずCソースをコンパイルし、
>cf test1
>cg test1

次にアセンブルし、
>m80 =test1

次にリンクすると、
>l80 test1,ck,clib/s,crun/s,cend,test1 /n /e:xmain
実行形式が得られる。


689 :ナイコンさん:2011/10/06(木) 03:17:35.51 .net
cfコマンドはC言語構文解析パーサー、cgはCPUコードジェネレータで8080/z80アセンブラを
生成する。生成後のアセンブラは*.MACというファイル名が付く。
m80はマクロアセンブラで、作成されたアセンブラを機械語オブジェクトファイルに翻訳する。
l80は作成されたオブジェクトファイルをリンクして、*.com実行形式を作成する。
このときリンカはC標準ライブラリもリンクする。
マクロアセンブラとリンカはマイクロソフト社謹製で、VisualC++のおじいさんに当たる。

作成されるファイル群は、*.MACと書かれているものがCコンパイラにより作成された
アセンブラである。
*.RELと書かれているものがアセンブラによって翻訳されたオブジェクトファイルである。
Windows上などでは*.OBJである事が多い。

690 :ナイコンさん:2011/10/06(木) 03:23:50.02 .net
通常はコンパイル時のコマンド入力の手間を省くため、バッチファイルc.batを呼び出して
コンパイルすれば良い。
>c test1
と入力すれば、上のコマンドを一回で行なってくれる。しかしエラーが発生するとバッチファイル
途中で停止する。一連のコマンドでは、ファイルの拡張子は指定しない。

加えて大切な事は、DOS1ではファイルが消えるバグがあるので、DOS2上で開発する事だ。
DOS1用のバイナリを作成する場合、最終的にリリース用ソースをDOS1上でコンパイル
したものを配布すれば良いだろう。

Cコンパイラを他に変えると、SmallCをCコンパイラとして利用し、アセンブルとリンカは
MSX用のものが使える。
SmallCの場合は、コンパイル命令はcf,cgに分かれておらずccコマンド一回で完了する。
DOS1はCP/M互換なので、システムコールの利用範囲内でZ80+CP/Mを採用する他機種向けも
作成可能であろう。

691 :ナイコンさん:2011/10/06(木) 03:29:41.34 .net
K&R-Cと、ANSI-Cとの違いは、関数のプロトタイプの違い、関数パラメータ宣言の違い、
若干の構文処理の違い、国際化、変数名の違い、等がある。
MSXCのstdio.hヘッダ定義には現在と比べて問題箇所がある。
現在、一般的なCではTINY型は存在しない。そういった型名は通常BYTE型と呼ばれる。
またVOIDが大文字しか認識されない。この部分を修正するためstdio.hに、

#define void VOID
typedef char BYTE;

又は

typedef char void;
typedef char BYTE;

を追加すると良いだろう(TINY型は幾つかの箇所で使用されているので削除はしない)

692 :ナイコンさん:2011/10/06(木) 03:37:37.32 .net
MSXCの変数型は、基本intとcharしかない。intは2byte、charは1byteの大きさである。
基本は整数のみである。4byteを扱いたければ関数や構造体等で拡張すると良いだろう。
このほかunsignedという型がある。これは符号なし2byteとなる。
shortという型は2byte。doubleとfloatは使えない。
static,autoという修飾子は可能。多分register,volatie,longもある。

より完全なCを利用したい場合は、ANSI-C準拠、floatサポートするHiTECH-Cを用いると良いだろう。
HITECH-C以外でfloatを利用する方法として、BDSCやHSPのように外部ライブラリを用いる、
ROMBIOS内のMATHPACH(Mathlib)をコールする、などの方法が考えられる。

693 :ナイコンさん:2011/10/06(木) 03:44:29.66 .net
Cの文字列はBASICと異なり、K&R-Cなので文字列を扱う場合は注意が必要。
BASICと異なりCでは文字列は配列として扱う。
加えてK&Rの為、配列や文字列の初期化がトップレベルでしか行なえない。
関数内でchar配列を作り、初期化は出来ない。つまりグローバル変数として、

#include <stdio.h>

char str1[]="abc";

は可能だが、以下のように関数内での初期化はエラーとなる。

void main(){
char str1[]="def";
}

694 :ナイコンさん:2011/10/07(金) 04:39:40.75 .net
同様に、BASICでは配列は初期化されるが、Cでは初期化されない。
配列を定義した段階では値は不定なので、初期化は使う人に一任される。
用途によって初期化を行なう必要があり。ゼロクリアは以下となる。

int ary[100];

for(i=0; i<100; i++){
ary[i]=0;
}

695 :ナイコンさん:2011/10/07(金) 04:53:45.42 .net
また勘違いしやすい間違いとして、BASICを使ってきた人は文字列の代入、

str1="abc";

が可能だと思ってしまうがCでは不可能な記述。
Cで文字列の代入を行なう場合は演算記号を用いず関数strcpy()を使う。

void main(){
char str1[12];

strcpy(str1,"hello world");
printf("%s \n",str1);
}

8bitパソコンではBASICが主流なのでBASIC習慣に慣れてしまい、。
基本的なところで間違いを起こし易い。注意が必要である。

696 :ナイコンさん:2011/10/07(金) 05:15:53.11 .net
MSXCに添付されている標準ライブラリの資料は無いのでstdio.hから関数リストを得る。
関数プロトタイプからライブラリ関数が判明する。
標準関数と呼ばれるものがほぼ揃っている。一度目を通すと良い。
Cの一般的な標準関数は使い方が共通なので他の資料を参考にすると良いだろう。

関数のプロトタイプ宣言はANSI-CとK&R-Cでは異なる。注意が必要だ。例えば、ANSI-Cの
関数プロトタイプは、

int func(int p);

等であるが、K&R-Cでは関数の引数の型は指定しない。

int func();

と書く。

697 :ナイコンさん:2011/10/07(金) 05:26:12.65 .net
同様に関数を記述する際の引数の宣言が異なる。ANSI-Cでは、

int func(int p){
return(p+1);
}

と書く。K&R-Cでは、

int func(p)
int p;
{
return(p+1);
}

と書く。現在一般的なANSI-Cと記法が異なるので注意が必要だ。

698 :ナイコンさん:2011/10/07(金) 06:31:39.88 .net
MSXCの場合、変数は可能な限りレジスタに割り当てられる。
Cコンパイラには最適化オプションは無い。

int i;

上記はデフォルトでRegister割り当てとなる。
変数アドレスを参照する場合、変数は自動的にメモリに割り当てられる。
アドレスの位置はスタックの位置である。

int i;
i=123;
&i;

などのコードが見つかると、変数は最初からメモリ上に保存される。

699 :ナイコンさん:2011/10/07(金) 06:41:37.19 .net
関数の引数の受け渡しも同様にレジスタ経由である。引数はx86の場合一般的にスタック経由が多い。

void hoge( (char)p );

という関数が存在すると、第一引数pは、Aレジスタに渡され関数がコールされる。
キャストしない場合、pはHLレジスタに渡され関数がコールされる。

レジスタ経由は単に速度が速いという理由だけではなく、
値渡しにレジスタを用いるサブルーチンが多い8bitマシンのROMBIOSやDOS,CP/Mの
システムコール利用には適している。
マクロアセンブラとの連携、ROMBIOS,システムコールを利用する際、関数でラップする場合は、
関数呼び出し時のレジスタ割り当ての振る舞いを理解しておくと良い。

700 :ナイコンさん:2011/10/07(金) 19:29:57.53 .net
10 BEEP
20 GOTO 10
RUN

701 :ナイコンさん:2011/10/07(金) 21:33:57.53 .net
ぽぴぷっぽぴぷっぽぴぷっぽぴぷっぽぴぷっぽぴぷっぽぴぷっぽぴぷっ

702 :ナイコンさん:2011/10/07(金) 23:28:57.44 .net
10 ON STOP GOTO 20
20 MOTOR ON
30 MOTOR OFF
40 GOTO 20


703 :ナイコンさん:2011/10/08(土) 00:55:14.77 .net
MOTOR って書くだけでトグル動作しなかったっけ?

704 :ナイコンさん:2011/10/08(土) 05:35:29.21 .net
DOSシステムコールを利用する事は簡単だ。ファンクションコール0x1を使う例を示す。
bdos()関数が用意されている。尤もC標準関数がそもそもファンクションコールを利用しているので
実際的に低レベルのbdos()を呼ぶ必要は無い。

#include <stdio.h>
#include <bdosfunc.h>

void main(){
char rtn,fnum;

fnum=0x1;
rtn=bdos(fnum);
printf("\n input char - %x \n",rtn);
}

705 :ナイコンさん:2011/10/08(土) 05:57:37.64 .net
BASICと比較してCはコンパイラなので平均して10倍早い。正確に言えばCが速いのではなく
元々ハードウエアの速度であって、BASICインタプリタが10分の1程度の速度であるだけだ。
BASICコンパイラでも等しい程度の速度が出る。それが本来のマシン速度だ。
BASICインタプリタの実行速度を基準にハードを評価してはならない。

さらに、BASICやROMBIOS内では、V9938のハードウエアアクセラレーション機能は全く活用されて
いない。画像の区間移動、ライン描画などはZ80で処理しVRAMに書き込んでおり非常に遅い。
BIOS作成時に情報が共有されていなかったのか、互換性の為かは不明だが、ハードウエア
アクセラレーション活用は直接VDPを制御する必要がある。その為のCライブラリ作成は容易だ。

706 :ナイコンさん:2011/10/08(土) 06:24:10.41 .net
MSXCのアーカイブ>>686はサンプルプログラムが含まれている。その中の一つ、CALBIO.MAC
を用いると、MAINROMのBIOSを呼び出すことが出来る。
このアセンブラ機能を関数から呼び出す例としてcls()を作成する。下記cls.cソースを作成する。

#include <stdio.h>

void cls();

void main(){
cls();
}

Cソースをコンパイル・アセンブルしておき、CALBIO.MACをアセンブルしておく。
>cf cls
>cg cls
>m80 =cls
>m80 =calbio

707 :ナイコンさん:2011/10/08(土) 06:41:43.94 .net
続いて、リンク時

>l80 ck,cls,calbio,clib/s,crun/s,cend,cls /n /e:xmain

と入力すれば、ROMBIOSを利用した画面消去するコマンドが作成可能だ。
アセンブラで記述されたCALBIO.RELをリンク時に結合しているので、C言語からcls()機能を使う事が出来る。
C言語からはプロトタイプされているのでcls()関数として利用可能
calbio.macアセンブラコードには、スクリーンモードやテキストモード変更機能も存在する。
それらはプロトタイプを書くだけでCから利用出来る。
リンカを使うと、他の言語で作成したバイナリを結合しC言語から利用する事が可能だ。

708 :ナイコンさん:2011/10/08(土) 07:12:27.76 .net
以上の方法をさらに発展させ、ROMBIOS機能を呼び出すことも可能だ。
このcalbio.macに、以下のマクロアセンブラを追加する(タブ要変換)

;-----------------
(tab)MODULE CALLROMBIOS
callrombios@::
(tab)push hl
(tab)pop ix
(tab)ld a,e
(tab)jp CALBIO

(tab)extrn CALBIO

(tab)ENDMODULE
;----------------

709 :ナイコンさん:2011/10/08(土) 07:21:54.91 .net
>>BASICと比較してCはコンパイラなので平均して10倍早い。
「平均して10倍」という根拠は?

710 :ナイコンさん:2011/10/08(土) 07:44:04.86 .net
MODULE追加後アセンブルしておく。次にテスト用のCソースとして以下を作成する。

#include <stdio.h>

void callrombios();

void main(){
int i;

for(i=0; i<1000; i++){
callrombios( 0x0135, (char)0);
callrombios( 0x0135, (char)1);
}
}

711 :ナイコンさん:2011/10/08(土) 07:56:29.03 .net
このサンプルソースは、ROMBIOSのCHGSND(0135h)の1bitポートbeep音を使う。
引数は、一番目がROMBIOSのアドレス、二番目がAレジスタに渡す値、となる。
第二引数は(char)でキャストすると、DEではなくEレジスタに値が渡されるので
アセンブラ内で LD A,E している。
関数の実体はアセンブラで記述されているcallrombiosモジュールである。

DOSが動いているとき、スロットは全てRAMとなっているのでROMBIOSは使えない。が、
インタースロットコールを用いれば、内部でスロットを切替えDOS上でROMBIOSを呼ぶ事出来る。
サンプルのcalbio.macにインタスロットコールの機能が有るので単に流用した。
この仕組みを使えばDOS上C言語から簡単にROMBIOSを利用可能だ。

712 :ナイコンさん:2011/10/09(日) 05:16:32.30 .net
>>685=しろかみ犬橇脊髄反射乙w

713 :ナイコンさん:2011/10/09(日) 08:36:48.67 .net
一般的なBASICインタプリタはコンパイラと比較し速度比は10分の1程度。数多くのインタプリタ
処理系に限らずJIT搭載しないインタプリタ/VMも同様の傾向を持つ。
Z80MSX2+(3.5MhzEmulation)での単純な整数3万回ループのμベンチマークの結果は以下の通り

--RESULT OF LOOP30000 uMARK--
MSXBASIC --- 20sec
MSXBASIC(DEFINT) --- 10sec
MSXBASIC(BASIC Compiler) --- 3sec
MSXBASIC(DEFINT,BASIC Compiler) --- (Less than)1sec
MSXC(unsigned int) --- (Less than)1sec

714 :ナイコンさん:2011/10/09(日) 09:33:23.16 .net
R800はシンプルなRISCである。Z80が3千ゲート、R800が複合チップ含め1万ゲート、Pentium4が
約2000万ゲートである。
Z80を継承したRISCとしては、eZ80,川崎のKC160系列などがあるが、基本アーキテクチャを24bit拡張する。
R800はMMU拡張が行なわれるが、レジスタセットなど基本設計に手を加えていない。
RISC設計されたZ80として興味深い。

R800はRISCであるが、命令レベルでZ80と互換性を持つ複合CISCである。一般にあまり知られる事が
無いので内部パイプラインの詳細な資料は見つける事が出来ない。Z80同比五倍速との点から、
メモリのロードストア,WBを含め五段パイプラインである可能性が高い。
RISCなのでM1サイクルなどはパイプライン化されているので当然無い。Z80μコードも無いだろう。
eZ80を参考にするとその興味深い実装の仕組みを幾らか知る事が出来る。

715 :ナイコンさん:2011/10/09(日) 09:41:47.54 .net
R800命令はZ80可変語長を採用している。MIPSのようにコードのアラインメントが揃っておらず、
命令にパイプラインの振る舞いが直接現われない。
そのRISC設計は興味深くCISC(Z80)互換性を持つがゆえに設計思想はIntelのものに近い。
eZ80は三段パイプラインである。それに基づいて考えると、
1byte命令が続く場合、それはパイプラインを密にする。

INC A

等の命令は1byteなので、こうした命令が並ぶときR800のパイプラインは密になる。
この時のパイプラインは、

Fetch/Decode/Execution

である。しかしCISCなので3byte命令が存在する。そうした場合、内部的にパイプラインに
プリフェッチが加わる。

716 :ナイコンさん:2011/10/09(日) 09:53:40.06 .net
メモリーに対するロードストアが生じるようなLD A,(F300h)の場合、3byte長なので、
パイプラインは

Prefetch/Fetch&Dec/Fetch&Dec/Decode/Execution

となる。命令レベルではパイプラインを全く意識しないコードであっても
内部的にはプリフェッチが入り、パイプライン状態は変化する。後続命令にもよるが、
語長が異なると、アラインメントに差が生じ、必ずパイプラインハザードが生じる。

従ってこの部分にディレイスロットが入る。
この時ディレイスロットはコンパイラが挿入するのではなくチップ内で挿入される。

717 :ナイコンさん:2011/10/09(日) 10:05:36.71 .net
当然だがディレイスロットは分岐の際にも生じるだろう。特徴はパイプラインの振る舞いが
直接命令コードに現われるのではなく、チップ内で処理されると言う点だ。
(であるからZ80とバイナリ互換性を保つ訳だが)
R800のページアドレス参照時、1byte範囲外でウエイトが挿入される理由は、パイプラインの動作の
振る舞いに関係しているだろう。川崎の設計は小さなPrefetchQueueを備える。

語長が異なるだけでもパイプラインハザードの割合は大きく、全体としての効率は低くなる。
しかしR800やeZ80は3/5段でシンプルなのでペナルティは小さいだろう。
コード最適化を行なう場合、パイプラインの振る舞いに注意してコンパイラのコード生成
を行なうと効率は改善する。
分岐の際、1命令ジャンプするのではなく、コンペアとジャンプの二命令に分けると、速度が改善
されるかもしれない。
R800は基本的にRISC設計なのでLSIの設計如何でクロックを上げる事が出来れば、クロックに
比例し性能は向上するだろう。

718 :ナイコンさん:2011/10/09(日) 16:54:52.76 .net
>>716,717

ディレイスロットの意味を理解していない馬鹿。

ディレイスロットとは、分岐命令の直後に置かれた普通の命令のこと。
分岐命令の解釈・実行が始まった時点でその次の命令もCPU内に取り込まれて
しまっているから、それを捨てずに有効に使おうというところから始まった。

もしR800にディレイスロットがあるなら、Z80で

LD A,01H
JR label

のように書かれたプログラムは

JR label
LD A,01H

のように直さなければいけなくなる。当然互換性も無くなる。

↓は、SH2だが、RISCを理解するのに役立つ良書。これ100回読んで出直せ。
ttp://documentation.renesas.com/jpn/products/mpumcu/rjj09b0228_shprogram.pdf



719 :ウンコニートが自己紹介ww:2011/10/26(水) 07:57:34.63 .net
685 :ナイコンさん:2011/09/30(金) 00:20:39.04
>>681
ほんと、ウンコって単語が好きなんだね。3歳児みたい。

720 :ナイコンさん:2011/10/26(水) 19:17:54.10 .net
いきなりどうした? ノイローゼか?

721 :ナイコンさん:2011/10/27(木) 02:07:15.90 .net
自己紹介って書いてあるから自己紹介してるのかもね

722 :ナイコンさん:2011/10/27(木) 13:43:56.11 .net
夜中に脊髄反射みっともないええええええwwっうぇうぇwゲラゲラ

723 :ナイコンさん:2011/10/28(金) 17:08:03.47 .net
脊髄反射さんの脊髄反射っぷりが半端ないな。

724 :ナイコンさん:2011/10/29(土) 14:52:56.62 .net
誰か藤原覚ってやつ、何とかしれよ!
買う気もないのに釣り上げ!嫌がらせ!
MSXカテゴリの2/3が複数ID使った藤原一個人の出品!ありえない!
オークション嵐を許すな!

725 :ナイコンさん:2011/11/15(火) 16:43:48.49 .net
>718
基本的にR800は内部RISCであるがZ80互換命令セットなのでRISCではない。
Z80のバイナリ互換を持つので、必然的に命令セットはCISCとなる。
CISC命令体系を維持しつつRISC哲学を取り込むこの設計はIntelのComplexRISCに近い。

R800はMIPSやSH2のようにコンパイラが命令セットのディレイスロットを配置しない。
(SH2系列は工夫されているので通常ディレイスロットは目立たない)
RISCであっても、MIPSやSH2とは設計が大きく異なる。
あなたの提示した例はCISCであっても実行に違いが生じ互換性が無い。
分岐時のRISCのパイプラインの説明としても不向きだ。

加えてCISC命令体系は可変長なので、通常のRISCと異なりそれだけで命令パイプラインの振る舞いに
影響を与える。
このパイプラインの振る舞いはeZ80でも同様で、内部回路でパイプラインにディレイスロットが挿入
されている。
恐らくRenesasの78K0R・RL78系列の設計も命令が可変長なのでそれらに近いだろう。
しかし実際のパイプラインの振る舞いは設計者にしかわからない。詳細なデータが提示されていないからだ。

726 :ナイコンさん:2011/11/15(火) 16:55:05.95 .net
R800にはLD(MOVE)命令が複数存在する。R800によって新設された命令の幾つかは大きく三つに分かれる。
一つは掛け算命令(Z800互換だが、割り算は実装されていない)。この命令はクロック数が多く、
大半の命令がRISC的であるのに対し、乗算命令だけはCISC的で回路設計に問題があるように思う。

二つ目はIX,IYに対する拡張で、これはZ80の非公開命令として実装されていたものである。

三つ目はLD(MOVE)命令に対する拡張で、LD A,Hなどの機械語に三つのバリエーションを持つ。
これは同じ処理を三つの機械語から選択出来るという事を意味する。しかしアセンブラレベルでは
区別する事が出来ない。(ニーモニックが区別されておらずアセンブラも未対応の為)
違いは命令語の長さやレジスタセレクタビット列の配置の仕方だが、これらは命令デコーダに
直接影響する。つまりR800のパイプライン実行状態に依存して命令を並べ替える事で、より
最適化されたR800のコードが選択出来る事を意味するだろう。

727 :ナイコンさん:2011/11/15(火) 17:01:27.68 .net
恐らくこのLD(MOVE)命令の選択的なバリエーションは、可変命令語長(や当然分岐も含まれる)が要因の
パイプラインハザードによるレイテンシを隠蔽する為に新設されている。
なぜならこの選択は二つの意味で最終的な選択肢となりえるからだ。それはつまり、CISCを維持し
つつ、かつ、インオーダやアウトオフオーダーのような設計ではない設計においてパイプラインを
最適化する方法であろうからだ。
恐らくコンパイラによって最適化されたコードは、この選択的バリエーションを使いこなす事になるだろう。

これらの違いはR800の一つの特徴であろう。

728 :718:2011/11/15(火) 21:17:58.91 .net
>>725-727
俺が言いたかったのは、
>>716,717の言う「ディレイスロット」の意味が間違っているってこと。

>語長が異なると、アラインメントに差が生じ、必ずパイプラインハザードが生じる。
>従ってこの部分にディレイスロットが入る。
↑これ、分岐命令関係ないだろ。ディレイスロットは必ず分岐命令に関わってくる。

あんた1ヶ月間必死にRISCの勉強してたのか?
その割には全然言っていることがメチャクチャだな。

MIPSでもSHでもかまわんから、
ディレイスロットが入る場合の具体的なコード例を書いて見せてくれ。





729 :718:2011/11/16(水) 23:29:04.65 .net
>三つ目はLD(MOVE)命令に対する拡張で、LD A,Hなどの機械語に三つのバリエーションを持つ。
>これは同じ処理を三つの機械語から選択出来るという事を意味する。しかしアセンブラレベルでは
>区別する事が出来ない。(ニーモニックが区別されておらずアセンブラも未対応の為)

↑すまん、これが何を言っているのかよくわからん。
手元にあるMSX-DataPack turboR版のR800命令セットのページを見ても、
どこに君の言っているようなことが書いてるのかわからん。

あなたが一体どんな資料を見て以上のようなことをおっしゃっておられるのか、
私のようなバカにわかるように懇切丁寧に教えていただけませんか?

(書き込みが1日遅れたのはDataPackの発掘に時間がかかったからです。すみません。)




730 :ナイコンさん:2011/11/17(木) 12:11:23.42 .net
>729
あなたが知りたいと思う情報は、Masao Kawataが書いたZ80/R800 Assembly/Machine Language
Op-Code Tablesに書かれている。
一例として挙げるならば、LD A,D という命令は、0x7A、以外に0xDD,0x7A、または、0xFD,0x7A
というバリエーションを持つ。
同じようにシフト命令や他の命令においても、同一の処理を異なる命令で実装する事が出来る。
これらも選択的バリエーションに当然含まれる。
しかしこれらの手法はR800の特徴にのみ当てはまる事であり、ARMやMIPS、SHに適用できる訳ではない。
あなたは理解していなのでMIPSからやり直すと良いだろう。SHはその設計ゆえに教育上参考にはならない。

あなたが所有し参照している書籍は重要な資料とはならない。
今日までこうした視点でR800を評価した資料が見当たらない。それは本質的にRISCを理解する人が評価リポートを
書いていない証拠だろう。
当時のASCII Corp.は新卒社の入社希望ランキング10位以内に入っていたはずだ。優秀な人材がこれらの設計開発に
当たっていたとしても不思議ではない。
しかし恐らく設計者以外のエンドユーザー(特にホビイストや若年若者層)には理解することは難しかっただろう。

731 :718:2011/11/17(木) 22:05:50.20 .net
0xDD,0x7Aは未定義命令なはずだが。 

そのKawata某とやらはR800についてオフィシャルな発言が出来る立場の人?

あと、あんた>>728は無視?

732 :718:2011/11/17(木) 22:45:36.31 .net
今、
Z80 and R800 Assembly/Machine Language Op-code Tables
とかいうページ見たんだが。

要するに、
「LD D,DとNOPはほとんど同じである。
同様に、R800においては 41 も DD 41 も FD 41 もLD B,Cである」
と言っているにすぎないね。

単に、未定義命令に既存の命令と同じ働きをするものがあると言っているだけ。
RISCなんて全然関係ない。それどころか、そのページには
「Z80において22 nn も ED 63 nn も LD (nn),HLである」
とも書いてある。Z80はRISCじゃないだろ。

733 :718:2011/11/17(木) 23:07:04.84 .net
てゆうか、そのZ80 and R800 Assembly/Machine Language Op-code Tableって、
「日本のMSXマガジンを元ネタにしています」と書いてあって笑った。

MSXマガジンも確かにASCIIの発行物だけどね。
MSX-DataPackの方がどう考えてもオフィシャル資料としては上だろ。

#当時俺はMSXマガジンも全部目を通していたはずなんだが
#「R800においては 41 も DD 41 も FD 41 もLD B,Cである」
#なんて趣旨のことが書いてあるのを見た覚えが無い。
#まぁ、見落としかもしれんし、さすがにMSXマガジン全部は持っていないんで
#これに関しては反証出せんわ。

734 :718:2011/11/17(木) 23:23:22.50 .net
>三つ目はLD(MOVE)命令に対する拡張で、LD A,Hなどの機械語に三つのバリエーションを持つ。
>これは同じ処理を三つの機械語から選択出来るという事を意味する。

↑ここで既にあんたは破綻しているね。例として「LD A,H」を出した時点で負け。

LD A,H は、普通にZ80だと 7C だが。
R800の場合、DD 7C はLD A,H ではなく LD A,IXH になる。
全然違うじゃねーか(笑

百歩譲って、LD A,H はタイプミスかなんかだったとして目をつぶってやろう。
次にあんたが出した
LD A,D が 7A, DD 7A, FD 7A の3つに割り当てられていたとして、
何のメリットがあるの? 誰が得するの?

少なくともDataPackでは DD 7A なんて認めていない。
もしアホなプログラマーが LD A,D のつもりで DD 7A を使ったら、
将来R800の上位CPUが出て、DD 7A に全く別のコードが割り当てられたら
そのアホプログラマーの書いたソフトは動かなくなる。

735 :ナイコンさん:2011/11/18(金) 01:35:00.50 .net
新規命令使うとパイプラインがどうこうで並列実行されるのかしらとおもったり。
バリエーション三つはさすがに無駄よね。

736 :718:2011/11/18(金) 07:08:50.16 .net
おそらく、Z80の時代から 7A DD は LD D,A として機能していた。
しかしザイログはそんな無駄なものを命令コード表に載せなかった。
ただそれだけの話。

R800になってから追加された画期的な新機能なんかじゃない。

737 :718:2011/11/19(土) 10:20:27.79 .net
よくよく考えたら、
「同一の処理を異なる命令で実装する事が出来る。 」
なんて8080の時代からあるんだよな。
Aレジスタが0かどうか調べるのによく使われる「AND A」「OR A」がそう。
この2つは全く同じ挙動をする。(ニモニックは違うけどね)

「同一の処理を異なる命令で実装する事が出来る 」8080ってスゴイCPUなんだな(笑

>>730
あなたはCPUというものを全く理解していなので8080からやり直すと良いだろう。

738 :ナイコンさん:2011/11/19(土) 19:17:08.31 .net
A1WXのメモリ増やしたいんだけど20ピンDIPパッケージな1MビットDRAMが手に入らない・・・

739 :ナイコンさん:2011/11/19(土) 19:35:59.32 .net
>>738
諦めてユニバーサル基板とか変換基板つかって、16Mbitぐらいのをなんとかつないでみるとか…


そういや、カートリッジスロット基板+SRAMで、リフレッシュとか全部無視してつないで、RAMカートリッジを作ったことがあるが
内蔵RAMんとこにはSRAMは無理なのかしら…

740 :ナイコンさん:2011/11/19(土) 20:11:39.12 .net
馬鹿

741 :718:2011/11/20(日) 22:12:27.02 .net
>>736

「おそらく、Z80の時代から 7A DD は LD D,A として機能していた。」

と書いたあと、それが本当に正しいのか急に気になった。
俺は>>730氏みたいなウソツキにはなりたくないんで。

そこで、MSX2+(A1WSX)で試してみた。(MSX2+なので当然CPUはZ80)
次のBASICプログラムを実行してみた。

10 CLEAR 200,&HCFFF
20 A=&HD000
30 READ D$:IF D$="!" GOTO 100
40 POKE A,VAL("&H"+D$)
50 A=A+1:GOTO 30
100 DEF USR=&D000:T=USR(0)
110 PRINT HEX$(PEEK(&HD100))
120 END
200 DATA AF
210 DATA 01,22,11
220 DATA 11,44,33
230 DATA 21,66,55
240 DATA DD,21,88,77
250 DATA FD,21,AA,99
260 DATA DD,7A
270 DATA 32,00,D1
280 DATA C9,!

742 :718:2011/11/20(日) 22:12:51.14 .net
アセンブラ的には次のようになる。

XOR A
LD BC,01122H
LD DE,03344H
LD HL,05566H
LD IX,07788H
LD IY,099AAH
DB 0DDH,07AH ; ←渦中の命令、DD付きLD A,D
LD (0D100H),A
RET

実行結果は"33"だった。みんなも実行してみよう。

結論:「DD 7A は Z80の時代から LD A,D だった。」

もう>>730氏も出てこないようなので俺もコテハン「718」はこれを最後にする。


743 :ナイコンさん:2011/11/25(金) 11:41:03.23 .net
SCCにRAMを増やしたいけど(ry

744 :ナイコンさん:2011/12/08(木) 23:28:39.74 .net
>「LD D,DとNOPはほとんど同じである。
>同様に、R800においては 41 も DD 41 も FD 41 もLD B,Cである」
>と言っているにすぎないね。

今のチップを扱ってる人は一見こういう無駄に見える部分に有意な価値を見出す。
古い考えの人はこの部分に価値を見出せないですね。

>MSX-DataPackの方がどう考えてもオフィシャル資料としては上だろ。
チップのデータシートの方がオフィシャル資料としては上でしょう。
汎用LSIで構成されてるのだから。そのデータシートは見当たらないですね。
R800のデータシートやアプリケーションマニュアルありましたらください。
MIPSならきちんと書かれているけれど、川崎でもNECエレクトロニクスの8bitでも、
RISC設計であるのにパイプライン詳細を記述した資料は見当たりませんね。


745 :ナイコンさん:2011/12/08(木) 23:35:18.71 .net
>735
今のCPUと比較してより小さな設計なので並列実行云々とはなりません。
歴史的に珍しい設計なので内部のパイプを話題にしているだけです。
コードは従来どおり普通に書けば良いだけです。

当時のベンチマークではV33Aや286等と比較して良い評価を得ていますよ。
ここにはR800の評価が若干うれしくない人が居るようですが。


746 :ナイコンさん:2011/12/08(木) 23:52:56.48 .net
>>744

で、あんたはR800のデータシートを持っているの?

もし持っているなら、なぜ最初にそれを出さない? なぜ最初に
「Masao Kawataが書いたZ80/R800 Assembly/Machine Language Op-Code Tables」
とかいう糞ホームページを出した?

>今のチップを扱ってる人は一見こういう無駄に見える部分に有意な価値を見出す。
>古い考えの人はこの部分に価値を見出せないですね。

だから、「同じ働きをする複数の命令がある」
ってのは8080の時代からあるって言ってるだろ。
あんたは>>726で、それがさもR800固有の機能であるかのような
ウソをついているんだが。

>川崎でもNECエレクトロニクスの8bitでも、
>RISC設計であるのにパイプライン詳細を記述した資料は見当たりませんね。

1980年代はともかく、いまどきはこういう詳細情報は
守秘義務契約を結んだ相手にしか出さないのが常識。
そんな常識も知らないなんて、この業界で仕事したこと無いだろ。

747 :ナイコンさん:2011/12/09(金) 02:34:38.33 .net
>>741
2+はZ80A単品は入ってない。周辺複合したMSXエンジンとやら。丸々入っているのか互換なのかは判らん。

748 :ナイコンさん:2011/12/09(金) 06:08:30.78 .net
しかし2+がR800ではないのは間違いない。

もし2+のCPUがR800だとしたら、それはそれで衝撃的大ニュースだな。

749 :ナイコンさん:2011/12/09(金) 08:48:41.56 .net
>741
なぜBASICでアセンブラを書くの?
モニタを使った方がいい。マシン語モニタ'LORD'なら、

>mwD000
xor a
ld bc,01234h
ret

と書いて、16進コードではなくニーモニックで入力、

>goD000

で実行終了だけど。結果のレジスタ表示はrsコマンドで確認出来るし。


750 :ナイコンさん:2011/12/09(金) 08:56:50.87 .net
古いけどSimple asmであれば、run"simpleasm"と実行し、コマンドエディタ上から、

10 xor a
20 ld bc,1234h
30 ld (d100h),b
40 jp 9000h
と書いてから、

>A o/c700
でアセンブル後に指定メモリにロード、その後モニタコマンドで

>G c700
>D d100
等とし結果をダンプ表示すれば良いのだけど。
BASICで16進コード書く意味無いよ。


751 :ナイコンさん:2011/12/09(金) 08:56:57.15 .net
>>749
モニタソフトをもっていること前提?

752 :ナイコンさん:2011/12/09(金) 21:31:58.91 .net
>>749,750
マシン語の入力手段など問題ではない。

問題は「DD 7A はR800以外でも LD A,D か?」だ。

「DD 7A はR800で初めて LD A,D になった」とぬかすバカ(>>726)がおってのう。
そいつを説得する必要があったのじゃよ。

753 :ナイコンさん:2011/12/17(土) 19:14:08.66 .net
誰か藤原覚ってオークション嵐、何とかしれよ!
買う気もないのに毎晩吊り上げ!
複数IDで高値転売!
MSXカテゴリの2/3が、藤原1個人の出品!ありえない!

よしまつは仕事中2ちゃんねるやめれ!

754 : 【大吉】 【1152円】 :2012/01/01(日) 00:08:55.48 .net

                    _____
                  /::::::::::::::::::::::::::\
                 /:::::::::::::::::::::::::::::::::::::::\
                |;;;;;;:::|_|_|_|_|:::;;;;;;| 
                | ミ./  \,)(,,/  ヽミ |
               ( 6.   -◎─◎-    ∂)--,,,_
               ,/ヽ  ∴ )(o o)( ∴ ノ   , ゙',
               r´  ヽ 、   ,_ 3_,.   .,,ノ    /  l
             _,f'、   ,, ヽ.______.ノ゙''''i、,-''"゙i  i
          _,,r''´  ゙ "´            i   l  ,'
       ,,.‐'´ ゙'' ,、,,‐'iン'   .....   ..:::..     ', r,‐‐' ノ
   r、__,-'´   _,,-'´_,,,.-ヽ,       ,' '、    。  l i,)  /-,,_
  ヒ'-'ゝ. 、 ,,.-‐'',.-''"´    l'、,. 。  ,...ノ  ゙'、,,_  ノソ_,/    `゙'‐,
  ゝミ_,,ノ"  ,'´       iヽ,`゙゙゙´       ゙゙"./~i      ....::',
        ト;:::..      ', i'、         ,/ノ.,ノ     ..:: ゙゙ ',


755 :ナイコンさん:2012/01/31(火) 17:01:00.18 .net
論理回路設計者であれば、命令アラインメントの揃っていないISAにおいて、
RISC設計する場合、二者の選択が可能だと気づくと思うが。
一つは、ニーモニックの命令互換性は有るが、異なるサイズのアラインメントの命令を用意し
プログラムコードとしては互換性が無くなる従来型の命令を並べ変える事。
もう一方は内部に遅延スロットを挿入すること。これは命令互換性をもたせる事が出来る。
前者は同じ命令でも長さが異なる命令で対応可能だろうが、恐らくこのコードは
C言語の場合値引渡しが多いのでメモリアクセスのレイテンシに効いてくる。
前者の場合命令の並びが失敗すればCPUは内部でロックする。そういう使いづらさを避けるなら
後者を選択するだろうな。
そもそもZ80の非公開命令を云々言っても意味が無いが、偶然備わっていた非公開命令を大いに利用する
ことは可能だろう。
確かi860/960や68060は命令コードレベルでRISC内部回路に影響を与える珍しい(奇妙な)設計だが極端に言えばそれと似ているな。

総レス数 981
378 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver.24052200