8ビットCPUでC言語?ないないありえないっしょ!Part2 [無断転載禁止]©2ch.net

1ナイコンさん 転載ダメ©2ch.net (ワントンキン MMd0-M1Qy)2016/08/11(木) 20:04:20.21ID:jC3JGzA8M

【前スレ】
8ビットCPUでC言語? ないないありえないっしょ! [無断転載禁止]©2ch.net
http://hanabi.2ch.net/test/read.cgi/i4004/1468652612/

     ♪    /.i   /.i  /.i
   ♪     ∠__ノ ∠__ノ ∠__ノ   
        〈,(・∀・;)ノ・∀・;)ノ・∀・;)ノ
         └i===|┘i===|┘.i===|┘  
           〈__〈 〈__〈 〈__〈
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured

847ナイコンさん (ワッチョイ 3bcd-u2jQ)2018/04/25(水) 13:31:23.19ID:Tg8C4UQN0
「マシン語」って単語久しぶりに聞いたな!

なんか、いいね

848ナイコンさん (ワッチョイ b645-HQJO)2018/04/25(水) 20:51:28.94ID:W9DzsbLA0
魔神語

849ナイコンさん (アウアウイー Sa7b-et6x)2018/04/25(水) 22:21:52.59ID:Khj4XmmCa
LSI-C/80はCP/M版とDOS版があった

850ナイコンさん (エーイモ SE5a-mCLa)2018/04/25(水) 22:38:46.26ID:9QYWKed3E
48k版のCP/MでLSI-C使ってお仕事wしてましたわ。
その仕事でアドバンテックのROMライターも使ってましたw

851ナイコンさん (ワッチョイ b3f8-KlCk)2018/04/25(水) 22:56:19.65ID:WEAQpcCO0
アドバンテストじゃなくて?

852ナイコンさん (ドコグロ MMa3-C3Lc)2018/04/26(木) 09:09:43.14ID:xBTMh1Y1M
>>848
マジンガーZかっ!

853男は黙ってFORTRAN (アウアウカー Sadd-wO2U)2018/04/26(木) 12:27:11.52ID:n76EG+eAa
SmallC3.21でCDOSIIのスクリーンセーバー作った人いたね

854ナイコンさん (アウアウカー Sadd-/p+o)2018/04/26(木) 20:14:17.74ID:JSGDdPGAa
アドバンとしか呼んでなかったからうろ覚えだったわw

855ナイコンさん (ワッチョイ 5b10-o9+V)2018/04/26(木) 23:25:50.21ID:29Z/aetB0
>>852
そこは龍神丸だろ。

856ナイコンさん (ササクッテロレ Sp0d-btIT)2018/04/27(金) 12:21:56.00ID:YEkOMUEzp
>>828は三国志や信長がシリーズで何十年続いてるの知らんのだな。80年代後半にも当然だしてる。
信長だと86年の全国版からC言語だよ。続く戦国群雄伝と8ビット最後の武将風雲までそうだ。

857ナイコンさん (ワッチョイ 9372-00fw)2018/04/27(金) 21:00:01.93ID:fbqEco/j0
信長の野望全国版で文字列に%sや%dを使ってたりするけど
Cが使われてるかどうかとなるとどうなんだろう

858ナイコンさん (エーイモ SEa3-/p+o)2018/04/27(金) 22:30:08.33ID:vlWHhT1WE
C言語由来の書式指定だねー。
アセンブラで書いてるなら、わざわざ使わないんじゃないかな?
sprintfだけ呼ぶような書き方して、ランタイムリンクするけどアセンブラで書くとか、チグハグすぎる。

859ナイコンさん (ワッチョイ 9372-NvE9)2018/04/28(土) 01:14:20.46ID:2NPgdPc80
Vzエディタとかsprintfをアセンブラで組んでたりするものもあるで
結局実ソースか開発に関係してた人や特定のコンパイラと同じコードをはいてるか位の証明が欲しかったんだろう

860ナイコンさん (エーイモ SEf3-TpMw)2018/04/28(土) 05:51:30.18ID:ccpl33lAE
Vzに機能があったか忘れたけど、マクロかなにかに書式指定の文字列生成機能があったらアセンブラで組んだエディタが書式指定のための文字列もってても不思議じゃない。
ゲームで書式指定文字列もってたら呼ぶ側の可能性が高い。
だとすると、ノブヤボはC言語で書かれた可能性が高い。

861ナイコンさん (ワッチョイ 2127-CWme)2018/04/28(土) 06:05:56.73ID:Cy3v4LqX0
printf系をアセンブラで作り直すなんて定番中の定番だろ

862ナイコンさん (ワッチョイ 11cd-z2pY)2018/04/28(土) 08:24:10.20ID:EK5McHSW0
fullsetのprintfデカイから%d,%s程度のsubsetを作るのは有りうる

ただ%sっていうノリを知ってるんなら、「めんどっちから大半Cで書こうぜぇ」ってなりそ

文字列ハメコミ ^1,^2 とかの流儀もあるし

863ナイコンさん (エーイモ SEa3-/p+o)2018/04/28(土) 08:33:20.97ID:dTw9BsIME
printf系をアセンブラで実装は良くやる手だけど、呼ぶ側もアセンブラ使うか?って思うんだよな。
printfって自作すれば肌で判るけどなんだかんだと処理に時間喰うしメモリ使うし。

864ナイコンさん (ワッチョイ c1ba-R0DR)2018/04/28(土) 11:23:16.41ID:wpUfCa720
大昔sprintf作ったなぁナツカシス

865ナイコンさん (ワッチョイ c1ba-R0DR)2018/04/28(土) 11:28:32.93ID:wpUfCa720
ソフィアシステムズのZ80
8インチフロッピーディスクドライブ一体型開発機
でゲーム作ったなぁ

866ナイコンさん (アウアウウー Sa45-TpMw)2018/04/28(土) 12:46:06.16ID:HnqfZ605a
>>865
8ビット機は5インチ以外つかったことがない俺、嫉妬してハンカチを食べたw

867ナイコンさん (ワッチョイ 8935-luqG)2018/04/28(土) 16:12:23.89ID:MAZGs96F0
>>865
in-II使ってたが、あれは5インチだった。
8インチの機種ってあったっけ?

868ナイコンさん (ワッチョイ 0b3d-SD/1)2018/04/28(土) 20:40:02.59ID:IiFxfl6w0
C言語を使ってたとしてもprintfは使わないでしょ?
MSX-Cで"Hello world!"書いただけで実行ファイルが6784バイトにもなったぞ
さすがにメモリ食いすぎ

869ナイコンさん (ワッチョイ 5b10-o9+V)2018/04/28(土) 20:57:22.59ID:kSNIKGNv0
>>868
MSX DOS (1) はリダイレクトやパイプなんかの機能がなかったから、
MSX-C の Ver.1.1 まではアプリケーションに基本機能として埋め込まれていて、
それでサイズがでかくなっていた。
MSX DOS 2 では DOS がリダイレクトやパイプをサポートするようになったんで、
Ver.1.2 からはアプリケーションのサイズは小さくなったよ。

870ナイコンさん (エーイモ SEa3-TpMw)2018/04/29(日) 08:32:16.57ID:OewujofIE
「MSXで動かすからMSX-C以外のCコンパイラが使えない」って訳じゃないからねぇ。
それにノブヤボに限らず(標準関数そのまま使ったとして)ゲームで使うならsprintfかsvprintfだろ。
FILE*が渡されない(それ周りの処理しない)分、小さくなるはずだし。

独自printf実装ならそんなに大きくならんだろう。
ゲームなら大体%sと%dに桁数指定、センタリング、右寄せ、左寄せのフラグ処理があれば事足りる。
小数点も整数型(intやshort、long)で内部処理して、表示のときだけ正規化すればいいからそれ様の専用書式つくるのは難しくないし。
プログラマの力量による部分あるけど、新入社員レベルの新人君に組ませたとしても、超余裕見てステップ数で300ってとこじゃね?

871ナイコンさん (ワッチョイ 0b3d-SD/1)2018/04/29(日) 12:29:28.95ID:TIwhtgN60
CP/M用の無料公開されたHi-Tech CでもHello world!だけで実行ファイルが4096バイトになる

872ナイコンさん (ササクッテロ Sp0d-btIT)2018/04/29(日) 13:41:42.99ID:hO16d7XAp
ゲーム書くのに、そんな余計なライブラリ使わんし。

873ナイコンさん (ブーイモ MMf5-CWme)2018/04/29(日) 13:45:39.17ID:pCYvGcfNM
まずstdio.hをインクルードしないからな

874ナイコンさん (ワッチョイ 9340-cUH7)2018/04/29(日) 21:14:19.45ID:NwWmZHu70
>>871
#include <stdio.h>

int main(void)
{
printf("Hello, World!\n");
return 0;
}

↑を HI-TECH C V3.09 でコンパイルすれば 4096バイトになるが

char _bufallo, _buffree, _doprnt, _exit, _flsbuf, _getargs, _pnum, _putrno, _sigchk, atoi, bdos, bdoshl, bmove, brk, checksp, close, exit, fclose, fflush, fputc, getuid, movmem, sbrk, setuid, signal, strlen, write;

int main(void)
{
printf("Hello, World!\n");
return 0;
}

↑こうすると384バイトで済む。実行はできないが。

875ナイコンさん (イモイモ Se8b-TpMw)2018/04/30(月) 19:09:12.36ID:3iyBVxsFe
printfそのものは小さいね。
でも芋ずる式にリンクしてる関数の数見ればサイズ大きくなるのも納得だわ。

876ナイコンさん (ワッチョイ 73bb-aXUu)2018/05/04(金) 11:07:19.32ID:K3LkdAog0
【ADCQ1805K】IoT時代のマイコンC言語入門ボードPICoT(キット)

https://www.marutsu.co.jp/GoodsListNavi.jsp?q=IoT%E6%99%82%E4%BB%A3%E3%81%AE%E3%83%9E%E3%82%A4%E3%82%B3%E3%83%B3C%E8%A8%80%E8%AA%9E&narrow1Cond=%E3%83%93%E3%83%83%E3%83%88%E3%83%BB%E3%83%88%E3%83%AC%E3%83%BC%E3%83%89%E3%83%BB%E3%83%AF%E3%83%B3

877ナイコンさん (ワッチョイ 8a40-a7mP)2018/05/04(金) 11:58:43.54ID:J6qFn3vo0
PICなんか選ぶ奴の気が知れない。

878sage (ワッチョイ 460f-HcF4)2018/05/04(金) 14:49:22.86ID:U/DiMthv0
CP/Mで動作するMultiplan(Microsoftの表計算ソフト、EXCELの前身)はCで実装されたんだってね。
移植性を考慮してのことだったとか。
8bitと言えど実務ソフトではCは多いんじゃないかな。

Cだとprintfだけでサイズが〜みたいな話はあるけど、そんなのは部品を沢山リンクしてるんだから
当然の話で、純粋なロジックのみだとオブジェクトサイズの伸びは鈍化するはず。

879ナイコンさん (エーイモ SE4a-AIiw)2018/05/05(土) 09:48:08.45ID:3FXJys/DE
次から「8ビットCPUでC言語で作られたソフトを語るスレ」でも良いかな。
あまりネタになりそうなアプリはなさそうだけど。

880ナイコンさん (ワッチョイ 03cd-WKkV)2018/05/05(土) 11:53:42.95ID:AVg6Xoag0
Cじゃないけど
apple版の wizardry はpascalなのは有名

881ナイコンさん (ワッチョイ 8a40-a7mP)2018/05/05(土) 22:41:55.93ID:Tqxkp9N80
http://www.wikiwand.com/en/BDS_C
> A number of important commercial CP/M products were written in the
> BDS C subset of the C language, including PeachText from PeachTree
> Software, MINCE and Scribble from Mark of the Unicorn, and most of
> the software in the Perfect Software suite including Perfect Writer,
> PerfectCalc, PerfectSpeller and PerfectFiler (which suite was bundled
> with the Kaypro).

882sage (ワッチョイ 460f-HcF4)2018/05/05(土) 23:16:45.24ID:bGdTtirQ0
>>881
よくは知らないけど何をもってC言語か?だよね。

subsetって言うけど何がsubsetなんだ?
いわゆる標準セット(ANSI)のライブラリがsubsetってな感じじゃないのかな?

Cの言語構造なんて極めてシンプルで、見方によってはbasicの方が充分複雑。
C言語程度のものが8bitで動かない筈はない。

パラメータ渡しも、レジスタ型、スタック型、またはそれらの併用でしょ、ライブラリの素性次第だけど単純だよね。
ライブラリも、なんか凄そうな気はするけど実体は、呼出し方法が統一されたマシン語プログラム群というだけ。


BDS Cのsubsetが、何がどうsubsetかは、識者のコメントあるかな?w

883ナイコンさん (ワッチョイ bb27-iuJ0)2018/05/05(土) 23:25:19.26ID:Ia0xJTqL0
的外れすぎでワロタ

884ナイコンさん (エーイモ SEc2-g/9z)2018/05/06(日) 00:02:59.95ID:bICt6/ZhE
long,doubleのサポートがあるかとか
構造体・共用体が使えるかとか
char** aではなくてchar a[10][10]のような多次元配列が使えるか、とか
関数の引数や戻り値に構造体・共用体は指定できるのか、とか
サブセットになる要因は相当あると思うんだが?

885ナイコンさん (ワッチョイ 03cd-LCrp)2018/05/06(日) 01:03:05.71ID:aD2dylXW0
>>882
>C言語程度のものが8bitで動かない筈はない。
何だろ、この違和感は・・・

886sage (ワッチョイ 460f-HcF4)2018/05/06(日) 01:41:23.71ID:5m9r/iO60
>>885
まぁ個人的にはこのスレの趣旨が曖昧なのが多大な違和感の元凶だと思うけどねw

まぁ8bitだろうがコンパイラも動くし、コンパイルされたオブジェクトも動くってこった
でも実態は16bit機あたりでクロス開発が多かっただろうけど

887ナイコンさん (ワッチョイ 03cd-WKkV)2018/05/06(日) 06:20:02.33ID:iTJt2qn10
BDS-C知らんのだけど
ttp://www.nabeta.tk/msx/crosscc.html
float,double無いらしいよ

それsubsetや節子
ライブラリはともかく浮動小数点は言語仕様なような

BASICも小さいやつは整数しか扱えないよねー

888sage (ワッチョイ 460f-HcF4)2018/05/06(日) 09:06:33.99ID:5m9r/iO60
>>887
なるほど〜
数値演算ライブラリ無しどころか言語仕様からも無くしたってことですな

本格的な数値はBCDで頑張ってねって事だろうねw

889ナイコンさん (ワッチョイ 8a40-a7mP)2018/05/07(月) 03:13:32.92ID:KKdUpCIw0
>>888
言語としてのfloatやdoubleのサポートはなかったが浮動小数点パッケージは
提供されてたので使えはしたぞ。

890ナイコンさん (ワッチョイ 8aba-XUQH)2018/05/07(月) 06:15:00.02ID:Gbr/wS380
>>889
それ使えるうちに入るのか?
a = 1.23 とかどう書くの?

891ナイコンさん (ワッチョイ 8a43-pRpi)2018/05/07(月) 09:00:10.15ID:CCOeEP/Q0
float.cというサポートルーチンが添付されてるね。BDS-C。

892ナイコンさん (ドコグロ MMc2-LCrp)2018/05/07(月) 09:16:54.23ID:r9JSGy+uM
>>890
a=atof("1.23") でいいだろ。

893ナイコンさん (ワッチョイ 4a01-aXUu)2018/05/07(月) 09:31:37.66ID:5XIWnqHj0
>>890
atof(&a,"1.23")と言う様に記述する。
aはchar a[5]の5Byteで浮動小数を表現する。

894ナイコンさん (ワッチョイ 4a01-aXUu)2018/05/07(月) 10:35:34.63ID:5XIWnqHj0
>>893修正
×atof(&a,"1.23")
○atof(a,"1.23")

atofの引数はポインタだから配列のaに&をつける必要は無いな。
それとatofの戻り値もポインタだから加算等の関数に引数に
そのまま使うことが出来た。

BDS-Cでは倍精度実数doubleに該当する関数は存在しなかった。
(longもfloat同様にサポートされず関数で処理をした。)

895ナイコンさん (ドコグロ MM33-XUQH)2018/05/07(月) 12:29:46.98ID:HhqKD+P8M
>>892
atof()の戻り値の型はどうするんだよ
構造体にするのか?

896ナイコンさん (ワッチョイ bb27-QTW+)2018/05/07(月) 23:45:47.44ID:Qns2ah910
>>895
半精度のbinary16でintで戻してやればいいじゃん

897ナイコンさん (アウアウウー Sa89-096r)2018/05/13(日) 08:58:09.59ID:jacWvzPga
longやfloat/doubleが実装されてるのが一番だけど、未実装なら関数で処理するしかないねw
そういう場合は構造体でデータ型定義するのが王道でしょ。

新着レスの表示
レスを投稿する