新製品の紹介(プチ連載です)
27C256WRITER組立キット
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
たまにはちょいと息抜きで小品も作ってみたいものです。
簡単にチョイチョイと…。
でも、なかなかそうは簡単にはいかなくて、いつものごとく回を重ねてしまうことになるのかも…。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第21回]
●MYCPU80でも実行してみました
前回はND80ZV(ND80Z3.5)で/W256 SコマンドとJP@コマンドを使った、RAM上でのシステムプログラムの動作テストについて説明をしました。
その機能はMYCPU80でも全く同じように使うことができます。
ただしMYCPU80は標準ではTK80モニタしか搭載していないので、ZB3BASICの機能であるJPコマンドを使うことはできません。
MYCPU80についてはMYCPU80用ZB3BASIC+ZB3DOS(CP/M互換DOS)が必要になります。
●MYCPU80(ZB3DOS)システムROMメモリマップ
MYCPU80用ZB3BASIC+ZB3DOSシステムROMのメモリマップです(2016.2.27現在)。
●DMコマンドを書き換えてみる
前回と同じようにして、DMコマンドの機能を一部書き換えてみます。
DMコマンドプログラムはMENTRYプログラムの中にあります。
下はMENTRY4Cのアセンブルリストの先頭部分です。
DMへのジャンプはアドレス181Eにあります。
前回のND80ZV(ND80Z3.5)用のZENTRYプログラムのリストと基本的には同じですが、こちらは8080ニーモニックで記述しています。
2016/2/18 22:16 mentry4c.txt END=1CFE ;;; ENTRY FOR NEW BASIC 03/08/11 8/13 12/5 04/4/25 ;;; 05/08/24 ;;;entry for nd80z3 ;;;10/6/18 6/19 6/20 6/21 6/22 6/23 6/27 6/28 6/29 ;7/1 7/2 7/3 7/23 8/6 ;9/14 ; ;entry for MYCPU80 ;14/6/13 from zentry1x to mentry1x=mentry2a ;6/23 for debug $1>$9,$2>$A,$5>$D ;7/4 7/8 br,regdp ;7/9 for test,echo ;7/10 ;7/15 $9>$1,$A>$2,$D>$5 ;7/17 8/28 11/26 11/27 ;from mentry3f+zentry2h 14.12.27 ;16/2/18 ; ORG $1800 ;;; ; SOUT_M=$027C ; PRT0=$1057 ;;; ADISP=$1015 DEDSP=$1018 CRLF=$101B SPJMP=$1024 HDCMP=$1027 WHTDP=$1030 DECIN=$1036 SPCDP=$1039 ASHX1=$103F ASHX2=$1042 ASHX4=$1045 HXDP2=$104B HXDP4=$104E ADRD=$1051 BREAK=$1054 DECDP=$105D BITDP=$1066 ATMKCK=$106C;*********14.12.26 LSRC2=$1075 LSRC0=$1078 CRLF2=$107B ;SOUT_M=$10AB SIN=$10AE SBCHLDE=$10B4 SIN_NODTRT=$10BD ; ;;; CMDTP=$16DF RGTBL=$1FB8 ;;; CNVT=$56BF CNVTS=$56C2 NEWSB=$56CE ;;; RUN=$2000 RUN3=$2003 ERRDP=$200F ; HELP=$5686 BSSETSB=$56AD HELPSB=$56B6 ;; RTRAM=$E239;***********14.12.26 RAMWR=$E23F; RAMRD=$E242; RAMJP=$E245; ; VTOP=$DFFF LIMIT=$DFFF ; STCWK=$ED00 ; ;;; KEYBF=$F000 TXTS=$F052 CADRS=$F054 SFTCK=$F056 TXTE=$F063 PRTR=$F065 TXTE2=$F066 VEND=$F06A MODE=$F070 DRCTE=$F078 LPSW=$F079 KETA=$F07C BRKAD=$F080 BRKBF=$F082 BRKCK=$F083 HLBF2=$F084 FLG1=$F08A;$F092 ACC1=$F08B;$F093 OUTWK=$F08C;HLBF1=$F08C INWK=$F08F IXH=$F097 IREG=$F098 SPBF=$F099 PCL=$F09B PCH=$F09C NMEND=$F0B6 DRCTS=$F0CF LCDMK=$F0D9 INTMS=$F0DA INTCK=$F0DB TRSW=$F0DC BSBRKAD=$F0E9 BSBRKA2=$F0ED WRITEP1=$F0FA WRITEP2=$F0FC ;;; ;;; SDATA=$F186 ;;; ATCK=$F1A0 DFLSW=$F1A1 BFNO=$F1A5 LNO=$F1AA ; TXBF=$F200 RAMCK=$F2D1;*********14.12.26 MODE2=$F2F7 TXTS2=$F2FC TXBFC=$F2FE ; STC=$F500 SPTOP=$F800 ; ATD=$FEE0 ATLN=$FEE2 ATRNMK=$FEE4 EIMK=$FEE6 ;;; ; RST7JC=$FFCC RST7JA=$FFCD ; ;;; 1800 C35418 JMP START 1803 C3A318 JMP ENTRY 1806 C35219 JMP SDTIN 1809 C31510 JMP ADISP 180C C3AE10 JMP SIN 180F C38119 JMP ASOUT 1812 C31D19 JMP LNSRC 1815 C3F818 JMP ENT4 1818 C39119 JMP AUTO 181B C3E319 JMP MVDBI 181E C3FD19 JMP DM 1821 C3761A JMP CM 1824 C3EE1B JMP BP 1827 C3BA1B JMP RT 182A C3191B JMP IN 182D C3EB1A JMP OUT 1830 C3C31C JMP LCDOT 1833 C3C51C JMP LINIT 1836 C3C61C JMP JPIN 1839 C3C41C JMP LCDINSB 183C C3D81C JMP RRCOPYSB 183F C33E1B JMP RGDSP 1842 C3AE10 JMP SIN; from INPUT$ 1845 C3BD10 JMP SIN_NODTRT; from INKEY$,INPUT$ 1848 C3951C JMP LD 184B C3AC1C JMP SV 184E C3151A JMP DMSB 1851 C37A1B JMP BROUT1;***********14.12.26 ;;; 1854 3EEF START:MVI A,EF 1856 D398 OUT 98;ND80Z3 DMOFF 1858 AF XRA A |
下はDMプログラムの先頭の部分です。
; 19FD CD6C10 DM:CALL ATMKCK;*********14.12.26 1A00 CD5110 CALL ADRD 1A03 CD151A DM1:CALL DMSB 1A06 CD5410 CALL BREAK 1A09 CD2710 CALL HDCMP 1A0C CA031A JZ DM1 1A0F DA031A JC DM1 1A12 C3A318 JMP ENTRY ; 1A15 E5 DMSB:PUSH H 1A16 E5 PUSH H |
下は同じDMプログラム(MENTRY4Cプログラムの一部分)のソースプログラムです。
DM:CALL ATMKCK;*********14.12.26 CALL ADRD DM1:CALL DMSB CALL BREAK CALL HDCMP JZ DM1 JC DM1 JMP ENTRY ; DMSB:PUSH H PUSH H CALL HXDP4 POP H CALL SPCDP MVI B,08 CALL DM2SB1 MVI A,2D CALL ADISP CALL DM2SB MVI B,07 CALL DM2SB1 POP H CALL SPCDP CALL SPCDP MVI B,10 DM3:CALL MEMRD;******14.12.26 CALL DM4 INX H DCR B;DJNZ *DM3 JNZ DM3 JMP CRLF ; DM4:CPI 20 JC DM5 CPI 80 JC ADSPJ CPI A0 JC DM5 CPI E0 JC ADSPJ DM5:MVI A,2E ADSPJ:JMP ADISP ; DM2SB1:CALL SPCDP CALL DM2SB DCR B;DJNZ *DM22 JNZ DM2SB1 RET DM2SB:PUSH H CALL MEMRD;*******14.12.26 MOV H,A;*********14.12.26 CALL HXDP2 POP H INX H RET |
その一部分(DM4:以下の部分)を下のように書き換えました。
DM4:CPI 20 JC DM5 JMP ADISP DM5:MVI A,2E ADSPJ:JMP ADISP |
この作業も前回と同じです。
もとのプログラムでは、16進数ダンプの右側に表示されるASCII文字のところで、00〜1F、80〜9F、E0〜FFはピリオド(”.”、ASCIIコード2E)に置き換えて表示しているところを、00〜1F以外はそのままASCII文字とみなして表示するように変更しました。
そのように変更したあと、MENTRYWK.TXTというファイル名で保存し、それをASM80でアセンブルしました。
画面には表示されませんが、アセンブル作業がエラーなく終了すると、マシン語のバイナリファイルMENTRYWK.BINが作成されます。
このあと下の作業で書き換え後のDM4:の中身の確認をしますから、その部分のアセンブルリストを示します。
1A47 FE20 DM4:CPI 20 1A49 DA4F1A JC DM5 1A4C C31510 JMP ADISP 1A4F 3E2E DM5:MVI A,2E 1A51 C31510 ADSPJ:JMP ADISP |
前回は先にROM上で普通のDMコマンドを実行して、どのように表示されるかを確認しましたが今回は手順が逆になってしまいました。
最初に/W256 Sを実行して、そのあと/LD MENTRYWK.BIN,1800を実行してから、DM 1F00,1F3Fを実行しました。
手順は逆になってしまいましたが、いずれのコマンドもROM上で実行していますから、前回と同じ結果になります。
/W256 Sの実行によってシステムROMの内容が「裏RAM」にコピーされました。
/LDコマンドでさきほど作成したMENTRYWK.BINを「裏RAM」にロードしてMENTRYプログラムを上書きしました。
DMコマンドを実行してASCII文字の表示を確認しました。
画面右側のASCII文字表示のところで、上で説明した範囲のコードが”.”に置き換えられています。
前回と同様念のために、/LDコマンドによってDMプログラムが上書きされたかどうかをDM@コマンドで確認してみました。
さきほどのアセンブルリストのDM4:のところの通りに、アドレス1A4C〜が書き換えられていることが確認できました。
そこまで確認したあと、JP@1033[Enter]を実行して「裏RAM」に行って、DMコマンドを実行しました。
画面右側のASCII文字表示が最初に実行したときと一部異なっていることがわかります。
●MYCPU80もWindows10に接続できました
長野県のN様からメールをいただきました。
Windows10 HOMEおよびWindows10 ProでMYCPU80のZB3DOS(CP/M互換DOS)が動きました、とのことです。
N様。
前回のND80ZVをWindows10に接続して正常に動作しましたとのご連絡に続いて今回のMYCPU80の接続のご連絡有難うございました。
ご協力に感謝申し上げます。
今後ともご支援ご協力をお願いいたします。
27C256WRITER組立キット[第21回]
2016.2.28upload
前へ
次へ
ホームページトップへ戻る