;Program to read the battery level of the HP 200LX
[org 0x0100]
[bits 16]
[SEGMENT .text]
	mov si,main
	call dispstring
	mov ax,6000h
	int 15h		;Get main battery level
        call dispv
        mov si,backup
        call dispstring
        mov ax,6001h
        int 15h
        call dispv
        int 20h         ;Exit to DOS
dispv:
        mov cx,1Bh
        mul cx
        add ax,622h
        xor dx,dx
        mov bx,1000
        div bx
        push dx
        add al,'0'
        call outchar
        mov al,'.'
        call outchar
        pop ax
        call dispax
        mov si,volt
        jmp dispstring
dispax:
        ;Modified. To make general routine, change back to mov bx,10000
        mov bx,100
dispax_loop:
	xor dx,dx
	div bx
	push dx
	add al,'0'
	push bx
	call outchar
	pop ax
	xor dx,dx
	mov cx,10
	div cx
	or ax,ax
	mov bx,ax
	pop ax	
	jnz dispax_loop
	ret
dispstring:
	lodsb
	or al,al
	jz dispstring_exit
	call outchar
	jmp dispstring
dispstring_exit:
	ret
outchar:
	xor bh,bh
	mov ah,0Eh
	int 10h
	ret

[SEGMENT .data]
main db "Main battery: ",0x00
backup db "Backup battery: ",0x00
volt db " volts",0x0D,0x0A,0x00

[SEGMENT .bss]

