mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-23 08:24:18 +00:00
80 lines
2.8 KiB
C
80 lines
2.8 KiB
C
/*
|
|
* COMDEX El-kludgo display program.
|
|
*
|
|
* disp file d
|
|
*
|
|
* Where "file" is a text file containing 24 x 80 pages, delineated by
|
|
* "`" characters. "d" is the number of seconds to delay.
|
|
*
|
|
*/
|
|
#include <stdio.h>
|
|
main(argc,argv)
|
|
WORD argc;
|
|
BYTE **argv;
|
|
{ /****************************/
|
|
BYTE buffer[2048]; /* Buffer for screen text */
|
|
REG FILE *ifp; /* Input file pointer */
|
|
REG WORD delay; /* Delay for pages */
|
|
REG BYTE c; /* Character temporary */
|
|
REG WORD i,k,l; /* Count temporary */
|
|
/****************************/
|
|
if(argc != 3) /* Check the arg count */
|
|
{ /* */
|
|
printf("Bad Argument count\n"); /* Give error */
|
|
exit(); /* Quit */
|
|
} /****************************/
|
|
/* */
|
|
if((ifp=fopen(argv[1],"r")) <= 0) /* Open Input */
|
|
{ /* */
|
|
printf("Cannot open %s\n",argv[1]); /* Give error */
|
|
exit(); /* Quit in disgust */
|
|
} /* */
|
|
/****************************/
|
|
delay=atoi(argv[2]); /* Convert delay quantity */
|
|
if(delay < 0 || delay > 10000) /* Range check */
|
|
{ /* */
|
|
printf("Illegal delay = %d\n",delay); /* Print delay nfg */
|
|
exit(); /* Quit */
|
|
} /****************************/
|
|
/* */
|
|
while(1) /* Always */
|
|
{ /* */
|
|
i = 0; /* Subscript init */
|
|
c = 1; /* Initialize char */
|
|
while(c != '`' && c > 0) /* While c in page & not EOF*/
|
|
{ /****************************/
|
|
c = getc(ifp); /* Read next character */
|
|
buffer[i++] = c; /* Put next character in buf*/
|
|
} /****************************/
|
|
i--; /* Decrement count back to 0*/
|
|
l = 0; /* Initially no lfs in buff */
|
|
for(k=0; k <= i; k++) /* Count line feeds */
|
|
if(buffer[k] == '\n') l++; /* L = # line feeds */
|
|
k = 23 - l; /* K = # line feeds desired */
|
|
write(1,buffer,i); /* Write buffer to stdout */
|
|
while(k-- > 0) /* Until loop exhausted */
|
|
write(1,"\n",1); /* Print new line */
|
|
loop(delay); /* Do the delay */
|
|
/****************************/
|
|
if(feof(ifp)) /* Check for EOF */
|
|
fseek(ifp,0L,0); /* Seek back to beginning */
|
|
} /****************************/
|
|
}
|
|
clear()
|
|
{ /****************************/
|
|
REG WORD i; /* Loop counter */
|
|
for(i=0;i<24;i++) /* loop on lines */
|
|
printf("\n"); /* Write a newline */
|
|
} /****************************/
|
|
|
|
loop(delay) /* Delay loop */
|
|
WORD delay; /* # counts */
|
|
{ /****************************/
|
|
REG WORD i; /* Inner loop count */
|
|
while(delay > 0) /****************************/
|
|
{ /* */
|
|
for (i = 0; i < 10000; i++); /* Do nothing */
|
|
delay--; /* Down count */
|
|
} /****************************/
|
|
}
|