Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.naic.edu/~phil/hardware/vertex/sharemegsvertex/floppy_bckup/ocuv2_2/OCU_VER2.2/OUTRAM.ALT
Дата изменения: Tue Jun 16 17:13:08 1992
Дата индексирования: Thu Jan 15 11:44:58 2009
Кодировка:

Поисковые слова: m 80
/* ************************************************************* */
outram (iza,ize,isa,ise,k3,io,ntext,ttext) /* monilib */
/* Ausgabe zum Monitor in Zeile iz, Spalte is mit Option io */
/* Ausgegeben wird der Text ttext mit ntext Zeichen. */
/* Besser ist, wenn Optionendefinition = Speicherinhalt k3 */
/* Option io : */
/* 0 0 0 x 0 x x x */
/* | | | | */
/* +-- hell nicht clr | | +-- nur Option Bit setzen */
/* | +---- nur Option Bit clr. */
/* +------ nur Option wechseln */
/* */
/* x 0 x x x x 0 x */
/* | | | | | | */
/* | | +-- clr Bild | | +-- hell (nur Bit set) */
/* | +---- clr Zeile | | */
/* | | +------ blinken */
/* +-------- (Sonderz.) +-------- reverse */
/* ************************************************************* */

int iza,ize,isa,ise,k3,io,ntext;
/* in k3 steht die Farbe */
char *ttext;

{


int tt[200];

int m, m1, m2, i, i1, k, k1, k2;

int monza,monze,monsa,monse,monio,monanz;
char *montxt;

monza = iza;
monze = ize;
monsa = isa;
monse = ise;
monio = io;
monanz = ntext;
montxt = ttext;


k1 = 0x0000; /* Adresse k2:k1 */
// k2 = 0xB000;
k2 = 0xB800;
/*** k3 = 0x0700;***/ /* Schwarz / weiА normal */
/*** k3 = 0x0600;braun ***/
/*** k3 = 0x0400;***/ /* rot */

m1 = monio & 0x0008; /* reverse */
if (m1 != 0) k3 = 0x7000;
m1 = monio & 0x0001; /* hell */
if (m1 != 0) k3 = k3 | 0x0800;
m1 = monio & 0x0004; /* blinken */
if (m1 != 0) k3 = k3 | 0x8000;

m1 = monio & 0x0700; /* nur Option „ndern */
if (m1 == 0) goto W1;

m2 = k3 & 0xF8FF;
for (m = monza; m <= monze; m++)
for (i = monsa; i <= monse; i++)
{ i1 = monpos (m, i);
if (m1 == 0x100) monops (k1, k2, i1, m2); /* Bit set */
if (m1 == 0x200) monopc (k1, k2, i1, m2); /* Bit clr */
if (m1 == 0x400) monopt (k1, k2, i1, k3); /* change */
}
goto E;

W1: m1 = monio & 0x0010; /* Bild l”schen */
if (m1 != 0)
for (m = 0; m < 25; m++)
for (i = 0; i < 80; i++)
monsub (k1, k2, m*80+i, 0x0720);

m1 = monio & 0x0020; /* Zeile l”schen */
if (m1 != 0)
for (m = monza; m <= monze; m++)
for (i = 0; i < 80; i++)
monsub (k1, k2, (m-1)*80+i, 0x0720);

k = 0; /* Text anzeigen */
for (m = monsa; m <= monse; m = m + monanz)
for (i = 0; i < monanz; i++)
tt[k++] = (montxt[i] & 0x00FF) | k3;

m1 = monio & 0x1000; /* hell nicht l”schen */
for (m = monza; m <= monze; m++) /* Zeichenanzeige */
{ i1 = monpos (m, monsa);
for (i = 0; i < k; i++)
{ if (m1 == 0) monsub (k1, k2, i1+i, tt[i]);
if (m1 != 0) monclr (k1, k2, i1+i, tt[i]);
} }

E: return; }
/* ************************************************************* */
monsub (v, i1, tt)
/* 1 Zeichen in den Video-Buffer speichern */
/* ************************************************************* */

int v[], i1, tt;
{
v[i1] = tt;
return; }
/* ************************************************************* */
monclr (v, i1, tt)
/* 1 Zeichen in den Video-Buffer speichern */
/* Option hell wird nicht gel”scht */
/* ************************************************************* */

int v[], i1, tt;
{
v[i1] = tt | (v[i1] & 0x0800);
return; }
/* ************************************************************* */
monpos (iz,is)
/* Cursor - Position Zeile iz und Spalte is. */
/* Berechnung des Bufferoffsets i1; */
/* ************************************************************* */

int iz, is;
{
int i1;

i1 = (iz - 1) * 80 + is - 1;
return (i1); }
/* ************************************************************* */
monopt (v, i1, tt)
/* FЃr 1 Zeichen im Video-Buffer wird die Option ge„ndert */
/* ************************************************************* */

int v[], i1, tt;
{
v[i1] = (v[i1] & 0x00FF) | (tt & 0xFF00);
return; }
/* ************************************************************* */
monops (v, i1, tt)
/* FЃr 1 Zeichen im wird die Option durch Bit set ge„ndert */
/* ************************************************************* */

int v[], i1, tt;
{
v[i1] = v[i1] | tt; /* Bit set */
return; }
/* ************************************************************* */
monopc (v, i1, tt)
/* FЃr 1 Zeichen im wird die Option durch Bit clear ge„ndert */
/* ************************************************************* */

int v[], i1, tt;
{
v[i1] = v[i1] & ~tt; /* Bit clr */
return; }