mirror of
https://github.com/DoctorWkt/unix-jun72.git
synced 2026-04-14 07:50:43 +00:00
Doug Merritt has provided all of his reconstructed files, and Warren has
compared them to his set. Both sets had errors, and having the two was immensely helpful. This commit checks in the new files and the ones from Warren's set which needed to be modified to fix mistakes.
This commit is contained in:
@@ -344,3 +344,4 @@ isymtab:
|
||||
blo 1b
|
||||
clr (r0)+
|
||||
rts pc
|
||||
|
||||
|
||||
@@ -62,3 +62,4 @@ ibuf: .=.+512.
|
||||
obuf: .=.+512.
|
||||
fin: .=.+2
|
||||
.text
|
||||
|
||||
|
||||
@@ -32,11 +32,3 @@ chmerr:
|
||||
sys exit
|
||||
|
||||
1: <?\n>
|
||||
q 1f
|
||||
jsr pc,1b
|
||||
1:
|
||||
mov (sp)+,r0
|
||||
add $'0,r0
|
||||
jsr pc,putc
|
||||
rts pc
|
||||
|
||||
|
||||
@@ -2,32 +2,3 @@
|
||||
|
||||
sys exit
|
||||
|
||||
; 9:
|
||||
mov r1,frlist(r0)
|
||||
mov exp2(r0),r0
|
||||
add $strbuf,r0
|
||||
mov r0,l(r1)
|
||||
mov $frlist-2,r1
|
||||
1: mov (r1),r1
|
||||
tst r1
|
||||
beq 1f
|
||||
mov $strbuf,a(r1)
|
||||
mov $strbuf,l(r1)
|
||||
br 1b
|
||||
1:
|
||||
mov (sp)+,r1
|
||||
mov (sp)+,r0
|
||||
rts pc
|
||||
/
|
||||
/
|
||||
.bss
|
||||
stats: .=.+16.
|
||||
useful: .=.+2
|
||||
hdrptr: .=.+2 /do not move me
|
||||
frlist: .=hdrptr+32.
|
||||
frend:
|
||||
headers:.=hdrptr+512.
|
||||
headend:
|
||||
strbuf: .=.+4000
|
||||
strend:
|
||||
end:
|
||||
|
||||
1370
src/cmd/dc1.s
Normal file
1370
src/cmd/dc1.s
Normal file
File diff suppressed because it is too large
Load Diff
@@ -90,3 +90,4 @@ stbuf: .=.+40.
|
||||
buf: .=.+11.
|
||||
ch: .=.+1
|
||||
ch1: .=.+1
|
||||
|
||||
|
||||
561
src/cmd/ed2.s
Normal file
561
src/cmd/ed2.s
Normal file
@@ -0,0 +1,561 @@
|
||||
/ ed2 -- text editor
|
||||
|
||||
address:
|
||||
clr minflg
|
||||
clr addr
|
||||
|
||||
ad1:
|
||||
jsr r5,switch; addrt
|
||||
tst minflg
|
||||
bne 9f
|
||||
tst addr
|
||||
beq 1f
|
||||
tst (r5)+
|
||||
1:
|
||||
rts r5
|
||||
|
||||
addrt:
|
||||
' ; ad1
|
||||
11; ad1
|
||||
'+; ad1
|
||||
'/; fsrch
|
||||
'?; bsrch
|
||||
'-; amin
|
||||
'.; adot
|
||||
'$; adol
|
||||
'0; num0
|
||||
'1; num1
|
||||
'2; num1
|
||||
'3; num1
|
||||
'4; num1
|
||||
'5; num1
|
||||
'6; num1
|
||||
'7; num1
|
||||
'8; num1
|
||||
'9; num1
|
||||
''; amark
|
||||
'^; up1
|
||||
0
|
||||
|
||||
adot:
|
||||
jsr r5,addrel; dot
|
||||
br ad1
|
||||
|
||||
adol:
|
||||
jsr r5,addrel; dol
|
||||
br ad1
|
||||
|
||||
up1:
|
||||
mov dot,r1
|
||||
cmp r1,zero
|
||||
beq 9f
|
||||
tst -(r1)
|
||||
mov r1,f
|
||||
jsr r5,addrel; f
|
||||
br ad1
|
||||
|
||||
9: jmp error
|
||||
|
||||
fsrch:
|
||||
jsr r5,compile
|
||||
mov dot,-(sp)
|
||||
1:
|
||||
add $2,(sp)
|
||||
cmp (sp),dol
|
||||
blos 2f
|
||||
mov zero,(sp)
|
||||
2:
|
||||
cmp (sp),zero
|
||||
beq 2f
|
||||
mov (sp),r4
|
||||
jsr r5,execute
|
||||
br 2f
|
||||
br 3f
|
||||
2:
|
||||
cmp (sp),dot
|
||||
bne 1b
|
||||
br 9b
|
||||
|
||||
bsrch:
|
||||
jsr r5,compile
|
||||
mov dot,-(sp)
|
||||
1:
|
||||
sub $2,(sp)
|
||||
cmp (sp),zero
|
||||
bhis 2f
|
||||
mov dol,(sp)
|
||||
2:
|
||||
cmp (sp),zero
|
||||
beq 2f
|
||||
mov (sp),r4
|
||||
jsr r5,execute
|
||||
br 2f
|
||||
br 3f
|
||||
2:
|
||||
cmp (sp),dot
|
||||
bne 1b
|
||||
br 9b
|
||||
3:
|
||||
mov (sp)+,f
|
||||
jsr r5,addrel; f
|
||||
br ad1
|
||||
|
||||
addrel:
|
||||
add minflg,addr
|
||||
bne 9b
|
||||
mov *(r5)+,addr
|
||||
rts r5
|
||||
|
||||
amin:
|
||||
tst minflg
|
||||
bne 9f
|
||||
inc minflg
|
||||
jmp ad1
|
||||
|
||||
num0:
|
||||
mov $8.,-(sp)
|
||||
br 1f
|
||||
|
||||
num1:
|
||||
mov $10.,-(sp)
|
||||
1:
|
||||
mov r1,peekc
|
||||
clr r3
|
||||
1:
|
||||
jsr r5,getc
|
||||
cmp r1,$'0
|
||||
blt 1f
|
||||
cmp r1,$'9
|
||||
bgt 1f
|
||||
mpy (sp),r3
|
||||
sub $'0,r1
|
||||
add r1,r3
|
||||
br 1b
|
||||
1:
|
||||
mov r1,peekc
|
||||
tst addr
|
||||
bne 1f
|
||||
mov zero,addr
|
||||
1:
|
||||
asl r3
|
||||
tst minflg
|
||||
beq 1f
|
||||
clr minflg
|
||||
neg r3
|
||||
1:
|
||||
add r3,addr
|
||||
jmp ad1
|
||||
|
||||
9: jmp error
|
||||
8: jmp advanc
|
||||
|
||||
amark:
|
||||
jsr r5,getc
|
||||
jsr r5,findk
|
||||
bne 9b
|
||||
mov [kaddr-kname](r2),r2
|
||||
mov zero,r4
|
||||
1:
|
||||
mov (r4)+,r3
|
||||
bic $1,r3
|
||||
cmp r2,r3
|
||||
beq 2f
|
||||
cmp r4,dol
|
||||
blos 1b
|
||||
br 9b
|
||||
2:
|
||||
tst -(r4)
|
||||
mov r4,f
|
||||
jsr r5,addrel; f
|
||||
jmp ad1
|
||||
|
||||
findk:
|
||||
clr -(sp)
|
||||
mov $kname,r2
|
||||
1:
|
||||
tst (r2)
|
||||
beq 2f
|
||||
cmp r1,(r2)
|
||||
beq 3f
|
||||
tst (r2)+
|
||||
cmp r2,$ekname
|
||||
blos 1b
|
||||
clr r2
|
||||
2:
|
||||
inc (sp)
|
||||
3:
|
||||
tst (sp)+
|
||||
rts r5
|
||||
|
||||
findka:
|
||||
mov $kaddr,r1
|
||||
1:
|
||||
cmp (r1)+,r0
|
||||
beq 2f
|
||||
cmp r1,$ekaddr
|
||||
blos 1b
|
||||
clr r1
|
||||
rts r5
|
||||
2:
|
||||
tst -(r1)
|
||||
rts r5
|
||||
|
||||
printn:
|
||||
mov r0,-(sp)
|
||||
mov r1,-(sp)
|
||||
clr r0
|
||||
mov count,r1
|
||||
mov $linebuf,r3
|
||||
jsr r5,1f
|
||||
movb $'\n,(r3)+
|
||||
jsr r5,print; linebuf
|
||||
mov (sp)+,r1
|
||||
mov (sp)+,r0
|
||||
rts r5
|
||||
|
||||
1:
|
||||
clr r0
|
||||
dvd $10.,r0
|
||||
mov r1,-(sp)
|
||||
mov r0,r1
|
||||
beq 1f
|
||||
jsr r5,1b
|
||||
1:
|
||||
add $'0,(sp)
|
||||
movb (sp)+,(r3)+
|
||||
rts r5
|
||||
|
||||
set.:
|
||||
tst adrflg
|
||||
bne testa
|
||||
br 1f
|
||||
|
||||
set1d:
|
||||
tst adrflg
|
||||
bne testa
|
||||
mov zero,r4
|
||||
cmp r4,dol
|
||||
bhis 9b
|
||||
tst (r4)+
|
||||
mov r4,addr1
|
||||
1:
|
||||
mov dol,addr2
|
||||
rts r5
|
||||
|
||||
set.d:
|
||||
tst adrflg
|
||||
bne testa
|
||||
mov dot,r4
|
||||
mov r4,addr1
|
||||
mov r4,addr2
|
||||
rts r5
|
||||
|
||||
testa:
|
||||
mov addr1,r4
|
||||
cmp r4,addr2
|
||||
bhi 9b
|
||||
jsr r5,1f
|
||||
mov addr2,r4
|
||||
jsr r5,1f
|
||||
rts r5
|
||||
|
||||
1:
|
||||
cmp r4,zero
|
||||
blo 9f
|
||||
cmp r4,dol
|
||||
bhi 9f
|
||||
rts r5
|
||||
|
||||
nonzero:
|
||||
cmp addr1,zero
|
||||
blos 9f
|
||||
rts r5
|
||||
|
||||
setna:
|
||||
tst adrflg
|
||||
bne 9f
|
||||
rts r5
|
||||
|
||||
8: jmp advanc
|
||||
9: jmp error
|
||||
|
||||
newline:
|
||||
jsr r5,getc
|
||||
cmp r1,$'p
|
||||
bne 1f
|
||||
jsr r5,getc
|
||||
inc pflag
|
||||
1:
|
||||
cmp r1,$'\n
|
||||
bne 9b
|
||||
rts r5
|
||||
|
||||
rdline:
|
||||
mov $linebuf,r4
|
||||
1:
|
||||
jsr r5,getc
|
||||
movb r1,(r4)+
|
||||
cmp r1,$'\n
|
||||
beq 1f
|
||||
cmp r4,$elinbuf
|
||||
blo 1b
|
||||
br 9b
|
||||
1:
|
||||
cmp linebuf,$".\n
|
||||
beq 8b
|
||||
rts r5
|
||||
|
||||
append:
|
||||
cmp dol,$ebuffer-5
|
||||
bhis 9b
|
||||
jsr r5,*(r5)+
|
||||
mov dol,r4
|
||||
tst (r4)+
|
||||
mov r4,dol
|
||||
jsr r5,setbrk
|
||||
mov r4,r3
|
||||
tst (r3)+
|
||||
clr (r3)
|
||||
add $2,dot
|
||||
1:
|
||||
mov -(r4),-(r3)
|
||||
cmp r4,dot
|
||||
bhi 1b
|
||||
mov $linebuf,r0
|
||||
jsr r5,putline
|
||||
rts r5
|
||||
|
||||
putline:
|
||||
mov r0,r4
|
||||
mov oblkp,r2
|
||||
bit $1,r2
|
||||
beq 2f
|
||||
jsr r5,1f
|
||||
2:
|
||||
mov dska,r1
|
||||
add r2,r1
|
||||
mov r1,*dot
|
||||
2:
|
||||
movb (r4)+,r1
|
||||
clr r0
|
||||
jsr r5,1f
|
||||
cmp r1,$'\n
|
||||
bne 2b
|
||||
mov r2,oblkp
|
||||
rts r5
|
||||
|
||||
1:
|
||||
movb r1,obuf(r2)
|
||||
inc r2
|
||||
bit $777,r2
|
||||
bne 2f
|
||||
mov fout,r0
|
||||
sys 0;7f
|
||||
.data
|
||||
7:
|
||||
sys seek; dska: 0; 0
|
||||
.text
|
||||
mov fout,r0
|
||||
sys write; obuf; 512.
|
||||
bes tmperr
|
||||
cmp dska,$65536.-512.
|
||||
bhis tmperr
|
||||
add $512.,dska
|
||||
clr r2
|
||||
2:
|
||||
rts r5
|
||||
|
||||
tmperr:
|
||||
mov $1,r0
|
||||
sys write; scream; 3
|
||||
br 9f
|
||||
|
||||
scream: <TMP>; .even
|
||||
|
||||
getline:
|
||||
mov r3,-(sp)
|
||||
mov $linebuf,r1
|
||||
mov (r4),r4
|
||||
bic $1,r4
|
||||
mov r4,r3
|
||||
bic $777,r4
|
||||
1:
|
||||
mov $ibuf,2f+2
|
||||
bic $!777,r3
|
||||
cmp r4,iblk
|
||||
beq 4f
|
||||
cmp r4,dska
|
||||
// above is from v5 ed2.s, below is from s1 frag0 -- DougMerritt
|
||||
bne 3f
|
||||
mov $obuf,2f+2
|
||||
br 2f
|
||||
3:
|
||||
mov r4,iblk
|
||||
mov fin,r0
|
||||
sys seek; iblk: -1; 0
|
||||
mov fin,r0
|
||||
sys read; ibuf; 512.
|
||||
2:
|
||||
movb ibuf(r3),r0
|
||||
movb r0,(r1)+
|
||||
cmp r0,$'\n
|
||||
beq 1f
|
||||
inc r3
|
||||
bit $777,r3
|
||||
bne 2b
|
||||
add $512.,r4
|
||||
br 1b
|
||||
1:
|
||||
mov (sp)+,r3
|
||||
rts r5
|
||||
|
||||
9: jmp error
|
||||
|
||||
filnam:
|
||||
mov $filebuf,r4
|
||||
jsr r5,getc
|
||||
cmp r1,$'\n
|
||||
beq 2f
|
||||
cmp r1,$' /
|
||||
bne 9b
|
||||
1:
|
||||
jsr r5,getc
|
||||
cmp r1,$' /
|
||||
beq 1b
|
||||
cmp r1,$'\n
|
||||
beq 2f
|
||||
movb r1,(r4)+
|
||||
cmp r4,$filebuf+filsiz
|
||||
blo 1b
|
||||
br 9b
|
||||
2:
|
||||
cmp r4,$filebuf
|
||||
beq 4f
|
||||
clrb (r4)
|
||||
tst eflag
|
||||
beq 3f
|
||||
clr eflag
|
||||
1:
|
||||
mov $filebuf,r3
|
||||
mov $filsav,r4
|
||||
2:
|
||||
movb (r3)+,(r4)+
|
||||
bne 2b
|
||||
3:
|
||||
tstb filsav
|
||||
beq 1b
|
||||
rts r5
|
||||
4:
|
||||
tstb filsav
|
||||
beq 9b
|
||||
mov $filsav,r3
|
||||
mov $filebuf,r4
|
||||
br 2b
|
||||
|
||||
rdfile:
|
||||
mov $linebuf,r4
|
||||
1:
|
||||
jsr r5,fchar
|
||||
movb r1,(r4)+
|
||||
cmp r1,$'\n
|
||||
beq 1f
|
||||
cmp r4,$elinbuf
|
||||
blo 1b
|
||||
br 9b
|
||||
1:
|
||||
rts r5
|
||||
|
||||
fchar:
|
||||
dec filec
|
||||
blt 1f
|
||||
movb *filep,r1
|
||||
inc filep
|
||||
tst r1
|
||||
beq fchar
|
||||
rts r5
|
||||
1:
|
||||
mov f,r0
|
||||
sys read; fbuf; efbuf-fbuf
|
||||
bes 9b
|
||||
add r0,count
|
||||
mov r0,filec
|
||||
beq 1f
|
||||
mov $fbuf,filep
|
||||
br fchar
|
||||
1:
|
||||
mov f,r0
|
||||
sys close
|
||||
jsr r5,printn
|
||||
jmp advanc
|
||||
|
||||
delete:
|
||||
jsr r5,nonzero
|
||||
mov addr1,r3
|
||||
add r3,dol
|
||||
mov addr2,r4
|
||||
sub r4,dol
|
||||
sub $2,dol
|
||||
tst (r4)+
|
||||
1:
|
||||
mov (r4)+,(r3)+
|
||||
bne 1b
|
||||
jsr r5,setbrk
|
||||
rts r5
|
||||
|
||||
inite:
|
||||
movb $'a,qetmp+8
|
||||
1:
|
||||
sys stat; qetmp; linebuf
|
||||
bec 2f
|
||||
sys creat; qetmp; 10
|
||||
bec 1f
|
||||
2:
|
||||
incb qetmp+8
|
||||
cmpb qetmp+8,$'z
|
||||
blos 1b
|
||||
br e1
|
||||
1:
|
||||
mov r0,fout
|
||||
sys open; qetmp; 0
|
||||
bes e1
|
||||
mov r0,fin
|
||||
mov $buffer,r0
|
||||
mov r0,zero
|
||||
mov r0,dol
|
||||
mov r0,dot
|
||||
jsr r5,setbrk
|
||||
mov $-1,iblk
|
||||
mov $1,oblkp
|
||||
clr dska
|
||||
mov $kname,r0
|
||||
mov r0,kp
|
||||
1:
|
||||
clr (r0)+
|
||||
cmp r0,$ekname
|
||||
blos 1b
|
||||
rts r5
|
||||
|
||||
e1:
|
||||
jsr r5,print; qbadf
|
||||
sys exit
|
||||
|
||||
terme:
|
||||
mov fin,r0
|
||||
sys close
|
||||
mov fout,r0
|
||||
sys close
|
||||
sys unlink; qetmp
|
||||
rts r5
|
||||
|
||||
setbrk:
|
||||
mov dol,-(sp)
|
||||
add $514.,(sp)
|
||||
bic $777,(sp)
|
||||
cmp (sp),0f
|
||||
beq 1f
|
||||
mov (sp),0f
|
||||
sys break; 0:..
|
||||
1:
|
||||
tst (sp)+
|
||||
rts r5
|
||||
|
||||
436
src/cmd/ed3.s
Normal file
436
src/cmd/ed3.s
Normal file
@@ -0,0 +1,436 @@
|
||||
/ ed3 -- text editor
|
||||
|
||||
compile:
|
||||
mov r1,compt
|
||||
mov r1,prect
|
||||
mov $exprbuf,r3
|
||||
jsr r5,switch; prect
|
||||
jsr r5,cop; 2
|
||||
br cadv
|
||||
|
||||
prect:
|
||||
00; ceof1
|
||||
'^; cadv1
|
||||
prect1:
|
||||
'*; cerr
|
||||
0
|
||||
|
||||
cadv1:
|
||||
jsr r5,switch; prect1 / ^* case
|
||||
|
||||
cadv:
|
||||
jsr r5,switch; compt
|
||||
jsr r5,cop; 4
|
||||
jsr r5,getc
|
||||
movb r1,(r3)+
|
||||
cmp r3,$eexprbuf
|
||||
blo cadv
|
||||
br cerr
|
||||
|
||||
compt:
|
||||
00; ceof
|
||||
'\\; cesc
|
||||
'\n; cerr
|
||||
'.; cdot
|
||||
'*; cast
|
||||
'$; cdol
|
||||
'[; cccl
|
||||
0
|
||||
|
||||
ceof:
|
||||
clrb (r3)+
|
||||
cmp r3,$eexprbuf-1
|
||||
bhis cerr
|
||||
movb $1,(r3)+
|
||||
rts r5
|
||||
|
||||
ceof1:
|
||||
tst (r3)
|
||||
beq cerr
|
||||
rts r5
|
||||
|
||||
cesc:
|
||||
jsr r5,cop; 4
|
||||
jsr r5,getc
|
||||
cmp r1,$'\n
|
||||
beq cerr
|
||||
movb r1,(r3)+
|
||||
cmp r3,$eexprbuf
|
||||
blo cadv
|
||||
|
||||
cerr:
|
||||
clr exprbuf
|
||||
jmp 9b
|
||||
|
||||
cdot:
|
||||
jsr r5,cop; 8.
|
||||
br cadv
|
||||
|
||||
cdol:
|
||||
jsr r5,getc
|
||||
mov r1,peekc
|
||||
cmp r1,compt
|
||||
beq 1f
|
||||
jsr r5,cop; 4
|
||||
movb $'$,(r3)+
|
||||
cmp r3,$eexprbuf
|
||||
blo cadv
|
||||
br cerr
|
||||
1:
|
||||
jsr r5,cop; 20.
|
||||
br cadv
|
||||
|
||||
cccl:
|
||||
jsr r5,cop; 12.
|
||||
jsr r5,getc
|
||||
cmp r1,$'^
|
||||
bne 1f
|
||||
movb *f,r1
|
||||
add $4,r1
|
||||
movb r1,*f
|
||||
jsr r5,getc
|
||||
1:
|
||||
cmp r1,$'\n
|
||||
beq cerr
|
||||
movb r1,(r3)+
|
||||
cmp r3,$eexprbuf-1
|
||||
bhis cerr
|
||||
jsr r5,getc
|
||||
cmp r1,$']
|
||||
bne 1b
|
||||
clrb (r3)+
|
||||
br cadv
|
||||
|
||||
cast:
|
||||
bisb $2,*f
|
||||
br cadv
|
||||
|
||||
cop:
|
||||
mov r3,f
|
||||
movb (r5)+,(r3)+
|
||||
cmp r3,$eexprbuf
|
||||
bhis cerr
|
||||
tstb (r5)+
|
||||
rts r5
|
||||
|
||||
gexecute:
|
||||
cmpb exprbuf,$2
|
||||
beq 1f
|
||||
rts r5 / ^ in global substitute
|
||||
1:
|
||||
mov $linebuf,r3
|
||||
mov $subbuf,r4
|
||||
1:
|
||||
movb (r4)+,(r3)
|
||||
cmpb (r3)+,$'\n
|
||||
bne 1b
|
||||
mov loc2,r4
|
||||
add $linebuf-subbuf,r4
|
||||
mov r4,locs
|
||||
br 1f
|
||||
|
||||
execute:
|
||||
jsr r5,getline
|
||||
mov $linebuf,r4
|
||||
clr locs
|
||||
1:
|
||||
mov r4,loc1
|
||||
mov $exprbuf,r3
|
||||
|
||||
eadv:
|
||||
movb (r3)+,r1
|
||||
jmp *1f(r1)
|
||||
1:
|
||||
eeof
|
||||
ecmf
|
||||
echr
|
||||
echrs
|
||||
edot
|
||||
edots
|
||||
eccl
|
||||
eccls
|
||||
enccl
|
||||
enccls
|
||||
edol
|
||||
|
||||
eeof:
|
||||
mov r4,loc2
|
||||
|
||||
eeof1:
|
||||
tst (r5)+
|
||||
efail:
|
||||
rts r5
|
||||
|
||||
ecmf:
|
||||
mov r3,-(sp)
|
||||
mov r4,-(sp)
|
||||
jsr r5,eadv
|
||||
br 1f
|
||||
mov (sp)+,loc1
|
||||
tst (sp)+
|
||||
br eeof1
|
||||
1:
|
||||
mov (sp)+,r4
|
||||
mov (sp)+,r3
|
||||
cmpb (r4)+,$'\n
|
||||
bne ecmf
|
||||
br efail
|
||||
|
||||
echr:
|
||||
cmpb (r3)+,(r4)+
|
||||
beq eadv
|
||||
br efail
|
||||
|
||||
echrs:
|
||||
movb (r3)+,r1
|
||||
mov r4,-(sp)
|
||||
1:
|
||||
cmpb (r4)+,r1
|
||||
beq 1b
|
||||
br east
|
||||
|
||||
edot:
|
||||
cmpb (r4)+,$'\n
|
||||
bne eadv
|
||||
br efail
|
||||
|
||||
edots:
|
||||
mov r4,-(sp)
|
||||
1:
|
||||
cmpb (r4)+,$'\n
|
||||
bne 1b
|
||||
br east
|
||||
|
||||
eccl:
|
||||
jsr r5,cclas; 0
|
||||
br efail
|
||||
br eadv
|
||||
|
||||
enccl:
|
||||
jsr r5,cclas; 1
|
||||
br efail
|
||||
br eadv
|
||||
|
||||
enccls:
|
||||
mov pc,0f
|
||||
br 1f
|
||||
|
||||
eccls:
|
||||
clr 0f
|
||||
1:
|
||||
mov r4,-(sp)
|
||||
mov r3,-(sp)
|
||||
2:
|
||||
jsr r5,cclas; 0:0
|
||||
br 1f
|
||||
mov (sp),r3
|
||||
br 2b
|
||||
1:
|
||||
tst (sp)+
|
||||
br east
|
||||
|
||||
edol:
|
||||
cmpb (r4),$'\n
|
||||
beq eadv
|
||||
br efail
|
||||
|
||||
east:
|
||||
dec r4
|
||||
mov r3,-(sp)
|
||||
mov r4,-(sp)
|
||||
jsr r5,eadv
|
||||
br 1f
|
||||
cmp r4,locs
|
||||
bne 2f
|
||||
mov r4,4(sp)
|
||||
br 1f
|
||||
2:
|
||||
add $6,sp
|
||||
br eeof1
|
||||
1:
|
||||
mov (sp)+,r4
|
||||
mov (sp)+,r3
|
||||
cmp r4,(sp)
|
||||
bhi east
|
||||
tst (sp)+
|
||||
br efail
|
||||
|
||||
cclas:
|
||||
movb (r4)+,r1
|
||||
cmp r1,$'\n
|
||||
beq 2f
|
||||
1:
|
||||
cmpb r1,(r3)+
|
||||
beq 1f
|
||||
tstb (r3)
|
||||
bne 1b
|
||||
tst (r5)+
|
||||
beq 3f
|
||||
2:
|
||||
tst (r5)+
|
||||
br 3f
|
||||
1:
|
||||
tst (r5)+
|
||||
beq 2b
|
||||
3:
|
||||
tstb (r3)+
|
||||
bne 3b
|
||||
rts r5
|
||||
|
||||
8: jmp advanc
|
||||
9: jmp error
|
||||
|
||||
dosub:
|
||||
mov $linebuf,r1
|
||||
mov $subbuf,r2
|
||||
mov $rhsbuf,r3
|
||||
1:
|
||||
cmp r1,loc1
|
||||
beq 1f
|
||||
movb (r1)+,(r2)+
|
||||
br 1b
|
||||
1:
|
||||
movb (r3)+,r0
|
||||
beq 1f
|
||||
cmp r0,$'&
|
||||
bne 3f
|
||||
mov r1,r4
|
||||
2:
|
||||
cmp r4,loc2
|
||||
beq 1b
|
||||
movb (r4)+,(r2)+
|
||||
cmp r2,$esubbuf
|
||||
blo 2b
|
||||
br 9b
|
||||
3:
|
||||
bic $200,r0
|
||||
movb r0,(r2)+
|
||||
cmp r2,$esubbuf
|
||||
blo 1b
|
||||
br 9b
|
||||
1:
|
||||
mov r4,r1
|
||||
mov r2,loc2
|
||||
1:
|
||||
movb (r1)+,r0
|
||||
movb r0,(r2)+
|
||||
cmp r0,$'\n
|
||||
beq 1f
|
||||
cmp r2,$esubbuf
|
||||
blo 1b
|
||||
br 9b
|
||||
1:
|
||||
mov addr1,dot
|
||||
rts r5
|
||||
|
||||
switch:
|
||||
jsr r5,getc
|
||||
mov (r5)+,r4
|
||||
1:
|
||||
tst (r4)
|
||||
beq 1f
|
||||
cmp r1,(r4)+
|
||||
beq 2f
|
||||
tst (r4)+
|
||||
br 1b
|
||||
1:
|
||||
mov r1,peekc
|
||||
rts r5
|
||||
2:
|
||||
mov (sp)+,r5
|
||||
jmp *(r4)
|
||||
|
||||
getc:
|
||||
mov peekc,r1
|
||||
bne 1f
|
||||
tst gflag
|
||||
beq 2f
|
||||
movb *gbufp,r1
|
||||
beq 8b
|
||||
inc gbufp
|
||||
br 1f
|
||||
2:
|
||||
clr r0
|
||||
sys read; ch; 1
|
||||
bes 2f
|
||||
tst r0
|
||||
beq 2f
|
||||
mov ch,r1
|
||||
beq getc
|
||||
1:
|
||||
clr peekc
|
||||
rts r5
|
||||
2:
|
||||
jmp cq1
|
||||
|
||||
print:
|
||||
mov (r5),r0
|
||||
jsr r5,size
|
||||
mov r4,0f
|
||||
mov (r5)+,0f-2
|
||||
mov $1,r0
|
||||
sys write; 0; 0:0
|
||||
rts r5
|
||||
|
||||
size:
|
||||
clr r4
|
||||
1:
|
||||
inc r4
|
||||
cmpb (r0)+,$'\n
|
||||
bne 1b
|
||||
rts r5
|
||||
|
||||
qex: <!\n>
|
||||
qetmp: </tmp/etma\0>
|
||||
qbadf: <tmp file\n>
|
||||
qerr: <?\n>
|
||||
qed: <Editing System\n>
|
||||
prompt: <*>
|
||||
.even
|
||||
peekc: 0
|
||||
eflag: 0
|
||||
gbufp: gbuf-1
|
||||
kp: kname
|
||||
|
||||
.bss
|
||||
kname: .=.+18.
|
||||
ekname: .=.+2
|
||||
nl: .=.+2
|
||||
kaddr: .=.+18.
|
||||
ekaddr: .=.+2
|
||||
oblkp: .=.+2
|
||||
zero: .=.+2
|
||||
dol: .=.+2
|
||||
dot: .=.+2
|
||||
gsp: .=.+2
|
||||
shflg: .=.+2
|
||||
exprbuf:.=.+128.; eexprbuf:
|
||||
fin: .=.+2
|
||||
fout: .=.+2
|
||||
ch: .=.+2
|
||||
fch: .=.+2
|
||||
pflag: .=.+2
|
||||
gflag: .=.+2
|
||||
addr: .=.+2
|
||||
addr1: .=.+2
|
||||
addr2: .=.+2
|
||||
gsubf: .=.+2
|
||||
loc1: .=.+2
|
||||
loc2: .=.+2
|
||||
locs: .=.+2
|
||||
adrflg: .=.+2
|
||||
f: .=.+2
|
||||
minflg: .=.+2
|
||||
count: .=.+2
|
||||
filec: .=.+2
|
||||
filep: .=.+2
|
||||
linebuf:.=.+512.; elinbuf:
|
||||
fbuf:subbuf:.=.+512.; efbuf: esubbuf:
|
||||
rhsbuf: .=.+256.; erhsbuf:
|
||||
filsiz = 64.
|
||||
filebuf:.=.+filsiz
|
||||
filsav: .=.+filsiz+2
|
||||
gz: .=.+2
|
||||
gbuf: .=.+100.; egbuf:
|
||||
buffer: ebuffer = buffer+6000.
|
||||
|
||||
5
src/cmd/exit.c
Normal file
5
src/cmd/exit.c
Normal file
@@ -0,0 +1,5 @@
|
||||
/* exit -- end runcom */
|
||||
|
||||
main() {
|
||||
seek(0, 0, 2);
|
||||
}
|
||||
109
src/cmd/fed1.s
Normal file
109
src/cmd/fed1.s
Normal file
@@ -0,0 +1,109 @@
|
||||
testing = 0
|
||||
/
|
||||
/ command interpreter for form letter editor
|
||||
/
|
||||
/
|
||||
/
|
||||
command:
|
||||
sys intr; inter
|
||||
jsr pc,initl
|
||||
mov sp,spi
|
||||
loop:
|
||||
mov spi,sp
|
||||
mov $buffer,r2
|
||||
clr r4
|
||||
clr iflag
|
||||
1:
|
||||
jsr pc,tfiget
|
||||
cmpb $' ,r0
|
||||
beq 1f
|
||||
cmpb $'\n,r0
|
||||
bne 2f
|
||||
clrb (r2)
|
||||
br 4f
|
||||
2:
|
||||
movb r0,(r2)+
|
||||
br 1b
|
||||
1:
|
||||
clrb (r2)
|
||||
mov $argc,r3
|
||||
3:
|
||||
mov $arg,r2
|
||||
2:
|
||||
jsr pc,tfiget
|
||||
cmpb $' ,r0
|
||||
beq 1f
|
||||
cmpb $'\n,r0
|
||||
beq 1f
|
||||
movb r0,(r2)+
|
||||
br 2b
|
||||
1:
|
||||
clrb (r2)+
|
||||
inc r4
|
||||
1:
|
||||
movb -(r2),sv
|
||||
cmp r2,$arg
|
||||
blos 1f
|
||||
movb -(r2),-(sp)
|
||||
movb sv,1(sp)
|
||||
cmp r2,$arg
|
||||
bhi 1b
|
||||
mov sp,(r3)+
|
||||
br 2f
|
||||
1:
|
||||
clrb -(sp)
|
||||
movb sv,1(sp)
|
||||
mov sp,(r3)
|
||||
add $1,(r3)+
|
||||
2:
|
||||
cmpb r0,$'\n
|
||||
bne 3b
|
||||
1:
|
||||
mov -(r3),-(sp)
|
||||
cmp r3,$argc
|
||||
bhi 1b
|
||||
4:
|
||||
mov r4,-(sp)
|
||||
3:
|
||||
clr r0
|
||||
mov $tabl,r4
|
||||
2:
|
||||
mov (r4)+,r1
|
||||
cmp r4,$tend
|
||||
bhi error
|
||||
add $2,r0
|
||||
mov $buffer,r2
|
||||
1:
|
||||
cmpb (r1)+,(r2)+
|
||||
bne 2b
|
||||
tstb (r1)
|
||||
bne 1b
|
||||
tstb (r2)
|
||||
bne 2b
|
||||
sub $2,r0
|
||||
add $jtable,r0
|
||||
clr vflag
|
||||
clr qflag
|
||||
jmp *(r0)
|
||||
/
|
||||
error:
|
||||
mov $1,r0
|
||||
sys write; err; 2
|
||||
br loop
|
||||
/
|
||||
/
|
||||
tabl: c1; c2; c3; c4; c5; c6; c7; c8;
|
||||
tend: 0
|
||||
c1: <n\0>
|
||||
c2: <p\0>
|
||||
c3: <e\0>
|
||||
c4: <d\0>
|
||||
c5: <m\0>
|
||||
c6: <fin\0>
|
||||
c7: <q\0>
|
||||
c8: <c\0>
|
||||
err: <?\n>
|
||||
endt: .even
|
||||
jtable: list; listf; ed; remove; rename; fin; q; memck;
|
||||
spi: .=.+2
|
||||
sv: .=.+2
|
||||
@@ -741,49 +741,3 @@ fixct:
|
||||
2:
|
||||
add $2,r3
|
||||
br 1b
|
||||
b
|
||||
bge 1f
|
||||
cmp u1(r3),u1(r2)
|
||||
bhis 2f
|
||||
mov r3,r2
|
||||
2:
|
||||
inc r4
|
||||
add $2.,r3
|
||||
br 1b
|
||||
1:
|
||||
mov r2,r3
|
||||
jsr pc,getb
|
||||
add $stats+14.,r3
|
||||
inc (r3)
|
||||
mov (sp)+,r3
|
||||
mov (sp)+,r4
|
||||
rts pc
|
||||
/
|
||||
/
|
||||
/ this routine renumbers the time used cell u1(r2)
|
||||
/ of the buffers when the clock overflows
|
||||
/
|
||||
fixct:
|
||||
mov r1,-(sp)
|
||||
mov r3,-(sp)
|
||||
mov $numb,r1
|
||||
mov $numb,flag
|
||||
2:
|
||||
mov r1,u1(r2)
|
||||
dec r1
|
||||
bge 1f
|
||||
mov (sp)+,r3
|
||||
mov (sp)+,r1
|
||||
rts pc
|
||||
1:
|
||||
clr r2
|
||||
mov $2,r3
|
||||
1:
|
||||
cmp r3,$numb2
|
||||
bge 2b
|
||||
cmp u1(r3),u1(r2)
|
||||
blo 2f
|
||||
mov r3,r2
|
||||
2:
|
||||
add $2,r3
|
||||
br 1b
|
||||
|
||||
27
src/cmd/if.c
27
src/cmd/if.c
@@ -97,3 +97,30 @@ err:
|
||||
exit();
|
||||
}
|
||||
|
||||
tio(a, f) {
|
||||
|
||||
a = open(a, f);
|
||||
if (a>=0) {
|
||||
close(a);
|
||||
return(1);
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
|
||||
tcreat(a) {
|
||||
return(1);
|
||||
}
|
||||
|
||||
eq(a, b)
|
||||
char *a, *b;
|
||||
{
|
||||
int i;
|
||||
|
||||
i = 0;
|
||||
l:
|
||||
if(a[i] != b[i])
|
||||
return(0);
|
||||
if(a[i++] == '\0')
|
||||
return(1);
|
||||
goto l;
|
||||
}
|
||||
|
||||
@@ -449,27 +449,3 @@ wrlocsym:
|
||||
tst (sp)+
|
||||
rts r5
|
||||
|
||||
dd 12(r4),r3 / symbol value
|
||||
mov 10(r4),r2
|
||||
sub $41,r2
|
||||
bic $!1,r0
|
||||
bne 4f
|
||||
tst r2
|
||||
beq 5f / not relative & relocatable
|
||||
add dotdot,r3
|
||||
br 5f
|
||||
4:
|
||||
tst r2
|
||||
bne 5f / relative & absolute
|
||||
sub dotdot,r3
|
||||
5:
|
||||
asl r2
|
||||
bis r2,r0
|
||||
br relrel
|
||||
/ absolute, text, data, or bss symbol
|
||||
3:
|
||||
add *reltab(r2),r3
|
||||
relrel:
|
||||
bit $1,r0
|
||||
beq 1f
|
||||
sub rel
|
||||
@@ -514,47 +514,3 @@ addin:
|
||||
add cdatsiz,datsiz
|
||||
add cbsssiz,bsssiz
|
||||
rts r5
|
||||
|
||||
|
||||
mov symbol+10,r0
|
||||
bic $!37,r0
|
||||
beq 1f
|
||||
cmp r0,$5
|
||||
bhis 1f
|
||||
asl r0
|
||||
add *reltab-2(r0),symbol+12
|
||||
1:
|
||||
rts r5
|
||||
|
||||
lookloc:
|
||||
mov $local,r4
|
||||
1:
|
||||
cmp r4,locp
|
||||
bhis 1f
|
||||
cmp (r4)+,r2
|
||||
beq 2f
|
||||
tst (r4)+
|
||||
br 1b
|
||||
1:
|
||||
jsr r5,mesg; snotfound
|
||||
jmp sintr
|
||||
2:
|
||||
mov (r4),r4
|
||||
rts r5
|
||||
|
||||
aopen:
|
||||
clr reopened
|
||||
mov r0,0f
|
||||
mov r0,filnam
|
||||
mov fin,r0
|
||||
beq 1f
|
||||
sys close
|
||||
1:
|
||||
sys open; 0:..; 0
|
||||
bec 1f
|
||||
jsr r5,mesg; fnotfound
|
||||
rts r5
|
||||
1:
|
||||
mov r0,fin
|
||||
tst (r5)+
|
||||
|
||||
@@ -128,3 +128,4 @@ hshtab: .=2*hshsiz+.
|
||||
|
||||
symtab:
|
||||
esymtab = orig+16384.-300.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user