シューマン波ジェネレータ

「シューマン波ジェネレータ」の編集履歴(バックアップ)一覧に戻る

シューマン波ジェネレータ - (2019/06/18 (火) 00:54:51) のソース

-PSGサンプル1 シューマン波ジェネレータ

SONY HB-G900の存在が旧ソビエト連邦の宇宙実験施設ミールのコアモジュール内に見つけることが出来る
という話が興味深かったので、宇宙で使われたコンピュータ繋がりで
長期滞在型宇宙船に搭載された奇妙な設備装置の話を目にしたので製作事例としてMSXで再現してみた。
HB-G900はミール宇宙船の居住施設コアモジュールに設置されていたらしいが詳細や用途は不明である。
今回再現するこの装置は地球固有の電磁気振動を再現するもので旧ソビエト連邦のミールではなく、
米国のアポロ宇宙計画から出てくる話で、宇宙空間で長期滞在が必要となる月着陸のアポロ宇宙計画のため
に必要とされた機能らしい。
これらは1960年代の欧米のアポロ計画とスペースラブ計画などで使用したとか、されたらしい
という噂程度のものであるが、実験的に使用してみると地上でも気分が落ち着きこれが具合がよくて
噂とは思えず実際に有効ではないかと思われた。世の中に存在する類似装置は怪しげなものが多く
逆位相で磁場を打ち消すなど基本的に設計も間違っていて残念なので、科学的に正しい動作をするものとして
当時の技術水準で可能な方法を今回レトロPCで装置の再現をしてみることとした。
実際には有人宇宙船で使用する場合は船体全体、または生活居住空間の船体モジュールを覆うような
微弱な電磁気フィールドを作り出すような設計が必要だろう。
ROMカートリッジ用のソースコードも製作したのでROMに書き込めばFDD搭載していない機種でも
長時間動作可能である。
利用に際しては音声出力をそのままアンプにつなぎ音声出力部はスピーカーではなく微弱な電磁気
フィールドが発生するように装置を改良、調整して使用する。
地球上の自然界の自然振動は楽器の共鳴管のような構造を持たず、一定の振動数を保有していないため
海岸線のさざ波音のようにノイズに近い振動となるため今回はこの方針で再現することにした。
なおノイズは本来は広帯域に周波数が広がる性質をもつため出力部には低周波濾波フィルタは使用しない方がよい。
(あくまでもジョークソフトだが)動作はエミュレータ環境、オープンソースのCBIOSで動作する事を確認した。
※ちなみに筆者はこの宇宙船搭載装置のお陰で普段いらいらしてキレることもないし、夜よく眠れるようになった


以下のソースはDOS上で動くコマンド用のアセンブラである。
アセンブルの手順は従来と同様である。(hex2binコマンドは別途ダウンロードすること)

 >sdasz80 -o swpg.rel swpg.asm
 >sdld -i swpg.ihx swpg.rel
 >hex2bin swpg.ihx
 >copy swpg.bin swpg.com


 ;Simple schuman wave pulse generator (audio output
 ; connects tocoil)
 ;
 	.area	_ASM(abs,con)
 	.org	0x100
 ;
 	ld	d,#7		;
 	ld	e,#0b00110111	;
 	call	sub_psc
 
 	ld	d,#8		;
 	ld	e,#0x1f		;
 	call	sub_psc
 
 	ld	d,#12		;
 	;ld	e,#0b011
 	ld	e,#0b01		;
 	call	sub_psc
 	
 	ld	d,#11		;
 	;ld	e,#0b10000000
 	ld	e,#0b11000000	;
 	call	sub_psc
 
 	ld	d,#13		;
 	ld	e,#0b1110
 	call	sub_psc
 
 	ld	d,#6		;
 	ld	e,#0
 	call	sub_psc
 	ret
 
 ;-----
 sub_psc:
 	ld	c,#0xA0		;reg number
 	ld	a,d
 	out	(c),a
 
 	ld	c,#0xA1		;write 
 	ld	a,e
 	out	(c),a
 	ret


以下にROMカートリッジ用ソースを示す。ROMイメージのテストは各種エミュレータで
可能で、動作可能バージョンはMSX1~MSXtRまでとCBIOSを組み込んだ機種(Zemmixなど)。
実機で動作させる場合にはROMを書き込みする必要がある。
16KB,ROMなので開始アドレスは0x4000から始まる。hex2bin以外を使用し作成されるバイナリが
0x0-0x3FFFを含む場合はバイナリエディタで削除すること。
アセンブル手順は以下の通り。

 >sdasz80 -o file.rel file.asm
 >sdld -i file.ihx file.rel
 >hex2bin file.ihx
 >copy file.bin file.rom

 ;Simple schuman wave pulse generator (audio output 
 ; connects tocoil)
 ;***16KB ROM Cartridge
 	.area _ASM (abs,con)
 	.org	0x4000
 ;-----ROM Header
 	.dw	"AB"
 	.dw	0x4050
 	.dw	0,0,0,0,0,0
 	.dw	0,0,0,0,0,0,0,0
 
 ;-----ROM code section
 	.org	0x4050
 start:
 	call	0x006c		;init textmode
 
 	ld	hl,#text1
 	call	sub_puts	;print message
 
 	ld	d,#7		;
 	ld	e,#0b00110111	;
 	call	sub_psc
 
 	ld	d,#8		;
 	ld	e,#0x1f		;
 	call	sub_psc
 
 	ld	d,#12		;
 	;ld	e,#0b011
 	ld	e,#0b01		;1/2
 	call	sub_psc
 	
 	ld	d,#11		;
 	;ld	e,#0b10000000
 	ld	e,#0b11000000	;1/2
 	call	sub_psc
 
 	ld	d,#13		;
 	ld	e,#0b1110
 	call	sub_psc
 
 	ld	d,#6		;
 	ld	e,#0
 	call	sub_psc
 		
 endloop:
 	halt
 	jr	endloop
 	
 	
 ;------
 sub_puts:
 	ld	a,(HL)
 
 	push	af
 	call	0x00a2		;call rombios (chput)
 	pop	af
 
 	inc	hl
 	ld	a,(HL)
 
 	cp	#0
 	jr	nz,sub_puts
 	ret
 
 ;--------
 sub_psc:
 	ld	c,#0xA0		;reg number
 	ld	a,d
 	out	(c),a
 
 	ld	c,#0xA1		;write 
 	ld	a,e
 	out	(c),a
 	ret
 
 ;---
 text1:
 	.ascii	/INIT: ROM BOOT... /
 	.db	0xd,0xa
 	.ascii /INIT: AY38910-S1985/
 	.db	0xd,0xa
 	.ascii /SchumanPulseGenerator V1.00/
 	.db	0xd,0xa
 	.ascii /STATUS:Start/
 	.db	0,0,0
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。