¡@²Ä¤»³¹ ¤À¸Ñ¦]¤l¡]Factoring¡^¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢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Ä~Äò¬ã°Q¹ê²{¶¥¬q¡A³o¦¸ªº«ÂI¬O¦b¡u¤À¸Ñ¦]¤l¡v¡C ©î¸Ñ¤¸¥ó»P¤À¸Ñ¦]¤l´N¹³¦P¤@Ó¥\¯à°Ï¶ô¤¤ªº¤GÓ´¹¤ù¡C¤GªÌ³£¯A¤Î¨ì¤À³Î©M²Õ ¦X¡C©î¸Ñ¤¸¥óµo¥Í¦bªì¨Bªº³]p¶¥¬q¡F¦Ó¤À¸Ñ¦]¤l«hµo¥Í©ó²Ó³¡ªº³]p»P¹ê²{¡C ¬JµM¨C¤@Ó«_¸¹©w¸q³£¤Ï¬M¥X¤F»Ýn°µ¤À¸Ñªº¨M©w¡A¤F¸ÑÀu¨}ªº¤À¸Ñ§Þ³N¤]³\¬O¤@ ӲŦ¡µ{¦¡³]p®v³Ì«nªº§Þ¥©¤F¡D ¤°»ò¬O¡u¤À¸Ñ¦]¤l¡v©O¡H¤À¸Ñ·N¨ýµÛ±Nµ{¦¡½X²Õ´¦¨¬°¦³¥Îªº¤ù¬q¡Cn¨Ï¤@Ó¤ù ¬q¦¨¬°¦³¥Îªº¡A§A³q±`¥²¶·±N¡u¥i¥H¦A«×¨Ï¥Îªº³¡¥÷¡v±q¡u¤£¯à¦A«×¨Ï¥Îªº³¡¥÷¡v¤ÀÂ÷ ¥X¨Ó¡C³o¡u¥i¥H¦A«×¨Ï¥Îªº³¡¥÷¡v´NÅܦ¨·sªº©w¸q¡A¦Ó³o¡u¤£¯à¦A«×¨Ï¥Îªº³¡¥÷¡v´N¦¨ ¬°©w¸qªº¤Þ¼Æ©Î°Ñ¼Æ¡C °µ¦¨³o¼Ë¤ÀÂ÷ªºµ²ªG³q±`³QºÙ¬°¡u¤À¸Ñ¡v¡]factoring out¡^¡C¥»³¹ªº²Ä¤@³¡¥÷±N ½Í½×¦UºØ¤À¸Ñªº§Þ¥©¡C ¨M©w¦³¦h¤ÖªF¦èn©ñ¨ì¤@Ó©w¸q¤º¡A¥H¤Î¦³¨Ç¤°»ò¬On©ñ¨ì©w¸q¤§¥~ªº¡A«h¬O¤À¸Ñ ¦]¤lªº¥t¤@Ó¸ÜÃD¡C¥»³¹ªº²Ä¤G³¡¤À±N·§z¤@¨Ç¦³®Äªº¤À¸Ñ¦]¤lªº·Ç«h¡C
°²¦p±q¨t²Î¤ºªº¥t¤@Ó¦a¤è¬Ý¨Ó¡A¤@Ó¼Ò²Õ¦ü¥G¬O¡A¦ý¨Ã¤£¥þµM¬O¡A¦³¥Îªº¡A¨º»ò ´NÀ³¸ÕµÛÃѧO¨Ã¹jÂ÷¥X³o¨Ç¦³¥Îªº°Æ¥\¯à¡C¼Ò²Õªº³Ñ¾l³¡¥÷¤]³\¥i¥H¦X¨Ö¨ì¥¦ì¨Ó ªº©I¥sªÌ¤§¤º¡]ºK¿ý¦Û ¡qµ²ºc¤Æªº³]p[1]¡r ¤@¤å¡^¡C ³o¡u¦³¥Îªº°Æ¥\¯à¡v·íµM´NÅܦ¨¤F³Ì·s¤À¸Ñ¥X¨Óªº©w¸q¡C¦Ü©ó¨ºÓ¡u¤£¬O¨º»ò¦³¥Îªº¡v ³¡¥÷©O¡H³o´N±o¬Ý¥¦¬O¤°»ò¤F¡C
¯à³Q¤À¸Ñ¥X¨Óªº³Ì²³æªºªF¦è´N¬O¸ê®Æ¡A³o±o·PÁ²Ŧ¡ªº¸ê®Æ°ïÅ|¡C¨Ò¦p¡Anpºâ¥X 1,000ªº2/3¡A§Ú̼g 1000 2 3 */ n©w¸q¤@Óµü¨Ópºâ¥ô¦ó¼ÆÈªº2/3¡A§ÚÌ´N±N³oӤ޼Ʊq©w¸q¤¤¤À¸Ñ¥X¡G : ¤T¤À¤§¤G ( n1 --n2 ) 2 3 */ ; ·í¸ê®Æ¦s¦b©ó¤@Ó"¦³¥Îªº¤ù»y"ªº¤¤¶¡³¡¦ì¡A´N¥²¶·¨Ï¥Î¨ì°ïÅ|¾Þ§@¡C¨Ò¦p¡An±N¤@¬q 10Ó¦r¤¸ªø«×ªº¤å¦r©ñ¦b¤@Ó80¦æ¼eªº¿Ã¹õ¤¤¥¡¦ì¸m¡A§ÚÌ¥i¯à¼g¡G 80 10 - 2/ SPACES ¦ý¤å¥y¥¼¥²³£¬O10Ó¦r¤¸ªø¡Cn¨Ï³oÓ¤ù»y¹ï¥ô¦ó¦r¦ê³£¬O¦³¥Îªº¡A§A´N±o¤À¸Ñ¥X "ªø«×"³o¶µ¸ê®Æ¡G :~FBBB1;¸m¤¤~I; ( ~FBBB1;ªø«× -- ) 80 SWAP - 2/ SPACES ; ¸ê®Æ°ïÅ|¤]¯à³Q¥Î¨Ó¶Ç»¼¦a§}¡C¦]¦¹¡A³Q¤À¸Ñ¥X¨Óªº©Î³\¬O¤@Ó¸ê®Æªº«ü¼Ð¦Ó«D¸ê®Æ¥» ¨¡C¸ê®Æ¥i¥H¬O¼ÆÈ©Î¬Æ¦Ü¬O¦r¦ê¡A¦Ó¤´µM¯à¸g¥Ñ°ïÅ|ªº¨Ï¥Î¦Ó³Q¤À¸Ñ¥X¨Ó¡C ¦³®É¡A®t²§ªº¦a¤è¬Ý°_¨Ó¹³¬O¤@Ó¥\¯à¡A¦ý§A¤´¯à²³æ¦a±N¥¦µø¬°¤@Ó°ïÅ|¤Wªº¼Æ ȦӤÀ¸Ñ¥X¨Ó¡C¨Ò¦p¡G ~FB7T64BY1BB1;¬q¸¨¤@¡G WILLY NILLY PUDDIN' PIE AND
~FB7T64BY1BB1; ¬q¸¨¤G¡G WILLY NILLY 8 * PUDDIN' PIE AND
§A¦p¦ó¤À¸Ñ¥X³oÓ¡y8 *¡zªº¹Bºâ¡H¸g¥Ñ±N¡y*¡z¸m©ó¤À¸Ñ¥Xªº¦]¤l¤§¤¤¨Ã¶Ç°e¤@Ó 1©Î8µ¹³oÓ·s©w¸q¡G : NEW ( n--) WILLY NILLY * PUDDIN' PIE AND ;
~FB7T64BY1BB1; ¬q¸¨¤@¡G 1 NEW
~FB7T64BY1BB1;¬q¸¨¤G¡G 8 NEW
¡]·íµM¡A¦pªG¡yWILLY NILLY¡z§ïÅܤF°ïÅ|¡A§A´N»Ýn¥[¤W¾A·íªº°ïÅ|¹B§@¡^ ¦pªG¹Bºâ¯A¤Î¨ì¥[ªk¡A§A¤]¯à¸g¥Ñ¶Ç°e¤@Ó0¨Ó¥¿Å¥¦¡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 ¤À¸Ñ¥X¥\¯à¡]Factoring Out Functions¡^ ¦b¥t¤@¤è±¡A¦³®É¬O¤@ºØ¥\¯à¤Wªº®t§O¡C¨Ò¦p¡G ¡@ ~FB7BB1;¬q¸¨¤@¡G BLETCH-A BLETCH-B BLETCH-C BLETCH-D BLETCH-E BLETCH-F ¡@ ~FB7BB1;¬q¸¨¤G¡G BLETCH-A BLETCH-B PERVERSITY BLETCH-D BLETCH-E BLETCH-F ¿ù»~ªº¤À¸Ñ¤è¦¡¬O¡G : BLETCHS ( t=do-BLETCH-C | f=do-PERVERSITY -- )
BLETCH-A BLETCH-B IF BLETCH-C ELSE PERVERSITY THEN
BLETCH-D BLETCH-E BLETCH-F ;
~FB7BB1;¬q¸¨¤@¡G TRUE BLETCHS
~FB7BB1;¬q¸¨¤G¡G FALSE BLETCHS
¤@Ó¸û¦nªº¤è¦¡¡G : BLETCH-AB BLETCH-A BLETCH-B ;
: BLETCH-DEF BLETCH-D BLETCH-E BLETCH-F ;
~FB7BB1;¬q¸¨¤@¡G BLETCH-AB BLETCH-C BLETCH-DEF
~FB7BB1; ¬q¸¨¤G¡G BLETCH-AB PERVERSITY BLETCH-DEF
¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢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§A¬O¦bn¨D¨ºÓ°õ¦æ¤¤ªºµ{¦¡°µ¤@ÓµL·N¸qªº¨M©w --¤@Ó§A¦bµ{¦¡ ³]p®É´N¤w¸gª¾¹Dµª®×ªº¨Æ--
¦]¦¹´î§C¤Fµ{¦¡°õ¦æªº®Ä²v¡C²Ä¤G¡A³o¼Ëªº¥Î»y©M·§ ©À¤Wªº¼Ò«¬¨Ã¤£¤Ç°t¡C¡yFALSE BLETCHES¡z¤ù»y¦b¹ï·ÓµÛ¡yTRUE BLETCHES¡z®É¬O¤°»ò
·N«ä©O¡H ¹ï¤@Ó¡yIF ELSE THEN¡zµ²ºcªº¨âÃä«ÂÐ¥X²{ªº±Ôzn¦³©Òĵ±§¡C¨Ò¦p¡G ... ( c ) DUP BL 127 WITHIN
IF EMIT ELSE DROP ASCII . EMIT THEN
³o¬qµ{¦¡½X¥±`·|°e¥X¤@ÓASCII¦r¤¸¡A¦ý¦pªG³oÓ¦r¤¸¬O¤@Ó±±¨î½X¡A¥¦´N§ï°e¥X¤@Ó ÂI¡C¤£½×¨«¨º¤@±ø¸ô®|¡A¥¦³£·|°õ¦æ¡yEMIT¡zªº°Ê§@¡C±N¡yEMIT¡z¦Û³oÓ±ø¥óµ²ºc¤¤¤À¸Ñ ¥X¡A¹³³o¼Ë¡G ... ( c ) DUP BL 127 WITHIN NOT
IF DROP ASCII . THEN EMIT
·í¤GÓ©w¸qªº®t²§¬O¦bµ²ºc¤§¤¤ªº¤@Ó¥\¯à®É¡A´N·|¬O³Ì§xÂZªº±¡ªp¡A¦Ó¨Ï±on±N³o "¥bÓ¤ù¬q"¤À¸Ñ¥X¨Ó¦¨¬°¤£¥i¯àªº¨Æ¡C¦b³o¼Ëªº±¡ªp¤¤¡A´Nn¨Ï¥Î¨ì°ïÅ|¤Þ¼Æ¡BÅܼơB ©Î¬Æ¦Ü¦V¶qµ¥§Þ¥©¡C§Ú̱N¦b²Ä7³¹¤¤¡u¨Ï¥Î DOER/MAKE¡vªº³¡¥÷¬Ý¥X¦p¦ó¨Ï¥Î¦V¶q¨Ó ³B²z³oºØ±¡ªp¡C ¤U±¬O¤@ÓÃö©ó±q¡yDO LOOP¡z°j¸ô¤¤¤À¸Ñ¥Xµ{¦¡½Xªº¤@Ó´£¥Ü¡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±±¨îµ²ºc¤À¸Ñ¥X¨Ó ³o¸Ì¦³¤GÓ©w¸q¡A¥¦Ìªº®t²§¦s¦b©ó¤@Ó¡yIF THEN¡zªºµ²ºc¤º¡G : ACTIVE A B OR C AND IF TUMBLE JUGGLE JUMP THEN ;
: LAZY A B OR C AND IF SIT EAT SLEEP THEN ;
¨ä¤¤ªº±ø¥ó»P±±¨îµ²ºc³£¬O¬Û¦Pªº¡F¥u¦³n°µªº¨Æ¤£¦P¡C¬JµM§A¤£¯à¤À¸Ñ¡yIF¡z¨ì¤@Ó¦r ¦Ó¡yTHEN¡z¨ì¥t¤@Ó¦r¡A¨º»ò³Ì²³æªº¤è¦¡´N¬O¤À¸Ñ¥X³oÓ±ø¥ó¡G : CONDITION? ( -- ? ) A B OR C AND ;
: ACTIVE CONDITION? IF TUMBLE JUGGLE JUMP THEN ;
: LAZY CONDITION? IF SIT EAT SLEEP THEN ;
¨Ì³oºØ¬Û¦Pªº±ø¥ó»P±±¨îµ²ºc«½Æ¥X²{ªº¦¸¼Æ¦Ó©w¡A§A¬Æ¦Ü¥i¯à·Qn±N¨âªÌ³£¤À¸Ñ¥X¨Ó¡C ª`·N¤U±ªº°µªk¡G : CONDITIONALLY A B OR C AND NOT IF R> DROP THEN ;
: ACTIVE CONDITIONALLY TUMBLE JUGGLE JUMP ;
: LAZY CONDITIONALLY SIT EAT SLEEP ;
¡yCONDITIONALLY¡z³oÓ¦r --µø±ø¥ó¦Ó©w--
¥i¯à·|§ïÅܱ±¨î¬yµ{¥H¸õ¹L©w¸q¤¤¸ò¦b«á± ªº¨º¨Ç¦r¡C¦ý³oºØ¤è¦¡¤]¦³¤@¨Ç¯ÊÂI¡C§Ú̱N¦b²Ä8³¹¤¤½Í½×³oÓ§Þ¥©ªºÀu¦H¡C
ÁÙ¦³§ó¦h±N±±¨îµ²ºc¤À¸Ñ¥X¨Óªº¨Ò¤l¡A¥]¬A¡yCASE¡z±Ôz --¥¦®ø°£¤F±_ª¬ªº¡yIF ELSE THEN¡zµ²ºc¡A¤Î¦h«¥X¤fªº°j°é¡] BEGIN WHILE
WHILE WHILE ... REPEATªºµ²ºc¡^ ¡C§Ú̱N¦b²Ä8³¹¤¤½Í½×³o¨Ç¥DÃD¡D ·í¤@¨Ç¦W¦r´X¥G¬O¡A¦ý¤£¥þµM¬O¡A¬Û¦P®É¡A¤À¸Ñ¥¦Ì¦ü¥G¬OºØ¸û¦nªº°µªk¡CÀ˵ø¤U±³o Ó¥i©Èªº¨Ò¤l¡A³o¨Ç½X¬O¥Î¨Ó³]©w»P¤KÓÀW¹D¤¤¨CÓÀW¹D¬ÛÃöªº¤TÓÅܼƪºªìÈ¡G VARIABLE 0STS VARIABLE 1STS VARIABLE 2STS
VARIABLE 3STS VARIABLE 4STS VARIABLE 5STS
VARIABLE 6STS VARIABLE 7STS VARIABLE 0TNR
VARIABLE 1TNR VARIABLE 2TNR VARIABLE 3TNR
VARIABLE 4TNR VARIABLE 5TNR VARIABLE 6TNR
VARIABLE 7TNR VARIABLE 0UPS VARIABLE 1UPS
VARIABLE 2UPS VARIABLE 3UPS VARIABLE 4UPS
VARIABLE 5UPS VARIABLE 6UPS VARIABLE 7UPS
: INIT-CH0 0 0STS ! 1000 0TNR ! -1 0UPS ! ;
: INIT-CH1 0 1STS ! 1000 1TNR ! -1 1UPS ! ;
: INIT-CH2 0 2STS ! 1000 2TNR ! -1 2UPS ! ;
: INIT-CH3 0 3STS ! 1000 3TNR ! -1 3UPS ! ;
: INIT-CH4 0 4STS ! 1000 4TNR ! -1 4UPS ! ;
: INIT-CH5 0 5STS ! 1000 5TNR ! -1 5UPS ! ;
: INIT-CH6 0 6STS ! 1000 6TNR ! -1 6UPS ! ;
: INIT-CH7 0 7STS ! 1000 7TNR ! -1 7UPS ! ;
: INIT-ALL-CHS INIT-CH0 INIT-CH1 INIT-CH1 INIT-CH2 INIT-CH3
INIT-CH4 INIT-CH5 INIT-CH6 INIT-CH7 ;
º¥ý³o¨ÇÅܼƪº¦W¦r³£«Ü¬Û¦ü¡F¨ä¦¸¡A¨CÓÀW¹Dªº¡yINIT-CH¡zªº©w¸q¤]³£«Ü¬Û¦ü¡C : ARRAY ( #cells --) CREATE 2* ALLOT
DOES> ( i -- 'cell) SWAP 2* + ;
8 ARRAY STATUS ( channel# -- adr )
8 ARRAY TENOR ( " )
8 ARRAY UPSHOT ( " )
: STABLE 8 0 DO 0 I STATUS ! 1000 I TENOR ! -1 I UPSHOT ! LOOP ;
³o´N¬O§Ú̩һÝnªº¥þ³¡ªº½X¡C ¤À¸Ñ¥X¥\¯à¨ì©w¸q¦r¤§¤¤~T64BY1;¡]Factoring Out Functions into Defining Word¡^
¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w À˵ø¤U±³o¨Ç½Xªºµ²ºc¡]¥ý§OºÞ¥¦Ìªº¥Î³~ --§A¦bµy«á·|¬Ý¨ì³o¬Û¦Pªº¨Ò¤l¡^¡G : HUE ( color -- color' ) 'LIGHT? @ OR 0 'LIGHT? ! ;
: BLACK 0 HUE ;
: BLUE 1 HUE ;
: GREEN 2 HUE ;
: CYAN 3 HUE ;
: RED 4 HUE ;
: MAGENTA 5 HUE ;
: BROWN 6 HUE ;
: GRAY 7 HUE ;
¤W±ªº¤è¦¡¦b§Þ³N¤W»¡¨Ó¬O¥¿½Tªº¡A¦ý¤ñ°_¤U±¨Ï¥Î©w¸q¦rªº¤è¦¡¡A¦b°O¾ÐÅé¨Ï¥Îªº®Ä ²v¤W´N®t¤F¤@¨Ç¡G : HUE ( color --) CREATE ,
DOES> ( --color ) @ 'LIGHT? @ OR 0 'LIGHT? ! ;
0 HUE BLACK 1 HUE BLUE 2 HUE GREEN
3 HUE CYAN 4 HUE RED 5 HUE MAGENTA
6 HUE BROWN 7 HUE GRAY
¸g¥Ñ¨Ï¥Î©w¸q¦r¡A§ÚÌ¥i¥H¬Ù¤U¨CÓ½sͧ¹¦¨ªº«_¸¹©w¸q¦bµ²§ô®É©Ò»Ýnªº¡yEXIT¡zªº¦a §}¡C¡]¦b16¦ì¤¸ªº²Å¦¡¨t²Î¤W¡A8Ó©w¸q¦@¬Ù¤U14¦r¤¸ªº°O¾ÐÅé¡^¦Ó¥B¡A¦b«_¸¹©w¸q ¤¤¨C°Ñ¦Ò¨ì¤@Ó¼ÆÈ¡A«h·|¦h½s¤J¤@Ó¡yLIT¡zªº¦a§}¡C¡]¦A¥[2Ó¦r¤¸¡^ ¦b¥iŪ©Ê¤W¡A¦]¬°¸g¥Ñ³oÓ©w¸q¦r©Ò©w¸q¥Xªº©Ò¦³ÃC¦â¡A³£ÄÝ©ó¦P¤@®a±Ú¡A¦b ·N¸q¤W§ó¬Oµ´¹ïªº²M´·¡C ©w¸q¦r³Ì±j¦Ó¦³¤O¤§³B¦b¡A·í¤@¨t¦Cªº©w¸q³£¦@¨ÉµÛ¬Û¦Pªº¡u½sĶ®É°Ïªº¦æ¬°¡v®É¡A ´N·|¥YÅã¥X¨Ó¡C³oÓ¥DÃD¬O¤@Óµy«áªº³¹¸`"½sĶ®É°Ïªº¤À¸Ñ"©Òn°Q½×ªº¡C
¦b¹ï¤À¸Ñªº§Þ¥©¦³©Ò¤F¸Ñ¤§«á¡A²{¦bÅý§Ṵ́Q½×¤@¨Ç¤À¸Ñ²Å¦¡©w¸qªº·Ç«h¡C¥¦Ì¥] §t¤F¡G 1. ¨î¤@Ó©w¸qªº¤j¤p 2. ¨î«½Æ¥X²{ªº½X 3. ©R¦Wªº¯à¤O 4. ¸ê°TÁôÂà 5. ²¤Æ"©R¥Oªº¤¶±"
¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w
¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w
¤@Ó¦rªº©w¸qÀ³¸Ó¬O¤@¦æªø¡C¨º¬O¥Ø¼Ð¡C
·í§A¦³¤@°ï¦r¡A¥¦Ì¦b¦Û¤vªº²z¥Ñ¤W¥þ³£¬O¦³¥Îªº --¤]³\¬O¦b°£¿ù¤W¡B©Î¬°¤F±´¨s ¨Æ±¡¡A¦ý¤£¥iÁ×§KªºÁ`¦³¥¦Ì¦s¦bªº²z¥Ñ--
§A¯à·Pı¨ì§A¤w¸gÂ^¨ú¨ì¤F°ÝÃDªº¥»½è ¡A¦Ó³o¨Ç¦r¤]¥¿«ê·íªºªí¹F¥X¥¦¤F¡C µu¤pªº©w¸q·|µ¹§A¤@ºØ¦nªº·Pı¡C ¹ïMoore¥ý¥Íªº¤@ÓÀ³¥Îµ{¦¡©Ò°µªº¤@¶µ«D¥¿¦¡ªºÀˬdÅã¥Ü¥X¡A¥L¦b¨CÓ©w¸q¤¤¡A¥§¡¥Î ¨ì7Óµü©M¼ÆÈ¡C³o«Ü©úÅã¦a¬O¤@Óµu¤pªº©w¸q¡C¡]¹ê»Ú¤W¡A¦b¥Lªº½X¤¤¡A¤@¦æªº©w¸q©M ¤G¦æªº©w¸q¡A¤À§O¦û¦³¬ù50¢Hªº¤ñ¨Ò¡^ ¤ß²z¾Ç¤Wªº¸ÕÅçÅã¥Ü¡A¤HÃþªº¤ßÆF¦P¤@®É¨è¥u¯à¶°¤¤¥¦ªº·NÃѨì¤C¥ó¥ª¥kªº¨Æ±¡ ¤W[2]¡C¦ý¬O¡A¤£¤À±Þ©]ªº¡A¤ßÆFªº¥¨¤j¸ê·½«o¼ç·NÃѦaÀx¦s¤U¥¨¶qªº¸ê®Æ¡A¨Ã«Ø¥ß¨ä¶¡ ªºÃöÁp¡A¤Î¸Ñ¨M°ÝÃD¡C §Y¨Ï§Ú̪º¼ç·NÃÑ¤ßÆFª¾¹D¤@ÓÀ³¥Îµ{¦¡ªº¨CÓ³¡¥÷¡A§Ú̯U¯¶Æ[ÂIªº·NÃÑ¤ßÆF¤] ¥u¯à¦P®É¨Ï¨ä¤¤¤CÓ¤¸¯À¬ÛÃöÁp¡C¶W¹L³oÂI¡A§Ú̪ºª`·N¤O´N·|°Ê·n¡Cµu¤pªº©w¸q »P§Ṳ́ߴ¼ªº¯à¤O¬O¬Û¤¬§k¦Xªº¡C »¤¨Ï«Ü¦h²Å¦¡µ{¦¡³]p®v¼g¥X¹L«×¤¾ªøªº©w¸q¡A³¡¥÷ì¦]¬O¦]¬°¥L̪¾¹D¤@Ó©w¸q ªº"ÀY³¡"·|¦û¥Î¤@¨Çµü¨åªºªÅ¶¡¡C¤À¸Ñ°µªº·U¤Ö¡A¦W¦r´N·U¤Ö¡A°O¾ÐÅ骺®ö¶O¤]·U¤Ö¡C ªº½T¬O·|¥Î¥h¸û¦hªº°O¾ÐÅé¡A¦ý«ÜÃø»¡¨º¨Ç¥Î¨ÓÀ°§U§A´ú¸Õ¡B°£¿ù©M¥æ½ÍªºªF¦è ¬O¤@ºØ"®ö¶O"¡C¦pªG§AªºÀ³¥Îµ{¦¡«Ü¤j¡A¨º»ò¸ÕµÛ¥h¨Ï¥Î"¤TÓ¦r¤¸ªø«×ªº©R¦W"¤è¦¡ ¡]¦ý¤´«O¯d«ì´_¨Ï¥Î¥þ¦Wªº¯à¤O¡A¥HÁ×§K¦b¯S§O±¡ªp¤U¡A¦W¦r¤Wªº½Ä¬ð¡^¡C ¦pªG³o¼Ë°µ¤§«á¡AÀ³¥Îµ{¦¡¤´µM¤Ó¤j¡C¨º»ò¦Ò¼{Âà´«¨ì¤@Ó¦³©µ¦ù°O¾ÐÅ骺¦hÓ µü¨åªº²Å¦¡¨t²Î¡A©ÎªÌ¥t¤@Ó§ó¦nªº¤è¦¡¡A¨Ï¥Î¤@Ó¦³32¦ì¤¸©w§}ªÅ¶¡ªº²Å¦¡¨t²Î¡C ¥t¤@Ó¬ÛÃöªºÅU¼{¬O¡A®`©È¹L¦hªº¤À¸Ñ±N·| --¦]¬°²Å¦¡¤º³¡¸Ñ;¹¹B§@ªº®É¶¡ ¯Ó¶O-- ³y¦¨©Ê¯à¤Wªº°§C¡C³oÂI¤]¬O¹ïªº¡A¨C¤@¼h©I¥sªº½T¬On¥I¥X¤@¨Ç¥N»ù¡C¦ý¦b ¥¿±`ª¬ªp¤U¡A¸g¥Ñ¾A·íªº¤À¸Ñ¡A³oÃB¥~ªº©I¥s©Ò¥I¥Xªº¥N»ù¬O¬dı¤£¨ìªº¡C¦pªG°õ¦æ³t «×ªº»Ý¨D¯uªº³o»ò¨S¦³¦ùÁY¾l¦a¡A¨º»ò¯u¥¿ªº¸Ñ¨M¤è¦¡¡AÁÙ¬OÀ³¸Ó§â¤@¨Ç¦r§ï¼g¬°²Õ¦X »y¨¥©w¸q¡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 ¤£nÅý§Aªº¦Û¶Æ¯¸¥X¨Ó»¡¡G¡uÁöµM½ÆÂø¡A¦ý§ÚÁÙ¬O¯à¥H³o¼Ë¦a¤è¦¡¨Ó¸Ñ¨M¥¦¡I¡v¡C²Å¦¡½X µ´¤£À³¸ÓÅý¤H·P¨ü¨ì¨ººØ¥O¤H¤£§Öªº½ÆÂø«×¡C¤À¸Ñ¥¦¡I
¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w
¶i¦æ¤À¸Ñªº±¡ªp¤§¤@¬O·í§A·Pı¦n¹³·|¤Þ¤J¤@Ó¿ù»~®É¡C¯n¬Ý¨ì¤@ÓÂù¼hªº¡yDO
LOOP¡zµ²ºc¥X²{¡A¨º´N¬O¤@Ó"¤£¹ï«l¤F"ªºÄµ¥Ü¡A¦]¬°¥¦±N¬OÃø¥H°£¿ùªº¡C§Ú´X¥G ¤@©w·|±N¤º¼hªº¡yDO LOOP¡z°j¸ô¤À¸Ñ¥X¨Ó¦¨¬°¤@Ó¦r¡C
¬°¤F´ú¸Õªº¥Øªº¦Ó¤À¸Ñ¥X¨Óªº¦r¡A¨S¦³²z¥Ñ¦A±N¥¦¶ë¦^¥h¡C§A¦b¥¦²Ä¤@¦¸¥X²{ ªº¦a¤èµo²{¡A±N¥¦¤À¸Ñ¥X¨Ó¬OÓ¥¿½Tªº°µªk¡C¨S¦³¤H¯à«Oµý§A¤£·|¦A¦¸¦a»Ýn¥¦¡C
³o¸Ì¬O¦P¤@Óì«hªº¥t¤@±¡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 ¯S§O¬O·í§A·Pı¦n¹³»Ýn´£¿ô§A¦Û¤v¦³¨Ç¤°»òªF¦è¦b°ïÅ|¤W®É¡A³o©Î³\¥¿¬O"Â_¶}¨Ó"ªº ¦n®É¾÷¡C °²³]§A¦³ ... BALANCE DUP xxx xxx xxx xxx xxx xxx xxx
xxx xxx xxx xxx xxx ( -- balance ) SHOW ...
³o¬q½X¥Hpºâ±b¥Øªº¥¿Å¶}©l¡A¨Ã¥HÅã¥Ü¥¦°µ¬°µ²§ô¡C¦b¨ä¶¡¡A¦P®É¥t¦³´X¦æ½X¡A¦]¬° »Ýn¦Ó¨Ï¥ÎµÛ³oÓ¥¿ÅÈ¡C¯à°÷¬Ý¥X·í¡ySHOW¡z°õ¦æ®É¡A³oÓÈÁÙ¤´µM¯d¦b°ïÅ|¤W¡A¨Ã ¤£®e©ö¡A©Ò¥Hµ{¦¡³]p®v´N´¡¤J¤@Ó°ïÅ|µù¸Ñ¡C ³o¼Ëªº¸Ñµª³q±`¥NªíµÛ¤@ºØ¤£¨}ªº¤À¸Ñ¡C¤ñ¸û¦nªº¼gªk¬O¡G : REVISE ( balance -- ) xxx xxx xxx xxx xxx xxx xxx
xxx xxx xxx xxx xxx xxx ;
... BALANCE DUP REVISE SHOW ...
¥¦¤£»Ýn±Ô¨Æ¦¡ªº°ïÅ|¹Ïµe¡C¦Ó¥B¡Aµ{¦¡³]p®v²{¦b¦³¤F¤@Ó¥i¥H¦A«×¨Ï¥Îªº¡B¥i³Q´ú¸Õ ªº°Æ©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 ¤À¸Ñªº²Ä¤GÓ²z¥Ñ --®ø°£µ{¦¡½Xªº«½Æ¬q¸¨-- ³on¤ñ´î¤p©w¸qªº¤Ø¤o§ó¬°«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
·í¤@Óµü¥u¬O¤@°ïªF¦èªº®ÉÔ¡A¥¦¹ïµ{¦¡¦b·N«ä¤Wªº²M´·«×¡B©ÎªÌ°£¿ù¤Wªº¤è«K¡AÁö µM¬O¦³¥Îªº¡A¦ýÁ`¤ñ¤£¤W¨ººØ¯à³Q¦h¦¸¨Ï¥Îªºµü¨º»ò¦n¡C¤@ÓµüY¬O¥u³Q¨Ï¥Î¤@¦¸¡A
§A´N¸Ó¦Ò¼{¥¦¬O§_ȱo¦s¦b¡C ¦³³\¦h¦¸¡A·í¤@Óµ{¦¡ªº¤Ø¤oÅܱo¤Ó¤jªº®ÉÔ¡A§Ú´N¦^ÀY´M§ä¨º¨Ç·|¤Þ°_§Úªºª`·N
ªº¤ù»y¡A¬Ý¬Ý¬O§_¯à°÷±N¥¦Ì¤À¸Ñ¥X¨Ó¡C¹q¸£°µ¤£¤F³o¥ó¨Æ¡F¦]¬°¨ä¤¤¦³¤Ó¦hªºÅÜ ¼Æ¡C ¦b¦^ÅU§Aªº¤u§@®É¡A§A¸g±`¯àµo²{¬Û¦Pªº¤ù»y¡B©Î«½Æ¥X²{¤F¦n´X¦¸ªºµü¥y¡C¦b§Ú¼g¤@ Ó½s¿è¾¹®É¡A§Úµo²{¤U±³oÓ¤ù»y«½Æ¥X²{¤F¦n´X¦¸¡G FRAME CURSOR @ + ¦]¬°¥¦¥X²{¤F¦n´X¦¸¡A©Ò¥H§Ú±N¥¦¤À¸Ñ¥X¨Ó¦¨¬°¤@Ó·s¦r¡yAT¡z ¡C §A¦Û¤vn¯à¤À¿ë¥X¨º¨Ç¼g¥X¨Ó¤£¦P¡A¦ý¥\¯à¤W«o¬O¬Û¦Pªº½X¡A¨Ò¦p¡G FRAME CURSOR @ 1- + ¨ä¤¤¡y1-¡zªº¥X²{¨Ï³oÓ¤ù»y¬Ý¦ü¤£¦P©ó¡yAT¡zªº©w¸q¡A¦ý¨Æ¹ê¤W¡A¥¦¯à³Q¼g¦¨¡G AT 1- ¥t¤@¤è±¡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ª¼¥Ø¦a§ì¦í¨º¨Ç«½ÆªºªF¦è¡A¥¦Ì¤]³\¨S¤°»ò¥Î³B¡C¨Ò¦p¡A¦b¬Y¤@ÓÀ³¥Î¤¤ªº¤@ ¨Ç¦a¤è¡A§Ú¨Ï¥Î¨ì¤U±ªº¤ù»y¡G BLK @ BLOCK >IN @ + C@ §Ú§â¥¦©w¸q¬°¤@Ó·s¦r¡yLETTER¡z¡A¦]¬°¥¦¶Ç¦^³Q¸Ñ;¹©Ò«üµÛªº¦r¥À¡C ¦b¤@Óµy«áªºª©¥»¤¤¡A§Ú·N¥~¦a¥²¶·¼g¥X¡G BLK @ BLOCK >IN @ + C! §ÚµLªk¨Ï¥Î¤w¸g¦s¦bªº¡yLETTER¡z¡A¦]¬°¦¹³B¤£¬O¥H¡yC@¡z°µ¬°µ²§ô¡C§Ú¤£Ä@¦b·sª©¥»¤¤ «½Æªº¨Ï¥Î³o¤@¤j¶ôªº¤ù»y¡A¦Ó¿ï¾Ü«·s±N¡yLETTER¡z¤À¸Ñªº§ó²Ó½o¨Ç --§â¡yC@¡z®³ ¥X¨Ó¡CµM«á¡A¥Îªk´NÅܦ¨¤F¬O¡yLETTER C@¡z©ÎªÌ¡yLETTER C!¡z¡C³oÓ§ïÅÜ»Ýn§Ú·j´M ¾ãÓµ{¦¡¡A§ä¥X©Ò¦³¥X²{¡yLETTER¡z¤§³B¡A¨Ã¥H¡yLETTER C@¡z¨Ó¨ú¥N¥¦¡C§ÚÀ³¸Ó¦b ¤@¶}©l´N°µ¹ï¥¦¡An±N"¦a§}ªºpºâ"»P"¹ï³oÓ¦a§}ªº¹B§@"³o¤G¥ó¨Æ¤À¶}¨Ó¡C Ãþ¦ü©ó§Ú̹ï§Ü«½Æ½Xªº±¡ªp¬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 °²¦p§Aµo²{§A¦Û¤v¦b°Ñ¦Ò¥ý«eµ{¦¡¤¤©Ò¼gªº¬Y¨Ç³¡¥÷¡A¨Ã±N¥¦Ì«þ¨©¨Ó¨Ï¥Î¡A¨º»ò§A¤]³\ ¤w±N¤@Ó¯S©wªºÀ³¥Î²V¦b¤@Ó¥±`ªº¬Ýªk¤§¤¤¡C§A©Ò«þ¨©ªº¨º¥÷¦¡¼Ë¤]³\¥i¥H¤À¸Ñ¥X¨Ó¡A §@¬°¤@Ó¿W¥ßªº©w¸q¡A¦Ó³Q¨Ï¥Î¦b©Ò¦³Ãþ¦üªº±¡ª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¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢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§A¦³¤@Ó·§©À¡A¦ý¬O«o¤£¯àµ¹¥¦¤@Ó³æ¤@ªº¦W¦r¡]¤£¬O«ü¨ººØ¥Î³s¦r²Å¸¹³s±µ
µÛªº½Æ¦X¦WºÙ¡^¡A¨º»ò¥¦´N¤£¬O¤@Ó"«ê·í¦¨§Î"ªº·§©À¡C©î¸Ñ¡]decomposition¡^ªº n¥ó¤§¤@´N¬O¦³©R¦Wªº¯à¤O¡C³o¼Ë¡A·íµM§A´N·|¹ï§Aªº·§©À§ó¨ã«H¤ß¡C
§â³oÓÆ[ÂI»P²Ä¤@³¹¤¤"µ²ºc¤Æ³]p"©Ò´£¥Xªº¼Ò²Õ©î¸Ñªº·Ç«h°µ¤@¤ñ¸û¡C®Ú¾Ú¨ºÓ¤èªk¡A ¤@Ó¼Ò²Õ±N®i²{"¥\¯à©Êªº²Õ¦X"¡A¦Ó³oÂI¬O¥i¥H¸g¥Ñ¯à°÷¨Ï¥Î³æ¤@ªº¡B«D½Æ¦X©Êªº¥y¤l ¡A¨Ó´yz¥X¥¦ªº¥\¯à¦Ó±o¥HÅçÃÒ¡C²Å¦¡ªº"ì¤l"¡A¤@Ó¦W¦r¡A§ó¨ã¦³10¿¥H¤Wªº²Ó½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«e´X³¹¤¤¡A§Ṳ́w¸g¬Ý¨ì¤F¸ê°TÁôÂ꺻ùÈ¡A¯S§O¬O¦bªì¨B³]pªº¶¥¬q¡C¦b¹ê²{¶¥¬q ¤¤¡A¯à°÷°O¦í³oÓ·Ç«h¡A¤]¬O«Ü¦³À°§Uªº¡C ¤U±³oÓ«D±`µuªº©w¸q¡A¥¦°£¤FÁôÂøê°T¤§¥~¡A´X¥G¨S°µ¤°»ò¨Æ¡G : >BODY ( acf -- apf ) 2+ ; ³oÓ©w¸q¤¹³\§A¤£¥Î¨Ì¿à¦r¦b¦r¨å¤¤ªº¹ê»Úµ²ºc¡A¦Ó´N¯à±N¤@Ó"°õ¦æ½X°Ï"ªº¦a§} ¡]address of code field¡^Âà´«¬°¤@ӰѼưϦa§}¡]address of parameter field¡^¡C ¦pªG§A¦bµ{¦¡¤¤¨Ï¥Î¤F¡y2+¡z¦Ó¤£¬O¡y>BODY¡z¡A¨º»ò·íµ{¦¡»ÝnÂಾ¨ì¤@Ó¦rªºÀY³¡ ¡]header¡^»P¨³¡¡]body¡^¬O¤À¶}ªº²Å¦¡¨t²Î®É¡A§A±N¥¢¥h²¾Âà©Ê¡C¡]³o¬OKim Harris ©Ò«ØÄ³ªº¤@®M¦r --¥¦³Q¥]§t¦b²Å¦¡83¼Ð·Çªº¤@Ó¹êÅç©Ê´£Ä³¤¤[3]-- ¨ä¤¤ªº¤@Ó¦r¡^¡C ¤U±¬O¤@¸s¥i¯à³Q¥Î¨Ó¼g¥X¤@Ó½s¿è¾¹µ{¦¡ªº©w¸q¡G : FRAME ( -- a ) SCR @ BLOCK ;
: CURSOR ( --a ) R# ;
: AT ( -- a ) FRAME CURSOR @ + ;
³o¤TÓ©w¸q§Î¦¨¤F©Ò¦³¬°¤F²¾°Ê¤å¥y©Ò»Ýªº¦ì§}ªºpºâ°ò¦¡C¸g¥Ñ¥¦Ì¡A§A¥i¥H±N½s¿è ¤WªººtĶªk±q¹ï²Å¦¡°Ï¶ô¡]blocks¡^ªº¨Ì¿à§¹¥þ¦a¤À¶}¨Ó¡C ³o¦³¤°»ò¦n³B¡H¸U¤@¦bµo®iªº¹Lµ{¤¤¡A§A¨M©wn«Ø¥ß¤@Ó½s¿è½w½Ä°Ï¡A¥H«OÅ@¨Ï¥ÎªÌ ¤£¤p¤ß¥Ç¿ù®É¡A¤£·|·´±¼°Ï¶ô¤ºªº¸ê®Æ¡C§A¥u»Ý«·s©w¸q¨ä¤¤ªº¤GÓµü¡A©Î³\¹³³o¼Ë¡G CREATE FRAME 1024 ALLOT
VARIABLE CURSOR
¨ä¾lªº½X¥i¥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
¥¦¨ä¹ê¬OÓÄÝ©ó©î¸Ñ¤Wªº°ÝÃD¡C ³o¸Ì¦³Ó¨Ò¤l¡C¤U±³oÓµü¡AŪ°µ"people-to-paths"¡A¬O¥Î¨Ópºâ¥X¤@¸s¤H¤§¶¡ ©Ò¦³¥i¯àªº³q°T¸ô®|ªº¼Æ¶q¡C¡]³o¬O¤@Óµ{¦¡³]p¤p²Õªº¸g²z¤Hû©Ò»Ýnª¾¹Dªº¦nªF¦è ¡A³q°T¸ô®|ªº¼Æ¶q·|ÀHµÛ¨CÓ·s²Õûªº¥[¤J¦Ó§Ö³tªº¼W¥[¡C¡^ : PEOPLE>PATHS ( #people -- #paths ) DUP 1- * 2/ ; ³oÓ©w¸q¥u¬O°µpºâ¡C¤U±³oÓ"¨Ï¥ÎªÌªº©w¸q"·|©I¥s¡yPEOPLE>PATHS¡z¥h¶i¦æpºâ¡A µM«á¦A±Nµ²ªGÅã¥Ü¥X¨Ó¡G : PEOPLE ( #people -- ) ." = " PEOPLE>PATHS . ." PATHS" ; ³o´N·|²£¥Í¡G 2 PEOPLE = 1 PATHS
3 PEOPLE = 3 PATHS
5 PEOPLE = 10 PATHS
10 PEOPLE = 45 PATHS
§Y¨Ï§A»{¬°¡A§A¥u¬On°µ¤@Ó¯S®íªºpºâ¡A¦Ó¥B´N¯¤@¦¸¦Ó¤w¡AµM«á¦A¥H¤@ºØ¤è¦¡Åã¥Ü¨ä µ²ªG¡C¬Û«H§Ú¡A§A¬O¿ùªº¡C§A±N¨ÓÁÙ¬O·|»Ýn¦A¦^¹LÀY¨Ó¡A±N°µpºâªº³¡¥÷¤À¸Ñ¥X¨Ó¡C ¤]³\¬O¬°¤Fn¯à¥H¥kÃä¹ï»ôªº¤è¦¡Åã¥Ü³oÓ¸ê®Æ¡A¤]³\¬O¬°¤Fn±Nµ²ªG°O¿ý¦b¤@Ó¸ê®Æ®w ¤º¡A§A¤£¥i¯à¨Æ¥ýª¾¹D¡C¦ý¬O¡A¬JµM§A¦±ß¬On¤À¸Ñ¥¦ªº¡A¦ó¤£¦b²Ä¤@¦¸´N°µ¹ï³o¥ó¨Æ¡C ¡]¤£È±o¬°¤F¨º¨Ç¤Ö¼Æªº¡B¯à§K°£³o¶µ»Ýnªº±¡ªp¡A¦Ó¤Þ¶i³oºØ³Â·Ð¡C¡^ ¡y. ¡z¬O¤@Ó°ò¥»ªº¨Ò¤l¡C¡y.¡z¦b¤j¬ù99¢Hªº®ÉÔ¡A³£¬O«Ü¤£¿ùªº¡A¦ý¬O¥¦°¸º¸¬O °µªº¤Ó¦h¤F¨Çªº¡C¨Æ¹ê¤W¡A¥¦©Ò°µªº¬O¡]¦b²Å¦¡83'¤¤¡^¡G : . ( n--) DUP ABS 0 <# #S ROT SIGN #> TYPE SPACE ; °²³]§A·Qn±N¤@Ó°ïÅ|¤Wªº¼ÆÈÂà´«¬°¤@ÓASCII¦r¦ê¡A¨Ã¥B±N¥¦Àx¦s¦b¤@Ó½w½Ä°Ï¤º¡A µ¥«Ýµy«á¦A¦L¥X¡C¡y.¡z·|Âà´«¥¦¡A¦ý«o¤]·|¦L¥X¥¦¡C©ÎªÌ°²³]§An¥H"10C"ªº®æ¦¡¨Ó½s ±Æ¯ÈµP¡A§A¤£¯à¥Î¡y.¡z¨ÓÅã¥Ü³oÓ10¡A¦]¬°¥¦·|¦b«á±¥[¤W¤@ӪŮæ¡C ¦b¦³¨Ç²Å¦¡¨t²Î¤¤¡A§A¯àµo²{¨ì¤@ºØ¸û¦nªº¤À¸Ñ¡G : (.) ( n -- a # ) DUP ABS 0 <# #S ROT SIGN #> ;
: . ( n --) (.) TYPE SPACE ;
§Ú̦b²Ä¥|³¹ªºÃ¹°¨¼Æ¦rªº¨Ò¤l¤¤¡Aµo²{¥t¤@Ó¥¼¯à±Npºâ¥\¯à¦Û¿é¥X¥\¯à¤¤¤À¸Ñ¥Xªº ¨Ò¤l¡C¦b§Ú̪º¸ÑµªùØ¡A§Ṳ́£¯à±N¤@Óù°¨¼Æ¦r¦s¨ì¤@Ó½w½Ä°Ï¤º¡A©Î¬Æ¦Ü©ó¥H¤¤ ¶¡¹ï»ôªº¤è¦¡¦L¦b¤@ÓÄæ¦ì¤¤¡C¤@Ó¸û¦nªº¤è¦¡¬O¨Ï¥Î¡yHOLD¡z¥N´À¡yEMIT¡z¡C¡^ ¦³®É¤]¥i¯à¬°¤F"¸ê°TÁôÂÃ"¡A¦Ó¤£¥h°µ¤À¸Ñ¡C¨Ò¦p¡A¦pªG§A¤À¸Ñ¥X³oÓ¤ù»y SCR @ BLOCK ¦¨¤@Ó©w¸q : FRAME SCR @ BLOCK ; n°O±o¡A§A¤§©Ò¥H³o¼Ë°µ¡A¥u¦]¬°§A¬°¤F¥i¯àn§ïÅܽs¿èªº®Ø¬[¡]editing frame¡^ªº ¦ì¸m¡C¤£nª¼¥Øªº±N©Ò¦³³o¼Ë¥X²{ªº¤ù»y³£¥H¡yFRAME¡z¨Ó¨ú¥N¡A¦]¬°µy«á§A¥i¯à·|»Ýn §ïÅÜ¡yFRAME¡zªº©w¸q¡A¦Óµ{¦¡¤¤¤]¦³¯u¥¿»Ýn¨Ï¥Î¡ySCR @ BLOCK¡zªº¦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 ·Qnª¾¹D¦ó®É¸ÓÁôÂøê°T¬O»Ýnª½Ä±©M¸gÅ窺¡C¦b§Aªº¥Í²P¤¤¸g¾ú¤F³\¦h³]p³W®æªºÅÜ§ó ¤§«á¡A§A´N·|¾Ç¨ì¡A¨Æ±¡¦b±N¨ÓÁ`¬O¶É¦V©ón³Q§ïÅܪº¡C ·íµM¡A§A¬Oµ´¹ïµLªk¹w´ú¨ì¨C¥ó¨Æªº¡C°µ³o¼Ëªº¹Á¸Õ±N·|¬O®{³ÒµL¥\ªº¡A´N¦p§Ú̱N ¦b«á±ªº"¦b¹ê²{¶¥¬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¦ü«D¦Ó¬Oªº¡C¨}¦nªº¤À¸Ñ¸g±`¯à²£¥Í§ó¤Öªº¦W¦r¡C¦b²Ä¤³¹¡A§Ų́£¨ì6Ó²³æªº¦W ¦r¡]¥ª¡A¥k¡A°¨¹F¡A¹qºÏ»Ö¡A¶}¡AÃö¡^¦p¦ó¨ú¥N8Ó¤À¸Ñ¤£¨}ªº½Æ¦X¦W¦r¡C ¥t¤@Ó¨Ò¤l¬O¡A¦b¤@Óè¤Þ¶i²Å¦¡ªº³¡ªù¤¤¡A§Úµo²{¦³¤G©w¸q±u¹C¨ä¶¡¡C¥¦Ìªº ¥Øªº¯Âºé¬O±Ð¾Ç©Ê½èªº¡A¥Î¨Ó´£¿ôµ{¦¡³]p®v¥Ø«eªº¡yCURRENT¡z¦r·J©M¡yCONTEXT¡z¦r ·J¦U¬OþÓ¡G : .CONTEXT CONTEXT @ 8 - NFA ID. ;
: .CURRENT CURRENT @ 8 - NFA ID. ;
°²¦p§AÁä¤J .CONTEXT ¨t²Î±N¤ÏÀ³ .CONTEXT FORTH ¡]¥¦Ì°Ê§@¥¿½T --¦Ü¤Ö¦b¨ºùةҨϥΪº¨t²Î¤¤¬O¦p¦¹-- ¸g¥Ñ©¹¦^§ä¨ì¦r·Jªº¦WºÙ°Ï¡A ¨Ã±N¥¦Åã¥Ü¥X¨Ó¡C¡^ ³o¬q«Ü©úÅ㫽ƪº½X¤Þ°_¤F§Úªºª`·N¡A¦]¬°¥¦¶Ç¹F¥X¤À¸Ñ¤£¨}ªº«H®§¡C§Ú̯à±N «½Æªº³¡¥÷°µ¦¨²Ä¤TÓ©w¸q¡G : .VOCABULARY ( pointer --) @ 8 - NFA ID. ; ¨ÃÁYµuì¨Óªº©w¸q¬°¡G : .CONTEXT CONTEXT .VOCABULARY ;
: .CURRENT CURRENT .VOCABULARY ;
¦ý¬O¡A¦b³oÓ¤èªk¸Ì¡A³o¤GÓ©w¸qªº°ß¤@®t§O¯¦b©ÒnÅã¥Üªº«ü¼Ð¤W¡C¬JµM¦nªº¤À¸ÑÀ³¸Ó ¬O²£¥Í§ó¤Öªº¡A¦Ó¤£¬O§ó¦hªº©w¸q¡A¨º»ò¡AY¬O¥u¦³¤@Ó©w¸q¡AÅý¥¦¨ú±o¡yCONTEXT¡z©Î ¡yCURRENT¡z§@¬°¤Þ¼Æ¡A´N·|¤ñ¸û¦X²z¤F¡C ¬°¤F¿í´`¨ú¦n¦W¦rªºì«h¡A§Ú«ØÄ³¡G : IS ( adr --) @ 8 - NFA ID. ; ¥¦¤¹³\³o¼Ëªº»yªk¥X²{¡G CONTEXT IS ASSEMBLER ok ©Î¡G CURRENT IS FORTH ok ³Ìªìªº½u¯Á¬O«½Æªº½X¡A¦ý³Ì«áªºµ²ªG«o¨Ó¦Û¥ø¹Ï²¤Æ©R¥Oªº¤¶±¡C ³o¸Ì¦³¥t¤@Ó¨Ò¤l¡CIBM PC¦³¥|ºØ¤å¦rÅã¥Ü¼Ò¦¡¡G 40 column monochrome
40 column color
80 column monochrome
80 column color
§Ú©Ò¨Ï¥Îªº²Å¦¡¨t²Î¡A´£¨Ñ¤F¡yMODE¡z³oÓµü¡C¥¦¨ú±o¤@Ó0¨ì3¤§¶¡ªº¤Þ¼Æ¨Ó§ïÅÜÅã¥Ü¼Ò ¦¡¡C·íµM¡A¤ù»y¡y0 MODE¡z©Î¡y1 MODE¡z¨Ã¤£¯àÅý§Ú·Q°_þÓ¼Ò¦¡¬OþӼˤl¡C ¦]¬°§Ú»Ýn¯à¦b³o¨Ç¼Ò¦¡¤§¶¡Âà´«¡A©Ò¥H§Ú´N»Ýn¦³¤@²Õ¤è«K¦Ó¤S¦n¥Îªºµü¡A¨Ó¹ê²{ ³o¨ÇÂà´«¡C³o¨Çµü¤]¥²¶·¯à¦P®É³]©w¤@ÓÅܼơA¥¦¦sµÛ¥Ø«e¿Ã¾ªº¦æ¼Æ --40©Î80¡C ¤U±¬O¹F¨ì³oӻݨDªº³Ìª½±µªº¤è¦¡¡G : 40-B&W 40 #COLUMNS ! 0 MODE ;
: 40-COLOR 40 #COLUMNS ! 1 MODE ;
: 80-B&W 80 #COLUMNS ! 2 MODE ;
: 80-COLOR 80 #COLUMNS ! 3 MODE ;
¸g¥Ñ¤À¸Ñ¥H®ø°£«½Æªº½X¡A§ÚÌ´N¯à°µ¥X³o¼Ëªºª©¥»¡G : COL-MODE! ( #column mode -- ) MODE #COLUMNS ! ;
: 40-B&W 40 0 COL-MODE! ;
: 40-COLOR 40 1 COL-MODE! ;
: 80-B&W 80 2 COL-MODE! ;
: 80-COLOR 80 3 COL-MODE! ;
¦ý¬O¡A¸g¥Ñ¸ÕµÛ´î¤Ö©R¥Oªº¼Æ¥Ø¡A¤]¸g¥Ñ¸ÕµÛ®ø°£¨ººØ"¼Æ¦r«e¾É"©M"¨Ï¥Î³s¦r¸¹"ªº¦W ¦r¡A§ÚÌ»{ÃѨì¡A¥i¥H±N¦æ¼e°µ¬°¤@Ó°ïÅ|¤Þ¼Æ¡A¨Ã¾Ú¥Hpºâ¥X¥¦ªº¼Ò¦¡¡G : B&W ( #cols --) DUP #COLUMNS ! 20 / 2- MODE ;
: COLOR ( #cols --) DUP #COLUMNS ! 20 / 2- 1+ MODE ;
¦]¦¹§ÚÌ´N¦³¤F³o¼Ëªº»yªk¡G 40 B&W
80 B&W
40 COLOR
80 COLOR
§Ṳ́w±N©R¥Oªº¼Æ¥Ø¥Ñ4Ó´î¤Ö¬°2Ó¡C ¦ý¤´µMÁÙ¦³¤@¨Ç«½Æªº½X¡C¦pªG§Ṳ́À¸Ñ¥X³o¬q½X¡A´N¯à±o¨ì¡G : COL-MODE! ( #columns chroma? -- )
SWAP DUP #COLUMNS ! 20 / 2- + MODE ;
: B&W ( #columns --) 0 COL-MODE! ;
: COLOR ( #columns --) 1 COL-MODE! ;
²{¦b§Ṳ́w¸gÀò±o¤F¤@Ó¸û¦nªº»yªk¡A¦P®É¤]´î¤p¤F¥Ø¦a½Xªº¤Ø¤o¡C¦b³oÓ¨Ò¤l¤¤¡A¬Ù¥h ¤F¤GÓ©R¥O©ÒÀò±oªº§Q¯q©Î³\¤£ºâ¤°»ò¡A¦ýY¬O¸û¤jªº©R¥O²Õ¡A³oÓ¦n³B´N·|¥H´X¦ó¯Å¼Æ ªº¼W¥[¡C ³Ì«á¤@Ó¨Ò¤l¬O¡A¦b¤@Ó¯S§Oªº¨t²Î¤¤¡A¥Î¨Óªí¥Ü¦â±mªº¤@²Õ¦r¡C¨Ï¥Î¹³¬O"ÂŦâ" ¡B"¬õ¦â"³o¼Ëªº¦W¦r·|¤ñ¨Ï¥Î¼Æ¦r¦n¡C¸Ñµª¤§¤@¥i¯à¬O¹³³o¼Ëªº©w¸q¡G 0 ±`¼Æ ¶Â¦â 1 ±`¼Æ ÂŦâ
2 ±`¼Æ ºñ¦â 3 ±`¼Æ ÀQ¦â
4 ±`¼Æ ¬õ¦â 5 ±`¼Æ ¾í¦â
6 ±`¼Æ ´Ä¦â 7 ±`¼Æ ¦Ç¦â
8 ±`¼Æ ·t¦Ç 9 ±`¼Æ ²HÂÅ
10 ±`¼Æ ²Hºñ 11 ±`¼Æ ²HÀQ
12 ±`¼Æ ²H¬õ 13 ±`¼Æ ²H¾í
14 ±`¼Æ ¶À¦â 15 ±`¼Æ ¥Õ¦â
³o¨Ç¦â±m¯à°t¦X¹³¬OI´º¡B«e´º¡B®Ø¬É³o¤@Ãþªºµü¤@°_¨Ï¥Î¡G ¥Õ¦â I´º ¬õ¦â «e´º ÂÅ¦â ®Ø¬É ¦ý³o¼Ëªº¸Ñµª»Ýn16Ó¦W¦r¡A¦Ó¥B¨ä¤¤«Ü¦h¬O±a¦³³s¦r²Å¸¹ªº¡]͵ù¡G«ü^¤åªº¼gªk¡A ¦p"²HÂÅ"·|³Q¼g¦¨ LIGHT-BLUE¡^¡C¦³¿ìªk²¤Æ¶Ü¡H §Ú̪`·N¨ìÃC¦â8¨ì15¬OÃC¦â0¨ì7ªº"¸û©ú«G"ªºª©¥»¡C¡]³o¤G²Õµü¦bµwÅé¤W°ß¤@ªº®t §O¯¦b¤@Ó"±j«×¦ì¤¸"ªº³]©w»P§_¡^¦pªG§Ú̱N"«G«×"¤À¸Ñ¥X¨Ó¡A§Ṳ́]³\´N¯à¦³¤U± ³oӸѵª¡G ÅÜ¼Æ «G«×
: ¦â±m ( ÃC¦â -- ) «Ø³y ³r¤J
¦æ¬° ( -- ÃC¦â ) Ū¨ú «G«× Ū¨ú OR 0 «G«× ¦s¤J ;
0 ¦â±m ¶Â¦â 1 ¦â±m ÂŦâ 2 ¦â±m ºñ¦â
3 ¦â±m ÀQ¦â 4 ¦â±m ¬õ¦â 5 ¦â±m ¾í¦â
6 ¦â±m ´Ä¦â 7 ¦â±m ¦Ç¦â
: ²H 8 «G«× ¦s¤J ;
¦b³o¼Ëªº»yªk¤U¡A¡yÂŦâ¡z³oÓµü±N¦b°ïÅ|¤W¶Ç¦^¤@Ó"1"¡A¦ý¬O¤ù»y¡y²H ÂŦâ¡z±N·| ¶Ç¦^¤@Ó"9"¡C¡]³oÓºò¾Fªº¡y²H¡z·|³]©w¤@ÓºX¼Ð¡AµM«á¥¦³Q¡y¦â±m¡z©Ò¨Ï¥Î¡A¨Ã¥B ¦A³Q²M°£¬°0¡C¡^¦pªG¯un¦Ò¼{¨ì¥iŪ©Ê¡A§Ṳ́]³\·|©w¸q¥X¡G 8 ¦â±m ·t¦Ç
14 ¦â±m ¶À¦â
¦A¤@¦¸¦a¡A¸g¥Ñ³oºØ¤è¦¡¡A§Ṳ́S§¹¦¨¤F¤@Ó¸û¥O¤H´r§Öªº»yªk»P¸ûµu¤pªº¥Øªº½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
³oÓ¤ù»y OVER + SWAP ¦b¤@¨ÇÀ³¥Î¤¤«Ü±`¨£¡C¡]¥¦Âà´«¤@Ó¦a§}»Pp¼ÆÈ¬°¤@Óµ²§ô¦a§}»P°_©l¦a§}¡A¥H¾A ¦X¡yDO LOOP¡zªºµ²ºc¨Ï¥Î¡C¡^ ¥t¤@Ó±`¥Îªº¤ù»y¬O 1+ SWAP ¡]¥¦±N"²Ä¤@Ó¯Á¤ÞÈ"¤Î"³Ì«á¤@Ó¯Á¤ÞÈ"ªº¶¶§Ç«·s¦w±Æ¬°"³Ì«á¤@Ó¯Á¤ÞÈ¥[¤@" ¤Î"²Ä¤@Ó¯Á¤ÞÈ"ªº·s¶¶§Ç¡A¥H¨Ñ¡yDO¡z³oÓµü©Ò»Ý¡C¡^ §â³o¨Ç¤ù»y¤À¸Ñ¥X¨Ó°µ¦¨¤@Óµü¡A¹³¬O¡yRANGE¡z¡]«e±¨º¤@Ó¤ù»y¡^¡A¬O¦³¨Ç¥O¤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
¨ºÓ¯S§Oªº¤ù»y¡yOVER +
SWAP¡z´N«ê¦b"¬O§_n¦¨¬°¤@Ó¦³¥Îªºµü¡H"ªºÃä½t¤W¡C¸g ±`ªº¡A§A§â¬Y¤@¨ÇªF¦è©w¸q¦¨¤@Óµü¡A¦Óµ²ªG¬O§A¥u¨Ï¥Î¥¦¤@¦¸¡C¦pªG§A§â³o¼Ëªº
¤@Ó¤ù»y©w¥X¦W¦r¡A§A·|«ÜÃø°O¦í¡yRANGE¡z½T¹ê°µ¤F¤°»ò¡C¦b§Aªº¤ß¤¤¡A§A¬Ý¤£¨ì ³oÓ¾Þ§@¡C¡yOVER +
SWAP¡z¤ù»y¤ñ°_¡yRANGE¡z³oÓµü¦³¸û¤jªº§U¾Ð©Ê¡]mnemonic value¡^¡C §ÚºÙ³oÃþ¤ù»y¬°"³¯µÄÀݽÕ"¡C¥LÌÂH¦b¤@°_¡A¥Hªí¥Ü¤@ºØ¦³·N¸qªº¥\¯à¡C§A¤£¥²¥h"°O¦í" ³oÓ¤ù»y¬O¦p¦ó¤u§@ªº¡A¥un°O¦í¥¦°µ¤F¤°»ò´N¦n¤F¡C¦Ó¥B§A¤]¤£»Ýn¦A¦h°O¤@ÓÃB¥~ ªº¦W¦r¡C ½sĶ®É°Ï¤ºªº¤À¸Ñ¡]Compile-Time Factoring¡^ ¦b³Ì«á³o¤@¸`¡A§Ú̱NÀ˵ø«Ü¦hºØ¥Î¨Ó²Õ´µ{¦¡½X©M¸ê®Æªº§Þ¥©¡A¥H´î¤Ö«½Æ©Ê ¡]redundance¡^¡C §Ṳ́]¯à±N¦³«½Æ¡]limited redundance¡^ªºì«h¥Î¦b½sͤW¡AÅý²Å¦¡¬°§ÚÌ °µ¤@¨Ç·Ð¤Hªº¤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§ÚÌÀ³¥Î¤¤»Ýnµe¥X¹³¹Ï6-1ªº9Ó²°¤l¡C ¹Ï6-1 §ÚÌ©ÒnªºÅã¥Ü ¦b³oÓ³]p¤¤¡A§ÚÌ»Ýn±`¼Æ¨Ó¥Nªí¨CÓ²°¤lªº¤Ø¤o¡A²°¤l¶¡ªºªÅ»Ø¡A²Ä¤@Ó²°¤l ªº¥ª¤W¨¤®y¼Ðµ¥µ¥ªº¸ê°T¡C«Ü¦ÛµM¦a¡A§Ú̯à©w¸q¡G 8 ±`¼Æ ²°¼e
5 ±`¼Æ ²°°ª
4 ±`¼Æ ¸ô¼e
2 ±`¼Æ µó¼e
¡]µó¬°ªF¦è¦V¡F¸ô¬°«n¥_¦V¡C¡^ ²{¦b¡A¬°¤Fn©w¸q¥¦ªº¥ªÃä¬É¡A§Ṳ́]³\¥ý¦b¤ß¤¤pºâ¥X¥¦¡C§ÚÌ·Qn§â³o¨Ç²° ¤l©ñ¦b¤@Ó80¦æ¼eªº¿Ã¹õ¤¤¶¡¦ì¸m¡C§ÚÌ¥ý±N¥¦ªº¼e«×±q80¤¤´î¥h¡A¦A°£¥H2¥H±o¨ì¥ªÃä ¬É¡C¥þ³¡²°¤l©Ò¦ûªº¼e«×¬° 8 + 4 + 8 + 4 + 8 = 32 ¡]¤TÓ²°¼e¥[¤W¤G±ø¸ô¼e¡^¡C (80-31) / 2 = 24. ©Ò¥H¡A§Ú̫ܦ۵M¦a©w¸q¡G 24 ±`¼Æ ¥ªÃä¬É ¦P¼Ëªº¤èªk¤]¥Î¨Ópºâ¡y¥kÃä¬É¡z¡C ¦ý¬O¡A¸U¤@±N¨Ó§ÚÌ»Ýn«·s³]p³oӹϮסA²°¼e§ïÅܤF¡A¤]³\²°¶¡ªºªÅ»Ø¤]§ïÅÜ ¤F¡H§ÚÌ´Nn«·s¦Apºâ¥XÃä¬É¡C ¦b²Å¦¡ªºÀô¹Ò¤U¡A§Y¨Ï¦b½sĶ®É°Ï¤¤¡A§Ṳ́]¯à¥R¥÷¦a¹B¥Î²Å¦¡ªº¥þ³¡¯à¤O¡C¬° ¦ó¤£Åý²Å¦¡¬°§Ṵ́µpºâ©O¡H ²°¼e 3 * ¸ô¼e 2 * + 80 ¹ï½Õ - 2/ ±`¼Æ ¥ªÃä¬É
²°°ª 3 * µó¼e 2 * + 24 ¹ï½Õ - 2/ ±`¼Æ ¤WÃä¬É
¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢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°õ¦æ®É¡A³o¨Çpºâ¨Ã¤£¥X²{¡A©Ò¥H°õ¦æªº³t«×¤£¨ü¼vÅT¡C ³o¸Ì¬O¥t¤@Ó¨Ò¤l¡C¹Ï6-2ªº½X¬O¥Î¨Óµe¥X¤@Ó¥~§Î¡Cµü¡yDRAW¡z·|¦b¡yPOINTS¡z ªí¤¤ªº¨C¤@Óxy®y¼Ð¦ì¸m¤Wµe¤W¤@Ó¬P¸¹¡C¡]ª`·N¡Gµü¡yXY¡z·|±N´å¼Ð©w¦ì¨ì°ïÅ|¤W ©Ò«üªº ( x y )®y¼Ð¤W¡C¡^ ª`·N¸ò¦bªí«á±ªº¨º¤@¦æ½X¡G HERE POINTS - ( /table ) 2/ CONSTANT #POINTS ¹Ï6-2 "½sͮɰÏ"¤¤¦³«½Æªº¥t¤@Ó¨Ò¤l : P ( x y --) C, C, ;
CREATE POINTS
10 10 P 10 11 P 10 12 P 10 13 P 10 14 P
11 10 P 12 10 P 13 10 P 14 10 P
11 12 P 12 12 P 13 12 P 14 12 P
HERE POINTS - ( ?table ) 2/ CONSTANT #POINTS
: @POINTS ( i --x y ) 2* POINTS + DUP 1+ C@ SWAP C@ ;
: DRAW #POINTS 0 DO I @POINTS XY ASCII * EMIT LOOP ;
¤ù»y¡yHERE POINSTS -¡z¥Î¨Ópºâ¥Xªí®æ©Ò¥Î±¼ªº¦r¤¸¼Æ¡C±N³oÓȰ£¥H2¡A´N·|±o¨ìªí¤¤ªºÂIªº¼Æ¶q¡F³oÓÈ´NÅܦ¨±`¼Æ¡y#POINTS¡z¡A³Q¡yDRAW¡z¤¤ªº¡yDO LOOP¡z©Ò¨Ï¥Î¡C
Åý§Ú̹ï¦P¤@Ó°ÝÃD --©w¸q¥X¤@²Õ¬ÛÃöªº¦a§}-- À˵ø¤@¨t¦Cªº°µªk¡C¤U±¬O²Ä¤@ºØ¹Á¸Õ¡G HEX 01A0 CONSTANT BASE.PORT.ADDRESS
BASE.PORT.ADDRESS CONSTANT SPEAKER
BASE.PORT.ADDRESS 2+ CONSTANT FLIPPER-A
BASE.PORT.ADDRESS 4 + CONSTANT FLIPPER-B
BASE.PORT.ADDRESS 6 + CONSTANT WIN-LIGHT
DECIMAL
³oÓ¥D·N¬O¥¿½Tªº¡A¦ý¬O°µªk«o«ÜÃø¬Ý¡C°ß¤@§ïÅܪº¤¸¯À¬O¤@Ӧ첾ȩMn³Q©w¸qªº°ðªº¦W¦r¡F¨ä¥¦¨C¥ó¨Æ³£¬O«½Æªº¡C³oºØ«½Æ©Ê«ØÄ³§Ų́ϥΤ@Ó©w¸q¦r¡C : PORT ( offset --) CREATE ,
DOES> ( -- 'port ) @ BASE.PORT.ADDRESS + ;
0 PORT SPEAKER
2 PORT FLIPPER-A
4 PORT FLIPPER-B
6 PORT WIN-LIGHT
¦b³oӸѵª¤¤¡A§Ú̦b¨C¦¸©I¥s³o¨Ç¦W¦rªº®ÉÔ¡A¤~¶i¦æ¦ì²¾Èªºpºâ¡]°õ¦æ®É°Ï¡^¡C : PORT ( offset -- ) BASE.PORT.ADDRESS + CONSTANT ;
\ DOES> ( -- 'port )
0 PORT SPEAKER
2 PORT FLIPPER-A
4 PORT FLIPPER-B
6 PORT WIN-LIGHT
¦b³o¸Ì§Ú̫سy¤@Ó©w¸q¦r¡yPORT¡z¡A¥¦¦³¤@Ó¿W¯Sªº"½sͮɰÏ"ªº¦æ¬°¡A´N¬O§â¦ì²¾È¥[¨ì¡yBASE.PORT.ADDRESS¡z¤W¡A¨Ã¥B¥Î¥¦©w¸q¥X¤@Ó±`¼Æ¡C 0 2 4 6 ¥»¨´N¬O¦h¾lªº¡C : PORT ( 'port -- 'next-port ) DUP CREATE , 2+ ;
\ DOES> ( -- 'port )
BASE.PORT.ADDRESS
PORT SPEAKER
PORT FLIPPER-A
PORT FLIPPER-B
PORT WIN-LIGHT
DROP ( port.address )
ª`·N¡A¦b§ÚÌ©w¸q²Ä¤@Ó¿é¥X¤J°ð¤§«e¡A¥²¶·¥ý¦b°ïÅ|¤W´£¨Ñ¨ºÓªì©lªº¦a§}¡AµM«á¡A·í§Ú̧¹¦¨¤F©w¸q©Ò¦³ªº¿é¥X¤J°ð¤§«á¡A¦A¥Î¡yDROP¡z°£¥h³Ì«á¤´¯d¦b°ïÅ|¤Wªº¦a§}¡C
¦b¥»®Ñ¤¤ªº«e±³¡¥÷¡A§Ṵ́Q½×¹L¤ÏÂЧ@¬°ªº¤è¦¡¡A¯S§Oª`·N¨ì¥¦¹ï³]p¶¥¬qªº¼vÅT¡C²{ ¦b§ÚÌ¥¿°Q½×¨ì¹ê²{¶¥¬q¡AÅý§Ú̬ݬݳoºØ¤è¦¡¦p¦ó¯u¥¿¦a³Q¨Ï¥Î¦b¼g½X¤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
°²³]§Ú̳Q¥æ¥I¤@Ó¼g½Xªº¤u§@¡An«Ø¤@Óµü¨Óµe¥X©Î«ø°£¦bx-y®y¼Ð¤Wªº²°¤l¡C¡]³o¬O §Ú̦b"½sĶ®É°Ïªº¤À¸Ñ"¤@¸`¤¤©Ò´£¹Lªº¬Û¦P°ÝÃD¡C¡^ §Ú̺¥ý¶°¤¤ª`·N¤O¦bµe²°¤l¤W¡A¼È®É¤£nºÞ«ø°£¥¦³o¥ó¨Æ¡C§ÚÌ¥i¯à°µ¥X¡G : LAYER WIDE 0 DO ASCII * EMIT LOOP ;
: BOX ( upper-left-x upper-left-y -- )
HIGH 0 DO 2DUP I + XY LAYER LOOP 2DROP ;
¦b¸g¹L´ú¸Õ¨Ã½T©w¥¦¯à¥¿±`¤u§@¤§«á¡A§Ú̲{¦bÂà¦V¦p¦ó¨Ï¥Î¬Û¦Pªº½X¨ÓÀ¿«ø²°¤lªº°ÝÃD ¤W¡C³oÓµª®×¬O²³æªº¡G§ÚÌ¥un±N°e¥Xªº½X¥Ñ¤@Ó¬P¸¹§ï¬°¤@ӪťմN¥i¥H¤F¡C³o»Ý n¼W¥[¤@ÓÅܼƩM¤@¨Ç³]©w¥¦¤º®eªºµü¡C©Ò¥H¡G VARIABLE INK
: DRAW ASCII * INK ! ;
: UNDRAW BL INK ! ;
: LAYER WIDTH 0 DO INK @ EMIT LOOP ;
BOX ªº©w¸q¡A©MÀ³¥Îµ{¦¡¤¤ªº³Ñ¾l³¡¥÷¡A³£«O«ù¤£ÅÜ¡C ³oӤ覡¤¹³\¤U±ªº»yªk ( x y ) DRAW BOX
~FB7BB1; ©Î~I;
( x y ) UNDRAW BOX
¸g¥Ñ±q¤@Ó©ú½TªºÈÂàÅܬ°¤@Ó¥]§tµÛ¤@ÓȪºÅܼơA§Ú̼W¥[¤F¤@¼hªº¶¡±µ¡]a level of indirection¡^¡C¦b³oÓ¨Ò¤l¡A§ÚÌ"¤Ï¦V"¦a¥[¤W¤F³o¼h¶¡±µ¡A¤]´N¬O¦b¡yLAYER¡zªº ©w¸q¤¤¥[¤W¤@¼h·sªº½ÆÂø©Ê¡A¦Ó¤£¬O¼W¥[³oÓ©w¸qªºªø«×¡C ¸g¥Ñ¤@¦¸¥uP¤O©ó¤@Ó°ÝÃD±¤W¡A§A´N¯à§ó¦³®Ä²vªº¸Ñ¨M°ÝÃDªº¨CÓ±¬Û¡C¦pªG§A ªº·Qªkùئ³Ó¿ù»~¡A¥¦´N¤£·|³Q¨º¨Ç©|¥½¸g´ú¸Õ¤ÎÅçµýªº¥t¤@±¬Ûªº½X©Ò±»»\¡A¦]¦Ó¤] ´N¯à¸û®e©ö¦a³Qµo²{¥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
·í§A¦b½s¿è§AªºÀ³¥Îµ{¦¡®É --¥[¤W¤@Ó·sªº¥\¯à©ÎªÌ×¥¿¤@¨Ç¦a¤è-- ¸g±`·|³Q»¤´b µÛ¤@¦¸´N§â¥¦Ì¦P®É³£°µ§¹©Î§ï¥¿¹L¨Ó¡C§Ú̪º©¾§i¬O¡G¤£n³o¼Ë°µ¡C ¦b¨CÓ¡u½s¿è--½sĶ¡vªº´`Àô¤¤¡A¦b§A¯à±µ¨üªº½d³ò¤º¡A¾¨¥i¯à¦a¤Ö°µ§ïÅÜ¡C¦b§A Ä~Äò¤U¤@¨B¤§«e¡An½T©w´ú¸Õ¹L¤F¨CÓ×¥¿«áªºª©¥»¡C§A·|Åå³Y¡A¦b°µ¤F¤TӬݦü²³æªº ×§ï¡A¦A«·s½sͤ§«á¡A³ºµMµo²{¨S¦³¤@Ó¬O¯à¥¿½T¤u§@ªº¡A¦Ó³oºØ±¡ªp«o¸g±`ªºµo ¥Í¡C ¤@¦¸¥u°µ¤@Ó§ïÅÜ¡A´N¯à«Oµý·í¨Æ±¡¤£¹ïªº®ÉÔ¡A§Aª¾¹Dì¦]¦ó¦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
¦³¨Ç¤H©_©Ç¬°¤°»ò¤j³¡¥÷ªº²Å¦¡¨t²Î³£¨S¦³©w¸q¤@Ó°}¦Cªºµü¡C³o±ø³W«h´N¬O²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
§Ú¸g±`¦³°}¦C³oºØµ¥¯ÅªºªF¦è¡C³Ì²³æªº°}¦C¥u¬O¥I¤©¤@Ó¦a§}¤@ӼаO¡A¦Ó³oÓ ¼Ð°O·|¶Ç¦^³oÓ¦a§}µ¹§A¡C§A¯à¹³¤U±³o¼Ë¦a©w¸q¥X¤@Ó°}¦C CREATE X 100 ALLOT µM«á»¡ X + ©ÎªÌ§A¯à»¡ : X X + ;
³Ì§xÂZ§Úªº¤@Ó°ÝÃD¬O¡A¬O§_ȱo¬°¨ºÓ¯S§Oªº¸ê®Æµ²ºc°µ¥X¤@Ó©w¸q¦r¨Ó¡H§Ú·| ¦³¨¬°÷¦hªº¦a¤è¨Ó¨Ï¥Î¥¦¡A¦Ó¨Ï§Ú¨º¦h¥I¥Xªº¤u§@ÅܪºÈ±o¶Ü¡H
§Ú«ÜÃø¨Æ¥ýª¾¹D±N¨Ó¬O§_·|»Ýn¶W¹L¤@Ó¥H¤Wªº°}¦C¡C©Ò¥H¡A³q±`§Ú¨Ã¤£©w¸q ARRAY ³oÓ¦r¡C ·í§Úµo²{§Ú»Ýn¤GÓ°}¦C¤§«á¡A°ÝÃD´N¦bÃä½t¤W¤F¡C
°²¦p§Ú»Ýn¤TÓ¡A¨º»òµª®×´N«Ü²M·¡¤F¡C°£«D¥L̬O¤£¦Pªº¡C¦Ó¸g±`¦a¡A¥LÌ«o¯u ¬O¤£¦Pªº¡C§A¥i¯à»Ýn¥¦¬°§A¨ú±o¤º®e¡A§A¤]¥i¯à»Ýn¦r¤¸ªº°}¦C¡A©Î¦ì¤¸ªº
°}¦C¡C§A¥i¯à·Qn°µ¤W¤UªºÀˬd¡A©Î¦s¤U¥¦¥Ø«eªºªø«×¥H«K§A¯à¥[¤WªF¦è¨ì¥¦ªº §ÀºÝ¡C
§Ú«rºò¤ú®Ú¨Ã¥B»¡¡A¡u§ÚÀ³¸Ó±N³oÓ¦r¤¸°}¦C°µ¦¨¤@ÓM¤¸¡]cell¡^°}¦C¡A¥H«K¯à Åý³oÓ¸ê®Æµ²ºc¾A¥Î©ó§Ú²{¦b¤w¸g¦³ªºµü¶Ü¡H¡v
°ÝÃD·U½ÆÂø¡A§A´N·U¤£®e©ö§ä¨ì¤@Ó¯à¾A¥Îªº¤@ºØ³q¥Î«¬ªº¸ê®Æµ²ºc¡C¤@Ó¯u¥¿ ½ÆÂøªº¸ê®Æµ²ºc¡A¯à°÷³Q´¶¹M¦a¨Ï¥ÎµÛªº¾÷·|¬O«Ü¤pªº¡C¤@Ó¦¨¥\ªº³oºØ¨Ò
¤l¬O²Å¦¡ªºµü¨å¡C¥¦ªºµ²ºc°í©T¡A¤S«Ü¦³¼u©Ê¡C¥¦¦b²Å¦¡¸Ì¨ì³B³Q¨Ï¥ÎµÛ¡C¦ý¬O³o ºØ¨Ò¤l²¦³º¤Ö¨£¡C
¦pªG§A¿ï¾Ü¥h°µ¥X°}¦Cªº©w¸q¦r¡A¨ä¹ê§A´N¬O§¹¦¨¤F¤@Ó¤À¸Ñªº¨BÆJ¡C§A¤w¸g±q±N¨Ó ©Ò¦³·|¥]§t°}¦Cªº¦r¤¤¡A¤À¸Ñ¥X°}¦C³oÓ·§©À¡C§A¤w¸g¨ì¹F¤F¥t¤@¼h¦¸ªº©â¶H¡C
«Ø³y©â¶Hªº¼h¦¸¬O¤@ºØ°ÊºAªº¹Lµ{¡A¥¦¤£¬O§A¯à¨Æ¥ý¹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¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢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Ó¦¤W§Ú¤~»{ÃѨì¡A§Ú¤@ª½±N"¹ï´¹¤ùªº´yz"»P"¹ï³o¨Ç´¹¤ù¦bªO¤l¤Wªº°t¸m ªº´yz"²V¦b¤@°_¡C¦b·í®É¡A¥¦«D±`ªº¤è«K©ó¥Î¨Ó¹F¨ì§Úªº¥Øªº¡A¦ý¬O·í§Ún¦b¥t¤@
¤ùªO¤l¤W¨Ï¥Î³o¨Ç¬Û¦Pªº´¹¤ù®É¡A¤~µo²{¨ì§Ú§â¨Æ±¡¦w±Æªº«ÜÁV¡C §ÚÀ³¸Ó±N¹ï´¹¤ùªº´yz»P¹ï´¹¤ùªº¨Ï¥Î¤À¸Ñ¨ì¤£¦Pªº¦a¤è¡C³o¼Ë§Ú´N·|¦³¤@Ó´¹¤ù
´yz»y¨¥¤F¡C¦n§a¡A¤]³\¬O¦]¬°·í§Ú¥¿¦b°µ³o¥ó¨Æªº®ÉÔ¡A§Ú¹ï¨ººØ¼h¦¸ªº³Ì¨Î¤Æ ¨Ã¤£·P¿³½ì¡C
§Y¨Ï«á¨Ó³oÓ©ÀÀY´¿¸g¥X²{¹L¡A§Ú¤]¥i¯à·|»¡¡G¡uÅý§Ú±ß¤@ÂI¦A¥h°µ³o¥ó¨Æ¡v¡A µM«á´N§ë¤J¨ì§Ú¥¿¦b°µªº¨Æ±¡·í¤¤¡C¦b¨º®É¡A³Ì¨Î¤Æ¹ï§Ú¨Ó»¡¨Ã¤£¬O³Ì«nªº¡C
·íµM¡A§Ú·|¸ÕµÛ°µ¥X¨}¦nªº¤À¸Ñ¡C¦ý¬O¡A¦pªG¦b¨º®ÉÁ٬ݤ£¥XÓ¦n¤èªk¡A§Ú´N·|»¡ ¡G¡u¥ýÅý¥¦¯à¤u§@¦A»¡¡v¡C
§Ú¨Ã¤£¬OÃi´k¡A§Ú¥u¬Oª¾¹D±N¨Ó·|¦³¤@¨ÇªF¦è¥H¬YºØ¤è¦¡¨Ó¼vÅT³oÓ¨M©w¡A¦Ó«ç»ò ¼vÅT«o¬O§Ú²{¦bµLªk¹wª¾ªº¡C²{¦b´N¸ÕµÛ³Ì¨Î¤Æ¬O·MÄøªº¡C°£«D¾ãÓ±¡ªp²M·¡¦a
¥X²{¦b§Ú±«e¡A§Ú¬OµLªkª¾¹D¨ºÓ³Ì¨Î¤ÆÀ³¸Ó¬O¤°»ò¼Ë¤lªº¡C ¦b³o¤@¸`¤¤©Ò°µªº³o¨ÇÆ[¹î¡A¬O¤£·|»P¦b³o¤§«e©Ò½Í½×ªº¸ê°TÁôÂéM¹w´ú±N¨Ó·|§ïÅܪº ¤¸¯À³o¨Ç¨Æ¬Û½Ä¬ðªº¡C¤@Ó¦nªºµ{¦¡³]p®v·|¤£Â_¦a¹Á¸Õ¥¿Å©ó¡u¥ýªá¶O®É¶¡¨Ó«Øºc¥X ¨ã¦³±µ¨üÅܤƩʪº¨Æª«¡v©M¡u¥H«á¦pªG¦³»Ýn¡A¦Aªá¶O®É¶¡¨Óק復¡v³o¤GºØ¿ï¾Ü¤W¡C °µ³o¨Ç¨M©w»Ýn¸gÅç¡C¦ý¬O¡A°µ¬°¤@Ó¤@¯ë©Êªº³W«h¡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 µ²»y
¥»³¹¤¤§Ṵ́Q½×¤F¤À¸Ñ¦]¤l©Ò¨Ï¥Îªº¦UºØ§Þ¥©©M·Ç«h¡C¤]À˵ø¤F¤ÏÂЧ@¬°ªº¤è¦¡¦p¦óÀ³ ¥Î¦b¹ê²{¶¥¬q¤¤¡C 1. W.P. Stevens, G.J. Myerg, and L.L. Constantine, IBM Systems Journal, vol. 13, no. 2, 1974, Copyright 1974 by Intermltional Buginess Machines Corporation. 2. G.A. Miller, "The Magical Number Seven, Plus or Minus Two: Some Limits on Our Capacity for Processing.Information," Psychol. Rev., vol. 63, pp. 81-97, Mar. 1956. 3. Kim R. Harris, "Definition Field Address C,onversion Operators," FORTH-83 Standard, FORTH Standardg Team. ¡@ |