2
0

bsedev.pas 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443
  1. {****************************************************************************
  2. Copyright (c) 1998-2000 by Florian Kl„mpfl
  3. ****************************************************************************}
  4. unit bsedev;
  5. interface
  6. type
  7. (* The following line is only due to problems with cardinal *)
  8. (* arithmetics and should be removed as soon as possible. *)
  9. cardinal = longint;
  10. PCardinal = ^cardinal;
  11. PByte = ^byte;
  12. const
  13. IOCTL_ASYNC = $0001;
  14. IOCTL_SCR_AND_PTRDRAW = $0003;
  15. IOCTL_KEYBOARD = $0004;
  16. IOCTL_PRINTER = $0005;
  17. IOCTL_LIGHTPEN = $0006;
  18. IOCTL_POINTINGDEVICE = $0007;
  19. IOCTL_DISK = $0008;
  20. IOCTL_PHYSICALDISK = $0009;
  21. IOCTL_MONITOR = $000A;
  22. IOCTL_GENERAL = $000B;
  23. ASYNC_SETBAUDRATE = $0041;
  24. ASYNC_SETLINECTRL = $0042;
  25. ASYNC_EXTSETBAUDRATE = $0043;
  26. ASYNC_SETEXTBAUDRATE = $0043;
  27. ASYNC_TRANSMITIMM = $0044;
  28. ASYNC_SETBREAKOFF = $0045;
  29. ASYNC_SETMODEMCTRL = $0046;
  30. ASYNC_SETBREAKON = $004B;
  31. ASYNC_STOPTRANSMIT = $0047;
  32. ASYNC_STARTTRANSMIT = $0048;
  33. ASYNC_SETDCBINFO = $0053;
  34. ASYNC_GETBAUDRATE = $0061;
  35. ASYNC_GETLINECTRL = $0062;
  36. ASYNC_EXTGETBAUDRATE = $0063;
  37. ASYNC_GETEXTBAUDRATE = $0063;
  38. ASYNC_GETCOMMSTATUS = $0064;
  39. ASYNC_GETLINESTATUS = $0065;
  40. ASYNC_GETMODEMOUTPUT = $0066;
  41. ASYNC_GETMODEMINPUT = $0067;
  42. ASYNC_GETINQUECOUNT = $0068;
  43. ASYNC_GETOUTQUECOUNT = $0069;
  44. ASYNC_GETCOMMERROR = $006D;
  45. ASYNC_GETCOMMEVENT = $0072;
  46. ASYNC_GETDCBINFO = $0073;
  47. SCR_ALLOCLDT = $0070;
  48. SCR_DEALLOCLDT = $0071;
  49. PTR_GETPTRDRAWADDRESS = $0072;
  50. SCR_ALLOCLDTOFF = $0075;
  51. KBD_SETTRANSTABLE = $0050;
  52. KBD_SETINPUTMODE = $0051;
  53. KBD_SETINTERIMFLAG = $0052;
  54. KBD_SETSHIFTSTATE = $0053;
  55. KBD_SETTYPAMATICRATE = $0054;
  56. KBD_SETFGNDSCREENGRP = $0055;
  57. KBD_SETSESMGRHOTKEY = $0056;
  58. KBD_SETFOCUS = $0057;
  59. KBD_SETKCB = $0058;
  60. KBD_SETNLS = $005C;
  61. KBD_CREATE = $005D;
  62. KBD_DESTROY = $005E;
  63. KBD_GETINPUTMODE = $0071;
  64. KBD_GETINTERIMFLAG = $0072;
  65. KBD_GETSHIFTSTATE = $0073;
  66. KBD_READCHAR = $0074;
  67. KBD_PEEKCHAR = $0075;
  68. KBD_GETSESMGRHOTKEY = $0076;
  69. KBD_GETKEYBDTYPE = $0077;
  70. KBD_GETCODEPAGEID = $0078;
  71. KBD_XLATESCAN = $0079;
  72. PRT_QUERYJOBHANDLE = $0021;
  73. PRT_SETFRAMECTL = $0042;
  74. PRT_SETINFINITERETRY = $0044;
  75. PRT_INITPRINTER = $0046;
  76. PRT_ACTIVATEFONT = $0048;
  77. PRT_GETFRAMECTL = $0062;
  78. PRT_GETINFINITERETRY = $0064;
  79. PRT_GETPRINTERSTATUS = $0066;
  80. PRT_QUERYACTIVEFONT = $0069;
  81. PRT_VERIFYFONT = $006A;
  82. MOU_ALLOWPTRDRAW = $0050;
  83. MOU_UPDATEDISPLAYMODE = $0051;
  84. MOU_SCREENSWITCH = $0052;
  85. MOU_SETSCALEFACTORS = $0053;
  86. MOU_SETEVENTMASK = $0054;
  87. MOU_SETHOTKEYBUTTON = $0055;
  88. MOU_SETPTRSHAPE = $0056;
  89. MOU_DRAWPTR = $0057;
  90. MOU_REMOVEPTR = $0058;
  91. MOU_SETPTRPOS = $0059;
  92. MOU_SETPROTDRAWADDRESS = $005A;
  93. MOU_SETREALDRAWADDRESS = $005B;
  94. MOU_SETMOUSTATUS = $005C;
  95. MOU_DISPLAYMODECHANGE = $005D;
  96. MOU_GETBUTTONCOUNT = $0060;
  97. MOU_GETMICKEYCOUNT = $0061;
  98. MOU_GETMOUSTATUS = $0062;
  99. MOU_READEVENTQUE = $0063;
  100. MOU_GETQUESTATUS = $0064;
  101. MOU_GETEVENTMASK = $0065;
  102. MOU_GETSCALEFACTORS = $0066;
  103. MOU_GETPTRPOS = $0067;
  104. MOU_GETPTRSHAPE = $0068;
  105. MOU_GETHOTKEYBUTTON = $0069;
  106. MOU_VER = $006A;
  107. DSK_LOCKDRIVE = $0000;
  108. DSK_UNLOCKDRIVE = $0001;
  109. DSK_REDETERMINEMEDIA = $0002;
  110. DSK_SETLOGICALMAP = $0003;
  111. DSK_BLOCKREMOVABLE = $0020;
  112. DSK_GETLOGICALMAP = $0021;
  113. DSK_SETDEVICEPARAMS = $0043;
  114. DSK_WRITETRACK = $0044;
  115. DSK_FORMATVERIFY = $0045;
  116. DSK_GETDEVICEPARAMS = $0063;
  117. DSK_READTRACK = $0064;
  118. DSK_VERIFYTRACK = $0065;
  119. PDSK_LOCKPHYSDRIVE = $0000;
  120. PDSK_UNLOCKPHYSDRIVE = $0001;
  121. PDSK_WRITEPHYSTRACK = $0044;
  122. PDSK_GETPHYSDEVICEPARAMS = $0063;
  123. PDSK_READPHYSTRACK = $0064;
  124. PDSK_VERIFYPHYSTRACK = $0065;
  125. MON_REGISTERMONITOR = $0040;
  126. DEV_FLUSHINPUT = $0001;
  127. DEV_FLUSHOUTPUT = $0002;
  128. DEV_QUERYMONSUPPORT = $0060;
  129. RX_QUE_OVERRUN = $0001;
  130. RX_HARDWARE_OVERRUN = $0002;
  131. PARITY_ERROR = $0004;
  132. FRAMING_ERROR = $0008;
  133. CHAR_RECEIVED = $0001;
  134. LAST_CHAR_SENT = $0004;
  135. CTS_CHANGED = $0008;
  136. DSR_CHANGED = $0010;
  137. DCD_CHANGED = $0020;
  138. BREAK_DETECTED = $0040;
  139. ERROR_OCCURRED = $0080;
  140. RI_DETECTED = $0100;
  141. TX_WAITING_FOR_CTS = $0001;
  142. TX_WAITING_FOR_DSR = $0002;
  143. TX_WAITING_FOR_DCD = $0004;
  144. TX_WAITING_FOR_XON = $0008;
  145. TX_WAITING_TO_SEND_XON = $0010;
  146. TX_WAITING_WHILE_BREAK_ON = $0020;
  147. TX_WAITING_TO_SEND_IMM = $0040;
  148. RX_WAITING_FOR_DSR = $0080;
  149. WRITE_REQUEST_QUEUED = $0001;
  150. DATA_IN_TX_QUE = $0002;
  151. HARDWARE_TRANSMITTING = $0004;
  152. CHAR_READY_TO_SEND_IMM = $0008;
  153. WAITING_TO_SEND_XON = $0010;
  154. WAITING_TO_SEND_XOFF = $0020;
  155. CTS_ON = $10;
  156. DSR_ON = $20;
  157. RI_ON = $40;
  158. DCD_ON = $80;
  159. BUILD_BPB_FROM_MEDIUM = $00;
  160. REPLACE_BPB_FOR_DEVICE = $01;
  161. REPLACE_BPB_FOR_MEDIUM = $02;
  162. ASCII_MODE = $00;
  163. BINARY_MODE = $80;
  164. CONVERSION_REQUEST = $20;
  165. INTERIM_CHAR = $80;
  166. HOTKEY_MAX_COUNT = $0000;
  167. HOTKEY_CURRENT_COUNT = $0001;
  168. KBD_DATA_RECEIVED = $0001;
  169. KBD_DATA_BINARY = $8000;
  170. KBD_READ_WAIT = $0000;
  171. KBD_READ_NOWAIT = $8000;
  172. SHIFT_REPORT_MODE = $01;
  173. MOUSE_MOTION = $0001;
  174. MOUSE_MOTION_WITH_BN1_DOWN = $0002;
  175. MOUSE_BN1_DOWN = $0004;
  176. MOUSE_MOTION_WITH_BN2_DOWN = $0008;
  177. MOUSE_BN2_DOWN = $0010;
  178. MOUSE_MOTION_WITH_BN3_DOWN = $0020;
  179. MOUSE_BN3_DOWN = $0040;
  180. MHK_BUTTON1 = $0001;
  181. MHK_BUTTON2 = $0002;
  182. MHK_BUTTON3 = $0004;
  183. MOU_NOWAIT = $0000;
  184. MOU_WAIT = $0001;
  185. MHK_NO_HOTKEY = $0000;
  186. MOUSE_QUEUEBUSY = $0001;
  187. MOUSE_BLOCKREAD = $0002;
  188. MOUSE_FLUSH = $0004;
  189. MOUSE_UNSUPPORTED_MODE = $0008;
  190. MOUSE_DISABLED = $0100;
  191. MOUSE_MICKEYS = $0200;
  192. PRINTER_TIMEOUT = $0001;
  193. PRINTER_IO_ERROR = $0008;
  194. PRINTER_SELECTED = $0010;
  195. PRINTER_OUT_OF_PAPER = $0020;
  196. PRINTER_ACKNOWLEDGED = $0040;
  197. PRINTER_NOT_BUSY = $0080;
  198. MODE_DTR_CONTROL = $01;
  199. MODE_DTR_HANDSHAKE = $02;
  200. MODE_CTS_HANDSHAKE = $08;
  201. MODE_DSR_HANDSHAKE = $10;
  202. MODE_DCD_HANDSHAKE = $20;
  203. MODE_DSR_SENSITIVITY = $40;
  204. MODE_AUTO_TRANSMIT = $01;
  205. MODE_AUTO_RECEIVE = $02;
  206. MODE_ERROR_CHAR = $04;
  207. MODE_NULL_STRIPPING = $08;
  208. MODE_BREAK_CHAR = $10;
  209. MODE_RTS_CONTROL = $40;
  210. MODE_RTS_HANDSHAKE = $80;
  211. MODE_TRANSMIT_TOGGLE = $C0;
  212. MODE_NO_WRITE_TIMEOUT = $01;
  213. MODE_READ_TIMEOUT = $02;
  214. MODE_WAIT_READ_TIMEOUT = $04;
  215. MODE_NOWAIT_READ_TIMEOUT = $06;
  216. type
  217. DCBINFO = record
  218. usWriteTimeout : word;
  219. usReadTimeout : word;
  220. fbCtlHndShake : BYTE;
  221. fbFlowReplace : BYTE;
  222. fbTimeout : BYTE;
  223. bErrorReplacementChar : BYTE;
  224. bBreakReplacementChar : BYTE;
  225. bXONChar : BYTE;
  226. bXOFFChar : BYTE;
  227. end;
  228. PDCBINFO = ^DCBINFO;
  229. {$PACKRECORDS 1}
  230. const
  231. DEVTYPE_48TPI = $0000;
  232. DEVTYPE_96TPI = $0001;
  233. DEVTYPE_35 = $0002;
  234. DEVTYPE_8SD = $0003;
  235. DEVTYPE_8DD = $0004;
  236. DEVTYPE_FIXED = $0005;
  237. DEVTYPE_TAPE = $0006;
  238. DEVTYPE_UNKNOWN = $0007;
  239. {$PACKRECORDS 1}
  240. type
  241. BIOSPARAMETERBLOCK = record
  242. usBytesPerSector : word;
  243. bSectorsPerCluster : BYTE;
  244. usReservedSectors : word;
  245. cFATs : BYTE;
  246. cRootEntries : word;
  247. cSectors : word;
  248. bMedia : BYTE;
  249. usSectorsPerFAT : word;
  250. usSectorsPerTrack : word;
  251. cHeads : word;
  252. cHiddenSectors : cardinal;
  253. cLargeSectors : cardinal;
  254. abReserved : array[0..6-1] of BYTE;
  255. cCylinders : word;
  256. bDeviceType : BYTE;
  257. fsDeviceAttr : word;
  258. end;
  259. PBIOSPARAMETERBLOCK = ^BIOSPARAMETERBLOCK;
  260. SCREENGROUP = record
  261. idScreenGrp : word;
  262. fTerminate : word;
  263. end;
  264. PSCREENGROUP = ^SCREENGROUP;
  265. FRAME = record
  266. bCharsPerLine : BYTE;
  267. bLinesPerInch : BYTE;
  268. end;
  269. PFRAME = ^FRAME;
  270. KBDTYPE = record
  271. usType : word;
  272. reserved1 : word;
  273. reserved2 : word;
  274. end;
  275. PKBDTYPE = ^KBDTYPE;
  276. LINECONTROL = record
  277. bDataBits : BYTE;
  278. bParity : BYTE;
  279. bStopBits : BYTE;
  280. fTransBreak : BYTE;
  281. end;
  282. PLINECONTROL = ^LINECONTROL;
  283. const
  284. DTR_ON = $01;
  285. RTS_ON = $02;
  286. DTR_OFF = $FE;
  287. RTS_OFF = $FD;
  288. type
  289. MODEMSTATUS = record
  290. fbModemOn : BYTE;
  291. fbModemOff : BYTE;
  292. end;
  293. PMODEMSTATUS = ^MODEMSTATUS;
  294. {$PACKRECORDS 1}
  295. RXQUEUE = record
  296. cch : word;
  297. cb : word;
  298. end;
  299. PRXQUEUE = ^RXQUEUE;
  300. DEVICEPARAMETERBLOCK = record
  301. reserved1 : word;
  302. cCylinders : word;
  303. cHeads : word;
  304. cSectorsPerTrack : word;
  305. reserved2 : word;
  306. reserved3 : word;
  307. reserved4 : word;
  308. reserved5 : word;
  309. end;
  310. PDEVICEPARAMETERBLOCK = ^DEVICEPARAMETERBLOCK;
  311. {$PACKRECORDS 2}
  312. PTRDRAWFUNCTION = record
  313. usReturnCode : word;
  314. pfnDraw : pointer;
  315. {!!!!!!!! pfnDraw : PFN; }
  316. pchDataSeg : pointer;
  317. end;
  318. PPTRDRAWFUNCTION = ^PTRDRAWFUNCTION;
  319. PTRDRAWADDRESS = record
  320. reserved : word;
  321. ptrdfnc : PTRDRAWFUNCTION;
  322. end;
  323. PPTRDRAWADDRESS = ^PTRDRAWADDRESS;
  324. SHIFTSTATE = record
  325. fsState : word;
  326. fNLS : BYTE;
  327. end;
  328. PSHIFTSTATE = ^SHIFTSTATE;
  329. const
  330. RIGHTSHIFT = $0001;
  331. LEFTSHIFT = $0002;
  332. CONTROL = $0004;
  333. ALT = $0008;
  334. SCROLLLOCK_ON = $0010;
  335. NUMLOCK_ON = $0020;
  336. CAPSLOCK_ON = $0040;
  337. INSERT_ON = $0080;
  338. LEFTCONTROL = $0100;
  339. LEFTALT = $0200;
  340. RIGHTCONTROL = $0400;
  341. RIGHTALT = $0800;
  342. SCROLLLOCK = $1000;
  343. NUMLOCK = $2000;
  344. CAPSLOCK = $4000;
  345. SYSREQ = $8000;
  346. type
  347. HOTKEY = record
  348. fsHotKey : word;
  349. uchScancodeMake : byte;
  350. uchScancodeBreak : byte;
  351. idHotKey : word;
  352. end;
  353. PHOTKEY = ^HOTKEY;
  354. MONITORPOSITION = record
  355. fPosition : word;
  356. index : word;
  357. pbInBuf : cardinal;
  358. offOutBuf : word;
  359. end;
  360. PMONITORPOSITION = ^MONITORPOSITION;
  361. RATEDELAY = record
  362. usDelay : word;
  363. usRate : word;
  364. end;
  365. PRATEDELAY = ^RATEDELAY;
  366. CODEPAGEINFO = record
  367. pbTransTable : PBYTE;
  368. idCodePage : word;
  369. idTable : word;
  370. end;
  371. PCODEPAGEINFO = ^CODEPAGEINFO;
  372. CPID = record
  373. idCodePage : word;
  374. Reserved : word;
  375. end;
  376. PCPID = ^CPID;
  377. LDTADDRINFO = record
  378. pulPhysAddr : PCardinal;
  379. cb : word;
  380. end;
  381. PLDTADDRINFO = ^LDTADDRINFO;
  382. PTRDRAWDATA = record
  383. cb : word;
  384. usConfig : word;
  385. usFlag : word;
  386. end;
  387. {$PACKRECORDS NORMAL}
  388. PPTRDRAWDATA = ^PTRDRAWDATA;
  389. implementation
  390. end.