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

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

MSX-BASICの奥義を伝授するスレ

1 :デフォルトの名無しさん:01/11/25 02:53.net
忘れない内に皆に伝授しときましょう。

・多色刷り、
・ドット単位横スクロール、
・エスケープシークエンス・・・
色々ありましたよね。
思い出したらなんでも書き込みよろしく。

784 :デフォルトの名無しさん:2013/11/16(土) 07:52:01.86 .net
>>461
配列の定義をサブルーチンの頭に挿れてるのはどうしてなの?
ベーマガではそういうプログラムの書き方は教えてないぞ

785 :デフォルトの名無しさん:2013/11/16(土) 08:26:02.58 .net
元ベーマガスタッフキタ━━ヽ(゚∀゚)ノ━━!!!!

786 :デフォルトの名無しさん:2013/12/05(木) 21:10:30.52 .net
でもプログラム末尾にDATA文で並べるより
使ってる近辺に書いたほうが分かりやすいよね今考えれば

787 :デフォルトの名無しさん:2013/12/06(金) 00:21:13.46 .net
エディタがまともならな

788 :デフォルトの名無しさん:2014/01/03(金) 00:28:03.71 .net
データとプログラムは分離されてた方が訂正するのは楽かな。
どうせ構造や意味は開発資料としてメモしておくでしょ。

789 :デフォルトの名無しさん:2014/01/03(金) 14:41:05.34 .net
配列の定義だから、DIMのことだろう

790 :デフォルトの名無しさん:2014/02/06(木) 03:33:44.69 .net
あれだけいろいろ作ってたのに今見たらもうBASIC読めないな。
配列の確保ってその行の実行時だったけ?

791 :デフォルトの名無しさん:2014/02/06(木) 08:37:37.66 .net
10個ぐらいだったら宣言しなくても使えたような気がする。忘れた。
そういうデフォルト設定や裏技を極限まで使いこなすのが「テクニック」だったよなあ。
今ではクソコードに分類されるけど。

792 :デフォルトの名無しさん:2014/02/06(木) 12:11:32.90 .net
>>791
>10個ぐらいだったら宣言しなくても使えたような気がする。

古いBASIC

793 :デフォルトの名無しさん:2014/02/06(木) 13:29:46.17 .net
>>790
時間があまりにも過ぎてるからじゃね?

俺もマシン語・アセンブラでバリバリやってて
ハードウェアの隅から隅まで知っていたつもりだけど
今じゃ何も思い出せないなw

まあ資料見ればすぐに思い出せるだろうけど
さすがに全く触らなくなってから時間が経ち過ぎてる

794 :デフォルトの名無しさん:2014/02/06(木) 13:41:28.12 .net
てきとーに配列に数値をぶち込むものを書いてみる。

10 DIM A(100)
20 CLS
30 FOR I=0 TO 100
40 A(I)=I
50 LOCATE 0,0:PRINT I
60 NEXT

10行がないと、I=10 の時点でエラーになるな。

795 :デフォルトの名無しさん:2014/02/07(金) 05:57:15.58 .net
ワ、ワタシハタダシイ

796 :デフォルトの名無しさん:2014/02/13(木) 22:37:49.35 .net
読める、読めるぞ〜、インストラクション表を片手に

しかしコードの真意は書いた本人にしかわからない

数年後には書いた本人にもわからない古文書となる

797 :デフォルトの名無しさん:2014/02/16(日) 12:25:00.81 .net
DarkBASIC Pro Freeで最新技術を誰よりも早く習得 - VC++プログラマーより情報が早い

- DarkBASIC Professional - FREE Download(英語版のみ)
 [ http://www.thegamecreators.com/?m=view_product&id=2000&page=free ]
 [ http://www.thegamecreators.com/?m=download&file=5003 ]

 U77 Public Release Candidate(最新バージョンアップデート)
 [ http://forum.thegamecreators.com/?m=forum_view&t=180294&b=1 ]
 [ http://files.thegamecreators.com/darkbasicprofessional/upgrade/dbpro_upgrade_7_7_RC7.zip ]

798 :デフォルトの名無しさん:2014/02/16(日) 12:26:25.19 .net
今回紹介するのはDarkBASIC Professinalフリーバージョン。
商用利用をしないと言う条件ですべての機能が使える。

DarkBASIC本体をダウンロードしたら、メールアドレスを送信してアンロックキーをメール受信する。
次にメールアドレスとアンロックキーをアクティベーション(認証)すればDarkBASICが使えるようになる。
さらに、最新バージョンアップデートを適用すれば、実行速度が高速になる。

DarkBASICはVisualBasic以前の古いBASICの延長上の別系統の設計にある最新BASICで、記述
が簡単で本格的な構造化もサポートしている。

簡単なゲームから大規模プロジェクトまで作成可能だ。

また、外部モデリングフォーマットを通さずにプログラム中で3Dオブジェクトの定義も可能で、非常に自由度
の高いプログラミングができる。

英語版と言うことであるが、BASICと3Dの基礎知識があれば、誰でも使える。

799 :デフォルトの名無しさん:2014/03/12(水) 07:21:04.94 ID:9nRIvxt0.net
Mファン1990年9月号に掲載された1行プログラム(システム上の1行、の意)

「200年カレンダー」
(万年カレンダーから100年毎の閏年判定ルーチンを除いたもの、
1900年3月1日〜2100年2月28日に対応)

#SCREEN1:WIDTH29(以上)で実行すること


1 CLS:INPUT"年,月";Y,M:Y=(Y+4)MOD28:J=YMOD4:D=(Y\4)*5-(J>0)+J
:FORI=1TOM:D=(D+X)MOD7:READX:X=X+(I=2)*(J=0):NEXT:PRINT:PRINT
SPC(D*4);:FORI=1TOX+28:PRINTUSING" ## ";I;:A=D=6:A$=CHR$(A*-10)
+CHR$(A*-13):PRINTA$;A$;:D=(D+1)MOD7:NEXT:DATA3,,3,2,3,2,3,3,2,3,2,3

800 :799:2014/03/14(金) 03:44:10.36 ID:Dt0a1Iuk.net
799の「200年カレンダー」を、Windows用の「99Basic」向けに作り直した
(「移植」とは呼べない。文字化けを除けばMSXでも動く。論理式を追放した。)


100 CLS
110 INPUT "年(1900〜2100),月 ";Y,M
120 IF Y<1900 OR Y>2100 OR M<1 OR M>12 THEN RUN
130 YY=Y:Y=(Y+4) MOD 28
140 J=Y MOD 4:D=INT(Y/4)*5+J
150 IF J>0 THEN D=D+1
160 IF YY=1900 THEN D=1
170 X=0
180 FOR I=1 TO 12
190 IF I<=M THEN D=(D+X) MOD 7
200 READ X
210 IF I=2 AND J=0 THEN X=1
220 IF (YY=1900 AND I=2) OR (YY=2100 AND I=2) THEN X=0
230 IF I=M THEN XX=X+28
240 NEXT
250 PRINT:PRINT
260 FOR I=1 TO 7
270 READ A$:PRINT " ";A$;" ";
280 NEXT
290 PRINT:PRINT:PRINT SPACE$(D*4);

(続く)

801 :799:2014/03/14(金) 03:58:27.59 ID:Dt0a1Iuk.net
300 FOR I=1 TO XX
310 PRINT USING" ## ";I;:D=D+1
320 IF D=7 THEN D=0:PRINT:PRINT
330 NEXT
340 PRINT
350 IF D>0 THEN PRINT:PRINT
360 END
370 DATA 3,0,3,2,3,2,3,3,2,3,2,3
380 DATA "日","月","火","水","木","金","土"


主な修正点:1900年1・2月と2100年3月〜12月も表示できるように。

・MSXで実行するときの注意点
110行のINPUT文・380行のDATA文にある「年」「月」「火」などの全角文字、
場合によっては270行の曜日前後にある空白を修正する必要がある。

・MSXの漢字BASICで実行するときの注意点
最低でも100行を「100 _CLS」に修正する必要がある。
インターレスモード〜_KANJI2・_KANJI3でないと、上部が強制スクロールされる。
画面がちらつかない_KANJI・_KANJI1で実行するときは、改行の「PRINT」を削除する、
最後にINPUT$(1)やIF INKEY$="" THEN を加えるなどの工夫が必要。

802 :799:2014/03/14(金) 04:13:09.54 ID:Dt0a1Iuk.net
もう一つ。海外のBASICのことを考え、140行は Y\4 から INT(Y/4) に変更した。
整数除算の"\"は、海外(日本語環境以外・日本のMSX以外)では半角"\"になる。

110行 INPUT"年(1900〜2100),月" ;Y,M → INPUT"M,Y(1900-2100)";M,Y
270行 PRINT " ";A$;" "; → PRINT A$;" "; (曜日名を英3文字にするため)
380行 DATA "日","月","火","水","木","金","土"
→DATA "SUN","MON","TUE","WED","THU","FRI","SAT"


それ以外の変更はなし……で動く海外のBASICはあるだろうか?

803 :799:2014/03/15(土) 03:32:57.56 ID:GTtrbY0y.net
訂正。MSXと99Basicは問題ないが、
N88互換のBASICの一つ「MBASIC86」でエラーが出た。

99Basicは作者が元MSXユーザーなので、MSXとの互換性をある程度重視している。
けど、N88BASIC系統は空白の省略は許されない。

PRINT命令やPRINT USING命令などの次には、空白が必要。


310 PRINT USING " ## ";I;:D=D+1


↑310行を訂正してほしい。申し訳ない。
「MBASIC86」は、これで動作した。

804 :デフォルトの名無しさん:2014/03/15(土) 12:51:19.31 ID:8TvWREf7.net
なにこの独り相撲

805 :デフォルトの名無しさん:2014/03/15(土) 13:37:16.17 ID:E7qCmrfx.net
IDありになって良かったな

806 :799:2014/03/15(土) 22:22:48.57 ID:GTtrbY0y.net
わざわざ過疎スレまで煽りに来たのか。

……昔のMファンをヤフオクで落札したので、自作品をここに書いただけ。
他人様の作品を無断転載はしないよ。
落札前に再び同じプログラムを作ろうとしたが、肝心の自分がアルゴリズムを忘れた。


私のカレンダーでは使っていないけど(28年分のカレンダーを使いまわしているだけ〜例:1986年=2014年=2042年)
カレンダーのプログラムを作るなら、「ツェラーの公式」
http://ja.wikipedia.org/wiki/%E3%83%84%E3%82%A7%E3%83%A9%E3%83%BC%E3%81%AE%E5%85%AC%E5%BC%8F
を参考にするといいと思う。


……と書いたら、また煽られるだろうな。
昔〜ひろゆき氏が熱心に活動していた頃〜の2chは、
この程度で煽られることは少ない気はしたが。
ひろゆき氏が「PCが安価になったので、一部を除いては、2chは馬鹿ばかりになった」
と嘆いたのもわかる気が。

807 :799:2014/03/15(土) 22:31:04.32 ID:GTtrbY0y.net
ID制…といっても、末尾が「0」「O」「i」「P」ではないので、
ID云々で煽る板ではない気がする(少数だが、現時点でもIDがない板がある)。

内容はどうであれ、末尾が「P」はボロクソに罵倒される。
「P」はp2。p2はものすごく嫌われている。悪質な荒らしが多いのかも。
(そのせいで、荒らし以外が罵倒の被害に遭っている)

アク禁になったら、別の携帯電話や避難所のスレに代理書き込み依頼が多数のはず。

あと、書き込みが1日1回限定だとIDの意味をなさないと思う。

808 :デフォルトの名無しさん:2014/03/16(日) 14:24:59.42 ID:SqWBi3v6.net
なんかよくわからんけど、どうせなら、この世の全ての BASIC で動くコード
とかだと面白いんだけどな

809 :デフォルトの名無しさん:2014/03/16(日) 14:50:41.80 ID:4mUPyn+t.net
独り相撲してナンボのスレだけどな
まあ、番号コテの人にはスレタイくらい読んでおいてほしかったとは思うな

810 :デフォルトの名無しさん:2014/03/16(日) 15:08:12.80 ID:gkqHMcUQ.net
BASICでは、ダークと99はNGに入ってるわ、俺。

811 :799:2014/03/16(日) 16:50:59.39 ID:P7mFBOx5.net
Wikiや他サイトを参考にし、カレンダーの曜日を求める式を作ったところ…


変数 H:曜日(0〜6、0=日・1=月…6=土)、Y:年(2014など) M:月(3など) D:日(今回は1のみ)

H=(365*Y+INT(Y/4)-INT(Y/100)+INT(Y/400)+INT((306*(M+1))/10)+D-428) MOD 7


N88互換系では実行できたけど……MSXでは"Overflow in xxx"エラー。

MSXのMOD演算子や整数除算"\(海外版は\)"は、
2バイトの整数型(-32768〜32767)の範囲に限られる。
365×西暦4桁がある時点でアウト。


……ので、MODの被除数を32767以下にしてみるか。7の倍数で最も32767に近い値を減算するとどうだろう。
MSXで動かないプログラムを作っても……と思うし。

行番号は追放する方針。>>800->>801のプログラムも、最初はDATA命令の行番号を指示する
"RESTORE 380"があったが、180〜240行を無駄ループにして回避。

812 :799(MSXで動作可):2014/03/16(日) 17:47:43.30 ID:P7mFBOx5.net
100 CLS
110 INPUT "Y,M ";Y,M:MM=M:D=1:U=Y MOD 4
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 H1=(365*Y+INT(Y/4)-INT(Y/100)+INT(Y/400)+INT((306*(M+1))/10)+D-428)
170 HH=INT(H1/32767):H=(H1-32767*HH) MOD 7
180 FOR I=1 TO 12
190 READ X
200 IF MM=I THEN D=X+28
210 IF MM=2 AND UU=1 THEN D=29
220 NEXT
230 PRINT:PRINT
240 FOR I=1 TO 7
250 READ A$:PRINT A$;" ";
260 NEXT
270 PRINT:PRINT:PRINT SPACE$(H*4);
280 FOR I=1 TO D
290 PRINT USING " ## ";I;:H=H+1
300 IF H=7 THEN H=0:PRINT:PRINT
310 NEXT
320 PRINT
330 IF H>0 THEN PRINT:PRINT
340 END
350 DATA 3,0,3,2,3,2,3,3,2,3,2,3
360 DATA "SUN","MON","TUE","WED","THU","FRI","SAT"

813 :デフォルトの名無しさん:2014/03/16(日) 21:18:49.40 ID:lTEgNzO7.net
>>807
俺P2からの書き込みだけどPにならんよ

814 :799:2014/03/17(月) 00:30:21.19 ID:wkMqB80o.net
>>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対策」と書かないとなぜ?と聞かれると思う。

815 :デフォルトの名無しさん:2014/03/17(月) 00:41:51.33 ID:cdm9pD2a.net
「これはMSXの仕様に依存している」…まさしくそれがスレタイの意味するところじゃねかしら?
ほかのBASICで動くなら、MSX-BASICの奥義でもなんでもないし

816 :799:2014/03/17(月) 04:47:53.34 ID:wkMqB80o.net
>>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再現に難がある。

817 :799(漢字BASIC版、改行は最小限に):2014/03/17(月) 05:17:53.14 ID:wkMqB80o.net
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

818 :デフォルトの名無しさん:2014/06/04(水) 15:34:40.19 ID:ZiHf6GEW.net
揚げろや屑やろう!

819 :デフォルトの名無しさん:2014/06/04(水) 15:40:59.44 ID:3TCFL1gZ.net
断る

820 :デフォルトの名無しさん:2014/07/09(水) 09:59:00.63 ID:jeW2TfnT.net
保守

821 :デフォルトの名無しさん:2014/07/12(土) 17:02:47.46 ID:dhVKd2av.net
奥義はよ

822 :デフォルトの名無しさん:2014/07/14(月) 22:42:26.64 ID:4A74nF8C.net
奥義マダー?

823 :デフォルトの名無しさん:2014/07/15(火) 06:39:57.66 ID:mWyocOMn.net
奥義・光子力まるはだか!

824 :デフォルトの名無しさん:2014/07/15(火) 11:46:12.23 ID:6lvRYATA.net
ジャパニウム、だっけ?

825 :デフォルトの名無しさん:2014/07/15(火) 19:41:46.28 ID:uDYfEjIO.net
そのジャパニウムの力で、
小学4年生の江久保葉子ちゃんをまるはだかにむくのじゃあ!

826 :デフォルトの名無しさん:2014/07/25(金) 13:12:32.97 ID:RkXLEhxK.net
>>825
通報しますた

827 :デフォルトの名無しさん:2014/07/28(月) 11:47:27.95 ID:XCE2nVfS.net
★2ch勢いランキングサイトリスト★

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

※ 要サイト名検索

828 :デフォルトの名無しさん:2014/09/09(火) 20:53:47.73 ID:xGs4sfhV.net
2001年の生き残りはこのスレだけ
最長老ごきげんよろし

829 :デフォルトの名無しさん:2014/09/26(金) 15:40:44.73 ID:cDF8qWEh.net
多色刷りって、BIOS使わずVDP直接操作だけでやるとしたら
どうやるんだろうか…(市販ゲームとか)
BIOSのINIT32(006FH)とかSETGRP(007EH)とかを解析したら良いんだろうけど、
めんどいなw

スクリーンモードってVDPのR#0と#1だけで決めていると思ってるんだけど、
それ以外に何かいじらないと多色刷りモードにはならないってことか

830 :デフォルトの名無しさん:2014/09/28(日) 10:53:47.04 ID:nD5Yu8m1.net
多色刷りってのは BASIC で手軽に Graphic 2 の性能を引き出す手法の俗称だろ。
市販ゲームなんかは、それこそすべての操作を VDP に直接アクセスしてやってるから、
多色刷り云々の話ではないよ。

831 :デフォルトの名無しさん:2014/09/28(日) 11:28:05.44 ID:/z7vQ2zP.net
一号機
http://i.imgur.com/v17C2h8.jpg
三号機
http://i.imgur.com/QxUSnRc.jpg

832 :デフォルトの名無しさん:2014/09/28(日) 14:43:20.51 ID:DVWno/3n.net
>>134
お願いします

833 :デフォルトの名無しさん:2014/09/28(日) 15:22:11.12 ID:8Hq1x0kC.net
反応するのに12年もかかるのかよ

834 :デフォルトの名無しさん:2014/09/28(日) 15:28:43.79 ID:J5abx0zT.net
12年後が楽しみだ

835 :830:2014/09/29(月) 00:58:02.60 ID:EDDV56hZ.net
>>830
それは知ってるんだが、
なぜVDPがscreen2であるにも関わらず、
VDPに対してprint文などでキャラクタコードで書けるのかが不思議だったんだよ
screen2はパターンジェネレータテーブルとカラーテーブルだけが有効で、
パターンネームテーブルは無効だと思ってたから。

…と思いながら、screen2をテクハン片手にvpokeでいじってたら、
screen2でもパターンネームテーブルは生きてるんだな。
今ごろになって気が付いたwこれでスッとしたわ…自己解決。

screen2のパターンネームテーブルは&h1800から値が順に01,02,03,…とデフォでは入っていて、
これによってパターンジェネレータテーブルの定義内容が順に表示されるようになっているみたいだな。
(これでグラフィック画面らしい挙動ができるわけだ)

で、多色刷りだと、screen2でもscreen1同様このテーブルをprint文などで書き換えると。
(今までscreen2のパターンネームテーブルは無効だと思い込んでいたから、この1点が謎だった)

じゃあ多色刷りって、VDP側はただのscreen2だな。
別にどうってことない話じゃないかw(←オイ

836 :デフォルトの名無しさん:2014/10/01(水) 09:01:42.86 ID:1BRcjDE3.net
screen2はぶっちゃけ画面全部を違うパターンの文字にしたものだからね
多食刷りのミソは、本来テキストを扱うscreen1用のbasicコマンドが
(内部が)screen2でもそのまま使えたことだろうな

837 :デフォルトの名無しさん:2014/10/08(水) 10:54:52.16 ID:2a6Sl7jH.net
なつかしいFANダムに4本載ったワシ

838 :デフォルトの名無しさん:2014/10/09(木) 13:56:29.65 ID:MpVmhvXd.net
何の作品か言うてみい。打ち込んでやるわボケ。

839 :デフォルトの名無しさん:2014/10/23(木) 03:08:20.65 ID:khbr0nbg.net
MSX1で縦スクロールする。スペースで終了

100 SCREEN2:COLOR15,4,4:CLEAR1000:KEYOFF:SCREEN1:DEFINTA-Z:ONSTRIGGOSUB200:STRIG(0)ON
110 P$=" MSX SCROLL "
120 PM=LEN(P$)*8:DIMP$(PM):C!=PEEK(4)+PEEK(5)*256:FORA=0TOLEN(P$)-1:I=ASC(MID$(P$,A+1,1)):FORB=0TO7:P$(A*8+7-B)=RIGHT$("00000000"+BIN$(PEEK(I*8+B+C!)),8):NEXTB,A
130 FORA=0TOPM-2:I!=VARPTR(P$(A)):I1!=PEEK(I!+1)+PEEK(I!+2)*256:I!=VARPTR(P$(A+1)):I2!=PEEK(I!+1)+PEEK(I!+2)*256:FORB=0TO7:POKEI1!+B,PEEK(I1!+B)-(PEEK(I1!+B)=49)-(PEEK(I2!+B)=49):NEXTB,A
140 FORA=0TO15:VPOKE384+A,0:VPOKE400+A,255:VPOKE2432+A,0:VPOKE2448+A,255:NEXT:FORA=5120TO5887:VPOKEA,0:NEXT
150 ONINTERVAL=4GOSUB300:INTERVALON
160 GOTO160
200 STRIG(0)OFF:INTERVALOFF:SCREEN0:FORA=-1TO0:A=INKEY$<>"":NEXT:END
300 INTERVALOFF:B=PCAND7:ONBGOTO330,330,330,320,330,330,330
310 GOSUB350:D=1-D:GOSUB360:GOTO340
320 GOSUB350
330 A=391+B+2048*(1-D):VPOKEA,255:VPOKEA+8,0:VPOKEA+16,255
340 A=384+B+2048*D:VPOKEA,0:VPOKEA+8,0:VPOKEA+16,255:VPOKEA+24,255:PC=(PC+1)MOD(PM*8):INTERVALON:RETURN
350 PRINTCHR$(27);"Y! ";CHR$(27);"L";P$(PC/8):RETURN
360 VDP(1)=VDP(1)AND191:VDP(2)=6-D:VDP(4)=1-D:VDP(1)=VDP(1)OR64:POKE&HF923,20+D*4:RETURN

840 :デフォルトの名無しさん:2014/10/23(木) 06:59:36.83 ID:QsQhyUlJ.net
テープに録音するときってどんな音に聞こえた?
ピー
ガラガラガラ
ピロピロピロ

841 :デフォルトの名無しさん:2014/10/23(木) 09:03:15.77 ID:sksS7kTY.net
ピー−ガッ! ←最初に必ずこの工程があるでしょ
ピーーガゴギゴギゴ…

842 :デフォルトの名無しさん:2014/10/23(木) 09:29:44.09 ID:GVukQ4G4.net
緊急地震速報の音が当時のやつに一番近いかな

843 :デフォルトの名無しさん:2014/10/23(木) 09:31:17.65 ID:GVukQ4G4.net
ああ間違えた
大津波警報の方です
すみません

844 :デフォルトの名無しさん:2014/10/23(木) 09:33:03.26 ID:GVukQ4G4.net
あれ?
ぐぐって聴いてみたら最近JALERTのは違うんだね

845 :デフォルトの名無しさん:2014/10/23(木) 09:39:04.77 ID:xi8wnWKn.net
>>840
http://www.vector.co.jp/soft/win95/util/se470812.html

846 :デフォルトの名無しさん:2014/10/23(木) 09:40:34.27 ID:GVukQ4G4.net
>>845
へーこんなのあるんだ
ありがとう
ほんとにセーブ出来てるなら
ロードも試してみたくなるな

847 :デフォルトの名無しさん:2014/10/23(木) 10:53:09.83 ID:GVukQ4G4.net
作者のページも逝ってみたけど
ロードエミュレータは無いんだね

ぐぐってたらこんなページはあった
http://psyzans.com/Testsite/Tape/Tape.html

848 :デフォルトの名無しさん:2014/10/23(木) 11:28:00.27 ID:ISc0F2Qf.net
>>842-844
どんだけ古いおっさんやねん
http://radio1ban.com/jikken_ews1.htm

849 :デフォルトの名無しさん:2014/11/15(土) 10:36:19.60 ID:gWegtIR0.net
REM文を利用するプログラムを作ってみた。
内容は>>35

1 'ッツ`メピョマャヘマモッ」ェマ゚ャユソ`」リ。モカト`ィセ」モソホサワスヤショ`シユァ`ャラャ`「ァノワモク。ィモクョィモク。モカィ`ィー`ク`ーネ`ッツッュオタ`ヲ・メ、カヲャキナ`アー`ッツッュオタ」チ`イ``「シ、ーロタ、ェ`」リテモオク`ィーモア、ー`リ`ア``モオミ`ィイ」ア、イウアソマリ」ャ`ャ゙
2 '`チィコチヌシテ、ムハヲスンケッ゚ナワリ。。ヒヘア。ェマモスタ`チモモヘア「、スヤクザウテタ・゚ハクミ`キシチァュ、ア`。フ。「`」ュキ``チィュ・゙゚ハネミォマレセィ。リテソツ、スヤケクワ゚タネミ、モロ゙ャツウアィウォアソフク。ゥラシヒソフリ`ゥラシヲェ、タヲ`。」゙ーア」リヲィヌュオタ、ヲ「メ、ニヤキリテ
3 'モコィ`、ッニマ」タィヲ`ホユマヘメタ・ンテ」ュネタ`ーンョユマィミヤタロ」リミモコィ`メソ゚゚゚゚ワ`````ミャ````````「タシ``。。ァ`。`ーィ「ヲユトラィ`ノウーヤンイアウヤ`````
10 CLEAR 300,&HD000:DEFINTA-Z:A=&HD800:DEFUSR=A
20 A$="2148FC5E2356EB1100D0010500092323237EB7283DD620E63F878747237ED620E6300F0F0F0F8012137ED620E60F8787878747237ED620E63C0F0F8012137ED620E6030F0F47237E23D620E63F80121318BF010500097EFE3A28B3C300D0C9"
30 FORI=1TOLEN(A$)STEP2:POKEA,VAL("&H"+MID$(A$,I,2)):A=A+1:NEXT:A=USR(0)

blueMSXで動作確認。

blueMSXにはディレクトリをMSXディスクとして読み込む機能があるので、コピペしてファイルに書き込んだ後、[ファイル]-[ディスクドライブA]-[ディレクトリ挿入]でディレクトリを指定してやると、ディスクイメージを作らなくてもファイルが読める。

850 :デフォルトの名無しさん:2014/11/15(土) 10:44:03.15 ID:gWegtIR0.net
補足
コピペの際、各行の終わりにスペースがつく場合は、スペースを消して実行してくれ

851 :デフォルトの名無しさん:2014/11/18(火) 00:02:20.73 ID:zu7jtgft.net
REM文に書かれた文字そのものがプログラムだっていうのは結構やってたな
プログラムすべてを文字化するのは面倒だから、文字だけでデコーダを書いて、
文字にエンコードされたメインプログラムを展開して実行みたいなことが多かった

小さなちょっとしたことなら文字だけでプログラムを書くのも普通にやってたね
そもそも上記のデコーダがそうだし

で、REM文の内容の書かれたアドレスを直接指定してマシン語として実行するわけだけど
GRAPH文字には結構お世話になった気がする
ご存知だろうがGRAPH文字は01hを頭とする2バイト文字なのだ

01hを表現したいときに、たとえば >円 と書くと
文字コードが 3e 01 49 となって
LD A,01h → LD C,C になる、みたいな



文字コードとか覚えてなくてググりながら書いてみたんで間違いがあったりするかもだけど、
とにかく、GRAPH文字の01hっていうのはREMに直接マシン語を書くとき便利だったなあ
というお話

852 :デフォルトの名無しさん:2015/10/13(火) 21:35:13.92 ID:tF56vlyv.net
昔、Panasonic FS-A1FX(MSX2+)持ってたんだけど
POKE文でどこかのアドレスに所定の値を設定すると
CPUのクロック数が上がるって技があったと思うんだけど

・・・いや、今更調べたいというわけでもないんだけど、ちょっと脳裏に浮かんだので書いてみた

853 :デフォルトの名無しさん:2015/10/14(水) 15:47:26.04 ID:NrBXnG0t.net
昔、ASCII社製の木の板にMSX基板をはっつけた開発機材もらったんだけど、これってオクで売れるかな
仕様はMSX1とMSX2と両方もってる

仕入れ元はガーボロジーなのでアレなのだが

854 :デフォルトの名無しさん:2015/10/14(水) 16:02:06.05 ID:PR+BbI9O.net
もれは買わんな

855 :デフォルトの名無しさん:2015/10/16(金) 06:55:09.09 ID:ubnomhpt.net
ちなみにいくらで売りたい?
ぼったくり価格でないなら買うかもよ

856 :デフォルトの名無しさん:2015/10/16(金) 11:43:35.94 ID:ZWbPxBYc.net
イラネ

857 :デフォルトの名無しさん:2015/10/16(金) 22:21:53.33 ID:08ph5kmV.net
欲しいとは思うけど、買ってもどうせ押し入れの中で腐らすだろうな

858 :デフォルトの名無しさん:2016/01/23(土) 16:18:18.90 ID:SBqTJcjF.net
保守

859 :デフォルトの名無しさん:2016/01/23(土) 19:22:11.95 ID:l5TKWQpo.net
>>853
珍品奇品のように騙せば売れる
がんばれ

860 :デフォルトの名無しさん:2016/01/29(金) 13:22:13.24 ID:sHuG6nTkW
DOS TOOLS/DOS2 TOOLSのM80やL80。
BASICのBSAVEファイルやROMカートリッジなど
「MSX-DOS以外のファイルのアセンブルができない」者を罵倒している輩がいた。鈴なんとかだったと思う。


「BASICしかできない馬鹿は、ソース→バイナリに直接アセンブルするものを使え!(例:永久保存版1の付録・ZASM)」
ということか。


……M80で(ファイル名本体).REL を作ってから

L80 /P:(アドレス〜D000など),(ファイル名本体),(ファイル名本体)/N/X/E

でインテルHEXファイルを作り、BSAVE.COMでBSAVE形式バイナリに変換する。

L80の/Eオプションに/E:(ソースのラベル名)を指定すると、BSAVEの実行アドレスを変えられるらしい。もちろん、ソースでラベル名を使う必要はあるが。

…もっとも、BSAVEの実行アドレスは、バイナリエディタで簡単に変更できるが。ROMカートリッジ用などはBSAVEのヘッダ7バイトを削除する。

861 :デフォルトの名無しさん:2016/02/01(月) 05:57:38.30 ID:XkHCvxET/
1.DEF FNで2バイト数値の換算
………8000h〜FFFFhはBASICではマイナス、8000hを32768・FFFFhを65535などはエラーになる場合が多い

2.MSXでバイナリファイルにアクセス
………BSAVE形式のヘッダチェック・ヘッダ書き換え(開始・終了・実行)


100 SCREEN 0:KEY OFF:DEFINT A-Z:DIM B(7)
110 IF PEEK(&H2D) THEN WIDTH 80 ELSE WIDTH 40
120 DEF FNHL(H,L)=(H+(H>127)*256)*256+L
130 DEF FNH(HL)=(HL-(HL<0))\256-(HL<0)*255
140 DEF FNL(HL)=(HL-(HL<0))MOD256-(HL<0)*255
150 DEF FNDF!(A,B)=A-(A<0)*65536!-B+(B<0)*65536!
160 DEF FNHX$(A)=RIGHT$("000"+HEX$(A),4)
170 PRINT "1:BSAVE ヘッダチェック"
180 PRINT "2:BSAVE ヘッダカキカエ"
190 PRINT "3:シュウリョウ":PRINT:PRINT "ドレニ シマスカ? ";
200 A$=INPUT$(1):IF A$<"1" OR A$>"3" THEN 200 ELSE PRINT A$:PRINT:PRINT
210 IF A$="3" THEN 520
220 ON ERROR GOTO 300
230 FILES:PRINT:PRINT:PRINT
240 INPUT "BSAVE ファイル";FL$:IF FL$="" THEN 510 ELSE PRINT:PRINT
250 OPEN FL$ FOR INPUT AS #1:CLOSE #1
260 OPEN FL$ AS #1 LEN=1:SZ!=LOF(1)
270 FIELD #1,1 AS B$
280 IF SZ!<8 THEN PRINT "BSAVE ファイルハ 8バイトイジョウ アリマス":GOTO 510
290 FOR I=1 TO 7:GET #1,I:B(I)=ASC(B$):NEXT:GOTO 320
300 IF ERL=230 THEN PRINT "ディスクニ ファイルガ アリマセン":RESUME 510

862 :続き:2016/02/01(月) 05:58:34.71 ID:XkHCvxET/
310 IF ERL=250 THEN PRINT "ニュウリョクシタ ファイルガ アリマセン":RESUME 510
320 ON ERROR GOTO 0
330 IF B(1)<>&HFE THEN PRINT "BSAVE ファイルデハ アリマセン":GOTO 510
340 S=FNHL(B(3),B(2)):E=FNHL(B(5),B(4)):X=FNHL(B(7),B(6))
350 PRINT "     カイシ アドレス:";FNHX$(S)
360 PRINT "  シュウリョウ アドレス:";FNHX$(E)
370 PRINT "   ジッコウ アドレス:";FNHX$(X):PRINT
380 PRINT "ファイルサイズ:";FNHX$(SZ!);" (";STR$(SZ!);"bytes)"
390 PRINT:IF SZ!=FNDF!(E,S)+1+7 THEN PRINT "セイジョウ デス":GOTO 410
400 PRINT "ファイルサイズガ ヘッダト イッチ シマセン"
410 IF A$="1" THEN CLOSE #1:GOTO 510
420 PRINT:PRINT:PRINT "BSAVE ヘッダヲ カキカエマス":PRINT:PRINT
430 S$=FNHX$(S):E$=FNHX$(E):X$=""
440 INPUT "   カイシ アドレス(16シンスウ 1-4ケタ)";S$:IF LEN(S$)>4 THEN 440
450 INPUT "シュウリョウ アドレス(16シンスウ 1-4ケタ)";E$:IF LEN(E$)>4 THEN 450
460 INPUT " ジッコウ アドレス(16シンスウ 1-4ケタ)";X$:IF LEN(X$)>4 THEN 460
470 S=VAL("&H"+S$):E=VAL("&H"+E$):IF X$="" THEN X=S ELSE X=VAL("&H"+X$)
480 B(3)=FNH(S):B(2)=FNL(S):B(5)=FNH(E):B(4)=FNL(E):B(7)=FNH(X):B(6)=FNL(X)
490 FOR I=2 TO 7:LSET B$=CHR$(B(I)):PUT #1,I:NEXT:CLOSE #1
500 PRINT:PRINT:PRINT "BSAVE ヘッダヲ カキカエマシタ"
510 PRINT:PRINT:PRINT "Hit any key ";:A$=INPUT$(1):CLS:GOTO 170
520 END

863 :デフォルトの名無しさん:2016/02/12(金) 08:28:52.97 ID:qz3mrubwg
1984年のリファレンスマニュアル(東芝・ヤマハ・キヤノンなど)のサンプルプログラムを機械語にした。
SLの音などSOUND命令のサンプル。
機械語の場合、SOUND 7,nの値は「必ず &B10xxxxxx」でないといけない。


100 CLEAR 200,&HD000:DEFINT A-Z:AD=&HD000
110 FOR I=0 TO 447
120 READ A$:A=VAL("&H"+A$):POKE AD+I,A
130 NEXT I
140 DEFUSR=AD:A=USR(0)
150 END
160 DATA 3E,0C,CD,A2,00,CD,3E,D0,21,80,D0,7E,FE,FF,28,1A
170 DATA CD,33,D0,01,11,00,09,4E,23,06,0E,AF,5E,CD,93,00
180 DATA 3C,23,10,F8,CD,3E,D0,79,18,E2,3E,0C,CD,A2,00,CD
190 DATA 90,00,C9,E5,D1,CD,4D,D0,06,02,CD,57,D0,C9,11,70
200 DATA D0,CD,4D,D0,CD,9F,00,06,03,CD,57,D0,C9,1A,FE,00
210 DATA C8,CD,A2,00,13,18,F6,3E,0D,CD,A2,00,3E,0A,CD,A2
220 DATA 00,10,F4,C9,00,00,00,00,00,00,00,00,00,00,00,00
230 DATA 48,69,74,20,61,6E,79,20,6B,65,79,20,00,00,00,00

864 :デフォルトの名無しさん:2016/02/12(金) 08:36:13.24 ID:qz3mrubwg
続き。240行以降はデータ。240-250行のように32バイトで一組。

240 DATA 53,54,41,52,54,21,21,00,00,00,00,00,00,00,00,00
250 DATA 00,00,00,00,00,00,00,00,01,87,10,10,10,64,64,00
260 DATA 57,48,49,53,54,4C,45,00,00,00,00,00,00,00,00,00
270 DATA 00,00,54,00,34,00,97,00,00,B8,0E,0E,0E,C8,0A,0B
280 DATA 4C,4F,43,4F,4D,4F,54,49,56,45,31,00,00,00,00,00
290 DATA 00,00,00,00,00,00,FF,0F,10,83,10,07,10,5A,14,08
300 DATA 4C,4F,43,4F,4D,4F,54,49,56,45,32,00,00,00,00,00
310 DATA 00,00,00,00,00,00,FF,0F,0C,83,10,07,10,5A,08,08
320 DATA 4C,4F,43,4F,4D,4F,54,49,56,45,33,00,00,00,00,00
330 DATA 00,00,00,00,00,00,FF,0F,08,83,10,17,10,5A,04,08
340 DATA 43,52,4F,53,53,49,4E,47,00,00,00,00,00,00,00,00
350 DATA 00,00,64,00,6E,00,B4,00,00,B8,10,10,10,5A,08,08
360 DATA 48,45,4C,49,43,4F,50,54,45,52,31,00,00,00,00,00
370 DATA 00,00,00,00,00,00,18,00,16,83,02,02,10,5A,02,0C
380 DATA 48,45,4C,49,43,4F,50,54,45,52,32,00,00,00,00,00
390 DATA 00,00,00,00,64,03,18,00,10,81,00,10,10,5A,02,0C
400 DATA 42,4F,4D,42,21,21,00,00,00,00,00,00,00,00,00,00
410 DATA 00,00,00,00,00,00,00,00,15,B7,10,00,00,64,3C,00
420 DATA 42,55,5A,5A,45,52,00,00,00,00,00,00,00,00,00,00
430 DATA 00,FF,47,00,00,00,00,00,00,B8,10,00,00,5A,00,08


1〜17バイト目(偶数行すべて・奇数行1バイト目):文字列 (例:BOMB!!)
18バイト目(奇数行2バイト目):FF〜最終行 00〜その他
19〜32バイト目(奇数行3〜16バイト目):PSGデータ、レジスタ0,1,2…12,13の順、レジスタ7以外はSOUND命令と同じ

865 :デフォルトの名無しさん:2016/02/12(金) 08:50:05.69 ID:qz3mrubwg
補足。
420-430行は私が作った音。

PLAY"S8M90O6G"

と同じ音だが、PLAY命令と違い、自分で止めない限り鳴りっぱなし。
最後は DEFUSR=&H90:A=USR(0) を実行してPSGを初期化。

ついでに。このプログラムのROMイメージも作ってみた。
OpenMSX+C-BIOS、WebMSXで動作。ROM版は無限ループ・RAM8Kでも動く。

866 :デフォルトの名無しさん:2016/02/20(土) 06:24:47.86 ID:GAQ/DQUn.net
http://pickaka.ka12345.com/picss/2013/allimg/130516/13434/1-130516192P1.jpg

867 :デフォルトの名無しさん:2016/02/21(日) 10:33:15.20 ID:zmvsu5mb.net
What is her name?

868 :デフォルトの名無しさん:2016/02/22(月) 11:48:33.93 ID:suz1nbmf.net
山本陽菜 means Hina Ymamamoto

869 :DOSからSUB-ROMのBIOSを呼ぶ:2016/02/23(火) 00:42:06.64 ID:tto5lnBWm
リストAその1(M80、Windowsのxasなどが必要)


PUBLIC CALSUB
;
CALSLT EQU 001CH
EXTROM EQU 015FH
NMI EQU 0066H ;NON-MASKABLE INTERRUPT
H.NMI EQU 0FDD6H ;HOOK FOR NMI
EXPTBL EQU 0FCC1H
;
;

870 :DOSからSUB-ROMのBIOSを呼ぶ:2016/02/23(火) 00:43:35.41 ID:tto5lnBWm
リストAその2


CALSUB:
EXX ;SAVE ARGUMENT REGISTERS OVER SETUP
EX AF,AF'
LD HL,EXTROM
PUSH HL
LD HL,0C300H ;JP XXXX,NOP
PUSH HL
PUSH IX ;SUB-ROM ENTRY
LD HL,021DDH ;LD IX,XXXX
PUSH HL
LD HL,03333H ;INC SP,INC SP
PUSH HL
LD HL,0
ADD HL,SP
LD A,0C3H
LD (H.NMI),A
LD (H.NMI+1),HL
EX AF,AF'
EXX

871 :DOSからSUB-ROMのBIOSを呼ぶ:2016/02/23(火) 00:49:10.29 ID:tto5lnBWm
リストAその3(リストAはここまで)


;
LD HL,10 ;THROW AWAY THE INTERFACE ROUTINE
ADD HL,SP
LD SP,HL
RET
;
END


以上、MSX Datapackのサンプルプログラムより。

「テクニカルガイドブック」でもSUB-ROMのBIOSを呼ぶのは非常に面倒だ、と書かれていたが……サンプルプログラムはスタック上に呼び出しルーチンを置くという方法が。

872 :DOSからSUB-ROMのBIOSを呼ぶ:2016/02/23(火) 00:54:09.64 ID:tto5lnBWm
このルーチンを使ったDOS上のプログラム。

SCREEN6にする(SUB)→BEEP(SUB)→キー入力待ち(MAIN)→テキストモードに戻す(MAIN)→BEEP(SUB)→終了


リストBその1


EXTRN CALSUB
;
CHGMOD EQU 00D1H ;SUBROM-CHANGE SCREEN
CHGET EQU 009FH ;MAIN-KEYIN
TOTEXT EQU 00D2H ;MAIN-TEXT MODE
BEEP EQU 017DH ;SUBROM-BEEP
;
CALSLT EQU 001CH ;MAINROM-INTERSLOT CALL
EXPTBL EQU 0FCC1H ;MAINROM-SLOT

873 :DOSからSUB-ROMのBIOSを呼ぶ:2016/02/23(火) 00:55:57.50 ID:tto5lnBWm
リストBその2


;
LD A,6
LD IX,CHGMOD
CALL CALSUB
;
LD IX,BEEP
CALL CALSUB
;
LD IX,CHGET
LD IY,(EXPTBL-1)
CALL CALSLT
;
LD IX,TOTEXT
LD IY,(EXPTBL-1)
CALL CALSLT
;
LD IX,BEEP
CALL CALSUB
;
RET
;
END

874 :DOSからSUB-ROMのBIOSを呼ぶ:2016/02/23(火) 01:12:02.76 ID:tto5lnBWm
実行ファイル(????.com)をダンプリストにしたもの。
Windowsのバイナリエディタで入力→????.comでセーブ→MSXに転送。


0100: 3E 06 DD 21 D1 00 CD 2E 01 DD 21 7D 01 CD 2E 01
0110: DD 21 9F 00 FD 2A C0 FC CD 1C 00 DD 21 D2 00 FD
0120: 2A C0 FC CD 1C 00 DD 21 7D 01 CD 2E 01 C9 D9 08
0130: 21 5F 01 E5 21 00 C3 E5 DD E5 21 DD 21 E5 21 33
0140: 33 E5 21 00 00 39 3E C3 32 D6 FD 22 D7 FD 08 D9
0150: DD 21 66 00 FD 2A C0 FC CD 1C 00 FB 21 0A 00 39
0160: F9 C9


機械語の初心者には、M80やXasは使いこなせない。
(99BasicでHEX→バイナリ変換は作ったが)

BASIC用の機械語プログラムは、PC用はZASM、
MSX用は永久保存版1の付録にある「MSX-DOSスーパーハンドブック」のアセンブラで作ったほうが簡単だ。

875 :DOSからSUB-ROMのBIOS 訂正1:2016/02/23(火) 22:30:09.88 ID:tto5lnBWm
リスト1(MSX Datapackのサンプル)に誤りがあったので訂正。
"PUBLIC CALSUB"で、他のプログラムから呼び出すサブルーチンとして使う。


;       +0    INC    SP
;       +1    INC    SP
;       +2    LD     IX,<SUB-ROM ENTRY>
;       +6    NOP
;       +7    JP     EXTROM

876 :DOSからSUB-ROMのBIOS 訂正2:2016/02/23(火) 22:30:50.05 ID:tto5lnBWm
CALSLT    EQU    001CH
EXTROM    EQU    015FH
NMI       EQU    0066H
EXPTBL    EQU    0FCC1H
;
_CALSUB::
          EXX
          EX     AF,AF'
          LD     HL,EXTROM
          PUSH   HL
          LD     HL,0C300H
          PUSH   HL
          PUSH   IX
          LD     HL,021DDH
          PUSH   HL
          LD     HL,03333H
          PUSH   HL
          LD     HL,0
          ADD    HL,SP
          LD     A,0C3H
          LD     (H.NMI),A
          LD     (H.NMI+1),HL
          EX     AF,AF'
          EXX

877 :DOSからSUB-ROMのBIOS 訂正3:2016/02/23(火) 22:36:05.21 ID:tto5lnBWm
;
          LD     IX,NMI
          LD     IY,(EXPTBL-1)
          CALL   CALSLT
          EI
;
          LD     HL,10
          ADD    HL,SP
          LD     SP,HL
          RET

          END


一番重要なところを書き落とした。

          LD     IX,NMI
          LD     IY,(EXPTBL-1)
          CALL   CALSLT

MAIN ROMをインタースロットコール→NMIフックを呼ぶ→スタックに書かれたプログラムでSUB ROMを呼ぶ。これが抜けていた。申し訳ありません。

http://ngs.no.coocan.jp/doc/wiki.cgi/datapack?page=2%BE%CF+%A5%A4%A5%F3%A5%BF%A1%BC%A5%B9%A5%ED%A5%C3%A5%C8%A5%B3%A1%BC%A5%EB

のソースリストを引用。読みづらいので大文字に変換。

878 :DOSからSUB-ROMのBIOS 最後に:2016/02/23(火) 22:39:23.26 ID:tto5lnBWm
>>872-873のプログラムは私が作ったものなので、Datapackの作者とは無関係。
ただ、>>875-877のソースリストの先頭に

PUBLIC CALSUB

を書いておく必要がある。

879 :CALL CPU命令を増設:2016/02/25(木) 03:03:21.34 ID:6/BmD+Ggl
100 DEFINT A-Z:AD=&H8F90
110 READ A$:IF A$="*" THEN 130
120 POKE AD+C,VAL("&H"+A$):C=C+1:GOTO 110
130 DEFUSR=AD:A=USR(0):END
140 '
150 'Emulator ROM Make
160 '
170 'DEFUSR1=&H8FE9:A=USR1(0)
180 'BSAVE"CALLCPU.ROM",&H9000,&HAFFF
190 '
200 '----->Delete BSAVE header (7bytes)  FE 00 90 FF AF 00 90
210 '
220 DATA 3A,09,FD,E6,40,B7,28,09,1E,05,DD,21,6F,40,CD,59
230 DATA 01,AF,32,00,90,32,01,90,3A,42,F3,26,40,CD,24,00
240 DATA 21,00,90,11,00,40,ED,B0,3A,C1,FC,26,40,CD,24,00
250 DATA FB,3A,42,F3,E6,03,07,07,07,07,5F,3A,42,F3,E6,0C
260 DATA 83,3C,5F,16,00,21,C9,FC,19,36,20,3A,09,FD,F6,20
270 DATA 32,09,FD,C9,00,00,00,00,00,AF,21,80,90,11,81,90
280 DATA 01,7F,3F,77,ED,B0,3E,41,21,00,90,77,3C,23,77,C9
290 DATA 41,42,00,00,10,40,00,00,00,00,00,00,00,00,00,00
300 DATA FB,E5,21,2F,40,11,89,FD,1A,BE,20,0B,13,23,A7,20
310 DATA F7,E1,CD,50,40,A7,C9,0E,FF,AF,ED,B1,E1,37,C9,43
320 DATA 50,55,00,7E,E3,BE,23,E3,20,0D,DD,21,66,46,CD,59
330 DATA 01,FB,C9,1E,05,18,02,1E,02,DD,21,6F,40,CD,59,01
340 DATA 3A,2D,00,FE,03,38,EC,CD,33,40,28,DD,21,1C,52,CD
350 DATA 59,01,FB,F5,CD,33,40,29,F1,FE,03,30,D6,F6,80,CD
360 DATA 80,01,C9,00,00,00,00,00,00,00,00,00,00,00,00,00,"*"

880 :CALL CPU命令を増設:2016/02/25(木) 03:12:30.22 ID:6/BmD+Ggl
使用方法:CALL CPU(0-2)
0:Z80 1:R800(ROM) 2:R800(DRAM) その他はIllegal function callエラー。
MSX2+以前は常にIllegal function call。
このエラーが出たら、裏RAMにCALL CPU命令がセットされたとわかる。

【注意】
1.CALL MEMINIを実行中の場合はエラーが出るので、CALL MEMINI(0)で解除する。
2.命令増設後はCALL MEMINIが実行できなくなる。裏RAMを使用するため、メモリディスクの使用を禁止した。

【補足】
REM文を読めば、エミュレータ用ROMファイルの作成方法がわかるはず。
エミュレータ用ROMファイルを作成した場合、裏RAMは使用しないので、CALL MEMINIなどのメモリディスク命令が使用できる。

【最後に】
8F90H-8FFFのローダープログラムを改造したら、ノーマルROMゲームのローダーになるはず。ゲームの場合、メモリディスク使用チェックは必要ない。

881 :CALL CPU命令を増設:2016/02/25(木) 03:57:30.48 ID:6/BmD+Ggl
訂正〜240-270行。LDIRの前にBCレジスタの値の設定を忘れた。
訂正前は異常が見つからなかったので、ミスの発見が遅れた。

100 DEFINT A-Z:AD=&H8F90
110 READ A$:IF A$="*" THEN 130
120 POKE AD+C,VAL("&H"+A$):C=C+1:GOTO 110
130 DEFUSR=AD:A=USR(0):END
140 '
150 'Emulator ROM Make
160 '
170 'DEFUSR1=&H8FE9:A=USR1(0)
180 'BSAVE"CALLCPU.ROM",&H9000,&HAFFF
190 '
200 '----->Delete BSAVE header (7bytes)  FE 00 90 FF AF 00 90
210 '
220 DATA 3A,09,FD,E6,40,B7,28,09,1E,05,DD,21,6F,40,CD,59
230 DATA 01,AF,32,00,90,32,01,90,3A,42,F3,26,40,CD,24,00
240 DATA 21,00,90,11,00,40,01,00,40,ED,B0,3A,C1,FC,26,40
250 DATA CD,24,00,FB,3A,42,F3,E6,03,07,07,07,07,5F,3A,42
260 DATA F3,E6,0C,83,3C,5F,16,00,21,C9,FC,19,36,20,3A,09
270 DATA FD,F6,20,32,09,FD,C9,00,00,AF,21,80,90,11,81,90
280 DATA 01,7F,3F,77,ED,B0,3E,41,21,00,90,77,3C,23,77,C9
290 DATA 41,42,00,00,10,40,00,00,00,00,00,00,00,00,00,00
300 DATA FB,E5,21,2F,40,11,89,FD,1A,BE,20,0B,13,23,A7,20
310 DATA F7,E1,CD,50,40,A7,C9,0E,FF,AF,ED,B1,E1,37,C9,43
320 DATA 50,55,00,7E,E3,BE,23,E3,20,0D,DD,21,66,46,CD,59
330 DATA 01,FB,C9,1E,05,18,02,1E,02,DD,21,6F,40,CD,59,01
340 DATA 3A,2D,00,FE,03,38,EC,CD,33,40,28,DD,21,1C,52,CD
350 DATA 59,01,FB,F5,CD,33,40,29,F1,FE,03,30,D6,F6,80,CD
360 DATA 80,01,C9,00,00,00,00,00,00,00,00,00,00,00,00,00,"*"

882 :ノーマルROMゲームのローダー:2016/02/26(金) 03:45:30.28 ID:5M5Yi5aow
100 DEFINT A-Z:AD=&H8FC0
110 READ A$:IF A$="*" THEN 130
120 POKE AD+C,VAL("&H"+A$):C=C+1:GOTO 110
130 DEFUSR=AD:KEY1,"A=USR(0)"+CHR$(13):END
150 'BASIC
170 A2=&H9010:DEFUSR1=A2:POKE &H904B,&H1E
180 FOR I=0 TO 2:POKE A2+I,0:NEXT I
190 A=USR1(0):END
210 'Emulator ROM SAVE
230 'DEFUSR2=&H8FE9:A=USR2(0)
240 'BSAVE"FONTTEST.ROM",&H9000,&HAFFF
260 '----->Delete BSAVE header (7bytes)  FE 00 90 FF AF 00 90
280 DATA AF,32,00,90,32,01,90,3A,42,F3,26,40,CD,24,00,21
290 DATA 00,90,11,00,40,01,00,40,ED,B0,21,02,90,5E,23,56
300 DATA FB,D5,C9,00,00,00,00,00,00,AF,21,80,90,11,81,90
310 DATA 01,7F,3F,77,ED,B0,3E,41,21,00,90,77,3C,23,77,C9
330 '----- ROM DATA -----
350 DATA 41,42,10,40,00,00,00,00,00,00,00,00,00,00,00,00
360 DATA 31,00,F0,CD,CC,00,3E,20,32,AF,F3,CD,6F,00,06,00
370 DATA AF,21,00,18,CD,4D,00,3C,23,10,F9,AF,32,DB,F3,3A
380 DATA 2D,00,FE,03,38,05,3E,82,CD,80,01,CD,9C,00,28,FB
390 DATA CD,56,01,3E,08,CD,41,01,FE,FE,28,00,21,00,00,01
400 DATA 00,08,C5,06,08,CD,4A,00,07,CB,19,10,FB,79,C1,CD
410 DATA 4D,00,23,0B,78,B1,20,EA,18,D1,21,0A,00,CD,C6,00
420 DATA C9,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,"*"

883 :REM文に機械語1:2016/03/07(月) 03:55:39.13 ID:MGuXNuO80
  100 'C318AA2A2A2053414D504C452050524F472E206F662056445020262050534720
  110 '2A2A00202020204E4F562E203139383320204352454154454420425920455343
  120 '55454C4120436F72702E2056455220312E30002E002020202020000000000000
  130 '00000000000000000000000000000000000000000000FF450000000000000000
  140 '0000000000000000000000000000000000000000000000000000000000000000
  150 '0000000000000000000000000000000000000000000000000000000000000000
  160 '0000000000000000000000000000000000000000000000000000000000000000
  170 '0000000000000000000000000000000000000000000000000000000000000000
  180 '0021000039225AA02101A1F9CD5601CD21A2CD77A1CD41A2CD9C00C26CA12A5C
  190 'A02B225CA07DB420EF3A5EA03C325EA0CD41A2CD5CA2CDD2A2CD14A3CD64A3CD
  200 'ACA3CDF4A3CD3CA4CD84A4CDCCA4CD14A5CD5CA5CDA4A5CDECA5CD34A6CD7CA6
  210 'CD14A7CD44A7CD8FA7C318A13E0132DBF3C320AA00000021003822C7F3210000
  220 '22CBF321001C22CDF321002022C9F321001822CFF33E0032EAF3CD72002187A9
  230 '0E0046C5CD4700C1230C79FE08DAA2A111001821E7A701A001E5D5C5CD5C00C1
  240 'E1D109EB218FA90120003E0BF5E5D5C5CD5C00C1E1D109EBF13D20F011001C21
  250 'AFA9016400CD5C002103A03E0A010000110800CD48A2213DA03E0A010A001150
  260 '00CD48A22153A03E04010400111300CD48A22153A03E0401840011AE00CD48A2
  270 'C9CD90003E061E0CCD93003E071EB1CD93003E081E08CD93003E091E00CD9300
  280 'C9211000225CA0C932E9F3ED53B7FCED43B9FC7EB7C8CD8D002318F73A65A03C
  290 '20253A64A03D3264A0C001040021011CAFCDC4A6AFCDC4A63E10CDC4A63E10CD

884 :REM文に機械語2:2016/03/07(月) 03:56:22.75 ID:MGuXNuO80
  300 'C4A6AF3265A0C93A5EA0E607C001040021011CCD4A003CFEFF2007F53EFF3265
  310 'A0F15FFE20200C2323CD4A0017DAE0A67B2B2BCD4D0009CD4A003CCD4D0009CD
  320 '4A00FEFFC83CCD4D0009CD4A003CCD4D00C93A76A03C2018ED5FE6FFC021101C
  330 '3EBFCD4D00233E44CD4D00AF3276A0C93A5EA0E601C021111CCD4A003CFEFF5F
  340 '20053EFF3276A07BCD4D002BCD4A003DCD4D00C93A67A03C20193A66A03C3266
  350 'A0E67FC0212D1CAFCDC4A6AF3267A03266A0C93A5EA0E60FC0212C1C23CD4A00
  360 '3CFEFF200AF53A67A0EEFF3267A0F15FFE20200C2323CD4A0017DAD4A67B2B2B
  370 'CD4D00C93A69A03C20123A5EA0E6FFC021311CAFCDC4A6AF3269A0C93A5EA0E6
  380 '1FC021311CCD4A003CFEFF200AF53A69A0EEFF3269A0F15FFE20200C2323CD4A
  390 '0017DAD4A67B2B2BCD4D00C93A6AA03C20123A5EA0E6FFC021351CAFCDC4A6AF
  400 '326AA0C93A5EA0E63FC021351CCD4A003CFEFF200AF53A6AA0EEFF326AA0F15F
  410 'FE20200C2323CD4A0017DAD4A67B2B2BCD4D00C93A6BA03C20123A5EA0E6FFC0
  420 '21391CAFCDC4A6AF326BA0C93A5EA0E63FC021391CCD4A003CFEFF200AF53A6B
  430 'A0EEFF326BA0F15FFE20200C2323CD4A0017DAD4A67B2B2BCD4D00C93A6CA03C
  440 '20123A5EA0E6FFC0213D1CAFCDC4A6AF326CA0C93A5EA0E63FC0213D1CCD4A00
  450 '3CFEFF200AF53A6CA0EEFF326CA0F15FFE20200C2323CD4A0017DAD4A67B2B2B
  460 'CD4D00C93A6DA03C20123A5EA0E6FFC021411CAFCDC4A6AF326DA0C93A5EA0E6
  470 '3FC021411CCD4A003CFEFF200AF53A6DA0EEFF326DA0F15FFE20200C2323CD4A
  480 '0017DAD4A67B2B2BCD4D00C93A6EA03C20123A5EA0E6FFC021451CAFCDC4A6AF
  490 '326EA0C93A5EA0E63FC021451CCD4A003CFEFF200AF53A6EA0EEFF326EA0F15F

総レス数 1026
235 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★