program GetSysDate; type dateStr = string[10]; type timestring = string[12]; type VersionString = string[5]; type str3 = string[3]; str64 = string[64]; type regpack = record ax,bx,cx,dx,bp,si,ds,es,flags:integer; end; var recpack: regpack; function date:datestr; const Get_Date: integer = $2A00; var month,day:string[2]; year:string[4]; dx,cx:integer; begin with recpack do ax := Get_Date; MsDos(recpack); with recpack do begin str(cx,year); str(dx mod 256,day); str(dx shr 8,month); end; date := month +'/'+day+'/'+year; end; function time:TimeString; const Get_Time: integer = $2C00; var ah,al,ch,cl,dh : byte; hour,min,sec, hundredth : string[2]; begin with recpack do ax := Get_Time; MsDos(recpack); with recpack do begin str(cx shr 8, hour); str(cx mod 256,min); str(dx shr 8,sec); str(dx mod 256, hundredth)end; time:=hour+':'+min+':'+sec+'.'+hundredth; end; function MsDosVersion: VersionString; const GetDosVersion : integer = $3000; type str2 = string[2]; var default: VersionString; major, minor : str2; begin default := '??.??'; with recpack do ax := GetDosVersion; MsDos(recpack); with recpack do begin str(ax mod 256,major); str(ax shr 8,minor); end; default := major+'.'+minor; MsDosVersion := default end; function CurrentDisk: char; const GetCurrentDisk: integer = $1900; begin with recpack do ax := GetCurrentDisk; MsDos(recpack); CurrentDisk := chr((recpack.ax mod 256)+65) end; function VFlag: str3; const GetVerifyFlag: integer = $5400; begin with recpack do ax := GetVerifyFlag; MsDos(recpack); if (recpack.ax mod 256) = 1 then VFlag := 'ON ' else VFlag := 'OFF' end; function MachineName: str64; const GetMachineName: integer = $5E00; var receiver: array[0..255] of char; default : str64; i : byte; begin fillchar(receiver,sizeof(receiver),0); with recpack do begin ax := GetMachineName; ds := seg(receiver); dx := ofs(receiver); end; MsDos(recpack); if (recpack.flags and 3)= 0 then begin i := 0; while (ord(receiver[i]) >= 0) and (i < 65) do begin default[i+1] := receiver[i]; i := succ(i) end; end else i := 0; default[0] := chr(i); MachineName := default end; function Test4Share: boolean; var default : boolean; begin default := false; with recpack do begin ax := $1000; intr($2F, recpack); if ((ax mod 256)=255) and ((flags and 3)=0) then default := true end; Test4Share := default; end; begin writeln('Date: ',date); writeln('Time: ',time); writeln('DOS Version: ',MsDosVersion); writeln('Current Disk Drive: ',CurrentDisk); writeln('Verify Flag: ',VFlag); if Test4Share then writeln('Machine Name: ',MachineName) else writeln('SHARE module not installed.'); end.