Day 14
Getting Input
	Today, instead of just a single char, we'll input an entire line from the user. We will be
using DOS Service Function Ah.
The Buffer
	Function Ah takes an special buffer for text. It is arranged like so:
	byte 0 - Maximum length of input
	byte 1 - Will be filled after the input is received with the actual number of chars
	bytes 2-n - The buffer to be filled with input, should be atleast (byte 0) chars long
Here's how we do it in code:
	len db 254 ; a fair amount of space
	act db 0   ; will be filled with actual amount of chars received
	buffer db 254 dup 0  ; DUP means that I want 254 bytes of the number following which is 0.
				; that's so we don't have to do 254 of 0,0,0, etc...
How to use Function 0Ah
	Here's the code to input a line:
		mov ah,0Ah  ; function number
		mov dx,offset len  ; start of buffer
		int 21h   ; call DOS
	Now, we should move down a line so that we can echo back the input:
		mov ah,2
		mov dl,10
		int 21h
		mov dl,13
		int 21h    ; 10 and 13 make up a carriage return and line feed.
	Put a dollar sign at the end of the chars inputted:
		mov bx,offset act    ; pointer to length of text string
		mov dx,offset buffer ; pointer to the start of chars
		add dl,byte [bx]     ; add the length to the pointer of chars.
		; we need ^ the "byte" otherwise we will be adding the full 16bit number at that location.
		mov bx,dx            ; move pointer into BX
		mov byte [bx],'$'    ; put the $ there.
	Now it's all ready to output with Function 9:
		mov dx,offset buffer  
		mov ah,9             ; output the input string
		int 21h
		mov ah,4Ch    ; exit the program
		int 21h
	Here's our buffer:
		len db 255
		act db 0
		coma1 db 256 DUP 0
That's it! I hope you understood all that pointer math when we put the dollar sign in!
This Day In Review
	Input is very important, what use is a program without it?
	Until Next Time!,
		- Mike H
Intro - Day 15
Patater GBAGuy Mirror
Contact