home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS - Coast to Coast / simteldosarchivecoasttocoast2.iso / asmutil / stdlib.zip / CRSETS.ASM < prev    next >
Assembly Source File  |  1990-07-21  |  988b  |  55 lines

  1. stdlib        segment    para public 'slcode'
  2.         assume    cs:stdlib
  3. ;
  4.         extrn    sl_malloc:far
  5. ;
  6. ; CreateSets-    Creates an 8-element array of sets.
  7. ;
  8. ; outputs:
  9. ;
  10. ;    es:di-    Pointer to first element.  Each successive element of the
  11. ;        array starts one byte later.
  12. ;
  13. ;    carry=0 if successful.
  14. ;    carry=1 if could not allocate sufficient memory for the set.
  15. ;
  16. ;
  17.         public    sl_CreateSets
  18. ;
  19. sl_CreateSets    proc    far
  20.         push    ax
  21.         push    cx
  22.         pushf
  23. ;
  24.         mov    cx, 256+16        ;# of bytes for a set array.
  25.         call    sl_malloc        ;Allocate storage for the set.
  26.         jc    BadAlloc
  27.         xor    ax, ax            ; Turn into the empty set.
  28.         push    di
  29.         mov    cx, (256+16)/2
  30.         cld
  31.     rep    stosw
  32.         pop    di
  33.         mov    word ptr es:[di], 201h    ;Init the mask bytes
  34.         mov    word ptr es:2[di], 804h
  35.         mov    word ptr es:4[di], 2010h
  36.         mov    word ptr es:6[di], 8040h
  37. ;
  38.         popf
  39.                 pop    cx
  40.         pop    ax
  41.         clc
  42.         ret
  43. ;
  44. BadAlloc:    pop    di
  45.         popf
  46.                 pop    cx
  47.         pop    ax
  48.         stc
  49.         ret
  50. sl_CreateSets    endp
  51. ;
  52. ;
  53. stdlib        ends
  54.         end
  55.