5511emu その1

まずは5511emuをダウンロードします。

https://bitbucket.org/hdk_2/5511emu

f:id:tanam:20181225083704j:plain

ROMイメージを準備します。

  • BASE_E.ROM : E0000h-EFFFFh
  • BASE_F.ROM : F0000h-FFFFFh
  • FONT_8.ROM : Font ROM 80000h-8FFFFh
  • FONT_9.ROM : Font ROM 90000h-9FFFFh
  • FONT_A.ROM : Font ROM A0000h-AFFFFh
  • FONT_B.ROM : Font ROM B0000h-BFFFFh

上記FONT_8.ROM~FONT_B.ROM(00000-3FFFF)は以下のJXFONTDMP.COMで実機から取得できます。

https://bitbucket.org/hdk_2/5511emu/src/7e8d813db8b9fe9fcae3ab4dc421146414b8c19f/tools/dumpmem/?at=default

 

  • -e: Set window size for extended video mode
  • -d8 for D8000h, application, 32KiB extended video (Kakucho-hyoji) mode cartridge

上記EXTVIDO.ROM(38000-3FFFF)は以下のJXEXTTDMP.COMで実機から取得できます。

http://www.geocities.jp/parallel_computer_inc/dumpmem.zip

jxextdmp.s

# EXT VIDEO ROM dump program for JX
# Copyright (C) 2018 tanam1972

# To assemble:
# gcc -nostdlib -nostdinc -Wl,--oformat=binary -Wl,-Ttext,0x100 -o jxextdmp.com jxextdmp.s
	.code16

_start:	.global	_start
	mov	$0x11, %ax
	int	$0x10
	mov	$startm, %dx
	mov	$0x9, %ah
	int	$0x21
	push	%cs
	pop	%ds
	mov	$filnam, %dx
	xor	%cx, %cx
	mov	$0x3c, %ah
	int	$0x21
	jc	opener
	mov	%ax, %bx
	mov	$0xa000, %ax
1:	mov	%ax, %ds
	push	%ax
	xor	%si, %si
	push	%cs
	pop	%es
	mov	$buf, %di
	cld
	mov	$0x1ff, %dx
	mov	$0x3709, %cx
	cli
	call	outga
	inc	%cx
	call	outga
	mov	$0xb007, %cx
	call	outga
	mov	$0x4000 / 2, %cx
	rep	movsw
	mov	$0x3007, %cx
	call	outga
	mov	$0xb70a, %cx
	call	outga
	sti
	push	%cs
	pop	%ds
	mov	$buf, %dx
	mov	$0x4000, %cx
	mov	$0x40, %ah
	int	$0x21
	jc	writee
	cmp	$0x4000, %ax
	jne	writee
	pop	%ax
	add	$0x400, %ax
	cmp	$0xe000, %ax
	jb	1b
	mov	$0x3e, %ah
	int	$0x21
	mov	$endm, %dx
	mov	$0x9, %ah
	int	$0x21
	mov	$0x4c00, %ax
	int	$0x21
outga:	in	%dx, %al
	mov	%cx, %ax
	out	%al, %dx
	mov	%ah, %al
	out	%al, %dx
	ret
opener:	mov	$openms, %dx
1:	mov	$0x9, %ah
	int	$0x21
	mov	$0x4c01, %ax
	int	$0x21
writee:	mov	$writem, %dx
	jmp	1b
filnam:	.string	"extvido.rom"
startm:	.ascii	"EXT VIDEO ROM dump program for JX\r\n"
	.ascii	"Copyright (C) 2018 tanam1972\r\n$"
openms:	.ascii	"Create file failed\r\n$"
writem:	.ascii	"Write to file failed\r\n$"
endm:	.ascii	"Done\r\n$"
buf: