Hybrid Statesの概観

ここでは、HybridStateの概観、というよりはプログラムそのものをまず見てもらおう というコーナーです。
HYSは電通大学生アイデア講演会他、数回発表を行ったものの、触手の動く方と動かな い方の差が顕著であり、最初に特異なHYSのプログラム記述を観てもらって、触手が動 いたならこの先へ進んでもらおうという魂胆です。



HybridStatesには、Z80アセンブラ版とPC向けC言語バージョンがあります。 どちらがインパクトを与えるかはご覧になる方によって違いますが、どちらも、前提と してちょっと前のHDLによる論理回路設計をやっておられた方であると、おや?と思われ るのではないかと思います。
HybridStatesでは、まず、プログラムの一部が論理式で記述されていることが一番目を引きます。
突然ですが以下がC言語対応版のプログラム記述です。論理記述ファイル(.LGC)と、Cソースファイル(.C)の2つに分かれています。このプログラムは、3.サンプルプログラムで説明いたします。ここではCソース内のヘッダーファイル他、一部省略しています。
なお、プログラムはサンプル用のもので、なにか目的のあるプログラムではありません。
-----------SHIFTREG.LGC------------------------
;logical definition file

sbrdef reg_a
sbrdef reg_b
sbrdef reg_c
prgdef regdump

EQUATIONS
 regdump=const.;
 reg_a=reg_c;
 reg_b=reg_a;
 reg_c=reg_b;
ENDE

-----------SHIFTREG.C--------------------------

main()
{
    /*PLD RESET*/
    sbrw(reg_a,1);
    sbrw(reg_b,0);
    sbrw(reg_c,0);

    /* Exec Hybrid States */
    for(;;) ehyscm(logic_data,data_len);
}


regdump()
{
    printf("reg_a=%d ",sbrr(reg_a));
    printf("reg_b=%d ",sbrr(reg_b));
    printf("reg_c=%d ",sbrr(reg_c));
    printf("\n");
}
以下がZ80アセンブラ版のプログラム記述です。
普段アセンブラとHDL両方使われる方にとっては非常に気色の悪いソースですが、これで間違い無くプログラムが動作しますし、実際、他のページでご紹介している、ロジアナオシロ、WLA1640でも使っています。
KEYIN:
 IN A,(PORT1)
 CPL
 AND MASKPTN
 BYRW DATA,A
 RET
EQUATIONS
 KEY_IN=CONST
ENDE

OPERATION_A:
 LD A,DATA_A
 OUT(PORT),A
 RET
EQUATIONS
 OPERATION_A=(BYR.DATA=S_KEY)+(BYR.DATA=A_KEY)
ENDE

OPERATION_B:
 LD A,DATA_B
 (略)
怪しげなソースがたくさん出てきましたが、もちろん、これらのソースをそのままアセンブラやコンパイラにかけられるわけではありません。HybridStatesでは、これらの記述を処理してアセンブラやC言語で処理できる形に翻訳するプリプロセッサを用意しています。
HybridStatesでは、その特徴の1つとして、ソースファイルの記述法の特殊性があります。この特徴によって、幾つかの利点があるのですが、もともとのHysの使命は、記述 法ではなく、もう少し根本的な所に意図があります。(←作った本人に忘れ去られつつあるような気もするが・・)
戻る