![]() |
China DOS Union-- Unite DOS · Advance DOS · Grow DOS --Union site: www.cn-dos.net Forum site: www.cn-dos.net/forum |
| Guest | Log in | Register | Members | Search | China DOS Union |
|
中国DOS联盟论坛 The time now is 2026-09-26 01:51 |
47,813 topics / 349,918 posts / today 0 new / 48,275 members |
| DOS开发编程 & 发展交流 (开发室) » Problems with int 10h |
| Printable Version 1,967 / 8 |
| Floor1 gemfield | Posted 2009-04-10 11:59 |
| 初级用户 Posts 13 Credits 33 | |
|
(In pure DOS) After a program calls int 10h and outputs English characters on the screen, where is the location of this character library? Is it in the BIOS?
If now the UCDOS Chinese program is loaded, when outputting Chinese characters on the screen, what is the difference between calling int 10h and the previous pure DOS English output calling int 10h? Thank you! |
|
| Floor2 zyl910 | Posted 2009-04-10 23:07 |
| 中级用户 Posts 126 Credits 282 | |
|
INT 10h的‘1101h功能可以读取显卡的字库地址
|
|
| Floor3 zyl910 | Posted 2009-04-10 23:10 |
| 中级用户 Posts 126 Credits 282 | |
|
UCDOS will replace the interrupt routine of int 10h. When the program calls int 10h to output text, it actually calls the routine of UCDOS. UCDOS analyzes the Chinese characters in the text and draws them on the screen.
|
|
| Floor4 gemfield | Posted 2009-04-12 09:35 |
| 初级用户 Posts 13 Credits 33 | |
|
Thanks zyl910. It seems that the font library for the int10h call is located on the graphics card. Then, does DOS necessarily need to call int10h to output characters on the screen? For example, PC-DOS 2000.
|
|
| Floor5 zyl910 | Posted 2009-04-12 10:33 |
| 中级用户 Posts 126 Credits 282 | |
|
There are two methods to output text on the screen -
1. int 10h 2. Directly write to the video memory of the text area Chinese platforms such as UCDOS not only replace int 10h but also detect changes in the video memory of the text area and output Chinese characters according to the changes |
|
| Floor6 netwinxp | Posted 2009-04-12 14:09 |
| 高级用户 Posts 366 Credits 741 | |
|
Simply put, UCDOS is effective for both calling INT 10H to write to the screen and directly accessing the video memory (segment BXXX), because it monitors the text mode video memory using a timer interrupt. Precisely because of this, UCDOS is not suitable for use in control systems that require a timer interrupt and real-time systems with strict timing requirements (UCDOS has already occupied a relatively long timer interrupt time, which is prone to the problem of timer interrupt reentrancy).
|
|
| Floor7 gemfield | Posted 2009-04-13 01:47 |
| 初级用户 Posts 13 Credits 33 | |
|
Thanks again to zyl910. What you said about the second point "directly writing to the video memory of the text area" means that is the font library in the video memory of the text area? Can you explain it in more detail? I don't understand. Which functions does pcdos 2000 use to output English characters and Chinese characters after loading ucdos?
Netwinxp said that real-time systems are not suitable for using ucdos. Then what is generally used? I have installed a real-time system software on my pcdos 2000. After I load ucdos, I echo Chinese characters in autoexec.bat, and Chinese characters can be displayed on the screen. But the text characters in the real-time software (I changed the ASCII code of every two English letters to the ASCII code of one Chinese character, such as 4546 to b2be), but all corresponding on the screen are garbled. (Each Chinese character position is an L, so four Chinese characters are LLLL). Why is this? Thanks |
|
| Floor8 zyl910 | Posted 2009-04-13 08:53 |
| 中级用户 Posts 126 Credits 282 | |
|
In order to make CPU operation convenient, the video memory (RAM) and the video card's BIOS (ROM) will be mapped to the system memory space. Generally:
The A0000h ~ AFFFFh of the system memory space: graphic video memory (RAM) The B0000h ~ BFFFFh of the system memory space: text video memory (RAM) The C0000h ~ C7FFFFh of the system memory space: video card's BIOS (ROM) The character font of the video card is generally placed in the video card BIOS, but the specific address is only known by the video card BIOS, so the address of the video card's character font should be obtained using the 1101h function of int 10h After loading ucdos, all text output is captured by ucdos, regardless of English or Chinese characters |
|
| Floor9 netwinxp | Posted 2009-04-13 09:47 |
| 高级用户 Posts 366 Credits 741 | |
|
The font library of the graphics card is placed in the BIOS of the graphics card, but this part of the space is not mapped to the BIOS segment of the main memory (many BIOSes of expansion cards will have part of them mapped to the memory ROM segment). For detailed technology, you can refer to the technology of the Great Wall 0520H hard font library.
***In fact, the motherboard BIOS will not only map part of it to the 1M ROM segment, but also map part of it to the memory segment close to 1G (mainly ACPI-related tables), and the same is true for PCI cards*** The graphics video memory is mapped to the A0000H segment only corresponding to VGA mode (and a small number of early SVGA, mainly TVGA). High-resolution modes are generally mapped to one or more small segments in D0000000~EFFFFFFF and each segment has multiple page depths (specific addresses can be seen according to the resources occupied by the graphics card). The specific amount depends on the value of AGPURE SIZE in the BIOS (the smaller this is set, the more available RAM space of 4G will be, but the page depth of the video memory will be deeper, which will slightly affect the display performance). Simply put, the Chinese character capture of UCDOS is only valid for VGA text (and a small number of early SVGA text modes), and invalid for SVGA text modes; in addition, the text mode in UCDOS is actually a pseudo-text mode controlled by UCDOS. In fact, the real mode is already a graphics mode, so it is easy to have a bunch of flashing characters after exiting UCDOS. You need to do CLS to be clear. [ Last edited by netwinxp on 2009-4-13 at 09:52 ] |
|
|
[ Contact the Union admin team -
中国DOS联盟 -
Standard version ] Sponsored by ifanr Inc | © 2001–2023 |