rendered paste body//------------------------------------------------------------------------------
// Write line (30x15) ESI holds 0-terminated string; EDX holds color
//------------------------------------------------------------------------------
cWrite: //0051
push EAX;
A0051_WriteLoop:
//The actual work:
cmp #ESI,0;
je A0051_End;
cmp #ESI,13;
je A0051_NewLine;
mov EAX,#CharPos;
mov ES:#EAX,#ESI; //Output char
inc EAX;
mov ES:#EAX,EDX; //Output char param
inc EAX;
mov #CharPos,EAX;
inc ESI;
//Check if we need scroll
cmp #CharPos,1080; //Size of screen
jl A0051_NoScroll;
call cScrollScreen;
A0051_NoScroll:
jmp A0051_WriteLoop;
A0051_NewLine:
inc ESI;
call cNewLine;
jmp A0051_WriteLoop;
A0051_End:
mov ES:#CurPos,#CharPos;
pop EAX;
ret