- Timestamp:
- Sep 4, 2000, 4:02:31 AM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/doc/Readme.txt
r3868 r4179 53 53 other controls creation and manipulation is now implemented fully in Odin32. 54 54 Applications have Win32 look: Win32 specific controls are also supported 55 (Open32 is still a requirement as other Odin32 functions use it!) 56 - New and improved PE2LX converter 55 (Open32 is still a requirement as other Odin32 functions use it!) 56 - New and improved PE2LX converter 57 57 - New Portable Executable Loader (PE) that overcomes some differences 58 58 between OS/2 and Win32 memory models (this does not include 512MB 59 per-process memory limitation in OS/2, you still need the Aurora-level 60 kernel for that) 59 per-process memory limitation in OS/2, you still need the Aurora-level 60 kernel for that) 61 61 - New WIN32K32k.SYS driver that automates loading of Win32 binaries (no 62 62 conversion or invocation through PE.EXE loader is needed), now 63 63 compatible with WSeB (Aurora) and no longer dependant of code under 64 GNU license 64 GNU license 65 65 - Wine ports of common controls (comctl32), shell extensions (shell32) and 66 66 OLE 67 - Full implementation of memory mapped files 68 - Joystick support (winmm) 69 - Direct Input (DirectX keyboard & mouse) added (Wine Port) 67 - Full implementation of memory mapped files 68 - Joystick support (winmm) 69 - Direct Input (DirectX keyboard & mouse) added (Wine Port) 70 70 - Rewrite of DirectDraw. More complete implementation. 71 71 - Couple of (not core Win32 API, but often used) new DLLs (winasp32, lz32, 72 72 avifil32...), so users don't have to have Windows license at all to run 73 Windows programs 73 Windows programs 74 74 - Many new API functions implemented or ported from Wine, allows 75 developers to port Win32 apps directly to OS/2 with little to no rewriting 76 - Many bugfixes and enhancements 77 - Many new programs that load and/or work with Odin 78 - Full source code available 75 developers to port Win32 apps directly to OS/2 with little to no rewriting 76 - Many bugfixes and enhancements 77 - Many new programs that load and/or work with Odin 78 - Full source code available 79 80 79 81 80 82 2.0 Installing Odin (UPDATED) … … 82 84 83 85 Odin daily builds are now also distributed as WarpIn archives. 84 WarpIn is a generic OS/2 installation application that can be 86 WarpIn is a generic OS/2 installation application that can be 85 87 downloaded from warpin.netlabs.org. 86 88 87 89 To install Odin run warpin.exe with the name of the daily build archive 88 as parameter. 90 as parameter. 89 91 Follow the instructions to complete the installation. 90 92 The Odin installation consists of: … … 106 108 2.0.1 Log files 107 109 --------------- 108 The alpha 5 binaries and daily build zipfiles can generate logfiles to show 110 The alpha 5 binaries and daily build zipfiles can generate logfiles to show 109 111 what a win32 application is doing. This can be very useful to determine 110 112 why certain applications don't run correctly. 111 113 112 The major disadvantage of loggging is the overhead. Therefor it has been 114 The major disadvantage of loggging is the overhead. Therefor it has been 113 115 disabled by default in the alpha 5 release and daily builds. 114 116 To enable logging set the environment variable WIN32LOG_ENABLED: … … 170 172 171 173 172 2.3 The Ring0 conversion utility driver (WIN32K.SYS)173 -------------------------------------- --------------174 2.3 Win32k.sys - native OS/2 PE-loader 175 -------------------------------------- 174 176 175 177 The win32k.sys driver makes PE (Win32) executables equal to native OS/2 176 executables by implementing a Ring 0 on-the-fly converter. The converter is 177 Pe2Lx.exe. So, everything that works with Pe2Lx will probably work with 178 win32k.sys. And vice versa, when Pe2lx can't handle it, win32k.sys won't either. 178 executables by implementing a Ring 0 on-the-fly loader / converter. 179 179 180 180 You may wonder how you may run a Win32 program using a device driver. You … … 184 184 185 185 For example, if you fancy playing windows solitaire. 186 1) Make sure the necessary DLLs are in you (BEGIN/END)LIBPATH,187 and that SOL.EXE is in the current directory or the directory you188 specify.186 1) Make sure the necessary DLLs (MSVCRT.DLL and CARDS.DLL) are in you 187 PATH, current dir, SOL.EXE dir, Odin32 System32 dir, Odin32 System dir, 188 Odin32 dir, or LIBPATHs; and that you have SOL.EXE somewhere. 189 189 190 190 2) Then start SOL.EXE by simply typing SOL.EXE (with path if necessary). … … 196 196 ------------- 197 197 198 The Win32k.sys is alpha software and any bugs which haven't been found198 The Win32k.sys is quite alpha software and any bugs which haven't been found 199 199 yet may crash and/or corrupt you entire system! Make sure you have backed up 200 200 important stuff first! … … 202 202 We are not responsible for ANYTHING AT ALL! See Odin32 disclaimer... 203 203 204 Before you install win32k.sys make sure that you have a backdoor to your system204 Before you install Win32k.sys make sure that you have a backdoor to your system 205 205 which works. For example try to boot your system using the Alt+F1 during bootup 206 206 and choose Commandline boot (F2). Make sure you have an textmode editor which … … 211 211 ------------------ 212 212 213 Win32k should work on any Warp 4 or Warp Server for e-business installations 214 which Odin32 works on. It requires only one thing, a kernel symbol file. The 215 kernel symbol is looked for in \OS2\PDPSI\PMDF\WARP4 and 216 \OS2\PDPSI\PMDF\WARP45_U/S. All warp 4 and WE4eB installations should have 217 those direcotries (we hope). It is updated when you install a new fixpack - so 218 there is really nothing to worry about for the common user. 219 220 For those playing with debug-kernels, make sure that OS2KRNL.SYM is matching 221 the running kernel, while this file too is investigated. (The complete list 222 is found in src\Win32k\dev16\probkrnl.c,apszSym[] - odin32 source tree.) 223 213 Win32k should at least work on OS/2 Warp 3 and above, but I don't get too 214 surprised if it worked on 2.11 too. DBCS are not supported yet AFAIK. 215 216 It no longer requires a kernel file for retail kernels (if you don't know what 217 kernel you have, you have a retail kernel). Win32k does now contain a 218 "database" for the most recent retail kernels. Currently this is: 219 Warp 4 fp#1 -> fp#14 220 Aurora GA, FP1, preFP2 221 Warp 3 fp#32-> fp#42 222 223 If the running kernel is not found in the "database" or is a debug kernel 224 wink32.sys will look for symbolfiles as it allways did. 225 If you use the -s:<symfile> argument the given symbol file will be 226 investigated before the database is searched. 227 228 NOTE! It hasn't been fully verified that all the different national fixpaks 229 have the same symbols as the us-english ones. Feedback on this issue is 230 appreciated. 231 232 NOTE! A piece of advice for those playing with debug-kernels: Make sure that 233 c:\OS2KRNL.SYM is matching the running kernel. 224 234 225 235 2.3.2.1 Warp 3 226 236 -------------- 227 237 228 Win32k is not tested with Warp 3. It is supposed to work with Warp 3 provided 229 that the os2krnl.sym file is present. Warp Server 4 has this, common Warp 3 230 doesn't. 238 Win32k is not tested with Warp 3. It is _supposed_ to work with Warp 3 239 provided you are running fixpack 32 or later. 240 (Fixpack 32 + y2kclock.exe is required for Y2K readyness anyway so...) 241 242 2.3.2.1 OS/2 2.11 243 ----------------- 244 245 For the curiose user, Win32k.sys will probably work with OS/2 2.11 too. 246 I've not test this. But I have run successful Ring-3 tests against the 247 lates 2.11 fixpack kernels. 231 248 232 249 … … 235 252 236 253 To use Win32k.sys you have to add the following line into your config.sys: 237 device=<d:\path\ >win32k.sys238 239 Where <d:\path\ > is the path to the win32k.sys, i.e. the odin32 executables240 directory.254 device=<d:\path\system32>win32k.sys 255 256 Where <d:\path\system32> is the path to the win32k.sys, i.e. usually the odin32 257 system32 directory. 241 258 242 259 After doing this, you'll have to reboot your machine to load the driver. During 243 260 the boot process you will on a successful installation see some lines of 244 261 technical info and finally a line saying: 245 'Win32k.sys succesfully initiated!' 246 247 If you don't see the line above something is wrong. 262 Win32k - Odin32 support driver. 263 Build: 14046 - v20.45 264 Found symbolfile: Win32k Symbol Database 265 Win32k.sys succesfully initiated! 266 267 If you don't see the last line something is wrong, and some error info will be 268 shown. In the case of error the 'rc=<value>' is important to remember. 248 269 249 270 … … 251 272 ----------------------- 252 273 274 The Capitalized letters are the one which is tested for when identifying the 275 argument. 276 253 277 There are some useful parameters for Win32k: 254 -Q Quiet driver initiation. (Default is verbose (-V) initiation.) 255 -V Verbose driver initiation. Default. 256 -S:<filename> Full path to the current OS/2 kernel symbol file. 257 -K:<filename> Full path to the running OS/2 kernel. 258 259 260 2.3.5 Rings - Ring 0 / Ring 3 278 -Quited Quiet driver initiation. 279 Default: disabled (ie. -V) 280 281 -Verbose Verbose driver initiation. 282 Default: enabled 283 284 -S:<filename> Full path to the current OS/2 kernel symbol file. 285 When this is specified the given 286 Default: symbol "database" and default locations are searched. 287 288 289 Loader parameters: 290 -SCript:<Y|N> Enable / disable UNIX script support. 291 Default: Enabled. 292 293 -REXX:<Y|N> Enable / disable pure REXX script support. 294 Default: Enabled. 295 296 -Java:<Y|N> Enable / disable JAVA loading. 297 298 -PE:<MIXED|PE2LX|PE|NOT> 299 Enabled / disable and set mode of the PE loading. 300 MIXED: Mix of Pe2Lx and Pe.exe. It uses Pe2Lx when 301 possible and backs out to pe.exe if the executables 302 aren't supported by the converter. 303 PE2LX: Pe2Lx loader only. 304 PE: Pe.exe only. The program is started using Pe.exe, 305 and the process name will be pe.exe. 306 NOT: Disable PE loading. 307 308 309 Logging parameters: 310 -L<:E|:D> Enables/Disables logging. 311 Default: disabled. 312 313 -Com:<1|2|3|4> 314 or 315 -C<1|2|3|4> Which com-port to log to. 316 Default: -C2 317 318 -Warning:<1|2|3|4> 319 or 320 -W<1|2|3|4> Warning/info level for PE loader. (This is warnings and info 321 which is published thru the com-port as logging information.) 322 Default: -W0 323 324 325 Heap parameters: 326 -HEAPMax: Maximum swappable heap size in bytes. 327 Default: 512KB 328 329 -Heapinit: Initial heapsize in bytes. 330 Default: 16MB 331 332 -RESHEAPMax: Maximum resident heap size in bytes. 333 Default: 256KB 334 335 -Resheapinit: Initial resident in bytes. 336 Default: 16MB 337 338 339 Obsolete: 340 -K:<filename> Ignored. Win32k scans the kernel image in memory! 341 342 343 2.3.5 PE Loading 344 ---------------- 345 346 Win32k.sys are able to do PE loading in two different ways. 347 348 2.3.5.1 PE2LX 349 ------------- 350 The first one is called PE2LX and hence uses the original Win32k.sys method 351 which is similar to Pe2Lx. This only requires that KERNEL32.DLL (ie. Odin32 352 System32 directory) is present somewhere in the PATH or LIBPATHs. The DLL 353 search order of PE2LX is now conforming with the Win32 order: 354 1. The directory of the executable (.EXE). 355 2. The current directory. 356 3. The Odin32 System32 directory. (Kernel32.dll directory) 357 4. The Odin32 System directory. (sibling of system32) 358 5. The Odin32 directory. (parent of system32) 359 6. The PATH environment variable. (TODO: quotes are not currently supported) 360 7. The BEGINLIBPATH. 361 8. The LIBPATH. 362 9. The ENDLIBPATH. 363 (Note that the OS/2 DLLs in the _Odin32_ process are also found using this 364 search order. This shouldn't matter much as nearly all of the OS/2 DLL are 365 allready loaded. But if this proves a problem it could be changed.) 366 367 2.3.5.2 PE 368 ---------- 369 The second one is called PE and invokes the Pe.EXE to execute the PE (Win32) 370 programs. This of course requies that PE.EXE is found in the PATH. 371 372 2.3.5.3 Modes 373 -------------- 374 Win32k.sys have three (or four) different ways of combining these two methods, 375 called modes: 376 PE2LX only 377 PE only 378 PE2LX with fallback on PE. 379 (fourth: NOT load any PE executables at all) 380 381 The last one is the default one and is probably the best one currently. 382 383 384 2.3.6 UNIX Shell Script Loader 385 ------------------------------ 386 387 The UNIX Shell Script Loader makes OS/2 able to run UNIX shell scripts as 388 native executables, just as UNIX does. A unix shell script is a text file 389 which has a starting line which specifies the interpreter for the script. 390 391 For example a perl script: 392 #!/bin/perl5 -Sx 393 394 Or the most common one: 395 #! /bin/sh 396 397 Since Most OS/2 systems don't have a /bin directory or a /usr/bin directory 398 the executable specified are looked for in these ways: 399 1. The exact filename specified. 400 2. The filename specified with .EXE extention. 401 3. Search the PATH for the filename (with out path of course). 402 4. Search the PATH for the filename with .EXE extention (and with out path of course). 403 404 So, you could now execute UNIX shell script in OS/2 without even modify the 405 path of the interpreter! 406 407 The UNIX Shell Script Loader is enabled by default. 408 409 410 2.3.6 Pure REXX Loader 411 ---------------------- 412 413 The Pure REXX Loader is a win32k.sys feature which enables REXX script with 414 the extentions .RX and .REX to run as native OS/2 executables. These REXX 415 scripts are executed using kRX.EXE which is found in the Odin32 System32 416 directory. 417 418 When we say "Pure REXX" scripts, that means no use of command line should 419 occure in the script. 420 421 The Pure REXX Loader is enabled by default. 422 423 424 2.3.7 Java Loader/Invoker 425 ------------------------- 426 427 Just for fun, I've added some code which detects JAVA class binaries and 428 executes the class using JAVA.EXE. I first thougth this should be easy, but 429 it turned out to have several problems. 430 So please note the following: 431 - The classname is case sensitive, you have to write the exact class 432 name (with .class extention or what ever extention the file have) 433 when trying to execute a class. This could cause some throuble making 434 WPS program objects for the classes.... 435 - To support executing of .class-files which are not in the current 436 directory win32k.sys send the directory of the .class-file in to 437 java.exe as a '-classpath' option. This option I soon found out had the 438 sideeffect of making JAVA.exe ignore the other CLASSPATH and not use 439 it's default class path. So now the contents of the CLASSPATH env. var. 440 or a generated default classpath is also sent in with the '-classpath' 441 option. 442 - The CLASSPATH environment variable should not be longer than 639 chars. 443 444 When you have successfully installed Win32k.sys try type this at the 445 commandline: 446 c:\java11\demo\hello\hello.class 447 448 This is then printed at my screen: 449 Hello, Warped world! 450 451 The JAVA Loader/Invoker is enabled by default. 452 453 454 2.3.8 Rings - Ring 0 / Ring 3 261 455 ----------------------------- 262 456 … … 264 458 and device drivers execute at this level, while user applications execute in 265 459 Ring 3, the least priveleged executing level. 460 461 462 2.3.9 Win32k Control Center 463 --------------------------- 464 465 In your Odin32 System32 directory there is a program called Win32kCC.exe, 466 this is the Win32k Control Center (Win32kCC). Win32kCC is as the name says 467 a program controlling Win32k.sys. 468 469 Win32kCC allows you to enable, disable and change behaviour of different 470 parts in Win32k.sys. 471 472 For example: You could disable PE loading, or change it from MIXED mode (see 473 2.3.4, -PE) to PE2LX mode. Or change it from PE2LX mode to PE mode to see 474 if PE.EXE does a better job loading an executable. 475 476 Note that the changes would not effect allready loaded executables. 477 478 479 Win32kCC also displays status info on the running Win32k.sys and OS/2 kernel: 480 -Win32k.sys version number 481 -Win32k build time/date 482 -Path of the symbol file which was used (or Win32k Symbol Database). 483 -OS/2 kernel build number fixpack (guess) 484 -OS/2 kernel type as win32k has detected it 485 -Number of Pe2Lx currently loaded modules 486 -Win32k resident and swappable heap stats. 487 488 PS. Beside the "PE Loader" area there is an "Elf Loader" area this is for a 489 future Elf2Lx loader. 490 266 491 267 492 … … 274 499 problems as it requires all DLLs and EXEs to be converted into 275 500 another file format thus changing the original Win32 files. 501 (It's only future use will be to convert Win32 executable with 502 debuginfo to LX with HLL (IPMD/ICSDEBUG) debuginfo for 503 sourcelevel debugging of Win32 executables under Odin32. This 504 is not yet implemented but are being worked on.) 505 276 506 277 507 … … 293 523 Note that many other applications load and/or partly work. 294 524 525 295 526 4.0 Reporting Problems and Successes 296 527 ------------------------------------ … … 311 542 ---------------- 312 543 313 This readme is intended for making people more familiar with ODIN and to 314 describe various aspects of the project such as accessing latest sources via 315 cvs, building the binaries, running win32 applications, how to identify and 316 report problems and bugs, as well as how to participate in this very 544 This readme is intended for making people more familiar with ODIN and to 545 describe various aspects of the project such as accessing latest sources via 546 cvs, building the binaries, running win32 applications, how to identify and 547 report problems and bugs, as well as how to participate in this very 317 548 promising project. 318 549 … … 322 553 323 554 Required compilers/tools: 324 325 326 327 - OS/2 Warp 4 Toolkit (project apparently doesn't compile with 328 329 330 555 - IBM VisualAge 3.0 (CTx8 fixpack applied) 556 (version 3.6 might also work, but version 4 is not 557 recommended) 558 - OS/2 Warp 4 Toolkit (project apparently doesn't compile with 559 VAC's OS/2 headers) 560 Might also work with EMX headers. (haven't tried this!) 561 - ALP 4.0 (IBM Assembly Language Processor) 331 562 Download the tools zipfile from http://service.boulder.ibm.com/ddk/ 332 333 563 (you need to register, but it's free) 564 - Unix-like rm.exe (nmake clean) 334 565 335 566 Changes from last source code release: 336 - Uses Wine headers and a stripped down version of os2win.h (Open32 567 - Uses Wine headers and a stripped down version of os2win.h (Open32 337 568 header) 338 339 - All Open32 declarations are appended with '_O32' (mostly due to 569 - All Open32 apis have the 'O32_' prefix. 570 - All Open32 declarations are appended with '_O32' (mostly due to 340 571 calling convention differences) 341 572 - nmake DEBUG=1 builds the debug version 342 573 nmake builds the release version 343 344 345 574 - Several dlls (i.e. USER32, KERNEL32, ADVAPI32) contain extra .def 575 files that are used to create libraries that contain the api names 576 as required by the linker when you use them. (_apiname@nrparameterbytes) 346 577 347 578 Wine header notes: 348 349 350 351 352 579 - Several header files have been changed to make them usable for VAC 580 - Several header files contain bugfixes (mostly parameter type changes) 581 - Several header files include additional declarations 582 - At this time we don't intend to have our changes included in the 583 Wine codebase as header files are not likely to change often. 353 584 354 585 Coding conventions: 355 356 357 358 586 - Do NOT directly call the Open32 apis unless you're writing 587 a wrapper for it. 588 - Do NOT include os2.h directly. Use os2wrap.h instead. 589 os2wrap.h contains all the OS/2 apis with a wrapper around it to save 359 590 and restore the selector in FS. (some OS/2 apis set it back to the 360 361 362 Calling the standard one (SendMessage) causes a error during 591 default value (150b)) 592 - Use the correct Win32 api when there are two version (ascii & unicode) 593 Calling the standard one (SendMessage) causes a error during 363 594 compilation. 364 365 595 Use SendMessageA instead. 596 - Source code style will be decided on in the near future. 366 597 367 598 … … 369 600 -------------------------------------- 370 601 371 Please check out http://www.netlabs.org/ and http://www.netlabs.org/odin. 602 Please check out http://www.netlabs.org/ and http://www.netlabs.org/odin. 372 603 373 604 … … 375 606 ------------------------- 376 607 377 Basically, if your system setup meets above stated requirements, everything you 608 Basically, if your system setup meets above stated requirements, everything you 378 609 need to do for a binary build is: 379 610 … … 384 615 nmake release (not working right now!) 385 616 386 As the current state of the project is still known to be alpha level, one should 387 expect some functions not to work properly. Therefore, we recommend the use of 388 the debug-version which creates long logfiles for problem determination purpose 617 As the current state of the project is still known to be alpha level, one should 618 expect some functions not to work properly. Therefore, we recommend the use of 619 the debug-version which creates long logfiles for problem determination purpose 389 620 and to allow active debugging with debuggers such as IPMD, ICAT, KDB, etc. 390 621 391 Please note if you do not want to suffer from the performance loss of writing 392 logfiles, you can disable logging even with the debug binaries of ODIN by 622 Please note if you do not want to suffer from the performance loss of writing 623 logfiles, you can disable logging even with the debug binaries of ODIN by 393 624 setting: 394 625 … … 405 636 ------------------ 406 637 407 ODIN is moving at a fast pace. Sometimes side effects of source dependencies may 638 ODIN is moving at a fast pace. Sometimes side effects of source dependencies may 408 639 require you to do a full rebuild of the binaries instead of an incremental build. 409 640 410 However, rarely it also happens the sources contained in the CVS repository do 411 not build completely due to erroneous source code. Usually, this is fixed within 641 However, rarely it also happens the sources contained in the CVS repository do 642 not build completely due to erroneous source code. Usually, this is fixed within 412 643 two days at maximum. 413 644 In such event, one can normally stick with the previous version of the particular … … 420 651 ------------------------------------ 421 652 422 http://www.os2.org/ has setup an ftp server that hosts the automatically 423 built binaries on daily basis. For people that do not have a suitable 653 http://www.os2.org/ has setup an ftp server that hosts the automatically 654 built binaries on daily basis. For people that do not have a suitable 424 655 development setup for ODIN, we provide the latest binary code that way. 425 656 … … 428 659 ------------------------- 429 660 430 As ODIN became an open source project, everybody is kindly invited to 661 As ODIN became an open source project, everybody is kindly invited to 431 662 contribute his/her share to the progress of the project. May it be 432 active coding, fixing bugs or just providing detailed information about 663 active coding, fixing bugs or just providing detailed information about 433 664 examined problems. 434 665 435 666 We suggest you subscribe to win32os2-wai and the corresponsing mailing lists 436 667 on http://www.egroups.com. 437 In case you are interested in participating, every member of the project will 438 be happy to give you direction to the right places and to give a personal 668 In case you are interested in participating, every member of the project will 669 be happy to give you direction to the right places and to give a personal 439 670 introduction to further development of the particular modules. 440 671
Note:
See TracChangeset
for help on using the changeset viewer.