home *** CD-ROM | disk | FTP | other *** search
- /*
- ├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--;
- ▌
- ▌
- ▌
- ▌
-
-