bsedev.pas 11 KB

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