COSMOS(COconuts Software Managing Operating System)    

cosmos v4仕様

・ハードウェア
        PIC18F14K50
        12MHzレゾネータ
        USBコネクタ
        他
        (詳細は回路図参照)

・通信仕様
        USBによるCOMポートエミュレータ

・出力端子
        デジタル    8ポート
        PWM/デジタル        1ポート

・入力端子
        デジタル    1

・その他端子
        デジタル入出  1
        デジタル入出/アナログ2

・言語仕様
        行番号             1~255 (10進数)
        定数              0~255 (10進数)、0b0~0b11111111 (2進数)、0x0~0xFF (16進数)
                        (Lコマンドでリスト表示の際は全て10進数で表示される)
        変数              A,B,C,D,E,F,G,%,@,O,I,X,Y,Z,$,# (A~Gは汎用、%,@,O,I,X,Y,Z,$,#は機能変数)
        比較演算子   =,<,>,<>,<=,>=
        演算子             +,-,*,/,|,&,^ ><
        bit指定           0~7

        代入              [変数]=[定数]
                        [変数]=[変数]
        演算              [変数][演算子][定数]
                        [変数][演算子][変数]
        比較判定    ?[変数][比較演算子][定数]        (比較結果が真ならば次行を実行)
                        ?[変数][比較演算子][変数]
        ビット操作   [変数][bit指定]=0
                        [変数][bit指定]=1
        ビット判定   ?[変数][bit指定]=0          (比較結果が真ならば次行を実行)
                        ?[変数][bit指定]=1
        ラベル             0:~255:
        GOTO            #=[行番号]
                        #=[ラベル]:
        CALL            #:[行番号]
                        #:[ラベル]:
        割込先設定   Y=[行番号]
                        Y=[ラベル]:
        RETURN          #:$                             (割り込みからの復帰にも使用)
        変数値表示   [変数]?                           (変数を10進数で端末に表示)
                        [変数]?B                  (変数を2進数で端末に表示)
                        [変数]?H                  (変数を16進数で端末に表示)
                        [変数]?-                  (変数を10進数で端末に表示、改行無し、?B-, ?H-も可能)
        全変数表示   ?                               (全変数を10進数で端末に表示)
        BREAK           !                               (ブレイクポイント デバッグ用)
        END             .                               (プログラムの終了)

        機能変数    %       @ の機能選択用変数
                        @       % で指定された機能アクセス用変数
                        O       デジタル出力変数(出力ポート)
                        I       デジタル入力変数(入力ポート)、書込み時は書込まれた数値 * 0.1sec の待ち動作
                        X       アナログ0入力変数(アナログ0)、書込み時は書込まれた数値がPWM値となる
                        Y       アナログ1入力変数(アナログ1)、書込み時は書込まれた数値がタイマー割り込み先の行番号となる
                        Z       端末文字入出力
                        $       スタック変数(16段)
                        #       プログラムカウンタ

・特殊命令
        WD[定数]  定数 x 1/10秒待つ(指定できる数は0~63)
        WS[定数]  定数秒待つ(指定できる数は0~63)
        WM[定数]  定数分待つ(指定できる数は0~63)
        WH[定数]  定数時間待つ(指定できる数は0~63)

        VR[定数]  出力の右回転(定数はスピード指定、指定できる数は1~63)
        VL[定数]  出力の左回転(定数はスピード指定、指定できる数は1~63)
        V0              出力の回転停止

        S[音階]           簡易発音(音階指定は1~63、別表参照)
        S0              発音停止

        P0              リモコン信号受信をオフ
        P1              リモコン信号を検出するまで待つ(注:プログラム実行中以外は赤外線は受信できない)



・コマンド
        R       先頭から実行(RUN)
        R10     10行目から実行

        L       プログラム全体表示(LIST)
        L02     2行目以降の内容表示

        NA      プログラム全体消去(NEW)
        N02     2行目以降のプログラム消去

        Ctrl+C          実行停止
        Ctrl+B          スキップ実行
        Ctrl+A          実行再開


・入力アシスト
Q[開始行番号],[ステップ数]        行番号入力アシスト

例)
Q10,5   10から5刻みで行番号を自動生成する
>10 _

Qのみの入力でアシスト終了


・機能レジスタ(%でアドレス指定後、@でアクセスする)
00~3F   R/W     汎用メモリー64byte
40~7F   R/W     汎用メモリー64byte(注意:Program Flash の書き換え時に使用される。オプション機能によっては特別な働きをする。)

80      R/W     各種動作モードの設定
81      R/W     演算結果上位バイト(乗除算)
82      R/W     演算結果下位バイト
83      R/W     除算あまり
84      R/W     乱数(Read時に特殊処理)
85      R/W     タイマーによる減算変数(0で停止)
86      R/W     アナログ0モード設定(x0:Vref=Vcc、x1:Vref=1.024V、x2:Vref=2.048V、x3:Vref=4.096V、x4:温度変換、x8:デジタル)
                アナログ1モード設定(0x:Vref=Vcc、1x:Vref=1.024V、2x:Vref=2.048V、3x:Vref=4.096V、4x:温度変換、8x:デジタル)
87      R/W     アナログ変換結果上位バイト
88      R/W     アナログ変換結果下位バイト(bit7,6のみ有効)
89      R/W     時間(0~24)
8A      R/W     分(0~59)
8B      R/W     秒(0~59)
8C      R/W     1/100秒(0~99)
8D
8E
8F      R/W     PWM周波数(初期値=FF)(83.33nsec * (255(FFh) + 1) * 16(T2 Pre)=341.33usec→2929.6875Hz)

90      R/W     IR ステータス
91      R/W     IR データ0
92      R/W     IR データ1
93      R/W     IR データ2
94      R/W     IR データ3
95      R/W     IR データ4
96      R/W     IR データ5
97      R/W     IR データ6
98      R/W     IR データ7
99      R/W     IR ビット数
9A      R/W     減算時間(0~24) WAIT WHn で使用
9B      R/W     減算分(0~59) WAIT WMn で使用
9C      R/W     減算秒(0~59) WAIT WSn で使用
9D      R/W     減算1/100秒(0~99) WAIT WDn で使用
9E      R/W     TIMER時間設定 H(初期値=6D)(10000h - 6D84h = 927Ch→37500 * 83.33nsec * 8(T1 Pre)=0.025sec)
9F      R/W     TIMER時間設定 L(初期値=84)


A0      W/R     init_i2c / Ack Flag 読み出し(0:Ack無し, 1:Ack有り)
A1      W       start_i2c
A2      W       restart_i2c
A3      W       stop_i2c
A4      W       send_data
A5      R       receive_data
A6      R       receive_last_data


B0~DF   ?/?     Option機能使用時の設定用

E0      W       EEPROM アドレス(00~ff:256byte)(EEPROMには寿命があります。約100万回の書込み保障)
E1      R/W     EEPROM データ (アドレス(E0)自動加算(ffで加算停止))

F0      W       Program Flash アドレスhi(書き換え可能エリア:3a00~3fff)(Program Flashには寿命があります。約10万回の書込み保障)
F1      W       Program Flash アドレスlo
F2      R/W     Program Flash データ
F3      W       55, AA の書き込みで Program Flash への書き込み実行(32byteごとに実行すること)