/lib/as2 can't be built shared or split +FIX

Steven M. Schultz sms at wlv.imsd.contel.com
Thu Dec 28 08:04:48 AEST 1989


Subject: /lib/as2 can't be built shared or split +FIX
Index:	bin/as/as2?.s 2.10BSD

Description:
	The second phase of the assembler (/lib/as2) can not be built
	either sharedtext (-n) or split-I/D (-i) due to intermixing
	of data and text, missing .text/.data directives, use of
	a subroutine calling convention which places arguments inline
	with text (jsr r5,xxx;arg rather than mov arg,-(sp);jsr pc,xxx),
	reusing text space as an I/O bufffer, ad nauseum.

	Building /lib/as2 either -n or -i allows the system to cache the
	text, speeding loading on subsequent use.

Repeat-By:
	Attempt to build /lib/as2 with either -n or -i set into SEPFLAGS,
	observe the resulting mess.

Fix:
	Apply the patches below.  There is one patch for as13.s, the earlier
	posting which fixed /bin/as missed a "jsr r5," call.

	Also, the I/O buffers have been increased from 512 to 1024 so as
	to match the filesystem block size.

	Happy New Year!

diff -c as.old/Makefile as/Makefile
*** as.old/Makefile	Wed Dec 13 16:42:56 1989
--- as/Makefile	Sun Dec 24 02:06:24 1989
***************
*** 16,22 ****
  
  as2: ${AS2SRC}
  	${AS} ${ASFLAGS} -o as2.o as2?.s
! 	ld -o $@ as2.o -lc
  
  install:
  	install -s as ${DESTDIR}/bin
--- 16,22 ----
  
  as2: ${AS2SRC}
  	${AS} ${ASFLAGS} -o as2.o as2?.s
! 	ld ${SEPFLAG} -o $@ as2.o -lc
  
  install:
  	install -s as ${DESTDIR}/bin
diff -c as.old/as13.s as/as13.s
*** as.old/as13.s	Wed Dec 13 16:43:11 1989
--- as/as13.s	Sun Dec 24 19:27:40 1989
***************
*** 42,48 ****
  1:
  	bitb	$37,(r4)
  	beq	1f
! 	jsr	r5,error; 'm
  1:
  	bisb	dot-2,(r4)
  	mov	dot,2(r4)
--- 42,49 ----
  1:
  	bitb	$37,(r4)
  	beq	1f
! 	mov	$'m,r5
! 	jsr	pc,error
  1:
  	bisb	dot-2,(r4)
  	mov	dot,2(r4)
diff -c as.old/as21.s as/as21.s
*** as.old/as21.s	Sun Feb  8 14:26:13 1987
--- as/as21.s	Wed Dec 27 12:35:36 1989
***************
*** 31,37 ****
  
  / read in symbol table
  
! 	mov	$usymtab,r1
  1:
  	jsr	pc,getw
  	bvs	1f
--- 31,37 ----
  
  / read in symbol table
  
! 	mov	usymtab,r1
  1:
  	jsr	pc,getw
  	bvs	1f
***************
*** 101,107 ****
  	tst	(sp)+			/	sys	close
  	mov	(sp)+,r1
  
! 	jsr	r5,ofile; a.tmp1
  	mov	r0,fin
  	clr	ibufc
  	jsr	pc,setup
--- 101,108 ----
  	tst	(sp)+			/	sys	close
  	mov	(sp)+,r1
  
! 	mov	a.tmp1,-(sp)
! 	jsr	pc,ofile
  	mov	r0,fin
  	clr	ibufc
  	jsr	pc,setup
***************
*** 141,147 ****
  	sbc	r0
  	mov	r0,datseek
  	mov	r3,datseek+2	/ txtsiz+20
! 	mov	$usymtab,r1
  1:
  	jsr	pc,doreloc
  	add	$4,r1
--- 142,148 ----
  	sbc	r0
  	mov	r0,datseek
  	mov	r3,datseek+2	/ txtsiz+20
! 	mov	usymtab,r1
  1:
  	jsr	pc,doreloc
  	add	$4,r1
***************
*** 149,163 ****
  	blo	1b
  	clr	r0
  	clr	r1
! 	jsr	r5,oset; txtp
  	mov	trelseek,r0
  	mov	trelseek+2,r1
! 	jsr	r5,oset; relp
  	mov	$8.,r2
  	mov	$txtmagic,r1
  1:
  	mov	(r1)+,r0
! 	jsr	r5,putw; txtp
  	dec	r2
  	bne	1b
  	jsr	pc,assem
--- 150,167 ----
  	blo	1b
  	clr	r0
  	clr	r1
! 	mov	$txtp,-(sp)
! 	jsr	pc,oset
  	mov	trelseek,r0
  	mov	trelseek+2,r1
! 	mov	$relp,-(sp)
! 	jsr	pc,oset
  	mov	$8.,r2
  	mov	$txtmagic,r1
  1:
  	mov	(r1)+,r0
! 	mov	$txtp,-(sp)
! 	jsr	pc,putw
  	dec	r2
  	bne	1b
  	jsr	pc,assem
***************
*** 164,171 ****
  
  /polish off text and relocation
  
! 	jsr	r5,flush; txtp
! 	jsr	r5,flush; relp
  
  / append full symbol table
  
--- 168,177 ----
  
  /polish off text and relocation
  
! 	mov	$txtp,-(sp)
! 	jsr	pc,flush
! 	mov	$relp,-(sp)
! 	jsr	pc,flush
  
  / append full symbol table
  
***************
*** 182,212 ****
  	clr	ibufc
  	mov	symseek,r0
  	mov	symseek+2,r1
! 	jsr	r5,oset; txtp
! 	mov	$usymtab,r1
  1:
  	jsr	pc,getw
  	bvs	1f
  	mov	r4,r0
! 	jsr	r5,putw; txtp
  	jsr	pc,getw
  	mov	r4,r0
! 	jsr	r5,putw; txtp
  	jsr	pc,getw
  	mov	r4,r0
! 	jsr	r5,putw; txtp
  	jsr	pc,getw
  	mov	r4,r0
! 	jsr	r5,putw; txtp
  	mov	(r1)+,r0
! 	jsr	r5,putw; txtp
  	mov	(r1)+,r0
! 	jsr	r5,putw; txtp
  	jsr	pc,getw
  	jsr	pc,getw
  	br	1b
  1:
! 	jsr	r5,flush; txtp
  	jmp	aexit
  
  saexit:
--- 188,226 ----
  	clr	ibufc
  	mov	symseek,r0
  	mov	symseek+2,r1
! 	mov	$txtp,-(sp)
! 	jsr	pc,oset
! 	mov	usymtab,r1
  1:
  	jsr	pc,getw
  	bvs	1f
  	mov	r4,r0
! 	mov	$txtp,-(sp)
! 	jsr	pc,putw
  	jsr	pc,getw
  	mov	r4,r0
! 	mov	$txtp,-(sp)
! 	jsr	pc,putw
  	jsr	pc,getw
  	mov	r4,r0
! 	mov	$txtp,-(sp)
! 	jsr	pc,putw
  	jsr	pc,getw
  	mov	r4,r0
! 	mov	$txtp,-(sp)
! 	jsr	pc,putw
  	mov	(r1)+,r0
! 	mov	$txtp,-(sp)
! 	jsr	pc,putw
  	mov	(r1)+,r0
! 	mov	$txtp,-(sp)
! 	jsr	pc,putw
  	jsr	pc,getw
  	jsr	pc,getw
  	br	1b
  1:
! 	mov	$txtp,-(sp)
! 	jsr	pc,flush
  	jmp	aexit
  
  saexit:
***************
*** 246,262 ****
  	jsr	pc,__exit		/ _exit(errflg ? 2 : 0)
  					/	sys	exit
  filerr:
! 	mov	*(r5),r5
! 	tst	-(sp)			/ write(1, r5, strlen(r5))
! 	mov	r5,-(sp)
  	mov	$1,-(sp)
- 	clr	r0
  1:
! 	tstb	(r5)+
! 	beq	2f
! 	inc	r0
! 	br	1b
! 2:
  	mov	r0,4(sp)
  	jsr	pc,_write
  	add	$6,sp
--- 260,274 ----
  	jsr	pc,__exit		/ _exit(errflg ? 2 : 0)
  					/	sys	exit
  filerr:
! 	mov	2(sp),r0		/ filename string.  no need to clean
! 	tst	-(sp)			/ stack, this routine goes to saexit.
! 	mov	r0,-(sp)
  	mov	$1,-(sp)
  1:
! 	tstb	(r0)+
! 	bne	1b
! 	sub	2(sp),r0
! 	dec	r0
  	mov	r0,4(sp)
  	jsr	pc,_write
  	add	$6,sp
***************
*** 297,303 ****
  	jsr	pc,_brk			/	sys	indir; 9f
  	tst	(sp)+			/	.data
  .data					/9:	sys	sbreak; 0: end
! 0:	end				/	.text
  .text
  1:
  	mov	(sp)+,r1
--- 309,315 ----
  	jsr	pc,_brk			/	sys	indir; 9f
  	tst	(sp)+			/	.data
  .data					/9:	sys	sbreak; 0: end
! 0:	_end				/	.text
  .text
  1:
  	mov	(sp)+,r1
***************
*** 321,336 ****
  
  ofile:
  	mov	r1,-(sp)		/ protect r1 from library
! 	clr	-(sp)			/ open(*(r5), O_RDONLY, 0)
! 	clr	-(sp)			/	mov	*(r5),0f
! 	mov	*(r5),-(sp)		/	sys	indir; 9f
! 	jsr	pc,_open		/	.data
! 	add	$6,sp			/9:	sys	open; 0:..; 0
! 	mov	(sp)+,r1		/	.text
! 	tst	r0			/	bes	1f
  	bmi	1f
! 
! 	tst	(r5)+
! 	rts	r5
  1:
  	jmp	filerr
--- 333,347 ----
  
  ofile:
  	mov	r1,-(sp)		/ protect r1 from library
! 	clr	-(sp)			/ open(r0, O_RDONLY, 0)
! 	clr	-(sp)
! 	mov	10(sp),-(sp)
! 	jsr	pc,_open
! 	add	$6,sp
! 	mov	(sp)+,r1
! 	tst	r0
  	bmi	1f
! 	mov	(sp)+,(sp)
! 	rts	pc
  1:
  	jmp	filerr
diff -c as.old/as22.s as/as22.s
*** as.old/as22.s	Sun Feb  8 14:26:13 1987
--- as/as22.s	Sun Dec 24 16:53:18 1989
***************
*** 20,26 ****
  / external references
  	mov	$666,outmod		/ make nonexecutable
  	mov	xsymbol,r3
! 	sub	$usymtab,r3
  	asl	r3
  	bis	$4,r3		/ external relocation
  	br	3f
--- 20,26 ----
  / external references
  	mov	$666,outmod		/ make nonexecutable
  	mov	xsymbol,r3
! 	sub	usymtab,r3
  	asl	r3
  	bis	$4,r3		/ external relocation
  	br	3f
***************
*** 33,39 ****
  	cmp	r3,$34
  	bne	7f
  6:
! 	jsr	r5,error; 'r
  7:
  	mov	$1,r3		/ make absolute
  4:
--- 33,40 ----
  	cmp	r3,$34
  	bne	7f
  6:
! 	mov	$'r,-(sp)
! 	jsr	pc,error
  7:
  	mov	$1,r3		/ make absolute
  4:
***************
*** 57,68 ****
  	asl	r3
  	bis	(sp)+,r3
  	mov	r2,r0
! 	jsr	r5,putw; txtp
  	mov	tseekp,r0
  	add	$2,2(r0)
  	adc	(r0)
  	mov	r3,r0
! 	jsr	r5,putw; relp
  	mov	rseekp,r0
  	add	$2,2(r0)
  	adc	(r0)
--- 58,71 ----
  	asl	r3
  	bis	(sp)+,r3
  	mov	r2,r0
! 	mov	$txtp,-(sp)
! 	jsr	pc,putw
  	mov	tseekp,r0
  	add	$2,2(r0)
  	adc	(r0)
  	mov	r3,r0
! 	mov	$relp,-(sp)
! 	jsr	pc,putw
  	mov	rseekp,r0
  	add	$2,2(r0)
  	adc	(r0)
***************
*** 69,81 ****
  8:
  	rts	pc
  1:
! 	jsr	r5,error; 'o
  	clr	r3
  	jsr	pc,outb
  	rts	pc
  
  9:
! 	jsr	r5,error; 'x
  	rts	pc
  
  outb:
--- 72,86 ----
  8:
  	rts	pc
  1:
! 	mov	$'o,-(sp)
! 	jsr	pc,error
  	clr	r3
  	jsr	pc,outb
  	rts	pc
  
  9:
! 	mov	$'x,-(sp)
! 	jsr	pc,error
  	rts	pc
  
  outb:
***************
*** 83,89 ****
  	beq	9b
  	cmp	r3,$1
  	blos	1f
! 	jsr	r5,error; 'r
  1:
  	tstb	passno
  	beq	2f
--- 88,95 ----
  	beq	9b
  	cmp	r3,$1
  	blos	1f
! 	mov	$'r,-(sp)
! 	jsr	pc,error
  1:
  	tstb	passno
  	beq	2f
***************
*** 90,98 ****
  	mov	r2,r0
  	bit	$1,dot
  	bne	1f
! 	jsr	r5,putw; txtp
  	clr	r0
! 	jsr	r5,putw; relp
  	mov	tseekp,r0
  	add	$2,2(r0)
  	adc	(r0)
--- 96,106 ----
  	mov	r2,r0
  	bit	$1,dot
  	bne	1f
! 	mov	$txtp,-(sp)
! 	jsr	pc,putw
  	clr	r0
! 	mov	$relp,-(sp)
! 	jsr	pc,putw
  	mov	tseekp,r0
  	add	$2,2(r0)
  	adc	(r0)
***************
*** 130,137 ****
  	jsr	pc,_write
  	add	$6,sp
  
! 	mov	(r5)+,r0
! 	movb	r0,0f
  	mov	line,r3
  	mov	$0f+6,r0
  	mov	$4,r1
--- 138,144 ----
  	jsr	pc,_write
  	add	$6,sp
  
! 	movb	12(sp),0f
  	mov	line,r3
  	mov	$0f+6,r0
  	mov	$4,r1
***************
*** 153,172 ****
  	mov	(sp)+,r1
  	mov	(sp)+,r2
  	mov	(sp)+,r3
! 	rts	r5
  
  	.data
  0:	<f xxxx\n>
  	.even
  	.text
- 
- betwen:
- 	cmp	r0,(r5)+
- 	blt	1f
- 	cmp	(r5)+,r0
- 	blt	2f
- 1:
- 	tst	(r5)+
- 2:
- 	rts	r5
- 
--- 160,169 ----
  	mov	(sp)+,r1
  	mov	(sp)+,r2
  	mov	(sp)+,r3
! 	mov	(sp)+,(sp)
! 	rts	pc
  
  	.data
  0:	<f xxxx\n>
  	.even
  	.text
diff -c as.old/as23.s as/as23.s
*** as.old/as23.s	Sun Feb  8 14:26:13 1987
--- as/as23.s	Sun Dec 24 02:04:13 1989
***************
*** 33,39 ****
  	movb	dotrel,r0
  	asl	r0
  	cmp	dot,txtsiz-4(r0)
! 	blos	ealoop
  	mov	dot,txtsiz-4(r0)
  eal1:
  	jmp	ealoop
--- 33,41 ----
  	movb	dotrel,r0
  	asl	r0
  	cmp	dot,txtsiz-4(r0)
! 	bhi	8f
! 	jmp	ealoop
! 8:
  	mov	dot,txtsiz-4(r0)
  eal1:
  	jmp	ealoop
***************
*** 43,49 ****
  	bhis	1f
  	cmp	r4,$2
  	beq	3f
! 	jsr	r5,error; 'x
  	br	assem
  1:
  	tstb	passno
--- 45,52 ----
  	bhis	1f
  	cmp	r4,$2
  	beq	3f
! 	mov	$'x,-(sp)
! 	jsr	pc,error
  	br	assem
  1:
  	tstb	passno
***************
*** 56,62 ****
  	cmp	r0,$34
  	ble	5f
  6:
! 	jsr	r5,error; 'm
  5:
  	bic	$37,(r4)
  	bis	dotrel,(r4)
--- 59,66 ----
  	cmp	r0,$34
  	ble	5f
  6:
! 	mov	$'m,-(sp)
! 	jsr	pc,error
  5:
  	bic	$37,(r4)
  	bis	dotrel,(r4)
***************
*** 67,73 ****
  2:
  	cmp	dot,2(r4)
  	beq	assem
! 	jsr	r5,error; 'p
  	br	assem
  3:
  	mov	numval,r4
--- 71,78 ----
  2:
  	cmp	dot,2(r4)
  	beq	assem
! 	mov	$'p,-(sp)
! 	jsr	pc,error
  	br	assem
  3:
  	mov	numval,r4
***************
*** 107,118 ****
  	tst	(sp)+
  	br	dotmax
  2:
! 	jsr	r5,error; '.
  	br	ealoop
  1:
  	cmp	r3,$40
  	bne	1f
! 	jsr	r5,error; 'r
  1:
  	bic	$37,(r1)
  	bic	$!37,r3
--- 112,125 ----
  	tst	(sp)+
  	br	dotmax
  2:
! 	mov	$'.,-(sp)
! 	jsr	pc,error
  	br	ealoop
  1:
  	cmp	r3,$40
  	bne	1f
! 	mov	$'r,-(sp)
! 	jsr	pc,error
  1:
  	bic	$37,(r1)
  	bic	$!37,r3
***************
*** 162,165 ****
  	mov	r1,nxtfb(r4)
  	asr	r4
  	rts	pc
- 
--- 169,171 ----
diff -c as.old/as24.s as/as24.s
*** as.old/as24.s	Sun Feb  8 14:26:13 1987
--- as/as24.s	Sun Dec 24 18:01:10 1989
***************
*** 6,30 ****
  oset:
  	mov	r2,-(sp)
  	mov	r3,-(sp)
! 	mov	(r5)+,r3
  	mov	r1,r2
! 	bic	$!777,r1
  	add	r3,r1
  	add	$8,r1
  	mov	r1,(r3)+	/ next slot
  	mov	r3,r1
! 	add	$1006,r1
  	mov	r1,(r3)+	/ buf max
  	mov	r0,(r3)+
  	mov	r2,(r3)+	/ seek addr
  	mov	(sp)+,r3
  	mov	(sp)+,r2
! 	rts	r5
  
  putw:
  	mov	r1,-(sp)
  	mov	r2,-(sp)
! 	mov	(r5)+,r2
  	mov	(r2)+,r1	/ slot
  	cmp	r1,(r2)		/ buf max
  	bhis	1f
--- 6,31 ----
  oset:
  	mov	r2,-(sp)
  	mov	r3,-(sp)
! 	mov	6(sp),r3
  	mov	r1,r2
! 	bic	$!1777,r1
  	add	r3,r1
  	add	$8,r1
  	mov	r1,(r3)+	/ next slot
  	mov	r3,r1
! 	add	$2006,r1
  	mov	r1,(r3)+	/ buf max
  	mov	r0,(r3)+
  	mov	r2,(r3)+	/ seek addr
  	mov	(sp)+,r3
  	mov	(sp)+,r2
! 	mov	(sp)+,(sp)
! 	rts	pc
  
  putw:
  	mov	r1,-(sp)
  	mov	r2,-(sp)
! 	mov	6(sp),r2
  	mov	(r2)+,r1	/ slot
  	cmp	r1,(r2)		/ buf max
  	bhis	1f
***************
*** 34,40 ****
  1:
  	tst	(r2)+
  	mov	r0,-(sp)
! 	jsr	r5,flush1
  	mov	(sp)+,r0
  	mov	r0,*(r2)+
  	add	$2,-(r2)
--- 35,41 ----
  1:
  	tst	(r2)+
  	mov	r0,-(sp)
! 	jsr	pc,flush1
  	mov	(sp)+,r0
  	mov	r0,*(r2)+
  	add	$2,-(r2)
***************
*** 41,50 ****
  2:
  	mov	(sp)+,r2
  	mov	(sp)+,r1
! 	rts	r5
  
  flush:
! 	mov	(r5)+,r2
  	cmp	(r2)+,(r2)+
  flush1:
  
--- 42,53 ----
  2:
  	mov	(sp)+,r2
  	mov	(sp)+,r1
! 	mov	(sp)+,(sp)
! 	rts	pc
  
  flush:
! 	mov	2(sp),r2
! 	mov	(sp)+,(sp)
  	cmp	(r2)+,(r2)+
  flush1:
  
***************
*** 51,57 ****
  	clr	-(sp)			/ lseek(fout, (r2)L+, L_SET)
  	mov	2(r2),-(sp)		/	mov	(r2)+,0f
  	mov	(r2)+,-(sp)		/	mov	(r2)+,r1
! 	tst	(r2)+			/	mov	r1,0f+2		/ seek address
  	mov	fout,-(sp)		/	mov	fout,r0
  	jsr	pc,_lseek		/	sys	indir; 9f
  	add	$8.,sp			/	.data
--- 54,60 ----
  	clr	-(sp)			/ lseek(fout, (r2)L+, L_SET)
  	mov	2(r2),-(sp)		/	mov	(r2)+,0f
  	mov	(r2)+,-(sp)		/	mov	(r2)+,r1
! 	tst	(r2)+			/	mov	r1,0f+2
  	mov	fout,-(sp)		/	mov	fout,r0
  	jsr	pc,_lseek		/	sys	indir; 9f
  	add	$8.,sp			/	.data
***************
*** 58,68 ****
  					/9:	sys	lseek; 0:..; ..; 0
  					/	.text
  	cmp	-(sp),-(sp)		/ write(fout, <buf>, <len>)
! 	bic	$!777,r1
  	add	r2,r1		/ write address
  	mov	r1,-(sp)		/ { <buf> }
  	mov	r2,r0
! 	bis	$777,-(r2)
  	add	$1,(r2)		/ new seek addr
  	adc	-(r2)
  	cmp	-(r2),-(r2)
--- 61,71 ----
  					/9:	sys	lseek; 0:..; ..; 0
  					/	.text
  	cmp	-(sp),-(sp)		/ write(fout, <buf>, <len>)
! 	bic	$!1777,r1
  	add	r2,r1		/ write address
  	mov	r1,-(sp)		/ { <buf> }
  	mov	r2,r0
! 	bis	$1777,-(r2)
  	add	$1,(r2)		/ new seek addr
  	adc	-(r2)
  	cmp	-(r2),-(r2)
***************
*** 78,86 ****
  	mov	(sp)+,r1
  	tst	r0
  	jmi	wrterr
  
- 	rts	r5
- 
  wrterr:
  	mov	$8f-9f,-(sp)		/ write(1, ERRMSG, strlen(ERRMSG))
  	mov	$9f,-(sp)		/	mov	$1,r0
--- 81,88 ----
  	mov	(sp)+,r1
  	tst	r0
  	jmi	wrterr
+ 	rts	pc
  
  wrterr:
  	mov	$8f-9f,-(sp)		/ write(1, ERRMSG, strlen(ERRMSG))
  	mov	$9f,-(sp)		/	mov	$1,r0
***************
*** 104,110 ****
  	blo	1f
  	cmp	r4,$4000
  	blo	2f
! 	add	$usymtab-4000,r4
  	rts	pc
  2:
  	add	$symtab-1000,r4
--- 106,113 ----
  	blo	1f
  	cmp	r4,$4000
  	blo	2f
! 	add	usymtab,r4
! 	sub	$4000,r4
  	rts	pc
  2:
  	add	$symtab-1000,r4
***************
*** 121,129 ****
  	bgt	1f
  
  	mov	r1,-(sp)		/ protect r1 from library
! 	mov	$512.,-(sp)		/ read(fin, inbuf, 512)
  	mov	$inbuf,-(sp)		/	movb	fin,r0
! 	mov	fin,-(sp)		/	sys	read; inbuf; 512.
  	jsr	pc,_read		/	bes	3f
  	add	$6,sp
  	mov	(sp)+,r1
--- 124,132 ----
  	bgt	1f
  
  	mov	r1,-(sp)		/ protect r1 from library
! 	mov	$1024.,-(sp)		/ read(fin, inbuf, 1024)
  	mov	$inbuf,-(sp)		/	movb	fin,r0
! 	mov	fin,-(sp)		/	sys	read; inbuf; 1024.
  	jsr	pc,_read		/	bes	3f
  	add	$6,sp
  	mov	(sp)+,r1
diff -c as.old/as26.s as/as26.s
*** as.old/as26.s	Sun Feb  8 14:26:14 1987
--- as/as26.s	Sun Dec 24 02:41:14 1989
***************
*** 5,12 ****
  
  opline:
  	mov	r4,r0
! 	jsr	r5,betwen; 0; 177
! 		br 2f
  	cmp	r4,$5
  	beq	opeof
  	cmp	r4,$'<
--- 5,13 ----
  
  opline:
  	mov	r4,r0
! 	bmi	2f
! 	cmp	r0,$177
! 	bgt	2f
  	cmp	r4,$5
  	beq	opeof
  	cmp	r4,$'<
***************
*** 26,33 ****
  	beq	xpr
  	cmp	r0,$34		/ est data
  	beq	xpr
! 	jsr	r5,betwen; 5; 36
! 		br xpr
  	mov	2(r4),-(sp)
  	mov	r0,-(sp)
  	jsr	pc,readop
--- 27,36 ----
  	beq	xpr
  	cmp	r0,$34		/ est data
  	beq	xpr
! 	cmp	r0,$5
! 	blt	xpr
! 	cmp	r0,$36
! 	bgt	xpr
  	mov	2(r4),-(sp)
  	mov	r0,-(sp)
  	jsr	pc,readop
***************
*** 37,43 ****
  	clr	swapf
  	mov	$-1,rlimit
  	jmp	*1f-10.(r0)
! 
  1:
  	opl5
  	opl6
--- 40,46 ----
  	clr	swapf
  	mov	$-1,rlimit
  	jmp	*1f-10.(r0)
! 	.data
  1:
  	opl5
  	opl6
***************
*** 65,70 ****
--- 68,74 ----
  	xxpr
  	opl35
  	opl36
+ 	.text
  
  opeof:
  	mov	$1,line
***************
*** 115,121 ****
  	asr	(sp)
  	cmp	(sp),rlimit
  	blo	1f
! 	jsr	r5,error; 'x
  1:
  	bis	(sp)+,r2
  	bis	(sp)+,r2
--- 119,126 ----
  	asr	(sp)
  	cmp	(sp),rlimit
  	blo	1f
! 	mov	$'x,-(sp)
! 	jsr	pc,error
  1:
  	bis	(sp)+,r2
  	bis	(sp)+,r2
***************
*** 203,210 ****
  	sub	dot,r2
  	neg	r2
  	mov	r2,r0
! 	jsr	r5,betwen; -2; 175
! 		br 2f
  	add	$4,r2
  	br	1f
  
--- 208,217 ----
  	sub	dot,r2
  	neg	r2
  	mov	r2,r0
! 	cmp	r0,$-2
! 	blt	2f
! 	cmp	r0,$175
! 	bgt	2f
  	add	$4,r2
  	br	1f
  
***************
*** 216,223 ****
  dobranch:
  	sub	dot,r2
  	mov	r2,r0
! 	jsr	r5,betwen; -254.; 256.
! 		br 2f
  1:
  	bit	$1,r2
  	bne	2f
--- 223,232 ----
  dobranch:
  	sub	dot,r2
  	mov	r2,r0
! 	cmp	r0,$-254.
! 	blt	2f
! 	cmp	r0,$256.
! 	bgt	2f
  1:
  	bit	$1,r2
  	bne	2f
***************
*** 232,238 ****
  	jsr	pc,outw
  	rts	pc
  2:
! 	jsr	r5,error; 'b
  	clr	r2
  	br	3b
  
--- 241,248 ----
  	jsr	pc,outw
  	rts	pc
  2:
! 	mov	$'b,-(sp)
! 	jsr	pc,error
  	clr	r2
  	br	3b
  
***************
*** 309,315 ****
  	tst	(sp)+
  	rts	pc
  
- 
  /.globl
  opl23:
  	cmp	r4,$200
--- 319,324 ----
***************
*** 336,343 ****
  	mov	dot,savdot-4(r1)
  	tstb	passno
  	beq	1f
! 	jsr	r5,flush; txtp
! 	jsr	r5,flush; relp
  	mov	(sp),r2
  	asl	r2
  	add	$txtseek-[4*25],r2
--- 345,354 ----
  	mov	dot,savdot-4(r1)
  	tstb	passno
  	beq	1f
! 	mov	$txtp,-(sp)
! 	jsr	pc,flush
! 	mov	$relp,-(sp)
! 	jsr	pc,flush
  	mov	(sp),r2
  	asl	r2
  	add	$txtseek-[4*25],r2
***************
*** 344,355 ****
  	mov	r2,tseekp
  	mov	(r2),r0
  	mov	2(r2),r1
! 	jsr	r5,oset; txtp
  	add	$trelseek-txtseek,r2
  	mov	(r2),r0
  	mov	2(r2),r1
  	mov	r2,rseekp
! 	jsr	r5,oset; relp
  1:
  	mov	(sp)+,r0
  	mov	savdot-[2*25](r0),dot
--- 355,368 ----
  	mov	r2,tseekp
  	mov	(r2),r0
  	mov	2(r2),r1
! 	mov	$txtp,-(sp)
! 	jsr	pc,oset
  	add	$trelseek-txtseek,r2
  	mov	(r2),r0
  	mov	2(r2),r1
  	mov	r2,rseekp
! 	mov	$relp,-(sp)
! 	jsr	pc,oset
  1:
  	mov	(sp)+,r0
  	mov	savdot-[2*25](r0),dot
***************
*** 478,484 ****
  astar:
  	tst	(sp)
  	beq	1f
! 	jsr	r5,error; '*
  1:
  	mov	$10,(sp)
  	jsr	pc,readop
--- 491,498 ----
  astar:
  	tst	(sp)
  	beq	1f
! 	mov	$'*,-(sp)
! 	jsr	pc,error
  1:
  	mov	$10,(sp)
  	jsr	pc,readop
***************
*** 485,491 ****
  	jmp	4b
  
  errora:
! 	jsr	r5,error; 'a
  	rts	pc
  
  checkreg:
--- 499,506 ----
  	jmp	4b
  
  errora:
! 	mov	$'a,-(sp)
! 	jsr	pc,error
  	rts	pc
  
  checkreg:
***************
*** 504,516 ****
  	rts	pc
  
  errore:
! 	jsr	r5,error; 'e
  	rts	pc
  
  checkrp:
  	cmp	r4,$')
  	beq	1f
! 	jsr	r5,error; ')
  	rts	pc
  1:
  	jsr	pc,readop
--- 519,533 ----
  	rts	pc
  
  errore:
! 	mov	$'e,-(sp)
! 	jsr	pc,error
  	rts	pc
  
  checkrp:
  	cmp	r4,$')
  	beq	1f
! 	mov	$'),-(sp)
! 	jsr	pc,error
  	rts	pc
  1:
  	jsr	pc,readop
***************
*** 529,537 ****
  	ble	1f
  	sub	brdelt,r0
  1:
! 	jsr	r5,betwen; -254.; 256.
! 		br 1f
! 	br	2f
  1:
  	mov	r1,-(sp)
  	bic	$!7,(sp)
--- 546,555 ----
  	ble	1f
  	sub	brdelt,r0
  1:
! 	cmp	r0,$-254.
! 	blt	1f
! 	cmp	r0,$256.
! 	ble	2f
  1:
  	mov	r1,-(sp)
  	bic	$!7,(sp)
diff -c as.old/as27.s as/as27.s
*** as.old/as27.s	Sun Feb  8 14:26:14 1987
--- as/as27.s	Sun Dec 24 21:29:19 1989
***************
*** 15,29 ****
  	jsr	pc,readop
  1:
  	mov	r4,r0
! 	jsr	r5,betwen; 0; 177
! 		br .+4
! 	br	7f
  	movb	(r4),r0
  	tst	r0
  	bne	1f
  	tstb	passno
  	beq	1f
! 	jsr	r5,error; 'u
  1:
  	tst	overlaid
  	beq	0f
--- 15,31 ----
  	jsr	pc,readop
  1:
  	mov	r4,r0
! 	blt	6f
! 	cmp	r0,$177
! 	ble	7f
! 6:
  	movb	(r4),r0
  	tst	r0
  	bne	1f
  	tstb	passno
  	beq	1f
! 	mov	$'u,-(sp)
! 	jsr	pc,error
  1:
  	tst	overlaid
  	beq	0f
***************
*** 67,73 ****
  	rts	pc
  1:
  	jmp	*(r1)
! 
  esw1:
  	'+;	binop
  	'-;	binop
--- 69,75 ----
  	rts	pc
  1:
  	jmp	*(r1)
! 	.data
  esw1:
  	'+;	binop
  	'-;	binop
***************
*** 84,90 ****
  	2;	exnum1
  	'!;	binop
  	200;	0
! 
  binop:
  	cmpb	(sp),$'+
  	beq	1f
--- 86,92 ----
  	2;	exnum1
  	'!;	binop
  	200;	0
! 	.text
  binop:
  	cmpb	(sp),$'+
  	beq	1f
***************
*** 111,117 ****
  	jsr	pc,expres1
  	cmp	r4,$']
  	beq	1f
! 	jsr	r5,error; ']
  1:
  	mov	r3,r0
  	mov	r2,r1
--- 113,120 ----
  	jsr	pc,expres1
  	cmp	r4,$']
  	beq	1f
! 	mov	$'],-(sp)
! 	jsr	pc,error
  1:
  	mov	r3,r0
  	mov	r2,r1
***************
*** 128,134 ****
  	br	eoprnd
  1:
  	jmp	*(r5)
! 
  exsw2:
  	'+; exadd
  	'-; exsub
--- 131,137 ----
  	br	eoprnd
  1:
  	jmp	*(r5)
! 	.data
  exsw2:
  	'+; exadd
  	'-; exsub
***************
*** 142,148 ****
  	'^; excmbin
  	'!; exnot
  	200;  0
! 
  excmbin:
  	mov	r0,r3
  	br	eoprnd
--- 145,151 ----
  	'^; excmbin
  	'!; exnot
  	200;  0
! 	.text
  excmbin:
  	mov	r0,r3
  	br	eoprnd
***************
*** 154,165 ****
  	clc
  	ror	r2
  exlsh:
! 	jsr	r5,combin; relte2
  	als	r1,r2
  	br	eoprnd
  
  exmod:
! 	jsr	r5,combin; relte2
  	mov	r3,r0
  	mov	r2,r3
  	clr	r2
--- 157,170 ----
  	clc
  	ror	r2
  exlsh:
! 	mov	$relte2,r5
! 	jsr	pc,combin
  	als	r1,r2
  	br	eoprnd
  
  exmod:
! 	mov	$relte2,r5
! 	jsr	pc,combin
  	mov	r3,r0
  	mov	r2,r3
  	clr	r2
***************
*** 169,202 ****
  	br	eoprnd
  
  exadd:
! 	jsr	r5,combin; reltp2
  	add	r1,r2
  	br	eoprnd
  
  exsub:
! 	jsr	r5,combin; reltm2
  	sub	r1,r2
  	br	eoprnd
  
  exand:
! 	jsr	r5,combin; relte2
  	com	r1
  	bic	r1,r2
  	br	eoprnd
  
  exor:
! 	jsr	r5,combin; relte2
  	bis	r1,r2
  	br	eoprnd
  
  exmul:
! 	jsr	r5,combin; relte2
  	mpy	r2,r1
  	mov	r1,r2
  	br	eoprnd
  
  exdiv:
! 	jsr	r5,combin; relte2
  	mov	r3,r0
  	mov	r2,r3
  	clr	r2
--- 174,213 ----
  	br	eoprnd
  
  exadd:
! 	mov	$reltp2,r5
! 	jsr	pc,combin
  	add	r1,r2
  	br	eoprnd
  
  exsub:
! 	mov	$reltm2,r5
! 	jsr	pc,combin
  	sub	r1,r2
  	br	eoprnd
  
  exand:
! 	mov	$relte2,r5
! 	jsr	pc,combin
  	com	r1
  	bic	r1,r2
  	br	eoprnd
  
  exor:
! 	mov	$relte2,r5
! 	jsr	pc,combin
  	bis	r1,r2
  	br	eoprnd
  
  exmul:
! 	mov	$relte2,r5
! 	jsr	pc,combin
  	mpy	r2,r1
  	mov	r1,r2
  	br	eoprnd
  
  exdiv:
! 	mov	$relte2,r5
! 	jsr	pc,combin
  	mov	r3,r0
  	mov	r2,r3
  	clr	r2
***************
*** 205,211 ****
  	br	eoprnd
  
  exnot:
! 	jsr	r5,combin; relte2
  	com	r1
  	add	r1,r2
  	br	eoprnd
--- 216,223 ----
  	br	eoprnd
  
  exnot:
! 	mov	$relte2,r5
! 	jsr	pc,combin
  	com	r1
  	add	r1,r2
  	br	eoprnd
***************
*** 230,236 ****
  1:
  	tst	r0
  	beq	1f
! 	cmp	(r5)+,$reltm2
  	bne	2f
  	cmp	r0,r3
  	bne	2f
--- 242,248 ----
  1:
  	tst	r0
  	beq	1f
! 	cmp	r5,$reltm2
  	bne	2f
  	cmp	r0,r3
  	bne	2f
***************
*** 237,247 ****
  	mov	$1,r3
  	br	2f
  1:
- 	tst	(r5)+
  	clr	r3
  2:
  	bis	(sp)+,r3
! 	rts	r5
  combin1:
  	mov	r1,-(sp)
  	clr	maxtyp
--- 249,258 ----
  	mov	$1,r3
  	br	2f
  1:
  	clr	r3
  2:
  	bis	(sp)+,r3
! 	rts	pc
  combin1:
  	mov	r1,-(sp)
  	clr	maxtyp
***************
*** 250,267 ****
  	mpy	$6,r1
  	mov	r3,r0
  	jsr	pc,maprel
! 	add	(r5)+,r0
  	add	r1,r0
  	movb	(r0),r3
  	bpl	1f
  	cmp	r3,$-1
  	beq	2f
! 	jsr	r5,error; 'r
  2:
  	mov	maxtyp,r3
  1:
  	mov	(sp)+,r1
! 	rts	r5
  
  maprel:
  	cmp	r0,$40
--- 261,279 ----
  	mpy	$6,r1
  	mov	r3,r0
  	jsr	pc,maprel
! 	add	r5,r0
  	add	r1,r0
  	movb	(r0),r3
  	bpl	1f
  	cmp	r3,$-1
  	beq	2f
! 	mov	$'r,-(sp)
! 	jsr	pc,error
  2:
  	mov	maxtyp,r3
  1:
  	mov	(sp)+,r1
! 	rts	pc
  
  maprel:
  	cmp	r0,$40
***************
*** 279,285 ****
  	mov	$1,r0
  1:
  	rts	pc
! 
  X = -2
  M = -1
  reltp2:
--- 291,297 ----
  	mov	$1,r0
  1:
  	rts	pc
! 	.data
  X = -2
  M = -1
  reltp2:
***************
*** 305,308 ****
  	.byte 0, X, X, X, X, X
  	.byte 0, X, X, X, X, X
  	.byte 0, X, X, X, X, X
! 
--- 317,320 ----
  	.byte 0, X, X, X, X, X
  	.byte 0, X, X, X, X, X
  	.byte 0, X, X, X, X, X
! 	.text
diff -c as.old/as28.s as/as28.s
*** as.old/as28.s	Sun Feb  8 14:26:14 1987
--- as/as28.s	Sun Dec 24 15:13:11 1989
***************
*** 2,12 ****
  /
  
  / as8 -- PDP-11 assembler pass 2
! 
  qnl:	<?\n>
  a.out:	<a.out\0>
  .even
- .data
  a.outp:	a.out
  
  a.tmp1:	0
--- 2,11 ----
  /
  
  / as8 -- PDP-11 assembler pass 2
! 	.data
  qnl:	<?\n>
  a.out:	<a.out\0>
  .even
  a.outp:	a.out
  
  a.tmp1:	0
***************
*** 67,79 ****
  maxtyp:	.=.+2
  relfil:	.=.+2
  ibufp:	.=.+2
! txtp:	.=.+8+512.
! relp:	.=.+8+512.
  swapf:	.=.+2
  rlimit:	.=.+2
  passno:	.=.+2
  endtable:.=.+2
! usymtab:.=.+20.
! end:
! 
  .text
--- 66,78 ----
  maxtyp:	.=.+2
  relfil:	.=.+2
  ibufp:	.=.+2
! txtp:	.=.+8+1024.
! relp:	.=.+8+1024.
  swapf:	.=.+2
  rlimit:	.=.+2
  passno:	.=.+2
  endtable:.=.+2
! inbuf:	.=.+1024.
! .data
! usymtab: _end
  .text
diff -c as.old/as29.s as/as29.s
*** as.old/as29.s	Tue Aug 22 17:12:29 1989
--- as/as29.s	Sun Dec 24 15:06:33 1989
***************
*** 229,234 ****
--- 229,235 ----
  27;000000 /.bss
  32;000000 /.comm
  
+ 	.text
  start:
  	mov	(sp)+,r0
  	tst	(sp)+
***************
*** 263,273 ****
  	mov	r1,a.tmp1
  	mov	(sp)+,a.tmp2
  	mov	(sp)+,a.tmp3
! 	jsr	r5,ofile; a.tmp1
  	mov	r0,txtfil
! 	jsr	r5,ofile; a.tmp2
  	mov	r0,fbfil
! 	jsr	r5,ofile; a.tmp3
  	mov	r0,symf
  	mov	r0,fin
  
--- 264,277 ----
  	mov	r1,a.tmp1
  	mov	(sp)+,a.tmp2
  	mov	(sp)+,a.tmp3
! 	mov	a.tmp1,-(sp)
! 	jsr	pc,ofile
  	mov	r0,txtfil
! 	mov	a.tmp2,-(sp)
! 	jsr	pc,ofile
  	mov	r0,fbfil
! 	mov	a.tmp3,-(sp)
! 	jsr	pc,ofile
  	mov	r0,symf
  	mov	r0,fin
  
***************
*** 279,292 ****
  	mov	(sp)+,r1
  	tst	r0
  	jpl	1f
! 
! 	jsr	r5,filerr; a.outp
  1:
  	mov	r0,fout
  	jmp	go
! 
  a.outp1:	a.out
! 
! / overlaid buffer
! inbuf	= start
! .	= inbuf+512.
--- 283,293 ----
  	mov	(sp)+,r1
  	tst	r0
  	jpl	1f
! 	mov	a.outp,-(sp)
! 	jsr	pc,filerr
  1:
  	mov	r0,fout
  	jmp	go
! 	.data
  a.outp1:	a.out
! 	.text



More information about the Comp.bugs.2bsd mailing list