ウォンツテック

そでやまのーと

実機

qemuではうまく動くけど実機ではFDからの読み込みに失敗しているのでデバッグ表示用のコードを書いた

#########################################				
# for debug
#########################################						
_ax:	.ascii "ax:\0"
_bx:	.ascii "bx:\0"
_cx:	.ascii "cx:\0"
_dx:	.ascii "dx:\0"
_si:	.ascii "si:\0"
_di:	.ascii "di:\0"
_sp:	.ascii "sp:\0"
_cs:	.ascii "cs:\0"
_ds:	.ascii "ds:\0"
_es:	.ascii "es:\0"
_ss:	.ascii "ss:\0"
_space:	.ascii " \0"		
		
print_all_registers:		
		pusha
		pushw	%si
		
		movw	$_ax, %si
		call	printstr
		call	print_register	# print ax
		
		movw	$_bx, %si
		call	printstr
		movw	%bx, %ax
		call	print_register  # print bx

		movw	$_cx, %si
		call	printstr
		movw	%cx, %ax
		call	print_register  # print cx
		
		movw	$_dx, %si
		call	printstr
		movw	%dx, %ax
		call	print_register  # print dx

		movw	$_si, %si
		call	printstr
		popw	%si
		movw	%si, %ax
		call	print_register  # print si

		movw	$_di, %si
		call	printstr
		movw	%di, %ax
		call	print_register  # print di

		movw	$_cs, %si
		call	printstr
		movw	%cs, %ax
		call	print_register  # print cs

		movw	$_ds, %si
		call	printstr
		movw	%ds, %ax
		call	print_register  # print ds

		movw	$_es, %si
		call	printstr
		movw	%es, %ax
		call	print_register  # print es

		movw	$_ss, %si
		call	printstr
		movw	%ss, %ax
		call	print_register  # print ss
		
		popa
		ret		

print_register:	# print %ax
		pushw	%ax
		shr		$8, %ax
		call	print_char
		popw	%ax
		call	print_char
		pushw	%si
		movw	$_space, %si
		call	printstr
		popw	%si
		ret				

print_char:
		pushw	%bx		
		pushw	%ax
		shr		$4, %al
		cmpb	$9, %al
		
		ja		print_check1
		addb	$0x30, %al
		jmp		print_check1_end
print_check1:
		addb	$0x37, %al
print_check1_end:
		
		movb	$0x0e, %ah
		xorb	%bh, %bh
		int		$0x10
		popw	%ax
		movb	%al, %bl
		pushw	%ax
		movb	%bl, %al
		andb	$0x0f, %al

		cmpb	$9, %al
		ja		print_check2
		addb	$0x30, %al
		jmp		print_check2_end
print_check2:
		addb	$0x37, %al
print_check2_end:
		
		movb	$0x0e, %ah
		xorb	%bh, %bh
		int		$0x10
		popw	%ax
		popw	%bx		
		ret
#########################################