1: / dusg -- summarize disk usage 2: 3: .globl putc, flush, _end 4: mov $1,obuf 5: mov (sp)+,r5 6: tst (sp)+ 7: 1: 8: dec r5 9: bgt 2f 10: tstb buf1 11: beq 3f 12: jsr r5,flush; obuf 13: sys exit 14: 3: 15: mov $dot,r0 16: br 3f 17: 2: 18: mov (sp)+,r0 19: 3: 20: cmpb (r0),$'- 21: bne 2f 22: cmpb 1(r0),$'a 23: bne 3f 24: inc aflg 25: br 1b 26: 3: 27: cmpb 1(r0),$'s 28: bne 1b 29: dec aflg 30: br 1b 31: 2: 32: mov $buf1,r1 33: 2: 34: movb (r0)+,(r1)+ 35: bne 2b 36: dec r1 37: clr buf3+10. 38: mov $_end,iptr 39: mov $_end,brk 40: sys break; _end 41: jsr pc,tree 42: tst aflg 43: bpl 1b 44: jsr r5,name 45: br 1b 46: 47: tree: 48: sys stat; buf1; buf2 49: bes 1f 50: bic $!60000,buf2+4 51: bit $20000,buf2+4 52: beq 2f 53: 1: 54: clr r4 55: rts pc 56: 2: 57: mov $_end,r2 58: mov buf2+2,r3 59: 1: 60: cmp r2,iptr 61: bhis 1f 62: cmp r3,(r2)+ 63: bne 1b 64: clr r4 65: jsr r5,cname 66: rts pc 67: 1: 68: cmp r2,brk 69: blo 1f 70: add $512.,brk 71: sys break; brk: .. 72: 1: 73: mov r3,(r2)+ 74: mov r2,iptr 75: cmp $40000,buf2+4 76: beq 1f 77: jsr pc,gsize 78: jsr r5,cname 79: rts pc 80: 1: 81: jsr pc,gsize 82: mov r4,r3 83: sys open; buf1; 0 84: bec 1f 85: rts pc 86: 1: 87: mov r0,-(sp) 88: mov r1,-(sp) 89: 1: 90: mov 2(sp),r0 91: sys read; buf3; 16. 92: bes 1f 93: tst r0 94: beq 1f 95: tst buf3 96: beq 1b 97: cmp buf3+2,$".\0 98: beq 1b 99: cmp buf3+2,$".. 100: bne 2f 101: tst buf3+4 102: beq 1b 103: 2: 104: mov $buf3+2,r2 105: mov (sp),r1 106: movb $'/,(r1)+ 107: cmpb -2(r1),$'/ 108: bne 2f 109: dec r1 110: 2: 111: movb (r2)+,(r1)+ 112: bne 2b 113: dec r1 114: mov r3,-(sp) 115: jsr pc,tree 116: mov r4,r3 117: add (sp)+,r3 118: br 1b 119: 1: 120: mov (sp)+,r1 121: clrb (r1) 122: mov (sp)+,r0 123: sys close 124: mov r3,r4 125: tst aflg 126: bmi 1f 127: jsr r5,name 128: 1: 129: rts pc 130: 131: cname: 132: tst aflg 133: bgt name 134: rts r5 135: 136: name: 137: jsr pc,pnum 138: mov $011,r0 139: jsr pc,pchar 140: mov $buf1,r2 141: 1: 142: movb (r2)+,r0 143: beq 1f 144: jsr pc,pchar 145: br 1b 146: 1: 147: mov $'\n,r0 148: jsr pc,pchar 149: rts r5 150: 151: gsize: 152: mov r5,-(sp) 153: mov buf2+10.,r5 / size 154: movb buf2+9.,r4 155: add $511.,r5 156: adc r4 157: alsc $-9,r4 158: cmp r5,$8. 159: blo 1f 160: mov r5,-(sp) 161: add $255.,r5 162: alsc $-8,r4 163: add (sp)+,r5 164: 1: 165: mov r5,r4 166: mov (sp)+,r5 167: rts pc 168: 169: pnum: 170: mov r4,-(sp) 171: mov r5,-(sp) 172: mov r4,r5 173: jsr pc,1f 174: mov (sp)+,r5 175: mov (sp)+,r4 176: rts pc 177: 1: 178: clr r4 179: dvd $10.,r4 180: mov r5,-(sp) 181: mov r4,r5 182: beq 1f 183: jsr pc,1b 184: 1: 185: mov (sp)+,r0 186: add $'0,r0 187: jsr pc,pchar 188: rts pc 189: 190: pchar: 191: jsr r5,putc; obuf 192: rts pc 193: 194: dot: <.\0> 195: 196: .bss 197: 198: iptr: .=.+2 199: buf1: .=.+100. 200: buf2: .=.+40. 201: buf3: .=.+18. 202: aflg: .=.+2 203: obuf: .=.+520.