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