¡@²Ä¤C³¹ ¸ê®Æªº³B²z : °ïÅ|©Mª¬ºA ¡@¡@¡@¡@¡@¡]States¡^¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w ²Å¦¡¥H¨âºØ¤è¦¡¨Ó³B²z¸ê®Æ: ¦b°ïÅ|¤W¡A©ÎªÌ¦b¸ê®Æµ²ºc¸Ì¡C¥»³¹ªº¥DÃD§Y¦b»¡©ú¡A ¦b¦ó®É¡B¨Ï¥Î¦óºØ¤èªk¡B¥H¤Î¦p¦ó¨ÓºÞ²z°ïÅ|©M¸ê®Æµ²ºc¡C
¦b²Å¦¡ªº¦r¶¡¶Ç»¼¤Þ¼Æ¡A³Ì²³æªº¤èªk´N¬O¸g¥Ñ°ïÅ|¡C¦¹¹Lµ{¤§©Ò¥H"²³æ"¡A¬O¦]¬° ©Ò¦³±q°ïÅ|¨ú¥X©Î°ï¤J¼ÆÈªº°Ê§@³£¬OÁô§tªº¡C
¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w
¸ê®Æ°ïÅ|¨Ï¥Î¤F¡u¸ê°TÁôÂávªºÆ[©À¡C
¦b¦r¶¡©Ò¶Ç»¼ªº¤Þ¼Æ¡A¨Ã¤£»Ýn¦b©I¥sµ{ §Ç¤¤³Q©úÅã¦aªí¥Ü¥X¨Ó¡C¤@Ӥ޼ƫܥi¯à¼ç¦æ¸g¹L³\¦h¦r¦Ó¤£³Q¬Ý¨ì¡A¬Æ¦Ü³sµ{¦¡³]p
®v³£¤£·|·Pı¨ì¡Cì¦]«Ü²³æ¡A¦]¬°¥¦®Ú¥»¤£»Ýn¶Â¯È¥Õ¦rªº¼g¥X¨Ó¤~¯à³Q°Ñ¦Ò¨ì¡C ³oºØ¤è¦¡ªº¤@Ó«nµ²ªG¬O: ¤Þ¼Æ³£¥¼³Q©R¦W¡C¥¦Ì±H¥Í¦b°ïÅ|¸Ì¡A¦Ó¤£¬O¦s¦b©R¤F¦W ªºÅܼƸ̡C³o¬O¨Ï²Å¦¡¦¨¬°Â²¼ä»y¨¥ªº¤@Óì¦]¡C¦ý¬O¥¦¤]¬O¨Ï¼g§@ªº¤£¨}ªº²Å¦¡µ{¦¡¡A Åܪº«ÜÃø¾\Ūªº¤@Óì¦]¡CÅý§Ú̬ã¨s¤@¤U³oºØ¦Û¬Û¥Ù¬Þªº±¡ªp¡C °ïÅ|ªºµo©úÃþ¤ñ©ó»y¨¥¤¤¥N¦Wµüªºµo©ú¡C½Ð°Ñ¦Ò¤U±¤@¥y¸Ü: ®³°_³oÓ§ª«¡A±N¥¦¥H´Ö¯È¥]¦n¨Ã±N¥¦©ñ¦b²°¤l¸Ì¡C ª`·N¡Aµü"§ª«"¥u´£¨ì¤@¦¸¡C¨ä«áªº"§ª«"³£¬O¥H"¥¦"¨Ó¥N´À¡C "¥¦"³oºØ«D¥¿¦¡ªºµ²ºc¡A¼W¥[¤F»y¨¥ªº¥iŪ©Ê¡]¥un³oӰѦҤ£¬Oªx¸qªº¡^¡C¦P¼Ë ªº¡A¦³¤F°ïÅ|¡A³oºØÁôÂæ¡ªº¤Þ¼Æ¶Ç»¼¡A¤]·|¨Ïµ{¦¡¦³¸û°ªªº¥iŪ©Ê¡C§Ú̩ҫµøªº¬O ¡uµ{§Ç¡v¡A¦Ó«Dµ{§Ç¤§¶¡ªº¡u¤Þ¼Æ¶Ç»¼¡v¡C ³oÓ¥N¦Wµüªº¤ñ³ë¡A¤]»¡©ú¤F¬°¤°»ò¦³®É²Å¦¡·|³Q¼gªº«D±`¦aÃøÅª¡C¦pªG¦³¤Ó ¦hªº¨Æª«³£¨Ï¥ÎµÛ¥N¦Wµü¨Ó°Ñ¦Òªº®ÉÔ¡A§Y¨Ï¬O¤f»yªº»¡ªk¤]·|Åܪº»y·N²V²c¡C ¸Ñ¶}¥]¸Ë¯È¨Ã¥´¶}²°¤l¡C®³¥X§ª«¡A±N¥¦¥á±¼¡C ³o¥y¸Üªº°ÝÃD¦b©ó¡A§ÚÌ¥Î"¥¦"¥h°Ñ¦Ò¤F¤Ó¦hªº¨Æª«¡C¹ï©ó³oÓ¿ù»~¡A¦³¨âºØ¸Ñ¨Mªº ¿ìªk¡C³Ì²³æªº¬O¨Ï¥Î¤@Ó¯u¥¿ªº¦WºÙ¡A¦Ó¤£n¥Î"¥¦"¡G ¸Ñ¶}¥]¸Ë¯È¨Ã¥´¶}²°¤l¡C®³¥X§ª«¡A±N²°¤l¥á±¼¡C ©ÎªÌ§ÚÌ¥i¥H¨Ï¥Î¡u«eªÌ¡v©M¡u«áªÌ¡v³oºØµü¡C¦ý¬O¡A³Ì¦nªº¿ìªkÁÙ¬O±N¥y¤l«·s³]p: ¸Ñ¶}¥]¸Ë¯È¨Ã¥´¶}§ª«¡C¥á±¼²°¤l¡C ¦b²Å¦¡¸Ì¡A¤]¦³Ãþ¦üªº±¡ªp:
¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w ¦³¨Ç²Å¦¡ªºªì¾ÇªÌ¡A¬Ý°ïÅ|´N¹³Åé¾Þ¹B°Êû¬ÝÂùºb¤@¼Ë: ¬O¤@Ó¦nª±ªº¼u¸õ³õ©Ò¡C¦ý¬O¡A ²¦³º°ïÅ|¬O¤@Ó¸ê®Æ¶Ç°eªº´C¤¶¡A¦Ó¤£¬O¯S§Þªíºtªº³õ©Ò¡C ©Ò¥H¡A¤U¤@Ó°ÝÃD¬O¡A¦h²`¤~ºâ"¤Ó²`"¡H ¤@¯ë¨Ó»¡¡A¦b¤@Ó©w¸q¸Ì¡A§A³Ì¦h¯¯à ºÞ²z¤TÓ°ïÅ|¤¸¯À¡C¡]¹ï©óÂù¾ã¼Æªø«×ªººâ³N¡A¨CÓ"¤¸¯À"¦û¦³¨âÓ°ïÅ|¦ì¸m¡A¦ýÅÞ¿è ¤W¡A¥¦Ì¤´µM³Q¾A·íªº¹Bºâ¤¸¡A½Ñ¦p 2DUP ¡B2OVER µ¥µ¥¡A·í¦¨¤@Ó¤¸¯À¨Ó¬Ý«Ý¡C¡^ ¦b³q±`ªº°ïÅ|¾Þ§@µü¶°¸Ì¡AROT ¬O°ß¤@¥i¥H¦s¨ú°ïÅ|²Ä¤TÓ¤¸¯Àªº¦r¡C°£¤F PICK ©M ROLL ¤§¥~¡]§Ú̧Y±N½Í¨ì³o¨Ç¦r¡^¡A¨S¦³¥ô¦ó¦r¥i¥HIJ¤Î§ó²`¼hªº¤¸¯À¡C ±q»y¨¥ªºÃþ¤ñÃö«Y¨Ó¬Ý¡A°ïÅ|ªº¤TÓ¤¸¯Àµ¥©ó¤TÓ¥N¦Wµü¡G³oÓ¡A¨ºÓ©M¨ä¥¦¡C
Åý§Ú̬ݤ@Ó¦]¤è¦V¿ù»~¦Ó¨Ï°ïÅ|²V¶Ãªº¨Ò¤l¡C°²³]§ÚÌn¼g¤@Ó +THRU ªº©w¸q¡]°Ñ ¦Ò²Ä¤³¹¡A¡uµ{¦¡¦Cªíªº²Õ´¡v¤@¸`¤¤ªº"³¹¸`¸ü¤J¹õ"³¡¥÷¡^¡C§Ú̪º°j°é¥»Åé¤j·§¬O ³o¼Ëªº: ... DO I LOAD LOOP ; ¤]´N¬O¡A§Ú̱N LOAD ©ñ¦b°j°é¤¤¡A¨Ã¦w±Æ"¯Á¤ÞÈ"¤Î"¬ÉÈ"¡]index and limit¡^ ¥H²Å¦X§ÚÌ©Òn¸ü¤Jªºµ´¹ï¹õ¸¹¡C §Ú̪º°ïÅ|¦b¶}©l®É¬O: lo hi ³o¸Ìªº"lo"©M"hi"¬O BLK ªº°¾²¾È¡]offset¡^¡C ¬°¤F DO ªº¹B§@¡A§ÚÌ¥²»Ý±N¥¦ÌÅÜ´«¬°µ´¹ï¾¸¹: hi+1+blk lo+blk ³Ì¤jªº°ÝÃD¬O±N BLK ªº¼ÆÈ¥[¨ì³o¨âÓ°¾²¾È¤¤¡C §Ṳ́w¸g¨«¿ù¤F¤è¦V¡A¦ý²{¦bÁÙ¥½µoı¡C©Ò¥HÄ~Äò¨«¤U¥h¡C©ó¬O: lo hi
BLK @
lo hi blk
SWAP
lo blk hi
OVER
lo blk hi blk
+
lo blk hi+blk
1+
lo blk hi+blk+1
ROT ROT
hi+blk+1 lo blk
+
hi+blk+1 lo+blk
·d¦n¤F¡A¦ý«o¬O¤@¹Î¶Ã! ¦pªG§ÚÌı±o¨üªº¸oÁÙ¤£°÷¡AÁÙ¦³¨âÓ§ó¼Ñªº°µªk¡A¥¦Ì¬O: BLK @ DUP ROT + 1+ ROT ROT + ©M BLK @ ROT OVER + ROT ROT + 1+ SWAP ©Ò¦³ªº¤TÓµ{§Ç³£°µ¦P¼Ëªº¨Æ¡A¦ý¬Oµ{¦¡½X«o¤@Ó¤ñ¤@ÓÁV¡A¦Ó¤£¬O§ó¦n¡C ¸g¥Ñ¹L¥hªº¸gÅç¡A§ÚÌ»{ÃѨì¡yROT ROT¡zªº²Õ¦X¬OÓ¦MÀIªº«H¸¹¡G°ïÅ|¤Ó¾ÖÀ½¤F¡C ¦bÁÙ¨S¦³§ä¥X§Oªº¿ìªk¤§«e¡A§Ṳ́w¸g¬Ý¥X¤F°ÝÃD¡G¤@¥¹§Ṵ́µ¤F¨â¥÷"blk"ªº«þ¨©¡A °ïÅ|¸Ì´N·|¦³¥|Ó¤¸¯À¡C ³o®É¡Aº¥ý·Q¨ì¥i¥H¨Ì¿àªº¾ÌÂÇ¡A´N¬Oªð¦^°ïÅ|¡G BLK @ DUP >R + 1+ SWAP R> + ¡]°Ñ¦ÒÀH«áªº"Àu¶®ªºªð¦^°ïÅ|"¤@¸`¡C¡^³o¸Ì¡A§Ú̱N"blk"½Æ»s¤@¥÷¡A¥ý±N¨ä¤¤ªº ¤@¥÷¦s¨ìªð¦^°ïÅ|¤¤¡A¥t¤@¥÷«h»P"hi"¬Û¥[¡C §ïµ½¤F¤@¨Ç¡C¦ý¬O¥iŪ©Ê¬O§_¤]¼W¥[¤F¡H ¤U¤@¨Bn¦Ò¼{ªº¬O¡A"©Î³\§ÚÌ»Ýn¤@ÓÅܼÆ"¡C·íµM¡I§ÚÌ쥻´N¤w¸g¦³¤F¡G ´N¬O BLK ¡C©Ò¥H§Ú̸յۦA©w¸q¡G BLK @ + 1+ SWAP BLK @ + ²{¦bªº¥iŪ©Ê¤ñ¸û°ª¤F¡A¦ýÁÙ¬O¤Óªø¡A¨Ã¥B¤]¤Ó«½Æ¡C¡yBLK @ +¡z¥X²{¤F¨â¦¸¡C ¡yBLK @ +¡z¡H ¬Ý°_¨Ó¦ü¥G«Ü¼ô±x¡C²×©ó¡A§Ú̪º¯«¸g±µ¤W½u¤F¡C§Ú̦^ÅUè¤~ ©w¸q¹Lªº +LOAD ªºì©l½X¡G : +LOAD ( offset'--) BLK @ + LOAD ; +LOAD ³oÓ¦rÀ³¸Ó¬O¯à³Q¥Î¨Ó°µ³o¥ó¨Æªº¡C§ÚÌÀ³¸Ó¼gªº¬O¡G : +THRU ( lo hi--) 1+ SWAP DO I +LOAD LOOP ;
³o¸Ì¡A§Ų́èS¦³°µ¥X¤@Ó°õ¦æ§ó§Öªºª©¥»¡A¦]¬°¨C·í¸g¹L°j°é®É¡A¡yBLK @ +¡z³£
·|³Q°õ¦æ¤@¦¸¡C§ÚÌ»s§@ªº¬O¤@Ó§ó²M·¡¡AÆ[©À§ó²¼ä¡A¨Ã¥B§ó¾Ö¦³¥iŪ©Êªºµ{¦¡½X¡C¦b
³oÓ¨Ò¤l¸Ì¡A®Ä²v®t¡]͵ù¡G«üªº¬O°õ¦æ³t«×¡^¨Ã¤£·|³Q¹îı¨ì¡A¦]¬°¥¦¥u¦b¨CÓ¹õ³Q¸ü ¤J®É¡A¤~·|°õ¦æ¤@¦¸¡C
«·s³]p¡A©ÎªÌ«·s«ä¦Ò¡A¬O¦b°ÝÃD´c¤Æ¤§«e¡A§ÚÌ¥²»Ý±Ä¨úªº¨BÆJ¡C ¤j³¡¥÷ªº®ÉÔ¡A°ÝÃD³£¯à°÷³Q¾A·íªº¥[¥H¦w±Æ¡A¨Ï¥ô¦ó®É¨èªº°ïÅ|¤W¡A»Ýnªº¤Þ¼Æ ¼Æ¶q³£¥u¦³´XÓ¦Ó¤w¡C¦ý¦³®É«oµL¯à¬°¤O¡C ³o¸Ì¦³¤@Ó³ÌÃa±¡ªpªº¨Ò¤l¡C°²³]¦³¤@Ó¦r LINE ¡A¥¦·|¦b¥ô·N¨âÂI¤§¶¡µe¤@±ø½u¡C ¥¦©Ò»Ýnªº®y¼Ð¶¶§Ç¬°¡G ( x1 y1 x2 y2 ) ¨ä¤¤ x1 y1 ¥Nªí¨ä¤¤¤@ÂIªº®y¼Ð¡Ax2 y2 ¥Nªí¬Û¹ïªº¥t¤@ÂI¡C ²{¦b§A»Ýn©w¸q¥X¤@Óµe²°¤lªº¦r [BOX]¡C¥¦¥H¤U¦Cªº¦¸§Ç¨ú±o¥|Ӥ޼ơG ( x1 y1 x2 y2 ) ¨ä¤¤ x1 y1 ¥Nªí²°¤l¥ª¤W¨¤ªº®y¼Ð¡A x2 y2 ¥Nªí¥k¤U¨¤ªº®y¼Ð¡C §A¤£¶È¦³¥|Ó¤¸¯À¦b°ïÅ|¤W¡A¦Ó¥B·í§Aµe½u®É¡A¨ä¤¤ªº¨C¤@¶µ³£·|³Q°Ñ¦Ò¨ì³\¦h¦¸¡C ÁöµM§Ú̯à¦Û°ïÅ|¨ú±o©Ò»Ýªº¤Þ¼Æ¡A¦ý¬Oµe²°¤lªººtöªk«o¨Ã¤£¶¶µÛ°ïÅ|ªº¥»©Ê¡C¦pªG §A«Ü«æ¡A¤£§«¥H³Ì²³æªº¤èªk¼g¦¨¡G VARIABLE TOP ( y coordinate: top of box)
VARIABLE LEFT ( x " left side)
VARIABLE BOTTOM ( y " bottom)
VARIABLE RIGHT ( x " right side)
: [BOX] ( x1 y1 x2 y2 --) BOTTOM ! RIGHT ! TOP ! LEFT !
LEFT @ TOP @ RIGHT @ TOP @ LINE
RIGHT @ TOP @ RIGHT @ BOTTOM @ LINE
RIGHT @ BOTTOM @ LEFT @ BOTTOM @ LINE
LEFT @ BOTTOM @ LEFT @ TOP @ LINE ;
§ÚÌ»s³y¤F¥|Ó©R¤F¦WªºÅܼơA¨CÓ®y¼Ð¤@Ó¡C[BOX] ©Ò°µªº²Ä¤@¥ó¨Æ´N¬O¥ý±N°ïÅ| ¤Wªº¤Þ¼Æ¦s¤J³o¨ÇÅܼƤº¡AµM«á°Ñ¦Ò³o¨ÇÅܼƵe¥X¥|±ø½u¨Ó¡C³oºØ¥u¦b¤@Ó©w¸q¤º³Q°Ñ¦Ò ªºÅܼơ]¦³®É¬O¥u¦b¤@Óµü¶°¤º¡^ºÙ¬°¡u§½³¡Åܼơv¡C §Ú¦³®É·|¦]¬°½æ§Ë§Þ¥©¦Óı±o¤ºª¹¡A¦]¬°§ÚÁ`¬OºÉ¶q¦a¨Ï¥Î°ïÅ|¡A¦Ó¤£Ä@·N¥h©w¸q ¤@Ó§½³¡ÅܼơC¦ý¬O¡A¦³¤TÓ²z¥Ñ¤£À³¸Ó³o¼Ë°µ¡G ²Ä¤@¡A¨ººØ¼g½Xªº¤è¦¡«ÜµhW¡C²Ä¤G¡Aµ²ªGªº¥iŪ©Ê·|«Ü®t¡C²Ä¤T¡A¦b³]p¤W¦³©Ò §ïÅܮɡA©Î°ïÅ|¤Wªº¤Þ¼Æ¦¸§Ç§ïÅܮɡA©Ò¦³¤w¸g§¹¦¨¤Fªº¤u§@³£n«·s×¥¿¡C¡yDUP¡z¡B ¡yOVER¡z©M¡yROT¡z³o¨Ç¦r¨Ã¤£¥h¸Ñ¨M°ÝÃD¡A¥¦Ì¥u¬O§âªF¦è¦w±Æ¨ì¥¿½Tªº¦ì¸m¤W¡C ±N³o¤TÓ²z¥Ñ»Ê°O¦b¤ß¡A§Úªº«ØÄ³¬O¡G
¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w ²Ä¥|¡A¦pªG³oÓ©w¸q¹ï³t«×ªº»Ý¨D«Ü±Ó·P¡A³o¨Ç©Ç²§ªº°ïÅ|¾Þ§@¡A¡]¦p ROT ROT¡^¯u·|§â ®É¶¡³£¦Y±¼ªº¡Cª½±µ¦s¨úÅܼƷ|¤ñ¸û§Ö¡C ¦ý¬O¡A¦pªG®É¶¡¯uªº«Ü«n¡A§A¤]³\²×¨s¤£±o¤£§ï¼g¦¨²Õ¦X»y¨¥ªº©w¸q¡C¦¹®É©Ò¦³ªº °ïÅ|°ÝÃD¤]³£ªï¤b¦Ó¸Ñ¡A¦]¬°©Ò¦³ªº¸ê®Æ³£±N°Ñ¦Ò¨ì¼È¦s¾¹¡A©ÎªÌ¶¡±µ¦a¸g¥Ñ¼È¦s¾¹¡C©¯ ¹Bªº¬O¡A³Ì²V¶Ãªº°ïÅ|¤Þ¼Æªº©w¸q¡A³q±`³£¬O¥H¾÷¾¹½X¼g¦¨¡C§Ú̪º [BOX] ´N¬O¤@Ó³o ¼Ëªº¨Ò¤l¡ACMOVE> ¬O¥t¤@Ó¨Ò¤l¡C ¦b§Ú̹ï [BOX] ©Ò±Ä¥Îªº¤èªk¤¤¡Aªá¤F¤j¬ù¥b¤p®É¦b·d³o¨Ç°ïÅ|¤¸¯À¡A¦ý¥¦¤´¤£¬O ӳ̨Ϊº¸Ñ¨M¿ìªk¡C³Ì¤£µÎªAªº¬O»s³y¤F¥|ÓÅܼơA¦û¥Î¤FÀx¦s¦WºÙ¤Î¨ä¥¦ªF¦è©Ò»Ýªº °O¾ÐÅé¡A¥u¬O¬°¤F¦b³oÓ±`¦¡¤¤¨Ï¥Î¡C³oÓ¥N»ù¤]¥¼§K¤Ó°ª¤F¨Ç¡C Åý§Ú¦A«½Æ¤@¦¸¡G³oÓ¨Ò¤l©Ò¥Nªíªº¬O¤@ºØ³ÌÃaªºª¬ªp¡A¦b¤j³¡¥÷ªº²Å¦¡À³¥Î¸Ì«Ü¤Ö ¥X²{¡C¦pªG¦r³Q¤À¸Ñªº«Ü¦n¡A«h¨CÓ¦r·|³Q³]p±o¥u°µ«Ü¤Öªº¨Æ¡C°µ«Ü¤Ö¨Æªº¦r³q±`´N¥u »Ýn¸û¤Öªº¤Þ¼Æ¡C ¦b³oÓ¨Ò¤l¸Ì¡A§Ú̱¹ïªº¬O¨âÓÂI¡A¨CÓÂI¥H¨âÓ®y¼Ðªí¥Ü¡C §Ú̯à§_§ïÅܳ]p¡H º¥ý¡ALINE ¥i¯à¬O¤Ó°ò¥»¤F¡C¥¦»Ýn¥|Ӥ޼ơA¦]¬°¥¦ n¦b¥ô·N¨âÂI¤§¶¡µe½u¡A¦Ó¥B¥i¯à¬O±ø±×½u¡C ¨ä¹ê§Ú̵e²°¤l®É¡A¶·nªº¬O¯Âºéªº««ª½©M¤ô¥½u¡C³oÓ¨Ò¤l¸Ì¡A§ÚÌ¥i¥H±N³o¨Ç µe½uªº¦r VERTICAL ©M HORIZONTAL¡A¼gªº¸û¦³«Â¤O¦Ó¤S¦³³q¥Î©Ê¡C¨CÓ¦r¥un¤TÓ¤Þ¼Æ ¡G°_©l¦ì¸m x y ¤Îªø«×¡C³oºØ¥\¯à¤Wªº¤À¸Ñ¡A²¤Æ¤F [BOX] ªº©w¸q¡C ¤U±ªº»yªk¹ï©ó¨Ï¥ÎªÌ¥i¯à¸û¬°¦ÛµM¡G 10 10 ORIGIN! 30 30 BOX ¨ä¤¤ ORIGIN! ±N¤@Ó"¨â¤¸¯Àªº«ü¼Ð"³]©w¬°"origin"¡A¤]´N¬O²°¤lªº°_ÂI¡]¥ª¤W¨¤¡^¡C µM«á¡y30 30 BOX¡z·|¬Û¹ï©ó³oÓ°_ÂI¡Aµe¥X¤@Ó30³æ¦ì°ª¡A30³æ¦ì¼eªº²°¤l¡C ³oºØ¤èªk¡]¤]¬O³]pªº¤@³¡¥÷¡^´î¤Ö¤F BOX ©Ò»Ýªº°ïÅ|¤Þ¼Æªº¼Æ¶q¡C
¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w PICK ©M ROLL ¦³¨Ç¤H³ßÅw¦r PICK ©M ROLL¡C¥L̥γo¨Ç¦r¥h¦s¨ú°ïÅ|¥ô¤@¼hªº¤¸¯À¡C§Ú¤£«ØÄ³³o¼Ëªº ¥Îªk¡C ¨ä¤@¬O¡APICK ©M ROLL ¨Ïµ{¦¡³]p®v±N°ïÅ|¬Ý¦¨¬O¤@Ó°}¦C¡A¦ý¨Æ¹ê¤W¥¦¨Ã¤£¬O¡C ¦pªG¦³³\¦h°ïÅ|¤¸¯À»Ýn PICK ©M ROLL¡A³o¨Ç¤¸¯ÀÀ³¸Ó©ñ¦b°}¦C¸Ì¡C ²Ä¤G¡A¥¦¹ªÀyµ{¦¡³]p®v¥h°Ñ¦Ò¤@¨Ç¥Ñ¤W¼h©w¸q©Ò¯d¦b°ïÅ|¤Wªº¤Þ¼Æ¡A¦Ó³o ¨Ç¤Þ¼Æ¨Ã¨S¦³¦b³oÓ©w¸q¤¤³Q©ú½Tªº«ü¥X¨Ó¡C³o·|¨Ï±o³oÓ©w¸qªº¹B§@n¨Ì¿à¨ä¥¦ ªº©w¸q¡C³o¬O«Dµ²ºc¤Æªº --¨Ã¥B«Ü¦MÀI¡C ³Ì«á¡A¤@Ó¤¸¯À¦b°ïÅ|¸Ìªº¦ì¸m¡A¬O¥Ñ¦b¥¦¤W±¦³¦h¤ÖÓ¤¸¯À¨Ó¨M©w¡A¦Ó¦b¥¦¤W± ªº¤¸¯À¼Æ¶q«o¬OÀH®É·|§ïÅܪº¡CÁ|Ó¨Ò¤l¡A¦pªG¦³¤@Ó¦a§}¦b°ïÅ|ªº²Ä¥|Ó¦ì¸m¡A§A¥i ¥H¼g 4 PICK @ ¨Ó¨ú±o¥¦ªº¤º®e¡C¦ý¬O§A¥²»Ý¼g¦¨ ( n) 5 PICK !
¨Ó¦s¤J¥¦¡C¦]¬°¦³"n"¦b°ïÅ|¤W¡A²{¦b¥¦Åܦ¨¬O²Ä¤Ó¦ì¸m¤F¡C
Ãþ¦ü³o¼Ëªºµ{¦¡½X«ÜÃøÅª¡A§óÃø¥H×§ï¡C
·í§An¸Ñ¨M¤@ÓÁcÂøªº°ïÅ|±¡ªp¡A³Ì¦nªº¤èªk¬O¥Î¯È©Mµ§¡C¦³¨Ç¤H¬Æ¦Ü»s§@ªí®æ¡A¹³¹Ï
7-1©Ò¥Ü¡C³oºØ¥¿¦¡ªº¤u§@¡]¤ñ¨Ï¥Î¹q¸Ü½ã³æªºI±n¦n¡^¨Ï°ïÅ|°O¨Æ¦¨¬°²M·¡ªº»²§U ©Ê¤å¥ó¡C
¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w ¦b¹Ï7-1ªº CMOVE> °ïÅ|µù¸Ñ¸Ì¡A¤º¼hªº¥ª¤j¬A¸¹¼Ð¥Ü¥Xªº³¡¥÷¥Nªí DO LOOP ªº¤º®e¡C ¦b¶i¤J¦¹¤@°j°é®Éªº°ïÅ|²`«×»PÂ÷¶}®É¤@¼Ë: ¥u¦³¤@Ó¤¸¯À¡C¦b¥~¼hªº¤j¬A¸¹¸Ì¡AIF ¤l ¥yªº°ïÅ|µ²ªG»P ELSE ¤l¥y¤@¼Ë: ¤]¥u¦³¤@Ó¤¸¯À¯d¤U¡C¡]¯d¤Uªº¤¸¯À¬O¤°»ò¨Ã¤£«n¡A ¦]¦¹¥Î"x"ªí¥Ü¡C¡^
¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w ¨Ò¦p: : COUNT ( a -- a+1 # ) DUP C@ SWAP 1+ SWAP ; ¡]¦b³oùØ¡A§A¥ý¨ú±op¼ÆÈ#¡^¤ñ¸û¦³®Ä²vªº¼gªk¬O¡G : COUNT ( a -- a+1 # ) DUP 1+ SWAP C@ ; ¡]¦b³oùØ¡A§A¥ýpºâ·s¦a§} a+1¡^¡C ¹Ï7-1 °ïÅ|°O¨Æªº¨Ò¤l
¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w §A¸g±`»Ýn¤@ºØ©w¸q¡A¥¦¥±`°µ¤@¨Ç¤u§@¡A¦ý¦b¦³¿ù»~µo¥Í®É¡A·|¶Ç¦^¤@Ó¿ù»~½X ¥HÅã¥Ü¥X¿ù»~ªºµo¥Í¡C¤U±¬O¤@ºØ¥i¯àªº°ïÅ|¤¶±³]p¡G ( -- error-code f | -- t) ¦pªGºX¸¹¬°¯u¡A¾Þ§@´N¬O¦¨¥\ªº¡C¦pªGºX¸¹¬°°²¡A´Nªí¥Ü¬O¥¢±Ñªº¡A¨Ã¥B°ïÅ|¸Ì·|¦³¥t¤@ Ó¼ÆÈ¡A¥Î¨Óªí¥Ü¿ù»~ªº©Ê½è¡C ¦pªG±N¤¶±«·s³]p¡A§A¥i¯à·|ı±o°ïÅ|ªº¾ÞÁaÅܱo¤ñ¸û®e©ö¨Ç¡G ( -- error-code | 0=no-error )
¥¦¨Ï¥Î¤@Ó¼ÆÈ¡A¦P®É¥NªíºX¸¹¤Î¡]·í¿ù»~±¡ªp®É¡^¿ù»~½X¡Cª`·N¡A¦b³o¸Ì¨Ï¥Î¤F ¬Û¤ÏªºÅÞ¿è¡G«D¹sªí¥Ü¤@Ó¿ù»~¡C°£¤F¹s¥H¥~¡A§A¥i¥H¥Î¥ô¦ó¼ÆÈ¨Ó¥Nªí¿ù»~½X¡C
¨Ï¥Îªð¦^°ïÅ|¨Ó¼È®É¦a«O¦s¤Þ¼Æ¡A±N·|¦p¦ó¡H ³o¬O§_¬O¤@ºØ¦nªº·®æ¡H ¦³¨Ç¤H¹ï³oºØ¥Îªk¡A¦³µÛ±j¯Pªº§Ü©Ú¡C¦ý¬O¡Aªð¦^ªº°ïÅ|½T¹ê¹ï¬YºØ°ïÅ|ªºÂø¶Ã µL³¹¡A´£¨Ñ¤F¤@Ó²³æªº¸Ñ¨M¤èªk¡CCMOVE> ªº©w¸q´N¬OÓ¹ê»Úªº¨Ò¤l¡C ¦pªG§A¨M©w¥H³oºØ¥Øªº¨Ó¨Ï¥Îªð¦^°ïÅ|¡A½Ð°O¦í¡A§A¬O¨Ï¥ÎµÛ¤@Ó·íªì³]pªº¥Øªº ¨Ã¤£¬°¦¹ªºµü¶°¡C¡]°Ñ¬Ý¥»³¹µy«á¡u¤¸¥óªº¦@¥Î¡v³¡¥÷¡^¡C ³o¸Ì¦³¤@¨ÇÁ×§K¶Ë®`ªº«ØÄ³¡G
¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w
1. «O«ùªð¦^°ïÅ|ªº¹B§@¬O¹ïºÙªº¡C 2.
¦b±±¨î¬yµ{ªº¦UºØ±ø¥ó¤U¡A³£n±Nªð¦^°ïÅ|ªº¹B§@«O«ù¹ïºÙ¡C 3. ¦b¤À¸Ñ©w¸q®É¡A¨¾¤î¤U±ªº±¡ªp¡G¤@³¡¥÷¥]§tµÛ¤@Óªð¦^°ïÅ|ªº¹B§@¤¸¡A¦Ó»P
¥¦¤¬¸Éªº¹B§@¤¸«o¦b¥t¤@³¡¥÷¤¤¡C 4. ¦pªG¦b¡yDO LOOP¡z¸Ì¨Ï¥Î¡Aªð¦^°ïÅ|ªº¹B§@¤¸¥²»Ý¦b°j°é¸Ì¬O¹ïºÙªº¡A¦Ó¥B
¦b³Q¡y>R¡z©M¡yR>¡z©Ò¬É©wªºµ{¦¡¬q¤¤¡A¡yI¡z¤£¦A¦³®Ä¡C ¦b¤@Ó©w¸q¸Ì¡A¨C¤@Ó¡y>R¡z¥²»Ý¦³¤@Ó¡yR>¡z¡C¦³®ÉÔ¡A¹B§@¤¸¬Ý°_¨Ó¬O¹ïºÙªº ¡A¥i¬O¥Ñ©ó±±¨îµ²ºcªºÃö«Y¡A¥¦¹ê»Ú¤W¨Ã¤£¹ïºÙ¡C¨Ò¦p¡G ... BEGIN ... >R ... WHILE ... R> ... REPEAT
¦pªG³oÓµ²ºc³Q¥Î¦bÀ³¥Îµ{¦¡ªº³Ì¥~¼h°j°é¤¤¡A¦b§A¸õ¥X¥H«e¡A¨C¤@¥ó¨Æ³£·|°õ¦æ ªº«Ü¶¶ºZ¡]¥i¯à¬O¤@¤p®É¤§«á¡^¡A¥i¬O¬ðµM¶¡µ{¦¡´N·í±¼¤F¡C«ç»ò¦^¨Æ¡H ¦]¬°³Ì«á¤@¦¸
¸g¹L°j°é®É¡A¥¿Å¹ïºÙªº°Ê§@¡yR>¡z³Q¸õ¹L¤F¡C ÁöµM§ÚÌ¹ï¥Ø«e¦³¿³½ìªº¸ê®Æ³£©ñ¦b°ïÅ|¤W³B²z¡A¦ý¬O§ÚÌ«o¤´µMÊ¿àµÛÅܼƨÓÀx¦s¤j³¡ ¥÷ªº¸ê®Æ¡C¤@¬qµ{¦¡½X¥i¥H¦b¤£ª¾¹D¥ô¦ó¦³Ãö³oÓÅܼƬO¦p¦ó³Q¨Ï¥Îªº¡B¬On³Q½Ö¨Ï¥Îªº ¡B©Î¦b¦ó®É¦ó¦a¯à°÷³Q¨Ï¥Îªº±¡ªp¤U¡A´N¯à§ïÅܳoÓÅܼƪº¤º®e¡C¥t¤@¬qµ{¦¡½X¤]¥i¥H ¨ú±oÅܼƪº¤º®e¨Ã¥B¨Ï¥Î¥¦¡A¦Ó¤£¥Îª¾¹D³oÓ¼ÆÈ¬O¨Ó¦Û¦ó¤è¡C ¨C¤@Ó±N¼ÆÈ°ï¤W°ïÅ|ªº¦r¡A¥²©w¦³¥t¤@Ó®ø¯Ó±¼¸Ó¼ÆÈªº¦r¡C°ïÅ|µ¹§ÚÌ¡uÂI¹ï ÂI¡vªº³q°T¡A´N¹³¶l§½¤@¼Ë¡C ÅܼơA±q¥t¤@Ó¨¤«×¬Ý¨Ó¡A¥i¥H³Q¥ô¤@Ó©R¥O³]©w¡A¨Ã¥B¥i¥H³Q¥ô¤@Ó¨ä¥Lªº©R¥O ¦s¨úµL¦h¦¸ --©ÎªÌ§¹¥þ¤£¥h¨Ï¥Î¥¦¡CÅܼƬO¬°¨C¤@Ó¤H¦Ó·Ç³Æªº¡A½ÖºÞ¥¦¬Ý°_¨Ó¹³ ¤°»ò¡C ¦]¦¹¡AÅܼƥi¥H³Q¥Î¨Ó¤ÏÀ³¥X¨Æª«ªº¥Ø«eª¬ºA¡]current state¡^¡C ¨Ï¥Î¡u¥Ø«eª¬ºA¡v¥i¥H²¤Æ°ÝÃD¡C¦b²Ä¥|³¹ªºÃ¹°¨¼Æ¦r¸Ì¡A§Ų́ϥÎÅÜ¼Æ COLUMN# ¥Nªí¥Ø«e³B²zªº"X¦ì¼Æ"¡F ¦r¡yONER¡z¡yFIVER¡z¡yTENER¡z¨Ì¦¹¸ê®Æ¨Ó¨M©w¸ÓÅã¥Ü¤°»ò ²Å¸¹¡C§Ṳ́£¥²¨C¦¸³£´£¨ì©Òn³B²zªº¦ì¼Æ¡A¦p¡yTENS ONER¡z¡B¡yTENS FIVER¡zµ¥µ¥¡C ´«¤@Ó¨¤«×¨Ó¬Ý¡A¡u¥Ø«eª¬ºA¡v«o¼W¥[¤Fµ{¦¡·s¤@¼hªº½ÆÂø«×¡C¬°¤F¨Ï¬Yª«¦¨¬°"¥Ø «eªº"¡A§ÚÌ¥²»Ý¥ý©w¸q¥X¤@ÓÅܼơA©Î¬Y¤@ºØ¸ê®Æµ²ºc¡C¦pªG¦b¥¦³Q³]©w¤§«e¡Aµ{¦¡¤¤ ´N¤w¸g¦³¨ä¥¦ªº³¡¥÷»Ýn°Ñ¦Ò¥¦¡A¨º»ò´Nn°O±o°µªìȳ]©w¡C Åܼƪº¥t¤@Ó§óÄY«ªº°ÝÃD¬O¡A¥¦Ì¬O¤£¯à³Q"¦A¶i¤J"¡]re-entrant¡^ªº¡C¦b¦h¤u ªº²Å¦¡¨t²Î¸Ì¡A¤@¥ó»Ýn§½³¡Åܼƪº"¤u§@"¡]task¡^¡A¥²»Ý¦³¥¦¦Û¤vªº¤@¥÷³oÓÅܼƪº «þ¨©¡C²Å¦¡ªº USER ÅܼƴN¬O¬°¤F³o¶µ¥ô°È¦Ó³]¡C¡]°Ñ¦ÒStarting Forth ²Ä¤E³¹¡A "Forth Geography" ³¡¥÷¡C¡^ §Y¨Ï¦b³æ¤@ªº¤u§@¤¤¡A¤@ӰѦÒÅܼƪº©w¸q¡A¤]¤ñ¸g¥Ñ°ïÅ|¨Ó¶Ç°e¤Þ¼Æ¡A§óÃø´ú¸Õ¡B ÅçÃÒ¡B¤Î¦A¨Ï¥Î¡]resue¡^¡C °²³]§ÚÌnµo®i¤@Ó¤å®Ñ³B²z¾¹¡C§ÚÌ»Ýn¤@Óµ{§Ç¡A¥¦¯àpºâ¥X¥Ø«eªº´å¼Ð¦ì¸m»P «e¤@Ó´«¦æ°Ê§@¤§¶¡ªº¦r¤¸¼Æ¶q¡C©Ò¥H¡A§ÚÌ¥²»Ý¦³¤@Ó¦r¡A¥¦¨Ï¥Î¡yDO LOOP¡z¡A¦Û¥Ø «eªº´å¼Ð¦ì¸m¡] CURSOR @ ¡^¶}©l¡Aª½¨ì²Ä¹sÓ¦ì¸mµ²§ô¡A¦b¨ä¶¡¦V«e·j´M"´«¦æ"³oÓ¦r ¤¸¡C ¤@¥¹¦b°j¸ô¤¤§ä¨ì³oÓ¦r¤¸¡A§ÚÌ´N±N¥¦ªº¬Û¹ï¦ì¸m±q¥Ø«eªº´å¼Ð¦ì¸m¤¤´î¥h its-position CURSOR @ SWAP - ¥H¨M©w¥¦Ì¤§¶¡ªº¶ZÂ÷¡C ³oÓ¦rªº°ïÅ|®ÄªG¦p¤U: ( -- distance-to-previous-cr/lf) ¦bµy«áªºµ{¦¡½X¸Ì¡A§Ṳ́Sµo²{»Ýn¥t¤@ÓÃþ¦üªº¦r¡A¥¦pºâ±q¥ô·N¤@Ó¦r¤¸ --¤£ ¦b¥Ø«e´å¼Ðªº¦ì¸m¤W-- ¦Ü«e±²Ä¤@Ó´«¦æ¦r¤¸¤§¶¡ªº¶ZÂ÷¡Cµ²½×¬O¡A§ÚÌn±N¡yCURSOR @ ¡z¤À¸Ñ¥X¨Ó¡A¨Ã±N³oÓ"¶}©l¦ì¸m"·í°µ¬O¤@Ó°ïÅ|¤Þ¼Æ¨Ó¶Ç»¼¡Aµ²ªG¬O: ( starting-position -- distance-to-previous-cr/lf) ±NÅܼƪº°Ñ¦Ò¤À¸Ñ¥X¨Ó¡A§ÚÌ´N¯à¨Ï³oÓ©w¸qÅܪº§ó¦³¥Î¡C
¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w
¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w
±q¼Æ¾Çªº·N¸q¨Ó¬Ý¡A²Å¦¡ªº¼Ò²Õ©Ê¤j¦h¨Ó¦Û©ó¡G±N²Å¦¡ªº"¦r"¹³"¥\¯à"¤@¼Ëªº³]p ©M¬Ý«Ý¡C¦b§Úªº¸gÅç¸Ì¡A²Å¦¡ªºµ{¦¡³]p®v°£¤F³Ì«nªº¾ãÅéÅܼƤ§¥~¡A³£ºÉ¶qÁ×
§K©w¸q¥ô¦óÅܼơ]§Úªº¤@¦ìªB¤Í¦³Ó¡u«ô°UÁ×±¼Åܼơvªº¶K¯È¦b¥Lªº®à¤W¡^¡A¨Ã¥B ¸ÕµÛ¼g¥X©Ò¿×¡u°Ñ¦Ò¤W¬O³z©úªº¡]referential
transparency¡^¡v¦r¡F¤]´N¬O¡Aµ¹ ¥¦¬Û¦Pªº°ïÅ|¿é¤J¡A³oÓ¦rÁ`¬O²£¥Í¬Û¦Pªº°ïÅ|¿é¥X¡A¦Ó¤£¨ü¥¦¤º³¡¨º¨Ç§ó¨ãÁ`Åé
©Êªº¤å¥yªº¼vÅT¡C¨Æ¹ê¤W¡A³oÓ¯S©Ê¥¿¬O§Ú̦b¿W¥ß´ú¸Õ¤@Ó¦r®É©Ò¨Ï¥Îªº¡C¨S¦³ ³oºØ¯S©Êªº¦r·|«D±`¦aÃø¥H´ú¸Õ¡C¦b¬YºØ·N¸q¤W¡A¤@Ó¤º®e¸g±`§ïÅܪº¡u¦³¦W¦rªº
Åܼơv¡A¬O¶È¦¸©ó²{¦b¤w¸g³Q"¸T¤î¨Ï¥Î"ªº GOTO ±Ôzªº¦¸¤@ÁV¿|ªºªF¦è¡C µy¦§ÚÌ´¿«ØÄ³¨Ï¥Î§½³¡ÅܼơA¯S§O¬O¦b³]p¶¥¬q¤¤¡A¥Î¨ÓÁ×§K°ïÅ|ªº¾ÖÀ½±¡ªp¡CÀ³¸Óª` ·Nªº¬O¡A³oºØ°µªk»ÝnÅܼƥu¦b¤@Ó©w¸q¤º³Q°Ñ¦Ò¨ì¡C¦b§Ú̪º¨Ò¤l¸Ì¡A[BOX] ±q°ïÅ| ±µ¦¬¥|Ӥ޼ơA¨Ã¥ß¨è±N¥¦Ì¸ü¤J¨ì§½³¡ÅܼơA¨Ñ¥¦¦Û¨¨Ï¥Î¡C³o¥|ÓÅܼƨS¦³¦b³oÓ ©w¸q¤§¥~³Q°Ñ¦Ò¡A¦]¦¹¡A¥¦ªº¹B§@´N·|«Ü¦w¥þ¡C ¹ï©ó¤£²ßºD¤@ºØ¡u¸ê®Æ¥i¥H³QÁô§t¦a¶Ç»¼¡vªº¹q¸£»y¨¥ªºµ{¦¡³]p®v¦Ó¨¥¡AÁ`¬O ¤£¯à¥R¥÷¦a¨Ï¥Î°ïÅ|¡CMichael Hamı±o¡A¥i¯à¬O¦]¬°²Å¦¡ªºªì¾ÇªÌ¤£«H¥ô°ïÅ|[1]¡C ¥L©Ó»{¦b¶}©l®Éªº·Pı¬O¡G¼ÆÈÀx¦s¦bÅܼƸ̦ü¥Gn¤ñ¯d¦b°ïÅ|¤W¦w¥þ±o¦h¤F¡C¥LÃhºÃ¡A ¡u¦b°ïÅ|¸g¹L¼@¯PªºÅÍ©M¤§«á¡A¸ê®Æ¤£ª¾¹D·|Åܦ¨¤°»ò¼Ò¼Ë¡H¡v ¸g¹L¤@¬q®É¶¡¤§«á¡A¥L¤~Åé·|¨ì¡u¦pªG¦r¯àºÞ¦n¥¦¦Û¤vªº¨Æ¡A¥u¦b¥¦Ì´Á«Ýªº¿é¤J ©M¿é¥X¤W¤~¥h¨Ï¥Î°ïÅ|¡A¦Ó¥B¦b¥Î§¹¤§«á¡A·|±N¥¦²M²z°®²b¡C¨º»ò¡A¦r´N¥i¥H³Q¬Ý¦¨¬O¤@ ºØ«Ê³¬ªº¨t²Î ... §Ú¯à°÷¦b¤@Ó°j°é¶}©l®É¡A¥ý¦b°ïÅ|¤W©ñÓÈ¡A¦b¥¦¨«¹L¾ãÓ±`¦¡¤¤ ªº¨C¤@Ó´`Àô¤§«á¡A¦b°j°éµ²§ôªº¦a¤è¡A¥¦¤S¥X²{¦b°ïÅ|ªº³»ºÝ¡A¨S¦³¤@µ·¤@²@¦ì¸m ¤Wªº®t¿ù¡C¡v
´N¦p§ÚÌ¥ý«e©Ò¨£¡A¤@ÓÅܼơAY¯³Q¨Ï¥Î¦b¤@Ó©w¸q¡]©Î¤@Óµü¶°¡^¤§¤º¡A¨Ã¹ï¨ä¥¦ ªºµ{¦¡½XÁôÂð_¨Ó¡A´NºÙ¬°§½³¡ÅܼơC¤@ӨϥΦb¶W¹L¤@Ó¥H¤Wªºµü¶°¤¤ªºÅܼơAºÙ¬° ¾ãÅéÅܼơC¦p«e±ªº³¹¸`¤¤©Ò¨£¡A¤@²Õ¾ãÅéÅܼơAY¥¦ºî¦XµÛ´yz¥X´XÓµü¶°¤§¶¡ªº¤¶ ±¡A´NºÙ¬°¡u¤¶±µü¶°¡v¡C §½³¡ÅܼƩM¾ãÅéÅܼƹï²Å¦¡¦Ó¨¥¡A¬O¨S¦³®t§Oªº¡C¦ý¬O¡A¹ï²Å¦¡ªºµ{¦¡³]p®v«o¬O ¤£¦Pªº¡C
¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w
§ÚÌ¥²»Ý¬°Åªµ{¦¡½Xªº¤H¦Ó¼g¡C¦pªG¬Y¥ó¨Æ¥u¬O¦b§½³¡³Q°Ñ¦Ò¡A¨Ò¦p¤@ӼȮɥΨӲֿn
Á`¦XªºÅܼơA¨º§ÚÌ´N¸Ó±N¥¦©w¸q¬°§½³¡ÅܼơC¶¶¤â´N±N¥¦©w¸q¦b©Ò¨Ï¥Îªº°Ï¶ô¤º¡AÅý §A¥i¥H¬Ý¨ì¥¦ªºµù¸Ñ¡C
¦ý¬O¡A¦pªG¥¦³Q¨ì³B³£¨Ï¥ÎµÛ¡A§ÚÌ´N¥²¶·¨Ì¨äÅÞ¿è¤Wªº¥\¯à¨ÓÂkÃþ¡A±N¥¦Ì¶°¤¤¦b¤À ¶}ªº¤@Ó¹õ¤¤¡C¤@Ó¤@¦æ¡A¨Ã¥B¸òµÛ¤@Óµù¸Ñ¡C
°ÝÃD¬O¡A§An¦b¦ó³B°µ¥¦Ìªºªìȳ]©w¡H¦³¨Ç¤H»¡¥i¥Hºò±µ¦b©w¸q¤§«á¡C¦ý³o¼Ë°µ·| §Ë¶Ãµù¸Ñ¡A¦Ó¥B¤]´N¤£¯à¯d¤U¨¬°÷ªºªÅ¶¡¡A°µ¤ñ¸û§¹¾ãªºµù¸Ñ¡C¥t¥~¡A³o¼Ë°µ¤]·|¨Ïªì
ȳ]©wªº°Ê§@¡A´²§G¦bÀ³¥Îµ{¦¡¤¤¦U³B¡C §Ú¶É¦V©ó¡A¦b¸ü¤J¹õ¤¤°µ©Ò¦³ªºªìȳ]©w¡C¦b©Ò¦³ªº°Ï¶ô³£¸ü¤J¤F¤§«á¡A¦A°µ¥²»Ýªºªì
ȳ]©w¡A¤]³\¦P®É¤]³]©w¤@¨Çªí®æ¡A©Î°µ¤@¨Ç°_©lªº°Ê§@¡C ¦pªG§Aªºµ{¦¡³Ì«á¬On°µ¥Ø¼Ð½sĶ¡]Target compiled¡^¡A¨º»ò¡A¤]«Ü®e©ö¦b¦¹¦a¼g¥X¤@
Ó°õ¦æ©Ò¦³ªìȳ]©wªº¦r¡C ¥¦ÁÙ¥i¥H°µªº§óºë¥©¨Ç¡C§Ú´¿¸g¦b¨Ï¥ÎROMªº¨t²Î¸Ì©w¸qÅܼơA¥¦ÌªºÈ¦s©ñ¦b°ª°O¾ÐÅé
¤ºªº¤@ÓRAM°}¦C¤¤¡AªìÈ«h³Q¦s¦bROM¤¤¡C°µªìȳ]©w¡A´N¬O±NROMªìÈ«þ¨©¨ìRAM°}¦C ¤¤¡C¦ý¬O¡A³q±`ªº±¡ªp¬O¥u»Ýn³]©w´XÓªìȤ£¬°¹sªºÅܼơC ª¬ºAªº«O¦s©M«ì´_ ÅܼƦ³¤@ºØ¯S©Ê¡A´N¬O·í§A§ïÅÜ¥¦ªº¤º®e®É¡A¤]¦P®É·´±¼¤Fì¥ý¦b¸Ó³BªºÈ¡CÅý§ÚÌ¬Ý ¤@¤U³o¥ó¨Æ©Ò·|¤Þµoªº°ÝÃD¡A¥H¤Î§Ú̸ѨMªº¹ïµ¦¡C BASE ¬O¤@ÓÅܼơA¥¦ªí¥Ü©Ò¦³¿é¤J©M¿é¥Xªº¼ÆÈ¡A¥Ø«e©Ò¿í´`ªº¶i¦ì¨î¡C¥H¤Uªº ¦r¦b²Å¦¡¨t²Î¸Ì¸g±`¥i¥H¨£¨ì¡G : DECIMAL 10 BASE ! ;
: HEX 16 BASE ! ;
°²³]§Ú̼g¤F¤@Ó¦r¡A¥Î¨Ó"Åã¥Ü"¡]dump¡^¤@°ï°O¾ÐÅ骺¤º®e¡C¥Ø«e§Ṳ́u§@¦b¤Q¶i ¨î¤U¡A¦ý¬O«on¥Î¤Q¤»¶i¨î¥hÅã¥Ü¥¦ªº¤º®e¡C©Ò¥H§Ú̼g: : DUMP ( a # --)
HEX ... ( code for the dump ) ... DECIMAL ;
³oºØ°µªk¬O¥i¦æªº --¦b¤j³¡¥÷ªº®ÉÔ¡C¦ý³o»Ýn¤@Ó«eÃD¡A´N¬O¡A³Ì«á¬On¦^¨ì¤Q¶i¨î ªº¡C¦pªG¥¦ì¥ý´N¦b¤Q¤»¶i¨î¤U¡A°µ§¹«á¤´µMn¯d¦b¤Q¤»¶i¨î¡A³o¤S¸Ó¦p¦ó¡H¦b§Ú̱N BASE §ï¦¨ HEX ¤§«e¡A¥²»Ý¥ý«O¦s¥¦¥Ø«eªºÈ¡C¦b§¹¦¨Åã¥Ü¤§«á¡A¦A±N¥¦ÁÙì¡C ³o´N¬O»¡¡A¦b§Ṵ́µªº®ÉÔ¡A¥²»Ý¥ý¼È®É¦a±Nì¥ýªº¼ÆÈ«O¦s°_¨Ó¡Cªð¦^°ïÅ|¬OÓ ¥i¥H¥Î¨Ó°µ³o¥ó¨Æªº¦a¤è¡G : DUMP ( a # -- )
BASE @ >R HEX ... (code for dump) ... R> BASE ! ;
¦pªG¨Æ±¡Åܪº¤Ó½ÆÂø¡A§ÚÌ´N¥²»Ý©w¸q¤@ӼȮɪºÅܼÆ: VARIABLE OLD-BASE
: DUMP ( a # -- )
BASE @ OLD-BASE ! HEX ... (code for dump) ...
OLD-BASE @ BASE ! ;
§A¬Ý¡A¨Æ±¡«Ü§Ö¦a´NÅܱo½ÆÂø¤F¡C ¦b³oºØ±¡ªp¤U¡A¦pªG¤@ÓÅܼƪº"¥Ø«e"©M"¥ý«e"ªºª©¥»³£¥u¬OÄÝ©ó§AªºÀ³¥Î³¡¥÷ ¡]¦Ó¤£¬O¨t²Î³¡¥÷¡^¡A¦Ó¥B³oºØª¬ªp¥X²{¤£¥u¤@¦¸¡A¨º»ò´N¥i¥H¨Ï¥Î¤À¸Ñªº§Þ³N: : BURY ( a --) DUP 2+ 2 CMOVE ;
: EXHUME ( a --) DUP 2+ SWAP 2 CMOVE ;
µM«á¡A¥u»Ý©w¸q¤@ÓÂùªø«×ªºÅܼơA¥H¨ú¥Nì¨Ó¥²¶·©w¸qªº¨âÓÅܼơA¦p CONDITION ©M OLD-CONDITION¡C¦¹ÅܼƬ°¡G 2VARIABLE CONDITION ¨Ï¥Î BURY ©M EXHUME ¨Ó«O¦s©MÁÙì³oÓÅܼơG : DIDDLE CONDITION BURY 17 CONDITION ! ... (diddle) ...
CONDITION EXHUME ;
BURY ¦b¡yCONDITION 2+¡z¤§³B«O¦s¤F"ÂÂ"ª©¥»¡C §AÁÙ¬On«Ü¤p¤ß¡C¦^¨ì§ÚÌ DUMP ªº¨Ò¤l¡A°²³]§An¼W¥[¤@Ó¤ñ¸û¤è«Kªº¥\¯à¡A Åý¨Ï¥ÎªÌ¦b¥ô¦ó®É¨è¡A¥un«ö"escape"Áä¡A´N¥ß§YÂ÷¶}DUMP¡A°±¤îÅã¥Ü¡C ©Ò¥H¡A¦b°j°é¸Ì¡A§Aºc«Ø¤F¤@Ó«öÁäÀˬd¡A·í"escape"Áä³Q«ö¤U®É¡A´N°õ¦æ¡yQUIT¡z¡C ¦ý¬Oµ²ªG¦p¦ó¡H ¨Ï¥ÎªÌ¥Ñ¤Q¶i¨î¶}©l¡AÁä¤J¡yDUMP¡z¡C¥L¦b DUMP ªº³~¤¤¸õ¥X¡Aµo²{¥L¦Û¤v¡A«Ü©_ ©Çªº¡A³ºµM¬O¦b¤Q¤»¶i¨îªºª¬ºA¤U¡C ¦b³oÓ²³æªº¨Ò¤l¸Ì¡A³Ì¦nªº¸Ñ¨M¿ìªk¬O¡A¤£n¨Ï¥Î¡yQUIT¡z¡A¹çÄ@¨Ï¥Î¤@Ó¨ü±±¨î ªº¸õÂ÷«ü¥O¡]¦p LEAVE¡A©Î¨ä¥¦«ü¥O¡^¨Ó¸õ¥X°j°é¡A¦Ó¦^¨ì©w¸q¤¤ BASE ³QÁÙ쪺¦a¤è¡C ¦b«D±`½ÆÂøªºÀ³¥Î¸Ì¡A¤@Ó¨ü±±¨îªº¸õ¥X¡A³q±`¬O¤£¤Á¹ê»Úªº¡A¦]¬°¥i¯àÁÙ¦³³\¦h Åܼƥ²»Ý³QÁÙ쬰¬Y¤@ª¬ºA¡C
¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w
§A¯u¬O¥´¤FÓ¦ºµ²¡C§A¬O¦b¦Û§ä³Â·Ð¡C¦pªG§Ú»Ýn¤@Ó¤Q¤»¶i¨îªº DUMP ¡A§Ú´N·|»¡ HEX DUMP¡C¦pªG§Únªº¬O¤Q¶i¨îªº DUMP¡A§Ú´N»¡
DECIMAL DUMP¡C§Ú¤~¤£Åý DUMP ¦³ Åv§Ë¶Ã§ÚªºÀô¹Ò¡C ¦bµ²§ô®É«ì´_¤@ºØª¬ºA©M¦b¶}©l®É«Ø¥ß¤@ºØª¬ºA¡A³o¨âªÌ¤§¶¡¦³¤@ºØõ²z¤Wªº¿ï¾Ü¡C
¦³«Üªø¤@¬q®É¶¡¡A§Úı±o¥²»Ý¦bµ²§ô®É±Nª¬ºA«ì´_¡C¨Ã¥B§Ú·|ºÉ¶q¸ÕµÛ¦b¦U³B³£«O «ù¤@Pªº°µªk¡C¦ý¬O¡An¨M©w¤°»ò¦a¤è¬O"¦U³B"¨Ã¤£®e©ö¡C©Ò¥H¡A²{¦b§Ú¹çÄ@¦b¶}©l
«e«Ø¥ßª¬ºA¡C ¦pªG§Ú¦³¤@Ó¦r¡A¥¦«Ü¦b·NªF¦èªº¦ì¸m¡A¨º¥¦³Ì¦n¦Û¤v¥h³]©w¥¦Ì¡C¦pªG¥t¥~¦³§O¤H §ïÅܤF¥¦Ì¡A¥¦¤]¤£¥²¶O¤ß¦a¥h«¸m¡]reset¡^¡C
¥X¤fÁ`¬O¤ñ¤J¤fn¦h¤@¨Ç¡C¡]͵ù¡G·N«ä¬O»¡¡A¦pªG¿ï¾Ü¨Ï¥Î"«ì´_"ª¬ºAªº°µªk¡A ¨º»ò¡A´N»Ýn¦b¨C¤@Ó¥X¤f³£°µ³o¨Ç¨Æ¡A¦]¦¹¡A¤]´N¦h°µ¤F³\¦h¤u§@¡C¡^
¦pªG»Ýn¦b§¹¦¨¤@¥ó¨Æ¤§«e¡A°µ«¸mª¬ºAªº¤u§@¡A¦b³oºØ±¡ªp¤UY¯à¦³³æ¤@Ó¦r¡]§Ú ºÙ¥¦¬° PRISTINE¡^¨Ó°µ³o¥ó¤u§@¡A±N·|¬O«Ü¦³À°§Uªº¡C§Ú¨Ï¥Î PRISTINE ªº±¡ªp¬°¡G ¡E ¦bÀ³¥Îµ{¦¡¤¤¡A¥¿±`ªºÂ÷¶}¡]exit¡^¤§³B¡C ¡E ¦b¨Ï¥ÎªÌ¦³·NÂ÷¶}¤§³B ¡]¦b QUIT ¤§«e¡^¡C ¡E ¦b¥ô¦ó¥i¯àµo¥ÍP©R¿ù»~¡A¤Þ°_¤¤¤î¡]abort¡^¤§³B¡C ³Ì«á¡A·í§A¹J¨ì³oºØ¥²»Ý«O¦s¡þ«ì´_¤@Ó¼ÆÈªº±¡ªp®É¡An½T©w¥¦¨Ã¤£¬O¦]¬°¤£¨}ªº¤À¸Ñ ¦Ó³y¦¨ªº¡C¨Ò¦p¡A°²¨Ï§Ṳ́w¸g¼g¤F¡G : LONG 18 #HOLES ! ;
: SHORT 9 #HOLES ! ;
: GAME #HOLES @ 0 DO I HOLE PLAY LOOP ;
¥Ø«eªº GAME ¤£¬O LONG ´N¬O SHORT¡C µy«á¡A§Ų́M©w»Ýn¤@Ó¦r¨Óª±¥ô¦ó¼Æ¥Øªº¬}¡C©Ò¥H§ÚÌɧU GAME¡A ¥H½T©w¤£ ·|·´±¼ #HOLES ¥Ø«eªº¼ÆÈ¡G : HOLES ( n -- ) #HOLES @ SWAP #HOLES ! GAME #HOLES ! ; ¦]¬°§Ú̬O¦b©w¸q¤F GAME ¤§«á¡A¤~µoı»Ýn HOLES¡A©Ò¥H¥¦¬Ý°_¨Ó¦ü¥G¤ñ¸û½ÆÂø¡F§Ú ̬O¨Ï¥Î GAME ¨Ó«Ø¥ß HOLES¡C¦ý¬O¨Æ¹ê¤W --¤]³\§A¤w¸g¬Ý¥X¨Ó¤F-- ¦A·Q¤@¤U¥¦ªº¶¶ §Ç¡G : HOLES ( n --) 0 DO I HOLE PLAY LOOP ;
: GAME #HOLES @ HOLES ;
§Ú̥ΠHOLES ¨Ó«Ø¥ß
GAME¡A¦]¦¹¬Ù¥h¤F¨º¨ÇµL·N¸qªºÀx¦s©M«ì´_ªº°Ê§@¡C ¦b¤W¤@¸`¸Ì¡A§Ú̾DzߤF´XºØ«O¦s©M«ì´_¤@Ó¥ý«e¼ÆÈªº¤èªk¡C¦b¦³¨ÇÀ³¥Î¤¤¡A¤]³\»Ýn¦P®É«O¦s©M«ì´_´XÓ¼ÆÈ¡C§A·|µo²{¡A¸Ñ¨M³oÃþ°ÝÃDªº³Ì¦n¿ìªk¬O¡A©w¸q¥X§A¦Û¤vªº°ïÅ|¨Ó¡C ³o¸Ì¦³¤@ӫإߨϥΪ̰ïÅ|ªºµ{¦¡½X¡A¥¦¤]¥]§t²³æªº¿ù»~Àˬd¡]Y¿ù»~µo¥Í¡A«h°ïÅ|·|³Q²M°£¡^¡G CREATE STACK 12 ALLOT \ { 2tos-pointer | 10stack [5 cells] }
HERE CONSTANT STACK>
: INIT-STACK STACK STACK ! ; INIT-STACK
: ?BAD ( ?-- ) IF ." STACK ERROR " INIT-STACK ABORT THEN ;
: PUSH ( n --) 2 STACK +! STACK @ DUP STACK> = ?BAD ! ;
: POP ( -- n ) STACK @ @ -2 STACK +! STACK @ STACK < ?BAD ;
¦r PUSH
±q¸ê®Æ°ïÅ|¤W¨ú¥X¤@Ó¼ÆÈ¡A¨Ã±N¥¦"°ï¤J"³oÓ·sªº°ïÅ|¡CPOP «h¬Û¤Ï¡A ¥¦±q·sªº°ïÅ|"¨ú¥X"¤@Ó¼ÆÈ¡A¨Ã±N¥¦©ñ¨ì²Å¦¡ªº¸ê®Æ°ïÅ|¤W¡C
¦b¹ê»ÚªºÀ³¥Î¸Ì¡A§A©Î³\»Ýn§ïÅÜ PUSH ©M POP ªº¦W¦r¡A¥H²Å¦XÆ[©À¤Wªº·N¸q¡C
¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w ªð¦^°ïÅ|¬O³oºØì«hªº¤@Ó²³æ¨Ò¤l¡C¥¦¬O²Å¦¡¨t²Îªº¤@Ó¤¸¥ó¡A³Q³]p¨Ó«O¦s¤@Ó°ª ¶¥¦r¡]«_¸¹©w¸q¡^ªºªð¦^¦a§}¡C¦]¦¹¡A¥¦¯à§iª¾§A´¿¦b¦ó³B¤Î±N¨ì¦ó³B¡C§âªð¦^°ïÅ|·í °µ¬O¼ÆÈªº¼È®ÉÀx¦s¤§©Ò¡A¬O¥i¯àªº¡A¦Ó¥B¦b¦³¨Ç±¡ªp¤U¤]¬O¥²nªº¡C¦ý¬O¡A¦pªG©¿µø ¤F¤W±´£¨ìªº¨î¡A´N·|²£¥Í°ÝÃD¡C ¦b§Úªº¤å®Ñ±Æª©¾¹¡]text formatter¡^¸Ì¡A¿é¥X¥i¥H¬O"¬Ý¤£¨£ªº"¡]invisible¡^¡C ³oºØ¥\¯à¦³¨âӥتº¡G¡]1¡^¤¹³\¥ý¤@¨B¦V«e¬d¬Ý¡]lookahead¡^¡A¬Ý¬Ý¬O§_¦³¤°»òªF¦è «ê¦n¥i¥H¶ñ¤JªÅÀÉ¡A¥H¤Î¡]2¡^¥Î¨Ó½s±Æ¥Ø¿ý¡]¯à¹ï¾ãÓ¤å¥ó¥[¥H½s±Æ¡A¥H¨M©w¶¼Æ¡A ¦ý«o¤£¥²¹ê»Ú¦a¿é¥X¥ô¦óªF¦è¡^¡C §Ú´¿¥H¬°¡A¤@¥¹¥[¤W¤F¯à¨Ï¿é¥XÅܬ°¤£¥i¨£ªº³oºØ¥\¯à¤§«á¡A´N¯à¨Ï¥Î¥¦¦P®É¹F ¨ì¤W±¨º¨âӥتº¡C¤£©¯ªº¬O¡A³o¨âӥتº¨Ã¤£¬O¤¬¤£¯¡Ä²ªº¡C Åý§Ú̬ݤ@¤U¡A¦pªG¹H¤Ï¤F´£¥Ü¤¤ªº³W©w·|¦³¤°»òµ²ªG¡C°²³]¡yÅã¥Ü¡z³oÓµü t³d¿é¥X¡C¦Ó¥B¡A¥¦¯à¸g¥Ñª¬ºAªº§PÂ_¡Aª¾¹D¬O§_¿é¥X¬On¥i¨£ªº¡A©Î¬OÁôÂ꺡C ¡y¥i¨£¡z©M¡y¤£¥i¨£¡z³o¨âÓµü¤À§O¥Î¨Ó³]©w³o¨âºØª¬ºA¡C §Ú¨ºÓ¡u©¹«e¬d¬Ý¡vªºµ{¦¡½Xº¥ý°õ¦æ¡y¤£¥i¨£¡z¡AµM«á°²¸Ë½s±Æ±µ¤U¨Óªº¤å ¥y¡A¥H¨M©w¥¦ªºªø«×¬O§_¦X¾A¡A³Ì«á¦A°õ¦æ¡y¥i¨£¡z±N¨Æ±¡«ì´_¬°ì¨Óªº¼Ë¤l¡C ¥¦³o¼Ë¤u§@ªº«Ü¥¿±`¡C ¤§«á¡A§Ú¥[¤W¤F½s±Æ¥Ø¿ýªº¥\¯à¡C¥¦º¥ý°õ¦æ¡y¤£¥i¨£¡z¡AµM«á½s±Æ¾ãÓ¤å¥ó¥H¨M©w ¶¼Æµ¥µ¥¡F³Ì«á°õ¦æ¡y¥i¨£¡z±N¨Æ±¡«ì´_¬°±`ºA¡C °ÝÃD¨Ó¤F¡H°²³]§Ú¥¿½s±Æ¤@ӥؿý¡A¨Ã¥B¸I¨ì¤F¤@Ó»Ýn¨Ï¥Î¡u¦V«e¬d¬Ý¡v¥\¯àªº ¦a¤è¡C·í§Úµ²§ô¦V«e¬d¬Ý®É¡A§Ú°õ¦æ¤F¡y¥i¨£¡z¡C¬ðµM¶¡¡A¦bÀ³¸Ó°µ½s±Æ¥Ø¿ý®É¡A«o¶} ©l¦L¥X¤å¥ó¨Ó¡C ¸Ñ¨Mªº¤èªk¡H¦³¦n´XºØ¡C ¨ä¤¤¤§¤@»{¬°¡A¥Ñ©ó¤Þ°_°ÝÃDªºì¦]¬O¦]¬°¡u¦V«e¬d¬Ý¡vªºµ{¦¡½X·´±¼¤F¥i¨£¡þ¤£ ¥i¨£ªººX¼Ð¡A¦Ó³oÓºX¼Ð¤]³\¤w¸g³Q¡u½s±Æ¥Ø¿ý¡vªº¥\¯à³]©w¤F¡C¦]¦¹¡u¦V«e¬d¬Ý¡vªº µ{¦¡½X´NÀ³¸Ót³dºX¼Ðªº«O¦s¤Î«ì´_¡C ¥t¤@ºØ¸Ñ¨Mªº¤èªk»{¬°¡A»Ýn«O¦³¨âÓ¤À§OªºÅܼơA¤@ӥΨӫü¥Ü§ÚÌ¥¿¦b¡u¦V«e¬d ¬Ý¡v¡A¥t¤@ӥΨӫü¥Ü§ÚÌ¥¿¦b¡u½s±Æ¥Ø¿ý¡v¡C¡yÅã¥Ü¡z³oÓµü¦b¨âÓºX¼Ð³£¬O"°²"ªº ª¬ºA®É¡A¤~°µ¯u¥¿ªº¿é¥X¡C «á¤@ºØ¸Ñ¨M¤è®×¦³¨âºØ¤èªk¨Ó§¹¦¨¡AºÝµø§An¦p¦ó¤À¸Ñ³oÓ°ÝÃD¡Cº¥ý¡A§ÚÌ ¥i¥H±N¤@Ó±ø¥ó"±_¤J"¡]nest¡^¥t¤@Ó±ø¥ó¤§¤¤: : [Åã¥Ü] ... ( ì¥ý°µ¿é¥Xªº©w¸q ) ... ;
ÅÜ¼Æ °µ¬d¬Ý ( t = ¦V«e¬d¬Ý )...
: <Åã¥Ü> °µ¬d¬Ý Ū¨ú ¤£¬O ¦pªG [Åã¥Ü] µM«á ;
ÅÜ¼Æ ½s¥Ø¿ý ( t = ½s±Æ¥Ø¿ý)
: Åã¥Ü ½s¥Ø¿ý Ū¨ú ¤£¬O ¦pªG <Åã¥Ü> µM«á ;
¡yÅã¥Ü¡zÀˬdY¤£¬O¦b½s±Æ¥Ø¿ý¡A«h©I¥s¡y<Åã¥Ü>¡z¡A¥¦¦AÀˬdY¤£¬O¦b¡u¦V«e¬d¬Ý¡v ¡A«h©I¥s¡y[Åã¥Ü]¡z¡C ¦bµo®iªº¹Lµ{¤¤¡A°µ¿é¥Xªºµü¡y[Åã¥Ü]¡z쥻¬O³Q©R¦W¬°¡yÅã¥Ü¡zªº¡C¤§«á¡A¤@ Ó·sªº¡yÅã¥Ü¡z¥]§t¤F¡u¦V«e¬d¬Ý¡vªºÀˬd¡A¦Ó±Nì¨Óªº©w¸q§ï¦W¬°¡y[Åã¥Ü]¡z¡C§ÚÌ ¦V¤º¼W¥[¤F¤@¼h½ÆÂø«×¡A¦ý«o¤£¥Î§ïÅÜ¥ô¦ó¨Ï¥Î¡yÅã¥Ü¡zªºµ{¦¡½X¡C ³Ì«á¡A·í¥[¤J½s±Æ¥Ø¿ýªº¥\¯à®É¡A¤S¤@Ó·sªº¡yÅã¥Ü¡z³Q©w¸q¥X¨Ó¡A¥¦¥]§t½s±Æ¥Ø¿ý ªºÀˬd¡A¦Ó¡yÅã¥Ü¡z¦A«×³Q«·s©R¦W¬°¡y<Åã¥Ü>¡z¡C ³o¬O¨Ï¥Î¨âÓÅܼƪº¨âºØ¸Ñ¨M¤èªk¤§¤@¡C ¥t¤@ºØ¬O¦b³æ¤@Ó¦r¸Ì¥]§t¨âºØ´ú¸Õ¡G : Åã¥Ü °µ¬d¬Ý Ū¨ú ½s¥Ø¿ý Ū¨ú ©Î ¤£¬O ¦pªG [Åã¥Ü] µM«á ; ¦ý¦b³oÓ¯S®íªº¨Ò¤l¡AÁÙ¦³¥t¤@ºØ¤èªk¥i¥H§â³o¨Ç²V¶Ã²¤Æ¡C§ÚÌ¥i¥H¨Ï¥Î¤@ÓÅÜ ¼Æ¡A¤£§â¥¦·í°µºX¼Ð¡A¦Ó¬O§â¥¦·í°µp¼Æ¾¹¨Ï¥Î¡C ÅÜ¼Æ '¤£¥i¨£ (t = ¤£¥i¨£)
: Åã¥Ü '¤£¥i¨£ Ū¨ú 0= ¦pªG [Åã¥Ü] µM«á ;
: ¤£¥i¨£ 1 '¤£¥i¨£ ¥[¦s ;
: ¥i¨£ -1 '¤£¥i¨£ ¥[¦s ;
¡u¦V«e¬d¬Ý¡vªºµ{¦¡½X¦b¶}©l®É©I¥s¡y¤£¥i¨£¡z¡A¥¦±Np¼ÆÈ¥[¤@¡CY¥H«D¹sȪí¥Ü "¯u"¡A«h¡yÅã¥Ü¡z±N¤£°µ¿é¥X¡C¦bµ²§ô¬d¬Ý¤§«á¡Aµ{¦¡½X¦A©I¥s¡y¥i¨£¡z¡A¥¦·|±Np¼Æ È´î¤@¦Ó¦^¨ì¹s¡]°²¡^¡C ¡u½s±Æ¥Ø¿ý¡vªºµ{¦¡½X¤]¬O¥H©I¥s¡y¤£¥i¨£¡z¶}©l¡A¥H¡y¥i¨£¡zµ²§ô¡C¦pªG§Ú̦b °õ¦æ¤¤¥s¥Î¤F¡u¦V«e¬d¬Ý¡vªº¥\¯à¡A²Ä¤GÓ¡y¤£¥i¨£¡zªº©I¥s´N·|±Np¼ÆÈ¼W¥[¦Ü2¡C ±µ¤U¨Óªº¡y¥i¨£¡z±Np¼ÆÈ´î¤@¡A©Ò¥H¿é¥X¤´µM¬O¬Ý¤£¨£ªº¡Aª½¨ì½s¥Ø¿ýªº°Ê§@³Q§¹¦¨¡C ¡]ª`·N¡A§ÚÌ¥²»Ý¥H 0= ¥N´À NOT¡]¤£¬O¡^¡C¦b1983¦~ªº²Å¦¡¼Ð·Ç¸Ì¡ANOT ªº¦æ¬° ³Q§ï¦¨¡u²£¥Í1ªº¸É¼Æ¡v¡A©Ò¥H¡A¡y1 NOT¡zªºÈ¡]0FFFE¡^·|³Qµø¬°"¯u"¡A©Ò¥H¤£¯à ¨Ï¥Î¦b³oÓ±¡ªp¤¤¡C¶¶«K´£¤@¤U¡A§ÚÓ¤Hı±o³oºØ§ïÅܬOÓ¿ù»~¡C¡^ ¦ý¬O¡A³oºØ¨Ï¥Îp¼ÆÈªº¤èªk«Ü¦MÀI¡C¥¦n¨D«ü¥O¦¨¹ï¦a¨Ï¥Î¡G³sÄò°µ¨âÓ¡y¥i¨£¡z ¦³¥i¯à·|²£¥Í¡y¤£¥i¨£¡zªºµ²ªG¡C°£«D¡y¥i¨£¡zªº©w¸q·|¨îp¼ÆÈ¤£·|Åܬ°tÈ¡G : ¥i¨£ '¤£¥i¨£ Ū¨ú 1- 0 ¨ú¸û¤jÈ '¤£¥i¨£ ¦s¤J ;
ª¬ºAªí¡]The State Table¡^ ³æ¤@ÓÅܼƥi¥Hªí¥Ü³æ¤@ºØª¬ªp¡A¤£½×¥¦¬O¤@ÓºX¼Ð¡A¤@Ó¼ÆÈ¡A©Î¤@Ó¥\¯àªº¦a§}¡C ³\¦hª¬ªp¶°¦X¦b¤@°_¡A¥i¥Hªí¥Ü¤@ÓÀ³¥Îµ{¦¡©Î¯S®í¤¸¥óªºª¬ºA¡C¦³¨ÇÀ³¥Î»Ýn¯à °÷±N¥Ø«eªºª¬ºA«O¦s¤U¨Ó¡A¨Ã¦bµy«á±N¥¦«ì´_¡A©ÎªÌ¨ã¦³´XºØ¥i¥HÅܤƪºª¬ºA¡C ¡@
¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w ¹Ï 7-2 ¬ÛÃöÅܼƪº¶°¦X VARIBLE TOP VARIBLE BOTTOM VARIBLE LEFT VARIBLE RIGHT VARIBLE INSIDE VARIBLE OUT
»Ýn«O¦s©M«ì´_ª¬ºAªº¤@Ó²³æªº¨Ò¤l¬O¡A°²³]§Ú̶}©l®É¦³¤»ÓÅܼƥNªí¤@Ó¯S®í¤¸¥óªºª¬ºA¡A¦p¹Ï7-2©Ò¥Ü¡C : @STATE ( -- top bottom left right inside out )
TOP @ BOTTOM @ LEFT @ RIGHT @ INSIDE @ OUT @ ;
: !STATE ( top bottom left right inside out -- )
OUT ! INSIDE ! RIGHT ! LEFT ! BOTTOM ! TOP ! ;
³o¼Ë¡A§ÚÌ´N¯à±N°ïÅ|¸Ì©Ò¦³ªº¼ÆÈ³£«O¦s°_¨Ó¡Aª½¨ì«ì´_¥¦Ìªº®É¾÷¨ì¨Ó¡C©ÎªÌ¥Î¥t¤@ºØ¤èªk¡A¹ïÀ³¥H¤Wªº¨C¤@ÓÅܼơA¦A©w¸q¥X¥t¤@²ÕÅܼơA¨Ã¥Î¥¦Ì¤À§OªºÀx¦s¹ïÀ³ªº¨C¤@ÓÅܼÆÈ¡C ¹Ï 7-3 «O¦s¤@Óª¬ºAªíªºÆ[©À¼Ò¦¡
§Ṳ́w¸g±N³oºØ¤èªkªº¹ê²{¼g¦b¹Ï7-4¤¤¡C ¹Ï 7-4 «O¦s/«ì´_ª¬ºAªíªºµ{¦¡½X
0 CONSTANT POINTERS \ address of state table PATCHED LATER
: POSITION ( o -- o+2 ) CREATE DUP , 2+
DOES> ( -- a ) @ POINTERS + ;
0 \ initial offset
POSITION TOP
POSITION BOTTOM
POSITION LEFT
POSITION RIGHT
POSITION INSIDE
POSITION OUT
CONSTANT /POINTERS \ final computed offset
HERE ' POINTERS >BODY ! /POINTERS ALLOT \ real table
CREATE SAVED /POINTERS ALLOT \ saving place
: SAVE POINTERS SAVED /POINTERS COMVE ;
: RESTORE SAVED POINTERS /POINTERS CMOVE ;
ª`·N¡A³oÓµ{¦¡½X¸Ìªº«ü¼Ð¦WºÙ¡A¦p¡yTOP¡z,¡yBOTTOM¡zµ¥µ¥¡AÁ`¬O·|¶Ç¦^¤@Ó©T©wªº¦a§}¡C¤£½×¦ó®É¡A¹ï¥ô¤@Óª¬ºA¡A³£¥u¦³¤@Ó¦ì¸m¥NªíµÛ¥¦¥Ø«eªº¼ÆÈ¡C
¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w ¥æ´Àª¬ºA¡]alternating states¡^ªº¨Ò¤l¤ñ¸û½ÆÂø¡C¦b³oºØ±¡ªp¤U¡A§ÚÌ»Ýn¦b¨âÓ ª¬ºA¡]©ÎªÌ§ó¦h¡^¤§¶¡Âà´«¡A¦Ó¦b§Ú̸õ¨ì¤@Óª¬ºA®É¡Aµ´¤£¯à·´±¼¥t¤@Óª¬ºA¡C¹Ï7-5 Åã¥Ü³oºØª¬ºAªíªºÆ[©À¼Ò«¬¡C ¹Ï7-5 ¥æ´Àª¬ºAªíªºÆ[©À¼Ò«¬ ¦b³oÓ¼Ò«¬¸Ì¡A¦WºÙ¡yTOP¡z,¡yBOTTOM¡zµ¥µ¥¡A³Q³]p¦¨¥i¥H«ü¨ì¨âÓ¤£¦Pªºªí¡A REAL ©Î PSEUDO ¤¤ªº¤@Ó¡C¦pªG REAL ªí¬O¥Ø«eªº¤@Ó¡A«h©Ò¦³ªº«ü¼Ð¦WºÙ³£·|°Ñ¦Ò¨ì¥¦ªº¦a§}¡A¦pªG PSEUDO ªí¬O¥Ø«eªº¤@Ó¡A«h·|°Ñ¦Ò¨ì PSEUDO ªíªº¦a§}¡C ¹Ï7-6 ¹ê²{¥æ´Àª¬ºAªº¾÷ºcªº¹ê»Úµ{¦¡½X
VARIABLE 'POINTERS \ pointer to state table
: POINTERS ( -- adr of current table ) 'POINTERS @ ;
: POSITION ( o -- o+2 ) CREATE DUP , 2+
DOES> ( -- a ) @ POINTERS + ;
0 \ initial offset
POSITION TOP
POSITION BOTTOM
POSITION LEFT
POSITION RIGHT
POSITION INSIDE
POSITION OUT
CONSTANT /POINTERS \ final computed offset
CREATE REAL /POINTERS ALLOT \ real state table
CREATE PSEUDO /POINTERS ALLOT \ temporary state table
: WORKING REAL 'POINTERS ! ; WORKING
: PRETENDING PSEUDO 'POINTERS ! ;
¹Ï7-6¬O³oºØ¥æ´Àª¬ºA¾÷ºcªº¹ê»Úµ{¦¡½X¡C¦r WORKING ©M PRETENDING ·|¨Ì±¡ªp§ïÅÜ«ü¼Ð¡C WORKING
10 TOP !
TOP ? 10
PRETENDING
20 TOP !
TOP ? 20
WORKING
TOP ? 10
PRETENDING
TOP ? 20
«á¤@ºØ¤èªkªº¥Dn¤£¦PÂI¬O¡A¥¦ªº¦W¦r¸g¹LÃB¥~ªº¤@¼h¶¡±µ¡]indirection¡^¤~¨ú±o¦a§}
¡]POINTERS ¥Ñì¥ýªº±`¼Æ©w¸q³Q§ïÅܬ°«_¸¹©w¸q¡^¡CÄæ¦ìªº¦W¦r¦]¦¹¥i¥H«ü¨ì¨âÓª¬ºAªí¤¤ªº¥ô¤@Ó¡C¨CÓ¦W¦r¦]¦¹»Ýn¦h°µ¨Ç¤u§@¡C ¡@ ¦V¶q¦¡ªº°õ¦æ¡]Vectored Execution¡^ ¦V¶q¦¡ªº°õ¦æ±N"¥Ø«e"¡]currentness¡^©M"¶¡±µ"¡]indirection¡^ªºÆ[©À¡A±q¡u¸ê®Æ¡v ÂX®i¨ì¡u¥\¯à¡v¡C´N¦p§ÚÌ¥i¥H¦bÅܼƸ̫O¦s¼ÆÈ©MºX¼Ð¤@¼Ë¡A§Ṳ́]¥i¥H«O¦s¥\¯à¡A ¦]¬°¥\¯à¥i¥H¸g¥Ñ¦a§}°Ñ¦Ò¨ì¡C ¶Ç²Î¤W¹ê²{¦V¶q¦¡°õ¦æªº§Þ³N¡A¤w¦b¡qStarting FORTH¡r¤@®Ñªº²Ä¤E³¹¸Ì¸ÑÄÀ¹L¡C¦b ³o¸`¤¤¡A§Ú̱N°Q½×¤@ºØ§Úµo©úªº·s»yªk¡C§Ú»{¬°¦b³\¦h±¡ªp¤U¡A¥¦¤ñ¶Ç²Îªº¤èªkn¶® ½o±o¦h¤F¡C ³oÓ»yªkºÙ¬° DOER/MAKE¡C¡]¦pªG§Aªº¨t²Î¨S¦³³o¨Ç¦r¡A¥i¥H°Ñ¦Òªþ¿ýB¤¤ªºµ{¦¡½X ©M¹ê²{²Ó¸`¡^¡C¥¦ªº¤u§@¤è¦¡¬O¡G§A¥ý¨Ï¥Î©w¸q¦r¡yDOER¡z©w¸q¥X¤@Ó¦r¨Ó¡]§Ú̺٥¦¬° "DOER¦r"¡A©Î DOER ªº«Ä¤l¡A¥¦ªº¦æ¬°¬O¦V¶q¦¡ªº¡^¡A´N¹³¬O¡G DOER PLATFORM ¶}©l®É¡A¡yPLATFORM¡z¤£°µ¥ô¦ó¨Æ¡CµM«á¡A§A¥i¥H©w¸q¤@¨Ç¦r¡A¨Ã¦b¨ä¤¤¨Ï¥Î¡yMAKE¡z ¨Ó§ïÅÜ¡yPLATFORM¡z©Òn§¹¦¨ªº¤u§@¡G : LEFTWING MAKE PLATFORM ." proponent" ;
: RIGHTWING MAKE PLATFORM ." oponent" ;
·í§A©I¥s¡yLEFTWING¡z®É¡A¤ù»y¡yMAKE PLATFORM¡z·|§ïÅÜ¡yPLATFORM¡zªº¤u§@¡C¤§«á¡A ¦pªG§AÁä¤J¡yPLATFORM¡z¡A§A±N·|¬Ý¨ì¡G LEFTWING ok
PLATFORM proponent ok
RIGHTWING ·|¨Ï PLATFORM ¦L¥X"opponent"¡C§A¥i¤]¥H¦b¤@Ó©w¸q¸Ì¨Ï¥Î PLATFORM : SLOGAN ." Our candidate is a longstanding" PLATFORM
." of heavy texation for business. " ;
©R¥O LEFTWING SLOGAN ±NÅã¥Ü¥X¤@ÓÄv¿ï¼Ð»y¡A¦Ó RIGHTWING SLOGAN ±NÅã¥Ü¥X¥t¤@Ó¡C "MAKE"³o³¡¥÷ªºµ{¦¡½X¥i¥H¬O¥ô¦ó²Å¦¡½X¡A¤£½×¦hªø©Î¦h¤Ö¡F¥un°O¦í¡A¥²»Ý¥H¤À ¸¹µ²§ô¡C¦b LEFTWING ©w¸q¤¤ªºµ²§ô¤À¸¹¡A¦P®É¨Ñ LEFTWING ªº©w¸q©M MAKE ¤§«áªº µ{¦¡½X¨Ï¥Î¡C·í MAKE «©w"DOER¦r"ªº°õ¦æ¦V¶q®É¡A¥¦¤]¦P®Éµ²§ô¥Ø«e§t¦³ MAKE ³oÓ¦r ªº©w¸qªº°õ¦æ¡C ¨Ò¦p¡A·í§A©I¥s LEFTWING ®É¡AMAKE «©w PLATFORM ªº¦V¶q¨ÃÂ÷¶} LEFTWING ¡C©I ¥s LEFTWING ¨Ã¤£·|¨Ï"proponent"³oÓ«H®§³Q¦L¥X¡C¹Ï7-7¸ÕµÛ¨Ï¥Î¤@Ó·§©À¤Æªº¦r¨å ¨Ó¸ÑÄÀ³oÂI¡C ¹Ï7-7 DOER ©M MAKE ¦pªG§A·Qn"Ä~Äò¦a"°õ¦æ¡A´N¨Ï¥Î¡y;AND¡z³oÓ¦r¨Ó¥N´À¤À¸¹¡C¡y;AND¡z¦b³]©w¤F DOER ¦rªº°õ¦æ¦V¶q¤§«á¡A¡];AND ¦P®É¤]¬O³oÓ¦V¶qªº°õ¦æ½Xªº²×ÂI¡^¡A¦AÄ~Äò°õ¦æ±µ ¦b¥¦«á±ªº©w¸q¡A¦p¹Ï7-8©Ò¨£¡C ¹Ï7-8 ¨Ï¥Î¡y;AND¡z¨Ó¨ÃÁp¦hÓ¡yMAKE¡z ³Ì«á¡A§AÁÙ¥i¥H±N³]©w"DOER¦r"ªº°Ê§@"¦êÁp"°_¨Ó¡]¤£¬O¨Ï¥Î ;AND¡^¡C¹Ï7-9 ©Ò°µ ªº¸ÑÄÀ·|¤ñ¥Î¼gªºÁÙn²M·¡¨Ç¡C ¹Ï7-9 ¦hÓ MAKE ¦êÁp ¡@ DOER/MAKE ªº¨Ï¥Î ¦³«Ü¦hºØª¬ªp¡A¥i¥H±q DOER/MAKE ªºµ²ºc±o¨ì¯q³B¡C¥¦Ì¬O¡G 1. ¥Î¨Ó§ïÅܤ@Ó¥\¯àªºª¬ºA¡]·í¥~³¡¤£»Ýn´ú¸Õ¨Ã±oª¾¥¦ªºª¬ºA®É¡^¡C¨Ò¦p¦r LEFTWING ©M RIGHTWING §ïÅÜ PLATFORM ªºª¬ºA¡C 2. ±q¬Û¦üªº©w¸q¤¤¤À¸Ñ¥X¤º³¡¤ù»y¡A§Y¨Ï¥¦¬O¦b¡]¨Ò¦p LOOP ªº¡^±±¨îµ²ºc¤§¤º¡C ¦Ò¼{¤@Ó¦W¬°¡yDUMP¡zªº©w¸q¡A¥¦³Q³]p¨ÓÅã¥Ü¤@¬q°O¾ÐÅ骺¤º®e¡C : DUMP ( a# --)
0 DO I 16 MOD 0= IF CR DUP I + 5 U.R 2 SPACES THEN
DUP I + @ 6 U.R 2 +LOOP DROP ;
^^^^^^^^^^^^^^^^^
·í§A¥tn¼g¤@Ó¦W¬°¡yCDUMP¡zªº©w¸q¡A¥¦¥²¶·¨Ì·Ó¦r¤¸¡A¦Ó¤£¬O¤¸¯À¡]cell¡^¡A ¨Ó¦w±Æ¿é¥Xªº¤º®e®É¡A°ÝÃD´N¨Ó¤F¡G : CDUMP ( a# --)
0 DO I 16 MOD 0= IF CR DUP I + 5 U.R 2 SPACES THEN
DUP I + C@ 4 U.R LOOP DROP ;
^^^^^^^^^^^^^^^
°£¤F³Q¼Ð¥Ü¥Xªº¨º¨â¬q¤§¥~¡A³o¨âÓ©w¸qªºµ{¦¡½X§¹¥þ¬Û¦P¡C¦ý¬O¦¹¬q¥X²{¦b ¡yDO LOOP¡z°j¸ô¤º¡A¦]¦Ó¨Ï±o¤À¸Ñ¦]¤lªº¤u§@Åܱo«Ü§xÃø¡C ¤U±¬O¨Ï¥Î DOER/MAKE ªº¤@ӸѨM¿ìªk¡C¤£¦Pªº¨º¬qµ{¦¡½X¤w¸g³Q .UNIT ¨ú¥N¡A ¥¦ªº¦æ¬°·|³Q DUMP ©M CDUMP ©Ò§ïÅÜ¡C¡]ª`·N¡A1 +LOOP ©M LOOP ªº®ÄªG¬Û¦P¡C¡^ DOER .UNIT ( a -- increment ) \ display byte or cell
: <DUMP> ( a # --)
0 DO I 16 MOD 0= IF CR DUP I + 5 U.R 2 SPACES THEN
DUP I + .UNIT +LOOP DROP ;
: DUMP ( a # --) MAKE .UNIT @ 6 U.R 2 ;AND <DUMP> ;
: CDUMP ( a # --) MAKE .UNIT C@ 4 U.R 1 ;AND <DUMP> ;
ª`·N DUMP ©M CDUMP ¬O¦p¦ó¦a¥ý¥h"³]¸m"¦V¶q¡A¦AÄ~Äò¥h"°õ¦æ"¨ä¥¦¾ãÓ³¡¥÷ ¡]¦r<DUMP>¡^¡C 3. ¨Ï¥Î³æ¤@Ó«ü¥O¡A´N¯à§ïÅܤ@¨Ç¬ÛÃö¥\¯àªºª¬ºA¡C¨Ò¦p¡G DOER TYPE'
DOER EMIT'
DOER SPACES'
DOER CR'
: VISIBLE MAKE TYPE' TYPE ;AND
MAKE EMIT' EMIT ;AND
MAKE SPACES' SPACES ;AND
MAKE CR' CR ;
: INVISIBLE MAKE TYPE' 2DROP ;AND
MAKE EMIT' DROP ;AND
MAKE SPACES' DROP ;AND
MAKE CR' ;
¦b³o¸Ì¡A§ÚÌ©w¸q¤F¤@²Õ¦V¶q¤Æªº¿é¥X¦r¡A¨CÓ¦W¦rªº§ÀºÝ³£¦³¤@Ó"³æ¤Þ¸¹"¡C¥¦ ̳Q VISIBLE ³]©w¨ì©Ò´Á±æªº¥\¯à¡CINVISIBLE ¨Ï¥¦Ì¤£¤u§@¡]³q±`¬O±N¶Ç°eµ¹ ¥¦Ìªº¤Þ¼Æ¥á±¼¡^¡A¤]´N¬O»¡¡A³o¥|Ó¦r¦b³Q©I¥s®É¡A³£¤£·|²£¥Í¿é¥X¡C 4. ¥u¬On§ïÅܨƱ¡¤U¤@¦¸µo¥Í®Éªºª¬ºA¡AµM«á·|¦A¦¸¦a§ïÅÜ¥¦¡]©ÎªÌ¬O«ì´_¥¦¡^¡C °²³]§ÚÌn¼g¤@Ó±´ÀI¹CÀ¸¡C·íª±ªº¤Hº¦¸¨ì¹F¤@Ó¯S®íªº©Ð¶¡®É¡A¹CÀ¸·|Åã¥Ü ¤@Ó¸Ô²Óªº»¡©ú¡Cµy«á¡A¦pªG¹CÀ¸ªÌ¦A¦^¨ì¦P¤@өж¡¡A¹CÀ¸´N¥uÅã¥Ü¤@Ó¸ûµuªº «H®§¡C§Ú̼g¥X¡G DOER ANNOUNCE
: LONG MAKE ANNOUNCE
CR ." You're in a large hall with a huge throne"
CR ." covered with a red velvet canopy. "
MAKE ANNOUNCE
CR ." You're in the throne room. " ;
¦r ANNOUNCE ¯à°÷Åã¥Ü¨âºØ«H®§¡C²Ä¤@¦¸§ÚÌ»¡ LONG ®É¡A·|±N ANNOUNCE ³]©w ¬°"ªø«H®§"¡C²{¦b¡A§ÚÌ¥h´ú¸Õ ANNOUNCE¡A¨Ã¥Bµo²{¥¦¦L¥X¤F"ªø«H®§"¡C¦b°µ§¹ ¦L¥Xªº°Ê§@¤§«á¡A¥¦Ä~Äò¥h"MAKE"¤U¤@¦¸ªº ANNOUNCE¡A¨Ï¥¦·|Åã¥Ü"µu«H®§"¡C¦pªG §Ú̲ĤG¦¸°õ¦æ ANNOUNCE ¡A¥¦´N·|¦L¥Xµu«H®§¡C¨Ã¥B¤@ª½¦p¦¹¡Aª½¨ì§Ú̦A¦¸»¡ LONG ¬°¤î¡C ¹ê»Ú¤W¡A§Ú̬O¦b±N¤@¨Ç"¦æ¬°"±Æ¶¤¡C§ÚÌ¥i¥H±N¥ô¦ó¼Æ¥Øªº¦æ¬°¨Ì§Ç±Æ¦C¡AÅý¨C ¤@Ó³£·|¦Û°Ê¦a³]©w¤U¤@Ó¡C¤U±ªº¨Ò¤l¡]ÁöµM¨Ã¤£¬O«Ü¹ê»Ú¡^»¡©ú³oÂI¡C DOER WHERE
VARIABLE SHIRT
VARIABLE PANTS
VARIABLE DRESSER
VARIABLE CAR
: ORDER \ specify search order
MAKE WHERE SHIRT MAKE WHERE PANTS
MAKE WHERE DRESSER MAKE WHERE CAR
MAKE WHERE 0 ;
: HUNT ( -- a | 0 ) \ find location containing 17
ORDER 5 0 DO WHERE DUP 0= OVER @ 17 = OR IF
LEAVE ELSE DROP THEN LOOP ;
¦b³o¬qµ{¦¡½X¤¤¡A§ÚÌ¥ý²£¥Í¤@²ÕÅܼơAµM«á©w¸q¥X¥¦Ì³Q·j´Mªº¶¶§Ç¡]¦rORDER¡^ ¡C¦r HUNT ·|¤@Ó¤@Óªº¬d¬Ý¥¦Ì¡A´M§ä¤º®e¬°17ªº²Ä¤@ÓÅܼơCHUNT ·|¶Ç¦^¥¿ ½TªºÅܼƦa§}¡A©ÎªÌ¡A¦pªG¨S¦³¤@ÓÅܼƬO³oÓ¼ÆÈ®É¡A¶Ç¦^¤@Ó¹s¡C HUNT ¥u¬O±N WHERE °õ¦æ¤¦¸¡A¥H§¹¦¨³o¥ó¤u§@¡C¨C¤@¦¸ªº WHERE ·|¨Ì ORDER ©Ò ¨M©wªº¦¸§Ç¶Ç¦^¤@Ó¤£¦PªºÅܼƦa§}¡A³Ì«á¬O¤@Ó¹s¡C §Ú̬Ʀܥi¥H©w¸q¤@Ó"DOER¦r"¡A¥¦·|µL¤îºÉªºÅÜ´«¥¦¦Û¤vªº¦æ¬°¡G DOER SPEECH
: ALTERNATE
BEGIN MAKE SPEECH ." HELLO "
MAKE SPEECH ." GOODBYE "
0 UNTIL ;
5. ¹ê²{¤@Ó«e¦V°Ñ¦Ò¡C«e¦V°Ñ¦Ò³q±`¥X²{¦b·í§A»Ýn¤@Ó"´À¥N©Êªº«e¾É²Å¸¹"®É¡A¤] ´N¬O»¡¡A¤@Ó¦r¡A¥¦¥ý³Q¤@¨Ç¸û§C¼hªº©w¸q©Ò©I¥s¡A¦ý«o¦b«á±¸û°ª¼hªº¤¸¥ó¤¤¤~ ¹ê²{¡Cn¹ê²{¤@Ó«e¦V°Ñ¦Ò¡A»Ýn¦b¨Ï¥Î¥¦¤§«e¡A¥ý¥Î DOER «Ø¥X¥¦ªºÀY³¡¡G DOER STILL-UNDEFINED ¦bµ{¦¡ªºµy«á¡A¨Ï¥Î MAKE MAKE STILL-UNDEFINED ALL THAT JAZZ ; ¡]°O¦í¡AMAKE ¬O¥i¥H³Q¨Ï¥Î¦b«_¸¹©w¸q¤§¥~ªº¡C¡^ 6. ª½±µ©Î¶¡±µªº»¼°j ·í¤@Ó¦r©I¥s¥¦¦Û¤v®É¡AºÙ¬°ª½±µ»¼°j¡C³Ì¤j¤½¬ù¼Æªº»¼°j©w¸q¬Oӫܦnªº¨Ò¤l: GCD of a, b = a if b = 0
GCD of b, a mod b if b > 0
DOER GCD ( a b -- gcd )
MAKE GCD ?DUP IF DUP ROT ROT MOD GCD THEN ;
·í¤@Ó¦r©I¥s¥t¤@Ó¦r¡A¦Ó²Ä¤GÓ¦r¦A©I¥s²Ä¤@Ó¦r®É¡AºÙ¬°¶¡±µ»¼°j¡C ¥¦¥i¥H¨Ï¥Î¤U±ªº¤è¦¡¨Ó§¹¦¨¡G DOER B
: A ... B ... ;
MAKE B ... A ... ;
7. °£¿ù¡C§Ú³q±`¥ý©w¸q¡G DOER SNAP ¡]SANPSHOT ªºÁY¼g¡^µM«á¡A¦b§ÚªºÀ³¥Î¤¤¡A¨C·í§Ú·Q¬dÅç¬Y³B¶i¦æ¤¤ªºª¬ªp®É¡A ´N±N SNAP ½s¿è¶i¥h¡C¨Ò¦p¡A§Ú¥i¥H¥ý±N¥¦ªº¥\¯à³]©w¬°¡F·í SNAP ¦bÁä½L¸ÑŪ¾¹ ªº¥D°j¸ô¤¤³Q©I¥s®É¡A¥¦·|Åã¥Ü¥X·í®Éªº¸ê®Æµ²ºcªº¤º®e¡C¦Ó¥B¡A¤£¥²¸g¹L«·s ½sĶªº¨BÆJ¡A§Ú´N¯à§ïÅÜ SNAP ªº°Ê§@¡C ·í§A»Ýn±±¨î¤@Ó¦V¶qªº¤º®e¡]¤@Ó¦a§}¡^®É¡A¨Ï¥Î¡u½ð¥X¨Ã°õ¦æ¡v¡]tick-and-execute ¡^ªº¤èªk¬O¤ñ¸û¦X¾Aªº¡A¹³¬O»Ýn¸g¥Ñ¤@Ó§PÂ_ªí¡]decision table¡^¤¤ªº¤¸¯À¨Ó§¹¦¨«ü ¦Vªº°Ê§@®É¡A©Î¬O·Qn±N¦V¶qªº¤º®e«O¦s¤Î«ì´_®É¡C
¦b¥»³¹¸Ì¡A§Ṳ́ÀªR¤F¨Ï¥Î°ïÅ|©M¨Ï¥ÎÅܼƤΨ䥦¸ê®Æµ²ºcªº§Q¹ú¡C¬°¤F´ú¸Õ¤Î¦A¨Ï¥Î©Ê
¡A°ïÅ|¬O¤ñ¸û¦³§Qªº¡C¦ý¬O¡A·í¤@Ó©w¸q»Ýn¾Þ§@¤Ó¦hªº°ïÅ|¤¸¯À®É¡Aµ{¦¡½Xªº¥iŪ©Ê©M ¥i¼g©Ê´N·|¨ü¨ì¶Ë®`¡C §Ṳ́]»¡©ú¤F«O¦s©M«ì´_¸ê®Æµ²ºcªº§Þ³N¡A³Ì«á¨Ã¥H
DOER/MAKE ¦b¦V¶q¦¡°õ¦æ¤Wªº ±´°Q°µ¬°µ²§À¡C 1. Michael Ham, "Why Novices Use So Many Variables" ²Å¦¡ Dimen- sions, Vol 5, no.4, November/December 1983. 2. Daniel Slater, "A State Space Approach to Robotics" The Journal of FORTH Application and Research, 1, 1 (September 1983), 17. ¡@ |