📄 fed2.s
字号:
//ed: mov (sp)+,r3 ble errorecon: sys stat; ftemp; buffer bec 2f sys creat; ftemp; 666 mov r0,tmpw sys open; ftemp; 0 mov r0,tmpr br 1f2: cmpb $'z,ftemp+9. bne 2f mov $1,r0 sys write; erm; 23. jmp loop2: incb ftemp+9. br econ1: mov (sp),r0 jsr pc,getspq bes 3f mov r0,r4 mov r2,r1 jsr pc,rewind mov $buffer,r21: jsr pc,getchar bes 1f movb r0,(r2)+ br 1b1: movb $'\n,(r2)+ jsr pc,output mov r4,r1 jsr pc,rewind2: mov $buffer,r21: jsr pc,getchar bes 1f movb r0,(r2)+ cmp r2,$bufend blo 1b mov tmpw,r0 sys write; buffer; 512. br 2b1: 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 loop1: 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,r21: movb (r2)+,r0 jsr pc,putchar cmp r2,bufend blo 1b br 2b2: mov tmpr,r0 sys close sys unlink; ftemp tst iflag beq 1f jmp loop1: tst qflag bgt 1f tst (sp)+ dec r3 bgt 1f jmp loop1: jmp econ jmp loop3: mov (sp),r2 mov $2,r0 jsr pc,allocate1: tstb (r2) beq 1f movb (r2)+,r0 jsr pc,putchar br 1b1: 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 4b5: mov $2,r01: sys close inc r0 cmp r0,$10. blo 1b sys exec; edd; eda sys exiteda: edd; ftemp; 0edd: </bin/ed\0> .evenftemp: </tmp/ftmpa\0>erm: <Cannot open temp. file\n> .eventmpw: .=.+2tmpr: .=.+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 loop1: jsr pc,getword bes 4f mov r0,r2 jsr pc,ask bec 1f mov r(r1),(sp) br 4b1: jsr pc,getword br 2f5: mov (sp),r0 jsr pc,getspq bec 2f tst qflag blt 6f mov (sp),r1 jsr pc,nothere br 3f2: mov r0,r1 jsr pc,release mov r2,r1 jsr pc,release jsr pc,rm3: tst vflag bne 3f tst iflag beq 1f jmp loop1: tst qflag bgt 5b6: tst (sp)+ dec r3 bgt 5b jmp loop3: mov asmem,r1 mov (sp),r(r1) br 4b4: tst (sp)+ jmp loop// rename a 'file'/rename: mov (sp)+,r3 bne 1f jmp error1: sub $2,r3 blt 1f5: 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 5f3: mov (sp)+,r(r1) mov (sp)+,r1 jsr pc,release mov $2,r0 jsr pc,allocate mov (sp)+,r22: movb (r2)+,r0 beq 2f jsr pc,putchar br 2b2: mov r1,r0 mov asmem,r1 jsr pc,alterword5: tst iflag beq 2f jmp loop2: tst r3 beq 2f sub $2,r3 bge 5b1: tst (sp)+ jmp error2: jmp loop4: 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,vflag5: tst iflag beq 2f jmp loop2: mov (sp),r0 jsr pc,getspq bes 4f mov r2,r1 br 3f1: mov asmem,r1 jsr pc,fsfile sub $2,r(r1)2: tst iflag bne 2f jsr pc,backword bes 2f mov r0,r13: jsr pc,getn movb $'\n,(r2)+ jsr pc,output tst vflag bne 1f mov asmem,r1 sub $2,r(r1) br 2b1: tst qflag bgt 5b4: tst (sp)+ dec r3 bgt 5b2: mov $buffer,r2 movb $'\n,(r2)+ jsr pc,output jmp loop// list a 'file/listf: mov (sp)+,r3 bgt 4f jmp error4: 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 1b1: mov r4,r1 jsr pc,rewind movb $':,(r2)+ cmp r2,$bufend blo 2f jsr pc,output2: movb $'\n,(r2)+1: tst iflag beq 2f jmp loop2: cmp r2,$bufend blo 2f jsr pc,output2: jsr pc,getchar bes 1f movb r0,(r2)+ br 1b1: jsr pc,output3: 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 4q: jsr pc,flush jsr pc,whead sys exitmemck: mov (sp)+,r32: ble 2f mov (sp)+,r1 cmpb (r1),$'p bne 1f bis $1,vflag br 3f1: cmpb (r1),$'f bne 3f bis $2,vflag3: dec r3 br 2b2: clr freeh mov $freeb,r21: clr (r2)+ cmp r2,$freen blo 1b mov $headers,r22: cmp l(r2),$hsz beq 6f jsr pc,ck bec 1f cmp r2,asmem beq 1f mov asmem,r1 jsr pc,rewind clr r34: inc r3 jsr pc,getword bes 5f cmp r0,r2 bne 4b6: inc freeh1:cont: add $8.,r2 cmp r2,$headend-4 blo 2b mov asmem,r1 jsr pc,rewind4: jsr pc,getword bes 4f tst r(r0) beq 2f mov r0,r2 jsr pc,ck bes 4b2: 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 3f2: jsr pc,backword add $4,r(r1) mov r0,r1 jsr pc,release3: jsr pc,rm clr r3 br 4b4: mov freeh,r0 jsr r5,decml mov $1,r0 sys write; frh; 14. mov $freeb,r2 mov $1,r36: 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 6b6: mov $1,r0 sys write; lf; 1. jmp loop5: 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,r22: jsr pc,getchar bes 2f movb r0,(r2)+ cmp r2,$buffer+80. blo 2b jsr pc,output br 2b2: movb $'\n,(r2)+ jsr pc,output mov r1,r2 cmp vflag,$1 bne 3f jmp cont3: 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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -