4.3BSD/usr/lib/lisp/autorun/mc500

" 
|
| Lisp startup program.
| insert two new parameters on the argv[] list and re-exec lisp
|
	.globl	exece
start:
	movl	sp@, d1		| get argc (# of parameters on stack)
	lea	sp@(4),a3	| save the address of argv[]
	asll	#2,d1		| multiply argc by 4 to get # of bytes of argv ptrs on stack
	lea	a3@(4,d1:l),a4	| save the address of arge[] (it's after all of the argv's)
	movl	#flag,a3@-	| insert (push) the address of the flag string on to top of argv stack
	movl	#lisp,a3@-	| insert (push) the address of the lisp string on to top of argv stack
	movl	a3,sp		| set the stack to point to the new stack head.
|
|	Set up a call to exece
	pea	a4@		| push the address of arge on the stack
	pea	a3@		| push the address of argv on the stack
	movl	#lisp,sp@-	| push the name of the program on the stack
	jsr	exece		| now call exece, you've got the right parameters
exece:
	moveq    #0x3b,d0
	movl	a7@(4),d1
	movl	a7@(8),a0
	movl	a7@(12),a1
	trap	#0
	movl	#0,d0
	movl	d0,d1
	trap	#0		| exit if exec fails
|
| call exit on a exec failure without losing the return code.
| we should NEVER return from _exit
|
flag:	.asciz	\"-f\"
lisp:	.asciz	\"/usr/ucb/lisp\"
.even
"