home *** CD-ROM | disk | FTP | other *** search
- #INCLUDE <STDIO.H>
- /*
- CHANNEL 15. POINTER ROUTINES.
- RGETS GET A STRING FROM REL FILE.
- */
- #DEFINE PEEK(X) *((CHAR *)X)
- #DEFINE POKE(X,Y) *((CHAR *)X)=Y
-
- MAIN()/* DRIVER */
- █
- UNSIGNED I, J, FIELDS;
- INT ERR;
- INT DEV;
- CHAR BUFF[255];
- CHAR HI;
- CHAR LO;
- INT FILE=5;
-
- DEV=OPEN(9,8,15,"U9");
- /*OPEN COMMAND CHANNEL*/
- IF(DEV==╬╒╠╠)
- ABORT();
-
- PRINTF("┼NTER NAME OF RELATIVE FILE >");
- GETS(BUFF);
- PRINTF("┼NTER NUMBER OF FIELDS PER RECORD >");
- SCANF("%D",&FIELDS);
-
- DEV=OPEN(FILE,8,5,BUFF);
- /* OPEN REL FILE */
- IF(DEV==╬╒╠╠)
- ABORT();
-
- FOR(;;)
- █
- PRINTF("╥ECORD ╬UMBER TO READ. 0=EXIT >");
- SCANF("%D",&I);
- IF(I==0)
- BREAK;
-
- ERR=POINT(9,I,1);
-
- IF(ERR)
- PUTS("┼╥╥╧╥ - RECORD OUTSIDE RANGE.");
-
- ELSE
- FOR(J=1; J<=FIELDS; J++)
- █
- ERR=RGETS(BUFF,255,5);
- IF(ERR▀▀FERROR())
- BREAK;
- PUTS(BUFF);
- ▌
-
- PUTS("─ISK ERROR.");
-
- ▌
-
- ABORT();
- ▌
-
-
-
- INT RGETS(STR, MAX ,FILE)
- /*
- ╟ET STRING FROM REL FILE. ╥EADS PAST
- ┼╧╞ UNLIKE FGETS GETC FGETC.
- */
- CHAR *STR; /*STRING TO FILL*/
- UNSIGNED MAX; /*MAXIMUM CHARACTERS*/
- UNSIGNED FILE;/*FILE NUMBER*/
- █
- CHAR A, Y; /*6510*/
- CHAR X = FILE; /*REGISTERS*/
- UNSIGNED COUNT;
-
- SYS(0XFFC6, &A, &X, &Y);/* CHKIN */
-
- IF((PEEK(783)&1)==1) /*KERNAL ERROR*/
- RETURN(1); /*RETURN ON ERROR*/
-
- FOR(COUNT=0; COUNT<MAX; COUNT++)
- █
- SYS(0XFFE4, &A, &X, &Y);/* GETIN */
- IF(A == '\N' ▀▀ A == '\0')
- BREAK;
- STR[COUNT] = A;
- ▌
-
- STR[COUNT]='\0';
-
- SYS(0XF333); /* CLRCHN */
-
- RETURN(0);
- ▌
-
-
- INT POINT(FILE,REC,BYTE)
- /* POINT TO RECORD WITHIN FILE */
- INT FILE; /*FILE NUMBER*/
- UNSIGNED REC; /*RECORD NUMBER*/
- CHAR BYTE;/*BYTE NUMBER WITHIN RECORD*/
- █
- STATIC CHAR POINTER[]=█'P',101,0,0,0,'\0'▐ER N¿HI,LO;
- INT ERROR;
-
- HI=REC/256;
- LO=REC-(HI*256);
-
- POINTER[2]=LO;
- POINTER[3]=HI;
- POINTER[4]=BYTE;
-
- FPUTS(POINTER,FILE);/*POINT TWICE*/
- ERROR=FERROR(); /*GET STATUS EACH TIME*/
- FPUTS(POINTER,FILE);/*1541 INSURANCE*/
- ERROR=FERROR();
-
- RETURN(ERROR);
- ▌
-
-