; combat.asm (C) Adam Wysocki <gophi at miauk.net>
;
; Przykład pokazujący, że napisanie programu, który można 
; wywołać jako COM oraz BAT jest możliwe.
;
; Kompilacja:
;   nasm16 -f bin -o combat.com combat.asm
;   copy combat.com combat.bat

org	100h

start:
	; Najpierw dwa dwukropki, jeden żeby bat potraktował linię 
	; jako etykietę a drugi bonusowo.
	cmp	bh, [bp+si]

	; Zmiana stringa "BAT " na "COM ".
	mov	di, tx_type
	mov	dword [di], 'COM '

	; Dopisanie znaku końca tekstu.
	mov	di, tx_end
	mov	byte [di], '$'

	; Wypisanie tekstu.
	mov	ah, 9
	mov	dx, tx_text
	int	21h

	; Koniec programu.
	ret

	; CRLF (jako koniec etykiety)
	mov	ax, 0A0Dh

	; Małpa - dla BAT, ukrycie polecenia.
	inc	ax

	; "EC"
	inc	bp
	inc	bx

	; "ho "
	push	word 206Fh

tx_text:
	db	"Jestem wywolany jako "
tx_type:
	db	"BAT :)", 0Dh, 0Ah
tx_end:
