0

hello people. I am doing an "os" (small) that's mainly a menu. It just prints some strings and highlights some words when you pres 1,2 or 3. And by pressing enter while a option is selected, it has to do something.
The problem is that the program gets stuck in the beginning ... and i don't know where is the problem. Can't run a debug because it's a bootable bin file. Can some one please tell me where is the error?
I'm using linux+ nasm

[BITS 16]      
jmp 07C0h:start
	snd     db  'Sound'
	lsnd	equ	$-snd
	abt	db	'About'
	labt	equ	$-abt
	hlp	db	'Help'
	lhlp	equ	$-hlp

    start:

is1:
	call init
	;print "sound"
	mov	ax,1300h
	mov	bh,0
	mov	bl,2
	mov	cx,lsnd
	mov	dx,0
	push cs
	pop es
	mov bp,snd
	int 10h
wait_:
	mov	ah,00h
	int	16h

	cmp 	ah,13
	je	make_sound

	cmp	ah,49
	je	is1

	cmp	ah,50
	je	is2

	cmp	ah,51
	je	is3

	jmp	wait_
is2:	
	call init
	;print "About"
	mov	ax,1300h
	mov	bh,0
	mov	bl,2
	mov	cx,labt
	mov	dl,5
	push cs
	pop es
	mov bp,abt
	int 10h
	jmp	wait_

is3:	jmp	wait_
	
make_sound:
	mov	ax, 0E07h
	xor	bx, bx
	int	10h
	jmp	wait_
	
init:
	;print "sound"
	mov	ax,1300h
	mov	bh,0
	mov	bl,5
	mov	cx,lsnd
	mov	dx,0
	push cs
	pop es
	mov bp,snd
	int 10h
	;print "About"
	mov	ax,1300h
	mov	bh,0
	mov	cx,labt
	mov	dl,5
	push cs
	pop es
	mov bp,abt
	int 10h
	;print "Help"
	mov	ax,1300h
	mov	bh,0
	mov	cx,lhlp
	mov	dl,10
	push cs
	pop es
	mov bp,hlp
	int 10h
	ret


    times 510-($-$$) db 0
    dw 0AA55h

The attachment shows the result of the execution. To me, it looks like he executes init then ;print "sound" then gets stuck. Maybe the function that i use to wait for a char isn't the right one?

Edited by Alex_: n/a

Attachments Screenshot-1.png 17.51 KB
2
Contributors
2
Replies
3
Views
8 Years
Discussion Span
Last Post by Alex_
0

Review how VIDEO BIOS Interrupt 10h is suppose to function!

You indicate string doesn't contain attributes with AX,1300h
BUT Never set BL to indicate attribute to use!

ALSO DL=column DH=Row

Now check all your prints!

0

I don't understand: why not setting BL for an attribute? It works fine for me...

I managed to fix my error,however. I was comparing ah when the character returned was in al. *oops*

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.