中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-15 06:37
47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,268 会员排行
DOS开发编程 & 发展交流 (开发室) » 文本方式下显示汉字的源程序
可打印版本  2,121 / 11
第1楼 qb45 发表于 2003-10-30 00:00
高级用户 发帖 194 积分 677
文本方式下显示汉字的源程序
rem $INCLUDE: 'qb.bi'
CLS
DIM SHARED ax AS INTEGER, bx AS INTEGER, cx AS INTEGER, dx AS INTEGER, es AS INTEGER, bp AS INTEGER
DIM test%(64)
es = VARSEG(test%(32))
DEF SEG = es
FOR i = 1 TO 96
READ t
POKE i, t
NEXT i
DEF SEG
bp = 1
ax = &H1100
bx = &H1000
cx = 6
dx = &HCC
int10
FOR i = 0 TO 5
PRINT CHR$(&HCC + i);
NEXT i
END
DATA 0 , 32 , 19 , 16 , 0 , 7 , 240 , 16 , 17 , 16 , 23 , 16 , 20 , 24 , 16 , 3
DATA 32 , 40 , 252 , 32 , 32 , 254 , 146 , 84 , 16 , 148 , 254 , 32 , 32 , 80 , 140 , 4
DATA 2 , 1 , 63 , 32 , 64 , 31 , 0 , 0 , 1 , 255 , 1 , 1 , 1 , 1 , 5 , 2
DATA 0 , 0 , 252 , 4 , 8 , 224 , 64 , 128 , 4 , 254 , 0 , 0 , 0 , 0 , 0 , 0
DATA 16 , 16 , 35 , 34 , 74 , 251 , 18 , 34 , 67 , 246 , 74 , 3 , 26 , 226 , 66 , 2
DATA 128 , 72 , 252 , 8 , 8 , 248 , 0 , 4 , 254 , 148 , 148 , 252 , 148 , 148 , 148 , 12

SUB int10
DIM InRegs AS RegTypeX
DIM OutRegs AS RegTypeX
InRegs.ax = ax
InRegs.bx = bx
InRegs.cx = cx
InRegs.dx = dx
InRegs.es = es
InRegs.bp = bp
INTERRUPTX &H10, InRegs, OutRegs
ax = OutRegs.ax
bx = OutRegs.bx
cx = OutRegs.cx
dx = OutRegs.dx
es = OutRegs.es
bp = OutRegs.bp

END SUB

第2楼 凌晨一点 发表于 2003-10-30 00:00
初级用户 发帖 54 积分 255
OK
第3楼 Wengier 发表于 2003-10-31 00:00
系统支持 发帖 10,521 积分 27,736
不知此程序能显示哪些汉字?应该不是所有汉字吧。。
第4楼 qb45 发表于 2003-10-31 00:00
高级用户 发帖 194 积分 677
能显示所有的汉字,不过要自己做一个提取字模的工具.
可以把显示汉字的源程序改动一下,以便提取字模!
替换DATA里面的数据,就可以显示别的汉字了
但是同屏显示的汉字数量是有限制的,因为只有128个扩展字芙!
第5楼 Wengier 发表于 2003-10-31 00:00
系统支持 发帖 10,521 积分 27,736
那有没有现成的兼容的提取字模的工具呢?
第6楼 qb45 发表于 2003-11-03 00:00
高级用户 发帖 194 积分 677
''请不要输入英文字母
OPEN "hzk16" FOR BINARY AS #1
input "请输入要转换的汉字= ",hz1$
hz 100, 100, hz1$, 7
PRINT "字模提取成功ok!!!"
SUB hz (x0, y0, hz.word$, hzcol)
leng = LEN(hz.word$)
now = 1
OPEN "hz.dat" FOR OUTPUT AS #3 ''字模文件名为HZ.DAT
PRINT #3, hz.word$
PRINT #3, "data";
DO
qu = ASC(MID$(hz.word$, now, 1))
now = now + 1
wei = ASC(MID$(hz.word$, now, 1))
now = now + 1
IF qu > 161 AND wei > 161 THEN
ps& = ((qu - 161) * 94& + wei - 161) * 32& + 1
SEEK #1, ps&
zimo$ = INPUT$(32, 1)
num = 1
FOR i = 1 TO 2
FOR y = 0 TO 15
chr1$ = MID$(zimo$, num, 1)
num = num + 1
chr2$ = MID$(zimo$, num, 1)
num = num + 1
chr3$ = chr2$ + chr1$
IF i = 2 THEN chr1$ = chr2$
IF y < 15 THEN PRINT #3, ASC(chr1$); ","; ELSE PRINT #3, ASC(chr1$)
'' LINE (x0, y0 + y)-STEP(15, 0), hzcol, , ASC(chr1$)
NEXT y
num = 1
x0 = x0 + 8
PRINT #3, "data";

NEXT i
END IF
LOOP UNTIL now = leng + 1

END SUB




第7楼 算了 发表于 2003-12-29 00:00
初级用户 发帖 2 积分 109
你用的是dos下自绘字模的中断吧,为什么要在文本状态下呢?进入图形状态,
把汉字画在屏幕上,能放大缩小,随便定位,灵活很多呀
第8楼 qb45 发表于 2003-12-30 00:00
高级用户 发帖 194 积分 677
因为在文本下还是有些好处的!、
画汉字在我好几年前已经做出来了,可是文本下我现在才做出来!技术上难些,到不是在于代码长短!
第9楼 spirit 发表于 2004-01-08 00:00
初级用户 发帖 5 积分 111
hao
第10楼 jiaking 发表于 2004-03-17 00:00
中级用户 发帖 52 积分 223
编译时提示:type not define,在 DIM InRegs AS RegTypeX 。为什么?
第11楼 qb45 发表于 2004-03-19 00:00
高级用户 发帖 194 积分 677
启动QB的时候请用QB/L如果你想知道详细的情况,请到编程爱好者的QBASIC论坛,有详细的 中断调用的帖子,和如何编译BAS文件的教程!
第12楼 @yingyong@ 发表于 2004-03-21 00:00
初级用户 发帖 3 积分 106
真的不错!
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023