Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| en:docs:os2:api:vio [2021/09/14 08:07] – prokushev | en:docs:os2:api:vio [2021/09/14 09:51] (current) – prokushev | ||
|---|---|---|---|
| Line 22: | Line 22: | ||
| OS/2 Video subsystem placed in VIOCALLS.DLL. Called VIO function passes control to internal VIO router function which, depends on registered functions replacement, | OS/2 Video subsystem placed in VIOCALLS.DLL. Called VIO function passes control to internal VIO router function which, depends on registered functions replacement, | ||
| + | |||
| + | In pseudo code it looks like this | ||
| + | |||
| + | < | ||
| + | Application calls VioGetAnsi in VIOCALLS | ||
| + | VioGetAnsi calls VioRoute | ||
| + | if AVS registered then | ||
| + | VioRoute calls AVS VioGetAnsi | ||
| + | if AVS VioGetAnsi requires to call BVS then | ||
| + | VioRouter сalls BVS VioGetAnsi | ||
| + | else | ||
| + | VioRouter calls BVS VioGetAnsi | ||
| + | Return to application | ||
| + | </ | ||
| OS/2 1.1 introduced Program Manager and VIO was extended to support windowed OS/2 text-based sessions. This extended Vio was named as Advanced VIO. | OS/2 1.1 introduced Program Manager and VIO was extended to support windowed OS/2 text-based sessions. This extended Vio was named as Advanced VIO. | ||
| Line 49: | Line 63: | ||
| </ | </ | ||
| - | In OS/2 2.0 and later VIO still 16-bit. In late OS/2 versions (3.x?) actual | + | In pseudo |
| + | < | ||
| + | Application calls VioGetAnsi in VIOCALLS | ||
| + | VioGetAnsi calls VioRoute | ||
| + | if AVS registered then | ||
| + | VioRoute calls AVS VioGetAnsi | ||
| + | if AVS VioGetAnsi requires to call BVS then | ||
| + | VioRouter сalls BVS VioGetAnsi | ||
| + | else | ||
| + | VioRouter calls BVS VioGetAnsi | ||
| + | If GVS registered then | ||
| + | VioRouter calls GVS VioGetAnsi | ||
| + | Return to application | ||
| + | </ | ||
| + | |||
| + | In OS/2 2.0 and later VIO still 16-bit. In late OS/2 versions (3.x?) actual code of Video subsystem and Base Video Subsysten was moved to DOSCALLS.DLL (see Fig). VIOCALLS and BVSCALLS is a forwarders to DOSCALLS. | ||
| + | |||
| + | As not part of official OS/2 distribution three independed versions of 32-to-16 bit wrapper subsystems was developed (See Fig). EXMWRAP.DLL was part of eComstation 1.0 and later releases. | ||
| < | < | ||
| Line 79: | Line 110: | ||
| |DDD|DDD=Global Video Subsystem | |DDD|DDD=Global Video Subsystem | ||
| </ | </ | ||
| + | |||
| + | < | ||
| + | Application calls VioGetAnsi in VIOCALLS | ||
| + | VIOCALLS forwards to DOSCALLS | ||
| + | VioGetAnsi calls VioRoute | ||
| + | if AVS registered then | ||
| + | VioRoute calls AVS VioGetAnsi | ||
| + | if AVS VioGetAnsi requires to call BVS then | ||
| + | VioRouter сalls BVS VioGetAnsi | ||
| + | BVSCALLS forwards to DOSCALLS | ||
| + | else | ||
| + | VioRouter calls BVS VioGetAnsi | ||
| + | BVSCALLS forwards to DOSCALLS | ||
| + | If GVS registered then | ||
| + | VioRouter calls GVS VioGetAnsi | ||
| + | Return to application | ||
| + | </ | ||
| osFree attempts to combine all aproaches and provide following callflow | osFree attempts to combine all aproaches and provide following callflow | ||
| Line 96: | Line 144: | ||
| ||||| |!@4 | | ||||| |!@4 | | ||
| ||||| CCC |CCC=VIO router | ||||| CCC |CCC=VIO router | ||
| - | ||||| |!@4 | | ||
| - | ||||| DDD |DDD=Global Video Subsystem | ||
| ||||| |!@4 | | ||||| |!@4 | | ||
| ||||| EEE |EEE=[[en: | ||||| EEE |EEE=[[en: | ||
| Line 104: | Line 150: | ||
| ||||| |!@4 | | ||||| |!@4 | | ||
| ||||| EEE |EEE=Base Video Handlers | ||||| EEE |EEE=Base Video Handlers | ||
| + | ||||| |!@4 | | ||
| + | ||||| EEE |EEE=[[en: | ||
| + | ||||| |!@4 | | ||
| + | ||||| CCC |CCC=VIO router | ||
| + | ||||| |!@4 | | ||
| + | ||||| DDD |DDD=Global Video Subsystem | ||
| </ | </ | ||
| Line 113: | Line 165: | ||
| | AAA |AAA=Application | | AAA |AAA=Application | ||
| | |!@4 | | | |!@4 | | ||
| - | | BBB |BBB=[[en: | + | | BBB |BBB=[[en: |
| </ | </ | ||




