МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Интранет сети

    ; HiWordLen,LoWordLen : integer;

    ; ErrCode := PRLH_Rel(FileHandle,HiByteOffset,LoByteOffset,HiWordLen,

    ; LoWordLen:integer);

    ;

    begin PRLH_Clr

    push bp

    mov bp,sp

    push ds

    lds si,[bp+x+16] ; FileHandle

    mov bx,[si]

    lds si,[bp+x+12] ; ByteOffset

    mov cx,[si]

    lds si,[bp+x+8]

    mov dx,[si]

    lds si,[bp+x+4] ; HiWordLen

    mov si,[si]

    lds di,[bp+x] ; LoWordLen

    mov di,[di]

    mov ah,0BEH

    int 21H

    mov ah,0

    pop ds

    pop bp

    ret 22

    PRLH_Clr endp

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ;

    ; Physical Record Lock: Log Rec FCB BFH

    ;

    ; var

    ; ErrCode,fcb,HiByteOffset,LoByteOffset : Integer;

    ; HiLockLen,LoLockLen,Flags,TimeOut : Integer;

    ;

    ; ErrCode :=

    PRLF_Log(fcb,HiByteOffset,LoByteOffset,HiLockLen,LoLockLen,Flags,TimeOut);

    ;

    begin PRLF_Log

    push bp

    mov bp,sp

    push ds

    lds si,[bp+x+24] ; FCB

    mov dx,[si]

    lds si,[bp+x+20] ; ByteOffset

    mov bx,[si]

    lds si,[bp+x+16]

    mov cx,[si]

    lds si,[bp+x+4] ; AL = Log Flags

    mov ax,[si]

    lds si,[bp+x+8] ; low lock length

    mov di,[si]

    lds si,[bp+x+12] ; hi lock length

    mov si,[si]

    mov bp,[bp+x] ; timeout value

    mov bp,[bp]

    mov ah,0BFH

    int 21H

    mov ah,0

    pop ds

    pop bp

    ret 28

    PRLF_Log endp

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ;

    ; Physical Record Lock: Rel Rec FCB C0H

    ;

    ; var

    ; ErrCode,fcb,HiByteOffset,LoByteOffset : Integer;

    ;

    ; ErrCode := PRLF_Rel(fcb,HiByteOffset,LoByteOffset);

    ;

    begin PRLF_Rel

    push bp

    mov bp,sp

    push ds

    lds dx,[bp+x+8] ; FCB

    lds si,[bp+x+4] ; ByteOffset

    mov bx,[si]

    lds si,[bp+x]

    mov cx,[si]

    mov ah,0C0H

    int 21H

    mov ah,0

    pop ds

    pop bp

    ret 12

    PRLF_Rel endp

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ;

    ; Physical Record Lock: Clr Rec FCB C1H

    ;

    ; var

    ; ErrCode,fcb,HiByteOffset,LoByteOffset : Integer;

    ;

    ; ErrCode := PRLF_clr(fcb,HiByteOffset,LoByteOffset);

    ;

    begin PRLF_Clr

    push bp

    mov bp,sp

    push ds

    lds dx,[bp+x+8] ; FCB

    lds si,[bp+x+4] ; ByteOffset

    mov bx,[si]

    lds si,[bp+x]

    mov cx,[si]

    mov ah,0C0H

    int 21H

    mov ah,0

    pop ds

    pop bp

    ret 12

    PRLF_Clr endp

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ;

    ; Lock Record Set C2H

    ;

    ; var

    ; ErrCode, Flags, TimeOut : Integer;

    ;

    ; ErrCode := PRLS_Lck(Flags,TimeOut);

    ;

    begin PRLS_Lck

    push bp

    mov bp,sp

    push ds

    lds si,[bp+x+4] ; AL = Lock flag bits

    mov ax,[si]

    lds si,[bp+x] ; TimeOut Value

    mov bp,[si]

    mov ah,0C2h

    int 21h

    mov ah,0

    pop ds

    pop bp

    ret 10

    PRLS_Lck endp

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ;

    ; Release Record Set C3H

    ;

    ; var

    ; ErrCode : Integer;

    ;

    ; ErrCode := PRLS_Rel;

    ;

    begin PRLS_Rel

    mov ah,0C3h

    int 21h

    mov ah,0

    ret

    PRLS_Rel endp

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ;

    ; Clear Record Set C4H

    ;

    ; var

    ; ErrCode : Integer;

    ;

    ; errcode := PRLS_Clr;

    ;

    begin PRLS_Clr

    mov ah,0C4h

    int 21h

    mov ah,0

    ret

    PRLS_Clr endp

    ;--------------------------------

    ; Semaphores func(197) (C5H) subfunction 00h

    ;

    ; var

    ; RetCode,SemaValu,HiHandle,LoHandle,OpenCnt : Integer;

    ; Sema4 : String[n];

    ;

    ; RetCode := OpenSem(Sema4,SemaValu,HiHandle,LoHandle,OpenCnt);

    ;

    begin OpenSem

    push bp

    mov bp,sp

    push ds

    lds dx,[bp+x+16] ; ptr to Semaphore string

    ; inc dx ; add 1 to get the address of the string

    lds si,[bp+x+12] ; set semaphore value

    mov cx,[si]

    mov ax,0C500h ; set the function

    int 21h

    mov bh,00h

    lds di,[bp+x] ; return the open count

    mov [di],bx

    lds di,[bp+x+4] ; return low handle

    mov [di],cx

    lds di,[bp+x+8] ; return high handle

    mov [di],dx

    mov ah,00h

    pop ds

    pop bp

    ret 22

    OpenSem endp

    ;--------------------------------

    ; Semaphores func(197) (C5H) subfunction 01h

    ;

    ; var

    ; RetCode,HiHandle,LoHandle,SemaValu,OpenCnt : Integer;

    ;

    ; RetCode := ExamSem(HiHandle,LoHandle,SemaValu,OpenCnt);

    ;

    begin ExamSem

    push bp

    mov bp,sp

    push ds

    lds si,[bp+x+12] ; hi handle

    mov dx,[si]

    lds si,[bp+x+8] ; lo handle

    mov cx,[si]

    mov ax,0C501h ; set function

    int 21h

    lds di,[bp+x+4] ; return semaphore value

    mov [di],cx

    mov dh,00h

    lds di,[bp+x]

    mov [di],dx ; return open count

    mov ah,00h

    pop ds

    pop bp

    ret 16

    ExamSem endp

    ;--------------------------------

    ; Semaphores func(197) (C5H) subfunction 02h

    ;

    ; var

    ; RetCode,HiHandle,LoHandle,TimeOut : Integer;

    ;

    ; RetCode := WaitSem(HiHandle,LoHandle,TimeOut);

    ;

    begin WaitSem

    push bp

    mov bp,sp

    push ds

    lds si,[bp+x+8] ; hi handle

    mov dx,[si]

    lds si,[bp+x+4] ; lo handle

    mov cx,[si]

    lds si,[bp+x]

    mov bp,[si] ; set time out

    mov ax,0C502h ; set function

    int 21h

    mov ah,00h

    pop ds

    pop bp

    ret 12

    WaitSem endp

    ;--------------------------------

    ; Semaphores func(197) (C5H) subfunction 03h

    ;

    ; var

    ; RetCode,HiHandle,LoHandle : Integer;

    ;

    ; RetCode := SigSem(HiHandle,LoHandle);

    ;

    begin SigSem

    push bp

    mov bp,sp

    push ds

    lds si,[bp+x+4] ; hi handle

    mov dx,[si]

    lds si,[bp+x] ; lo handle

    mov cx,[si]

    mov ax,0C503h ; set function

    int 21h

    mov ah,00h

    pop ds

    pop bp

    ret 8

    SigSem endp

    ;--------------------------------

    ; Semaphores func(197) (C5H) subfunction 04h

    ;

    ; var

    ; RetCode,HiHandle,LoHandle : Integer;

    ;

    ; RetCode := ClosSem(HiHandle,LoHandle);

    ;

    begin ClosSem

    push bp

    mov bp,sp

    push ds

    lds si,[bp+x+4] ; hi handle

    mov dx,[si]

    lds si,[bp+x] ; lo handle

    mov cx,[si]

    mov ax,0C504h ; set function

    int 21h

    mov ah,00h

    pop ds

    pop bp

    ret 8

    ClosSem endp

    ;--------------------------------

    ; Get or Set Lock Mode func(198) (C6H)

    ;

    ; var

    ; Mode,Func : Integer;

    ;

    ; Mode := setlck(Func);

    ;

    begin setlck

    push bp

    mov bp,sp

    push ds

    lds si,[bp+x]

    mov ax,[si] ; set the subfunction

    mov ah,0C6h ; set the function

    int 21h

    mov ah,0

    pop ds

    pop bp

    ret 4

    setlck endp

    ;--------------------------------

    ; Transactional Backout func(199) (C7H)

    ;

    ; var

    ; RetCode, Func : Integer;

    ;

    ; RetCode := BakOuts(Func);

    ;

    begin BakOuts

    push bp

    mov bp,sp

    push ds

    lds si,[bp+x] ; set the subfunction

    mov ax,[si]

    mov ah,0C7h ; set the function

    int 21h

    mov ah,0

    pop ds

    pop bp

    ret 4

    BakOuts endp

    ;--------------------------------

    ; Begin transaction func(200) (C8H)

    ;

    ; var

    ; RetCode,Mode : Integer;

    ;

    ; RetCode := btrans(Mode);

    ;

    begin btrans

    mov ah,0C8h

    call arg1t

    ret 4

    btrans endp

    ;--------------------------------

    ; End Transaction func(201) (C9H)

    ;

    ; var

    ; RetCode : Integer;

    ;

    ; RetCode := etrans;

    ;

    begin etrans

    mov ah,0C9H

    int 021h

    mov ah,00h

    ret

    etrans endp

    ;--------------------------------

    ; Exc.log File (202) (CA)

    ;

    ; var

    ; RetCode, FcbAddr : Integer;

    ;

    ; RetCode := exclog(FcbAddr);

    ;

    begin exclog

    mov ah,0CAH

    call arg1f

    ret 4

    exclog endp

    ;--------------------------------

    ; Exc Lock Set func(203) (CBH)

    ;

    ; var

    ; RetCode, Mode : Integer;

    ;

    ; RetCode := exclcks(Mode);

    ;

    begin exclcks

    mov ah,0CBH

    call arg1

    ret 4

    exclcks endp

    ;--------------------------------

    ; Exclusive file unlock (204) (CC)

    ;

    ; var

    ; RetCode, FcbAddr : Integer;

    ;

    ; RetCode := exculkf(FcbAddr);

    ;

    begin exculkf

    mov ah,0CCH

    call arg1f

    ret 4

    exculkf endp

    ;--------------------------------

    ; Exclusive Unlock Set (205)(CD)

    ;

    ; var

    ; RetCode : Integer;

    ;

    ; RetCode := exculks;

    ;

    begin exculks

    mov ah,0CDH

    int 21h

    mov ah,00h

    ret

    exculks endp

    ;--------------------------------

    ; Exc Clear file func(206) (CEH)

    ;

    ; var

    ; RetCode, FcbAddr : Integer;

    ;

    ; RetCode := excclrf(FcbAddr);

    ;

    begin excclrf

    mov ah,0CEH

    call arg1f

    ret 4

    excclrf endp

    ;--------------------------------

    ; Exc Clear Set func(207) (CFH)

    ;

    ; var

    ; RetCode : Integer;

    ;

    ; RetCode := excclrs;

    ;

    begin excclrs

    mov ah,0CFH

    int 21h

    mov ah,00h

    ret

    excclrs endp

    ;--------------------------------

    ; Log Record(s) func(208) (D0H)

    ;

    ; var

    ; RetCode, Flag, Timeout : Integer ;

    ; RecStr : String[n];

    ;

    ; RetCode := reclog(RecStr,Flag,Timeout);

    ;

    begin reclog

    push bp

    mov bp,sp

    push ds

    lds si,[bp+x+4] ; load flags

    mov ax,[si]

    lds si,[bp+x] ; get timeout

    mov si,[si]

    lds dx,[bp+x+8] ; get ptr to string

    ; inc dx

    mov bp,si ; move timeout to BP

    mov ah,0D0h

    int 21h

    mov ah,0

    pop ds

    pop bp

    ret 14

    reclog endp

    ;--------------------------------

    ; Record Lock func(209) (D1H)

    ;

    ; var

    ; RetCode, Mode : Integer;

    ;

    ; RetCode := reclck(Mode);

    ;

    begin reclck

    push bp

    mov bp,sp

    push ds

    lds si,[bp+x]

    mov bp,[si]

    mov ah,0D1h

    int 21h

    mov ah,0

    pop ds

    pop bp

    ret 6

    reclck endp

    ;--------------------------------

    ; Record Unlock func(210) (D2H)

    ;

    ; var

    ; RetCode : Integer;

    ; Semaphore : String[n];

    ;

    ; RetCode := reculk(Semaphore);

    ;

    begin reculk

    mov ah,0D2H

    call arg1a

    ret 4

    reculk endp

    ;--------------------------------

    ; Unlock Record Set func(211) (D3H)

    ;

    ; var

    ; RetCode : Integer;

    ;

    ; RetCode := reculks;

    ;

    begin reculks

    mov ah,0D3H

    int 21h

    mov ah,00h

    ret

    reculks endp

    ;--------------------------------

    ; Record Clear func(212) (D4H)

    ;

    ; var

    ; RetCode : Integer;

    ; Semaphore : String[n];

    ;

    ; RetCode := recclr(Semaphore);

    ;

    begin recclr

    mov ah,0D4H

    call arg1a

    ret 4

    recclr endp

    ;--------------------------------

    ; Clear record set func(213) (D5H)

    ;

    ; var

    ; RetCode : Integer;

    ;

    ; RetCode := recclrs;

    ;

    begin recclrs

    mov ah,0D5H

    int 21h

    mov ah,00h

    ret 4

    recclrs endp

    ;--------------------------------

    ; End of Job func(214) (D6H)

    ;

    ; var

    ; RetCode : Integer;

    ;

    ; RetCode := eoj;

    ;

    begin eoj

    mov ah,0D6H

    int 21h

    mov ah,00h

    ret 4

    eoj endp

    ;--------------------------------

    ; Logout System func(215) (D7H)

    ;

    ; var

    ; RetCode : Integer;

    ;

    ; RetCode := sysout;

    ;

    begin sysout

    mov ah,0D7H

    int 21h

    mov ah,00h

    ret 4

    sysout endp

    ;--------------------------------

    ; Vol Statistics func(218) (DAH)

    ;

    ; var

    ; RetCode,volume : Integer;

    ; reply : String[n];

    ;

    ; RetCode := volstat(volume, reply);

    begin volstat

    mov ah,0DAh

    push bp

    mov bp,sp

    push ds

    push es

    lds si,[bp+x+4] ; addr for the volume number

    mov dx,[si] ; get the volume number

    les di,[bp+x] ; ptr to reply buffer

    inc di ; add 1 to get the address of the string

    int 21h

    mov ah,00h

    pop es

    pop ds

    pop bp

    ret 8

    volstat endp

    ;--------------------------------

    ; Local Disks func(219) (DBH)

    ;

    ; var

    ; NumDisks : Integer;

    ;

    ; NumDisks := locdrv;

    ;

    begin locdrv

    mov ah,0DBH

    int 21h

    mov ah,00h

    ret

    locdrv endp

    ;--------------------------------

    ; WorkStation ID func(220) (DCH)

    ;

    ; note: This routine returns the station number as an integer.

    ; It can also be returned in ASCII with this call.

    ;

    ; var

    ; StationNum : Integer;

    ;

    ; StationNum := wsid;

    ;

    begin wsid

    mov ah,0DCH

    int 21h

    mov ah,00h

    ret

    wsid endp

    ;--------------------------------

    ; Set Error mode func(221) (DDH)

    ;

    ; var

    ; mode : Integer;

    ;

    ; errmode(mode);

    ;

    begin errmode

    mov ah,0DDH

    call arg1

    ret 4

    errmode endp

    ;--------------------------------

    ; Broadcast Mode func(222) (DEH)

    ;

    ; var

    ; mode : Integer;

    ;

    ; bcsmode(mode);

    ;

    begin bcsmode

    mov ah,0DEH

    call arg1

    ret 4

    bcsmode endp

    ;--------------------------------

    ; Modify LST Device func(223) (DFH)

    ;

    ; var

    ; RetCode, Mode : Integer;

    ;

    ; RetCode := ctlspl(Mode);

    ;

    begin ctlspl

    mov ah,0DFh

    call arg1

    ret 4

    ctlspl endp

    ;--------------------------------

    ; Spool Request func(224) (E0H)

    ;

    ; var

    ; ErrCode : Integer;

    ; RequestBlock, Reply : String[n];

    ;

    ; ErrCode := splreq(RequestBlock, Reply);

    ;

    begin splreq

    mov ah,0E0h

    call req_rep

    ret 8

    splreq endp

    ;--------------------------------

    ; Pipe Request func(225) (E1H)

    ;

    ; var

    ; ErrCode : Integer;

    ; RequestBlock, Reply : String[n];

    ;

    ; ErrCode := pipreq(RequestBlock, Reply);

    ;

    begin pipreq

    mov ah,0E1h

    call req_rep

    ret 8

    pipreq endp

    ;--------------------------------

    ; Directory Path func(226) (E2H)

    ;

    ; var

    ; ErrCode : Integer;

    ; RequestBlock, Reply : String[n];

    ;

    ; ErrCode := dpath(RequestBlock, Reply);

    ;

    begin dpath

    mov ah,0E2h

    call req_rep

    ret 8

    dpath endp

    ;--------------------------------

    ; Login system func(227) (E3H)

    ;

    ; var

    ; ErrCode : Integer;

    ; RequestBlock, Reply : String[n];

    ;

    ; ErrCode := syslog(RequestBlock, Reply);

    ;

    begin syslog

    mov ah,0E3h

    call req_rep

    ret 8

    syslog endp

    ;--------------------------------

    ; Set File Attribute func(228) (E4H)

    ;

    ; var

    ; RetCode, FcbAddr, Attribute : Integer;

    ;

    ; RetCode := fattr(FcbAddr, Attribute);

    ;

    begin fattr

    push bp

    mov bp,sp

    push ds

    lds si,[bp+x]

    mov cx,[si] ; cx = attribute

    lds dx,[bp+x+4] ; dx = address of fcb

    mov ah,0E4h

    int 21h

    mov ah,0

    pop ds

    pop bp

    ret

    fattr endp

    ;--------------------------------

    ; Update file size func(229) (E5H)

    ;

    ; var

    ; ErrCode,FcbAddr : Integer;

    ;

    ; ErrCode := updfcb(FcbAddr);

    ;

    begin updfcb

    mov ah,0E5H

    call arg1f

    ret 4

    updfcb endp

    ;--------------------------------

    ; Copy File to File func(230) (E6H)

    ;

    ; var

    ; RetCode,FcbSource,FcbDest : Integer;

    ; CountLow, CountHigh : Integer;

    ;

    ; RetCode := cpyfile(FcbSource, FcbDest, CountLow, CountHigh)

    ;

    ;

    begin cpyfile

    mov ah,0E6h

    push bp

    mov bp,sp

    push ds

    push es

    lds si,[bp+x] ; addr of the high byte cnt

    mov dx,[si] ; dx=high word of byte cnt

    lds si,[bp+x+4] ; addr low word of byte cnt

    mov cx,[si] ; cx=low 16 bits of count

    les di,[bp+x+8] ; address of dest fcb

    lds si,[bp+x+12] ; address of the source fcb

    int 21h

    mov ah,0

    pop es

    pop ds

    pop bp

    ret 16

    cpyfile endp

    ;--------------------------------

    ; get time / date string func(231) (E7H)

    ;

    ; var

    ; time : String[n];

    ;

    ; nettod(time);

    ;

    ; where time is a string of the form Y M D H M S

    ;

    begin nettod

    mov ah,0E7h

    call arg1a

    ret 4

    nettod endp

    ;--------------------------------

    ; Set Close mode func(232) (E8H)

    ;

    ; var

    ; mode : Integer;

    ;

    ; clsmode(mode);

    ;

    begin clsmode

    mov ah,0E8H

    call arg1wor

    ret 4

    clsmode endp

    ;--------------------------------

    ; Shell Base Status func(233) (E9H)

    ;

    ; var

    ; RetFlags, drive : Integer;

    ;

    ; RetFlags := drvmap(drive);

    ;

    begin drvmap

    mov ax,0E900h

    call arg1

    ret 4

    drvmap endp

    ;--------------------------------

    ; Return Shell Version func(234) (EAH)

    ;

    ; var

    ; RetCode, Mode : Integer;

    ; EnvirStr : String[n];

    ;

    ; RetCode := retshl(EnvirStr, Mode);

    ;

    begin retshl

    push bp

    mov bp,sp

    push ds

    push es

    les di,[bp+x+4] ; set es:di to point at the buffer

    inc di ; point di at the start of the data area

    lds si,[bp+x] ; put the mode into al

    mov ax,[si]

    mov ah,0EAh

    int 21h

    mov ah,00h

    pop es

    pop ds

    pop bp

    ret 8

    retshl endp

    ;--------------------------------

    ; ascii log File (235) (EB)

    ;

    ; var

    ; RetCode, Flags, TimeOut : Integer;

    ; Asciiz : String[n];

    ;

    ; RetCode := asclog(Flags, TimeOut, Asciiz);

    ;

    begin asclog

    push bp

    mov bp,sp

    push ds

    lds si,[bp+x+8]

    mov ax,[si] ; flags into al

    lds dx,[bp+x] ; pointer to the asciiz string

    lds si,[bp+x+4]

    mov bp,[si] ; time out into bp

    mov ah,0EBH

    int 21h

    mov ah,00h

    pop ds

    pop bp

    ret 12

    asclog endp

    ;--------------------------------

    ; ASCIIZ file unlock (236) (EC)

    ;

    ; var

    ; RetCode : Integer;

    ; Asciiz : String[n];

    ;

    ; RetCode := asculkf(Asciiz);

    ;

    begin asculkf

    mov ah,0ECH

    call arg1a

    ret 4

    asculkf endp

    ;--------------------------------

    ; ASCIIZ Clear file func(237) (EDH)

    ;

    ; var

    ; RetCode : Integer;

    ; Asciiz : String[n];

    ;

    ; RetCode := ascclrf(Asciiz);

    ;

    begin ascclrf

    mov ah,0EDH

    call arg1a

    ret 4

    ascclrf endp

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ;

    ; Get Physical Station Number EEH

    ;

    ; var

    ; StationNo : Integer;

    ;

    ; StationNo := Get_PSN;

    ;

    begin Get_PSN

    mov ah,0EEh

    int 21h

    mov ah,0

    ret

    Get_PSN endp

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ;

    ; Get Shell Table Addresses (239) EFH

    ;

    ; var

    ; Mode,Segment,Offset : Integer;

    ;

    ; Get_STA(Mode,Segment,Offset);

    ;

    begin Get_STA

    push bp

    mov bp,sp

    push es

    push ds

    mov si,[bp+x+8] ; get the mode

    mov ax,[si]

    mov ah,0EFh ; set the function

    int 21h

    lds di,[bp+x+4] ; store the segment location

    mov [di],es

    lds di,[bp+x] ; store the offset location

    mov [di],si

    pop ds

    pop es

    pop bp

    ret 12

    Get_STA endp

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ;

    ; Set Preferred File Server (240) F0H

    ;

    ; var

    ; RetServer, Mode, NewServ : Integer;

    ;

    ; RetServer := SetServ(Mode,NewServ);

    ;

    begin SetServ

    push bp

    mov bp,sp

    push ds

    mov si,[bp+x+4] ; get the mode

    mov ax,[si]

    mov di,[bp+x] ; set the preferred server number

    mov dx,[di]

    mov ah,0F0h ; set the function

    int 21h

    mov ah,0

    pop ds

    pop bp

    ret 6

    SetServ endp

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ;

    ; Attach/Detach To File Server (241) F1H

    ;

    ; var

    ; RetCode, Mode, NewServ : Integer;

    ;

    ; RetCode := ModServ(Mode,NewServ);

    ;

    begin ModServ

    push bp

    mov bp,sp

    push ds

    lds si,[bp+x+4] ; get the mode

    mov ax,[si]

    lds di,[bp+x] ; set the preferred server number

    mov dx,[di]

    mov ah,0F1h ; set the function

    int 21h

    mov ah,0

    pop ds

    pop bp

    ret 6

    ModServ endp

    ;-------------------------------

    ; Place a single integer argument into dx

    ; with a return code

    arg1 proc near

    push bp

    mov bp,sp

    push ds

    lds si,[bp+x+2]

    mov dx,[si] ; dx gets the argument

    int 21h

    mov ah,0 ; clear ah for al return code

    pop ds

    pop bp

    ret

    arg1 endp

    ;--------------------------------

    ; Place a single integer argument into bp

    ; for use with time outs - with a return code

    arg1t proc near

    push bp

    mov bp,sp

    push ds

    lds si,[bp+x+2]

    mov bp,[si] ; dx gets the argument

    int 21h

    mov ah,0 ; clear ah for al return code

    pop ds

    pop bp

    ret

    arg1t endp

    ;--------------------------------

    ; Process an fcb address in a

    ; function call with a return code

    arg1f proc near

    push bp

    mov bp,sp

    push ds

    lds dx,[bp+x+2] ; dx gets the argument

    int 21h

    mov ah,0 ; clear ah for al return code

    pop ds

    pop bp

    ret

    arg1f endp

    ;--------------------------------

    ; Process a single string argument in a

    ; function call with a return code

    arg1a proc near

    push bp

    mov bp,sp

    push ds

    lds dx,[bp+x+2] ; ptr to parameter string

    ; inc dx ; add 1 to get the address of the string

    int 21h

    mov ah,0 ; clear ah for al return code

    pop ds

    pop bp

    ret

    arg1a endp

    ;----------------------------

    ; Perform a single integer argument

    ; but without a return code

    arg1wor proc near

    push bp

    mov bp,sp

    push ds

    lds si,[bp+x+2]

    mov dx,[si] ; dx gets the arg (or ptr)

    int 21h

    pop ds

    pop bp

    ret

    arg1wor endp

    ;----------------------------

    ; Perform a single string argument

    ; but without a return code

    arg1awor proc near

    push bp

    mov bp,sp

    push ds

    lds dx,[bp+x+2]

    inc dx ; add 1 to get the start of the string

    int 21h

    pop ds

    pop bp

    ret

    arg1awor endp

    ;----------------------------

    ; Handle a request$ and reply$ function

    ; with error code

    req_rep proc near

    push bp

    mov bp,sp

    push ds

    push es

    lds si,[bp+x+6] ; ptr to req. string

    inc si ; add 1 to get the address of the string

    les di,[bp+x+2] ; ptr to var desc block for reply buf

    inc di ; add 1 to get the address of the string

    pushf ; save the direction flag

    int 21h

    popf

    mov ah,0

    pop es

    pop ds

    pop bp

    ret

    req_rep endp

    cseg ends

    end

    6. В И Р У С Ы И N E T W A R E

    При работе сети NetWare фирмы Novell для совместного использо-

    вания сетевого дискового пространства используется "прозрачный ре-

    жим". Пользователь за комьютером видит сетевые диски в виде допол-

    нительных винчестеров (F: G: ...). Особенностью этих винчестеров

    является то, что для них поддерживаются все операции над файлами и

    не поддерживаются операции пямого доступа к секторам диска. Драй-

    вера устойств для этих дополнительных букв не существуют и все

    операции над ними иммитируются путем перехвата различных прерыва-

    ний.

    Проблема поведения вирусов на сетевых дисков сразу же распада-

    ется на две в зависимости от ответа на вопрос: выполняется ли ви-

    рус на машине управляющей сетью (и содержащей сетевые диски) или

    нет.

    Если вирус выполняется на управляющей машине, то он имеет дост-

    уп в MBR, BOOT и к секторам диска. Пока нет подтвержденной инфор-

    мации о существовании вирусов знакомых со структурой диска

    NetWare. Попытка "не грамотного" вируса записаться на диск NetWare

    и в MBR скорее всего окончится плачевно. И не сколько для вируса,

    сколько для NetWare. Поэтому для защиты от BOOT-вирусов рекоменду-

    ется сохранять 0-ю дорожку. На этой дорожке содержется не только

    MBR, но и начало раздела NetWare. Восстановление 0-й дорожки из

    копии не всегда, наверное, возможно, но в ряде случаев это помога-

    ет. В случае неуспеха еще остается тонкий анализ содержимого ста-

    рой и поврежденной 0-й дорожки. Если такой анализ удастся провес-

    ти, то возможно ручное восстановление потеянной информации.

    Если на управляющей машине вместе с сетью работает DOS, то воз-

    можно нарушение работы NetWare в памяти и, как следствие, разнооб-

    разные курьезы. Поэтому к чистоте от вирусов управляющей машины

    локальной сети следует относится особенно серьезно.

    Если вирус выполняется на другой машине, то он не имеет физи-

    ческого доступа к диску. Разговор в этом случае может идти только

    о файловых вирусах. При этом нужно учесть, что пользователь сети

    обычно не имеет доступа на запись ко всем файлам (особенно систем-

    ным). Возможность превысить права доступа практически не возможна.

    Покрайней мере пока в системе защиты нет явных проколов админист-

    ратора сети и не известны "люки" в защите NetWare.

    Поведение вирусов в NetWare распадается на три группы: - те кто

    успешно функционирует в сети; - те кто заражает файлы на локальных

    дисках, но отказывается заpажать файлы в сети (среди них есть та-

    кие которые самоочищаются при копировании в сеть зараженного файла

    при активном вирусе); - и те кто теряет работоспособность при ак-

    тивной сети.

    Распределение вирусов по этим группам можно обьяснить следующи-

    ми обстаятельствами. В первую группу попадают наиболее примитивные

    файловые вирусы котоые законно используют функции DOS для своих

    целей. Такие фирусы довольно легко отлавливаются различными сторо-

    жевыми средствами. Во вторую группу попадают вирусы которые пыта-

    ются бороться с антивирусными средствами. Сеть при этом они также

    обходят и поэтому работа с сетью для них не видна. В эту группу

    попадает наверное большинство "СТЕЛС"-вирусов. Третью группу сост-

    авляют неудачно написанные вирусы из второй группы. Они перестают

    работать из-за конфликтов с оболочкой NetWare.

    Список литературы.

    1. Aнгло-русский словарь терминов NetWare. (13 cтр.)

    Чусов В.Е.

    2. Англо-русский глоссарий терминов NetWare. (66 стр.)

    Чусов В.Е.

    3. Введение в локальные вычислительные сети. (45 стр.)

    Груздев А.Ю.

    4. Texничecкиe cpeдcтвa лoкaльныx ceтeй. (27 стр.)

    Гaвpилoв A.B.

    5. Введение в сетевые операционные системы NetWare

    фирмы Novell. (55 стр.) Груздев А.Ю.

    6. Концепции построения и основные особенности системы

    NetWare 386. (49 стр.) Груздев А.Ю.

    7. Установка NetWare 386. (86 стр.) Гордеев В.В.

    8. Установка рабочей станции DOS ODI в сети NetWare 386.

    (26 стр.) Гордеев В.В.

    9. Cтpyктypa кaтaлoгa, cтpyктypa пoльзoвaтeлeй и cиcтeмa

    зaщиты ceти NetWare (62 cтp.) Чycoв B.E.

    10. Интерфейс пользователя с системой.

    Утилиты меню и утилиты командной строки NetWare 386.

    (152 стр.) Шабалин А.Р.

    11. Печать в сетевой операционной системе NetWare 386.

    (83 стр.) Милентьев А.Д

    12. Оперативное управление работой сетевой ОС NetWare 386.

    (51 стр.) Поваров А.В.

    13. Средства построения гетерогенных комплексов

    фирмы Novell. (42 стр.) Коровкин С.Д.

    14. Коммуникационные средства фирмы Novell.

    (47 стр.) Коровкин С.Д.

    15. Проектирование, создание и использование баз данных,

    реализованных с применением продуктов фирмы Novell.

    (79 стр.) Зимин В.В.

    16. Практическое сравнение различных средств управления

    данными в среде сетевой ОС NetWare фирмы Novell.

    (41 стр.) Зимин В.В.

    17. Использование FoxBase+ и Clipper в локальной сети.

    (17 стр.) Нестеренко Ю.П.

    18. Барри Нанс, Программирование в локальных сетях

    Страницы: 1, 2, 3, 4, 5


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.