2014-04-04
InvaderVMテスト成功
Morikawaアプリのひとつとして実装されている InvaderVM (Virtual Machine) が動作しました。
地上局からVMのバイトコードをアップロードすることで、任意のプログラムを軌道上で実行することができます。事実上のリプログラムといえます。
SOUECE CODE
DOCUMENT
ASSEMBLER
以下の2つのプログラムを実行し、その動作を確認しました。
1. TEXT_YにCURRENT_SOLAR(太陽電池総電流)の数値を3連続で書き込み、モールスで「invader」を送信する
—- Assembly
SETC, FUNC, getTelemetryCurrent
SETC, ARG0, 2
CALL
SET, HCUR, 0
MOV, HEAP, RETV
SET, HCUR, 4
MOV, HEAP, RETV
SET, HCUR, 8
MOV, HEAP, RETV
CLR, HCUR
SETC, ARG0, 1
SETC, ARG1, 12
SETC, FUNC, setText
CALL
TXT, 7, invader
SETI, ARG0, 1047
SETC, ARG1, 7
SETC, FUNC, playMorse
CALL
SETI, ARG2, 1200
WAIT, ARG2
END
—- Hex Dump by iva
2109 0301 1d03 0502 0802 0300 2000 0506
0402 0203 04c0 0800 0880 080d 0503 0305
0103 060c 0301 2308 1f07 2013 1869 6e76
6164 6572 0405 1704 0306 0703 0149 0804
07b0 041e 0700
—- Result
2. INVADERの各種電流値を音高(ピッチ)と音価(デュレーション)に変化しそのトーンを連続して送信する。
—- Assembly
SETC, FUNC, getTelemetryCurrent
MOV, ARG0, HEAP
CALL
SETI, ARG4, 1024
SETC, ARG6, 110
SETC, ARG7, 64
MOV, ARG1, RETV
MUL, RETV, RETV
MUL, RETV, ARG6
DIV, RETV, ARG5, ARG7
DIV, RETV, ARG5, ARG7
DIV, RETV, ARG5, ARG4
MOV, ARG0, ARG5
SETC, FUNC, playFrequency
CALL
SETC, ARG9, 19
MOV, ARGA, HEAP
INC, ARGA
DIV, ARGA, HEAP, ARG9
END
—- Hex Dump by iva (Compressed)
2115 0301 1d06 0504 0804 0900 0403 0b6e
030c 4006 0602 1102 2002 040b 1202 0a0c
a003 1409 0605 0a03 0145 0803 0e13 060f
040c 0f12 0f04 0e00
—- Result