マシンステータスを得る

※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

マシンステータスを得る

ROMやシステム領域を参照してメモリサイズやマシンのバージョンを得ることが可能。
DOSから現在実行中のマシンの種類を得るコマンドmstatを作ってみる。
いろいろ工夫することでもっと多くのマシン状態を表示する事も可能だ。

mstat.c
#include <stdio.h>

extern unsigned char rom_version();

void main(void){
	unsigned int *SZ_VRAM=(unsigned int*)0xFAFC;
	unsigned int *SZ_DISK=(unsigned int*)0xFFA7;
	unsigned char ver;
	unsigned char vmem;

	printf("--- mstat \r\n");

	//VRAM
	printf("VRAM: ");
	vmem=(*SZ_VRAM & 0x6)/2;

	if (vmem==0){
		printf("16K \r\n");
	} else if (vmem==1) {
		printf("64K \r\n");
	} else if (vmem>=2) {
		printf("128K \r\n");
	} else {
		printf("\r\n");
	}

	//DISKDRIVE
	printf("DISKDRIVE: ");
	if (*SZ_DISK==0xC9) {
		printf("no \r\n");
	} else {
		printf("yes \r\n");
	}

	//HW VERSION
	printf("H/W VER: ");
	ver=(unsigned char)rom_version();
	if (ver==0) {
		printf("MX1 \r\n");
	} else if (ver==1) {
		printf("MX2 \r\n");
	} else if (ver==2) {
		printf("MX2+ \r\n");
	} else if (ver==3) {
		printf("MXTR \r\n");
	} else {
		printf("\r\n");
	}
}


romver.asm
;
;	rom_version()
;
_rom_version::
	push	BC		;backup registerfile
	push	DE
	push	HL
;
	ld	a,(0xFCC2)	;slot address
	ld	hl,#0x002d	;read address
;
	call	0x000c		;interslotcall(readslot)
;
	pop	HL
	pop	DE
	pop	BC
;
	ld	l,a		;return(uchar)
;
	ei
	ret
;
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。