File:  [CSRG BSD Unix] / 3BSD / cmd / lisp / qfuncl.s
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 16:12:53 2018 UTC (8 years, 1 month ago) by root
Branches: MAIN, CSRG
CVS tags: HEAD, BSD3
BSD 3.0

#  opus 30 compiler call to ??? interface routines
	.globl	__qf0
__qf0:
	subl3	$4,r6,r7
	jbr 	__qfuncl

	.globl	__qf1
__qf1:
	subl3	$8,r6,r7
	jbr 	__qfuncl

	.globl	__qf2
__qf2:
	subl3	$12,r6,r7
	jbr 	__qfuncl

	.globl	__qf3
__qf3:
	subl3	$16,r6,r7
	jbr 	__qfuncl

	.globl	__qf4
__qf4:
	subl3	$20,r6,r7
	jbr 	__qfuncl

	.globl	__qfuncl
__qfuncl:				# quick function call
	cmpl	r6,_nplim		# make sure stack ok
	blss	on1
	calls	$0,_namerr
on1:	movl	(r7),r0			# bring in addr of atom
	pushl	r0			# stack addr of atom of fcn to call
	movl	8(r0),r0		# bring in fcn binding addr
	jleq	nonexf			# jump if fcn non existant
	ashl	$-9,r0,r1		# see if bcd
	cmpb	$5,_typetable+1[r1]	# we are calling
	jeql	gotbcd
hackit:
	calls	$1,_Lfuncal		# call lisp stuff
	movl	r7,r6			# restore np to top
	rsb				# return to callee
gotbcd:
	addl2	$4,r7			# inc lbot by one nament
	calls	$1,*(r0)		# call code
	movab	-4(r7),r6		# restore np to top
	rsb	 			# return

nonexf: # non existant function, call c function to take care of it,
	# we could process it here but wish to minimize assembly language
	# code.
	# we should never return from this call
	# the addr of the atom is already stacked

	calls	$1,_Undeff		# call handler
	clrl	r0			# return nil to compiled code
	rsb				# if ever should return here

	.globl	__erthrow		# errmessage for uncaught throws
__erthrow: 
	.byte	'U,'n,'c,'a,'u,'g,'h,'t,' ,'t,'h,'r,'o,'w
	.byte	' ,'f,'r,'o,'m,' ,'c,'o,'m,'p,'i,'l,'e,'d
	.byte	' ,'c,'o,'d,'e,0

	.globl _tynames
_tynames:
	.long	0				# nothing here
	.long	_lispsys+20*4	# str_name
	.long	_lispsys+21*4	# atom_name
	.long	_lispsys+19*4	# int_name
	.long	_lispsys+23*4	# dtpr_name
	.long	_lispsys+22*4	# doub_name
	.long	_lispsys+58*4	# funct_name
	.long	_lispsys+83*4	# port_name
	.long	_lispsys+47*4	# array_name
	.long	0				# nothing here
	.long	_lispsys+50*4	# sdot_name
	.long	_lispsys+53*4	# val_nam







unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.