/*************************************************************************/
/* Autor      : RTA                                                      */
/* Computer   : Amiga                                                    */
/* Sprache    : Ansi C                                                   */
/* Compiler   : SAS C-Compiler Version 5.1a                              */
/* Dateiname  : ocon.c                                                   */
/* Projekt    : OnlineHelp                                               */
/* Erstellt am: 24 Aug 1991,14:11                                        */
/* Letzte Veränderung: 10 Nov 1991 von RTA                               */
/* insertline() implementiert für das Rückwärtsscrollen					    */
/*************************************************************************/

#include "online.h"

#define CSI 0x9b

void scrolldown(SHORT l)
{
   char Buffer[20];
   SHORT len=1;

   Buffer[0]=CSI;
   len+=stci_d(&Buffer[1],l);
   Buffer[len++]='T';
   Buffer[len+1]=NULL;
   print(Buffer,-1);
}
void scrollup(SHORT l)
{
   char Buffer[20];
   SHORT len=1;

   Buffer[0]=CSI;
   len+=stci_d(&Buffer[1],l);
   Buffer[len++]='S';
   Buffer[len+1]=NULL;
   print(Buffer,-1);
}
/***************************************************************************/
/* Belegt maxzeile und maxspalte mit den momentanen Werten                 */
/***************************************************************************/
void getxy(void)
{
   struct ConUnit *cu;

   cu=(struct ConUnit *)conwritemsg->io_Unit;
   maxzeile=cu->cu_YMax;
   maxspalte=cu->cu_XMax;
   fontheight=cu->cu_TxHeight;
}

/***************************************************************************/
/* Gibt einen Text auf das Console.Device aus                              */
/***************************************************************************/
void print(BYTE *text,LONG len)
{
         conwritemsg->io_Command    = CMD_WRITE;
         conwritemsg->io_Data       = (APTR)text;
         conwritemsg->io_Length     = len;
         DoIO(conwritemsg);
 }
/***************************************************************************/
/* Geht zur Position x,y                                                   */
/***************************************************************************/

void gotoxy(SHORT x,SHORT y)
{
   char Buffer[10];
   SHORT len=1;

   Buffer[0]=CSI;
   len+=stci_d(&Buffer[1],y);
   Buffer[len]=0x3b;
   len+=stci_d(&Buffer[len+1],x);
   Buffer[len++]=0x48;
   Buffer[len]=NULL;
   print(Buffer,-1);
}

/***************************************************************************/
/* Löscht das Fenster                                                      */
/***************************************************************************/
void clrscr(void)
{
   char Buffer[3];

   Buffer[0]=CSI;
   Buffer[1]=0x4A;
   Buffer[2]=NULL;
   print(Buffer,-1);
}
/*************************************************************************/
/*                          Fügt eine Zeile ein                          */
/*************************************************************************/
void insertline(void)
{
   char Buffer[3];

   Buffer[0]=CSI;
   Buffer[1]='L';
   Buffer[2]=NULL;
   print(Buffer,-1);
}
/***************************************************************************/
/* Schaltet den Cursor ab                                                  */
/***************************************************************************/
void cursoroff(void)
{
   char Buffer[5];

   Buffer[0]=CSI;
   Buffer[1]=0x30;
   Buffer[2]=0x20;
   Buffer[3]=0x70;
   Buffer[4]=NULL;
   print(Buffer,-1);
}
/***************************************************************************/
/* Schaltet den Cursor an                                                  */
/***************************************************************************/
void cursoron(void)
{
   char Buffer[4];

   Buffer[0]=CSI;
   Buffer[1]=0x20;
   Buffer[2]=0x70;
   Buffer[3]=NULL;
   print(Buffer,-1);
}
/***************************************************************************/
/* Setzt den oberen Rahmen des Bildschirms                                 */
/***************************************************************************/
void settop(SHORT l)
{
   char Buffer[20];
   SHORT len=1;

   Buffer[0]=CSI;
   len+=stci_d(&Buffer[1],l);
   Buffer[len++]='y';
   Buffer[len]=NULL;
   print(Buffer,-1);
}
/***************************************************************************/
/* Setzt den linken Rahmen des Bildschirms                                 */
/***************************************************************************/
void setleft(SHORT l)
{
   char Buffer[20];
   SHORT len=1;

   Buffer[0]=CSI;
   len+=stci_d(&Buffer[1],l);
   Buffer[len++]='x';
   Buffer[len]=NULL;
   print(Buffer,-1);
}
/***************************************************************************/
/* Setzt den rechten Rahmen des Bildschirms                                 */
/***************************************************************************/
void setright(SHORT l)
{
   char Buffer[20];
   SHORT len=1;

   Buffer[0]=CSI;
   len+=stci_d(&Buffer[1],l);
   Buffer[len++]='u';
   Buffer[len+1]=NULL;
   print(Buffer,-1);
}
/***************************************************************************/
/* Setzt den unteren Rahmen des Bildschirms                                 */
/***************************************************************************/
void setlength(SHORT l)
{
   char Buffer[20];
   SHORT len=1;

   Buffer[0]=CSI;
   len+=stci_d(&Buffer[1],l);
   Buffer[len++]='t';
   Buffer[len]=NULL;
   print(Buffer,-1);
}
