PC-6000,6600情報誌 SAVE第18号特別版
今号の内容
・MUSICコーナー
・PC−6000ハード&ユーティリティ
・P6なんでもコーナー
・お知らせ
・編集後記
【SAVE事務局閉鎖!!】
SAVE事務局が設置されてから2年間、青雲寮で活動してき
ましたが、いろいろな事情のため閉鎖されることになりました。
よってスタッフはバラバラとなり、今後は代表の自宅で活動を継
続することになりました。活動内容は今までと変わりませんが、
これからは郵便物等すべてについて代表の自宅にお送り下さい。
さて、ここ札幌の今回の冬は記録的な降雪で総降雪量は6mに
もなりました。その雪もやっと解け、ようやく北海道にも春が訪
れました。春は新年度の始まりです。進学、就職に新たな気持ち
で頑張って下さい。
〔MUSICコーナー〕
サウンドLSIモニタの説明は今回で最終回となります。今回
は、残りの機能 SoUND文ジェネレータとソフトエンベロー
プについて紹介します。
前回までに紹介したサウンドLSIスクリーンエディタはいか
がでしたか。サウンドレジスタをカーソルで手軽に操作できるよ
うになったのはよいとして、「動く音を作る」というところまで
はほとんど到達できませんでした。本気で音を作ろうとするなら
ば、もっと別のアイデアが必要なのでしょう。
サウンドLSIスクリーンエディタの新しいキーコマンド、
CTRL−Pにより、サウンドレジスタの値を表すDATA文と
そのデータをサウンドレジスタにセットするステートメントとを
自動作成します。作成が終わると「ピー」という音がします。
自動作成はすでに存在するBASICプログラムの最後に、つ
け加える形で行われます。ですから、CTRL−Pを押すたびに
次々にプログラムが追加されていきます。
{エンベロープ発生}
PLAY文で音楽演奏をする際、Sというパラメータでエンベ
ロープをつけることができます。これによって「ポン」というピ
アノのような音を出すこともできます。
ところが、Sによるエンベロープでは音符毎の音の大きさを加
減することができません。
また、音符の設定は3チャンネル別々に行えるのに、Sによる
エンベロープだけはチャンネル毎に独立に行うことができません
Sによるエンベロープパターン0(または1,2,3,9)に
限り、これらの不満を一挙に解消。「ポン」という音の強弱の指
と3チャンネル独立を実現しました。
PLAY DEF □,□,□
パラメータによりチャンネルごとに減衰時間を設定します。最
大の大きさの音なら、パラメータの値10で1秒程度です。
0を設定するか、パラメータを省略したチャンネルでは、通常
のPLAY文が実行できます。
エンベロープ使用時の音の大きさは通常のPLAY文中のVに
よって設定します。
PLAY DEF文の処理は、PLAYバッファが空になるま
で実行されません。
PLAY DEF機能を始動したあとは、SoUND文、サウ
ンドスクリーンエディタなどでサウンドLSIを直接操作するこ
とは避けて下さい。誤動作します。
以上、サウンドLSIモニタについてお送りしましたが、お気
づきの点があればこのコーナーまでお知らせください。
パソコンMUSICをやるひとにとって楽譜を読めるというの
が必要最低条件です。楽譜が読めない人はそれを見ながらプログ
ラムに変えることが出来ません。したがって、がんばって読める
ようにしましょう。残念ながらこのワープロでは楽譜は出せない
のでここで教えることは出来ません。すみません。もし、教えて
ほしいのでしたらお知らせ下さい。個人的に指導します。
私は最近、キーボードを購入したのでもっぱらそればかり使用
しています。これにはMIDIがついているので何とかP6につ
なげたいと思っていますが、希望するパーツがどこにも(秋葉原
にも)売っていないのが現状です。こうなったら、パーツも自分
で作ってしまいたい気分にもなってしまいます。
〔PC−6000ハード&ユーティリティ〕
今回はランダムテクニックとして、いろいろな機能について紹
介します。
{タイム機能}
PC−6001は時計用の専用のICを持たないため(SRを
除く)、1/512secのタイマ割り込みをカウントアップし
てそれをタイマがわりに使用しています。
10 CLS
20 LoCATE 0,0
30 PRINT TIME
40 GoTo 20
上記のプログラムを実行させると下位の桁がめまぐるしく変化
しているのがわかります。これはタイマが1/512sec(1
.953ms)ごとに2つずつカウントアップしているためです
PC−6001の内部ではカウンタ用のバッファが4バイト設
定されています。TIME関数は、このバッファの内容を10進
数に直します。10進では4桁目がほぼ秒の単位になりますが、
この機能はあくまでカウンタであって時計の機能ではありません
仮に61秒になっても表示は、101XXXにならずに61XX
Xとなります。このように時、分、秒を自動的に処理してくれま
せんので、時計として使用する場合はプログラムで時、分、秒の
処理を行わなければなりません。
また、このカウンタ機能では1000カウントが1000/
1024(0.9765625秒)になりますので、これを1秒
とすると、ゲーム等なら問題ないでしょうが、実用とするなら以
下のように補正が必要でしょう。
SECoND=INT(TIME/1024)
{タイマのセット}
SRBASICではTIME$=”00:00:00”でタイ
マを0にセットできますがN60や66BASICではそれがで
きません。ではどうすればカウンタを0にセットできるのでしょ
うか?
方法1、リセットまたは電源をOFFにして再びONにする。
方法2、カウンタのバッファを0に書き換える。
上記の方法が考えられます。
方法1は非現実的なので方法2について説明します。
カウンタのバッファはFA28〜FA2BH番地を使用してい
ますのでここを0に書き換えます。
10 PRINT ”START”;TIME
20 FoR I=&HFA28 To &HFA2B:PoK
E I,0:NEXT I
30 PRINT ”SET ”;TIME
20行を実行したあと30行で表示されるまで時間がかかるので
表示された時間は0になっていません。
機械語で使用するとき
0000 210000 SETIME:LD HL,0000H
0003 2228FA LD (0FA28H),HL
0006 222AFA LD (0FA2AH),HL
0009 C9 RET
このタイマ機能には、タイマ割り込みを止めることによってカウ
ントアップを一時停止できるのです。これをうまく使えば累計タ
イムを測ることが簡単にできます。
10 PRINT ”START”,TIME
20 P=PEEK(&HFA27):P=P oR 1:Po
KE &HFA27,P
30 oUT &HB0,P
40 PRINT ”TIMESToP”,TIME
50 FoR I=1 To 300:NEXT
60 PRINT ”CoUNT UP”,TIME
70 P=PEEK(&HFA27):P=P AND &HF
E:PoKE &HFA27,P
80 oUT &HB0,P
50行はただの時間かせぎです。50行で時間を浪費したのに
もかかわらず時間は増えていきません。
ポートB0Hがタイマ割り込みのoNoFFに使っているので
上記のプログラムでは20行でまずポートB0Hの状態(モータ
のリレー状態、表示しているページ等)を調べてタイマをoFF
にして、ポートB0Hに出力します。そして70行でタイマをo
NにしてB0Hに出力します。
0000 3A27FA SToPTM:LD A,(0FA27H)
0003 F601 oR 1 :BIT0ヲ1ニスル(タイマーoFF)
0005 D3B0 oUT (0B0H),A
0007 3227FA LD (0FA27H),A
000A C9 RET
0000 3A27FA ENDTM:LD A,(0FA27H)
0003 E6FE AND 0FEH :BIT0ヲ0ニスル(タイマーoN)
(4)
0005 D3B0 oUT (0B0H),A
0007 3227FA LD (0FA27H),A
000A C9 RET
注 ポートB0Hについて
ポートB0Hの各ビットの意味は次の通りです。
ビットヌ0:タイマのoNoFF(0でoN,1でoFF)
〃 ヌ1:VRAMアドレス
〃 ヌ2: 〃
〃 ヌ3:カセットモータのoNoFF(〃)
〃 ヌ4:未使用
〃 ヌ5: 〃
〃 ヌ6: 〃
〃 ヌ7: 〃
FA27H番地・ポートB0Hのステータスエリア
※DI(割り込み禁止)命令のために正確なカウンタしては使え
ない。
※タイマoFFにしたままでいると入力時にカーソルが表示され
ず困ることがある。
{行番号を0にする方法}
65000 INPUT”No.”;No:CU=PEEK(&
HFA5F)+PEEK(&HFA60)*256
65010 LN=PEEK(CU+2)+PEEK(CU+3
)*2
65020 IF No<LN THEN END
65030 PoKE CU+2,0:PoKE CU+3,0
65040 CU=PEEK(CU)+PEEK(CU+1)*
256:GoTo 65010
上記のプログラムを行番号を0にしたいプログラムの後につけ
加えます。そして、RUN65000とすると”No.”と表示
されますから、変更したい所までの行番号を入れます。しばらく
すると”Ok”と表示されますので、LISTをとると行番号が
0になっています。
次回もこの続きをします。お楽しみに。
〔P6なんでもコーナー〕
今回はいくつか質問がきていますので紹介します。
@PC−6001mkーSRにTIME$をつける方法はありま
すか。
答え:現在調査中です。次回(19号)でお知らせします。
APC−60m43の裏のFGという所は何をつなげるところで
しょうか
答え:FGは、アースをつなげるところです。ほら、洗濯機にも
ついているでしょう。
BP6,P6m,P66はZ80のマシン語の本が今でも手に入
りますが、P6SRはどんなマシン語の本があるのでしょうか
答え:質問の意味をどう理解していいのかわかりませんが、たぶ
んSRを教材にしたマシン語講座のことでしょう。言語は
66等と同じZ80系なのでそれでよいでしょう。特有の
命令(グラフィックの座標VRAM)などくわしく載って
いるのは日本ソフトバンクから出ている「ハローMr.P
C」がおすすめです。しかし、P6関係図書は注文しても
在庫がないのではないでしょうか。本当に今でも手に入る
のですか。もし在庫があるようなところを見つけたら連絡
してください。
CおしゃべりBOXのプログラム中、グラフィック画面をロード
するのにBLoADを使っていますがどういうことでしょうか
答え:モード5まではグラフィック画面はBSAVEで保存でき
ます。領域は4000Hです。範囲はマニュアルに載って
いるページ番号に対応しています。モード6についても一
応できますが、ロードする時にページを1にする必要があ
ります。従って画面を見ながらグラフィック画面をロード
できないのです。
〔お知らせ〕
・最近、SAVEの発行が遅れていますが、編集がうまくいって
ないため御了承下さい。
・かわら版は今回はお休みです。今回原稿を送っていただいた方
は、次回に回させていただきます。御了承ください。また、さら
にかわら版の原稿をおまちしています。
・新会報は当初21号からの予定でしたが、20号からになりま
す。(7月発行予定)
編 集 後 記
・とても長いお休みをいただいてしまいました。しかし、息の続
く限りSAVEを続けていきたいと思います。皆さんの御声援
と御協力をお願いします。 (代表)
・このあとすぐ19号の製作だ! (編集担当)
・SAVE19号は6月中旬発行予定です。
17号に戻る
19号に行く