Category : Files from Magazines
Archive   : VOL10N19.ZIP
Filename : NUMFILES.ASM

 
Output of file : NUMFILES.ASM contained in archive : VOL10N19.ZIP
;****************************************************************************
; NUMFILES reports the number of SFT entries created to record the state
; of open files, and thus the setting of FILES= in CONFIG.SYS. To create
; NUMFILES.COM from NUMFILES.ASM, type
;
; MASM NUMFILES;
; LINK NUMFILES;
; EXE2BIN NUMFILES NUMFILES.COM
;
; NUMFILES 1.0 Copyright (c) 1991 Jeff Prosise
; First published in PC Magazine, November 12, 1991
;****************************************************************************

code segment
assume cs:code,ds:code
org 100h
begin: jmp short main

msg db "FILES=$"
crlf db 13,10,"$"

;****************************************************************************
; Procedure MAIN
;****************************************************************************

main proc near
xor cx,cx ;Zero SFT entry count
mov ah,52h ;Get address of DOS's List
int 21h ; of Lists
mov di,es:[bx+4] ;Place address of first SFT
mov es,es:[bx+6] ; header in ES:DI
;
; Walk the chain of SFT headers counting the number of entries in each block.
;
mloop: add cx,es:[di+4] ;Add number of SFT entries
; in this block
mov bx,es:[di] ;Place address of next SFT
mov es,es:[di+2] ; header in ES:DI and loop
mov di,bx ; if the offset address
cmp di,0FFFFh ; isn't equal to FFFFh
jne mloop
;
; Display SFT count and exit.
;
mov ah,09h ;Output "FILES="
mov dx,offset msg
int 21h
mov ax,cx ;Transfer count to AX
call bin2asc ;Print it
mov ah,09h ;Output a carriage return/
mov dx,offset crlf ; line feed pair
int 21h
mov ax,4C00h ;Exit with ERRORLEVEL=0
int 21h
main endp

;****************************************************************************
; BIN2ASC converts a binary value in AX to ASCII form and displays it.
;****************************************************************************

bin2asc proc near
mov bx,10 ;Initialize divisor word and
xor cx,cx ; digit counter
b2a1: inc cx ;Increment digit count
xor dx,dx ;Divide by 10
div bx
push dx ;Save remainder on stack
or ax,ax ;Loop until quotient is zero
jnz b2a1
b2a2: pop dx ;Retrieve a digit from stack
add dl,30h ;Convert it to ASCII
mov ah,2 ;Display it
int 21h
loop b2a2 ;Loop until done
ret
bin2asc endp

code ends
end begin


  3 Responses to “Category : Files from Magazines
Archive   : VOL10N19.ZIP
Filename : NUMFILES.ASM

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/