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
最終更新:2019年06月18日 00:54