¡@

 ²Ä¤K³¹ ±±¨îµ²º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

±±¨îµ²ºc¦b²Å¦¡¸Ì¡A¤£¹³¦b¨ä¥¦»y¨¥¨º»ò­«­n¡C²Å¦¡µ{¦¡³]­p®v¶É¦V©ó¥H²µuªº¦r ¼g¥X½ÆÂøªºÀ³¥Îµ{¦¡¡A¦Ó¤£¤Ó¥hª`·N¹³ IF THEN ¤@Ãþªºµ²ºc¡C ¦³´XºØ§Þ¥©¥i¥H´î¤Ö±±¨îµ²ºcªº¨Ï¥Î¡C¥¦­Ì¬O:

¡E ¹Bºâ©Î­pºâ ¡E ¸g¥Ñ­«·s¤À¸Ñ¡A¥H«K±N±ø¥óÁôÂð_¨Ó ¡E ¨Ï¥Îµ²ºc¤Æªº¸õ¥X ¡E ¦V¶q¤Æ ¡E ­«·s³]­p

¦b¥»³¹¤¤¡A§Ú­Ì­nÀ˵ø¦p¦ó¨Ï¥Î³o¨Ç§Þ¥©¡A¥H²¤Æ©Î®ø°£µ{¦¡½X¤¤ªº±±¨îµ²ºc¡C
±±¨îµ²ºcªºÃa³B¦b¨º¸Ì¡H

¦b¶}©l¸£µ¬«æÂàÅs¤§«e¡AÅý§Ú­Ì¥ý°±¤@¤U¡A¸ÑÄÀ¬°¤°»ò­º¥ý­nÁ×§K¨Ï¥Î"±ø¥ó"¡C ±ø¥óµ²ºcªº¨Ï¥Î·|¼W¥[µ{¦¡½Xªº½ÆÂø«×¡C§Aªºµ{¦¡½X¶V½ÆÂø¡A´N¶VÃø¾\Ū©MºûÅ@¡C ¤@­Ó¾÷±ñªº¹s¥ó¶V¦h¡A·lÃaªº¾÷·|¶V¤j¡A¨Ã¥B¶VÃø­×²z¡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
Moore»¡¤F³o­Ó¬G¨Æ¡G

§Ú³Ìªñ¦^¨ì´X¦~«e´¿¸g¬°¥L­Ì°µ¹L¤@¨Ç¤u§@ªº¤½¥q¡C¥L­Ì§â§Ú¥s¦^¥h¡A¬O¦]¬°§Ú¼g ªº¨º¨Çµ{¦¡¤w¸g¦³¤­¦~¤F¡A¨Ã¥B¤w¸gÅܪº«Ü½ÆÂø¡C¦b³o¬q´Á¶¡¡A¦³´X­Óµ{¦¡³]­p®v ´¿¸g¶i¤J³o­Óµ{¦¡¡A­×§ï¤F¤@¨Ç«ü¥O¡A¥[¤J¤F¤@¨Çª¬ºAÅܼƩM±ø¥ó¡C¨C¤@±ø§Ú©Ò°O ±oªº¤­¦~«e«Ü²³æªº«ü¥O¡A²{¦b«o³£Åܱo½ÆÂø¤F¡C¡u¦pªG³o¼Ë.. §_«h¦pªG³o¼Ë.. §_«h¦pªG³o¼Ë..¡v¡A¦A¨Ó¤~¬O¨º¥ó²³æªº¨Æ±¡¡C ²{¦bŪ³o¨Ç«ü¥O¡A§Ú«ÜÃø·Q°_¨Ó¥¦­n°µ¤°»ò¡A©M¬°¤°»ò­n³o¼Ë°µ¡C§Ú¥²»Ý¦^·Q¨C ­ÓÅܼƫüªº¬O¤°»ò¡A¥¦¬°¤°»ò¦b³oùØ¡A¥H¤Î¥¦±µµÛ·|²£¥Í¤°»ò¡A©Î¤£²£¥Í¤°»ò¡C ¶}©lªº®É­Ô¡Aµ{¦¡³]­p®v«Ü¦ÛµMªº´N³o¼Ë°µ¤F¡A¦]¬°¥L­Ì¦³¤@­Ó¯S®íª¬ªp»Ý­n³B²z¡C ¬°¤F³B²z³o­Ó¯S®íª¬ªp¡A¥L­Ì¥ý¦b¤@­Ó¦a¤è©ñ¤W¤F±ø¥ó¡CµM«á¥L­Ìµo²{¡A³o¸Ì¤]»Ý ­n¤@­Ó±ø¥ó¡A¨º¸Ì¤]»Ý­n¤@­Ó±ø¥ó¡Cµ²ªG¬O¡A¨C¼W¥[¤@­Ó¨BÆJ¡A´N¼W¥[¤@ÂIµ{¦¡ªº ½ÆÂø«×¡C¦]¬°¥L­Ì¬Oµ{¦¡³]­p®v¡A©Ò¥H¥L­Ì¤]³£Áٯ౱¨î¥¦¡C µ²ªGÅܱo«Ü¾D¿|¡C¨ì³Ì«á¡A¥L­Ì¤@¦@¦³¥b¥´ªººX¼Ð¡C´ú¸Õ³o­Ó¡A±N¥¦«ì´_¡A¦A³]©w ¨º­Ó¡A¦p¦¹­«´_¤£¤w¡C¦b¤@­Ó±ø¥ó¦¨¥ß«á¡A·|µo²{ÁÙ¦³¥t¥~ªº±ø¥ó»Ý­nÀˬd¡C¥L­Ì »s³y¤F¤@°ï¹³Äѱø¦¡ªºÅÞ¿è§PÂ_ªºµ{¦¡½X¡C µ{¦¡ªº½ÆÂø«×¤ñ·íªì¥L­Ì·Q¹³ªº­n°ªªº¦h¡C¦ý¬O¥L­ÌÁÙ¥H¬°³oºØ³B²z¤è¦¡¬O¹ïªº¡A ¥L­Ì¨S·Q¨ì¦³¤@­Ó²³æªº¸Ñ¨M¿ìªk¡A´N¬O¥Î¨â­Ó¦r¦Ó¤£¬O¤@­Ó¦r¡C§A¥i¥H»¡ GO ©Î ªÌ»¡ PRETEND¡C ¦b¤j³¡¥÷ªºÀ³¥Îµ{¦¡¸Ì¡A¯u¥¿»Ý­n°µ±ø¥ó´ú¸Õªº¦a¤è«Ü¤Ö¡C¨Ò¦p¦b¤@­Ó¹CÀ¸µ{¦¡¤¤¡A §A¤£¥²»¡¡u¦pªG¥L«ö¤U«ö¶sA¡A´N°µ³o¥ó¨Æ¡F¦pªG¥L«ö¤U«ö¶sB¡A´N°µ¥t¤@¥ó¨Æ¡v¡C §A¤£¥²¸g¥Ñ¹³³o¼ËªºÅÞ¿è¡C ¦pªG¥L«ö¤@­Ó«ö¶s¡A§A´N°µ¤@¥ó¨Æ¡C¨ä¹ê§A©Ò­n°µªº¨Æ¬O»P«ö¶s¬ÛÃöªº¡A¦Ó¤£¬O»P Å޿観¤°»ò¥Ê¸¯ªº¡C"±ø¥ó"¥»¨­¨Ã¤£Ãa¡A¥¦­Ì¬O¤@ºØ­«­nªºµ²ºc¡C¦ý¬O¤@­Óµ{¦¡¦p ªG¦³¤Ó¦hªº±ø¥ó¡A´N·|Åã±o²Â©å¦ÓÃøÅª¡C§A©Ò­n°µªº¬O¡A¦Û°Ý¨C¤@­Ó±ø¥ó¬O§_¥²»Ý¡C ¹J¨ì¤@­Ó±ø¥ó¡A§A´N°Ý¡u§Ú¬O¤£¬O§Ë¿ù¤F¤°»ò¡H¡v §A¨Ï¥Î"±ø¥ó"©Ò¯à°µ¨ìªº¨Æ¡A¤]¥i¥H¥Î¥t¤@ºØ¤èªk¨Ó¹F¦¨¡C±qªø»·ªºÆ[ÂI¨Ó¬Ý¡A¨Ï¥Î ¥t¤@ºØ¤èªk­n¤ñ¨Ï¥Î±ø¥ó¦³¯qªº¦h¡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

¦b§Ú­Ì¨S¦³¤¶²Ð§Þ¥©ªº²Ó¸`¤§«e¡A¥ýÅý§Ú­Ì¬Ý¤@­Ó¯S®íªº¨Ò¤l¤¤¡A¤TºØ¤£¦P¨Ï¥Î±ø¥ó ªº¤è¦¡¡C¹Ï8-1¡A¹Ï8-2¡A©M¹Ï8-3 ¦CÁ|¤F¦Û°ÊÂd­û¾÷ªº¤TºØ³]­pª©¥»¡C ²Ä¤@­Ó¨Ò¤lª½±µ¨Ó¦Û¾Ç®Õ¡A¬Oµ¹µ²ºc¤Æµ{¦¡³]­p®vªºª©¥»¡C¥¦ªºÅÞ¿è¨ú¨M©ó IF «ü ¥Oªº¥¿½T±_¤Æ¡C ®e©ö¾\Ū¶Ü¡H½Ð§A§i¶D§Ú¡A¦b¤°»ò±ø¥ó¤U¡A¨Ï¥ÎªÌªº¥d¤ù·|³Q¦Y±¼¡C¬°¤F¦^µª³o­Ó °ÝÃD¡A§A¥²»Ý±q©³³¡­pºâ ELSE ªº¼Æ¥Ø¡A¨Ã±N¥¦»P±q³»³¡­pºâªº IF ¼Æ¥Ø°t¦X¡A©Î¨Ï¥Î ¤@°¦¹ï»ô¥Îªºª½¤Ø¡C ²Ä¤GºØª©¥»¡A¹Ï8-2¡A¬O¤@­Ó¦b¥iŪ©Ê¤W¦³©Ò§ï¶iªºª©¥»¡C¥¦¨Ï¥Î¤F³\¦h¤pªº¡B©R¤F ¦Wªºµ{§Ç¡C¦pªG¥d¤ùªº«ù¦³¤H¤£¹ï¡A¥d¤ù´N·|³Q¦Y±¼¡C §Y¨Ï¦³¤F³o­Ó§ï¨}¡A¨C­Ó¦rªº³]­pÁÙ¬O§¹¥þ¦a¨Ì¿àµÛ¨º¥²¶·­n¶i¦æªº±ø¥ó´ú¸Õ¤Wªº ¶¶§Ç¡C¬Ý°_¨Ó¹³¬O"³Ì°ª¶¥¼h"ªºµ{§Ç¡A«o­t¾áµÛ­n¥h®ø°£¨º¨Ç³ÌÃa±¡ªp¡B³Ì¤£­«­nªº¤u §@¡C¦Ó¥B¡A¨C­Ó±ø¥ó´ú¸Õ¤S­n­t³d©I¥s¤U¤@­Ó±ø¥ó´ú¸Õ¡C ²Ä¤TºØª©¥»³Ì±µªñ²Å¦¡ªº©Ó¿Õ¡C¥¦³Ì°ª¼hªº¦r¥¿½T¦a¦bÆ[©À¤Wªí¹F¥X­nµo¥Íªº¨Æ¡A ¨Ã¥B¥uÅã¥Ü¥X¥D­nªº¸ô®|¡C¨C¤@­Ó¦¸¯Å¦r¦³¥¦¦Û¤vªº¿ù»~¸õ¥X³B²z¡A¤£·|²V²c¤F¥Dµ{¦¡ ªº¾\Ū©Ê¡C¦Ó¥B¡A¤@­Ó±ø¥ó´ú¸Õ¤]¤£¥²¤@©w­n©I¥s¤U¤@­Ó±ø¥óªº´ú¸Õ¡C ¦Ó¥B¡A¡y³B²z¡z¬O¨ÌµÛ¤U­±ªº¨Æ¹ê©Ò³]­pªº¡G¨Ï¥ÎªÌ¸g¥Ñ«öÁä¡A¿ï¾Ü©Ò»Ý­nªºªA°È¡C §¹¥þ¤£»Ý­n°µ±ø¥ó´ú¸Õ¡C¤@­Ó«öÁä¥i¥H±Ò°Ê´£´Ú¡A¥t¤@­Ó±Ò°Ê¦s´Ú¡C³oºØ¤èªk¤]¯àÀ³¥I º¸«á³]­p¤Wªº¥i¯à§ïÅÜ¡A¨Ò¦p¼W¥[¦Û°ÊÂà¦sªº¥\¯à¡C¡]¨Ã¥B¡A³oºØ¤èªk¤]¦]¦¹¦Ó¤£·|¨Ì¿à µwÅé¡CÁä½Lªº¸Ô²Ó¤¶­±¥i¥HÁôÂæbÁä½Lªºµü¶°¸Ì¡A¹³¬O¡yŪ¨ú«ö¶s¡z©M¡y«ö¶s¡z¡C¡^ ·íµM¡A³o¤TºØ¤èªk²Å¦¡³£¥i¥H¹F¦¨¡C§AÄ@·N¿ï¨º¤@ºØ©O ¡H

  ¹Ï 8-1  ¦Û°ÊÂd­û¾÷¡Gµ²ºc¤Æªº¤èªk
      IF  ¥d¤ù¦³®Ä  DO
          IF  ¥dªº«ù¦³¤H¥¿½T  DO
              IF  ­n¨D´£´Ú  DO
                  IF  ´£´Ú±K½X¦³®Ä  DO
                      Ū¶i´£´Ú¼Æ
                      IF  ­n¨Dªº´£´Ú¼Æ ¡Ø ¥Ø«e¦s´Ú  DO
                          IF  ´£´Ú¼Æ ¡Ø Âd­û¾÷¤ºªº²{¦³²{ª÷  DO
                              °e¥X²{ª÷
                              µ²ºâ½ã¥Ø
                          ELSE
                              Åã¥Ü«H®§
                              °±¤î¹ï¸Ü
                     ELSE
                          Åã¥Ü«H®§
                          °±¤î¹ï¸Ü
                  ELSE
                       Åã¥Ü«H®§
                       °±¤î¹ï¸Ü
              ELSE
                  IF  ´£´Ú±K½X¦³®Ä  DO
                      Ū¶i¦s´Ú¼Æ
                      ±q¤J¤f±µ¨ü¦s´Ú«H«Ê
                      µ²ºâ½ã¥Ø
                  ELSE
                      Åã¥Ü«H®§
                      µ²§ô¹ï¸Ü
          ELSE
                ¦Y±¼¥d
      ELSE
           Åã¥Ü«H®§
      END

  ¹Ï 8-2  ¦Û°ÊÂd­û¾÷¡G¦b¤w©R¦Wªºµ{§Ç¤¤±N±ø¥ó±_¤Æ
      PROCEDURE Ū¥d¤ù
           IF  ..¥d¤ù¬O¥i³QŪ¨úªº..  THEN  Àˬd«ù¦³¤H
               ELSE  ..©Úµ´¥d¤ù..  END

      PROCEDURE Àˬd«ù¦³¤H
           IF  ..«ù¦³¤H¥¿½T..  THEN  Àˬd±K½X
               ELSE  ..¦Y±¼¥d¤ù..  END

      PROCEDURE Àˬd±K½X
           IF  ..±K½X»P«ù¦³¤H²Å¦X..  THEN  ³B²z
               ELSE  ..Åã¥Ü«H®§¡Aµ²§ô¹ï¸Ü..  END

      PROCEDURE ³B²z
           IF  ..­n¨D´£´Ú..  THEN  ´£´Ú
               ELSE  ¦s´Ú  END

      PROCEDURE ´£´Ú
           ..¸ß°Ý..  IF  ..­n¨Dªº´£´Ú¼Æ¥Ø ?¥Ø«e¦s´Ú..  THEN  ¤ä¥I  END

      PROCEDURE ¤ä¥I
           IF  ..´£´Ú¼Æ¥Ø ?Âd­û¾÷²{¦³²{ª÷..  THEN  ..°e¥X²{ª÷.. µ²ºâ½ã¥Ø..
           ELSE  ..Åã¥Ü«H®§..  END

      PROCEDURE ¦s´Ú
           ..±µ¨ü¦s´Ú«H«Ê..
           ..µ²ºâ½ã¥Ø..

  ¹Ï 8-3  ¦Û°ÊÂd­û¾÷¡G­«·s¤À¸Ñ¡A¨Ã¥B¡þ©ÎªÌ¨ú®ø±ø¥ó
      : ¶}©l¶i¦æ   Ū¥d¤ù  Àˬd«ù¦³¤H  Àˬd±K½X  ³B²z ;
      : Ū¥d¤ù   ..Ū¤Jªº½X¤£¥¿±`.. IF  ..­ç°£¥d¤ù..  °±¤î  THEN ;
      : Àˬd«ù¦³¤H   ..«ù¦³¤H¨­¥÷¤£²Å.. IF  ..¦Y¶i¥d¤ù..  °±¤î  THEN ;
      : Àˬd±K½X   ..±K½X¤£¦X..  IF  ..Åã¥Ü«H®§..  °±¤î  THEN ;

      : Àˬd«ö¶s  ( -- «ö¶s¥\¯àªº¦a§} )   ( ³o¬O¤@ºØ¨Ì¾÷«¬¦Ó¦³©Ò¤£¦Pªºµ{§Ç )  ;
      : ³B²z   Ū¨ú«ö¶s  °õ¦æ ;
      1 «ö¶s ´£´Ú         2 «ö¶s ¦s´Ú
      : ´£´Ú   ..¸ß°Ý..  ­n¨Dªº´£´Ú¼Æ¥Ø ?¥Ø«e¦s´Ú.. IF  ¤ä¥I  THEN ;
      : ¤ä¥I   ..´£´Ú¼Æ¥Ø ?Âd­û¾÷²{¦³²{ª÷.. IF  ..°e¥X²{ª÷.. µ²ºâ½ã¥Ø..
               ELSE  ..Åã¥Ü«H®§..  THEN  ;
      : ¦s´Ú   ..±µ¨ü¦s´Ú«H«Ê..  µ²ºâ½ã¥Ø..  ;
¡@
¡@

 ¦p¦ó®ø°£±±¨îµ²ºc

¦b³o¤@¸`¡A§Ú­Ì±N¬ã¨s¤@¨Ç±N±ø¥ó²¤Æ©Î¬Ù²¤ªº§Þ³N¡C¥¦­Ì¤j¦h·|²£¥Í¥iŪ©Ê¸û°ªªº½X¡A¤ñ¸û®e©öºûÅ@¡A¤]¤ñ¸û¦³®Ä²v¡C¦³¨Ç§Þ³N¯à²£¥Í®Ä²v¸û°ªªºµ{¦¡½X¡A¦ý¥iŪ©Ê·|®t¤@¨Ç¡C
¦]¦¹¡A½Ð°O¦í¡G¨Ã«D©Ò¦³ªº´£¥Ü¡A³£¬O¥i¥H³Q¨Ï¥Î¦b¦UºØ±¡ªpªº¡C

  §Q¥Îµü¨å

¢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
 ´£¥Ü   ½á¤©¨C­Ó¥\¯à¦³¥¦¦Û¤vªº¤@­Ó©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

­Y¯à¾A·í¦a¨Ï¥Î²Å¦¡ªºµü¨å¡A¹ê»Ú¤W§Ú­Ì¨Ã¨S¦³®ø°£"±ø¥ó"¡F§Ú­Ì¥u¬O±N¥¦­Ì±qÀ³¥Îµ{¦¡½X¤§¤¤¤À¸Ñ¥X¨Ó¡C²Å¦¡ªºµü¨å´N¬O¤@­Ó¥¨¤jªº¦r¦êªº CASE ±Ô­z¡C³oºØ¡uÀˬd¬O§_§k¦X¨Ã°õ¦æ¡vªº¥\¯à¬OÁôÂæb²Å¦¡¨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
  MooreªºÆ[ÂI¡G

¦b§Úªº·|­p½ãï¸Ì¡A¦pªG§A±q¬Y­Ó¤H¦¬¨ì¤@±i¤ä²¼¡A§AÁä¤Jª÷ÃB¼Æ¥Ø¡A¤ä²¼¸¹½X¡A ¡y¦¬´Ú¡z¡A©M¶}²¼¤H©m¦W¡G

      200.00  N1235202  ¦¬´Ú  §õ§Ó¼w

¡y¦¬´Ú¡z³o­Óµü·|°µ¾A·íªº³B²z¡C¦pªG§A­n¶}²¼µ¹¬Y­Ó¤H¡A§AÁä¤J¼Æ¥Ø¡Aµo²¼¸¹½X ¡A¡y¥I±b¡z¡A©M¸Ó¤Hªº©m¦W¡G

      1000.00  DS2440530  ¥I±b  ¼Bª÷¼Ð

... ¤@­Óµü¥NªíµÛ¤@ºØª¬ªp¡C¥Ñµü¨å¨Ó°µ¨M©w¡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

³oºØ·§©À¦b²Å¦¡¥»¨­´N¨ã³Æ¤F¡C­n¬Û¥[¤@¹ï³æ¾ã¼Æ¡A§Ú­Ì¨Ï¥Î«ü¥O¡y+¡z¡C­n¬Û¥[¤@¹ï Âù¾ã¼Æ¡A§Ú­Ì´N¨Ï¥Î«ü¥O¡yD+¡z¡C¤@ºØ®Ä²v¸û®t¡B¸û½ÆÂøªº¤èªk¬O¡A¤@­Ó«ü¥O»Ý­n"ª¾¹D" ³Q¥[¼ÆªººØÃþ¡C ²Å¦¡«Ü¦³®Ä²v¡A¦]¬°©Ò¦³³o¨Çµü¡A¡y¦¬´Ú¡z¡B¡y¥I±b¡z¡B¡y+¡z¡B¡yD+¡zµ¥µ¥¡A³£¥i ¥Hª½±µ³Q°õ¦æ¡A¤£»Ý­n¥ô¦óªº´ú¸Õ©M¤À¤ä¡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
´£¥Ü   ¥Î·M²Âªº¦r
¢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µ¹¹qµø¼@§@®aªº«ØÄ³¡C³o¬O¨Ï¥Îµü¨åªº¥t¤@­Ó¨Ò¤l¡C"·M²Â"ªº¦r¬O¨ººØ¤£¨Ì¾aª¬ ºAªº¦r¡A¦]¦Ó¡A¤£½×¦b¤°»òª¬ªp¤U¡A¥¦­Ì³£¦³µÛ¬Û¦Pªº¦æ¬°¡C ¤@­Ó·M²Âªº¦r¬O¤£ªx¸qªº¡A¤]¦]¦¹¤ñ¸û¥i¥H«H¿à¡C ¦³´X­Ó±`¥Îªº²Å¦¡¦r¡A³Ìªñ¦b³o¤è­±¤Þ°_ª§Ä³¡C¨ä¤¤¤§¤@¬O¡y."¡z¡A³Q¥Î¨Ó¦L¥X¤@ ­Ó¦r¦ê¡C¥¦³Ì²³æªº¤@ºØ§Î¦¡¬O¡A¥u¤¹³\³Q¨Ï¥Î¦b«_¸¹©w¸q¤§¤¤¡G

      : TEST   ." THIS IS A STRING " ;

¹ê»Ú¤W¡A³o­Óª©¥»ªº¦r¨Ã¤£"¦L¥X"¤@­Ó¦r¦ê¡C¥¦¥u¬O½sͤ@­Ó¦b°õ¦æ®É¯u¥¿¥Î¨Ó¦L¥X¦r ¦êªº¦rªº¦a§}¡A¥H¤Î­n³Q¦L¥Xªº¦r¦ê¥»¨­¡C ³o¬O³o­Ó¦rªº·M²Âª©¥»¡C¦pªG§A±N¥¦¨Ï¥Î¦b«_¸¹©w¸q¤§¥~¡A¥¦¤]¥u·|½sͦr¦ê¡A¨Ã¤£ ¯à°µ¥X§A´Á±æªº¤u§@¡C ¬°¤F¸Ñ¨M³o­Ó°ÝÃD¡A¦bFIGª©¥»ªº¡y."¡z©w¸q¤¤¡A¥[¤W¤F¤@­Ó´ú¸Õ¡A¥H¨M©w¨t²Î¥Ø«e ¬O¦b½sĶ©Î¸ÑĶªºª¬ºA¡C­Y¬O¦b½sĶª¬ºA¸Ì¡A¡y."¡z´N±N¦r¦ê©M¦L¦r¦êªº¦rªº¦a§}½s¤J¡F ­Y¦b¸ÑĶª¬ºA¸Ì¡A¥¦´N¦L¥X¦r¦ê¡C ¡y."¡zÅܦ¨¤F¥Ñ¨â­Ó§¹¥þ¤£¦Pªº¦r¡A³Q©ñ¦b¤@­Ó IF ELSE THEN µ²ºc©Ò«Øºcªº«Îò ¤U©Ò²Õ¦¨¡C³Q¥Î¨Ó«ü¥Ü²Å¦¡¬O¦b½sĶ©Î¸ÑĶª¬ºA¤UªººX¼ÐºÙ¬°¡ySTATE¡z¡C¦]¬°¡y."¡zªº ¦æ¬°¨M©w©ó STATE ªº­È¡A©Ò¥H»¡¥¦¬O¡u¨Ì STATE ¨M©wªº¡v¡]STATE-dependent¡^¡C ³o­Ó«ü¥O¦b«_¸¹©w¸qªº¤º¥~¡Aªí²{¥X¨Óªº¦æ¬°³£¬Û¦P¡C³o­Ó¤èªk°_ªì¬Ý°_¨Ó¦ü¥G«Ü ¦³¥Î¡A¦ý¬Oºë©úªº¾Ç¥Í«Ü§Ö´N¬Ý¥X¨Ó¡A¥¦¤ñ¬Ý°_¨Ó­n½ÆÂøªº¦h¡C °²³]¤@­Ó¾Ç¥Í­n¼g¤@­ÓºÙ¬°¡yB."¡zªº·sµü¡A¥Î¨Ó¦b¥LªºÅã¥Ü¹õ¤WÅã¥Ü¥X¸û°ª«G«×ªº ¦r¦ê¡C¥¦¯à³Q³o¼Ë¦a¨Ï¥ÎµÛ¡G

      ." INSERT DISK IN "  B."  LEFT "  ." DRIVE "

¥L©Î³\¸Ó©w¸q¡yB."¡z¬°

      : B."   BRIGHT  ."  NORMAL ;

¤]´N¬O¡A±Nµø°Tª¬ºAÅܪº«G¨Ç¡A¦L¥X¦r¦ê¡AµM«á¦A«ì´_±`ºA¡C ¥L¸Õ¤F³o­Óµ{¦¡½X¡C¼v¹³¥ß¨è³QºR·´¤F¡F¤Û¹³¯}·À¡F³o­Ó©w¸q¤£¤u§@¡C ­n¸Ñ¨M³o­Ó°ÝÃD¡Aµ{¦¡³]­p®v¥²»Ý¬ã¨s¥¦¦Û¤vªº¨t²Î¸Ì¡y(.")¡zªº©w¸q¡C§Ú¤£·Q¸`¥~¥ÍªK ªº¦b³o¸Ì¸ÑÄÀ¡y(.")¡zªº¤u§@­ì²z¡A§Ú±Ô­zªº­nÂI¬O¡G¬Ý°_¨ÓªºÀuÂI¡A¹ê»Ú¤W¤£ºÉµM¬O ÀuÂI¡C ·N¥~ªº¡A¥Î¤@ºØ¤£¦P»yªkªº¤è¦¡¡A¥i¥H¸Ñ¨M³o­Ó¾Ç¥Íªº°ÝÃD¡C¥¦¤£»Ý­n¨â­Ó¤À§Oªº ¡y."¡z©M¡yB."¡z¨Ó¦L¥X¦r¦ê¡C¥u­n§ïÅܨt²Îªº¡y(.")¡z¡A¨Ï¥¦¦b¦L¥X¤§«á¤@©w¦^´_¥¿±` ª¬ºA¡A§Y¨Ï¥¦¤j³¡¥÷ªº®É¶¡³£¤w¸g¬O¦b¥¿±`ª¬ºA¡C§Q¥Î³o­Ó»yªk¡Aµ{¦¡³]­p®v¥u­n¦b »Ý­n¥[±j«G«×ªº¦r¦ê«e¡A¥[¤W¤@­Ó²³æªº¦r¡yBRIGHT¡z¡C

      ." INSERT DISK IN "  BRIGHT  ." LEFT "  ." DRIVE "

1983¦~ªº¼Ð·Ç³W©w¤F¡y."¡zªº²Âª©¥»¡A¨Ã¥B¡A¬°¤F¸Ñ¨M»Ý­n¤@­Ó¸ÑĶª©¥»ªº°ÝÃD¡A¥[¤W¤F ¤@­Ó·s¦r¡y.(¡z¡C¥O¤H°ª¿³ªº¬O¡A¦³¤F³o¨â­Ó¦r¡A§Ú­Ì´N¥i¥HÅýµü¨å¨Ó°µ¨M©w¡C ¦r¡y'¡z(tick)¤]¦³Ãþ¦üªº¾ú¥v¡C¦bFIGªº²Å¦¡ª©¥»¸Ì¡A¥¦¬O¨Ì STATE ¨M©w¡A²{¦b¤w ¸g¦b83¼Ð·Ç¸Ì³Q©w¸q¦¨¤@­Ó²Â¦r¡C¡y '¡z ©M¡y."¡zªº¦@¦PÂI¬O¡Aµ{¦¡³]­p®v¯à°÷¦b¸û°ª ¼hªº©w¸q¤¤¨Ï¥Î¥¦­Ì¡A¦Ó¥¦­Ì¤]·|ªí²{ªº¦p¦P¥¿±`ªº±¡ª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
´£¥Ü ¦pªGµ{¦¡³]­p®v§Æ±æ±q¤@­Ó°ª¶¥¼hªº©w¸q¤¤©I¥s¤@­Ó¦r¡A¨Ã¥B§Æ±æ¥¦·|ªí²{ªº¹³¬O ¦b¸ÑĶª¬ºA¤U¤@¼Ë¡A¨º»ò³o­Ó¦rªº¦æ¬°´N¤£¯à¬O¡u¨Ì STATE ¨M©wªº¡v¡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

¡yASCII¡z¬O­Ó¨Ì STATE ¨M©w¦æ¬°¡A¦Ó¤S¯à¤u§@ªº«Ü¦nªº¤@­Ó¦r¡AMAKE ¤]¬O¡C¡]°Ñ¬Ý ªþ¿ýC¡^±ø¥óªº±_ª¬¤Æ©M¦X¨Ö¡]Nesting and Combining Conditions¡^

¢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
´£¥Ü ¤£­n¥h´ú¸Õ¤w¸g³Q±Æ°£¦b¥~ªºªF¦è¡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­Ó¨Ò¤l¡G

  : PROCESS-KEY
     KEY  DUP  LEFT-ARROW  = IF CURSOR-LEFT   THEN
          DUP  RIGHT-ARROW = IF CURSOR-RIGHT  THEN
          DUP  UP-ARROW    = IF CURSOR-UP     THEN
               DOWN-ARROW  = IF CURSOR-DOWN   THEN ;

³o­Óª©¥»ªº®Ä²v«Ü®t¡A¦]¬°¤£½×¨ä¤¤­þ¤@­Ó±¡ªp¥X²{¡A³£¥²»Ý°µ¥þ³¡¥|ºØ´ú¸Õ¡C¨ä¹ê ¡A¦pªG¬O¥ª½b¸¹³Q«ö¤U¡A´N¤£»Ý­n¦A°µ¨ä¥¦ªº«öÁäÀˬd¡C ´«¤@ºØ¤èªk¡A§A¥i±N±ø¥ó±_¤Æ¡A¹³³o¼Ë¡G

  : PROCESS-KEY
     KEY  DUP  LEFT-ARROW   = IF CURSOR-LEFT  ELSE
          DUP  RIGHT-ARROW  = IF CURSOR-RIGHT ELSE
          DUP  UP-ARROW     = IF CURSOR-UP    ELSE
                                 CURSOR-DOWN
          THEN  THEN  THEN  DROP ;

¢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
´£¥Ü
  ±N¨ã¦³¦P¼ËÅv¼Æ¡]weight¡^ªº¥¬ªL±`¼Æ­È¦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

³\¦hÂù±_ª¬ªº¡y¦pªG µM«á¡zµ²ºc¡A¥i¥H¦b°µ¨M©w«e¡A¥ý§Q¥ÎÅÞ¿è¾Þ§@¤¸§âºX¼Ð¦X¨Ö¡A¨Ó ¹F¨ì²¤Æªº¥Ø¦a¡C¤U­±¬O¤@­ÓÂù±_ª¬ªº´ú¸Õ¡G

      : ?§ä¼Ö¤l   ¬P´Á¤»?  ¦pªG
                  ¤u§@  §¹¦¨¤F?  ¦pªG  ¥h®b·|  µM«á  µM«á ;

³o­Ó¨Ò¤l¤¤¨Ï¥Î¤F±_ª¬ªº¡y¦pªG¡z¡A¦b¥X¥h§ä¼Ö¤l«e¡A¥ý½T©w¬O¬P´Á¤»¡A¨Ã¥B¤u§@¤w°µ§¹ ¤F¡C´«¥t¥~¤@ºØ¤èªk¡AÅý§Ú­Ì¥ý±N±ø¥ó"ÅÞ¿è¦a"¦X¨Ö°_¨Ó¡AµM«á¥u°µ¤@­Ó¨M©w¡G

      : ?§ä¼Ö¤l   ¬P´Á¤»?  ¤u§@ §¹¦¨¤F?  ¦Ó¥B  ¦pªG  ¥h®b·|  µM«á ;

³o¼Ë²³æ¦h¤F¡A¨Ã¥B¤]¸û¦³¥iŪ©Ê¡C ÅÞ¿è¤W"OR"ªºª¬ªp¡A¦pªG¨Ï¥Î¦h­Ó¡yIF THEN¡z¨Ó¹ê²{¡A·|§óÃø¬Ý¡G

      : ?RISE   PHONE RINGS? IF  UP GET  THEN
           ALARM-CLOCK RINGS?  IF  UP GET THEN ;

¼g¦¨¤U­±³o¼Ë¡A¥i¯à·|¤ñ¸û¦n¨Ç¡G

      : ?RISE  PHONE RINGS?  ALARM RINGS?  OR IF  UP GET THEN ;

³o­Ó³W«hªº¨Ò¥~¤§¤@¬O¡A·í¦³¨Ç±ø¥óªºÀˬd¤Óªá¶O®É¶¡¡A¦Ó³y¦¨°õ¦æ³t«×ªº·l¥¢¹L¤j®É¡C §Ú­Ì¥i¥H¼g¦¨

      : ?ª£ÄÑ   ¨§ªÞ?  ª£ÄÑ ­¹ÃÐ?  AND IF  ª£ÄÑ ·Ç³Æ  THEN ;

¦ý¬O¡A°²³]§Ú­Ì»Ý­nªá¶O«Üªøªº®É¶¡¨Ó·j´M­¹ÃЪºÀɮסA¤~¯àª¾¹Dª£ÄѸ̻ݭn­þ¨Ç¨ä¥¦ªº °t®Æ¡A«Ü©úÅ㪺¡A¦pªG§Ú­Ì¤w¸g¨S¦³¨§ªÞ¡A´N®Ú¥»¨S¥²­n·j´M¡C©Ò¥H¡A¼g¦¨¤U­±ªº§Î¦¡ ¤ñ¸û¦³®Ä²v¡G

      : ?ª£ÄÑ   ¨§ªÞ? IF  ª£ÄÑ ­¹ÃÐ?  IF  ª£ÄÑ ·Ç³Æ  THEN  THEN ;

¦pªG¨S¦³¨§ªÞ¡A§Ú­Ì´N¤£»Ý­nÀˬd­¹ÃСC

¥t¤@ºØ¨Ò¥~¬O¡G¦pªG¦³¥ô¦ó±ø¥ó¥i¯à¬O"¤£¬°¯u"ªº±¡ªp¡C¨º»ò¡A­Y¯à¥ý®ø°£³o­Ó±ø¥ó ¡A§A´N¤£»Ý­n¦A´ú¸Õ¨ä¥¦ªº±ø¥ó¤F¡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¦hºØ±ø¥ó¤¤¡A·í¦U±ø¥ó¡]¦b¬Û¦ü©Ê©Î­pºâ®É¶¡¤W¡^ªº»´­«Åv¼Æ¤£¬Û¦Pªº®É­Ô¡A±_ª¬ ±ø¥óªº°µªk¬O¡A±N³Ì¤£¥i¯à¬°¯uªº¡B©Î³Ì®e©ö­pºâªº¡A©ñ¦b³Ì¥~¼h¡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"OR"ªºµ²ºc¤¤¡A¥H³oºØ¤èªk¨Ó§ï¶i©Ê¯à¡A·|§xÃø¨Ç¡C¨Ò¦p¡A¦b©w¸q¸Ì

      : ?RISE  PHONE RINGS?  ALARM RINGS? OR  IF  UP GET THEN ;

§Ú­Ì´ú¸Õ¹q¸Ü©M¾xÄÁ¡A¥u­n¨ä¤¤¤@­ÓÅT¤F¡A§Ú­Ì´N°_¨Ó¡C²{¦b°²³]¾xÄÁªºÅTÁn¤ñ¸û¤£®e ©ö´ú¸Õ¡A§Ú­Ì¥i¥H¼g¦¨

      : ?RISE   PHONE RINGS? IF  UP GET  ELSE
           ALARM-CLOCK  RINGS?  IF UP GET THEN THEN ;

¦pªG²Ä¤@­Ó±ø¥ó¬°¯u¡A§Ú­Ì´N¤£¥²®ö¶O®É¶¡µû¦ô²Ä¤G­Ó¡C¤Ï¥¿§Ú­Ì­n°_¨Ó±µ¹q¸Ü¡C ¡yUP GET¡z­«½Æ¥X²{¬O«ÜÃø¬Ý¡A¤ñ¥Î¡yOR¡zªº¥iŪ©ÊÁÙ­n®t¡A¦ý¦³®ÉÁÙ¬O«D¥Î¤£¥i¡C
±±¨îµ²º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
´£¥Ü ³Ìº}«Gªºµ{¦¡½X¬O³Ì¯à¶K¤Á¸Ñ¨M°ÝÃDªº¡C±±¨îµ²ºcªº¿ï¾Ü¥H³Ì¯à°t¦X°ÝÃDªº±±¨î¬yµ{ ¬°­ì«h¡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±Ô­z¡]Case statement¡^

¦³¤@Ãþ¯S®í°ÝÃD¬O¡G±q´XºØ¥i¯àªº°õ¦æ¸ô®|¤¤¡A¨Ì·Ó¤@­Ó¼Æ­È¤Þ¼Æ¡A±q¤¤¿ï¾Ü¤@ºØ¨Ó°õ ¦æ¡C¨Ò¦p¡A­Y§Ú­Ì­n¦r¡y.SUIT¡z¯à¥Ñ¤@­Ó¥Nªí¾ë§JµPªá¦âªº¼Æ­È0¨ì3¡A¦L¥X³o­Óªá¦â ªº¦WºÙ¡C§Ú­Ì¥i¥H¨Ï¥Î±_ª¬ªº IF ELSE THEN µ²ºc¡A¹³³o¼Ë¡G

      : .SUIT   ( suit -- )
         DUP  0=  IF  ." HEART "  ELSE
         DUP  1=  IF  ." SPADES "  ELSE
         DUP  2=  IF  ." DIAMONDS "  ELSE
              ." CLUBS "
         THEN  THEN  THEN  DROP ;

¦ý­Y¯à¨Ï¥Î"ª¬ªp±Ô­z"¡A´N¥i¥H§óÀu¶®ªº¸Ñ¨M³o­Ó°ÝÃD¡C¤U­±¬O¨Ï¥Î"Eackerª¬ªp±Ô­z" ªº®æ¦¡©Ò­«¼gªº©w¸q¡C¡]¥¦¬O¥H´£¥X³o­Ó¤èªkªºCharles E. Eacker³Õ¤h©Ò©R¦Wªº[1]¡^¡C

      : .SUIT  ( suit -- )
         CASE
         0 OF  ." HEARTS "    ENDOF
         1 OF  ." SPADES "    ENDOF
         2 OF  ." DIAMONDS "  ENDOF
         3 OF  ." CLUBS "     ENDOF    ENDCASE ;

³o­Óª¬ªp±Ô­zªº»ù­È¦b©ó¥iŪ©Ê¤Î¥i¼g©Ê¡C¥¦¦b°O¾ÐÅ骺¨Ï¥Î©M°õ¦æ³t«×¤W¡A¨Ã¨S ¦³®Ä²v¤Wªº§ïµ½¡C¹ê»Ú¤W¡Aª¬ªp±Ô­zªº½sĶ©M±_ª¬ªº IF THEN ½s½X¤j­P¬Û¦P¡Cª¬ªp±Ô­z ¬O½sĶ®É°Ï¤¤¦]¤l¤À¸Ñ¡]compile-time factoring¡^ªº¤@­Ó¦n¨Ò¤l¡C ²Å¦¡¨t²Î³£¥²»Ý¤º«Ø¦³³oºØ"ª¬ªp±Ô­z"¶Ü¡H³o­Ë¬O¦³ª§Ä³ªº¡C°ÝÃD¦b¨â¤è­±¡C²Ä¤@¡A ¹ê»Ú¤W»Ý­n³oºØª¬ªp±Ô­zªº¨Ò¤l«Ü¤Ö¡A¤Ö¨ì§Ú­Ì·|ÃhºÃ¥¦¦s¦bªº»ù­È¡C¦pªG¥u¦³¤Ö¼Æªº±¡ ªp¡A±Ä¥Î±_ª¬ªº IF ELSE THEN µ²ºc¡AÁöµM¥iŪ©Ê¸û®t¡A¦ý¦P¼Ë¥i¥H°µ¨ì¡C¦pªG¥X²{ªº¦¸ ¼Æ«Ü¦h¡A¤@­Ó§PÂ_ªí¡]decision table¡^¥i¯à§ó¨ã¦³¼u©Ê¡C ²Ä¤G¡A³\¦h»Pª¬ªp¦³Ãöªº°ÝÃD¡A¨Ã¤£¯S§O¾A¥Î©óª¬ªpµ²ºc¡CEackerªºª¬ªp±Ô­z¬O°² ³]¡G§A­n´ú¸Õ¤@­Ó»P°ïÅ|¤Wªº¼Æ­È¬Ûµ¥ªºª¬ªp¡C¦b¡y.SUIT¡zªº¨Ò¤l¸Ì¡A§Ú­Ì­n´ú¸Õªº¬O ¥Ñ0¨ì3ªº³sÄò¾ã¼Æ¡C¦b³oºØ±¡§Î¤U¡A¸g¥Ñ¤Þ¼Æ¥h­pºâ¥X¤@­Ó°¾²¾­È¡]offset¡^¡A¨Ãª½±µ¸õ ¨ì¥¿½Tªºµ{¦¡½X¤W¡A·|¤ñ¸û¦³®Ä²v¡C ¦b¥»³¹µy«áªº¤p¤p½s¿è¾¹ªº¨Ò¤l¸Ì¡A§Ú­Ì¤£¥u¦³¤@­Ó¦¸¤¸¡A¦Ó¬O¦³¨â¦¸¤¸ªº¥i¯à©Ê¡A ³o®É¡Aª¬ªp±Ô­z¤]µLªk¾A¥Î¡C §Ú­Ó¤H»{¬°¡Aª¬ªp±Ô­z¬O¹ï©ó¤w¸g³Q±a¤Jª[³~ªº°ÝÃD --¥ø¹Ï¥Hºtºâªk¨Óªí¹F¤@ºØ¥i ¥H¨Ï¥Î§PÂ_ªí«Ü«ê·íªº´y­z¥X¨Óªº°ÝÃD-- ªº¥t¤@ºØÀu¶®ªº¸Ñ¨M¿ìªk¡C ª¬ªp±Ô­z¡A·í¯à¬£¤W¥Î³õªº®É«J¡AÀ³¸Ó¬OÀ³¥Îµ{¦¡ªº¤@³¡¥÷¡A¦Ó¤£¸Ó¬O¨t²Îªº¤@³¡¥÷ ¡C
°j¸ôµ²ºc¡]Looping structure¡^

¥¿½Tªº°j¸ôµ²ºc¥i¥H®ø°£ÃB¥~ªº±ø¥ó¡]conditionals¡^¡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
Mooreªº»¡©ú¡G

¦b«Ü¦h±¡ªp¡A±ø¥ó§PÂ_³Q¥Î¨Ó¸õ¥X¤@­Ó°j¸ô¡C¦ý¬O¡A¦pªG¤@­Ó°j¸ô¦³³\¦h¥X¤f¡A³oºØ ¯S§Oªº¥Îªk´N¯à°÷Á×§K¡C ³o¬O­Ó¤´¦b°Q½×¤¤ªº¸ÜÃD¡A¦]¬°¦h­«ªº WHILE µ²ºc¤w¸g¦bpolyFORTH¨t²Î¸Ì¥X²{¡A ¥i¬OÁÙ¨S¦³³Q²Å¦¡83¼Ð·Ç±Ä¥Î¡C¨ä¹ê¡A¦b¦P¤@­Ó REPEAT ¸Ì¡A©w¸q¦h­«ªº WHILE ¬O¤@¥ó«Ü²³æªº¨Æ¡C ¦Ó¥B¡AFORTH Inc.ªºDean Sandersonµo©ú¤F¤@ºØ·sªºµ²ºc¡A¥i¥H¦b¤@­Ó DO LOOP ¸Ì¤Þ¶i¨â­Ó¥X¤f¡C³oºØµ²ºc¥u»Ý¥Î¨ì«Ü¤Öªº§PÂ_¡C§Ú¸g±`¥ý¦b°ïÅ|¤W¯d¤U¤@­Ó"¯u" ºX¼Ð¡A¦pªG§Ú´£¦­Â÷¶}°j¸ô¡A´N§ïÅܺX¼Ð¨Óªí¥Ü³oÂI¡Cµy«á¡A§Ú¦A¥Î¤@­Ó IF ¨Ó ¬Ý¬Ý§Ú¬O§_´£«eÂ÷¶}¤F°j¸ô¡A³oºØ¤èªk¹ê¦b«Ü²Â¡C ¤@¦ý§A°µ¤F¤@­Ó§PÂ_¡A´N¤£À³¸Ó¦A°µ¥¦¤@¦¸¡C¦pªG°j¸ôªºµ²ºc³Q³]­pªº«Ü«ê·í¡A §A´N¤£»Ý­n°O¦í§A¬O±q¨º¸Ì¨Óªº¡A¦]¦¹¡A¤]´N¤£»Ý­n¸ò¦b«á­±ªº¨º¨Ç±ø¥ó§PÂ_¤F¡C ³oºØ¤èªkÁÙ¤£¬O«Ü¬y¦æ¡A¦]¬°¥¦ÁÙ¨S¦³³Qµ²ºc¤Æ¡C©ÎªÌ»¡¡A¥¦ªºµ²ºcÁÙ¤£°÷ºë±K¡C ¥¦ªº»ù­È¦b©ó¡A§A¥i¥H±o¨ì¸û²³æªºµ{¦¡¦Ó¤£¥²¥I¥X¥N»ù¡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³o¬O­Ó°Q½×¤¤ªº¸ÜÃD¡C¥H¥¦¥Ø«eªº¼gªk¨Ó¬Ý¡A«ØÄ³±Ä¥Î¥¦°µ¬°·sªº°j¸ôµ²ºc¡A¬°®É ©|¦­¡C§A¥i¥H¬d¬Ý§A¨t²Îªº¨Ï¥Î¤â¥U¡A¬Ý¬Ý¥¦¬O§_´£¨Ñ¤F¤@¨ÇÀu¨}ªº°j¸ôµ²ºc¡C©ÎªÌ¡A ¨Ì§AÀ³¥Î¤Wªº»Ý­n¡A¦Ò¼{¥[¶i¦Û¤vªº±ø¥óµ²ºc¡C¦b²Å¦¡¸Ì¡A³o¨Ã«D¤@¥óÃø¨Æ¡C §Ú¬Æ¦Ü¤]ÁÙ¤£½T©w¡A¨Ï¥Î³oºØ¦h¥X¤fªº¤è¦¡¡A¬O§_¹H¤Ïµ²ºc¤Æµ{¦¡ªº­ì«h¡C¦b¤@­Ó BEGIN WHILE REPEAT ªº°j¸ô¸Ì¡A¨Ï¥Î¦h­Ó WHILE¡A©Ò¦³ªº¥X¤f³£±N§A±a¨ì¤@­Ó¦@¦Pªº "Ä~Äò"ÂI¡G§Y REPEAT¡C¦ý¬O¦bSandersonªºµ²ºc¤¤¡A§A¥i¥H¶¹L°j¸ôªº²×ÂI¡Aª½±µ¸õ ¥X°j¸ô¡A¨ì ELSE "Ä~Äò"¡C©Ò¥H¥¦¦³¨â­Ó¥i¯àªº"Ä~Äò"ÂI¡C §Ú­Ì¥i¥H»¡³oºØ¤èªk"¤£°÷µ²ºc¤Æ"¡C¦ý¬O¡A³o­Ó©w¸q¤@©w·|±q¤À¸¹Â÷¶}¡A¨Ã¥B¦^ ¨ì©I¥s¥¦ªº¦r¤º¡C±q¼Ò²Õ¥u¦³¤@­Ó¤J¤f©M¤@­Ó¥X¤fªºÆ[ÂI¨Ó¬Ý¡A¥¦¤´¬O¨}¦nªºµ²ºc¤Æ¡C ·í§A­n°õ¦æ¤@¬q¯S©wªºµ{¦¡½X¡A¦Ó¤£·Q¶TµM¦aÂ÷¶}°j¸ô¡A³oºØ¤èªk¦ü¥G¬O¤@ºØ³Ì¦ÛµM ªº¥i¥Îµ²ºc¡C(µy«á¤@¸`"¨Ï¥Îµ²ºc¤Æªº¥X¤f"¡A§Ú­Ì¥i¥H¬Ý¨ì¤@­Ó¨Ò¤l¡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
´£¥Ü °¾¦n"­p¦¸(count)"¡]©w°j¸ô¡^¡A¤Ö¥Î"²×µ²²Å¸¹(terminators)"¡]¤£©w°j¸ô¡^¡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¥H"¦b²Ä¤@­Ó¦r¤¸³B¦s¤J¦r¦êªø«×"ªº¤è¦¡¨Ó³B²z¤@­Ó¦r¦ê¡C³oºØ¤è¦¡¨Ï¦r¦ê¸û®e©ö ³QÅã¥Ü¡B·h²¾¡B©Î°µ¥ô¦ó¨Æ¡C·í¦a§}©Mªø«×³£³Q©ñ¦b°ïÅ|¤W®É¡ATYPE ªº©w¸q´N¯à¼g¦¨¡G

      : TYPE   ( a # --)   OVER + SWAP DO   I C@ EMIT   LOOP ;

¡]ÁöµM TYPE ¹ê¦b¬OÀ³¸Ó¥H²Õ¦X»y¨¥¨Ó©w¸qªº¡C¡^ ³o­Ó©w¸q¨Ã¨S¦³©úÅ㪺¨Ï¥Î±ø¥ó±Ô­z¡C¹ê»Ú¤W¡A¬O LOOP ±N±ø¥óÁôÂäF¡A¦]¬°¥¦¦b ¨C¦¸°j¸ô®É¡A³£·|Àˬd¯Á¤Þ­È¡A¦pªGÁÙ¨S¦³¨ì¹F¤W­­¡A´N¦^¨ì DO ¦A¨Ó¡C ¦pªG¨Ï¥Î¤À¬É²Å¸¹¡]delimiter¡^¡A¹³¬OASCII¤¤ªº"null"¡A«h¦¹©w¸q¥²»Ý¼g¦¨¡G

      : TYPE   ( a -- )   BEGIN  DUP C@  ?DUP WHILE  EMIT  1+ REPEAT  DROP ;

¨C¦¸¸g¹L°j¸ô®É¡A³£»Ý­n¦A°µ¤@¦¸ÃB¥~ªº§PÂ_¡C¡] WHILE ¬O¤@­Ó±ø¥ó¾Þ§@¤¸¡C¡^ ª`·N¡G±q³Ì¨Î¤ÆªºÆ[ÂI¨Ó¬Ý¡A³o­Ó¸Ñ¨M¤èªk¸Ì¡A¨Ï¥Î¡y?DUP¡zªº¥N»ù«Ü°ª¡A¦]¬°¥¦ ¥»¨­´N¥]§t¤F¤@­ÓÃB¥~ªº§PÂ_¡C¤@­Ó°õ¦æªº¸û§Öªº©w¸q¬O¡G

      : TYPE   ( a -- )   BEGIN  DUP C@ DUP WHILE  EMIT  1+ REPEAT  2DROP ;

¦b83¦~ªº¼Ð·Ç¸Ìªº¡yINTERPRET¡z¨Ï¥Î¤F³o­Ó­ì²z¡A²{¦b¥¦±µ¨ü¤@­Ó­p¼Æ¡A¦Ó¤£¦A¥h´M§ä ¤@­Ó²×µ²²Å¸¹¡C ¥t¤@ºØ°µªk¬O¡A¨Ï¥Î¤@ºØ³Ì®e©ö±Nµ²ºc³sµ²¡]link¡^°_¨Óªº¸ê®Æµ²ºc¡C¨C¤@­Ó°O¿ý ³£«üµÛ¤U¤@­Ó¡]©Î«e¤@­Ó¡^°O¿ý¡C¦êÃ쪺³Ì«á¤@­Ó¡]©Î²Ä¤@­Ó¡^°O¿ý¥i¥H¦b¥¦ªº³sµ²Äæ¦ì ¡]link field¡^¤º¶ñ¤J¤@­Ó¹s¨Óªí¥Ü¡C ¦pªG§A¦³¤@­Ó³sµ²Äæ¦ì¡A§AµL½×¦p¦óÁ`¬O­n±N¥¦ªº¤º®e¨ú¥Xªº¡C§A©Î³\¦P®É¤]­n´ú ¸Õ¥¦¬O§_¬°¹s¡C§A¤£¥²«O¦³¤@­Ó­p¼Æ¨Ó°O¿ý¥¦¦³´X­Ó¡C¡]³oºØ§Þ³N³Q¨Ï¥Î¦b²Å¦¡µü¨å¤W¡A ¥Î¨Ó«Øºc¤@­Ó³sµ²ªº¦Cªí¡C¡^¦pªG§A¨Ï¥Î"±N­p¼Æ­È»¼´î¥H¨M©w¬O§_­n²×¤î"ªº°µªk¡A §A¥u¬O´À¦Û¤v§ä§ó¦hªº¤u§@½}¤F¡C
­pºâµ²ª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
´£¥Ü ¤£­n§PÂ_¡A­n­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

¦b«Ü¦h®É­Ô¡A±ø¥ó±±¨îµ²ºc³Q»~¥Î¦b¤@¨Ç±¡ªp¤¤¡A¨ä¤¤¡A¿é¥X¤Wªº®t²§¥u¬O¥Ñ©ó¼Æ­È¤W ªº¤£¦P©Ò³y¦¨¡C¦pªG³B²z¤¤¯A¤Î¨ì¼Æ­È¡A§Ú­Ì´N¥i¥H¥Î­pºâªº¡C¡]°Ñ¾\²Ä¥|³¹¡A"­pºâ vs. ¸ê®Æµ²ºc vs. ÅÞ¿è"¤@¸`¡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
´£¥Ü ±N"¥¬ªL­È"µø¦P"½Æ¦X¼Æ­È"¡]hybrid value¡^¤@¼Ëªº¨Ï¥Î¡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«e¤@­Ó´£¥Ü¡u¤£­n§PÂ_¡A­n­pºâ¡vªº¦ÛµMµ²ªG¡C¥¦ªº­«ÂI¬O¡A¦b¹q¸£¤º³¡¥H¼Æ­È©Ò ªí¥Üªº¥¬ªL­È¡A¥i¥H³Q«Ü¦³®Ä¦a¥Î¨Ó¼vÅT¼Æ¥Øªº¨M©w¡C³o¸Ì¦³¤@­Ó¦b³\¦h²Å¦¡¨t²Î¤¤ ³£¥i¨£¨ìªº¨Ò¤l¡G

      : S>D   ( n -- d )    \ sign extend s to d
         DUP 0<  IF  -1  ELSE  0  THEN ;

¡]³o­Ó©w¸q¬O¥Î¨Ó±N¤@­Ó³æªø«×ªº¼Æ­ÈÂàÅܦ¨Âùªø«×¡CÂùªø«×ªº¾ã¼Æ¬O¥H°ïÅ|¸Ìªº¨â­Ó ¤¸¯À¨Óªí¥Ü¡A°ª¦ì³¡¥÷¡]high-order part¡^¦b¤W¤è¡C­n±N¤@­Ó¥¿­Èªº³æ¾ã¼ÆÂàÅܦ¨ Âùªø«×¡A¯­­n¦b°ïÅ|¤W©ñ¤@­Ó¹s¡A¥Nªí¥¦ªº°ª¦ì³¡¥÷§Y¥i¡C¦ý¬OÂàÅܤ@­Ó­t¼Æ¬°Âùªø«× ¡A«h»Ý­n°µ"²Å¸¹©µ¦ù"¡G¤]´N¬O¡A°ª¦ì³¡¥÷¥²»Ý³£¬O1¡C¡^ ¤W­±ªº©w¸q·|¥ý´ú¸Õ³æªø«×¼Æ­È¬O§_¬°­t­È¡C¦pªG¬O¡A¥¦´N±N -1°ï¤J°ïÅ|¡F§_«h ´N°ï¤J¤@­Ó0¡C ¦ý¬Oª`·N¡A¥¦ªºµ²ªG¥u¬O¯Âºâ³Nªº¡A¨Ã¥½¯A¤Îµ{§Ç¤WªºÅܤơC§Ú­Ì¥i¥H§Q¥Î³o­Ó¯S ©Ê¡A±q¥¬ªL­È¥»¨­Àò±o¯q³B¡G

      : S>D   ( n -- d )    \ sign extend s to d
         DUP 0< ;

³o­Óª©¥»¤]¬O±N -1 ©Î 0 °ï¤J°ïÅ|¡A¦ý«o¤£¦b§PÂ_¤W®ö¶O¤@ÂI®É¶¡¡C ¡]¦b1983¦~¤§«eªº¨t²Î¡A©w¸q¥i¥H¬O¡G

      : S>D   ( n -- d )   \ sign extend s to d
         DUP 0<  NEGATIVE ;

°Ñ¬Ýªþ¿ýC¡^ §Ú­Ì¥i¥H§Q¥Î"½Æ¦X¼Æ­È"°µ§ó¦hªº¨Æ¡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
´£¥Ü ­Y­n¥H¼Æ­Èªºµ²ªG¨Ó¼vÅT§PÂ_¡A´N¨Ï¥Î AND¡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²£¥Í"0"©Î«D¹s­È"n"ªº§PÂ_¸Ì¡A¶Ç²Îªº¤ù»y

      ( ? )  IF  n  ELSE  0  THEN

µ¥©ó¤U­±¸û²³æªº±Ô­z

      ( ? )  n  AND

¤S¤@¦¸¡A³Z¬¬O¦b¡G "¯u"ºX¼Ð¦b1983¦~ªº²Å¦¡¨t²Î¸Ì¬O¥H -1 (¨C­Ó¦ì¤¸³£¬O1) ªí¥Ü¡C ±N"n"»P¤@­ÓºX¼Ð°µ AND¡A±N²£¥Í"n"¡]©Ò¦³ªº¦ì¤¸³£¤£¨ü¼vÅT¡^¡A©Î"0"¡]©Ò¦³ªº¦ì¤¸³£ ³Q²M°£¬°0¡^¡C ¥H¤@­Ó¨Ò¤l¨Ó¼á²M³o­ÓÆ[ÂI¡G

      ( ? )  IF  200  ELSE  0  THEN

¥¦»P¤U­Ó«ü¥O¬O¤@¼Ëªº

      ( ? )  200  AND

¬Ý¤@¬Ý³o­Ó¨Ò¤l¡G

      n  a b <  IF  45 +  THEN

§â"n¥[45"©ÎªÌ¤£¥[ªº¤ù»y¡A¬O¨Ìa©Mbªº¬Û¹ï¤j¤p©Ò¨M©wªº¡C¦]¬°¡u¥[45©Î¤£¥[¡v»P¡u¥[ 45©Î¥[¹s¡v¬O¤@¼Ëªº¡A¨âºØµ²ªGªº®t²§¬O¯Â¼Æ­Èªº¡C©Ò¥H§Ú­Ì¯à¤£°µ§PÂ_¡A¥u­pºâ¡G

      n  a b <  45  AND  +

¢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
Mooreªº»¡©ú¡G

¡y45 AND¡z¬O¤ñ IF §Ö¡A·íµM¤ñ¸û¦n¡C¤]¤ñ¸û²³æ¡C¦pªG§A¾i¦¨²ßºD¡A¹ï±q¤@­Ó ¼Æ¥Ø­pºâ±o¨ì¥t¤@­Ó¼Æ¥Ø®É¡A³£¥hª`·N¥¦¡C¨º»ò¡A³q±`§A³£¯à°÷¥H¹ïÅÞ¿è­È°µºâ³N ¹Bºâªº¤è¦¡¡A±o¨ì¬Û¦P¦Ó¤S¤ñ¸û²M·¡ªºµ²ªG¡C §Ú¤£ª¾¹D§A¥s¥¦¤°»ò¡C¥¦ÁÙ¨S¦³¦W¦r¡F³o¥u¬O¥H"ÅÞ¿è­È"¨Ó¶i¦æºâ³N¹Bºâ¡C¦ý¬O¥¦«D ±`¦³»ù­È¡A¦Ó¥BÁ`¦³¤@¤Ñ¡A¥¬ªL¥N¼Æ©Mºâ¼Æªººâ¦¡³£±N·|¥Î¨ì¥¦¡C ¦b¤@¨Ç®Ñ¤¤¡A§A¸g±`¥i¥H¬Ý¨ì«Ü¦h¤À¬q¦¡½u©ÊÅXªñªk¡]piece-wise linear approxi -mations¡^ªººâ¦¡¡A¥i¬O¥¦­Ì¦bªí¹F¤W³£¨Ã¤£«Ü²M´·¡C¤U­±¬O¨â­Ó¨Ò¤l¡G

      x = 0 for t < 0
      x = 1 for t ?0

³o¨â­Ó¦¡¤l»P¤U¤@­Ó¬Û¦P

      t  0<  1  AND

¥¦¥i¥H¥Î¤@¥y¸Ü´Nªí¥Ü²M·¡¡A¦Ó¤£¥²¨Ï¥Î¤À¬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

§ÚºÙ³o¨ÇºX¼Ð¬O"½Æ¦X¼Æ­È"¡A¦]¬°¥¦­Ì¬O¥¬ªL­È¡]¯u°²­È¡^¥H¸ê®Æ¡]¼Æ­È¡^ªº¤è¦¡³Q¨Ï¥Î µÛ¡C§Ú¤£ª¾¹DÁÙ¦³¤°»ò¨ä¥¦ªº¦W¦r¥i¥HºÙ©I¥¦¡C ¦pªG§Ú­Ì¯à±N¨âºØµ²ªG¤§¶¡ªº®t­È¤À¸Ñ¥X¨Ó¡A´N¥i¥H¬Ù²¤ ELSE ªº³¡¥÷¡C¨Ò¦p¡G

      : STEPPERS   'TESTING? @  IF  151 ELSE  150 THEN  LOAD ;

¥i¥H²¤Æ¬°

      : STEPPERS   150  'TESTING? @ 1 AND +  LOAD ;

³oºØ¤èªk¦b¦¹³B¤§©Ò¥H¥i¦æ¡A¬O¦]¬°§Ú­Ì¬O­n¸ü¤J²Ä150¾­¡A©ÎªÌ¡A·í¦b´ú¸Õªº®É­Ô¡A ¸ü¤J¥¦ªº¤U¤@¾­¡C


¨ú¥©¡]Tricks¡^¤Wªºª`·N

³oÃþ¤èªk³q±`³Q«a¤W"¨ú¥©"¤§¦W¡C¦b¤j«¬¹q¸£¤u·~¸Ì¡A"¨ú¥©"¦³­ÓÃa¦WÁn¡C ¨ú¥©¡A²³æªº»¡¡A´N¬O§Q¥Î¬Y¤@ºØ¹B§@¤Wªº¯S©Ê¡C¦b¤uµ{À³¥Î¸Ì¡A"¨ú¥©"¬O³Q¼s ¬°¨Ï¥Îªº¡CChimneys§Q¥Î¼ö¤É§N­°ªº¨Æ¹ê®ø°£¤F·ÏÃú¡C¨T¨®½ü­L§Q¥Î¤F­«¤O²£¥Íªº¿iÀ¿ ¡Cºâ¼ÆÅÞ¿è³æ¤¸¡]Arthmetic Logic Units¡^§Q¥Î"´î¤@­Ó¼Æ¥Ø«êµ¥©ó¥[¤W¥¦ªº2ªº¸É¼Æ" ªº³o­Ó¨Æ¹ê¨Ó°µ¹Bºâ¡C ³oºØ¨ú¥©¥i¥H¨Ï³]­pÅܪº§ó²³æ©M§ó¦³®Ä²v¡C¥u­n¥¦©Ò°²³]ªº«eÃD¤@ª½¬°¯u¡A¥¦´N ¯à°÷µo´§¥\¯à¡C ¦pªG¨ú¥©ªºµ²ªG¥²»Ý¨Ì¾a¨ä¥¦¸g±`Åܰʪº¨Æ¶µ¡A©ÎªÌ¥¦©Ò¨Ì¾aªº¨Æ¶µ¨S¦³³Q¸ê°TÁôÂà ªº°µªk©Ò«OÅ@¡A¨º»ò¡A¨Ï¥Î¨ú¥©´N·|Åܪº«Ü¦MÀI¡C ¨Ã¥B¡A·í¥¦©Ò®Ú¾Úªº°²³]¤£®e©ö³QÁA¸Ñ¡A©Î¨S¦³³Q¸ÑÄÀ²M·¡¡A«h³o¨Ç¨ú¥©·|Åܱo«ÜÃø ¾\Ū¡C¦b±N±ø¥ó¥H AND ¥N´«ªº¨Ò¤l¸Ì¡A¤@¦ý³oºØ§Þ¥©Åܦ¨¨C¤@­Óµ{¦¡³]­p®vµü¨åªº¤@³¡ ¥÷®É¡Aµ{¦¡½X±N·|Åܱo¤ñ¸û®e©ö¾\Ū¡C¦b¤@­Ó¯S©wÀ³¥Î¤¤ªº¤@­Ó¯S©wªº¨ú¥©¡A¨Ò¦p§Q¥Î¨ì ¸ê®Æ¦b¤@­Óªí¸Ìªº¶¶§ÇÃö«Y¡A¨º»ò¡A³o­Ó¨ú¥©©Ò¥Î¨ìªº°²³]¡A´N¥²»Ý³Q²M·¡¦a»¡©ú¦bµ{¦¡ ªº¤å¥ó¤¤¡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
´£¥Ü ¨Ï¥Î MIN ©M MAX ¨Ó§@µô°Å¡]clipping¡^¡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

°²³]§Ú­Ì­n»¼´îÅÜ¼Æ VALUE ªº¤º®e¡A¦ý¬O¤£­n¨Ï¥¦¤p©ó¹s¡G

      -1 VALUE +!  VALUE @ -1 = IF  0  VALUE ! THEN

¼g¦¨³o¼Ë·|§ó²³æ¡G

      VALUE  @ 1- 0 MAX  VALUE !

³o­Ó¨Ò¤l¸Ì¡A"±ø¥ó"³Q¤À¸Ñ¨ì¦r MAX ¸Ì¡C


¨Ï¥Î§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
´£¥Ü ¨Ï¥Î§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

§Ú­Ì¦b²Ä¤G³¹¤¶²Ð¹L¥¦¡C§PÂ_ªí¬O¤@ºØ¥]§t¸ê®Æ¡]¸ê®Æªí¡^©Î¥\¯à¦a§}¡]¥\¯àªí¡^ªºµ²ºc ¡A¨Ì¥ô·Nªº¦¸¤¸¨Ó¦w±Æ¡C¨C¤@¦¸¤¸¥Nªí°ÝÃDªº¤@­Ó¯S©w­±ªº©Ò¦³¥i¯àªº¡B¤¬¥¸ªºª¬ºA¡C¦b ¨C¤@¦¸¤¸¬°"¯u"ª¬ºAªº¥æ¶°³B¡A¦s©ñµÛ©Ò´Á±æªº¤¸¯À¡G¤@¶µ¸ê®Æ©Î¤@­Ó­n³Q°õ¦æªº¥\¯à¡C ·í°ÝÃD¦³¦h­Ó¦¸¤¸®É¡A§PÂ_ªí«Ü©úÅã¦a¬O¤@ºØ¤ñ±ø¥óµ²ºc§ó¦nªº¿ï¾Ü¡C
³æ¦¸¤¸ªº¸ê®Æªí¡]One Dimemsional Data Table¡^

³o¸Ì¬O¤@­Ó²³æªº³æ¦¸¤¸¸ê®Æªíªº¨Ò¤l¡C§Ú­ÌªºÀ³¥Î¸Ì¦³¤@­ÓºÙ¬° FREEWAY? ªººX¼Ð¡A ·í§Ú­Ì°Ñ¦Ò¨ìªº¬O§Ö³t¹D¸ô®É¡A¥¦´N¬O¯u¡C°Ñ¦Òªº­Y¬O¥«°Ï¹D¸ô®É¡A¥¦´N¬O°²¡C Åý§Ú­Ì©w¸q¥X SPEED-LIMIT ³o­Ó¦r¡A¥¦·|¨Ì¥Ø«eªºª¬ªp¡A°e¦^¹D¸ôªº³t«×­­¨î¡C¨Ï ¥Î IF THEN ¡A§Ú­Ì¯à¼g¥X¡G

      : SPEED-LIMIT   ( -- speed-limit )
         'FREEWAY? @ IF  55  ELSE  25  THEN ;

§Ú­Ì¥i¥H¨Ï¥Î¤@­Ó½Æ¦X¼Æ­È©M AND ¥H¬Ù²¤ IF THEN

      : SPEED-LIMIT   25  'FREEWAY? @ 30 AND  + ;

¦ý¬O³o­Ó¤èªk¨Ã¤£²Å¦X°ÝÃDªºÆ[©À¤Wªº¼Ò«¬¡A©Ò¥H¥¦¨Ã¤£®e©ö¾\Ū¡C Åý§Ú­Ì¸Õ¸Õ¸ê®Æªí¡C³o¬O¤@­Ó³æ¦¸¤¸ªºªí¡A¥u¦³¨â­Ó¤¸¯À¡A¨S¤°»òªF¦è¡G

      CREATE  LIMITS  25 ,  55 ,

¦r SPEED-LIMIT? ²{¦b¥²»Ý¨Ï¥Î¥¬ªL­È¨ÓÀò±oªí¤¤ªº¸ê®Æ¡G

    : SPEED-LIMIT   ( -- speed-limit )
       LIMITS  'FREEWAY? @ 2 AND  + @ ;

¤ñ°_ IF THEN ªº¤èªk¨Ó¡A§Ú­Ì¦³¨S¦³±o¨ì¥ô¦ó¦n³B¡H®£©È¨S¦³¡A¦]¬°³o­Ó°ÝÃD¤Ó²³æ¡C µM¦Ó¡A§Ú­Ì©Ò°µªº¬O¡F±q"¸ê®Æ¥»¨­"¤À¸Ñ¥X"§PÂ_ªºµ{§Ç"¡C·í§Ú­Ì¦³¤@²Õ¥H¤Wªº ¸ê®Æ»P¦P¤@­Ó§PÂ_¦³Ãö®É¡A³oºØ¤èªk´N·|Å㪺¸û¦³®Ä²v¡C°²³]§Ú­Ì¤]¦³

      CREATE #LANES  4 , 10 ,

¥Nªí¤@±ø¥«°Ï¹D¸ô©M¤@±ø§Ö³t¹D¸ôªº«Ñ¹D¼Æ¥Ø¡C§Ú­Ì¥i¥H¨Ï¥Î¬Û¦Pªºµ{¦¡½X¡A¨Ó­pºâ ¥Ø«e«Ñ¹Dªº¼Æ¥Ø¡G

      : #LANES?   ( -- #lanes )
         #LANES  'FREEWAY? @ 2 AND  + @ ;

¨Ï¥Î¤À¸Ñ¦]¤lªº§Þ³N¡A§Ú­Ì¯à±N¥¦Â²¤Æ¦¨¡G

      : ROAD   ( for-freeway  for-city -- )   CREATE  ,  ,
         DOES>   ( -- data )   'FREEWAY? @ 2 AND + @ ;
      55 25 ROAD SPEED-LIMIT
      10 4  ROAD #LANES?

"³æ¦¸¤¸¸ê®Æªí"ªº¥t¤@­Ó¨Ò¤l¬O"¶W¯Å¦r¦ê"¡]°Ñ¬ÝStarting FORTH ªº²Ä¤Q³¹¡^¡C


¤G¦¸¤¸¸ê®Æªí

²Ä¤G³¹¸Ì¡A§Ú­Ì¤¶²Ð¤F¤@­Ó¹q¸Ü¶O²vªº°ÝÃD¡C¹Ï8-4¬O³o­Ó°ÝÃDªº¤@ºØ¸Ñ¨M¤èªk¡A ¥¦¨Ï¥Î¤F¤G¦¸¤¸ªº¸ê®Æµ²ºc¡C ¦b³o­Ó°ÝÃD¸Ì¡A¸ê®Æªíªº¨C¤@¦¸¤¸³£¬O¥Ñ¤T­Ó¤¬¥¸ªºª¬ºA©Ò²Õ¦¨¡C©Ò¥H¡A¤@­Ó²³æªº ¥¬ªL­È¡]¯u¡þ°²¡^¨Ã¤£¦X¾A¡C³o­Ó°ÝÃDªº¨C¤@¦¸¤¸³£¥H¤£¦Pªº¤èªk¨Ó¹ê²{¡C ¨Ì¤@¤Ñ¤¤ªº®É¬q©Ò¨M©wªº¶O²vªí¡A³Q·í¦¨¬O¤@­Ó¦a§}¦ÓÀx¦sµÛ¡A¥Nªí¤TºØ¶O²vµ² ºc°Æªí¤¤ªº¤@­Ó¡C§Ú­Ì¥i¥H»¡

      FULL RATE !

©Î

      LOWER RATE !

µ¥µ¥¡C

  ¹Ï8-4.  ¹q¸Ü¶O²v°ÝÃDªº¤@­Ó¸Ñ¨M¤èªk
      \ ~FBBB1;¹q¸Ü¶O²v
      CREATE FULL    30 , 20 , 12 ,
      CREATE LOWER   22 , 15 , 10 ,
      CREATE LOWEST  12 ,  9 ,  6 ,
      VARIABLE RATE    \ ~FBBB1;¨Ì¤@¤Ñ¸Ìªº®É¬q¦Ó«ü¦b FULL¡BLOWER ~FBBB1;©Î~I; LOWEST
      FULL RATE !      \ ~FBBB1;¤@­Ó¨Ò¤l
      : CHARGE   ( 0 -- )   CREATE  ,
         DOES>   ( -- rate )   @  RATE @ +  @ ;
      0 CHARGE 1MINUTE  \ ~FBBB1;²Ä¤@¤ÀÄÁªº¦¬¶O
      2 CHARGE +MINUTE  \ ~FBBB1;«áÄò¨C¤ÀÄÁªº¶O²v
      4 CHARGE /MILES   \ ~FBBB1;¨C¤ÀÄÁ¨C¦Ê­ùªº¶O²v

      VARIABLE OPERATOR?   \ ~FBBB1;¦pªG¸g¥Ñ±µ½u¥Í¨ó§U, ¥¦ªº­È¬O90 ; ~FBBB1;§_«h¬O0
      VARIABLE #MILES      \ ~FBBB1;³q¸Ü¶ZÂ÷ªº¦Ê­ù¼Æ~I;
      : ?ASSISTANCE    ( ~FBBB1;²Ä¤@¤ÀÄÁªº³s½u¶O¥Î -- ¥[¤W±µ½u¥Íªº¶O¥Î~I; )
         OPERATOR? @ + ;
      : MILEAGE   ( -- charge )   #MILES @  /MILES * ;
      : FIRST   ( -- charge )   1MINITE  ?ASSISTANCE  MILEAGE + ;
      : ADDITIONAL   ( -- charge )   +MINUTES  MILEAGE + ;
      : TOTAL   ( #minutes -- total charge )   1-  ADDITIONAL *  FIRST + ;

¥Ø«eªº¦¬¶O¡A¤£½×¬O²Ä¤@¤ÀÄÁ¡B¥H«áªº¨C¤@¤ÀÄÁ¡B©Î¨C­^­ù¡A¦bªí¤º³£¬O¥H¤@­Ó¦ì²¾­È¨Óªí¥Ü¡]0, 2, ©Î 4¡^¡C
³Ì¨Î¤Æ­nª`·Nªº¦a¤è¡G§Ú­Ì¥H¤T­Ó³æ¦¸¤¸ªí¨Ó¹ê²{¤@­Ó¤G¦¸¤¸ªí¡A¨C­Ó³æ¦¸¤¸ªí³£¸g¥Ñ RATE ©Ò«ü¥X¡C³oºØ¤èªk¬Ù²¤¤F¤Gºûµ²ºc©Ò¥²»Ý°õ¦æªº­¼ªk¡C¦b¬Y¨Çª¬ªp¤U¡A­¼ªk¥i¯à·|¤ñ¸ûºC¡C

¡@

¤Gºû§PÂ_ªí

Åý§Ú­Ì¦^¨ì²Ä¤T³¹ªº¤p¤p½s¿è¾¹¡A¥H¥¦¬°¨Ò¤l¨Ó»¡©ú¤Gºû§PÂ_ªíªº¨Ï¥Î¡C

  ¹Ï8-5  ¤p¤p½s¿è¾¹ªºÀ³¥Î
      \ ~FBBB1;¤p¤p½s¿è¾¹
      2 CONSTANT  NORMAL   \ offset in FUNCTIONS
      4 CONSTANT  INSERTING  \   "
      6 CONSTANT  /KEY       \ byte in table for each key
      VARIABLE MODE#         \ current offset into table
      NORMAL MODE# !
      : INSERT-OFF   NORMAL MODE# ! ;
      : INSERT-ON   INSERTING MODE# ! ;
      VARIABLE ESCAPE?      \ t=time-to-leave-loop
      : ESCAPE   TRUE ESCAPE? ! ;

      \ ~FBBB1;«Ø³y¥\¯àªí~I;
      : IS    '  , ;         \  function ( -- )  ( for '83 standard )
      CREATE FUNCTIONS
      \ keys               normal mode             insert mode
       4 ,  ( ctl-D )      IS DELETE               IS INSERT-OFF
       9 ,  ( ctl-I )      IS INSERT-ON            IS INSERT-OFF
       8 ,  ( backspace)   IS BACKWARD             IS INSERT<
      60 , ( left arrow)   IS BACKWARD             IS INSERT-OFF
      62 , ( right arrow)  IS FORWARD              IS INSERT-OFF
      27 , ( return )      IS ESCAPE               IS INSERT-OFF
       0 , ( no match )    IS OVERWRITE            IS INSERT
      HERE /KEY  -  CONSTANT 'NOMATCH      \ adr of no-match key

      VARIABLE MATCHED
      : 'FUNCTION   ( key -- adr-of-match )   'NOMATCH  MATCHED !
         'NOMATCH FUNCTIONS DO  DUP I @ = IF
           I MATCHED ! LEAVE  THEN  /KEY +LOOP  DROP
         MATCHED @ ;
      : ACTION   ( key -- )   'FUNCTION  MODE# @ +  @ EXECUTE ;
      : GO   FALSE ESCAPE? !  BEGIN  KEY ACTION  ESCAPE? @ UNTIL ;

¹Ï8-5¸Ì¡A§Ú­Ìºc«Ø¤F¤@­Óªí¡A¥¦Àx¦sµÛÁä³Q«ö¤U®É©Ò­n°õ¦æªº¥\¯à¡C¥¦ªº®ÄªG»P"ª¬ªp±Ô­z"¬Û¦ü¡A¤£¦Pªº¬O¥¦¦³¨âºØ¼Ò¦¡¡A¥¿±`¼Ò¦¡©M´¡¤J¼Ò¦¡¡C¨C­ÓÁä¨Ì¥Ø«e©Ò¦bªº¼Ò¦¡¡A¦³µÛ¤£¦Pªº¦æ¬°¡C
­º¥ý­n¹ê²{ªº¬O§ïÅܼҦ¡ªº³¡¥÷¡C¦pªG©I¥s

      NORMAL MODE# !

´N¶i¤J"¥¿±`¼Ò¦¡"¤¤¡C

      INSERTING MODE# !

´N¶i¤J"´¡¤J¼Ò¦¡"¡C
±µ¤U¨Ó¬O«Ø³y FUNCTIONS ªº¥\¯àªí¡C¦¹ªí¬O¥Ñ«öÁ䪺ASCII­È¡B¸òµÛ¥¿±`¼Ò¦¡ªºÁä¥\¯àªº¦a§}¡B¦A¸òµÛ´¡¤J¼Ò¦¡Áä¥\¯àªº¦a§}©Ò²Õ¦¨¡CµM«á¬O²Ä¤G­ÓÁä¤Î¤U¤@¹ï¥\¯àªº¦a§}¡A...¨Ì¦¹Ãþ±À¡C
¦b³Ì«á¡A¦r¡y'FUNCTION¡z¨ú±o¤@­Ó«öÁä¡A¨Ã·j´M FUNCTIONS ªí¤¤¬Û¦Xªº­È¡AµM«á¶Ç¦^¨º­Ó¤¸¯Àªº¦a§}¡]§Ú­Ì¥ý¹w³]ÅÜ¼Æ MATCHED «üµÛªíªº³Ì«á¤@¦C¡A¤]´N¬O·í¥ô¦ó¨ä¥¦Áä³Q«ö¤U®É¡A©Ò­n°õ¦æªº¥\¯à¡C¡^
¦r¡yACTION¡z©I¥s¡y'FUNCTION¡z¡AµM«á¥[¤WÅÜ¼Æ MODE# ªº¤º®e¡C¦]¬° MODE# ¦s©ñµÛ0, 2©Î 4¡A¥[¤W³o­Ó°¾²¾­È¡A´N¯à¨Ï§Ú­Ì«üµÛªí¤¤©Ò­n°õ¦æªº±`¦¡ªº¦a§}¡C¦³¤F³o­Ó¦a§}¤§«á¡A¤@­Ó²³æªº±Ô­z

      @ EXECUTE

´N¯à°õ¦æ³o­Ó±`¦¡¡C
¦bFIG²Å¦¡¸Ì¡A¡yIS¡zªº©w¸q­n§ï¬°¡G

      : IS   [COMPILE] ' CFA , ;

¦b79¼Ð·Çªº²Å¦¡¸Ì¡A«h©w¸q¬°¡G

      : IS   [COMPILE] ' , ;

§Ú­Ì¦b¥\¯àªí©³³¡ªº¨º­Ó©w¸q¸Ì¡A¤]¨Ï¥Î¤F"½sĶ®É°Ï¤¤ªº«D­«½Æ©Ê"ªº­ì«h¡G

      HERE /KEY - CONSTANT 'NOMATCH   \ adr of no-match key

´N¦b¨º¥\¯àªíªº³Ì«á¤@¦æ¡A§Ú­Ì»s§@¤F¤@­Ó±`¼Æ¡C¡]·í§Ú­Ì¥s¥Î HERE ªº®É¨è¡A¥¦«üµÛªí¤¤¤U¤@­Ó¥i¥ÎªºÀx¦s¦a§}¡C¦b6­Ó¦r¤¸¤§«e¡A¤]´N¬O³Ì«á¤@¦æªº°_©l³B¡C¡^²{¦b¡A§Ú­Ì¦³¨â­Ó¦r¡G

      FUNCTIONS  ( adr of beginning of function table )
      'NOMATCH   ( adr of "no-match" row; these are the routines for
                   any key not in the table )

§Ú­Ì¥Î³o¨Ç¦W¦r¨Ó´£¨Ñ¶Ç°eµ¹ DO ªº¦a§}¡G

      'NOMATCH FUNCTION  DO

¥H³]©w¤@­Ó°j¸ô¡A±qªí®æ¤¤ªº²Ä¤@¦æ°µ¨ì³Ì«á¤@¦æ¡C§Ú­Ì¤£¥²ª¾¹Dªí¤¤¦³¦h¤Ö¦æ¡C§Ú­Ì¬Æ¦Ü¥i¥H¨ú®ø©Î¼W¥[¤@¦æ¡A¦Ó¤£¥²§ïÅÜ¥ô¦óµ{¦¡½X¡A§Y¨Ï¬O¥Î¨Ó·j´M³o­Óªíªº½X¤]¤£¥²§ïÅÜ¡C
±`¼Æ¡y/KEY¡z¤]¦³Ãþ¦üªº¥\¯à¡A¥¦±N¨CÄæ¦ì©Ò¦û¦³ªº¦r¤¸¼Æªº¸ê°TÁôÂæbªí¸Ì¡C
¤£©¯ªº¬O¡A¡y'FUNTION¡z¦bªí¤¤¨ú±o¸ê®Æªº¤èªk¬O­Ó¤£¤Ó¦nªº³]­p¡G¥¦¥Î¤F¤@­Ó¥»¦aÅܼƥH²¤Æ¹ï°ïÅ|ªº±±¨î¡C¤@ºØÂ²³æ¤S¤£¥²¨Ï¥Î¥»¦aÅܼƪº¸Ñ¨M¤èªk¬O¡G

      : 'FUNCTION   ( key -- adr-of-match )
          'NOMATCH  SWAP  'NOMATCH  FUNCTIONS  DO  DUP
             I @ = IF SWAP DROP I SWAP LEAVE THEN
          /KEY +LOOP  DROP ;

¡]¦b¥»³¹µy«áªº"¨Ï¥Îµ²ºc¤Æªº¥X¤f"³¡¥÷¡A§Ú­Ì±N´£¨Ñ¥t¤@ºØ¸Ñ¨M¿ìªk¡C¡^
¬°¤F¼W¥[³t«×ªº§PÂ_ªí

§Ú­Ì­è¤~»¡¹L¡A¦pªG§A¯à­pºâ¥Xµª®×¡A¦Ó¤£¥Î¨ìªí¸Ì¥h´M§ä¥¦¡A§A´N¸Ó³o¼Ë°µ¡C¤@­Ó ¨Ò¥~¬O¡A·í°õ¦æ³t«×ªº­n¨D¤ñ°_¦]¬°¨Ï¥Îªí®æ¦Ó¤Þ¶iªº½ÆÂø©Ê§ó¬°­«­nªº®É­Ô¡C ³o¸Ì¬O¤@­Ó­pºâ2ªº¦¸¤èªº¨Ò¤l¡C

      CREATE TWOS
         1 C,  2 C,  4 C,  8 C,  16 C,  32 C,
      : 2**   ( n -- 2-to-the-n )   TWOS +  C@ ;

§Ú­Ì¤£¥²¥H2­¼¦Û¤v"n"¦¸¨Ó­pºâµª®×¡Aµª®×³£¨Æ¥ý³Q­pºâ¦n¡A¨Ã¦s¦bªí¸Ì¡C§Ú­Ì¥i¥H ¥Î²³æªº¥[ªk±o¨ìªí¤¤ªº¦a§}¡A¥H¨ú±oµª®×¡C ¤@¯ë»¡¨Ó¡A¥[ªk¤ñ­¼ªk§Ö«Ü¦h¡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
Moore´£¨Ñªº¥t¤@­Ó¨Ò¤l¡G

¦pªG§A­n­pºâ¤@­Ó¤T¨¤¨ç¼Æ¡A¹³¬O¬°¤F¹Ï§ÎªºÅã¥Ü¡A§A¤£»Ý­n¤Ó¦nªº¸Ñ¹³«×¡C¤@­Ó 7¦ì¤¸ªº¤T¨¤¨ç¼Æ¤]³\´N¨¬°÷¤F¡C´M§ä¤@­Ó¦³128­Ó¦¨­ûªºªí¡A·|¤ñ§A©Ò¯à·Q¨ìªº¥ô¦ó ¨ä¥L¤èªk³£­n§Ö¡C¹ï©ó§CÀW²vªº¥\¯à¨ç¼Æªº­pºâ¨Ó»¡¡A§PÂ_ªí«D±`¦n¥Î¡C ¦ý¬O¦pªG§A¥²»Ý¨D±o¤¤¶¡¶µ¡]interpolate¡^¡A§A²×¨s¬O­n­pºâ¤@­Ó¨ç¼Æªº¡C¤]³\ ³Ì¦nÁÙ¬O¥h­pºâ¥X¤@­Ó¥\¯àµy·L½ÆÂø¨Çªº¨ç¼Æ¡A¨Ã¥BÁ×§K¨Ï¥Î¬dªíªº¤è¦¡¡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
¡@

­«·s³]­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
´£¥Ü ¤@­Ó©³¼hªº§ïÅÜ¡A¥i¥H¸`¬Ù¤Q­Ó³»¼hªº§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

¦b¥»³¹¶}©l®É¹ïMoore©Ò°µªº³X°Ý¤¤¡A¥L´£¨ì¡A¦pªG¸g¥Ñ­«·s³]­p¡A¥Î¨â­Ó¦r¨Ó¨ú¥N¤@ ­Ó¦r¡A¨º»ò¤@­ÓÀ³¥Îµ{¦¡¤¤¤j³¡¥÷ªº±ø¥ó´ú¸Õ¡A´N¥i¥H³Q¬Ù²¤¡F¡u§A¥i¥H»¡ GO ©ÎªÌ»¡ PRETEND¡v¡C §ïÅܧAªºÀô¹Òªº«e«áÃö«Y¡A¥H«K°õ¦æ¤@­Ó²³æ¦Ó¤@­Pªººtºâªk¡A­n¤ñ«O«ùÀô¹Ò©T©w ¤£ÅÜ¡A¦Ó±q´X­Óºtºâªk¤§¤¤°µ¿ï¾Ü­n²³æªº¦h¡C ½Ð¦^¾Ð²Ä¤@³¹¤¤Ä«ªGªº¨Ò¤l¡C¥¦³Ìªì³Q©w¸q¬°ÅܼơF¦b¾ã­ÓÀ³¥Î¤¤¥¦³Q°Ñ¦Ò¨ì«Ü¦h ¦¸¡A¨Ò¦p¨ÏÄ«ªGªº¼Æ¥Ø¼W¥[¡]°e³f¨®¨Ó®É¡^¡A¨Ï¼Æ¥Ø´î¤Ö¡]Ä«ªG½æ±¼®É¡^¡A¤ÎÀˬd¥Ø«eªº ¼Æ¶q¡]°µ®w¦s±±¨î®É¡^¡C ·í¥²»Ý¥[¤W³B²z²Ä¤GºØÄ«ªG®É¡A¨Ï¥Î¿ù»~ªº¤èªk±N·|¼W¥[©Ò¦³¹B¿é¡þ¾P°â¡þ®w¦s¥Î¦r ªº½ÆÂø«×¡C¥¿½Tªº¤èªk´N¬O§Ú­Ì¨Ï¥Îªº¨ººØ¡G"¦b³Ì©³³¡"¼W¥[½ÆÂø«×¡F¤]´N¬OÄ«ªG¥»¨­¡C ³o­Ó²z½×¥i¥H¦³«Ü¦h¤èªk¨Ó¹ê²{¡C¦b²Ä¤C³¹¡]"ª¬ºAªí"¤@¸`¡^¡A§Ú­Ì¸g¥Ñª¬ºAªí¨Ó°õ ¦æ¦r WORKING ©M PRETENDING¡A¥¦­Ì§ïÅܤ@²ÕÅܼƪº·N¸q¡C¥»³¹µy«á¡A§Ú­Ì±N¥H¦V¶q¦¡ªº °õ¦æ¤è¦¡¨Ó©w¸q VISIBLE ©M INVISIBLE¡A¥H§ïÅÜ¡yTYPE'¡z¡A¡yEMIT'¡z¡A¡ySPACES'¡z©M ¡yCR'¡zªº·N¸q¡A¨äµ²ªG¬O©Ò¦³¨Ï¥Î¨ì¥¦­Ìªºµ{¦¡½X¡A³£¯à«Ü®e©ö¦a³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
´£¥Ü ¤£­n´ú¸Õ¨º¨Ç¤£¥i¯àµo¥Íªº¨Æ¡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

³\¦h²{¥Nªºµ{¦¡³]­p®v³£¬O"¿ù»~Àˬd"(error-checking)ªº¤WÅ}ªÌ¡C ¤£»Ý­n¦b¤@­Ó¥\¯à¤¤¡AÀˬd±q¨t²Î¸Ì¥t¥~¤@­Ó¤¸¥ó©Ò¶Ç°e¹L¨Óªº¤Þ¼Æ¡C"©I¥sµ{¦¡"¦³ ³d¥ô¤£Åý"³Q¥s¥Îªº¤¸¥ó"¶W¸ü¡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
´£¥Ü ­«·sÀ˰Qºtºâªk¡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
Mooreªº¸ÑÄÀ¡G

¦³«Ü¦h±ø¥ó¬O¦]¬°¹ï°ÝÃDªº©Ç²§·Qªk©Ò²£¥Íªº¡C¦b¦øªA±±¨îªº²z½×¸Ì¡A«Ü¦h¤H»{¬° ¡A"¦øªAºtºâªk"¦b¶ZÂ÷¸û»·®É¡AÀ³¸Ó»P±µªñ®É¦³©Ò¤£¦P¡C¦b«Ü»·®É¡A§A¬O¦b°jÂà¼Ò¦¡ ¸Ì¡F±µªñ¥Ø¼Ð®É¡A§A¬O¦b´î³t¼Ò¦¡¡F«D±`±µªñ®É¡A§A«o¬O¦bÂy¨ú¡]hunt¡^¼Ò¦¡¡C§A ¥²»Ý´ú¸Õ§A¦³¦h»·¡A¥H«K§ä¨ì¥¿½Tªººtºâªk¨Ó¹B¥Î¡C §Úµo®i¥X¤@ºØ«D½u©Êªº¦øªA±±¨îºtºâªk¡A¥i¥H°µ¥þ¶ZÂ÷ªº±±¨î¡C³oºØ¤èªk®ø°£¤F±q ¤@ºØ¼Ò¦¡¨ì¥t¤@ºØ¼Ò¦¡ªºÂà´«ªÅ»Ø¡C¥¦¬Ù²¤¤F­ì¥ý¬°¤F´úª¾¨Ï¥Î¦óºØºtºâªk©Ò¥²»Ý °µªº§PÂ_¡C¥¦¤]®ø°£¤F§A¥²»Ý¹ïÂà´«ÂI©Ò°µªº§PÂ_¡C·íµM¡A§A¦]¦¹¦³¤@­Ó²³æ¦h¤F ªºµ{¦¡¡A¥¦¥u¥Î¤@ºØºtºâªk¡A¦Ó¤£¬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

¢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
´£¥Ü Á×§K¹ï¯S®í³B²zªº»Ý¨D¡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¥»®Ñµy«e´£¨ìªº¨Ò¤l¡G¦pªG§A¯àÅý¨Ï¥ÎªÌ¨S¦³³Â·Ð¡A§A´N¤£¥²¤@ª½¬d¬Ý ¨Ï¥ÎªÌ¬O§_¦³³Â·Ð¡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
Moore¸ÑÄÀ¡G

¼g²Õ;¹¬O¥t¤@­Ó¦n¨Ò¤l¡C¸g±`¡A¤@­Ó¾Þ§@½X¡]opcode¡^¥i¯à¨S¦³©M¥¦¬ÛÃöªº¼È¦s¾¹ ¡C¦ý¬O¦pªG°²³]¥¦¦³¤@­Ó¼È¦s¾¹¡A¹³¬O¼È¦s¾¹0¡Aµ{¦¡½X´N¥i¥H³Q²¤Æ¡C¦bºâ³N¹B ºâ¸Ì¡A¤Þ¶i­ì¥»¤£»Ý¦s¦bªº¦ì¤¸¹Ï¼Ë¡A¥i¥H²¤Æ¸Ñ¨Mªº¤èªk¡C§A¥i¥Hª½±µ¥Î0¨Ó´À ´«¡A¦ÓÄ~Äò°µ³o­Óºâ³N¹Bºâ¡A¥H¥N´À§A­ì¨Ó©Ò­n°µªº --´ú¸Õ0ªº±¡ªp¥H¨M©w¬O§_­n ¸õ¹L³o­Ó¹Bºâ¡C ³o¬O¥t¤@­Ó"©¿²¤¤£­p"ªº¨Ò¤l¡C¦pªG§A¯uªº¤£¦b¥G¡A¨º»ò´NÀH«Kµ¹¥¦¤@­Óµê­È¡AµL½× ¦p¦ó¡A¥Î¥¦´N¬O¤F¡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¹J¨ì¤@­Ó¯S®íª¬ªp®É¡A¸ÕµÛ§ä¥X¤@­Ó¯à±N¯S®íª¬ªpÅܦ¨¤@¯ëª¬ªpªººtºâªk¡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
´£¥Ü ¨Ï¥Î¤¸¥óªº©Ê½è¡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¨}¦nªº¤¸¥ó¡A¤£½×¬OµwÅé©Î³nÅé¡A¥i¥HÅý§A¥H¤@ºØ²M´·¦Ó¤S¦³®Ä²vªº¤è¦¡°õ ¦æ¤@­Óµü¶°¡C¦Ñ¦¡ªºEpson MX-80¦Lªí¾÷¡]²{¦b¤w¸g¼o°£¤F¡^¸Ìªº¦r§Î²Õ±N³oºØÆ[ÂI¸à ÄÀªº«Ü¦n¡C¹Ï8-6Åã¥Üªº¬OASCII½X±q160¨ì223ªº¹Ï§Î¦r¤¸¡C

  ¹Ï8-6  Epson MX-80ªº¹Ï§Î¦r²Õ

¨C¤@­Ó¹Ï§Î¦r¤¸¥Ñ¤»­Ó¤p¤è®æ©Ò²Õ¦¨¡A¥¦¥i¥H¬O¶î¶Â©Î¯d¥Õ¡C°²³]¦b§Ú­ÌªºÀ³¥Î¸Ì¡A§Ú­Ì ­n¨Ï¥Î³o¨Ç¹Ï§Î¨Ó»s§@¤@­Ó³]­p¡C¹ï©ó¨C¤@­Ó¹Ï§Î¡A§Ú­Ì«Ü²M·¡³o¤»­Ó¦ì¸mªº¨C¤@­Ó¬O ¤°»ò --²{¦b¡A§Ú­Ì¥²»Ý¬°¦Lªí¾÷²£¥Í¬Û¹ïÀ³ªºASCII½X¡C ¥u­nµy¬°¬Ý¤@¤U¡A§A´Nª¾¹D³o¬O¤@­Ó«D±`²z©Êªº¹Ï®×¡C°²³]§Ú­Ì¦³¤@­Ó6¦r¤¸¼eªºªí ¡A¨ä¤¤¨C¤@­Ó¦r¤¸¥NªíµÛ¹Ï§Î¸Ìªº¤@­Ó¹Ï¯À¡G

           ¢z¢w¢w¢s¢w¢w¢{
      ¹Ï¯À ¢x 0  ¢x 1  ¢x
           ¢u¢w¢w¢q¢w¢w¢t
           ¢x 2  ¢x 3  ¢x
           ¢u¢w¢w¢q¢w¢w¢t
           ¢x 4  ¢x 5  ¢x
           ¢|¢w¢w¢r¢w¢w¢}

¨Ã¥B°²³]¡A¦pªG¹Ï¯À"on"¡A«h¸Ó¦r¤¸­È¬O FF¡A"off"«h¬°0¡C²{¦b§A¥i¥H¬Ý¤@¤U¡A­pºâ ³o¨Ç¹Ï§Î½Xªºµ{¦¡¦³¦h»ò¤p¡G

      CREATE PIXELS  6 ALLOT
      : PIXEL   ( i -- a )   PIXELS + ;
      : CHARACTER   ( -- graphics_character )
         160  6 0  DO  I PIXEL C@  I 2** AND + LOOP ;

(µy«á§Ú­Ì·|¤¶²Ð 2** ) ¦b CHARACTER ªº©w¸q¸Ì¨Ã¨S¦³§PÂ_¡C¹Ï§Î½X¬O¥Ñ²³æªº­pºâ©Ò±o¨ìªº¡C ª`·N¡G¦pªG­n¨Ï¥Î¦P¤@­Óºtºâªk¡A¨ÓÂà´«¤@²Õ¸û¤j¹Ï®æ¡]large grid¡^¸Ì¬Û¾Fªº¤» ­Ó¹Ï¯À®É¡A¥u­n­«·s©w¸q PIXEL §Y¥i¡C³o¬O¤@­Ó¥[¤W¤Ï¦V¶¡±µ¡]adding indirection backwards¡^ªº¨Ò¤l¡A¨Ã¥B¤]¬O¤@­Ó¨}¦n¤À¸Ñªº¨Ò¤l¡C ¤£©¯ªº¬O¡A³o¨Ç"¥~³¡¤¸¥ó"¨Ã¤£¥þ³£¬O³Q³]­pªº«Ü¦nªº¡C¨Ò¦p¡AIBMªº­Ó¤H¹q¸£¦b¥¦ ªºµøÀWÅã¥Ü¤¤¡A¨Ï¥Î¤F¤@­Ó¬ÛÃþ¦üªº³]­p¨Ó°µ¥X¹Ï§Î¦r¤¸¡A¦ý¬O¥¦¦bASCII¼Æ­È©M¹Ï¯À¤§ ¶¡¡A¨Ã¨S¦³©úÅ㪺¹ïÀ³Ãö«Y¡C°ß¤@²£¥ÍASCII¼Æ­Èªº¤èªk¡A´N¯­¦³¨Ï¥Î¬dªíªº¤è¦¡¡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
Mooreªº»¡©ú¡G

¦pªG§A·Q´M§äªº¬O¤@ºØ¨Ï¥Î³Ì¤Öªº¹Bºâ¤l¨Óªí¥Ü¾Þ§@½X¡]op-codes¡^ªº¦n¤èªk¡A 68000²Õ;¹·|¬O¥t¤@­Ó¥O¤H¤ß¸Hªº¨Ò¤l¡C±q©Ò¦³ªº¸ñ¹³¬Ý¨Ó¡A¹ê¦b¨S¦³¤@ºØ¦nªº ¸Ñ¨M¿ìªk¡C³]­p68000ªº¤H¡AÅãµM¨S¦³§â²Õ;¹©ñ¦b¤ß¤W¡C¥L­Ì¨ä¹ê¥i¥H§â¨Æ±¡§Ë ªºÂ²³æ¨Ç¡A¦Ó¤£¥²¥I¥X¤°»ò¥N»ù¡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

¥H³oºØ¤è¦¡¨Ó¨Ï¥Î¤@­Ó¤¸¥óªº©Ê½è¡A§Aªºµ{¦¡½X´N·|Åܦ¨¨Ì¿à³o¨Ç©Ê½è¡A¦]¦Ó¤]·|¨Ì¿à ¤¸¥ó¥»¨­¡C³o¬O¥i±µ¨üªº¡A¦]¬°©Ò¦³¨Ì¿à©Êªºµ{¦¡½X³£³Q­­¨î¦b³o¤@­Óµü¶°¤¤¡A¦pªG¦³ ¥²­n¡A¥¦­Ì¤]¯à«Ü®e©ö¦a³Q­×§ï¡C
¨Ï¥Îµ²ºc¤Æªº¥X¤f¡]Using Structured Exits¡^

¢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
´£¥Ü ¨Ï¥Îµ²ºc¤Æªº¥X¤f¡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¤À¸Ñ¦]¤l¤@³¹¤¤¡A§Ú­Ì»¡©ú¤F¨Ï¥Î³oºØ§Þ¥©±N±±¨îµ²ºc¤À¸Ñ¥X¨Óªº¥i¯à©Ê¡G

      : CONDITIONALLY   A B OR  C AND  IF  NOT R> DROP  THEN ;
      : ACTIVE   CONDITIONALLY  TUMBLE  JUGGLE  JUMP ;
      : LAZY   CONDITIONALLY  SIT  EAT  SLEEP ;

²Å¦¡Åý§Ú­Ì¯à°÷ª½±µ¾ÞÁaªð¦^°ïÅ|¡A¥H§ïÅܱ±¨î¬yµ{¡C¡]¦pªG§AÃhºÃ¡A½Ð°Ñ¾\¡qStarting FORTH¡r²Ä¤E³¹¡C¡^¯ó²vªº¨Ï¥Î³oºØ§Þ¥©¡A·|³y¦¨µ{¦¡½Xªº«Dµ²ºc¤Æ¡C¦ý¬O¡A¦pªG¯àÄYÂÔ ªº¨Ï¥Îµ²ºc¤Æ¥X¤f¡A«o¥i¥H¹ê½èªºÂ²¤Æµ{¦¡½X¡A¨Ã§ïµ½µ{¦¡ªº¥iŪ©Ê©M¥iºûÅ@©Ê¡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
Moore»¡¡G

§Ú¶V¨Ó¶V³ßÅw¨Ï¥Î¡yR> DROP¡z¨Ó§ïÅܱ±¨îªº¬yµ{¡C¥¦»P¡yABORT"¡z¡]©ñ±ó¡^ªº®ÄªG Ãþ¦ü¡A¦Ó«áªÌ«o¦³¤@­Ó¡yIF THEN¡z¦b¸Ì­±¡CÁöµM¦p¦¹¡A¾ã­Ó¨t²Î¤¤´N¯­¦³³o¤@­Ó ¡yIF THEN¡z¡A¨Ã¤£¬O¨C­Ó¿ù»~³B²z¤¤³£¥X²{¡C §Ú©Î³\­n¡y©ñ±ó¡z¡A©Î³\¤£©ñ±ó¡C¦pªG§Ú¤£©ñ±ó¡A§Ú´NÄ~Äò¤U¥h¡C¦pªG§Ú©ñ±ó¡A´N¤£ ¥²­nÁÙªuµÛ©Ò¦³ªº¸ô½u¨«¤@¹M¡C§Ú·|¥t¨«¤@±ø±¶®|¡C ¥t¤@­Ó¤èªk¬O¡AÅýµ{¦¡¤¤¨ä¥¦ªº½X¨Ó­t³dÀˬd¿ù»~¬O§_´¿¸gµo¥Í¹L¡C¦ý³o¼Ë¬O«Ü¤£¤è «Kªº¡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

¦b¯S®íª¬ªp¤U¡A"©ñ±ó¸ô®|¡]abort route¡^"ªº¨Ï¥Î¡A­n¤ñ¥¿±`ªº±±¨î¬yµ{ªº¤ÏÀ³­n¦n¨Ç ¡C¡yABORT"¡z©M¡yQUIT¡z´£¨Ñ¤F³oºØ¥\¯à¡C "µ²ºc¤Æ¥X¤f"ÂX¥R¤F³o­ÓÆ[©À¡A¤¹³\¥ß§Y°±¤î¥Ø«eªº¦rªº°õ¦æ¡A¦Ó¤£¥²Â÷¶}¾ã­Ó À³¥Îµ{¦¡¡C ¤£­n±N³o­Ó§Þ¥©»P GOTO ²V²c¡AGOTO ¬O«D±`¨S¦³µ²ºc©Êªº¡C§A¥i¥H¥Î GOTO ¸õ¨ì ¥ô¦ó¦ì¸m¡A¤£½×¬O¼Ò²Õ¤§¤º©Î¤§¥~¡C¦Ó¨Ï¥Î¦¹³Bªº§Þ¥©¡A§A¥u¯à¸õ¨ì¼Ò²Õªº©T©w¥X¤f ¡]¤À¸¹³B¡^¡A¨ÃÄ~Äò°õ¦æ©I¥s¥¦ªº¦r¡C ¦r¡yEXIT¡z·|¥ß§Y¤¤¤î¥¦©Ò¦bªº¨º­Ó¦rªº°õ¦æ¡C¤ù»y¡yR> DROP¡z·|¨Ï¥¦©Ò¦bªº¨º­Ó ¦r°õ¦æ§¹²¦«á¡A¤¤¤î©I¥sªÌªºÄ~Äò°õ¦æ¡F®ÄªG¤@¼Ë¡A¦ý«o¯à¨Ï¥Î¦b§C¤@¼hªº©w¸q¤¤¡C³o¸Ì ¦³¤@¨Ç³o¨âºØ¤èªkªº¨Ò¤l¡C ¦pªG§A¦³¤@­Ó¡yIF ELSE THEN¡zªº¤ù»y¡ATHEN ¤§«á¨S¦³µ{¦¡½X¡A¹³³o¼Ë¡G

      ... HUNGRY?  IF  EAT-IT  ELSE   FREEZE-IT  THEN ;

§A¥i¥H¨Ï¥Î EXIT ¨Ó¬Ù²¤ ELSE¡G

      ... HUNGRY?  IF  EAT-IT  EXIT  THEN  FREEZE-IT ;

¡]¦pªG±ø¥óÄݹê¡A§Ú­Ì°õ¦æ¡yEAT-IT¡z¨Ã¸õ¥X¡F¡yEXIT¡zªº¦æ¬°¹³¬O¤@­Ó¤À¸¹¡C¦pªG±ø¥ó ¬O°²¡A§Ú­Ì¸õ¨ì THEN ¨Ã¥B°õ¦æ¡yFREEZE-IT¡z¡C¡^ ¦b³o¸Ì¨Ï¥Î EXIT ¤ñ¸û¦³®Ä²v¡A¸`¬Ù¤F¨â­Ó¦r¤¸¤ÎÃB¥~ªº°õ¦æ½X¡A¦ý¥iŪ©Ê«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
Moore¹ï³oºØ§Þ¥©ªº»ù­È©M¦MÀI©ÊªºµûÂ_¡G

¯S§O¬O·í±ø¥óÅܱo«Ü½ÆÂøªº®É­Ô¡A¯à¦bµ{¦¡¤¤¶¡¸õ¥X¡A¦Ó¤£¥²¨ì³Ì«á²Å¦X¤F©Ò¦³THEN ªº±ø¥ó®É¤~¸õ¥X¡A¯u¬O¤@¥ó«Ü²nªº¨Æ¡C¦b¤@­ÓÀ³¥Îµ{¦¡¸Ì¡A§Ú´¿¸g¦³¤@­Ó¹³³o¼Ë ªº¦r¡G

      : TESTING
          SIMPLE  1CONDITION  IF ... EXIT  THEN
          2CONDITION  IF ... EXIT  THEN
          3CONDITION  IF ... EXIT  THEN ;

¡ySIMPLE¡z¬O¥Î¨Ó³B²z²³æªºª¬ªp¡C¡ySIMPLE¡zªº©w¸q¬O¥H¡yR> DROP¡z¤ù»y°µµ²§ô ¡C¨ä¥¦³¡¥÷¥Î¨Ó³B²z¸û½ÆÂøªº±¡ªp¡C ¥¦­Ì·í¤¤ªº¨C¤@­Ó³£¦b¦P¤@ÂI¸õ¥X¡A¤£¥²µh­W¦a¥h²Å¦X©Ò¦³ªº IF¡BELSE¡BTHEN µ¥µ¥ ªº±ø¥ó¡C¨ì³Ì«á¡A¦pªG¨S¦³¤@­Ó±ø¥ó¬O²Å¦Xªº¡A´N¬O¤@­Ó¿ù»~ª¬ªp¡C ³o­Ó½X¼gªº«Ü¤£¦n¡A¦]¬°¥¦«ÜÃø°£¿ù¡C¦ý¬O¥¦«o¤ÏÀ³¥X°ÝÃDªº¥»½è¡C¨S¦³¨ä¥¦§ó¦nªº ¿ìªk¨Ó³B²z¥¦¡C¡yEXIT¡z©M¡yR> DROP¡z¦Ü¤ÖÁÙ¯à¨Ï¨Æ±¡¦b´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¢w¢w

µ{¦¡³]­p®v¦³®É¤]¨Ï¥Î EXIT¡A¸õ¥X½ÆÂøªº BEGIN °j¸ô¡C©ÎªÌ§Ú­Ì¤]¯à¦b¡yDO LOOP¡z¸Ì ¨Ï¥ÎÃþ¦üªº§Þ¥©¡A¹³¬O¦b¥»³¹µy«e³B¡A§Ú­Ì¦b¡u¤p¤p½s¿è¾¹¡v©Ò¼gªº¡y'FUNCTION¡z¡C¦b ³o­Ó¦r¤¤¡A§Ú­Ì·j´M¤@¨t¦Cªº¦a§}¡A¬d¬Ý¬O§_¦³²Å¦Xªº±¡ªp¡C¦pªGµo²{¨ì¤@­Ó¡A§Ú­Ì´N ±N¥¦ªº¦a§}¶Ç¦^¡F¦pªG§ä¤£¨ì¡A§Ú­Ì´N¶Ç¦^¥\¯àªí¤¤³Ì«á¤@¦æªº¦a§}¡C ²{¦b§Ú­Ì¥i¥H¤Þ¤J¡yLEAP¡z³o­Ó¦r¡]°Ñ¬Ýªþ¿ýC¡^¡A¥¦ªº¥\¯à»P¡yEXIT¡z¬Û¦ü¡]¥¦¤] ¬O¼ÒÀÀ¤@­Ó¤À¸¹¡^¡C²{¦b§Ú­Ì¥i¥H¼g¡G

      : 'FUNCTION   ( key -- adr-of-match )   'NOMATCH FUNCTIONS
         DO  DUP  I @ = IF  DROP  I LEAP THEN  /KEY +LOOP
         DROP  'NOMATCH ;

¦pªG§Ú­Ì§ä¨ì¤@­Ó¬Û²Åªº¡A§Ú­Ì´N¡yLEAP¡z¡A¤£°µ¡y+LOOP¡z¡A¦ý¬O­n¥ß¨è°µ¡A¨Ã¥B¦b °ïÅ|¤W¯d¤U¡yI¡z¡]§Ú­Ì§ä¨ìªº¦a§}¡^¡C¦pªG¨S¦³§ä¨ì¤@­Ó¬Û²Åªº¡A§Ú­Ì·|¸g¹L°j¸ô¨Ã ¥B°õ¦æ

      DROP  'NOMATCH

¥¦©ß±ó©Ò­n´M§äªºÁä¡A¨Ã¯d¤U³Ì«á¤@¦æªº¦a§}¡I ¦p§Ú­Ì©Ò¨£¡A"´£«e¸õ¥X"³£¦³¤@­Ó¾A·íªº®É¾÷¡A¬Æ¦Ü¦b¦h¥X¤f©M¦h"Ä~Äò"ªº±¡ªp¤U ¡A³£¬O¦p¦¹¡C¦ý³oºØ¨Ï¥Î¡yEXIT¡z©M¡yR> DROP¡zªº¤èªk¡A»P³Ìª½±µªºµ²ºc¤Æµ{¦¡³]­p­ì ²z¡AÄY®æ¦a»¡¨Ã¤£¤@­P¡A¨Ï¥Î®É­n¯S§O¤p¤ß¡C ¨Ò¦p¡A§A©Î³\·|¦b©w¸q¶}©l®É¡A¦b°ïÅ|¤WÂ\¤W¤@­Ó¼Æ­È¡A¥¦¬O­nµ¹©w¸qµ²§ô®É¨Ï¥Î ªº¡C¹L¦­ªº¸õ¥X·|¦b°ïÅ|¤W¯d¤U¤@­Ó¦h¾lªº­È¡C ª±§Ëªð¦^°ïÅ|´N¹³ª±¤õ¤@¼Ë¡C§A¥i¯à³Q¿N¨ì¡C¦ý¬O¦³¤F¤õ¡A«o±aµ¹¤HÃþ«Ü¤jªº¤è«K¡C
¨Ï¥Î¥¿½Tªº®É¾÷

¢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ı±o¥²»Ý°µªº®É­Ô¡A¥ß¨è±Ä¨ú¦æ°Ê¡A¤£­nµ¥¡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·í§A³]©w¤@­ÓºX¼Ð®É¡A´N¸ÕµÛ°Ý¦Û¤v¬°¤°»ò­n³]©w¥¦¡C¦pªGµª®×¬O¡u³o¼Ëµy«á §Ú´N¯àª¾¹D¸Ó³o¼Ë..³o¼Ë..ªº°µ¡v¡A´N±µµÛ°Ý§A¦Û¤v¡A¬O§_²{¦b´N¥i¥H³o¼Ë°µ¡C¤@¤pÂIªº ­«·s«Øºc¡A¥i¯à·|¤j¤j¦a²¤Æ§Aªº³]­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
´£¥Ü ¹ï©ó²{¦b´N¥i¥H½sĶªºªF¦è¡A¤£¥²µ¥¨ì°õ¦æ®É¦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

¥ô¦ó®É­Ô¡A­Y§A¯à¦b½sͤ@­ÓÀ³¥Îµ{¦¡¤§«e°µ¥X¤@­Ó¨M©w¡A¥ß¨è´N°µ¡C °²³]§A¦³¨âºØª©¥»ªº°}¦C¡G¤@­Ó¬O¦bµ{¦¡µo®i®É¬°¤F¨¾¤î¿ù»~µo¥Í¡A·|Àˬd¬O§_¶V¬É ¡]bounds¡^¥H°µ«OÅ@¡A¥t¤@­Ó°õ¦æªº¸û§Ö¡A¦ý¬O¥¦¦b¹ê»ÚÀ³¥Î¤¤«o¨S¦³«OÅ@¡C ­n±N³o¨âºØª©¥»©ñ¦b¤£¦Pªº¾­¤¤¡C·í§A½sĶÀ³¥Îµ{¦¡®É¡A¥u¸ü¤J§A©Ò»Ý­nªºª©¥»¡C ¶¶«K´£¤@¤U¡A¦pªG§A·ÓµÛ³o­Ó«ØÄ³¥h°µ¡A¨C¦¸·í¸ü¤Jªºª©¥»§ïÅܮɡA§A¥i¯à­n¤£³Ó¨ä ·Ðªº¥h½s¿è¸ü¤J¾­¡A¥H«K¯à¸ü¤J©Ò­nªºª©¥»¡C§A¨ä¹ê¥i¥H´«¤@ºØ¤è¦¡¡A¼g¤@­Ó¦b³Ì«á¥i¥H ¥á±¼¤£­nªº©w¸q¡AÅý¥¦¬°§A°µ§PÂ_¡C¨Ò¦p¡]¦b¥t¤@¸`¸Ì§A¤w¬Ý¹L¡^¡G

      : STEPPERS   150  'TESTING? @  1 AND  +  LOAD ;

¢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
´£¥Ü ­n¥h¡y½Æ»s¡z¤@­ÓºX¼Ð¡A¦Ó¤£­n¦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

¦³®É§A»Ý­n¤@­ÓºX¼Ð¡A¥Î¨Ó«ü¥Ü¬O§_«e­±¤@¨Çµ{¦¡½X¤w¸g³Q©I¥s¹L¡C¤U­±ªº©w¸q·|¯d¤U ¤@­ÓºX¼Ð¡A¥Î¨Ó«ü¥Ü¡yDO-IT¡z¬O§_¤w³Q°õ¦æ¡G

      : DID-I?   ( -- t=I-did )
         SHOULD-I?  IF  DO-IT  TRUE  ELSE  FALSE  THEN ;

¥¦¥i¥H³Q²¤Æ¬°¡G

      : DID-I?    ( -- t=I-did )
         SHOULD-I?  DUP IF  DO-IT  THEN ;

¢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
´£¥Ü ¤£­n³]©w¤@­ÓºX¼Ð¡A¦Ó­n³]©w¤@­Ó¸ê®Æ¡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ªG³]©wºX¼Ðªº°ß¤@¥Øªº¡A¬O¬°¤Fº¸«á¬Y¨Çµ{¦¡½X¥i¥H¦b¤@­Ó¼Æ¥Ø©M¥t¤@­Ó¼Æ¥Ø¤§¶¡°µ §PÂ_¡A§A³Ì¦n±N¼Æ¥Ø¥»¨­«O¯d¤U¨Ó¡C ²Ä¤»³¹"¤À¸Ñ¦]¤lªº·Ç«h"¤@¸`¤¤"ÃC¦â"ªº¨Ò¤l¡A»¡©ú¤F³o­ÓÆ[ÂI¡C ¦r¡yLIGHT¡zªº¥Øªº¬O³]©w¤@­ÓºX¼Ð¡A¥¦«ü¥X§Ú­Ì¬O§_­n°ª«G«×ªº¦ì¤¸³Q³]©w¡CÁöµM §Ú­Ì¥i¥H¼g¥X

      : LIGHT   TRUE  'LIGHT? ! ;

¨Ó³]©wºX¼Ð¡A¥H¤Î

      'LIGHT? @ IF  8 OR  THEN ...

¨Ó¨Ï¥Î³o­ÓºX¼Ð¡C¦ý³oºØ¤èªk¨Ã¤£¦pª½±µ±N°ª«G«×¦ì¤¸©ñ¦bÅܼƤ¤¨ÓªºÂ²³æ¡G

      : LIGHT   8 'LIGHT? ! ;

¨Ã¥B²¤Æ¦¨

      'LIGHT? @  OR ...

¨Ó¨Ï¥Î¥¦¡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
´£¥Ü ¤£­n³]©w¤@­ÓºX¼Ð¡A­n³]©w¤@­Ó¥\¯à¡C(¦V¶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­Ó´£¥Ü©M«e¤@­ÓÃþ¦ü¡A¨Ã¥B³£¦s¦bµÛ¬Û¦Pªº­­¨î¡C¦pªG³]©w¤@­ÓºX¼Ðªº°ß¤@¥Øªº¬O¡A º¸«á¬Y¨Çµ{¦¡½X¥i¥H¦b¤@­Ó¥\¯à©M¥t¤@­Ó¤§¶¡°µ§PÂ_¡A§A³Ì¦n¦s¤U¥\¯à¥»¨­ªº¦a§}¡C ¨Ò¦p¡A¶Ç°e¤@­Ó¤å¦r¨ì¦L¦r¾÷ªºµ{¦¡½X©Mª½±µ±N¤å¦r©ñ¨ìÅã¥Ü¾¹¤Wªºµ{¦¡½X¤£¤@¼Ë¡C ®t«lªº°õ¦æ¤èªk·|©w¸q¦¨¡G

      VARIABLE DEVICE  ( 0=video | 1=printer )
      : VIDEO   FALSE DEVICE ! ;
      : PRINTER   TRUE DEVICE ! ;
      : TYPE   ( a # -- )   DEVICE  @  IF
         ( ... code for printer ... )  ELSE
         ( ... code for video ... )   THEN ;

³oºØ°µªk¤£¦n¡A¦]¬°¨C¦¸§A­n¿é¥X¤@­Ó¦r¦ê®É¡A³£­n¨M©w°õ¦æ­þ¤@ºØ¥\¯à¡C ¸û¦nªº¹ê²{¤è¦¡¬O¨Ï¥Î¦V¶q¦¡ªº°õ¦æ¡C¨Ò¦p¡G

      DOER TYPE  ( a # -- )
      : VIDEO  MAKE TYPE  ( ... code for video ... )  ;
      : PRINTER  MAKE TYPE  ( ... code for printer ... )  ;

³o¼Ë¸û¦n¡A¦]¬°¡yTYPE¡z¤£¥²¨M©w­n¨Ï¥Î­þ¤@¬qµ{¦¡½X¡A¥¦¤w¸gª¾¹D¤F¡C ¡]¦b¤@­Ó¦h¤u¨t²Î¤¤¡A¦L¦r¾÷©MºÊµø¾¹ªº¤u§@¡A³£¦³¥¦¦Û¤vªº¤@­Ó°õ¦æ¦V¶qªº«þ¨© ¡A¥H«KÅý¡yTYPE¡z±N¥¦Àx¦s¦b¤@­Ó¨Ï¥ÎªÌÅܼƤ¤¡C¡^ ¤W­±ªº¨Ò¤l»¡©ú¤F³o­Ó´£¥Üªº­­¨î¡C¦b²Ä¤G­Óª©¥»¤¤¡A§Ú­Ì¨Ã¨S¦³Â²³æªº¤èªk¯à°÷ ª¾¹D¥Ø«eªº¸Ë¸m¬O¦L¦r¾÷©Î¬OÅã¥Ü¾¹¡C§Ú­Ì¤]³\»Ý­nª¾¹D³oÂI¡A¥H«K¯à¨M©w¬O§_­n²M°£¿Ã ¹õ©ÎªÌ°e¤@­¶¯È¡C§Ú­Ì¥Î¨ì¤F"ª¬ºA"ªº¥t¤@ºØ¥Î³~¡A¦]¦Ó§Ú­Ìªº´£¥Ü¤]´N¤£¦A¾A¥Î¤F¡C ¨Æ¹ê¤W¡AºX¼Ðªº¨Ï¥Î¬O¤¹³\"¨Ì¿àª¬ºA¨Ó¾Þ§@"ªº³Ì²³æªº¹ê²{¤è¦¡¡C¦ý¬O¦b¡yTYPE¡z ªº±¡ªp¸Ì¡A§Ú­ÌÃö¤ßªº¬O³t«×¡C§Ú­Ì¦L¦r¦êªº¦¸¼Æ¤ÓÀWÁc¡A¤£¤¹³\®ö¶O®É¶¡­«½Æ¦a°µ§PÂ_ ¡C³Ì¦nªº¸Ñ¨M¿ìªk¬O³]©w¡yTYPE¡zªº¥\¯à¡A¦P®É¤]³]©w¤@­ÓºX¼Ð¡G

      DOER TYPE
      : VIDEO   0 DEVICE !  MAKE TYPE
          ( ... code for video ... ) ;
      : PRINTER  1 DEVICE !  MAKE TYPE
          ( ... code for printer ... ) ;

©ó¬O¡ATYPE ª¾¹D¸Ó°õ¦æ¨º¤@­Óµ{¦¡½X¡A¦Ó¥t¤@­Ó©w¸q¤]¯à°Ñ¦ÒºX¼Ð¡yDEVICE¡z¡C ¥t¤@ºØ¥i¯à¬O¼g¤@­Ó¦r¡A¥¦¯à¨ú±o¡yTYPE¡zªº°Ñ¼Æ¡]¥Ø«eµ{¦¡½Xªº«ü¼Ð¡^¡A¨Ã±N¥¦ »P PRINTER ªº°õ¦æ¦a§}¬Û¤ñ¸û¡C¦pªG¥¦¤p©ó PRINTER ªº¦a§}¡A§Ú­Ì«K¬O¦b¨Ï¥Î VIDEO ªº±`¦¡¡F§_«h¡A´N¬O¦b¨Ï¥Î PRINTER ªº±`¦¡¡C ¦pªGª¬ºAªº§ïÅÜ¥]§t¤F¤@¤p³¡¥÷¥\¯àªº§ïÅÜ¡A§A¤´µM¥i¥H¨Ï¥Î DOER/MAKE¡C³o¸Ì¬O ¤TºØ°O¾ÐÅé²¾°Êªº¾Þ§@©w¸q¡A¥¦­Ì¥i¥H¤@°_³QÃö±¼¡C

    DOER !'  ( vectorable ! )
    DOER CMOVE'   ( vectorable CMOVE )
    DOER FILL'   ( vectorable FILL )
    : STORING    MAKE !' !   ;AND
                 MAKE CMOVE'  CMOVE  ;AND
                 MAKE FILL'  FILL ;
    : -STORING   MAKE !'  2DROP   ;AND
                 MAKE CMOVE'  2DROP DROP  ;AND
                 MAKE FILL'  2DROP DROP ;

¦ý¬O¡A¦pªG¦³¤j¶qªº¥\¯à»Ý­n³Q¦V¶q¤Æ¡A¨Ï¥Îª¬ºAªí·|¤ñ¸û¦n¡C ³o­Ó³W«hªºµ²ªG¤Þ¥X¤F¡uµ²ºc¤Æªº¥X¤f±¾¤Ä¡]structured exit hook¡^¡v¡A¥¦¬O¤@ ­Ó"DOER¦r"¡A³Q«ü¦V¨ì¥h°õ¦æ¤@­Óµ²ºc¤ÆªºÂ÷¶}¡]EXIT¡^¡C

      DOER µS¿Ý  ( the exit hook )
      : ±B«ÃµL®Ä   µS¿Ý  Â÷±Bµn°O ;
           ( ....              )
           ( ...¦bµ{¦¡¤¤«Ü«á­±ªº¦a¤è: )
      : ½w©M   MAKE µS¿Ý   °eªá  R> DROP  ;

¶}©l®É¡A¡yµS¿Ý¡z¨Ã¤£°µ¥ô¦ó¨Æ¡C¦pªG¦¹®É©I¥s¡y±B«ÃµL®Ä¡z¡A´N·|¤Wªk°|¡C¦pªG §Ú­Ì¦b¡y±B«ÃµL®Ä¡z¤§«e°µ¡y½w©M¡z¡A´N·|¥ý°eªá¡A¨Ã²M²nªº¸õ¨ì¤À¸¹¡A¬Æ¦Ü¦b§Ú­Ì ªº¥t¤@¥bµoı³o¥ó¨Æ¤§«e¡A´N¨î¤î¤F¨º­Óªk°|¶Ç²¼ªº°e¥X¡C ³o­Ó¤èªk¯S§O¾A¦X·í"¨ú®øªº°Ê§@"¥²»Ý³Q«Ü«á­±¤~©w¸q¥Xªº¥\¯à©Ò°õ¦æªºª¬ªp¡]¨Ì ¶¶§Ç¤Wªº½ÆÂø«×©Ò©î¸Ñ¡^¡C«e­±µ{¦¡½Xªº½ÆÂø©Ê¼W¥[ªº«Ü¦³­­¡A§A¥u»Ý­n©w¸q¥X±¾¤Ä¡A µM«á¦b¾A·íªº®É¶¡©I¥s¥¦§Y¥i¡C


²¤Æ

§Ú«O¯d³o­Óªº´£¥Ü¡A±N¥¦©ñ¦b³Ì«á¡A¬O¦]¬°¥¦¥i¥H°µ¬°¤@­Ó½d¨Ò¨Ó»¡©ú²¤ÆªºÀuÂI¡C ·í¨ä¥¦ªº´£¥ÜµÛ­«¦b¥iºûÅ@©Ê¡B®ÄªG¡Bºë²µ¥µ¥®É¡A³o­Ó´£¥Ü«o¬O»Pº¡·N«×¦³Ãöªº¡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
´£¥Ü ºÉ¶qÁ×§K±N©Ò¦³ªººX¼Ð³£«O¦s¦b°O¾ÐÅé¸Ì¡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°ïÅ|¤WªººX¼Ð¡A©M¤@­Ó¦b°O¾ÐÅé¸ÌªººX¼Ð¡A¦³«Ü¤jªº¤£¦P¡C¦b°ïÅ|¤WªººX¼Ð¯à°÷ «Ü®e©ö³Q¨M©w¡]¥HŪ¤JµwÅé¡B­pºâ¡B©Î¥ô¦ó¨ä¥¦¤èªk¡^¡A©ñ¨ì°ïÅ|¤W¡AµM«á³Q±±¨î µ²ºc¥Î±¼¡C¥¦ªº¥Í©R¬Jµu¼È¤S¤£½ÆÂø¡C ¦ý¬O­Y±NºX¼Ð«O¦s¦b°O¾ÐÅé¸Ì¡A¬Ý¬Ý·|µo¥Í¤°»ò¨Æ¡C§A°£¤F¦³ºX¼Ð¥»¨­¤§¥~¡AÁÙ ¼W¥[¤FºX¼Ð¦ì¸mªº³o­Ó½ÆÂø«×¡C³o­Ó¦ì¸m¥²»Ý¡G

¡E ³Q»s³y¥X¨Ó ¡E ³Qªì³]¡]¬Æ¦Ü¬O¦b¦³¥ô¦óªF¦è¯u¥¿¦a§ïÅܤ§«e¡^ ¡E ³Q­«¸m¡]§_«h¡A­Y±N¤@­ÓºX¼Ð¶Ç°e¨ì¤@­Ó«ü¥O¡A¸ÓºX¼Ð·|¤@ª½«O¯dµÛ¥Ø«eªºª¬ºA¡^

¦]¬°¦b°O¾ÐÅ餤ªººX¼Ð¬O­ÓÅܼơA©Ò¥H¥¦­Ì¤]¬O"¤£¥i¦A¶i¤Jªº"¡]not reentrant¡^¡C ·|Åý§Ú­Ì­«·s¦Ò¼{¬O§_¯uªº»Ý­n¤@­ÓºX¼Ðªº¨Ò¤l¤§¤@¡A´N¬O¨º­Ó§Ú­Ì¤w¸g¬Ý¹L¦n¦h ¦¸ªº"ÃC¦â"ªº¨Ò¤l¡C¨ä¤¤¡A§Ú­Ì°²³]³Ì¦nªº»yªk¬O¡G

      LIGHT BLUE   ( ²H  ÂŦâ )

¤]´N¬O§Î®eµü LIGHT ¥X²{¦bÃC¦â¤§«e¡C³o¨S¦³°ÝÃD¡C¦ý¬O¡A°O±o°õ¦æ¨º­Óª©¥»ªºµ{¦¡½X ¶Ü¡H ½Ð±N¥¦©M¤U­±³oºØ¤èªkªºÂ²³æ©Ê°µ­Ó¤ñ¸û¡G

      0 CONSTANT BLACK   1 CONSTANT BLUE    2 CONSTANT GREEN
      3 CONSTANT CYAN    4 CONSTANT RED     5 CONSTANT MAGENTA
      6 CONSTANT BROWN   7 CONSTANT GRAY
      : LIGHT   ( color -- color )   8 OR ;

¦b³o­Óª©¥»¸Ì¡A§Ú­Ì±N»yªk¤ÏÂà¡A©Ò¥H§Ú­Ì²{¦b»¡

      BLUE LIGHT    ~FBBB1;( ÂÅ¦â  ²H )

§Ú­Ì¥ý³]©wÃC¦â¡AµM«á¦A¥h­×¹¢¥¦¡C ¦b§¹¦¨«á¡A§Ú­Ì®ø°£¤F¹ï¤@­ÓÅܼƪº»Ý¨D¡BŪ¨úÅܼƪºµ{¦¡½X¡B©M§ó¦hªº­«¸mÅÜ¼Æ ªºµ{¦¡½X¡C¨Ã¥B¡A³o­Óµ{¦¡½X¬O¦p¦¹ªºÂ²³æ¡A¬O¤£¥i¯à¬Ý¤£À´ªº¡C ·í²Ä¤@¦¸¼g³o¨Ç«ü¥O®É¡A§Ú¨Ï¥Î¹³¤f»yªº¤è¦¡¡C¡yBLUE LIGHT¡zÅ¥°_¨Ó«e«áÄA­Ë¡A ¤@ÂI¤]¤£¯à±µ¨ü¡C¦ý¨º¬O¦b§Ú©MChuck Moore½Í¸Ü¤§«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¢w¢w
Mooreªº­õ¾Ç«Ü¨ã»¡ªA©Ê¡G

§Ú­n¦b¡u­^¤å»¡ªº¦n¡v©M¡u»¡ªº¦n¡v¤§¶¡°Ï§O¥X¨Ó¡C¨ä¥¦»y¨¥¡A¹³¦è¯Z¤ú»y¡A§Î®eµü ¬O¸ò¦b¦Wµü¤§«áªº¡C§Ú­ÌÀ³¸Ó¤£¨ü¡u¥Î¨Ó«ä¦Òªº»y¨¥¬O«ç¼Ëªº¡v³oºØ²Ó¸`ªº¬ù§ô¡C ¥¦¨ú¨M©ó§Aªº·N¹Ï¡G­n²³æ¡AÁÙ¬O­n¹³­^¤å¡C­^¤å¨Ã¤£¬O¤@ºØ«D±`Àu¶Vªº»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

¦pªG§Ú­n±N³o¨Ç³B²zÃC¦âªº¦r¥]¸Ë°_¨Ó¡A½æµ¹Ã¸¹ÏÃÀ³N®a¨Ï¥Î¡A§Ú¥i¯à·|¦Û§ä³Â·Ðªº ¥h»s³y¤@­ÓºX¼Ð¡C¦ý¬O¹ï³o¨Çµ¹§Ú¦Û¤v¨Ï¥Îªº¦r¡A¦pªG§Ú»Ý­n¦A¼g¥¦¤@¹M¡A¨º§Ú¹çÄ@ ¨üMooreªº¼vÅT¡A¨Ï¥Î¡yBLUE LIGHT¡zªº»yªk¡C


µ²»y

±NÅÞ¿è©M±ø¥ó·í§@¬O¼gµ{¦¡ªº­«­nµ²ºc³æ¤¸¡A·|¾É­Pµ{¦¡¹L¥÷ªº½ÆÂø¡A¤£®e©öºûÅ@¡A ©M¨S¦³®Ä²vªº½s½X¡C¦b¥»³¹¸Ì¡A§Ú­Ì°Q½×¤F´XºØ¤èªk¡A¥H´î¤Ö¡B³Ì¨Î¤Æ¡B©Î®ø°£¤£»Ý­n ªº±ø¥óµ²ºc¡C ³Ì«á¤@ÂI¡A ²Å¦¡¹ï±ø¥óªº³B²z¤è¦¡¡A¬O¤£¤Ó¾A¥Î©ó¨ä¥L¤j³¡¥÷ªº²{¥N»y¨¥¤Wªº¡C ¨Æ¹ê¤W¡A¤é¥»®Ú¾Ú¥¦­Ìªº²Ä¤­¥N¹q¸£­p¹º¡Aµo®i¥X¤@ºØºÙ¬° PROLOG ªº»y¨¥¡A§Y PROgramming in LOGic¡A¥¦¬O¤@ºØ§¹¥þ¨Ï¥ÎÅ޿誺»y¨¥¡C·í§Ú­Ì²`«ä¤U­±ªº°ÝÃD

      To "IF" or not to "IF"

ªº®É­Ô¡A«Ü¦³½ìªº¡A§Ú­Ì¥i¥H¬Ý¨ì¤@­Ó¾Ô½uªº§Î¦¨¡C ¥»®Ñ¸Ì¡A§Ú­Ì¤¶²Ð¤F³nÅéµo®i©P´Áªº«e¤»­Ó¨BÆJ¡A¥]§t¤F³nÅé³]­pªº­õ²z°ÝÃD¡A©M¹ê²{ ¥i¾aªº¡B¦³®Ä²vªº¡B¥iŪ©Ê°ªªº³nÅ骺¹ê»Ú¦Ò¼{¡C §Ú­Ì¨S¦³°Q½×¨ìªº¬O¡Gµ{¦¡ªº³Ì¨Î¤Æ¡A½T¹ê©Ê¡A°£¿ù©Ê¡A¤å¥ó©Ê¡A¤Î­p¹ººÞ²z¡A µo®i¤u¨ã¡A²Õ;¹¡A»¼°j¡]recursion¡^ªº¨Ï¥Î©M»~¥Î¡A¦hÀ³¥Îµ{¦¡¡]multiprogrammed applications¡^ªºµo®i¡A©Î¥Ø¼Ð½sĶ¡]Target compilation¡^¡C ¦ý¨º±N¬O¥t¥~¤@­Ó¬G¨Æ¡C


°Ñ¦Ò®ÑÄy

1. Charles Eaker¡A"Just in Case" ²Å¦¡ Dimensions II/3, p.37¡C
§ó¶i¤@¨Bªº¦Ò¼{

§A¦³¤@­Ó¦r¡yCHOOSE¡z¡A¥¦¨ú¤@­Ó¤Þ¼Æ"n"¡A¨Ã°e¦^¤@­Ó±q0¨ìn-1ªº¥ô·N¼Æ¡C¨äµ²ªG ¥Ã»·¬O¥¿©Î¹s¡C§A¥i¥H¥Î CHOOSE ¨Ó²£¥Í¤@­ÓºX¼Ð¡F¤ù»y

      2 CHOOSE

²£¥Í¤@­Ó 0©Î 1ªººX¼Ð¡]°²©Î¯u¡^¡C ¸ÕµÛ¼g¥X¤@­Ó¤ù»y¡A¥¦¯à²£¥Í0¨ì19¡]¥]§t¡^¤§¶¡¡A©Î -20 ¨ì0¤§¶¡ªº¥ô·N¼Æ¡C

¡@