懐かしのMS-DOSプログラミング ver.2

■ このスレッドは過去ログ倉庫に格納されています
2014/05/15(木) 22:29:17.71ID:wgclvry3
mov dx,offset msg
mov ah,9
int 21h
mov ax,4c00h
int 21h

msg db '懐かしのDOS時代のプログラミングについて語ろうぜ ver.2',0dh,0ah,'$'

前スレ
懐かしのMS-DOSプログラミング
http://toro.2ch.net/test/read.cgi/tech/1271821343/
2014/05/19(月) 22:00:24.02ID:2b3njYOH
>>6
でもfarが使えるから大きなデータは外へ出しちゃえばかなりのことができる。
ご丁寧にfar文字列処理関数も入ってる。
2014/05/19(月) 22:39:59.72ID:z/GGX35z
Turbo Cがタダで使えるのに LSIC86 試食版を今更使う理由が分からん
2014/05/19(月) 22:41:39.00ID:z/GGX35z
>>13
CP/M 対応も考慮したプログラム作法が理解できんとは
2014/05/19(月) 22:58:44.19ID:hJ6U6wcV
CP/M86なんて使ってたやついたのかね。
call 5なんて、知識レベルでの互換性の意味しかないだろ…。
2014/05/19(月) 23:16:56.59ID:zeiiQxJy
四半世紀前に、バイト先の別働隊が
コンカレントCP/MとかC-DOSの案件
やってたのを思い出した。
2014/05/20(火) 03:50:16.00ID:XZ8PbsoH
>>14
コードセグメントが near ポインタのみの64KBというのは、ちと狭すぎやしないか‥
2014/05/20(火) 03:51:19.05ID:XZ8PbsoH
>>15
フリーの MS-DOS 用 C コンパイラってあるの?
2014/05/20(火) 06:20:16.14ID:nqCwlR/v
>>20
Turbo C
GCC(要djgpp)
他にもあるやろ
2014/05/20(火) 07:28:38.16ID:wQYgGtk6
>>17
そゆこと
DOSでcall 5を使うのは「俺はお前らと違ってCP/Mから知ってんだぞドヤァ」の意味にしかならない
2014/05/20(火) 07:38:46.62ID:z3UIT7Xx
>>16
そこで自分から“CP/M”を口にしてしまうようでは、煽り師失格だな
2014/05/20(火) 12:39:07.22ID:XZ8PbsoH
>>21
turbo c ってフリーなの?
でもオープンソースじゃないよね
gcc(djgpp) は i386 以上を要求するしね
2014/05/20(火) 13:07:11.55ID:3nhdRzVT
>>24
オープンソースでi386未満がターゲットのコンパイラが欲しかったの?
条件後出し乙。

その条件だと心当たり無いわ。
役立たずで申し訳ない。
2014/05/20(火) 14:31:21.65ID:H9rWh2ee
>>24
small-cでも使ってれ
http://www.cpm.z80.de/small_c.html
2014/05/20(火) 22:16:41.98ID:DTGkTniz
パソ通全盛期の80年代末、フリーウェアはほとんどがTurbo Cで書かれてたね。
俺はQuick Cへ行ったけど。
2014/05/20(火) 22:49:40.37ID:EHPnqsKB
そうか?
アセンブラも多かった気がするよ。
そんな俺は、TurboPascalをasm文だけ使って構造化アセンブラとして駆使してた。
2014/05/21(水) 01:21:44.42ID:0dccVoFD
TurboPascalってasm文をテンポラリファイルに書き出して子プロセスでtasm呼び出してたし、
asm文しか使わんなら素直にtasm直に使ったほうが便利だろ。
2014/05/21(水) 02:16:52.39ID:4HBOiu0N
いや、tasmいらんよ、アセンブラを内蔵してる。
tasmとか呼び出すのはとろくさいC系だろ。
2014/05/21(水) 10:42:59.38ID:4V2JTL+X
OpenWatcomのことを思い出してあげてください・・・
2014/05/21(水) 14:20:23.49ID:9UV2dBKd
>>24, >>25
Open Watcom C/C++ はどう?
DOSエクステンダ不要なバイナリーも
作れたハズ
2014/05/21(水) 14:21:42.68ID:9UV2dBKd
リロってなかった。スマソ
2014/05/21(水) 23:02:34.16ID:IjzJywdz
Turbo Cはコンパイルも速いし、吐き出したコードもMS-Cより2〜3割速かった
2014/05/21(水) 23:53:33.54ID:+bwDOnUf
Open Watcomはインラインアセンブラ周りでいろいろ罠があって勧めにくい
2014/05/22(木) 21:58:06.98ID:YYZRRS+G
QuickCって学習用と謳っておきながら
ラージどころかヒュージモデルのライブラリまで入ってたね。
実際にQCでそんな巨大なアプリ書く奴いたのだろうか・・・
2014/05/22(木) 22:12:43.70ID:b8lwZlJ1
そらゲームとかの素材置きまくったらあっという間ですわ
2014/05/22(木) 22:21:04.27ID:RtFeOXjE
ヒュージポインタはいまいち信頼出来ないと思っていた‥‥
セグメント-オフセット処理は自分でなんとかしないといけないと思うよ‥‥
というか、やっぱり 64KB 以上のオブジェクトをそのまま使おうと思っちゃいけない、自分で完全管理するしかないと

というわけで、LSI-C にラージモデル(だけでいいのでそ)のサポートがほしかった

>>35
自分で探すべきなんだろうけれども、たとえばどんなところが罠なんですか?
2014/05/22(木) 22:35:13.79ID:JBRw0Ovv
>>38
Open WatcomのBugzillaでinlineとかをキーワードで検索するといろいろと
何年も放置された未修正のバグの山が出てくる
40デフォルトの名無しさん
垢版 |
2014/05/23(金) 22:03:27.43ID:8WEuVIde
鯖移転完了age
2014/05/25(日) 03:30:28.41ID:zdwlk8KI
LSIC-80 今でも使ってますよ。XPまではDOS窓で動いたのに、7になったら
動かなくなって、仮想マシンとか調べたら対象のOSをインストールしなければ
いけないのね。困ってたらnetでmsdos.exe見つけ、それ経由で使えてラッキー。

8085+82XXの基板がまだあって、去年は\3万の仕事を2件やりました(w
DOSでCW、エコロジーとか使ってた頃が懐かしい(w
2014/05/28(水) 21:59:10.29ID:YXeI0Mct
CWはemm386.exeと相性悪くロックしたりした。
2014/05/29(木) 02:06:23.46ID:PdPWqwDY
REDもそうかな? CWとほとんど同じ使い勝手だったのは覚えてるけど。
2014/05/29(木) 21:52:52.51ID:iJk0mA8D
初期の仮想EMSドライバは各社癖があったよな
45デフォルトの名無しさん
垢版 |
2014/05/29(木) 23:17:32.12ID:r/lE+ONP
MELEMM.386 が一番使いやすかったな。
2014/05/29(木) 23:33:26.42ID:bDiV044Z
ああ俺もだな。
メルコの4MB-EMSボード使っていたからというのもあるけど
2014/05/30(金) 21:55:57.25ID:k82pJ+V4
細かな指定ができるのはメルウェアが一番だったな。
ディスクキャッシュは糞だったけど。
2014/05/30(金) 23:53:37.60ID:l4Bla4Ts
ダメルコのディスクキャッシュソフトで何枚FDが死んだ事か…。
2014/05/31(土) 18:47:26.00ID:zlcjKUg4
MSDN垢持ってるひとは今でもMS-DOS6.22が手に入る。6.2/Vも。
16bitコンパイラはあったかな。
Visual C++1.52cのリンカーってDOSのEXE吐けたっけ?
2014/05/31(土) 18:51:06.64ID:zlcjKUg4
そういえば今年はIBM-PC/AT誕生30年
2014/05/31(土) 23:28:30.03ID:RXEJjbIi
吐けるよ。win3.1用exeもdllもvbxも
quick win用exeもスタティックlibも
P-codeもcomも。
2014/06/05(木) 15:33:44.43ID:1e659sg9
RAMDiskで768KBぐらい使って、そこに中間ファイルのパス張っておくと
コンパイルが速いってのをやったなあ。5インチ縦置き20MBのディスクの頃。
2014/06/06(金) 07:01:46.25ID:GhQ1NNeD
TurboPASCALはコンパイル速かったなあ
ディスクキャッシュ上でコンパイルして実行。フロッピーへは遅延書き込み
2014/06/06(金) 14:24:57.88ID:Lk2ev8dF
パスカルはワンパスでコンパイルできる言語仕様だからな。
ヘッダも分離してないし、当時のマシンスペックには最適の高級言語だった。
関係ないが、アップルのSwiftがちょっとパスカル臭がしてうれしい。
2014/06/06(金) 22:16:08.58ID:C9rQRi3A
Turbo Cも1パスで高速、安価、吐き出したコードもMS-Cより高速と
いいところずくめだった。日曜プログラマは一斉にTCへ流れた感じがある。
特にMSAが98用に移植した1.5が大ヒットしたね。
2014/06/06(金) 23:07:19.53ID:eycrJLmS
プリプロセッサがあったり前方参照が可能なCが1パスでコンパイルできるわけない
2014/06/06(金) 23:49:03.75ID:Rvh1VUpU
ところが、BorlandのCはプリプロセッサも含めて1パス
#if中でsizeofあたりも使えたんだぜ

最近clang化したせいでできなくなった
2014/06/06(金) 23:51:25.06ID:eycrJLmS
ああ、1パスの意味が分からん人か。
2014/06/07(土) 00:06:16.41ID:Rlb4AoSA
理解不足で速いと言いたいだけだろとも思ったけど、clang化でできなくなったというからには何か構造的なレベルでこ違いを感じてるのかなあ

つか#if内でsizeofって逆にパス増やしてない?それともプリプロセッサ内でも自然に扱えるように独自実装積み上げてたのかな
2014/06/07(土) 00:12:52.09ID:1rlrU+oI
たーCは無駄なコード吐いてたな(Pコード形式?)
2014/06/07(土) 00:23:13.63ID:URPK0ZG/
Cはどれも似たり寄ったりだけど、ターボアセンブラは至宝!
2014/06/07(土) 00:26:28.78ID:URPK0ZG/
QuickCのコンパイル速度だけは感動した気がする
2014/06/07(土) 00:47:18.01ID:ftf2LwSc
>>57
> #if中でsizeofあたりも使えたんだぜ

#if sizeof(int)==4
typedef int int32;
#elif sizeof(long)==4
typedef long int32;
#endif

とかやれても limits.h あるし意味ないよなあ、移植性失うし。どういう便利な使い方あんの?
2014/06/07(土) 01:01:08.85ID:xkbQeKRh
>>56
pascal にも前方参照あるし、前方参照は call 命令だけ吐いといてあとからオペランド埋めればいいだけだよ
2014/06/07(土) 01:14:04.36ID:ftf2LwSc
>>64
> pascal にも前方参照あるし、

本質的にできないからforwardなんてのが後からUCSDに追加されたりしたんだけど。
2014/06/07(土) 01:31:51.39ID:xkbQeKRh
>>65
それがどうかしたのか?
前方参照できるのは事実だろ。
2014/06/07(土) 01:59:08.37ID:Rlb4AoSA
ん?
横レス
本質的にできない、ってワンパスでは、ってことではないのかな。実際ワンパスで実現する方法はないよね
いや、まああえて言えばシンボル保存した上での実行時の遅延評価までやるのなら可能だろうけど。
cでそんなことやるにはobj-cみたいにランタイム用意しなきゃ無理だろ
2014/06/07(土) 08:34:28.22ID:Q+8mfhVa
機械語レベルの前方参照なら>>64の言う通り、何も難しい事は無いし
ソースレベルの前方参照は、C言語はそもそも不可能だろ、普通forward宣言が必要なのを前方参照とは言わんしな
(C++でクラス内ではまだソースコードに出現してないメンバ変数名を使えたりするようなのがそれ)

>>59 ひとつのコンパイラがプリプロセスから構文解析、意味解析をトークンごとに一気に行ってるからできるわけでパスは増えてないよ
ていうかこれが1パスでないなら1パスって何なんだ
2014/06/07(土) 08:37:32.96ID:xkbQeKRh
>>68
> ソースレベルの前方参照は、C言語はそもそも不可能だろ、普通forward宣言が必要なのを前方参照とは言わんしな

ごめん、意味がわからない

> (C++でクラス内ではまだソースコードに出現してないメンバ変数名を使えたりするようなのがそれ)

そんなことできないし
2014/06/07(土) 08:58:02.74ID:Q+8mfhVa
話にならんな

class t {
 int f(){
  return m; //この時点でmを参照できる
 }
 int m;
};

こういう風にまだ出てきてない宣言を使えるのが前方参照で、これは1パスでは無理
CやPascalみたいにプロトタイプやforward宣言が必須なものは、その情報だけで呼び出し側の生成には充分だからこそ必須になってる訳で1パスで可能
2014/06/07(土) 09:50:05.47ID:x1mq/AuX
バブル絶頂の80年代末、パソ通が黎明期から普及期へと移り変わった頃
Vz + TCCは俺の青春って人は多いだろうね
2014/06/07(土) 12:49:34.43ID:b5C+7+IW
>>71
ちょっとおそい90年代前半だが、それでも Vz + lsic が青春でした‥
2014/06/07(土) 15:05:20.64ID:jBtwYmah
EZ→TunedEZ→NITemacsだったかな。
VZは仕事で使ってたか。
2014/06/07(土) 20:54:24.74ID:A/YL8+nC
VZを常駐させるようになって、いままで多数使用していたフリーソフトを整理できたからな。
2014/06/07(土) 21:51:29.55ID:SxbAzKvi
FDか
2014/06/08(日) 10:30:07.52ID:tmGKmt/N
fdとki-shell 手放せなかったな
2014/06/08(日) 10:33:51.59ID:397riybv
FDのひと死んじゃったんだよね南無南無
2014/06/08(日) 15:14:31.88ID:tmGKmt/N
【FD,MIEL,WTERM作者】出射 厚氏にお礼を言うスレ
http://hello.2ch.net/test/read.cgi/i4004/1128860398/
2014/06/13(金) 16:54:32.08ID:5PYqtJdq
各自がシステムのフロッピーとデータ用フロッピー持って、共同パソコンを一々
立ち上げてはエディット・コンパイルとかやってたな。システムは左側。
HDD内蔵のパソコンが出た時は、フロッピースロットが1つしかない!って慌てたわ。
2014/06/13(金) 20:08:52.74ID:18fXhIp8
システム用フロッピーには書込み防止シールを貼る
2014/06/13(金) 21:23:35.62ID:OOuIm2sp
8inchだと角を切るだっけ?
2014/06/13(金) 21:25:25.51ID:nMwWs4TK
フロッピースロットが1つでも何とかなってたような記憶が
なんかフロッピー入れ替えてた覚えがある
2014/06/13(金) 22:49:15.95ID:dvtrgKhY
MS5550は3FDDでシステム&プログラム&データ
2014/06/13(金) 23:26:29.98ID:Dklz7Mrg
おれが大学当時、大学の授業のために5インチフロッピーが必要ってのがあった。
生協で買ったよ。1枚700円ぐらいしてた。
2014/06/14(土) 00:15:02.36ID:qR+dLg+1
>>80
書込み防止したまま書込みをすると警告と再試行、中止、無視の
指示要求が出る
その状態でフロッピーを入れ換えて再試行をするとDOSは入れ替え前の
状態から書き込むのでフロッピーの中身が大変なことになる
2014/06/14(土) 00:33:31.63ID:k0KIn+V4
int 1bh
2014/06/14(土) 01:05:43.43ID:SwBFDyk2
>>85
PC-9801で最初にHDDを内蔵したやつでは、普段の使い方で同様に
「さっきまでのディスクのディレクトリを上書き」が発生するという酷いバグが
2014/06/14(土) 07:57:39.11ID:gjSJ5u3i
受信ringバッファから読みだすルーチン: LSIC80、石は8085=8080コード
char* _asm_u(char*);    /* 左辺値にするための宣言*/
#define ring(ptr,ring) *(_asm_u("\n\tMVI\tH, HIGH " #ring "_\n" \
"\tLDA\t" #ptr "_\n\tMOV\tL,A\n\tINR\tA\n\tSTA\t" #ptr "_\n"))
char ch1read(void) { return ring(c1r_rpt,r1ring);

受信ringバッファに書込む割込み処理の、正常受信時の処理:
    ring(c1r_wpt,r1ring) = ACHDR;<---I/Oreg. B000h番地

rptとwptはbyte、ringは[256]にして自然ラップアラウンド、添え字計算時の
アドレス演算がワード演算されないように最適化させてます。
2014/06/14(土) 10:52:22.24ID:EZBaXLlr
ptrを1バイトにするために

    MVI  H,HIGH ring
    LDA  ptr
    MOV  L,A
    INR   A
    STA  ptr
    MOV  A,M

として11バイト50クロックにするより、素直にptrに2バイト使って

    LHLD  ptr
    MOV  A,M
    INR   L
    SHLD  ptr

として8バイト44クロックのほうがメリットあると思う。

ptrを1バイトにする以前にringバッファに256バイトもいるのかまず検討すべき。
2014/06/14(土) 16:06:44.75ID:gjSJ5u3i
わを!4行でできるのか(*o*) ptrの頭はゼロのまま・・・あ!違うか初期化で
先頭+00にしとくのですね。今度使ってみます。ありがとう!!
ringは32と64で周回遅れが出たことがありますが、
主な理由は++した後マスク演算が要らないからです。
4CHあって、各受信256送信512、実装8KBの半分近くがringです(w
再構成するフレームがせいぜい80byte5種類位なのでこれでも余裕です。
最初に書いたときは受信バイト数を持って、書き込みで++読み出しで--、
片方は割込みだからタスク側で DI/EI してとかややこしい事書いてました。
自分では簡潔になったと思ってましたが、診て貰ってよかったです(m_ _m)
9190
垢版 |
2014/06/15(日) 02:32:02.60ID:n1YZfzi+
>>88 の部分は確かに上の最適化可能ですが、システム全体の性能はどっこい
なことが判りました。メインループで「そのCHに受信データがあるか?」の判定
のところで、rptrとwptrを並べて配置してあることを利用して、
    LHLD rptr  ;wptrとrptr両方
    MOV  A,H
    XRA  L
    CNZ  そのCHの受信フレーム再構成処理   と最適化してます。
こっちでメモリアクセスが1行増えるから、全体の性能はどっこいなのでした。

80C85のデータシート見たら、機械語の説明表でステート数とサイクル数
という欄があるのですが、これらはどう見ればいいのですか?
2014/06/15(日) 02:37:47.49ID:4v6gpdfe
ここで答え書いてもらうより
ステートとかで検索してみれば
9390
垢版 |
2014/06/15(日) 03:32:31.88ID:n1YZfzi+
一般用語から類推すると、ステート数=CPUクロック数 だと思えますが、
サイクル数ってのがステートより少し小さい数字で出ていて、こちらが何の事か
想像できないんです。どちらの数字に1/原CLKを掛けたものが実行時間とか。
2014/06/15(日) 04:19:34.74ID:4v6gpdfe
メーカーさんのサイトでも覗いてみれば
もしくは電凸?答えられる人いるかな
うろ覚えだからな、ヘタにかけないし
2014/06/15(日) 09:45:03.27ID:UYBdvTKq
当時はステート数で実行時間を計算してたよ
DMAがどうとかウェイトサイクルがどうとか、そんな話だった気がする
2014/06/15(日) 22:24:56.95ID:QhTFjgfY
何クロックだかで1ステートとか1サイクルとか、そういう定義があった。
きちんとした資料なら定義がちゃんと書いてあるだろうし、書いてないならいまさら
確認するのは無理だからあきらめろ。
9790
垢版 |
2014/06/18(水) 04:47:59.32ID:Nalm9W0l
沖電気の80C85のpdfの中探してみましたが、定義なしで使っていました。
4ステートの命令が1サイクル、7ステートが2サイクル、10ステートが3サイクル
なので、3で割った商で近似できそう。メモリアクセスの量みたいですね。
reg,reg 命令が一番少なくて、LDA/STAのようにメモリアクセス1回だと2サイクル
メモリアクセス2回だと3サイクル、call/return はpush/pop & jump だから
もっとサイクル数が多い。
2014/06/18(水) 04:53:41.05ID:Aotfe+zg
8085は条件分岐が成立しないと 命令の3バイト目の読み込みをスキップするから2サイクルになるぞ
9990
垢版 |
2014/06/18(水) 17:22:44.57ID:Nalm9W0l
その辺は成立/不成立で両方書かれています
2014/06/18(水) 20:20:12.69ID:yyD7Duxd
すでに全然DOSと関係ないな…
2014/06/18(水) 20:28:09.97ID:F0gj5v/Q
V30の80モードでも動かしてるんだろう…(笑
2014/06/18(水) 21:24:27.45ID:uuptSN8c
男なら黙ってリアルモード実行
プロテクトモード、なにそれ美味しいの?
2014/06/18(水) 22:51:53.40ID:Ls9SsycK
>>101
Z80にしてほしかったね、多分今でも買う‥
2014/06/18(水) 22:53:07.93ID:Ls9SsycK
>>102
VRAM を一時的に UMB にして FEP を放り込むとかできないじゃないか
105デフォルトの名無しさん
垢版 |
2014/06/28(土) 22:23:23.14ID:mzWdk+zj
1980年代、NECのドットプリンタ(PC201HPR*?)が70万円だった。

PC9801VM2が40数万円、40MBのHDD付のPC9801VX4(?型式忘れた)が80万円。
たった40MB(GBじゃない)のHDD付で40万円も高かった。信じられる?

もっとも、ずっと前のYHPなんかFDに相当するシステムだけで1千万円、
プリンタみたいにきれいな印字ができなくてグラフを描画するプロッタ
が300万円したから、その時代よりは随分安くなったが。

ああ、当然、FORTRANのプログラムはタイプライタで横にテープに穴を
空ける装置で打ち込んでた。ディスプレイなんて気のきいたものはなかった。
2014/06/28(土) 23:09:11.24ID:q7wXIZ2k
VM2とCバスに差す40MBHDD(互換品)なら持ってた
DOSの起動が速くて感動した

FORTRANはグリーンディスプレイが付いてた世代
メインフレームに転送ボタンを押すと、瞬時に実行された!
2014/06/29(日) 00:55:14.11ID:6LH5HMWz
うちはイエローディスプレイだったな。
108デフォルトの名無しさん
垢版 |
2014/07/20(日) 11:52:05.80ID:UVunCW/j
★2ch勢いランキングサイトリスト★

◎ +ニュース板
・ 2NN
・ 2chTimes
◎ +ニュース板新着
・ 2NN新着
・ Headline BBY
・ unker Headline
◎ +ニュース板他
・ Desktop2ch
・ 記者別一覧
◎ 全板
・ 全板縦断勢いランキング
・ スレッドランキング総合ランキング
・ ログ速
◎ 全板実況込み
・ 2勢
・ READ2CH
・ i-ikioi

※ 要サイト名検索
2014/07/30(水) 17:51:53.69ID:mLoOPXGz
またとんでもない懐古趣味のスレがあった物だ。
懐かしいな。
4bit,8bitでゲームを作り、インベーダーではCPUやROMが無くなり海外まで資材担当にリュックを背負わせて買いに行かせたり。
インベーダーゲームの基板を買取にヤクザが会社に押しかけたり。

CP/M CP/M86 MP/M 色々やったな。
DOSには腹立たしい思いしか無い。
CP/Mのライセンスは10万とか30万とか安かったしただで使うケースも多かった。
しかしMSDOSになってから突然1000万だとふっかけられて頭に来た。
西みたいな若造が窓口だなんて頭に来た。
2014/07/31(木) 00:37:06.37ID:DmfmvJIe
LSIC-80のリンカで、ROMのアドレスを指定しないと0100h番地からになるのは
CP/M時代のルールを引きずってるんだよね。
2014/07/31(木) 19:17:58.52ID:XPS+ftrb
>>110
あれだろ,メモリ上ではプロセスの頭にヘッダが確保されている,そのヘッダの大きさにあわせているんだろ.
でもあのヘッダ(Program Segment Prefix) の半分はコマンドラインの内容だったたりするのは MS-DOS 的だったかと
(CP/M なら FCB(FileControlBlock) で引数を指定するからな

なんのための 80h バイトだったんだろ?
2014/07/31(木) 20:14:48.22ID:D+uyueSN
>(CP/M なら FCB(FileControlBlock) で引数を指定するからな
>
>なんのための 80h バイトだったんだろ?

コマンドライン全体がコピーされるしデフォルトのDMAでもあった筈
2014/07/31(木) 21:42:42.33ID:bL+lPW5R
80h〜ffhのディスクバッファはなぜかDMAと呼ばれたたな。
フロッピーはDMAで転送すると思い込まれてたんだろうね。
それともdisk 何とか areaとかの略称だったのかな
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況