復活!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
|