キックスタート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!)←おい!

 

メビウス博士、オブジェクト指向のなーんたるかを教えてください。

  1. 今まであなたが学んできたことをすべて忘れてください。
  2. 車輪の再発明をやめてください。
  3. テクハラをしないように心がけてください。
  4. さあ Lazarus を 使いましょう。

17歳からずっと Pascal Programmer だったメビウス博士からは以上です😊

パスカルは日本で人気がないだけで、米国を除く海外諸国では大人気のようです。
特に欧州で文化の中心地たる独と仏で人気を博しています。
MS-DOS上で動く mz700 のエミュレータはTurbo Pascal で開発されました。

いまウクライナ紛争が起きている旧ソ連圏でも大人気です。
フコンタクテでも「オ・パスカーレ」というコンテンツが設けられています。

日本と米国、英国は、西洋諸国とは少し感性が異なるようですね。
日本のは米国への「へつらい仕草」でしょうけれど。最大の貿易相手国なのである程度は仕方がありませんが、できれば商売相手は選びたいものです。

戦争好きの米英は記号処理を好み、哲学好きの西洋諸国は言語処理を好む。
なんとも愉快なお話ではあります。

何が言いたかったかというと、さぁ Lazarus です。
"Lazarus is a most beautiful O.O.P. Environment of the world."

#Lazarus #Pascal #OOP #mz

 

 

日本人の関わっていた8080開発

現在も生産が継続中の 米国ザイログ者のマイクロプロセッサ(MPUZ80

www.zilog.com

このZ80の「元祖」が米国インテル社の 処理装置 8000 シリーズ です。

 

  1. 米国インテル社の「8080処理装置」は、米国インテル社が 日本ビジコン社 嶋正利氏 と設計・製造した2番目の8ビットマイクロプロセッサでした。
    このマイクロプロセッサは西暦1974年4月に登場し、初期の 8008 処理装置を拡張・強化したものでした。

    指定周波数と周波数の限界は2MHzで、一般的な命令は4、5、7、10、11サイクルを使用しており、その結果、1秒間に数十万回の命令を実行することができました。
    8080は、当時のメインフレーム・大型汎用コンピュータを目指して設計されていたようです。欠点としては「i8224クロックジェネレータ/ドライバ」および「i8228バスコントローラ」という2つのサポートチップを必要としていたことでした。

    回路部品に非飽和エンハンスメントモードトランジスタを用いた「N型金属酸化膜半導体論理」(N-MOS)を用いていました。このため、トランジスタ回路(TTL)において+5V電源に加えて、+12Vと-5Vの電圧を用いた電源が必要でした。

    初期のマイクロプロセッサは、電卓、キャッシュレジスター、コンピュータ端末、産業用ロボットなどの大量生産される機器によく使われており「8080処理装置」は、汎用機として成功を収め、マイクロコンピュータ産業の起点となったとされていました。

    「8080処理装置」の普及にはいくつかの要因がありました。

    NMOS実装
    「P型金属酸化膜半導体論理」(P-MOS)により、「8008処理装置」よりも高速なトランジスタを実現したことと、TTL(トランジスタ回路)互換にすることでインタフェイスを簡素化したこと。さらに、8008よりも命令セットが強化されたことです。

    16ビットアドレスバスの採用
    16ビットアドレスバスの採用により、8008処理装置の「16キロバイト」の4倍にあたる「64キロバイト」のメモリ空間に直接アクセスできるようになったのです。

    オペレーティングシステムの採用
    ゲイリー・キルドール博士によって開発された「CP/Mオペレーティングシステム」の最初のターゲットCPUであり、「アルテア8800」とその後の「S-100バス」搭載の「パーソナルコンピュータ」で使用されていました。

  2. 嶋さんの偉大さに完敗しました。
    頑張れ嶋さん。嶋さんに乾杯!