; USRSTAT.MAC by ESKAY - v1.00 of 05/31/85 ; ; this program finds all empty user areas on the current ; drive and displays them. turbodos only. ; cr equ 0dh lf equ 0ah ; cseg ; .z80 .request syslib ; start: ld sp,stack call print## cr,lf ' USRSTAT v1.00 by ESKAY',cr,lf,lf 'User area usage display. This program displays the total number',cr,lf 'of directory entries used in each user area ---- please wait...',0 ld de,fcb call f$open## ..lp: ld de,fcb call f$read## jp nz,done ld ix,80h ld hl,usrs ld a,(ix+0) call zeru ld a,(ix+20h) call zeru ld a,(ix+40h) call zeru ld a,(ix+60h) call zeru jr ..lp ; done: call print cr,lf,lf,lf ' USR FILES USR FILES USR FILES',cr,lf '-------------------------------------------------',cr,lf,0 ld b,32 ; users 0..31 ld hl,usrs ld de,0 loop: call pute call print## ' :',0 push de ld e,(hl) inc hl ld d,(hl) inc hl ex de,hl call phldc## ex de,hl push hl ld hl,(tot) add hl,de ld (tot),hl pop hl pop de inc de ld a,(div) dec a ld (div),a jr z,..odd call print## ' ',0 jr ..evn ; ..odd: call crlf## ld a,3 ld (div),a ..evn: djnz loop call print## cr,lf,lf 'Total directory entries used : ',0 ld c,25 call 5 ld c,19 ld e,a call 50h ld hl,8 and 0fh dec a lp1: add hl,hl dec a jr nz,lp1 ex de,hl ld hl,0 lp2: add hl,de dec c jr nz,lp2 ex de,hl ld hl,(tot) call phlfdc## call print## ' of ',0 ex de,hl call phlfdc## call print## ' (',0 or a sbc hl,de call phlfdc## call print## ' free)',0 call crlf## rst 0 ; pute: ld a,e push af call print## ' ',0 cp 10 jr nc,..g10 ld a,' ' call cout## ..g10: pop af jp pafdc## ; zeru: cp 0e5h jr nz,..ne5 ld a,32 ..ne5: ld e,a ld d,0 push hl add hl,de add hl,de ld e,(hl) inc hl ld d,(hl) inc de ld (hl),d dec hl ld (hl),e pop hl ret ; dseg ; div: db 3 tot: dw 0 fcb: db 0,'$ DIR',0,0,0,0 ds 22 ; usrs: dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ds 100 stack equ $ end