home *** CD-ROM | disk | FTP | other *** search
- / tap3 -- dec-tape lod/dmp
-
- gettape:
- mov $dir,r1
- clr -(sp)
- 1:
- tst (r1)
- beq 2f
- jsr r5,decode; name
- cmp rnarg,$2
- ble 4f
- mov $name,r2
- mov *parg,r3
- 3:
- tstb (r3)
- beq 3f
- cmpb (r2)+,(r3)+
- beq 3b
- br 2f
- 3:
- tstb (r2)
- beq 4f
- cmpb (r2),$'/
- bne 2f
- 4:
- mov r1,-(sp)
- jsr pc,*(r5)
- mov (sp)+,r1
- inc (sp)
- 2:
- add $dirsiz,r1
- cmp r1,edir
- blo 1b
- tst (sp)+
- bne 2f
- cmp rnarg,$2
- ble 2f
- mov *parg,r1
- jsr pc,pstr
- jsr r5,mesg
- < not found\n\0>; .even
- 2:
- dec narg
- add $2,parg
- cmp narg,$2
- bgt gettape
- tst (r5)+
- rts r5
-
- delete:
- jsr r5,verify; 'd
- rts pc
- jsr pc,clrent
- rts pc
-
- numb:
- mov r1,-(sp)
- mov r0,-(sp)
- clr r0
- br 1f
-
- numbx:
- mov r1,-(sp)
- mov r0,-(sp)
- movb size0(r1),r0
- 1:
- mov $catlb,r2
- 1:
- mov $" ,(r2)+
- cmp r2,$catlb+12.
- blo 1b
- cmp (r5),$2
- bne 1f
- mov $"00,-2(r2)
- 1:
- mov (sp)+,r1
- jsr pc,numb2
- mov (r5)+,r0
- sub r0,r2
- mov r2,0f
- mov r0,0f+2
- mov $1,r0
- sys 0; 9f
- .data
- 9:
- sys write; 0:..; ..
- .text
- mov (sp)+,r1
- rts r5
-
- numb1:
- clr r0
- numb2:
- div $10.,r0
- mov r1,-(sp)
- mov r0,r1
- beq 1f
- jsr pc,numb1
- 1:
- mov (sp)+,r0
- add $'0,r0
- movb r0,(r2)+
- rts pc
-
- update:
- jsr pc,bitmap
- mov $dir,r1
- 1:
- tst (r1)
- beq 2f
- bit $100000,mode(r1)
- beq 2f
- tstb size0(r1)
- bne 9f
- tst size1(r1)
- beq 2f
- 9:
- mov ndentd8,-(sp)
- inc (sp)
- movb size0(r1),r2
- mov size1(r1),r3
- add $511.,r3
- adc r2
- ashc $-9,r2
- mov r3,size
- 3:
- mov (sp),r2
- mov size,r3
- 4:
- jsr pc,bitcalc
- inc r2
- bitb (sp)+,map(r0)
- bne 4f
- sob r3,4b
- mov (sp)+,tapea(r1)
- jsr pc,setmap
- br 2f
- 4:
- inc (sp)
- br 3b
- 2:
- add $dirsiz,r1
- cmp r1,edir
- blo 1b
- jsr pc,wrdir
-
- update1:
- mov $dir,r1
- clr -(sp)
- mov $-1,-(sp)
- 1:
- tst (r1)
- beq 2f
- bit $100000,mode(r1)
- beq 2f
- cmp tapea(r1),(sp)
- bhis 2f
- mov tapea(r1),(sp)
- mov r1,2(sp)
- 2:
- add $dirsiz,r1
- cmp r1,edir
- blo 1b
- tst (sp)+
- mov (sp)+,r1
- bne 1f
- rts pc
- 1:
- bic $100000,mode(r1)
- movb size0(r1),mss
- mov size1(r1),r2
- bne 4f
- tst mss
- beq update1
- 4:
- jsr r5,decode; name
- mov tapea(r1),r0
- jsr pc,wseek
- clr r3
- sys open; name; 0
- bes phserr
- mov r0,r3
- 3:
- tst mss
- bne 4f
- cmp r2,$512.
- blo 3f
- 4:
- mov r3,r0
- sys read; tapeb; 512.
- bes phserr
- cmp r0,$512.
- bne phserr
- jsr pc,twrite
- sub $512.,r2
- sbc mss
- br 3b
- 3:
- mov r2,0f
- beq 3f
- mov r3,r0
- sys 0; 9f
- .data
- 9:
- sys read; tapeb; 0:..
- .text
- bes phserr
- cmp r0,0b
- bne phserr
- jsr pc,twrite
- 3:
- mov r3,r0
- sys read; tapeb; 512.
- bes phserr
- tst r0
- bne phserr
- mov r3,r0
- sys close
- 2:
- jmp update1
-
- phserr:
- mov r1,-(sp)
- mov $name,r1
- jsr pc,pstr
- jsr r5,mesg
- < -- Phase error\n\0>; .even
- mov (sp)+,r1
- clr time0(r1) / time
- beq 2b
- sys close
- br 2b
-
- bitmap:
- mov $map,r0
- 1:
- clr (r0)+
- cmp r0,$emap
- blo 1b
- mov $dir,r1
- 1:
- tst (r1)
- beq 2f
- bit $100000,mode(r1)
- bne 2f
- tst size1(r1)
- bne 3f
- tstb size0(r1)
- beq 2f
- 3:
- jsr pc,setmap
- 2:
- add $dirsiz,r1
- cmp r1,edir
- blo 1b
- rts pc
-
- setmap:
- movb size0(r1),r2
- mov size1(r1),r3
- add $511.,r3
- adc r2
- ashc $-9.,r2
- mov tapea(r1),r2
- 1:
- jsr pc,bitcalc
- bitb (sp),map(r0)
- bne maperr
- bisb (sp)+,map(r0)
- inc r2
- sob r3,1b
- rts pc
-
- bitcalc:
- mov (sp),-(sp)
- cmp r2,tapsiz
- bhis maperr
- mov r2,r0
- bic $!7,r0
- mov r0,-(sp)
- mov $1,r0
- als (sp)+,r0
- mov r0,2(sp)
- mov r2,r0
- ash $-3,r0
- bic $160000,r0
- rts pc
-
- maperr:
- jsr r5,mesg
- <Tape overflow\n\0>; .even
- jmp done
-
- usage:
- jsr pc,bitmap
- mov $dir,r2
- 1:
- tst (r2)
- beq 2f
- inc nentr
- 2:
- add $dirsiz,r2
- cmp r2,edir
- blo 1b
- mov ndentd8,r2
- inc r2
- mov tapsiz,r3
- dec r3
- sub ndentd8,r3
- 1:
- jsr pc,bitcalc
- bitb (sp)+,map(r0)
- beq 2f
- inc nused
- mov r2,lused
- br 3f
- 2:
- inc nfree
- tstb flm
- bne 1f
- 3:
- inc r2
- sob r3,1b
- 1:
- mov nentr,r0
- jsr r5,numb; 4
- jsr r5,mesg
- < entries\n\0>; .even
- mov nused,r0
- jsr r5,numb; 4
- jsr r5,mesg
- < used\n\0>; .even
- tstb flm
- bne 1f
- mov nfree,r0
- jsr r5,numb; 4
- jsr r5,mesg
- < free\n\0>; .even
- 1:
- mov lused,r0
- jsr r5,numb; 4
- jsr r5,mesg
- < last\n\0>; .even
- rts pc
-
- taboc:
- tstb flv
- beq 4f
- mov mode(r1),r0
- mov r0,-(sp)
- ash $-6,r0
- bit $40,r0
- jsr pc,pmod
- mov (sp),r0
- ash $-3,r0
- bit $200,r0
- jsr pc,pmod
- mov (sp)+,r0
- bit $1000,r0
- jsr pc,pmod
- clr r0
- bisb uid(r1),r0
- jsr r5,numb; 4
- clr r0
- bisb gid(r1),r0
- jsr r5,numb; 4
- mov tapea(r1),r0
- jsr r5,numb; 5
- mov size1(r1),r0
- jsr r5,numbx; 9.
- mov r1,-(sp)
- add $time0,(sp)
- jsr pc,_localtime
- mov r0,(sp)
- mov 10.(r0),r0
- jsr r5,numb; 3
- mov $'/,r0
- jsr pc,putc
- mov (sp),r0
- mov 8.(r0),r0
- inc r0
- jsr r5,numb; 2
- mov $'/,r0
- jsr pc,putc
- mov (sp),r0
- mov 6(r0),r0
- jsr r5,numb; 2
- mov (sp),r0
- mov 4(r0),r0
- jsr r5,numb; 3
- mov $':,r0
- jsr pc,putc
- mov (sp)+,r0
- mov 2(r0),r0
- jsr r5,numb; 2
- mov $' ,r0
- jsr pc,putc
- 4:
- mov $name,r1
- jsr pc,pstr
- jsr r5,mesg
- <\n\0>
- rts pc
-
- pmod:
- beq 1f
- mov $'s,-(sp)
- br 2f
- 1:
- bit $1,r0
- beq 1f
- mov $'x,-(sp)
- br 2f
- 1:
- mov $'-,-(sp)
- 2:
- bit $2,r0
- beq 1f
- mov $'w,-(sp)
- br 2f
- 1:
- mov $'-,-(sp)
- 2:
- bit $4,r0
- beq 1f
- mov $'r,r0
- br 2f
- 1:
- mov $'-,r0
- 2:
- jsr pc,putc
- mov (sp)+,r0
- jsr pc,putc
- mov (sp)+,r0
- jsr pc,putc
- rts pc
-
- xtract:
- movb size0(r1),mss
- bne 2f
- tst size1(r1)
- beq 1f
- 2:
- jsr r5,verify; 'x
- rts pc
- mov size1(r1),r3
- mov tapea(r1),r0
- jsr pc,rseek
- sys unlink; name
- mov mode(r1),0f
- sys 0; 9f
- .data
- 9:
- sys creat; name; 0:..
- .text
- bes crterr
- mov r0,r2
- 2:
- tst mss
- bne 3f
- cmp r3,$512.
- blo 2f
- 3:
- jsr pc,tread
- mov r2,r0
- sys write; tapeb; 512.
- bes crterr1
- cmp r0,$512.
- bne crterr1
- sub r0,r3
- sbc mss
- br 2b
- 2:
- mov r3,0f
- beq 2f
- jsr pc,tread
- mov r2,r0
- sys 0; 9f
- .data
- 9:
- sys write; tapeb; 0:..
- .text
- bes crterr1
- cmp r0,0b
- bne crterr1
- 2:
- mov r2,r0
- sys close
- movb gid(r1),0f+1
- movb uid(r1),0f
- sys 0; 9f
- .data
- 9:
- sys chown; name; 0:..
- .text
- mov time0(r1),r0
- mov r1,-(sp)
- mov time1(r1),r1
- / sys 0; 9f
- .data
- 9:
- sys smdate; name
- .text
- mov (sp)+,r1
- 1:
- rts pc
-
- crterr1:
- clr r0
- mov r1,-(sp)
- clr r1
- / sys smdate; name
- mov (sp)+,r1
- mov r2,r0
- sys close
-
- crterr:
- mov $name,r1
- jsr pc,pstr
- jsr r5,mesg
- < -- create error\n\0>; .even
- rts pc
-