home *** CD-ROM | disk | FTP | other *** search
/ modiromppu / modiromppu.iso / PROGRAMS / ORGPACKS / SADT2.ZIP / MEMTOOLS.BLK < prev    next >
Text File  |  1995-05-28  |  3KB  |  144 lines

  1. setfree   proc
  2.           mov  bx,ss
  3.           mov  ax,es
  4.           sub  bx,ax
  5.  
  6.           mov  ax,sp
  7.           mov  cl,4
  8.           shr  ax,cl
  9.           add  bx,ax
  10.           inc  bx
  11.  
  12.           mov  ah,4ah
  13.           int  21h
  14.  
  15.           ret
  16.  
  17. setfree   endp
  18.  
  19. Melmac PROC
  20.     MOV  AH,48H
  21.     INT  21H
  22.     JNC  Memory_Available
  23.     push cs
  24.     pop  ds
  25.     MOV  AH,9
  26.     LEA  DX,Memory_Message
  27.     INT  21H
  28.     mov  ax,3
  29.     int  10h
  30.     MOV  AH,4CH
  31.     INT  21H
  32. Memory_Available:
  33.     MOV  cs:[DI],AX
  34.     RET
  35. Memory_Message db 7,"Sorry dude! Your machine hasn't got enough memory.$"
  36. Melmac ENDP
  37.  
  38. LFTEMC PROC
  39.     MOV  AH,49H
  40.     PUSH ES
  41.     PUSH word ptr cs:[DI]
  42.     POP  ES
  43.     INT  21H
  44.     POP  ES
  45.     RET
  46. LFTEMC ENDP
  47.  
  48. fll dw 0
  49. flh dw 0
  50.  
  51. Loadseg PROC
  52. ; CS:[DI] <= where to store segment
  53. ; CS:[DX] <= Filename
  54.         push ds
  55.         push cs
  56.         pop  ds
  57.         mov  ah,3dh
  58.         mov  al,10010010b
  59.         int  21h
  60.         jnc  fileopen
  61.         mov  si,dx
  62. lodmore:
  63.         lodsb
  64.         cmp  al,0
  65.         jne  lodmore
  66.         mov  byte ptr ds:[si-1],'$'
  67.         push dx
  68.         lea  dx,fileerror1
  69.         mov  ah,9
  70.         int  21h
  71.         pop  dx
  72.         mov  ah,9
  73.         int  21h
  74.         lea  dx,fileerror2
  75.         mov  ah,9
  76.         int  21h
  77.         mov  ah,4ch
  78.         int  21h
  79. fileopen:
  80.         mov  bx,ax
  81.         mov  ah,42h
  82.         mov  al,2
  83.         mov  cx,0
  84.         mov  dx,0
  85.         int  21h
  86.         mov  si,ax                         ; loword
  87.         mov  bp,dx                         ; hiword
  88.  
  89.         mov     cs:fll,ax
  90.         mov     cs:flh,dx
  91.  
  92.         mov  ah,42h
  93.         mov  al,0
  94.         mov  cx,0
  95.         mov  dx,0
  96.         int  21h
  97.         push bx
  98.         mov  dx,bp
  99.         mov  bx,si
  100.         rept 4
  101.         clc
  102.         rcr  dx,1
  103.         rcr  bx,1
  104.         endm
  105.         add  bx,1
  106.         call melmac
  107.         push word ptr cs:[di]
  108.         pop  ds
  109.         pop  bx
  110.         cmp  bp,0
  111.         jne  mehrere_segmente
  112.         mov  ah,3fh
  113.         mov  cx,si
  114.         mov  dx,0
  115.         int  21h
  116.         mov  ah,3eh
  117.         int  21h
  118.         pop  ds
  119.         ret
  120. mehrere_segmente:
  121.         mov  ah,3fh
  122.         mov  cx,0FFFFh
  123.         mov  dx,0
  124.         int  21h
  125.         mov  ax,ds
  126.         add  ax,1000h
  127.         mov  ds,ax
  128.         sub  si,0FFFFh
  129.         sub  bp,1
  130.         cmp  bp,0
  131.         jg   mehrere_segmente
  132.         mov  ah,3fh
  133.         mov  cx,si
  134.         mov  dx,0
  135.         int  21h
  136.         mov  ah,3eh
  137.         int  21h
  138.         pop  ds
  139.         ret
  140. fileerror1 db 7,"Error! Can't find the file '$"
  141. fileerror2 db "'",13,10,"$"
  142. Loadseg Endp
  143.  
  144.