独自処理系と事実上の世界標準

私はCarry Dos,と,Hu-Disk BASIC,dB-IBASIC,CP/M の実物を所有しています。
日立で働いていた時や、物デジで働いていた時にかなり幅広くお店に通っていたので。

使ってみた感想は悪くないんです。

が、しかーし

 

(日本人の悪い癖なのですが)独自処理系には妙な弊害があります。


・Carry Dos には 標準入出力の概念がありません。
・Hu-Disk BASIC にはモニタがサポートしてくれていましたが、これはDOSではないので不便です

そもそも、CP/Mと違い、国産のDOSの多くには<連係編集プログラム>たる「リンカ」と、<書庫管理プログラム>たる「ライブラリアン」というものが一切ありません。
(SHARPのF-DOSは違いましたが。当時の私の手取りでは買えませんでした。)

西側諸国の人々の様子は、我々日本人技術者の様子とまったくことなり、合理的な判断で「システム開発としての」ソフトウェア設計をしています。
そもそも、国際的に「事実上の標準」たる CP/M を使わず、独自モニターと、 独自DOS に走る時点で相当の凝り性なわけで。

 

それがゆえに。
90年代以降 16bit 時代に「事実上の標準」に痛い目にあって(今でも逢い続けていますので)すごく西側諸国から後逸してしまうわけですがね。


しかーし、CarryLab. (キャリーラボ)の足跡をたどると、 q-Pascal の設計者との交流に辿り着くわけです。つらつら当時のI/O誌を見るに…(I/Oも持っていますよ)

ぬわんと q-Pascal の作者が文通したり、職場訪問したりした際に「無償で」「自分の仕事があるのに」作者に技術提供していたわけです。

CarryLab. …



…だから 倒産するんですよ。

普通そこまでしませんて…
リチャード・ストールマン氏よか、よっぽど早くソフトウェア共産主義を実践していたわけで…

www.gnu.org


つまり CarryLab. こそは、救世主であり、福音というカーゴをもたらす主であり、革命的ソフトウェア集団でもあったわけです。


のちに解散して倒産したのが惜しまれます。

なんで私達の世界は主や救世主や社会主義者に優しくないんですかね…
みんな世界を今よりより良くしようと奮起していらっしゃるのに。

 

ライバル企業たる dB-SOFT に WICS などの技術を次々と提供し、後に JET のワープロ辞書を丸ごとすっぱ抜かれる(盗用罪)という不法行為にあうとか、もうマゾでしょう。

あまり言いたくないんですが。

 

「資本主義」は無償の愛を持つ技術者が嫌いなんでしょうか?

 

私はそうは思いたくありません。
吉村師匠や古旗師匠が不幸せな世界線は、Dメールでひっくり返してやりたいです。

その為には

X68Townsにeth:デバイスの基盤を接続し、"SERN"の技術を盗んで"IBN"コンピュータをゲット…しなきゃだワなわけで。

道のりは遥か遠いわけですが。


やります。
決心しました。
オープンソース運動万歳だお。
ダルがいうんだから間違いないお。

(c) stieinsgate

steinsgate.jp

虚無について

  • 依存症の仕組み
    私はアルコール依存症です。
    その結果脳に変調をきたし、重度な精神障碍者として行政から自立支援受給者証の認定を受けています。

    デイケア通所では「アルコール回復プログラム」というものがあり、通所者はコストを負担して授業を受けるわけです。

    この授業の講師が、とぼけてて面白いんですが、唯一気に入らないのが、「依存症は社会の問題ではなく、個人の問題である」と定義づけている点です。

    クソかと。馬鹿かと。

    科学的な態度ではありません。
    依存にいたる「学習モデル」を提示し、学習には三段階の状態遷移があり、学習は制御工学的でいう「フィードバック的」行動というのは分かります。

  • 疑似プログラム
    学習のモデルをBASIC言語で書いてみましょう。

    0 '
    0 '  学習の仕組み
    0 '   by DDJTBCK/W
    0 '
    10 GOSUB "きっかけ"
    20 GOSUB "行動"
    30 GOSUB "学習"
    40 褒賞=褒賞+1 : GOTO 10

  • 褒賞系とフィードバック制御
    褒賞系というものが人の脳には備わっており、他の動物とことなり、ここがリミット解除されている(壊れている。満足を知らない)為に「学習された依存」というフィードバック制御が人間心理にかかる。ここまではOk

  • 馬鹿なのはここから。
    「(個人主義にのっとって)自己を変えてゆきましょう。」というのが講義のまとめな訳ですが。あの、それで超人になれと。誰もが超人になれればニーチェは「もっと光を」と欲しながら死ななくてよかったわけですが。

  • 社会は危険でいっぱい
    個人に"きっかけ"を与えるのは社会です。他人を卑下することでしか自分の心の平穏を保てない(老若男女問わず)卑怯者が個人を害し、それを罰しないのは社会組織です。心無い罵倒で何度私の心は傷ついたことか、、、。
    理論の講義はとても有難い。患者からお金を取る資本主義的活動も正当である。それは理解してる。

  • 医療の現場にも蔓延する新自由主義
    社会構造の問題を、(半分くらいは)弱い個人のせいする新自由主義者さん。
    あなたの給料は誰がだしてるのですか。源泉は弱者男性の納税なんですよ?
    「一遍死んでみる?弱者男性に生まれ変わって話してみる?」と、軽くイラっと思う次第です。進化心理によると「女性は女性であるだけで太陽属性」なんですが?

    軽くイラった私は「個人主義では解決しませんが」と質問したら「社会運動を起こすしかないわけで」、、、おまえ自分で何言ってるかわかってんのか、社会運動の原資が俺にはないんだよ。今のおれは無職おじさんなんだよ、無職はゲパルトしかないわけだけどそれでいいのかよ。バッドバイブスしろってか。ゲパルトは内ゲバ乙の未来しか待ってないんだよ。万が一グッドバイブスで一生懸命建国してもカラー革命に打倒されたソビエツキーソユーズになれっていうのか。ニワカもいい加減にしろよ。とかなんとかで内面がかなり荒れた私は「人間なんてラララ」と、死にたくなりました。

    新自由主義万歳、リベラルアメリカではビックブラザーがあなたを殺します。


    私は今、虚無におぼれています。

 

 

キックスタートw

これから私の始めたいプロジェクトについて概観を説明しましょう。

目指すのは、MZ80K/700/1500において共通PCG定義命令を有するコンパイラ処理系です。


0.開発の経緯
諏訪工房さんのBASICコンパイラ処理系に、グラフィック命令がないので、どうにかしてPCGだけでもBASICコンパイラから制御したかった。

 

1.何を作るか

特に何もこだわらずに BASICインタプリタコンパイラという認識でよいと思います。
エディタ内蔵のWICS形式でもよし、C処理系のように標準入力からテキストファイルを読み込んで実行する形式でもよいです。それぞれのメリットデメリットがあります。

2.開発の役割分担
誰かリーダになってコーダをまとめてください。コンパイラ処理系の作り方については、マスクをして体温測定しつつ公民館借りて合宿でもしたいのですが、ズームの方があとくされなくてよいでしょうね。

私はkmbasicの基盤となる技術の解説、および、議事録作成とドキュメント作成を担当します。

 

オープンソース技術者として生きる。

こんにちは、かっぱのおじさんです。


オープンソースとして kmbasic2000 を開発しています。今は一通りメイクがすんだので、ノートに書き散らしたメモを元に、取説とテスト用のドキュメントを整備しています。

私はこれまで、自分のことを技術者とは思っていませんでしたが、56歳を折り目に疑心暗鬼ながらおそるおそる自分のことを技術者ととして自認することにしました。
これは戒めです。残りの人生においてアマチュアリズムが私をダメにしないように、自分は技術者だと言い聞かせているのです。

今現在の日本人の技術者たちをとりまく環境(個人主義、勝手主義)に対する宣戦布告でもありますが。

※※※

私とオープンソース開発者との関わり合いは、1990年代後半、タイムインターメディア社でバイトをしていた頃に遡ります。

当時のタイムインターメディア社はオープンソース技術者を数多く擁しており、私もそれに憧れていました。

しかし、2000年の正社員採用時に、あろうことかWindows系のプロジェクトチームに配属されてしまい、私の願いは叶う事がなかったのでした。


当時同じ境遇で、オープンソース技術者として働くことがかなわなかった水野くんとは、よく曙橋から市ヶ谷への商店街通りで二人で(投げやり気味に)ツルんだものです。
私たちの憧れは、いつか「ハッカー」になってやることでした。

ハッカーとは、誰のことでしょうか。

山形浩生さんのWebサイトによれば、「コンピュータ技術者として社会をより良いものにしようとする態度でシステム開発にとり組む人」のようです。
コンピュータシステムに対する破壊活動を行う人との区別として、後者を「クラッカー」という呼び名で名詞化しています。
善意の活動を行う技術者が「ハッカー」、破壊活動を行うものが「クラッカー」だそうで。

あと、誰かのことを「ハッカー」という場合、彼が趣味活動をしている場合を示すことが多いみたいです。
職業技術者と区別されているのですかね。

※※※

ハッカーの信念について

これも山形さんのサイトから、キーワードをピックアップしましょう。

「秘匿主義との距離」
「商業主義との距離(商用ソフトへの敵意、商用ソフト市場を支配しているとみられる企業への敵意)」
自由主義

ハッカーのやっていることはかなり高度な政治活動なのかもしれません。

※※※

ハッカー集団の社会運動化

はじめは米国UBM技術グループによるDDJ「ドクタードブスジャーナル」といった雑誌の記事・文通欄から活動が始まったそうです。
そしてパソコン通信ネットワーク。

やがて、おなじみのワールドワイドなインターネットワークにてハッカー同士の交流が世界規模で活発になりました。

日本では、月刊I/O(アイ・オー)や The BASIC(ざべ)という雑誌が黎明期のマイコン技術者たちのよりどころでしたよね。
専門誌としてはBYTE,BITも有名だったようですが、私はあまり読んでないのでよく分からないのです。(てへぺろ。)

※※※

ハッカー集団のタニマチ



海外では1980年代にハッカー集団のタニマチが現れていたようです。
自由ソフトウェア財団(Free Software Foundation) : リチャード・M・ストールマン(Richard M.Stall Man) の創立した団体です。

以下自由ソフトウェア財団よりの引用

GNUはオペレーティング・システムで、(皆さんの自由を尊重する)自由ソフトウェアです。
GNUオペレーティング・システムは、GNUパッケージ(特にGNUプロジェクトによってリリースされたプログラム)と、第三者によってリリースされた自由ソフトウェアから構成されます。
GNUの開発はあなたの自由を踏みにじるソフトウェアなしでコンピュータで使うことを可能としました。

1990年代になると、ユニックスオペレーティングシステムのクローン作成が活発となります。

バークレーUNIX からの社会運動的展開は、若い世代のオープンソース技術者なら常識となっていることでしょうね。
現在、私は50の手習いで彼らの足跡をたどり、追試しているところです。

※※※

自由ソフトからオープンソースソフトへ

さて、彼らの中にはストールマン氏の財団が掲げる「自由への取り組み姿勢」が、反商業主義的であり、共産主義的であるとして反発をする人々がいます。
そこで、オープンソース方式が現在では主流となりました。

またまた山形さんから引用です。

自由に再配布ができて、自由に発展・変更が可能であること
公開開発方式
共同開発方式(エゴレス開発方式)

※※※

システム開発への貢献方法

私は真性の左まき野郎なので。社会になにがしかの貢献を実際にしてゆきたいと思っています。

「コントリビュート」と言われていますが、「貢献」と訳して構わないと私は思っています。
山形さんのサイトに全部書かれていますので、車輪の再発明はやめておきます。

みなさん、狂える、じゃなかったcruelサイトを読みましょう。
え、もう読んだって。
がーん。

※※※

結論

ハッカーは集団です。
友情・努力・勝利を目指して頑張って行きましょう

ではまた。
だすびたーにゃん。

ピロシキ~www

ソレナンテエロゲ(sneg)

こんばんは。
今回は地獄のデスマーチ特攻隊時代のお話です。

さて、皆さまは「プログラミングの心理学」をお読みでしょうか。
お読みになった人はご存じでしょうが、ここに記述します。

仕事ができなかった、あるいは、上手くいかなかった時、「何か自分に重大な欠陥があったのだろうか」
という心理現象がもっと言うと「自分はチンケでツマラナイ技術者なんだろうか」という囚われは、本当に危険でした。
「プログラミングの心理学」に記述があります。

人の心は放置すると悪くなるようにできているのです。

そんな時に、気晴らしが出来る時間があればよいのですが。「デスマーチ」に書かれている通りプロジェクトマネジャが「海兵隊方式」を採用すると、
生活時間がほぼゼロになります。

マネジャはなぜそうするのかというと、自分が家庭餅だというクソな理由である場合が多いです。

毒男がクタクタになった状態、ひいふうひいふう「こりゃあやれんでぇ。」と風呂を沸かしたり飯を炊いたりしてる間に、マネジャはすでに帰宅します。

おや、玄関でマネジャ妻がお迎えしているようですよ。

「あなた、お帰りなさい、お風呂にしますかご飯にしますか?それともワ、タ、シ」

ああ、ソレナンテエロゲ(sneg)?

lol

海兵隊バンザーイ、
ファミコンウォーズをしってるかい。こっちはデスマーチ特攻隊。

 

バンザーイと言いたくなりますよ。


さすがプロジェクトマネジャ。「略してさすマネ」ですね。
プロジェクトマネジャバンザイ。


私には二次元にしか嫁がいないので、外食したり漫画喫茶店に泊まったりして過ごしました。


ついには、一人だけの家に帰りたくないという理由で自宅に帰らなくなる日々が続くわけです。


ヤー。身も心もボロボロでしたね。

つらたんってこのこと?

しかし当時の私はエンジニアを指向しているアラフォーです。

働き盛りのデスマーチ特攻隊飛曹長としては。
デスマーチ特攻隊隊長の補佐をしなければならないわけです。

隊長が設計図を書かない。隊長が指針を示さない。
隊長補佐の仕事とは「マネジャとして」現実の問題に対応するタスクです。

し、かーも。

これに加えてプログラマとしてのタスク処理時間も必要なわけです。
マネジャ兼プログラマ、これは汎用コンピュータ業界では禁じ手なのですが、当時のマイコン業界では普通だったみたいですね。

 

うつ病が二回、双極性障害が一回発病しましたね。

 

今はどうでしょうか。少しは違う展開を祈っております。

ESR-H用クロスアセンブラ "TNKASM Ver2.0" 仕様書




          ESR-H CPU用クロスアセンブラ

             TNKASM Ver 2.0




1.はじめに。

 TNKASMはPC-1360のバイナリファイルを生成するアセンブラです。
  TNKBのプログラムを実行するために作成しましたが、単独でも使用できます。

  1.2 特徴
  INCLUDE疑似命令をサポートしています。
  MACRO疑似命令をサポートしています。
  バイナリ転送においてRev氏作成のBINRSを用いることができます。

 開発フロー

2.使用方法

 2.1 アセンブル

   コマンドラインに以下のように入力します。

    TNKASM   <ファイル名> [ .拡張子 ]

   【注意】パス名の指定はできません。(拒否されます)
      例   \TNK\SOURCE\SAMPLE

    拡張子を省略すると .ASC が仮定されます。

  TNKASMは、<ファイル名>で示されるソーステキストをアセンブルし、"<ファイル名>.OSC"というバイナリファイルを作成します。
バイナリファイルはBINRSを用いてSIOポート経由でPC-1360に転送します。
転送した後はCALL命令で起動できます。



 2.2 エラーメッセージについて。

  構文違反などの要因でアセンブル不可能となった場合、以下のメッセージを出力
 して終了します。出力されたメッセージは、エディタのタグとして活用できます。

   メッセージ    意味
   Syntax error.     構文違反
   Duplicate label.  ラベルの二重定義
   Undefined label.  未定義ラベル
   Jump too far.     相対ジャンプ距離が遠すぎる
   Bad expression.   式の構文違反
   Operand overflow. オぺランド値が大きすぎる


3.文の構成

 TNKASMの文は、行の集まりにより構成されます。

 3.1 行の構成

  行の構成は以下の構文図のとおりです。


  <行>         :=   ; <コメント>
                |    <INCLUDE疑似命令>
                |    <マクロヘッダ行>    
                |    <命令記述行>
                |    <マクロフッタ行>


<マクロヘッダ行>  :=  <マクロ名> MACRO  '(' [仮パラメタ列] ')'

<仮パラメタ列>    :=    <仮パラメタ> {, <仮パラメタ>}

<仮パラメタ>    :=    '$' <仮パラメタ序数>

<仮パラメタ序数> := <10進数>

<マクロフッタ行>  :=   ENDM


<命令記述行>     :=   [ <ラベル> [:] ] <オペレーション> [ ; <コメント> ]

  <オペレーション>     :=   <オペコード> [ オペランド ]

  <オペランド>      :=   <項> { * <項>   }

           |   <文字列>

           |   <16進 パターン>


  <項>          :=   <因子> { + <因子> }


  <因子>         :=   <ラベル>

                 |    <数値>

                 |    HIGH( <オペランド> )

                 |    LOW ( <オペランド> )

            |    ロケーションカウンタ



 3.2 構文の要素

   構文の要素を説明します。

 ・ラベル

   英字から始まる8文字までの英数字です。オペコードと同じ綴りのラベルは
    許されません。同じ名前のラベルを2個以上定義することはできません。



 ・オペコード

   SC61860機械語命令、定義済みマクロ命令と各種疑似命令を追加したもの。

   【注意】現在CASE命令には対応していません。
     

    ・定義済みマクロ命令
    
        _LIBA <式>

            BAペアレジスタに<式>の値を格納します。

        _FILD(DEST,CHR[,CNT])
        
            DESTで示された記憶装置の番地に、CNTバイト分、CHRで示すキャラクタコードを埋め込みます。
            CNTは省略可能
            
        _MVWD(DEST,REGADR[,CNT])
        
            DESTで示された記憶装置の番地から、CNTバイト分、REGADRで示す内部RAMに転送します。
            CNTは省略可能

        _EXWD(DEST,REGADR[,CNT])
        
            DESTで示された記憶装置の番地から、CNTバイト分、REGADRで示す内部RAMと交換します。
            CNTは省略可能
        
  ・疑似命令

        DM   " <文字列> "

     文字列をメモリに展開します。


        DH   " <16進パターン> "

            16進数をメモリに展開します。主にドットパターンを格納するために使用します。


        EQU  <式>

            ラベルに式の値を代入します。そのため、この命令には必ずラベルが必要です。


        DB  <式>

            式の値を1バイトでメモリに格納します。
            255を越える時は下位1バイトのみが格納されます。


        DS   <式>

            ロケーションカウンタでしめす記憶装置の領域を、式の値で示すバイト数分00Hにします。


        DW  <式>

            式の値を2バイトで上位バイト、下位バイトの順にメモリに格納します。


    INCLUDE "ファイル名"

            "ファイル名"で示すソースプログラムを続けてアセンブルします。
            そのあとでまた今アセンブル中のソースプログラムのアセンブルを再開します。
            (これを「ファイルインクルード機能」といいます。)
            "ファイル名"で示すソースプログラム中に INCLUDE 疑似命令を見つけた場合、TNKASMでは ERROR としています。



  ・オペランド

        数値データとロケーションカウンタからなる式。または文字列、16進パターンです。

  ・数値データ
    10進数、16進数いずれかの数です。

    ・10進数
        0..9で始まり、0..9で終わる数。

       例 90

     16進数
        0..9で始まり、Hで終わる数。

       例 0C0H


    ・HIGH() オペランドの値の上位1バイトを取り出す関数です。


    ・LOW() オペランドの値の下位1バイトを取り出す関数です。


    ・ロケーションカウンタ

        現在アセンブル中の命令語が記憶装置のどこにあるかを番地で保持する変数です。
        初期値はORG疑似命令により与えられ、次にORG疑似命令によって値を設定されるまで、アセンブラによって自動的に更新されます。

        【注意】
            現在ORG擬似命令はプログラム先頭の宣言しか有効ではありません。
            プログラム先頭でORG擬似命令を省略するとORG 9000Hを仮定してアセンブルを開始します。

  ・文字列
     英大文字、英小文字、カタカナ、特殊記号からなる文字の集まりです。

  ・16進パターン
         ダブルコーテーションで囲まれた0..9 , A..F からなる文字列です。
        GPRINTのデータ確保が目的なので文字列の長さは強制的に偶数にされます。

  ・コメント

   セミコロンから行末までの文字列です。コメントはプログラムを読みやすく
  するためのメモです。


5.アセンブラの内部構造

   Pascalプログラムは宣言部から始り、手続き、関数の記述の最後にメインプログラ
 ムが示されます。

 5.1 宣言

  ストリング型の宣言

      Str8はラベルの処理に、Str80型はソーステキストのバッファ用に使用します。
   
      Str8       = String[ 8];
      Str80      = String[80];

  列挙型の宣言

   列挙型はPascalプログラマ以外にはなじみがないでしょうが、最近C言語にも
  導入されたようです。

     Optypeは機械語命令のオペランド種を示します。

      Optypeの値    オペランド
       Notype      オペランドなし
        Relative     相対アドレス
        QuickByteLoad   LP命令のオペランド
        ByteLoad     1バイトデータ
        QuickWordLoad   CAL命令のオペランド
        WordLoad     2バイトデータ
        MacroInst     マクロ命令に依存したオペランド
        DefInst      擬似命令に依存したオペランド


    SymbolKindは字句解析の結果、その字句の種類を示します。

      SymbolKindの値       字句の種類
        BadSymbol .. EndofFile    期待しない字句。
        Leftparen .. Colon     括弧や演算子
        HighByte  .. LowByte    HIGH関数,LOW関数。
        PRINT     .. TNKEND     擬似命令。
        PUSHX     .. EXBAX     マクロ命令。
        ADB       .. WAIT      機械語命令。

      Symbolset = Set of SymbolKind;


   ファイルの宣言
     InputF       : Text;
      OutputF      : BinFile;


 変数。

    PassCountは現在のアセンブルパスをあらわす変数です。
      
        := 1; ラベルテーブルを作成するためのパス。
        := 2; バイナリファイルを作成するためのパス。

  以下、アセンブルに必要な各種テーブルの宣言が続きます。

  ラベルテーブルはソース中のラベル名とその値の対応をとるためのものです。
      LabelCount   : Byte;
      LabelTable   : Array [0..Lmax] of
                     Record
                       Name  : Str8; ラベル名
                       Value : Word; ラベルの持つ値
                     end;

  IDテーブルはニモニック名からオペコードを取り出すためのものです。
      Idtable      : Array [0..256] of
                     Record
                       Name  : Str8; ニモニック
                       Value : Word  ニモニックに対応するオペコード
                     end;

  予約語テーブルは識別子の一覧表です。字句解析のつど、参照されます。
      ReservedWord : Array [0..Nrw] of
                     Record
                       Name  : Str8;     ニモニック
                       Value : Symbolkind;  ニモニックの識別子
                     end;

      SpecialSymbol: Array [char] of Symbolkind;


  識別子からオペランドのタイプを取り出すテーブル
      CodeTable    : Array [Symbolkind] of
                     Record
                       Opcode      : Byte;
                       OperandType : OpType;
                     end;

      FactorHead   : Symbolset;

      ch           : Char;
      cc,ll        : Integer;
      TnkSource    : Str80;

      Symbol       : SymbolKind;
      BackJumpOp   : Set of SymbolKind;


  字句解析に用いる変数。

      Id           : Str8;   切り出された字句が識別子の時に文字列を格納する。
      NumValue     : Word;           数値 の時に値を格納する。
      Strings      : Str80;          文字列の時にそれを格納する。

      OprStr       : Str80;          オペランド処理用ワーク。

      Hord : Array ['0'..'F'] of byte;

      Errpos       : 0..linel;  エラーの発生したカラム。
      ErrorCount   : Byte;        発生回数。


  エラーメッセージ

      ErrTable     : Array [0..80] of
                     Record
                       Cnt  : Word;  エラーの発生した行番号
                       Pos  : Word;  エラーの発生したカラム
                       Erno : Word   エラー番号
                     end;

  ファイル名称
      SourceFile,
      ObjectFile   : Str80;

  ファイルのオープン判定フラグ
      FileFail     : Boolean;


  ロケーションカウンタ
      Location     : Word;


  読み込んだソースファイル行数
      InCount      : Word;



 5.2 関数の処理内容

   Function ValueNbase(Base: Byte; S: Str8) : Word;
     Str8の文字列をBaseを基底とする数値に変換してWord型で帰す。


   Function HexStringB(Dec: Byte) : Str8;
     Decを16進文字列に変換して帰す。


   Function HexStringW( Dec: Word ) : Str8;
     Decを16進文字列に変換して帰す。


   Procedure Error(n : byte);
     文法エラーが発生したことをエラーテーブルに記録する。


   Procedure FatalError(n : byte);
     致命的なエラーが発生したため、アセンブルを中断する。


   Procedure GetSymbol;
     字句を取り出し、その型を変数Symbolに格納する。


   Procedure TableSetup;
     アセンブルに必要な各種テーブルを初期化。
       IdTable      :  識別子を登録します。
              ReservedWord : 予約語を登録します。


   Procedure FileOpen;
     入力ファイルと出力ファイルをオープンする。


   Procedure Initialize;
     アセンブルに必要な変数を初期化。


   Procedure DispLabel;
     ラベルテーブルを表示。


   Procedure RemarkSkip;
     ソースファイル中のコメントを読み飛ばす。


   Procedure Enter(Id: Str8);
     ラベルテーブルにラベル名とラベルアドレスを登録する。


   Procedure GetLabel;
     ソースファイル中のラベルを読み込み、Enter手続きに渡す。


   Procedure GetOpCode;
     ソースファイル中のオペコードを読み込み、オペランドの型
    に応じて以下の処理を行う。

     Notype:         オペコードの書き出し

          QuickByteLoad: オペランドの読みだし
             オペコードにオペランドをOR。
             オペコードの書き出し

          ByteLoad:  オペランドの読みだし
                 オペコードの書き出し
             オペランドの下位バイト書き出し

          QuickWordLoad:  オペランドの読みだし
             オペコードにオペランドをOR。
                 オペコードの書き出し
             オペランドの書き出し

          WordLoad:   オペランドの読みだし
                 オペコードの書き出し
             オペランドの上位バイト書き出し
             オペランドの下位バイト書き出し

          Relative:   オペランドの読みだし
                 相対アドレスの計算
                 オペコードの書き出し
             相対アドレスの書き出し


   Procedure OnelineAssemble;
     一行のアセンブルを行う。


   Procedure Pass(n: Byte);

      入力ファイルが End of fileとなるまでOneLineAssemble手続きを
     呼び出します。

     パス1ではラベルアドレスの決定を行いラベルテーブルに格納する。
     パス2ではラベルテーブルを索引しながらオブジェクトを書き出す。


   Procedure DispErrMsg;
     エラーテーブルにある情報をタグ形式で画面に書き出す。


      Procedure HedderWrite;

    以下の内容のファイルヘッダを出力ファイルに書き出す。
        offset|  内容
        ------+--------------
         0-4  |定数 FF30000010
         5-6  |ファイルサイズ(下位上位の順で格納)
           7   |定数 00
         8-9  |格納開始アドレス(下位上位の順で格納)
          A-F  |定数 000000000000

6.終わりに

        リトルリーグの雷夢(ライム)氏に技術提供できたようで何よりです。
        しかし氏はあろうことかC言語処理系を使うという禁忌を冒してしまわれたのであった。
        彼にカミの加護のあらんことを(冗談です念のためw)
       
7.変更来歴

        93.06.01 初版
        93.11.05 INCLUDE 疑似命令を追加
        22.07.04 全体改定

かっぱのおじさんも怒ってるんだぞー

#mz2000 ユーザが #mz700 ユーザや #PC8001 ユーザ に比べておとなしすぎなんだぞー!

 

レトロフリークおじさんや、おばさんへ。
もりあげてゆきたいんだぞー。
なんなら、息子や娘をまきこんでくださいだぞー。

#mz をもりあげてゆきたいんだぞー。

 

以上、TUX吉村さんへの返歌でした。

 

DDJTBCK/W

わたぬきより

 

【DDJTBCKとは】

DDJTBCKは1970年代後半から1980年代前半にかけて広島市可部町で活動していたMZ 80B/C/K ユーザクラブである。

当時のパソコン売り場である「可部プラザ」を本拠地としており、にしもとくんがリーダーであった。メンバーは私「わたぬき/わっちゃ」と技術顧問「たぶちくん。」

活動内容は「パクり」「雑誌入力」、ときどきへたくそなオリジナルプログラムを作る程度であった。(爆笑)

技術顧問として、たぶちよしひこくんがいたのだったが、彼は口下手で、魔人語以外は苦手としていたため、彼の言葉をメンバの誰も理解できなかったのであった。

例えば「たぶちくん、魔人語のなーんたるかをおしえてください。」と聞いても、彼はいきなりモニタを立ち上げて十六進数で語り始めるのである。そんなん当時の中学生が理解できなくても当然なのであった。可部だとたぶちくんだけだよ。そんなん。(ぎゃふん。)

その後、にしもとくんとわたぬきくんは新聞配達で #mz2000 と #pc1500 を購入した。
しかし別々の高校へ進学したためDDJTBCKは自然消滅した。

しかし、DDJTBCKの最大の活動成果が  I/O別冊 デビューである。
#pc1500 で VOICE MONITOR を堂々と発表したのが我々の技術顧問であった「田淵好彦くん」なのであった。(ナイスBCK!)←おい!