Add original unix v6
This commit is contained in:
+267
@@ -0,0 +1,267 @@
|
||||
/ tap1 -- dec-disk lod/dmp
|
||||
|
||||
.globl _localtime, _end
|
||||
namep = 0
|
||||
mode = 2
|
||||
uid = 4; gid = 5
|
||||
size0 = 7
|
||||
size1 = 8
|
||||
time0 = 10.
|
||||
time1 = 12.
|
||||
tapea = 14.
|
||||
dirsiz = 16.
|
||||
mdirent = 496.
|
||||
|
||||
mov (sp),rnarg
|
||||
mov (sp)+,narg
|
||||
mov $cmr,command
|
||||
incb flu
|
||||
tst (sp)+
|
||||
cmp narg,$2
|
||||
bge 1f
|
||||
mov $2,narg
|
||||
br 3f
|
||||
1:
|
||||
mov (sp)+,r0
|
||||
mov sp,parg
|
||||
1:
|
||||
movb (r0)+,r1
|
||||
beq 3f
|
||||
mov $swtab,r2
|
||||
2:
|
||||
cmp r1,(r2)+
|
||||
beq 2f
|
||||
tst (r2)+
|
||||
bne 2b
|
||||
br useerr
|
||||
2:
|
||||
jsr pc,*(r2)+
|
||||
br 1b
|
||||
3:
|
||||
jsr pc,optap
|
||||
mov $_end,r4 / string pointer
|
||||
jsr pc,setb
|
||||
jmp *command
|
||||
|
||||
optap:
|
||||
tstb flm
|
||||
bne 2f
|
||||
mov $578.,tapsiz
|
||||
mov $192.,ndirent
|
||||
sys open; tc; 2
|
||||
br 3f
|
||||
2:
|
||||
mov $-1,tapsiz
|
||||
mov $mdirent,ndirent
|
||||
cmp command,$cmr
|
||||
beq 2f
|
||||
sys open; mt; 0
|
||||
br 3f
|
||||
2:
|
||||
sys open; mt; 1
|
||||
3:
|
||||
bes 1f
|
||||
mov r0,fio
|
||||
mov ndirent,r1
|
||||
ash $-3,r1
|
||||
mov r1,ndentd8
|
||||
mov ndirent,r1
|
||||
mul $dirsiz,r1
|
||||
add $dir,r1
|
||||
mov r1,edir
|
||||
rts pc
|
||||
1:
|
||||
jsr r5,mesg
|
||||
<Tape open error\n\0>; .even
|
||||
jmp done
|
||||
|
||||
setcom:
|
||||
cmp command,$cmr
|
||||
bne useerr
|
||||
mov (r5)+,command
|
||||
rts r5
|
||||
|
||||
noflag:
|
||||
mov (r5)+,r0
|
||||
beq 1f
|
||||
tstb (r0)
|
||||
beq noflag
|
||||
br useerr
|
||||
1:
|
||||
rts r5
|
||||
|
||||
useerr:
|
||||
jsr r5,mesg
|
||||
<Bad usage\n\0>; .even
|
||||
jmp done
|
||||
|
||||
swtab:
|
||||
'0; dcof
|
||||
'1; dcof
|
||||
'2; dcof
|
||||
'3; dcof
|
||||
'4; dcof
|
||||
'5; dcof
|
||||
'6; dcof
|
||||
'7; dcof
|
||||
'c; dcc
|
||||
'd; dcd
|
||||
'f; dcf
|
||||
'i; dci
|
||||
'm; dcm
|
||||
'r; dcr
|
||||
't; dct
|
||||
'u; dcu
|
||||
'v; dcv
|
||||
'w; dcw
|
||||
'x; dcx
|
||||
0; 0
|
||||
|
||||
dcof:
|
||||
movb r1,tcx
|
||||
movb r1,mtx
|
||||
rts pc
|
||||
|
||||
dcc:
|
||||
incb flc
|
||||
rts pc
|
||||
|
||||
dcf:
|
||||
incb flf
|
||||
rts pc
|
||||
|
||||
dcd:
|
||||
jsr r5,setcom; cmd
|
||||
rts pc
|
||||
|
||||
dci:
|
||||
incb fli
|
||||
rts pc
|
||||
|
||||
dcm:
|
||||
incb flm
|
||||
rts pc
|
||||
|
||||
dcu:
|
||||
incb flu
|
||||
jsr r5,setcom; cmr
|
||||
rts pc
|
||||
|
||||
dcr:
|
||||
clrb flu
|
||||
jsr r5,setcom; cmr
|
||||
rts pc
|
||||
|
||||
dct:
|
||||
jsr r5,setcom; cmt
|
||||
rts pc
|
||||
|
||||
dcv:
|
||||
incb flv
|
||||
rts pc
|
||||
|
||||
dcw:
|
||||
incb flw
|
||||
rts pc
|
||||
|
||||
dcx:
|
||||
jsr r5,setcom; cmx
|
||||
rts pc
|
||||
|
||||
cmd:
|
||||
jsr r5,noflag; flm; flc; flf; 0
|
||||
cmp narg,$2
|
||||
bgt 1f
|
||||
jmp useerr
|
||||
1:
|
||||
jsr pc,rddir
|
||||
jsr r5,gettape; delete
|
||||
jsr pc,wrdir
|
||||
br check
|
||||
|
||||
cmr:
|
||||
jsr r5,noflag; 0
|
||||
tstb flc
|
||||
bne 1f
|
||||
tstb flm
|
||||
bne 1f
|
||||
jsr pc,rddir
|
||||
br 2f
|
||||
1:
|
||||
jsr pc,clrdir
|
||||
2:
|
||||
jsr pc,getfiles
|
||||
jsr pc,update
|
||||
br check
|
||||
|
||||
cmt:
|
||||
jsr r5,noflag; flc; flf; flw; 0
|
||||
jsr pc,rddir
|
||||
tstb flv
|
||||
beq 1f
|
||||
jsr r5,mesg
|
||||
< mode uid gid tapa size date time name\n\0>; .even
|
||||
1:
|
||||
jsr r5,gettape; taboc
|
||||
br check1
|
||||
|
||||
cmx:
|
||||
jsr r5,noflag; flc; flf; 0
|
||||
jsr pc,rddir
|
||||
jsr r5,gettape; xtract
|
||||
br done
|
||||
|
||||
check:
|
||||
|
||||
check1:
|
||||
jsr pc,usage
|
||||
|
||||
done:
|
||||
jsr r5,mesg
|
||||
<END\n\0>; .even
|
||||
sys exit
|
||||
|
||||
encode:
|
||||
mov r2,-(sp)
|
||||
mov r4,(r1)
|
||||
mov (r5)+,r2
|
||||
1:
|
||||
movb (r2),(r4)+
|
||||
jsr pc,setb
|
||||
tstb (r2)+
|
||||
bne 1b
|
||||
mov (sp)+,r2
|
||||
rts r5
|
||||
|
||||
decode:
|
||||
mov r2,-(sp)
|
||||
mov r1,-(sp)
|
||||
mov (r1),r1
|
||||
mov (r5)+,r2
|
||||
1:
|
||||
movb (r1)+,(r2)+
|
||||
bne 1b
|
||||
mov (sp)+,r1
|
||||
mov (sp)+,r2
|
||||
rts r5
|
||||
|
||||
setb:
|
||||
mov r0,-(sp)
|
||||
mov r4,r0
|
||||
add $513.,r0
|
||||
cmp r0,sp
|
||||
bhis 2f
|
||||
bic $777,r0
|
||||
cmp r0,0f
|
||||
beq 1f
|
||||
mov r0,0f
|
||||
sys break; 0:..
|
||||
bes 2f
|
||||
1:
|
||||
mov (sp)+,r0
|
||||
rts pc
|
||||
|
||||
2:
|
||||
jsr r5,mesg
|
||||
<Out of core\n\0>; .even
|
||||
jmp done
|
||||
Reference in New Issue
Block a user