VOGONS

Common searches


Enable CON to handle DBCS characters

Topic actions

First post, by cyberwalker

User metadata
Rank Newbie
Rank
Newbie

The console (CON) is supposed to use Int 10H to display characters, but actually it bypassed for speed. So new Int 10H handler will not take effect on CON while hook on Int 16H will. This behavior will prevent applications from using their own 10H to display far east DBCS characters (Chinese/Korea/Japanese) at prompt.

This patch will restore compatibility by using real INT10 service instead of INT10 routines for CON outputting.

I have tested ET35(CHT) and XZL/TWAY(CHS) with this patch applied. Users running applicaitons use their own INT10H hook may be interested in this patch. I think compatibility is more important than speed.

I hope you will find this patch helpful.

Attachments

  • Filename
    dev_con.h.diff.txt
    File size
    6.86 KiB
    Downloads
    9 downloads
    File license
    Fair use/fair dealing exception
  • Filename
    shell_misc_cpp.diff.txt
    File size
    928 Bytes
    Downloads
    12 downloads
    File license
    Fair use/fair dealing exception
  • Filename
    shell_misc.cpp
    File size
    15.12 KiB
    Downloads
    10 downloads
    File license
    Fair use/fair dealing exception
  • Filename
    dev_con.h
    File size
    11.66 KiB
    Downloads
    12 downloads
    File license
    Fair use/fair dealing exception
Last edited by cyberwalker on 2005-07-16, 18:25. Edited 2 times in total.

Reply 1 of 28, by Qbix

User metadata
Rank DOSBox Author
Rank
DOSBox Author

It looks quite complex.
Can't you just call interrupt 29 ? (which in turns calls intt10 ?)

or does it lack some "intelligence" in dealing with certain characters/postioning elements.
Not sure though. maybe int29 should have the ansi parsing and not the con device. well details 😀

Water flows down the stream
How to ask questions the smart way!

Reply 2 of 28, by cyberwalker

User metadata
Rank Newbie
Rank
Newbie
Qbix wrote:
It looks quite complex. Can't you just call interrupt 29 ? (which in turns calls intt10 ?) […]
Show full quote

It looks quite complex.
Can't you just call interrupt 29 ? (which in turns calls intt10 ?)

or does it lack some "intelligence" in dealing with certain characters/postioning elements.
Not sure though. maybe int29 should have the ansi parsing and not the con device. well details 😀

Maybe you are right. What I have done was to get it working by converting source directly.

Reply 4 of 28, by ykhwong

User metadata
Rank Oldbie
Rank
Oldbie

Why don't you make a patch by typing 'diff -urN A(previous) B(changed) < filename'?
It can be an easy way to check the changes or apply the patch.

Attachments

  • Filename
    console.zip
    File size
    2.6 KiB
    Downloads
    10 downloads
    File license
    Fair use/fair dealing exception

Reply 5 of 28, by cyberwalker

User metadata
Rank Newbie
Rank
Newbie
ykhwong wrote:

Why don't you make a patch by typing 'diff -urN A(previous) B(changed) < filename'?
It can be an easy way to check the changes or apply the patch.

I had thought a complete code was good for users not to use CVS tools and users could generate *.diff on their own. However *.diff files added.
Thank you.

Reply 6 of 28, by HunterZ

User metadata
Rank l33t++
Rank
l33t++

I think it's that a lot of people are maintaining their own CVS builds and would like to integrate your changes into theirs for experimental testing purposes. A patch makes this much easier to accomplish.

Reply 7 of 28, by cyberwalker

User metadata
Rank Newbie
Rank
Newbie
ykhwong wrote:

Why don't you make a patch by typing 'diff -urN A(previous) B(changed) < filename'?
It can be an easy way to check the changes or apply the patch.

ykhwong, I tested your recent build and found no F11/F12 patch applied. The information on your english page requires correcting.

Reply 8 of 28, by ykhwong

User metadata
Rank Oldbie
Rank
Oldbie

I didn't add the keys ('/','*','+' and '-' on keypad) that will be recevied by DOS apps. But F11/F12 keys are not working? I thought that I properly applied it.

It was difficult for me to combine three files with a patch file below.
keyb.patch, qemukeyboard.cpp, and bios_keyboard.cpp

Check the attchment. Can you point out mistakes that I made?

Attachments

  • Filename
    intlkey.diff
    File size
    19.66 KiB
    Downloads
    12 downloads
    File comment
    experimental patch
    File license
    Fair use/fair dealing exception

Reply 9 of 28, by cyberwalker

User metadata
Rank Newbie
Rank
Newbie
ykhwong wrote:
I didn't add the keys ('/','*','+' and '-' on keypad) that will be recevied by DOS apps. But F11/F12 keys are not working? I tho […]
Show full quote

I didn't add the keys ('/','*','+' and '-' on keypad) that will be recevied by DOS apps. But F11/F12 keys are not working? I thought that I properly applied it.
It was difficult for me to combine three files with a patch file below.
keyb.patch, qemukeyboard.cpp, and bios_keyboard.cpp
Check the attchment. Can you point out mistakes that I made?

I have checked your diff file briefly. The file sdl_mapper.cpp was quite different than CVS's(and mine). I think new bugs have been brought in when you patched it before. You may want to debug your build.

Reply 11 of 28, by cyberwalker

User metadata
Rank Newbie
Rank
Newbie
ykhwong wrote:

Check this patch that moe modified. http://garni.ch/~jwalt/intlkey.diff
does the file sdl_mapper.cpp affect the operation of f11/f12 keys working in dos apps?

I think applying this patch should be ok. It seems keyboard.cpp patched with intlkey.diff in your last post changed the behavior of keyboard. I am not so sure. Debugging will tell the difference.

Reply 12 of 28, by ykhwong

User metadata
Rank Oldbie
Rank
Oldbie

I assume that some strings are repeated and max code was wrong in keyboard.cpp
I deleted three lines and changed code number 61 to 58.
Can you test dosbox.exe that I attached, cyberwalker? 😀
(I found that f11/f12 keys really do work in MdirIII app under my build)

Reply 13 of 28, by cyberwalker

User metadata
Rank Newbie
Rank
Newbie
ykhwong wrote:
I assume that some strings are repeated and max code was wrong in keyboard.cpp I deleted three lines and changed code number 61 […]
Show full quote

I assume that some strings are repeated and max code was wrong in keyboard.cpp
I deleted three lines and changed code number 61 to 58.
Can you test dosbox.exe that I attached, cyberwalker? 😀
(I found that f11/f12 keys really do work in MdirIII app under my build)

This build worked as expected. I think you have figured out what is wrong with keyboard.cpp.

I also found with Smart Updating enabled, the CPU usage decreased greatly when DOS is "Idle". Maybe Smart Updating will give DOSBOX a big advantage over VMware and VPC in running DOS applications, though it flickers displaying and forgets to update screen sometime.

Reply 14 of 28, by Qbix

User metadata
Rank DOSBox Author
Rank
DOSBox Author

moved it to the patches section
It needs some discussion before I add it.
Added some comments on the sf page as well
http://sourceforge.net/tracker/index.php?func … 551&atid=467234

Water flows down the stream
How to ask questions the smart way!

Reply 15 of 28, by knowen

User metadata
Rank Newbie
Rank
Newbie

hi all

i have a big problem about dos based prog. name is eta

it is working on win9x but we upgrade the system winxp pro sp2 and now eta is not working when i open the program i get ntvdm cpu error message and later program is closing

now i am working with dosbox v.70 it is working but i cant use turkish keywords (ş,ü,ö)

i searched the language file turkish.lng but i couldnt found

how i can resolve this problem ??

thanks a lot forums members