今号の内容 ・新年度のSAVE活動について ・MUSICコーナー ・ユーティリティーコーナー ・新コーナー ・編集後記 さて、SAVEが冬眠している間に世の中ではいろいろなことがありました。 その中でもいちばん大きかったのは「昭和」から「平成」に変わったのは御存 知だと思います。 またP6が登場して早くも7年がたちました。 現在、パソコン雑誌で生き残っているのはマイコンBASICマガジンだけ? となってしまいました。 しかし、SAVEでは今後も活動を続けていきます。 さて、本年度のSAVE活動予定ですが、4月より本格的にしようと思い、 独自の編集室を設けたりする予定です。 SAVEオリジナルソフトの制作も入ろうかなと思っています。 現在、考案しているのはランダム相撲ゲーム、ディスク版シューティングすご ろく、FM音源カートリッジを有効に使う、便短ユーティリティー、○×大学 アドベンチャーなどです。 これからますますがんばりますのでどうぞよろしくお願いします。 <MUSICコーナー> 前回お休みしたので今回はタップリと間をとって始めましょう。 前回のプログラムは音が下から上へ上がるプログラムでした。 ゲーム音のピューンピューンという音はこれを応用すればよいのです。 SoUND文というのは、PLAY文では表せないノイズ音や周波数の微妙な 音が出せ、 PLAY文をBASICにたとえるとSoUND文は機械語というようにちょ っと大げさでしたが、解釈すればよいと思います。 では各パラメーターの説明をしましょう。書式は SoUND α,β という書式で、αの範囲は0〜15までで、役割は、下図のとうりで、 βの範囲は0〜255までで、役割は、レジスタに情報を与えます。 αの値と主な役割は、次の通りです。 0,1:チャンネルA(PLAY文でいうと第一パラメーター、PLAY [A$]のこと)に相当し、 0は下位8ビット、1は上位4ビット、つまり1つのレジスタには情報が25 6個しか与えられない。 例えば、これだと 100Hz〜355Hzの音しか出せないということで実 際は4096(だったかな)間の周波数を出すので 1つ値をかけることにより増やすことが出来るわけです。 したがって、2つ値があるわけです。 2,3:チャンネルB(第2パラメーター、PLAY ,[B$])に相当。 2は下位8ビット、3は上位4ビット。役割は上記と同じ 4,5:チャンネルC(第3パラメーター、PLAY ,,[C$])に相当。 4は下位8ビット、5は上位4ビット。役割は上記と同じ 6 :ノイズ周波数 下位5ビット。値0〜31まで 7 :ミキサーの役割をして、どのチャンネルにどの音を出したらよいか 選択する 8 :チャンネルAの音量 9 : 〃 B 〃 10 : 〃 C 〃 11,12:エンベロープ周期。PLAY文のMと考えてくれればよい。 Mは65535まである理由はここからきている 13 :エンベロープの形 14,15:I/oポート入出力。ジョイスティックの入出力用など くわしくは、各マニュアルを見て下さい。 どうしてもわからないことがあったらSAVEに質問して下さい。お答え します。 例えば、チャンネルAに400Hzのノーマルな音、チャンネるBに2 0KHzのノイズを共にボリューム最大にして音を出す時には、 2000000÷(16×400)→313 =256×1+57 各数字の説明 2000000:定数 16:定数 400:出したい周波数 256:定数 1:αレジスタ1の値(チャンネルAの時) 57:αレジスタ0の値(チャンネルAの時) 2000000÷(16×20000)→6 各数字の説明 2000000,16:定数 20000:出したいノイズ周波数 6:求めるαレジスタ6の値 AチャンネルトーンスイッチON,BチャンネルノイズスイッチON, を出力(ONは0,OFFは1) I/Oポート ノイズ トーン 1 0 1 1 0 1 0 1 OFF ON OFF OFF ON OFF ON OFF 10110101B=10進数で 1*2^7+0*2^6+1*2^5+1*2^4+0*2^3+1*2^2+0*2^1+1*2^0 =128+0+32+16+0+4+0+1=181 =αレジスタ7の値 チャンネルAのボリューム最大 15BBPLAYの”V”と同じ−>α レジスタ8の値 チャンネルBのボリューム最大 15BBPLAYの”V”と同じ−>α レジスタ9の値 よって以上まとめてプログラミングすると SoUND0,57:SoUND1,1:SoUND6,6:SoUND7,181:SoUND8,15:SoUND9,15 STOPキーは、αレジスタの値を初期化(0にする)しますので押す と内容が変わってしまいます。 一度STOPキーを押してSOUND8,15としてみてください。 ピーッと音が鳴りましたね。 それはSTOPキーを押したときに鳴ったBEEP音(ピッ)という値が αレジスタ0,1に入っているということです。 波の音など作る時に、エンベロープの音が鳴り終わる周期を決めて計算 すれば簡単に作れるわけです。 以上、簡単なSOUNDの説明でしたが少しはわかったでしょうか。 次回も引き続きSOUND文の研究をします。 <ユーティリティーコーナー> Pマガ’88.6に行番号の後に’”’をつけるというプログラムがあ りましたが、 このプログラムは行番号の後に”’”もしくは”REM”をつけるプログ ラムです。 残念ながらこれはディスク版用です。また、N66SRBASIC用です。 65000 INPUT"サイシュウギョウバンゴウ";LN:LM=100 65010 IFLM>LNTHENA$="DELETE65000-"+CHR$(13)+"CLS"+CHR$(13)+CHR$(&H1 E)+"オワリマシタ。":GoTo65030 65015 IFLM>=10000THENoP$=CHR$(&H1C)+CHR$(&H1C):GoTo65020 65017 IFLM>=1000 THENoP$=CHR$(&H1C):GoTo65020 65018 oP$="" 65020 A$="CLS":LIST"+STR$(LM)+CHR$(13)+CHR$(&HB)+CHR$(&H1C)+CHR$(&H 1C)+CHR$(&H1C)+OP$+"'"+CHR$(13)+"LN="+STR$(LN)+":LM="+STR$(LM)+"+10" +CHR$(13)+"GoTo65010"+CHR$(13) 65030 AD=&HE500 65040 FORI=1TOLEN(A$):PoKEAD,ASC(MID$(A$,I,1)):AD=AD+1:NEXT 65050 PoKE&HE8CE,0:PoKE&HE8CF,&HE5:PoKE&HE6D3,LEN(A$):END 入力方法:モード6、上記のとうり行番号を変えずに入力して、ディスクに アスキーセーブする。SAVE”REMつけ”,A 実行方法:まず、CLEAR,&HE400 とダイレクト実行させてからREM文をつけたいプログラムを入力する。 そのあと、RENUM100とダイレクト入力させて、もとのプログラムの 行番号を整理する。 ・MERGE”REMつけ” を実行 ・GOTO 65000を実行 ”おわりました。”が画面左上に出るとおわり。 他のBASICモードでの移植方法の例としては次の様です。 変える行番号は65010,65020,65030,65050で それぞれ次の様に入力して下さい。 65010 IFLM>LNTHENA$="DELETE65000-"+CHR$(13)+"CLS"+CHR$(13) 65013 IFLM>LNTHENA$=A$+CHR$(&H1E)+"オワリマシタ。":GOTO65030 65020 A$="CLS:LIST"+STR$(LM)+CHR$(13)+CHR$(&HB)+CHR$(&H1C)+CHR$(&H1C) 65022 A$=A$+CHR$(&H1C)+OP$+"REM"+CHR$(13)+"LN="+STR$(LN)+":LM="+STR$(LM) 65024 A$=A$+"+10"+CHR$(13)+"GOTO65010"+CHR$(13) 65030 AD=&HF000 65050 POKE&HFB8D,0:POKE&HFB8E,&HF0:POKE&HFA32,LEN(A$) 以上の様に変更、実行方法はモード3〜5で CLEAR300,&HEFFFとダイレクト入力して以下は同じです。 <新コーナー 6000シリーズのハードにせまる!> 今回から6000ファミリー5機種の長所や短所などいろいろな面でとり あげていきます。 今回は、PC−6001mk2とPC−6001mk2SRを比べます。 (以下mk2、SRとする) 外観はSRのほうがmk,2を少し太らせたというような感じで 中身をみるとメインCPUやサブCPUは変わっていませんが 大きく違う点はROMです。 mk2の場合、BASICROMは32KバイトなのにSRは64Kバイト となっています。 これは、mk2はN60BASIC系(モード1〜4)と N60mBASIC系(モード5)の2タイプにわかれてROMに収まって います。 例えばCLOADやCSAVEコマンドは各タイプ独自のアドレスを持って います。 ちなみにmk2でモード1〜4でCSAVEするピーガー音と モード5でCSAVEするピーガー音を聞き比べてみてください。 音低が微妙に違うはずです。ところがSRの場合、 N66BASIC系(モード1〜5)を一つにまとめることが可能になった ので N66BASIC系(モード1〜5)とN66SRBASIC系(モード6 )というタイプにわかれています。 ただし、N66BASIC系とN66SRBASIC系では全く別のROM なので 中間言語も違えばBASICワークエリアも違ってモード5でCSAVEし たものをモード6でCLOADすると 中間言語が違うため変なようにリストが出てしまいます。 つまり、8801でセーブしたプログラムを6001でロードすると リストが変になるのと同じことです。 SRの場合、モード1〜5でロード、セーブアドレスを同じにしているので 音も同じです。 <お知らせ> ・SAVEではゲームだけでなく、MUSICソフトやハードのことについ てのQ&Aを受け付けております。 PC−6000シリーズのことなら何でも質問に出来るかぎり答えていきた いと思います。 せっかく自分で持っているパソコンを使いこなさなければもったいない! どしどしSAVEまでおよせください。 ・分割入力参加会員へ 今回の参加者はたった4人なので一人当りの量が少し多くなりますのでが んばって入力して下さい。 宜しくお願いします。(総入力量の1/4だと思えば少しは楽になるのでは。) <テープ版のゲームソフトに疑問 by.No.1017> SAVEに入会したことで、最近またパソコンを動かしているのですが、 それであることが気になり始めました。僕の持っているゲームソフトは10 本位あります。 そして当然のごとく、ゲームをしたい時はロードするのですが、これがなか なかロードできない。 つまり、リードエラーが出てしまうのです。しかも、1本や2本ではありま せん。 時には2,3度やり直さなくてはいけません。 よくよく考えてみるとゲームソフトを買って、 その全てが3年の年月が経っていますのでこれは仕方のないことなのかもし れません。 でもカセットテープというものは元来、音楽とか声とかを録音するものであ って、 オールデジタルのパソコンのプログラムをアナログのカセットテープに録音 しようというのが間違いだと思う。 つまり、音楽のように少々テープに傷が入ろうと一応は聞くことが出来るの に対し、 1バイトの欠落も許されないパソコンのプログラムはカセットテープでは少 々荷が重すぎると思います。 しかも、その中身のテープ自体も決して性能の良いものを使っているとは言 えません。 最低でも日常使っているオーディオ用位のグレードが必要だと思います。 そして、データレコーダーの方もこれまたお粗末。 あれではテープに傷が入っても仕方がありません。 ここまで書いて来て、ふとテープソフトが出なくなったのは今まで書いて きたことが関係あるのかと考えてみましたが、 やはり全く関係無いでしょう。 テープソフトの衰退した原因はロード時間の長さ、その割合に記憶容量が少 ない、 ランダムアクセスが出来ないというような事だと思います。 つまり、ソフト会社はゲームを売ってしまえばもう自分には関係無いと言っ たような考えを持っているかもしれません。(断言は出来ません。) 自分で作ったプログラムをテープに保存するという目的だけならば、 テープは最高にいいと思いますが、お金を5000円近く払って買ったソフ トが3,4年でダメになってしまうのではむかつきます。 確かに、3,4年後までゲームをすることはあまりありませんが、 面白いゲームは何年経っても面白いのを忘れないでほしいです。 追伸:「バックアップをしていればいいじゃないか」という考えの人もい ると思いますが、 テープはロードしなくても(傷をつけなくても)次第に出力が落ちていくし、 コピーツールを持っていない人も多いのでは。それに、オリジナルを保存し ておいてバックアップをしたもので楽しむというのはなんとなく納得できません。 やはり、コピーとは違う魅力をオリジナルは持っていますから。 編 集 後 記 ※電算化の都合上、編集後記は割愛させていただきます。 (編集担当)