home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
enterprs
/
c128
/
util
/
128c.arc
/
LIB.C
< prev
next >
Wrap
Text File
|
1993-03-04
|
5KB
|
235 lines
/*
├REATE AND MANTAIN LIBRARY FILES.
╠IBRARY FILE NAMES MUST END
WITH ".L"
*/
#INCLUDE <STDIO.H>
#DEFINE ═┴╪╠╔┬ 200
#DEFINE ═┴╪╔─ 20
#DEFINE ═┴╪╠╔╬┼ 81
CHAR IDS[═┴╪╠╔┬][═┴╪╔─], FILES[═┴╪╠╔┬][═┴╪╔─];
CHAR SIZE;
CHAR INBUF[═┴╪╠╔╬┼];
MAIN()
█
SIZE = 0;
FOR (;;) █
CLRSCRN();
PRINTF ("\N\N\N\N\N ╠OAD LIBRARY\N");
PRINTF (" ╙AVE LIBRARY\N");
PRINTF (" ├LEAR LIBRARY\N");
PRINTF (" ─ISPLAY LIBRARY\N");
PRINTF (" ┴DD MODULES TO LIBRARY\N");
PRINTF (" ╥EMOVE MODULES FROM LIBRARY\N");
PRINTF (" ╤UIT\N\N ┼NTER ├HOICE: ");
GETS (INBUF);
CLRSCRN();
SWITCH (*INBUF) █
CASE 'L':
CASE '╠':
LOAD();
BREAK;
CASE 'S':
CASE '╙':
SAVE();
BREAK;
CASE 'D':
CASE '─':
DISPLAY();
BREAK;
CASE 'C':
CASE '├':
SIZE = 0;
BREAK;
CASE 'A':
CASE '┴':
ADD();
BREAK;
CASE 'R':
CASE '╥':
REMOVE();
BREAK;
CASE 'Q':
CASE '╤':
PUTCHAR ('\N');
EXIT();
▌
▌
PUTCHAR ('\N');
▌
CLRSCRN()
█
PUTCHAR ('ô');
▌
╞╔╠┼ OPENLIB (MODE)
CHAR *MODE;
█
╞╔╠┼ F;
PRINTF ("\N\NLIBRARY FILE NAME: ");
GETS (INBUF);
F = FOPEN (INBUF, MODE);
IF (F == ╬╒╠╠ ▀▀ FERROR()) █
F = ╬╒╠╠;
PRINTF ("\NCAN'T OPEN %S\N", INBUF);
WAIT();
▌
RETURN F;
▌
LOAD()
█
╞╔╠┼ F;
UNSIGNED I;
IF ((F = OPENLIB ("R")) == ╬╒╠╠)
RETURN;
SIZE = GETC(F);
FOR (I = 0; I < SIZE; I++) █
GETID (IDS[I], F);
GETID (FILES[I], F);
▌
FCLOSE(F);
▌
GETID (S, F)
CHAR *S;
╞╔╠┼ F;
█
WHILE (*S++ = GETC(F))
;
▌
SAVE()
█
╞╔╠┼ F;
UNSIGNED I;
IF ((F = OPENLIB ("W")) == ╬╒╠╠)
RETURN;
PUTC (SIZE, F);
FOR (I = 0; I < SIZE; I++)
FPRINTF (F, "%S%C%S%C", IDS[I], 0, FILES[I], 0);
FCLOSE(F);
▌
WAIT()
█
PRINTF ("\NHIT ╥┼╘╒╥╬ TO CONTINUE");
WHILE (GETCH() != '\N')
;
▌
DISPLAY()
█
UNSIGNED I, LINE;
LINE = 1;
FOR (I = 0; I < SIZE; I++) █
IF (LINE == 1) █
CLRSCRN();
PRINTF ("%-20S%-19S\N\N", "╔─┼╬╘╔╞╔┼╥", "╞╔╠┼");
LINE = 3;
▌
PRINTF ("%-20S%-19S\N", IDS[I], FILES[I]);
LINE++;
IF (LINE == 24) █
WAIT();
LINE = 1;
▌
▌
WAIT();
▌
GETCH()
█
CHAR A, X, Y;
DO
SYS (0XFFE4, &A, &X, &Y);
WHILE (A == 0);
RETURN A;
▌
ADD()
█
UNSIGNED N;
╞╔╠┼ F;
PRINTF ("\NHIT ╥┼╘╒╥╬ WHEN DONE\N\N");
FOR (;;) █
PRINTF ("OBJECT FILE NAME: ");
GETS (INBUF);
IF (!ISALPHA(*INBUF))
RETURN;
F = FOPEN (INBUF, "R");
IF (F == ╬╒╠╠ ▀▀ FERROR())
PRINTF ("CAN'T OPEN %S\N", INBUF);
ELSE █
N = GETW(F);
WHILE (N--)
GETC(F);
N = GETW(F);
WHILE (N--)
GETW(F);
N = GETW(F);
WHILE (N-- && SIZE < ═┴╪╠╔┬) █
GETID (IDS[SIZE], F);
IF (ISALPHA(*IDS[SIZE]) && ISPRINT(IDS[SIZE][1]))
STRCPY (FILES[SIZE++], INBUF);
GETC(F);
GETW(F);
▌
FCLOSE (F);
IF (SIZE == ═┴╪╠╔┬) █
PRINTF ("\NLIBRARY IS FULL\N");
WAIT();
RETURN;
▌
▌
▌
▌
REMOVE()
█
UNSIGNED I, J;
PRINTF ("\NHIT ╥┼╘╒╥╬ WHEN DONE\N");
FOR (;;) █
PRINTF ("\NFILE TO DELETE: ");
GETS (INBUF);
IF (!ISALPHA(*INBUF))
RETURN;
FOR (I = 0; I < SIZE && STRCMP(FILES[I], INBUF) != 0; I++)
;
IF (I == SIZE)
PRINTF ("FILE NOT FOUND\N");
ELSE █
WHILE (I < SIZE && STRCMP (FILES[I], INBUF) == 0) █
FOR (J = I; J+1 < SIZE; J++) █
STRCPY (FILES[J], FILES[J+1]);
STRCPY (IDS[J], IDS[J+1]);
▌
SIZE--;
▌
▌
▌
▌