home *** CD-ROM | disk | FTP | other *** search
- /
- /
- ed:
- mov (sp)+,r3
- ble error
- econ:
- sys stat; ftemp; buffer
- bec 2f
- sys creat; ftemp; 666
- mov r0,tmpw
- sys open; ftemp; 0
- mov r0,tmpr
- br 1f
- 2:
- cmpb $'z,ftemp+9.
- bne 2f
- mov $1,r0
- sys write; erm; 23.
- jmp loop
- 2:
- incb ftemp+9.
- br econ
- 1:
- mov (sp),r0
- jsr pc,getspq
- bes 3f
- mov r0,r4
- mov r2,r1
- jsr pc,rewind
- mov $buffer,r2
- 1:
- jsr pc,getchar
- bes 1f
- movb r0,(r2)+
- br 1b
- 1:
- movb $'\n,(r2)+
- jsr pc,output
- mov r4,r1
- jsr pc,rewind
- 2:
- mov $buffer,r2
- 1:
- jsr pc,getchar
- bes 1f
- movb r0,(r2)+
- cmp r2,$bufend
- blo 1b
- mov tmpw,r0
- sys write; buffer; 512.
- br 2b
- 1:
- sub $buffer,r2
- beq 4f
- mov r2,0f
- mov tmpw,r0
- sys write; buffer; 0:..
- 4:
- tst iflag
- beq 1f
- mov tmpw,r0
- sys close
- mov tmpr,r0
- sys close
- sys unlink; ftemp
- jmp loop
- 1:
- mov tmpw,r0
- sys close
- sys fork
- br 5f
- mov r1,-(sp)
- sys wait
- sys signal; 2; inter
- mov (sp)+,r1
- mov a(r1),w(r1)
- 2:
- mov tmpr,r0
- sys read; buffer; 512.
- tst r0
- beq 2f
- add $buffer,r0
- mov r0,bufend
- mov $buffer,r2
- 1:
- movb (r2)+,r0
- jsr pc,putchar
- cmp r2,bufend
- blo 1b
- br 2b
- 2:
- mov tmpr,r0
- sys close
- sys unlink; ftemp
- tst iflag
- beq 1f
- jmp loop
- 1:
- tst qflag
- bgt 1f
- tst (sp)+
- dec r3
- bgt 1f
- jmp loop
- 1: jmp econ
- jmp loop
- 3:
- mov (sp),r2
- mov $2,r0
- jsr pc,allocate
- 1:
- tstb (r2)
- beq 1f
- movb (r2)+,r0
- jsr pc,putchar
- br 1b
- 1:
- mov r1,r0
- mov asmem,r1
- jsr pc,putword
- mov $2,r0
- jsr pc,allocate
- mov r1,r0
- mov asmem,r1
- jsr pc,putword
- mov r0,r1
- br 4b
- 5:
- mov $2,r0
- 1:
- sys close
- inc r0
- cmp r0,$10.
- blo 1b
- sys exec; edd; eda
- sys exit
- eda: edd; ftemp; 0
- edd: </bin/ed\0>
- .even
- ftemp: </tmp/ftmpa\0>
- erm: <Cannot open temp. file\n>
- .even
- tmpw: .=.+2
- tmpr: .=.+2
- /
- / remove a 'file' from memory
- /
- remove:
- mov (sp)+,r3
- bgt 5f
- mov $1,vflag
- mov asmem,r1
- jsr pc,rewind
- mov r(r1),-(sp)
- 4:
- tst iflag
- beq 1f
- jmp loop
- 1:
- jsr pc,getword
- bes 4f
- mov r0,r2
- jsr pc,ask
- bec 1f
- mov r(r1),(sp)
- br 4b
- 1:
- jsr pc,getword
- br 2f
- 5:
- mov (sp),r0
- jsr pc,getspq
- bec 2f
- tst qflag
- blt 6f
- mov (sp),r1
- jsr pc,nothere
- br 3f
- 2:
- mov r0,r1
- jsr pc,release
- mov r2,r1
- jsr pc,release
- jsr pc,rm
- 3:
- tst vflag
- bne 3f
- tst iflag
- beq 1f
- jmp loop
- 1:
- tst qflag
- bgt 5b
- 6:
- tst (sp)+
- dec r3
- bgt 5b
- jmp loop
- 3:
- mov asmem,r1
- mov (sp),r(r1)
- br 4b
- 4:
- tst (sp)+
- jmp loop
- /
- / rename a 'file'
- /
- rename:
- mov (sp)+,r3
- bne 1f
- jmp error
- 1:
- sub $2,r3
- blt 1f
- 5:
- mov (sp),r0
- jsr pc,getsp
- bes 4f
- tst (sp)+
- sub $4,r(r1)
- mov (sp),r0
- mov r2,-(sp)
- mov r(r1),-(sp)
- jsr pc,getsp
- bes 3f
- mov r2,-(sp)
- mov r0,r1
- jsr pc,release
- jsr pc,rm
- mov (sp)+,r0
- mov (sp)+,r(r1)
- jsr pc,alterword
- mov (sp)+,r1
- jsr pc,release
- br 5f
- 3:
- mov (sp)+,r(r1)
- mov (sp)+,r1
- jsr pc,release
- mov $2,r0
- jsr pc,allocate
- mov (sp)+,r2
- 2:
- movb (r2)+,r0
- beq 2f
- jsr pc,putchar
- br 2b
- 2:
- mov r1,r0
- mov asmem,r1
- jsr pc,alterword
- 5:
- tst iflag
- beq 2f
- jmp loop
- 2:
- tst r3
- beq 2f
- sub $2,r3
- bge 5b
- 1:
- tst (sp)+
- jmp error
- 2:
- jmp loop
- 4:
- mov (sp)+,r1
- jsr pc,nothere
- tst (sp)+
- br 5b
- /
- / list contents of asmem
- /
- list:
- mov $buffer,r2
- movb $'\n,(r2)+
- jsr pc,output
- mov (sp)+,r3
- beq 1f
- mov $1,vflag
- 5:
- tst iflag
- beq 2f
- jmp loop
- 2:
- mov (sp),r0
- jsr pc,getspq
- bes 4f
- mov r2,r1
- br 3f
- 1:
- mov asmem,r1
- jsr pc,fsfile
- sub $2,r(r1)
- 2:
- tst iflag
- bne 2f
- jsr pc,backword
- bes 2f
- mov r0,r1
- 3:
- jsr pc,getn
- movb $'\n,(r2)+
- jsr pc,output
- tst vflag
- bne 1f
- mov asmem,r1
- sub $2,r(r1)
- br 2b
- 1:
- tst qflag
- bgt 5b
- 4:
- tst (sp)+
- dec r3
- bgt 5b
- 2:
- mov $buffer,r2
- movb $'\n,(r2)+
- jsr pc,output
- jmp loop
- /
- / list a 'file
- /
- listf:
- mov (sp)+,r3
- bgt 4f
- jmp error
- 4:
- mov (sp),r0
- jsr pc,getspq
- bes 3f
- mov r0,r4
- mov r2,r1
- jsr pc,rewind
- mov $buffer,r2
- movb $'\n,(r2)+
- 1:
- jsr pc,getchar
- bes 1f
- movb r0,(r2)+
- cmp r2,$bufend
- blo 1b
- jsr pc,output
- br 1b
- 1:
- mov r4,r1
- jsr pc,rewind
- movb $':,(r2)+
- cmp r2,$bufend
- blo 2f
- jsr pc,output
- 2:
- movb $'\n,(r2)+
- 1:
- tst iflag
- beq 2f
- jmp loop
- 2:
- cmp r2,$bufend
- blo 2f
- jsr pc,output
- 2:
- jsr pc,getchar
- bes 1f
- movb r0,(r2)+
- br 1b
- 1:
- jsr pc,output
- 3:
- tst qflag
- bgt 4b
- tst (sp)+
- dec r3
- bgt 4b
- mov $buffer,r2
- movb $'\n,(r2)+
- jsr pc,output
- jmp loop
- /
- fin:
- jsr pc,flush
- jsr pc,whead
- 4
- q:
- jsr pc,flush
- jsr pc,whead
- sys exit
- memck: mov (sp)+,r3
- 2:
- ble 2f
- mov (sp)+,r1
- cmpb (r1),$'p
- bne 1f
- bis $1,vflag
- br 3f
- 1:
- cmpb (r1),$'f
- bne 3f
- bis $2,vflag
- 3:
- dec r3
- br 2b
- 2:
- clr freeh
- mov $freeb,r2
- 1:
- clr (r2)+
- cmp r2,$freen
- blo 1b
- mov $headers,r2
- 2:
- cmp l(r2),$hsz
- beq 6f
- jsr pc,ck
- bec 1f
- cmp r2,asmem
- beq 1f
- mov asmem,r1
- jsr pc,rewind
- clr r3
- 4:
- inc r3
- jsr pc,getword
- bes 5f
- cmp r0,r2
- bne 4b
- 6:
- inc freeh
- 1:
- cont:
- add $8.,r2
- cmp r2,$headend-4
- blo 2b
- mov asmem,r1
- jsr pc,rewind
- 4:
- jsr pc,getword
- bes 4f
- tst r(r0)
- beq 2f
- mov r0,r2
- jsr pc,ck
- bes 4b
- 2:
- sub $hblk,r0
- jsr r5,oct
- mov $1,r0
- sys write; re; 24.
- cmp vflag,$1
- beq 4b
- bit $1,r3
- beq 2f
- jsr pc,getword
- mov r0,r1
- jsr pc,release
- br 3f
- 2:
- jsr pc,backword
- add $4,r(r1)
- mov r0,r1
- jsr pc,release
- 3:
- jsr pc,rm
- clr r3
- br 4b
- 4:
- mov freeh,r0
- jsr r5,decml
- mov $1,r0
- sys write; frh; 14.
- mov $freeb,r2
- mov $1,r3
- 6:
- cmp r2,$freen
- bhis 6f
- mov (r2)+,r0
- beq 3f
- jsr r5,decml
- mov $1,r0
- sys write; frb; 18.
- mov r3,r0
- jsr r5,decml
- mov $1,r0
- sys write; lf; 1.
- 3:
- asl r3
- br 6b
- 6:
- mov $1,r0
- sys write; lf; 1.
- jmp loop
- 5:
- mov r2,r0
- sub $hblk,r0
- jsr r5,oct
- mov $1,r0
- sys write; un; 26.
- tst vflag
- beq 1b
- mov r2,r1
- cmp vflag,$2
- beq 3f
- jsr pc,rewind
- mov $buffer,r2
- 2:
- jsr pc,getchar
- bes 2f
- movb r0,(r2)+
- cmp r2,$buffer+80.
- blo 2b
- jsr pc,output
- br 2b
- 2:
- movb $'\n,(r2)+
- jsr pc,output
- mov r1,r2
- cmp vflag,$1
- bne 3f
- jmp cont
- 3:
- jsr pc,release
- jmp cont
- /
- interrupt: 4
- /
- un: < header not accounted for\n>
- re: < part of asmem released\n>
- lf: <\n>
- frh: < free headers\n >
- frb: < free blocks size >
- endc: .even
-