I/O誌掲載のZ80 EDAS 80B/2000 エディタ・アセンブラ for MZ-80B/2000 攻略情報
(Z80 EDAS 80B/2000 Editor Assembler in Book "I/O" Technical Information)


Last updated 09/18/2022 since 20xx

«Quick Links» 1. 概要 (summary)  2. EDAS v1.2 FD Systemの作成手順  IPL起動ディスクの作成方法  MZ-2000/2200版とMZ-80B版の変更方法  I/O 1984/6 デバッグ情報のアドレス対応表  I/O 1984/8 デバッグ情報のアドレス対応表  3. その他 (etc.)


1. 概要 (Summary)

工学社のI/O誌 1982年〜1984年掲載の「EDAS エディタ・アセンブラ」 for MZ-80B/B2/2000/2200に関する入力方法と補足というか便利改造の情報です。 FD-Systemのみをターゲットとしています。
I/Oの関連記事は、以下の通りです。

I/O 1984/7 p.232の「BIG I/O プラザ」の「EDAS FD System IPL起動」は参照せず、 別の、単純で矛盾のない方法を使用します。


2. EDAS v1.2 FD Systemの作成手順

ソース・ジェネレータは、FD System上でテープを使用せすに実行できる。
Pass-3実行はテープ出力なので、FD System上では実行しない。 Pass-2の後に、"E"コマンド等でEDASへ戻れば、ソースのテキストが完成している。 そのままFD Systemのコマンドで、ソースをセーブすればよい。


- IPL 起動ディスクの作成方法

I/O 1984/7 p.232の「BIG I/Oプラザ」に、「EDAS FD SystemをIPL起動」があるがこれは使わない。 システムディスク専用になる上、FDのビットマップ・テーブルを管理しないため、セーブできないか、 ディスクが壊れるのであまりよくない。また、もっと単純化可能。

I/O 1984/6のデバッグ記事にマスターディスク使用不可能とあるが、 これは、TRK:00/SCT:10の+$01のoffsetが$30のFD以外扱えないという意味です。
"DISK UTILITY"の"SLAVE DISK INITIALIZE"を実行して、最初のファイルとしてFD上へセーブし、 IPL情報が最初のファイルを参照する方法を使用すれば、システムとデータを共用化できるし、 難しいことは何もありません。


1)  SLAVE DISK INITIALIZEする (80Trk改造版を使用した方がよい)

2)  DIR時にMasterと表示させたいので、
        TRK:00/SCT:0F Offset+$00  $01 -> $00 (Volume No.01 -> Master)
        TRK:01/SCT:01 Offset+$01  $01 -> $00 (Volume No.01 -> Master)
    と変更する。

3)  $12A0-$40FFにまとめられたEDAS Assembler v1.2 FD Systemを用意
    (84/06,84/08のデバッグ情報を全て当てておくこと)

    * ターゲットの機種(2000 or 80B)依存の変更点を設定しておくこと

4)  ドライブ1で作業するようにして、システム入りディスクへソースをセー
    ブした方が便利なので、シングルドライブ化パッチをあてておき、つい
    でにメモリ上のゴミをクリアする。
        $3F5E to $40FF  (+$A5E)    (実行時、$FA50〜$FBF1まで)
    がゴミなので zero clearする。

    ブロック転送後バイナリへのドライブ2->1用(シングルドライブ用)変更場所
        $35D5 01 -> 00 (+$0D5)    (実行時/I/Oリスト=$F0C7)
        $391F 01 -> 00 (+$41F)    (実行時/I/Oリスト=$F411)
    後のディスク上で変更する場合は、6)を参照のこと

5)  MZ-1Z001M or SB-1520をBASIC等から抜き出して組み合わせる
    a)  適当なBASIC等から、$0000-$129Fを抜き出して組み合わせる
    b)  $00AEから3バイトを、C3 AB 10に書き換える
    c)  $10ABから3E 01 32 AE 00 C3 00 35に書き換える
        ($10ABはMZ-1Z001Mの一行入力バッファなのでここへコードを設置、
        最初の1回だけ$3500へジャンプさせるためこのようにする、
        80BのSB-1520の時は少しずれているが、同じアドレスで問題なし。
        $10AB -> $1093の方が少しだけ綺麗)
    d)  $0000〜$40FFをまとめてセーブしたIPL起動化したファイルを用意
        ($8000〜等へ読み込んで作業する、開始アドレスはどこでもよい)

6)  5)のファイルを2)のディスクへ何らかの方法でバイナリセーブする。
    TRK:03/SCT:01から$0000〜$40FF分使用してセーブされる
    $3500〜$40FFは、Trk:06/06以降に保存されるので、後で書き換える場合は、
    こちらを書き換える

7)  TRK:00/SCT:01のIPL起動情報を設定する。

         +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
    +$00 01 49 50 4C 50 52 4F 45 44 41 53 2D 41 53 4D 46 ;.IPLPROEDAS-ASMF
    +$10 44 0D 01 00 00 41 00 00 00 00 00 00 00 FF 30 00 ;D....A........0.

    * +$20〜+$FFまで0クリアする。

8)  完成
    DISK BASICから"Utility"をコピーしておくと、EDAS上から実行できる
    ので便利 (OBJロードでうまくEDAS本体を破壊して正しくjumpして自動
    起動する)

- MZ-2000/2200版のFD SystemをMZ-80B版へ変更、または、その逆を実行する方法

僕は、MZ-2000用を作成しておいて、変更したら、MZ-80B版を作成していますので、その手順です。
逆の場合は、パッチの内容を本誌を参考に、変更する必要があります。

1)  Monitor SB-1520をコピーする。
    SB-6520のシステムディスクのTRK:03/SCT:01から$1200バイトをコピー
    Ex.
      TF-DOSを起動して、MZモードにするため、MODE 0して
      READでT:03 S:01 ST:8000 ED:91FF、
      WRITEでT:03 S:01 ST:8000 ED:91FF

2)  オートスタート関連の書き換えを実行する。
    TRK:03/SCT:01 +$AE  C3 A2 12 -> C3 93 10            ($00AE)
    TRK:04/SCT:01 +$93  00x8 -> 3E 01 32 AE 00 C3 00 35 ($1093)

3)  I/O 1982/11 p.339のMZ-80B v1.2とMZ-2000 v1.2の違いを比較して、
    パッチを適用する。
    TRK:04/SCT:03 +$D2 32 30 30 30 -> 38 30 42 20       ($12D2)
    TRK:05/SCT:02 +$E1 83 32 -> EB 21                   ($21E2)
    TRK:05/SCT:03 +$0F 70 -> 6B                         ($220F)
        //        +$29 65 -> 6A                         ($2229)
        //        +$52 2C -> 26                         ($2252)
        //        +$57 32 -> 38                         ($2257)
        //        +$7B 31 -> 2C                         ($227B)
        //        +$84 36 -> 3C                         ($2284)
    TRK:06/SCT:03 +$83 CD 11 05 C3 EB 21 -> 00x6        ($3283)

* 既にMZ-80B用のシステムを作成している場合は、
  TRK:03/SCT:01〜の$3300バイトをそのままコピーすればよい。

- I/O 1984/06 p.367のデバッグ情報のアドレス対応表

デバッグリストは、掲載リストへの適用パッチであり、ブロック転送済みの起動用バイナリはアドレスが違います。
後からパッチ当てできないので、対応表を作りました。

掲載リスト&実行時$F000〜 / 起動ファイル$3500+$0e〜
F11F/362D  2bytes
F151/365F  4B -> 52  (I/Oのオリジナルデータは間違い)
F1AF/36BD
F1BC/36CA
F1D7/36E5  3bytes
(F1D9/36E7  33->33は変更の必要なし)
F2C2/37D0
F2CB/37D9
F3EB/38F9
F3F5/3903
F4CD/39DB
F4D3/39E1
F4E5/39F3  (03 -> 07だったのが8月号で修正)
F4F3/3A01
F562/3A70
F5E6/3AF4
F600/3B0E
F719/3C27  2bytes
F906/3E14  2bytes
F909/3E17  2bytes
F98E/3E9C

- I/O 1984/08 p.241のデバッグ情報のアドレス対応表

6月号のパッチのみだと正常動作しなくなります。

掲載リスト&実行時$F000〜 / 起動ファイル$3500+$0e〜
F3F6/3904  F5 -> F4
F4E5/39F3  03 -> 70
F9CF-D1(3EDD-DF)  "BTX" -> 2A2A2A  ("***" 3bytes)
F9D6/3EE4  43 -> 4D  ("ASC"->"ASM")

3. その他 (etc.)

当時、初めて入手できた夢のアセンブラー「EDAS」。
しかし、スクリーンエディットが魅力でSuper BASEへ行ってしまいました。
今更なから、打ちかけで消滅したソースジェネレータが完備され…
消滅した理由は、デバッグ記事が当たってなかった上に、 ディスク節約で、DISK BASICと転送したからだろうなぁ…
注意しましょう!!

MZ-2000版について、今更になって、 昔、当たっていなかったデバッグ情報を適用したり、「EDAS ソース・ジェネレータ」を揃えてみたのです。
せっかく完成したけど、1985年以降に登場したS-OSとかあるんだよなぁ〜〜 (ZEDAの原型となったEDASMというのもありました)

MZ-2000/80Bエミュレータだと、プリンタ出力ファイル化プラグインとペースト機能で、 MS Windowsテキストとやりとりできて、とても便利。 そのうち、SHARPのF-DOSや、システムプログラム、とかとの転送も試してみたい…
でも、試してないけど、S-OSでもCP/Mでもできるよなぁ…


以上