-
Notifications
You must be signed in to change notification settings - Fork 0
RVTL : Tiny BASIC in x86 assembly language for Linux
License
jun-mizutani/rvtl-x86
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
Repository files navigation
â Return of Very Tiny Language (32bit) ver.3.05 - 2015/10/05 Jun Mizutani rvtl 㯠Tiny Basicç³»ã®ããã°ã©ãã³ã°ç°å¢ã§ããã¢ã»ã³ãã©ã§äœæããŠãã ããã10-30ãããã€ãã»ã©ã®éåžžã«å°ããããã°ã©ã ã§ããã察話çã«æäœ ã§ãã (REPL:read-eval-print loop) è±å¯ãªæ©èœãæã£ãŠããŸãã rvtl ã¯ç¹æ®ãªææ³ (åºæ¬çã«ãã¹ãŠä»£å ¥æ) ãæ〠CASUAL ã VTL ã®åå«ãš ãªãèšèªã§ãã ç¹æ®ãšãã£ãŠããæ¥æ¬ã§ã¯ãGAME III ãæåã§ããå€ããã 趣å³ã§ããã°ã©ãã³ã°ããŠãã人ã«ã¯æãããèšèªã§ã¯ãªãããšæããŸãã ã©ãã«ã䜿ããããã«ææ³ãæ¡åŒµããŠããŸããææ³ãåçŽãªããã€ã³ã¿ãŒããªã¿ ã§ãé«éã«åäœããŸããCPUã«äŸåããŸããã1ç§éã«100äžãã500äžåœä»€çšåºŠã¯ å®è¡ã§ãããšæããŸãã â rvtlã®ææ³ã®çŽ¹ä» 次ã®ã³ãŒããèŠãŠãã ããã倧æããããã°ã©ãã³ã°ãããŠãã人以å€ã¯ã ãŸã£ããæå³ãåãããªããšæããŸãã ãã®ãããªèšå·ãšæ°åã°ããã® å€ãªèšèªã«ããããªãã®çç±ããããŸãããã®çç±ãç¥ãã°ããã»ã©ç°åžžãª ææ³ã§ã¯ãªãããšãåãã£ãŠãããããšæããŸãã 10 A=? 20 #=(A>100)*50 30 ?=10 40 #=60 50 ?=100 60 #=-1 ãã®ã³ãŒãã®æå³ã¯åŸã»ã©èª¬æãããšããŠããŸãå ã«ãªãBASICèšèªãã玹ä»ããŸãã BASIC ã¯1960幎代ã«åå¿è åãã«èšèšãããããã°ã©ãã³ã°èšèªã§ã1980幎代 ãã1990幎代ã«ãããŠãã䜿ãããŠãŸããã BASICèšèªã¯åŠçç³»ããšã«æ¡åŒµ ãããéšåãå€ããæ代ãšãšãã«å€åããŠããŸãããåºæ¬çã«åè¡ã®å é ã« è¡çªå·ãšåŒã°ããæ°åã眮ãããã®åŸãã«åœä»€æãæžããŸãã è¡çªå·ã¯ã10ã20ã30ã... ãšããããã«ããŠãè¡ãšè¡ã®éã«æ¿å ¥ã§ããããã« çªå·ä»ãããã®ãæ®éã§ãã11ã12ã13ã... ã§ã500ã600ã900ã§ãææ³ç ã«ã¯åé¡ãããŸããã è¡çªå·ã®å€§ãããªãé ã«ãœãŒããããŸããè¡çªå·ã¯ã 1è¡ãã€ããå ¥åãåãä»ãããã»ãšãã©ä¿®æ£ãã§ããªããããªè²§åŒ±ãªç°å¢ã§ã ããã°ã©ã ãäœæã§ããããã«ãè¡ã«çªå·ãä»ããŠå€§ãããªãé ã«ãœãŒããã ããšã§ãé·ãããã°ã©ã ã«å¯ŸããŠéäžã«è¡ãæ¿å ¥ããããåé€ããããã®ä»çµã¿ã§ãã 10 ' BASIC 20 PRINT "hello, world" 30 GOTO 20 40 END ãã®äŸã§ã¯ãæåã®è¡çªå·10ã®è¡ã¯ã³ã¡ã³ãã§ããè¡çªå·20ã®è¡ã§ã ãhello,worldãšè¡šç€ºãããŸãã 次ã®è¡çªå·30ã®è¡ã§ããè¡çªå·20ã®è¡ã«è¡ãã ãšããå 容ãå®è¡ããŸããæ°žé ã« hello,world ã衚瀺ãç¶ããããã°ã©ã ãš ãªããŸããè¡ã®å é ã«è¡çªå·ãä»ããŠãã以å€ã¯ç¹ã«éåæã¯ãªããšæããŸãã åãããšã rvtl ã§æžããŸããåè¡ã®åäœã¯äžã®BASICã®äŸãšåãã§ãã 10 : rvtl 20 "hello, world" 30 #=20 40 #=-1 rvtl ã®ææ³ã¯ãrvtl ã®é ãå ç¥ã§ãã VTL ãšããèšèªãããšã«ãªã£ãŠããŸãã VTL ã¯åŠçç³»ã®ããã°ã©ã ãµã€ãºã 768ãã€ããšããéåžžã«å°ãããã®ã§ãã£ã ããææ³ã工倫ãããŠããŸãã ã#ãã¯ãã³ããŒèšå·(number sign)ãšåŒã°ãã èšå·ã§ããããã®èšå·ãå®è¡äžã®åœä»€ã®ããè¡çªå·ãè¡šãå€æ°åãšããŸãã ã#=10ã ã®ããã«è¡çªå·å€æ°ã«ä»£å ¥ãããšãè¡çªå·10ã«ããåœä»€ãå®è¡ããã ã€ãŸã GOTO 10 ãšåãåãã«ãªããŸãã ååšããªãè¡çªå·ã®ãšãã¯ããããã 倧ãããŠæãè¿ãè¡çªå·ã«ç§»åããŸãã ã#=-1ã ã®ããã«è¡çªå·ãè² ã®å Žåãã å®è¡ããè¡ããªããã°çµäºããŸããã#=1ãã¯è¡çªå· 1 ããã®å®è¡ãªã®ã§ãåžžã« ããã°ã©ã ã®å é ããå®è¡ããŠãBASIC ã®RUN ã³ãã³ããšåããããã°ã©ã ã èµ·åããšããåäœã«ãªããŸããã#=0ã ã®ããã«è¡çªå·ã« 0 ãæå®ããå Žåã¯ã å é ã«é£ã¶ã®ã§ã¯ãªããã#=0ã ã®æ¬¡ã®è¡ã«åŠçã移ãä»æ§ã«ãªã£ãŠããŸãã ãŸããæ°å€ãã?ãã«ä»£å ¥ãããšæšæºåºåã«æ°å€ãåºåãããŸãããA=?ãã® ããã«å€æ°ã«ä»£å ¥ãããšæšæºå ¥åããå ¥åãããæ°å€ãå€æ°ã«æ ŒçŽãããŸãã ã€ãŸãã?ããæ°å€ã®å ¥åºåã«äœ¿ãããŸããæååã®è¡šç€ºã¯ããã«ã¯ã©ãŒã㧠å²ãã æååãæšæºåºåã«åºåãããŸããäžã®äŸã§ã¯ã"hello, world"ãã ã㧠hello,world ã衚瀺ããŸãã ã#=0ãã®ãšãã«ã¯æ¬¡ã®è¡ã«ç§»ãæ©èœã䜿ããš if ã®ããã«æ¡ä»¶åå²ãå¯èœãš ãªããŸãã2è¡ç®ã® (A>100) ãšããåŒã¯ãå€æ°Aã®æã€å€ã100ãã倧ãã å Žåã¯ãçãè¡šã1ãšããæ°å€ãšãªããA ã 100 以äžã®å Žåã¯ã(A>100)ã¯åœã è¡šã 0 ãšãªããŸãã çµæãšããŠãå€æ°Aã®æã€å€ã«ãã£ãŠ #=50 ãŸã㯠#=0 ãšãªããããæ¡ä»¶åå²ãã«ãŒããå¯èœã§ãã 10 A=? 20 #=(A>100)*50 30 ?=10 40 #=60 50 ?=100 60 #=-1 ãã®ããã°ã©ã 㯠rvtl ã§ãå®è¡ããŠåäœã確èªããããšãã§ããŸãã $ rvtl RVTL v.3.05arm 2015/10/05, (C)2003-2015 Jun Mizutani RVTL may be copied under the terms of the GNU General Public License. <40F9> 10 A=? <40F9> 20 #=(A>100)*50 <40F9> 30 ?=10 <40F9> 40 #=60 <40F9> 50 ?=100 <40F9> 60 #=-1 <40F9> 0 ããªã¹ã衚瀺ã³ãã³ãã 10 A=? 20 #=(A>100)*50 30 ?=10 40 #=60 50 ?=100 60 #=-1 <40F9> #=1 ãå®è¡ã³ãã³ãã 99 10 <40F9> #=1 ãå®è¡ã³ãã³ãã 200 100 <40F9> ~ ãçµäºã³ãã³ãã ã#=B*20+100ããšããã°ãBã®å€ã§ã120ã140ã160ãšãã£ãè¡çªå·ãŸã§åŠçã 移ã switch - case æãå®çŸã§ããŸãã ãšã¯ãã£ãŠãèªã¿é£ãããã°ã©ã ã« ãªã£ãŠããŸããŸãã GAME III ã§ã¯IFæãGOSUBãRETURNã«çžåœããæ©èœãæ¡åŒµ ãããrvtl ã§ã¯ã©ãã«ã䜿ããããã«ãªã£ãŠãè¡çªå·ã«ãžã£ã³ãããå¿ èŠã¯ ãªããªã£ãŠããŸãã次ã®äŸã¯ IFæã®æ©èœãæã€ã;=ããšã©ãã«ã䜿ã£ãŠæžã çŽãããã®ã§ãã 10 A=? 20 ;=A>100 ?=100 #=^skip 30 ?=10 40 ^skip 50 #=-1 ãã®ããã«å€æ°åãèšå·ãšãªã£ãŠããã·ã¹ãã å€æ°ãšããã¢ã€ãã¢ã«ãã£ãŠã rvtl ã§ã¯è²ã ãªèšèªæ©èœãå®çŸããŠããŸãã â rvtlã®æ©èœ ãã® rvtl ã¯ã64bitç ã® rvtl64 ãšç°ãªã32bitã®åœä»€ã§äœæãããŠããããã 32bitçãš64bitçã® Linux ã®ã©ã¡ãã§ãå®è¡å¯èœã§ããå€æ°ã¯ 32bit ã®æŽæ°ã æ ŒçŽããããšãã§ããçŽÂ±20åã-2,147,483,648 ãã 2,147,483,647 ãšãã 10é²æ°ã§çŽ10æ¡ãšããå€ãæ±ãããšãã§ããŸãã 察話ã¢ãŒãã®ãšãã£ã¿ã¯ è¡ç·šéæ©èœã ãã§ããããã¡ã€ã«åè£å®ããã¹ããªãŒæ©èœãutf-8ã®æ¥æ¬èªã®ç·šé ãå¯èœã§ãã BASICèšèªç³»ã®ã€ã³ã¿ããªã¿ããšãã£ã¿ãã³ãã³ãã©ã€ã³ã®ãã¹ããªæ©èœãš ãã¡ã€ã«åè£å®ãçµã¿èŸŒã¿ã³ãã³ããšããŠLinuxã®åºæ¬ã³ãã³ã(ls, cat, cd, mkdir, rm, mount, unmount, chmod, mv, rmdir, sync, pwd) ãäžçŽè åãã³ãã³ã (chroot, pivot_root, swapon, swapoff, exec)ããããŠã°ã©ãã£ãã¯ã§æ¯èŒç ç°¡åã«ã²ãŒã ãäœæã§ããããã«ãã¬ãŒã ãããã¡ã«å¯Ÿãããã¿ãŒã³è»¢é (ã¹ãã©ã€ãæç»)ãã©ã€ã³æç»ãªã©ã®ã³ãã³ããçšæãããŠããŸãã æ¬äŒŒä¹±æ°ã®çæã«ã¯é«éã§äžè³ªãª Mersenne Twister ã䜿çšããŠããŸãã Linux ã«ãŒãã«ããããã°ããã£ã¹ããªãã¥ãŒã·ã§ã³ã®çš®é¡ã«é¢ä¿ãªã å®è¡ã§ããŸãã(Address Space Layout Randomizationã«ã察å¿) rvtl ã¯ãæŽå²çãªäŸ¡å€ã ãã§ãªããç·æ¥æã®éãããè³æºã§å®çšãšãªããã㪠æ©èœãæã£ãŠããŸãã rvtl ã init ããã»ã¹ãšããŠäœ¿ã£ãŠ Linux ã«ãŒãã«ã« 20ãããã€ãçšåºŠã® initrd.gz ãå ãã 1FDLinux ãäœæããããšãã§ããŸãã è¥å¹²ã®å¶éã¯ãããŸãããrvtl ã¯åããã»ã¹ã®èµ·åããã€ãããªãã€ã¬ã¯ã ãšãã£ãã·ã§ã«ãšããŠã®æ©èœãæã£ãŠããŸãã å é è¡ã #!/usr/bin/rvtl ãšããŠå®è¡ããŒããã·ã§ã³ãä»å ãããšã·ã§ã«ã¹ã¯ãªãããšããŠäœ¿ãããšã ã§ããŸãã â ã€ã³ã¹ããŒã«ãšã¢ã³ã€ã³ã¹ããŒã« rvtl ãå±éãããã£ã¬ã¯ããªã§ ./rvtl ãšå ¥åããã ãã§ãå ±æã©ã€ãã©ãªã ã«ãŒãã«ã®ããŒãžã§ã³ã«é¢ä¿ãªã䜿çšã§ããŸãããã䟿å©ã«äœ¿ãã«ã¯ããã¹ã® éã£ããã£ã¬ã¯ããªã« rvtl ãã³ããŒããããšããå§ãããŸãã ããã©ã«ãã§ã¯ã·ã§ã«ã¹ã¯ãªãããšããŠäœ¿ãå Žåãèã㊠/usr/bin ã«çœ®ããã ã«ããŠããŸãã # cp rvtl /usr/bin ã¢ã»ã³ãã«ããå Žåã¯ãbinutils (ARM) ãŸã㯠nasm (x86) ã䜿çšã§ãã ç°å¢ã§ make ããŠäžããã ã¹ãŒããŒãŠãŒã¶ã§ make install ãããš /usr/bin ã« rvtl ãã³ããŒãããŸãã rvtl ã rvtlw ãšããåã§èµ·åãããšãrvtlã®ããã°ã©ã ãçµäº(#=-1)ããã ãšã©ãŒã§rvtlèªèº«ãçµäºããŸãã ã·ã³ããªãã¯ãªã³ã¯ã次ã®ããã«äœæãããš rvtlw ã§èµ·åã§ããŸãã # cd /usr/bin # ln -s rvtl rvtlw rvtl ã®ã¢ã³ã€ã³ã¹ããŒã«ã¯åã« rvtl ãåé€ããã ãã§ãã â rvtl v.3.05ãrvtl64 v.4.01ã®å€æŽç¹ â 64bitç(x86_64, Arm64) ãš 32bitç(x86, ARM) ã®éã 64bitç(x86_64, Arm64) ã§ã¯ãå€æ°ã¯ãã¹ãŠ64bitãšãŸã§ã®æ°å€ãä»£å ¥å¯èœã§ãã åºæ¬çã« 32bitç(x86, ARM) ã® rvtl ã«å¯Ÿã㊠rvtl64 ã¯äžäœäºæã§ãã ã©ãã«å㯠rvtl ã§ã¯11æåïŒãã€ãïŒãŸã§ãŸã§åºå¥ãããŸãããrvtl64ã§ã¯ 23æåïŒãã€ãïŒãŸã§åºå¥ãããŸãã ãã以äžã®é·ãã®ã©ãã«åã䜿ãããšã¯ ã§ããŸããã11æå(32bit)ã23æå(64bit)ãè¶ ããéšåã¯åºå¥ãããŸããã ?%=e åŒã®å€ã16é²æ°16æ¡ã§åºå (64bitçå°çš) $%=e åŒã®å€ã8æåã®æåã³ãŒããšããŠåºå(64bitçå°çš) A;n] å€æ° A ã®å€ãå é ã¢ãã¬ã¹ãšããïŒãã€ãé å (64bitçå°çš) ãã¬ãŒã ãããã¡ãæäœããåœä»€ |fb? ã¯ã¢ãã¬ã¹ãšããŠ64bitãæž¡ãå¿ èŠããã ãããåŒæ°ã®æå®æ¹æ³ãå€æŽ(é åã«64ãããã®å€ãæž¡ãéšå)ãããŠããŸãã â rvtl v.3.05ãrvtl64 v.4.01 å ±é 以äžã®æ©èœãè¿œå ãããŠããŸãã <A Aã®äžäœ32bitã64bitã«ãŒãæ¡åŒµããåé æŒç®å (32bitçã§ã¯äœãããªã) ! çŽè¿ã®ãžã£ã³ã (#=, !=) ãå®è¡ããè¡çªå·ãä¿æ |zc rvtl èµ·ååŸã®ã³ãã³ãå®è¡åæ°ã % ã«è¿ã |ve rvtl ã®ããŒãžã§ã³ã % ã«è¿ã(64bitçã¯äžäœ32bitã«1) |vc CPU ã®çš®é¡ã % ã«è¿ã |rt ã³ã³ãœãŒã«ãããŒã«ã«ãšã³ãŒïŒCookedã¢ãŒãã«åèšå® çµã¿èŸŒã¿ã©ã€ã³ãšãã£ã¿ã¯ utf-8 ã®æ¥æ¬èªã®ç·šéãå¯èœãšãªããŸããã ãŸãã64bitã®Linuxã«ãŒãã«ã§ã¯ãã·ã¹ãã ã³ãŒã«çªå·ã32bitã·ã¹ãã ã³ãŒã«ãã å€æŽãããŠããŸãããããã£ãŠã|zz ã§çŽæ¥ã·ã¹ãã ã³ãŒã«ãåŒã³åºãå Žåã¯ã ã·ã¹ãã ã³ãŒã«çªå·ïŒå€æ° aïŒãå€æŽããå¿ èŠããããŸãã 32bitã®é åãäŸãã°A[10]ããå€æ°ããŸãã¯64bitã®é åã«ä»£å ¥ïŒäŸ A;10;=B[5]ïŒ ããå Žåã«ã¯èªåçã«ç¬Šå·æ¡åŒµïŒãã€ãã¹ã®æŽæ°ã¯ãã®ãŸãŸãã€ãã¹ã®æŽæ°ãšãªãïŒ ãããŸãã 笊å·æ¡åŒµããªãå Žåã¯åé æŒç®åã<ãã䜿ã£ãŠãã ããïŒäŸ A=<B[5]ïŒã vtl ãã£ã¬ã¯ããªäžã®ãµã³ãã«ã®ãã€ããŒãªãã°ãä¿®æ£ããŸããã ãããã¯ãŒã¯ãå©çšãããµã³ãã«ãè¿œå ããŸããã rvtl http_(cpu).vtl - IP_address / rvtl dns_(cpu).vtl - 8.8.8.8 www.mztn.org rvtl wget_(cpu).vtl - 8.8.8.8 www.mztn.org /index.html â ç°¡åãªããã°ã©ã rvtl 㯠BASICã®ã³ãã³ããèšå·ã§çœ®ãæãããããªèšèªã§ãã æè¿ã®èšèªã«ã¯ãªãç¹åŸŽãšããŠãåè¡ã®å é ã«ã¯è¡çªå·ãå¿ èŠãšããŠããŸãã æ £ç¿ã§ã¯ã10åäœã®è¡çªå·ã䜿ããŸããåŸããè¡ãæ¿å ¥ããæã«åãããã ã§ããåŸã»ã©è¡çªå·ãæŽåœ¢ããããã°ã©ã ã玹ä»ããŸãã rvtlãèµ·åãããšæ¬¡ã®ããã«è¡šç€ºãããŸãã $ rvtl RVTL v.3.05 2015/10/05, Copyright 2002-2015 Jun Mizutani RVTL may be copied under the terms of the GNU General Public License. <12E2> ã<12E2>ãã¯ããã³ããã§ããã®ããšã« rvtl ã®ããã°ã©ã ãå ¥åãç·šéãããã å®è¡ããã³ãã³ããå ¥åããŸãã<>å ã®æ°å€ã¯ããã»ã¹IDã®16é²æ°è¡šç€ºãšãªã£ãŠ ããŸããåããã»ã¹ã§ rvtl ãèµ·åããŠããå Žåã /sbin/init ãšããŠåäœã㊠ããå Žåã®èå¥ã«äœ¿ããŸãããéåžžã¯æ°ã«ããå¿ èŠã¯ãããŸããã ããã³ãã以éã«ã³ãã³ããããã°ã©ã ãå ¥åããŸããããã§ã¯ç°¡åãªç·šéæ©èœ ããããå·Šå³ç¢å°ããŒãctrl-Fãctrl-Bã§ã«ãŒãœã«ç§»åãctrl-D ã§ã«ãŒãœã«äœçœ® ã®æåãåé€ããŸããctrl-HãBackSpaceã¯ã«ãŒãœã«ã®çŽåã®æåãåé€ããŸãã äžäžç¢å°ããŒãctrl-Nãctrl-Pã§ãã¹ããªãŒã«ä¿æãããŠããææ°ã®ç°ãªã16è¡ ãåŒã³åºãããšãã§ããŸããTABããŒã§ãã¡ã€ã«åè£å®ãåããŸãã å ¥åè¡ã®æå (空çœãé€ã) ãæ°åãªãã°ãããã°ã©ã ãšããŠã¡ã¢ãªã«æ ŒçŽ ãããŸããããã³ããã®ããšã«æ¬¡ã®ããã«å ¥åããŠã¿ãŠãã ããã å ¥åãããããã°ã©ã ã¯è¡çªå·ã®é ã«èªåçã«æŽåãããŸããè¡ãæ¿å ¥ãã ã«ã¯ããã§ã«å ¥åãããŠè¡çªå·ã®éã®è¡çªå·ãã€ããŸããäŸãã°ãè¡40ãš è¡50ã®éã«æ¿å ¥ããã«ã¯è¡çªå·ãšã㊠45 ã䜿ããŸãã 10 "A=" A=? / 20 "B=" B=? / 30 "A+B=" ?=A+B / 40 "A-B=" ?=A-B / 50 "A*B=" ?=A*B / 60 "A/B=" ?=A/B / 70 "Hit Any Key (q:quit) :" C=$ / 80 ;=(C='q')|(C='Q') #=-1 90 #=10 ããã«ã¯ã©ãŒãã"ãã§å²ãŸããæååã¯ããã®ãŸãŸè¡šç€ºãããŸããA=? 㯠BASIC ã®INPUTæã«çžåœããŠãããŒããŒãããå ¥åãããæ°å€ãå€æ° A ã« ä»£å ¥ããŸãã ã/ãã¯æ¹è¡ãåºåããŸãã ?=A+B ãªã©ã¯ã?=ãã«ç¶ãåŒã® å€ã10é²æ°ã§è¡šç€ºããŸããè¡çªå· 70 ã® C=$ ã¯ããŒãïŒããã1æåå ¥å ããŠãå€æ° C ã«æ ŒçŽããã³ãã³ãã§ããã³ãã³ããšã³ãã³ãã®åºåãã¯1〠以äžã®ç©ºçœ(åè§ã¹ããŒã¹)ã§ãã³ãã³ãå (äŸãã°åŒäž) ã«ç©ºçœã䜿ãããš ã¯ã§ããŸãããè¡çªå· 80 ã®ã;=ã㯠IF æã«çžåœããŠãç¶ãåŒãèšç®ã㊠çµæã 0 ãªãã°æ¬¡ã®è¡ã®å®è¡ã«ç§»ããŸããèšç®çµæã 0 以å€ãªãåãè¡ã® åœä»€ãå®è¡ããŸãããã®å Žåã¯å ¥åæåããqããŸãã¯ãQãã®ãšãENDæ㧠ãã #=-1 ãå®è¡ããŠããã°ã©ã ã¯çµäºããŸããè¡çªå· 90 ã® #=10 㯠GOTOæã«çžåœããŠãã#=ãã«ç¶ãåŒãèšç®ããŠçµæã®è¡çªå·ã«ãžã£ã³ãããŸãã å ¥åããããã°ã©ã ã確èªããã«ã¯ãããã³ããã<xxxx> ãã®ããšã« ããã°ã©ã ãªã¹ãã衚瀺ããã³ãã³ãã§ãã 0 (ãŒã)ãå ¥åããŸãã 30-60 ã®ããã«è¡çªå·30ããè¡çªå·60ãŸã§ãéšåçã«ãªã¹ãã衚瀺ãã ããšãã§ããŸãã50+4 ã®ããã«æå®ããå Žåã¯ãè¡çªå·50ãã4è¡ã衚瀺 ããŸããã10ãã®ããã«çªå·ã ããå ¥åãããšããã®çªå·ãšåãè¡çªå·ã® è¡ãåé€ãããŸããå€æŽãããè¡ãããå Žåã¯ãã40!ãã®ããã«è¡çªå·ã® çŽåŸã«ã!ããã€ãããšãã40 "A-B=" ?=A-B /ãã®ããã«è¡šç€ºãããŠç·šé (ä¿®æ£) ãã§ããŸãã(ããã°ã©ã ã®ç·šéãåç §) å®è¡ããã«ã¯ ã#=1ããšå ¥åããŸããå®è¡äžã®ããã°ã©ã ã匷å¶çã«çµäº ãããå Žå㯠ctrl-C (ã³ã³ãããŒã«ããŒãšCãåæã«æŒã) ãå ¥åãããš ããã³ããã衚瀺ããŸãã rvtl èªèº«ãçµäºããã«ã¯ã~ (ãã«ã) ããå ¥åã㊠Enter ãæŒããŸãã ~ãã®å ¥åã¯æ¥æ¬èªããŒããŒãã§ã¯ãã·ããããŒãæŒããªããã^ããŸã㯠ã·ããããŒãæŒããªãããåè§/å šè§ã(è±èªã¢ãŒãã®å Žå)ã§å ¥åã§ããŸãã vtl ãã£ã¬ã¯ããªã® fb_demo.vtl ã¯ãã¬ãŒã ãããã¡ãæäœããæ©èœã® ãã¢ã§ããbmp ãã¡ã€ã«ãããŒããããããvtl ãã£ã¬ã¯ããªã«ç§»åããåŸ ã«å®è¡ããŠãã ããããã¬ãŒã ãããã¡ã䜿ã£ãã°ã©ãã£ãã¯ã®ããã°ã©ã ãé«éã«å®è¡ã§ããŸãã â ããã°ã©ã ã®ç·šé å ¥åè¡ã®å é (空çœãé€ã)ãæ°åã®å Žåã¯ãæ°åãè¡çªå·ãšããŠèªèã㊠線éã¢ãŒãã«ãªããŸããè¡çªå·ã®çŽåŸã«å ¥åãããèšå·ã«ãã£ãŠãããã°ã©ã 㮠衚瀺ãç·šéãæ¿å ¥ãåé€ãã§ããŸãã æåã³ãŒãã utf-8 ã®å Žåã¯æ¥æ¬èªã®ç·šéãå¯èœã§ãã o è¡çªå· 0 ãªãããã°ã©ã å šäœã衚瀺ããŸãã o è¡çªå·ã®çŽåŸã - ãªãæå®ç¯å²å ã®è¡ã衚瀺ããŸãã(äŸ 100-200) o è¡çªå·ã®çŽåŸã + ãªãè¡çªå·ä»¥éã®20è¡ã衚瀺ããŸãã + ã®åŸãã«è¡šç€ºè¡æ°ãæå®ã§ããŸãã(äŸ 100+30) o è¡çªå·ã®çŽåŸã ! ãªãæå®ããè¡çªå·ã®è¡ãç·šéããããšãã§ããŸãã ãã®ãšãè¡çªå·ãå€æŽãããšãå€æŽããè¡ãå¥ã«æ¿å ¥ãããå ã®è¡ã¯ ãã®ãŸãŸæ®ããŸãã å·Šå³ç¢å°ããŒãctrl-Fãctrl-Bã§ã«ãŒãœã«ç§»åãctrl-D ã§ã«ãŒãœã«äœçœ®ã® æåãåé€ããŸããctrl-HãBackSpaceã¯ã«ãŒãœã«ã®çŽåã®æåãåé€ ããŸããäžäžç¢å°ããŒãctrl-Nãctrl-Pã§ãã¹ããªãŒã«ä¿æãããŠãã ææ°ã®ç°ãªã16è¡ãåŒã³åºãããšãã§ããŸãã o åãè¡çªå·ã®è¡ãååšããã°å ¥åãããè¡ãšçœ®æããŸãã o å ¥åãããè¡ãšåãè¡çªå·ããªããã°å ¥åãããè¡ãæ¿å ¥ããŸãã o è¡ãè¡çªå·ã®ã¿ã®å Žåã¯å¯Ÿå¿ããè¡ãåé€ããŸãã â ã³ãã³ãã®è§£èª¬ rvtl ã®ã³ãã³ãã BASIC ã®ã³ãã³ããèŠåºããšããŠèª¬æããŸãã è¡çªå·ã€ããããã°ã©ã ã #=1 ã§å®è¡ããéæ¥ã¢ãŒããšãããã³ããã®ããš è¡çªå·ãªãã§çŽæ¥å®è¡ããçŽæ¥ã¢ãŒãããããŸããFOR-NEXTãDO-UNTILã GOSUBã¯éæ¥ã¢ãŒãå°çšã§ããããã®ä»ã®ã³ãã³ãã¯ã©ã¡ãã®ã¢ãŒãã§ã å®è¡ã§ããŸãã以äžã®èª¬æã®å ãAã¯ä»»æã®å€æ°ãe ãš n ã¯ä»»æã®åŒã è¡šããŠããŸãã â ã³ã¡ã³ã : ã®åŸã¯ãã³ã¡ã³ããšããŠè¡æ«ãŸã§ç¡èŠãããŸãã #! ãã³ã¡ã³ããšã¿ãªãããŸããããã°ã©ã ã®å é è¡ã«æ¬¡ã®ããã«èšè¿°ã㊠ãããŠãå®è¡æš©éãã€ããŠãããšã·ã§ã«ã¹ã¯ãªãããPerlã®ã¹ã¯ãªããã® ããã«çŽæ¥å®è¡ã§ããŸãã #!/usr/bin/rvtl 100 A=? 110 B=? 120 ?=A+B â ä»£å ¥æ å³èŸºã®åŒã®å€ã巊蟺ã®å€æ°ã«ä»£å ¥ããŸãã A=e ä»£å ¥æã®ç¹æ®ãªåœ¢åŒãšããŠæååãããªãé å(256KBãŸã§)ãå¥ã® é åã®é åã«ã³ããŒããåœä»€ããããŸããé åã®ããã®ã¡ã¢ãªé åã 確ä¿ããŠããå¿ èŠããããŸããæååå®æ°ãä»£å ¥ãã圢åŒããããŸãã å®è¡åŸã% ã«æåæ°ãè¿ããŸãã æååãçŽæ¥æå®ããå Žå㯠256 ãã€ã以å ã«éå®ãããŸãã 200 A*=e : 256 ãããã€ããŸã§ 210 B*="ABCDEFG" : 256 ãã€ã以å ã³ãã³ãã©ã€ã³åŒæ°ãã³ããŒããå Žåã¯ç¯å²ãã§ãã¯ãOFFã[=0ãã« ããåŸã«å®è¡ããŠãã ããã 200 [=0 210 A*=\0 220 [=1 ã³ããŒå ãšã³ããŒå ã®ã¢ãã¬ã¹ãåãå Žåã¯ã³ããŒã¯å®è¡ãããã % ã«æåã 0 ãšãªããŸã§ã®æåæ°ãè¿ããŸããæååé·ãæ±ããããšã ã§ããŸãã 200 A*=A ?=% â PRINTæ æšæºåºåã«æ°å€ãæåãæžãåºãåœä»€ã§ãã ?=e åŒã®å€ã10é²æ°ã§åºåã ?(n)=e åŒã®å€ã10é²æ°ã n æ¡å³å¯ãã§åºåã ?[n]=+e åŒã®å€ã10é²æ°ãäžäœæ¡ã0ã§åãã n æ¡ã§åºåã ?$=e åŒã®å€ã16é²æ°2æ¡ã§åºåã ?#=e åŒã®å€ã16é²æ°4æ¡ã§åºåã ??=e åŒã®å€ã16é²æ°8æ¡ã§åºåã ?%=e åŒã®å€ã16é²æ°16æ¡ã§åºåã(64bitçå°çš) ?*=e åŒã®å€ã笊å·ç¡ã10é²æ°ã§åºåã ?{n}=e åŒã®å€ã8é²æ°næ¡ã§åºåã ?!n!=e åŒã®å€ã®äžäœã2é²æ°næ¡ã§åºåã $=e åŒã®å€ãæåã³ãŒããšããŠåºåã $$=e åŒã®å€ã2æåã®æåã³ãŒããšããŠåºåã $#=e åŒã®å€ã4æåã®æåã³ãŒããšããŠåºåã $%=e åŒã®å€ã8æåã®æåã³ãŒããšããŠåºåã(64bitçå°çš) $*=e åŒã®å€ãå é ã¢ãã¬ã¹ãšããASCIIZæååãåºåã "STR" æååãåºåã / æ¹è¡ãåºåã .=e 空çœãåŒ e ã®å€ã®æ°ã ãåºåã â INPUTæ å ¥åããå€ãå€æ°ã«ä»£å ¥ããåœä»€ã§ãã A=? 10é²æ°å€å ¥å(éæ°å€ã®å Žå0ãå ¥å)ã A=$ 1æåå ¥åã A=@ ãªã¢ã«ã¿ã€ã æåå ¥åãå ¥åããªãå Žåã¯ïŒãè¿ããŸãã A*=$$ Aã®ç€ºãã¢ãã¬ã¹ã«1è¡å ¥å(ç·šéæ©èœä»ã)ã å ¥åæåæ°ã % ã«è¿ããŸãã â GOTOæ æå®ããè¡çªå·ã«ãžã£ã³ãããŸãã #=^Label ã®ããã«é£ã³å ãã©ãã«ãšããå Žåã¯ã©ãã«å®£èš(^Label) ããè¡ã®æ¬¡ã®è¡ã«ãžã£ã³ãããŸãã #=100 #=^STOP è¡çªå·ã®éšåã«åŒãèšè¿°ã§ããŸãã(äŸ #=N*10+2000) â IFæ åŒã®å€ãåœ(0) ãªã次ã®è¡ããå®è¡ããŸããçã®å Žåã¯æ¬¡ã®æã å®è¡ããŸãã ;=e "A=" A=? â GOSUBæ æå®ããè¡çªå·ã«ãžã£ã³ãããŸããé£ã³å 㧠](ãªã¿ãŒã³æ)ãå®è¡ ããããšæ¬¡ã®æããå®è¡ãåéãããŸãã !=^Label ã®ããã«é£ã³å ãã©ãã«ãšããå Žåã¯ã©ãã«å®£èš(^Label) ããè¡ã®æ¬¡ã®è¡ã«ãžã£ã³ãããŸãã !=100 !=^LINE è¡çªå·ã®éšåã«åŒãèšè¿°ã§ããŸãã(äŸ #=N*10+2000) â RETURNæ GOSUBæ(!=)ã®æ¬¡ã®åœä»€ã«æ»ããŸããGOSUB - RETURN ã¯æ倧32å ãã¹ãããããšãã§ããŸãã 100 ^SUB 110 "do something" 120 ] â FOR - NEXTæ FORæã¯ä»£å ¥æã«ã«ã³ããšçµäºå€ãå ãã圢åŒã§èšè¿°ããŸãã NEXTæ㯠@=A+1 ã®ããã«FORæã§äœ¿ã£ãå€æ°ã@=ã®çŽåŸã«çœ®ããŸãã å¢å㯠+1 以å€ã®å€ãå¯èœã§ãããŸãä¹ç®ã䜿çšããããšãã§ããŸãã éåžžãç¹°ãè¿ãåæ°ã決ãŸã£ãŠããå Žåã«äœ¿ããŸãã 100 A=1,10 110 "do something" 120 @=A+1 1è¡äžã«FOR-NEXTã«ãŒãã眮ãããšãã§ããŸãããã®äŸã§ã¯ 1 ãã 10 ãŸã§ã®æ°å€ãé ã«è©°ããŠè¡šç€ºããŠæåŸã«æ¹è¡ããŸãã 100 A=1,10 ?=A @=A+1 / 次ã®ããã«éé ã«ããããšãã§ããŸãã 100 A=10,1 110 "do something " ?=A / 120 @=A-1 â DO - UNTILæ UNTILæã®åŒ e ã®å€ãåœ(0)ã®å Žåã«ã¯ @ (DO) ã«æ»ããŸãã ç(0以å€)ãªã次ã®æãå®è¡ããŸããNEXTæãšç°ãªãåŒãæ¬åŒ§ã§å²ã å¿ èŠããããŸããç¹°ãè¿ãåæ°ãå®è¡ãããŸã§ããããªãå Žå㫠䟿å©ã§ãã 100 @ 110 "do something" 120 @=(e) â ENDæ å®è¡äžã®rvtlã®ããã°ã©ã ãåæ¢ããŸããrvtlèªèº«ã¯çµäºããŸããã #=-1 â NEW ã³ãã³ã è¡çªå·ä»ãã§ã¡ã¢ãªã«æ ŒçŽããã rvtl ã®ããã°ã©ã ãæ¶å»ããŸãã &=0 â SAVE ã³ãã³ã rvtlããã°ã©ã ããã¡ã€ã«åãæå®ããŠãã¡ã€ã«ã«åºåããŸãã <="ãã¡ã€ã«å" â LOAD ã³ãã³ã ãã¡ã€ã«åã§æå®ããã rvtlããã°ã©ã ãããŒãããŸãããã§ã« ã¡ã¢ãªã«æ ŒçŽãããŠããããã°ã©ã ã¯æ¶å»ãããã«ããŒãããããã°ã©ã ãæ¿å ¥ãããŸããå¿ èŠãªãã° NEW (&=0) ãå ã«å®è¡ããŠãã ããã >="ãã¡ã€ã«å" â LIST ã³ãã³ã ããã°ã©ã ã®ãªã¹ã衚瀺ãšç·šéã®ããã®ã³ãã³ãã§ãã 0 rvtlããã°ã©ã å šäœã®ãªã¹ã 100- è¡çªå·100以éãã¹ãŠã®ãªã¹ã 100-500 è¡çªå·100以é500ãŸã§ã®ãªã¹ã 100+ è¡çªå·100以éã®20è¡ã®ãªã¹ã 100+30 è¡çªå·100以éã®30è¡ã®ãªã¹ã 100! è¡çªå·100ã®1è¡ã衚瀺ããŠç·šé â RUN ã³ãã³ã çŽæ¥ã¢ãŒã㧠GOTOæã䜿ã£ãŠrvtlã®ããã°ã©ã ãå®è¡ããŸãã å®è¡éå§è¡çªå·ãæå®ããããšãã§ããŸããé垞㯠#=1 ãšããŸãã å®è¡äžã®ããã°ã©ã ã匷å¶çã«åæ¢ãããã«ã¯ã³ã³ãããŒã«ã㌠ãæŒããªããC (ctrl-C) ãæŒããŸãã #=1 â ãã¡ã€ã«æžãåºã { (ãã¡ã€ã«å é äœçœ®) ãš } (ãã¡ã€ã«æ«äœçœ®) ã§æå®ããç¯å²ã ""ã«å²ãŸãããã¡ã€ã«åã®ãã¡ã€ã«ãšããŠæžã蟌ã¿ãŸãã 0ã§çµäºããæååã®å é ã¢ãã¬ã¹ãæž¡ã圢åŒã䜿çšã§ããŸãã (="ãã¡ã€ã«å" (*=A â ãã¡ã€ã«èªã¿èŸŒã¿ ""ã«å²ãŸãããã¡ã€ã«åã®ãã¡ã€ã«ã { (ãã¡ã€ã«å é äœçœ®) ã§æå® ãããã¡ã¢ãªã¢ãã¬ã¹ã«èªã¿èŸŒã¿ãŸããèªã¿èŸŒãã ãã¡ã€ã«ãµã€ãºã¯ }-{ (ãã¡ã€ã«æ«äœçœ® - ãã¡ã€ã«å é äœçœ®) ã§æ±ããããšãã§ããŸãã 0ã§çµäºããæååã®å é ã¢ãã¬ã¹ãæž¡ã圢åŒã䜿çšã§ããŸãã )="ãã¡ã€ã«å" )*=A â ãã¡ã€ã«å é ãèšå® ãã¡ã€ã«æžãåºãã³ãã³ãã®æžã蟌ã¿å é äœçœ®ãèšå®ããŸãã {=e â ãã¡ã€ã«æ«ãèšå® ãã¡ã€ã«æžãåºãã³ãã³ãã®æžã蟌ã¿æçµäœçœ®ãèšå®ããŸãã }=e â ã¡ã¢ãªæçµ(brk)ãèšå® ã¡ã¢ãªæçµ(brk)ãå€æŽããããšãã§ããŸããäŸãã° *=*+10000 ã§ã¯ ã¡ã¢ãªã10000ãã€ãåºããããŸãã *=e â åããã»ã¹ã®èµ·å åããã»ã¹ãèµ·åããŸããå®è¡ãã¡ã€ã«åã¯ãã«ãã¹ã§æå®ããŠäžããã | ã䜿ã£ããã€ããš > ã«ããåºåã®ãªãã€ã¬ã¯ããå¯èœã§ãã ,="/bin/ls -lt | /usr/bin/grep e >test.txt" "DONE" / äžèšã®ããã«ã³ãã³ãã®åŸãã«æãç¶ããªãå Žåã¯ã次ã®ãã㪠çç¥èšæ³ã䜿ããŸãã , /bin/ls -lt | /usr/bin/grep e >test.txt 0ã§çµäºããæååã®å é ã¢ãã¬ã¹ãæž¡ã圢åŒã䜿çšã§ããŸãã æååã®å é ã¢ãã¬ã¹ãå€æ°ã«èšå®ããåŸã«å®è¡ããŸãã ,*=A â é åç¯å²ãã§ã㯠é åã䜿ã£ãŠä»»æã®ã¡ã¢ãªã¢ãã¬ã¹ã«ã¢ã¯ã»ã¹ããããšãã§ããŸãã ããã©ã«ã( [=1 )ã§ã¯ , ãã * ã®ç¯å²ã®ã¡ã¢ãªä»¥å€ã«ã¢ã¯ã»ã¹ãããš ç¯å²ãã§ãã¯ã«ãããšã©ãŒãšãªããŸããã[=0 ãå®è¡ãããšãšã©ãŒã« ãªããŸãããå¿ èŠãªéšåã®ã¿ã [=0 ãš [=1 ã§å²ãããã«ããŸãã ãã¬ãŒã ãããã¡ã䜿ãå Žåãæååã®ã³ããŒã§ã³ãã³ãã©ã€ã³åŒæ°ã åç §ããå Žå(A*=\0ç)ã«ã¯å¿ é ã§ãããäžæ£ãªé åã«ã¢ã¯ã»ã¹ãããš ã»ã°ã¡ã³ããŒã·ã§ã³ãã©ã«ãã«ãã rvtl ãçµäºããŠããŸãããšã«æ³šæ ããŠäžããã 100 [=0 110 f[200]=$FFFFFFFF 120 [=1 â æ¬äŒŒä¹±æ°ã·ãŒãèšå® ä¹±æ°ã¯ rvtl ã®èµ·åçŽåŸã«ã¯æ¯ååãç³»åã§çæããããããrvtl ã® èµ·ååŸã«ã¯åžžã«åãä¹±æ°ãåž°ããŸãããã€ãç°ãªãä¹±æ°ãçæãã ããã«ã¯ãæ¬äŒŒä¹±æ°ã®ã·ãŒã (ãã¿?) ã«å¥ã®å€ãèšå®ããŸãã äŸãã°ãæ¬äŒŒä¹±æ°ã®ã·ãŒããçŸåšæéã®ãã€ã¯ãç§ã«èšå®ãA=_ `=%ã ãããšèµ·åã®ãã³ã«äºæ³ã§ããªãç°ãªãç³»åã®ä¹±æ°åãçæããããšã ã§ããŸãã `=e â ã³ãŒãå é ã¢ãã¬ã¹èšå® rvtl ã®ããã°ã©ã ãæ ŒçŽããé åã®å é ã¯ãrvtl ã®èµ·åæã«æ±ºå®ãã å€æŽã§ããªãå€ã,ããã³ãŒãå é ã¢ãã¬ã¹ã=ãã«èšå®ãããŠããŸãã ã¡ã¢ãªå ã«è€æ°ã®ããã°ã©ã ãæ ŒçŽããŠã³ãŒãå é ã¢ãã¬ã¹ã=ãã å€æŽããããšã§è€æ°ã®ããã°ã©ã ãåãæ¿ããŠäœ¿ããŸãã ==e â ãã€ã¯ãç§åäœã® sleep åæ¢æéããã€ã¯ãç§åäœã§äžããŠããã°ã©ã ãäžæåæ¢ããŸãã ãã·ã³ã®åŠçé床ãç°ãªã£ãŠãåãã¿ã€ãã³ã°ã§åäœããããå Žåãªã© ã«äœ¿çšããŸãã _=e â rvtlã®çµäº ãã«ãã~ã㧠rvtl èªèº«ã®å®è¡ãçµäºããŸãã ã~ãã®å ¥åã¯ãã·ããããŒãæŒããªããã^ãããŸãã¯ã·ããããŒã æŒããªãããåè§/å šè§ãã§å ¥åã§ããŸãã â å€æ°ãšé å å€æ°ã¯32ãããã®æ°å€ãæ ŒçŽããåçŽå€æ°ãš 1,2,4 ãã€ãã®å€ãæ±ãé åå€æ° ããããŸãã åçŽå€æ°ã¯ A ãã Z ãš a ãã z ãŸã§ã® 52 åã®å€æ°ã䜿ãããšãã§ããŸãã å€æ°å㯠1 æåã ãã§ãããåé·åãšã㊠Integer, Command, ok ãªã©ã®ãã ã«é·ãååã䜿ãããšãã§ããŸãã ãã®å Žåã«ã¯ I ãš Integer ã¯åããã®ãš ã¿ãªãããããšã«æ³šæããŠãã ãããåçŽå€æ°ãæ ŒçŽããé åã¯ããããã çšæãããŠããŸãã é å㯠C èšèªã®é åã®ããã«é åãæ ŒçŽããé åã®å é ã¢ãã¬ã¹ãé ååã«èšå® ããŠããå¿ èŠããããŸãã以äžã®äŸã§ã¯å€æ°Aã«ç©ºãã¡ã¢ãªå é ã¢ãã¬ã¹ãä»£å ¥ãã å€æ°Bã«ã¯å€æ°Aãã100ãã€ã倧ããå€ãèšå®ããŠããŸããããã§å€æ°Aã¯100 ãã€ãã®é åãé åãšããŠäœ¿çšã§ããŸãã1ãã€ãé åã§ã¯ A(99)ãŸã§ã2ãã€ã é åã§ã¯ A{49}ãŸã§ã4ãã€ãé åã§ã¯A[24]ãŸã§ã B(0) ãšéãªããªãã§ã¢ã¯ã»ã¹ ã§ããŸãã é å B ã¯æ®ãã®ç©ºãã¡ã¢ãªããã¹ãŠäœ¿çšå¯èœã§ãã䜿çšå¯èœã¡ã¢ãªã®æåãè¡šã ã·ã¹ãã å€æ°ã*ã㯠rvtl ã®ããã°ã©ã ã®å€§ãã + 空ãã¡ã¢ãª = 256Kãã€ãã åæå€ã«ãªã£ãŠããŸãããã·ã¹ãã å€æ°ã*ããåèšå®ããã°ã¡ã¢ãªã®èš±ãéãã® é åãã¢ã¯ã»ã¹ã§ããŸãã 100 A=& 110 B=A+100 120 A(99)=123 130 B[5]=456 140 ?=B[5] ãã®äŸã§ã¯ãé å A ã§äœ¿ãã¡ã¢ãªéãã次ã®é å B ã®å®£èšæã«100ãã€ãã§ãã ããšã2è¡ç®ã§èšå®ããŠããŸããé åãå€ããªããšç®¡çããããªããªããŸãã 次ã®äŸã§ã¯ãå€æ° z ã確ä¿æžã¿ã®æçµã¢ãã¬ã¹ãšæ±ºããŠããããšã§é åã®å®£èšãš ã¡ã¢ãªã®ç¢ºä¿ãäžå®ã®åœ¢åŒã§ã§ããããã«ãªããŸãã ãå§ãã®æ¹æ³ã§ãã 1000 *=*+(1024*1024) : ã¡ã¢ãªã 1MB äœåã«ç¢ºä¿ 1010 z=& : 空ãé åå é ã¢ãã¬ã¹ã z ã«èšå® 1020 CacheSize=32*1024 1030 s=z z=z+256 : é å s(256) 1040 u=z z=z+256 : é å u(256) 1050 h=z z=z+256 : é å h(256) 1060 b=z z=z+CacheSize : é å b(CacheSize) 1070 H=z z=z+(256*1024): é å H(256*1024) 1080 d=z d=z+256 : é å d(256) 1090 q=z z=z+512 : é å q(512) 1100 B=z z=z+512 : é å B(512) 1110 W=z z=z+512 : é å W(512) 1120 U=z z=z+256 : é å U(256) â é åã®ãµã€ãºãšã¡ã¢ãªäžã®é 眮 å€æ°Aã«æªäœ¿çšé åã®å é ã¢ãã¬ã¹(&)ãä»£å ¥ããŠããå Žåã®é åã®æ§åã瀺ããŸãã åãé åãèŠçŽ ã®ãµã€ãºã1ãã€ããã8ãã€ãã®é åãšããŠã¢ã¯ã»ã¹ã§ããŸãã A[1]ãšA{2}ãA{3}ã¯åãã¡ã¢ãªé åã䜿ããŸãã32bitçã®rvtlã§ã¯8ãã€ãé å㯠䜿çšã§ããŸããã 1 byte 2 byte 4 byte 8 byte +--------+--------+--------+--------+ A=& | A(0) | | | | +--------+ A{0} + + + | A(1) | | | | +--------+--------+ A[0] + + | A(2) | | | | +--------+ A{1} + + + | A(3) | | | | +--------+--------+--------+ A;0] + | A(4) | | | | +--------+ A{2} + + + | A(5) | | | | +--------+--------+ A[1] + + | A(6) | | | | +--------+ A{3} + + + | A(7) | | | | +--------+--------+--------+--------+ | A(8) | | | | +--------+ A{4} + + + | A(9) | | | | +--------+--------+ A[2] + + | A(10) | | | | +--------+ A{5} + + + | A(11) | | | | +--------+--------+--------+ A;1] + | A(12) | | | | +--------+ A{6} + + + | A(13) | | | | +--------+--------+ A[3] + + | A(14) | | | | +--------+ A{7} + + + | A(15) | | | | +--------+--------+--------+--------+ â rvtl ã®ã¡ã¢ãªã€ã¡ãŒãž äžã®å³ã¯ãrvtl ãå®è¡äžã®ããã»ã¹ã®ã¡ã¢ãªã®äœ¿ãæ¹ã§ãã空ãé åã¯å€æ° & ãã å€æ° * ã®ç¯å²ã§é åçšã®é åãšããŠäœ¿çšããŸãã +--------------------+ : : : : +--------------------+ | rvtlã³ãã³ã | | | +--------------------+ | äœæ¥é å | | | | å€æ°çšé å A-Za-z | | ã¹ã¿ãã¯é å | | å€æ°ã¹ã¿ãã¯é å | +--------------------+ : : ïŒPowerPCçã§ã¯é£ç¶ïŒ = +--------------------+ | (rvtlã®ããã°ã©ã ) | | 100 A=& | | 110 B=A+100 | | 120 A(99)=123 | | 130 B[5]=456 | | 140 ?=B[5] | & +--------------------+ A=& ããã°ã©ã æ« | é åAã®é å | | | +--------------------+ B=A+100 | é åBã®é å | | | |- - - - - - - - - - | | | | 空ãé å | | | * +--------------------+ ã¡ã¢ãªé åæçµ(å¯å€) : : : : : : |- - - - - - - - - - | | ããã»ã¹ã®ã¹ã¿ã㯠| | åŒæ°æåå | +--------------------+ å€æ°ã¯å€æ°å°çšã¹ã¿ãã¯ã«æ ŒçŽ(ããã·ã¥)ããããšãã§ããŸããäŸãã° +ABC ã® å Žåã¯ãå€æ°ã AãBãC ã®é ã«ã¹ã¿ãã¯ã«ä¿åãããŸãã1æå以äžã®é·ãã® å€æ°åã®å Žåã§ãå é ã®1æåã ããæå®ããŸããã¹ã¿ãã¯ããæ»ã(ããã)å Žå㯠-CBA ãšããã·ã¥ããé ã®éã«æ»ããŸãã ãµãã«ãŒãã³ã®å é ã§äœ¿ãå€æ°ãããã·ã¥ããªã¿ãŒã³ã®åã§ãããããããšã§ã å€æ°ãå±æå€æ°ãšããŠååž°çã«ãµãã«ãŒãã³ãåŒã³åºãããšãã§ããããã«ãªããŸãã ã+=åŒãã§åŒã®å€ãå€æ°ãä»ããå€æ°ã¹ã¿ãã¯ã«æ ŒçŽããããšãã§ããŸãã ãŸããåŒäžã§ã;ããåç §ãããšå€æ°ã¹ã¿ãã¯ããããè¿ããŸã(ããã)ã â é¢æ° åŒäžã§é¢æ°ã®å€ã䜿çšããã«ã¯ãrvtl ã§ã¯ã·ã¹ãã å€æ°ãåç §ãã圢åŒã«ãªã ãŸãã å€ãåç §ã§ããã·ã¹ãã å€æ°ã«ã¯æ¬¡ã®ãã®ããããŸãã # å®è¡äžã®è¡çªå·ãä¿æ ! çŽè¿ã®ãžã£ã³ã (#=, !=) ãå®è¡ããè¡çªå·ãä¿æ % çŽåã®é€ç®ã®å°äœãçŽåã® _ åç §ã® usecãæååã³ããŒã®æåæ°ãä¿æ & ã³ãŒãã®æçµäœ¿çšã¢ãã¬ã¹+1 ) èªã¿èŸŒã¿ãµã€ãºä¿æ * ã¡ã¢ãªæçµäœçœ®ãä¿æ = ããã°ã©ã å é ã¢ãã¬ã¹ [ é åç¯å²ãã§ã㯠^ ã©ãã«ã®æ¬¡è¡å é ã¢ãã¬ã¹ _ ç§åäœã®UNIXæéãè¿ããŸããåæã«ãã€ã¯ãç§ã % ã«èšå®ãããã { ãã¡ã€ã«å é äœçœ® | ãšã©ãŒã³ãŒãä¿æ } ãã¡ã€ã«æ«äœçœ® , ã¢ã¯ã»ã¹å¯èœå é ã¢ãã¬ã¹ ` Mersenne Twister ã«ããä¹±æ°ãè¿ãã . ã³ã³ãœãŒã«ã®å€§ãã(ãŠã£ã³ããŠãµã€ãº)ãäžäœ16ãããã«å¹ ã äžäœ16ãããã«é«ããæååäœã§è¿ãã ; å€æ°ã¹ã¿ãã¯ããããè¿ããŸã(ããã)ã _ çŸåšã®ç§ãè¿ãã% ã«ãã€ã¯ãç§ãè¿ãã ? æšæºå ¥åãã10é²æ°å€ãåŸãã $ æšæºå ¥åããæåãåŸãã @ æšæºå ¥åããæåãåŸããå ¥åããªããã° 0 ãè¿ãã \åŒ åŒã®ç€ºãçªå·ã®åŒæ°æååã®å é ã¢ãã¬ã¹ãè¿ããçªå·ã¯ïŒããã \\åŒ åŒã®ç€ºãçªå·ã®ç°å¢å€æ°æååã®å é ã¢ãã¬ã¹ãè¿ãã â åŒ åŒã¯ãæ°å€ãåçŽå€æ°ãŸãã¯é åå€æ°ãšä»¥äžã®æŒç®åã§æ§æããã32ãããã® å€ãè¿ããŸããæŒç®åã®åªå é äœã¯ ( ) å ãåªå ãããåé æŒç®åãšé¢æ°ã 次ã«åªå ãããŸãã ç®è¡æŒç®åãšæ¯èŒæŒç®åã¯åãåªå é äœãšããŠæ±ãããå·Šããå³ã«é 次å®è¡ã ããŸããä¹ç®ãšé€ç®ãå æžç®ãšåãåªå é äœã§ããããšã«æ³šæããŠãã ããã éåžžã®èšç®ã§ã¯ãä¹ç®ãšé€ç®ã¯å æžç®ã«åªå ãããªãããšã«æ³šæããã°åå㧠ãããA=B*--+(10-20) ã®ããã«è€éãªåŒã®äŸãèããŠèŠãŸãã æåã« B ãšä¹ç®ããæ°å€ãŸãã¯å€æ°ãããããšãèªèãããŸãããã®å€ã«å¯Ÿã ãŠã¯ç¬Šå·å転ããå¿ èŠãããããšãèšæ¶ãããŸããããã«ç¬Šå·å転ããã㫠絶察å€ãæ±ããããšãèšæ¶ããŸãããã®åŸ ()å ã«åªå çã«åŠçããå¿ èŠã®ãã åŒãããããã(10-20)ãè©äŸ¡ã㊠-10 ãšããçµæãåŸãŸãããããŸã§ã«èšæ¶ ããŠããåŠçãé 次å®è¡ããããšã§ ( ã®åã® + ã«ãã絶察å€ã® 10 ãåŸããã 2床ã®ç¬Šå·å転ã®çµæãçµå± 10 ãšããå€ãBãšä¹ç®ããããšãããããŸãã çµæãšããŠãA=B*10 ãšããèšç®ã«ãªããŸãã â ç®è¡æŒç®å A+B å ç® A-B æžç® A*B ä¹ç® A/B é€ç® A&B ãããè«çç© A\B ç¡ç¬Šå·é€ç® A^B æä»çè«çå A|B ãããè«çå A>>B å³ã·ãã A<<B å·Šã·ãã â åé æŒç®å -A Aã®ç¬Šå·å転 +A Aã®çµ¶å¯Ÿå€ <A Aã®äžäœ32bitã64ãããã«ãŒãæ¡åŒµ (32bitçã§ã¯äœãããªã) â æ¯èŒæŒç®å A=B A ãš B ãçãããã° 1 ãè¿ãããã以å€ã¯ 0 ãè¿ãã A<B A ã B ããå°ãããã° 1 ãè¿ãããã以å€ã¯ 0 ãè¿ãã A>B A ã B ãã倧ãããã° 1 ãè¿ãããã以å€ã¯ 0 ãè¿ãã A>=B A ã B ã以äžãªãã° 1 ãè¿ãããã以å€ã¯ 0 ãè¿ãã A<=B A ã B ã以äžãªãã° 1 ãè¿ãããã以å€ã¯ 0 ãè¿ãã A<>B A ãš B ãçãããªããã° 1 ãè¿ãããã以å€ã¯ 0 ãè¿ãã â çµã¿èŸŒã¿ã³ãã³ã rvtl ã¯ã³ãã³ãã ,="/usr/bin/bash" ã®ããã«å®è¡ããããšãã§ããŸããã æäœéå¿ èŠãªã³ãã³ããçµã¿èŸŒã¿ã³ãã³ããšããŠæã£ãŠããŸãã Linux ã®ã³ãã³ãã®ãã¡ rmãlsãcdãchmodãchrootãpwdãexecãmkdirã mvãrmdirãsyncãmountãumountãcatãswaponãswapoffãpivot_root ã« çžåœããçµã¿èŸŒã¿ã³ãã³ãããããŸãã ãŸãã¯ãæ¯èŒç䜿çšé »åºŠã®é«ãã³ãã³ãã§ããrvtl ãã·ã§ã«ã¹ã¯ãªãããšã㊠䜿ãå Žåããrvtl äžãã ,="/usr/bin/ls -l" ãå®è¡ããã®ãé¢åãªå Žåã«äœ¿ ããŸãã |ls*=A ã®ããã«çµã¿èŸŒã¿ã³ãã³ãã«ç¶ããŠã*=åŒããšãããšåŒã®å€ãå é ã¢ãã¬ã¹ãšããASCIIZæåå (0ã§çµããæåå) ãçµã¿èŸŒã¿ã³ãã³ãã® åŒæ°ãšããŠæž¡ãããšãã§ããŸãã|sy ã |fb? ã®ããã«åŒæ°ãå¿ èŠãšããªã ã³ãã³ãã§ã¯äœ¿ããŸããã ã泚æã åŒæ°ãå¿ èŠãšããçµã¿èŸŒã¿ã³ãã³ãã¯ãè¡æ«ãŸã§ãåŒæ°ãšå€æãããŸãã çµã¿èŸŒã¿ã³ãã³ãã®åŸãã«æ(ãã«ãã¹ããŒãã¡ã³ã)ã眮ããªãããã« ããŠäžããã â ãã¡ã€ã«ã®å 容衚瀺 cat ã³ãã³ãã«çžåœããŸãã æå®ãããã¡ã€ã«ã®å 容ã衚瀺ããŸãã |ca file â ã«ã¬ã³ããã£ã¬ã¯ããªå 容ã®è¡šç€º ls ã³ãã³ãã«çžåœããŸãã ã«ã¬ã³ããã£ã¬ã¯ããªã®ãã¡ã€ã«ã 衚瀺ããŸãã8é²æ°ã§è¡šãã ããŒããã·ã§ã³ããã¡ã€ã«ãµã€ãºã ãã¡ã€ã«åã®é ã§è¡šç€ºããŸãã |ls /usr ã®ããã«ãã£ã¬ã¯ããªã æå®ããããšãã§ããŸãã â ã«ã¬ã³ããã£ã¬ã¯ããªã®ç§»å cd ã³ãã³ãã«çžåœããŸãã ã«ã¬ã³ããã£ã¬ã¯ããªãæå®ãã ãã£ã¬ã¯ããªã«ç§»åããŸãã |cd /etc â ããŒããã·ã§ã³ã®å€æŽ chmod ã³ãã³ãã«çžåœããŸãã ãã¡ã€ã«ãŸãã¯ãã£ã¬ã¯ããªã® ããŒããã·ã§ã³ãå€æŽããŸãã ããŒããã·ã§ã³ã¯8é²æ°ã§æå®ããŸãã |cm 755 tmp.txt â ãã£ã¬ã¯ããªã®äœæ mkdir ã³ãã³ãã«çžåœããŸãã æå®ãããã£ã¬ã¯ããªãäœæããŸãã â ãã¡ã€ã«åã®å€æŽããã¡ã€ã«ã®ç§»å mv ã³ãã³ãã«çžåœããŸãã æå®ãããã¡ã€ã«åã®å€æŽããŸã㯠ãã¡ã€ã«ã移åããŸãã |mv file1 file2 |mv file ./dir â ãã£ã¬ã¯ããªã®åé€ rmdir ã³ãã³ãã«çžåœããŸãã æå®ãããã£ã¬ã¯ããªãåé€ããŸãã |rd dir â ã«ã¬ã³ããã£ã¬ã¯ããªã®è¡šç€º pwd ã³ãã³ãã«çžåœããŸãã ã«ã¬ã³ããã£ã¬ã¯ããªã衚瀺ããŸãã |cw â ãã¡ã€ã«ã®åé€ rm ã³ãã³ãã«çžåœããŸãã æå®ãããã¡ã€ã«ãåé€ããŸãã |rm file â ãã¡ã€ã«ã·ã¹ãã ã®ããŠã³ã mount ã³ãã³ãã«çžåœããŸãã éåžžãã¹ãŒããŠãŒã¶(root) ã§å®è¡ ããå¿ èŠããããŸãã mountã³ãã³ããšåæ§ã«ãã¡ã€ã«ã·ã¹ãã ã® ããŠã³ãããŸããã åŒæ°ã®äžãæ¹ãç°ãªããŸãã|mo /dev/hda3 /mnt ext2 ã ããŠã³ãæžã¿ã®ãã¡ã€ã«ã·ã¹ãã 㯠|ca /proc/mounts ã§ã®ç¢ºèªã§ããŸãã |mo /dev/hda3 /mnt vfat â Windows |mo /dev/hda1 /mnt ext2 â Linux æšæº |mo /dev/hdc5 /mnt reiserfs â reiserfs |mo none /proc proc â /proc |mo /dev/hdb /mnt iso9660 r â CD-ROM (èªåºãã®ã¿) â ãã¡ã€ã«ã·ã¹ãã ã®ã¢ã³ããŠã³ã umount ã³ãã³ãã«çžåœããŸãã éåžžãã¹ãŒããŠãŒã¶(root) 㧠å®è¡ããå¿ èŠããããŸãã ããŠã³ãããŠãããã¡ã€ã«ã·ã¹ãã ã ã¢ã³ããŠã³ãããŸãã |um ã®åŒæ°ã«ããã€ã¹å (/dev/hda2ç) 㯠æå®ã§ããŸãããããŠã³ããã€ã³ã (ãã£ã¬ã¯ããªå) ãæå®ããŠãã ããã |um /mnt |um /mnt/cdrom â ãã£ã¹ã¯ãžã®åŒ·å¶æžã蟌㿠sync ã³ãã³ãã«çžåœããŸãã å€æŽããããã¡ã€ã«ããã£ã¹ã¯ãã£ãã·ã¥ ããããŒããã£ã¹ã¯ãªã©ã® ããã€ã¹ã«ä¿åããŸãã |sy â ã«ãŒããã£ã¬ã¯ããªã®å€æŽ chroot ã³ãã³ãã«çžåœããŸãã ã«ãŒããã£ã¬ã¯ããªãå€æŽããŸãã |cr /mnt â å€éšã³ãã³ãã®å®è¡ exec ã³ãã³ãã«çžåœããŸãã exec ãå®è¡ããŸããrvtlã®ããã»ã¹ã æå®ããããã¡ã€ã«ã®ããã»ã¹ã« 眮ãæãããŸãã |ex /sbin/init â ã«ãŒããã¡ã€ã«ã·ã¹ãã ã®å€æŽ pivot_root ã³ãã³ãã«çžåœããŸãã ã«ã¬ã³ãããã»ã¹ã®ã«ãŒã ãã¡ã€ã«ã·ã¹ãã ã第2åŒæ°ã«æå®ãã ãã£ã¬ã¯ããªã«å€æŽããŠã 第1åŒæ°ã«æå®ãããã£ã¬ã¯ããªãæ°ãã ã«ãŒããã¡ã€ã«ã·ã¹ãã ã«ããŸãã ããšãã°ããããããŒãã£ã¹ã¯ãã rvtl èªèº«ã/sbin/initãšããŠèµ·å ããåŸã ã«ãŒããã¡ã€ã«ã·ã¹ãã ãããŠã³ãããããŒããã£ã¹ã¯ã«å€æŽããŠã ãã®ããŠã³ããã€ã³ããæ°ããã«ãŒããã¡ã€ã«ã·ã¹ãã ã«å€æŽããŠã ããã«ãããæ¬åœã®ã/sbin/init ã exec ãããããªå Žåã«äœ¿çšããŸãã ãå®è¡äŸã <0126> |mo /dev/hdc5 /mnt reiserfs Mount <0126> |cd /mnt Change Directory to /mnt <0126> |pv /mnt /mnt Pivot Root <0126> |ex /sbin/init â ã¹ã¯ããé åã®ãªãŒãã³ swapon ã³ãã³ãã«çžåœããŸãã ã¹ã¯ããé åããªãŒãã³ããŸãã ãå®è¡äŸã <0126> |so /dev/hda3 Swap On â ã¹ã¯ããé åã¯ããŒãº swapoff ã³ãã³ãã«çžåœããŸãã ã¹ã¯ããé åã¯ããŒãº ãå®è¡äŸã <0126> |sf /dev/hda3 Swap Off â ã³ãã³ãã®å®è¡åæ° rvtlãèµ·åããŠããã®åœä»€ã®å®è¡åæ°ã®çŽ¯èšã% ã«è¿ããŸãã ãå®è¡äŸã <0126> |zc ã³ãã³ãå®è¡åæ°ã (>ver.4.00) <0126> ?=% 8 â ã·ã¹ãã ã³ãŒã«ã®å®è¡ å€æ° a, b, c, d, e, f, g ãåŒæ°ãšããŠLinuxã®ã·ã¹ãã ã³ãŒã«ãå®è¡ããŸãã å€æ° a ã«ã¯ã·ã¹ãã ã³ãŒã«çªå·ãb ã第1åŒæ°ãc ã第2åŒæ°ã ããšã¯åæ§ã« 第6åŒæ°ãŸã§æå®ã§ããŸãã çµæã¯ãå€æ°ã|ã ã«è¿ããŸãã å€æ° a ã«ã¯ã·ã¹ãã ã³ãŒã«çªå·ã¯ã32bitçã§ã¯ x86ãARMãPowerPCã§å ±éã§ããã 64ãããçã§ã¯32ãããçãšç°ãªãäžãx86_64ãšARM64ã§ãç°ãªããŸãã |zz â URLãã³ãŒã URLãšã³ã³ãŒããããæååããã³ãŒãããŸãã u[0] URLãšã³ã³ãŒãæååã®å é èšå® u[1] å€æŽç¯å²ã®æåæ°ãèšå® u[2] ãã³ãŒãåŸã®æååå é ãèšå® u[3] ãã³ãŒãåŸã®æåæ°ãè¿ã |ud â rvtlã®ããŒãžã§ã³ |ve ãå®è¡ãããšã% ã«rvtlã®ããŒãžã§ã³ãè¿ããŸãã (64bitç㯠% ã®äžäœ32bitã«1ãè¿ããŸã) ãå®è¡äŸã <08C1> |ve ?=<% 40100 â CPUã®çš®é¡ |vc ãå®è¡ãããšãCPUã®çš®é¡ã % ã«è¿ããŸãã x86 㯠1ãarm 㯠2ãx86_64 㯠4ã arm64 㯠5 ãè¿ããŸãã ãå®è¡äŸã <086B> |vc ?=% 5 â ãã¬ãŒã ãããã¡çšçµã¿èŸŒã¿ã³ãã³ã ãã¬ãŒã ãããã¡ã䜿ãããã®çµã¿èŸŒã¿ã³ãã³ãããããŸãã|fbo, |fbc, |fbs ã¯ã«ãŒãã«ããã¬ãŒã ãããã¡ããµããŒãããŠããªãå Žåã¯ãšã©ãŒãš ãªããŸãããã以å€ã®æç»åœä»€ã¯ãã¬ãŒã ãããã¡ã®ã¡ã¢ãªã«å¯ŸããŠæç»ãã ã ãã§ãªããä»»æã®ã¡ã¢ãªé åã«å¯ŸããŠãå®è¡ã§ããŸããã¡ã¢ãªäžã«ç¢ºä¿ãã ãªãã¹ã¯ãªãŒã³é åã«å¯ŸããŠæç»ããŠããã¬ãŒã ãããã¡ã«è»¢éããããšã ã§ããŸããã¡ã¢ãªé åã«å¯ŸããŠäžæ¬ããŠå€ãæžã蟌ãå Žåããã¡ã¢ãªã®ã³ã㌠ãšããŠäœ¿çšã§ããŸãã|fb åœä»€ã«äžããåŒæ°ã¯ãåã 決ãŸã£ãé åå€æ°ã ãšããŠæž¡ããŸãã åœä»€ã䜿çšããåã«é åçšã®é åã確ä¿ããŠããå¿ èŠã ãããŸãããm=& l=m+64 t=l+64 r=t+64 ãã®ããã«åé åã«äžåŸã«64ãã€ã 確ä¿ããŠããã°ååã§ã(å€æ°ã®è§£èª¬åç §)ããµã³ãã«ã® fbinfo.vtlã fb_demo.vtl ãåèã«ããŠãã ããã åŒæ°ã®é åã®ã€ã³ããã¯ã¹ã®æå®æ¹æ³ã rvtlã®32bitçãš64bitçã§ã¯ç°ãªã éšåããããŸãã ã¡ã¢ãªã¢ãã¬ã¹ãæå®ããå Žåã« rvtl ã®64bitçã§ã¯ ã¢ãã¬ã¹ã«64bitãæå®ããå¿ èŠããããããåŒæ°ã®æå®ã«8ãã€ãé åè¡šçŸ ã䜿ãéšåããããŸãã äŸãã° Ubuntu 15.04 ã§ãã¬ãŒã ãããã¡ã䜿ãã«ã¯ ctrl ãš Alt ãš F1 ãåæã«æŒããŸããGUIã®ç»é¢ã«æ»ãã«ã¯ ctrl ãš Alt ãš F7 ãæŒããŸãã ãŸããäžè¬ãŠãŒã¶ã§ãã¬ãŒã ãããã¡ã«æžèŸŒã¿ããã«ã¯ video ã°ã«ãŒã ã«æå±ããå¿ èŠããããŸãã 以äžã®ã³ãã³ãã§èšå®ããŸãã sudo gpasswd -a ãŠãŒã¶ video video ã°ã«ãŒããæå¹ã«ããããã«åãã°ã€ã³ããŸãã â ãã¬ãŒã ãããã¡ã®ãªãŒãã³ å®è¡åŸãã¬ãŒã ãããã¡ã䜿ããç¶æ ãªãã°ãå€æ° f ã«ãã¬ãŒã ãããã¡ ã®å é ã¢ãã¬ã¹ãå€æ° g ã®ç€ºãã¢ãã¬ã¹ãããã¬ãŒã ãããã¡ã®æ å ± (Virtual Screen Information ãš Physical Screen Information)ãèšå® ãããŸãã f, g ãšãã« rvtl ãçšæããŠããã¢ãã¬ã¹ãè¿ãããããã é åçšã®ã¡ã¢ãª ã確ä¿ããå¿ èŠã¯ãããŸããã ãã¬ãŒã ãããã¡ã«ã¢ã¯ã»ã¹ããåã« [=0 ãå®è¡ããŠãã¢ã¯ã»ã¹ç¯å² ãã§ãã¯ãOFFã«ããå¿ èŠããããŸãã ãã¬ãŒã ãããã¡ãæå¹ã§ãªãå Žåã«ã¯ [ENODEV] No such device ãšè¡šç€º ãããŠçµäºããŸãã |fbo ãã¬ãŒã ãããã¡ã«é¢ããæ å ±ã¯é å g[] ããååŸããããšãã§ããŸãã Frame Buffer Virtual Screen Information [ 0] x resolution : g[0] [ 1] y resolution : g[1] [ 2] x res virtual : g[2] [ 3] y res virtual : g[3] [ 4] x offset : g[4] [ 5] y offset : g[5] [ 6] bits/pixel : g[6] [ 7] grayscale : g[7] [ 8] RED offset : g[8] [ 9] length : g[9] [10] msb_right : g[10] [11] GREEN offset : g[11] [12] length : g[12] [13] msb_right : g[13] [14] BLUE offset : g[14] [15] length : g[15] [16] msb_right : g[16] [17] TRANSP offset : g[17] [18] length : g[18] [19] msb_right : g[19] [20] nonstd : g[20] [21] activate : g[21] [22] height : g[22] [23] width : g[23] [24] accel_flags : g[24] [25] pixclock : g[25] [26] left margin : g[26] [27] right margin : g[27] [28] upper margin : g[28] [29] lower margin : g[29] [30] hsync length : g[30] [31] vsync length : g[31] [32] sync : g[32] [33] vmode : g[33] Frame Buffer Physical Screen Information [40] ID string : g(160) .. g(175) [44] frame buffer mem start : g[44] [45] frame buffer mem length : g[45] [46] frame buffer type : g[46] [47] interleave : g[47] [48] frame buffer visual : g[48] [49] x pan step : g{99} [49] y pan step : g{100} [50] y wrap step : g{101} [51] line length (bytes) : g[51] [52] Memory Mapped I/O start : g[52] [53] Memory Mapped I/O length: g[53] [54] acceleration type : g[54] â ãã¬ãŒã ãããã¡ã®ã¯ããŒãº |fbo ã§ãªãŒãã³ãããã¬ãŒã ãããã¡ãã¯ããŒãºããå Žå㫠䜿çšããŸãã |fbc â ãã¬ãŒã ãããã¡ã®èšå®å€æŽ |fbo ã§è¿ããã g é åã«ãã¬ãŒã ãããã¡ã®èšå®ãæžããŠãã åŒã³åºããŸãã |fbs â ç¹ã®æç» ãã¬ãŒã ãããã¡ã«ç¹ãæç»ããŸããé å d ã«å¿ èŠãªå€ãèšå®ããŠåŒã³åºããŸãã d[0]=f ãšãããšãã¬ãŒã ãããã¡ã«å¯ŸããæäœãšãªããŸãã d[0] ã« ã¡ã¢ãªã¢ãã¬ã¹ãèšå®ãããšã¡ã¢ãªã«å¯ŸããŠã®æç» ã«ãªããããã¯ãããã¡ ã«å¯Ÿããæžã蟌ã¿ãå¯èœã§ãã d[0] = addr æç»é åå é ã¢ãã¬ã¹ d[1] = x 転éå ã®Xåº§æš d[2] = y 転éå ã®Yåº§æš d[3] = Color è² d[4] = ScrX 転éå Xæ¹åã®ãã€ãæ° d[5] = Depth 1ãã¯ã»ã«ã®ãããæ° |fbd â å¡ãã€ã¶ã ãã¬ãŒã ãããã¡ãæå®ããè²ã§å¡ãã€ã¶ããŸãã é å m ã«å¿ èŠãªå€ã èšå®ããŠåŒã³åºããŸãã ãã¬ãŒã ãããã¡ãã¯ãªã¢ããå Žåãªã©ã«äœ¿çšããŸãã m[0]=f ãšãããšãã¬ãŒã ãããã¡ã«å¯ŸããæäœãšãªããŸãã m[0] ã«ã¡ã¢ãªã¢ãã¬ã¹ãèšå®ãããšã¡ã¢ãªã«å¯ŸããŠã®æç» ã«ãªãã ããã¯ãããã¡ã«å¯Ÿããæžã蟌ã¿ãå¯èœã§ãã m[0] = addr ã¡ã¢ãªãã£ã«å é ã¢ãã¬ã¹ m[1] = offset ãªãã»ãã(ãã€ã) m[2] = length é·ã(ãã¯ã»ã«) m[3] = color è² m[4] = Depth 1ãã¯ã»ã«ã®ãããæ° |fbf â ã©ã€ã³æç» ãã¬ãŒã ãããã¡ã«æå®ããè²ã®ç·ãæç»ããŸãã é å l (è±å°æåã®ãšã«) ã«å¿ èŠãªå€ãèšå®ããŠåŒã³åºããŸãã l[0]=f ãšãããšãã¬ãŒã ãããã¡ã« 察ããæäœãšãªããŸãã l[6]ãl[7] ã¯å éšã§äœ¿çšããäœæ¥é åã§ãã æå®ããå¿ èŠã¯ãããŸããã l[0] ã«ã¡ã¢ãªã¢ãã¬ã¹ãèšå®ãããšã¡ã¢ãªã« 察ããŠã®æç» ã«ãªããããã¯ãããã¡ã«å¯Ÿããæžã蟌ã¿ãå¯èœã§ãã l[0] = addr æç»é åå é ã¢ãã¬ã¹ l[1] = x å§ç¹ã®Xåº§æš l[2] = y å§ç¹ã®Yåº§æš l[3] = x çµç¹ã®Yåº§æš l[4] = y çµç¹ã®Yåº§æš l[5] = col ã©ã€ã³ã®è² l[6] = incr1 äœæ¥é å l[7] = incr2 äœæ¥é å |fbl â ãã¿ãŒã³è»¢é ã¡ã¢ãªã¢ãã¬ã¹ mem ãå é ã«æ ŒçŽãããŠãããã¿ãŒã³(ç»å)ã addr 㫠転éããŸãã é å p ã«å¿ èŠãªå€ãèšå®ããŠåŒã³åºããŸãã p[0]=f ãšãããšãã¬ãŒã ãããã¡ã«å¯ŸããæäœãšãªããŸãã p[0] ã«ã¡ã¢ãªã¢ãã¬ã¹ãèšå®ãããšã¡ã¢ãªã«å¯ŸããŠã®æç» ã«ãªãã ããã¯ãããã¡ã«å¯Ÿããæžã蟌ã¿ãå¯èœã§ãã p[0] = addr 転éå ã¢ãã¬ã¹ p[1] = x 転éå ã®Xåº§æš p[2] = y 転éå ã®Yåº§æš p[3] = PatW ãã¿ãŒã³ã®å¹ p[4] = PatH ãã¿ãŒã³ã®é«ã p[5] = mem ãã¿ãŒã³ã®æ ŒçŽã¢ãã¬ã¹ p[6] = ScrX Xæ¹åã®ãã€ãæ° p[7] = Depth 1ãã¯ã»ã«ã®ãããæ° |fbp â ãã¿ãŒã³è»¢é2 ã¡ã¢ãªã¢ãã¬ã¹ mem ãå é ã«æ ŒçŽãããŠãããã¿ãŒã³(ç»å)ã addr 㫠転éããŸãã転éå (mem) ã®ç»åã®äžéšã転éããŸãã é å t ã«å¿ èŠãª å€ãèšå®ããŠåŒã³åºããŸãã t[0]=f ãšãããšãã¬ãŒã ãããã¡ã«å¯Ÿãã æäœãšãªããŸããããã« t[5]=f ãšããå Žåã¯ãã¬ãŒã ãããã¡å 㧠ç©åœ¢é åãã³ããŒããŸãã転éå 㚠転éå ãéãªã£ãå Žåã®åäœã¯ ä¿èšŒãããŸããã t[0] ã«ã¡ã¢ãªã¢ãã¬ã¹ãèšå®ãããšã¡ã¢ãªã«å¯ŸããŠã®æç» ã«ãªãã ããã¯ãããã¡ã«å¯Ÿããæžã蟌ã¿ãå¯èœã§ãã t[0] = addr 転éå ã¢ãã¬ã¹ t[1] = x 転éå ã®Xåº§æš t[2] = y 転éå ã®Yåº§æš t[3] = PatW ãã¿ãŒã³ã®å¹ t[4] = PatH ãã¿ãŒã³ã®é«ã t[5] = mem ãã¿ãŒã³ã®æ ŒçŽã¢ãã¬ã¹å é t[6] = ScrX 転éå ã®Xæ¹åã®ãã€ãæ° t[7] = Depth 1ãã¯ã»ã«ã®ãããæ° t[8] = x2 転éå ã®Xåº§æš t[9] = y2 転éå ã®Yåº§æš t[10]= ScrX2 転éå ã®Xæ¹åã®ãã€ãæ° |fbt â ãã¹ã¯ä»ããã¿ãŒã³è»¢é ã¹ãã©ã€ãããã¬ãŒã ãããã¡ã«æç»ããŸãã é å q ã«å¿ èŠãªå€ãèšå®ã㊠åŒã³åºããŸãã q[8] ã§è»¢éããªãè²ãæå®ã§ããä»ã¯ |fbp ãšåãã§ãã èæ¯ç»åã«å¯ŸããŠãã¿ãŒã³ãéããå Žåã«äœ¿çšããŸãã q[0] ã«ã¡ã¢ãªã¢ãã¬ã¹ãèšå®ãããšã¡ã¢ãªã«å¯ŸããŠã®æç» ã«ãªãã ããã¯ãããã¡ã«å¯Ÿããæžã蟌ã¿ãå¯èœã§ãã q[0] = addr 転éå ã¢ãã¬ã¹ q[1] = x 転éå ã®Xåº§æš q[2] = y 転éå ã®Yåº§æš q[3] = PatW ãã¿ãŒã³ã®å¹ q[4] = PatH ãã¿ãŒã³ã®é«ã q[5] = Color ãã¿ãŒã³ã®æ ŒçŽã¢ãã¬ã¹ q[6] = ScrX Xæ¹åã®ãã€ãæ° q[7] = Depth 1ãã¯ã»ã«ã®ãããæ° q[8] = Mask ãã¹ã¯è² |fbq â ç©åœ¢é åã®å¡ãã€ã¶ã |fbf ãšäŒŒãŠããŸãããä»»æã®ç©åœ¢é åãäžå®ã®è²ã§å¡ãã€ã¶ããŸãã é å r ã«å¿ èŠãªå€ãèšå®ããŠåŒã³åºããŸãã r[0] ã«ã¡ã¢ãªã¢ãã¬ã¹ãèšå®ãããšã¡ã¢ãªã«å¯ŸããŠã®æç» ã«ãªãã ããã¯ãããã¡ã«å¯Ÿããæžã蟌ã¿ãå¯èœã§ãã r[0] = addr 転éå ã¢ãã¬ã¹ r[1] = x 転éå ã®Xåº§æš r[2] = y 転éå ã®Yåº§æš r[3] = PatW é åã®å¹ r[4] = PatH é åã®é«ã r[5] = Color å¡ãã€ã¶ãè² r[6] = ScrX Xæ¹åã®ãã€ãæ° r[7] = Depth 1ãã¯ã»ã«ã®ãããæ° |fbr â ã¡ã¢ãªã³ã㌠ã¡ã¢ãªã c[0] ã§æå®ããã¢ãã¬ã¹ãã c[1] ã§æå®ããã¢ãã¬ã¹ãž c[2] ãã€ãã³ããŒããŸãã倧éã®è»¢éã rvtl ã§èšè¿°ãããšé ãå Žå㫠䜿çšããŸãããã¬ãŒã ãããã¡ä»¥å€ã®äžè¬ã®ã¡ã¢ãªè»¢éã«ã䜿çšã§ããŸãã 転éããé åãéãªã£ãŠããŠã䜿çšã§ããŸãã c[0] = source 転éå å é ã¢ãã¬ã¹ c[1] = dest 転éå å é ã¢ãã¬ã¹ c[2] = length 転éãã€ãæ° |fbm â äžçŽè åãã®æ©èœ rvtl ã®ã³ãã³ãã©ã€ã³ã§æå®ãã rvtl ã®ããã°ã©ã ã¯ããã®ãŸãŸã¡ã¢ãªã« æ ŒçŽãããã®ã§ã¯ãªããã³ã³ãœãŒã«(ããŒããŒã)ããå ¥åããããã«åŠçãã ãŸããã€ãŸããè¡çªå·ã¯æŽåãããŠããå¿ èŠããªããè¡çªå·ããã°ãã°ããã§ã ã¡ã¢ãªã«ã¯æŽåãããŠæ ŒçŽãããŸãããŸãã#=1 (RUN) ã &=0 (NEW) ã®ããã« è¡çªå·ãªãã§çŽæ¥å®è¡ããã³ãã³ããèšè¿°ããããšãå¯èœã§ãã äŸãã°: 20 #=-1 : ããã°ã©ã çµäº 10 "Hello world!" / : æååãåºåããŠæ¹è¡ 0 : ãªã¹ãåºå <="hello2.vtl" : ãªã¹ããhello2.vtl ãšãããã¡ã€ã«åã§ä¿å / : æ¹è¡åºå #=1 : ããã°ã©ã ãå®è¡ ~ : rvtl ã®çµäº ã®ããã«æžããããã¡ã€ã«(hello1.vtl)ãå®è¡ãããšã次ã®çµæãšãªããŸãã $ rvtl hello1.vtl 10 "Hello world!" / : æååãåºåããŠæ¹è¡ 20 #=-1 : ããã°ã©ã çµäº hello2.vtl Hello world! rvtl ã«ã¯ããã°ã©ã ã®å é ã¢ãã¬ã¹ãå€æŽããæ©èœããããŸããã¡ã¢ãªäžã« è€æ°ã®ããã°ã©ã ãæ ŒçŽããŠãåãæ¿ããŠå®è¡ããããšãã§ããŸãã å é ã¢ãã¬ã¹ã¯ ã=ãã·ã¹ãã å€æ°ã«æ ŒçŽãããŠããããããããæžãæãã ããšã§å®çŸããŸããããã©ã«ãã®ããã°ã©ã ã®å é ã¢ãã¬ã¹ã¯ã,ãã«æ ŒçŽãã ãŠããŠãæžãæããããšã¯ã§ããŸãããã=ãã·ã¹ãã å€æ°ã®åæå€ã¯ã,ãã§ãã ã==,ããå®è¡ãããŠãããšèããŠãã ãããããã§ã==,+2000ããšå®è¡ãããš ããŸããããã¯ããããã°ã©ã å é ã¢ãã¬ã¹ãããã©ã«ãã®ã¢ãã¬ã¹ã«2000ã å ããäœçœ®ã«å€æŽããããšããæå³ã«ãªããŸããå®éã«ã==,+2000ããå®è¡ãããšã ã&=0 required.ããšè¡šç€ºãããŸããé©åœã«ããã°ã©ã ã®å é ã¢ãã¬ã¹ãå€æŽãã ããã«ããã°ã©ã ã®çµäºã¢ãã¬ã¹(ã®åŸã)ã決ããããªãããããNEWãå®è¡ãã!ã ãšãã£ãŠããŠããŸããã&=0ããå®è¡ããŠãããã°ã©ã ãäœãå ¥åããŠãã ããã äŸãã°ã100 "Start"ããšããŸããã#=1ãã§å®è¡ããŠãã==,ãã§ããã©ã«ãã® ããã°ã©ã å é ã¢ãã¬ã¹ã«æ»ããå床ã==,+2000ããå®è¡ãããšãä»åºŠã¯ ã&=0 required.ããšè¡šç€ºãããŸãããã0ãã§ãªã¹ã衚瀺ããããšã 100 "Start" ãšè¡šç€ºãããŸããåã«å ¥åããããã°ã©ã ããã®ãŸãŸèªèãããŠããŸãã ==<ã¢ãã¬ã¹> ãå®è¡ããŠãããã°ã©ã å é ã¢ãã¬ã¹ãå€æŽããå Žåã«ããã§ã« æå¹ãªããã°ã©ã ãååšããå Žåã«ã¯ããã®ããã°ã©ã ã®çµäºã¢ãã¬ã¹ãèªè ãããŠå®è¡ã§ããããã«ãªããŸãã rvtlã®ããã°ã©ã ãã·ã§ã«ã¹ã¯ãªãããšããŠçŽæ¥å®è¡ããããã«ã¯ã å é è¡ã« #!/usr/bin/rvtl ãä»å ããŸãã# ã®åã«ç©ºçœãªã©ãæ¿å ¥ããªã㧠äžãããrvtl ã®æ ŒçŽå Žæãç°ãªãå Žå㯠#!/usr/bin/rvtl ãªã©ãš ããŸãã以äžã®ããã°ã©ã ã script.vtl ãšãããã¡ã€ã«åã§ä¿åããŠã chmod 755 script.vtl ã®ããã«ããŒããã·ã§ã³ãå®è¡å¯èœã«å€æŽããŸãã #!/usr/bin/rvtl 10 "test" / 20 ?=12345 / #=1 ~ å®è¡ãããšè¡çªå·ã®ä»ãã 2è¡ã®rvtlã®ããã°ã©ã ãã¡ã¢ãªäžã«ä¿åããã #=1 ã§å®è¡ã~ ã§çµäºã®ããã«åäœããŸãã $ ./script.vtl test 12345 â ã³ãã³ãã©ã€ã³åŒæ° rvtl ã®èµ·åæã« rvtl ã®ããã°ã©ã ãåŒæ°ãšããŠäžããããšãã§ããŸãã rvtl ã¯èµ·åãšãšãã«ããã°ã©ã ãèªã¿èŸŒã¿ãŸãããã®ãšãè€æ°ã® rvtl ããã°ã©ã ãæå®ãããšé ã«èªã¿èŸŒã¿ããã°ã©ã ã§äœ¿çšããŠããè¡çªå·ã« ãããã£ãŠã¡ã¢ãªäžã«æ··ãã£ã圢ã§æ ŒçŽãããŸããåŒæ°ãšããŠäžãã ããã°ã©ã ãšããŠãè¡çªå·ãä»ããªã圢åŒã®ã#=1ãå®è¡ãã~ãçµäºã ã0ããªã¹ããªã©ãå«ãã ãã¡ã€ã«ãæå®ããããšãã§ããŸãã ãµã³ãã«ããã°ã©ã ã® run.vtl ã®å 容ã¯ã#=1ãã ããrunq.vtl 㯠ã#=1ããšã~ãã®ãã¡ã€ã«ã«ãªã£ãŠããŸãã $ rvtl abc.vtl runq.vtl ãšã³ãã³ãã©ã€ã³ã§æå®ãããšãabc.vtl ãå®è¡ããŠãrvtlèªèº«ãçµäº ããããšãã§ããŸãã rvtl ã®ããã°ã©ã ã«ã³ãã³ãã©ã€ã³ããæååãäžããããšãã§ããŸãã ã³ãã³ãã©ã€ã³åŒæ°ã®å é ãã-ãã§ããåŒæ°ã®åŸãã¯ãããã°ã©ã äžã§ \0ã\1 ã®ããã«åŒæ°ã®æååã®å é ã¢ãã¬ã¹ãåç §ããããšãã§ããŸãã åŒæ°æåå㯠rvtl ã®ããã»ã¹ã®ã¹ã¿ãã¯é åã瀺ããŠããããã é åãšããŠåç §ããããæååã³ã㌠(äŸãã° A*=\0) ãå®è¡ããåã«ã¯ ç¯å²ãã§ãã¯ãOFF ([=0) ã«ããªãå Žåã«ãOut of Rangeããšã©ãŒã«ãªã ããšã«æ³šæããŠãã ããã 次ã®ããã°ã©ã ã arg.vtl ãšãããã¡ã€ã«åã§ä¿åããŠãããšããŸãã 100 I=0 : æåã®åŒæ° 110 [=0 : ç¯å²ãã§ãã¯ã OFF 120 @ : ç¹°ãè¿ã (DO) 130 S=\I : åŒæ°ã®å é ã¢ãã¬ã¹ 140 ;=S(0)<>0 $*=S / : åŒæ°ã衚瀺 150 I=I+1 : 次ã®åŒæ° 160 @=(S(0)=0) : 空æååãªãç¹°ãè¿ããçµäº 170 [=1 : ç¯å²ãã§ãã¯ã ON ã«æ»ã 160 #=-1 : å®è¡çµäº S=\I ã®éšåã§ã-ãã®åŸãã®åŒæ°ãåç §ããŠããŸãã è¡çªå· 110 ã®ã[=0ãã¯ã1ãã€ãé åã§åŒæ°æååãã¢ã¯ã»ã¹ããå Žåã® ç¯å²å€ãšã©ãŒãåé¿ããããã®ãã®ã§ãã \I ã空æåå (è¡æ«ã® 0 ã®ã¿) ã瀺ãå Žåã«ã¯åŒæ°ã衚瀺ããããšãªã (è¡çªå· 140)ãã«ãŒããçµäº(è¡çªå· 160) ããŸãã ã-ããšããåŒæ°ã®åŸã«é©åœã«åŒæ°ãäžããŠå®è¡ããŸãã $ rvtl arg.vtl runq.vtl - abc xyz arg.vtl abc xyz arg.vtl åŒæ°ã«æ¥æ¬èªã®æååãäžããå Žåã確èªããŠã¿ãŸãã $ rvtl arg.vtl - æ¥æ¬èªã ã§ããããªïŒ <0F2F> #=1 æ¥æ¬èªã ã§ããããªïŒ å®éã«å®è¡å¯èœãªã¹ã¯ãªãããäœæããŠã¿ãŸãããã #!/usr/bin/rvtl 100 $*=\0 / : æåã®åŒæ°ã衚瀺 110 [=0 120 |ls*=\0 : ãã¡ã€ã«ãªã¹ãã衚瀺 130 [=1 #=1 : å®è¡ã㊠~ : çµäº ls.vtlãäžã®å 容ã®ãã¡ã€ã«ã®å Žåã次ã®ããã« ls.vtl ã«å®è¡æš©éãäžã㊠å®è¡ãããšã/etcãã衚瀺ããåŸããã¡ã€ã«ãªã¹ãã衚瀺ãããŸãã $ ./ls.vtl - /etc /etc List Directory 640755 1392 . 040755 928 .. 440755 744 X11 300644 1615 rpc 300644 19 motd 300644 281 mtab 640755 704 rc.d 300644 126 ttys 320777 13 utmp 320777 13 wtmp : ç¥ : 次ã®ããã« rvtl ããå®è¡ããŠãããŸã£ããåãåäœãããŸãã $ rvtl ls.vtl - /etc rvtl ã /sbin/init (ããã»ã¹IDã1) ãšããŠäœ¿ãå Žåã«ã/sbin/init.vtl ãååšãããšèµ·åæã«èªåçã«èªã¿èŸŒãŸããŸãã 1FDLinux ã CD-ROMããŒã㧠rvtl ãããŒãããŒã代ããã«äœ¿ãäŸã¯ http://www.mztn.org/ ãåç §ããŠãã ããã â ããã°ã©ã äŸãšãªãã³ã rvtl èªèº«ã«ã¯ãªãã³ã(è¡çªå·ã®æŽç)æ©èœã¯ãããŸãããrvtlãèªåèªèº«ã æžããªãããŠãªãã³ãããããšãã§ããŸããGOTO (#=) ã GOSUB (!=) ã®é£ã³å ã«ã©ãã«ã®ã¿ã䜿ã£ãŠè¡çªå·ãæå®ããŠããªãå Žåã«ã¯ã次ã®ããã°ã©ã ã ãªãã³ããããããã°ã©ã (ã®æåŸéš)ã«ããŒãžã㊠#=90000 ã®ããã«å®è¡ããã° ãªãã³ãã§ããŸãã rvtl ã®ããã°ã©ã ã¯ãã¡ã¢ãªã«æ¬¡ã®ãããªåœ¢åŒã§æ ŒçŽãããŠããŸãã NextPtr(4), LineNo(4), Source Text(è¡çªå·ãé€ã), 0 o NextPtr ã¯æ¬¡ã®è¡ãžã®ãã€ããªãã»ãã. o NextPtr ã $FFFFFFFF ã®æã¯æçµè¡ 90010 Z=# : è¡çªå·ãä¿å 90020 N== : ã³ãŒãé åå é 90030 S=1000 : è¡çªå·éå§çªå· 90040 ;=N[1]>=Z #=-1 : èªåèªèº«ã¯åŠçããªã 90050 S=S/10 : æ°è¡çªå·ã¯10çªããã«èšå® 90060 @ 90070 N[1]=S+I*10 : æ°è¡çªå· 90080 N=N+N[0] I=I+1 : 次è¡å é 90090 @=((N[0]<0)+(N[1]>=Z)) : æåŸã®è¡ãŸã§åŠçããã? äžæ¹ãGOTO (#=) ã GOSUB (!=) ã®é£ã³å ã«è¡çªå·ã䜿ã£ãŠããå Žåã«ã¯ã ããå°ãè€éãªåŠçãå¿ èŠã§ãã#=10 ã #=1010 ã®ããã«çœ®æããå Žåã«ã¯ è¡ã®é·ããå€åããŸããè¡çªå·ã®é·ãã®å€åã«è¿œåŸããã®ã¯é¢åãªã®ã§ã 次ã®ããã°ã©ã ã§ã¯ãªãã³ãããçµæãæšæºåºåã«æžãåºããŠããŸãã ãã¯ãããªãã³ããããããã°ã©ã (ã®æåŸéš)ã«ããŒãžã㊠#=90000 ã®ããã« å®è¡ããã°ãªãã³ãããçµæã衚瀺ãããŸããããã§ã¯è¡šç€ºã ããªã®ã§ã æšæºåºåããã¡ã€ã«ã«ãªãã€ã¬ã¯ãããŸãã 1) ãªãã³ããããããã°ã©ã ããã¡ã€ã«ã«æžãåºã <="xxx.vtl" 2) ãªãã³ããå®è¡ ,="./rvtl xxx.vtl renum.vtl > xxx2.vtl" 90000 Z=# : è¡çªå·ãä¿å 90010 :--------------- Renumber ----------------------------------- 90020 : renum.vtl 2003/10/03, 2015/09/17 Jun Mizutani 90030 : ,="./rvtl xxx.vtl renum.vtl > xxx2.vtl" 90040 :------------------------------------------------------------ 90050 : 90060 T== : ã³ãŒãé åå é 90070 N=T : Nã¯è¡å é ãã€ã³ã¿ãæåã®è¡ã«èšå® 90080 B=& : 2500è¡åã®æ§è¡çªå· 90090 C=B+10000 : 2500è¡åã®æ°è¡çªå· 90100 : 90110 S=1000 : è¡çªå·éå§çªå· 90120 ;=N[1]>=Z #=-1 : renum.vtl èªèº«ã¯åŠçããªã 90130 I=0 : è¡çªå·ããŒãã«ã®ã€ã³ããã¯ã¹ 90140 S=S/10 : æ°è¡çªå·ã¯10çªããã«èšå® 90150 @ 90160 B[I]=N[1] : æ§è¡çªå· 90170 C[I]=S+I*10 : æ°è¡çªå· 90180 N=N+N[0] : 次è¡å é 90190 I=I+1 : è¡çªå·ããŒãã«ã€ã³ããã¯ã¹æŽæ° 90200 @=((N[0]<0)+(N[1]>=Z)) : æåŸã®è¡ãŸã§åŠçããã? 90210 Q=I-1 90220 : !=^TableList 90230 N=T : è¡å é ãã€ã³ã¿ãæåã®è¡ã«èšå® 90240 I=0 : è¡å ã®äœçœ® 90250 @ 90260 ?=C[I] " " : è¡çªå·åºå 90270 K=8 : ã³ãŒãè¡é 90280 F=0 90290 @ 90300 H=N(K) ;=H<>0 $=H : 1æååºå 90310 ;=((H='"')+(H=':'))*(F=0) F=1 #=^skip0 90320 ;=(H='"')*(F=1) F=0 : ã³ã¡ã³ããæååäžã¯ç¡èŠ 90330 ^skip0 90340 ;=((H='#')+(H='!'))*((N(K-1)=' ')+(K=8))*(F=0) !=^Replace 90350 K=K+1 : 次ã®æå 90360 @=(H=0) : è¡æ«ãŸã§ç¹°è¿ã 90370 N=N+N[0] / : 次è¡å é 90380 I=I+1 90390 @=((N[0]<0)+(N[1]>=Z)) : æåŸã®è¡ãŸã§åŠçããã? 90400 #=-1 90410 : 90420 ^Replace 90430 ;=N(K+1)<>'=' ] : GOTOãŸãã¯GOSUBã§ãªããã°æ»ã 90440 K=K+1 : 次ã®æå 90450 $=N(K) K=K+1 : = åºå 90460 ;=N(K)='-' "-" ] : è² æ°(#=-1)ã®å Žåã¯äœãããªã 90470 ;=N(K)='^' "^" ] : ã©ãã«ãªãäœãããªã 90480 L=0 : 10é²æ°åæååãæ°å€ã«å€æ 90490 @ 90500 H=N(K) ;=(H>='0')*(H<='9') L=L*10+(H-'0') 90510 K=K+1 90520 @=((H<'0')+(H>'9')) 90530 : / "L=" ?=L / 90540 J=0 : è¡çªå·ããŒãã«ãã¹ãã£ã³ 90550 @ 90560 ;=B[J]=L L=C[J] J=Q #=^skip1 : åãçªå·ãªã眮æ 90570 ;=B[J]>L L=C[J] J=Q : åäžçªå·ãç¡ããã°æ¬¡ 90580 ^skip1 90590 J=J+1 90600 @=(J>Q) : èŠã€ãããçµã 90610 ?=L $=H K=K-1 90620 ] 90630 ^TableList 90640 J=0,Q : è¡çªå·ããŒãã«ã®è¡šç€º 90650 ?(6)=B[J] " " ?(6)=C[J] / 90660 @=J+1 90670 ] #=90000 ~ vtl/renum.sh ã䜿ã£ãŠã次ã®äŸã®ããã« check.vtl ããªãã³ãã㊠__check.vtl ã«æžãåºãããšãã§ããŸãããããäžçªäŸ¿å©ã§ãã $ ./renum.sh check.vtl â å¶é å€æ°ã¹ã¿ãã¯ã«ç©ãããšã®ã§ããå€æ°ã®æ倧åæ° 1024 ãµãã«ãŒãã³ã®ãã¹ã+ (ã«ãŒãã®ãã¹ãx 2) æ倧32 ããã°ã©ã + ããŒã¿çšã®ã¡ã¢ãªã®åæå€ 256 ãããã€ã 䜿çšå¯èœãªã©ãã«ã®æå€§æ° 1024 â ãã¡ã€ã«ã®æ§æ README.txt ãã®ææž LICENSE-GPL2.txt ã©ã€ã»ã³ã¹ rvtl_ref.txt rvtlã®æ©èœäžèŠ§ rvtl64 rvtl64 ã®å®è¡ããã°ã©ã source/ rvtl64 ã®ã¢ã»ã³ããªãœãŒã¹ vtl/ rvtl64 ã®ãµã³ãã«ããã°ã©ã â ææ°æ å ± ãã®ææžä»¥å€ã®æ å ±ããµã³ãã«ããã°ã©ã ãrvtlã®ææ°æ å ±ã¯ http://www.mztn.org/ ãåç §ããŠäžããã rvtl ã䜿ã£ãŠããã°ã©ã ãäœæãããæ¹ã¯ mizutani.jun@nifty.ne.jp ãŸã§ ãç¥ãããã ãããhttp://www.mztn.org/ ã§çŽ¹ä»ãããŠé ããŸãã â ã©ã€ã»ã³ã¹ ãã®ãœããã¯ããªãŒãœãããŠã§ã¢ã§ã. GNU General Pulic Licenceã«ãããã£ãŠ èªç±ã«äœ¿çšïŒé åžïŒæ¹å€ããŠé ããŠããŸããŸããã GNU General Pulic Licence ã®è©³çŽ°ã¯COPYINGãåç §ããŠäžããã èäœæš©ã¯ç§(æ°Žè°· çŽ, mizutani.jun@nifty.ne.jp)ãä¿æããŠããŸãã æ¬ãœãããŠã§ã¢ã«ãã£ãŠçããæ害ã«ã€ããŠèäœè ã¯è²¬ä»»ãè² ããŸããã ãŸããèäœè ã¯ããŒãžã§ã³ã¢ããã®çŸ©åãè² ããŸããã
About
RVTL : Tiny BASIC in x86 assembly language for Linux
Resources
License
Stars
Watchers
Forks
Releases
No releases published