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