復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第305回]
●プログラムをロード中の写真
前回説明しました普通のPloglam Loaderを使ってプログラムをロードするところを写真に撮りました。
やっぱり言葉だけで説明するよりも写真や図などを使ったほうが分かりやすいと思います。
ですけれど、準備するのに手間がかかります。
電源を入れた直後の写真です。
パワーオンリセット回路が働いて、電源ONと同時にCPUがリセットされて0000Hから実行が開始されます。
RAMの0000Hには[第300回]で説明しましたサンプルプログラムが入っています。
電ONと同時にそのサンプルプログラムが実行されます。
左下のPROGRAMMED INPUTスイッチから入力された値が左上のPROGRAMMED OUTPUTに表示されています。
STOPスイッチを押しました。
ちょうどアドレス0000Hで停止しました。
Program Loaderを実行するために、パネルスイッチに7F80Hを設定して、READスイッチを押しました。
アドレス7F80HがアドレスLEDに表示されて、データバスLEDには7F80Hのメモリ内容が表示されました。
RUNスイッチを押しました。
Program Loaderが実行され、USB経由でWindowsパソコンから送られてくるプログラムデータをPIC18F14K50から受け取る態勢でループしています。
プログラムは7F85Hから7F9FHの間でループしていますから、アドレスLEDには7F9FHが明るく表示され、A5、A6のビットも薄く点灯しています。
ここで前回説明しましたように、パソコン側からHIDWRを実行します。
HIDWRは瞬時に実行を終了します。
送信されたプログラムはメモリにロードされたはずですから、それを確かめてみます。
STOPスイッチを押しました。
アドレス7F9EHで停止しました。
アドレススイッチに8000Hを設定してREADを押しました。
8000Hのメモリの値がデータバスLEDに表示されました。
31Hと表示されています。
●Program Loaderでロードしたプログラム
アドレス8000H番地にロードしたプログラムのリストです。
2013/1/27 21:21 music4b2.txt END=80EC ;;; music 09/10/9 10/10 10/12 10/15 ;;; ;;;MUSIC from MYCPU80 MUSIC ;10/6/4 6/5 6/15 for ND80Z3 CLK=6MHz ;7/20 9/24 ;12/11/27 for E-80 clock? ;13/1/27 ; ORG $8000 ; SPEED=$EFFF REPEAT=$EFFE MAE=$EFFD DATA=$8100 ; 8000 310000 START:LD SP,$0000 8003 3E88 LD A,88;A=out,B=out,CH=in,CL=out 8005 D3FB OUT (FB),A 8007 3E03 LD A,03 8009 32FFEF LD (SPEED),A 800C 210081 LD HL,DATA 800F 3AFDEF SND1:LD A,(MAE) 8012 4F LD C,A 8013 7E SND11:LD A,(HL) 8014 FEFF CP FF 8016 CA0080 JP Z,START 8019 B7 OR A 801A CA7680 JP Z,YASUMI 801D FE1E CP 1E 801F DA2780 JP C,SND12 8022 23 INC HL 8023 23 INC HL 8024 C31380 JP SND11 8027 F5 SND12:PUSH AF 8028 B9 CP C 8029 CC9480 CALL Z,T5MS 802C 23 INC HL 802D 46 LD B,(HL) ;NAGASA 802E 23 INC HL 802F F1 POP AF 8030 E5 PUSH HL 8031 21B180 LD HL,SNDTBL 8034 87 ADD A,A 8035 5F LD E,A 8036 1600 LD D,00 8038 19 ADD HL,DE 8039 56 LD D,(HL) 803A 23 INC HL 803B 5E LD E,(HL);KURIKAESI KAISU 803C 3AFFEF LD A,(SPEED) 803F 6F LD L,A 8040 60 LD H,B 8041 7B LD A,E 8042 32FEEF LD (REPEAT),A ; 8045 4A SNDS1:LD C,D 8046 3E03 LD A,03 ;sp out=H (pc1=H) 8048 D3FB OUT (FB),A 804A E5 SNDS2:PUSH HL ;DUMMY CLK=11 804B E5 PUSH HL ;DUMMY CLK=11 804C E1 POP HL ;DUMMY CLK=10 804D E1 POP HL ;CLK=10 804E 00 NOP ;CLK=4 804F 0D DEC C ;CLK=4 8050 C24A80 JP NZ,SNDS2 ;CLK=10 8053 4A LD C,D 8054 3E02 LD A,02 ;sp out=L (pc1=L) 8056 D3FB OUT (FB),A 8058 E5 SNDS3:PUSH HL ;DUMMY CLK=11 8059 E5 PUSH HL ;DUMMY CLK=11 805A E1 POP HL ;DUMMY CLK=10 805B E1 POP HL ;CLK=10 805C 00 NOP ;CLK=4 805D 0D DEC C ;CLK=4 805E C25880 JP NZ,SNDS3 ;CLK=10 8061 1D DEC E 8062 C24580 JP NZ,SNDS1 8065 3AFEEF LD A,(REPEAT) 8068 5F LD E,A 8069 05 DEC B 806A C24580 JP NZ,SNDS1 806D 44 LD B,H 806E 2D DEC L 806F C24580 JP NZ,SNDS1 8072 E1 POP HL 8073 C30F80 JP SND1 ;;; 8076 23 YASUMI:INC HL 8077 46 LD B,(HL) ;NAGASA 8078 23 INC HL 8079 E5 PUSH HL 807A 3AFFEF LD A,(SPEED) 807D 6F LD L,A 807E 60 LD H,B 807F CD9980 YASUMI2:CALL T40MS 8082 05 DEC B 8083 C27F80 JP NZ,YASUMI2 8086 44 LD B,H 8087 2D DEC L 8088 C27F80 JP NZ,YASUMI2 808B E1 POP HL 808C C30F80 JP SND1 ;;; 808F 23 ERROR:INC HL 8090 23 INC HL 8091 C30F80 JP SND1 ; 8094 0E05 T5MS:LD C,05 8096 C39B80 JP T40MS2 ; 8099 0E28 T40MS:LD C,28 ;=40 809B CDA380 T40MS2:CALL T1MS 809E 0D DEC C 809F C29B80 JP NZ,T40MS2 80A2 C9 RET ; 80A3 F5 T1MS:PUSH AF ;CK=11....11+7+10+10+10=48/6(8microsec) 80A4 3E5F LD A,5F ;=99 CK=7 80A6 E5 T1MS2:PUSH HL;DUMMY CLK=11----------------- 80A7 E5 PUSH HL;DUMMY CLK=11 | 80A8 E1 POP HL;DUMMY CLK=10 |CK=60/6(10microsec) 80A9 E1 POP HL;DUMMY CLK=10 | 80AA 00 NOP ;CLK=4 | 80AB 3D DEC A ;CK=4 |10x99=990microsec 80AC C2A680 JP NZ,T1MS2 ;CK=10--- 80AF F1 POP AF ;CK=10 80B0 C9 RET ;CK=10 + CALL CK=10 ; ; SOUND TABLE 80B1 00 SNDTBL:DB 00;DUMMY 80B2 00 DB 00;DUMMY 80B3 7F DB 7F;so4 80B4 10 DB 10 80B5 77 DB 77;so#4 80B6 11 DB 11 80B7 71 DB 71;ra4 80B8 12 DB 12 80B9 6A DB 6A;ra#4 80BA 13 DB 13 80BB 64 DB 64;si4 80BC 14 DB 14 80BD 5F DB 5F;do5 80BE 15 DB 15 80BF 59 DB 59;do#5 80C0 16 DB 16 80C1 54 DB 54;re5 80C2 18 DB 18 80C3 4F DB 4F;re#5 80C4 19 DB 19 80C5 4B DB 4B;mi5 80C6 1A DB 1A 80C7 47 DB 47;fa5 80C8 1C DB 1C 80C9 43 DB 43;fa#5 80CA 1E DB 1E 80CB 3F DB 3F;so5 80CC 1F DB 1F 80CD 3B DB 3B;so#5 80CE 21 DB 21 80CF 38 DB 38;ra5 80D0 23 DB 23 80D1 35 DB 35;ra#5 80D2 25 DB 25 80D3 32 DB 32;si5 80D4 27 DB 27 80D5 2F DB 2F;do6 80D6 2A DB 2A 80D7 2C DB 2C;do#6 80D8 2C DB 2C 80D9 2A DB 2A;re6 80DA 2F DB 2F 80DB 27 DB 27;re#6 80DC 32 DB 32 80DD 25 DB 25;mi6 80DE 35 DB 35 80DF 23 DB 23;fa6 80E0 38 DB 38 80E1 21 DB 21;fa#6 80E2 3B DB 3B 80E3 1F DB 1F;so6 80E4 3F DB 3F; 80E5 1D DB 1D;so#6 80E6 43 DB 43; 80E7 1B DB 1B;ra6 80E8 47 DB 47; 80E9 1A DB 1A;ra#6 80EA 4A DB 4A; 80EB 18 DB 18;si6 80EC 50 DB 50; ;END DATA =8100 ERROR =808F MAE =EFFD REPEAT =EFFE SND1 =800F SND11 =8013 SND12 =8027 SNDS1 =8045 SNDS2 =804A SNDS3 =8058 SNDTBL =80B1 SPEED =EFFF START =8000 T1MS =80A3 T1MS2 =80A6 T40MS =8099 T40MS2 =809B T5MS =8094 YASUMI =8076 YASUMI2 =807F |