|
|
1.1 ! root 1: As the SDK represents Beta-level code, there will be bugs ! 2: that we discover as we further test the code prior to ! 3: shipping each release. Below are the items we have found to ! 4: date. Also listed is advice on developing applications with ! 5: this release of the SDK. ! 6: ! 7: SYSTEM CONFIGURATION NOTES: ! 8: ! 9: a. If your system has a secondary partition formatted ! 10: with HPFS before you install, the System Install does ! 11: not automatically add the proper support to your disk. ! 12: You will need to add following line to your CONFIG.SYS ! 13: (for an HPFS partition "D:"): ! 14: ! 15: IFS=C:\OS2\HPFS.IFS /C:64 /AUTOCHECK:D ! 16: ! 17: b. You may notice that the DIR command is slow in this ! 18: pre-release of the system. A temporary workaround is ! 19: to add the following two lines to your CONFIG.SYS: ! 20: ! 21: CODEPAGE=437,850 ! 22: DEVINFO=KBD,US,C:\OS2\KEYBOARD.DCP ! 23: ! 24: c. The install process does not automatically ! 25: configure your system to support XMS extended memory in ! 26: the DOS boxes. To add this support, insert this line ! 27: into your CONFIG.SYS: ! 28: ! 29: DEVICE=C:\OS2\MDOS\VXMS.SYS ! 30: ! 31: This line must come after the line ! 32: ! 33: DEVICE=C:\OS2\MDOS\VEMM.SYS ! 34: ! 35: ! 36: NETWORK SUPPORT NOTES: ! 37: ! 38: a. Certain systems configurations and network cards ! 39: will not work with the SDK. Configurations that are ! 40: known to work are: ! 41: ! 42: PS/2 Model 80, 3Com EtherlinkMC card, NetBEUI transport ! 43: Compaq 386/20, 3Com EtherlinkII card, NetBEUI transport ! 44: Compaq 386/16, Ungermann-Bass 16-bit card, XNS ! 45: monolithic transport ! 46: Compaq 386/20, Ungermann-Bass 8-bit net card, XNS ! 47: PS/2 Model 80, Ungermann-Bass NUI card, XNS ! 48: Northgate 33Mhz, Ungermann-Bass 16-bit net card, XNS ! 49: PS/2 Model 80, IBM Token Ring Adapter A, NetBEUI ! 50: ! 51: Configurations that are known to not work are: ! 52: ! 53: PS/2 Model 80, Ungermann-Bass NICps/2 card, XNS ! 54: monolithic transport ! 55: Compaq 386/20e, 3Com Etherlink II card, XNS NDIS ! 56: transport ! 57: ! 58: For this pre-release, we have not tested a large number ! 59: of combinations of network cards and server software. ! 60: If you run into a configuration that you think should ! 61: be supported but fails, please report the problem via ! 62: Microsoft Online. ! 63: ! 64: b. The workstation software in this pre-release of the ! 65: SDK will not communicate with IBM Lan Servers over an ! 66: IBM Baseband or Broadband network. ! 67: ! 68: c. On machines using the FAT file system, the network ! 69: support install may set the DISKCACHE at too high a ! 70: level for your machine, leaving you with too little ! 71: memory for the OS/2 system. One symptom is that the ! 72: NET START WORKSTATION command will fail with an "Access ! 73: Denied" error. If you suspect you may be experiencing ! 74: this error, change the line in CONFIG.SYS to ! 75: ! 76: DISKCACHE = 128 ! 77: ! 78: and try rebooting your system. ! 79: ! 80: ! 81: ! 82: API NOTES: ! 83: ! 84: a. When IMPORTing a system API into your source code, ! 85: you should do so using only the ORDINAL for the ! 86: function, not the name. Ordianals for each API are ! 87: given in the file BSEORD.H This rule will be fully ! 88: enforced in a future release of the SDK. ! 89: ! 90: b. The 32-bit MLE (Multi-Line Edit) APIs are not fully ! 91: implemented in this release of the SDK. ! 92: ! 93: c. The 32-bit version of the WinAddSwitchEntry API is ! 94: not working in this release of the SDK. ! 95: ! 96: d. The constants used for the INCL_DOSDEVICES class of ! 97: API in bsedos.h and bsedos16.h have been changed since ! 98: the first SDK, as promised in the earlier readme file. ! 99: The definitions are now equivalent to those used in the ! 100: OS/2 1.2 Toolkit. ! 101: ! 102: e. If an application is to remain 16-bit, it should be ! 103: compiled and linked with the 1.2 toolkit header files ! 104: and libraries. If it is compiled with a 16-bit ! 105: compiler (c5.1/c5.2/c6.0) and OS/2 2.0 SDK ! 106: header files, and linked with the 2.0 SDK's libraries, ! 107: it is probable that the application will have ! 108: references to API's that are not in the same system DLL ! 109: in the 2.0 system that they were in the 1.2 system. ! 110: This will cause the 1.2 system to refuse to load the ! 111: application because it is unable to resolve the dynamic ! 112: links. ! 113: ! 114: f. The DosQuerySysInfo API is not fully implemented. ! 115: You cannot get information on shared and private memory ! 116: available to the calling process. ! 117: ! 118: g. DosStartSession: if the SessionType field of the ! 119: STARTDATA structure is 0 for "allow the system to ! 120: decide", a PM application will not be started ! 121: correctly. If it is a 3, specifying a PM app ! 122: explicitly, the application will start correctly. ! 123: ! 124: ! 125: ! 126: QUICKHELP NOTES: ! 127: ! 128: a. To reduce the number of open file handles in ! 129: QuickHelp, you can concatenate the files adg20.hlp, ! 130: api1.hlp, and api2.hlp into a single database called ! 131: msos20.hlp. To do so type ! 132: ! 133: COPY /B API1.HLP+API2.HLP+ADG20.HLP MSOS20.HLP ! 134: ! 135: b. We have noticed some errors in accessing option ! 136: information in the MASM386.HLP database under ! 137: QuickHelp. If the topic you are seeking is positioned ! 138: at the top of the screen when you click on it with the ! 139: mouse, the reference won't take you to the right spot ! 140: in the database. The workaround is to simply position ! 141: the topic further down on the screen before you click ! 142: on it. ! 143: ! 144: ! 145: ! 146: CV386 NOTES: ! 147: ! 148: a. Debugging floating point programs on a 386 system ! 149: without a 387 The system emulator currently does not ! 150: single-step correctly. This means that users who are ! 151: single stepping at assembly level will see more than ! 152: one instruction executed when they single-step under ! 153: CV386. More precisely, if the cursor is on a floating ! 154: point instruction, hitting F8 or F10 to single-step ! 155: will result in the execution of the current instruction ! 156: and following until a non floating point instruction is ! 157: executed and ! 158: ! 159: Cursor-> FADD... ! 160: FSTP... ! 161: MOV AX,.... ! 162: MOV DX,.... ! 163: ! 164: If you single step at this point on a system ! 165: without a 387, you will end up on the "mov dx" ! 166: instruction. (FADD and FSTP are both floating point ! 167: instructions.) ! 168: ! 169: b. If you are single-stepping in assembler mode and ! 170: execute an instruction which cases a fatal protection ! 171: fault (gp fault or page fault), the CS:EIP will be off ! 172: in the exception dispatcher, not in user code. If the ! 173: user knows that this has happened, the user can just do ! 174: a "GO" and CV386 will display a message that ! 175: a protection fault has occurred and place CS:EIP at the ! 176: right place. If the user is single stepping at source ! 177: level mode, there is no problem. Another solution ! 178: besides doing a "GO" is to "View" your previous source ! 179: code and do a GO UNTIL on the next instruction. This ! 180: will get you a proper reporting of the GP fault. ! 181: ! 182: Source level single stepping works better: it reports ! 183: a GP fault and leave the CS:IP pointing at the ! 184: offending instruction. ! 185: ! 186: c. If you are debugging an .EXE which is loaded from ! 187: a floppy, any breakpoints you set will apply to all ! 188: instances of that program on the system, not just the ! 189: instance running under CV386. You may copy the .EXE to ! 190: your hard disk to avoid this. ! 191: ! 192: d. The Restart command on the Run menu (equivalent to ! 193: the "l" command) can cause the system to crash. ! 194: ! 195: ! 196: ! 197: UTILITIES NOTES: ! 198: ! 199: a. MEP will not execute background compiles. We ! 200: recommend opening a second window and using the command ! 201: line to execute a compile. Under certain conditions ! 202: (such as attempting to execute a background compile) ! 203: MEP will hang when it runs out of stack space. To free ! 204: up stack space, delete or edit out file name entries in ! 205: the MEP.TMP file. ! 206: ! 207: b. LIB and LINK386 currently do not accept long file ! 208: names for library files. ! 209: ! 210: c. When LINK386 encounters fixups for a page of code ! 211: or data that is otherwise unitialized, it writes ! 212: incorrect fixup information to the executable, which ! 213: causes fixups for the page to be ignored by the loader. ! 214: This will only occur in some instances of linking 16- ! 215: bit object modules in 32-bit EXEs (mixed model ! 216: programming). ! 217: ! 218: If you are using mixed model and suspect this problem, ! 219: verify by running "exehdr -v <exefile>". If the file ! 220: contains ZEROED pages with fixups (i.e. if a non-zero ! 221: physical page number is associated with a ZEROED page), ! 222: you will see: ! 223: ! 224: no. virtual virtual page file flags ! 225: address size map pages ! 226: ... ! 227: 0005 00050000 00000002 00000007 00000001 READABLE, ! 228: WRITEABLE, ! 229: NONSHARED, ! 230: LOADONCALL, ! 231: NONRESOURCE, ! 232: DISCARDABLE, ! 233: VALID-PAGES, ! 234: SWAPPABLE, ! 235: 16:16 ALIAS, ! 236: 16-bit, NOIOPL ! 237: ! 238: logical physical flags ! 239: page page ! 240: 00000001 00000008 ZEROED ! 241: ! 242: and if the following message appears while dumping ! 243: fixup records, ! 244: ! 245: EXEHDR: fatal U1140: out of memory ! 246: ! 247: then this problem is likely the cause of the failure. ! 248: ! 249: Workaround: Add an assembler module to append some ! 250: initialized data to the group that defines the ZEROED ! 251: page (object number 5 in the above example). Look in ! 252: the map file to determine the name and class name of ! 253: the last segment in the group. Use the below asm file, ! 254: replacing <segname> and <classname> with the names from ! 255: the map file, and make sure the alignment (dword) and ! 256: other attributes (public, use32) are the same as the ! 257: map file segment. Link the resulting .obj file with ! 258: the rest of the objects, by putting the new .obj file ! 259: at the END of the .obj file list. ! 260: ! 261: .386 ! 262: <segname> segment dword public use32 '<classname>' ! 263: dw 1234h ! 264: <segname> ends ! 265: end ! 266: ! 267: ! 268: d. MKMSGF: This tool has the following known ! 269: problems: ! 270: ! 271: i. No message text file checking. MKMSGF used to ! 272: check for header id, message numbers, out of ! 273: sequence msg IDs, missing messages, and repeated ! 274: messages. With this version, very little if any ! 275: checking is done. The user is warned that syntax ! 276: errors in the input text file most likely will not ! 277: be found. ! 278: ! 279: ii. There is a maximum of about 5000 messages ! 280: allowed. ! 281: ! 282: iii. No checking for naming the same file name for ! 283: both input and output file. Using the same name ! 284: will put the output on top of the input file. ! 285: ! 286: iv. The new switches /C,/A, and /I are not ! 287: supported. ! 288: ! 289: v. The codepage support is not fully active, even ! 290: though it is listed for MKMSGF /?. ! 291: ! 292: e. H2INC: This tool has several known limitations ! 293: which keep it from being a good general-purpose tool ! 294: for converting C headers to MASM include files. Its ! 295: purpose in this SDK is to convert the system headers in ! 296: the OS2H directory into system include files. To do ! 297: so, simply run the MAKEINC command file found in the ! 298: MASM\OS2INC directory of the Toolkit. ! 299: ! 300: ! 301: ! 302: SYSTEM USER NOTES: ! 303: ! 304: a There is no BOOT command in OS/2 2.0. ! 305: ! 306: b. If you want to create a new DOS session in the Task ! 307: Manger list, you must code the PATH to be ! 308: ! 309: C:\OS2\MDOS\COMMAND.COM ! 310: ! 311: This will allow you to select "DOS Window" or "DOS Full ! 312: Screen" for the Program Type. ! 313: ! 314: c. The OS/2 System Editor ("E") has some known ! 315: problems in working with this release of the System: ! 316: ! 317: i. If you use the Help buttons on the Find, Set ! 318: font, or Set colors dialog boxes the editory will ! 319: GP fault. ! 320: ! 321: ii. The editor will not correctly handle wild ! 322: card file names when invoked from the command ! 323: line. ! 324: ! 325: iii. The editor occasionally locks up when ! 326: accessing files on an HPFS file system. ! 327: ! 328: d. If you RECOVER from diskette a file that has ! 329: diskette read errors in it, the file will be recovered ! 330: with the errors. Normally the recover operation should ! 331: fail and an error message written to the screen. ! 332: ! 333: e. The SPEEDKEY device driver does not function ! 334: reliably on this release. ! 335: ! 336: f. When running the system with a BGA (8514A) video ! 337: driver, the MVDM sessions do not support DOS ! 338: applications running in BGA mode. They will run lower- ! 339: resolution DOS applications. ! 340: ! 341: g. Running programs in several DOS sessions ! 342: simultaneously can cause hangs in individual DOS ! 343: sessions. Printing and using the math coprocessor from ! 344: the DOS sessions appear to be affected by this bug. ! 345: ! 346: ! 347: ! 348: APPLICATION COMPATIBILITY ! 349: ! 350: The OS/2 2.0 system is intended to run all OS/2 1.2 ! 351: applications unmodified. It is also intended to run ! 352: all DOS applications with the exception of those which ! 353: use block device drivers (such as network drivers), ! 354: those which directly manipulate disk hardware, and ! 355: those which use DOS extenders other than EMM and XMS. ! 356: If you discover an application which should run under ! 357: OS/2 2.0 but doesn't, please report this to Microsoft ! 358: Product Support Services so we can correct the problem ! 359: in a future SDK. ! 360: ! 361: ! 362: ! 363: DOCUMENTATION NOTES ! 364: ! 365: a. Writing Mixed Model Programs: This document ! 366: contains an error on p. 8, where it states, "you can ! 367: use link386 to re-link a 16-bit DLL or application ! 368: without any changes." If the 16-bit code was compiled ! 369: with the -Gw switch, then it must be recompiled using ! 370: the _loadds keyword where appropriate (or use -Au ! 371: instead). ! 372: ! 373: Also in this document, the _far16 code examples should ! 374: have #define INCL_16 in the sources. This pulls the ! 375: right API prototypes from the OS/2 header files. ! 376: ! 377: In writing mixed-mode C programs, it is important to ! 378: initialize a pointer dynamically rather than ! 379: initializing it when defined: ! 380: ! 381: PCH p = "Hello World" /*PCH is a pointer type*/ ! 382: ! 383: will cause a fault in a statement like ! 384: ! 385: i = strlen(p); ! 386: ! 387: whereas the following code will work: ! 388: ! 389: PCH p; ! 390: ... ! 391: p = "hello world" ! 392: i = strlen(p); ! 393: ! 394: b. Language Release Notes: The section on the use of ! 395: FLAT model in MASM386 should be ammended to say "You ! 396: should not make direct use of the FS and GS registers, ! 397: as these are reserved for use by the OS/2 2.0 exception ! 398: handler. ! 399: ! 400: c. Programming Reference: The DosQueryProcType API is ! 401: missing from the printed documentation and the QH ! 402: database; it is available in the IPF database. ! 403: ! 404: To print from the IPF database, you must individially ! 405: mark the sections you wish to print. ! 406: ! 407: d. Link386 Online help: This incorrectly states a ! 408: maximum stacksize of 64K. Larger stacksizes can be ! 409: specified on the LINK386 command line or in the .DEF ! 410: file; however, there will be some performance ! 411: degradation with stacksizes close to or greater than ! 412: 64K. ! 413: ! 414: e. The information provided in this Software ! 415: Developer's Kit is preliminary and may contain ! 416: inaccuracies or omissions. This information is subject ! 417: to change in both format and content. ! 418:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.