CN100380907C - 一种使通信终端实现手写笔迹信息交流的方法 - Google Patents
一种使通信终端实现手写笔迹信息交流的方法 Download PDFInfo
- Publication number
- CN100380907C CN100380907C CNB031227309A CN03122730A CN100380907C CN 100380907 C CN100380907 C CN 100380907C CN B031227309 A CNB031227309 A CN B031227309A CN 03122730 A CN03122730 A CN 03122730A CN 100380907 C CN100380907 C CN 100380907C
- Authority
- CN
- China
- Prior art keywords
- mov
- whl
- handwriting
- movg
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 34
- 238000004891 communication Methods 0.000 claims abstract description 57
- 239000000463 material Substances 0.000 claims abstract description 6
- 230000008569 process Effects 0.000 claims description 11
- 238000007639 printing Methods 0.000 claims description 9
- 238000006073 displacement reaction Methods 0.000 claims description 8
- 230000005540 biological transmission Effects 0.000 claims description 5
- 238000000926 separation method Methods 0.000 claims description 4
- 230000033001 locomotion Effects 0.000 claims description 3
- 238000001514 detection method Methods 0.000 claims description 2
- 230000007246 mechanism Effects 0.000 claims description 2
- 238000010422 painting Methods 0.000 claims description 2
- 230000035945 sensitivity Effects 0.000 claims description 2
- 230000007704 transition Effects 0.000 claims description 2
- 238000010295 mobile communication Methods 0.000 abstract description 4
- 101100328360 Schizosaccharomyces pombe (strain 972 / ATCC 24843) clr1 gene Proteins 0.000 description 92
- 101150055297 SET1 gene Proteins 0.000 description 53
- 101100129590 Schizosaccharomyces pombe (strain 972 / ATCC 24843) mcp5 gene Proteins 0.000 description 15
- 101100006960 Caenorhabditis elegans let-2 gene Proteins 0.000 description 10
- 101100170542 Mus musculus Disp1 gene Proteins 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 101150076394 xpt2 gene Proteins 0.000 description 3
- XGWIJUOSCAQSSV-XHDPSFHLSA-N (S,S)-hexythiazox Chemical compound S([C@H]([C@@H]1C)C=2C=CC(Cl)=CC=2)C(=O)N1C(=O)NC1CCCCC1 XGWIJUOSCAQSSV-XHDPSFHLSA-N 0.000 description 2
- 241000905957 Channa melasoma Species 0.000 description 2
- 241001269238 Data Species 0.000 description 2
- 101150101526 XPT1 gene Proteins 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 101100042371 Caenorhabditis elegans set-3 gene Proteins 0.000 description 1
- 101100398338 Enterococcus faecalis (strain ATCC 700802 / V583) prs2 gene Proteins 0.000 description 1
- 101100510342 Listeria ivanovii prs gene Proteins 0.000 description 1
- 101150104646 SET4 gene Proteins 0.000 description 1
- 101150117538 Set2 gene Proteins 0.000 description 1
- 101150014174 calm gene Proteins 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- SDIXRDNYIMOKSG-UHFFFAOYSA-L disodium methyl arsenate Chemical compound [Na+].[Na+].C[As]([O-])([O-])=O SDIXRDNYIMOKSG-UHFFFAOYSA-L 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 101150086435 prs1 gene Proteins 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
Images
Landscapes
- Mobile Radio Communication Systems (AREA)
- Character Discrimination (AREA)
Abstract
一种使通信终端实现手写笔迹信息交流的方法。涉及文字及图像信息的输入及信息交流的技术。本发明适用于移动通讯终端、固定信息电话机、新型的以笔迹交流为主的通讯终端。本发明采用触摸屏代替现有通信终端的显示器正面与外部之间的透光材料,以一个触摸屏控制器来控制触摸屏,当需要时该触摸屏控制器采集手写笔迹的坐标,分析坐标之间的关系生成笔划矢量数据。将包含有笔划矢量数据的数据传送给通信终端的主控制器。通信终端的主控制器存贮、编辑所得到的笔迹矢量数据。当需要时,通信终端的主控制器以现有方式收发包含有笔迹矢量数据的数据。当需要时,通信终端的主控制器重现所收到的笔迹矢量数据。
Description
技术领域
本发明涉及文字及图像信息的输入及信息交流的技术,是一种在通信终端进行手写笔迹输入(包括文字和图形)并经通信终端发送,由其它通信终端接收并重现手写笔迹,从而实现信息交流的方法。
背景技术
现有的通信终端按文字输入方式可归为两类,一类具有用笔手写输入方式,比如:摩托罗拉公司的388型手机,快译通公司的CECTE698商务手机。另一类为用按键输入,比如:诺基亚的3610型手机,摩托罗拉公司的720型手机,步步高的固定电话短信电话机HCD007TSD。现有的可用笔输入文字的通信终端,是通过对手写的字进行识别,而后选中最近的字来实现文字输入。这种文字输入方式与其它文字输入方式最终形成的代表文字内容的编码相同。其优点是采用笔手写方便。其缺点是需要较大的屏幕来显示与手写文字相关的字的信息,因而这种通信终端一般体积较大,都有一个大屏幕。并且手写的字要较为规矩方能实现高识别率,并且无法传送手画的图形。这种输入方式对通信终端的控制器有较高要求,要求通信终端控制器需增加完成手写的采样及识别,并需要一个相对于其它非手写识别输入的通信终端来说较大的手写识别数据库。由于通信终端控制器(比如手机控制器)大多需要处理的任务多,且与通信有关,因此是专用的控制器,要实现新增手写识别的功能较为困难。而要在具有手写识别的控制器中完成与通信有关的控制也是件困难的事情。现有大多数的通信终端比如手机采用的是按键输入的方式。这种方式的优点是体积小,成本低,较容易实现。其缺点是汉字输入比较烦琐。现有的通信终端舆文字信息的重要性日益提升。比如手机短信,已经成为年轻人使用手机的最重要的一种方式之一。
现有的若干种掌上电脑(也称个人数字助理或PDA)具有便笺记录的功能,比如商务通闪念822。这种方式记录的笔迹信息类似于微软视窗中的画图软件,是以画图的方式来记录的。只是用于其机器本身的一种信息记录,并无通信收发该信息的功能。也并不适合用于通信终端之间传送笔迹信息。
发明内容
为了通信终端用户更加方便地输入图形及文字信息,并使输入的图形及文字信息能方便于发送给其它通信终端,并在其它不同厂家生产的不同种类的不同结构的或对外形尺寸大小有较高要求的通信终端上重现这些信息。也为了通信终端制造商能以低的成本及较少的改动制造出具有笔迹输入、传送及重现功能的通信终端,本发明提出一种使通信终端实现手写笔迹信息交流的新方法。其特征在于:用透光的触摸屏代替在现有的通信终端的显示器件正面与外部之间的透光的材料,由一个触摸屏控制器控制触摸屏,进行手写笔迹数据的采集,并生成笔划矢量数据,根据需要由触摸屏控制器或通信终端的主控制器完成手写过程的实时显示;由通信终端的主控制器将包含有笔划矢量数据的笔迹矢量数据与现有的语音或图像或文字或其它数据的信息进行混合编辑存贮;当需要将笔迹信息传送到其它通信终端时,在通信终端的主控制器的控制下将包含有笔迹矢量数据的数据经由该通信终端所遵从的现有的传送图像或声音或文字或其它数据的方法发送出去;当通信终端依其所遵从的现有的接收图像或声音或文字或其它数据的方法收到包含有笔迹矢量数据的数据后,以现有方式存贮该信息;在需要显示该数据所包含的笔迹信息时,依据每个笔迹矢量数据重新画出每个笔迹,并据需要放大和缩小各个笔迹。
所述的透光的触摸屏作为手写笔迹的传感器,包含了当笔在触摸屏表面移动时,对水平方向和垂直方向的移动分量敏感的材料。
所述的触摸屏控制器具有相应电路通过一定时序给触摸屏提供驱动信号用于检测当笔在触摸屏表面移动时在水平方向和垂直方向的移动分量,并取得相应的笔迹某点的水平方向和垂直方向的坐标分量;所述的触摸屏控制器分析笔迹运动的位移矢量,产生笔划数据。当所述的触摸屏为电阻式透光触摸屏时,所述的触摸屏控制器至少包含有两路模拟到数字转换电路(A/D电路);具有当每次笔开始书写时产生中断的机制;至少具有4个引脚用于分别单独控制所控制的触摸屏的水平和垂直方向的一个引脚;当笔正在触摸屏上书写时,所述的触摸屏控制器采集任一点坐标的时序中至少包含有两次这样的流程:在时刻1,触摸屏控制器将触摸屏的方向1(水平方向或垂直方向)的某一引脚1接固定的已知的高电平,该方向1的另一引脚2接同样的固定的已知的高电平或接高阻抗;触摸屏控制器将触摸屏方向2(非方向1的方向)的两个引脚接高阻抗;在时刻2,触摸屏控制器通过模拟到数字的转换检测触摸屏方向2的一个引脚3的电平;在时刻3,触摸屏控制器取得引脚3经模拟到数字的转换完成后的电平所对应的数值;在时刻4,判断引脚3的电平所对应的数值是否为这时水平方向和垂直方向完全导通所对应的引脚3应有的值;如果条件满足则:如果本点坐标还未采集完则继续采集,如果本点坐标已采集完则采集的坐标值有效;如果条件不满足则:本次采集该点坐标的值无效;须等待预设的一段时间间隔后重新采集。
所述的笔划矢量数据的生成方法是:当触摸屏控制器采集得笔迹的先后的两点坐标时,先存起来,并将第二点坐标存为最后坐标;当采集得第三点坐标后,计算第一点坐标与第三点坐标构成的位移矢量1和第一点坐标与最后坐标构成的位移矢量2;判断是否满足条件1:矢量1与矢量2的方向夹角小于预设的范围且矢量1的长度不小于矢量2的长度;如果满足该条件1则第三坐标存为最后坐标,等过预设的一段时间后再继续采集新的一点坐标作为第三点坐标;如果不满足该条件1则过一段时间后采集第四点坐标,得到第四点坐标后,计算第一点坐标与第四点坐标构成的位移矢量3;判断是否满足条件2:矢量3与矢量1的方向夹角小于预设的范围且矢量1的长度不小于矢量3的长度;如果满足条件2则舍去第三点坐标将第四点坐标存为最后坐标,过预设的一段时间后再重新采集新的一点坐标作为第三点坐标;如果不满足条件2则将第一点坐标和最后坐标构成的矢量作为已生成的一个笔划的矢量数据,将第三点坐标作为新的一个笔划的第一点坐标,将第四点坐标作为新的一个笔划的第二点坐标和最后坐标;如果采集到触摸屏水平方向与垂直方向不接触,则统计连续的不接触时间,如果该时间超过预设的间隔则将第一点坐标和最后坐标构成的矢量作为已生成的一个笔划的矢量,并设一个标志表示下一个采到的坐标为第一点坐标,如果连续的不接触时间大于另一设定的间隔则说明本次书写结束,重复上述过程可实现将一次书写过程的每个笔划的矢量数据采集得到。
所述的笔划矢量数据至少包含了该笔划的起点坐标和终点坐标。
所述的每个笔迹矢量数据包含有表示一次书写的笔迹的数据长度或笔划个数的数据段,包含有本次书写的每个笔划的笔划矢量数据;当所述的笔迹矢量数据以同一个数据段位置来表示前后两个笔划共用一点坐标时,则还包含有若干数据段用于表示每个后面的笔划是否与前面的笔划共用同一点坐标;当所述的笔迹矢量数据与现有的其它方式输入的现有的文字编码相混合时则所说的笔迹矢量数据至少包含有一个数据段用于表示这是新的特殊的文字码,以便依次读取这种混合的数据时区分现有的文字编码还是新的完整的笔迹矢量数据;当所述的笔迹矢量数据与现有的图像或声音或其它格式的数据相混合以便发送给其它通信终端,或者以现有的发送数据的方法发送笔迹矢量数据时,所述的每个笔迹矢量数据至少包含有一个数据段用于与现有的其它数据结构相区别。
所述的依据每个笔迹矢量数据重新画出每个笔迹,其方法是依次读取每个笔迹矢量数据所包含的每个笔划矢量数据,依据每个笔划矢量数据的起点和终点坐标,在要显示的位置上依据需显示的大小与整个笔迹的原大小或原边界的对应关系,计算出该笔划的起点和终点所对应的位置,并在该起点和终点所对应的位置间画一直线,将每个笔迹矢量数据所包含的每个笔划矢量数据依次按同样的方法画出直到全部画完为止。
由于本发明对所写的笔迹无需经过识别过程,需要显示的只是手写的笔迹,不需显示当有识别时需要的备选字,因此对通信终端显示屏大小无特别要求,方便于在现有的移动通信终端中实施,满足了人们对移动通信终端体积越小越好的要求。又因为省去了复杂的识别过程,因此速度快。本发明采用触摸屏来代替现有通信终端在显示器正面与外部之间现有的一层透光的保护性材料。在结构上与现有通信终端相同,更容易实施。触摸屏控制器在采集任一点坐标中至少特定的流程执行两遍可以防止一般的触摸屏容易出现的当在笔接触触摸屏时当触摸屏的水平方向和垂直方向的接触出现抖动时,触摸屏控制器采集到的坐标值不准确的现象。本发明所采用的笔迹矢量数据结构的优点是:(1)与通信终端的显示屏的点阵结构无关。对输入端的显示屏和触摸屏的大小无具体要求。方便于不同厂家生产的产品之间的正确重现笔迹。显示屏的点阵结构有横向和纵向之分。如果数据结构与点阵结构有关,要通用是很困难的。(2)在重现笔迹时可以方便的放大和缩小笔迹而不丢失信息。对复杂的字或图画只有通过这种方式才能在重现端看清笔迹的细节。(3)不仅可传文字笔迹,还可传图像笔迹。(4)数据量最小。因为只传一个直线笔划的两端的点坐标,而忽略了两点间的数据,因此大大减少了数据量。(5)本发明将每一次书写过程生成一个笔迹矢量数据,使一段手写文字所对应的每一个字可以类似标准的字代码一样是一个字对应一个笔迹矢量数据,又由于笔迹矢量数据方便于放大和缩小及显示,因此使手写笔迹数据可以像标准的字代码一样进行编辑和显示。
附图说明
图1:实例1在现有移动通信终端上所增加的电路图。
具体实施例1
以电阻式触摸屏作为采集手写笔迹的传感器,以NEC单片机UPD78F4216作为触摸屏控制器。电路图见图1。
UPD78F4316通过第40,41,42引脚与移动手机终端的主控制器相连。当需要手写笔迹输入时,主控制器通过UPD78F4216第40,41,42引脚通知UPD78F4216。UPD78F4216进入采集数据准备状态。当手写笔迹开始时,UPD78F4216开始采集。每次写完一个笔迹后,UPD78F4216将生成的笔迹矢量数据传给主控制器。主控制器则以类似标准文字的方式缩小显示所写笔迹并可以编辑。当全部所需要的笔迹写完后,主控制器存贮所得到的所有笔迹矢量数据。当需要以短信息发出手写笔迹信息时,主控制器将所存该次所得到的所有笔迹矢量数据以短信息的格式打包并发出。当所需发送的数据超过短信息所规定的长度时,依次读取每个完整的笔迹矢量数据,以短信息所允许的长度分次发出。当移动手机终端收到包含有笔迹矢量数据的短信息时存起来,当需要看时,依照数据的先后顺序,显示短信所包含的标准文字或标准图像或笔迹矢量数据。每个笔迹矢量数据也以标准字的大小进行显示。当需要时放大或缩小某个或多个完整的笔迹。
UPD78F4216的软件如下(共15个):
1、中断服务程序的地址设置:
NAME aaaa
extrn intst1a,intp06,inttm6,
inttm7,inttm8,intad
verp14h cseg at 14h
dw tointp06
verp1ch cseg at 1ch
dw intst1
verp2eh cseg at 2eh
dw tointad
verp32h cseg at 32h
dw tointtm6
verp34h cseg at 34h
dw tointtm7
verp36h cseg at 36h
dw tointtm8
cseg
tointp06:mov !!0ffe3fh,#14h
br !!intp06
reti
intst1:br !!intst1a
reti
tointad:mov!!0ffe3fh,#2eh
br !!intad
reti
tointtm6:mov !!0ffe3fh,#32h
br !!inttm6
reti
tointtm7:mov !!0ffe3fh,#34h
br !!inttm7
reti
tointtm8:mov !!0ffe3fh,#36h
br !!inttm8
reti
tEND
2、生成手写边界数据程序:
name abh8n
public abh8z
extrn inter1,inter4
extrn hxmax,hxmax2,hymax
,hymax2,hxmin,hxmin2,hymin
,hymin2,h1x0,h1y0
abh8f equ 0ffd80h
abh8xs equ 0ffd81h
abh8ys equ 0ffd82h
abh8px equ 0ffd83h
abh8ax equ 0ffd84h
abh8py equ 0ffd85h
ahh8ay equ 0ffd86h
abh8xe equ 0ffd87h
abh8ye equ 0ffd88h
abh8fn equ 0ffd89h
abh8k equ 0ffd8ah
abh8x1 equ 0ffd8bh
abh8x2 equ 0ffd8ch
abh8y1 equ 0ffd8dh
abh8y2 equ 0ffd8eh
cseg
abh8z:pushpsw
sel rb2
mov a,#00h
mov [%inter4],a
call$!anz
cmp x,#03h
bnc $abh8_3
mov a,!!hxmax
mov !!hxmax2,a
mov a,!!hxmin
mov !!hxmin2,a
mov a,!!hymax
mov !!hymax2,a
mov a,!!hymin
mov !!hymin2,a
br $!abh8_4
abh8_3:mov a,!!hxmax
sub a,!!hxmax2
mov x,a
mov c,#03h
call$!divm
mov a,x
add !!hxmax2,a
mov a,!!hxmin2
sub a,!!hxmin
mov x,a
mov c,#03h
call$!divm
mov a,x
sub !!hxmin2,a
mov a,!!hymax
sub a,!!hymax2
mov x,a
mov c,#03h
call$!divm
mov a,x
add !!hymax2,a
mov a,!!hymin2
sub a,!!hymin
mov x,a
mov c,#03h
call$!divm
mov a,x
sub !!hymin2,a
abh8_4:mov a,!!hxmax2
sub a,!!hxmin2
mov !!h1x0,a
mov a,!!hymax2
sub a,!!hymin2
mov !!h1y0,a
mov abh8k,#01h
call$!aqk
call$!anz
cmp x,#00h
bnz $abh8_1
mov a,#01h
mov [%inter4],a
br $!abh8 ret
abh8_1:mov r6,abh8xs
mov r7,abh8ys
call$!abh8_t1
mov a,abh8f
and a,x
movgwhl,uup
mov [whl],a
mov r6,abh8xe
mov r7,abh8ye
call$!abh8_t1
mov a,abh8fn
and a,x
movgwhl,uup
addgwhl,#09h
mov [whl],a
call$ !anz
cmp abh8 k,x
bc $abh8_29
abh8_ret:pop psw
ret
abh8_29:inc abh8k
call$!aqk
br $!abh8_1
abh8_t1:mov r4,!!hxmin2
cmp r6,r4
bc $abh8_24
mov r5,!!hxmax2
cmp r6,r5
bnc $abh8_25
mov x,r6
sub x,r4
mov a,#03h
mulu x
mov c,!!h1x0
divuw c
inc x
mov b,#04h
sub b,x
br $!abh8_2b
abh8_24:mov b,#03h
br $!abh8_2b
abh8_25:mov b,#01h
abh8_2b:mov r4,!!hymin2
cmp r7,r4
bc $abh8_26
mov r5,!!hymax2
cmp r7,r5
bnc $abh8_27
mov x,r7
sub x,r4
mov a,#03h
mulu x
mov c,!!h1y0
divuw c
br$!abh8_28
abh8_26:mov x,#00h
br $abh8_28
abh8_27:mov x,#02h
abh8_28:mov a,#03h
mulux
add x,b
or x,#0f0h
ret
aqk:movgwhl,inter1
movwax,[whl]
cmpwax,#0200h
bnc$aqk1
movg vvp,#00h
mov a,abh8k
dec a
mov x,#0ah
mulux
movw vp,ax
addg whl,#02h
addg whl,vvp
movg uup,whl
movg tde,#0ffd80h
mov c,#0ah
movbk [tde+],[whl+]
aqk1:ret
anz:movgtde,inter1
movw ax,[tde]
mov c,#0ah
divum c
ret
divm:mov a,#00h
divuw c
ret
End
3、笔划特征分析程序:
name abh7n
public abh7z
extrn hwall,handwv2,lintprog
,wordsv,mintsp,handback,
handwend
extrn hxmax,hxmax2,hymax
,hymax2,hxmin,hxmin2
,hymin,hymin2
extrn hxmaxk,hxmax2k
,hxmink,hxmin2k,hymaxk
,hymax2k,hymink,hymin2k
abh7f equ 0ffd80h
abh7xs equ 0ffd81h
abh7ys equ 0ffd82h
abh7px equ 0ffd83h
abh7ax equ 0ffd84h
abh7py equ 0ffd85h
abh7ay equ 0ffd86h
abh7xe equ 0ffd87h
abh7ye equ 0ffd88h
abh7fn equ 0ffd89h
cseg
abh7z:push psw
sel rb2
mov !!hxmax,#00h
mov !!hxmax2,#00h
mov !!hymax,#00h
mov !!hymax2,#00h
mov !!hxmin,#0ffh
mov !!hxmin2,#0ffh
mov !!hymin,#0ffh
mov !!hymin2,#0ffh
abh7_1:br $!abh7_2
mov a,!!handwend
cmp a,#00h
bnz $abh7_1z
mov a,#02h
mov !!handback,a
movwax,!!hwall
cmpwax,#14h
bc $abh7_1y
mov a,#01h
mov !!handback,a
abh7_1y:call !!pulp2
br !!abh7_ret
abh7_1z:movg whl,#abh7_2
call!!pulp
br !!abh7_ret
abh7_2:push psw
sel rb2
call !!aqn
cmp abh7f,#0ffh
bnz $abh7_1
cmp abh7px,#00h
bnz $abh7_21
cmp abh7py,#00h
bnz $abh7_22
mov x,abh7ay
mov c,#05h
call $!divm
cmp abh7ax,x
bc $abh7_23
mov x,abh7ax
mov c,#05h
call $!divm
cmp abh7ay,x
bnc $abh7_24
mov a,#0cfh
br $!abh7_25
abh7_24:mov a,#3fh
br $!abh7_25
abh7_23:mov a,#4fh
br $!abh7_25
abh7_22:mov a,#0efh
br $!abh7_25
abh7_21:cmp abh7py,#00h
bnz $abh7_26
mov x,abh7ay
mov c,#05h
call $!divm
cmp abh7ax,x
bc $abh7_23
mov x,abh7ax
mov c,#05h
call $!divm
cmp abh7ay,x
bc $abh7_27
mov a,#5fh
br $!abh7_25
abh7_27:mov a,#2fh
br $!abh7_25
abh7_26:mov x,abh7ay
mov c,#05h
call $!divm
cmp abh7ax,x
bnc $abh7_27
mov a,#0dfh
abh7_25:movgwhl,uup
mov [whl],a
abh7_2a:mov r4,!!hxmax
mov r5,!!hxmax2
cmp abh7px,#00h
bnz $abh7_28
mov r6,abh7xs
mov r7,abh7xe
br $!abh7_214
abh7_28:mov r6,abh7xe
mov r7,abh7xs
abh7_214:cmp r4,r7
bc $abh7_29
cmp r5,r7
bnc $abh7_210
mov r5,r7
mov !!hxmax2,r5
call $!anz
mov !!hxmax2k,x
br $!abh7_210
abh7_29:mov r5,r4
mov !!hxmax2,r5
mov a,!!hxmaxk
mov !!hxmax2k,a
mov r4,r7
mov !!hxmax,r4
cal1 $!anz
mov !!hxmaxk,x
cmp r5,r6
bnc $abh7_210
mov r5,r6
mov !!hxmax2,r5
call $!anz
mov !!hxmax2k,x
abh7_210:mov r4,!!hxmin
mov r5,!!hxmin2
cmp r6,r4
bc $abh7_211
cmp r6,r5
bnc $abh7_212
mov r5,r6
mov !!hxmin2,r5
call $!anz
mov !!hxmin2k,x
br $!abh7_212
abh7_211:mov r5,r4
mov !!hxmin2,r5
mov a,!!hxmink
mov !!hxmin2k,a
mov r4,r6
mov !!hxmin,r4
call $!anz
mov !!hxmink,x
cmp r7,r5
bnc $abh7_212
mov r5,r7
mov !!hxmin2,r5
call $!anz
mov!!hxmin2k,x
abh7_212:
mov r4,!!hymax
mov r5,!!hymax2
cmp abh7py,#00h
bnz $abh7_213
mov r6,abh7ys
mov r7,abh7ye
br $!abh7_215
abh7_213:mov r6,abh7ye
mov r7,abh7ys
abh7_215:cmp r4,r7
bc $abh7_216
cmp r5,r7
bnc $abh7_217
mov r5,r7
mov !!hymax2,r5
call $!anz
mov !!hymax2k,x
br $!abh7_217
abh7_216:mov r5,r4
mov !!hymax2,r5
mov a,!!hymaxk
mov !!hymax2k,a
mov r4,r7
mov !!hymax,r4
call $!anz
mov !!hymaxk,x
cmp r5,r6
bnc $abh7_217
mov r5,r6
mov !!hymax2,r5
call $!anz
mov !!hymax2k,x
abh7_217:mov r4,!!hymin
mov r5,!!hymin2
cmp r6,r4
bc $abh7_218
cmp r6,r5
bnc $abh_73a
mov r5,r6
mov !!hymin2,r5
call $!anz
mov !!hymin2k,x
br $!abh7_3a
abh7_218:mov r5,r4
mov !!hymin2,r5
mov a,!!hymink
mov !!hymin2k,a
mov r4,r6
mov !!hymin,r4
call $!anz
mov !!hymink,x
cmp r7,r5
bnc $abh7_3a
mov r5,r7
mov !!hymin2,r5
call $!anz
mov !!hymin2k,x
abh7_3a:movgwhl,uup
addg whl,#09h
mov a,[whl]
and a,#0f0h
cmp a,#40h
bz $abh7_31
mov a,!!handwend
cmp a,#00h
bnz $abh7_1a
mov a,#01h
mov !!handback,a
br !!abh7_32
abh7_1a:br $!abh7_1
abh7_31:mov a,#00h
mov !!handback,a
abh7_32:call !!pulp2
abh7_ret:pop psw
ret
pulp:movg tde,#lintprog
movgvvp,#00h
mov r8,#handwv2
addg tde,vvp
mov a,[tde]
mov x,a
inc a
mov [tde],a
mov a,#03h
mulu x
movw rp4,ax
addg tde,#02h
addg tde,vvp
movg [tde],whl
ret
pulp2:
movg tde,#mintsp
mov a,[tde]
movg vvp,#00h
mov r8,a
inc a
mov [tde],a
incg tde
addg tde,vvp
mov a,#wordsv
mov [tde],a
ret
aqn:movg whl,#hwall
movw ax,[whl]
cmpw ax,#0200h
bnc $aqn2
movg vvp,#00h
movw vp,ax
addg whl,#02h
addg whl,vvp
subg whl,#0ah
movg uup,whl
movg tde,#0ffd80h
mov c,#0ah
movbk [tde+],[whl+]
aqn2:ret
anz:movg tde,#hwall
movw ax,[tde]
mov c,#0ah
divuw c
ret
divm:mov a,#00h
divuw c
ret
End
4、AD采样程序:
name adonen
public adonez
extrn
addrad,z_syslflag,z_intflg3
cseg
adoncz:push psw
sel rb7
push tde
mov tmic7,#01000011b
mov tmc7,#00000111b
clr1 pm0.4
set1 pm0.6
set1 pm9.4
clr1 pm0.3
clr1 pm0.5
clr1 p0.5
clr1 p0.4
clr1 p0.3
set1 z_intflg3.1
clr1 z_intflg3.2
mov adis,#00000110b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov adic,#00000000b
mov adm,#10100000b
movg tde,#0ffd57h
movg addrad,tde
set1 z_syslflag.0
pop tde
toret:pop psw
ret
totm7:mov mic7,#0000000b
mov tmc7,#10000000b
mov prm7,#00000111b
mov cr70,#3ah
br !!toret
end
5、手写笔迹打包程序:
NAME apakn
PUBLIC apakz
extrn hwall
apakjsq equ 0ffd8ah
CSEG
apakz:push psw
sel rb2
mov apakjsq,#00h
movg whl,#hwall
movw ax,[whl]
movw rp2,ax
cmpw rp2,#0ah
bnc $apak_4
br $!apak_ret
apak_4:addg whl,#02h
movg tde,#0ffd80h
mov c,#0ah
movbk [tde+],[whl+]
movg vvp,whl
subw rp2,#0ah
movg uup,#hwall
incg uup
movg whl,#0ffcaffh
movg [uup],whl
addg uup,#04h
mov a,#70h
mov [uup],a
incg uup
movg whl,#0ffd81h
movg tde,uup
mov c,#02h
movbk [tde+],[whl+]
addg whl,#04h
mov c,#02h
movbk [tde+],[whl+]
add apakjsq,#04h
cmpwrp2,#0ah
bc $apak_1
incg vvp
apak_2:movgwhl,vvp
subw rp2,#0ah
add apakjsq,#04h
mov c,#02h
movbk [tde+],[whl+]
addg whl,#04h
mov c,#02h
movbk [tde+],[whl+]
cmpw rp2,#0ah
bc $apak_1
addg vvp,#0ah
br $!apak_2
apak_1:add apakjsq,#09h
mov a,apakjsq
movg whl,#hwall
mov [whl],a
addg whl,#04h
sub a,#05h
mov [whl],a
mov r6,a
mov b,#00h
mov c,a
apak_3:incg whl
mov a,[whl]
mov x,a
mov a,#00h
addw bc,ax
dec r6
cmp r6,#03h
bnz $apak_3
incg whl
movw ax,bc
movw [whl],ax
addg whl,#02h
movw ax,#0ffffh
movw [whl],ax
apak_ret:
pop psw
ret
END
6、求矢量程序:
name asln
public aslz
extrn inget1,inget4,inget7
cseg
aslz:push psw
sel rb3
movg whl,inget1
movg tde,inget4
movg uup,inget7
mov a,[whl]
mov b,a
mov a,[tde]
mov c,a
mov a,[whl+1]
mov x,a
mov a,[tde+1]
mov r4,a
cmp c,b
bc $asl_1
bnz $asl_2
cmp x,r4
bnc $asl_2
asl_1:mov a,#01h
mov [uup],a
mov a,h
sub a,c
incg uup
mov [uup],a
br !!asl_5
asl_2:mov a,#00h
mov [uup],a
mov a,c
sub a,b
incg uup
mov [uup],a
asl_5:cmp r4,x
bc $asl_3
bnz $asl_4
cmp c,b
bnc $asl_4
asl_3:mov a,#01h
incg uup
mov [uup],a
mov a,x
sub a,r4
incg uup
mov [uup],a
br !!asl_ret
asl_4:mov a,#00h
incg uup
mov [uup],a
mov a,r4
sub a,x
incg uup
mov [uup],a
asl_ret:pop psw
ret
End
7、串口发送数据程序:
NAME sendln
public sendlz,intst1a
extrn inter1,z_intflg4
,z_intflg2,portnum,z_intflg1
senadd1 equ 0fe200h
sencnt1 equ 0fe203h
senflg equ 0fe204h
cseg
sendlz:push psw
sel rb2
set1 z_intflg2.0
clr1 z_intflg2.1
clr1 pm2.2
set1 p2.2
clr1 z_intflg1.5
add portnum,#1
mov brgcl,#00011010b
mov csiml,#00000000b
mov sticl,#00000011b
movg whl,inter1
mov a,[whl]
mov !!sencnt1,a
incg whl
set1 pm2.1
clr1 p2.1
clr1 pm2.1
mov a,[whl]
incg whl
movg !!senadd1,whl
mov txsl,a
pop psw
ret
intst1a:sel rb7
push whl
push ax
push bc
set1 pm2.1
clr1 p2.1
clr1 pm2.1
movg whl,!!senadd1
mov a,[whl]
incg whl
movg !!senadd1,whl
mov c,!!sencnt1
dbnz c,$intst12
mov sticl,#01000011b
set1 z_intflg1.5
clr1 p2.2
sub portnum,#1
mov !!senflg,#0ffh
intst11:mov !!sencnt1,c
pop bc
pop ax
pop whl
reti
intst12:mov txsl,a
br !intst11
END
8、手写实时显示程序,
NAME xhwd2n
PUBLIC xhwd2z
extrn inget1,inget2
,inget3,inget4,inget5
,lulz,lukz,xcldotz
extrn hlcdx1,hlcdy1
,hlcdx2,hlcdy2,lcdxyx
,hax1,hax2,hay1,hay2
,htx1,hty1,htx2,hty2
extrn lcd_dotlinmax
,lcd_dotvolmax,lintprog
,dothpv,oldlcdflag,x0,y0
CSEG
xhwd2z:push psw
sel rb2
mov !!inget1,#00h
mov !!inget3,#hlcdx1
mov !!inget2,#hlcdy1
mov !!inget5,#hlcdx2
mov !!inget4,#hlcdy2
call !!xcldotz
mov a,#lcd_dotlinmax
sub a,#hlcdy1
bnc $xhl
br!!out
xhl:inc a
mov !!inget1,a
mov a,#hlcdx1
cmp a,#lcd_dotvolmax
bc$xh2
br!!out
xh2:mov a,#hlcdx2
cmp a,#lcd_dotvolmax
bz$xh3
bc$xh3
br!!out
xh3:mov a,#hlcdy2
cmp a,#lcd_dotlinmax
bz$xh4
bc$xh4
br!!out
xh4:mov a,#hlcdx1
mov x,a
add a,#03h
xhloop1:cmp x,#hlcdx2
bc$xh9
br!!xh7
xh9:cmp a,#hlcdx2
bc$xh10
br!!xh5
xh10:mov inget2,x
mov inget3,a
call !!lukz
add x,#06h
add a,#04h
cmp x,#hlcdx2
bc$xh6
br!!xh7
xh6:cmp a,#hlcdx2
bc$xh8
br!!xh5
xh8:mov inget2,x
mov inget3,a
call !!lukz
add x,#04h
add a,#06h
br!!xhloop1
xh5:mov inget2,x
mov inget3,#hlcdx2
call !!lukz
xh7:mov a,#lcd_dotlinmax
sub a,#hlcdy2
inc a
mov inget1,a
mov a,#hlcdx1
mov x,a
add a,#03h
xhloop2:cmp x,#hlcdx2
bc$xh79
br!!xh77
xh79:cmp a,#hlcdx2
bc$xh710
br!!xh75
xh710:mov inget2,x
mov inget3,a
call !!lukz
add x,#06h
add a,#04h
cmp x,#hlcdx2
bc$xh76
br!!xh77
xh76:cmp a,#hlcdx2
bc$xh78
br!!xh75
xh78:mov inget2,x
mov inget3,a
call !!lukz
add x,#04h
add a,#06h
br!!xhloop2
xh75:mov inget2,x
mov inget3,#hlcdx2
call !!lukz
xh77:mov inget3,#hlcdx1
mov a,#lcd_dotlinmax
sub a,#hlcdy1
inc a
mov r7,a
mov a,#lcd_dotlinmax
sub a,#hlcdy2
inc a
mov x,a
add x,#03h
xhloop3:cmp a,r7
bc$xh31
br!!xh32
xh31:cmp x,r7
bc$xh33
br!!xh34
xh33:mov inget1,a
mov inget2,x
call !!lulz
add a,#06h
add x,#04h
cmp a,r7
bc$xh35
br!!xh32
xh35:cmp x,r7
bc$xh36
br!!xh34
xh36:mov inget1,a
mov inget2,x
call !!lulz
add a,#04h
add x,#06h
br!!xhloop3
xh34:mov inget1,a
mov inget2,r7
call !!lulz
xh32:mov inget3,#hlcdx2
mov a,#lcd_dotlinmax
sub a,#hlcdy2
inc a
mov x,a
add x,#03h
xhloop4:cmp a,r7
bc$xh41
br!!out
xh41:cmp x,r7
bc$xh43
br!!xh44
xh43:mov inget1,a
mov inget2,x
call !!lulz
add a,#06h
add x,#04h
cmp a,r7
bc$xh45
br!!xhd2
xh45:cmp x,r7
bc$xh46
br!!xh44
xh46:mov inget1,a
mov inget2,x
call !!lulz
add a,#04h
add x,#06h
br!!xhloop4
xh44:mov inget1,a
mov inget2,r7
call !!lulz
xhd2:movg tde,#lintprog
movg vvp,#00h
mov r8,#dothpv
addg tde,vvp
mov a,[tde]
mov x,a
inc a
mov [tde],a
mov a,#03h
mulu x
movw rp4,ax
addg tde,#02h
addg tde,vvp
movg whl,#xhd3
movg [tde],whl
br!!out
xhd3:push psw
sel rb2
movw ax,!!lcdxyx
movw rp3,ax
cmp a,#hty1
bc$xpt5
cmp a,#hty2
bz$xpt3
bnc $xpt5
xpt3:cmp x,#htx2
bc$xpt5
cmp x,#htx1
bz$xpt4
bnc $xpt5
br!!xpt4
xpt5:br !!xhd2
xpt4:mov a,#htx1
sub a,r6
mov x,#hax2
mulu x
mov c,#hax1
divuw c
add x,#hlcdx1
cmp x,#hlcdx1
bc$xpt6
cmp x,#hlcdx2
bz$xpt1
bnc $xpt6
xpt1:mov r5,x
mov a,r7
sub a,#hty1
mov x,#hay2
mulu x
mov c,#hay1
divuw c
add x,#hlcdy1
cmp x,#hlcdy1
bc$xpt6
cmpx,#hlcdy2
bz$xpt2
bc$xpt2
xpt6:br !!xhd2
xpt2:mov a,!!oldlcdflag
cmp a,#00h
bnz $xhdx1
call !!pdisp
inc r5
call !!pdisp
dec r5
mov !!x0,r5
mov !!y0,x
mov !!oldlcdflag,#0ffh
br!!xhd2
xhdx1:mov a,!!x0
cmp r5,a
bnz $xhdx11
mov a,!!y0
cmp x,a
bnz $xhdx11
br!!xhd2
xhdx11:mov r6,x
mov r7,r5
mov x,!!y0
;mov r5,!!x0
;call !!pdisp
;inc r5
;call !!pdisp
mov a,!!x0
cmp r7,a
bc$xhdx2
mov b,r7
sub b,a
br!!xhdx3
xhdx2:mov b,!!x0
sub b,r7
xhdx3:mov a,!!y0
cmp r6,a
bc$xhdx4
mov c,r6
sub c,a
br!!xhdx5
xhdx4:mov c,!!y0
sub c,r6
xhdx5:cmp b,c
bnc $xhdx6
br!!xhd3a
xhdx6:mov a,!!x0
cmp a,r7
bnc $xhd2c
xhd2a:mov r4,#01h
xhd2b:mov r5,!!x0
add r5,r4
mov a,!!y0
cmp a,r6
bc$xhd2b1
mov x,!!y0
sub x,r6
mov c,r7
mov a,!!x0
sub c,a
mov a,r4
mulu x
divuw c
mov a,!!y0
sub a,x
mov x,a
br!!xhd2b2
xhd2b1:mov x,r6
mov a,!!y0
sub x,a
mov c,r7
mov a,!!x0
sub c,a
mov a,r4
mulu x
divuw c
mov a,!!y0
add a,x
mov x,a
xhd2b2:call !!pdisp
inc r5
call !!pdisp
dec r5
cmp r7,r5
bc$xhd2b3
inc r4
br!!xhd2b
xhd2b3:mov!!x0,r7
mov !!y0,r6
br!!xhd2
xhd2c:mov r4,#01h
xhd2d:mov r5,!!x0
sub r5,r4
mov a,!!y0
cmp a,r6
bc$xhd2c1
mov x,!!y0
sub x,r6
mov c,!!x0
sub c,r7
mov a,r4
mulu x
divuw c
mov a,!!y0
sub a,x
mov x,a
br!!xhd2c2
xhd2c1:mov x,r6
mov a,!!y0
sub x,a
mov c,!!x0
sub c,r7
mov a,r4
mulu x
divuw c
mov a,!!y0
add a,x
mov x,a
xhd2c2:call !!pdisp
inc r5
call !!pdisp
dec r5
cmp r5,r7
bc$xhd2c3
inc r4
br!!xhd2d
xhd2c3:mov!!x0,r7
mov !!y0,r6
br!!xhd2
xhd3a:mov a,!!y0
cmp a,r6
bc$xhd3a1
br!!xhd3c
xhd3a1:mov r4,#01h
xhd3b:mov b,!!y0
add b,r4
mov a,!!x0
cmp a,r7
bc$xhd3b1
mov x,!!x0
sub x,r7
mov c,r6
mov a,!!y0
sub c,a
mov a,r4
mulu x
divuw c
mov r5,!!x0
sub r5,x
br!!xhd3b2
xhd3b1:mov x,r7
mov a,!!x0
sub x,a
mov c,r6
mov a,!!y0
sub c,a
mov a,r4
mulu x
divuw c
mov r5,!!x0
add r5,x
xhd3b2:mov x,b
call !!pdisp
inc r5
call !!pdisp
cmp r6,x
bc$xhd3b3
inc r4
br!!xhd3b
xhd3b3:mov!!x0,r7
mov !!y0,r6
br!!xhd2
xhd3c:mov r4,#01h
xhd3d:mov b,!!y0
sub b,r4
mov a,!!x0
cmp a,r7
bc$xhd3c1
mov x,!!x0
sub x,r7
mov c,!!y0
sub c,r6
mov a,r4
mulu x
divuw c
mov r5,!!x0
sub r5,x
br!!xhd3c2
xhd3c1:mov x,r7
mov a,!!x0
sub x,a
mov c,!!y0
sub c,r6
mov a,r4
mulu x
divuw c
mov r5,!!x0
add r5,x
xhd3c2:mov x,b
call !!pdisp
inc r5
call !!pdisp
cmp x,r6
bc$xhd3c3
inc r4
br!!xhd3d
xhd3c3:mov!!x0,r7
mov !!y0,r6
br!!xhd2
out:pop psw
ret
pdisp:
mov a,#lcd_dotlinmax
sub a,x
inc a
mov inget1,a
mov inget2,r5
mov inget3,r5
call !!lukz
ret
END
9、坐标分断程序:
NAME xod1n
PUBLIC xod1z
extrn lintprog,lintsp
extrn hwbuffer1,
hwbuffer2,hwbuffer3,
hwbuffer4,hwbuffer5,
hwbuffer6,hwbuffer7,
hwbuffer8,hwbuffer9,
hwbuffer10,hwbuffer11,
hwbuffer12,hwbuffer13,
hwbuffer14,hwbuffer15,
hwbuffer16,hwbuffer17,
hwbuffer18,hwbuffer19,
hwbuffer20,hwbuffer21
extrn hwbuffer22,
hwbuffer23,hwbuffer24,
hwbuffer25,hwbuffer26,
hwbuffer27,hwbuffer28
extrn hwbuffer29,
hwbuffer30,hwbuffer31,
hwbuffer32,hwbuffer33
,hwbuffer34,hwbuffer35
extrn hwbuffer36,
hwbuffer37,hwbuffer38,
hwbuffer39,hwbuffer40
extrn inget1,inget2,
inget4,inget7
extrn handwv,bdx0,
bdx2,bdy0,bdy2,handwv2,
xmax1,ymax1,xmax2
,ymax2,hwall,dothpv,
handwv3
extrn z_intflg1,lcdxyx,
z_intflg3
extrn abh7z,adonez,aslz,
xtm6z,xtm8z,xvtcz,xvtmz,
xhwd2z,oldlcdflag
extrn hwtm1,hwtm2,
handwend,ang30min,
xmax3,ymax3,z_sys4flag
CSEG
xod1z:push psw
sel rb5
xd1:set1 z_intflg3.4
set1z_sys4flag.2
clr1 egp0.6
clr1 egn0.6
set1 pm0.6
mov pic6,#40h
movw !!hwall,#0000h
movg whl,#lintprog
mov a,#dothpv
mov b,a
mov a,#00h
mov [whl+b],a
mov !!hwbuffer36,#00h
mov !!hwbuffer1,#00h
mov !!hwbuffer2,#0fdh
mov !!hwbuffer3,#0ffh
mov !!oldlcdflag,#00h
mov !!handwend,#0ffh
call !!abh7z
call !!xhwd2z
movg whl,#xd2
call !!pulp
set1 egp0.6
clr1 egn0.6
set1 pm0.6
mov pic6,#00h
br!!out
xd12:br !!xdbb5
xd2:push psw
sel rb5
movw ax,!!lcdxyx
cmpw ax,#0ffffh
bz$xd12
cmp a,#bdy0
bc$xdi1
cmp a,#bdy2
bz$xdi2
bnc $xdi1
xdi2:cmp x,#bdx0
bc$xdi1
cmp x,#bdx2
bz$xdi3
bnc $xdi1
br!!xdi3
xdi1:mov a,#0fdh
cmp a,!!hwbuffer2
bz$xdi122
mov a,#0f9h
cmp a,!!hwbuffer2
bnz $xdi12
br!!xd13
xdi122:
mov!!hwbuffer2,#0f9h
br!!xdbb5
xdi12:cmp hwtm2,#0ffh
bz$xdi11
br !!xdbb5
xdi11:
bf!!hwbuffer2.0,$xdi111
clrl !!hwbuffer2.0
br!!xdbb5
xdi111:br !!xd13
xdi3:setl !!hwbuffer2.0
mov !!hwbuffer1,#08h
mov !!hwhuffer2,#0ffh
mov !!hwbuffer8,x
mov !!hwbuffer9,a
call !!pdot
xdaa2:mov!!hwbuffer36,#00h
xdaa:mov !!inget1,#01h
movg whl,#xd3
movg !!inget2,whl
call !!xtm6z
call !!phw3
br!!out
xd3:push psw
sel rb5
bfp0.6,$xdaa1
movg whl,#xd4
call !!pulp
call !!adonez:
br!!out
xdaa1:mov a,!!hwbuffer36
inc a
mov !!hwbuffer36,a
mov x,#hwtml
inc x
cmp a,x
bc$xdaalil
br!!xdbb5
xdaalil:cmp a,#hwtml
bc$xdi31
mov a,!!hwbuffer1
cmp a,#09h
bnc $xdaa3
mov r7,#0fh
call !!hwset
mov !!oldlcdflag,#00h
br!!xdaa5
xdi31:mov !!inget1,#01h
movg whl,#xd3
movg !!inget2,whl
call !!xtm6z
call !!phw3
br!!out
xdaa3:mov r7,#0ffh
mov r6,#0fh
movw ax,!!hwbuffer8
movw rp2,ax
movw ax,!!hwbuffer14
movw rp1,ax
movg whl,#hwbuffer4
call !!phwa11
mov !!oldlcdflag,#00h
xdaa5:mov!!hwbuffer1,#00h
mov !!hwbuffer2,#0ffh;
mov !!hwbuffer3,#0ffh;
call !!phw3
call !!phw2
br!!xdbb5
xdaa4:mov a,!!hwbuffer36
cmp a,hwtm2
bnc $xdaa4i1
mov !!inget1,#01h
movg whl,#xd3
movg !!inget2,whl
call !!xtm8z
call !!phw3
br!!out
xdaa4i1:mov a,!!hwbuffer1
cmp a,#09h
bnc $xdaa41
movg whl,#hwall
movw ax,[whl]
cmpw ax,#00h
bnz $xdaa42
br!!xd1
xdaa42:mov r7,#04fh
call !!hwset
br!!xdaa43
xdaa41:mov r7,#0ffh
mov r6,#4fh
movw ax,!!hwbuffer8
movw rp2,ax
movw ax,!!hwbuffer14
mmovw rp1,ax
movg whl,#hwbuffer4
call !!phwa11
mov !!oldlcdflag,#00h
xdaa43:call!!phw3
call !!phw2
br!!out
xldaa:br!!xdaa
xd4:push psw
sel rb5
movw ax,!!lcdxyx
cmpw ax,#0ffffh
bz$xldaa
cmp a,#bdy0
bc$xd41
cmp a,#bdy2
bz$xd42
bnc $xd41
xd42:cmp x,#bdx0
bc$xd41
cmp x,#bdx2
bz$xd43
bnc $xd41
br!!xd43
xd41:cmp hwtm2,#0ffh
bnz $xd411
bf !!hwbuffer2.0,$xd412
clrl !!hwbuffer2.0
br!!xdaa
xd412:br !!xd13
xd411:br !!xdaa
xd43:setl !!hwbuffer2.0
movg whl,#hwbuffer8
movg inget1,whl
movg whl,#lcdxyx
movg inget4,whl
movg whl,#hwbuffer37
movg inget7,whl
call !!aslz
movg whl,#hwbuffer37
movg tde,#hwbuffer4
mov c,#04h
movbk [tde+],[whl+]
movw ax,!!lcdxyx
movw !!hwbuffer14,ax
mov a,!!hwbuffer38
cmp a,#xmax1
bnc $xd44
mov a,!!hwbuffer40
cmp a,#ymax1
bnc $xd44
br !!xdaa2
xd44:mov a,!!hwbuffer38
cmp a,#xmax3
bnh $xd441
br!!xdaa2
xd441:mov a,!!hwbuffer40
cmp a,#ymax3
bnh $xdaa7
br!!xdaa2
xdaa7:movw ax,!!lcdxyx
movw !!hwbuffer14,ax
mov !!hwbuffer1,#0eh
call !!pdot
movg tde,#hwbuffer 10
movg whl,#hwbuffer37
mov c,#04h
movbk [tde+],[whl+]
mov a,!!hwbuffer38
cmp a,#xmax2
bnc $xdaa71
mov a,!!hwbuffer40
cmp a,#ymax2
bnc $xdaa71
br!!xdaa2
xdaa71:clrl !!hwbuffer2.7
movg tde,#hwbuffer4
movg whl,#hwbuffer37
mov c,#04h
movbk [tde+],[whl+]
xdbb2:
mov !!hwbuffer36,#00h
xdbb:mov !!inget1,#01h
movg whl,#xd5
movg !!inget2,whl
call !!xtm6z
call !!phw3
br!!out
xd5:push psw
sel rb5
bfp0.6,$xdbb1
movg whl,#xd6
call !!pulp
call !!adonez
br!!out
xdbbl:mov a,!!hwbuffer36
inc a
mov !!hwbuffer36,a
cmp a,#hwtm1
bc$xd51
mov r7,#0ffh
mov r6,#0fh
movw ax,!!hwbuffer8
movw rp2,ax
movw ax,!!hwbuffer14
movw rp1,ax
movg whl,#hwbuffer4
call !!phwa11
mov !!oldlcdflag,#00h
mov !!hwbuffer1,#00h
mov !!hwbuffer2,#0ffh
mov !!hwbuffer3,#0ffh
call !!phw3
call !!phw2
xdbb5:mov!!inget1,#01h
movg whl,#xd52
movg !!inget2,whl
call !!xtm8z
call !!phw3
br!!out
xd51:mov !!inget1,#01h
movg whl,#xd5
movg !!inget2,whl
call !!xtm6z
call !!phw3
br!!out
xd52:push psw
sel rb5
bfp0.6,$xd521
movg whl,#xd2
call !!pulp
call !!adonez;
br !!out
xd521:cmp hwtm2,#0fh
bnz $xd5211
br!!xdbb5
xd5211:mov a,!!hwbuffer36
inc a
mov !!hwbuffer36,a
cmp a,hwtm2
bnc $xd522
br!!xdbb5
xd522:movg tde,#hwall
movw ax,[tde]
cmpw ax,#00h
bnz $xd5221
br!!xd5222
xd5221:movg vvp,#00h
movw rp4,ax
addg tde,#02h
addg tde,vvp
decg tde
mov a,[tde]
and a,#3fh
add a,#40h
mov [tde],a
xd5222:
mov !!oldlcdflag,#00h
mov !!handwend,#00h
call !!phw3
call !!phw2
br!!out
xldbb:br !!xdbb
xd6:push psw
sel rb5
movw ax,!!lcdxyx
cmpw ax,#0ffffh
bz$xldbb
cmp a,#bdy0
bc$xd61
cmp a,#bdy2
bz$xd62
bnc $xd61
xd62:cmp x,#bdx0
bc$xd61
cmp x,#bdx2
bz$xd63
bnc $xd61
br!!xd63
xd61:cmp hwtm2,#0ffh
bz$xd611
br!!xdbb
xd611:
bf!!hwbuffer2.0,$xd6111
clrl !!hwbuffer2.0
br!!xdbb
xd6111:br!!xd13
xd63:setl!!hwbuffer2.0
movg whl,#hwbuffer14
movg inget1,whl
movg whl,#lcdxyx
movg inget4,whl
movg whl,#hwbuffer37
movg inget7,whl
call !!aslz
mov a,!!hwbuffer38
cmp a,#xmax1
bnc $xd64
mov a,!!hwbuffer40
cmp a,#ymax1
bnc $xd64
br!!xdbb2
xd64:mov a,!!hwbuffer38
cmp a,#xmax3
bnh $xd641
br!!xdbb2
xd641:mov a,!!hwbuffer40
cmp a,#ymax3
bnh $xdbb6
br!!xdbb2
xdbb6:call !!pdot
movw ax,!!lcdxyx
movw !!hwbuffer20,ax
movg tde,#hwbuffer16
movg whl,#hwbuffer37
mov c,#04h
movbk [tde+],[whl+]mov
a,!!hwbuffer1
add a,#06h
mov !!hwbuffer1,a
movg whl,#hwbuffer4
movg !!inget1,whl
movg whl,#hwbuffer16
movg !!inget4,whl
movg whl,#hwbuffer35
movg !!inget7,whl
call !!xvtcz
mov a,!!hwbuffer35
cmp a,#00h
bz $xdbb61
cmp a,#01h
bnz $xdbb62
clr1 !!hwbuffer3.0
br!!xdcc2
xdbb62:cmp a,#0e1h
bnz $xdbb63
clr1 !!hwbuffer3.7
br!!xdbb61
xdbb63:cmp a,#0e2h
bnz $xdbb6i1
clr1 !!hwbuffer3.6
br!!xdbb61
xdbb6i1:cmp a,#0e8h
bnz $xdbb6i2
bt!!hwbuffer2.6,$xdbb61
bf!!hwbuffer2.5,$xdbb61
clr1 !!hwbuffer3.0
br!!xdbb61
xdbb6i2:cmp a,#0e3h
bnz $xdbb61
clr1 !!hwbuffer3.0
xdbb61:
movg whl,#hwbuffer8
movg inget1,whl
movg whl,#hwbuffer20
movg inget4,whl
movg whl,#hwbuffer10
movg inget7,whl
call !!aslz
movg whl,#hwbuffer4
movg !!inget1,whl
movg whl,#hwbuffer10
movg !!inget4,whl
movg whl,#hwbuffer35
movg !!inget7,whl
call !!xvtmz
mov a,!!hwbuffer35
cmp a,#00h
bz$xdcc2
cmp a,#01h
bnz $xdbb66
set1 !!hwbuffer2.5
clr1 !!hwbuffer2.6
br!!xdcc2
xdbb66:cmp a,#02h
bnz $xdbb67
set1 !!hwbuffer2.6
clr1 !!hwbuffer2.5
br!!xdcc2
xdbb67:cmp a,#03h
bnz $xdcc2
clr1 !!hwbuffer3.0
xdcc2:
mov !!hwbuffer36,#00h
xdcc:mov !!inget1,#01h
movg whl,#xd7
movg !!inget2,whl
call !!xtm6z
call !!phw3
br!!out
xd7:push psw
sel rb5
bfp0.6,$xdcc1
movg whl,#xd8
call!!pulp
call !!adonez;
br!!out
xdcc1:mov a,!!hwbuffer36
inc a
mov !!hwbuffer36,a
cmp a,#hwtm1
bc$xdcc11
mov r7,#0ffh
mov r6,#0fh
movw ax,!!hwbuffer8
movw rp2,ax
movw ax,!!hwbuffer20
movw rp1,ax
movg whl,#hwbuffer10
call !!phwa11
mov !!oldlcdflag,#00h
mov !!hwbuffer1,#00h
mov !!hwbuffer2,#0ffh
mov !!hwbuffer3,#0ffh
call !!phw3
call !!phw2
br!!xdbb5
xdcc11:mov !!inget1,#01h
movg whl,#xd7
movg !!inget2,whl
call !!xtm6z
call !!phw3
br!!out
xldcc:br !!xdcc
xd8:push psw
sel rb5
movw ax,!!lcdxyx
cmpw ax,#0ffffh
bz$xldcc
cmp a,#bdy0
bc$xd81
cmp a,#bdy2
bz$xd82
bnc $xd81
xd82:cmp x,#bdx0
bc$xd81
cmp x,#bdx2
bz$xd83
bnc $xd81
br!!xd83
xd81:cmp hwtm2,#0ffh
bnz $xd811
bf!!hwbuffer2,0,$xd812
clr1 !!hwbuffer2.0
br!!xdcc
xd812:br !!xd14
xd811:br !!xdcc
xd83:set1 !!hwbuffer2.0
movg whl,#hwbuffer20
movg inget1,whl
movg whl,#lcdxyx
movg inget4,whl
movg whl,#hwbuffer37
movg inget7,whl
call !!aslz
mov a,!!hwbuffer38
cmp a,#xmax1
bnc $xd84
mov a,!!hwbuffer40
cmp a,#ymax1
bnc $xd84
br!!xdcc
xd84:mov a,!!hwbuffer38
cmp a,#xmax3
bnh $xd841
br !!xdcc
xd841:mov a,!!hwbuffer40
cmp a,#hmax3
bnh $xd831
br!!xdcc
xd831:movg tde,#hwbuffer22
movg whl,#hwbuffer37
mov c,#04h
movbk [tde+],[whl+]
call !!pdot
movw ax,!!lcdxyx
movw !!hwbuffer26,ax
mov a,!!hwbuffer1
add a,#06h
mov !!hwbuffer1,a
bt !!hwbuffer3.0,$xdcc4
br!!xde1
xdcc4:movg whl,#hwbuffer8
movg inget1,whl
movg whl,#hwbuffer26
movg inget4,whl
movg whl,#hwbuffer37
movg inget7,whl
call !!aslz
movg whl,#hwbuffer10
movg !!inget1,whl
movg whl,#hwbuffer37
movg !!inget4,whl
movg whl,#hwbuffer35
movg !!inget7,whl
call !!xvtmz
mov a,!!hwbuffer35
cmp a,#00h
bnz $xdcc41
xdcc42:br !!xddd3
xdcc41:cmp a,#01h
bnz $xddd1
bf!!hwbuffer2.4,$xdcc42
xddd2:
bt !!hwbuffer2.6,$xdcc43
xdcc44:clrl !!hwbuffer2.6
set1 !!hwbuffer2.5
br!!xddd3
xdcc43:
bt !!hwbuffer2.5,$xdcc44
clr1 !!hwbuffer2.4
br!!xddd3
xddd1:cmp a,#02h
bnz $xddd3i1
bt !!hwbuffer2.4,$xddd11
br!!xddd3
xddd11:
bf!!hwbuffer2.6,$xddd12
xddd13:setl !!hwbuffer2.6
clr1 !!hwbuffer2.5
br!!xddd3
xddd12:
bf!!hwbuffer2.5,$xddd13
clr1 !!hwbuffer2.4
br!!xddd3
xddd3i1:
clr1 !!hwbuffer3.0
xddd3:
movg whl,#hwbuffer10
movg !!inget1,whl
movg whl,#hwbuffer22
movg !!inget4,whl
movg whl,#hwbuffer35;
movg !!inget7,whl
call !!xvtcz
mov a,!!hwbuffer35
cmp a,#00h
bnz $xddd31
movg tde,#hwbuffer10
movg whl,#hwbuffer37
mov c,#04h
movbk [tde+],[whl+]
br!!xddd4
xddd31:cmp a,#01h
bnz $xddd32
clr1 !!hwbuffer3.0
br!!xde2
xddd32:
movg tde,#hwbuffer10
movg whl,#hwbuffer37
mov c,#04h
movbk [tde+],[whl+]
cmp a,#0e1h
bnz $xddd33
clr1 !!hwbuffer3.7
br!!xddd5
xddd33:cmp a,#0e2h
bnz $xddd34
clr1 !!hwbuffer3.6
br!!xddd5
xddd34:cmp a,#0f3h
bnz $xddd35
bf!!hwbuffer3.7,$xddd36
bf!!hwbuffer3.1,$xddd36
br!!xddd5
xddd36:clrl!!hwbuffer3.3
br!!xddd5
xddd35:cmp a,#0f4h
bnz $xdp8a
bf !!hwbuffer3.6,$xddd37
bf!!hwbuffer3.2,$xddd37
br!!xddd5
xdp8a:cmp a,#0e8h
bnz $xdp8a1
bt !!hwbuffer2.6,$xddd5
bf !!hwbuffer2.5,$xddd5
clr1 !!hwbuffer3.0
br!!xde2
xdp8a1:cmp a,#0e3h
bnz $xddd5
clr1 !!hwbuffer3.0
br!!xde2
xddd37:clrl !!hwbuffer3.3
br!!xddd5
xddd4:
bt!!hwbuffer3.7,$xddd41
clr1 !!hwbuffer3.1
br!!xddd5
xddd41:
bt!!hwbuffer3.6,$xddd5
clr1 !!hwbuffer3.2
xddd5:movg tde,#hwbuffer14
call !!hbde1
br !!xdcc2
xde1:movg whl,#hwbuffer14
movg inget1,whl
movg whl,#hwbuffer26
movg inget4,whl
movg whl,#hwbuffer37
movg inget7,whl
call !!aslz
movg whl,#hwbuffer4
movg !!inget1,whl
movg whl,#hwbuffer22
movg !!inget4,whl
movg whl,#hwbuffer35
movg !!inget7,whl
call !!xvtcz
mov a,!!hwbuffer35
cmp a,#01h
bz$xde1l
cmp a,#0e1h
bnz $xde12
clr1 !!hwbuffer3.7
br!!xde13
xde12:cmp a,#Oe2h
bz$xde14
cmp a,#0e8h
bz $xde112
cmp a,#0e3h
bz $xde112
br!!xde13
xde14:clrl !!hwbuffer3.6
br!!xde13
xde11:
bf!!hwbuffer2.6,$xde111
xde112:mov r7,#0ffh
br!!xde113
xde111:
bf !!hwbuffer2.5,$xde112
bf !!hwbuffer2.4,$xde112
bf !!hwbuffer3.3,$xde112
bf !!hwbuffer3.1,$xde114
bt !!hwbuffer3.2,$xde112
mov r7,#0ffh
br !!xde113
xde114:mov r7,#0ffh
xde113:mov r6,#0cfh
movw ax,!!hwbuffer8
movw rp2,ax
movw ax,!!hwbuffer14
movw rp1,ax
movg whl,#hwbuffer4
call !!phwa11
br!!xddd6
xde13:setl !!hwbuffer3.0
movw ax,!!hwbuffer26
movw !!hwbuffer20,ax
movg tde,#hwbuffer 16
movg whl,#hwbuffer22
mov c,#04h
movbk [tde+],[whl+]
mov a,!!hwbuffer1
sub a,#06h
mov !!hwbuffer1,a
br!!xdcc2
xddd6:call !!phw3
call !!phw2
mov !!hwbuffer2,#0ffh
mov !!hwbuffer3,#0ffh
movw ax,!!hwbuffer14
movw !!hwbuffer8,ax
movw ax,!!hwbuffer26
movw !!hwbuffer14,ax
movg tde,#hwbuffer4
movg whl,#hwbuffcr37
mov c,#04h
movbk [tde+],[whl+]
movg tde,#hwbuffer10
movg whl,#hwbuffer37
mov c,#04h
movbk [tde+],[whl+]
mov !!hwbuffer1,#0eh
mov a,!!hwbu ffer38
cmp a,#xmax2
bnc $xddd61
mov a,!!hwbuffer40
cmp a,#ymax2
bnc $xddd61
br!!xdaa2
xddd61:clr1 !!hwbuffer2.7
br!!xdbb2
xde2:mov !!hwbuffer36,#00h
xde4:mov !!inget1,#01h
movg whl,#xd9
movg !!inget2,whl
call !!xtm6z
call !!phw3
br!!out
xd9:push psw
sel rb5
bfp0.6,$xde5
movg whl,#xd10
call !!pulp
call !!adonez;
br!!out
xde5:mov a,!!hwbuffer36
inc a
mov !!hwbuffer36,a
cmp a,#hwtm1
bnc $xde6
mov !!inget1,#01h
movg whl,#xd9
movg !!inget2,whl
call !!xtm6z
call !!phw3
br!!out
xde6:bf !!hwbuffer2.6,$xde61
xde62:mov r7,#0ffh
br!!xde63
xde61:
xde63:mov r6,#0fh
xd164:movw ax,!!hwbuffer8
movw rp2,ax
movw ax,!!hwbuffer20
movw rp1,ax
movg whl,#hwbuffer10;
call !!phwa11
call !!phw3
call !!phw2
mov !!oldlcdflag,#00h
mov !!hwbuffer1,#00h
mov !!hwbuffer2,#0ffh
xd163:mov!!hwbuffer3,#0ffh
br!!xdbb5
xlde4:br !!xde4
xd10:push psw
sel rb5
movw ax,!!lcdxyx
cmpw ax,#0ffffh
bz$xlde4
cmp a,#bdy0
bc$xd101
cmp a,#bdy2
bz$xd102
bnc $xd101
xd102:cmp x,#bdx0
bc$xd101
cmp x,#bdx2
bz$xd103
bnc $xd101
br!!xd103
xd101:cmp hwtm2,#0ffh;
bnz $xd1011
bf!!hwbuffer2.0,$xd1012
clr1 !!hwbuffer2.0
br!!xde2
xd1012:br !!xd14
xd1011:br !!xde2
xd103:setl !!hwbuffer2.0
movg whl,#hwbuffer26
movg inget1,whl
movgwhl,#lcdxyx
movg inget4,whl
movg whl,#hwbuffer37
movg inget7,whl
call !!aslz
mov a,!!hwbuffer38
cmp a,#xmax1
bnc $xd104
mov a,!!hwbuffer40
cmp a,#ymax1
hnc $xd104
br!!xdo2
xd104:mov a,!!hwbuffer38
cmp a,#xmax3
bnh $xd1041
br!!xde2
xd1041:mov a,!!hwbuffer40
cmp a,#ymax3
bnh $xd1031
br!!xde2
xd1031:mov a,!!hwbuffer1
add a,#06h
mov !!hwbuffer1,a
movw ax,!!lcdxyx
movw !!hwbuffer32,ax
movg tde,#hwbuffer28
movg whl,#hwbuffer37
mov c,#04h
movbk [tde+],[whl+]
call !!pdot
xde7:movg whl,#hwbuffer20
movg inget1,whl
movg whl,#hwbuffer32
movg inget4,whl
movg whl,#hwbuffer37
movg inget7,whl
call !!aslz
movg whl,#hwbuffer10
movg !!inget1,whl
movg whl,#hwbuffer37
movg !!inget4,whl
movg whl,#hwbuffer35
movg !!inget7,whl
call !!xvtcz
mov a,!!hwbuffer35
cmp a,#00h
bnz $xd10i1
xd10i8:setl!!hwbuffer3.0
movm ax,!!hwbuffer32
movw !!hwbuffer26,ax
movg tde,#hwbuffer22
movg whl,#hwbuffer37;
mov c,#04h
movbk [tde+],[whl+]
mov a,!!hwbuffer1
sub a,#06h
mov !!hwbuffer1,a
br!!xdcc4
xd10i1:cmp a,#01h
bz$xd10i7
cmp a,#0e8h
bnz $xd10i11
bt!!hwbuffer2.6,$xd10i8
bf!!hwbuffer2.5,$xd10i8
br!!xd10i3
xd10i11:cmp a,#0e3h
bnz $xd10i8
br!!xd10i3;
xd10i7:bf !!hwbuffer2.6,$xd10
i2
xd10i3:mov r7,#0ffh
br!!xd10i5;ldy020501
xd10i2:bf !!hwbuffer2.5,$xd10
i3
bf !!hwbuffer2.4,$xd10i3
bf !!hwbuffer3.3,$xd10i3
bf !!hwbuffer3.1,$xd10i4
bt !!hwbuffer3.2,$xd10i3
mov r7,#0ffh
br!!xd10i5
xd10i4:mov r7,#0ffh
xd10i5:mov r6,#0cfh
movw ax,!!hwbuffer8
movw rp2,ax
movw ax,!!hwbuffer20
movw rp1,ax
movg whl,#hwbuffer10
call !!phwa11
call!!phw3
call !!phw2
mov !!hwbuffer2,#0ffh
mov !!hwbuffer3,#0ffh
movw ax,!!hwbuffer20
movw !!hwbuffer8,ax
movw ax,!!hwbuffer32
movw !!hwbuffer14,ax
movg tde,#hwbuffer4
movg whl,#hwbuffer37
mov c,#04h
movbk [tde+],[whl+]
movg tde,#hwbuffer10
movg whl,#hwbuffer37
mov c,#04h
movbk [tde+],[whl+]
mov !!hwbuffer1,#0eh
mov a,!!hwbuffer38
cmp a,#xmax2
bnc $xd10i6
mov a,!!hwbuffer40
cmp a,#ymax2
bnc $xd10i6
br!!xdaa2
xd10i6:clrl!!hwbuffer2.7
br!!xdbb2
xd13:mov a,!!hwbuffer1
cmp a,#09h
bnc $xd131
movw ax,!!hwall
cmpw ax,#00h
bz $xd132
movg vvp,#00h
movw rp4,ax
movg tde,#hwall
addg tde,#02h
addg tde,vvp
decg tde
mov a,[tde]
cmp a,#0cfh
bz$xd133
and a,#3fh
add a,#40h
br!!xd132
xd133:mov a,#4fh
mov [tde],a
xd132:setl!!z_intflg1.0
mov !!handwend,#00h
call !!phw3
call !!phw2
br!!out
xd131:mov r7,#0ffh
mov r6,#4fh
movw ax,!!hwbuffer8
movw rp2,ax
movw ax,!!hwbuffer14
movw rp1,ax
movg whl,#hwbuffer4
call !!phwa11
xd1311:
mov !!hwbuffer1,#00h
mov !!hwbuffer2,#0ffh
mov !!hwbuffer3,#0ffh
br!!xd132
xd14:mov r7,#0ffh
moov r6,#4fh
movw ax,!!hwbuffer8
movw rp2,ax
movw ax,!!hwbuffer14
movw rp1,ax
movg whl,#hwbuffer10
call !!phwa11
mov !!oldlcdflag,#00h
br!!xd1311
out:pop psw
ret
pulp:movg tde,#lintprog
movg vvp,#00h
mov r8,#handwv
addg tde,vvp
mov a,[tde]
mov x,a
inc a
mov [tde],a
mov a,#03h
mulu x
movw rp4,ax
addg tde,#02h
addg tde,vvp
movg [tde],whl
ret
hwset:movg tde,#hwall
movw ax,[tde]
cmpw ax,#00h
bnz $ht2
br!!htout
ht2:movg vvp,#00h
movw rp4,ax
addg tde,#02h
addg tde,vvp
decg tde
mov a,r7
mov [tde],a
htout:
ret
phwa11:movg tde,#hwall
movw ax,[tde]
cmpw ax,#0200h
bnc $phwa112
movg vvp,#00h
movw rp4,ax
addw ax,#0ah
movw [tde],ax;
addg tde,#02h
addg tde,vvp
mov a,r7
mov [tde],a
incg tde
movw ax,rp2
movw [tde],ax
addg tde,#02h
movw ax,rp1
mov c,#04h
movbk [tde+],[whl+]
movw [tde],ax
addg tde,#02h
mov a,r6
mov [tde],a
ret
phwa112:ret
rhw2:movg tde,#lintsp
mov a,[tde]
movg vvp,#00h
mov r8,a
inc a
mov [tde],a
incg tde
addg tde,vvp
mov a,#handwv2
mov [tde],a
ret
pdot:movg tde,#lintsp
mov a,[tde]
movg vvp,#00h
mov r8,a
inc a
mov [tde],a
incg tde
addg tde,vvp
mov a,#dothpv
mov [tde],a
ret
hbde1:mov a,!!hwbuffer1
movg vvp,#00h
mov r8,a
sub a,#06h
mov !!hwbuffer1,a
movg whl,#hwbuffer2
addg vvp,whl
movg whl,tde
addg whl,#06h
subg vvp,whl
mov c,r8
movbk [tde+],[whl+]
ret
phw3:movg tde,#lintsp
mov a,[tde]
movg vvp,#00h
mov r8,a
inc a
mov [tde],a
incg tde
addg tde,vvp
mov a,#handwv3;
mov [tde],a ;
ret
END
10、TM6中断服务程序:
NAME xtm6n
PUBLIC xtm6z,inttm6
extrn inget1,tm6hpv,
tm6prog,lintprog,lintsp,
tm6flag
CSEG
xtm6z:push psw
sel rb3
push ax
push rp1
push tde
push vvp
push whl
call !!ptp
mov a,!!tm6flag
cmp a,#0ffh
bnz $out
mov !!tm6flag,#00h
mov cr60,#3ah
mov prm6,#07h
mov tmic6,#00h
mov tmc6,#80h
out:pop whl
pop vvp
pop tde
pop rp1
pop ax
pop psw
ret
intm6:sel rb7
push ax
push rp1
push rp2
push rp3
push whl
push vvp
push tde
push uup
movg whl,sp
addg whl,#14h
movg tde,#0ffaa0h
mov c,#04h
movbk [tde+],[whl+]
movg uup,#tm6prog
mov a,[uup]
cmp a,#00h
bnz $t8
br!!t2
t8:mov r7,a
mov r6,#00h
mov r5,#00h
incg uup
t7:mov a,[uup]
dec a
cmp a,#00h
bnz $t3
incg uup
movg whl,[uup]
call !!plp
decg uup
movg tde,uup
call !!del
mov r5,#0ffh;
call !!pls
br!!t4
t3:mov [uup],a
addg uup,#04h
dec r7
t4:cmpr7,#00h
bz$t5
br!!t7
t5:movg whl,#tm6prog
mov a,[whl]
sub a,r6
mov [whl],a
cmp r5,#0ffh
bz$t6
br!!tout
t6:movg uup,#tm6prog
mov a,[uup]
cmp a,#00h
bz$t2
br!!tout
t2:mov!!tm6flag,#0ffh
clr1 tmc6.7
set1 tmic6.6
tout:pop uup
pop tde
pop vvp
pop whl
pop rp3
pop rp2
pop rp1
pop ax
rcti
ptp:movg tde,#tm6prog
mov a,[tde]
mov x,a
inc a
mov [tde],a
mov a,#04h
mulu x
movg vvp,#00h
movw rp4,ax
incg tde
addg tde,vvp
mov c,#04h
movg whl,#inget1
movbk [tde+],[whl+]
ret
del:dec r7
cmp r7,#00h
bz$dout
mov a,r7;
mov x,#04h
mulu x
movg whl,tde
addg whl,#04h
mov c,x
cmp c,#00h
bz$dl
movbk [tde+],[whl+]
dl:cmp a,#00h
bz$dout
mov c,#0ffh
movbk [tde+],[whl+]
dec a
br!!dl
dout:inc r6
ret
plp:movg tde,#lintprog
movg vvp,#00h
mov a,#tm6hpv
mov r8,a
addg tde,vvp
mov a,[tde]
inc a ;
mov [tde],a
dec a
mov x,#03h
mulu x
movw rp4,ax
addg tde,vvp
addg tde,#02h;
movg vvp,whl
movg whl,[tde]
addg tde,#03h;
movg [tde],whl
movg whl,vvp
subg tde,#03h
movg [tde],whl
ret
pls:movg tde,#lintsp
movg vvp,#00h
mov a,[tde]
mov r8,a
inc a
mov [tde],a
incg tde
addg tde,vvp
mov a,[tde]
incg tde
mov [tde],a
decg tde
mov a,#tm6hpv
mov [tde],a
ret
END
11、TM8中断服务程序:
NAME xtm8n
PUBLIC xtm8z,inttm8
extrn inget1,tm8hpv
,tm8prog,lintprog,lintsp,tm8f
lag
CSEG
xtm8z:push psw
sel rb3
push ax
push rp1
push tde
push vvp
push whl
call !!ptp
mov a,!!tm8flag
cmp a,#0ffh
bnz $out
mov !!tm8flag,#00h
mov cr80,#80h
mov prm8,#07h
mov tmic8,#00h
mov tmc8,#80h
out:pop whl
pop vvp
pop tde
pop rp1
pop ax
pop psw
ret
inttm8:sel rb7
push ax
push rp1
push rp2
push rp3
push whl
push vvp
push tde
push uup
movg whl,sp
addg whl,#14h
movg tde,#0ffaa0h
mov c,#04h
movbk [tde+],[whl+]
movg uup,#tm8prog
mov a,[uup]
cmp a,#00h
bnz $t8
br!!t2
t8:mov r7,a
mov r6,#00h
mov r5,#00h
incg uup
t7:mova,[uup]
dec a
cmp a,#00h
bnz $t3
incg uup
movg whl,[uup]
call !!plp
decg uup
movg tde,uup
call !!del
mov r5,#0ffh
call !!pls
brt4
t3:mov[uup],a
addg uup,#04h
dec r7
t4:cmpr7,#00h
bz$t5
brt7
t5:movg whl,#tm8prog
mov a,[whl]
sub a,r6
mov [whl],a
cmp r5,#0ffh
bz$t6
brtout
t6:movg uup,#tm8prog
mov a,[uup]
cmp a,#00h
bz$t2
brtout
t2:mov !!tm8flag,#0ffh
clr1 tmc8.7
set1 tmic8.6
dout:pop uup
pop tde
pop vvp
pop whl
pop rp3
pop rp2
pop rp1
pop ax
reti
ptp:movg tde,#tm8prog
mov a,[tde]
mov x,a
inc a
mov [tde],a
mov a,#04h
mulu x
movg vvp,#00h
movw rp4,ax
incg tde
addg tde,vvp
mov c,#04h
movg whl,#inget1
movbk [tde+],[whl+]
ret
del:dec r7
cmp r7,#00h
bz$dout
mov a,r7
mov x,#04h
mulu x
movg whl,tde
addg whl,#04h
mov c,x
cmp c,#00h
bz$dl
movbk [tde+],[whl+]
dl:cmp a,#00h
bz$dout
mov c,#0ffh
movbk [tde+],[whl+]
dcc a
brdl
dout:inc r6
ret
plp:movg tde,#lintprog
movg vvp,#00h
mov a,#tm8hpv
mov r8,a
addg tde,vvp
mov a,[tde]
inc a
mov [tde],a
dec a
mov x,#03h
mulu x
movw rp4,ax
addg tde,vvp
addg tde,#02h;t
movg vvp,whl
movg whl,[tde]
addg tde,#03h;
movg [tde],whl
movg whl,vvp
subg tde,#03h;tde-3
movg [tde],whl
ret
pls:movg tde,#lintsp
movg vvp,#00h
mov a,[tde]
mov r8,a
inc a
mov [tde],a
incg tde
addg tde,vvp
mov a,[tde]
incg tde
mov [tde],a
decg tde
mov a,#tm8hpv
mov [tde],a
ret
END
12、矢量变化检测程序:
NAME xvtcn
PUBLIC xvtcz
extrn inget1,inget4,
inget7,xcon1,ycon1,xcon2
,ycon2
extrn xcon3,xcon4
,ycon3,ycon4,ycon6,ang30min
CSEG
xvtcz:push psw
sel rb3
movg whl,inget1
movg uup,inget4
mov a,[whl]
mov x,a
mov a,[uup]
cmp a,x
bz$xv1
addg whl,#02h
addg uup,#02h
mov a,[whl]
mov x,a
mov a,[uup]
cmp a,x
bnz $xv2
br!!xv3
xv2:mov a,#01h
mov [%inget7],a
br!!out
xv1:addg whl,#02h
addg uup,#02h
mov a,[whl]
mov x,a
mov a,[uup]
cmp a,x
bz$xv4
br!!xv5
xv4:decg whl
decg uup
mov a,[whl]
mov x,a
cmp x,#00h
bnz $xv42
mov a,[uup]
cmp a,x
bnz $xv42
xv43:mov a,#00h
mov [%inget7],a
br!!out
xv42:addg whl,#02h
addg uup,#02h
mov a,[whl]
mov x,a;
cmp x,#00h
bnz $xv41
mov a,[uup]
cmp a,x
bnz $xv4i
br!!xv43
xv41:movg whl,inget1
movg uup,inget4
mov a,[whl]
cmp a,#01
bz$xv44;
br!!xv45;
xv44:addg whl,#02h
mov a,[whl]
cmp a,#00h
bz$xv46
br!!xv47
xv46:incg whl
mov a,[whl]
cmp a,#00h
bnz $xv48
mov a,#01h
xv48:mov c,a ;
subg whl,#02h
addg uup,#03h
mov a,[whl]
mov x,a
mov a,[uup]
mulu x
divuw c
movw rp1,ax
subg uup,#02h
mov a,[uup]
mov x,a
mov a,#00h
cmpw ax,rp1
bnz $xv49
br!!xv43
xv49:bc $xv410
br!!xv411
xv410:movg whl,inget1
incg whl
mov a,[whl]
mov x,#xcon1
mulu x
movw rp1,ax
addg whl,#02h
mov a,[whl]
mov x,#ycon1
mulu x
cmpw ax,rp1
bnc $xv4101
movg uup,inget4
incg uup
mov a,[uup]
mov x,#xcon4
mulu x
movw rp1,ax
addg uup,#02h
mov a,[uup]
mov x,#11h
mulu x
cmpw rp,ax
bnc $xv4101
mov a,#01h
mov [%inget7],a
br!!out
xv4101:br !!xv43
xv411:movg whl,inget1
incg whl
mov a,[whl]
mov x,#ang30min;
mulu x
movw rp1,ax
addg whl,#02h
mov a,[whl]
mov x,#0ah
mulu x
cmpw ax,rp1
bc$xv4111
movg uup,inget4
incg uup
mov a,[uup]
mov x,#0ah
mulu x
movw rp1,ax
addg uup,#02h
mov a,[uup]
mov x,#ang30min
mulu x
cmpw ax,rp1
bnc $xv4111
mov a,#01h
mov [%inget7],a
br!!out
xv4111:br !!xv43
xv47:incg whl
mov a,[whl]
cmp a,#00h
bnz $xv471
mov a,#01h
xv471:mov c,a
subg whl,#02h
addg uup,#03h
mov a,[whl]
mov x,a
mov a,[uup]
mulu x
divuw c
movw rp1,ax
subg uup,#02h
mov a,[uup]
mov x,a
mov a,#00h
cmpw ax,rp1
bnz $xv472
br!!xv43
xv472:bc $xv473
br!!xv474
xv473:br !!xv410
xv474:movg whl,inget1
incg whl
mov a,[whl]
mov x,#ycon6
mulu x
movw rp1,ax
addg whl,#02h
mov a,[whl]
mov x,#0eh
mulu x
cmpw rp1,ax
bnc $xv475
movg uup,inget4
addg uup,#03h
mov a,[uup]
mov x,#0eh
mulu x
movw rp1,ax
subg uup,#02h
mov a,[uup]
mov x,#ycon6
mulu x
cmpw rp1,ax
bnc $xv475
mov a,#01h
mov [%inget7],a
br!!out
xv475:br !!xv43
xv45:addg whl,#02h
mov a,[whl]
cmp a,#00h
bz$xv451
br!!xv43
xv451:movg whl,inget1
addg whl,#03h
mov a,[whl]
cmp a,#00h
bnz $xv452
mov a,#01h
xv452:mov c,a
subg whl,#02h
movg uup,inget4
addg uup,#03h
mov a,[whl]
mov x,a
mov a,[uup]
mulu x
divuw c
movw rp1,ax
subg uup,#02h
mov a,[uup]
mov x,a
mov a,#00h
cmpw ax,rp1
bc$xv453
mov a,[whl]
mov x,#ang30min
mulu x
mov c,#08h
divuw c
movw rp1,ax
addg whl,#02h
mov a,[whl]
mov x,a
mov a,#00h
cmpw rp1,ax
bnc $xv454
mov a,[uup]
mov x,a
mov a,#00h
movw rp2,ax
addg uup,#02h
mov a,[uup]
mov x,#ang30min
mulu x
mov c,#0ch
divuw c
cmpw ax,rp2
bnc $xv454
mov a,#01h
mov [%inget7],a
br!!out
xv454:br !!xv43
xv14101:br!!xv4i01
xv453:movg whl,inget1
incg whl
mov a,[whl]
mov x,#18h
mulu x
movw rp1,ax
addg whl,#02h
mov a,[whl]
mov x,#ycon1
mulu x
cmpw ax,rp1
bnc $xv14101
movg uup,inget4
incg uup
mov a,[uup]
mov x,#xcon4
mulu x
movw rp1,ax
addg uup,#02h
mov a,[uup]
mov x,#07h
mulu x
cmpw rp1,ax
bnc $xv14101
mov a,#01h
mov [%inget7],a
br!!out
xv3:incg whl
incg uup
mov a,[whl]
mov x,a
mov a,[uup]
cmp a,x
bnc $xv31
mov r6,x
mov r4,a
subg whl,#02h
subg uup,#02h
mov a,[whl]
mov r7,a
mov a,[uup]
mov r5,a
br!!xv32
xv31:mov r6,a
mov r4,x
subg whl,#02h
subg uup,#02h
mov a,[uup]
mov r7,a
mov a,[whl]
mov r5,a
xv32:cmp r4,#00h
bnz $xv34
br!!xv33
xv131:br !!xv132
xv34:movg whl,inget1
mov a,[whl]
cmp a,#00h
bz$xv13a
movg whl,inget4
mov a,[whl]
cmp a,#00h
bnz $xv131
xv13a:mov a,r6
mulu r5
divuw r4
mov c,r7
mov b,#00h
addw ax,bc
mov c,#xcon2
muluw rp1
cmp x,#00h
bnz $xv33
mov a,#10h
mulu r6
cmpw ax,bc
bc$xv33
movg whl,inget1
addg whl,#02h
mov a,[whl]
cmp a,#00h
bnz $xv35
subg whl,#02h
mov a,[whl]
cmp a,#00h
bz$xv36
mov a,#0e2h
mov [%inget7],a
br!!out
xv36:mov a,#0f4h
mov [%inget7],a
br!!out
xv35:subg whl,#02h
mov a,[whl]
cmp a,#00h
bz$xv37
mov a,#0f2h
mov [%inget7],a
br!!out
xv37:mov a,#0e4h
movv [%inget7],a
br!!out
xv33:mov a,#01h
mov [%inget7],a
br!!out
xv132:mov a,r6
mulu r5
divuw r4
mov c,r7
mov b,#00h
addw ax,bc
mov c,#xcon2
muluw rp1
cmp x,#00h
bnz $xv33
mov a,#xcon2
mulu r6
cmpw ax,bc
bc$xv33
movg whl,inget1
addg whl,#02h
mov a,[whl]
cmp a,#00h
bnz $xv35
subg whl,#02h
mov a,[whl]
cmp a,#00h
bz$xv36
mov a,#0e2h
mov [%inget7],a
br!!out
xv5:decg whl
decg uup
mov a,[whl]
mov x,a
mov a,[uup]
cmp a,x
bnc $xv51
mov r7,x
mov r5,a
addg whl,#02h
addg uup,#02h
mov a,[whl]
mov r6,a
mov a,[uup]
mov r4,a
br!!xv52
xv51:mov r7,a
mov r5,x
addg whl,#02h
addg uup,#02h
mov a,[uup]
mov r6,a
mov a,[whl]
mov r4,a
xv52:cmp r5,#00h
bnz $xv54
br!!xv53
xv54:mov a,r7
mulu r4
divuw r5
mov c,r6
mov b,#00h
addw ax,bc
mov c,#ycon1
muluw rp1
cmp x,#00h
bnz $xv53
moov a,#ycon1
mulu r7
cmpw ax,bc
bc$xv53
movg whl,inget1
moov a,[whl]
cmp a,#00h
bnz $xv55
addg whl,#02h
mov a,[whl]
cmp a,#00h
bz$xv56
mov a,#0f1h
mov [%inget7],a
br!!out
xv56:mov a,#0e3h
mov [%inget7],a
br!!out
xv55:addg whl,#02h
mov a,[whl]
cmp a,#00h
bz$xv57
mov a,#0e1h
mov [%inget7],a
br!!out
xv57:mov a,#0f3h
mov [%inget7],a
br!!out
xv53:mov a,#01h
mov [%inget7],a
out:pop psw
ret
END
13、测矢量的运动趋势:
NAME xvtmn
PUBLIC xvtmz,xvtm2z
extrn inget1,inget4,inget7
CSEG
xvtmz:push psw
sel rb3
movg whl,inget1
movg uup,inget4
mov a,[whl]
mov x,a
mov a,[uup]
cmp a,x
bz$xv1
addg whl,#02h
addg uup,#02h
mov a,[whl]
mov x,a
mov a,[uup]
cmp a,x
bnz $xv2
br!!xv3
xv2:mov a,#03h
mov [%inget7],a
br!!out
xvl:addg whl,#02h
addg uup,#02h
mov a,[whl]
mov x,a
mov a,[uup]
cmp a,x
bz$xv4
br !!xv5
xv4:subg whl,#02h
mov a,[whl]
cmp a,x
bnz $xv41
incg whl
mov a,[whl]
mov x,a
incg uup
mov a,[uup]
mulu x
movw rp1,ax
addg whl,#02h
subg uup,#02h
mov a,[whl]
mov x,a
mov a,[uup]
mulu x
cmpw ax,rp1
bnz $xv42
xv44:mov a,#00h
mov [%inget7],a
br!!out
xv42:bnc $xv43
mov a,#02h
mov [%inget7],a
br!!out
xv43:mov a,#01h
mov [%inget7],a
br!!out
xv41:incg whl
mov a,[whl]
mov x,a
incg uup
mov a,[uup]
mulu x
movw rp1,ax
addg whl,#02h
subg uup,#02h
mov a,[whl]
mov x,a
mov a,[uup]
mulu x
cmpw ax,rp1
bnz $xv45
br!!xv44
xv45:bc $xv43
br!!xv42
xv3:cmp a,#00h
bnz $xv31
subg whl,#02h
mov a,[whl]
cmp a,#00h
bnz $xv32
xv33:mov a,#02h
mov [%inget7],a
br!!out
xv32:mov a,#01h
mov [%inget7],a
br!!out
xv31:subg whl,#02h
mov a,[whl]
cmp a,#00h
bnz $xv33
br!!xv32
xv5:subg whl,#02h
mov a,[whl]
cmp a,#00h
bnz $xv51
addg whl,#02h
mov a,[whl]
cmp a,#00h
bnz $xv52
xv53:
mov a,#01h
mov [%inget7],a
br!!out
xv52:mov a,#02h
mov [%inget7],a
br!!out
xv51:addg whl,#02h
mov a,[whl]
cmp a,#00h
bnz $xv53
br!!xv52
xvtm2z:push psw
sel rb3
movg whl,inget1
movg uup,inget4
mov a,[whl]
mov x,a
mov a,[uup]
cmp a,x
bnz $xvt1
br!!xv1
xvt1:addg whl,#02h
addg uup,#02h
mov a,[whl]
mov x,a
mov a,[uup]
cmp a,x
bnz $xvt2
br!!xv3
xvt2:incg whl
mov a,[whl]
cmp a,#00h
bnz $xvt3
mov a,#01h
xvt3:mov c,a
subg whl,#02h
incg uup
mov a,[whl]
moov x,a
mov a,[uup]
mulu x
divuw c
movw rp1,ax
subg uup,#02h
mov a,[uup]
mov x,a
mov a,#00h
movw rp2,ax
decg whl
mov a,[whl]
cmp a,#00h
bnz $xvt4
cmpw rp1,rp2
bnc $xvt5
xvt6:
mov a,#01h
mov [%inget7],a
br!!out
xvt5:mov a,#02h
mov [%inget7],a
br!!out
xvt4:cmpw rp1,rp2
bnc $xvt6
br!!xvt5
out:pop psw
ret
END
14、AD中断处理、P06端口中断
处理、TM7时间中断处理等程序
NAME zpubn
public readfend,readfinit,
writf,get_data,ztoabs,
disp_key,disp_one,
disp_addr,readlcd,rprsl,
prs1,prs0
public disp_word,ini_1,
ini_2,clrram,clear,disp_line,
get_datamn
public intp01,intp06,inttm2,
inttm7,intad,rprs2
extrn aqs2z,aqslz,indexallin,
lcd_lin,lcd_vol,lcd_data,
key_code,disp_code,z_syslflag
infindl,zf,hz
extrn sptemp,indexallout,
infind5,infind8,z_sysflag,
infind2,lcd_linmax,lcd_vol max
z_mtemp,z_offtemp
extrn
addrad,hzword,z_intflg1,
z_intflg4,z_actbtemp,z_ltcmp,
z_maddtcmp,infind6,z_offabs
extrn z_sys4flag,lintsp,
handwv,adonez,picbytes,
getdataaddr,lcdxy,z_intflg3,
lcdxyx,lcdxyy,x00,y00,xmax,
ymax
extrn luqd860z
cseg
intp06:sel rb6
clr1 z_intflg3.4
bt z_sys4flag.2,$handp06
intp060:
mov pic6,#01000011b
clr1 egp0.6
clr1 egn0.6
mov tmic7,#00000011b
mov tmc7,#10000000b
mov prm7,#00000111b
mov cr70,#7fh
set1 z_syslflag.1
clr1 z_syslflag.2
clr1 z_syslflag.3
clr1 z_syslflag.4
reti
handp06:
mov pic6,#01000011b
clr1 egp0.6
clr1 egn0.6
mov tmic7,#00000011b
mov tmc7,#10000000b
mov prm7,#00000111b
mov cr70,#3ah
reti
handtm7:
bf z_syslflag.4,$inttm70
bf p0.6,$torethand
call !!adonez
br!!toret
torethand:push vvp
movw !!lcdxy,#0ffffh
movg tde,#lintsp
movg vvp,#00h
mov a,[tde]
mov r8,a
inc a
mov [tde],a
incg tde
addg tde,vvp
mov a,[tde]
incg tde
mov [tde],a
decg tde
mov a,#handwv
mov [tde],a
mov tmic7,#01000011b
mov tmc7,#00000111b
pop vvp
pop tde
pop ax
reti
inttm7:sel rb7
push ax
push tde
bt z_sys4flag.2,$handtm7
set1 z_intflg3.2
inttm70:
bt z_syslflag.2,$multm1
mov a,p0
bf p0.6,$toerr
set1 pm0.4
clr1 pm0.4
clr1 p0.4
set1 pm0.6
clc1 pm9.4
set1 pm0.3
clr1 pm0.5
set1 p0.5
clr1p9.4
mov adic,#00000011b
mov adm,#10100000b
mov adis,#00000111b
movg tde,#0ffd57h
movg addrad,tde
setl z_syslflag.0
setl z_syslflag.2
toret:pop tde
pop ax
reti
toerr:set1 pm0.3
set1 pm0.5
set1 pm0.4
set1 pm0.6
set1 pm9.4
clr1 pm0.5
clr1 pm0.4
clr1 p0.4
clr1 p0.5
mov pic6,#0000001b
set1 egp0.6
clr1 egn0.6
mov tmic7,#01000011b
mov tmc7,#00000111b
setl z_sysl fiag.4
br!toret
multm1:bf p0.6,$nopress
press:br!toret
sectml:set1 z_syslflag.3
br!toret
nopress:
bf z_syslflag.3,$sectm1
set1 z_syslflag.4
mov tmic7,#01000011b
mov tmc7,#00000111b
mov pic6,#00000000b
set1 egp0.6
clr1 egn0.6
clr1 z_syslflag.2
clr1 z_syslflag.3
set1 pm0.3
clr1 pm0.5
clr1 pm0.4
set1 pm9.4
clr1 p0.4
clr1 p0.5
set1 pm0.6
br!toret
intad:sel rb6
push whl
push tde
push ax
mov a,adcr
mov adic,#01000011b
mov adm,#00100000b
bf
z_sys4flag2,$intap11
bf z_intflg3.1,$intap12
cmp a,#Ofch
bc $intap13
clr1 pm0.4
clr1 pm0.5
set1 p0.5
clr1 p0.4
set1 pm0.3
clr1 pm9.4
clr1 p9.4
set1z_syslflag.0
clr1 z_intflg3.1
set1 z_intflg3.2
mov adis,#00000111b
mov adic,#00000011b
nop
nop
nop
nop
nop
nop
mov adm,#10100000b
br !intadpret
intap13:
movw !!lcdxyx,#0ffffh
br !!adhand
intap12:bt
z_intflg3.2,$intap11
cmp a,#0fch
bc $intap13
br !!adhand
intap11:
bf z_syslflag.0,$intad6p
set1 p9.4
nop
nop
nop
nop
nop
set1 pm0.6
clr1 pm0.5
clr1 pm0.4
set1 p0.4
clr1 p0.5
set1 pm9.4
nop
nop
nop
nop
clr1 pm0.3
clr1 p0.3
clr1 z_syslflag.0
movg whl,addrad
bf z_intflg3.3,$changey
savey:mov [whl],a
mov !!lcdxyy,a
subg whl,#1
movg addrad,whl
mov adis,#00000110b
mov adic,#00000011b mov
adm,#10100000b
br !intadpret
changey:sub a,y00
mov x,#0ffh
mulu x
mov e,ymax
sub e,y00
divuw e
mov a,x
br $!savey
changex:sub a,x00
mov x,#0ffh
mulu x
mov e,xmax
sub e,x00
divuw e
mov a,x
br $!savex
intad6p:setl p9.4
movg whl,addrad
mov x,#0ffh
sub x,a
mov a,x
bf z_intflg3.3,$changex
savex: mov [whl],a
mov !!lcdxyx,a
clr1 adm 7
mov adic,#01000011b
set1 pm0.3
set1 pm0.6
clr1 pm0.5
clr1 pm0.4
clr1 p0.4
clr1 p0.5
set1 pm9.4
set1 z_intflg1.6
clr1 z_syslflag.1
bf
z_sys4flag.2,$intadpret2
clr1 pm0.3
clr1 p0.3
set1 z_syslflag.0
clr1 z_intflg3.1
clr1 z_intflg3.2
mov adis,#00000110b
mov adic,#00000011b
mov adm,#10100000b
br !!intadpret
intadpret2:set1 z_intflg4.7
br!!intadpret
adhand:push tde
movg whl,#lintsp
mov a,[whl]
add a,#1
mov [whl],a
movg tde,#0
mov e,a
addg whl,tde
mov a,#handwv
mov [whl],a
pop tde
mov tmic7,#01000011b mov
tmc7,#00000111b setl pm0.3
clr1 pm0.5
clr1 pm0.4
clr1 p0.5
clr1 p0.4
set1 pm0.6
set1 pm9.4
intadpret:pop ax
pop tde
pop whl
reti
END
15、主程序:
manu 52h;
manuheader1
manu 52h ffh;
#include″12.h″;
begin;define at 0ffd00h
back 41 flagy code
num1 data d 3 tempadd
todata 2(1 binum1 1
binum2)binum 1 errnum
4 bdataaddr 1 f5num
at 0ffe57h zsysflag zintflgl
zintflg2 1 1 zsys4flag
at 0ffe7ah tempcode
zsys2flag 2 1 user zsyslflag
at 0ffdb6h zsys5flag
at 0ffd56h xx yy
at 0fff0dh p130
at 0ff400h 2 hwall
at 0ffd5fh hwtm2
at 0ffdb7h hwtm2copy
at 0ff370h handdatal
at 0ffd20h 3 inter1
at 0ffaa0h resend
at 0ffab0h sendok
at 0ffac0h senddata
at 0ff828h num11 num12
at 0ff768h num10 num20
at 0fe008h 3 record
at 0fe007h send2;
fiagy=0;
let2(zsysflag(08h))=0;
start0:let2(flagy(40h))=0;
start:if zsys4flag(80h)=0h
elsegoto startin:
play
_to(0fe008h),_text(02h,07h,00
h,f1h,00h,f5h,00h,00h,00h,00h
);
num10=1,num20=1;
startin:clearscreena11;
displaycin(3,1)is 00dah;
displaycin(7,1)is lebfh lec0h
lec1h lec2h;
displayin(4,14)is 3ah;
play
_to(0ff820h),_text(1,1,1,1,1,
42h,1,1,1,1,1,1);
num11=hum10,num12=num20,tempa
dd=0ff820h+6,{tempadd}=num10,
tempadd=0ff820h+7,{tempadd}=n
um20;
refresh
_from(record),_para(0ff820h),
_mode(2),_back(back);
dispcur
_from(record),_para(0ff820h),
_mode(0),_back(back);
play
_to(senddata),_text(00h,ffh,c
ah,ffh);
d=1,todata=0ff890h+1,{todata}
=0;
ishand:if flagy(40h)=40h goto
start0;
hwall=0;
play
_to(0ff370h),_text(0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
,0);
let2(zsys4flag(04h))=04h;
let2(zintflg1(01))=0;
coor dinate;
waitnew_name(70),_line(t1);
t1;if zintflg1(01)=01goto
iskey;
ishand1:cmk8
_data($hwall),_back(back);
handbag;
goto tosend3;
ifhand:switch zsys5flag={1
ishand,3ishand,4ifishand};
goto ifkey;
ifishahd:if flagy(20h)=20h
goto ifkey;
goto ishand;
ifkey:keywait;
iskey:ad
_from(xx,yy),_to(tempcode),_m
anu(78h),_line(0ah);
if tempcode=0 goto ad2;
let2(flagy(80h))=0;
code=tempcode;
switch code={9fh esc,a3h
csncel,89h enter,83h left,84h
right};
if zsys5flag=3 goto ishand1;
goto ishand;
left:dispcur
_from(record),_para(0ff820h),
_mode(1),_back(back);
toleft:switch back={2 left3,3
right5,5right5};
goto ifhand;
left3:refresh
_from(record),_para(0ff820h),
_mode(3),_back(back);
dispcur
_from(record),_para(0ff820h),
_mode(0),_back(back);
goto ifhand;
right5:refresh
_from(record),_para(0ff820h),
_mode(1),_back(back);
dispcur
_from(record),_para(0ff820h),
_mode(0),_back(back);
goto ifhand;
right:dispcur
_from(record),_para(0ff820h),
_mode(2),_back(back);
goto toleft;
csncel:tempadd=0ff888h,{tempa
dd}=num11,tempadd=tempadd+1,{
tempadd}=num12;
delete
_from(record),_text(0ff888h),
_back(back);
refresh
_from(record),_para(0ff820h),
_mode(2),_back(back);
dispcur
_from(record),_para(0ff820h),
_mode(0),_back(back);
goto ifhand;
function:clearscreenall;
num1=1;
displaycin 1,1,is″自动刷新″
nextline 1″半自动刷新″;
displaycin 5,1,is″手动刷新″
nextline 1″速度设置″;
displayin(2,65)is
3ah,(4,81)is 3ah,(6,65)is
3ah,(8,65)is 3ah;
call funcset;
functionl:displayinflag 52h
flagl zsys5flag is e5h;
inputa:keywait;
ad
_from(xx,yy),_to(tempcode),_m
anu(78h),_line(0ah);
if tempcode=0 goto ad2a;
getkeyto
back,code,data,zsys5flag,num1
,1,4,1;
switch data={7 entera,8esca,1
movea};
goto inputa;
entera:goto funcret;
esca:goto funcret;
toinputa:let2(flagy(08h))=0;
goto inputa;
movea:clearscreenfrom
(2,70)to(2,77),(4,86)to(4,93)
,(6,70)to(6,77),(8,70)to(8,77
);
displayinflag 52h flag1
zsys5flag is e5h;
call funcset;
goto inputa;
flag1:dbcur
(2,70),(4,86),(6,70),(8,70);
ad2a:ad
_from(xx,yy),_to(data),_manu(
78h),_line(21h);
switch data={5 suba,6 adda};
zsys5flag=data;
goto movea;
suba:if flagy(08h)=08h
elsegoto inputa;
if hwtm2>=32h elaegoto inputa;
hwtm2=hwtm2-19h,hwtm2copy=hwt
m2;
goto dispa;
adda:if flagy(08h)=08h
elsegoto inputa;
if hwtm2<=elh elsegoto inputa;
hwtm2=hwtm2+19h,hwtm2copy=hwt
m2;
goto dispa;
funcret:goto start;
funcset:switch zsys5flag={1
set1,2set2,3set3,4set4};
return;
set1:hwtm2=hwtm2copy;
let2(flagy(20h))=0h;
return;
set2:hwtm2=hwtm2copy;
let2(flagy(20h))=20h;
return;
set3:hwtm2=ffh;
return;
set4:hwtm2=hwtm2copy;
displaycin(7,84)is lebfh move
16lec0h;
let2(flagy(08h))=08h;
num1=hwtm2/
19h-1,num1=num1+30h,code=8,da
ta=105;
displayin(code,data)is num1;
return;
dispa:num1=hwtm2/
19h-1,num1=num1+30h,code=8,da
ta=105;
displayin(code,data)is num1;
goto inputa;
tosend3:binum=hwall,tempadd=0
ffa00h,errnum=0;
if binum1=0 goto ishand;
sendl _from(#hwall);
goto wait3;
send:tempadd=0ffa00h,errnum=0
;
main2:sendl_from(#senddata);
wait3:if zintflg1(20h)=20h
elsegoto wait3;
resend21:download3
_to(tempadd),_back(dara);
waitnew_name(84),_line(t2);
t2:if data=0 elsegoto
toresend2;
todata=tempadd+4,data={todata
};
switch data={2 tomain2,3
ifhand,14h nodata};
goto nodata;
tomain2:clearscreenall;
displaycin(3,34)is″通讯错误″
00bch nextline 6″请按任意键返
回″;
keywait;
goto start;
toresend2:play
_to(resend),_text(09h,ffh,cah
,ffh,04h,57h,5bh,00h,ffh,ffh)
sendl_from(#resend);
wait5:if zintflg1(20h)=20h
elsegoto wait5;
goto resend21;
nodata:clearscreenfrom(3,17)t
o(4,64),(5,1)to(6,64);
displaycin(3,1)is 00dah″无数
据″;
goto ifhand;
sendret:goto ishand;
enter:if zsys4flag(80h)=80h
goto iscall;
ispcbj:goto tosend3;
iscall:return;
esc:return;
ad2:ad
_from(xx,yy),_to(num1),_manu(
78h),_line(20h);
revlcdfrom
_line(revlcd),_num(num1);
adwait:if zsyslflag(10h)=10h
elsegoto adwait;
revlcdfrom
_line(revlcd),_num(num1);
let2(flagy(80h))=00h;
switch num1={0bh funnction};
if zsys5flag=3 goto ishand1;
goto ishand;
revlcd:db
(3,17,4,32),(3,33,4,48),(3,49
,4,64),(5,1,6,16),(5,17,6,32)
,(5,33,6,48),(5,49,6,64),(7,1
,8,16),(7,17,8,32),(7,33,8,48
),(7,49,8,64),(0,0,0,0);
end;
Claims (8)
1.一种使通信终端实现手写笔迹信息交流的方法,其特征在于:用透光的触摸屏代替在现有的通信终端的显示器件正面与外部之间的透光的材料,由一个触摸屏控制器控制触摸屏,进行手写笔迹数据的采集,并生成笔划矢量数据,根据需要由触摸屏控制器或通信终端的主控制器完成手写过程的实时显示;由通信终端的主控制器将包含有笔划矢量数据的笔迹矢量数据与现有的语音或图像或文字或其它数据的信息进行编辑存贮;当需要将笔迹信息传送到其它通信终端时,在通信终端的主控制器的控制下将包含有笔迹矢量数据的数据经由该通信终端所遵从的现有的传送图像或声音或文字或其它数据的方法发送出去;当通信终端依其所遵从的现有的接收图像或声音或文字或其它数据的方法收到包含有笔迹矢量数据的数据后,以现有方式存贮该信息;在需要显示该数据所包含的笔迹信息时,依据每个笔迹矢量数据重新画出每个笔迹,并据需要放大和缩小各个笔迹。
2.如权利要求1所述的一种使通信终端实现手写笔迹信息交流的方法,其特征在于:所述的透光的触摸屏作为手写笔迹的传感器,包含了当笔在触摸屏表面移动时,对水平方向和垂直方向的移动分量敏感的材料。
3.如权利要求1所述的一种使通信终端实现手写笔迹信息交流的方法,其特征在于:所述的触摸屏控制器具有相应电路通过一定时序给触摸屏提供驱动信号来检测当笔在触摸屏表面移动时在水平方向和垂直方向的移动分量并得到相应的笔迹某点的水平方向和垂直方向的坐标分量;所述的触摸屏控制器分析笔迹运动的位移矢量,产生笔划矢量数据。
4.如权利要求3所述的一种使通信终端实现手写笔迹信息交流的方法,其特征在于:当所述的触摸屏为电阻式透光触摸屏时,所述的触摸屏控制器至少包含有两路模拟到数字转换电路(A/D电路);具有当每次笔开始书写时产生中断的机制;至少具有4个引脚用于分别单独控制所控制的触摸屏的水平和垂直方向的一个引脚;当笔正在触摸屏上书写时,所述的触摸屏控制器采集任一点坐标的时序中至少包含有两次这样的流程:在时刻1,触摸屏控制器将触摸屏的方向1(水平方向或垂直方向)的某一引脚1接固定的已知的高电平,该方向1的另一引脚2接同样的固定的已知的高电平或接高阻抗;触摸屏控制器将触摸屏方向2(非方向1的方向)的两个引脚接高阻抗;在时刻2,触摸屏控制器通过模拟到数字的转换检测触摸屏方向2的一个引脚3的电平;在时刻3,触摸屏控制器取得引脚3经模拟到数字的转换完成后的电平所对应的数值;在时刻4,判断引脚3的电平所对应的数值是否为这时水平方向和垂直方向完全导通所对应的引脚3应有的值;如果条件满足则:如果本点坐标还未采集完则继续采集,如果本点坐标已采集完则采集的坐标值有效;如果条件不满足则:本次采集该点坐标的值无效;须等待预设的一段时间间隔后重新采集。
5.如权利要求1所述的一种使通信终端实现手写笔迹信息交流的方法,其特征在于:所述的笔划矢量数据的生成方法是当触摸屏控制器采集得笔迹的先后的两点坐标时,先存起来,并将第二点坐标存为最后坐标;当采集得第三点坐标后,计算第一点坐标与第三点坐标构成的位移矢量1和第一点坐标与最后坐标构成的位移矢量2;判断是否满足条件1:矢量1与矢量2的方向夹角小于预设的范围且矢量1的长度不小于矢量2的长度;如果满足该条件1则第三点坐标存为最后坐标,等过预设的一段时间后再继续采集新的一点坐标作为第三点坐标;如果不满足该条件1则过一段时间后采集第四点坐标,得到第四点坐标后,计算第一点坐标与第四点坐标构成的位移矢量3;判断是否满足条件2:矢量3与矢量1的方向夹角小于预设的范围且矢量1的长度不小于矢量3的长度;如果满足条件2则舍去第三点坐标将第四点坐标存为最后坐标,过预设的一段时间后再重新采集新的一点坐标作为第三点坐标;如果不满足条件2则将第一点坐标和最后坐标构成的矢量作为已生成的一个笔划的矢量数据,将第三点坐标作为新的一个笔划的第一点坐标,将第四点坐标作为新的一个笔划的第二点坐标和最后坐标;如果采集到触摸屏水平方向与垂直方向不接触,则统计连续的不接触时间,如果该时间超过设定的间隔则将第一点坐标和最后坐标构成的矢量作为已生成的一个笔划的矢量,并设一个标志表示下一个采到的坐标为第一点坐标,如果连续的不接触时间大于另一设定的间隔则说明本次书写结束,重复上述过程可实现将一次书写过程的每个笔划的矢量数据采集得到。
6.如权利要求1所述的一种使通信终端实现手写笔迹信息交流的方法,其特征在于:所述的笔划矢量数据至少包含了该笔划的起点坐标和终点坐标。
7.如权利要求1所述的一种使通信终端实现手写笔迹信息交流的方法,其特征在于:所述的每个笔迹矢量数据包含有表示一次书写的笔迹的数据长度或笔划个数的数据段,包含有本次书写的每个笔划的笔划矢量数据;当所述的笔迹矢量数据以同一个数据段位置来表示前后两个笔划共用一点坐标时,则还包含有若干数据段用于表示每个后面的笔划是否与前面的笔划共用同一点坐标;当所述的笔迹矢量数据与现有的其它方式输入的现有的文字编码相混合时则所说的笔迹矢量数据至少包含有一个数据段用于表示这是新的特殊的文字码,以便依次读取这种混合的数据时区分现有的文字编码还是新的完整的笔迹矢量数据;当所述的笔迹矢量数据与现有的图像或声音或其它格式的数据相混合以便发送给其它通信终端,或者以现有的发送数据的方法发送笔迹矢量数据时,所述的每个笔迹矢量数据至少包含有一个数据段用于与现有的其它数据结构相区别。
8.如权利要求1所述的一种使通信终端实现手写笔迹信息交流的方法,其特征在于:依次读取每个笔迹矢量数据所包含的每个笔划矢量数据,依据每个笔划矢量数据的起点和终点坐标,在要显示的位置上依据需显示的大小与整个笔迹的原大小或原边界的对应关系,计算出该笔划的起点和终点所对应的位置,并在该起点和终点所对应的位置间画一直线,将每个笔迹矢量数据所包含的每个笔划矢量数据依次按同样的方法画出直到全部画完为止。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB031227309A CN100380907C (zh) | 2003-04-18 | 2003-04-18 | 一种使通信终端实现手写笔迹信息交流的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB031227309A CN100380907C (zh) | 2003-04-18 | 2003-04-18 | 一种使通信终端实现手写笔迹信息交流的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1538722A CN1538722A (zh) | 2004-10-20 |
CN100380907C true CN100380907C (zh) | 2008-04-09 |
Family
ID=34321071
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB031227309A Expired - Fee Related CN100380907C (zh) | 2003-04-18 | 2003-04-18 | 一种使通信终端实现手写笔迹信息交流的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100380907C (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101396974B1 (ko) | 2007-07-23 | 2014-05-20 | 엘지전자 주식회사 | 휴대 단말기 및 휴대 단말기에서의 호 신호 처리방법 |
CN101533469A (zh) * | 2009-04-27 | 2009-09-16 | 萧如宣 | 一种触控面板系统及其运作方法 |
CN102081505A (zh) * | 2011-01-28 | 2011-06-01 | 广东九联科技股份有限公司 | 触摸屏的手写输入处理方法 |
CN102761495B (zh) * | 2011-04-29 | 2015-12-16 | 北京壹人壹本信息科技有限公司 | 一种基于手写原笔迹的即时通信方法、通信终端和系统 |
CN102566812B (zh) * | 2011-09-30 | 2015-02-18 | 北京壹人壹本信息科技有限公司 | 一种手写记事本的实现方法及装置 |
CN102929534A (zh) * | 2011-09-30 | 2013-02-13 | 北京大学深圳研究生院 | 一种盲写信息输入系统和方法 |
CN102663667B (zh) * | 2012-03-28 | 2014-12-24 | 华为技术有限公司 | 触摸屏手写内容的存储方法、展示方法和终端设备 |
CN102902475B (zh) * | 2012-08-15 | 2015-09-16 | 中国联合网络通信集团有限公司 | 数值输入方法及装置 |
JP2014067148A (ja) * | 2012-09-25 | 2014-04-17 | Toshiba Corp | 手書き文書処理装置、方法およびプログラム |
CN102937848B (zh) * | 2012-12-04 | 2015-07-22 | 上海合合信息科技发展有限公司 | 对手写笔迹进行编辑处理的方法及电子设备 |
KR102286589B1 (ko) * | 2014-10-17 | 2021-08-05 | 주식회사 네오랩컨버전스 | 전자펜 |
CN104932814A (zh) * | 2015-04-29 | 2015-09-23 | 萌宝信息技术(上海)有限公司 | 数据传输方法、系统及电子终端 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1191441A (zh) * | 1998-01-15 | 1998-08-26 | 张伟东 | 笔绘画式输入的电话传真机 |
CN1250902A (zh) * | 1998-08-13 | 2000-04-19 | 摩托罗拉公司 | 同时显示文本字符和再现墨迹的触摸屏设备和方法 |
CN1346200A (zh) * | 2000-09-27 | 2002-04-24 | 北京汉王科技有限公司 | 智能网络电话 |
WO2002058376A1 (en) * | 2000-12-21 | 2002-07-25 | I-Com Systems Co., Ltd. | Method of synchronizing multiple communication terminal apparatus having the graphic functions |
US20030063067A1 (en) * | 2001-10-02 | 2003-04-03 | Ping-Yang Chuang | Real-time handwritten communication system |
-
2003
- 2003-04-18 CN CNB031227309A patent/CN100380907C/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1191441A (zh) * | 1998-01-15 | 1998-08-26 | 张伟东 | 笔绘画式输入的电话传真机 |
CN1250902A (zh) * | 1998-08-13 | 2000-04-19 | 摩托罗拉公司 | 同时显示文本字符和再现墨迹的触摸屏设备和方法 |
CN1346200A (zh) * | 2000-09-27 | 2002-04-24 | 北京汉王科技有限公司 | 智能网络电话 |
WO2002058376A1 (en) * | 2000-12-21 | 2002-07-25 | I-Com Systems Co., Ltd. | Method of synchronizing multiple communication terminal apparatus having the graphic functions |
US20030063067A1 (en) * | 2001-10-02 | 2003-04-03 | Ping-Yang Chuang | Real-time handwritten communication system |
Non-Patent Citations (1)
Title |
---|
触摸屏技术及应用. 杨邦朝,张治安.电子世界,第2期. 2003 * |
Also Published As
Publication number | Publication date |
---|---|
CN1538722A (zh) | 2004-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100380907C (zh) | 一种使通信终端实现手写笔迹信息交流的方法 | |
CN105808056B (zh) | 一种基于二维码的媒体互动方法和系统 | |
CN101449255B (zh) | 用于更新缓冲器的方法和系统 | |
CN103440116B (zh) | 一种交互式电子演示系统 | |
CN1613045B (zh) | 基于无线人机交互设备的个人电脑系统及其数据传输方法 | |
CN109510990A (zh) | 图像处理方法及装置、计算机可读存储介质、电子设备 | |
CN102681658A (zh) | 通过动作控制的显示设备及其动作控制方法 | |
CN103139627A (zh) | 智能电视及其手势控制方法 | |
CN101452356A (zh) | 输入装置、显示装置、输入方法、显示方法及程序 | |
CN102637071A (zh) | 应用于多媒体输入设备的多媒体输入方法 | |
CN102109971A (zh) | 可无线传输标绘信息的幻灯演示系统 | |
CN101504791A (zh) | 一种多功能智能终端的遥控装置 | |
CN104951263A (zh) | 避免向显示器发送未改变的区域 | |
CN208985138U (zh) | 同屏显示的电子装置、计算机设备以及数据处理系统 | |
CN202120198U (zh) | 一种移动触控系统 | |
CN111835621A (zh) | 会话消息处理方法、装置、计算机设备及可读存储介质 | |
CN203552237U (zh) | 一种交互式电子演示系统 | |
CN103616963A (zh) | 一种利用智能手机触控技术实现鼠标功能的系统 | |
WO2012018219A2 (ko) | 비가독부를 구비한 이동단말기 | |
CN111475399A (zh) | 虚拟测试方法及装置 | |
CN111241815A (zh) | 文本增量方法、装置及终端设备 | |
CN102375653A (zh) | 一种滑动输入方法及装置 | |
CN110162284A (zh) | 一种操控接口装置及其操控系统 | |
WO2012105792A2 (ko) | 관심분야 예측정보에 기초한 배경화면을 이용한 문자메시지 전송서비스 제공시스템 및 그 제공방법 | |
CN115705231B (zh) | 屏幕显示方法和终端设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C57 | Notification of unclear or unknown address | ||
DD01 | Delivery of document by public notice |
Addressee: Zhang Lanman Document name: Notification of Termination of Patent Right |
|
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080409 |