Your message dated Thu, 11 Jun 2026 10:34:49 +0000
with message-id <[email protected]>
and subject line Bug#966177: fixed in xa 2.4.1-0.2
has caused the Debian Bug report #966177,
regarding xa: diff for NMU version 2.3.11-0.1
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
966177: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=966177
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: xa
Version: 2.3.8-2
Severity: normal
Tags: patch  pending

Dear maintainer,

I've prepared an NMU for xa (versioned as 2.3.11-0.1) and
uploaded it to the archive.

Regards,

Stephen
diff -Nru xa-2.3.8/ChangeLog xa-2.3.11/ChangeLog
--- xa-2.3.8/ChangeLog	2017-06-30 07:01:10.000000000 +0200
+++ xa-2.3.11/ChangeLog	2020-05-03 23:06:29.000000000 +0200
@@ -324,3 +324,42 @@
   * Testsuite expanded.
 
  -- Cameron Kaiser <[email protected]> 29 June 2017
+
+xa-2.3.9
+
+  * Fixed issue on Windows and DOS systems with the .bin pseudo-op (thanks
+    Bago Zonde).
+  * Documentation updated.
+  * Testsuite expanded.
+  * For the thirty year anniversary of xa, we're changing the name to xxxa.
+    (Just kidding.)
+
+ -- Cameron Kaiser <[email protected]> 31 January 2019
+
+xa-2.3.10
+
+  * Three fixes, all from Andre:
+    - Don't crash if a useless segment is referenced outside of relocating
+      mode (thanks Laszlo Barath for the report).
+    - Don't substitute within strings, for better cpp compatibility (thanks
+      Glenn Holmer for the report). I added the -S option for backwards
+      compatibility for the old behaviour; it will be removed in 2.4 and later.
+    - Fix underflow issue if a variable is late-bound (with -L) when that
+      variable is used in computations with negative offsets.
+  * Deprecated options will be removed in 2.4 and everything is warned.
+  * Documentation updated.
+  * Testsuite expanded.
+
+ -- Cameron Kaiser <[email protected]> 9 November 2019
+
+xa-2.3.11
+
+  * Compilation fix for gcc 10 (thanks Dan Horak).
+  * Allow pointer arithmetic in relocating mode within the same segment, since
+    the result is segmentless (thanks Andre for the report).
+  * .dsb with negative quantities shouldn't work (thanks Andre for the report).
+  * Stop a divide-by-zero floating point exception (thanks Frederic Cambus).
+  * Testsuite expanded.
+
+ -- Cameron Kaiser <[email protected]> 4 May 2020
+
diff -Nru xa-2.3.8/debian/changelog xa-2.3.11/debian/changelog
--- xa-2.3.8/debian/changelog	2020-07-24 12:48:44.000000000 +0200
+++ xa-2.3.11/debian/changelog	2020-07-24 12:48:44.000000000 +0200
@@ -1,3 +1,14 @@
+xa (2.3.11-0.1) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * New upstream release, which builds with GCC 10 (Closes: #957966).
+  * Override the build flags (the 2.3.11 build sets them unconditionnally,
+    unlike the 2.3.8 build).
+  * Set the linker so that the package can be cross-built; thanks to
+    Helmut Grohne for the patch (Closes: #948176).
+
+ -- Stephen Kitt <[email protected]>  Fri, 24 Jul 2020 12:46:11 +0200
+
 xa (2.3.8-2) unstable; urgency=low
 
   * debian/control:
diff -Nru xa-2.3.8/debian/rules xa-2.3.11/debian/rules
--- xa-2.3.8/debian/rules	2020-07-24 12:48:44.000000000 +0200
+++ xa-2.3.11/debian/rules	2020-07-24 12:48:44.000000000 +0200
@@ -1,5 +1,11 @@
 #!/usr/bin/make -f
 
+include /usr/share/dpkg/buildflags.mk
+include /usr/share/dpkg/buildtools.mk
+
+override_dh_auto_build:
+	dh_auto_build -- CC='$(CC)' LD='$$(CC)' CFLAGS='$(CPPFLAGS) $(CFLAGS)' LDFLAGS='$(LDFLAGS)'
+
 override_dh_auto_install:
 	make install DESTDIR=$(CURDIR)/debian/xa65/usr
 
diff -Nru xa-2.3.8/Makefile xa-2.3.11/Makefile
--- xa-2.3.8/Makefile	2020-07-24 12:48:44.000000000 +0200
+++ xa-2.3.11/Makefile	2020-05-03 00:00:31.000000000 +0200
@@ -4,8 +4,8 @@
 LD = gcc
 # for testing. not to be used; build failures in misc/.
 #CFLAGS = -O2 -W -Wall -pedantic -ansi
-CFLAGS += -O2
-LDFLAGS += -lc
+CFLAGS = -O2
+LDFLAGS = -lc
 
 # for DOS?
 # CC = gcc-go32
@@ -32,13 +32,13 @@
 	rm -f xa
 
 xa:
-	(cd src && LD=${LD} CC="${CC} ${CPPFLAGS} ${CFLAGS} ${LDFLAGS}" ${MAKE})
+	(cd src && LD=${LD} CC="${CC} ${CFLAGS}" ${MAKE})
 
 load:	
-	(cd loader && CC="${CC} ${CPPFLAGS} ${CFLAGS} ${LDFLAGS}" ${MAKE})
+	(cd loader && CC="${CC} ${CFLAGS}" ${MAKE})
 
 uncpk:
-	(cd misc && CC="${CC} ${CPPFLAGS} ${CFLAGS} ${LDFLAGS}" ${MAKE})
+	(cd misc && CC="${CC} ${CFLAGS}" ${MAKE})
 
 dos: clean
 	(cd src && LD=gcc-go32 CC=gcc-go32 CFLAGS="-W -Wall -pedantic" ${MAKE})
@@ -63,8 +63,7 @@
 	#$(MKDIR) $(DOCDIR)/xa65
 
 dist: clean
-	#cd .. ; tar cvf xa-2.3.8A.tar xa-2.3.8 ; gzip xa-2.3.8A.tar
-	cd .. ; tar cvf xa-2.3.8.tar xa-2.3.8 ; gzip xa-2.3.8.tar
+	cd .. ; tar cvf xa-2.3.11.tar xa-2.3.11 ; gzip xa-2.3.11.tar
 
 test: xa uncpk
 	cd tests && ./harness -make="$(MAKE)" -cc="$(CC)" -cflags="$(CFLAGS)"
diff -Nru xa-2.3.8/man/xa.1 xa-2.3.11/man/xa.1
--- xa-2.3.8/man/xa.1	2017-06-30 07:01:06.000000000 +0200
+++ xa-2.3.11/man/xa.1	2019-11-09 20:08:02.000000000 +0100
@@ -1,4 +1,4 @@
-.TH XA "1" "29 June 2017"
+.TH XA "1" "9 November 2019"
 
 .SH NAME
 xa \- 6502/R65C02/65816 cross-assembler
@@ -10,8 +10,7 @@
 .SH DESCRIPTION
 .B xa
 is a multi-pass cross-assembler for the 8-bit processors in the 6502 series
-(such as
-the 6502, 65C02, 6504, 6507,
+(such as the 6502, 65C02, 6504, 6507,
 6510, 7501, 8500, 8501 and 8502), the Rockwell R65C02, and
 the 16-bit 65816 processor. For a description of syntax, see
 .B ASSEMBLER SYNTAX
@@ -22,16 +21,8 @@
 .B \-v
 Verbose output.
 .TP
-.B \-x
-Use old filename behaviour (overrides
-.BR \-o ,
-.B \-e
-and
-.BR \-l ).
-This option is now deprecated.
-.TP
 .B \-C
-No CMOS opcodes (default is to allow R65C02 opcodes)
+No CMOS opcodes (default is to allow R65C02 opcodes).
 .TP
 .B \-W
 No 65816 opcodes (default).
@@ -134,6 +125,23 @@
 .TP
 .B \-\-version
 Show version of program.
+.LP
+The following options are
+.BR deprecated
+and will be removed in 2.4 and later versions:
+.TP
+.B \-x
+Use old filename behaviour (overrides
+.BR \-o ,
+.B \-e
+and
+.BR \-l ).
+.TP
+.B \-S
+Allow preprocessor substitution within strings (this is now disallowed
+for better
+.BR cpp (1)
+compatibility).
 
 .SH ASSEMBLER SYNTAX
 
@@ -228,6 +236,21 @@
 .B \-L
 command line option.
 .LP
+Redefining a label does not change previously assembled code that used the
+earlier value. Therefore, because the program counter is a special type of
+label, changing the program counter to a lower value does not reorder code
+assembled previously and changing it to a higher value does not issue
+padding to put subsequent code at the new location. This is intentional
+behaviour to facilitate generating relocatable and position-independent code,
+but can differ from other assemblers which use this behaviour for
+linking. However, it is possible to use pseudo-ops to simulate other
+assemblers' behaviour and use
+.B xa
+as a linker; see
+.B PSEUDO-OPS
+and
+.BR LINKING .
+.LP
 For those instructions where the accumulator is the implied argument (such as
 .B asl 
 and
@@ -238,7 +261,7 @@
 on R65C02; etc.), the idiom of explicitly specifying the accumulator with
 .B a
 is unnecessary as the proper form will be selected if there is no explicit
-argument. In fact, for consistency with label handing, if there is a label
+argument. In fact, for consistency with label handling, if there is a label
 named
 .BR a ,
 this will actually generate code referencing that label as a memory
@@ -464,7 +487,9 @@
 will be inserted into the assembled object. For example,
 .B .dsb 5,$10
 will insert five bytes, each being 16 decimal, into the object. The arguments
-may be expressions.
+may be expressions. See
+.B LINKING
+for how to use this pseudo-op to link multiple objects.
 .TP
 .B .bin offset,length,"filename"
 Inlines a binary file without further interpretation specified by
@@ -479,7 +504,9 @@
 .B length
 is zero, then the length of
 .BR filename ,
-minus the offset, is used instead. The arguments may be expressions.
+minus the offset, is used instead. The arguments may be expressions. See
+.B LINKING
+for how to use this pseudo-op to link multiple objects.
 .TP
 .B \&.(
 Opens a new block for scoping. Within a block, all labels defined are local to
@@ -757,6 +784,107 @@
 .br
 .B #endif
 
+.SH LINKING
+
+.B xa
+is oriented towards generating sequential binaries. Code is strictly
+emitted in order even if the program counter is set to a lower location
+than previously assembled code, and padding is not automatically emitted
+if the program counter is set to a higher location. Changing the program
+location only changes new labels for code that is subsequently emitted;
+previous emitted code remains unchanged. Fortunately, for many object files
+these conventions have no effect on their generation.
+.LP
+However, some applications may require generating an object file built
+from several previously generated components, and/or submodules which
+may need to be present at specific memory locations. With a minor amount of
+additional specification, it is possible to use
+.B xa
+for this purpose as well.
+.LP
+The first means of doing so uses the o65 format to make relocatable objects
+that in turn can be linked by
+.BR ldo65 (1)
+(q.v.).
+.LP
+The second means involves either assembled code, or insertion of
+previously built object or data files with
+.BR .bin ,
+using
+.B .dsb
+pseudo-ops with computed expression arguments to insert any necessary padding
+between them, in the sequential order they are to reside in memory. Consider
+this example:
+.LP
+
+.br
+    .word $1000
+.br
+    * = $1000
+.br
+
+.br
+    ; this is your code at $1000
+.br
+part1       rts
+.br
+    ; this label marks the end of code
+.br
+endofpart1
+.br
+
+.br
+    ; DON'T PUT A NEW .word HERE!
+.br
+    * = $2000
+.br
+    .dsb (*-endofpart1), 0
+.br
+    ; yes, set it again
+.br
+    * = $2000
+.br
+
+.br
+    ; this is your code at $2000
+.br
+part2       rts
+.br
+.LP
+This example, written for Commodore microcomputers using a 16-bit starting
+address, has two "modules" in it: one block of code at $1000 (4096),
+indicated by the code between labels
+.B part1
+and
+.BR endofpart1 ,
+and a second block at $2000 (8192) starting at label
+.BR part2 .
+.LP
+The padding is computed by the
+.B .dsb
+pseudo-op between the two modules. Note that the program counter is set
+to the new address and then a computed expression inserts the proper number
+of fill bytes from the end of the assembled code in part 1 up to the new
+program counter address. Since this itself advances the program counter,
+the program counter is reset again, and assembly continues.
+.LP
+When the object this source file generates is loaded, there will be an
+.B rts
+instruction at address 4096 and another at address 8192, with null bytes
+between them.
+.LP
+Should one of these areas need to contain a pre-built file, instead of
+assembly code, simply use a
+.B .bin
+pseudo-op to load whatever portions of the file are required into the
+output. The computation of addresses and number of necessary fill bytes
+is done in the same fashion.
+.LP
+Although this example used the program counter itself to compute the
+difference between addresses, you can use any label for this purpose,
+keeping in mind that only the program counter determines where relative
+addresses within assembled code are resolved.
+
 .SH ENVIRONMENT
 
 .B xa
@@ -827,6 +955,20 @@
 prefix. Otherwise, the assembler will attempt to optimize to 16 bits, which
 may be undesirable. 
 
+.SH "IMMINENT DEPRECATION"
+The following options and modes will be
+.B REMOVED
+in 2.4 and later versions of
+.BR xa :
+.LP
+.B \-x
+.LP
+.B \-S
+.LP
+the original
+.B mvn $xxxx
+syntax
+
 .SH "SEE ALSO"
 .BR file65 (1),
 .BR ldo65 (1),
@@ -840,8 +982,11 @@
 Andre Fachat <[email protected]>
 and Cameron Kaiser <[email protected]>.
 Original xa package (C)1989-1997 Andre Fachat. Additional changes
-(C)1989-2017 Andre Fachat, Jolse Maginnis, David Weinehall,
+(C)1989-2019 Andre Fachat, Jolse Maginnis, David Weinehall,
 Cameron Kaiser. The official maintainer is Cameron Kaiser.
 
+.SH 30 YEARS OF XA
+Yay us?
+
 .SH WEBSITE
 http://www.floodgap.com/retrotech/xa/
diff -Nru xa-2.3.8/README.1st xa-2.3.11/README.1st
--- xa-2.3.8/README.1st	2017-06-30 06:22:22.000000000 +0200
+++ xa-2.3.11/README.1st	2019-11-09 02:20:26.000000000 +0100
@@ -3,7 +3,7 @@
 under most ANSI C compilers. It is distributed under the GNU Public License
 (see COPYING).
 
-The current version is 2.3.8, a bug fix to the long-lived 2.3.0, itself with
+The current version is 2.3.10, a bug fix to the long-lived 2.3.0, itself with
 compatibility improvements and new man-based documentation. It also completed
 the merge of the 65816 and 6502/R65C02 versions and thus the current xa can
 generate code for all targets now.
diff -Nru xa-2.3.8/src/Makefile xa-2.3.11/src/Makefile
--- xa-2.3.8/src/Makefile	2020-07-24 12:48:44.000000000 +0200
+++ xa-2.3.11/src/Makefile	2019-11-09 01:11:32.000000000 +0100
@@ -8,7 +8,7 @@
 all: xa
 
 xa: ${OBJ}
-	${LD} ${CPPFLAGS} ${CFLAGS} -o ../xa ${OBJ} ${LDFLAGS}
+	${LD} -o ../xa ${OBJ} ${LDFLAGS}
 
 clean: 
 	rm -f *.o *.o65
diff -Nru xa-2.3.8/src/xaa.c xa-2.3.11/src/xaa.c
--- xa-2.3.8/src/xaa.c	2008-06-15 07:15:34.000000000 +0200
+++ xa-2.3.11/src/xaa.c	2020-05-03 23:00:05.000000000 +0200
@@ -98,7 +98,9 @@
 
      afl = 0;
 
-/*printf("ag_term(%02x %02x %02x %02x %02x %02x\n",s[0],s[1],s[2],s[3],s[4],s[5]);*/
+/*
+printf("ag_term(%02x %02x %02x %02x %02x %02x\n",s[0],s[1],s[2],s[3],s[4],s[5]);
+*/
      while(s[pp]=='-')
      {
           pp++;
@@ -119,8 +121,10 @@
      if(s[pp]==T_LABEL)
      {
           er=l_get(cval(s+pp+1),v, &afl);
-/* printf("label: er=%d, seg=%d, afl=%d, nolink=%d, fundef=%d\n", 
-			er, segment, afl, nolink, fundef); */
+/*
+ printf("label: er=%d, seg=%d, afl=%d, nolink=%d, fundef=%d\n", 
+			er, segment, afl, nolink, fundef);
+*/
 	  if(er==E_NODEF && segment != SEG_ABS && fundef ) {
 	    if( nolink || (afl==SEG_UNDEF)) {
 	      er = E_OK;
@@ -136,7 +140,9 @@
      {
           *v=lval(s+pp+1);
           pp+=4;
-/* printf("value: v=%04x\n",*v); */
+/*
+printf("value: v=%04x\n",*v);
+*/
      }
      else
      if(s[pp]==T_POINTER)
@@ -144,7 +150,9 @@
 	  afl = s[pp+1];
           *v=cval(s+pp+2);
           pp+=4;
-/* printf("pointer: v=%04x, afl=%04x\n",*v,afl); */
+/*
+printf("pointer: v=%04x, afl=%04x\n",*v,afl);
+*/
      }
      else
      if(s[pp]=='*')
@@ -178,9 +186,10 @@
 		      if((afl && !*nafl) && o==2) {
 			afl=(afl | *nafl);  /* substract constant from pointer */
 		      } else {
-			if(segment!=SEG_ABS) { 
+                        /* allow math in the same segment */
+			if(segment!=SEG_ABS && segment != afl) { 
 			  if(!dsb_len) {
-			    er=E_ILLPOINTER;
+			    er=E_ILLSEGMENT;
 			  }
 			}
 			afl=0;
@@ -224,7 +233,7 @@
           *w *=w2;
           break;
      case 4:
-          if (w!=0)
+          if (w2!=0)
                *w /=w2;
           else
                er =E_DIV;
diff -Nru xa-2.3.8/src/xa.c xa-2.3.11/src/xa.c
--- xa-2.3.8/src/xa.c	2017-06-30 06:24:04.000000000 +0200
+++ xa-2.3.11/src/xa.c	2020-05-06 23:39:58.000000000 +0200
@@ -55,13 +55,14 @@
 #define ANZWARN		13
 
 #define programname	"xa"
-#define progversion	"v2.3.8"
+#define progversion	"v2.3.11"
 #define authors		"Written by Andre Fachat, Jolse Maginnis, David Weinehall and Cameron Kaiser"
-#define copyright	"Copyright (C) 1989-2017 Andre Fachat, Jolse Maginnis, David Weinehall\nand Cameron Kaiser."
+#define copyright	"Copyright (C) 1989-2020 Andre Fachat, Jolse Maginnis, David Weinehall\nand Cameron Kaiser."
 
 /* exported globals */
 int ncmos, cmosfl, w65816, n65816;
 int masm = 0;
+int ppinstr = 0;
 int nolink = 0;
 int romable = 0;
 int romaddr = 0;
@@ -210,6 +211,10 @@
 	  case 'M':
 		masm = 1;	/* MASM compatibility mode */
 		break;
+          case 'S':
+                ppinstr = 1;    /* preprocessor substitution in strings ok */
+                fprintf(stderr, "Warning: -S is deprecated and will be removed in 2.4+!\n");
+		break;
 	  case 'O':		/* output charset */
 		{
 		  char *name = NULL;
@@ -267,7 +272,7 @@
 		break;
 	  case 'x':		/* old filename behaviour */
 		oldfile = 1;
-		fprintf(stderr, "Warning: -x is now deprecated and may disappear in future versions!\n");
+		fprintf(stderr, "Warning: -x is now deprecated and will be removed in 2.4+!\n");
 		break;
 	  case 'I':
 		if(argv[i][2]==0) {
@@ -392,6 +397,8 @@
 		 r_mode(RMODE_RELOC);
 		 segment = SEG_TEXT;
 	       } else {
+		 /* prime old_segment in r_mode with SEG_TEXT */
+	         segment = SEG_ABS;
 		 r_mode(RMODE_ABS);
 	       }
 
@@ -460,11 +467,13 @@
 
 		    seg_pass2();
 
-	            if(!relmode) {
-	              r_mode(RMODE_ABS);
+	     	    if(relmode) {
+		 	r_mode(RMODE_RELOC);
+		 	segment = SEG_TEXT;
 	            } else {
-	              r_mode(RMODE_RELOC);
-		      segment = SEG_TEXT;
+		 	/* prime old_segment in r_mode with SEG_TEXT */
+	         	segment = SEG_ABS;
+		 	r_mode(RMODE_ABS);
 	            }
                     er=pass2();
                } 
@@ -716,7 +725,7 @@
 			fprintf(stderr, "fnam = %s\n", binfnam);
 */
 			/* primitive insurance */
-			if (!(foo = fopen(binfnam, "r"))) {
+			if (!(foo = fopen(binfnam, "rb"))) {
 				errout(E_FNF);
 				ner++;
 			} else {
@@ -825,8 +834,6 @@
             programname);
 	fprintf(fp,
 	    " -v           verbose output\n"
-	    " -x           old filename behaviour (overrides `-o', `-e', `-l')\n"
-	    "              This is deprecated and may disappear in future versions!\n"
             " -C           no CMOS-opcodes\n"
             " -W           no 65816-opcodes%s\n"
             " -w           allow 65816-opcodes%s\n",
@@ -854,11 +861,16 @@
 	    "                Other segments must be specified with `-b?'\n"
 	    " -G           suppress list of exported globals\n");
 	fprintf(fp,
+	    " -p?          set preprocessor character to ?, default is #\n"
 	    " -DDEF=TEXT   defines a preprocessor replacement\n"
-	    " -Ocharset    set output charset (PETSCII or ASCII), case-sensitive\n"
+	    " -Ocharset    set output charset (PETSCII, ASCII, etc.), case-sensitive\n"
 	    " -Idir        add directory `dir' to include path (before XAINPUT)\n"
 	    "  --version   output version information and exit\n"
 	    "  --help      display this help and exit\n");
+	fprintf(fp,
+	    "== These options are deprecated and will be removed in 2.4+! ==\n"
+	    " -x           old filename behaviour (overrides `-o', `-e', `-l')\n"
+	    " -S           allow preprocessor substitution within strings\n");
 }
 
 /*
diff -Nru xa-2.3.8/src/xa.h xa-2.3.11/src/xa.h
--- xa-2.3.8/src/xa.h	2008-07-02 07:04:25.000000000 +0200
+++ xa-2.3.11/src/xa.h	2019-11-09 01:36:39.000000000 +0100
@@ -22,7 +22,7 @@
 #include "xah.h"	/* For SEG_MAX */
 
 extern int ncmos, cmosfl, w65816, n65816;
-extern int masm, nolink;
+extern int masm, nolink, ppinstr;
 extern int noglob;
 extern int showblk;
 extern int relmode;
diff -Nru xa-2.3.8/src/xap.c xa-2.3.11/src/xap.c
--- xa-2.3.8/src/xap.c	2014-12-27 03:42:52.000000000 +0100
+++ xa-2.3.11/src/xap.c	2019-11-09 01:46:05.000000000 +0100
@@ -456,7 +456,25 @@
      {
        while(t[0]!='\0')
        {
-          while(!isalpha(t[0]) && t[0]!='_')
+ 	  /* find start of a potential token to be replaced */
+          while(!isalpha(t[0]) && t[0]!='_') {
+	      
+	       /* escape strings quoted with " */ 
+	       if (!ppinstr && t[0] == '\"') {
+		    do {
+			t++;
+			ti++;
+		    } while (t[0] && t[0]!='\"');
+	       }
+
+	       /* escape strings quoted with ' */ 
+	       if (!ppinstr && t[0] == '\'') {
+		    do {
+			t++;
+			ti++;
+		    } while (t[0] && t[0]!='\'');
+	       }
+
                if(t[0]=='\0')
                     break;    /*return(E_OK);*/
                else
@@ -464,6 +482,7 @@
                     t++;
                     ti++;
                }
+	  }
          
           for(l=0;isalnum(t[l])||t[l]=='_';l++);
           ld=l;
diff -Nru xa-2.3.8/src/xap.h xa-2.3.11/src/xap.h
--- xa-2.3.8/src/xap.h	2012-07-24 22:08:53.000000000 +0200
+++ xa-2.3.11/src/xap.h	2020-05-03 00:01:54.000000000 +0200
@@ -35,7 +35,7 @@
 long gm_ppm(void);
 long ga_ppm(void);
 
-Datei *filep;
-char s[MAXLINE];
+extern Datei *filep;
+extern char s[MAXLINE];
 
 #endif /* __XA65_XAP_H__ */
diff -Nru xa-2.3.8/src/xat.c xa-2.3.11/src/xat.c
--- xa-2.3.8/src/xat.c	2014-12-28 03:11:28.000000000 +0100
+++ xa-2.3.11/src/xat.c	2020-05-03 01:13:18.000000000 +0200
@@ -479,48 +479,44 @@
 	       dsb_len = 0;
           } else
 	  if(n==Ktext) {
-/*	    if(segment!=SEG_ABS) {    */
 	      segment = relmode ? SEG_TEXT : SEG_ABS;
 	      t[0]=Ksegment;
 	      t[1]=segment;
 	      *ll=2;
               er=E_OKDEF;
-/*	    } else {
-	      er=E_ILLSEGMENT;
-	    }                        */
 	  } else
 	  if(n==Kdata) {
-/*  	    if(segment!=SEG_ABS) {   */
+  	    if(relmode) {   
 	      segment = SEG_DATA;
 	      t[0]=Ksegment;
 	      t[1]=SEG_DATA;
 	      *ll=2;
               er=E_OKDEF;
-/*	    } else {
+	    } else {
 	      er=E_ILLSEGMENT;
-	    }                        */
+	    } 
 	  } else
 	  if(n==Kbss) {
-/*  	    if(segment!=SEG_ABS) {   */
+  	    if(relmode) { 
 	      segment = SEG_BSS;
 	      t[0]=Ksegment;
 	      t[1]=SEG_BSS;
 	      *ll=2;
               er=E_OKDEF;
-/*	    } else {
+	    } else {
 	      er=E_ILLSEGMENT;
-	    }                        */
+	    } 
 	  } else
 	  if(n==Kzero) {
-/*  	    if(segment!=SEG_ABS) {   */
+  	    if(relmode) {   
 	      segment = SEG_ZERO;
 	      t[0]=Ksegment;
 	      t[1]=SEG_ZERO;
 	      *ll=2;
               er=E_OKDEF;
-/*	    } else {
+	    } else {
 	      er=E_ILLSEGMENT;
-	    }                        */
+	    }  
 	  } else
 	if (n==Kbin) {
 		int j;
@@ -601,7 +597,7 @@
 "binclude1 offset = %i len = %i filename = %s endchar = %i\n",
 		offset, length, binfnam, i);
 #endif
-			if (!(foo = fopen(binfnam, "r"))) {
+			if (!(foo = fopen(binfnam, "rb"))) {
 				er = E_FNF;
 			} else {
 				fseek(foo, 0, SEEK_END);
@@ -704,8 +700,14 @@
                } else
                     sy=4+nk;	/* absolute or zero page */
 
-		/* length counter set to maximum length + 1 */
-               bl=Maxbyt+1;
+	       /* length counter set to maximum length + 1 */
+	       if (w65816 || (t[l-1]=='@' || t[l-1] == '!')) {
+		       	/* for 65816 allow addressing modes up to 4 byte overall length */
+               		bl=Maxbyt+1;
+	       } else {
+		       	/* for other modes only check for addressing modes up to 3 byte overall length */
+		 	bl=Maxbyt;
+	       }
                
 		/* find best fit for length of this operand */
                while(--bl)
@@ -1027,7 +1029,7 @@
 "binclude2 offset = %i len = %i filename = %s endchar = %i\n",
 		offset, length, binfnam, i);
 #endif
-			if (!(foo = fopen(binfnam, "r"))) {
+			if (!(foo = fopen(binfnam, "rb"))) {
 				er = E_FNF;
 			} else {
 				fseek(foo, 0, SEEK_END);
@@ -1203,6 +1205,9 @@
 	       dsb_len = 1;
                if(!(er=a_term(t+1,&j,&i,pc[segment],&afl,&label,0)))
                {
+                    if (j<0)
+			er=E_SYNTAX;
+		    else
 /*
                     if(t[i+1]!=',')
                          er=E_SYNTAX;
@@ -1375,9 +1380,19 @@
                          }
                     }
                }
-                
-               bl=Maxbyt+1;
                
+	       /* set bl to maximum overall length +1 as while() below starts with decrementing it */
+	       if (w65816 || (t[*ll-1]=='@' || t[*ll-1] == '!')) {
+		       	/* for 65816 allow addressing modes up to 4 byte overall length */
+               		bl=Maxbyt+1;
+	       } else {
+		       	/* for other modes only check for addressing modes up to 3 byte overall length */
+		 	bl=Maxbyt;
+	       }
+              
+#ifdef DEBUG_AM
+	      printf("--- trying to find am using: (max+1) bl=%d, sy=%d\n", bl, sy); 
+#endif
                while(--bl)
                {
                     if((am=at[sy][bl-1])>=0)
@@ -1415,8 +1430,8 @@
                {
 #ifdef DEBUG_AM
 fprintf(stderr,
-"b4: pc= %d, am = %d and vv[0] = %d, optimize = %d, bitmask = %d\n",
-	pc[segment], am, vv[0], fl, (vv[0]&0xffff00));
+"b4: pc= %d, am = %d and vv[0] = %d, optimize = %d, bitmask = %u, er=%d\n",
+	pc[segment], am, vv[0], fl, (vv[0]&0xffff00), er);
 #endif
 
 /* terrible KLUDGE!!!! OH NOES!!!1!
@@ -1455,15 +1470,21 @@
                else
                {
                     bl=le[am];
+		    if ((am != 11 && am != 16) && (vv[0] > 255 || vv[0] < -256) && bl == 2) {
+			    er = E_OVERFLOW;
+		    } else
+		    if ((am != 11 && am != 16) && (vv[0] > 65535 || vv[0] < -65536) && (bl == 2 || bl == 3)) {
+			    er = E_OVERFLOW;
+		    } else
                     if( ((ct[n][am]&0x400) && memode) || ((ct[n][am]&0x800) && xmode)) {
                          bl++;
-		}
+		    }
                     *ll=bl;
 
                }
 
 #ifdef DEBUG_AM
-fprintf(stderr, "byte length is now %d\n", bl);
+fprintf(stderr, "byte length is now %d, am=%d, er=%d\n", bl, am, er);
 #endif
 
                if(!er)
@@ -1512,6 +1533,7 @@
                               }
                          } else
                          if(am==11 || am==16) {
+			   /* relative, relative long */
 			   if((segment!=SEG_ABS) && (!rlt[0])) {
 			     er=E_ILLPOINTER;
 			   } else {
diff -Nru xa-2.3.8/tests/csapiec/Makefile xa-2.3.11/tests/csapiec/Makefile
--- xa-2.3.8/tests/csapiec/Makefile	1970-01-01 01:00:00.000000000 +0100
+++ xa-2.3.11/tests/csapiec/Makefile	2020-05-03 01:01:06.000000000 +0200
@@ -0,0 +1,12 @@
+default:
+	# xa should not allow this to happen. if it does, this test is no good.
+	../../xa -DBUG=1 -o test.o test.s || exit 0 && exit 1
+	../../xa -R -DBUG=1 -o testseg.o test.s || exit 0 && exit 1
+	# xa *should* allow this to happen.
+	../../xa -o test.o test.s
+	../hextool -cmp=test.ok < test.o
+	../../xa -R -o testseg.o test.s
+	../hextool -cmp=testseg.ok < testseg.o
+
+clean:
+	rm -f *.o
Binary files /tmp/user/1000/KWOtsOxNdc/xa-2.3.8/tests/csapiec/test.ok and /tmp/user/1000/OSWa8ZGOHD/xa-2.3.11/tests/csapiec/test.ok differ
diff -Nru xa-2.3.8/tests/csapiec/test.s xa-2.3.11/tests/csapiec/test.s
--- xa-2.3.8/tests/csapiec/test.s	1970-01-01 01:00:00.000000000 +0100
+++ xa-2.3.11/tests/csapiec/test.s	2020-05-03 00:51:34.000000000 +0200
@@ -0,0 +1,32 @@
+	.text
+
+c0        =*-1
+
+#ifdef BUG
+	.data
+#endif
+
+cmdt      .asc "$",0
+cow       .asc "@",0
+c2        .asc "rename",0
+c3        .asc "scratch",0
+c4        .asc "copy",0
+c5        .asc "new",0
+c6        .asc "validate",0
+c7        .asc "initialize",0
+;c8        .asc "rmdir",0
+;c9        .asc "mkdir",0
+;c10       .asc "chdir",0
+c11       .asc "assign",0
+c12       .asc "cd",0
+c13       .asc "rd",0
+c14       .asc "md",0
+c15       .asc "drv",0      ; iec-bus-unit 
+
+cmda    .byt cmdt-c0
+    	.byt <c0
+        .byt <cow-c0
+        .word <cow-c0
+        .byt c2-c0, c3-c0, c4-c0, c5-c0, c6-c0, c7-c0 /*,c8-c0*/
+          .byt /*c9-c0,c10-c0,*/ c11-c0, c12-c0, c13-c0, c14-c0, c15-c0, 0
+
Binary files /tmp/user/1000/KWOtsOxNdc/xa-2.3.8/tests/csapiec/testseg.ok and /tmp/user/1000/OSWa8ZGOHD/xa-2.3.11/tests/csapiec/testseg.ok differ
Binary files /tmp/user/1000/KWOtsOxNdc/xa-2.3.8/tests/linkr/ok and /tmp/user/1000/OSWa8ZGOHD/xa-2.3.11/tests/linkr/ok differ
diff -Nru xa-2.3.8/tests/linkr/test.s xa-2.3.11/tests/linkr/test.s
--- xa-2.3.8/tests/linkr/test.s	1970-01-01 01:00:00.000000000 +0100
+++ xa-2.3.11/tests/linkr/test.s	2019-11-09 01:11:32.000000000 +0100
@@ -0,0 +1,19 @@
+; Actual example from man page
+
+              .word $1000
+              * = $1000
+
+              ; this is your code at $1000
+          part1       rts
+              ; this label marks the end of code
+          endofpart1
+
+              ; DON'T PUT A NEW .word HERE!
+              * = $2000
+              .dsb (*-endofpart1), 0
+              ; yes, set it again
+              * = $2000
+
+              ; this is your code at $2000
+          part2       rts
+
diff -Nru xa-2.3.8/tests/math/divzero2.s xa-2.3.11/tests/math/divzero2.s
--- xa-2.3.8/tests/math/divzero2.s	1970-01-01 01:00:00.000000000 +0100
+++ xa-2.3.11/tests/math/divzero2.s	2020-05-03 23:05:14.000000000 +0200
@@ -0,0 +1,6 @@
+.word $
+xyz = 2
+zyx = xyz - xyz
+
+* = $0/zyx
+
diff -Nru xa-2.3.8/tests/math/divzero.s xa-2.3.11/tests/math/divzero.s
--- xa-2.3.8/tests/math/divzero.s	1970-01-01 01:00:00.000000000 +0100
+++ xa-2.3.11/tests/math/divzero.s	2020-05-03 23:04:42.000000000 +0200
@@ -0,0 +1,3 @@
+.word $
+* = $0/00
+
diff -Nru xa-2.3.8/tests/math/Makefile xa-2.3.11/tests/math/Makefile
--- xa-2.3.8/tests/math/Makefile	1970-01-01 01:00:00.000000000 +0100
+++ xa-2.3.11/tests/math/Makefile	2020-05-03 23:05:22.000000000 +0200
@@ -0,0 +1,7 @@
+default:
+	# xa should not allow this to happen. if it does, this test is no good.
+	../../xa -o divzero.o divzero.s || exit 0 && exit 1
+	../../xa -o divzero2.o divzero2.s || exit 0 && exit 1
+
+clean:
+	rm -f *.o
Binary files /tmp/user/1000/KWOtsOxNdc/xa-2.3.8/tests/neg_offset/a.o65 and /tmp/user/1000/OSWa8ZGOHD/xa-2.3.11/tests/neg_offset/a.o65 differ
diff -Nru xa-2.3.8/tests/neg_offset/Makefile xa-2.3.11/tests/neg_offset/Makefile
--- xa-2.3.8/tests/neg_offset/Makefile	1970-01-01 01:00:00.000000000 +0100
+++ xa-2.3.11/tests/neg_offset/Makefile	2020-05-03 01:03:57.000000000 +0200
@@ -0,0 +1,40 @@
+default: test0 test1 test2 test3 test4 test5 test6 test7 test8 
+
+test0:
+	# this test must fail.
+	../../xa -o test0.o test0.s || exit 0 && exit 1
+
+test1:
+	../../xa -R -LLIB6502 test1.s -o test1.o
+	../hextool -cmp=ok1 < test1.o
+
+test2:
+	../../xa -R -LLIB6502 test2.s -o test2.o
+	../hextool -cmp=ok2 < test2.o
+
+test3:
+	../../xa -R -LLIB6502 test3.s -o test3.o
+	../hextool -cmp=ok3 < test3.o
+
+test4:
+	../../xa -R -LLIB6502 test4.s -o test4.o
+	../hextool -cmp=ok4 < test4.o
+
+test5:
+	../../xa -R -LLIB6502 test5.s -o test5.o
+	../hextool -cmp=ok5 < test5.o
+
+test6:
+	# this test must fail.
+	../../xa -R -LLIB6502 test6.s -o test6.o || exit 0 && exit 1
+
+test7:
+	# this test must fail.
+	../../xa -R -LLIB6502 test7.s -o test7.o || exit 0 && exit 1
+
+test8:
+	# this test must fail.
+	../../xa -R -LLIB6502 test8.s -o test8.o || exit 0 && exit 1
+
+clean:
+	rm -f *.o
Binary files /tmp/user/1000/KWOtsOxNdc/xa-2.3.8/tests/neg_offset/ok1 and /tmp/user/1000/OSWa8ZGOHD/xa-2.3.11/tests/neg_offset/ok1 differ
Binary files /tmp/user/1000/KWOtsOxNdc/xa-2.3.8/tests/neg_offset/ok2 and /tmp/user/1000/OSWa8ZGOHD/xa-2.3.11/tests/neg_offset/ok2 differ
Binary files /tmp/user/1000/KWOtsOxNdc/xa-2.3.8/tests/neg_offset/ok3 and /tmp/user/1000/OSWa8ZGOHD/xa-2.3.11/tests/neg_offset/ok3 differ
Binary files /tmp/user/1000/KWOtsOxNdc/xa-2.3.8/tests/neg_offset/ok4 and /tmp/user/1000/OSWa8ZGOHD/xa-2.3.11/tests/neg_offset/ok4 differ
Binary files /tmp/user/1000/KWOtsOxNdc/xa-2.3.8/tests/neg_offset/ok5 and /tmp/user/1000/OSWa8ZGOHD/xa-2.3.11/tests/neg_offset/ok5 differ
diff -Nru xa-2.3.8/tests/neg_offset/test0.s xa-2.3.11/tests/neg_offset/test0.s
--- xa-2.3.8/tests/neg_offset/test0.s	1970-01-01 01:00:00.000000000 +0100
+++ xa-2.3.11/tests/neg_offset/test0.s	2020-05-03 01:03:22.000000000 +0200
@@ -0,0 +1,2 @@
+
+	.dsb -10, 32
diff -Nru xa-2.3.8/tests/neg_offset/test1.s xa-2.3.11/tests/neg_offset/test1.s
--- xa-2.3.8/tests/neg_offset/test1.s	1970-01-01 01:00:00.000000000 +0100
+++ xa-2.3.11/tests/neg_offset/test1.s	2019-11-09 01:21:07.000000000 +0100
@@ -0,0 +1,6 @@
+
+	.text
+
+	jsr LIB6502-3
+
+
diff -Nru xa-2.3.8/tests/neg_offset/test2.s xa-2.3.11/tests/neg_offset/test2.s
--- xa-2.3.8/tests/neg_offset/test2.s	1970-01-01 01:00:00.000000000 +0100
+++ xa-2.3.11/tests/neg_offset/test2.s	2019-11-09 01:21:29.000000000 +0100
@@ -0,0 +1,9 @@
+
+#define	flib2osa_r	LIB6502-3
+
+	.text
+
+	jsr flib2osa_r
+
+
+
diff -Nru xa-2.3.8/tests/neg_offset/test3.s xa-2.3.11/tests/neg_offset/test3.s
--- xa-2.3.8/tests/neg_offset/test3.s	1970-01-01 01:00:00.000000000 +0100
+++ xa-2.3.11/tests/neg_offset/test3.s	2019-11-09 01:21:08.000000000 +0100
@@ -0,0 +1,6 @@
+
+	.text
+
+	jsr LIB6502-255
+
+
diff -Nru xa-2.3.8/tests/neg_offset/test4.s xa-2.3.11/tests/neg_offset/test4.s
--- xa-2.3.8/tests/neg_offset/test4.s	1970-01-01 01:00:00.000000000 +0100
+++ xa-2.3.11/tests/neg_offset/test4.s	2019-11-09 01:21:08.000000000 +0100
@@ -0,0 +1,6 @@
+
+	.text
+
+	jsr LIB6502+256
+
+
diff -Nru xa-2.3.8/tests/neg_offset/test5.s xa-2.3.11/tests/neg_offset/test5.s
--- xa-2.3.8/tests/neg_offset/test5.s	1970-01-01 01:00:00.000000000 +0100
+++ xa-2.3.11/tests/neg_offset/test5.s	2019-11-09 01:21:09.000000000 +0100
@@ -0,0 +1,6 @@
+
+	.text
+
+	jsr LIB6502-256
+
+
diff -Nru xa-2.3.8/tests/neg_offset/test6.s xa-2.3.11/tests/neg_offset/test6.s
--- xa-2.3.8/tests/neg_offset/test6.s	1970-01-01 01:00:00.000000000 +0100
+++ xa-2.3.11/tests/neg_offset/test6.s	2019-11-09 01:21:09.000000000 +0100
@@ -0,0 +1,6 @@
+
+	.text
+
+	jsr LIB6502-65537
+
+
diff -Nru xa-2.3.8/tests/neg_offset/test7.s xa-2.3.11/tests/neg_offset/test7.s
--- xa-2.3.8/tests/neg_offset/test7.s	1970-01-01 01:00:00.000000000 +0100
+++ xa-2.3.11/tests/neg_offset/test7.s	2019-11-09 01:21:09.000000000 +0100
@@ -0,0 +1,6 @@
+
+	.text
+
+	jsr 65536
+
+
diff -Nru xa-2.3.8/tests/neg_offset/test8.s xa-2.3.11/tests/neg_offset/test8.s
--- xa-2.3.8/tests/neg_offset/test8.s	1970-01-01 01:00:00.000000000 +0100
+++ xa-2.3.11/tests/neg_offset/test8.s	2019-11-09 01:21:09.000000000 +0100
@@ -0,0 +1,6 @@
+
+	.text
+
+	jsr LIB6502+65536
+
+
Binary files /tmp/user/1000/KWOtsOxNdc/xa-2.3.8/tests/ppstrings/ok and /tmp/user/1000/OSWa8ZGOHD/xa-2.3.11/tests/ppstrings/ok differ
diff -Nru xa-2.3.8/tests/ppstrings/test.s xa-2.3.11/tests/ppstrings/test.s
--- xa-2.3.8/tests/ppstrings/test.s	1970-01-01 01:00:00.000000000 +0100
+++ xa-2.3.11/tests/ppstrings/test.s	2019-11-09 01:48:54.000000000 +0100
@@ -0,0 +1,15 @@
+
+#define DUP 123
+
+    .asc "DUP^@"
+
+    .asc '0DUP^@'
+
+    .asc "D","UP^@"
+
+    .asc "DUP
+
+    .asc "DU0
+
+    .asc "DU
+
diff -Nru xa-2.3.8/tests/README xa-2.3.11/tests/README
--- xa-2.3.8/tests/README	2017-06-30 06:54:20.000000000 +0200
+++ xa-2.3.11/tests/README	2020-05-03 23:04:15.000000000 +0200
@@ -16,6 +16,8 @@
 		prefixes)
 nonl/		Patryk's no-new-line-on-last-line cases ;)
 fordef/		Optimizer warnings for forward defined labels
+relocmode/	Tests to prevent use of irrational segments if relocating
+		mde isn't on
 relocundef/  	Tests for the detection of undefined references during a
 		reloc65 export
 ldoreloc/ 	Test case for the relocation table reading of ldo when undef'd
@@ -27,6 +29,8 @@
 incerr/		1) .xl/.al should error without -w 2) error should be in
 		the correct file ('816)
 binclude/	Binary include code with some weird casing
+ppstrings/	Don't substitute inside strings (unless -S)
+neg_offset/	Test negative offsets/values with/without relocation
 chppch/		Changing preprocessor characters (-p)
 charset/	Tests of when charsets should be honoured and when not
 mvnmvp/		Test MVN MVP unusual addressing mode ('816)
@@ -36,6 +40,9 @@
 branch/		Branch range test
 masmcom/	Another test for -M that generates totally valid code
 quotch/		Test quoting problematic characters (thanks Simon Rowe)
+linkr/		Test linking using .dsb and generated code
+csapiec/	Test on pointer arithmetic in relocating mode
+math/		Math tests (currently divide by zero, thanks Frederic Cambus)
 
 Cameron Kaiser, André Fachat
 
diff -Nru xa-2.3.8/tests/relocmode/Makefile xa-2.3.11/tests/relocmode/Makefile
--- xa-2.3.8/tests/relocmode/Makefile	1970-01-01 01:00:00.000000000 +0100
+++ xa-2.3.11/tests/relocmode/Makefile	2019-11-09 02:00:27.000000000 +0100
@@ -0,0 +1,10 @@
+default: test1 
+
+test1:
+	# this should fail in non-relocating mode
+	../../xa  test1.s -o test1.o || exit 0 && exit 1
+	../../xa  -R test1.s -o test1.o 
+	../hextool -cmp=ok < test1.o
+
+clean:
+	rm -f *.o
Binary files /tmp/user/1000/KWOtsOxNdc/xa-2.3.8/tests/relocmode/ok and /tmp/user/1000/OSWa8ZGOHD/xa-2.3.11/tests/relocmode/ok differ
diff -Nru xa-2.3.8/tests/relocmode/test1.s xa-2.3.11/tests/relocmode/test1.s
--- xa-2.3.8/tests/relocmode/test1.s	1970-01-01 01:00:00.000000000 +0100
+++ xa-2.3.11/tests/relocmode/test1.s	2019-11-09 02:00:05.000000000 +0100
@@ -0,0 +1,7 @@
+
+	lda foo
+
+	.data
+
+foo	.byt $aa
+
diff -Nru xa-2.3.8/tests/reset_segment/Makefile xa-2.3.11/tests/reset_segment/Makefile
--- xa-2.3.8/tests/reset_segment/Makefile	1970-01-01 01:00:00.000000000 +0100
+++ xa-2.3.11/tests/reset_segment/Makefile	2019-11-09 02:03:41.000000000 +0100
@@ -0,0 +1,10 @@
+default: test1 
+
+test1:
+	../../xa -R -LLIB6502 test1.s -o test1.o
+	../hextool -cmp=ok1 < test1.o
+	../../xa -R test2.s -o test2.o
+	../hextool -cmp=ok2 < test2.o
+
+clean:
+	rm -f *.o
Binary files /tmp/user/1000/KWOtsOxNdc/xa-2.3.8/tests/reset_segment/ok1 and /tmp/user/1000/OSWa8ZGOHD/xa-2.3.11/tests/reset_segment/ok1 differ
Binary files /tmp/user/1000/KWOtsOxNdc/xa-2.3.8/tests/reset_segment/ok2 and /tmp/user/1000/OSWa8ZGOHD/xa-2.3.11/tests/reset_segment/ok2 differ
diff -Nru xa-2.3.8/tests/reset_segment/test1.s xa-2.3.11/tests/reset_segment/test1.s
--- xa-2.3.8/tests/reset_segment/test1.s	1970-01-01 01:00:00.000000000 +0100
+++ xa-2.3.11/tests/reset_segment/test1.s	2019-11-09 02:03:47.000000000 +0100
@@ -0,0 +1,12 @@
+
+	; forward reference 
+	; results in illegal ptr arithmetic when segment
+	; is not reset between pass1 and pass2
+
+	bne foo
+foo
+
+	.data
+
+
+
diff -Nru xa-2.3.8/tests/reset_segment/test2.s xa-2.3.11/tests/reset_segment/test2.s
--- xa-2.3.8/tests/reset_segment/test2.s	1970-01-01 01:00:00.000000000 +0100
+++ xa-2.3.11/tests/reset_segment/test2.s	2019-11-09 02:03:44.000000000 +0100
@@ -0,0 +1,23 @@
+
+	; test absolute code embedded into relocatable mode
+
+	.text
+
+	lda foo
+	lda bar
+
+	; go into absolute mode
+	*=$1234
+
+foo	.asc "absolute",0
+
+	lda foo
+	lda bar
+
+	; go back into relocatble mode
+	*=
+
+bar	.asc "reloc",0
+	
+
+

Attachment: signature.asc
Description: PGP signature


--- End Message ---
--- Begin Message ---
Source: xa
Source-Version: 2.4.1-0.2
Done: Andreas Tille <[email protected]>

We believe that the bug you reported is fixed in the latest version of
xa, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to [email protected],
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Andreas Tille <[email protected]> (supplier of updated xa package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [email protected])


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Format: 1.8
Date: Mon, 01 Jun 2026 11:31:48 +0200
Source: xa
Architecture: source
Version: 2.4.1-0.2
Distribution: unstable
Urgency: medium
Maintainer: David Weinehall <[email protected]>
Changed-By: Andreas Tille <[email protected]>
Closes: 966177 1105619 1130320
Changes:
 xa (2.4.1-0.2) unstable; urgency=medium
 .
   * Non-maintainer upload.
 .
   [ Andreas Tille ]
   * Migrate packaging to Salsa
     Closes: #966177
   * d/watch: version=5
   * d/copyrighht:
      - Secure URI in Source
      - Add Files: debian/* paragraph
   * Fix dependencies in Makefile
     Closes: #1105619
   * Standards-Version: 4.7.4 (Removed Priority field)
 .
   [ Helmut Grohne ]
   * Mark xa65 Multi-Arch: foreign. (Closes: #1130320)
Checksums-Sha1:
 a5d60d2dd7ddbe2e1a338b370b5fbb76188d46fb 1796 xa_2.4.1-0.2.dsc
 51a71889f4aa5711986e231b2e932840a9338a6b 3244 xa_2.4.1-0.2.debian.tar.xz
 8d0e051d6f38a9c20502adcbc32ace7831e4b484 5788 xa_2.4.1-0.2_amd64.buildinfo
Checksums-Sha256:
 e6d54c1c7eabf509c165ec33ea9fe0f753bb14d4ce4267d19f61166316a84350 1796 
xa_2.4.1-0.2.dsc
 564286adceaa793429c9924b920ec7e736f8928d22d8f4a1845e6f8e3addcbe5 3244 
xa_2.4.1-0.2.debian.tar.xz
 f9c38913469328beeced7572437046351c2955a0f84069dc393d642f1352207a 5788 
xa_2.4.1-0.2_amd64.buildinfo
Files:
 ae95a15bb1d62c94208af0e2230a3f56 1796 devel optional xa_2.4.1-0.2.dsc
 831a3853945e1daf63e1996cbee488b3 3244 devel optional xa_2.4.1-0.2.debian.tar.xz
 520a110118a40b4920b77283c8fc09d7 5788 devel optional 
xa_2.4.1-0.2_amd64.buildinfo

-----BEGIN PGP SIGNATURE-----

iQJFBAEBCgAvFiEE8fAHMgoDVUHwpmPKV4oElNHGRtEFAmodVLkRHHRpbGxlQGRl
Ymlhbi5vcmcACgkQV4oElNHGRtEoNxAAjH2Ut91QZUjPYuJqihjy05L/5CijuPNy
pIHPuMsDMxUsGdNQMVBIpRbsv3x4306B66+PuxOq6Bnxg+6ZwKwod1DdXlv2Vb/r
E9uJY2MaFXL+fu/n4gcSyYAL0wHW9I81aeBiBKH7evCPfWwCx3angABFnuuJjYY5
iEtnEmmHBRygfEBk3t8RY2yHA6jeDc2atQkL4M8d2VBYg6dxaoADU31iaWmid7wR
Z2lmLpUZON7YwAnOM7Ol5nBBb70fTihQ9d4NfFQV84+eMdkYmnGPAfB7ijmY1v8D
wou4JMKIv8wRZQr6SeRsHRpzK7vmV1j9k6MfnOXweQBo6duWGWNtNl6X8Y88v/7B
H7RG1SDk2HEiR8/So8ZTP7IWpaVqYOxjIygA7Z6CpxMX5OehXa3mJHPlcuZFPTk9
NQMR+jEC4H+JT+FRg46diN10MelcgxQdIOAze7NX+nYZRS3oiKzCTFLivkRwy3iU
E9y25lREcb43uuYr8nkVaTdWtj6zvwxtMpnHlqwOLe23dhCF5JpAjnHKeJ0zzx4q
7M+Yq7LSRSNbmMq+TRSlpjKlj7AeVZpgtI0PtoKuudqlORvwgomO56neLI6xthBa
2/2tuSxsBngUCKlHxFhfpGZIbPCSFduFs3qxkwKoFTZ9J+qTVe5Espa/QMxS+uw7
0QG1quM1gpE=
=sbco
-----END PGP SIGNATURE-----

Attachment: pgpGRH9JyPD9p.pgp
Description: PGP signature


--- End Message ---

Reply via email to