復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第354回]
●トラック用ワークエリアの巡回
いよいよトラック用ワークエリアの巡回チェックです。
必要な設定処理を済ませたあとは、ひたすらトラック用ワークエリアを巡回チェックします。
何をチェックするかといいますと、各トラック用ワークエリアの(IX+01)が00であるかどうかをぐるぐる回りながらチェックするのです。
各トラック用ワークエリアの(IX+02)〜(IX+04)には時間データが書かれていて、その値は前回説明しました割込みプログラムによって、カウントダウンされていきます。
最後に0になると、(IX+01)に00が書き込まれます。
メインルーチンはそれを待っているのです。
時間データが最初から0のときもあります。
その場合には最初から(IX+01)には00が書き込まれますから、それはいきなり検出されることになります。
なにをやっているのか、いまひとつうまく説明ができません。
やっていることをひとわたり説明しますと、何をやっているのかご理解いただけると思います。
8093 DD21DE82 START1:LD IX,TPRMTOP 8097 3A0B84 LD A,(TRKNO) 809A 32DC82 LD (CNTR),A 809D AF XOR A 809E 32DD82 LD (ENDCK),A ;loop 80A1 3A0B84 ST1LP:LD A,(TRKNO) 80A4 47 LD B,A 80A5 3D DEC A 80A6 CAB680 JP Z,ST1LP1;mode0? 80A9 3ADC82 LD A,(CNTR) 80AC B8 CP B 80AD C2B680 JP NZ,ST1LP1 80B0 DD7E00 LD A,(IX+00);if mode1,pass trk1 timedata 80B3 C3C380 JP ST1LP2 80B6 3ADD82 ST1LP1:LD A,(ENDCK) 80B9 47 LD B,A 80BA DD7E00 LD A,(IX+00) 80BD F5 PUSH AF 80BE B0 OR B 80BF 32DD82 LD (ENDCK),A 80C2 F1 POP AF 80C3 B7 ST1LP2:OR A 80C4 CA3781 JP Z,NEXT 80C7 DD7E01 LD A,(IX+01) 80CA B7 OR A 80CB C23781 JP NZ,NEXT |