マシンステータスを得る

マシンステータスを得る

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
;

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2015年08月30日 13:40
ツールボックス

下から選んでください:

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