.globl sin, cos, log, exp, atan, pow, sqrt
indir = 0 /for indirect sys calls. (not in as)
mov $1,prfile /initial print file
cmp (sp),$2 /is there a file argument
<Cannot open file\n\0>; .even
<too many lines\n\0>; .even
rdline: / read input (file or tty) to carr. ret.
bhis 2f / bad check, but a check
<out of symbol space\n\0>; .even
<label not found\n\0>; .even
/ convention: jsr pc,subrout /test
mov $iflev,ifp /added for if..else..fi
cmp r4,$espace+20 / out of code space?
<out of code space\n\0>; .even
<out of code space\n\0>; .even
stprompt / prompt is like print except for cr
.if scope / for plotting on tektronix
mov *ifp,r1 /for jump around if
jsr r5,error; <if...else...fi imbalance\n\0>; .even
mov $_tra,(r4)+ /jump around else side
mov r4+,-(sp) / save hole
mov r4,(r1) /fill in jump to else
mov (sp)+,*ifp /save hole for fi
stedit: / enter the regular editor <ed>
mov $lintab,r0 / zero out line table during edit
mov forp,(r4)+ / overlay w _asgn
cmp (r4)+,(r4)+ / _tra ..
jsr r5,error; <for/next imbalance\n\0>; .even
/ bas2 -- expression evaluation
/ assignment right to left
/ relation extended relation
jsr r5,error; <reserved name\n\0>; .even
/ try to fix illegal symbol bug:
_save: / _save is a _list to the file named on the bas command
1: <Cannot create b.out\n\0>; .even
/ probably vistigal?? mov r3,0f
<out of space\n\0>; .even
movf r1,r0 / dup for _and in extended rel
<Bad exponentiation\n\0>; .even
<subscript out of range\n\0>; .even
<out of symbol space\n\0>; .even
movf (r3)+,r1 / r1 used in extended rel
jsr r5,error;<used before set\n\0>; .even
/ bas4 -- builtin functions
jsr pc,getloc / label not found diagnostic
<Bad arctangent\n\0>; .even
<Bad square root arg\n\0>; .even
/ bas4 -- old library routines
mov $'.,r0 / faking overflow
/ new command "dump" which dumps symbol table values by name
mov $12.*14.+symtab-14.,r4
argname: <b.out\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0>
<prom> / prompt is like print without \n (cr)
sysseek: sys lseek; 0; seekx: 0; 0
syswrit: sys write; wbuf: 0; wlen: 0
sysread: sys read; rbuf: 0; rlen: 0
sysopen: sys open; ofile: 0 ; omode: 0
syscreat: sys creat; cfile: 0; cmode: 0
splimit: .=.+2 / statement size limit
iflev: .=.+20. / nested if compile stack: 10 deep
ifp: .=.+2 / current pointer to iflev
prfile: .=.+2 / output from _list or _save
lastpr: .=.+8 / last printed number
func: .=.+2 / alternate functions, eg: _list or _save
seeka: .=.+2 / seek offset 1
symtab: .=.+2800.; esymtab: / symbol=7wds; symtab for 200
space: .=.+8000.; espace: / code space
exline: .=.+1000.; eexline: / line execute space
lintab: .=.+1800.; elintab: / 3wds per statement = 300 stmts
iobuf: fi: .=.+518. / should be acquired??