V2/cmd/fstrip.s

Compare this file to the similar file:
Show the results in this format:

/ fstrip -- remove fortran internal symbols

.globl	fopen
.globl	getw
.globl	putw
.globl	flush

	mov	(sp)+,argc
	tst	(sp)+
	br	loop
unloop:
	sys	unlink; s.tmp
loop:
	dec	argc
	bgt	1f
	sys	exit
1:
	mov	(sp)+,r4
	mov	r4,r0
	jsr	r5,fopen; ibuf
	bcc	1f
	jsr	r5,mesg; <open error: \0>; .even
	br	loop
1:
	mov	$'a,r1
1:
	movb	r1,s.tmp+8
	sys	stat; s.tmp; obuf
	bec	2f
	sys	creat; s.tmp; 10
	bec	1f
2:
	inc	r1
	cmp	r1,$'z
	blos	1b
	jsr	r5,mesg; <can't create temp file for \0>; .even
	sys	exit
1:
	mov	r0,obuf
	clr	obuf+2
	clr	obuf+4
	jsr	r5,getw; ibuf
	cmp	r0,magic
	beq	1f
	jsr	r5,mesg; <improper format: \0>; .even
	br	unloop
1:
	jsr	r5,putw; obuf
	jsr	r5,getw; ibuf
	mov	r0,r2
	jsr	r5,putw; obuf
	jsr	r5,getw; ibuf
	add	r0,r2
	jsr	r5,putw; obuf
	jsr	r5,getw; ibuf
	jsr	r5,putw; obuf
	jsr	r5,getw; ibuf
	jsr	r5,putw; obuf
	jsr	r5,getw; ibuf
	jsr	r5,putw; obuf
	jsr	r5,getw; ibuf
	jsr	r5,putw; obuf
	jsr	r5,getw; ibuf
	cmp	r0,$1
	bne	9f
	asr	r2		/ no relocation
9:
	jsr	r5,putw; obuf
1:
	jsr	r5,getw; ibuf
	bcc	2f
	jsr	r5,mesg; <unexpected EOF: \0>; .even
	sys	exit
2:
	jsr	r5,putw; obuf
	dec	r2
	bne	1b
	clr	r2
1:
	jsr	r5,getsym
	bcs	1f
	cmpb	symbol+1,$'0
	blo	3f		/ not digit
	cmpb	symbol+1,$'9
	bhi	3f
	cmpb	symbol,$'t
	beq	1b
	cmpb	symbol,$'d
	beq	1b
	cmpb	symbol,$'c
	beq	1b
3:
	jsr	r5,putsym
	add	$14,r2
	br	1b
1:
	jsr	r5,flush; obuf
	mov	obuf,r0
	sys	close
	mov	ibuf,r0
	sys	close
	mov	r4,0f
	sys	creat; 0:..; 0		/ same mode as before
	bec	1f
	jsr	r5,mesg; <can't rewrite: \0>; .even
	jmp	unloop
1:
	mov	r0,ibuf
	sys	open; s.tmp; 0
	bec	1f
	jsr	r5,mesg; <can't read temp file for: \0>; .even
	sys	exit
1:
	mov	r0,ibuf+2
	sys	read; obuf; 512.
	mov	r2,obuf+10	/ new data
	br	2f
1:
	mov	ibuf+2,r0
	sys	read; obuf; 512.
2:
	mov	r0,0f
	beq	1f
	mov	ibuf,r0
	sys	write; obuf; 0:..
	br	1b
1:
	mov	ibuf,r0
	sys	close
	mov	ibuf+2,r0
	sys	close
	jmp	unloop

mesg:
	movb	(r5)+,ch
	beq	1f
	mov	$1,r0
	sys	write; ch; 1
	br	mesg
1:
	inc	r5
	bic	$1,r5
	mov	r4,r1
1:
	movb	(r1)+,ch
	beq	1f
	mov	$1,r0
	sys	write; ch; 1
	br	1b
1:
	mov	$1,r0
	sys	write; qnl; 1
	rts	r5

getsym:
	mov	r5,-(sp)
	mov	$symbol,r5
	mov	$6,-(sp)
1:
	jsr	r5,getw; ibuf
	bcs	2f
	mov	r0,(r5)+
	dec	(sp)
	bne	1b
	tst	(sp)+
	mov	(sp)+,r5
	rts	r5
2:
	tst	(sp)+
	mov	(sp)+,r5
	sec
	rts	r5

putsym:
	mov	r5,-(sp)
	mov	$symbol,r5
	mov	$6,-(sp)
1:
	mov	(r5)+,r0
	jsr	r5,putw; obuf
	dec	(sp)
	bne	1b
	tst	(sp)+
	mov	(sp)+,r5
	rts	r5

s.tmp:
	</tmp/stma\0>
qnl:
	<\n>
	.even
magic:
	br	.+20

.bss
argc:	.=.+2
symbol:	.=.+14
ibuf:	.=.+518.
obuf:	.=.+518.
ch:	.=.+2