#include <stdio.h>
#include <dos.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <alloc.h>
#include <mem.h>


void main()
{
	int s, c, v;
	int far *screen;
	screen = (int far *)MK_FP(0xB800, 0);

	char txt[]={"Detta „r en text med olika f„rger... hoho sa tomten!"};
	char col[]={"7777707707707777077701234506789127770777707704444447"};

// Allokerar minne f”r undang”md text med f„rger
	int *s_text = (int *)calloc(strlen(txt), sizeof(int));

// Clear Screen
	for(s = 0; s < 25*80; s++)
		*(screen+s) = 0x0020;

// G”r iordning undang”md text i minnet
	for(s = 0; s < strlen(txt); s++)
		*(s_text+s) = (((0 << 4) | (col[s] - '0')) << 8) | txt[s];


	while(!kbhit())
	{
		for(s = 1; (s < strlen(txt)+80) && !kbhit(); s++)
		{
			if(s >= 79)
				c = 79;
			else c = s;

			if(s >= strlen(txt))
				v = strlen(txt)-(s-c);
			else v = s;

			memcpy(screen+80*23-c, s_text+s-c, v*sizeof(int));

			*(screen+80*23-c+v+1) = 0x0020;

			delay(150);
		}

		*(screen+80*23-c+v) = 0x0020;
	}

	getch();

	free(s_text);
}

