home *** CD-ROM | disk | FTP | other *** search
/ CBM Funet Archive / cbm-funet-archive-2003.iso / cbm / programming / msdos / xa214f.lzh / xa214f / src / xau.c < prev    next >
C/C++ Source or Header  |  1998-01-26  |  2KB  |  76 lines

  1.  
  2. /*
  3.     XA65 - 6502 CROSS ASSEMBLER AND UTILITY SUITE
  4.     cOPYRIGHT (c) 1989-1998 aNDR{$e9} fACHAT (A.FACHAT@PHYSIK.TU-CHEMNITZ.DE)
  5.  
  6.     tHIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
  7.     IT UNDER THE TERMS OF THE gnu gENERAL pUBLIC lICENSE AS PUBLISHED BY
  8.     THE fREE sOFTWARE fOUNDATION; EITHER VERSION 2 OF THE lICENSE, OR
  9.     (AT YOUR OPTION) ANY LATER VERSION.
  10.  
  11.     tHIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL,
  12.     BUT without any warranty; WITHOUT EVEN THE IMPLIED WARRANTY OF
  13.     merchantability OR fitness for a particular purpose.  sEE THE
  14.     gnu gENERAL pUBLIC lICENSE FOR MORE DETAILS.
  15.  
  16.     yOU SHOULD HAVE RECEIVED A COPY OF THE gnu gENERAL pUBLIC lICENSE
  17.     ALONG WITH THIS PROGRAM; IF NOT, WRITE TO THE fREE sOFTWARE
  18.     fOUNDATION, iNC., 675 mASS aVE, cAMBRIDGE, ma 02139, usa.
  19. */
  20.  
  21.  
  22. #INCLUDE <STDIO.H>
  23. #INCLUDE <STDLIB.H>
  24.  
  25. #INCLUDE "XAU.H"
  26. #INCLUDE "XAH.H"
  27. #INCLUDE "XAL.H"
  28.  
  29. /*
  30. STATIC INT *ULIST = null;
  31. STATIC INT UN = 0;
  32. STATIC INT UM = 0;
  33. */
  34.  
  35. INT U_LABEL(INT LABNR) {$7b}
  36. INT I;
  37. /*PRINTF("U_LABEL: %D\N",LABNR);*/
  38. IF(!AFILE->UD.ULIST) {$7b}
  39.   AFILE->UD.ULIST = MALLOC(200*SIZEOF(INT));
  40.   IF(AFILE->UD.ULIST) AFILE->UD.UM=200;
  41. {$7d}
  42.  
  43. FOR(I=0;I<AFILE->UD.UN;I++) {$7b}
  44.   IF(AFILE->UD.ULIST[I] == LABNR) RETURN I;
  45. {$7d}
  46. IF(AFILE->UD.UN>=AFILE->UD.UM) {$7b}
  47.   AFILE->UD.UM *= 1.5;
  48.   AFILE->UD.ULIST = REALLOC(AFILE->UD.ULIST, AFILE->UD.UM * SIZEOF(INT));
  49.   IF(!AFILE->UD.ULIST) {$7b}
  50.     FPRINTF(STDERR, "pANIC: nO MEMORY!\N");
  51.     EXIT(1); 
  52.   {$7d}
  53. {$7d}
  54. AFILE->UD.ULIST[AFILE->UD.UN] = LABNR;
  55. RETURN AFILE->UD.UN++;
  56. {$7d}
  57.  
  58. #DEFINE FPUTW(A,FP)     FPUTC((A)&255,FP);FPUTC((A>>8)&255,FP)
  59.  
  60. VOID U_WRITE(file *FP) {$7b}
  61. INT I, D;
  62. CHAR *S;
  63. /*PRINTF("U_WRITE: UN=%D\N",AFILE->UD.UN);*/
  64. FPUTW(AFILE->UD.UN, FP);
  65.  
  66. FOR(I=0;I<AFILE->UD.UN;I++) {$7b}
  67.   L_VGET(AFILE->UD.ULIST[I], &D, &S);
  68.   FPRINTF(FP,"%S", S);
  69.   FPUTC(0,FP);
  70. {$7d}
  71. FREE(AFILE->UD.ULIST);
  72. AFILE->UD.ULIST=null;
  73. AFILE->UD.UM = AFILE->UD.UN = 0;
  74. {$7d}
  75.  
  76.