1
0
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:
warren.toomey
2008-05-15 01:41:16 +00:00
parent 45ebdd66d8
commit 547fef522b
15 changed files with 2512 additions and 151 deletions

View File

@@ -344,3 +344,4 @@ isymtab:
blo 1b
clr (r0)+
rts pc

View File

@@ -62,3 +62,4 @@ ibuf: .=.+512.
obuf: .=.+512.
fin: .=.+2
.text

View File

@@ -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

View File

@@ -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

File diff suppressed because it is too large Load Diff

View File

@@ -90,3 +90,4 @@ stbuf: .=.+40.
buf: .=.+11.
ch: .=.+1
ch1: .=.+1

561
src/cmd/ed2.s Normal file
View 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
View 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
View File

@@ -0,0 +1,5 @@
/* exit -- end runcom */
main() {
seek(0, 0, 2);
}

109
src/cmd/fed1.s Normal file
View 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

View File

@@ -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

View File

@@ -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;
}

View File

@@ -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

View File

@@ -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)+

View File

@@ -128,3 +128,4 @@ hshtab: .=2*hshsiz+.
symtab:
esymtab = orig+16384.-300.