2014.1.9
前へ

ホームページトップへ戻る

復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります

[第537回]


●E−80評価プログラムを作っていただきました(2)

大分県のH様から追記が届きました。
前回はいただいたままをホームページに転載させていただいたのですが、今回はモニタの機能(コマンド)についての詳細な説明をお送りいただきました。
それと前回いただいたログには一部のテストが落ちていたとのことで、その分の追加もいただきました。

前回同様いただいたままを転載させていただきます。

まずは追加のテストのログとその説明です。
こちらがログリストです。

logfile e80log\01091307.txt open

E−80に接続しました
loading e80mon3e.bin ...7b80(31616)bytes loaded
monitor start ok
zb3basic core entry
mode check
mode data is 38

*** ZB3 basic ****
>jp 0100 -------------------------------------------------------@

Mon80 Ver 0.8A For E-80
Zb3Basic Mode Monitor Program
(C)2014/01/07 By S.H

CMD>SV 3100,0010@50 --------------------------------------------A

 3100 50-01
 3101 50-02
 3102 50-03
 3103 50-04
 3104 50-05
 3105 50-06
 3106 50-a0
 3107 50-a1
 3108 50-a2
 3109 50-a3
 310A 50-a4
 310B 50-

CMD>DM 3100,01@50 ----------------------------------------------B

      +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F  0123456789ABCDEF
 3100 01 02 03 04 05 06 A0 A1 A2 A3 A4 50 50 50 50 50  ...........PPPPP

CMD>HL ---------------------------------------------------------C

==================================================
 BA xx(00 〜 78):Bank
 CB x  (1 〜 E):CBAR
 DM xxxx,xx@xx:Dumpmemory
    sadd len bank
 GO xxxx@xx SYS:Gosubaddress
 HL:Helpmessage
 LH xxxx@xx:Hex To Binary
 MC xxxx,xxxx,xx@xx:Clearmemory data
    sadd len  data bank
 MO xxxx,xxxx,xxxx@xx:Movememory data
    sadd dest len   bank
 SA xxxx,xxxx@xx:Memory save
    start  end
 SV xxxx,xxxx@xx:Set memory data
    start keta  bank
==================================================

CMD>VR ---------------------------------------------------------D

E-80 MON 2014/01/07 Ver 0.8A

CMD>SYS --------------------------------------------------------E

** By By !! **

>/exit

リモート接続を終了しました
logfile closed at Thu Jan 09 13:42:23 2014


こちらが上のログにつけていただいた説明です。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
@で「E80MON」を再起動しました。
Aでメモリの内容を書き換えました。
Bで書き換えが正常に実施されているのを確認しました。
CでHELPを表示しました。
Dでバージョンを表示しました。
Eで終了しました。
以上ですが、Aのテストが抜けておりました。
また、Ctrl+Pでプリンタ出力も可能です。
テスト時に出力したのが「pr01.pdf」です。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
pr01.pdfです(表示の都合でPDFをJPEGに変換してあります)。



こちらがマシン語モニタプログラム(E80MON)についての説明です。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
E80MONについて

E80MONは、E−80のメモリー全体を使用可能にします。
(第456回〜第460回参照)
互換DOSやZB3BASICと共存できます。
バンク切り替えによりメモリー全体を利用できます。

◎ 起動方法
 @ZB3BASICからLDコマンドでロードしてジャンプする。
  *** ZB3 basic ****
>/ld e80mon.bin,8100
loading E80MON.BIN ...0d0e(3342)bytes loaded,from 8100 to 8E0D
>jp 8100
  このプログラムは、物理メモリーの2E000Hから2EFFFH及び00100Hから0017FHを使用する。
 AZB3BASICからジャンプする。(二回目から起動の場合。)
  *** ZB3 basic ****
  >jp 0100 (メモリーの電池によるバックアップがあるため可能です。)
  Bコントロール
  リモート・コントロールは、USBケーブルを利用して行う。
 
◎ 利用可能なサブルーチン(E80MON制御下にて可)
   E000H  jpmain        GOコマンドの戻り先
   E003H  start 再起動(JP 8100で利用)
   E006H  rsin  一文字入力
            CALLすれば、Aレジスタに値が入る。
   E009H  rsout 一文字出力
            Bレジスタに出力する値を入れて、CALLする。
   E00CH  rsinl 文字列入力
               最後は「0D0AH」です。
               HLレジスタにIOバッファの先頭アドレス
               Bレジスタにエリヤのレングスを設定する必要があります。
   E00FH  rsoutl        文字列出力
             最後は「0FFH」が必要です。
             HLレジスタに文字列の先頭アドレスを与える必要があります。
   E012H  list  プリンター出力(送信したままに出力されます。)
                      このサブルーチンはI/Oを直接制御していますので、バンクを
意識する必要はありません。
注)メモリー 0000H〜DFFFHの間利用可能
(物理アドレス00000H〜18000Hを除く)

◎ プリンター出力が可能である。
 @1つはサブルーチン「rsoutl」を利用する方法である。
   Bレジスタにプリントする値を入れて、E012HをCALLすればよい。
 Aもう1つは、CMD>のコマンド入力中に「Ctrl+P」を入力すれば、以降の画面の
表示内容がプリントされる。終了は、もう一度「Ctrl+P」を入力する。

◎ コマンドは、次の通りである。

@BA  バンクを切り替える
   BA cc
cc   -> 00〜7Fの間でバンク切り替えが可能ですが、実際には78が限度です。
       (ccは、Z8S180のBBRに与える値。)
              4kb単位で変更することが可能です。
       00〜07、0F、10〜17を使用する場合は注意が必要です。
       00〜07、0FはZB3BASICの使用領域、
10〜17は互換DOSの使用領域です。メモリーの内容を書き換えると共存できない可能性があります。
E80MONは、20を使用しています。
ccを入力しないで「BA」と入力すると現在のバンクのBBRの値が表示されます。
例
CMD>BA 30 ---a バンクの切り替え
CMD>BA -------a 現在のバンクBBRの値
BBR = 30
注 コモンエリヤは切り替えできません。暴走します。

ACB コモンエリヤとバンクエリヤの境界を変更する
   CB c
c  -> 1〜E コモンエリヤとバンクエリヤの境界を4キロバイト単位で変更できます。
cを入力しないで「CB」と入力すると現在のコモンエリヤとバンクエリヤの境界CBARの値が表示されます。
例
CMD>CB
CBAR = 80
CMD>CB E

BDM メモリーダンプ
DM aaaa,bb@cc
aaaa -> メモリーダンプを行う最初のアドレス。
      bb   -> 表示ライン数。
      @    -> このコマンド実行中の間有効なバンク切り替え。(省略可)
      cc   -> バンク(Z8S180のBBRに与える値・省略可)
      注)バンクエリヤは切り替えられるがコモンエリヤは変えられない。
        00 -> ZB3BASICのバンク
        10 -> 互換DOSのバンク
        20 -> 本モニター
例
CMD>DM 7FF0,02@50
      +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F  0123456789ABCDEF
 7FF0 50 50 50 50 50 AA AA AA AA AA FF FF FF 50 50 50  PPPPP........PPP
 8000 50 50 50 50 50 AA AA AA AA AA FF FF FF FE FF CA  PPPPP...........
CMD>DM 7FF0,02
      +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F  0123456789ABCDEF
 7FF0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
 8000 50 50 50 50 50 AA AA AA AA AA FF FF FF FE FF CA  PPPPP...........

CGO 指定されたアドレスにジャンプ・実行
      GO aaaa@cc
      aaaa  -> ジャンプするアドレス。
      @cc   -> DMと同じ。バンクを切り替えてジャンプする。
    ジャンプ先からRETで戻る場合は、Cフラグをクリヤーしておくこと。
(エラーになる。)
ジャンプで戻る場合は、E000Hにジャンプすること。
例
CMD>GO 8000

DHL ヘルプ
      HL
   各コマンドの使用方法を簡単に表示する。
==================================================
BA xx (00 〜 78) :Bank
CB x  (1 〜 E)           :CBAR
DM xxxx,xx@xx           :Dump memory
   sadd len bank
GO xxxx@xx SYS          :Gosub  address
HL                      :Help message
LH xxxx@xx              :Hex To Binary
MC xxxx,xxxx,xx@xx      :Clear  memory data
   sadd len  data bank
MO xxxx,xxxx,xxxx@xx    :Move   memory data
   sadd dest len   bank
SA xxxx,xxxx@xx         :Memory save
   start  end
SV xxxx,xxxx@xx         :Set memory data
   start keta  bank
==================================================

ELH メモリーのHEXデータをバイナリーに変換し、
メモリーにロードする
   LH aaaa@cc
Aaaa  ->HEXデータの先頭アドレス
@cc   -> DMと同じ。
HEXデータは、ZB3BASICのLDコマンドでメモリーへダウンロードしておく必要
があります。この場合のロードアドレスは8000Hが扱い易いです。
注)HEXファイルには、この文字列のデータを書き込むアドレス情報が入ってい
ます。このコマンドを実行する場合は、HEXファイルを読み込むメモリー領域と、
バイナリーに変換ご書き込むメモリー範囲が重複しないようにする必要があります。
具体的には、0000Hから7FFFHの間におく場合は、一度8000Hからに転送する必要があ
ります。
また、HEXファイルの最後に1AHが必要です。[第18回]で紹介されたフリ
ーのZ80アセンブラZASM1.64を利用すると最後に1AHが出力されます。
例
>/ld kokyo.hex,8000 a#1
loading KOKYO.HEX ...03ed(1005)bytes loaded,from 8000 to 83EC
>jp 0100
Mon80 Ver 0.8A For E-80
Zb3Basic Mode Monitor Program
(C)2014/01/07 By S.H
CMD>MC 8000,1000,28
CMD>LH 0000@08() --#2 (#1と#2の物理アドレスは同一です)
CMD>GO 8000

HEXファイルの例です
:208000003E0332FF802100813AFD804F7EFEFFCA00E0B7CA6F80FE1EDA20802323C30C8006
:20802000F5B9CC8D80234623F1E521AA80875F16001956235E3AFF806F607B32FE804A3EE5
:2080400003D3FBE5E5E1E1000DC243804A3E02D3FBE5E5E1E1000DC251801DC23E803AFED8
:20806000805F05C23E80442DC23E80E1C30880234623E53AFF806F60CD928005C2788044A4
:208080002DC27880E1C308802323C308800E05C394800E28CD9C800DC29480C9F53E5FE510
:2080A000E5E1E1003DC29F80F1C900007F10771171126A1364145F15591654184F194B1A96
:2080C000471C431E3F1F3B213823352532272F2A2C2C2A2F273225352338213B1F3F1D43E2
:2080E0001B471A4A1850080808080808080808080808080808080808080808088100150309
:208100000D060F020D040A041206140212040F040D040A0412040A04080C00040D060F0246
:208120000D040A041206140212040F0412040A040A060802060C00040806070208040B0443
:208140000A0609020A040D040F040D040B040A04080C00040D060F020D040A04120614021B
:2081600012040F040D040A040A020806060C00040D0609020A040D0C00080D040804110606
:1B8180000F020D0800080D0609020A040D0C000812040A040A020806060CFF1A
:00000001FF
ZB3BASICのLDコマンドでメモリーへダウンロードしたメモリーの内容です
      +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F  0123456789ABCDEF
 0000 3A 32 30 38 30 30 30 30 30 33 45 30 33 33 32 46  :208000003E0332F
 0010 46 38 30 32 31 30 30 38 31 33 41 46 44 38 30 34  F802100813AFD804
 0020 46 37 45 46 45 46 46 43 41 30 30 45 30 42 37 43  F7EFEFFCA00E0B7C
 0030 41 36 46 38 30 46 45 31 45 44 41 32 30 38 30 32  A6F80FE1EDA20802
 0040 33 32 33 43 33 30 43 38 30 30 36 0D 0A 3A 32 30  323C30C8006..:20
 0050 38 30 32 30 30 30 46 35 42 39 43 43 38 44 38 30  802000F5B9CC8D80
 0060 32 33 34 36 32 33 46 31 45 35 32 31 41 41 38 30  234623F1E521AA80
 0070 38 37 35 46 31 36 30 30 31 39 35 36 32 33 35 45  875F16001956235E
 0080 33 41 46 46 38 30 36 46 36 30 37 42 33 32 46 45  3AFF806F607B32FE
 0090 38 30 34 41 33 45 45 35 0D 0A 3A 32 30 38 30 34  804A3EE5..:20804
 00A0 30 30 30 30 33 44 33 46 42 45 35 45 35 45 31 45  00003D3FBE5E5E1E
 00B0 31 30 30 30 44 43 32 34 33 38 30 34 41 33 45 30  1000DC243804A3E0
 00C0 32 44 33 46 42 45 35 45 35 45 31 45 31 30 30 30  2D3FBE5E5E1E1000
 00D0 44 43 32 35 31 38 30 31 44 43 32 33 45 38 30 33  DC251801DC23E803
 00E0 41 46 45 44 38 0D 0A 3A 32 30 38 30 36 30 30 30  AFED8..:20806000
 00F0 38 30 35 46 30 35 43 32 33 45 38 30 34 34 32 44  805F05C23E80442D
LHコマンド実行後のデータです
      +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F  0123456789ABCDEF
 8000 3E 03 32 FF 80 21 00 81 3A FD 80 4F 7E FE FF CA  >.2..!..:..O~...
 8010 00 E0 B7 CA 6F 80 FE 1E DA 20 80 23 23 C3 0C 80  ....o.... .##...
 8020 F5 B9 CC 8D 80 23 46 23 F1 E5 21 AA 80 87 5F 16  .....#F#..!..._.
 8030 00 19 56 23 5E 3A FF 80 6F 60 7B 32 FE 80 4A 3E  ..V#^:..o`{2..J>
 8040 03 D3 FB E5 E5 E1 E1 00 0D C2 43 80 4A 3E 02 D3  ..........C.J>..
 8050 FB E5 E5 E1 E1 00 0D C2 51 80 1D C2 3E 80 3A FE  ........Q...>.:.
 8060 80 5F 05 C2 3E 80 44 2D C2 3E 80 E1 C3 08 80 23  ._..>.D-.>.....#
 8070 46 23 E5 3A FF 80 6F 60 CD 92 80 05 C2 78 80 44  F#.:..o`.....x.D
 8080 2D C2 78 80 E1 C3 08 80 23 23 C3 08 80 0E 05 C3  -.x.....##......
 8090 94 80 0E 28 CD 9C 80 0D C2 94 80 C9 F5 3E 5F E5  ...(.........>_.
 80A0 E5 E1 E1 00 3D C2 9F 80 F1 C9 00 00 7F 10 77 11  ....=.........w.
 80B0 71 12 6A 13 64 14 5F 15 59 16 54 18 4F 19 4B 1A  q.j.d._.Y.T.O.K.
 80C0 47 1C 43 1E 3F 1F 3B 21 38 23 35 25 32 27 2F 2A  G.C.?.;!8#5%2'/*
 80D0 2C 2C 2A 2F 27 32 25 35 23 38 21 3B 1F 3F 1D 43  ,,*/'2%5#8!;.?.C
 80E0 1B 47 1A 4A 18 50 00 00 00 00 00 00 00 00 00 00  .G.J.P..........
 80F0 00 00 00 00 00 00 00 00 00 00 00 00 81 00 15 03  ................

FMC 指定するメモリー間を特定の値でクリヤーする
      MC aaaa,bbbb,dd@cc
aaaa  -> クリヤーを行う最初のアドレス。
bbbb  -> クリヤーを行う長さ
dd    -> メモリーを埋めるデータ(16進)
@cc   -> DMと同じ
例
CMD>DM 7FF0,02
      +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F  0123456789ABCDEF
 7FF0 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50  PPPPPPPPPPPPPPPP
 8000 3E 03 32 FF 80 21 00 81 3A FD 80 4F 7E FE FF CA  >.2..!..:..O~...
CMD>MC 7FF8,0005,FF
CMD>DM 7FF0,0
      +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F  0123456789ABCDEF
 7FF0 50 50 50 50 50 50 50 50 FF FF FF FF FF 50 50 50  PPPPPPPP.....PPP
 8000 3E 03 32 FF 80 21 00 81 3A FD 80 4F 7E FE FF CA  >.2..!..:..O~...

GMO  メモリーの値を転送する
   MO aaaa,dddd,eeee@cc
      aaaa -> 転送元のアドレス。
   dddd -> 転送先のアドレス。
   eeee -> 転送桁数。
   @cc  -> DMと同じ。
      注)転送元と転送先が重複する場合は注意が必要です。
例
CMD>DM 7FF0,02@50
      +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F  0123456789ABCDEF
 7FF0 50 50 50 50 50 AA AA AA AA AA FF FF FF 50 50 50  PPPPP........PPP
 8000 3E 03 32 FF 80 21 00 81 3A FD 80 4F 7E FE FF CA  >.2..!..:..O~...
CMD>MO 7FF0,8000,000D@50
CMD>DM 7FF0,02@50
      +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F  0123456789ABCDEF
 7FF0 50 50 50 50 50 AA AA AA AA AA FF FF FF 50 50 50  PPPPP........PPP
 8000 50 50 50 50 50 AA AA AA AA AA FF FF FF FE FF CA  PPPPP...........

HSA  指定アドレスのHEXデータの表示
   SA aaaa,dddd@cc
      aaaa -> 表示開始アドレス。
   dddd -> 表示終了アドレス。
   @cc  -> DMと同じ。
      注)表示区間を切り取って保存すれば、HEXファイルとして利用できます。
例
CMD>SA 8000,819A
:208000003E0332FF802100813AFD804F7EFEFFCA00E0B7CA6F80FE1EDA20802323C30C8006
:20802000F5B9CC8D80234623F1E521AA80875F16001956235E3AFF806F607B32FE804A3EE5
:2080400003D3FBE5E5E1E1000DC243804A3E02D3FBE5E5E1E1000DC251801DC23E803AFED8
:20806000805F05C23E80442DC23E80E1C30880234623E53AFF806F60CD928005C2788044A4
:208080002DC27880E1C308802323C308800E05C394800E28CD9C800DC29480C9F53E5FE510
:2080A000E5E1E1003DC29F80F1C900007F10771171126A1364145F15591654184F194B1A96
:2080C000471C431E3F1F3B213823352532272F2A2C2C2A2F273225352338213B1F3F1D43E2
:2080E0001B471A4A1850080808080808080808080808080808080808080808088100150309
:208100000D060F020D040A041206140212040F040D040A0412040A04080C00040D060F0246
:208120000D040A041206140212040F0412040A040A060802060C00040806070208040B0443
:208140000A0609020A040D040F040D040B040A04080C00040D060F020D040A04120614021B
:2081600012040F040D040A040A020806060C00040D0609020A040D0C00080D040804110606
:1B8180000F020D0800080D0609020A040D0C000812040A040A020806060CFF1A
:00000001FF

ISV  メモリーの値を変更する
   SV aaaa,llll@cc
      aaaa  -> メモリーの値を変更する先頭アドレス。
      llll  -> 変更予定文字数。(途中終了は「Enter」キーでできます)
      @cc   -> DMと同じ。
例
CMD>SV 3100,0010@50
 3100 50-01
 3101 50-02
 3102 50-03
 3103 50-04
 3104 50-05
 3105 50-06
 3106 50-0a
 3107 50-0b
 3108 50-0c
 3109 50-0d
 310A 50-aa
 310B 50-dd
 310C 50-
CMD>DM 3100,02@50
      +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F  0123456789ABCDEF
 3100 01 02 03 04 05 06 0A 0B 0C 0D AA DD 50 50 50 50  ............PPPP
 3110 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50  PPPPPPPPPPPPPPPP

JSYS ZB3BASICに帰る
      SYS
例
** By By !! **

更新履歴
2014.1.09

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

ワンボードマイコンでCP/Mを![第537回]
2014.1.9upload

前へ

ホームページトップへ戻る