復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第161回]
●ROMとRAMの切り換え
前回は同じアドレス(0000〜7FFF)に配置したROMとRAMとを切り換えてアクセスする仕組みについて説明をしました。
I/Oアドレス9CHに00(ビット3を0にする値ならなんでもよい)を出力するとROMが選択され、FF(ビット3を1にする値ならなんでもよい)を出力するとRAMが選択されます。
今回はその機能が実際のプログラムでどのように使われているかを説明いたします。
下はCP/M互換DOSのBIOSプログラムのコンソール入力部分のアセンブルリストです。
;
;CONSOLE INPUT
;
D31B 3A07BB CONINJ:LD A,(CONSTDT)
D31E B7 OR A
D31F CA29D3 JP Z,CONINJ2
D322 F5 PUSH AF
D323 AF XOR A
D324 3207BB LD (CONSTDT),A
D327 F1 POP AF
D328 C9 RET
D329 AF CONINJ2:XOR A
D32A D39C OUT (9C),A
D32C 3E05 LD A,05;1chr IN,nodp
D32E CDAB10 CALL SOUT
D331 CDAE10 CALL SIN
D334 F5 PUSH AF
D335 3EFF LD A,FF
D337 D39C OUT (9C),A
D339 F1 POP AF
D33A C9 RET
|
;
;CONSOLE OUT 12/5/20
;
D33B AF CONOUTJ:XOR A
D33C D39C OUT (9C),A
D33E 79 LD A,C
D33F FE08 CP 08;BS
D341 CA53D3 JP Z,CONOUTJ2
D344 FE0D CP 0D
D346 CA53D3 JP Z,CONOUTJ2
D349 FE0A CP 0A
D34B CA53D3 JP Z,CONOUTJ2
D34E FE20 CP 20
D350 DA56D3 JP C,CONOUTJ3
D353 CD1510 CONOUTJ2:CALL ADISP
D356 3EFF CONOUTJ3:LD A,FF
D358 D39C OUT (9C),A
D35A C9 RET
;
|