RCXとRISの仕様


戻る
徒然なるままに、必要だと思う部分だけ。 ああ〜でも段々長くなりそうだな。

RCXの仕様

CPU16MHz 8b
RAM32KB
ROM16KB
電源単三6本(但し1.0はジャックあり)
通信IRポート
入力2線ポート×3
出力2線ポート×3

以下ではRCXコードについて書くよ


変数(Variables)

変数の個数

  • 使用(記憶)可能な変数は、32個まで。
  • 名前に使える文字は、いわゆるASCII。
    ただし、数字が先頭ではいけない。
    あと(誰も使わないと思うけど)\tや\nや\vなどの
    制御文字は使えないよ。
  • 普通の(名前が任意に付けられる)変数の他に、
    タイマーが三つ使える。
    タイマーの特徴は、
    1. 0.1秒ごとに値が0.1ずつ増える
    2. 任意のタイミングで初期化(0に戻す)出来る
    3. しかし任意の値をタイマーに代入することは出来ない
    4. タイマーによって判断(条件分岐)をする場合、
      有効な値は0.1〜3276.7で、他の値は受け付けられない。

値の範囲

  • 使用可能な値の範囲は-3276.8〜+3276.7まで。
    二進数で書けば、-0b100000000000000/(10)〜+0b11111111111111/(10)
    あ、(10)は10進数ね。つまり16b(=2B)の二進数の範囲。
    16進数で書けば、0x0000〜0xFFFFまでが記録できて、
    0x0000〜0x7FFFまでが正数、0x8000〜0xFFFFまでが負数として扱われる。
    (それを十分の一にした物が表示される)
    つまり、変数aに1.0を設定することは、
    0b000000000001010即ち10を設定している訳デス。

初期値

初期値は、全て0に設定される。


可能な演算

設定

一般的に言われるところの宣言代入
ある変数を確保し、それに特定の値を入れる。
代入には定数(直接数値を入れる)、変数(他の変数の名前を指定する)が使える。

追加

  • 加算。ある変数に、別の数を加算する。
    加算された変数の内容は変化するので注意が必要。
    つまり、小文字a,b,cを変数名とすると、
    a=a+ba=a+cは出来るが、a=b+cはできない。
    a=b+cをしたければ、a=0,→a=a+b,→a=a+cをしなければならない。 また数値の範囲の都合上、3276.0+1.0=-3277.0(=0x7FF8+0x000A=0x8002)とか
    (-3276.8)+(-0.1)=+3276.7なんて現象が発生する(多分)。
  • 加算に使用できるもの(a=a+bのbに当たる部分)は、 定数値(3.0など)、(それ自身も含む)変数、カウンタ、センサーの値、IRメッセージの値。

引算

  • 減算。加算とほぼ同じ。なので略。

乗算

  • 乗算もやはり、a=a\times\!bのスタイルしかできない。
    もちろん、3276.7×2=-0.2(=0x7FFF+0x7FFF=0x8000+0x8000-2=0x10000-2)
    なんて現象が起きる。

除算

  • 除算も…、a=a\div\!bのスタイルしかできない。
  • ただし、0で割ってはいけない。

正にする

  • 与えられた数を正にする。元の値が正でも負でも構わない。
  • (想像だけど)内部的には以下のような動作をしている。
    1. 0bxxxxxxxxxxxxxxxxの、先頭ビットは1か?(0ならば終わる)
    2. 全ての桁の数を反転する。(ビット反転。0を1に、1を0に変える)
    3. そうして出来た数字に1を足す。
  • 具体的には-1を正にするときには以下の様になっていると思われる。
    1. -1→0xFFFF→先頭は1
    2. 0xFFFFを0x0000に変える
    3. 0x0000に1を加える→0x0001

負にする

  • 「正にする」と極めてよく似ている。
    1. 0bxxxxxxxxxxxxxxxxの、先頭ビットは0か?(1ならば終わる)
    2. 1を引く
    3. 全ての桁の数を反転する

最新の20件

2008-03-31 2014-07-25 2011-05-19 2010-02-08 2008-10-16 2008-06-06 2008-05-31 2008-04-16 2008-03-24 2008-01-11 2007-12-30

  • counter: 1041
  • today: 1
  • yesterday: 0
  • online: 1