Dragon FORTH for PalmOS 使用笔记

13 views
Skip to first unread message

xiaohao

unread,
Jun 2, 2011, 9:27:33 AM6/2/11
to Forth中国社区
今天,我的palm650到手了,随机使用了palm desktop安装了Dragon FORTH 。
下载地址:http://sourceforge.net/projects/dragonforth/
找到其中的DFCons.prc 同步到palm650中。
OK~现在再手机主菜单上多了个DFcons图标,这就是我梦寐已久的Dragon FORTH!
点击后程序瞬间运行,爽!

经Fox指导,初步使用时有几个注意点:
1,如何打出符号“ ;”?
先打出“:”再摁Alt键切换。

2,如何导入写好的一段程序?
在记事本中的第一行写上:
( myforth )
第二行开始正常写代码。
打开DF后,先输入:
s" myforth" included
注意中间的空格号,即可把写好的程序编译进字典。

先写到这里,以后将会慢慢补充使用笔记~~

xiaohao

unread,
Jun 2, 2011, 10:02:21 AM6/2/11
to Forth中国社区
3,如何自动加载记事本中写好的小程序?
创建一个文件,第一行写上:
( dfcons )
打开DF即可自动加载~~

xiaohao

unread,
Jun 3, 2011, 7:37:29 AM6/3/11
to Forth中国社区
4,发现一个BUG
在DF中的菜单栏使用ABORT后,退到palm手机主界面时,会自动重启。

胡松涛

unread,
Jun 3, 2011, 8:00:59 AM6/3/11
to cn...@googlegroups.com
在 Fri, 03 Jun 2011 19:37:29 +0800,xiaohao <superc...@gmail.com> 写道:

> 在DF中的菜单栏使用ABORT后,退到palm手机主界面时,会自动重启。

如果在DF中輸入bye也會自動重啟。


--
Hu Songtao
works as an English Teacher in weekends
Skype: idisblueflash
Beijing, China

xiaohao

unread,
Jun 4, 2011, 8:48:55 AM6/4/11
to Forth中国社区
谢谢fox提醒~~
5,举个小例子,还是机房设备巡检注意事项~在DF和Gforth中编译通过

: temperatureOk? cr
." !!!机房温度是否在18度到25度之间? " cr
." !!!三台空调工作是否正常? " cr
." !!!湿度是否在45%到65%之间? " cr ;

: upsPowerSupplyOk? cr
." 去检查两台UPS电源状态是否正常吧! " cr ;

: networkOk? cr
." !!!核心网络设备工作是否正常? " cr
." !!!主备服务器状态 " cr
." !!!主备交换机状态 " cr
." !!!两台路由器状态 " cr ;

: zhuan1Ok? cr
." !!!转码机1是否正常? " cr
." !!!接受数据是否正常? " cr
." !!!时间对比是否一致? " cr ;

: zhuan2Ok? cr
." !!!转码机2是否正常? " cr
." !!!接受数据是否正常? " cr
." !!!时间对比是否一致? " cr ;

\ : toCheck cr
\ 15 spaces ." | | " cr
\ 15 spaces ." | | " cr
\ 14 spaces ." \| |/ " cr
\ 15 spaces ." \ / " cr
\ 15 spaces ." \/ " cr ;

\ : time? ( time&date--hour*100+minutes )
\ time&date drop drop drop 100 * + swap drop ;

: 晨检
page
temperatureOk?
key page drop
networkOk?
key page drop
upsPowerSupplyOk?
key page drop ;

: 常检
page
temperatureOk?
key page drop
zhuan1Ok?
key page drop
zhuan2Ok?
key page drop
networkOk?
key page drop ;

胡松涛

unread,
Jun 4, 2011, 9:01:45 AM6/4/11
to cn...@googlegroups.com
在 Sat, 04 Jun 2011 20:48:55 +0800,xiaohao <superc...@gmail.com> 写道:

> : 晨检
> page
> temperatureOk?
> key page drop
> networkOk?
> key page drop
> upsPowerSupplyOk?
> key page drop ;


看到 很多重复的 写法,我就手痒。
: nextpage ( -- )
( ) key
( n ) page
( ) drop
;

: 晨检 ( -- )
page
temperatureOk?
nextpage
networkOk?
nextpage
upsPowerSupplyOk?
nextpage ;

xiaohao

unread,
Jun 5, 2011, 4:31:16 AM6/5/11
to Forth中国社区
哈哈,fox比我更擅长因子化代码~
关于使用git仓库存储代码,不重新发明轮子的建议甚好!

: nextpage ( -- )
( ) key
( n ) page
( ) drop
;

这个字可以放到轮子仓库中去,哈哈!
关键在于如何挑出有用的字,这个还要思考尝试。

xiaohao

unread,
Jun 5, 2011, 9:35:24 AM6/5/11
to Forth中国社区
各位,我写了个小程序《每日一句励志名言》
代码很丑陋很粗糙,没有注释,仅作测试用,目前在gforth上测试通过,我会尽快完善

: tips1
dup 1 = if page ." 人生应该如蜡烛一样,从顶燃到底,一直都是光明的。 —— 萧楚女 " drop
else dup 2 = if page ." 路是脚踏出来的,历史是人写出来的。人的每一步行动都在书写自己的历史。 —— 吉鸿昌 "
drop
else dup 3 = if page ." 春蚕到死丝方尽,人至期颐亦不休。一息尚存须努力,留作青年好范畴。 —— 吴玉章 "
drop
else dup 4 = if page ." 但愿每次回忆,对生活都不感到负疚 —— 郭小川 " drop
else dup 5 = if page ." 人的一生可能燃烧也可能腐朽,我不能腐朽,我愿意燃烧起来! —— 奥斯特洛夫斯基 "
drop
then then then then then ;

: tips2
dup 6 = if page ." 你若要喜爱你自己的价值,你就得给世界创造价值。 —— 歌德 " drop
else dup 7 = if page ." 社会犹如一条船,每个人都要有掌舵的准备。 —— 易卜生 " drop
else dup 8 = if page ." 人生不是一种享乐,而是一桩十分沉重的工作。 —— 列夫·托尔斯泰 " drop
else dup 9 = if page ." 生活只有在平淡无味的人看来才是空虚而平淡无味的。 —— 车尔尼雪夫斯基 " drop
else dup 10 = if page ." 一个人的价值,应该看他贡献什么,而不应当看他取得什么。 —— 爱因斯坦 " drop
then then then then then ;

: tips3
dup 11 = if page ." 人只有献身于社会,才能找出那短暂而有风险的生命的意义。 —— 爱因斯坦 " drop
else dup 12 = if page ." 生活真象这杯浓酒,不经三番五次的提炼呵,就不会这样可口! —— 郭小川 " drop
else dup 13 = if page ." 充满着欢乐与斗争精神的人们,永远带着欢乐,欢迎雷霆与阳光。 —— 赫胥黎 "
drop
else dup 14 = if page ." 希望是附丽于存在的,有存在,便有希望,有希望,便是光明。 —— 鲁迅 " drop
else dup 15 = if page ." 生活就是战斗。 —— 柯罗连科 " drop
then then then then then ;

: tips4
dup 16 = if page ." 沉沉的黑夜都是白天的前奏。 —— 郭小川 " drop
else dup 17 = if page ." 我们唯一不会改正的缺点是软弱。 —— 拉罗什福科 " drop
else dup 18 = if page ." 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。 —— 苏轼 " drop
else dup 19 = if page ." 生当作人杰,死亦为鬼雄,至今思项羽,不肯过江东。 —— 李清照 " drop
else dup 20 = if page ." 壮心未与年俱老,死去犹能作鬼雄。 —— 陆游 " drop
then then then then then ;

: tips5
dup 21 = if page ." 故立志者,为学之心也;为学者,立志之事也。 —— 王阳明 " drop
else dup 22 = if page ." 贫不足羞,可羞是贫而无志。 —— 吕坤 " drop
else dup 23 = if page ." 我们以人们的目的来判断人的活动。目的伟大,活动才可以说是伟大的。 —— 契诃夫 "
drop
else dup 24 = if page ." 毫无理想而又优柔寡断是一种可悲的心理。 —— 培根 " drop
else dup 25 = if page ." 生活的理想,就是为了理想的生活。 —— 张闻天 " drop
then then then then then ;

: tips6
dup 26 = if page ." 人,只要有一种信念,有所追求,什么艰苦都能忍受,什么环境也都能适应。 —— 丁玲 "
drop
else dup 27 = if page ." 我从来不把安逸和快乐看作是生活目的本身---这种伦理基础,我叫它猪栏的理想。 —— 爱因
斯坦 " drop
else dup 28 = if page ." 理想的人物不仅要在物质需要的满足上,还要在精神旨趣的满足上得到表现。 —— 黑格尔
" drop
else dup 29 = if page ." 一个能思想的人,才真是一个力量无边的人。 —— 巴尔扎克 " drop
else dup 30 = if page ." 一个没有受到献身的热情所鼓舞的人,永远不会做出什么伟大的事情来。 —— 车尔尼雪夫斯
基 " drop
else dup 31 = if page ." 共同的事业,共同的斗争,可以使人们产生忍受一切的力量。 —— 奥斯特洛夫斯基 "
drop
then then then then then then ;

: everyday time&date drop drop swap drop swap drop swap drop ;

: tips
dup 0 > swap dup 6 < rot and if tips1
else dup 5 > swap dup 11 < rot and if tips2
else dup 10 > swap dup 16 < rot and if tips3
else dup 15 > swap dup 21 < rot and if tips4
else dup 20 > swap dup 26 < rot and if tips5
else dup 25 > swap dup 32 < rot and if tips6
then then then then then then ;

执行 everyday tips

分割成6个tips的目的,是为了方便移植到Dragon FORTH上,请高手们别鄙视我。。。
哈哈,祝大家每日都有好心情~
Dragon FORTH上因为字符串字数限制,加上不知道如何调用手机日期,目前仅移植过去一部分代码。

胡松涛

unread,
Jun 6, 2011, 12:55:11 AM6/6/11
to cn...@googlegroups.com
在 Sun, 05 Jun 2011 21:35:24 +0800,xiaohao <superc...@gmail.com> 写道:

> 各位,我写了个小程序《每日一句励志名言》
> 代码很丑陋很粗糙,没有注释,仅作测试用,目前在gforth上测试通过,我会尽快完善

這個很讚!先寫出來,然後完善!

xiaohao

unread,
Jun 6, 2011, 3:38:39 AM6/6/11
to Forth中国社区
gforth自带随机数发生器,所以可以把代码改善下:
开始第一句加上
include random.fs

> : everyday time&date drop drop swap drop swap drop swap drop ;

改写为
: everyday 31 random ;

哈哈,这样子可以彻底改写下代码,稍后放出~~

xiaohao

unread,
Jun 6, 2011, 4:02:38 AM6/6/11
to Forth中国社区
时间的取得方法
s" facil" included

随机数的取得方法
s" rnd" included

Reply all
Reply to author
Forward
0 new messages