復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第319回]
●CLOCK−DOUBLERを試す
前回の終わりに書きましたCLOCK−DOUBLERなる機能について、そんな有難いものがあるのならぜひとも試してみたいと思いました。
ともかくZ8S180を20MHzで動かすことを考えた段階で、そのときにはこんな便利な機能があるとは夢にも思ってはいませんでしたから、新たに40MHzのセラミック発振子回路を増設してしまいました([第267回])。
そんな便利な機能が使えるのでしたら、40MHzの発振回路など無くても済んでしまいます。
ところが前回お見せしました内蔵I/Oレジスタ1EHのところの説明だけを読みますと、なんとなくもうひとつしっくりこないところがあります。
そもそもデフォルトの設定では外部から供給するクロックは内部クロックの2倍ということになっております(HD64180もそうでした)。
それなのに、その説明文を素直に読みますと、設定によって、内部クロックを外部クロックの倍にできる、というように読めてしまいます。
それってどこかおかしくありませんかあ。
なんだか知らないうちに、外部クロックは内部クロックの倍の周波数(言い方を変えますと、内部クロック周波数は外部クロックの1/2)というところがいつのまにかすっ飛んでしまって、いきなり内部クロック周波数は外部クロックの倍になってしまう、というように受け取られます。
そのあたりが、どうも納得できなくて、何かが1つ欠けているような気がいたしました。
その通りでありました。
そうするためには(内部クロックを外部クロックの倍にするためには)必要な手続きが、ひとつ飛んでいたことに、後で気がつくのでありますが、この時点ではまだそのことには気がついていませんでした。
ですのでこの時点では、1EHのビット7を1にしましても、期待に反して、内部クロックは外部クロックの倍にはなってくれませんでした。
しかし。
内部クロックが外部クロックと同じにはなってくれたようです。
つまり、この設定を有効にする前には、外部クロックが20MHzのときに内部クロックは10MHzでしたが、プログラムを実行して1EHのビット7を1にしましたら、内部クロックも外部クロックと同じ20MHzになりました。
実は[第316回]でお見せしました82C55A−2のRD端子とCS端子の入力信号の写真(下)
は、1EHレジスタをそのように設定して、外部クロックに水晶発振回路からの20MHzを入力してテストしたときのものだったのです。
下はそのように設定するプログラムをCMコマンドを使って16進数コードで直接入力したときの画像です。
16進数コードだけでは何をやっているのかわかりません、という方のために、下にニーモニックを付けて示しました。
8000 AF XOR A 8001 013200 LD BC,$0032 8004 ED79 OUT (C),A 8006 0E36 LD C,36 8008 ED79 OUT (C),A 800A 3EBF LD A,BF 800C 0E1E LD C,1E 800E ED79 OUT (C),A 8010 DBF8 LOOP:IN A,(F8) 8012 C31080 JP LOOP |
logfile nd80zlog\02121522.txt open ND80ZVに接続しました 0001 0000 - z 1000 00C3 - *** nd80z3 basic **** >cm 8000 8000 AF- 8001 01- 8002 32- 8003 00- 8004 ED- 8005 79- 8006 0E- 8007 36- 8008 ED- 8009 79- 800A 3E- 800B BF- 800C 0E- 800D 1E- 800E ED- 800F 79- 8010 DB-c3 8011 F8-33 8012 C3-10 8013 10- >jp 8000 >/ld e80iorwt.bin,8000 loading E80IORWT.BIN ...0071(113)bytes loaded,from 8000 to 8070 >new 8100 >10a=0 >15p."start",time$ >20usr($8000) >30p.time$,a >40a=a+1 >50if a%+b%=0 g.20 >60p."error",b%,a% >. 10 A=0 15 PRINT "start",TIME$ 20 USR($8000) 30 PRINT TIME$,A 40 A=A+1 50 IF A%+B%=0 GOTO 20 60 PRINT "error",B%,A% >r. start 15:27:43 15:32:34 0 15:37:26 1 15:42:18 2 15:47:10 3 15:52:02 4 15:56:54 5 16:01:46 6 16:06:38 7 16:11:30 8 16:16:22 9 16:21:14 10 16:26:06 11 16:30:58 12 16:35:49 13 16:40:41 14 16:45:33 15 16:50:25 16 16:55:17 17 17:00:09 18 17:05:01 19 17:09:53 20 17:14:45 21 17:19:37 22 17:24:29 23 17:29:21 24 17:34:13 25 17:39:05 26 17:43:56 27 17:48:48 28 17:53:40 29 17:58:32 30 18:03:24 31 18:08:16 32 18:13:08 33 18:18:00 34 18:22:52 35 18:27:44 36 18:32:36 37 18:37:28 38 18:42:20 39 18:47:11 40 18:52:03 41 18:56:55 42 19:01:47 43 19:06:39 44 19:11:31 45 19:16:23 46 19:21:15 47 19:26:07 48 19:30:59 49 19:35:51 50 19:40:43 51 19:45:35 52 19:50:26 53 19:55:18 54 20:00:10 55 20:05:02 56 20:09:54 57 20:14:46 58 20:19:38 59 20:24:30 60 20:29:22 61 20:34:14 62 20:39:06 63 20:43:58 64 20:48:50 65 20:53:41 66 20:58:33 67 21:03:25 68 21:08:17 69 21:13:09 70 21:18:01 71 21:22:53 72 21:27:45 73 21:32:37 74 21:37:29 75 21:42:21 76 21:47:13 77 21:52:05 78 21:56:57 79 22:01:48 80 22:06:40 81 22:11:32 82 22:16:24 83 22:21:16 84 22:26:08 85 22:31:00 86 22:35:52 87 22:40:44 88 22:45:36 89 22:50:28 90 22:55:20 91 23:00:12 92 23:05:03 93 23:09:55 94 23:14:47 95 23:19:39 96 23:24:31 97 23:29:23 98 23:34:15 99 23:39:07 100 23:43:59 101 23:48:51 102 23:53:43 103 23:58:35 104 00:03:27 105 00:08:18 106 00:13:10 107 00:18:02 108 00:22:54 109 00:27:46 110 00:32:38 111 00:37:30 112 00:42:22 113 00:47:14 114 00:52:06 115 00:56:58 116 01:01:50 117 01:06:42 118 01:11:34 119 01:16:25 120 01:21:17 121 01:26:09 122 01:31:01 123 01:35:53 124 01:40:45 125 01:45:37 126 01:50:29 127 01:55:21 128 02:00:13 129 02:05:05 130 02:09:57 131 02:14:49 132 02:19:40 133 02:24:32 134 02:29:24 135 02:34:16 136 02:39:08 137 02:44:00 138 02:48:52 139 02:53:44 140 02:58:36 141 03:03:28 142 03:08:20 143 03:13:12 144 03:18:04 145 03:22:55 146 03:27:47 147 03:32:39 148 03:37:31 149 03:42:23 150 03:47:15 151 03:52:07 152 03:56:59 153 04:01:51 154 04:06:43 155 04:11:35 156 04:16:27 157 04:21:19 158 04:26:11 159 04:31:02 160 04:35:54 161 04:40:46 162 04:45:38 163 04:50:30 164 04:55:22 165 05:00:14 166 05:05:06 167 05:09:58 168 05:14:50 169 05:19:42 170 05:24:34 171 05:29:26 172 05:34:17 173 05:39:09 174 05:44:01 175 05:48:53 176 05:53:45 177 05:58:37 178 06:03:29 179 06:08:21 180 06:13:13 181 06:18:05 182 06:22:57 183 06:27:49 184 06:32:41 185 06:37:32 186 06:42:24 187 06:47:16 188 06:52:08 189 06:57:00 190 07:01:52 191 07:06:44 192 07:11:36 193 07:16:28 194 07:21:20 195 07:26:12 196 07:31:04 197 07:35:56 198 07:40:48 199 07:45:39 200 07:50:31 201 07:55:23 202 08:00:15 203 08:05:07 204 08:09:59 205 08:14:51 206 08:19:43 207 08:24:35 208 08:29:27 209 08:34:19 210 08:39:11 211 08:44:03 212 08:48:54 213 08:53:46 214 08:58:38 215 09:03:30 216 09:08:22 217 09:13:14 218 09:18:06 219 09:22:58 220 09:27:50 221 09:32:42 222 09:37:34 223 09:42:26 224 09:47:18 225 09:52:09 226 09:57:01 227 10:01:53 228 10:06:45 229 10:11:37 230 10:16:29 231 10:21:21 232 10:26:13 233 break in 30 > > >0000 00C3 - リモート接続を終了しました logfile closed at Wed Feb 13 10:31:11 2013 |
実行を開始したのは15:27:43です。
終了したのは翌日の10:26:13です。
カウンタの値は第1回目の終了時が0で最後が233ですから、この間に234回実行したことになります。
この間の時間を秒で求めてみます。
この間の実行時間は18:58:30ですから18×3600+58×60+30=68310秒
これを234で割ると
68310/234=291.923(秒)です。
前回計算によって求めた値が291.924でしたから。
おお。
なんと、ぴったりじゃありませんか。
前回はセラミック振動子の精度もなかなかのものだ、と書きましたが、さすがに水晶発振は桁が違います。
ダントツの精度ですねえ。
いやあ。
これはもう、二重丸の納得、です。
これで、CPUクロックを外部クロックと同じにできるというところまでは確認ができました。
それでは本当に、CPUクロックを外部クロックの倍にできるのか、ということなのですが。
毎度のことで、本日は時間がなくなってしまいました。
次回にて説明をいたします。
ワンボードマイコンでCP/Mを![第319回]
2013.2.15upload
前へ
次へ
ホームページトップへ戻る