2.9BSD/usr/src/ucb/lisp/v7source/dstuf.m11

; Copyright (c) 1981 Harvard-Radcliffe Student Timesharing System
; Science Center, Harvard University

.page
	.title	early	data
;this file is the data segment of pdp-11 lisp
;it contains the sharable and non-sharable data
;
;	forrest w howard, jr.
;
;Version 7 conditional code added 3/4/81 by s. dyer harvard science center

	.mcall	$exit,$fork,$read,$write,$open,$create,$exec,$break,$seek
	.mcall	$indir,$close,$wait,$sig,$stty,$gtty

	.psect	dsubr con 


starbc=.
.if	ne,multiseg
	firpage=.
.endc


	.psect	ddtpr con
.if	eq,multiseg
	firpage=.
.endc
	frstdtpr=.

	.psect	datom con
	frstatom=.

	oblist=anil		;initial oblist assignment
	i=0
.rept	hash
	defobl	\i
	i=i+1
.endr
;this is for nil=0 hack
.if	ne,nilas0
	.psect	nil
anil=0
.if	ne,multiseg
	anil
	anil
.endc
	anil
	.asclc	nil
	.even
	.iff
	anil=atmnil
.endc

	.psect	usbydat con
char:	.byte	0
nsext:	.byte	0	;non zero if we're using nstk reserve
intflg:	.byte	0	;non zero if we've been interpupted
noint:	.byte	0	;1 if cannot do panic inter
tracflg:.byte	0	;1 if traceing stuff
keybin:	.byte	0	;1 if getting user input
.if	ne,fpsim
 sign:	.byte	0	;sign indicator
.endc



	.psect	uswddat con


where:	.word	init		;where to jump to
prompt:	.word	eprompt		;-> or4 <-
bprompt:.word	beprompt	;:> of <:
.if	ne,xfer
 readh:	.word	elist		;use the list approach
.iff
 readh:	.word	readr		;readr or evalquote
.endc
protocell: .word	0	;for protocol
rbktf:	.word	0		;for right bracket
gcolf:	.word	0		;if non zero, gcol in process
fltdmp:	.word 0,0		;for floating point stuff
gennum:	.word	0,177777	;for gensym
	.word	0		;top of pidsav
pidsav:	.word	0		;for process id
brkl:	.word	0,0		;break level
;itop:	.word	lastiloc+2	;for imem management
.if	ne,jcbms
frmptr:	.word	0	;for spaghetti stacks
.endc
.if	ne,fpsim
 fpstuf:	.word 0,0,0
	.globl	sign,fpstuf
.endc

;system indirect call setups

$$seek:	$seek
	.word	0,0
.if	ne, version7		; i.e. V7 seek ## s. dyer. 3/4/81
	.word	0		; has three in-line words
.endc

$$break: $break
	.word	<^ph datom>	; datom has 2 added to end, to prevent
				; stack colission!!

$$open:	$open
	.word	0,0
$$create: $create
	.word	0,755
$$read:	$read
	.word	0
	.word	0

$$write:	$write
	.word	0,0
$$sig: $sig
	.word	0,0

saveloc:.word	0		;for temporary storage
nptop:	.word	0		;top of name stack
nplength: .word nplen		;lenth of namestack
npbottom:
cptop:	.word	0		;highest loc in cstk, lowest in nstk
npres:	.word	0		;where overflow nstk starts
ltop:	.word	0		;for recursive func calls



frdtpr:				;free lists
fdtpr:	anil
mfdtpr:	^d50			;minimum from gcol return
mfnumb:	^d50
cnumber:.word	0		;count used by gcol
cdtpr:	.word	0
fratom:
fatom:	onlyatom
frnumber:
fnumber:	anil
fbcd:
frbcd:	anil






	.psect	uswdda

nplim:	.word	0		;used by nstk overflow
lnleng:	.word	^d67		;initial length of line

	.psect	usbydat con
	.even
strbuf:	.blkb	strlen
strbend: .blkb	30
	.even
tib:	.blkb	tblen		;tty input buffer
	.even
	.word 0			;allow for slight overflow
tob:	.blkb	tblen		;tty output buffer
	.even
	.word	0
eob:	.blkb	^d22		;standard error output buffer
	.word	0
qmap:	.blkb	^d256		;store types of pages

	.psect	usport con
piport:	.word	0,tib,tib,0,tblen
poport:	.word	202,tob,tob,tblen,tblen
erport:	.word	204,eob,eob,^d20,^d20
.rept	nports-3
	.blkw	5
.endr



	.psect	usbydat con
supcol:	.byte	0		;in system, used to tell whether full collection on



	.psect	shrwdda	con

master:		.asciz	?/usr/lib/lisp/?
;erf:		.ascii ?/sys/lisp/bin/?
erf:		.ascii ?/usr/ucb/lisp/?
.if	ne,xfer
;terf:		.asciz	?errorfil.xout?
terf:		.asciz	?xlisp.err?
.iff
;terf:		.asciz ?errorfil.out?
terf:		.asciz ?lisp.err?
.endc
eprompt:	.byte	12
		.asciz	/->/
beprompt:	.asciz	/:>/
eqprompt:	.byte	12
		.asciz	/<-/
beqprompt:	.asciz	/<:/
linefeed:	.byte	12,0
genstr:		.asciz	/gensym/
protostr:	.asciz	/l110.protocol/
.if	ne,multiseg
	.globl	lispbin
lispbin:	.asciz ?./l1100.out?
.endc
broken:		.asciz	<12>/breaking	/
sportsym:	.asciz	/port/
sbcdout:	.ascii /binary#/
savenm:		.asciz	/code/
sspc:		.asciz / /
spersda:	.asciz /. /
dq:		.asciz /"/



.if	df,gctrace
	.globl	gcex,gcem


gcex:		.asciz	<12>/leaving gcol/<12>
gcem:		.asciz	<12>/entering gcol/<12>

.endc
.if	ne,xfer
	.psect	shrwdda

	.globl	xprog,xfile,xvect,xbcdm

xprog:	.asciz	?/sys/lisp/bin/xprog?
xbcdm:	.asciz	?/sys/lisp/bin/bcdmap?
	.even
xvect:	.word	xprog,xfile,0

	.psect	usbyda

xfile:	.asciz	/******/

.endc