home *** CD-ROM | disk | FTP | other *** search
-
- /*
- XA65 - 6502 CROSS ASSEMBLER AND UTILITY SUITE
- cOPYRIGHT (c) 1989-1998 aNDR{$e9} fACHAT (A.FACHAT@PHYSIK.TU-CHEMNITZ.DE)
-
- tHIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
- IT UNDER THE TERMS OF THE gnu gENERAL pUBLIC lICENSE AS PUBLISHED BY
- THE fREE sOFTWARE fOUNDATION; EITHER VERSION 2 OF THE lICENSE, OR
- (AT YOUR OPTION) ANY LATER VERSION.
-
- tHIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL,
- BUT without any warranty; WITHOUT EVEN THE IMPLIED WARRANTY OF
- merchantability OR fitness for a particular purpose. sEE THE
- gnu gENERAL pUBLIC lICENSE FOR MORE DETAILS.
-
- yOU SHOULD HAVE RECEIVED A COPY OF THE gnu gENERAL pUBLIC lICENSE
- ALONG WITH THIS PROGRAM; IF NOT, WRITE TO THE fREE sOFTWARE
- fOUNDATION, iNC., 675 mASS aVE, cAMBRIDGE, ma 02139, usa.
- */
-
-
- #INCLUDE <STDIO.H>
- #INCLUDE <STDLIB.H>
- #INCLUDE <STRING.H>
-
- #INCLUDE "XAH.H" /* STRUCTS */
-
- STATIC INT NINC = 0;
- STATIC CHAR **NIP = null;
-
- VOID REG_INCLUDE(CHAR *PATH) {$7b}
- CHAR **NIP2;
- IF(PATH && *PATH) {$7b}
- NIP2 = REALLOC(NIP,SIZEOF(CHAR*)*(NINC+1));
- IF(NIP2) {$7b}
- NIP = NIP2;
- NIP[NINC++] = PATH;
- {$7d} ELSE {$7b}
- FPRINTF(STDERR,"wARNING: COULDN' ALLOC MEM (REG_INCLUDE)\N");
- {$7d}
- {$7d}
- {$7d}
-
- file *XFOPEN(CONST CHAR *FN,CONST CHAR *MODE)
- {$7b}
- file *FILE;
- CHAR C,*CP,N[maxline],PATH[maxline];
- CHAR XNAME[maxline], N2[maxline];
- INT I,L=(INT)STRLEN(FN);
-
- IF(L>=maxline) {$7b}
- FPRINTF(STDERR,"FILENAME '%S' TOO LONG!\N",FN);
- RETURN null;
- {$7d}
-
- FOR(I=0;I<L+1;I++) {$7b}
- XNAME[I]=((FN[I]=='\\')?dirchar:FN[I]);
- {$7d}
-
- IF(MODE[0]=='R')
- {$7b}
- IF((FILE=FOPEN(FN,MODE))==null
- && (FILE=FOPEN(XNAME, MODE))==null) {$7b}
- FOR(I=0;(!FILE) && (I<NINC);I++) {$7b}
- STRCPY(N,NIP[I]);
- C=N[(INT)STRLEN(N)-1];
- IF(C!=dirchar) STRCAT(N,dircstring);
- STRCPY(N2,N);
- STRCAT(N2,XNAME);
- STRCAT(N,FN);
- /* PRINTF("NAME=%S,N2=%S,MODE=%S\N",N,N2,MODE); */
- FILE=FOPEN(N,MODE);
- IF(!FILE) FILE=FOPEN(N2,MODE);
- {$7d}
- IF((!FILE) && (CP=GETENV("xainput"))!=null)
- {$7b}
- STRCPY(PATH,CP);
- CP=STRTOK(PATH,",");
- WHILE(CP && !FILE)
- {$7b}
- IF(CP[0])
- {$7b}
- STRCPY(N,CP);
- C=N[(INT)STRLEN(N)-1];
- IF(C!=dirchar&&C!=':')
- STRCAT(N,dircstring);
- STRCPY(N2,N);
- STRCAT(N2,XNAME);
- STRCAT(N,FN);
- /* PRINTF("NAME=%S,N2=%S,MODE=%S\N",N,N2,MODE); */
- FILE=FOPEN(N,MODE);
- IF(!FILE) FILE=FOPEN(N2,MODE);
- {$7d}
- CP=STRTOK(null,",");
- {$7d}
- {$7d}
- {$7d}
- {$7d} ELSE
- {$7b}
- IF((CP=GETENV("xaoutput"))!=null)
- {$7b}
- STRCPY(N,CP);
- IF(N[0])
- {$7b}
- C=N[(INT)STRLEN(N)-1];
- IF(C!=dirchar&&C!=':')
- STRCAT(N,dircstring);
- {$7d}
- CP=STRRCHR(FN,dirchar);
- IF(!CP)
- {$7b}
- CP=STRRCHR(FN,':');
- IF(!CP)
- CP=(CHAR*)FN;
- ELSE
- CP++;
- {$7d} ELSE
- CP++;
- STRCAT(N,CP);
- FILE=FOPEN(N,MODE);
- {$7d} ELSE
- FILE=FOPEN(FN,MODE);
- {$7d}
- IF(FILE)
- SETVBUF(FILE,null,_iofbf,bufsize);
-
- RETURN(FILE);
- {$7d}
-
- #IF 0
-
- STATIC CHAR *M_BASE;
- STATIC CHAR *M_ACT;
- STATIC CHAR *M_END;
-
- INT M_INIT(VOID)
- {$7b}
- INT ER=e_nomem;
-
- M_BASE=M_END=M_ACT=0l;
- /*
- FPRINTF(STDERR, "memlen=%LD\N",memlen);
- GETCHAR();
- */
- /*
- IF ((M_BASE=(CHAR*)MALLOC(memlen))!=null)
- {$7b}
- M_END =M_BASE+memlen;
- M_ACT =(CHAR*)(((LONG)M_BASE+3)&0XFFFFFFFCL);
- ER=e_ok;
- {$7d}
- ELSE M_BASE=null;
- */
- ER=e_ok;
-
- RETURN(ER);
- {$7d}
-
- VOID M_EXIT(VOID)
- {$7b}
- /*
- FREE(M_BASE);
- */
- {$7d}
-
- INT M_ALLOC(LONG N, CHAR **ADR)
- {$7b}
- INT ER=e_nomem;
-
- IF((*ADR=CALLOC(N,1))) {$7b}
- ER=e_ok;
- {$7d}
- /*
- IF(M_ACT+N<M_END)
- {$7b}
- *ADR=M_ACT;
- M_ACT=M_ACT+N;
- ER=e_ok;
- {$7d}
- */
- /*
- FPRINTF(STDERR, "M_ALLOC N=%LD ADR=%LX\N",N,*ADR);
- GETCHAR();
- */
- RETURN(ER);
- {$7d}
-
- #ENDIF
-