- MSX-BASICの奥義を伝授するスレ
814 :799[sage]:2014/03/17(月) 00:30:21.19 ID:wkMqB80o - >>813
この板ではならない。 末尾に"7"などの数字・"Q"などその他の英字がある時点で 「ここはp2・ガラケー・iPhone・PCなどその他 の判別がない」とわかるはず? 末尾が"P"になってもp2とは無関係。"0" "O" "i"も同様。 このような板だと、プロバイダがアク禁のときにp2から書き込んでもバレないけど。 >>809 >スレタイくらい読んでおいてほしかったとは思うな MSXでMファンに採用された1行プログラムを作ったとき、「これはMSXの仕様に依存している」 と意識した。SPC関数はMSX独自。論理式の"A=D=6"は、正しくは"A=(D=6)" (D=6のときAが-1に・その他はAが0に、の意)と書くべきだが、エラー覚悟で書いたところ実行できた。 99BasicやMBASIC86でも動く…を目指すと、どうしても脱MSXになる傾向が。 >>812のプログラムの160行・170行はMSX対策。 MODや整数除算"\"は、MSXは32767以下限定。「MSX対策」と書かないとなぜ?と聞かれると思う。
|
- MSX-BASICの奥義を伝授するスレ
816 :799[sage]:2014/03/17(月) 04:47:53.34 ID:wkMqB80o - >>812のカレンダーだけど、MSXでもエラーが出ない式があったので訂正。
160 ' 170 H=(Y+INT(Y/4)-INT(Y/100)+INT(Y/400)+INT((13*M+8)/5)+D) MOD 7 (160行は削除してもよい。GOTO xxなどがないので、RENUMコマンドも問題ない。) 被除数は常に32767未満なので、MOD演算子でOverflowが出ることはない。 曜日は 0=日・1=月…6=土 なので使いやすい。 調べたところ、0=土・1=日…6=金 と返す式もあるから。 あとは…漢字BASICの_KANJI版を作ったら、カレンダーは終わりにするか。 _KANJI2・_KANJI3を除く漢字BASICは、いかに改行を減らすか… 改行の問題さえ解決すれば、数字が大きいので見やすいはず。 そのうち〜バスの電磁大光ブザーを真似た PLAY"S8M90O6G" とSOUND命令版も紹介するか。 これは自分で考えたもの。 PLAY"S8M90O7G" だと、通常のアナログブザーに。 …当時のMSXのクイズプログラムは、不正解の音は PLAY"O1C" などワンパターンだった。 ちなみにエミュレータのfMSXとRuMSXは、これらの音は再現できない=PSG再現に難がある。
|
- MSX-BASICの奥義を伝授するスレ
817 :799(漢字BASIC版、改行は最小限に)[sage]:2014/03/17(月) 05:17:53.14 ID:wkMqB80o - 100 _KANJI:WIDTH 29:_CLS
110 INPUT "Y,M ";Y,M:MM=M:D=1:U=Y MOD 4:UU=0 120 IF U=0 THEN UU=1 130 IF U=0 AND (Y MOD 100)=0 AND (Y MOD 400)>0 THEN UU=0 140 IF M=1 OR M=2 THEN M=M+12:Y=Y-1 150 IF Y<0 OR Y>9999 OR MM<1 OR MM>12 THEN RUN 160 H=(Y+INT(Y/4)-INT(Y/100)+INT(Y/400)+INT((13*M+8)/5)+D) MOD 7 170 D=31:M=MM 180 IF M=4 OR M=6 OR M=9 OR M=11 THEN D=30 190 IF M=2 THEN D=28+UU 200 PRINT:PRINT "SUN MON TUE WED THU FRI SAT" 210 PRINT SPACE$(H*4); 220 FOR I=1 TO D 230 PRINT USING " ## ";I;:H=H+1 240 IF H=7 THEN H=0:PRINT 250 NEXT 260 PRINT 270 IF H>0 THEN PRINT 280 END
|