Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

658 lines
20 KiB

  1. /*
  2. * Structure and equates of PIF files
  3. */
  4. #define PIFEDITMAXPIF 1024 /* maximum PIF file size we support */
  5. #define PIFEDITMAXPIFL 1024L
  6. #define PIFNAMESIZE 30
  7. #define PIFSTARTLOCSIZE 63
  8. #define PIFDEFPATHSIZE 64
  9. #define PIFPARAMSSIZE 64
  10. #define PIFSHPROGSIZE 64
  11. #define PIFSHDATASIZE 64
  12. #define PIFEXTSIGSIZE 16
  13. #define PIFSIZE 367 /* two bytes less, this is used for checksum */
  14. #ifndef RC_INVOKED
  15. #pragma pack(1)
  16. #endif
  17. typedef struct {
  18. char unknown;
  19. char id;
  20. char name[PIFNAMESIZE];
  21. short maxmem;
  22. short minmem;
  23. char startfile[PIFSTARTLOCSIZE];
  24. char MSflags;
  25. char reserved;
  26. char defpath[PIFDEFPATHSIZE];
  27. char params[PIFPARAMSSIZE];
  28. char screen;
  29. char cPages;
  30. unsigned char lowVector;
  31. unsigned char highVector;
  32. char rows;
  33. char cols;
  34. char rowoff;
  35. char coloff;
  36. unsigned short sysmem;
  37. char shprog[PIFSHPROGSIZE];
  38. char shdata[PIFSHDATASIZE];
  39. unsigned char behavior;
  40. unsigned char sysflags;
  41. } PIFOLD286STR;
  42. #ifndef RC_INVOKED
  43. #pragma pack()
  44. #endif
  45. #ifndef RC_INVOKED
  46. #pragma pack(1)
  47. #endif
  48. typedef struct {
  49. char extsig[PIFEXTSIGSIZE];
  50. unsigned short extnxthdrfloff;
  51. unsigned short extfileoffset;
  52. unsigned short extsizebytes;
  53. } PIFEXTHEADER;
  54. #ifndef RC_INVOKED
  55. #pragma pack()
  56. #endif
  57. #define LASTHEADERPTR 0xFFFF
  58. #define STDHDRSIG "MICROSOFT PIFEX"
  59. #define W386HDRSIG "WINDOWS 386 3.0"
  60. #define W286HDRSIG30 "WINDOWS 286 3.0"
  61. #define WNTHDRSIG31 "WINDOWS NT 3.1"
  62. /*
  63. *#define W286HDRSIG31 "WINDOWS 286 3.1"
  64. */
  65. #ifndef RC_INVOKED
  66. #pragma pack(1)
  67. #endif
  68. typedef struct {
  69. char unknown;
  70. char id;
  71. char name[PIFNAMESIZE];
  72. short maxmem;
  73. short minmem;
  74. char startfile[PIFSTARTLOCSIZE];
  75. char MSflags;
  76. char reserved;
  77. char defpath[PIFDEFPATHSIZE];
  78. char params[PIFPARAMSSIZE];
  79. char screen;
  80. char cPages;
  81. unsigned char lowVector;
  82. unsigned char highVector;
  83. char rows;
  84. char cols;
  85. char rowoff;
  86. char coloff;
  87. unsigned short sysmem;
  88. char shprog[PIFSHPROGSIZE];
  89. char shdata[PIFSHDATASIZE];
  90. unsigned char behavior;
  91. unsigned char sysflags;
  92. PIFEXTHEADER stdpifext;
  93. } PIFNEWSTRUCT;
  94. #ifndef RC_INVOKED
  95. #pragma pack()
  96. #endif
  97. /*
  98. * Windows/386 PIF file extension
  99. *
  100. */
  101. #ifndef RC_INVOKED
  102. #pragma pack(1)
  103. #endif
  104. typedef struct {
  105. short maxmem;
  106. short minmem;
  107. unsigned short PfFPriority;
  108. unsigned short PfBPriority;
  109. short PfMaxEMMK;
  110. unsigned short PfMinEMMK;
  111. short PfMaxXmsK;
  112. unsigned short PfMinXmsK;
  113. unsigned long PfW386Flags;
  114. unsigned long PfW386Flags2;
  115. unsigned short PfHotKeyScan;
  116. unsigned short PfHotKeyShVal;
  117. unsigned short PfHotKeyShMsk;
  118. unsigned char PfHotKeyVal;
  119. unsigned char PfHotKeyPad[9];
  120. char params[PIFPARAMSSIZE];
  121. } PIF386EXT;
  122. #ifndef RC_INVOKED
  123. #pragma pack()
  124. #endif
  125. /* Bits of PfW386Flags */
  126. #define fEnableClose 0x00000001L
  127. #define fBackground 0x00000002L
  128. #define fExclusive 0x00000004L
  129. #define fFullScreen 0x00000008L
  130. #define fALTTABdis 0x00000020L
  131. #define fALTESCdis 0x00000040L
  132. #define fALTSPACEdis 0x00000080L
  133. #define fALTENTERdis 0x00000100L
  134. #define fALTPRTSCdis 0x00000200L
  135. #define fPRTSCdis 0x00000400L
  136. #define fCTRLESCdis 0x00000800L
  137. #define fPollingDetect 0x00001000L
  138. #define fNoHMA 0x00002000L
  139. #define fHasHotKey 0x00004000L
  140. #define fEMSLocked 0x00008000L
  141. #define fXMSLocked 0x00010000L
  142. #define fINT16Paste 0x00020000L
  143. #define fVMLocked 0x00040000L
  144. /* Bits of PfW386Flags2 */
  145. /*
  146. * NOTE THAT THE LOW 16 BITS OF THIS DWORD ARE VDD RELATED!!!!!!!!
  147. *
  148. * You cannot monkey with these bits locations without breaking
  149. * all VDDs as well as all old PIF files. SO DON'T MESS WITH THEM.
  150. *
  151. */
  152. #define fVidTxtEmulate 0x00000001L
  153. #define fVidNoTrpTxt 0x00000002L
  154. #define fVidNoTrpLRGrfx 0x00000004L
  155. #define fVidNoTrpHRGrfx 0x00000008L
  156. #define fVidTextMd 0x00000010L
  157. #define fVidLowRsGrfxMd 0x00000020L
  158. #define fVidHghRsGrfxMd 0x00000040L
  159. #define fVidRetainAllo 0x00000080L
  160. /* NOTE THAT ALL OF THE LOW 16 BITS ARE RESERVED FOR VIDEO BITS */
  161. /*
  162. * Windows/286 PIF file extension
  163. *
  164. *
  165. * Windows 3.00 extension format
  166. *
  167. */
  168. #ifndef RC_INVOKED
  169. #pragma pack(1)
  170. #endif
  171. typedef struct {
  172. short PfMaxXmsK;
  173. unsigned short PfMinXmsK;
  174. unsigned short PfW286Flags;
  175. } PIF286EXT30;
  176. #ifndef RC_INVOKED
  177. #pragma pack()
  178. #endif
  179. /* Bits of PfW286Flags */
  180. #define fALTTABdis286 0x0001
  181. #define fALTESCdis286 0x0002
  182. #define fALTPRTSCdis286 0x0004
  183. #define fPRTSCdis286 0x0008
  184. #define fCTRLESCdis286 0x0010
  185. /*
  186. * Following bit is version >= 3.10 specific
  187. */
  188. #define fNoSaveVid286 0x0020
  189. #define fCOM3_286 0x4000
  190. #define fCOM4_286 0x8000
  191. /*
  192. *
  193. * NEW Windows 3.10 extension format
  194. *
  195. *#ifndef RC_INVOKED
  196. *#pragma pack(1)
  197. *#endif
  198. *typedef struct {
  199. * short PfMaxEmsK;
  200. * unsigned short PfMinEmsK;
  201. * } PIF286EXT31;
  202. *#ifndef RC_INVOKED
  203. *#pragma pack()
  204. *#endif
  205. */
  206. /* Windows NT extension format */
  207. #ifndef RC_INVOKED
  208. #pragma pack (1)
  209. #endif
  210. typedef struct
  211. {
  212. DWORD dwWNTFlags;
  213. DWORD dwRes1;
  214. DWORD dwRes2;
  215. char achConfigFile[PIFDEFPATHSIZE];
  216. char achAutoexecFile[PIFDEFPATHSIZE];
  217. } PIFWNTEXT;
  218. #ifndef RC_INVOKED
  219. #pragma pack()
  220. #endif
  221. #define PIFWNTEXTSIZE sizeof(PIFWNTEXT)
  222. // equates for dwWNTFlags
  223. #define NTPIF_SUBSYSMASK 0x0000000F // sub system type mask
  224. #define SUBSYS_DEFAULT 0
  225. #define SUBSYS_DOS 1
  226. #define SUBSYS_WOW 2
  227. #define SUBSYS_OS2 3
  228. #define COMPAT_TIMERTIC 0x10
  229. /* behavior and sysflags */
  230. #define SWAPS 0x20
  231. #define SWAPMASK 0x20
  232. #define NOTSWAPMASK 0xdf
  233. #define PARMS 0x40
  234. #define PARMMASK 0x40
  235. #define NOTPARMMASK 0xbf
  236. #define SCR 0xC0
  237. #define SCRMASK 0xC0
  238. #define NOTSCRMASK 0x3f
  239. #define MASK8087 0x20
  240. #define NOTMASK8087 0xdf
  241. #define KEYMASK 0x10
  242. #define NOTKEYMASK 0xef
  243. /* Microsoft PIF flags */
  244. #define MEMMASK 0x01
  245. #define NOTMEMMASK 0xfe
  246. #define GRAPHMASK 0x02
  247. #define TEXTMASK 0xfd
  248. #define PSMASK 0x04
  249. #define NOTPSMASK 0xfb
  250. #define SGMASK 0x08
  251. #define NOTSGMASK 0xf7
  252. #define EXITMASK 0x10
  253. #define NOTEXITMASK 0xef
  254. #define DONTUSE 0x20
  255. #define COM2MASK 0x40
  256. #define NOTCOM2MASK 0xbf
  257. #define COM1MASK 0x80
  258. #define NOTCOM1MASK 0x7f
  259. /*
  260. * The pif file formats have been substantially updated since NT4.
  261. * The current pif properties is defined in nt\shell\published\inc,
  262. * and should be used instead of mvdm\inc\pif.h. Its too late to switch
  263. * for XP, do this for next product. For now copy the needed data
  264. * structures.
  265. *
  266. * 01-Jun-2001 Jonle
  267. *
  268. */
  269. #define WENHHDRSIG40 "WINDOWS VMM 4.0"
  270. #define PIFDEFFILESIZE 80
  271. #ifndef LF_FACESIZE
  272. #define LF_FACESIZE 32
  273. #endif
  274. typedef struct tagPIFRECT {
  275. WORD left;
  276. WORD top;
  277. WORD right;
  278. WORD bottom;
  279. } PIFRECT;
  280. typedef PIFRECT *PPIFRECT;
  281. typedef PIFRECT FAR *LPPIFRECT;
  282. typedef struct PROPTSK { /* tsk */
  283. WORD flTsk; // see TSK_ flags
  284. WORD flTskInit; // see TSKINIT_ flags
  285. WORD wReserved1; // (reserved, must be zero)
  286. WORD wReserved2; // (reserved, must be zero)
  287. WORD wReserved3; // (reserved, must be zero)
  288. WORD wReserved4; // (reserved, must be zero)
  289. WORD wIdleSensitivity; // %, also affects PfW386Flags & fPollingDetect
  290. } PROPTSK;
  291. typedef UNALIGNED PROPTSK *PPROPTSK;
  292. typedef UNALIGNED PROPTSK FAR *LPPROPTSK;
  293. typedef struct PROPVID { /* vid */
  294. WORD flVid; // see VID_ flags
  295. WORD flVidInit; // see VIDINIT_ flags
  296. WORD wReserved1; // (reserved, must be zero)
  297. WORD wReserved2; // (reserved, must be zero)
  298. WORD wReserved3; // (reserved, must be zero)
  299. WORD cScreenLines; // ([NonWindowsApp]:ScreenLines)
  300. } PROPVID;
  301. typedef UNALIGNED PROPVID *PPROPVID;
  302. typedef UNALIGNED PROPVID FAR *LPPROPVID;
  303. typedef struct PROPKBD { /* kbd */
  304. WORD flKbd; // see KBD_ flags
  305. WORD flKbdInit; // see KBDINIT_ flags
  306. WORD msAltDelay; // ([386Enh]:AltKeyDelay)
  307. WORD msAltPasteDelay; // ([386Enh]:AltPasteDelay)
  308. WORD msPasteDelay; // ([386Enh]:KeyPasteDelay)
  309. WORD msPasteFullDelay; // ([386Enh]:KeyBufferDelay)
  310. WORD msPasteTimeout; // ([386Enh]:KeyPasteTimeOut)
  311. WORD cPasteSkip; // ([386Enh]:KeyPasteSkipCount)
  312. WORD cPasteCRSkip; // ([386Enh]:KeyPasteCRSkipCount)
  313. } PROPKBD;
  314. typedef UNALIGNED PROPKBD *PPROPKBD;
  315. typedef UNALIGNED PROPKBD FAR *LPPROPKBD;
  316. typedef struct PROPMSE { /* mse */
  317. WORD flMse; // see MSE_ flags
  318. WORD flMseInit; // see MSEINIT_ flags
  319. } PROPMSE;
  320. typedef UNALIGNED PROPMSE *PPROPMSE;
  321. typedef UNALIGNED PROPMSE FAR *LPPROPMSE;
  322. typedef struct PROPSND { /* snd */ /* ;Internal */
  323. WORD flSnd; // see SND_ flags /* ;Internal */
  324. WORD flSndInit; // see SNDINIT_ flags /* ;Internal */
  325. } PROPSND; /* ;Internal */
  326. typedef UNALIGNED PROPSND *PPROPSND; /* ;Internal */
  327. typedef UNALIGNED PROPSND FAR *LPPROPSND; /* ;Internal */
  328. typedef struct PROPFNT { /* fnt */
  329. WORD flFnt; // see FNT_ flags
  330. WORD flFntInit; // see FNTINIT_ flags
  331. WORD cxFont; // width of desired font
  332. WORD cyFont; // height of desired font
  333. WORD cxFontActual; // actual width of desired font
  334. WORD cyFontActual; // actual height of desired font
  335. CHAR achRasterFaceName[LF_FACESIZE]; // name to use for raster font
  336. CHAR achTTFaceName[LF_FACESIZE]; // name to use for tt font
  337. WORD wCurrentCP; // Current Codepage
  338. } PROPFNT;
  339. typedef UNALIGNED PROPFNT *PPROPFNT;
  340. typedef UNALIGNED PROPFNT FAR *LPPROPFNT;
  341. typedef struct PROPWIN { /* win */
  342. WORD flWin; // see WIN_ flags
  343. WORD flWinInit; // see WININIT flags
  344. WORD cxCells; // width in cells
  345. WORD cyCells; // height in cells
  346. WORD cxClient; // width of client window
  347. WORD cyClient; // height of client window
  348. WORD cxWindow; // width of entire window
  349. WORD cyWindow; // height of entire window
  350. WORD wLength;
  351. WORD wShowFlags;
  352. WORD wShowCmd;
  353. WORD xMinimize;
  354. WORD yMinimize;
  355. WORD xMaximize;
  356. WORD yMaximize;
  357. PIFRECT rcNormal;
  358. } PROPWIN;
  359. typedef UNALIGNED PROPWIN *PPROPWIN;
  360. typedef UNALIGNED PROPWIN FAR *LPPROPWIN;
  361. typedef struct PROPENV { /* env */
  362. WORD flEnv; // see ENV_ flags
  363. WORD flEnvInit; // see ENVINIT_ flags
  364. CHAR achBatchFile[PIFDEFFILESIZE]; //
  365. WORD cbEnvironment; // ([386Enh]:CommandEnvSize)
  366. WORD wMaxDPMI; // (NEW)
  367. } PROPENV;
  368. typedef UNALIGNED PROPENV *PPROPENV;
  369. typedef UNALIGNED PROPENV FAR *LPPROPENV;
  370. typedef struct WENHPIF40 { /* enh */ /* ;Internal */
  371. DWORD dwEnhModeFlagsProp; // PROPPRG data (subset) /* ;Internal */
  372. DWORD dwRealModeFlagsProp; // PROPPRG data (subset) /* ;Internal */
  373. CHAR achOtherFileProp[PIFDEFFILESIZE];//PROPPRG data (subset) /* ;Internal */
  374. CHAR achIconFileProp[PIFDEFFILESIZE];// PROPPRG data (subset) /* ;Internal */
  375. WORD wIconIndexProp; // PROPPRG data (subset) /* ;Internal */
  376. PROPTSK tskProp; // PROPTSK data /* ;Internal */
  377. PROPVID vidProp; // PROPVID data /* ;Internal */
  378. PROPKBD kbdProp; // PROPKBD data /* ;Internal */
  379. PROPMSE mseProp; // PROPMSE data /* ;Internal */
  380. PROPSND sndProp; // PROPSND data /* ;Internal */
  381. PROPFNT fntProp; // PROPFNT data /* ;Internal */
  382. PROPWIN winProp; // PROPWIN data /* ;Internal */
  383. PROPENV envProp; // PROPENV data /* ;Internal */
  384. WORD wInternalRevision; // Internal WENHPIF40 version /* ;Internal */
  385. } WENHPIF40; /* ;Internal */
  386. typedef UNALIGNED WENHPIF40 *PWENHPIF40; /* ;Internal */
  387. typedef UNALIGNED WENHPIF40 FAR *LPWENHPIF40; /* ;Internal */
  388. #if defined(NEC_98)
  389. #ifndef _PIFNT_NEC98_
  390. #define _PIFNT_NEC98_
  391. /*****************************************************************************/
  392. /* Windows 3.1 PIF file extension for NEC PC-9800 */
  393. /*****************************************************************************/
  394. /* For Header signature. */
  395. #define W30NECHDRSIG "WINDOWS NEC 3.0"
  396. /* Real Extended Structire for NEC PC-9800 */
  397. #ifndef RC_INVOKED
  398. #pragma pack (1)
  399. #endif
  400. typedef struct {
  401. BYTE cPlaneFlags;
  402. BYTE cNecFlags; // +1
  403. BYTE cVCDFlags; // +2
  404. BYTE EnhExtBit; // +3
  405. BYTE Extcont; // +4 byte
  406. BYTE cReserved[27]; // reserved
  407. } PIFNECEXT; // all = 32bytes
  408. #ifndef RC_INVOKED
  409. #pragma pack()
  410. #endif
  411. #define PIFNECEXTSIZE sizeof(PIFNECEXT)
  412. /*-----------------------------------------------------------------------------
  413. cPlaneFlags (8 bit)
  414. 0 0 0 0 X X X X
  415. | | | | | | | +-- Plane 0{On/Off}
  416. | | | | | | +---- Plane 1{On/Off}
  417. | | | | | +------ Plane 2{On/Off}
  418. | | | | +-------- Plane 3{On/Off}
  419. +-+-+-+---------- Reserved for 256 color
  420. -----------------------------------------------------------------------------*/
  421. #define P0MASK 0x01 /* plane 1 <ON> */
  422. #define NOTP0MASK 0xfe /* plane 1 <OFF> */
  423. #define P1MASK 0x02 /* plane 2 <ON> */
  424. #define NOTP1MASK 0xfd /* plane 2 <OFF> */
  425. #define P2MASK 0x04 /* plane 3 <ON> */
  426. #define NOTP2MASK 0xfb /* plane 3 <OFF> */
  427. #define P3MASK 0x08 /* plane 4 <ON> */
  428. #define NOTP3MASK 0xf7 /* plane 4 <OFF> */
  429. /*-----------------------------------------------------------------------------
  430. cNECFLAGS (8 bit)
  431. X 0 0 X X X X X
  432. | | | | | | | +-- CRTC tracer
  433. | | | | | | +---- screen info trans.o0:text /1:graph or textp
  434. | | | | | +------ N/H Dynamic1 (N?H:0 H/N:1)
  435. | | | | +-------- N/H Dynamic2 (H:0 N:1)
  436. | | | +---------- graph on window
  437. | +-+------------ Reserved
  438. +---------------- EMM large page frame
  439. -----------------------------------------------------------------------------*/
  440. #define CRTCMASK 0x01 /* CRTC <ON> */
  441. #define NOTCRTCMASK 0xfe /* CRTC <OFF> */
  442. #define EXCHGMASK 0x02 /* Screen Exchange <GRPH ON> */
  443. #define NOTEXCHGMASK 0xfd /* Screen Exchange <GRPH OFF> */
  444. #define EMMLGPGMASK 0x80 /* EMM Large Page Frame <ON> */
  445. #define NOTEMMLGPGMASK 0x7f /* EMM Large Page Frame <OFF> */
  446. #define NH1MASK 0x04 /* N/H Dynamic1 <N/H> (UpdateNECScreen)*/
  447. #define NOTNH1MASK 0xfb /* N/H Dynamic1 <N?H> (UpdateNECScreen)*/
  448. #define NH2MASK 0x08 /* N/H Dynamic2 < N > (UpdateNECScreen)*/
  449. #define NOTNH2MASK 0xf7 /* N/H Dynamic2 < H > (UpdateNECScreen)*/
  450. #define WINGRPMASK 0x10 /* door mado 1992 9 14 */
  451. #define NOTWINGRPMASK 0xef /* */
  452. /*-----------------------------------------------------------------------------
  453. cVCDFlags (8 bit)
  454. 0 0 0 0 X X X X
  455. | | | | | | | +-- 0/1 RS / CS
  456. | | | | | | +---- 0/1 Xon / Xoff
  457. | | | | | +------ 0/1 ER/DR
  458. | | | | +-------- Port(Reserved)
  459. | | | +---------- Port(Reserved)
  460. +-+-+-+---------- Reserved
  461. ------------------------------------------------------------------------------*/
  462. #define VCDRSCSMASK 0x001 /* 0/1 RS/CS handshake */
  463. #define NOTVCDRSCSMASK 0xfe
  464. #define VCDXONOFFMASK 0x02 /* 0/1 Xon/off handshake */
  465. #define NOTVCDXONOFFMASK 0xfd
  466. #define VCDERDRMASK 0x04 /* 0/1 ER/DR handshake */
  467. #define NOTVCDERDRMASK 0xfb
  468. /* Now Only Reserved */
  469. /* port assign */
  470. #define VCDPORTASMASK 0x18 /* 00:none */
  471. #define NOTVCDPORTASMASK 0xe7 /* 01:port1��port2 */
  472. /* 10:port1��port3 */
  473. /* 11:unused */
  474. /*-----------------------------------------------------------------------------
  475. EnhExtBit (8 bit)
  476. X 0 0 X X X X X
  477. | | | | | | | +-- Mode F/F (Yes:0 No:1)
  478. | | | | | | +---- Display/Draw (Yes:0 No:1)
  479. | | | | | +------ ColorPallett (Yes:0 No:1)
  480. | | | | +-------- GDC (Yes:0 No:1)
  481. | | | +---------- Font (Yes:0 No:1)
  482. | +-+-+---------- Reserved
  483. +---------------- All is set/not(Set:1 No:0)
  484. ------------------------------------------------------------------------------*/
  485. #define MODEFFMASK 0x01
  486. #define NOTMODEFFMASK 0xfe
  487. #define DISPLAYDRAWMASK 0x02 /* 0/1 Xon/off handhshake */
  488. #define NOTDISPLAYDRAWMASK 0xfd
  489. #define COLORPALLETTMASK 0x04 /* 0/1 ER/DR handshake */
  490. #define NOTCOLORPALLETTMASK 0xfb
  491. #define GDCMASK 0x08
  492. #define NOTGDCMASK 0xf7
  493. #define FONTMASK 0x10
  494. #define NOTFONTMASK 0xef
  495. #define VDDMASK 0x80
  496. #define NOTVDDMASK 0x7f
  497. /*-----------------------------------------------------------------------------
  498. Extcont (8 bit)
  499. 0 0 0 0 X X X X
  500. | | | | | | | +-- Mode F/F (8Color:0 16Color:1)
  501. | | | | | | +---- Reserved
  502. | | | | | +------ GDC TEXT (ON:1 OFF:0)
  503. | | | | +-------- GDC GRPH (ON:1 OFF:0)
  504. +-+-+-+---------- Reserved
  505. ------------------------------------------------------------------------------*/
  506. #define MODEFF16 0x01
  507. #define MODEFF8 0xfe
  508. #define GDCTEXTMASK 0x04
  509. #define NOTGDCTEXTMASK 0xfb
  510. #define GDCGRPHMASK 0x08
  511. #define NOTGDCGRPHMASK 0xf7
  512. /*-----------------------------------------------------------------------------
  513. Reserved(8 bit)
  514. 0 0 0 0 0 0 0 0
  515. | | | | | | | |
  516. +-+-+-+-+-+-+-+-- Reserved
  517. -----------------------------------------------------------------------------*/
  518. /* unused */
  519. /*****************************************************************************/
  520. /* Windows NT 3.1 PIF file extension for NEC PC-9800 */
  521. /*****************************************************************************/
  522. /* For Header signature. */
  523. #define WNTNECHDRSIG "WINDOWS NT31NEC"
  524. /* Real Extended Structire for NEC PC-9800 */
  525. #ifndef RC_INVOKED
  526. #pragma pack (1)
  527. #endif
  528. typedef struct {
  529. BYTE cFontFlags;
  530. BYTE cReserved[31]; // reserved
  531. } PIFNTNECEXT; // all = 32bytes
  532. #ifndef RC_INVOKED
  533. #pragma pack()
  534. #endif
  535. #define PIFNTNECEXTSIZE sizeof(PIFNTNECEXT)
  536. /*-----------------------------------------------------------------------------
  537. cFontFlags (8 bit)
  538. 0 0 0 0 0 0 0 X
  539. | | | | | | | +-- N mode compatible font(default:FALSE)
  540. +-+-+-+-+-+-+---- Reserved
  541. -----------------------------------------------------------------------------*/
  542. #define NECFONTMASK 0x01 /* NEC Font <ON> */
  543. #define NONECFONTMASK 0xfe /* NEC Font <OFF> */
  544. /*-----------------------------------------------------------------------------
  545. Reserved(8 bit)[31]
  546. 0 0 0 0 0 0 0 0
  547. | | | | | | | |
  548. +-+-+-+-+-+-+-+-- Reserved
  549. -----------------------------------------------------------------------------*/
  550. /* unused */
  551. #endif // !_PIFNT_NEC98_
  552. #endif // NEC_98