home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
osborne
/
rain.c
< prev
next >
Wrap
Text File
|
1994-07-13
|
3KB
|
152 lines
#include "a:bdscio.h"
/* TERMINAL RAIN */
/* Adapted from Berkeley's "rain" for the Osbourne 1 */
/* By Dan Sunday. 4-1-82 */
main(argc,argv)
char *argv[];
{
int x, y, j, t;
int xpos[5], ypos[5];
int xloc, yloc;
nrand(-1,0x74b5,0xc3b6,0x4dd3);
puts(CLEARS); /* clear the screen */
cursor(26,26); /* hide the cursor */
for (j=5;--j>=0;) {
xpos[j] = (nrand(1) & 0x1f) + (nrand(1) & 0xf) + 2;
ypos[j] = (nrand(1) & 0xf) + (nrand(1) & 3) + 2;
}
for (j=0;;) {
xloc = x = (nrand(1) & 0x1f) + (nrand(1) & 0xf) + 2;
yloc = y = (nrand(1) & 0xf) + (nrand(1) & 3) + 2;
pushch(yloc,xloc,'.');
yloc = ypos[j];
xloc = xpos[j];
pushch(yloc,xloc,'o');
if (j==0) j=4;
else --j;
yloc = ypos[j];
xloc = xpos[j];
pushch(yloc,xloc,'O');
if (j==0) j=4;
else --j;
yloc = ypos[j]-1;
xloc = xpos[j];
pushch(yloc,xloc,'-');
++yloc;
--xloc;
pushstr(yloc,xloc,"|.|");
++yloc;
++xloc;
pushch(yloc,xloc,'-');
if (j==0) j=4;
else --j;
yloc = ypos[j]-2;
xloc = xpos[j];
pushch(yloc,xloc,'-');
++yloc;
--xloc;
pushstr(yloc,xloc,"/ \\");
++yloc;
--xloc;
pushstr(yloc,xloc,"| O |");
++yloc;
++xloc;
pushstr(yloc,xloc,"\\ /");
++yloc;
++xloc;
pushch(yloc,xloc,'-');
if (j==0) j=4;
else --j;
yloc = ypos[j]-2;
xloc = xpos[j];
pushch(yloc,xloc,' ');
++yloc;
--xloc;
pushstr(yloc,xloc," ");
++yloc;
--xloc;
pushstr(yloc,xloc," ");
++yloc;
++xloc;
pushstr(yloc,xloc," ");
++yloc;
++xloc;
pushch(yloc,xloc,' ');
xpos[j]=x;
ypos[j]=y;
t = 2000;
while (t--)
;
if (isakey()) {
if (fetch() == (CTRL 'c')) {
puts(CLEARS);
exit(0);
}
}
}
}
cursor (y,x) /* move cursor to (y,x) */
{
puts("\033=");
putch (y+' ');
putch (x+' ');
}
isakey()
{ return bios(2);
}
fetch()
{ return bios(3);
}
pushch (y,x,c)
char c;
{
char *p;
p = (y << 7) + x + 0xf000;
*p = c;
}
pushstr (y,x,s)
char *s;
{
char *p;
p = (y << 7) + x + 0xf000;
while (*s)
*p++ = *s++;
}