TI-89T 教你在C程序里调用TI-BASIC程序,看看是否有人对这个感兴趣

教你在C 程序里调用TI-BASIC程序,看看是否有人对这个感兴趣
昨天翻TIGCC的文档,先瞅了瞅FAQ,话说我看文档有个习惯,就是先看目录,再看FAQ,因为FAQ汇集了很多人曾经遇到过的问题、犯过的错误, 而且涵盖各种不同难度,非常值得一看。

在FAQ中看到教人用C程序调用TI-BASIC程序的示范代码,正好我最近在 研究TI-BASIC,就想试试,原来的例程如下,我加了一下注释,你会发现C语言的特点是从右往左执行:

// 在C中定义一个 函数,参数是TI-BASIC的程序名称 
void progrun(const char *name) 
{ 
  // 定义字符串变量 
  char fname[25]; 

  // 定义一个HANDLE型指针变量 h,h 将来使用时会按照HANDLE结构动态分配一个内存块,把内存块入口地址关联到 h ,h 实际是一个HANDLE结构型的内存指针变量 
   HANDLE h; 

  // 把TI-BASIC程序名称拷贝到我们定义的字符串变量 fname 中 
  strcpy (fname, name); 

  // 在 fname 追加"()",假设fname里原来的数据是"myprgm",执行strcat后就变成"myprgm()" 
  strcat (fname, "()"); 

  // 解析字符串fname里的表达式,并且把tokenized(标识化)的表达式内容全部压入到表达式栈中   
  push_parse_text (fname); 
   
   // 这个语句要从后往前分析:HS_popEStack () 做的是分配一个内存区域,然后把刚才压栈的表达式出栈,并且把出栈的内容拷贝到新分配的内存块里,最后把这个内存块的地址当做一个结构指针变量返回给 h 
   h = HS_popEStack (); 

  TRY 
    // 调用 NG_execute 来执行 h ,也就是执行 TI-BASIC 程序 
    NG_execute (h, FALSE); 
  FINALLY 
    // 最终执行完毕,释放 h 使用的内存 空间 
    HeapFree (h); 
  ENDFINAL 
}


最后在你的 main 函数里调用 progrun 就可以了,这里假设你已经在 计算器上准备好了一个名为 testprog 的TI-BASIC 程序
progrun ("testprog");

我用TIGCC在PC上编译了一次,OK,又在 计算器上用GTC编译了一次,也OK,下面是我稍作修改后的代码,因为例子里没有让TI-BASIC程序带参数,我改写了一个带参数版本的,其实简单,就是把你的PRGM的内容全部传到 progrun 里就可以了,然后把追加括号的语句注释掉即可。不过这个带参数的 功能不完全,因为TIGCC的 main函数没有 argc 和 argv,所以我还没搞清楚 如何在主程序中带参数,因此这里默认的PRGM程序名称为 apic(1,2) ,有两个参数,所以你需要事先在计算器上创建一个名称为apic的PRGM程序,这个程序带两个参数。

下面是代码:

#define USE_TI89 
#define OPTIMIZE_ROM_CALLS 
#define MIN_AMS 101 
#include <tigcclib.h> 
void progrun(const char *name) 
{ 
  char fname[25]; 
  HANDLE h; 
  strcpy (fname, name); 
  //strcat (fname, "()"); 
  push_parse_text (fname); 
  h = HS_popEStack (); 
  TRY 
    NG_execute (h, FALSE); 
  FINALLY 
    HeapFree (h); 
  ENDFINAL 
} 

// Main Function 
void _main(void) 
{ 
  progrun ("apic(0,0)"); 
  //progrun ("apic(0,100)"); 
  ngetchx(); 
}


这里是编译好的程序,用法就是直接在home界面执行:
cb()

转载于:https://my.oschina.net/freeblues/blog/62925

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
简介一年多以前,Android平台曾经出现过三个流行的TI计算器模拟器软件,分别包括TI-83、TI-85、TI-86,让许多用户大为欣喜,不过因为这些软件采用了一键安装模式导致侵犯了德州仪器的版权问题,最终这些软件被迫下架。 现在TI-89计算器又出现在Android平台,这次为了避免重蹈覆辙,开发者采用了模拟机的方式,仅提供一个模拟器,用户需要自行下载德州仪器给出的计算器ROM用来给软件加载。 虽然现在这款模拟器还处于测试阶段,但是已经可以正常使用,而且是Android平台上出现的第一个可用的TI-89计算器工具更新内容: - 优化变焦模式 - 增加振动器开/关 - 性能改进 - 改善应用程序的链接 安装说明:下载主程序和rom文件,解压zip格式的rom文件,再把解压后的文件放到SD卡任意目录,安装主程序,打开主程序并按菜单键,选择Load ROM,点击刚放到SD卡的rom文件,重新运行程序即可! 。可以成功模拟五种计算器: TI89,TI89Titanium,TI92,TI92plus,Voyage200。 安装使用方法步骤: 1:把rom包解压到sd卡根目录(TI89Titanium_OS.89u为解压后的rom包)。 2:安装TI89主程序,点击菜单点击ROM Manager(看截图1)。 3:点击Add Rom(看截图2)。 4:点击Browse(看截图3)。 5:向下滑动找到刚才解压后的rom包TI89Titanium_OS.89u,点击它(看截图4)。 6:点击Select Type,再滑动选择TI89或TI92或其它三个(TI83和84系列不可用,可能比较落后,模拟器不支持,建议用TI89和TI92或Voyage200系列)(看截图5)。 注意:关闭软件方法,按住2nd键不放,再按ON键,然后放开手指即可退出软件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值