自行车比赛训练器械的利记博彩app

文档序号:4914478阅读:2125来源:国知局
专利名称:自行车比赛训练器械的利记博彩app
本申请是同一些发明人提出的、于1987年5月26日申请的序号为054,749的申请的部分延续申请。这个专利文献的部分公开内容包含有受版权保护的材料。版权所有者并不反对专利商标局专利申请或记录中的专利文献或专利公开中的任何内容被影印复制,然而,除此之外,保留了所有版权,不容对版权的侵犯。
本发明总的涉及一种和负荷调节装置、显示装置和心脏监控装置一起使用的自行车型固定训练器械。本发明特别是一种和多速自行车一起使用的器械,尤其适用于自行车比赛的训练。
许多现代的体育馆和运动俱乐部都有固定的自行车型训练器械,人们蹬踏模拟的自行车作为一种锻炼方式。一般,自行车脚蹬连接一摩擦装置或其他负荷,骑模拟自行车的人可自行调节阻力大小。这种类型的固定自行车的典型例子可参见美国专利4,358,105(“生命之车”)和4613129。
还有一些训练器械可以把传统的自行车固定在一支撑自行车的装置上以使自行车的后轮克服一摩擦负荷而转动。这些类型的器械一般可以分为几类,其中第一类是将自行车的前轴和底托架与一机架相连,以支撑自行车。后轮驱动一辊子旋转,而辊子则与一载荷机构相连。这种器械的一个实例,可以参见Brown的美国专利4441705,其中后轮驱动的是一飞轮和一可变阻力的负荷。
使用传统的自行车的第二类型装置把后轮支撑在一对辊子上,或者用一固定支撑支起后轴。例如,在Sackl的美国专利4596386中,连接至后轴并在离一对辊子一固定距离处支起后轴。Bisberg的美国专利3903613中,支起的是前轮,而后轮则落在一对辊子上。
上述几种类型的每类装置在用作一运动器械以及一自行车比赛的训练器械时均有许多缺点。如象“生命之车”这样的固定模拟自行车,并不具备一种能模拟就象骑在一辆真正的自行车上时所获得的那种脚蹬阻力的真实感,它们不能充分模拟出惯性、风阻力、地形变化和滚动阻力。另外,这类固定自行车不能真实地模拟出骑自行车时人体的位置或骑自行车的感觉,这并不厅怪,因为那里连普通的自行车车架都没有用。
采用一底托架支撑的装置可采用一真实的自行车车架,但不能提供一有真实感的阻力和骑车的模拟。这类设备通常只有一与后轮接触的辊子。
利用一只辊子或多只辊子支撑后轮的这类装置有稳定性和打滑问题。如果辊子位于后轴的后方,辊子就必须较长,因为轮子总是企图“脱离”辊子要摇晃和朝侧向摆动。如辊子位于轴的前面,轮子虽然会保持在中心位置,但是,在后轮上产生最大转矩期间不能保持充分的接触。在这两种情况下,如施加一逼真的阻力,后轮胎就在辊子上打滑。
例如,在一些骑车周期中,自行车骑车人不在其座子上,而是伏在车把上且基本上站立在脚蹬上。当骑车人的体重前移,加于后轮上的力就小了,而加于前轮上的重量增加,就引起后轮的打滑。另外,在这样的位置,当自行车支撑在底托架上面时,自行车就围着底托架旋转,把后轮有效地脱离与支撑辊子或几个支撑辊子的接触。这样,正当需要最大阻力来克服在后轮上的打滑时,后轮却以最小的摩擦力与阻力辊子接触因此就产生打滑。
后轮可预加负荷以克服支撑辊子,但是,该预加负载装置恰恰约束后轮,从而破坏了骑车的真实感,也破坏了当骑车人坐在鞍子或自行车座上并以低速蹬车时模拟阻力的真实感。此外,底托架固定车架显得过于刚性,所以破坏了如在真实生活中骑车时的那种真实感,即车架在轮子上是有所绕曲的。
在后轮上采用一对支撑辊子的这类装置不仅显得苯重,而且在两个辊子上需要有复杂的阻力机构以实现对后轮转动的合适的阻力。此外,它们不能模拟出真实骑车时的感觉,而且,如果前轮也支撑在一辊子上,如Cassini等人的专利4580983所述,那么就要求不同的平衡和训练,以便能在骑车时保持直立。例如,如将前叉固定或支撑住,在后轮上放两只辊子,那么虽然前轮是稳定的,后轮却摇晃和移动。而在真实生活中,后轮是稳定而前轮则是摇晃或移动的。当骑车人离开车座,伏在车把上在脚蹬上施上了最大作用力时,使用两只辊子仍不能克服打滑。骑车人体重的偏移还会引起后轮与辊子之间的打滑。
这就要求一种装置,它能提供一种骑在自行车上的真实感和一具有真实感的阻力,特别是当骑车人站立在脚蹬上骑车以获得最大动力时,要不发生打滑。另外,要求这种装置便于携带,尤其是一种能使用个人自已的自行车而又能提供训练目的所需的最大真实感的装置。
本发明的另一构思是真实地模拟骑自行车时的感觉和骑自行车时所受到的负荷阻力。负荷变量包括不管是上山或下山时的风阻力、骑车人和自行车的惯性、自行车本身固有的摩擦和自行车轮胎与骑行路面之间的摩擦阻力。
以前旨在精确重现这些负荷作用的企图均有它们的缺点。例如,以前的装置曾利用与自行车轮的旋转速度机械耦合的旋转的风扇叶片,模拟风阻力的作用。虽然旋转的风扇叶片具有一随风扇叶片旋转速度的平方增加的力,但这些风扇噪音大,也不精确,不易调节,而且不能根据不同身高和体重的骑车人所引起的风阻力的变化来进行调节。
类似的,以前的装置企图由一机械的或电子制动系统来模拟所施加的负荷量。典型的机械制动器包括一摩擦皮带,该皮带绕在一运动表面上以造成一作用于那个旋转表面上的摩擦阻力,该阻力决定于皮带的力。但是,这些机械系统不能精确校正(定标),响应时间慢,另外,由于该机械系统的诸零部件时间久了会失调和对准失常,负荷会发生变化。因此,机械系统的重现性较差,阻力变化较大,难以或不能精确校正(标定)到一给定负荷。
电子制动系统具有超过机械系统的优点,但是,模拟骑车的精度取决于一些因素,包括该系统是如何精确校正(定标)的,以及电子制动系统赖以变化的程序的真实性。模拟精确性的变化的一个例子是风阻力。风扇叶片可以模拟一随自行车轮的速度而变化的负荷,但是,它不能模拟随骑车人的身高和体重而变化的负荷阻,或有能模拟发生在一伙其他自行车骑车人的前方或在他们的中间处发生的风负荷的变化。这样,就要求对负荷变化的较真实的模拟,尤其是风负荷变化的较真实的模拟。
电子的和机械制动系统只有当它们被精确校正以及当这种校正保持于负荷模拟的始终时才是有效的。以前,电子系统有几种校正方法,包括使用应变仪,这种仪器精确但较昂贵,使用起来也较麻烦。有一些电子和机械系统利用如一发电机的装置以测量系统功率输出,为了校正系统,然后假设一恒定的系统效率和摩擦力。这种校正系统不能精确地预测出系统中的摩擦损耗或任何施加于自行车和骑车人上的摩擦或负荷的变化。这类校正系统也没有绝对的基准,因此,难以在多变条件下预测性能。
最后一个校正方法是选择一绝对基准,测出相对于该基准的系统变化。这类方法要求初始基准是经精确确定的,要求在实际生活中在不同的负荷条件下该基准保持不变,以及该基准能精确监测和校正系统性能的各种状况。这类系统的一个例子是一电子制动器,它假设一特定电压的变化会引起一已知的负荷变化。使用这一具体的例子的缺陷是电压和负荷的关系难以预测,在各种温度和长时间内也难以保持这种关系,在所加的电压和骑车人在骑一真实的自行车的所期望体验的负荷之间也没有恒定的精确的相关性。
因此,要求一种校正训练系统的实际的方法。要有一种实际的方法,用以改变训练系统中的负荷,以便更精确模拟一自行车骑车人经受到的真实的负荷。
本发明还有另一构思是模拟真实负荷情况的能力。美国专利4441705利用与一自行车轮相连接的风扇以模拟风负荷,而Melton的专利4542897揭示了一模拟的以一预定速度行进的竟赛者。但是,在已有技术中从没有公开过按照竟赛者相对于一个或多个模拟的骑车人的位置来改变风力的技术。因此,要求有一装置,它能模拟出由于一在装置上练习的人相对于一模拟的骑车人的位置的改变而改变风阻力的比赛情况。
本发明还有另一构思是涉及到在训练中的骑车人的心律,它是随练习的进展而不断加快的。为了从训练中获取最大的好处,必须在一段时间内的心律不超过某一范围。但是如心率太快,就不会有什么好处而会损害骑车人。
在Delick的美国专利3767195所示的装置,当心律达到了上限值时,有一肉眼可见的显示器以其闪烁的信号指示心律已到上限值。此时,由骑车人确定应如何减少自己的运动量以降低心律。
因此,要求有一装置,它能监测骑车人的心律,调节所加上的负荷以保持一定的心律值,或防止超过最大心律极限值。希望的是,如果骑车人不清楚这方面情况,要让该装置能提供一最佳的心律。
总的说来,本发明提供一种器械,它支撑起一后轮和自行车的轮胎,当骑车人的体重前移时,能使自行车后轮胎与一辊子保持摩擦接触,以防止打滑。辊子是可旋转地装在一基本平行于一与该器械相连接的自行车的后轴的第一轴上。后轮胎被约束以一预定方式向辊子移动。最好是,自行车的后轴利用一轴夹被支撑在一车轴的相对的两端上,轴夹是可调地置于一后轴支撑件上。该支撑件约束后轴沿一伸向辊子的预定路线移动。最可取的是一弧形路线。
最好是,后轴支撑装置包括一对构件,每个构件的一端绕着一基本平行于后轮和轮胎的旋转轴线的枢轴转动。这枢轴最好装于自行车的后轴的水平向相对的一侧,即辊子的旋转轴。后轴夹是可调地安装的,可以装上不同规格的自行车。
一可变负荷装置诸如一电动机,最好是一交流发电机,以及一惯性装置如飞轮和辊子相接,最好是装在一共用轴上。加在辊子上的可变负荷和愦性负荷通过与后轮胎的摩擦接触传到自行车和它的骑车人上,以模拟自行车实际骑行时经受到的动量和负荷。这种负荷包括风阻力、地形变化、滚动阻力和自行车、骑车人的惯性。
尽管辊子和支撑件能单独用来支撑自行车,最好是利用一叉固定托架将自行车的前叉装至一前叉支撑管上。最好是,前叉支撑管具有真实的挠性,以模拟真实的骑车情况。叉固定托架是可调节地安装的,以适应不同规格的自行车。固定托架能弯曲,以模拟前叉和前轮弯曲的真实情况。调节固定托架相对于前叉的位置后,可使相连的自行车车架的高度有所改变,即从水平方向稍向上倾斜。
最好是,前叉支撑管与同一个用于支撑辊子和后轴支撑机构的构件相连接。这样,骑车人的体重偏离座子蚯安媸苯嵩斐汕安嬷 撑管弯曲,使后轴支撑机构朝着辊子转动后轮胎,以防止辊子与后轮胎之间的打滑。
前叉支撑管还支撑一显示器,它和辊子及交流发电机电气相连,这样,自行车速度的数据就可显示给骑车人看。
于是,有利地提供了一支撑自行车的装置,它能模拟出在自行车上的真实骑行情况,而同时在脚蹬上施加最大作用力期间能防止自行车后轮打滑,真实的骑车情况包括加载到后轮胎的感觉以及自行车的挠性。
训练器械能折叠为一便于携带和存放的小型可携式外形。前叉支撑管含有几个铰链(活动关节),借此可将管子折起来挨近器械的其余部分。一可卸的铰链邻接显示器,第二个可卸的铰链位于叉管固定托架的上方,它们可使显示器折合到前叉支撑管上。在前叉支撑管的底部的铰链可使管子随同显示器和它的支撑件一起折叠到邻近辊子的位置上。后轴支撑件绕着转动的枢轴安装得使后轴支撑件能折叠到一与辊子邻近的位置上。在车架端部,邻近重飞轮和交流发电机的地方装有轮子,使折成便携式的装置易于搬动。因此,提供了一铰接装置,通过这种装置,可将器械折叠成一相互紧靠的小的外形,比起操作状态下的器械更易携带。
该器械最好能精确地校正(定标)以精确地产生所需的负荷。达到此目的的一个方法是测定和补偿当自行车固定到该器械上后器械中的摩擦损耗。这样的校正序列的步骤包括转动训练装置上的轮子直至轮子达到一第一预定转速;然后使轮子惯性旋转降速到一第二预定转速,在此降速阶段中,除了固有的摩擦负荷外,加载装置不对轮子加负荷;随着轮子从第一转速降到第二转速,探测并记下这段时间间隔和转速;测定随轮子旋转而转动的训练装置的任一组件的旋转质量惯性矩;对记录到的转速和时间作一线性回归分析,以确定作为转速的函数的轮子和旋转组件的减速度;根据公式摩擦转矩=质量惯性矩×角减速度,从训练装置的轮子和旋转的组件的旋转得出摩擦负荷;再一个步骤包括根据公式功率=质量惯性矩×角速度计算克服摩擦负荷所需的功率。
用来补偿加载装置(最好是交流发电机)效率降低的步骤包括测定加载装置的效率;通过将加载装置的效率与一已知功率输出的第二个加载装置的对比,确定该加载装置的功率输出;调节加载装置以考虑其摩擦损耗和效率。最好是,作一线性回归分析以确定在一预定速度时加载装置消耗掉的功率以及作一回归分析以确定加载装置加到轮子上的功率来确定效率。
当加载装置包括一对轮子施加一负荷的电装置,施加的负荷能随加于装置上的电压的变化而变化,那么,确定消耗的功率的步骤包括转动轮子,直至轮子达到至少一第三预定转速;再使轮子减速至一第四预定转速;从电装置施加一恒定的减速作用力,以使轮子进一步减速,从第三转速减速至第四转速;当轮子从第三转速减速至第四转速时,探测和记录下周期性时间间隔内的轮子的旋转速度和电装置的电压输出值;对从第三转速惯性下降到第四转速时记录到的轮速和电压的平方进行一线性回归分析,以确定作为转速的函数的轮子和旋转组件的减速度;其中加载装置的功率输出由下列步骤确定,即对速度和从第三转速惯性下降到第四速度的速度和时间的乘积进行线性回归分析,以得到用于确定所加的功率的线性回归常数。
当校正(定标)步骤是由上述训练器械进行时,上述器械还进一步包括可变负载加载装置,它和辊子相连,以将可变负荷施加于辊子上从而模拟自行车实际骑行中所遇到的负荷的变化;和校正装置,该装置用于确定阻止轮子转动的摩擦力,从而使可变负载加载装置能补偿该摩擦力。最好是,该校正装置还包括用以确定可变负载加载装置的效率,从而使加载装置能补偿加载装置的效率的降低。
考虑了器械中的摩擦力和加载装置的效率的降低后,就能施加一较精确的负荷,以获得一较真实的骑车情况的模拟。
本发明的另一特征是具有一装置和方法,它能控制在训练器械上锻炼者的心律。该心律控制装置采用一低心律装置的形式,当骑车人的心律低于一预定的较低的限值时该装置就运行,以提高骑车人的心律。该低心律装置可确定出由可变负载加载装置所加的负荷是否刚刚提高,以及如果是这样的话,是否心律已提高了一预定时间。如果负荷低于一预定的最大值,低心律装置就使可变负荷装置提高负荷。
当骑车人的心律超出上限值之上一个预定值时,一个高心律停车装置就能大大降低可变负荷装置所施加的负荷。还有一个高心律装置,当骑车人的心律超出上限值一预定值时,该装置就能运行以降低心律。该高心律装置可确定出由可变负荷装置所加的负荷是否刚刚提高,以及如果负荷已提高了一预定时间,那么,高心律装置就会使可变负荷装置提高负荷。如果负荷并非刚刚降低,以及如负荷并不低于一预定值时,则低心律装置就降低可变负荷装置所施加的负荷。
还设有一个监控锻炼者的心律并将心律传到高和低心律装置和高心律停车装置上的装置。一显示屏幕将关于负荷和心律的信息显示给操作者。如锻炼者不知道合理的限值范围来限制负载装置,他可以输入他的年令和性别,由计算机来确定该限值范围。
控制锻炼者心律的方法的步骤包括在一训练装置上锻炼以提高锻炼者的心律;改变训练装置加于锻炼者的负荷以改变锻炼者的心律;探测出锻炼者在锻练中的心律;当锻炼者的心律低于一第一预定值时,增加一预定量的负荷;加负荷的步骤包括另外几步确定训练装置加于锻炼者的可变负荷是否刚刚提高,确定在一第一预定时间段内是否可变负荷没有变化,确定是否负荷低于第一预定负荷值;当在第一预定时间段内负荷没有变化以及当负荷低于第一预定负荷值时,将可变负荷提高一预定值。附加步骤包括当锻炼者的心律高于第二预定值时,将负荷减小一预定值。减小步骤包括下列步骤确定是否心律超过一第三预定心律值,当心律超出第三预定负荷时,就大大减小可变负荷,确定是否可变负荷刚降低,确定可变负荷保持不变化的时间是否已达到第二预定时间段,确定是否可变负荷已达到第二预定负荷值,当经第二预定时间段后负荷尚未减小和当可变负荷尚未达到第二预定负荷值时,减小可变负荷。
本方法的一附加步骤是将信息可见地显示给锻炼者,这些信息是有关响应可变负荷由锻炼者施加的负荷,或者是锻炼者的心律。本方法还有另一步骤是输入有关骑车人年令和性别的数据并计算心律的合理值或极限值。将心律控制方法和具有各种自行车支撑的变化的器械相结合,就提供了对真实的骑车情况的模拟。下面将谈到,校正训练装置和加载装置中的摩擦进一步提高了有关控制影响心律的负荷的精度。下面还将谈到,结合各种比赛情况的模拟提供了一种训练比赛而不过分加重骑车人的体力负担的有利方法。这样,就有利地提供了一装置,用来调节负荷以使骑车人的心律保持在预定限值之内,从而可提供一最大的训练和锻炼而又能自动监测骑车人的心律,防止使骑车人过分疲劳。
本发明还提供了一种方法和器械,用于真实模拟在自行车比赛中受到的负荷。竟赛模拟器械包括一具有一可蹬动的后轮的固定自行车;用于选择一群模拟参赛者的比赛者的比赛能力和模拟所选择的一群参赛者的比赛行为的装置;输入装置,它和自行车后轮相连,用于将锻炼者的比赛能力和许多模拟参赛者的比赛能力进行比较;显示装置,用于显示参赛锻炼者相对于模拟参赛者的位置;和可变负荷装置,用于将一可变负荷加于后轮上以模拟出比赛中受到的负荷;和用于根据参赛锻炼者相对于一群模拟参赛者的位置而负荷的装置。最好是,上述装置包括上面已较详细讲过的器械。
最好是,该器械能使可变负荷装置在轮子上施加一增大的负荷,以模拟当参赛锻炼者离开一群模拟参赛者时的可变风负荷。另外,最佳器械还包括一能在模拟比赛中使一群模拟参赛者的速度随机改变的装置。
为了模拟选择不同的难度的各种比赛,特提供一选择装置,用于选取至少一位模拟参赛者的比赛水平;负荷计算装置,它用于根据选取的比赛水平确定加载装置施加的负荷;负荷探测装置,它用于检测骑车人施加的、克服加载装置施加的负荷的负荷;用于显于相对于一群模拟参赛者的一个锻炼者骑车人的比赛水平的装置;和用于根据一骑车人相对于许多模拟参赛者的位置改变、由加载装置施加的负荷的装置。另一种显示装置,还包括用来显示选取的道路的高度、在预选道路上的骑车人的位置、骑车人相对于许多模拟参赛者的位置、总的经过时间、骑车人的瞬时速度、骑过的距离、心率和韵律(节奏)的装置。
最好是,加载装置采取一电气加载装置的形式。当一自行车的后轮与辊子摩擦接触并且具有一由支撑件支撑的后轴时,该电气加载装置与辊子相连以将可变的力加到辊子上,从而模拟出在自行车实际骑车中所受到的负荷的变化。加载装置还检测骑车人所加的以克服外加的负荷的动力。
各种操作最好是由一控制加载装置所加的负荷的计算机来控制,该计算机有一输入装置,用它某骑车人能选择一希望的竟赛水平和由加载装置所加的相应的负荷,程序计算机的程序可以确定和在可见显示器上显示出至少一个具有所选择的竟赛水平的模拟骑车人的水平,计算机和程序还可以根据一锻炼骑车人和模拟骑车人所加的动力确定和显示出该锻炼骑车人相对于其他模拟骑车人的位置,计算机根据某锻炼骑车人与模拟骑车人的相对位置,改变由加载装置所加的负荷以模拟风负荷。计算机在所选择的竟赛水平内可随意改变模拟竟赛者的行为。
由器械实施的程序的各步骤包括利用一电气装置在后轮上施加负荷,以模拟各种骑车条件和状况;利用一飞轮加负荷到后轮上,以模拟惯性负荷,选择一比赛道路和比赛中竟赛的难度水平;根据选取的比赛道路以及所选取的难度水平,确定加到后轮上的负荷;在自行车后轮上加上负荷时自行车的骑车人的行为;显示相对于至少一个模拟骑车人的某锻炼骑车人的位置;根据锻炼骑车者相对于其他模拟骑车人的位置改变加给锻炼骑车人的负荷。
程序中的另外的变化包括随机变化者比赛过程中的模拟骑车人的行为;校正电装置以确定训练装置中的摩擦力,使电气装置能调节以补偿摩擦损耗;确定电装置的效率;通过一已知效率的电气装置与第二个已知功率输出的电气装置的比较,确定该电气装置的功率输出;和调节电装置以考虑电气装置的摩擦损耗和效率。
于是有利地提供了一器械和方法,不仅可用于模拟骑自行车时的真实“感觉”,而且如实地模拟出骑自行车时受到的负荷,甚至可把器械和自行车中的摩擦和效力下降也考虑进去。模拟比赛中的环境负荷以及选择参赛者和参赛者的水平的这种能力,不仅提供了挑战对手,而且提供了一有价值的训练工具和方法。考虑到骑车人在一伙同伴中的位置而改变风负荷的能力,使本发明具有进一步的真实性。在模拟比赛中模拟参赛者的行为的随机变化,使锻炼骑车人经历到在比赛中争取有利位置的骑车对策。这样,不仅提供了一较真实和引人入胜的训练装置,而且提供了一种高度适糜诰拐员热难盗肥侄巍 在参阅了附图后,将能更容易理解本发明。这些附图是

图1是表示带有一与其连接的自行车的本发明的透视图;图2是表示卸掉侧盖板后的本发明的透视图;图3是表示后轴夹、支撑、电动机和飞轮的分解透视图;图4是后轴夹透视图5是用于前叉管上的滑动铰链的分解透视图;图6是表示图5的铰链组装后情况的透视图;图7是表示前叉固定结构及一邻接铰链的透视图;图8是带有本发明一支撑件的透视图,该支撑件可折叠为邻接状态,以成为一更紧凑、可携带的结构;图9是本发明的一部分的透视图,表示结构上的轮子;图10是表示图8的结构折叠和收缩后的侧视图;图11是校正程序的流程图;图12是一显示器的平面图,是由坐在如图1-10所示的支撑器械上的一自行车上操练的人观察到的情况;图13是功率校正程序的流程图;图14是图12的显示器的显示窗的平面图;图15是表示一考虑进风力负荷时的比赛模拟方式的流程图;图16是一程序流程图,用此程序可利用改变训练器械上的负荷使骑车人的心律保持在预定的限值内。
参阅图1。图1中表示了多速自行车的一部分,它有一车架10,上有一后轴12,在后轴12上装有一后轮14和一后轮胎16。车架10还有一底托架18,在它上面旋转安装一套曲轴和一对脚蹬20。在车架10上连接有一座子22、车把24和可旋转固定的前叉26,这是本技术领域内的人所熟知的,在此就不再详细阅述了。
参阅图1和2,自行车的一部分连接到一如支撑架28的、支撑自行车的装置上。支撑架28包括一底部构件30,它约27吋长,是一边长约1.5吋、壁厚为0.109吋的方型金属管。
在底部构件30的一端是两根后臂32和34(图9),它们是按相反方向重直于底部构件30的纵轴线而延伸的。最好是,臂32和34是一连续构件的两个端部。在底部构件30的相反一端,连接有两个前臂36和38,它们通常是从底部构件30向着相反方向延伸的,并且和底部构件30的纵轴线成约67°,使相对于后臂32和34成一夹角离开。此夹角,从垂直面测得为23°。臂32和34通常均为一约0.75吋×1.5吋的矩形横截面、壁厚约0.120吋的金属管。臂36和38为一横截面为约1吋×23吋、壁厚为0.120吋的矩形管。
底部构件30和臂32、34、36和38一般位于同一平面内,这样就能成为一支撑自行车车架10和骑车人的提供稳定的支座。在臂32-38的最外端上有支撑脚40,以便置于地面上。
有一支撑和固定自行车的前叉26的装置,它能模拟出自行车的前轮的运动和挠性。这样,前叉管42连到底部构件30、前臂36和38的接合点上。前叉管42伸出臂32-38组成的平面约53°,并沿离开后臂32和34的方向伸展。前叉管42也沿着一通过底部构件30的纵轴线的平面延伸,并且其方向基本上垂直于由臂32-38形成的平面。前叉管42是金属管结构,1.5吋见方,壁厚为0.109吋。
参阅图2和7,其中前叉座44连在面对后臂32-34的前叉管42的一侧。参阅图7,前叉座44包括一宽1.25吋、长6.25吋和壁厚0.135吋的矩形金属条。沿着前叉座44的纵轴线有两条长缝46和48。最好是,缝46和48约0.34吋宽、1.85吋长,是从离前叉座44的两端约0.33吋的地方开始的。
为了将前叉座44连到前叉管42上,将可卸的紧固件50和52伸过缝46和48插到前叉管42上的相应孔(图中未画出)中。紧固件50和52最好是螺栓。松开紧固件50和52后,可使前叉座44沿着缝46和48的长度方向滑动,由此,可相对于前叉管42的长度改变前叉座44的位置。卸掉紧固件50和52,可将前叉座44在它所处的固定平面内转动180°,然后再重新固定。紧固件52和50能允许前叉座44挠曲,有助于模拟出通过前叉座44连接到车架28上的自行车的真实运动情况。
前叉座44上连有一前叉固定管54(同时参看图1和2)。前叉固定管54包括一长约3.5吋、外径约0.75吋和内径约0.38吋金属管。前叉固定管54的里端是有螺纹的。前叉固定管54的纵轴线垂直于前叉座44和缝46和48的纵轴线。前叉固定管54并不处于前叉座44的中心位置上,而是偏离中心约1/4吋,这样,相对于缝46的端点来说,它更接近于缝48的端点。
前叉座44有一可调的连接装置,用于将自行车的前叉连接到前叉管42上。可调的目的是可以容纳不同规格的自行车车架,且如下所述,可以利用重新调整前叉座44在前叉管42上的位置,改变自行车车架10的高度。
参阅图2和3,与后臂32相连的是一内支撑板56和一外支撑板58。支撑板56和58彼此基本平行,且分别处于平行于通过底部构件30的纵轴的平面的两个平面内,但基本垂直于臂32、34、36和38所处的平面。内支撑板56比起外支撑板58更靠近底部构件30。支撑板56和58均用厚0.134吋的钢板构成。
与内支撑板56相对应的内支撑板60以类似的方式和方向与后臂34相连。同样,与外支撑板58对应的一外支撑板62也以类似的方式和方向与后臂34相连。
当后轮14和后轮胎16(图1)与器械相连时,后轮胎16被约束以一预定方式运动。最好是,后轴支撑构件约束自行车的后轴12沿一预定的路径移动。尽管支撑构件可采用U形构件,但最好支撑构件是一对轴管64和66。第一轴管64在支撑板56和58之间被可旋转地固定,而第二轴管66可旋转地固定在支撑板60和62之间。第一和第二轴管64和66的结构及连接方式是相似的,因此只详细介绍第一轴管64。
参阅图3,第一轴管64最好是一硬性或刚性件,它不会有较大程度的挠曲,它包括一0.75吋厚和1.5吋宽12.5吋长和0.12吋厚的矩形横截面管状金属棒。可旋转固定件68在第一轴管64的一端连接在轴管64的宽1.5吋的一个侧面上。所示的可旋转固定件68是一圆柱管,其外径约1吋,内径约0.52吋,长约4.7吋,它对应于支撑板56和58之间的空间距离。可旋转固定件68的纵轴线垂直于第一轴管64的纵轴线。
第一轴管64固定时应使它能在一基本上垂直于臂32-38所处的平面的平面内转动,而臂32-38所处的平面又基本上与底部构件30所处的平面相平行。此转动枢轴轴线基本上平行于连接到轴管64和66上的后轮14和后轮胎16的转轴轴线。
要使转动实现,只要将一螺栓70穿过外支撑板58上的孔72,再穿过可旋转固定件68的内孔,最好穿过内支撑板56上的相应的孔(图中未画出)。内支撑板56的侧面上焊上一只为一螺帽的紧固件74,这样,螺栓70上的螺纹端就可利用紧固件74将其固定牢,以防止螺栓70无意中松失。螺栓70的纵轴平行于后臂32和34的纵轴。如此,螺栓70支撑了第一轴管64并限制轴管64使绕着螺栓70纵轴转动 如前所述,按照和第一轴管64的类似的方法,将第二轴管66可转动地固定起来,并使其受约束绕着螺栓70转动,两者的螺栓彼此轴向对齐。轴管64和66分别靠近外支撑板58和62。轴管64和66的两内侧面相距约11吋。这样,第一和第二轴管64和66形成了可动的支撑装置,该装置约束后轮14和后轮胎16沿着一预定途径运动。
如图2、3所示,在轴管64和66上的与其转动约束端相反的一端处,有轴夹76和106,它们是利用下轴夹支架78连接到轴管64和66上的。参阅图4,轴夹76包括一在其一端有一锥形凹坑77的金属圆筒。在轴夹76的两个相对的侧面上有一对向下伸展的相对的矩形缺口79。使用时,将一锥形螺母或自行车后轴12的端部放在锥形空腔77中。缺口79容纳在多种自行车型号的快速释放叉形物上使用的D环。
参阅图3,轴夹支架78包括一可调位的支撑板80,该板是由一具有一“L”形横截面的金属板条组成的,横截面的尺寸为短边0.75吋,长边1.5吋,板条的长度为6吋,厚度为0.120吋。在板80上有一沿其纵轴的长约3吋的长缺口82。
具有螺纹部分的螺栓84穿过缺口82和在轴管64上的一孔(图中未画出)。为了将板80可卸地夹紧到轴管64上,可在螺栓84的螺纹部分上拧装一可卸的、如螺母86的紧固件。松开螺栓84,使板80沿着缺口82的长度上滑动,就可将板80沿着轴管64的长度上调整位置,调好后再将螺栓84和螺母86拧紧。
在板80的邻近轴管64的未被约束端的一端处,有一夹紧管88。夹紧管88是一圆柱形管,其外径约7/8吋,带螺纹的内径约1/2吋,长度约为1.5吋。管88的纵向轴线基本上垂直于轴管64的轴线,并基本平行于螺栓70的纵轴。带螺纹的轴90与管88的内螺纹啮合。轴夹76固定在轴90的一端上,而旋钮92则紧固在轴90的相反的一端上。转动旋钮92,轴90就能转动,以调节轴夹76的位置。
在旋钮92和管88之间有一锁定旋钮93。锁定旋钮93是一在其中心有一螺纹孔的旋钮,这样,该旋钮就能拧到螺纹轴90上。当轴夹76准确定位后,就将锁定旋钮93拧到顶住管88的端部,以产生一摩擦锁紧作用,以防止轴90和轴夹76产生轴向位移。
与轴夹76同轴对齐的第二轴夹106(图3和4),以将轴夹76连接到第一轴管64上的相同的方式,连接到第二轴管66的未约束端上。因此,第二轴夹106和它的支撑支架的细节在此不再重复,只不过要指出的是为了装入在各种自行车上使用的多种结构的轴12,轴夹稍长些,而缺口79也较深些。
参阅图2和3,一可旋转装置帮助支撑连接到本发明的器械上的自行车的后轮14。在内支撑板56和60之间旋转地支撑着一辊子108。最好是,辊子108是一圆筒形辊子,其宽度约2.6吋,外径2.5吋,用铝制成。将辊子108旋转地固定时要使它的纵轴基本平行于螺栓70的纵轴以及第一和第二轴管76和106的枢轴,还平行于连接到器械上的后轮14的旋转轴。
参阅图1,最好是,支撑车架28在三个位置上连接并支撑自行车车架10。从图7中可较清晰地看到,利用一快速释放叉形物110,可将自行车车架10的前叉26可卸地连接到前叉座44上。快速释放叉形物110通常用于具有一易卸的前轮的自行车上,因此,这是熟知的,不再详细描述了。前叉26的两端装到前叉固定管54上。快速释放叉形物110插经前叉26和前叉固定管54,然后将前叉26锁牢于前叉座44上。此前叉座44的连接基本上就好象自行车的前轮一样。
参阅图1,利用第一和第二轴夹76和106支撑起自行车车架10的后轴12。轴夹76和106中的圆锥孔77(图4)装在后轴12的相对两端上,以便支撑轴12和自行车车架10。后轴12被约束沿着一围绕着第一和第二轴管64和66的旋转轴的弧形路线移动,该路线通常朝向辊子108。
轮胎16置于辊子108上。最好是,当在水平面内看时,辊子108位于轴管64和66绕着旋转的旋转轴的正前方。这样,相对于一水平面,轴12(后轮14绕此轴转动)位于辊子108和轴管64和66能绕着旋转的旋转轴之间。换言之,如果将基本上是平行且垂直的平面通过后轴12、辊子108的旋转轴和轴管64和66的旋转轴,那么,含有后轴12的垂直向平面位于包含辊子108和轴管64、66的旋转轴的平面之间。或者,再换句话说,一基本垂直的、通过后轴12的平面,使后轴管64和66及辊子108的枢轴分别居于该垂直平面的相对的两侧。
最好是,后轴管64和66相对于垂直面的夹角在5°-30°范围内。在运行过程中,管64和68将从此位置转动1°-4°,具体转动角度大小取决于骑车人的体重和力量、轮胎压力和具体的自行车架10的情况。当自行车车架10是属于一种具有54厘米车架、99厘米轴距和700 C规格轮子的施温派拉蒙(Schwinn Paramount)自行车的车架时,该夹角约26.5°,而其后轴12与轴管64和66的枢轴点之间距离约10.5吋,其后轴12几乎垂直于辊子108的转轴的上方。这些尽寸是指一种短轴距比赛自行车的尺寸的极限尺寸。
如轴12垂直于辊子108的上方,或者在辊子108的正前方,本发明照样工作,但是,由于轴12在辊子108正前方移动,性能降低,然而仍工作。如后轴12位于螺栓70的轴的垂直上方或在其后方,则后轮胎16将不被约束移动到和辊子108相接触,器械就不能满意发挥效能。本发明的目的是要在加在轮胎16上的转矩增大时,例如当骑车人离开座子22身子伏向自行车车把26上使脚蹬20上的力增大时,使后胎16仍和辊子108接触。
最好,辊子108转轴离轴管64和66的旋转轴的(水平方向的)距离约4.6吋,离轴管64和66的旋转轴的(垂直方向的)距离约5.1吋。当车架10连到支撑器械上时,前叉座44、轴夹76和106(图2)和辊子108为自行车车架10提供一三点式支撑。当骑车人经脚蹬20蹬自行车时,后轮14和轮胎16与辊子108摩察接合,使辊子108转动。
仅使用轴夹76和106支撑自行车车架10,相信这方式虽然并不最佳但也是可能的。在这种情况下,前叉管52可取消,底部构件30也可缩短,如此,一自行车的标准前轮可用来支撑前叉26。将前叉管42与支撑架28的其余部分分开单独支撑起来,调节前叉管42的挠性以模拟出它的刚度,以使自行车的一标准前轮运动,相信也是可以的、但不是最佳的。
参阅图2和3,一个象交流发电机那样的、用交流110伏驱动的属电磁设备的可变负荷装置,被连接到辊子108上。交流发电机112连到内支撑板56上,并居于支撑板56和58之间。交流发电机的轴114(图3)伸过一在内支撑板56上的孔(图2)。交流发电机轴114的一端(图3)连在交流发电机112上,而轴114的另一端与辊子108相连,连接最好用热压(冷缩)配合将辊子108装到交流发电机轴114的末端上。
在交流发电机112上施加一可变的电功率后,在辊子108上就加上了一可变而可控的阻力,从而,就加到了轮胎16和脚蹬20上(图1)。这个可变负荷阻力可被用来模拟出在不同坡度、下山、平坦路或上山时所受到的阻力。负荷能模拟滚动阻力、风阻力、地形变化,如适当编程的话,还能模拟出自行车和骑车人的惯性。这样,交流发电机112结合辊子108就模拟出一真实的自行车骑行情况。
最好,惯性用如一飞轮116的惯性装置来模拟,该飞轮可旋转地安装在支撑板60和62之间(图2)。飞轮116的旋转轴与辊子108和交流发电机112的旋转轴相重合。一个具体的飞轮要按照自行车和骑车人的已知重量、最高速度进行设计,但是,还要考虑空间、安全和重量约束问题。对于一等效于27吋、车速为40里/小时的自行车,较为适用的飞轮的最大转速约为5000转/分钟。这样一个飞轮重约22磅,如用铸铁做时,可做成一宽2吋、直径8吋的带边的圆盘。这样一个可用的飞轮的惯性经计算为0.05648牛顿·米·秒2。
飞轮116与辊子108相连接,使辊子108的旋转带动飞轮116转动。如图所示,飞轮116固定在一轴118上,该轴118伸过在内支撑板60上的一个孔而与辊子108相连接。最好是,辊子108以热压(冷缩)配合装到飞轮轴118的一端上。这样,飞轮116、辊子108和交流发电机112基本上处于一公共轴上。如飞轮116的惯性装置模拟一运动中的自行车和骑车人的惯性。
参阅图1和2,长约21.5吋的前叉管42上含有一铰链接头124,它比较清楚地示于图5和6中。在离臂32-38所在平面约为7.5吋的上方某一点处(图1),前叉管42切割成一个角度,这样形成了第一端126和第二端128,它们可拆开地置于一对结构中。在与第一端126邻近的前叉管42和内部,插入了一较小些可滑动的管段130,它的外形恰好使其与第一端126的内部相配。在可滑动的管段130的相反的两个侧面上有两条纵向缺口132。—如螺栓134的紧固件穿过前叉管42的相反的两侧面及两条缺口132,将滑动的管段130栓住。这样,可滑动的管段130能沿着前叉管42的纵轴线移动,直至螺栓134到底抵住缺口132的端部。
把一可滑动管段130和一对应尺寸的管段136可转动地连接在一起。管段136插配及牢固固定在前叉管42的第二端的内部。
操作中,当端部126和128端接时,管段130和136插配在前叉管42的内部之中,以形成一牢固的连接结构。如沿着前叉管42的纵轴加一力,管段130和136可允许第一端126和第二端128分开。当这两端分离后,铰链135可使前叉管42的含有端部128的那部分折叠起来,使支撑车架28折叠成一较紧凑的外形(图8、10)为了确保铰链接头124在未折叠位置时的整体性以及防止铰链接头124无意中散离开,将可卸的紧固件138(图5)穿过前叉管42的侧壁,并将可滑动管段130可卸地紧固在位置上。每个紧固件138包括一旋钮142及一由它伸出的螺纹部分140。每个螺纹部分140穿过前叉管42上螺纹的孔144,这样,螺纹部分的头部与滑动管段130接触并咬住了它,以防止这管段在管42中移动。孔144最好位于前叉管42的角部。
铰链接头124和轴管64和66的转动(图8、10)提供了可折的连接,靠这种连接可组成一稳定的操作结构,但也能折叠或重新组成一较适于存放携带的外形。
参阅图1,有一侧盖板120,其一端与支撑板56和58相连(图2),而其另一端与前臂36相连接。而相应的一块侧盖板122连接在支撑板60和62(图2)以及前臂38之间。侧盖板120和122盖住了飞轮116和交流发电机112(图2),也为支撑支撑架28增加了一些刚度和稳定性。由于支撑板56-62(图2)比前臂36和38高,故侧盖板120和122向下倾斜一角度。侧盖板120和122必须足够低,以便使骑车人蹬车时脚跟不会碰到两块侧盖板。同样,轴管64和66不应太长,以免骑车者的脚跟碰到它们。
两块侧板120和122是可卸的(见图2),通常包括C形结构,最好是用厚度约为0.060吋的薄金属板制成。侧板120的两侧边装在支撑板56和58的两侧边上(图2),侧板122的两侧边装在支撑板60和62的两侧边上(图2)。侧板120和122彼此隔开,以使在侧板120和122之间能看到底部构件30。
参阅图1和2,在前叉管42的上方端连接有一显示管150。在显示管150的外端连接着一显示器152。显示管150的总的结构与前叉管42的相同,利用可旋转接头154将它可旋转地连接到前叉管42上。接头154包括一铰接件,需要时该铰接件利用一个或多个摩擦可释放装置将接头稳定地固定住,或者,当需要时,松开接头使其旋转。所说的可释放摩擦装置包括一铰接接头,它有一侧边,在该侧边上穿过一带螺纹的紧固件156,靠松开或拧紧紧固件156可释放地锁紧接头154,通过增大或减小接头154中的摩擦力,可将接头154锁紧就位或允许其旋转。
利用一可调位的和可倾斜的接头157,可将显示管150的一端与显示器152相连。一具有C形横截面的槽钢托架159紧固在显示器152的背面,C形横截面中的自由边从显示器152处向外伸出。槽钢托架159的每一自由边上有一沿托架150的长度方向的缺口160。显示管150装在槽钢托架159中。一可卸的紧固件162有一轴(图中未画出),该轴穿过两条缺口160和一邻近显示管150的外端的孔(图中未画出),并连接到一螺纹旋钮上(图中未画出)。通过靠紧固件162和螺纹旋钮的共同作用,将显示管150的一端摩擦锁紧于托架159上,这样也就锁紧于显示器152上。只要拧松紧固件162,该连接就可松开。
缺口162可使显示器152相对于显示管150的一端定位,有效地提供了一可调节显示器152的高度的装置。显示器也能绕着一松开的紧固件162转动,以调节显示器的角度方向。拧紧紧固件162后,就将显示器锁紧就位。如此,就有了一接头157,通过它可调节显示器152的位置并使其倾斜。
显示器152与交流发电机112电气连接,这样,各种负荷就能在显示器152上显示出来,并根据显示器进行控制。电气连接装置包括电线,其接线是人们所熟悉的,故在此不详述也不用图表示出来了。如此,例如,骑车人可以输入一需由交流发电机112施加的阻力,也能监控自行车克服预定阻力而蹬动的速度。
参阅图1,现描述本发明的操作。一人取来自己的私人自行车,卸下其前轮后将车固定于支撑架28上。许多现代的赛车的前轮均是可卸的,这样安装起来就方便。利用一快速释放叉形物110,将自行车车架10的前叉26连接到前叉座44上。为了适应不同规格的自行车车架10,可松开紧固件50和52(图7),将前叉固定管54的位置重新调节,然后再拧紧紧固件50和52,这样,就使前叉座44可松开地定好位置了。
参阅图7,如前所述,前叉固定管54是不对称地位于缺口46和48的端部之间的。利用相对于前叉管42滑动地将前叉座44定位,就可调节自行车车架10的垂直高度。许多骑车人发现在骑一固定的自行车时,略带上坡的高度是令人较为舒适的。
最好,紧固件50和52的位置放在缺口46和48的上端处。如这样定位,前叉座44就紧靠着紧固件50和52上。
由于固定管54相对于缺口46和48是偏置的,所以,固定板44能在其所处平面内转过180°,以改变固定管(和自行车10)的高度,而仍能使紧固件50和52紧靠着缺口46和48的端部。
参阅图1和3,轮胎16是在辊子108上面。将第一和第二轴管64转动以使第一和第二轴夹76和106能装上后轴12的相对的两端。转动旋钮92(图3)使轴夹76和106(图3)能沿后轴12的长度上调节,使后轴12的两端能装入到圆锥形孔77中。螺纹轴90(图3)提供了一个可调节装置,用它可安装下不同轴长的后轴,从而将自行车车架10定位在第一和第二轴管64和66之间。第一和第二轴管64和66可旋转的能力,加上可将轴夹支架78(图3)可调节位置的能力,就能安装上多种规格的自行车。
参阅图1,操作时,将前叉26装到前叉座44中后,提供了一挠性座,减少了前叉26挠α推@凸收衔侍狻V跃哂心有裕且蛭安 座44能绕着一通过紧固件50和52的直线有效地转动或挠性地摆动(图7),即使当这些紧固件50和52紧紧拧牢时也是如此。前叉座44和紧固件50和52保证了这种挠性。这种挠性模拟了自行车前轮的横向挠性,从而进一步模拟了骑车的真实性。
骑车人可将前叉座44的位置重新调节使自行车车架10呈一水平方向或一如前所述的略为抬高的方向。当骑车人坐在座子22上并施力于脚蹬20上时,自行车和骑车人的重量使将轮胎16压靠着辊子108,以通过摩擦驱动辊子108。飞轮116(图2)模拟骑车人和自行车的惯性,而由交流发电机112(图2)施加的可变阻力可被用来模拟在一水平路面、下坡、上坡或各种坡度的任意组合等情况下的骑车情况。
但是,使用中,骑车人不会总是静坐在座或鞍22上,而是有时为了增加力量,抬身离开鞍子,把身体伏向手把24,使骑车人的体重全部施加于脚蹬20上。在骑车人坐在鞍22上时,他的大部分体重落在后轮上,而骑车人抬身离开鞍子22时,骑车人的体重则移向前轮,将加大的力和体重施加于脚蹬20上。
当骑车人的体重移向前叉26时,支撑架28的作用是使轮胎16和辊子108之间保持且实际上加大摩擦力,以防止打滑。第一和第二轴管64和66约束后轴12沿着一预定的弧形路线移动,这样,骑车人的体重朝着前叉26的移动使轴12,从而使轮胎16,也朝着辊子108移动。
我们确信,自行车车架10相对于支撑架28之间的相对刚度能使骑车人朝着前叉26的移动使前叉管42产生向前和向下的弯曲或挠曲,由于自行车车架10是与前叉管42相连的,所以自行车车架10使受约束的轴12朝着辊子108转动。最好包括前叉26在内的自行车车架10的刚度大于包括前叉管42的支撑架30和轴管64和66的刚度。
尽管严格的理论基础尚未精确获知,但实际作用是明显的。当骑车人坐在座位22上时,辊子108和支撑轴64、66支撑了通常在后侧的重量,所以在辊子108与后轮胎16之间不存在过大的摩擦力。当骑车人的体重从座子22朝着前叉26方向前移时,轮胎16对辊子108并不打滑。前叉管42和受约束的后轴12是协调地移动的,即使也许移动量是不等的,这些移动量是随着施加于脚蹬20的力的大小以及骑车人相对于前叉26的位置的改变而改变的。此外,使用在脚蹬上的脚趾皮带扣和带子的骑车人施加于脚蹬20上的力是向前的,这样也使前叉管42和受约束的后轴12协调地移动。
采用单个或两个支撑滚轮的现有技术装置的情况就不是这样。例如,许多现有装置中采用一与下部支架(底部托架)18(图1)连接的支撑。当骑车者的体重向前移动时,自行车围绕与下部支架18连接的支撑转动,轮胎16与现有技术的滚轮脱离接触。此外,骑车者体重的移动,降低了施加于后轮上的力,这样就降低了与滚轮的摩擦力。因此,骑车者体重的移动有效地降低了轮胎与滚轮之间的摩擦力,当对轮胎施加最大力量时,偏偏使得滚轮打滑。
因此,本发明就有效地提供了一种装置,在对踏脚板20施加大的功率的时候,能增加轮胎16和滚轮108之间的摩擦力。还提供了一种利用骑车者重量的位置的装置来防止轮胎16和滚轮108之间发生滑动。还提供了一种利用车架28的挠性的装置,防止轮胎16和滚轮108之间的打滑并增加它们之间的摩擦力。
参见图8和图10,本发明的进一步优点是采用了一个可折迭装置,因此,本装置可以被折迭成一个紧凑的形状,便于携带。如上所述,第一和第二轴管可围绕沿着螺栓70(图3)的长度延伸的轴旋转。通过正确定位旋转接合处,第一和第二轴管64和66可以被折迭成较紧凑的形状。最好,它们可以折迭得邻近侧面罩子122和124的位置。
接合处124,154和157使得显示器152可以折迭成邻近侧面的罩子120和122。叉形管42和显示器管150可以置于侧面罩120和122之间的空间。所提供的可折迭装置使得本装置可以折迭成比本装置操作状态外形更紧凑的手提式的外形。
参见图2,本发明的最重的部分位于支撑板56,58,60和62处,它们支撑着飞轮116、发电机112。参见图9,为了便于携带,在后腿32和34的接合处,安装了一对转轮170,它们处于底部部件30的接合点的对面。当本发明的装置被提起,绕着穿过后腿32和34的线转动时,转轮170与地面或地板接触,这样,本发明的装置可以滚动而不必拖着支脚垫块40走。当本发明的装置的处于如图1和2所示的操作状态时,转轮170不能滚动。
参见图8到10,最好,侧面罩120和122的背面和支撑板56到62(图2)是平的,这样,本发明的装置在如图9和10所表示的垂直方向时可以保持稳定地直立在它的端部上的位置。
前面谈到图2时曾提起过,一个可变加载装置,例如,发电机112被安装成与滚轮108一起转动。当发电机108的转子转动时,产生电流变化,该变化可以用于指示滚轮108的转速。转动速度可以通过测量发电机上一二极管的脉冲间的时间而计算出来。2.5英寸直径的滚轮108每转动一周产生六个二极管脉冲。脉冲数可以用于计算转动的速度和转过的距离。发电机112与显示单元152之间可以进行电子连接,这种电子连接是本技术领域的人所熟知的,这里不再进行详细描述。事实上,发电机112提供给显示单元152两个信号,一个是速度,一个是通过一个外部功率电阻器243提供的电阻器电压。
电阻器电压与显示器152内的一模数(A/D)转换器相连。A/D转换器对该技术领域的人来说是熟知的,在此不作详细描述。A/D转换器规定电压的最大值为255,后者相应于25伏电压对A/D转换器来说,0.1伏左右的分辨率是比较适宜的。
参见图11,显示单元152包含一计算机200用于监测和/或计算发电机112和滚轮108的旋转速度。滚轮108的旋转速度与转过的距离和自行车的速度有关,这可以由计算机200算出。计算机200还可以通过一个数模(DAC)转换器控制发电机112的电压,从而调节发电机112的场电流。
计算机200还可以与一个用于以预定的间隔监测计算机功能的计时器202协同工作。计时器202与计算机200协同工作以计算训练装置和安装在训练装置上的自行车的绝对摩擦量。
图11的流程图,与图1和图12一起,描述了一个校正(定标)程序,其中,骑车者坐在坐垫22(图1)上,按一下显示器152(图12)上的开始按钮204,以启动校正(定标)程序。启动后,方框206(图11)指示系统预热,预热最好通过对发电机112施加全场电流约30分种来完成,然后将自行车骑动几分种,使轴承内的润滑油分散开。预热可以降低温度对系统精度的影响。
方框208使数模转换器(DAC)清零,这样,使得发电机112(较2)对滚轮108或轮胎16不再加上别的阻力负载(除了因有摩擦负载以外)。方框210命令显示器152(图1和12)显示一请使用者以至少25英哩/小时的速度蹬自行车的、可由使用者看见的指令。该指令显示在显示单元152(图12)的显示窗212上。当自行车速度在25英哩/小时以上时,一个声音信号发出声音以指示骑车者停止蹬踏板静坐在座热22(图1)上。声音信号之后,显示窗212也指示骑车者停止蹬动。
当轮胎16(图1)的速度达到预定值时,这哩是23英哩/小时,方框214(图11)开始速度惯性下降计算。方框216读出轮胎16(图1)的速度,而方框218将该速度存入随机存取存储器(RAM)。判定框220将框216的速度与一个预定值,例如5英哩/小时,进行比较。如果速度大于5英哩/小时,判定框将程序返回到方框216重读速度。速度每隔一定的时间间隔检测一次,最好每隔0.12秒检测一次。当速度达到5英哩/小时(mph),时,方框222计算自行车的减速度dv/dT,这哩dv是速度变化,dT是上述速度变化发生所需的时间变化。
减速度采用线性回归方法计算,即,对5到23英哩/小时之间的每一个速度v取20个连续速度读数进行平均以得到一系列速度v1,v2,v3,…vn。然后,对这些点进行线性回归分析Xi=(Vi+Vi+1)/2Yi=(Vi-Vi+1)/(20*0.12)这哩,Xi=平均系统速度(英哩/小时)Yi=系统减速度(英哩/小时/秒)线性回归给出一个一般形式的等式Y=A(X)+B这是由于摩擦而引起的、作为速度函数的减速度的表达式。在等式的一般形式中,A和B是常数,Xi与“(X)”对应,Yi与“Y”对应,“Y”即是加速度(或减速度)。将“Y”乘以14.08可以计算出角减速度(弧度/秒)/英哩/小时,以获得由于摩擦引起的角减速度,它也是速度(英哩/小时)的函数。
方框224以摩擦转矩的形式从式T=Ia计算系统的摩擦阻力T=Ia这哩,T=发电机的摩擦转动力矩(牛顿*米)I=物质转动惯量(牛顿*米*秒2)a =角加速度(弧度/秒)加速度,或确切地说作为速度的函数的减速度“a”是由方框222计算的值。系统的惯性已知或可以被计算出,应包括车轮14和轮胎16(图1)。惯性的典型值,当轮子重900克时,为0.06296牛顿*米*秒。方框224的计算结果是系统空载条件F的摩擦转动力矩。来自方框224的常数A和B被存入随机存取存储器(RAM)中如方框226所示。
克服上面计算的摩擦转矩的功率可以由下式计算P=T×W这里 P=功率(瓦)T=转矩(牛顿*米)W=角速度(弧度/秒)方框227采用这个等式和上述的数据,配上合适的变换固子,通过线性回归变量A和B,获得损失于摩擦的功率Pf=11.829*V*[A*V*B]这里Pf=由于摩擦损失的功率(瓦)V=自行车速度(英哩/小时)A=线性回归常数B=线性回归常数摩擦损失的功率Pf表示系统中的功率损失,包括发电机112(图2)的摩擦功率损失。发电机112(图2)的定子会带有一个所施加的剩余电压,它尽管很小,但可以引起摩擦阻力。知道了系统的摩擦损失以后,发电机112(图2)可以对系统施加功率,以模拟载荷情况,补偿系统摩擦损失以增加模拟的真实感。
真实载前的模拟精度还取决于发电机112在模拟已知载前时的效率。如果发电机112与用于获得原始等式的标准发电机相比发生变化,则所施加的载荷将是不精确的。为了校准发电机112,进入第二测试程序,如方框228所示。
参见流程图13,发电机功率的校准由第二测试程序进行,其中,藉助于性能通过例如测功器的测量成为已知的标准发电机确定发电机112(图2)的效率。这个标准发电机用于求得如下文的所述的PA的校准方程,在这个方程里,m=1。通过与标准发电机相比较,可以补偿发电机112的电气性能的变化。
方框230再次要求骑车者蹬踏板,使自行车达到一个预定速度(例如25英哩/小时),同时在显示器152(图1)上产生一个可见的信息。当达到预定速度时,有一个声音信号告诉骑车者。这时,骑车者坐在座垫22(图1)上不再蹬车,而车轮14(图1)开始以惯性维持转动直到停止。方框232开始进行惯性转速下降测试。方框234将数模转换器(DAC)设定于一个预定值,最好是105。电压使发电机112(图2)对滚轮108(图2)施加一载荷。载荷最好采用一个适中的值,这里数模转换器(DAC)的设定值105相应于约20英哩/小时的中间载荷。
方框236检查开始于一预定值的速度,其值最好是23英哩/小时。方框238将此速度存入随机存取存储器(RAM),发电机112(图2)的电阻243的电压也同时便存入。这个电压值相应于发电机112(图20的输出功率。判定框240检查是否速度低于一预定值,最好是15英哩/小时,如果不是,程序返回到方框236。方框236,238和判定框240每隔一定的时间间隔循环一次,最好是每0.12秒一次,直到达到15英哩/小时。这时,计算机200(图1)可以完成几个计算。
方框242计算发电机在一预定速度时的功率消耗,这里速度是20英哩/小时,为了排除因在20英哩/小时上采用一个单一功率读数而获得错误信息的可能性,可采用回归分析来确定这个值。对被方框238存入随机存取存储器(RAM)的电压读数平方,然后,将电压平方作为速度的函数进行回归分析Xi=ViYi=(Ei2)]]>这里Xi=平均系统速度(英哩/小时)Vi=速度增量读数(英哩/小时)Yi=系统减速度(英哩/小时/秒)Ei=功率电阻243两端的电压(伏)回归分析的结果产生一线性方程,其一般式如下Y=C(X)+D这里Y=是一个变量与E2,即功率电阻243两端的电压的平方(伏)相对应,C=常数D=常数(X)=一个与速度V(英哩/小时)相对应的变量。
这样,前述方程可写成如下形成E2=C*V+D这里E=电阻243两端的电压(伏)V=速度(英哩/小时)C=常数D=常数一个一欧姆的外部电阻243(图2)与发电机112(图2)相连,此外部电阻243的功率消耗是E。外部电阻243两端的功率基本上表示了发电机112(图2)的输出功率。上式中的V以20英哩/小时的速度代入,即可算出在20英哩/小时下的功率消耗。
通过采用类似于前述的线性回归分析,方框244计算作为速度的函数的、进入发电机112(图2)的功率。然而,这一次,每5个速度读数被一起平均而得到V1,V2,…Vn,这里,速度V是处于15和23英哩/小时之间。在以下各点进行回归分析Xi=(Vi+Vi+1+1)/2Yi=[(Vi-Vn+1)/(5*0.15)]*[(Vi+Vi+1)/2]这里Xi=系统速度(英哩/小时0Yi=减速度乘速度(英哩/小时)/秒回归分析的结果是一个线性方程,当乘以适当的系数时,就给出作为速度的函数的、进入发电机的功率Pi=[F*V+G]*11.829这里Pi=进入发电机的功率(瓦)V=速度(英哩/小时)F=回归常数G=回归常数方框246通过计算速度20英哩/小时下的输出功率与输入功率之比来确定发电机112(图2)的电气效率。
nu=[(E2)/(Pin-Pf)]20英哩/小时这里nu=使用者的发电机的效率E2=发电机的功率输出(瓦)Pin=发电机的输入功率(瓦)Pf=损失于摩擦的功率(瓦)
方框248确定校准系数,该校准系数通过用标准发电机的特性导出的前述方程,确定某一具体使用者的发电机的特性。该校准系数是m=nu/ncal这里m=发电机校准系数nu=使用者电气效率ncal-校准的发电机效率该校准系数m由方框250存入随机存取存储器(RAM)。
通过计算出发电机112的输出功率及发电机效率,(与标准发电机比617411),骑车者输入发电机26功率就可以计算出来。从发电机112(图2)的电阻243上读出电压值。该电压用于计算骑车者所施加的功率。然后,功率乘以校准系数,m,以补偿使用者的装置与标准装置之间的变化。
显示窗212(图12)用于显示功率值及有关信息供骑车者使用。图11和13的惯性速度下降试验结束后,显示的信息包括来自方框224(图11)的线性回归常数A和B,来自方框248(图13)的校准系数m。图13中方框242和244的那些方程的相关系数也能被显示,用于如图11和13中一般描述的校准步骤的计算机源码表作为附录A附于文后。
图11和13的校准用于找出能够引起载荷相对于理论预测值发生变化的变化系数。当知道了这些变化系数,校准了装置考虑了这些变量或补偿了摩擦损失后,则所施加的载荷的精度大大增加,从而大大提高了骑车模拟的真实感如图1-10所描述的装置所提供的自行车安装于其上的、载荷模拟精度的增加与装置的真实感的增加相结合,无论在载荷的施加和操作“感觉”上,都提供了一个有真实感的训练和锻练装置。
一旦装置被校准后,就要确定正确的载荷,以适当地模拟所希望的骑车状态。发电机112提供给锻练装置的、骑车者必须克服的发电机112的转矩,对某一具体速度值且当Y截距等于零时,与电阻243上的电压的平方(E2)成线性变化关系。这里,将电压平方画在水平轴(X)上,功率画在垂直轴Y上。这些速度的斜率是速度倒数的指数函数,如下所示斜率=0.1283×e(1/v)-0.12903这里V=骑车者速度(英哩/小时)采用这个关系,以及来自方框222的Yi的方程,来自方框246的nu的方程,和适当的的转换系数,则,发电机112的功率消耗可以写成PA=m[14.08*V*E2*(0.1283e(1/v)-0.12903)]这里PA=发电机功率(瓦特)E=电阻电压(伏)V=路面速度(英哩/小时)m=校准系数计算机200可以精确地模拟所希望的由骑车者经受的环境载荷。在最佳实施例中,合适的载荷以如下的方式确定如前面所描述,自行车和骑车者的惯性由飞轮116(图2)模拟。发电机112也有一些惯性,必须加以考虑。当一个22磅重的飞轮的惯性(0.05648牛顿*米*秒2)与发电机112(图2)的惯性结合时,与一个113磅的人和一个25磅的自行车的惯性相等。
自行车的滚动阻力由下式表示FR=4.448*CR*W这里FR=滚动摩擦力(牛顿)CR=摩擦系数W=骑车者和自行车的重量(磅)
这个方程假设轴承摩擦在图11和13的惯性速度下降测试中考虑。对多种表面上的良好的嵌入式轮胎的摩擦系数最好取中间值0.004。
自行车骑车者的空气动力学阻力由下式给出。
FD=0.54*A*V2这里FD=空气阻力(牛顿)A=自行车和骑车者的正面面积(米)V=自行车速度(米/秒)这个阻力方程假设阻力系数为0.9,和海平面的标准空气密度。正面面积随骑车者的位置和身材大小而变化。假设正面面积的变化与骑车者的体重成线性关系,一个125磅的骑车者其正面面积为0.306米,而一个180磅的骑车者为0.409米2,一辆25磅的自行车的正面面积包括在前述的数字里,则空气动力学阻力方程变为FD=V2[(0.00103*W)+0.0113]这里FD=空气阻力(牛顿)V=自行车速度(米/秒)W=骑车者和自行车的重量(磅)如果速度的单位是英哩小时,则第一和第二常数分别为0.000206和0.00227。如果要模拟竞赛状态,例如骑车者的位置处于一群其他骑车者包围之中的竞赛状态,则可以对空气动力学阻力方程进行进一步的变化。如果骑车者被其他骑车者包围,在本实施例中,可以认为空气阻力下降30%是合适的。
假设一辆25磅的自行车,由于路面的倾斜,例如小山坡,加在骑车者上是负载可以计算为FG=4.448*G*W这里FG=倾斜(坡度)引起的力(牛顿)G=斜坡百分度(例如45%角=100%斜坡)
W=骑车者和自行车的重量(磅)因为功率等力乘速度,所以骑车者经受的功率可以通过将前面几个的方程结合得出如下的方程Pr=0.447*V*(FR+FD+FG)这里Pr=骑车者行程功率(瓦特)FR=来自滚动阻力的力(牛顿)FD=来自空气阻力的力(牛顿)FG=来自小山坡的力(牛顿)按上述方程给定骑车条件时,骑车者的速度就可以算出来,同时确定一个合适的电压施加于发电机112以模拟行程功率。一个反馈回路用于监控和调节发电机112所施加的负载。骑车者施加的功率可由下式计算Pin=PA+Ff这里Pin=骑车者施加的骑车功率(瓦特)PA=发电机输入系统的功率(瓦特)Pf=摩擦功率(瓦特)计算机200(图1)控制并修改数模转换器(DAC)的值,这个值又改变模拟骑车状态(条件)所需要的发电机功率PA。DAC值的修改按下式进行DACn=DACo(Pin/Pr)这里DACn=新DAC值DAC0=原先的DAC值Pin=骑车者的功率(瓦特)Pr=所需要的骑车者的功率(瓦特)DAC的值最好限于最大增加40%。通过启用上述负载方程和校准方法,骑车者承受的负载可以以比原来可能实现的更加逼真的方式变化。
计算机200可以编制出模拟几种骑车状态的程序。参见图12,所提供的一种编程能力是骑车者可以利用键盘252上的键就特定的时间和/或速度选择所需要的负载条件。类似地,键盘252可以从计算机200中调用储存的负载程序。一个这样的程序是计算机200模拟骑车者与一群骑车者进行竞赛的程序。
图14是进入比赛时的一个典型的显示窗口212。显示窗口212上的第一游标254表示骑车者在窗口256中的位置,而窗口256则显示参赛群体的位置,因此,骑车者可以看到他或她相对于其他对手的位置。显示窗口212还可以显示骑车者的速度,经过的(消逝的)时间,走过的路程,节奏或踏板每分钟的转数和骑车者的心脏跳动速率。显示窗212上还显示了路程高低的纵断面258及骑车者在赛车路线上的位置。第二个游标257指示骑车者在路线上的位置,因此,骑车者不仅可以通过显示窗口256看见自己相对参赛者群体的位置,而且可以看到在整个路线和整个比赛中自己的位置。显示窗口212中标有“OTB”和“OTF”两块,允许第一游标254在参赛群体之内和群体之外的一预定范围内移动。“OTB”指“离开参赛群体后面”,而“OTF”指“离开参赛群体前面”。
比赛可以采用预定的比赛路线,如采用1984年奥林匹克比赛路线,预定路线也可以是一固定的斜坡,斜坡的坡度可以由骑车者选择。或者由骑车者自己创造一条路线。但无论怎样,计算机200都将控制发电机112(图2)以提供模拟沿路线地形条件的合适的负载。骑车者可以利用键盘252选择竞赛的难度,以便与各种能力的骑车者进行竞争。骑车者的能力越强,路线走完得越快。
在实际比赛中,骑车者往往集中在一起形成一群。该竞赛者群前进的速度是有变化的,有时也保持固定的速度,而有时当骑车者竞争位置时,这个竞赛者群会提高速度。因此计算机200也编出程序以改变群体的速度,最好是以随机的方式改变,这样,骑车者可以决定当群体速度变化时他是否要改变位置。
如前所述,骑车者所承受的负载随骑车者相对于群体的位置而改变,因为,当骑车者处于群体之内时所受到的风的阻力比骑车者处于领先或落后时受到的风阻力要小。由此,提供艘桓隹梢杂善锍嫡呦 对于一群具有预定能力的模拟骑车者群体进行控制的位置,随着骑车者相对于群体的位置的改变而改变骑车者承受的负载。
图15示出了一种模拟比赛的流程图,附录B中有进行这种模拟和有关群体位置及功率计算的计算机原码。方框260允许骑车者选择比赛的竞争水平。竞赛难度越高,则装置上的骑车者为了赶上竞赛而承受的负载也越大。然而,训练装置施加于骑车者的负载取决于所选择且由发电机112(图2)模拟的比赛路线。
比赛路线或模拟参赛者竞赛水平的选择可利用键盘252进行。方框260可允许骑车者选择比赛路线。骑车者利用键盘252结合计算机算法可以输入一个固定的坡度,选择一预定的路线,或输入一全新的路线。方框264则可以输入骑车者的体重;因它影响负载的模拟。
方框266读出模数(A/D)转换器,该转换器则读出与发电机112(图2)连接的电阻243的模拟电压。方框268将该模拟电压转换成数值,数值的最大值为255且是线性的。数值255与25伏的电压对应。方框270按下列公式就给定的模拟道路计算合适的功率P全部=Pf+PA这里P全部=骑车者需克服的全部功率(瓦特)Pf=损失于摩擦的功率(瓦特)PA=发电机功率(瓦特)Pf和PA的方程前面已经说明过。
方框272将一秒内的全部功率P全部进行平均并将其显示于显示单元152(图1)上。方框274基于骑车者所选择的比赛水平计算参赛群体功率。方框276计算群体距离以决定在比赛路线上的位置。方框278通过显示窗256(图14)显示骑车者相对于群体的位置。方框280检查骑车者的速度以便使方框282能采用上述空气阻力Fp公式计算加在骑车者身上的风力。
判定框284检查并确定骑车者是否在参赛者群体内,如果是,则方框286降低空气阻力以考虑因骑车者在群体内所受的阻力降低的情况,在本实施中,降低30%,方框208计算上述来自坡度和滚动的阻力,FG和FR的负载。方框290计算上面讨论过的,施加于发电机112(图2)以模拟上述结合负载的所希望的功率,Pr。
一旦确定了模拟骑车状态的所需要也就是所希望的功率值,判定框292就检查所希望的功率是否等于发电机112(图2)施加于装置的实际功率阻抗和系统的内在摩擦。如果所希望的功与发电机施加的功率相同,则不必进行调整,图15的算法系统返回到方框266。
如果所考望的功率不等于发电机施加的功率,则程序进入到方框294,计算所希望的功率与施加功率的百分比。判定框296确定该百分差值是否落在预定的可接受的限度内。40%的百分差值在本实施例中是可接受的。如果百分差值超出了预定值,程序进入到方框298,调整百分比。为了防止负载变化的突然急变,对百分比的调整应限制在不超过预定的范围内,在本实施例中,为±40%。如果方框296判定百分比未超出,则程序进入方框300,否则先经过方框298再进入方框300。方框300按下式计算新的数模转换器(DAC)值DAC新=(%)(DAC旧)这里DAC新=新DAC值(伏)DAC旧=原有的DAC值(伏)
%=方框294或298的百分比DAC值调整之后,程序返回到方框266进行另一个循环。这些循环至少每一秒钟重复一次。这个计算机算法使骑车者训练,实践,经受所需要的努力以参与组织良好的比赛和逼真的模拟,并在基于绝对时间的基础上和相对于一具有预定能力的骑车者群体的基础上监测骑车者的表现。
本装置的另一个特点是可以监测骑车者的心率,调节骑车者经受的负荷以把心率保持在预定的范围以内。实现这一目的的计算机程序的流程图见图16,实现这一流程图的一份计算机原码的拷贝作为附件C附于文后。
骑车者通过键盘252(图12)键入要求而启动程序。方框300启动程序而226-arts请求骑车者输入心跳速率的上限和下限值。如果没有值输入,一个出错程序(图中未画)在显示窗212上显示出请求,请求骑车者由键盘252输入年龄和性别,对男性,心跳的最大速率计算为220减年龄。对女性,最高心跳速率为226减年龄。利用这个结论,可以将付出全力期间所能达到的最大心率的70%~85%的极限值从计算机206(图1)可以取用的数值中挑选出来。
方框301将DAC清零,使发电机112(图2)不承受任何载荷,并且在显示窗口212上告诉骑车者要预热。如方框302所示,预热持续一定时间,这里为两分钟。
骑车者最好在预热阶段开始前做好必要的连接。以便于将其心跳速率输入计算机200,并显示在显示单元152(图1)上。本领域中有种种已知的方法可用于监控骑车者的心跳速率并将其输入计算机。然而,骑车者最好佩一个带有脉搏传感器的胸带以检测骑车者的心跳速率。该胸带最好还带有一个发射器,以便将心跳信号送给计算机200中的接收机并显示在显示单元152(图1)上。这种装置为本技术领域内的人所熟知,在这里不再详述。
判定框306中采用的上限(UL)和下限(LL)以确定这样的心跳速率(HR)是否需要使发电机112(图2)施加于装置上的负载增加,降低或保持不变。判定框306监控心率,如果心率在预定的范围内,则负载不变,如方框310所示,并且显示窗口显示信号指出一切正常,如方框312所示,然后,程序返回再次检查心跳速率。图16中选择的预定范围是心跳速率必须大于LL ′(UL-LL)*0.2并小于这里UL-(UL-LL)*0.2UL=下限(来自框306)UL=上限(来自框306)一般,当心跳速率接近上限或下限的20%时,才考虑改变负载。
如果心跳速率在下限的20%以内,则算法进入到判定框320,它检查DAC值是否刚刚增加。因为DAC值影响发电机112(图2)所施加的负载,这一步主要是检查骑车者承受的负载是否刚刚增加。如果不是,则算法进入框324。如果是,则算法进入框322,它检查并确定DAC值维持不变是否超过预定时间,这里是40秒。这步主要检查骑车者承受的负载是否已40秒种不变。如果DAC值至少已有40秒不变,则程序返回到框306,并重读心跳速率。如果DAC值40秒或更长时间未变,则程序进行到框324,检查DAC值是否处于预定水平,这里选取的值是255。如前所述,255是DAC值的最大值,与发电机112(图2)的励磁线圈上的电压12伏相对应。如果DAC值是255,程序走到框326,显示出一个请求,要求骑车者增加力量,然后返回到框306。如果DAC值底于255,则程序进入框328,增加一预定值的功率,在本实施例中,选为10瓦特。然后,程序返回到判定框306。
如果骑车者的心跳速率在上限的20%以内,则程序走到判定框330,检查心跳速率是否超上限某一预定值,图16中为5。如果是,则心跳速率太高,程序进入框322,使DAC清零,以降低负载,并在显示单元152(图1)上显示一信号告诉骑车者减少用力,并给出一个声音信号(嘟嘟声)直到心跳速率降低到预定限度以内。然后程序返回到框306检查心跳速率。
如果判定框330的结果是骑车者心跳速率没有超过预定值,则程序走到判定框334,检查DAC值是否刚刚降低。如果它刚刚降低,则程序进行到判定值336,检查心跳速率超过上限多长时间。如果DAC值不是刚刚降低,则算法进行到框338。
框336检查DAC值是否在最后20秒内改变,如果是,程序返回框306。如果DAC值已有20秒或更长时间未变,则程序进行到判定框338。
框338检查DAC值,如果它是零,程序进行到框332,这在前面已描述过。如果DAC值不是零,则框340对发电机降低功率一个预定值,图16中为10瓦特。功率降低后,程序返回到框306。
因此,图16的算法维持了加在装置上的负载。这样,心跳速率停留在预定的范围内,并且当心跳速率接近这些极限时,就会启动相应的改正措施。发电机112(图2)对负载变化的快速而精确的响应,使得负载得以迅速调整,并精确得足以使心跳速率保持在预选的范围以内。显示单元152(图1)为骑车者提供的视觉和音响指示,进一步保证了系统的有效性。
结合前面的改进,用以控制心跳速率的方法和装置使得比赛者能选择的最佳的训练条件。用于支撑比赛者的自行车的装置提供了逼真的骑车模拟或感觉。摩擦和发电机效率的校准使负载得以精确模拟和精确模拟各种比赛状态。风负荷和比赛群体位置的影响也能模拟。计算机和比赛路线的选择可以模拟各种各样的比赛,这样,骑车者可以在各种既定的路线上进行实践也可以在骑车者自行安排的路线上实践,选择各种竞赛水平的能力和与模拟的竟赛者进行较量的能力提供了比赛的刺激性。比赛中的参赛群体速度的随机变化使比赛者能实践各种比赛策略。心跳速率的监控使得比赛者能跟踪体力变化让训练装置采取步骤控制影响心跳速率的负载。Huntsville Macro Assembler 65C02 cross assembler for PC-dos 2.0v1.82L Page 1.
ModuleBIKIA;COPYRIGHT 1986 FRONTLINE TECHNOLOGY,INC.
F743*CALIBRATEF743*463DB1 JMP MM0;^FOR NOWF746*9C0C02 STZ DACTMP;ZERO THESEF749*9C0A02 STZ STARTFLGF74C*9C2102 STZ SIGNFLGF74F*H9DDLDA #0F751*8DA07F STA $7FA0;0 DACF754*2098D6 JSR RESVAL;RESET ALL VALUESF757*CALIBRATE0F757*200FF9 JSR CALIBDSP;″CALIBRATE″AND″SPEED″F75A*A922LDA #$22F758*8501STA ADDR+1F75E*6400STA ADDRF768*A96ELDA #LOW M286;″PRESS THE″START″MENU KEY TO BEGINCALIBRATION″F762*A053LDY #HIGH M286F764*2058A3 JSR PRTMSGF767*A924LDA #$24F769*B501STA ADDR+1F76B*A99FLDA #LOW M287;″PRESS THE″HELP″...″F76D*A053LDY #HIGH M287F76F*2056A3 JSR PRTMSGF772*A998LDA #LOW M195;″START″F774*A04ELDY #HIGH M195F776*20E7DA JSR INVMSGC1;1ST SOFTKEYF779*A96ELDA #LOW M65;″PREVIQUS MENU″F77B*A041LDY #HIGH M65F77D*20F4DA JSR INVMSGC2;2ND SOFTKEYF780*A9FCLDA #LOW M81;″MAIN MENU″F782*A042LDY #HIGH M81F784*2001DB JSR INVMSGC3 ;3RD SOFTKEYF787*CALIBRATE2F787*645FSTZ KEYF789*CALIBRATE3F789*A55FLDA KEY ;ANYTHING FROM KEYBOARD?F78B*F0FCBEQ CALIBRATE3;NOF78D*C911CMP #$11;STARTF78F*F015BEQ CALIBRATE5F791*C912CMP #$12 ;PREVIOUS MENUF793*D003BNE *+5F795*ACC7C0 JMP SETUPF798*C913CMP #$13 ;MAIN MENUF79A*D003BNE #+5F79C*4C3D81 JMP MM0F79F*C93FCMP #′?′;HELPF7A1*D0E4BNE CALIBRATE2;HELP MENU HEREAppendixHuntsville Macro Assembler 65C02 cross assembler for PC-dos 2.0v1.82L Page 2ModuleBIKIAF7A3*2068BE JSR BEEPF7A6*CALIBRATE5;STARTF7A6*9DB07F STA $7FB0;START A/DF7A9*AD0A02 LDA STARTFLG;SAVEF7AC*48 PHAF7AD*20B8D6 JSR RESVAL;RESET ALL VALUESF7BO*68 PLAF7B1*8D0A02 STA STARTFLG;RESTOREF7B4*206BBE JSR BEEPF7B7*200FF9 JSR CALIBDSP;″CALIBRATE″AND″SPEED″F7BA*A922LDA #$22F7BC*8501STA ADDR+1F7BE* 6400 STZ ADDRF7C0*A9CALDA #LOW M288;″PEDAL YOUR BICYCLE...″F7C2*A053LDY #HIGH M288F7C4*2050A3 JSR PRTMSGF7C7*A980LDA #$80F7C9*8500STA ADDRF7CB*A900LDA #LOW M289;″YOU HEAR THE BEEP.″F7CD*AO54LDY #HIGH M289F7CF*2050A3 JSR PRTMSGF7D2*A939LDA #LOW M291;″CANCEL″F7D4*A054LDY #HIGH M291F7D6*20E7DA JSR INVMSGC1;1ST SOFTKEYF7D9*209FAS JSR IRQENABLE;ENABLE IRQ′SF7DC*A9C3LDA #LOW DACDAT ;BEGINNING RAM FOR SPEEDF7DE*851CSTA PNT14F7E0*A905LDA #HIGH DACDATF7E2*B510STA PNT14+1F7E4*A9A0LDA #LOW CRSDAT ;BEGINNING RAM FOR VOLTAGEF7E6*851ASTA PNT13F7E8*A90ELDA #HIGH CRSDATF7EA*851BSTA PNT13+1F7EC*9C0B02 STZ EXPFLG;CLR FLGF7EF*CALIBRATE6F7E7*645FSTZ KEYF7F1*9C2102 STZ SIGNFLGF7F4*CALIBRATE7F7F4*A55FLDA KEY ;ANYTHING FROM KEYBOARD?F7F6*D007BNE CALIBRATE8;YESF7F8*A5AALDA TIMER3;0.12 SEC?F7FA*D00ABNE CALIBRATE9;NOF7FC*4CBCF8 JMP CALIBRATE11F7FF*CALIBRATE8F7FF*C911CMP #$11;CANCELFB01*D0ECBNE CALIBRATE6FBO3*4C43F7 JMP CALIBRATEFB06*CALIBRATE9;0.12 SECHuntsville Macro Assembler 65C02 cross assembler for PC-dos 2.0v1.82L Page 3ModuleBIKIAF806*202B9D JSR ADAVG;RUNNING 10 A/D READINGSF809*A544LDA RPMFLG;A SPEED PULSE YET?F808*FOE7BEQ CALIBRATE7;NOF810*2062B7 JSR RPMCALC;CALCULATE SPEEDF810*206B02 BIT EXPFLGF813*7065BVS CALIBRATE10A;ALREADY PAST 23 MPH ON COAST DOWNF815*3043BMI CALIBRATE10;PAST 25 MPH ON UP SIDEF817*AD2903 LDA SPDHEX;>25.5 MPH?F81A*D007BNE CALIBRATE9A;YESF81C*AD2A03 LDA SPDHEX+1;25 MPH YET?F81F*C9FACMP #250F821*90CCBCC CALIBRATE6;NOF823*CALIBRATE9AF823*AD2102 LDA SIGNFLG;2 TIMES?(MINIMIZE NOISE)F826*D005BNE CALIBRATE9A1;YESF828*EE2102 INC SIGNFLGF82B*80C7BRA CALIBRATE7F82D*CALIBRATE9A1F82D*206BBE JSR BEEPF830*A980LDA #$80F832*8D0B02 STA EXPFLGF835*200FF9 JSR CALIBDSP;″CALIBRATE″AND″SPEED″F838*A922LDA #$22F83A*B501STA ADDR+1F830*6400STZ ADDRF83E*A918LDA #LOW M290;″CONTINUE COASTING...″F840*A054LDY #HIGH M290F842*2056A3 JSR PRTMSGF845*A939LDA #LOW M291;″CANCEL″F847*A054LDY #HIGH M291F849*20E7DA JSR INVMSGC1;1ST SOFTKEYF84C*2C0A02 BIT STARTFLG;DAC 105?(2ND COASTDOWN)F84F*109EBPL CALIBRATE6;NOF851*A969LDA #105;LOAD DAC WITH 105F853*8DA07F STA $7FA0F856*4CEFF7 JMP CALIBRATE6F859*CALIBRATE10F859*AD2903 LDA SPDHEX;>255?F85C*D091BNE CALIBRATE6;YESF85E*AD2A03 LDA SPDHEX+1F861*C9E7CMP #231;CROSSED 230 YET?F863*9003BCC *+5F865*4CEFF7 JMP CALIBRATE6;NOF868*AD2102 LDA SIGNFLG;2 TIMES?F86B*D005BNE CALIBRATE10AA;YESF86D*EE2102 INC SIGNFLGF870*A002BRA CALIBRATE7F872*CALIBRATE10AAF872*A9FFLDA #$FFF874*8D0B02 STA EXPFLGF877*4CEFF7 JMP CALIBRATE6Huntsville Macro Assembler 65C02 cross assembler for PC-dos 2.0v1.82L Page 4ModuleBIKIAF87A*CALIBRATE10AF87A*2C0A02 BIT STARTFLG;0OR 105?F87D*101DBPL CALIBRATE10B;0F8AD*AD2A9 LDA SPDHEX+1F882C997 CMP #151;15 MPH YET?F884*900EBCC *+5F886*4CEFF7 JMP CALIBRATE6F889*AD3102 LDA SIGNFLG;2 TIMES?F88C*D006BNE CALIBRATE10A1;YESF88E*EE2102 INC SIGNFLGF891*4CF4F7 JMP CALIBRATE7F894 CALIBRATE10A1F894*A900LDA #0F896*8DA07F STA $7FA0;RE-ZERO DACF899*4C47FA JMP CALDAC105;^FOR NOWF89C*CALIBRATE10BF89C*AD2A03 LDA SPDHEX+1F89F*C933CMP #51;CROSSED 5 MPH YET?F8A1*9003BCC *+5F8A3*4CEFF7 JMP CALIBRATE6;NOF8A6*AD2102 LDA SIGNFLG;2 TIMES?F8A9*D006BNE CALIBRATE10B1;YESF8AB*E2102 INC SIGNFLGF8AE4DF4F7 JMP CALIBRATE7F8B1*CALIBRATE10B1F8B1*2058F9 JSR CALDAC0;DO CALCULATON FOR 0F8B4*A9FFLDA #$FFF8B6*BD0A02 STA STARTFLGF8B94DA6F7 JMP CALIBRATE5F8BC*CALIBRATE11;DISPLAY SPEEDF8BC*A903LDA #3F8BE*85A4STA TIMER3F8C0*202DF9 JSR SPEEDISPF8C3*2COB02 BIT EXPFLG;CALIBRATION RUNNING?F8C6*5044BVC CALIBRATE12;NOF8C8*A000LDY #0F8CA*AD2A03 LDA SPDHEX+1;STORE SPEEDF8CD*911CSTA (PNT14),YF8CF*E61CINC PNT14F8D1*D002BNE *+4F8D3*E61DINC PNT14+1F8D5*A51DLDA PNT14+1F8D7*C940CMP #$40;OUT OF RAM?F8D9*D006BNE CALIBRATE11A;NO;OVER RAM LIMIT-DISPLAY SOMETHINGF8DB*2068BE JSR BEEPF8DE*4CDEF8 JMP *FBEI*CALIBRATE11AHuntsville Macro Assembler 65C02 cross assembler for PC-dos 2.0v1.82L Page 5ModuleBIKIAF8E1*200A02BIT STARTFLGF8E4*1026 BPL CALIBRATE12;DAC0F8E6* CALIBRATE11BF8E6*A000 LDY #0F8E8*AD4904LDA ADTOT;STORE A/D SUM OF 10 READINGSF8EE*911A STA (PNT13),YF8ED*CBINYFBEE*AD4A04LDA ADTOT+1F8F1*911A STA (PNT13),YF8F3*18CLCF8F4*A51A LDA PNT13F8F6*6902 ADC #2F8F8*851A STA PNT13F8FA*A51B LDA PNT13+1F8F0*6900 ADC #0F8FE*851B STA PNT13+1F900*A51B LDA PNT13+1F902*C940 CMP #$40;OUT OF RAM?F904*D006 BNE CALIBRATE12;NO;OVER RAM-DISPLAY SOMETHINGF906*206BBEJSR BEEPF909*4C09F9JMP *F90C* CALIBRATE12F90C*4CF4F7JMP CALIBRATE7F90F* CALIBDSP;DISPLAY″CALIBRATE″AND″SPEED″F90F*206BA3JSR CLRDSPF912*20C3F5JSR HVLIN;HORIZ AND VERT LINESF915*6400 STA ADDRF917*A920 LDA #$20F919*8501 STA ADDA+1F91B*A9A9 LDA #LOW M198;″CALIBRATION″F91D*A04E LDY #HIGH M198F91F*2058A3JSR PRTMSGF922*A924 LDA #$24F924*8501 STA ADDR+1F926*A91E LDA #LOW M213;″SPEED″F928*A04F LDY #HIGH M213F92A*4C58A3JMP PRTMSGF92D* SPEEDISP;DISPLAY SPEEDF92D*AD2903LDA SPDHEXF930*856C STA HEX+1F932*AD2A03LDA SPDHEX+1F935*B56D STA HEX+2F937*646B STZ HEXF939*201FBAJSR HEXASCF93C*A924 LDA #$24F93E*B501 STA ADDR+1F940*6400 STZ ADDRF942*A568 LDA ASCI+5Huntsville Macro Assembler 65C02 cross assembler for PC-dos 2.0v1.82L Page 6ModuleBIKIAF944*A006LDY #6F946*9100STA (ADDR),YF948*E8 INYF949*A569LDA ASCI+6F948*8100STA (ADDR),YF94D*C8 INYF94E*A82ELDA #′.′F950*9100STA (ADDR),YF952*08 INYF953*A564LDA ASCI+7F955*9100STA (ADDR),YF957*60 RTSF958*CALDAC0;COAST DOWN (0 DAC) COMPLETEF958*A9C3LDA #LOW DACDAT;BEGIN SPEED RAMF95A*851ESTA PNT15F95C*A905LDA #HIGH DACDATF95E*851FSTA PNT15+1F960*20C5FD JSR RESCALVAL;RESET CALIB VALUESF963*CALDAC0FF963*6428STZ MCANDF965*6429STZ MCAND+1F967*A000LDY #0F969*A213LDX #19F96B*CALDAC0G;SUM OF 20 SPEEDSF96B*18 CLCF96C*B11ELDA (PNT15),YF96E*6529ADC MCAND+1F970*8529STA MCAND+1F972*A900LDA #0F974*6528ADC MCANDF976*8528STA MCANDF978*CA DEXF979*3808BMI CALDAC0HF97B*2036FA JSR INCPNT15;NEXT POINTF97E*D0EBBNE CALDAC0G;NOT DONE YETF980*4CEDF9 JMP CALDAC0K;YESF983*CALDAC0HF983*2033F4 JSR RDYFACF986*A529LDA MCAND+1F988*85DASTA FACLOF98A*A528LDA MCANDF98C*85D9STA FACMOF98E*207565 JSR NORMAL;NORMALIZE TO FLOATING POINTF991*A268LDX #LOW FACTMP1;STOREF993*A003LDY #HIGH FACTMP1F995*200D68 JSR MOVMFF998*AD4903 LDA HRTCNT;1ST TIME?F99B*F03ABEQ CALDAC0I;YESF99D*A96DLDA #LOW FACTMP2;GET LAST AVGF99F*A003LDY #HIGH FACTMP2Huntsville Macro Assembler 65C02 cross assembler for PC-dos 2.0v1.82LPage 7ModuleBIKIAF9A1*208D64 JSR FSUB;LAST-THIS AVGF9A4*20456B JSR MOVAFF9A7*A991 LDA #LOW INT480;480 20*.12*20(AVG)*10(SPED)F9A9*A064 LDY #HIGH INT480F9AB*20DF67 JSR MOVFMF9AE*20EAFD JSR FPDIVF9B1*A263 LDX #LOW FACTMP;YF9B3*A003 LDY #HIGH FACTMPF9B5*200D6B JSR MOVMFF9B8*A968 LDA #LOW FACTEMP1;THIS READINGF9BA*A003 LDY #HIGH FACTMP1F9BC*20DF67 JSR MOVFMF9BF*A96D LDA #LOW FACTMP2;LAST READF9C1*A008 LDY #HIGH FACTMP2F9C8*200465 JSR FADDF9C6*A9B4 LDA #LOW INT0025;0.00251/(2*20(AVG)*10(SPEED))F9C8*A064 LDY #HIGH INT0025F9CA*206566 JSR FMULTF9CD*A27D LDX #LOW ARGTMP;XF9CF*A003 LDY #HIGH ARGTMPF9D1*200D68 JSR MOVMFF9D4*2038FC JSR LINREGF9D7* CALDAC0IF9D7*A204 LDX #4;STORE THIS AS LAST READF9D9* CALDAC0JF9D9*BD6803 LDA FACTMP1,XF9DC*9D6D03 STA FACTMP2,XF9DF*CA DEXF9E0*10F7 BPL CALDAC0JF9E2*EE4903 INC HRTCNTF9E5*2036FA JSR INCPNT15;NEXT POINTF9E8*F003 BEQ CALDAC0K ;DONEF9EA*AC63F9 JMP CALDAC0F ;NEXT AVGF9ED* CALDAC0KF9ED*2033F4 JSR RDYFACF9F0*CE4903 DEC HRTCNTF9F3AD4903LDA HRTCNT ;NEED TO DECREMENT?F9F6*85DA STA FACLOF9F8*20B6FC JSR ACALCF9FB*A99B LDA #LOW INT11829;11.829F9FD*A064 LDY #HIGH INT 11829F9FF*206566 JSR FMULTFAO2*A2E3 LDX #LOW FPV2FA04*A004 LDY #HIGH FPV2FAO6*200D6B JSR MOVMFFAO9*2023FD JSR BCALCFAOC*A99B LDA #LOW INT11829FA0E*A864 LDY #HIGH INT11829Huntsville Macro Assembler 65C02 cross assembler for PC-DOS 2.0v1.82L Page 8ModuleBIKIAFA10*206566 JSR FMULTFA13*A2DEJDX #LOW FPVFA15*A004LDY #HIGH FPVFA17*200D68 JSR MDVMFFAIA*20BOFD JSR LINREG20;CALC AT 20 MPH??FAID*A9A0LDA #LOW INT23658;236.58FAIF*A064LDY #HIGH INT23658FA21*206566 JSR FMULTFA24*A2E8LDX #LOW FPFR20FA26*A004LDY #HIGH FPFR20FA26*200D68 JSR MOVMFFA28*2061FD JSR RCALC;DISPLAY R SOMEWHERE????FA2E*A2CALDX #LOW FPARGFA30*A003LDY #HIGH FPARGFA32*200D88 JSR MOVMF;JSR DUMPDATAFA35*60 RTS;END DAC 0 CALIBRATIONFA36*INCPNT15FA36*E61EINC PNT15FA38*D002BNE *+4FA3A*E61FINC PNT15+1FA3C+A51ELDA PNT15;DONE?FA3E*C51CCMP PNT14FA40*D004BNE INCPNT15A ;NOFA42*A51FLDA PNT15+1FA44*C510CMP PNT14+1FA46*INCPNT15AFA46*68 RTS;START DAC 105 CALCULATIONFA47*CALDAC105FA47*20C5FD JSR RESCALVALFA4A*A903LDA #LOW DACDAT;SPEEDSFA4C*851ESTA PNT15FA4E*A905LDA WHICH DACDATFA50*851FSTA PNT15+1FA52*A9A0LDA #LOW CRSDAT;VOLTAGESFA54*851ASTA PNT13FA56*A90ELDA #HIGH CRSDATFA58*851BSTA PNT13+1FA5A*DAC105FFA5A*2833G4 JSR RDYFACFA5D*A000LDY #0FA5F*B11ELDA (PNT15),YFA61*85DASTA FACLOFA63*207565 JSR NORMALFA66*203B67 JSR DIV10FA69*A27CLDX #LOW ARGTMP;XHuntsville Macro Assembler 65C02 cross assembler for PC-DDS 2.0v1.82L Page 9ModuleBIKIAFA68*A003LDY #HIGH ARGTMPFA6D*200065 JSR MOVMFFA70*2033F4 JSR RDYFACFA73*A000LDY #0FA75*B11ALDA (PNT13),YFA77*85D9STA FACMOFA79*C8 INYFA7A*B11ALDA (PNT13),YFA7C*85DASTA FACLOFA7E*207565 JSR NORMALFA81*A9C4LDA #LOW INT9765;NORMALIZE TO VOLTSFA83*A063LDY #HIGH INT9765FA85*206566 JSR FMULTFA88*A2C5LDX #LOW FPACCFA8A*A003LDY #HIGH PFACCFA8C*200D68 JSR MOVMFFA8F*A9C5LDA #LOW FPACCFA91*A003LDY #HIGH FPACCFA93*206566Q JSR FMULT;^2FA96*A263LDX #LOW FACTMP;YFA98*A003LDY #HIGH FACTMP;YFA9A*200D68 JSR MOVMFFA9D*2038FC JSR LINREGFAA8*2036FA JSR INCPNT15FAA3*D003BNE DAC105G;NOT DONE YETFAA5*4CC1FA JMP DAC105KFAAB*DAC105GFAAB*18 CLCFAA9*A51ALDA PNT13FAAB*6982ADC #2FAAD*851ASTA PNT13FAAF*A51BLDA PNT13+1FABI*6900ADC #8FAB3*851BSTA PNT13+1FAB5*E629INC MCAND+1;NUMBER OF POINTSFAB7*F003BEQ *+5FAB9*4C5AFA JMP DAC105FFABC*E628INC MCANDFABE*4C5AFA JMP DAC105FFACI*DAC105KFAC1*2033F4 JSR RDYFACFAC4*18 CLCFAC5*AF29LDA MCAND+1FAC7*6901ADC #1FAC9*85BASTA FACLO;NEED TO DECREMENT BY 1?FACB*A52BLDA MCANDFACD*6900ADC #8FACF*85D9STA FACMOFADI*28B6FD JSR ACALCFAD4*023FD JSR BCALCFAD7*20B0FD JAE LINREG20;CALC VALUE AT 20 MPHHuntsville Macro Assembler 65C02 cross assembler for PC-DOS 2.0v1.82L Page 10ModuleBIKIAFADA*A2EDLDX #LOW FPE20FADC*A004LDY #HIGH FPE20FADE*200D68 JSR MOVMFFAE1*2061FD JSR RCALCDISPLAY SOMEWHERE???FAE4*A2A2LDX #LOW FPWINDFAE6*A004LDY #HIGH FPWINDFAE8*200D68 JSR MOVMFFAEB*20C5FD JSR RESCALVALFAEE*A9C3LDA #LOW DACDATFAFO*851ESTA PNT15FAF2*A905LDA #HIGH DACDATFAF4*851fSTA PNT15+1FAF6*DAC105LFAFE*6428STZ MCANDFAFE*6429STZ MCAND+1FAFA*A000LDY #0FAFC*A204LDX #4FAFE*DAC105MFAFE*18 CLCFAFF*B11ELDA (PNT15),YFB01*6529ADC MCAND+1FB03*6529STA MCAND+1FB05*A900LDA #0FB07*6528ADC MCANDFB09*8528STA MCANDFB0B*CA DEXFB0C*3008BMI DAC105NFB0E*2036FA JSR INCPNT15FB11*D0EBBNE DAC105MFB13*4C91FB JMP DAC105RFB16*DAC105NFB16*2033F4 JSR RDYFACFB19*A529LDA MCAND+1FB1B*05DASTA FACLOFB1D*A528LDA MCANDFB1F*05D9STA FACMOFB21*207565 JSR NMORMALFB24*A268LDX #LOW FACTMP1FB26*A003LDY #HIGH FACTMP1FB28*AD200D68JSR MOVMFFB2B*AD4903 LDA HRTCNT;1ST READING/FB2E*D003BNE*+5FB30*407BFB JMPDAC105P;YESFB33*A96DLDA #LOW FACTMP2;LAST READFB35*A003LDY #HIGH FACTMP2FB37*20ED64 JSR FSUBFB3A*A9A5LDA #LOW INT033;.033333 1/(5*.12*10*5)FB3C*A064LDY #HIGH INT033FB3E*206566 JSR FMULTFB41*A263LDX #LOW FACTMP;YFB43*A003LDY #HIGH FACTMPFB45*200D6b JSR MOVMFHuntsville Macro Assembler 65C02 cross assembler for PC-DOS 20v1.82L Page 11ModuleBIKIAFB4A*AP68LDA #LOW FACTMP1FB4A*A003LDY #HIGH FACTMP1FB4C*20DF67 JSR MOVFMFB4F*A96DLDA #LOW FACTMP2FB51*AOOBLDY #HIGH FACTMP2FB53*200465 JSR FADDFB56*264568 JSR MOVAFFB59*A919LDA #LOW INT100;2*5*10FB5B*A064LDY #HIGH INT100FB50*20DF67 JSR MOVFMF860*28EAFD JSR FPDIVFB63*A270LDX #LOW ARGTMP;XFB65*A003LDY #HIGH ARGTMPFB67*200D68 JSR MOVMFFB6A*A963LDA #LOW FACTMPFB6C*A003LDY #HIGH FACTMPFB6E*206566 LSR FMULTFB71*A263LSX #LOW FATMP;YFB73*A003LDY #HIGH FACTMPFB75*200D68 JSR MOVMFFB7B*263BFC JSR LINREGFB7B*DAC105PFB7B*A204LDX #4FB7D*DAC105Q;THIS READ TO LAST READINGFB7D*BD6803 LDA FACTMP1,XFBB0*9D6D83 STA FACTMP2,XFBB3*CA DEXFBB4*16F7BPL DAC105QFB86*EE4903 INC HRTCNT;NUMBER OF POINTSFB89*2836FA JSR INCPNT15;NEXT POINTFB80*F003BEQ DAC105R;DONEFB8E*4CF6FA JMP DAC105L;NEXT AVGFB91*DAC105RFB91*2033F4 JSR RDYFACFB94*CE4903 DEC HRTCNTFB97*AO4903 LDA HRTCNTF89A*85DASTA FALCOF69C*20B6FC JSR ACALCFR9F*2023FD JSR BCALCFBA2*20B0FD JSR LINREG20FBA5*A99BLDA #LOW INT11829FBA78A064LSY #HGH INT11829FBA9*206566 JSR FMULTFBAC*204568 JSR MAOVAFFBAF*A9EBLDA #LOW FPFROFBB1*A004LDY #HIGH ′FPFR20FBB3*20DF67 JSR MOVFMFBB6*20F064 JSR FSUBTFBB9*A9EDLDA #LOW FPE20FBBB*A004LDY #HIGH FPE20FBBD*200P966 JSR CONUPKHuntsville Macro Assembler 65C02 cross assembler for PC-DOS 2.0v1.82L Page12ModuleBIKIAFECO*20EAFDJSR FPDIVFBC3*204568JSR MOVAFFBC6*A9AA LDA #LOW INT6029 ;0.6029FBCB*A9A4 LDY #HIGH INT6029FBCA*20DF67JSR MOVFMFBCD*20EAFDJSR FPDIVFBDO*A2F2 LDX #LOW FPMFB02*A004 LSY #HIGH FPMFBD4*200D6EJSR MOVMFFBD7*2061FDJSR RCALC ;DISPLAY SOMEWHERE???FBDA* DAC105RAFBDA*286BA3JSR CLRDSPFBOD*20AEA3JSR DSPONCFBE0*A920 LDA #$20FBE2*8501 STA ADDR+1FBE4*6400 STZ ADDRFBE6*A9DE LDA #LOW FPVFBE8*A004 LDY #HIGH FPVFBEA*206DFEJSR FLTPRTFBED*A921 LDA #$21FBEF*8501 STA ADDR+1FBF1*A9E3 LDA #LOW FPV2FBF3*A004 LDY #HIGH FPV2FBF5*206DFEJSR FLTPRTFBF8*A922 LDA #$22FBFA*8501 STA ADDR+1FBFC*A9F2 LDA #LOW FPMFBFE*A004 LDY #HIGH FPMFC00*206DFEJSR FLTPRTFC03*A923 LDA #$23FC05*6301 STA ADDR+1FC07*A9CA LDA #LOW FPARGFC09*A003 LDY #HIGH FPARGFCOE*206DFEJSR FLPRTFC0E*A924 LDA #$24FC10*8501 STA ADDR+1FC12*A9A2 LDA #LOW FPWINDFC14*A004 LDY #HIGH FPWINDFC16*206DFEJSR FLTPRTFC19*A925 LDA #$25FC18*8501 STA ADDR+1FC1D*A9D9 LDA #LOW FPRFC1F*A004 LDY #HIGH FPRFC21*206DFEJSR FLTPRTFC24*206BBEJSR BEEP;JSR DUMPDATAFC27*A9FC LDA #LOW MBI;″MAIN MENU″FC29*A042 LDY #HIGH M81FC2B*20E7DAJSR INVMSGC1FC2E* DAC105RBFC2E*207CA5JSR KEYIN ;′FOR NOWFC31*C911 CMP #$11FC33*D0F9 BNE DAC105RBHuntsville Macro Assembler 65C02 cross assembler for PC-DOS 2.0v1.82L Page 13ModuleBIKIAFC35*404081JMP MM;DAC 105 CALCULATION DONEFC39 LINREG ;RUNNING LINEAR REGRESSIONFC38*A970 LDA #LOW ARGTMP ;XFC3A*A003 LDY #HIGH ARGTMPFC3C*20DF67JSR MOVFMFC3F*A963 LDA #LOW FATMP ;YFC41*A003 LDY #HIGH FACTMPFC43*206566JSR FMULTFC46*A901 LDA #LOW FPSUMXYFC48*A005 LDY #HIGH FPSUMXYFC4A*200465JSR FADDFC4D*A201 LSX #LOW FPSUMXYFC4F*A005 LDY #HIGH FPSUMXYFC51*200D68LSR MOVMFFC54*A97C LDA #LOW ARGTMP ;XFC56*A003 LDY #HIGH ARGTMPFC58*20DF67JSR MOVFMFC5B*A9F7 LDA #LOW FPSUMXFC5D*A004 LDY #HIGH FPSUMXFC5F*200465JSR FADDFC62*A2F7 LDX #LOW FPSUMXFC64*A004 LDY #HIGH FPSUMXFC66*200D6BJSR MOVMFFC69*A97C LDA #LOW ARGTMP ;XFC6B*A003 LDY #HIGH ARGTMPFC6D*20DF67JSR MOVFMFC70*A97C LDA #LOW ARGTMPFC72*A003 LDY #HIGH ARGTMPFC74*206566JSR FMULT ;X^2FC77*A906 LDA #LOW FPSUMXXFC79*A005 LDY #HIGH FPSUMXXFC7B*200465JSR FADDFC7E*A206 LDX #LOW FPSUMXXFCB0*A005 LDY #HIGH FPSUMXXFCB2*200D68JSR MOVMFFC85*A963 LDA #LOW FACTMP ;YFC87*A003 LDY #HIGH FACTMPFC89*20DF67JSR MOVFMFC8C*A9FC LDA #LOW FPSUMYFCBE*A004 LDY #HIGH FPSUMYFC90*200465JSR FADDFC93*A2FC LDX #LOW FPSUMYFC95*A004 LDY #HIGH FPSUMYFC97*200D68JSR MOVMFFC9A*A963 LDA #LOW FACTMP ;YHuntsville Macro Assembler 65C02 cross assembler for PC-DOS 2.0v1.82L Page 14ModuleBIKIAFC9C*A003 LDY #HIGH FACTMPFC9E*200F67JSR MOVFMFCA1*A963 LDA #LOW FACTMPFCA3*AO03 LDY #HIGH FACTMPFCA5*206566JSR FMULTFCA8*A90B LDA #LOW FPSUMYYFCAA*A005 LDY #HIGH FPSUMYYFCAC*200465JSR FADDFCAF*A20B LDX #LOW FPSUMYYFCB1*A005 LDY #HIGH FPSUMYYFCBS*ACDD68JMP MOVMFFCB6* ACALC ;CALUCULATE ″A″(Y=AX+B)FC86*207565JSR NORMAL ;NORMALIZE″N″FC89*A263 LDX #LOW FACTMPFC88*A008 LDY #HIGH FACTMPFCBD*A9F7 LDA #LOW FPSUMXFCC2*A004 LDY #HIGH FPSUMXFCC4*20DF67JSR MOVFMFCC7*A9FC LDA #LOW FPSUMYFCC9*A004 LDY #HIGH FPSUMYFCC8*206566LSR FMULTFCCE*204568JSR MOVAFFCD1*A963 LDA #LOW FACTMP ;NFCD3*A003 LDY #HIGH FACTMPFCD5*20DF67JSR MOVFMFCD8*20EAFDJSR FPDIVFCD8*A901 LDA #LOW FPSUMXYFCDD*A005 LDY #HIGH FPSUMXYFCDF*20DE64JSR FSUBFCE2*A272 LDX #LOW FACTMP3 ;STOREFCE4*A003 LDY #HIGH FACTMP3FCE6*200D68JSR MOVMFFCE9*A9F7 LDA #LOW FPSUMXFCEB*A004 LDY #HIGH FPSUMXFCED*206F67JSR MOVFMFCF0*A9F7 LDA #LOW FPSUMXFCF2*A004 LDY #HIGH FPSUMXFCF4*206566JSR FMULTFCF7*204568JSR MOVAFFCFA*A963 LDA #LOW FACTMP ;NFCFC*A003 LDY #HIGH FACTMPFCFE*20DF67JSR MOVFMFD01*20EAFDJSR FPDIVFD04*A906 LDA #LOW FPSUMXXFD06*A005 LDY #HIGH FPSUMXXFD08*20ED64JSR FSUBFD08*A277 LDX #LOW FACTMP4 ;STOREFD0D*A003 LDY #HIGH FACTMP4FD0F*200D68JSR MOVMFFD12*A972 LDA #LOW FACTMP3FD14*A003 LDY #HIGH FACTMP3FD16*20C966JSR CONUPKHuntsville Macro Assembler 65C02 cross assembler for PC-DOS 2.0v1.82L Page15ModuleBIKIAFD19*2DEAFDJSR FPDIVFDIC*A2CF LDX #LOW FPA ;STOREFDIE*A004 LDY #HIGH FPAFD20*4C0D68JMP MOVMFFD28* BCALC ;CALCULATE ″B″(Y=AX+B)FD28*A9FC LDA #LOW FPSUMYFD25*A004 LDY #HIGH FPSUMYFD27*20C966JSR CONUPKFD2A*A963 LDA #LOW FACTMP ;NFD2C*A003 LDY #HIGH FACTMPFD2E*20DF67JSR MOVFMFD31*20EAFDJSR FPDIVFD34*A26D LDX #LOW FACTMP2FD36*A003 LDY #HIGH FACTMP2FD3B*200D68JSR MOVMFFD8B*A9F7 LDA #LOW FPSUMXFD3D*20C966LDY #HIGH FPSUMXFD3F*20C966JSR CONUPKFD42*A963 LDA #LOW FACTMP ;NFD44*A003 LDY #HIGH FACTMPFD46*20DF67JSR MOVFMFD49*20EAFDJSR FPDIVFD4C*A9CF LDA #LOW FPAFD4E*A004 LDY #HIGH FPAFD50*206566JSR FMULTFD53*A96D LDA #LOW FACTMP2FD55*A003 LDY #HIGH FACTMP2FD57*20ED64JSR FSUBFD5A*A3D4 LDX #LOW FPB ;STOREFD5C*A004 LDY #HIGH FPBFD5E*4C0D68JMP MOVMFFD61* RCALC ;CALCULATE CORRELATION COEFFICIENTFD61*A972 LDA #LOW FACTMP3FD63*A003 LDY #HIGH FACTMP3FD65*20DF67JSR MOVFMFD68*A972 LDA #LOW FACTMP3FD6A*A003 LDY HIGH FACTMP3FD60*206566JSR FMULTFD6F*A268 LDX #LOW FACTMP1 ;STOREFD71*A003 LDY #HIGH FACTMP1FD73*200D68JSR MOVMFFD76*A9FC LDA #LOW FPSUMYFD78*A004 LDY #HIGH FPSUMYFD7A*20DF67JSR MOVFMFD7D*A0FC LDA #LOW FPSUMYFD7F*A004 LDY #HIGH FPSUMYFD81*206566JSR FMULTFD84*204568JSR MOVAFFD87*A963 LDA #LOW FACTMP ;NFD89*A003 LDY #HIGH FACTMPFD88*20DF67JSR MOVFMFD8E*20EAFDJSR FPDIVFD91*A90B LDA #LOW SUMYYHuntsville Macro Assembler 65C02 cross assembler for PC-DOS 2.0v1.82L Page 16ModuleBIKIAFD93*A005 LDY #HIGH FPSUMYYFD95*20ED64 JSR FSUBFD98*A977 LDA #LOW FACTMP4FD9A*A008 LDY #HIGH FACTMP4FD9C*206566 JSR FMULTFD9F*A968 LDA #LOW FACTMP1FDA1*A008 LDY #HIGH FACTMP1FDA3*20C966 JSR CONUFKFDA6*20EAFD JSR FPDIVFDA9*A2D9 LDX #LOW FPR ;STOREFDAB*A004 LDY #HIGH FPRFDAD*4C0D68 JMP MOVMFFDBO* LINREG20 ;CALCULTE Y AT 20 MPHFDBO*A9AF LDA #LOW INT20FDB2*A064 LDY #HIGH INT20FDB4*20DF67 JSR MOVFMFDB7*A9CF LDA #LOW FPAFDB9*A004 LDY #HIGH FPAFDBB*206566 JSR FMULTFDBE*A9D4 LDA #LOW FPBFDCO*A004 LDY #HIGH FPBFDC2*4C0465 JMP FADDFDC5* RESCALVAL ;RESET CALIBRATON VALUESFDC5*6428 STZ MCANDFDC7*6429 STZ MCAND+1FDC9*9CF704 STZ FPSUMXFDCC*9CFC04 STZ FPSUMYFDCF*9C0105 STZ FPSUMXYFDD2*9C0605 STZ FPSUMXXFDD5*9C0B05 STZ FPSUMYYFDD8*9C4903 STZ HRTCNTFDDB*60 RTSHuntsville Macro Assembler 65C02 cross assembler for PC-DOS 2.0v1.82L Page 1ModuleBIKIA;COPYRIGHT 1986 FRONTLINE TECHNOLOGY, INC.896EPOWERCALC; CALCULATE POWER896E A99D LOA #LOW FPGRADE8970 A004 LDY #HIGH FPGRADE8972 20DF67 JSR MOVFM8975 A9A2 LDA #LOW FPWIND8977 A004 LDY #HIGH FPWIND8979 200465 JSR FADD897CPOWERCAL0897C 24DB BIT FACSGN;NEGATIVE?897C 1004 BPL POWERCALCI897E 9CCF03 STZ FPPOWER;YES,MAKE 08983 60 RTS8984POWERCALCI8984 A98E LDA #LOW FPSPEED8988 A004 LDY #HIGH FPSPEED8988 206566 JSR FMULT8988 A951 LDA #LOW INT0447;0.0447(MPF TO METERS/SEC.DIV BY 10)898D A063 LDY #HIGH INT0447898F 206566 JSR FMULT8992 A2CF LDX #LOW FPPOWER8994 200D68 JSR MOVMF8999 60 RTS899AGRADECALC;CALCULATE GRADE POWER899A AD4203 LDA GRADE899D 207568 JSR FLOAT89A0 A9D3 LDA #LOW INT444889A2 A063 LDY #HIGH INT444889A4 206566 JSR FMULT89A7 A9CE LDA #LOW INT017889A9 A063 LDY #HIGH INT017889AB 200465 JSR FAD89AE A998 LDA #LOW FPWEIGHT89B0 A004 LDY #HIGH FPWEIGHT89B2 206566 JSR FMULT89B5 A29D LDX #LOW FPGRADE89B7 A004 LDY #HIGH FPGRADE89B9 200D68 JSR MOVMF89BC 60 RTS89BDWINDCALC89BD A998 LDA #LOW FPWEIGHT89BF A004 LDY #HIGH FPWEIGHT89C1 20DF67 JSR MOVFM89C4 A9E7 LDA #LOW INT205;0.000205555689C6 A063 LDY #HIGH INT20589CB 206566 JSR FMULT89CB A9E2 LDA #LOW INT226;0.00226666789CD A063 LDY #HIGH INT226Huntsville Macro Assembler 65C02 cross assembler for PC-DDS 2.0v1.82LModule BIKIA89CF 200465JSR FADD89D2 A263 LDX #LOW FACTMF894 A003 LDY #HIGH FACTMF89D6 200D68JSR MOVMF89D9 A998 LDA #LOW FPSPEED1089D8 A004 LDY #HIGH FPSPEED1089DD 20C966JSR CONVPN89E0 A9EC LDA #LOW INT2;0289E2 A063 LDY #HIGH INT289E4 20DF67JSR MOVFM89E7 209268JSR FPWRT89EA A963 LDA #LOW FACTMP89EC A003 LDY #HIGH FACTMP89EE 206566JSR FMULT89F1 AD6905LDA WINDLOADFLGG89F4 D008 BNE WINDCALC289F6 WINDCALC189F6 A2A2 LDX #LOW FPWIND89F8 A004 LDY #HIGH FPWIND89FA 200D68JSR MOVMF89FD 60RTS89FE WINDCALC289FE A90F LDA #LOW INTPT7;0.788A00 A064 LDY #HIGH INTPT78A02 206566JSR FMULT8A05 80EF BRA WINDCALC18A07 SPEEDDIV108A09 A98E LDA #LOW FPSPEED8A09 20DF67LDY #HIGH FPSPEED8A06 20DF67JSR MOVFM8A0E 203B67JSR DIV108A11 A293 LDX #LOW FPSPEED108A13 A004 LDY #HIGH FPSPEED108A15 200D68JSR MOVMF8A18 60RTS8A19 PAGEHuntsville Macro Assembler 65C02 Cross assembler for PC-DOS 2.0v1.82L Page 3ModuleBIKIA8A19 DACCALC;CALCULATE DAC VALUE AND LOAD8A19 2033F4JSR RDYFAC8A1C AD4A04LDA ADTOT+18A1F 85DA STA FACLO8A21 ADA904LDA ADTOT8A24 85D9 STA FACMO8A26 207565JSR NORMAL8A29 A9C4 LDA #LOW INT9765;.0097656258A2B A063 LDY #HIGH INT97658A2D 206566JSR FMULT;NORMALIZE TO VOLTS8A30 A2C5 LDX #LOW FPACC8A32 A003 LDY #HIGH FPACC8A34 200D68JSR MOVMF8A37 A9C5 LDA #LOW FPACC8A39 A003 LDY #HIGH FPACC8A3B 026566JSR FMULT;^28A3E A993 LDA #LOW FPSPEED10;SPEED/108A40 A004 LDY #HIGH FPSPEED108A42 206566JSR FMULT8A45 A9F6 LDA #LOW INT1408 ;14.088A47 A063 LDY #HIGH INT14088A49 206566JSR FMULT8A4C A263 LDX #LOW FACTMP8A4E A003 LDY #HIGH FACTMP8A59 A956 JSR MOVMF;SAVE8A59 A956 LDA #LOW INT18A55 A063 LDY #HIGH INT18A57 20C966JSR CONVPK8A5A A993 LDA #LOW FPSPEED108A5C A004 LDY #HIGH FPSPEED108A5E 20DF67JSR MOVFM8A61 20EAFDJSR FPDIV;1/V8A64 A937 LDA #LOW INTE8A66 A064 LDY #HIGH INTE8A68 20C966JSR CONVPK8A68 A5D6 LDA FACEXP;GET READY FOR FPWRT8A6D 209268JSR FPWRT8A70 A9FB LDA #LOW INT12832;0.128328A72 A063 LDY #HIGH INT128328A74 206566JSR FMULT8A77 204568JSR MOVAF8A7A A900 LDA #LOW INT129038A7C A064 LDY #HIGH INT129038A7E 20DF67JSR MOVFM8A81 20F064JSR SUBT8A84 A963 LDA #LOW FACTMP8A86 A003 LDY #HIGH FACTMP8A86 206566JSR FMULT8A8B A9F2 LDA #LOW FPM8A8D A004 LDY #HIGH FPM8A8F 206566JSR FMULT8A92 A263 LDX #LOW FACTMP8A94 A003 LDY #HIGH FACTMPHuntsville Macro Assembler 65C02 cross assembler for PC-DOS 2.0v1.82L Page 4ModuleBIKIA8A96 JSR MOVMF8A99 A993 LDA #LOW FPSPEED108A98 A004 LDY #HIGH FPSPEED108A9D 20DF67JSR MOVFM8AA0 A9DE LDA #LOW FPV8AA2 A004 LDY #HIGH FPV8AA4 206566JSR FMULT8AA7 A2CA LDX #LOW FPARG8AA9 A003 LDY #HIGH FPARG8AAB 200D68JSR MOVMF;SAVE8AAE A993 LDA #LOW FPSPEED108A80 A004 LDY #HIGH FPSPEED108AB2 20DF67JSR MOVFM8AB5 A993 LDA #LOW FPSPEED108AB7 A004 LDY #HIGH FPSPEED108AB9 206566JSR FMULT8ABC A9E3 LDA #LOW FPV28ABE A004 LDY #HIGH FPV28AC0 206566JSR FMULT8AC3 A9CA LDA #LOW FPARG8AC5 A003 LDY #HIGH FPARG8AC7 200465JSR FADD8ACA A963 LDA #LOW FACTMP8ACC A003 LDY #HIGH FACTMP8ACE 200465JSR FADD8AD1 A255 LDX #LOW FPRPWR;REAL POWER8AD3 A004 LDY #HIGH FPRWR8AD5 200D68JSR MOVMF8AD8 DACCALC9;KEEP RUNNING STACK OF 108AD8 18CLC8AD9 A982 LDA #LOW FPRPWRSUM+408AD8 8522 STA PNT178ADD 6905 ADC #58ADF 8520 STA PNT168AE1 A904 LDA #HIGH FPRPWRSUM+408AE3 8523 STA PNT17+18AE5 6900 ADC #08AE7 8521 STA PNT16+18AE9 A208 LDX #88AEB DACCALC108AEB A004 LDY #48AED DACCALC118AED B122 LDA (PNT17),Y8AEF 9120 STA (PNT16),Y8AF1 88DEY8AF2 10F9 BPL DACCALC118AF4 CADEX8AF5 3013 BMI DACCALC128AF7 38SEC8AF8 A522 LDA PNT178AFA 8520 STA PNT16Huntsville Macro Assembler 65C02 cross assembler for PC-DOS 2.0v1.82L Page 5ModuleBIKIA8AFC E905 SBC #58AFE 8522 STA PNT178B00 A523 LDA PNT17+18B02 8531 STA PNT16+18B04 E900 SBC #08B06 8523 STA PNT17+18B08 80E1 BRA DACCALC108B0A DACCALC128B0A A25A LDX #LOW FPRPWRSUM8B0C A004 LDY #HIGH FPRPWRSUM8B0E 200D68JSR MOVMF8B11 A9CF LDA #LOW FPPOWER8B13 A003 LDY #HIGH FPPOWER8B15 20C966JSR CONVPK8B18 20EAFDJSR FPDIV8B1D A263 LDX #LOW FACTMP;SAVE8B1D A003 LDY #HIGH FACTMP8B1F 200D68JSR MOVMF8B22 A956 LDA #LOW INT1;<1?8B24 A063 LDY #HIGH INT18B26 20946 JSR FCOMP8B29 3008 BMI DACCALC00;YES8B2B AD0C02LDA DACTMP;ALREADY AT FULL LOAD?8B2E C9FF CMP #$FF8B30 D001 BNE *+3 ;NO8B32 60RTS ;YES. RETURN WITHOUT CHANGING8B33 DACCALC008B33 A963 LDA #LOW FACTMP8B35 A003 LDY #HIGH FACTMP8B37 20DF67JSR MOVFM8B3A A9D8 LDA#LOW INT14 ;1.48B3C 209468JSR FCOMP8B41 3006 BMI DACCALC0 ;OK,<1.4;JSR BEEP ;^TEST8B43 A9D8 LDA #LOW INT14 ;LOAD WITH 1.48B45 A063 LDY #HIGH INT148B47 8004 BRA DACCALC0A8B49 DACCALC08B49 A963 LDA #LOW FACTMP ;GET VALUE BACK8B4B A003 LDY #HIGH FACTMP8B4D DACCALC0A8B4D 20DF67JSR MOVFM8B50 A944 LDA #LOW FPDAC8B52 A004 LDY #HIGH FPDAC8B54 206566JSR FMULT8B57 A244 LDX #LOW FPDAC8B59 A004 LDY #HIGH FPDAC8B5B 200D68JSR MOVMFHuntsville Macro Assembler 65C02 cross assembler for PC-DOS 2.0v1.82L Page 6ModuleBIKIA8B5E 203664 JSR FADDH8B61 20D468 JSR QINT8B64 A5D8LDA FACMOH ;>255?8B66 F004BEQ DACCALC2 ;MAYBE NOT8B68 DACCALC18B68 A9FFLDA #$FF ;LOAD DAC PRETTY HEAVILY8B6A 8015BRA DACCALC48B6C DACCALC2 ;TRY NEXT BYTE8B6C A509LDA FACMO8B6E D0F8BNE DACCALC18B70 A5DALDA FACLO8B72 D00DBNE DACCALC48B74 A204LDX #48B76 DACCALC38B76 BDC963 LDA INT10,X8B79 9D4404 STA FPDAC,X8B7C CA DEX8B7D 10F7BPL DACCALC38B7F A90ALDA #108B81 DACCALC48B81 8D0C02 STA DACTMP8B84 8DA07F STA #7FAO8B87 60 RTSHuntsville Macro Assembler 65C02 cross assembler for PC-DOS 2.0v1.82L Page 1ModuleBIKIA;COPYRIGHT 1986 FRONTLINE TECHNOLOGY,INC.AC43* RIDCOR ;RIDE COURSEAC43*2068BEJSR BEEPAC46*9C4403STZ TIMTRLFLGAC49*AD1403LDA RIDLEVELAC4C*D005 BNE RIDCOR3AC4E*A980 LDA #$80AC50*8D4403STA TIMTRLFLG ;IGNORE PACK POSITIONAC53* RIDCOR3AC53*20728DJSR LDINITDACAC56*9C0A02STZ STARTFLGAC59*9C0B02STZ EXPFLGAC5C*2003C4JSR MENU1AC5F*20A3A5JSR DSPCRS ;DISPLAY COURSEAC62*206BC3JSR PRTLEVELAC65*2C4403BIT TIMTRLFLG ;TIME TRIAL?AC68*3003 BMI *+5 ;YES,FORGET PACK POSITIONAC6A*2009EAJSR MENU27AC6D*200BC7JSR MENU2SOFTAC70*648E STZ DISTAC72*208SD6JSR RESVALAC75*202EB3JSR RIDCURSAC78* RIDCOR4AC78*645F STZ KEYAC7A*20D3C2JSR KEYIN1AC7D*F0FB BEQ *-3AC7F*C911 CMP #$I1 ;STARTAC81*D003 BNE *+5AC83*4CA4ACJMP RIDCOR5AC86*C912 CMP #$12 ;EXPAND SCREENAC88*D003 BNE *+5AC8A*4C05B0JMP RIDCOR6AC8D*C913 CMP #$13 ;RESET VALUESAC8F*D009 BNE RIDCOR4AAC91*2068BEJSR BEEPAC94*2088D6JSR RESVALAC97*4C53ACJMP RIDCOR3AC9A* RIDCOR4AAC9A*C914 CMP #$14 ;PREVIOUS MENUAC9C*D0DA BNE RIDCOR4 ;INVALID KEYAC9E*2096C0JSR CHRLDACA1*4CEF86JMP RUNACA4* RIDCOR5 ;STARTACA4*2068BEJSR BEEPACA7*AD0A02LDA STARTFLGACAA*F003 BEQ *+5 ;NEW ENTRYACAC*4CE8ACJMP RIDCOR5BAACAF*2003C4JSR MENU1 ;REWRITEACB2*A58E LDA DISTACB4*48PHAHuntsville Macro Assembler 65C02 cross assembler for PC-DOS 2.0v1.82L Page 2ModuleBIKIAACB5*20A3A5JSR DSPCRSACB6*68PLAACB9*858E STA DISTACBB*202EB3JSR RIDCURSACBE*206BC3JSR PRTLEVELACC1*2C4403BIT TIMTRLFLG ;TIME TRIAL?ACC4*3003 BMI *+5 ;YESACC6*207FEAJSR MENU28 ;PACK POSITION WITHOUT NAMESACC9*2004C5JSR MENU1ASOFTACCC*A980 LDA #$80 ;MAKE AVG IN CENTERACCE*8D4603STA AVGHRTACD1* RIDCOR5A1ACD1*78SEIACD2*2088D6JSR RESVALACD5*20C3BEJSR UPDATEACD8*648E STZ DISTACDA*202EB3JSR RIDCURSACDD*A9FF LDA #$FFACDF*8D0A02STA STARTFLGACE2*6473 STZ DGCNT1ACE4*649E STZ DISTLASTACE6*8013 BRA RIDCOR5BBACE8* RIDCOR5BAACE8*A9FF LDA #$FF ;INDICATE NOW RUNNINGACEA*8D0A02STA STARTFLGACED*2004C5JSR MENU1ASOFTACF0*2C4403BIT TIMTRFLGACF3*3006 BMI *+8ACF5*20BEEAJSR MENU28CLRACF8*207FEAJSR MENU28ACFB* RIDCOR5BBACFB*209FA8JSR IRQENABLE ;ENABLE T1,CB1,CA1,CA2ACFE*A909 LDA #9AD00*8D4903STA HRTCNTAD03*9C0B02STZ EXPFLG ;CLR EXPAND FLGAD06* RIDCOR5AAAD06*A673 LDX DGCNT1AD0S*BD9B02LDA GRDHEX,X ;GET GRADEAD0B*8D4203STA GRADEAD0E*2019BAJSR HEXASCSHRTAD11*A569 LDA ASCI+6AD13*8D0603STA GRDASC+1AD16*A56A LDA ASCI+7AD18*8D0703STA GRDASC+2AD1B*A673 LDX DGCNT1AD1D*BDD702LDA SIGNCX,XAD20*8D0503STA GRDASCAD23*8D2002STA SIGNNAD26*C920 CMP #$20AD28*F008 BEQ RIDCOR5A2AD2A*A980 LDA #$80 ;MAKE GRADE NEGATIVEHuntsville Macro Assembler 65C02 cross assembler for PC-DOS 2.0v1.82L Page 3ModuleBIKIAAD2C*0D4203ORA GRADEAD2F*8D4203STA GRADEAD32* RIDCOR5A2AD32*209A89JSR GRADECALCAD35*A964 LDA #100 ;5 SEC DELAYAD37*85A6 STA TIMERSAD39*9C6B05STZ RANDISTSAVE ;0 RANDOM DISTANCEAD3C* RIDCOR5ABAD3C*645F STZ KEYAD3E*4C9BAFJMP RIDCOR5F ;GET PACK SPEEDAD41* RIDCOR5AAD41*8D6D03STA FACTMP2AD44*20D3C2JSR KEYIN1AD47*F03D BEQ RIDCOR5BAD49*C911 CMP #$11AD4B*D003 BNE *+5AD4D*4C7DB1JMP RIDCOR8 ;STOPAD50*2C0B02BIT EXPFLG ;EXPAND?AD53*301C BMI RIDCOR5CC ;YESAD55*C912 CMP #$12 ;EXPANDAD57*D003 BNE *+5AD59*4CB6B0JMP RIDCOR6BAD5C*C913 CMP #$13 ;PREVIOUS MENUAD5E*D003 BNE *+5AD60*4CAAB1JMP RIDCOR9 ;BACK TO PREVIOUS MENUAD63*C914 CMP #$14AD65*D0D5 BNE RIDCOR5AB ;INVALID KEYAD67*2068BEJSR BEEPAD64*A204 LDX #4 ;ROW 4AD6C*208892SR HRBEEPTOGGLELAD6F*80CB BRA RIDCOR5ABAD71* RIDCOR5CC ;EXPAND MODEAD71*C912 CMP #$12 ;PREVIOUS <NORMAL SCREEN> MENUAD73*D003 BNE *+5AD75*4CE9B1JMP RIDCOR12AD78*C913 CMP #$13AD7A*D0C0 BNE RIDCOR5ABAD7C*2068BEJSR BEEPAD7F*A203 LDX #3 ;ROW 3AD81*208892JSR HRBEEPTOGGLELAD84*80B6 BRA RIDCOR5ABAD86* RIDCOR5BAD86*2062B7JSR RPMCALCAD89*20D1B7JSR CADCALCAD8C*204CB8JSR HEARTCALCAD8F*202B8DJSR ADAVGAD92*A5A4 LDA TIMER3Huntsville Macro Assembler 65C02 cross assembler for PC-DOS 2.0v1.82L Page 4ModuleBIKIAAD94*F01A BEQ RIDCOR5CAD96*A5A3 LDA TIMER2AD98*D003 BNE *+5AD9A*4C22AEJMP RIDCOR5DAD9D*A5A7 LDA TIMER6AD9F*D003 BNE *+5ADA1*4CF2AFJMP RIDCOR5HADA4*2C4403BIT TIMTRLFLG ;0?ADA7*3098 BMI RIDCOR5A ;YES, SKIP PACK POSADA9*A5A5 LDA TIMER4ADAB*D094 BNE RIDCOR5AADAD*4C0BAFJMP RIDCOR5FADB0* RIDCOR5CADB0*A903 LDA #3ADB2*85A4 STA TIMER3ADB4*20E1B6JSR DISTCALCADB7*38SECADB8*A58E LDA DISTADBA*E59E SBC DISTLAST;GET DISTANCE SO FAR IN THIS SEGMENTADBC*A673 LDX DGCNT1ADBE*DDB902CMP DSTHEX,XADC1*D059 BNE RIDCOR5C2 ;OK,NOT THERE YETADC3*E673 INC DGCNT1ADC5*9CDF03STZ DGCNTFLGADC8*A673 LDX DGCNT1ADCA*E472 CPX DGCNTADCC*D003 BNE *+5 ;OK,NOT COMPLETELY DONEADCE*4C0FB2JMP RIDCOR14 ;^FOR NOW, STOPADD1*BD9B02LDA GRDHEX,XADD4*8D4203STA GRADEADD7*2019BAJSR HEXASCSHRTADDA*A569 LDA ASCI+6ADDC*8D0603STA GRDASC+1ADDF*A56A LDA ASCI+7ADE1*8D0703STA GRDASC+2ADE4*A673 LDX DGCNT1ADE6*BDD702LDA SIGNCX,XADE9*8D0503STA GRDASCADEC*8D2002STA SIGNNADEF*C920 DMP #$20ADF1*F019 BEQ RIDCOR5C0ADF3*AD4203LDA GRADE ;MAKE NEGATIVEADF6*0980 ORA #$80ADF8*8D4203STA GRADEADFB*BDD602LDA SIGNCX-1,X ;WAS LAST SEGMENT POSITIVE?ADFE*C920 CMP #$20AE00*D00A BNE RIDCOR5C0 ;NOAE02*A964 LDA #100 ;YES,LOAD 5 SEC DELAYAE04*85A6 STA TIMERSAE06*AD0602LDA RANDISTAE09*8D6B05STA RANDISTSAVEAE0C* RIDCOR5C0Huntsville Macro Assembler 65C02 cross assembler for PC-DOS 2.0v1.82L Page 5ModuleBIKIAAE0C*209A89JSR GRADECALCAE0F*20A5AFJSR RANDISTCALCAE12* RIDCOR5C1AE12*18CLCAE13*A673 LDX DGCNT1AE15*BDB802LDA DSTHEX-1,X ;ADD PREVIOUS DISTANCEAE18*659E ADC DISTLASTAE1A*859E STA DISTLASTAE1C* RIDCOR5C2AE1C*202EB3JSR RIDCURSAE1F*4C41ADJMP RIDCOR5AAE22* RIDCOR5DAE22*A5A2 LDA TIMER1AE24*85A3 STA TIMER2AE26*20C3BEJSR UPDATEAE29*2C4403BIT TIMTRLFLG ;0?AE2C*1003 BPL *+5AE2E*4C41ADJMP RIDCOR5A ;YES,SKIP PACK POSITIONAE31* RIDCOR5D0AE31*18CLCAE32*A5A6 LDA TIMER5 ;DELAY STILL ON?AE34*F008 BEQ RIDCOR5D0A ;NOAE36*AD0202LDA PHANTDIST+2AE39*6D6B05ADC RANDISTSAVEAE3C*8006 BRA RIDCOR5D0BAE3E* RIDCOR5D0AAE3E*AD0202LDA PHANTDIST+2AE41*6D0602ADC RANDISTAE44* RIDCOR5D0BAE44*6D0202STA PHANTDIST+2AE47*AD0102LDA PHANTDIST+1AE4A*6900 ADC #0AE4C*8D0102STA PHANTDIST+1AE4F*AD0002LDA PHANTDISTAE52*6900 ADC #0AE54*8D0002STA PHANTDISTAE57*9C0802STZ DISTDIR ;MAKE POSITIVE TO STARTAE5A*38SECAE5B*78SEIAE5C*AD5D03LDA RPMDIST+2AE5F*ED0202SBC PHANTDIST+2AE62*8D0502STA DISTDIFF+2AE65*AD5C03LDA RPMDIST+1AE68*ED0102SBC PHANTDIST+1AE6B*8D0402STA DISTDIFF+1AE6E*AD5B03LDA RPMDISTAE71*ED0002SBC PHANTDISTAE74*8D0302STA DISTDIFFHuntsville Macro Assembler 65002 cross assembler for PC-DOS 2.0v1.82L Page 6ModuleBIKIAAE77*58CLIAE78*B003 BCS *+5AE7A*ACOCAFJMP RIDCOR5D5 ;NEGATIVEAE7D* RIDCOR5D1AE7D*3BSECAE7E*ADO502LDA DISTDIFF+2AE81*E92B SBC #$28 ;1320 FEETAE83*ADO402LDA DISTDIFF+1AE86*e905 SBC#5AE88*ADO302LDA DISTDIFFAE8B*E900 SBC #0AE8P*9005 BCC RIDCOR5DIAAE8F*A92D LDA #45AE91*4CB7B2JMP PACKDISPO ;FULL WINLOADAE94* RIDCOR5DIAAE94*3BSECAE95*ADO502LDA DISTDIFF+2AE98*E978 SBC #120 ;120 FEETAE9A*ADO402LDA DISTDIFF+1AE9D*E900 SBC #0AE9F*ADO302LDA DISTDIFFAEA2*E900 SBC #0AEA4*9005 BCC RIDCOR5D2AEA6*A92B LDA #43AEAB*4CB7B2JMP PACKDISPO ; FULL WINLOADAEAB* RIDCOR5D2AEAB*3bSECAEAC*ADO502LDA DISTDIFF+2AEAF*E964 SBC #100 ;100 FEETAEB1*ADO402LDA DISTDIFF+1AEB4*E900 SBC #0AEB6*ADO302LDA DISTDIFFAEB9*E900 SBC #0AEBB*9005 BCC RIDCOR5D2AAEBD*A927 LDA #39AEBF*4CBOB2JMP PACKDISPAEC2* RIDCOR5D2AAEC2*38SECAEC3*ADO502LDA DISTDIFF+2AEC6*E950 SBC #80 ;80 FEETAEC8*ADO402LDA DISTDIFF+1AECB*E900 SBC #0AECD*ADO302LDA DISTDIFFAEDO*E900 SBC #0AED2*9005 BCC RIDCOR5D3AED4*A926 LDA #38AED6*4CBCB2JMP PACKDISPAED9* RIDCOR5D3AED9*38Q SECAEDA*AD0502LDA DISTDIFF+2Huntsville Macro Assembler 65C02 cross assembler for PC-DOS 2.0v1.82L Page 7ModuleBIKIAAEDD*E93C SBC#60 ;60 FEETAEDF*ADO402LDA DISTDIFF+1AEE2*E900 SBC #0AEE7*E900 SBC #0AEE9*9005 BCC RIDCOR5D3AAEEB*A925 LDA #37AEED*4CBCB2JMP PACKDISPAEFO* RIDCOR5D3AAEFO*38SECAEF1*ADO502LDA DISTDIFF+2AEF4*E920 SBC #40 ;40 FEETAEF6*ADO402LDA DISTDIFF+1AEF9*E900 SBC #0AEFB*ADO302LDA DISTDIFFAEFE*E900 SBC #0AF00*9005 BCC RIDCOR5D4AFO2*A924 LDA #36AFO4*4CBCB2JMP PACKDISPAF07* RIDCOR5D4AF07*A923 LDA #35 ;LESS THAN 40 FEETAF09*4CBCB2JMP PACKDISPAFOC* RIDCOR5D5AFOC*38SECAFOD*ADO502LDA DISTDIFF+2AF10*E9D8 SBC #$D8 ;-1320 FEETAF12*ADO402LDA DISTDIFF+1AF15*E9FA SBC #$FAAF17*ADO302LDA DISTDIFFAF1A*E9FF SBC #$FFAFIC*B005 BCS RIDCOR5D5AAF1E*A9191 LDA #25 ;>1320 FEET OFFAF20*4CB7B2JMP PACKDISPO ;FULL WINLOADAF23* RICDCOR5D5AAF23*38SECAF24*AD502 LDA DISTDIFF+2AF27*E983 SBC #$88 ;-120 FEETAF29*AD0402LDA DISTDIFF+1AF2C*E9FF SEC #$FFAF2E*ADO302LDA DISTDIFFAF31*E9FF SBC #$FFAF33*B005 BCS RIDCOR56AF35*A91B LDA #27 ;>120 FEET OFFAF37*4CB7B2JMP PACKDISPO; FULL WINDLOADAF3A* RIDCOR5D6AF3A*38SECAF3B*ADO502LDA DISTDIFF+2AF3E*E99C SBC #$9C ;-100 FEETAF40*AD0402LDA DISTDIF+1AF43*E9FF SBC #$FFHuntsville Macro Assembler 65C02 cross assembler for PC-dos 2.0v1.82L Page 8ModuleBIKIAAF45*AD0302 LDA DISTDIFFAF46*E9FF SBC #$FFAF4A*B005 BCS RIDCOR5D6AAF4C*A91F LDA #31AF4E*4CBCB2 JMP PACKDISPAF51* RIDCOR5D6AAF51*38 SECAF52*AD0502 LDA DISTDIFF+2AF55*E9B0 SBC #$B0 ;-80 FEETAF57*AD0402 LDA DISTDIFF+1AF5A*E9FF SBC #$FFAF5C*AD0302 LDA DISTDIFFAF5F*E9FF SBC #$FFAF61*B005 BCS RIDCOR5D7AF63*A920 LDA #32AF65*4CBCB2 JMP PACKDISPAF68* RIDCOR5D7AF68*38 SECAF69*AD0502 LDA DISTDIFF+2AF6C*E9C4 SBC #$C4 ;-60 FEETAF6E*AD0402 LDA DISTDIFF+1AF71*E9FF SBC #$FFAF73*AD0302 LDA DISTDIFFAF76*E9FF SBC #$FFAF78*B005 BCS RIDCOR5D7AAF7A*A921 LDA #33AF7C*4CBCB2 JMP PACKDISPAF7F* RIDCOR5D7AAF7F*38 SECAF80*AD0502 LDA DISTDIFF+2AF83*E9D8 SBC #$D8 ;-40 FEETAF85*AD0402 LDA DISTDIFF+1AF88*E9FF SBC #$FFAF8A*AD0302 LDA DISTDIFFAF8D*E9FF SBC #$FFAF8F*B005 BCS RIDCOR5D8AF91*A922 LDA #34AF93*4CBCB2 JMP PACKDISPAF96* RIDCOR5D8AF96*A923 LDA #35 ;LESS THAN 40 FEET BEHINDAF98*4CBCB2 JMP PACKDISPAF9B* RIDCOR5F ;CALCULATE PACK POSITIONAF9B*A917 LDA #23AF9D*85A5 STA TIMER4AF9F*20A5AF JSR RANDISTCALCAFA2*4C41AD JMP RIDCOR5AAFA5* RANDISTCALCAFA5*AD5D03 LDA RPMDIST+2AFA8*2907 AND #7Huntsville Macro Assembler 65C02 cross assembler for PC-dos 2.0v1.82L Page 9ModuleBIKIAAFAA*OA ASL A ;*2AFAB*AA TAXAFAC*BDB45B LDA MULTADDR,XAFAF*8570 STA INDEX4AFB1*BDB55B LDA MULTADDR+1,XAFB4*8571 STA INDEX4+1AFB6*2033FA JSR RDYFACAFB9*AD1403 LDA RIDLEVELAFBC*38 SECAFBD*E901 SBC #1 ;MAKE 0-8AFBF*0A ASL A ;*16 (FOR 16 GRADES)AFC0*0A ASL AAFC1*0A ASL AAFC2*0A ASL AAFC3*8585 STA ASAVE3AFC5*AD4203 LDA GRADEAFC8*297F AND #$7FAFCA*18 CLCAFCB*6585 ADC ASAVE3AFCD*AA TAXAFCE*AD2002 LDA SIGNNAFD1*C92D CMP #′-′;NEGATIVE?AFD3*F018 BEQ RIDCOR5G2AFD5* RIDCOR5GAFD5*BDE25B LDA BASEDISTP,XAFD8* RIDCOR5G1AFD8*85DA STA FACLOAFDA*209965 JSR NORMALAFDD*A570 LDA INDEX4AFDF*A471 LDY INDEX4+1AFE1*208966 JSR FMULTAFE4*20F868 JSR QINTAFE7*A5DA LDA FACLOAFE9*8D0602 STA RANDISTAFEC*60 RTSAFED* RIDCOR5G2 ;NEGATIVE SLOPEAFED*BD725C LDA BASEDISTN,XAFF0*80E6 BRA RIDCOR5G1AFF2* RIDCOR5HAFF2*A906 LDA #6AFF4*85A7 STA TIMER6AFF6*20078A JSR SPEEDDIV10AFF9*20BD89 JSR WINDCALCAFFC*206E89 JSR POWERCALCAFFF*20198A JSR DACCALCB002*4C41AD JMP RIDCOR5AHuntsville Macro Assembler 65C02 cross assembler for PC-dos 2.0v1.32L Page 10ModuleBIKIAB005* RIDCOR6 ;EXPANDB005*2068BE JSR BEEPB009*2003C4 JSR MENU1B00E*206BC3 JSR PRTLEVELB00E*A9FF LDA #$FFB000*8D0B02 STA EXPFLGB016*AD0A02 LDA STARTFLGB018*F003 BEQ *+5 ;NEW ENTRYB019*4C56B0 JMP RIDCOR6A0B01B*78 SEIB01C*2088D6 JSR RESVALB01F*20C3BE JSR UPDATEB022*58 CLI ;^B023*640E STZ PNT7 ;ARTIFICIALLY LOAD PNT7 IN MIDDLE OFSCREEN FOR BLKCURSB025*A92C LDA #$2C ;30B027*850F STA PNT71B029*20A3A5 JSR DSPCRSB02D*648E STZ DISTB02E*6499 STZ DIST5B030*58 CLIB031*202EB3 JSR RIDCURSB034*A9FF LDA #$FFB036*8D0A02 STA STARTFLGB039*6473 STZ DGCNT1B03B*9CDF03 STZ DGCNTFLGB03E*649E STZ DISTLASTB040*AD9B02 LDA GRDHEX ;GET 1ST GRADEB043*8D4203 STA GRADEB046*2019BA JSR HEXASCSHRTB049*A569 LDA ASCI+6B04B*8D0603 STA GRDASC+1B04E*A56A LDA ASCI+7B050*8D0703 STA GRDASC+2B053*4C5EB0 JMP RIDCOR6A1B056* RIDCOR6A0B056*20D8B0 JSR EXPCALCB059*A9FF LDA #$FFB05B*8D0A02 STA STARTFLGB05E* RIDCOR6A1B05E*2C4403 BIT TIMTRLFLG ;TIME TRIAL?B061*3006 BMI *+8 ;YESB063*20BEEA JSR MENU28CLRB066*2009EA JSR MENU27B069* RIDCOR6AAB069*2083C5 JSR MENU1HSOFT ;^STZ MMFLG ;FOR SCROLLB06C* RIDCOR6AB06C*645F STZ KEYB06E*20D3C2 JSR KEYIN1B071*F0FB BEQ *-3Huntsville Macro Assembler 65C02 cross assembler for PC-DOS 2.0v1.82L Page 11ModuleBIKIAB073*C911CMP #$11 ;startB075*D003BNE *+5B077*4000B1 JMP RIDCOR11B07A*C913CMP #$13 ;RESET VALUESB07B*D003BNE *+5B07E*4CB0B0 JMP RIDCOR6ATB081*C912CMP #$12 ;PREVIOUS MENUB088*D003BNE *+5 ;^TEST ;BNE RIDCOR6A ;INVALID KEYB085*4C32B1 JMP RIDCOR7B088*0914CMP #$14B0BA*D0E0BNE RIDCOR6A;^TESTB080*2068BE JSR BEEPB08F*2CC205 BIT MMFLG ;ANY COURSE LEFT?B092*1005BPL RIDCOR6AZ ;YESB094*900205 STZ MMFLG ;RESET TO 0B097*8017BRA RIDCOR6AT ;RESET AND RTNB099*RIDCOR6AZB099*2003C4 JSR MENU1B890*2083C5 JSR MENU1HSOFTB09F*20B5A5 JSR DSPCRS01;BCS RIDCOR6AX ;NOT DONE YET;LDA #$FF ;FINISHED;STA MMFLGB0A2*RIDCOR6AXB0A2*206BC3 JSR PRTLEVEL;JSR TESTB0A5*2C4403 BIT TIMTRLFLG ;TIME TRIAL?B0AB*3003BMI *+5 ;YESB0AA*2009EA JSR MENU27B0AD*4C6CB0 JMP RIDCOR6AB0B0*RIDCOR6AT ;RESET VALUESB0B0*2088D6 JSR RESVALB0B3*4C05B0 JMP RIDCOR6B0B6*RIDCOR6B ;EXPAND WHILE RUNNINGB0B6*2058BE JSR BEEPB0B9*2003C4 JSR MENU1B0BC*2028C5 JSR MENU1BSOFTB0BF*206BC3 JSR PRTLEVELB0C2*A9FFLDA #$FFB0C4*8D0B02 STA EXPFLGB0C7*20D8B0 JSR EXPCALCB0CA*2C4403 BIT TIMTRLFLG ;TIME TRIAL?B0CD*3006BMI *+8 ;YESB0CF*20BEEA JSR MENU28CLRHuntsville Macro Assembler 65C02 cross assembler for PC-DOS 2.0v1.82L Page 12ModuleBIKIAB0D2*207FEA JRS MENU28B0D5*4C06AD JMP RIDCOR5AADOD6*EXPCALCB0D6*2033F4 JSR RDYFACB0DE*A58ELDA DISTB0DD*85DASTA FACLOB0DF*209965 JSR NORMALB0E2*204367 JSR MUL10B0E5*A21ELDX #LOW DIST6B0E7*A004LDY #HIGH DIST6B0E9*203168 JSR MOVMFB0EO*A200LDX #0B0EE*9C2202 STZ DSTTOTB0F1*EXPCALCBB0F1*18 CLCB0F2*BDB902 LDA DSTHEX,XB0F5*6D2202 ADC DSTTOTB0F8*8D2202 STA DSTTOTB0FE*E473CPX DGCNT1B0FD*F003BEO EXPCALCCB0FF*E8 INXB100*D0EFBNE EXPCALCB ;ALWAYSB102*EXPCALCCB102*869fSTX BYTDISTB104*38 SECb105*AD2202 LDA DSTTOTB108*E58ESBC DISTB10A*8593STA DIST3B10C*A204LDX #4B10e*EXPCALCDB10E*B599LDA DIST5,XB110*9594STA DIST4,XB112*CA DEXB113*10F9BPL EXPCALCDB115*A58ELDAB117*48 PHAB118*20B5A5 JSR DSPCRS01B11B*68 PLAB11C*858ESTA DISTB113*9C1502 STZ LAPNRB121*6488STZ NRBYTB123*640ESTZ PNT7 ;ARTIFICALLY LOAD PNT7 INMIDDLE OF SCREEN FOR BLKCURSB125*A930LDA #$30B127*850FSTA PNT7+1B129*A673LDX DGCNT1B12B*BD0004 LDA SEGADDR+1,XB12E*2087B3 JSR RIDCURS0B131*60 RTSHuntsville Macro Assembler 65C02 cross assembler for PC-DOS 2.0v1.82L Page 13ModuleBIKIAB132*RIDCOR7 ;COMPRESS DISPLAYB132*2068BE JSR BEEPB135*9C0B02 STA EXPFLG ;CLR EXPAND FLAGB138*A58ELDA DIST ;SAVE DISTB13A*48 PHAB13B*2003C4 JSR MENU1B13E*20A3A5 JSR DSPCRSB141*206BC3 JSR PRTLEVELB144*200BC7 JSR MENU2SOFTB147*68 PLAB148*858ESTA DISTB14A*2058B1 JSR NORMCALCB14D*2C4403 BIT TIMTRLFLG ;TIME TRIAL?B150*3003BMI *+5 ;YESB152*2009EA JSR MENU27B155*4C78AC JMP RIDCOR4 ;FOR NOWB158*NORMCALCB158*9C2202 STZ DSTTOTB15B*6488STZ NRBYTB15D*A200LDX #0B15F*NORMCALCAB15F*E473CPX DGCNT1B161*F00DBEQ NORMCALCBB163*18 CLCB164*BDB902 LDA DSTHEX,XB167*6D2202 ADC DSTTOTB16A*8D2202 STA DSTTOTB16D*E8 INXB16E*D0EFBNE NORMCALCA ;ALWAYSB170*NORMCALCBB170*A673LDX DGCNT1B172*F005BEQ NORMCALCC ;0,SKIP RESTB174*BDFF03 LDA SEGADDR,XB177*8588STA NRBYTB179*NORMCALCCB179*20F5B3 JSR RIDCURSBB17C*60 RTSB17D*RIDCOR8 ;STOPB17D*20B4C3 JSR STOPVAL ;PUT SOME VALUES TO 0B180*EE0A02 INC STARTFLG ;PUT BACK TO $01B183*2068BE JSR BEEPB186*2C0B02 BIT EXPFLGB189*100EBPL RIDCOR8AB18B*2C4403 BIT TIMTRLFLGB18E*3006BMI *+8B190*20BEEA JSR MENU28CLRB193*2009EA JSR MENU27B196*4C69B0 JMP RIDCOR6AAHuntsville Macro Assembler 65C02 cross assembler for PC-DOS 2.0v1.82L Page 15ModuleBIKIAB199*RIDCOR8AB199*2C4403 BIT TIMTRLFLGB19C*3006BMI *+8B19E*20BEEA JSR MENU28CLRB1A1*2009EA JSR MENU27B1A4*200BC7 JSR MENU2SOFTB1A7*4C7BAO JMP RIDCOR4B1AA*RIDCOR9 ;BACK TO PREVIOUS MENUB1AA*A953LDA #$53 ;T1,CA1,CA2,CB1,1RC OFFB1AC*BDBE7F STA $7F8EB1AF*2096C0 JSR CHRLDB1B2*4CEF86 JMP RUNB1B5*RIDCOR10B1B5*A953LDA #$58 ;CA1,CA2,CE1,1RQ OFFB1B7*8D8E7F STA $7F8EB1BA*4C6CB0 JMP RIDCOR6AB1C0*RIDCOR11B1C0*209FA8 JSR 1RQENABLEB1C3*AD0102 LDA STARTFLG ;PREVIOUSLY RUNNING?B1C6*F019BEQ RIDCOR ;1A ;NOB1C8*A9FFLDA #$FFB1CA*8D0A02 STA STARTFLG ;INDICATE NOW RUNNINGB1CD*2068BE JSR BEEPB1D0*202805 JSR MENU1BSOFTB1D3*204403 BIT TIMTRLFLGB1D6*3006BMI *+8B1D8*20BEEA JSR MENU28CLRB1DB*207FEA JSR EMNU28B1DE*4C06AD JMP RIDCOR5AAB1E1*RIDCOR11ADB1E1*A9FFLDA #$FFB1E3*8D0A02 STA STARTFLGB1E6*4CB6B0 JMP RIDCOR6BB1E9*RIDCOR12 ;BACK TO NORMAL DISPLAYB1E9*2068BE JSR BEEPB1EC*9C0B02 STZ EXPFLG ;CLEAR EXPAND FLAGB1EF*2003C4 JSR MENU1B1F2*2004C5 JSR MENU1ASOFTB1F5*206BC3 JSR PRTLEVELB1F8*A58ELDA DIST ;SAVE DISTB1FA*48 PHAB1FB*20A3A5 JSR DSPCRSB1FE*68 PLAB1FF*858ESTA DISTB201*2058B1 JSR NORMCALCB204*2C4403 BIT TIMTRLFLG ;TIME TRIAL?B207*3003BMI *+5 ;YESB209*207FEA JSR MENU28B20C*4CFBAC JMP RIDCOR5BBHuntsville Macro Assembler 65C02 cross assembler for PC-DOS 2.0v1.82L Page 15ModuleBIKIAB20F* RIDCOR14 ;STOP AT END OF COURSEB20F*2068BE JSR BEEPB212*20B4C3 JSR STOPVAL ;PUT SOME VALUES TO 0B215*20C3BE JSR UPDATEB218*2045C5 JSR MENU1CSOFT ;ERASE SOFTKEYSB21B*2C0B02 BIT EXPFLG ;EXPAND?B21E*1006 BPL RIDCOR14B ;NOB220*2083C5 JSR MENU1HSOFTB223*4C29B2 JMP RIDCOR14CB226* RIDCOR14BB226*200BC7 JSR MENU2SOFTB229* RIDCOR14CB229*2C4403 BIT TIMTRLFLGB22C*3006 BMI *+8B22E*20BEEA JSR MENU28CLR ;CLR MENU28B231*2009EA JSR MENU27B234* RIDCOR14DB234*645F STZ KEYB236*20D3C2 JSR KEY1N1B239*F0FB BEQ *-3B23B*C911 CMP #$11 ;STARTB23D*D003 BNE *+5B23F*4CA6B2 JMP RIDCOR15B242*2C0B02 BIT EXPFLG ;EXPAND?B245*3027 BMI RIDCOR14F ;YESB247*C912 CMP #$12 ;EXPAND SCREENB249*D003 BNE *+5B24B*4C05B0 JMP RIDCOR6B24E*C913 CMP #$13 ;RESET VALUESB250*F007 BEQ RIDCOR14EB252*C914 CMP #$14 ;PREVIOUS MENUB254*D0DE BNE RIDCOR14DB256*4CAAB1 JMP RIDCOR9B259* RIDCOR14E ;RESET VALUESB259*2068BE JSR BEEPB25C*9C0A02 STZ STARTFLGB25F*205BB5 JSR BLKCURSB262*2088D6 JSR RESVALB265*20C3BE JSR UPDATEB268*202EBE JSR RIDCURSB26B*4C34B2 JMP RIDCOR14DB26E* RIDCOR14FB26E*C913 CMP #$13 ;RESET VALUESB270*D003 BNE *+5B272*4C7FB2 JMP RIDCOR14GB275*C912 CMP #$12 ;PREVIOUS MENUB277*D0BB BNE RIDCOR14D ;INVALID KEYB279*2068BE JSR BEEPB27C*4C53AC JMP RIDCOR3Huntsville Macro Assembler 65C02 cross assembler for PC-DOS 2.0v1.82L Page 16ModuleBIKIAB27F*RIDCOR14GB27F*2068BE JSR BEEPB282*208BD6 JSR RESVALB285*9C0A02 STZ STARTFLGB288*2003C4 JSR MENU1B28B*20A3A5 JSR DSPCRSB28E*206BC3 JSR PRTLEVELB291*648ESTZ DISTB293*6499STZ DIST5B295*202EB3 JSR RIDCURSB298*2083C5 JSR MENU1HSOFTB29B*2C4403 BIT TIMTRLFLGB29E*3003BMI*+5B2A0*2009EA JSR MENU27B2A3*4C34B2 JMP RIDCOR14DB2A6*RIDCOR15 ;START AFTER COURSE ENDED;JSR BEEPB2A6*9C0A02 STZ STARTFLGB2A9*2088D6 JSR RESVALB2AC*2C0B02 BIT EXPFLG ;EXPAND?B2AF*3003BMI *+5 ;YESB2B1*4CA4AC JMP RIDCOR5B2B4*4CC0B1 JMP RIDCOR11B2B7*PACKDISPO ;FULL WINDLOADB2B7*9C6905 STZ WINDLOADFLGB2BA*8005BRA PACKDISP00B2BC*PACKDISP ;DISPLAY IN PACK POSITIONB2BC*A2FFLDX #$FFB2BE*8E6905 STX WINDLOADFLGB2C1*PACKDISP00B2C1*48 PHA ;SAVE POSITIONB2C2*A510LDA PNT8B2C4*8500STA ADDRB2C6*A511LDA PNTS+1B2C8*8501STA ADDR+1B2CA*A205LDX #5B2CC*A000LDY #0B2CE*PACKDISP1B2CE*A900LDA #0 ;CLEAR EXISTING PACKB2D0*9100STA (ADDR),YB2D2*CA DEXB2D3*F005BEQ PACKDISP2B2D5*207FA7 JSR ADD40B2D8*80F4BRA PACKDISP1B2DA*PACKDISP2B2DA*48 PLA ;GET POSITION BACKB2DB*8500STA DDDRB2DD*8510STA PNT8Huntsville Macro Assembler 65C02 cross assembler for PC-DOS 2.0v1.82L Page 17ModuleBIKIAB2DF*A920LDA #$20B2E1*8501STA ADDR+1B2E3*A205LDX #5B2E5&A000LDY #0B2E7*PACKD1SP3B2E7*A9FFLDA #$FFB2E9*9100STA (ADDR),YB2EB*CA DEXB2EC*F005BEQ PACKDISP4B2EE*207FA7 JSR ADD40B2F1*80F4BRA PACKDISP3B2F3*PACKDISP4B2F3*4C41AD JMP RIDCOR5AHuntsville Macro Assembler 65C02 cross assembler for PC-DOS 2.0v1.82L Page 1ModuleBIKIACOPYRIGHT 1986 FRONTLINE TECHNOLOGY,INC.92B0* AUTWRK92BO*209AD6 JSR RESVAL ;RESET ALL VALUES92B3* AUTWRKO92B3*207ABE JSR BEEP92B6&203397 JSR LIMITCALC ;CALCULATE UPPER AND LOWER LIMITS92B9*20ECEA JSR MENU30 ;AUTO TARGET MENU92BC*20B5A3 JSR DSPONG ;DISPLAY ON92BF* AUTWRK192BF*207EA5 JSR KEYIN ;READ KEYBOARD92C2*207ABE JSR BEEP92C5*C911 CMP #$11 ;START92C7*D003 BNE *+592C9*4C1D95 JMP AUTOSTART92CC*C912 CMP #$ ;CHANGE LIMITS92CE*D003 BNE *+592DO*4CE792 JMP AUTWRK292D3*C913 CMP #$13 ;CHANGE MAX92D5*DOO3 BNE *+592d7*4CSD94 JMP AUTWRK392DA*C914 CMP #$1492DC*D0E1 BNE AUTWRK192DE*9CD17F STZ $7FD192E1*20A8C0 JSR CHRLD92E4*4C7587 JMP EXMODE ;PREVIOUS MENU92E7* AUTWRK2 ;CHANGE LIMITS92E7*2041F2 JSR MENU31 ;DISPLAY92EA*2098F3 JSR MENU3292ED* AUTWRK2A92ED*207EAD JSR KEYIN ;READ KB92FO*207ABE JSR BEEP92F3*C911 CMP #$11 ;UPPER LIMIT92F5*FOOD BEQ AUTWRK2B92F7*C912 CMP 3$12 ;LOWER LIMIT92F9*D003 BNE*+592FB*4CD493 JMP AUTWRK2J92FE*C913 CMP #$13 ;PREVIOUS MENU9300*DOEB BNE AUTWRK2A9302*80AF BRA AUTWRKO9304* AUTWRK2B ;UPPER LIMIT9304*A9FF LDA #$FF9306*8D1F02 STA DPFLG ;DP NOT ALLOWED9309* AUTWRK2B19309*A900 LDA #0 ;CLR BLOCK930B*8DA224 STA $24A2930E*8DA324 STA $24A39311*8DA424 STA $24A49314*8DD824 STA $24D8 ;BLINK OFFHuntsville Macro Asembler 65c02 cross assembler for PC-D03 2.0v1.82L Page 2ModuleBIKIA9317*8DA924 STA $24A9931A*A901LDA #1 ;BLOCK931C*8DA223 STA $23A2931F*8DA323 STA $23A39322*8DA423 STA $23A49325*A902LDA #2 ;BLINK THESE9327*8DD923 STA $23D9932A*A9A0LDA #$AO932C*8DD823 STA $23D8932F*AUTWRK2C923F*207EA5 JSR KEYIN9332*207ABE JSR BEEP9335*C911CMP #$11 ;UPPER LIMIT (AGAIN)9337*FODOBEQ AUTWRK2B19339*C912CMP #$12 ;LOWER LIMIT933B*D003BNE *+5933D*4CD493 JMP AUTWRK2J9340*C913CMP #$13 ;PREVIOUS MENU9342*D003BNE *+59344*4CB392 JMP AUTWRKO ;DOES LIMITCALC9347*C905CMP #5 ;-9349*FO4DBEQ AUTWRK2D934B*C909CMP #9 ;-934D*FO62BEQ AUTWRK2G934F*C93ACMP #$3A9351*BODCBCS AUTWRK2C ;>99353*C930CMP #$309355*90D8BCC AUTWRK2C ;<09357*48 PHA9358*A980LDA #$80935A*8500STA ADDR935C*A923LDA #$23935E*8501STA ADDR+19360*A203LDX #39362*867ASTX XSAVE9364*A022LDY #349366*847eSTY YSAVE9368*A200LDX #0936A*68 PLA936B*2067A4 JSR INDTO1+3936E*B094BCS AUTWRK2B ;INVALID KEY9370*20B2BA JSR ASCHEX9373*AE2702 LDX USERID9376*18 CLC9377*BD1005 LDA LOWLIM,X937A*6905ADC #5937C*C56CCMP HEX+1937E*B084BCS AUTWRD2B ;BELOW OR = LOW LIMIT+59380*1B CLC9381*A56CLDA HEX+19383*6905ADC #59385*DD3AO5 CMP HRTMAX,X9388*9003BCC *+5938A*4CO493 JMP AUTWRK2B ;ABOVE OR = MAX-5Huntsville Macro Assembler 65C02 cross assembler for PC-DOS 2.0v1.82L Page 3ModuleBIKIA93SD*A56C LDA HEX+1938F*9D2505STA HIGHLIM,X9392*203397JSR LIMITCALC9395*4CE792JMP AUTWRK29398* AUTWRK2D ;-9398*AE2702LDX USERID939B*18CLC939C*BD1005LDA LOWLIM,X939F*6905 ADC #593A1*DD2505CMP HIGHLIM,X93A4*B089 BCS AUTWRK2C ;AT OR BELOW LOW LIMIT+593A6*BD2505LDA HIGHLIM,X93A9*38SEC93AA*E901 SBC #193AC*9D2505STA HIGHLIM,X93AF*801A BRA AUTWRK2G193B1* AUTWRK2G ;+93B1*AE2702LDX USERID93B4*18CLC93B5*BD205 LDA HIGHLIM,X93B8*6905 ADC #593BA*DD3A05CMP HRTMAX,X93BD*9003 BCC *+593BF*4C2F93JMP AUTWRK2C ;ALREADY AT MAX93C2*18CLC93C3*BD2505LDA HIGHLIM,X93C6*6901 ADC #193C8*9D2505STA HIGHLIM,X93CB* AUTWRK2G193CB*203397JSR LIMITCALC93CE*204BF3JSR MENU31A93D1*4C0993JMP AUTWRK2B193D4* AUTWRK2J ;LOWER LIMIT93D4*A900 LDA #093D6*8DA223STA #$23A2 ;CLR BLOCK93D9*8DA323STA $23A393DC*8DA423STA $23A493DF*8DD823STA $23D8 ;CLR BLIND93E2*8DD923STA $23D993E5*A901 LDA #193E7*8DA224STA $24A2 ;BLOCK93EA*8DA324STA $24A393ED*8DA424STA $24A493F0*A9A0 LDA #$A093F2*8DD824STA $24D893F5*A902 LDA #293F7*8DD924STA $24D9]93FA*A9FF LDA #$FF93FC*8D1F02STA DPFLG ;NO DP93FF AUTWRK2KHuntsville Macro Assembler 65C02 cross assembler for PC-DOS 2.0v1.82l Page 4ModuleBIKIA93FF*207EA5JSR KEYIN9402*207ABEJSR BEEP9405*0911 CMP #$11 ;UPPER LIMIT9407*D003 BNE *+59409*4C0493JMP AUTWRK2B940C*C912 CMP #$12 ;LOWER LIMIT (AGAIN)940E*F0EF BEQ AUTWRK2K9410*C913 CMP #$13 ;PREVIOUS MENU9412*D003 BNE *+59414*4CB392JMP AUTWRK09417*0905 CMP #5 ;-9419*FO42 BEQ AUTWRK2M941B*C909 CMP #9 ;+941D*FO4E BEQ AUTWRK2N941F*C93A CMP #$3A9421*BQDC B0S AUTWRK2K ;>99423*C930 CMP #$309425*90D8 BCC AUTWRK2K ;<09427*48PHA9428*A980 LDA #$80942A*8500 STA ADDR942C*A924 LDA #$24942E*8501 STA ADDR+19430*A203 LDX #39432*867a STX XSAVE9434*A022 LDY #349436*847E STY YSAVE9438*A200 LDX #0943A*68PLA943B*2067A4JSR INDTO1+3943E*B094 BCS AUTWRK2J ;INVALID KEY9440*20B2BAJSR ASCHEX9443*AE2702LDX USERID9446*A56C LDA HEX+19448*F08A BEQ AUTWRK2J ;0944A*18CLC944B*6905 ADC #5944D*DD2505CMP HIGHLIM,X9450*B082 BCS AUTWRK2J ;AT OR ABOVE HIGH LIMIT-59452*A560 LDA HEX+19454*951005STA LOWLIM,X9457*203397JSR LIMITCALC945A*4CE792JMP AUTWRK2945D* AUTWRK2M ;-945D*AE2702LDX USERID9460*BD1005LDA LOWLIM,X9463*FO9A BEQ AUTWRK2K ;ALREADY 09465*38SEC9466*E901 SBC #194689D1005 STA LOWLIM,X946B*8017 BRA AUTWRK2N1Huntsville Macro Assembler 65C02 cross assembler for PC-DOS 2.0v1.82L Page 5ModuleBIKIA946D* AUTWRK2N946D*AE2702LDX USERID9470*18CLC9471*BD1005LDA LOWLIM,X9474*6905 ADC #59476*DD2505CMP HIGHLIM,X9479*b084 BCS AUTWRK2K ;ALREADY AT HIGH LIMIT-5947B*18CLC947C*BD1005LDA LOWLIM,X947F*6901 ADC #19481*9D1005STA LOWLIM,X9484* AUTWRK2N19484*203397JSR LIMITCALC9487*204BF3JSR MENU31A94BA*4CD493JMP AUTWRK2J948D* AUTWRK3948D*20B0F3JSR MENU339490* AUTWRK3A9490*A901 LDA #19492*8D9823STA $2398 ;BLOCK9495*8D9923STA $23999498*8D9A23STA $239A949B*A92A LDA #$2A949D*8DD623STA $23D694A0*A9FF LDA #$FF94A2*BD1F02STA DPFLG ;NO DP94A5* AUTWRK3B94A5*207EA5JSR KEYIN94AB*207ABEJSR BEEP94AB*C911 CMP #$11 ;PREVIOUS MENU94AD*D003 BNE *+594AF*4CB392JMP AUTWRK094B2*C905 CMP #5 ;-94B4*F03A BEQ AUTWRK3C94B6*C909 CMP #9 ;+94B8*F047 BEQ AUTWRK3D94BA*C93A CMP #$3A94BC*B0E7 BCS AUTWRK3B ;>994BE*C930 CMP #$3094C0*90E3 BCC AUTWRK3B ;<094C2*48PHA94C3*A980 LDA #$8094C5*8500 STA ADDR94C7*A923 LDA #$239409*8501 STA ADDR+194CB*A203 LDX #394CD*867A STX XSAVE94CF*A018 LDY #2494D1*847E STY YSAVE94D3*A200 LDX #0Huntsville Macro Assembler 65C02 cross assembler for PC-D06 2.0v1.82L Page 6 Mod 1BIKIA94D5*6B FLA94D6*2065A4 JSR INDT01+394D9*B055 BOS AUTWRK3A ;INVALID KEY94DB*20A0BA JSR ASCHEX94DE*AE2702 LDX USERID94E1*A56C LDA HEX+194E3*C9DD CMP #22194E5*60A9 BCS AUTWRK3A >22094E7*9D3A05 STA HRTMAX,X94EA*208D86 JSR UFLOWCALC CALCULATE NEW LIMITS94ED*4CB392 JMP AUTWRKO94F0* AUTWRK30 -94F0*AE2702 LDX USERID94F3*BD3A05 LDA HRTMAX,X94F6*38 SEC94F7*E901 SBC #194F9*9D3A05 STA HRTMAX,X94FC*208D86 JSR UPLOWCALC ;CALCULATE NEW LIMITS94FF*8013 BRA AUTWRK3D19501* AUTWRK3D ;+9501*AE2702 LDX USERID9504*BD3A05 LDA HRTMAX,X9507*C9DC CMP #2209509*B09A BCS AUTWRK3B ;ALREADY AT 220950E*18 CLC950C*6901 ADC #1950E*9D3A05 STA HRTMAX,X9511*208D86 JSR UPLOWCALC ;CALCULATE NEW LIMITS9514* AUTWRK3D19514*203197 JSR LIMITCALC9517*20EDF3 JSR MENU33A951A*4C9094 JMP AUTWRK3A951D* AUTOSTART ;START AUTO TARGET951D*20BAED JSR MENU30ASOFT ;SOFT KEYS9520*20728D JSR LDINITDAC ;INITIALIZE A/D,LOAD VALUES INFLOATING POINT9523*209FA8 JSR IRQENABLE9526*9C6F05 STZ DECFLG952C*9C7005 STZ FACEFLG952f*a909 LDA #9 ;10 READINGS9531*8D4903 STA HRTCNT9534*2057F0 JSR WARMUP ;″WARM-UP″9537* AUTOS19537*645F STZ KEY9539* AUTOS29539*2062B7 JSR RPMCALC ;CALCULATE SPEEDHuntsville Macro Assembler 65C02 cross assembler for PC-DOS 2.0v1.82L Page 7 Module;BIKIA9530*20D1B7JSR CADCALC ;CALCULATE CADENCE953F*204CB8JSR HEARTCALO ;CALCULATE HEART RATE9542*202B8DJSR ADAVG ;RUNNING TOTAL OF 10 A/D READINGS9545*A5A3 LDA TIMER2 ;1 SEC?9547*D003 BNE ++5 ;NO9549*40A695JMP AUTOS59540*A5A7 LDA #6 ;RESET9552*85A7 STA TIMER69554*20078AJSR SPEEDDIVID ;CALCULATE TRUE SPEED (DIVIDEBY 10)9557*20198AJSR DACCALC ;CALCULATE NEW DAC VALUE955A* AUTOS2A955A*A55F LDA KEY ;KB?955C*F01A BEO AUTOS2B ;NO955E*C911 CMP #$11 ;STOP9560*F010 BEQ AUTOS2A19562*C912 CMP #$12 ;TURN ON/OFF HEART RATE BEEP9564*D0D1 BNE AUTOS19566*2068BEJSR BEEP9569*A202 LDX #2 ;ROW 2956B*208892JSR HRBEEPTOGGLEL ;TOGGLE HEART RATE BEEP956E*645F STZ KEY9570*8006 BRA AUTOS2B9572* AUTOSZA;9572*20b4C3JSR STOPVAL ;PUT SOME VALUES TO 09575*4CB392JMP AUTWRKO ;$??9578* AUTOS2B957B*AD0A02LDA STARTFLG957B*D0BC BNE AUTOS2 ;PAST WARMUP957D*AD1E03LDA ELTIMMIN9580*C902 CMP #29582*90B5 BCC AUTOS2 ;NOT 2 MIN YET9584*206CF0JSR CLRFACE ;ERASE ″WARM UP′9587*CEOA02DEC STARTFLG ;=$FF958A*A955 LDA #LOW FPRPWR ;GET PRESENT POWER958C*A004 LDY #HIGH FPRPWR958E*20DF67JSR MOVFM9591*203B67JSR DIV10 ;DIVIDE BY 109594*20E664JSR FADDH ;ROUND9597*200569JSR INT ;TO INTEGER959A*201F67JSR MUL10 ;MULTIPLY BY 10959D*A2CF LDX #LOW FPPOWER ;STORE IN POWER959F*A003 LDY #HIGH FPPOER95A1*200D68JSR MOVMF95A4*8093 BRA AUTOS295A6* ;1 SEC95A6*A919 LDA #25 ;RESET95AB*85A3 STA TIMER295AA*208BF0JSR UPMEN30 ;UPDATE ALL NUMBERS95AD*AD0A02LDA STARTFLG ;RUNNING?Huntsville Macro Assembler 65C02 cross assembler for PC-dos 2.0V1.82L Page 8ModuleBIKIA95B0* D003 BNE AUTOS6 ;YES95B2*4C3995 JMP AUTOS295B5* AUTOS695B5*A9A0 LDA #LOW FPHRTAUG ;GET AVG HEART RATE95B7*A004 LDY #HIGH FPHRTAUG95B9*20DF67 JSR MOVFM95B0*A9B1 LDA #LOW FPLOWTEST ;COMPARE WITH LOW LIMIT95BE*A004 LDY #HIGH FPLOWTEST95C0*Z09468 JSR FCOMP ;UNDER LOW LIMIT?95C3*3003 BMI AUTOS7 ;YES95C5*4C6F96 JMP AUTOS9 ;CHECK IF ABOVE HIGH95C8* AUTOS795C8*AD7005 LDA FACEFLG ;FACE ON?95CB*D005 BNE AUTOS7A ;YES95CD*AD6E05 LDA DECFLG ;DECREASE ARROW?95D0*F009 BEQ AUTOS7B ;NO95D2* AUTOS7A95D2*206DF0 JSR CLRFACE ;CLEAR FACE95D5*9C7005 STZ FACEFLG95D8*9C6E05 STZ DECFLG95DB* AUTOS7B95DB*AD6F05 LDA INCFLG ;INCREASED LAST TIME?95DE*F00A BEQ AUTOS8 ;NOO95E0*AD2C03LDA SPTIMSEC95E8*C928 CMP #40 ;40 SEC YET?95E5*B003 BCS *+5 ;YES95E7*4C3995 JMP AUTOS295EA* AUTOS895EA*9C2C03 STZ SPTIMSEC ;RESET.TIMER95ED*9C2D03 STZ SPTIMTNTH95F0*A9FF LDA #$FF95F2*8D6F05 STA INCFLG95F5*9C6E05 STZ DECFLG95F8*9C7005 STZ FACEFLG95FB*AD2903 LDA SPDHEX95FE*D00A BNE AUTOS8AA9600*AD2A03 LDA SPDHEX+19603*C950 CMP #80 ;<8MPH9605*B003 BCS AUTOS8AA ;NO9607*4CDD96 JMP AUTOS11AA ;DECREASE LOAD960A* AUTOS8AA960A*A9FF LDA #$FF960C*CD0C02 CMP DACTMP ;DAC FULL?960F*F010 BEQ AUTOS8A ;YES9611*A9CF LDA #LOW FPPOWER ;POWER<1000?9613*A003 LDY #HIGH POWER9615*20DF67 JSR MOVFM9618*A91E LDA #LOW INT1000Huntsville Macro Assembler 65C02 cross assembler for PC-dos 2.0v1.82L Page 9ModuleBIKIA961A*A064 LDY #HIGH INT1000961C*209468 JSR FCOMP961F*3006 BMI AUTOS8B ;YES9621* AUTOS8A9621*201FEF JSR INCREASEFFORT9624*4C3995 JMF AUTOS29627* AUTOS8B9627*A9A0 LDA #LOW FPHRTAUG9629*A004 LDY #HIGH FPHTTAUG962E*20DF67 JSR MOVFM962E*A9B1 LDA #LOW FPLOWTEST9630*A004 LDY #HIGH FPLOWTEST9632*20ED64 JSR FSUB ;GET DIFFERENCE IN HEART RATE9635*203867 JSR DIV10 ;DIVIDE BY 109638*20E664 JSR FADDH ;ROUND963E*200569 JSR INT ;TO INTEGER963E*A263 LDX #LOW FACTMP ;SAVE9640*A003 LDY #HIGH FACTMP9642*200D68 JSR MOVMF9645*A956 LDA #LOW INT1 ;<1?9647*A063 LDY #HIGH INT19649*209468 JSR FCOMP964C*1006 BPL AUTOS8C;NO964E*A956 LDA #LOW INT1 ;USE 19650*A063 LDY HIGH INT19652*8004 BRA AUTOS8D9654* AUTOS8C9654*A963 LDA #LOW FACTMP ;GET BACK9656*A003 LDY #HIGH FACTMP9658* AUTOS8D9658*20DF67 JSR MOVFM965B*201F67 JSR MUL10 ;MULTIPLY BY 10965E*A9CF LDA LOW FPPOWER ;INCREASE THAT AMOUNT9660*A003 LDY #HIGH FPPOWER9662*200465 JSR FADD9665*A2CF LDX #LOW FPPOWER ;SAVE9667*A003 LDY #HIGH FPPOWER9669*200D68 JSR MOVMF966C*4C3995 JMP AUTOS2966F* AUTOS9 ;CHECK FOR ABOVE LIMIT966F*A9AC LDA #LOW FPHRTAUG9671*A004 LDY HIGH FPHRTAUG9673*20DF67 JSR MOVFM9676*A9BB LDA #LOWFPHIGHTST5 ;> UPPER LIMET + 5?9678*A004 LDY #HIGH FPHIGHTST5967A*209468 JSR FCOMP967D*C901 CMP #1967F*D003 BNE *+5Huntsville Macro Assembler 65C02 cross assembler for PC-DOS 2.0v1.82L Page 10ModuleBIKIA9681*4C2097 JMP AUTOS18 ;YES9684*A980 LDA #LOW FPHRTAVG9686*A004 LDY #HIGH FPHRTAVG9688*ASB6 JSR MQVFM968B*ASB6 LDA #LOW FPHIGHTEST968D*A004 LDY #HIGH FPHIGHTEST968F*B09468 JSF FCOMF ;OVER LIMIT?9692*C901 CMF #19694*FO1C BBQ AUTOS10 ;YES9696*AD7005 LDA FACEFLG ;HAPPY FACE ALREADY ON?9699*D00E BNE AUTOS9A ;YES969E*2009BD JSR HAPPYFACE969E*A9FF LDA #$FF96A0*8D7005 STA FACEFLG96A3*8D6F05 STA INCFLG96A6*8DE05STA DEOFLG96A9* AUTOS9A96A9*9C2C03 STZ SPTIMSEC ;RESET TIMER96AC*9C2D03 STZ SPTIMTNTH96AF*4C3995 JMP AUTOS296B2* AUTOS1096B2*AD7005 LDA FACEFLG FACEON?96B5*D005 BNE AUTOS10A ;YES96B7*AD6E05 LDA DECFLG ;DECREASE ARROW?96BA*F009 BEQ AUTOS10B ;NO96BC* AUTO10A96BC*206CF0 JSR CLRFACE96BF*9C6F05 STZ INCFLG96C2*9C7005 STZ FACEFLG96C5* AUTOS10B96C5*ADEO5LDA DECFLG ;JUST DECREASED?96C8*F00A BEQ AUTOS11 NO96CA*AD2C03 LDA SPTIMSEC ;20 SEC UP?96CD*C914 CMP #2096CF*B003 BCS *+596D1*4C3995 JMP AUTOS2 ;NO96D4* AUTOS1196D4*9C6F05 STZ INCFLG96D789C7005 STZ FACEFLG96DA*CE6E05 DEC DECFLG ;= $FF96DD* AUTOS11AA96DD*9C2DO3 STZ SPTIMTNTH ;RESET TIMERS96E0*9C2C03 STZ SPTIMSEC96E3*AD0C02 LDA DACTMP ;DAC AT 0?96E6*F010 BEQ AUTOS11A ;YES96E8*A923 LDA #LOW INTO ;POWER > 0?96EA*A064 LDY #HIGH INTO96EC*20DF67 JSR MOVFMHuntsville Macro Assembler 65C02 cross assembler for PC-DOS 2.0v1.82L Page 11ModuleBIKIA96EF*A9CF LDA #LOW FPPOWER96F1*A003 LDY #HIGH FPPOWER96F3*209465JSR FCOMP96F6*3010 BMI AUTOS12 ;NO96F8* AUTOS11A96F8*206E05EIT DEOFLG ;DECREASE ALREADY ON?96F8*300B BMI AUTOS10 ;YES96FD*20B9EFJSR DECREASEFFORT9788*A9FF LDA #$FF9702*8D6E05STA DECFLG9705* AUTOS11C9705*4C3995JMP AUTOS29708* AUTOS12;JSR CLRFACE9708*A9C9 LDA #LOW INT10970A*A063 LDY #HIGH INT10970C*20DF67JSR MOVFM970F*A9CF LDA #LOW FPPOWER9711*A003 LDY #HIGH FPPOWER9713*20ED64JSR FSUB ;DECREASE BY 109716*A2CF LDX #LOW FPPOWER9718*A003 LDY #HIGH FPPOWER971A*200D68JSR MOVMF971D*4C3995JMP AUTOS29720* AUTOS139720*9CA07FSTZ $7FA0 ;0 DAC9723*9C0C02STZ DACTMP9726*9CCF03STZ FPPOWER9729*9C7005STZ FACEFLG972C*9C6F05STZ INCFLG972F*80CC BRA AUTOS11B9731* LIMITCALC ;CALCULATE LIMITS9731*2033F4JSR RDYFAC9734*AE2702LDX USERID9737*BD1005LDA LOWLIM,X973A*85DA STA FACLO973C*207565JSR NORMAL973F*A2C0 LDX #LOW FPLOWLIM9741*A004 LDY #HIGH FPLOWLIM9743*200D68JSR MOVMF9746*2033F4JSR RDYFAC9749*AE2702LDX USERID974C*BD2505LDA HIGHLIM,X974F*85DA STA FACLO9751*207565JSR NORMAL9754*A2C5 LDX #LOW FPHIGHLIMHuntsville Macro Assembler 65C02 cross assembler for PC-DOS 2.0v1.82L Page 12ModuleBIKIO9756*A004 LDY #HIGH FPHIGHLIM9758*200D68JSR MOUMF975B*2033F4JSR RDYFAC975B*AE2702LDX USERID9761*BD3A05LDA HPTMAX,X9764*85DA STA FACLO9766*207565JSR NORMAL9769*204568JSR MOVAF976C*A9C5 LDA #LOW INT100976E*A064 LDY #HIGH INT1009770*20DF67JSR MOVFM9773*20EAFOJSR FACLO9776*A204 LDX #LOW FPMAC9778*A004 LDY #HIGH FPMAX977A*200D68JSR MOUMF977D*A9C0 LDA #LOW FPLOWLIM977F*A004 LDY #HIGH FPLOWLIM9781*20DF67JSR MOVFM9784*A9C5 LDA #LOWF PHIGHLIM9788*A004 LDA #HIGH FPHIGHLIM9788*20ED64JSR FSUB ;HIGH - LOW9788*A941 LDA #LOW INTPT2978D*A064 LDY #HIGH INTPT2978F*206566JSR FMULT ;* 0.29792*A263 LDX #LOW FACTMP ;SAVE9794*A003 LDY #HIGH FACTMP9796*200D68JSR MOVMF9799*A9C0 LDA #LOW FPLOWLIM979B*A004 LDY #HIGH FPLOWLIM979D*200465JSR FADD ;+ LOW97A0*A2B1 LDX #LOW FPLOWTEST97A2*A004 LDY #HIGH FPLOWTEST97A4*200D68JSR MOVMF97A7*A963 LDA #LOW FACTMP97A9*A003 LDY #HIGH FACTMP97AB*20DF67JSR MOVFM97AE*A9C5 LDA #LOW FPHIGHLIM97B0*A004 LDY #HIGH FPHIGHLIM97B2*20ED64JSR FSUB ;HIGH - 0.2*DIFF97B5*A2B6 LDX #LOW FPHIGHTEST97B7*A004 LDY #HIGH FPHIGHTEST97B9*200D68JSR MOVMF97BC*A9C5 LDA #LOW FPHIGHLIM97BE*A004 LDY #HIGH GPHIGHLIM97C0*20DF67JSR MOVFM97C3*A99C LDA #LOW INT597C5*A063 LDY #HIGH INT597C7*200465JSR FADD97CA*A2BB LDX #LOW FPHIGHTST597CC*A004 LDY #HIGH FPHIGHTST5Huntsville Macro Assembler 65C02 cross assembler for PC-DOS 2.0v1.82L Page 137CE-200D68 JSR MOVMF UPPEP LIMIT+5 ModuleBIKIA97D1*A9E1 LDA #LOW FPLOWTEST97D3*A004 LDY #HIGH FPLOWTEST97D5*10F597JSR LIMITADDRCALC ;CALCULATE LOW LIMIT ADDRESS97D8*A500 LDA ADDR SAVE ADDRESS97DA*851A STA PNT1397DC*A501 LDA ADDR+197DE*8515 STA PNT13+197E0*202798JSR LIMITDSP ;DRAW LINE97E3*A9B6 LDA #LOW FPHIGHTEST97E5*A004 LDY #HIGH FFHIGHTEST97E7*20F597JSR LIMITADDRCALC97EA*A500 LDA ADDR ;SAVE ADDRESS OF HIGH LIMIT97EC*851C STA PNT1497EE*A501 LDA ADDR+197F0*251D STA PNT14+197F2*4C2798JMP LIMITDSP ;NOW DRAW LINE AND RTN97F5* LIMITADDRCALC97F5*20C966JSR CONUPK97F8*A94B LDA #LOW INT3197FA*A064 LDY #HIGH INT3197FC*20DF67JSR MOVFM97FF*20F064JSR FSUBT9802*A946 LDA #LOW INTPT559804*A064 LDY #HIGH INTPT559806*206566JSR FMULT9809*20E664JSR FADDH980C*200569JSR INT980F*A950 LDA #LOW INT649811*A064 LDY #HIGH INT649813*206566JSR FMULT9816*20D468JSR QINT9819*38SEC981A*A980 LDA #$80981C*E5DA SBC FACLO981E*8500 STA ADDR9820*A93F LDA#$3F9822*E5D9 SBC FACMO9824*8501 STA ADDR+19826*60RTS9827* LIMITDSP ;DRAW DOUBLE LINE AT ADDRESS9827*A003 LDY #39829*A90F LDA #$0F982B*9100 STA (ADDR),Y982D*CBINY982E*A9FF LDA #$FF9830* LIMITDSP19830*9100 STA (ADDR),Y9832*C8INY9833*C008 CPY #89835*DOF9 BNE LIMITDSP1Huntsville Macro Assembler 65C02 cross assembler for PC-DOS2.0 v1.82L Page 149837*207FA7JSR ADD40983A*A003 LDY #3983C*A90F LDA #$0F983E*9100 STA (ADDR),Y9840*C8INY9841*A9FF LDA #$FF9843* LIMITDSP29843*9100 STA (ADDR),Y9845*C8INY9846*C008 CPY #8984 8*D0F9 BNE LIMITDSP2984A*60RTS
权利要求
1.一种用于控制施加于在练习装置上锻炼的人的负荷,从而控制那人的心律的器械,其特征在于包括一种能供人用作心血管锻炼的练习装置,该装置包括负荷输入装置,人用以将负荷输入到所述装置;和可变负荷装置,用于施加一为该人能承受住的可变阻力负荷,以锻炼和提高该人的心血管速率;低心律装置,当该人的心律低于一预定低限值时,为了提高所述的心律就启用所述低心律装置,所述低心律装置确定由可变负荷装置施加的负荷是否刚刚提高以及如果刚提高,是否所述负荷在一预定时间内未改变,如果负荷低于一预定最大值时,所述低心率装置就驱使所述可变负荷装置提高负荷。
2.如权利要求1所述的器械,其特征在于还包括高心律停车装置,当该人的心率高出第二预定上限值一预定量时,所述高心律停车装置就工作,用以大大降低由所述可变负荷装置施加的负荷;当所述某人的心律高于一第三预定限值时,所述高心律装置就工作以降低所述心律,所述高心律装置确定由可变负荷装置施加的负荷是否刚刚提高和如果所述负荷已提高了一预定时间,所述高心律装置使所述可变负荷装置增加负荷,如果所述负荷不是刚刚降低和不低于一预定值时,所述高心率装置驱使所述可变负荷装置降低由所述可变负荷装置施加的负荷;和一装置,用于监控所述人的心律,并将所述心律接到所述高心律装置和低心律装置,以及所述高心律停车装置上。
3.如权利要求2所述的器械,其特征在于还包括可见显示装置,它响应所述高心律装置和高心律停车装置,以当所述人的力量可能增大时向所述人发出指示。
4.如权利要求2所述的练习装置,其特征在于所述练习装置包括一用于固定一自行车的诸组件的固定支架,所述自行车包括一后轮、一后轮胎和一后轴、一车架、一车座、一前叉、车把和脚蹬,其中所述固定支架包括后轴支撑装置,用于连接所述后轴的相对的两端而不妨碍所述后轮和轮胎的转劲,所述后轴支撑装置约束所述后轴、轮子和轮胎沿着一预定路线移动;前叉支撑装置,用于连接和支撑前叉,所述前叉支撑装置是可移动的,以响应骑车人体重的移动;和一辊子,固定在所述支架上,以便在所述后轴连接到所述后轴支撑装置上时,使辊子能和所述自行车后轮胎摩擦接触,当所述后轴连接到所述后轴支撑装置时,所述辊子和所述后轴支撑装置一起支撑起所述后轮和轮胎,使所述辊子和其轴连接到所述后轴支撑装置上的后轮胎之间保持摩擦接触,一旦骑车人的体重移向所述前叉支撑装置时,以致能防止在所述辊子和所述后轮胎之间打滑。
5.如权利要求2所述的器械,其特征在于还包括用于确定第一和第三预定心律限值的装置。
6.一种用于控制施加于在练习装置上锻炼的人的负荷,从而控制那人的心律的器械,其特征在于包括供人用于作心血管锻炼的一种练习装置,该装置包括一负荷输入装置,人能在所述装置上施加力,以提高所述人的心律;和一可变负荷装置,用于施加一为所述负荷输入装置能承受住的可变阻力负荷;一检测所述人心律的心律传感器;一与所述心律传感器相连接的检测器,当所述人的心律低于一第一预定值时,所述检测器发出一第一信号,当所述人的心律高于一第二预定值时,就发出一第二信号;一响应所述第一信号的第一控制装置,所述第一控制装置与所述可变负荷装置相连接,以便在一第一预定时间段内由所述可变负荷装置施加的负荷仍未增大时增大由所述可变负荷装置施加的负荷。一响应所述第二信号的第二控制装置,所述第二控制装置与所述可变负荷装置相连接,以便在一第二预定时间段内由所述可变负荷装置施加的负荷尚未减少时减少由所述可变负荷装置施加的负荷。
7.如权利要求6所述的器械,其特征在于还包括一响应所述第二信号的第三控制装置,当所述心律高于一第三预定值时,所述第三控制装置减小由所述可变负荷装置施加的负荷。
8.如权利要求6所述的练习装置,其特征在于所述练习装置包括一用于固定自行车的诸组件的固定支架,所述自行车包括一后轮、一后轮胎和一后轴、一车架、一车座、一前叉、车把和脚蹬,其中所述固定支架包括一可旋转地支撑住的辊子;一设计成可移动地支撑一自行车的后轴的后轴支撑,该支撑能约束所述轴沿一预定路线向着和离开所述辊子移动,所述辊子和所述后轴支撑一起将一连接到所述轴的一自行车的后轮胎支撑在使其与所述辊子摩擦接触的位置上;和与所述辊子相接的惯性装置,当所述辊子和所述支撑件支撑的一自行车的后轮胎摩擦接触而使所述辊子转动时,该惯性装置贮存能量,以模拟在实际骑行中自行车和骑车人的惯性。
9.如权利要求6所述的器械,其特征在于还包括用于确定所述可变负荷装置的效率,以补偿所述加载装置中的效率下降的装置。
10.一种用于控制施加于在练习装置上锻炼的人的负荷,从而限制那人的心律的方法,其特征在于包括下列步骤使用一练习装置作锻炼,提高所述人的心律;改变由所述练习装置施加于该人的负荷,以改变所述人的心律;在练习中,检测所述人的心律;当所述人的心律低于一第一预定值时,将负荷增加一预定量,所述增加包括下列步骤确定由所述练习装置施加于所述人上的可变负荷是否刚刚增大;确定是否在一第一预定时间段内所述负荷未改变;确定所述负荷是否低于一第一预定负荷值;和当在所述第一预定时间段内所述负荷未改变,以及当所述负荷低于所述第一预定负荷值时,将所述可变负荷增大一预定量;当所述人的心律高于一第二预定值时,将负荷减少一预定量,所述减少包括下列步骤确定所述心律是否高于一第三预定心律值;当所述心律高于所述第三预定心律值时,大大减少所述可变负荷;确定所述可变负荷是否刚刚减少 确定是否在一第二预定时间段内所述可变负荷未改变;确定所述可变负荷是否已达到一第二预定负荷值;和当在所述第二预定时间段内所述负荷未减少,以及当所述可变负荷尚未达到所述第二预定负荷值时,减少所述可变负荷。
11.如权利要求10所述的方法,其特征在于还包括下述步骤确定所述练习装置的效率;和补偿效率,以精确控制负荷。
全文摘要
一种支承自行车的训练器械,其中一枢轴安装的构件连接车后轴,支承件与一支承辊筒一起支承后轮,并和一前叉支承相连。当骑车人向前倾伏时,后轮与辊筒保持摩擦接触。与辊筒相连的飞轮和可变负荷装置模拟惯性和骑行中的可变负荷,并可补偿摩擦损耗。骑车人可选择比赛路线和比赛水平。骑车人在比赛人群中的位置可显示出,并随机变化,以模拟真实比赛情况。通过控制加于骑车人的负荷,使被监测的骑车人的心律维持在一限值内。
文档编号B01J23/755GK1038412SQ89103400
公开日1990年1月3日 申请日期1989年5月19日 优先权日1988年5月20日
发明者布鲁斯·A·萨金特, 罗布·里森, 马克·J·霍芬伯格, 罗伯特·A·瓦尔珀特 申请人:施温自行车公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1