Vol.792 27.Mar.2020

NHKプラス PasoconMiniPC8001(9)〜PCGサウンド

N NHKプラス 〜インターネット視聴サービス

by fjk

 「NHKプラス」は、NHKの地上放送の番組をインターネットで視聴できるようにしたサービスで、放送中の番組を視聴できる「常時同時配信」と、放送後の番組を視聴できる「見逃し番組配信」がある。すでに提供している「NHKオンデマンド」は有料のサービスで、視聴可能な番組や期間、画質が異なり、NHKプラスは地上テレビ放送(総合・Eテレ)のみが対象だが、NHKオンデマンドは衛星放送も対象となっている。さらに、「TVer」は、5番組から10番組に限定した配信を無料で放送後1週間程度となっている。
 NHKプラスを利用するには、利用申込みと認証の手続きを行う必要があり、NHKの受信契約者であれば、受信契約者および生計を同一にする人と併せて、同時に5画面まで無料で試聴できる。ただし、インターネットを使うので通信料金が必要。
 配信される番組は、同時配信、見逃し番組配信とも、埼玉県、千葉県、東京都および神奈川県を合わせた区域(南関東エリア)を対象にした番組で、残念ながら地域の放送は試聴できない。
 推奨するOSは、スマートフォン、タブレットでは、Android 6以上、iOS 10以上で、ブラウザーではなく専用アプリをダウンロードして使うことが勧められている。
 パソコンの推奨OSは、Windows10(1809以降)/8.1 (ブラウザーはMicrosoft Edge/Google Chrome 最新版)、macOS (ブラウザーはSafari/Google Chrome 最新版)で、Internet Explorerでは利用できない。
 利用の申し込みは、NHKプラスのホームページから可能で、

@ NHKプラスのホームページでメールアドレスを記載してメールを送る。
A 指定したアドレスに「手続きページ」のアドレスが記載されたメールが来る。
B ID(8文字以上)、パスワード(10文字以上)、受信契約者名、・・等を入力・送信。
C NHKから「確認コード」が記載されたはがきが来る(1〜2週間後)。
D 試聴画面で確認コードを入力。

以上の手順となっているが、はがきが来る前に、Bで申請したIDとパスワードを入力すると、画面のメッセージが消えて、NHKプラスのページで全てが直ぐに利用できるようになる(一定期間)。なお、登録を行わないと、過去番組などは視聴できない

パソコン(Edge)で視聴 タブレット(専用アプリ)で視聴


P PasoconMiniPC8001(9) 〜PCGサウンドによる音楽演奏

by fjk

 PCGにはサウンド発生機能があり、APPENDIXに詳しい説明と使用例が記述されている。

【PCGサウンドの使い方】
@ OFH番地(uPD8253)にチャンネルの動作条件(モード3[xx110110B])を書き込む。
A 各チャンネルのカウンター(0CH〜0EH)に2バイトのデーターを書き込む。
B PCGのカウンターゲート(02H)をON([11000000B])にする。
テストプログラムは、
@「1」「2」「3」を押すことで、各チャンネルを選択し、音を出すことができる。
A キーボードを鍵盤のように押すことで、C4(ド)〜C5(ド)の音をならすことができる。
B「スペースキー」を押すと、選択中のチャンネルの音が消える。
C「0」を押すと全てのチャンネルの音が消える。
D 和音を出すには各チャンネルを選択後、鍵盤(キーボード)で順に音を選ぶ
鍵盤(キーボード)の配置
stst.cmt(zip)
100  '=== Sound Test
110  CLEAR 500,&HDFFF
120  DEFINT A-Z: DIM W(13),M$(13),D
130  DEF USR0=&HE000    :'S-Init
140  DEF USR1=&HE00C    :'S-Clear
150  DEF USR2=&HE01A    :'S-Off
160  DEF USR3=&HE020    :'Ch0 Play
170  DEF USR4=&HE024    :'Ch1 Play
180  DEF USR5=&HE028    :'Ch2 Play
190  DEF USR6=&HE031    :'S-On
200  GOSUB 1020         :'Init Mashin
210  GOSUB 2010         :'Int S.Data
250  D=USR0(D%)         :'Sound Init.
260  C=0: S1=1: S2=5: S3=8

310  PRINT"(";M$(S1);",";M$(S2);",";M$(S3);")[";HEX$(C);"]:? ";
320   K$=INPUT$(1): PRINT K$
330  IF K$="!" THEN D=USR1(D%): END
340  IF K$="0" THEN C=0: GOSUB 820: GOTO 310:'All Clear
350  IF K$="1" THEN C=1: GOSUB 520: GOTO 310 :'Ch1 On
360  IF K$="2" THEN C=2: GOSUB 620: GOTO 310 :'Ch2 On
370  IF K$="3" THEN C=3: GOSUB 720: GOTO 310 :'Ch3 On
380  IF K$="7" THEN D=USR2(D%): GOTO 310 :'Sound Off
390  IF K$="8" THEN D=USR6(D%): GOTO 310 :'Sound On
410  S=INSTR(" sedrfgyhujikl",K$)
420  IF S=0 OR C=0 THEN 310
440  ON C GOSUB 510,610,710
450  GOTO 310

500 '--- Ch0 On & Play
510  S1=S-1
520  D=W(S1): D=USR3(D%): RETURN

600 '--- Ch1 On & Play
610  S2=S-1
620  D=W(S2): D=USR4(D%): RETURN

700 '--- Ch2 On & Play
710  S3=S-1
720  D=W(S3): D=USR5(D%): RETURN

810 '--- Clear All S-data
820  S1=0: S2=0: S3=0:
830  D=USR1(1): RETURN

1000 '---Mashin Data
1020 RESTORE 1120: A=&HE000
1030 FOR I=0 TO 54
1040    READ B:  POKE A+I,B
1050 NEXT
1060 RETURN
1110 '--- Sound Init.    *S_INI:   $E000H
1120 DATA &H3E,&H36      :'E000  LD   A,00110110B ;Mode3
1130 DATA &HD3,&H0F      :'E002  OUT  (0FH),A     ;Ch0
1140 DATA &H3E,&H76      :'E004  LD   A,01110110B
1150 DATA &HD3,&H0F      :'E006  OUT  (0FH),A     ;Ch1
1160 DATA &H3E,&HB6      :'E008  LD   A,10110110B
1170 DATA &HD3,&H0F      :'E00A  OUT  (0FH),A     ;Ch2

1180 DATA &H3E,&H01      :'E00C  LD   A,01H
1190 DATA &HD3,&H0C      :'E00E  OUT  (0CH),A     ;Ch0
1200 DATA &HD3,&H0C      :'E010  OUT  (0CH),A
1210 DATA &HD3,&H0D      :'E012  OUT  (0DH),A     ;Ch1
1220 DATA &HD3,&H0D      :'E014  OUT  (0DH),A
1230 DATA &HD3,&H0E      :'E016  OUT  (0EH),A     ;Ch2
1240 DATA &HD3,&H0E      :'E018  OUT  (0EH),A
1250 '--- Sound Off      *S_OFF:    $E008H
1260 DATA &H3E,&H00      :'E01A  LD   A,00000000B
1270 DATA &HD3,&H02      :'E01C  OUT  (02H),A
1280 DATA &HC9	  :'E01E  RET
1290 DATA 0              :'E01F  DB   0

1500 '--- Play Sub. (OUTI)        $E020
1510 DATA &H0E,&H0C      :'E020  LD   C,0CH      ;<-Ch0
1520 DATA &H18,&H06      :'E022  JR   E02A (+6)
1530 DATA &H0E,&H0D      :'E024  LD   C,0DH      ;<-Ch1
1540 DATA &H18,&H02      :'E026  JR   E02A (+2)
1550 DATA &H0E,&H0E      :'E028  LD   C,0EH      ;<-Ch2
1560 DATA &HFE,&H02      :'E02A  CP   02H
1570 DATA &HC0           :'E02C  RET  NZ
1580 DATA &HED,&HA3     :'E02D  OUTI    ;(HL)->(C),HL=HL+1
1590 DATA &HED,&HA3     :'E02F  OUTI    ;(HL)->(C),HL=HL+1
1600 '--- Sound On       *S_ON:  ORG  E000H
1610 DATA &H3E,&HC8      :'E031  LD   A,11001000B
1620 DATA &HD3,&H02      :'E033  OUT  (02H),A
1630 DATA &HC9	   :'E035  RET
1640 DATA 0               :'E036  DB   0

2000 '--- Sound Generate Data  n = 3993600/f
2010 RESTORE 2100
2020 FOR I=0 TO 13
2030   READ W(I),M$(I)
2040 NEXT
2050 RETURN
2100 DATA 1     ,0  	:' rest
2110 DATA 15264 ,C4 	:' 261.63 Hz (3BA0H)
2120 DATA 14408 ,C#4	:' 277.18 Hz (3848H)
2130 DATA 13599 ,D4 	:' 293.66 Hz (351FH)
2140 DATA 12836 ,D#4	:' 311.13 Hz (3224H)
2150 DATA 12115 ,E4 	:' 329.63 Hz (2F53H)
2160 DATA 11435 ,F4 	:' 349.23 Hz (2CABH)
2170 DATA 10794 ,F#4	:' 369.99 Hz (2A2AH)
2180 DATA 10188 ,G4 	:' 392.00 Hz (27CCH)

( 行番号410のINSTR文の比較データには先頭に「スペース」が1文字ある)

※【N-BASICの追補】

★ClEAR 文は行頭に宣言すること!
CLEAR文を実行すると、それ以前に宣言されていた変数はDEF***文を含めて全てクリアされる。
★USR関数では
USR関数の引数には、受け取る機械語との整合性が判りやすいように型宣言文字を付けように。
例えば整数型の引数の場合、”%”を付ける。
  D = USRx(D%)
★USR関数で数値型のHLレジスタの値は
HLレジスタは全ての型でFAC(F0A4〜F0AB)のF0A8を示す。変数の格納番地は、
整数型(%): F0A8〜F0A9(2バイト)
単精度型(!): F0A8〜F0AB(4バイト)
倍精度型(#): F0A4〜F0AB(8バイト)
★浮動小数点数値のフォーマット
N-BAISCの浮動小数点数値のデータフォーマットはMicrosoft形式で、VisualBasicなど一般でよく使われているIEEE形式でないので注意!。
(相互で使うにはデータ変換が必要)
utst.cmt(zip)
10  '==== USR Function test (INT)
100  CLEAR 500,&HDFFF
110  DEFINT A-Z
120  DEF USR0 = &HE010
150  GOSUB 9010
190  E=&HE000

300 '--- Main Loop
310  INPUT "data";D
320  A = USR0(D%)
330  PRINT"E000:";
340  FOR I=0 TO 14
350   B = PEEK(E+I)
360   PRINT RIGHT$("0"+HEX$(B),2);",";
370  NEXT
380  PRINT
390  GOTO 310

9000 '--- Data Initialize
9010 AD = &HE010
9020 RESTORE 10000
9030 FOR I=0 TO 21
9040  READ B
9050  POKE AD+I,B
9060 NEXT
9070 RETURN

10000 '----  USR Func. Parameter Check
10010 '                             ORG  E000H
10020 '                      :E000  DS   16
10030 '                     *ITST:        $E010
10040 DATA &H32,&H0C,&HE0   :'E010  LD   (E00CH),A 
10050 DATA &H7D             :'E013  LD   A,L
10060 DATA &H32,&H0D,&HE0   :'E014  LD   (E00DH),A
10070 DATA &H7C             :'E017  LD   A,H
10080 DATA &H32,&H0E,&HE0   :'E018  LD   (E00EH),A
10090 DATA &H01,&H0C,&H00   :'E01B  LD   BC,000CH
10100 DATA &H11,&H00,&HE0   :'E01E  LD   DE,E000H
10110 DATA &H21,&HA4,&HF0   :'E021  LD   HL,0F0A4H
10120 DATA &HED,&HB0        :'E024  LDIR
10130 DATA &HC9             :'E026  RET
USR関数の数値引数確認プログラム
変数Dの型宣言文字を変えてみて下さい


NHKプラス PasoconMiniPC8001(9)〜PCGサウンド