PB-Prog > 資料 FX-870P 解析情報のテスト



はじめに

実際に "FX-870P解析情報" を参考にしてプログラムを組んだ結果です。
私は、HD61700 (FX-870PのCPU) の機械語に関しては初心者ですので勘違いや誤りが含まれている可能性があります。

テスト環境 (ハードウェア)

・VX-4 (FX-870Pと互換性のある学校教育専用機です。FX-870PのRAMが32KBなのに対し、8KBのRAMを搭載しています)
・RP-33 (32KB RAM)

テスト環境 (ソフトウェア)

・VX-MENUシステム (PB-1000 MENU SIMULATOR) Rev 0.18
・HD61700 CROSS ASSEMBLER for Win32 (Rev 0.41)
  (詳しくは、HD61700 SPIRITS (外部リンク) をご覧下さい)

テスト一覧

test01.s : 何もしないプログラム
test02.s : BIOSコールプログラム (レジスタ $17,$18 を使用して BEEP 音をならす)
test03.s : BIOSコールプログラム (レジスタ $28,$29 を使用して BEEP 音をならす)
test04.s : Hello world! 表示テスト
test05.s : キー入力 (INKEY) テスト
test06.s : キー入力 (CRTKY) テスト
test07.s : 文字列 ("123") を整数型数値に変換する。

テスト結果

HD61700 CROSS ASSEMBLERが出力したリストファイルとVX-MENUから実行した結果を以下に示します。

HD61700 ASSEMBLER Rev 0.41 - ASSEMBLY LIST OF [test01.s]
00001:0000            ;
00002:0000            ; 何もしないプログラム
00003:0000            ;
00004:1CD0                         ORG     &H1CD0
00005:1CD0                         START   MAIN
00006:1CD0            MAIN:
00007:1CD0  566054                 PST     UA,&H54               ;バンク切り替え
00008:1CD3  F7                     RTN
00009:1CD4

ASSEMBLY COMPLETE, NO ERRORS FOUND

HD61700 ASSEMBLER Rev 0.41 - MAP LIST OF [test01.s]
 LABEL           : ADDRESS(hex)    LABEL           : ADDRESS(hex)
------------------------------------------------------------------
 MAIN            :   1CD0h

 START ADDRESS   = 1CD0h
 END ADDRESS     = 1CD3h
 EXECUTE ADDRESS = 1CD0h

test01をVX-MENUから実行した結果
・何もおこらない (暴走しない) ことを確認しました。

HD61700 ASSEMBLER Rev 0.41 - ASSEMBLY LIST OF [test02.s]
00001:0000            ;
00002:0000            ; BIOSコールプログラム
00003:0000            ; (レジスタ $17,$18 を使用して BEEP 音をならす)
00004:0000            ;
00005:1CD0                         ORG     &H1CD0
00006:1CD0                         ORG     &H1CD0
00007:1CD0                         START   MAIN
00008:1CD0            MAIN:
00009:1CD0  D111B333               LDW     $17,&H33B3            ;BEEP
00010:1CD4  77DB1C                 CAL     ROMCALL
00011:1CD7  566054                 PST     UA,&H54               ;バンク切り替え
00012:1CDA  F7                     RTN
00013:1CDB            ROMCALL:
00014:1CDB  D10F2353               LDW     $15,&H5323
00015:1CDF  A610                   PHSW    $16
00016:1CE1  566054                 PST     UA,&H54               ;バンク切り替え
00017:1CE4  DE11                   JP      $17
00018:1CE6

ASSEMBLY COMPLETE, NO ERRORS FOUND

HD61700 ASSEMBLER Rev 0.41 - MAP LIST OF [test02.s]
 LABEL           : ADDRESS(hex)    LABEL           : ADDRESS(hex)
------------------------------------------------------------------
 MAIN            :   1CD0h         ROMCALL         :   1CDBh

 START ADDRESS   = 1CD0h
 END ADDRESS     = 1CE5h
 EXECUTE ADDRESS = 1CD0h

test02をVX-MENUから実行した結果
・BEEP 音がなることを確認しました。

HD61700 ASSEMBLER Rev 0.41 - ASSEMBLY LIST OF [test03.s]
00001:0000            ;
00002:0000            ; BIOSコールプログラム
00003:0000            ; (レジスタ $28,$29 を使用して BEEP 音をならす)
00004:0000            ;
00005:1CD0                         ORG     &H1CD0
00006:1CD0                         ORG     &H1CD0
00007:1CD0                         START   MAIN
00008:1CD0            MAIN:
00009:1CD0  D11CB333               LDW     $28,&H33B3            ;BEEP
00010:1CD4  77DB1C                 CAL     ROMCALL
00011:1CD7  566054                 PST     UA,&H54               ;バンク切り替え
00012:1CDA  F7                     RTN
00013:1CDB            ROMCALL:
00014:1CDB  566054                 PST     UA,&H54               ;バンク切り替え
00015:1CDE  372153                 JP      &H5321
00016:1CE1

ASSEMBLY COMPLETE, NO ERRORS FOUND

HD61700 ASSEMBLER Rev 0.41 - MAP LIST OF [test03.s]
 LABEL           : ADDRESS(hex)    LABEL           : ADDRESS(hex)
------------------------------------------------------------------
 MAIN            :   1CD0h         ROMCALL         :   1CDBh

 START ADDRESS   = 1CD0h
 END ADDRESS     = 1CE0h
 EXECUTE ADDRESS = 1CD0h

test03をVX-MENUから実行した結果
・BEEP 音がなることを確認しました。

HD61700 ASSEMBLER Rev 0.41 - ASSEMBLY LIST OF [test04.s]
00001:0000            ;
00002:0000            ; Hello world! 表示テスト
00003:0000            ;
00004:1CD0                         ORG     &H1CD0
00005:1CD0                         ORG     &H1CD0
00006:1CD0                         START   MAIN
00007:1CD0            MAIN:
00008:1CD0  D11C3893               LDW     $28,&H9338            ;CLEDB
00009:1CD4  77FA1C                 CAL     ROMCALL
00010:1CD7
00011:1CD7  D10A000C               LDW     $10,12*&H100+0        ;$10←0,$11←12
00012:1CDB  D600001D               PRE     IX,HELLO_S
00013:1CDF  D6200C1D               PRE     IY,HELLO_S+12
00014:1CE3  D6403B11               PRE     IZ,&H113B             ;EDTOP
00015:1CE7  D8                     BUP
00016:1CE8  D11C7F97               LDW     $28,&H977F            ;DOTMK
00017:1CEC  77FA1C                 CAL     ROMCALL
00018:1CEF
00019:1CEF  D11C0F93               LDW     $28,&H930F            ;DOTDS
00020:1CF3  77FA1C                 CAL     ROMCALL
00021:1CF6
00022:1CF6  566054                 PST     UA,&H54               ;バンク切り替え
00023:1CF9  F7                     RTN
00024:1CFA            ROMCALL:
00025:1CFA  566054                 PST     UA,&H54               ;バンク切り替え
00026:1CFD  372153                 JP      &H5321
00027:1D00            HELLO_S:
00028:1D00  48656C6C               DB      'Hello, world!'
            6F2C2077
            6F726C64
            21
00029:1D0D

ASSEMBLY COMPLETE, NO ERRORS FOUND

HD61700 ASSEMBLER Rev 0.41 - MAP LIST OF [test04.s]
 LABEL           : ADDRESS(hex)    LABEL           : ADDRESS(hex)
------------------------------------------------------------------
 MAIN            :   1CD0h         ROMCALL         :   1CFAh
 HELLO_S         :   1D00h

 START ADDRESS   = 1CD0h
 END ADDRESS     = 1D0Ch
 EXECUTE ADDRESS = 1CD0h

test04をVX-MENUから実行した結果
・画面左上に Hello, world! が表示されることを確認しました。

HD61700 ASSEMBLER Rev 0.41 - ASSEMBLY LIST OF [test05.s]
00001:0000            ;
00002:0000            ; キー入力 (INKEY) テスト
00003:0000            ;
00004:1CD0                         ORG     &H1CD0
00005:1CD0                         ORG     &H1CD0
00006:1CD0                         START   MAIN
00007:1CD0            MAIN:
00008:1CD0  D11C1D19               LDW     $28,&H191D            ;INKEY
00009:1CD4  77E61C                 CAL     ROMCALL
00010:1CD7  0111                   SBC     $17,$31               ;$31=0
00011:1CD9  B08A                   JR      Z,MAIN
00012:1CDB  D11CB333               LDW     $28,&H33B3            ;BEEP
00013:1CDF  77E61C                 CAL     ROMCALL
00014:1CE2  566054                 PST     UA,&H54               ;バンク切り替え
00015:1CE5  F7                     RTN
00016:1CE6            ROMCALL:
00017:1CE6  566054                 PST     UA,&H54               ;バンク切り替え
00018:1CE9  372153                 JP      &H5321
00019:1CEC

ASSEMBLY COMPLETE, NO ERRORS FOUND

HD61700 ASSEMBLER Rev 0.41 - MAP LIST OF [test05.s]
 LABEL           : ADDRESS(hex)    LABEL           : ADDRESS(hex)
------------------------------------------------------------------
 MAIN            :   1CD0h         ROMCALL         :   1CE6h

 START ADDRESS   = 1CD0h
 END ADDRESS     = 1CEBh
 EXECUTE ADDRESS = 1CD0h

test05をVX-MENUから実行した結果
・キー入力待ちになることを確認しました。
・[5]キーを押した場合、BEEP 音がなることを確認しました。
・[OFF]キーを押した場合、BEEP 音がなることを確認しました。
・[BRK]キーを押した場合、CALモードになることを確認しました。
・[SHIFT]キーを押した場合、何もおこらない (状態変化している) ことを確認しました。

HD61700 ASSEMBLER Rev 0.41 - ASSEMBLY LIST OF [test06.s]
00001:0000            ;
00002:0000            ; キー入力 (CRTKY) テスト
00003:0000            ;
00004:1CD0                         ORG     &H1CD0
00005:1CD0                         ORG     &H1CD0
00006:1CD0                         START   MAIN
00007:1CD0            MAIN:
00008:1CD0  D11CC823               LDW     $28,&H23C8            ;CRTKY
00009:1CD4  77E21C                 CAL     ROMCALL
00010:1CD7
00011:1CD7  D11CB333               LDW     $28,&H33B3            ;BEEP
00012:1CDB  77E21C                 CAL     ROMCALL
00013:1CDE  566054                 PST     UA,&H54               ;バンク切り替え
00014:1CE1  F7                     RTN
00015:1CE2            ROMCALL:
00016:1CE2  566054                 PST     UA,&H54               ;バンク切り替え
00017:1CE5  372153                 JP      &H5321
00018:1CE8

ASSEMBLY COMPLETE, NO ERRORS FOUND

HD61700 ASSEMBLER Rev 0.41 - MAP LIST OF [test06.s]
 LABEL           : ADDRESS(hex)    LABEL           : ADDRESS(hex)
------------------------------------------------------------------
 MAIN            :   1CD0h         ROMCALL         :   1CE2h

 START ADDRESS   = 1CD0h
 END ADDRESS     = 1CE7h
 EXECUTE ADDRESS = 1CD0h

test06をVX-MENUから実行した結果
・キー入力待ちになることを確認しました。
・[5]キーを押した場合、BEEP 音がなることを確認しました。
・[OFF]キーを押した場合、電源が切れることを確認しました。
・[BRK]キーを押した場合、CALモードになることを確認しました。
・[SHIFT]→[MODE]→[↑]または[↓]キーを押した場合、コントラストの調整ができることを確認しました。

HD61700 ASSEMBLER Rev 0.41 - ASSEMBLY LIST OF [test07.s]
00001:0000            ;
00002:0000            ; 文字列 ("123") を整数型数値に変換する。
00003:0000            ;
00004:1CD0                         ORG     &H1CD0
00005:1CD0                         ORG     &H1CD0
00006:1CD0                         START   MAIN
00007:1CD0            MAIN:
00008:1CD0  D6400E1D               PRE     IZ,EXP
00009:1CD4  D11C2F11               LDW     $28,&H112F            ;EXPRW
00010:1CD8  77081D                 CAL     ROMCALL
00011:1CDB  D640121D               PRE     IZ,EXP_OUT
00012:1CDF  A30A                   STIW    $10,(IZ+$31)          ;$31=0
00013:1CE1  A30C                   STIW    $12,(IZ+$31)
00014:1CE3  A30E                   STIW    $14,(IZ+$31)
00015:1CE5  A310                   STIW    $16,(IZ+$31)
00016:1CE7  2112                   ST      $18,(IZ+$31)
00017:1CE9
00018:1CE9  D11CC60E               LDW     $28,&H0EC6            ;BIN01
00019:1CED  D6401B1D               PRE     IZ,BIN_OUT
00020:1CF1  77081D                 CAL     ROMCALL
00021:1CF4  A10F                   STW     $15,(IZ+$31)          ;$31=0
00022:1CF6
00023:1CF6  D11CC823               LDW     $28,&H23C8            ;CRTKY
00024:1CFA  77081D                 CAL     ROMCALL
00025:1CFD
00026:1CFD  D11CB333               LDW     $28,&H33B3            ;BEEP
00027:1D01  77081D                 CAL     ROMCALL
00028:1D04  566054                 PST     UA,&H54               ;バンク切り替え
00029:1D07  F7                     RTN
00030:1D08            ROMCALL:
00031:1D08  566054                 PST     UA,&H54               ;バンク切り替え
00032:1D0B  372153                 JP      &H5321
00033:1D0E            EXP:
00034:1D0E  31323300               DB      '123',0               ;123=&H7B
00035:1D12            EXP_OUT:
00036:1D12  00000000               DS      9                     ;$10〜$18の値が入る
            00000000
            00
00037:1D1B            BIN_OUT:
00038:1D1B  0000                   DS      2                     ;$15,$16の値が入る
00039:1D1D

ASSEMBLY COMPLETE, NO ERRORS FOUND

HD61700 ASSEMBLER Rev 0.41 - MAP LIST OF [test07.s]
 LABEL           : ADDRESS(hex)    LABEL           : ADDRESS(hex)
------------------------------------------------------------------
 MAIN            :   1CD0h         ROMCALL         :   1D08h
 EXP             :   1D0Eh         EXP_OUT         :   1D12h
 BIN_OUT         :   1D1Bh

 START ADDRESS   = 1CD0h
 END ADDRESS     = 1D1Ch
 EXECUTE ADDRESS = 1CD0h

test07をVX-MENUから実行した結果
・キー入力待ちになることを確認しました。
・[5]キーを押した場合、BEEP 音がなることを確認しました。

test07の出力結果は、以下の BASICプログラムで確認しました。

100 CLS
110 CLEAR
120 FOR I=&H1D12 TO &H1D1C
130 PRINT RIGHT$(HEX$(PEEK I),2);" ";
140 NEXT

上記のBASICプログラムの実行結果は、以下の通りです。

00 00 00 00 00 23 01 02 01 7B 00

7B 00 → 10進数にすると 123 となり、文字列 ("123") が整数型数値に変換されることが確認できました。

ダウンロード

今回テストに使用したプログラムです。[fx-870p_test.zip]

参考文献

HD61700 SPIRITS (http://hd61700.yukimizake.net/)


最終更新日:2019年1月23日
Copyright (C) 2019 T.Matsu