103ffe29f13c16f55d032d8789176951d1673270
Added service function. (A service function dumping information for debugging, Added service function for screen drawing ON / OFF control) Specifically, see README. Make the object's destructor called from bios_exit () Add appropriate Destroy function to each object. Delete objects properly We have checked the termination process as a whole, as done. Fix to accept interrupts even during key_wait (). (Previously, only key input was accepted) Some timer interrupts are improved. (UNIXTimer.c) Change the wonx_include directory to wonx. Changed to search the full path to perl automatically and insert it at the beginning of perl script. Makefile review, improvement. Changed ON / OFF of screen drawing to switch according to display level. (See README for details.) Also change to display level lowered by F9 and display level raised by F10. In accordance with that, we have reviewed a part of ON / OFF part of drawing and key input event processing. Fixed to display message when pressing key. Obj ObjListData_GetPrev (ObjListData data) Obj ObjListData_GetNext (ObjListData data) To ObjListData ObjListData_GetPrev (ObjListData data) ObjListData ObjListData_GetNext (ObjListData data) Fixed to. Added install, uninstall target to Makefile. Fixed challsrc.sh. Version 2.2 - from wonx-2.2.tar.gz
Corresponding to colorization. Added XColorGC class for GC management. (It diverted from XFireworks)
Corresponding to colorization. Added XColorGC class for GC management. (It diverted from XFireworks)
Corresponding to colorization. Added XColorGC class for GC management. (It diverted from XFireworks)
Corresponding to colorization. Added XColorGC class for GC management. (It diverted from XFireworks)
Corresponding to colorization. Added XColorGC class for GC management. (It diverted from XFireworks)
Corresponding to colorization. Added XColorGC class for GC management. (It diverted from XFireworks)
Corresponding to colorization. Added XColorGC class for GC management. (It diverted from XFireworks)
Corresponding to colorization. Added XColorGC class for GC management. (It diverted from XFireworks)
Corresponding to colorization. Added XColorGC class for GC management. (It diverted from XFireworks)
Corresponding to colorization. Added XColorGC class for GC management. (It diverted from XFireworks)
Corresponding to colorization. Added XColorGC class for GC management. (It diverted from XFireworks)
Corresponding to colorization. Added XColorGC class for GC management. (It diverted from XFireworks)
Corresponding to colorization. Added XColorGC class for GC management. (It diverted from XFireworks)
Corresponding to colorization. Added XColorGC class for GC management. (It diverted from XFireworks)
Corresponding to colorization. Added XColorGC class for GC management. (It diverted from XFireworks)
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
WonX - WonderWitch on X. â é åžã«åœãã£ãŠ ãæèŠïŒãèŠæãªã©æè¿ããŸãïŒã©ãã©ããå¯ããã ããïŒ ãã°æ å ±ãã¢ããã€ã¹ãããã°ïŒäœè ã®åäºåŒäº®ãŸã§ïŒã©ãã©ãã¡ãŒã«ãã ããïŒ ã¢ãã¬ã¹ã¯ïŒ hsakai@m8.people.or.jp ã§ãïŒ (ãã ãïŒè¿äºãæžããšã¯éããªããïŒèŠæãåæ ãããšãéããŸããã®ã§ ãã®ç¹ã¯ã容赊ãã ãã) ãŸãïŒåäºã®æ°ãåãéãïŒã¢ããããŒãã¯éæè¡ã£ãŠãããŸãïŒ http://www.seki.ee.kagu.sut.ac.jp/~sakai/WonderWitch/index.html ã§ïŒéæå ¬éããŠãããŸãïŒ ä»¥äžã¯ãã©ãŒãµã€ãã§ãïŒ http://hp.vector.co.jp/authors/VA014157/WonderWitch/index.html http://www.people.or.jp/~hsakai/WonderWitch/index.html ãã©ãŒãµã€ãã¯ïŒåäºãæ°ãåãããšãã«ã¢ããããŒãããã®ã§ïŒåžžã«ææ°ïŒ ãšããããã§ã¯ãããŸããïŒãããŸã§ããã¯ã¢ããçšã§ãïŒ â ã¯ããã« WonX ã¯ïŒWonderWitch çšã®ããã°ã©ã ã X ã¢ããªã±ãŒã·ã§ã³ãšããŠã³ã³ãã€ã«ãã ããã®ïŒã©ã€ãã©ãªã§ãïŒä»¥äžã®ç¹åŸŽããããŸãïŒ ã»Cèšèªã¬ãã«ã§äºææ©èœãæã£ãŠããã®ã§ïŒWonderWitch çšã®ããã°ã©ã ã UNIXäžã§ãã®ãŸãŸã³ã³ãã€ã«ã§ããïŒ(-lwonx ã§ã³ã³ãã€ã«ãã) ã»UNIXäžã§ãããã¬ã䜿çšããŠãããã°ã§ããããã«ãªãïŒ(匷å!) ã»ãã£ã©ã¯ã¿ããŒã¿ããã¬ããããŒã¿ã®ãã³ãæ©èœãããïŒ ã»äžæ£ãªåŒæ°ã®å€ãïŒãã¬ããããã£ã©ã¯ã¿ãåæåããªãã§äœ¿çšãããªã©ã å³ãããã§ãã¯ãïŒãšã©ãŒãåºåãã(ããã«ãã)ïŒå³ãããšã©ãŒãã§ãã¯ããïŒ ã»äœ¿çšã§ããªãæ©èœ(颿°ã¯çšæããŠãããïŒãŸã å®è£ ããŠãªãã£ããïŒ å®è£ ãå°é£ã ã£ããããŠïŒäžèº«ã空ã®ãã®)ã¯ããããããïŒ åŸã ã«è¿œå ããŠããã€ããïŒ ã»ã²ãŒã ã®ç»é¢åçãç°¡åã«æ®ããïŒ(ããžã«ã¡ã§æ®ã£ããïŒç»ååã蟌ã¿çšã® ããã°ã©ã ã䜿ã£ããããå¿ èŠãç¡ããªã) ããã¯ãããšã¹ããïŒ ã»ãšãã¥ã¬ãŒã¿ã§ãªãã©ã€ãã©ãªã§ããïŒãœãŒã¹ã³ãŒãå ¬éããŠããã®ã§ïŒ èªç±ã«ã«ã¹ã¿ãã€ãºãå¯èœïŒ ã»æç»é床ã¯é ããïŒãããã°ç®çã®ãããªã®ã§ïŒé床ãéãããããšã¯ ããŸãèããŠããªãïŒ(ãããããäžèšã®ãããã°æ§ãåªå ãã) ã»WonderWitch çšã®ããã°ã©ã ãïŒXäžã§æ¥œããããã®ãã®ã§ã¯ãªãïŒ ãŸãïŒãšãã¥ã¬ãŒã·ã§ã³ãç®çãªã®ã§ã¯ãªãïŒ ãããŸã§ãããã°ç®çã®ãã®ïŒ(ããããããªã·ãŒã§éçºãé²ãã) åŸã£ãŠïŒWonderWitch ã§ã®åäœãæš¡å£ããããšãããïŒãããã°æ å ±ã åºåããããšãæ¹é ã®ãããããåªå ãããããªå®è£ ãããå ŽåãããïŒ â å¿ èŠãªãã® WonX ã§ã¯ïŒä»¥äžã®ãã®ã䜿çšããŠããŸãïŒ ã»perl (WonderWitchçšãœãŒã¹ã³ãŒã â WonXçšãœãŒã¹ã³ãŒãã®å€æçš perl ã¹ã¯ãªããã æ·»ä»ããŠããã®ã§ïŒWonderWitchçšãœãŒã¹ã³ãŒãã®äžã«æŒ¢åãå ¥ã£ãŠããã®ãªãã°ïŒ æ¥æ¬èª perl ãæãŸãã) æ·»ä»ã® perl ã¹ã¯ãªããã¯ïŒmake æã«èªåã§å é ã« perl ãžã®ãã«ãã¹ (#!/usr/bin/perl ãªã©)ãä»å ãããã®ã§ïŒæ¥æ¬èª perl ãå¥ã®ãšããã«ãã ã°ããã«ã¯ïŒä¿®æ£ããŠãã䜿çšããŠãã ããïŒ æ¥æ¬èª perl ãç¡ããã°ïŒãŸãïŒãµã€ãã® perl ã§ããã¶ã倧äžå€«ã§ãããïŒ ã»qkc 挢åã³ãŒãå€æïŒæ¹è¡ã³ãŒã倿ã«å¿ èŠïŒ (nkf ã§ãã¹ã€ã«ãããã ãã©ïŒqkc ã ãšæ¹è¡ã³ãŒãã倿ããŠãããã®ã§ïŒ ãã®ææžã§ã¯ qkc ã䜿çšããŠããŸã) qkc ã¯ïŒä»¥äžã®ãµã€ãããå ¥æã§ããŸãïŒ http://hp.vector.co.jp/authors/VA000501/index.html qkc ã«ã¯ïŒMS-DOS çïŒWindows çïŒUNIX çãªã©ããããŸãã®ã§ïŒ UNIX ç(qkcc100.zip)ãå ¥æããŠãã ããïŒ ã³ã³ãã€ã«ã¯ïŒmake ããã ããªã®ã§ãšã£ãŠãç°¡åã§ãïŒ ã»unzip æ·»ä»ã® smac-b02.zip, wwterm-b05.zip ãè§£åããã®ã«å¿ èŠïŒ ãã®ããã¥ã¢ã«ã¯ïŒä»¥äžã®ãã®ããã¹ãŠã€ã³ã¹ããŒã«ãããŠããããšãåæãšã㊠説æãé²ããŸãïŒå¿ èŠãªãã°ã€ã³ã¹ããŒã«ãããïŒä»ã®ã¢ããªã±ãŒã·ã§ã³ã§ 代çšããŠãã ããïŒ â 3åWonX ãšããããïŒã©ããªãã®ãèŠãŠã¿ããããšã§ãããïŒãããªäººã¯ïŒ ãµã³ãã«ããã°ã©ã ãã³ã³ãã€ã«ã»å®è¡ããŠã¿ãŸãããïŒ ä»¥äžã®ããã«ããŠã¿ãŠãã ããïŒ ~>% tar xvzf wonx-x.x.tar.gz (äžç¥) ~>% cd wonx ~/wonx>% make sample1 (äžç¥) ~/wonx>% ./sample1 ãŠã€ã³ããŠãéããŠïŒæšæºåºåã«ã¡ãã»ãŒãžãåºåãããŸãïŒ ã¹ããŒã¹ã»ããŒãæŒããšïŒçµäºããŸãïŒ ~/wonx>% make sample2 (äžç¥) ~/wonx>% ./sample2 ã«ãŒãœã«ããŒã®äžäžã§ïŒãã£ã©ã¯ã¿ãç§»åããŸãïŒ ã¹ããŒã¹ã»ããŒãæŒããšïŒçµäºããŸãïŒ ~/wonx>% more sample1.c ~/wonx>% more sample2.c ã§ïŒãµã³ãã«ããã°ã©ã ã®ãªã¹ããèŠãŠã¿ãŸãããïŒ æ¬¡ã«ïŒWonderWitch çšã®ã²ãŒã ïŒ"SpeedMac" ãã³ã³ãã€ã«ã»å®è¡ããŠã¿ãŸãïŒ ~/wonx>% make smac (äžç¥) ~/wonx>% cd smac ~/wonx/smac>% ./smac ãŠã€ã³ããŠãéããŠïŒæšæºåºåã«ã¡ãã»ãŒãžãåºåãããŸãïŒ ãã£ãã F9 ãæŒããŠç»é¢æç»ã OFF ã«ããŸãïŒ(äœåºŠãæŒããšè¡šç€ºã¬ãã«ã äžãã£ãŠããŸãã®ã§ïŒïŒåã ãé·ãã«æŒããŠãã ãã) ãã°ããããã(ã¡ãã»ãŒãžã®å 容ãå€ãã£ãã) F10 ã(é·ãã«ïŒåã ã)æŒã㊠åã³ç»é¢è¡šç€ºã ON ã«ãããšïŒsmac ã®ã¿ã€ãã«ç»é¢ã衚瀺ãããŸãïŒ ããã§ã¹ããŒã¹ãæŒããŠïŒããã«ãŸã F9 ã§ç»é¢è¡šç€ºã OFF ã«ããŠïŒ ãã°ããããã(ã¡ãã»ãŒãžã®å 容ãå€ãã£ãã) F10 ã§ç»é¢è¡šç€ºã ON ã«ããŸãïŒ ã©ãã§ããïŒ SpeedMac ã®ã²ãŒã ç»é¢ã衚瀺ãããŠããã§ããããïŒ ã«ãŒãœã«ããŒã§ç§»åïŒã¹ããŒã¹ããŒã§å°æã§ãïŒ ãã ãïŒããŒå ¥åã¯ããŒå ¥åçšé¢æ°ãåŒã°ãããšãããæå¹ã§ã¯ãªãã®ã§ïŒ ããŒã¯åå¿ãããŸã§é·ãã«æŒããŠãã ããïŒ F9, F10 ãæŒããŠé »ç¹ã«æç»ã® ON, OFF ãåæ¿ããã®ã¯ïŒæç»ãéåžžã«é ãããïŒ ONã®ãŸãŸã ãšç»é¢ã¯ãªã¢ãšãã«ç°åžžã«æéããããããã§ãïŒ æåŸã«ïŒWonderWitch çšã®ç«¯æ«ãšãã¥ã¬ãŒã¿ "WWTerm" ãã³ã³ãã€ã«ã»å®è¡ ããŠã¿ãŸãïŒ ~/wonx>% make wwterm (äžç¥) ~/wonx>% cd wwterm ~/wonx/wwterm>% ./terminal â 10åWonX 次ã«ïŒãªã«ãããªããäœã£ã WonderWitch çšã®ããã°ã©ã ã WonX 䜿ã£ãŠ ã³ã³ãã€ã«ã»ãªã³ã¯ããŠïŒX Window System äžã§åäœãããããªå®è¡åœ¢åŒã äœã£ãŠã¿ãŸãããïŒ ãŸãïŒWonX ãå±éããŠïŒmake ããŠãã ããïŒlibwonx.a ãšåçš® perl ã¹ã¯ãªããã ã§ãããããŸãïŒ ~>% tar xvzf wonx-x.x.tar.gz (äžç¥) ~>% cd wonx ~/wonx>% make (äžç¥) ~/wonx>% ls libwonx.a libwonx.a ~/wonx>% 次ã«ïŒlibwonx.a ãšïŒwonx ãã£ã¬ã¯ããªãšïŒ challsrc.sh, filters.pl, sys2wonx.pl, int2sint.pl ãããªãã®äœã£ãããã°ã©ã ã® ãã£ã¬ã¯ããª(ããã§ã¯äŸãšããŠïŒyoursample ãšããŸã)ã«ã³ããŒããŸãïŒ ~/wonx>% cp -R libwonx.a wonx ../yoursample ~/wonx>% cp challsrc.sh filters.pl sys2wonx.pl int2sint.pl ../yoursample ~/wonx>% cd ../yoursample ~/yoursample>% *.C ãšãããã¡ã€ã«åã®ãã¡ã€ã«ããã£ããïŒ*.c ã«å€æŽããŸãïŒ (*.C ã ãš C++ ã®ããã°ã©ã ã ãšæãããŠããŸãã®ã§) ~/yoursample>% mv SAMPLE2.C sample2.c ããªãã®äœã£ãããã°ã©ã ã®ãã¹ãŠã®ãã¡ã€ã«ã«å¯ŸããŠïŒä»¥äžã®ããšãè¡ããŸãïŒ ã»MS-DOS ããã¹ã圢åŒãã UNIX ã®ããã¹ã圢åŒã«å€æããïŒ (ã€ãŸãïŒæ¹è¡ã³ãŒãã \r\n ãã \n ã«å€æããŠïŒæŒ¢åã³ãŒãã SJIS ãã EUC ã«å€æããŸã) ã»ããã°ã©ã äžã® #include <sys/disp.h> ã®ãããªã®ãïŒ #include "wonx/disp.h" ã«å€æŽããïŒ(sys2wonx.pl ãéãããšã§å€æããŠããã) ã»ããã©ã«ãã® int ãïŒshort int ã«å€æããïŒ (int2sint.pl ãéãããšã§å€æããŠããã) ãããã®ãã£ã«ã¿ããŸãšããŠéããŠããã filters.pl ãšããã¹ã¯ãªããã æ·»ä»ããŠããã®ã§ïŒä»¥äžã®ããã«ããŠïŒãã¹ãŠã®ãœãŒã¹ãã¡ã€ã«ã«å¯ŸããŠïŒ å¿ èŠãªãã£ã«ã¿ãéããŠãã ããïŒ ~/yoursample>% ./filters.pl "qkc -e -u" ./sys2wonx.pl ./int2sint.pl -f *.[ch] [Mm]akefile* MAKEFILE* ãããã¯ïŒä»¥äžã®ããã«ããŠãããã§ãïŒ ~/yoursample>% ./challsrc.sh *.[ch] [Mm]akefile* MAKEFILE* (泚æ! filters.pl ã challsrc.sh ã¯ïŒ*ãã¡ã€ã«ã®æ¬äœãæžãæããŠããŸã*ã®ã§ïŒ 倿Žããããšå°ããããªãã¡ã€ã«ã¯å¿ ãããã¯ã¢ããããŠãã ãã) makefile ã以äžã®ããã«ä¿®æ£ããïŒ ã»ã³ã³ãã€ã©ã«ã¯ gcc ã䜿çšããïŒ ã»ãªããžã§ã¯ããã¡ã€ã«ã *.obj ãã *.o ã«å€æŽïŒ ã»ã³ã³ãã€ã«ãã©ã°ã« -I. -L. -L/usr/X11R6/lib -lwonx -lX11 -lXt ã远å ïŒ ã»mkfent ãªã©ã«ãã *.fx ãã¡ã€ã«ã®äœæãªã©ããã£ããïŒã³ã¡ã³ãã¢ãŠãããïŒ ~/yoursample>% emacs makefile ããããïŒmakefile ã®ä¿®æ£ãïŒçªç®ã«é¢åã§ãïŒ(äžçªé¢åãªã®ã¯ïŒWonX ãããŸã é©çšã§ããªãã£ããšãã®ãœãŒã¹ã®ä¿®æ£ã§ã) æ·»ä»ã® makefile_for_smac ã makefile_for_wwterm ãåèã«ããŠïŒmakefile ã ä¿®æ£ããŠãã ããïŒ æåŸã«ïŒmake ãããŸãïŒ ~/yoursample>% make ããŸãããã°ïŒäžæã§ã³ã³ãã€ã«ãéã£ãŠïŒå®è¡ã§ããŸãïŒ ~/yoursample>% ./sample â WonX æŠèŠ WonX ã¯ïŒWonderWitch ã® display_control() ãšã display_status() ãšãã£ã颿° (BIOS ã«å¯Ÿããã·ã¹ãã ã³ãŒã«)ãšä»£æ¿ã®é¢æ°ãæã£ãŠããŸãïŒ ãããã®é¢æ°ã¯ïŒXäžã«ãŠã€ã³ããŠãéããŠïŒããã§ WonderWitch ãšäºæã®åäœã ããããã«æžããŠãããŸãïŒ WonX ã make ãããšïŒlibwonx.a ãšããã©ã€ãã©ãªãã§ããŸãïŒ ã§ïŒWonderWitch çšã®ããã°ã©ã ãïŒUNIX äžã§ -lwonx ããŠã³ã³ãã€ã«ããŠããã°ïŒ WonderWitch ã® display_control() ãšãã®ãããã«ïŒWonX ã® display_control() ã ãªã³ã¯ããïŒX äžã§åäœããããã«ãªãïŒãšããä»çµã¿ã§ãïŒ â ããããã¡ã€ã«ã«ã€ã㊠WonX ã¯ïŒUNIXã·ã¹ãã äžã«ãã libc ã䜿çšããŸãïŒã€ãŸãïŒ/usr/include ã® äžã include ããŸãïŒ(ãã®ãã strlen(), fopen() ãªã©ã®æšæºã©ã€ãã©ãªã¯ UNIX ä»å±ã®ãã®ã䜿çšå¯èœ) ãŸãïŒWonderWitch ã«ã¯ïŒsys/types.h ãªã©ãšãã£ãããããã¡ã€ã«ããããŸãïŒ ãã£ãŠïŒWonderWitch ã®ããããã¡ã€ã«æ§æããã®ãŸãŸ WonX ã«åŒãç¶ããšïŒ WonX ã®ããããã¡ã€ã«ãš UNIX ã®ããããã¡ã€ã«ãã³ã³ããªã¯ããã å¯èœæ§ãåºãŠããŸãïŒ (ããšãã°ïŒWonderWitch ã® sys/types.h ãš UNIX ã® /usr/include/sys/types.h ã ã³ã³ããªã¯ãããïŒãªã©ã§ã) ããã¯ïŒWonderWitchçšã®ã¢ããªã±ãŒã·ã§ã³ãã³ã³ãã€ã«ãããšãã«ïŒèŠæ³šæã§ãïŒ ã³ã³ãã€ã«ãããŸããšãããªããšããé害ã®åå ã¯ïŒã»ãšãã©ããã®ãããªïŒ ãããããã¡ã€ã«ã®ã³ã³ããªã¯ããããã¯èª€èªãã«èµ·å ããŠããŸãïŒ å¯ŸçãšããŠïŒWonX ã§ã¯ wonx ãšãããã£ã¬ã¯ããªã®äžã«ããããã¡ã€ã«ã æ ŒçŽããŠãããŸãïŒ(æ¬åœã¯ sys ãšãããã£ã¬ã¯ããªã«ãããã£ããïŒ äžèšã®å¯Ÿçã®ããïŒãã®ããã«ãã) WonderWitch çšããã°ã©ã äžã®ïŒ #include <sys/types.h> ã®ãããªéšåã¯ïŒãã¹ãŠïŒ #include "wonx/types.h" ã®ããã«ä¿®æ£ããå¿ èŠããããŸãïŒ (stdio.h ã stdlib.h ã¯ïŒUNIX ã·ã¹ãã ä»å±ã®ãã®ã䜿çšããã®ã§ïŒ ãã®ãŸãŸã§ããŸããŸãã) (ãã ãïŒã³ã³ããªã¯ãããªããšãã絶察ã®èªä¿¡ããããªãïŒãã®éãã§ã¯ãããŸãã) WonderWitch ã®ããã°ã©ã ã®ïŒ#include <sys/*.h> ã¯ïŒãã¹ãŠ #include "wonx/*.h" ã«ä¿®æ£ããå¿ èŠãããïŒãšããããšã§ãïŒ (ããããŸãšããŠè¡ãããã® sys2wonx.pl ãšãã perl ã¹ã¯ãªãããæ·»ä»ã㊠ãããŸãïŒ./filters.pl ./sys2wonx.pl -f *.[ch] ãå®è¡ãããšïŒãã£ãããš æžãæããŠãããŸã) ãŸãïŒUNIXã·ã¹ãã ã«ãã£ãŠã¯ïŒ/usr/include/sys/types.h ã§ ushort, ulong ã å®çŸ©ããŠãããã®ãšããªããã®ããããŸãïŒãã£ãŠïŒã³ã³ãã€ã«äžã« ulong ãïŒéå®çŸ©ãããŠãããšãããããå ŽåããããŸãïŒ(Linux ã§ã¯ãã®ããã« ãªãããã§ãã) ãã®ãããã®åŸ®èª¿æŽã«ã¯ïŒwonx ãã£ã¬ã¯ããªä»¥äžã®ãã¡ã€ã«ãçŽæ¥ä¿®æ£ã㊠調æŽããŠãã ããïŒwonx/system_configure.h ãä¿®æ£ããããšã«ããïŒ èª¿æŽã§ããããã«ãªã£ãŠãŸãïŒ â WonX ã®ã³ã³ãã€ã« ãŸã WonX ãã³ã³ãã€ã«ããŠïŒlibwonx.a ãäœæããå¿ èŠããããŸãïŒ WonX ã®ã³ã³ãã€ã«ã¯ïŒä»¥äžã®æé ã§è¡ããŸãïŒ 1. WonX ãå±éããïŒ ~>% tar xvzf wonx-x.x.tar.gz ~>% cd wonx ~/wonx>% 2. WonX ã make ããïŒ ~/wonx>% make gcc -c WWCharacter.c -O -I. -I/usr/X11R6/include gcc -c WWColorMap.c -O -I. -I/usr/X11R6/include ...(äžç¥)... gcc -c wonx.c -O -I. -I/usr/X11R6/include ar ruc libwonx.a WWCharacter.o WWColorMap.o WWDisplay.o WWLCDPanel.o WWPalette.o WWScreen.o WWSprite.o WonXDisplay.o XDisplay.o disp.o text.o key.o system.o timer.o etc.o wonx.o ~/wonx>% ls lib* libwonx.a ~/wonx>% ãã®ãšãïŒåçš® perl ã¹ã¯ãªãããåæã«äœæãããŸãïŒ å¿ èŠãããã° make install ãããšïŒåçš®ããããã¡ã€ã«ïŒã©ã€ãã©ãªïŒ perl ã¹ã¯ãªãããã€ã³ã¹ããŒã«ãããŸãïŒ(ã€ã³ã¹ããŒã«ããªããŠãæ§ããŸããïŒ ä»¥éã¯ã€ã³ã¹ããŒã«ããªãã£ããã®ãšããŠèª¬æããŸã) ~/wonx>% su Password: # make install ãããŸã§ã§ïŒã©ã€ãã©ãªã®äœæã¯çµãã§ãïŒ â WonderWitch çšã¢ããªã±ãŒã·ã§ã³ã®ã³ã³ãã€ã« 次ã«ïŒWonX ã®å©çšã®äŸãšããŠïŒæäœã® SpeedMac ãšãã WonderWitch çšã® ã²ãŒã ãã³ã³ãã€ã«ããŠã¿ãŸãïŒ (SpeedMac ã¯ãµã³ãã«ããã°ã©ã ãšããŠïŒWonX ã«æšæºæ·»ä»ããŠãããŸã) SpeedMac 㯠WonderWitch çšã®ã²ãŒã ããã°ã©ã ã§ãïŒæ¬æ¥ã¯ WonderWitch ã 䜿çšããŠã³ã³ãã€ã«ãïŒWonderSwan äžã§ã²ãŒã ãæ¥œããããã®ãã®ã§ãïŒ ä»åã¯äŸãšããŠïŒSpeedMac ã« WonX ããªã³ã¯ããŠïŒX äžã§åäœãã SpeedMac ã® å®è¡åœ¢åŒãäœæããŠã¿ãŸãïŒ 1. å±éããïŒ ~/wonx>% unzip smac-b02.zip ...(äžç¥)... ~/wonx>% cd smac-b02 ~/wonx/smac-b02>% 2. ããããã¡ã€ã«ãš libwonx.a ãã³ããŒããïŒ ~/wonx/smac-b02>% cp -R ../wonx . ~/wonx/smac-b02>% cp ../libwonx.a . ~/wonx/smac-b02>% 3. ãœãŒã¹ãä¿®æ£ããïŒ ~/wonx/smac-b02>% emacs chara.c ~/wonx/smac-b02>% emacs dsp.c ... (ãã¡ã€ã«ãã²ãšã€ã²ãšã€ä¿®æ£ãã) MS-DOS ã®ãã¡ã€ã«åœ¢åŒã«ãªã£ãŠãããã¡ã€ã«ã¯ïŒUNIXã®ããã¹ã圢åŒã« 倿ããŸãïŒå ·äœçã«ã¯ïŒä»¥äžã®å€æãããŸãïŒ ã»æ¹è¡ã³ãŒãã \r\n ãã \n ã«ããïŒ ã»æŒ¢åã³ãŒãã SJIS ãã EUC ã«ããïŒ qkc ãšããã¢ããªã±ãŒã·ã§ã³ã§ïŒäžèšã®ããšãäžåºŠã«è¡ãããšãã§ããŸãïŒ é¢åãªããã¯ïŒä»¥äžã®ããã«ããã°ïŒãŸãšããŠå€æãããŸãïŒ ~/wonx/smac-b02>% ./filters.pl "qkc -e -u" -f *.[ch] qkc ãç¡ã人ã¯... nkf ãšããŠããšãã«äœ¿ã£ãŠå€æããŠãã ããïŒ ãŸãïŒãœãŒã¹äžã®ïŒ #include <sys/disp.h> #include <sys/key.h> ã®ãããªéšåãïŒ #include "wonx/disp.h" #include "wonx/key.h" ã®ããã«ä¿®æ£ããŸãïŒ ããããŸãšããŠããããã® perl ã¹ã¯ãªãã (sys2wonx.pl) ãæ·»ä»ããŠããã®ã§ïŒ é¢åãªããã¯ïŒ ~/wonx/smac-b02>% cp ../filters.pl ../sys2wonx.pl . ~/wonx/smac-b02>% ./filters.pl ./sys2wonx.pl -f *.[ch] ã®ããã«ããŠãã ããïŒ (filters.pl ã¯ïŒåŒæ°ã§æå®ãããã¡ã€ã«èªäœãæžãæããŠããŸãã®ã§æ³šæ) ããã«ïŒWonderWitch ã§ã¯ sizeof(int) == sizeof(short int) ã§ããïŒ UNIX ã§ã¯ãµã€ã㯠sizeof(int) == sizeof(long int) ãªã®ã§ïŒ ãã£ã©ã¯ã¿ã®ãããããããªã©ïŒint åã®ãã€ããµã€ãºã«äŸåããéšåã§ int ã䜿çšããŠããå Žåã«ã¯ïŒshort int ãªã©ãšæç€ºããŸãïŒ ããããŸãšããŠããããã® perl ã¹ã¯ãªãã (int2sint.pl) ãæ·»ä»ããŠããã®ã§ïŒ é¢åãªããã¯ïŒ ~/wonx/smac-b02>% cp ../int2sint.pl . ~/wonx/smac-b02>% ./filters.pl ./int2sint.pl -f *.[ch] ã®ããã«ããŠãã ããïŒ (filters.pl ã¯ïŒåŒæ°ã§æå®ãããã¡ã€ã«èªäœãæžãæããŠããŸãã®ã§æ³šæ) æ¥æ¬èª perl 㯠EUC ã³ãŒãã§ãªããšæ£åžžã«åäœããªãã®ã§ïŒ sys2wonx.pl ã int2sint.pl ã䜿çšããå Žåã«ã¯ïŒãŸãå ã« qkc ã§æŒ¢åã³ãŒãã EUC ã«å€æããŠããïŒsys2wonx.pl ã int2sint.pl ã䜿çšããŠãã ããïŒ 4. makefile ãä¿®æ£ããïŒ ~/wonx/smac-b02>% emacs makefile 以äžã®ããã«ä¿®æ£ããŸãïŒ ã»æŒ¢åã³ãŒãã EUC ã«ïŒæ¹è¡ã³ãŒãã \r\n ãã \n ã«å€æããïŒ (æ¹è¡ã³ãŒãã倿ããªããš make ãæ£åžžã«åäœããŸããïŒqkc ãéããš ããã§ããã) ã»gcc ã§ã³ã³ãã€ã«ãããããã«ä¿®æ£ããïŒãã®ãšãã«ïŒã³ã³ãã€ã«ãªãã·ã§ã³ã«ïŒ -I. -L. -L/usr/X11R6/lib -lwonx -lX11 -lXt ã远å ããïŒ (å¿ èŠãªãïŒ-g ã远å ãã) ã»mkfent ã«ãããã¡ã€ã«ã®ã³ã³ããŒããªã©ããã£ããïŒåé€ããïŒ ä¿®æ£åŸã® makefile ãæ·»ä»ããŠããã®ã§ïŒé¢åãªããã¯æã§ç·šéãããããã«ïŒ ~/wonx/smac-b02>% mv makefile makefile.orig ~/wonx/smac-b02>% cp ../makefile_for_smac ./makefile ã®ããã«ããŠã³ããŒããŠãã ããïŒ 5. make ããïŒ ~/wonx/smac-b02>% make gcc -c chara.c -g -I. gcc -c game.c -g -I. ...(äžç¥)... gcc -c main.c -g -I. gcc -g -o smac chara.o game.o man.o mansub.o mansub2.o map.o mapsub.o menu.o monster.o picture.o player.o smac.o stage.o dsp.o etc.o main.o -lwonx -lX11 -lXt -L. -L/usr/X11R6/lib ~/wonx/smac-b02>% ls smac smac ~/wonx/smac-b02>% 6. smac ãèµ·åããïŒ ~/wonx/smac-b02>% ./smac ãšïŒãããŸã§ãã£ããé¢åã§ããïŒå®ã¯ïŒ ~/wonx>% make smac ãããšïŒãããã®äœæ¥ãå šéšãã£ãŠãããããã«ãªã£ãŠãŸãïŒ â æäœ smac ãèµ·åãããšïŒãŠã€ã³ããŠãéããŸãïŒãŸãïŒã¿ãŒããã«ã«ã¯ïŒ 以äžã®ãããã°çšã®æ å ±ã衚瀺ãããŸãïŒ ã»WonderWitch ã®ä»£æ¿é¢æ°ãåŒã°ãããšïŒåŒæ°ãšæ»ãå€ã衚瀺ããŸãïŒ ãŸãããã§ã¯ïŒä»¥äžã®æäœãè¡ããŸãïŒ ã»ã«ãŒãœã«ããŒãïŒWonderSwan ã®X1ïœX4ãã¿ã³ã«å¯Ÿå¿ããŠããïŒ ã»i,j,k,l ããŒãïŒWonderSwan ã®Y1ïœY4ãã¿ã³ã«å¯Ÿå¿ããŠããïŒ ã»ã¹ããŒã¹ããŒãšå·Šã·ããããŒãïŒA,Bãã¿ã³ã«å¯Ÿå¿ããŠããïŒ ã»sããŒãïŒSTARTãã¿ã³ã«å¯Ÿå¿ããŠããïŒ ã»F1 ãæŒããšïŒLCDã«ã©ãŒãããã®ããŒã¿ããã³ãåºåããïŒ ã»F2 ãæŒããšïŒãã¬ããã®ããŒã¿ããã³ãåºåããïŒ ã»F3 ãæŒããšïŒãã£ã©ã¯ã¿ãŒã®ããŒã¿ããã³ãåºåããïŒ ã»F4 ãæŒããšïŒã¹ãã©ã€ãã®ããŒã¿ããã³ãåºåããïŒ ã»F9 ãæŒããšïŒç»é¢ã®è¡šç€ºã¬ãã«ãäžããïŒ ã»F10 ãæŒããšïŒç»é¢ã®è¡šç€ºã¬ãã«ãäžããïŒ è¡šç€ºã¬ãã«ã¯ããã©ã«ãã§ 1 ã«ãªã£ãŠããïŒçŸåšã®ã¬ãã«ã 1 以äžã®å Žåã®ã¿ ç»é¢ã®æç»ãè¡ãïŒ0 以äžã®å Žåã«ã¯ïŒç»é¢ãžã®æç»ãè¡ããªãããã®ã¶ãé«éïŒ ã»F11 ã§10ç§é忢ïŒ(ç»é¢åçããšããšããªã©ã«å©çšã§ãã) (F11ã¯çãã«æŒããŠãã ããïŒé·ãã«æŒããšïŒåŸ©åž°ããªããªãããã§ã) ã»q ããã㯠Ctrl-c ããã㯠F12 ã§åŒ·å¶çµäºïŒ ã»Ctrl-i ã§ã¢ã€ã³ã³åïŒ ããã©ã«ãã§ã¯ãªã«ã颿°ãåŒã°ãããã³ã«ç»é¢ã®åæç»ãè¡ãããïŒ éåžžã«äœéã§ãïŒ ããšãã°ïŒä»¥äžã®ãããªããšããã£ãŠãããšïŒéåžžã«äœéã«ãªããŸãïŒ /* ç»é¢ã®ã¯ãªã¢ */ for (y = 0; y < 32; y++) for (x = 0; x < 32; x++) { screen_fill_char(0, x, y, 1, 1, 0); /* ããã§æ¯ååæç»ããã */ } } ãã®ãããªå Žåã¯ïŒF9 ãæŒããŠè¡šç€ºã¬ãã«ãäžããŠïŒã«ãŒãåŠçãçµã£ãã åã³ F10 ãæŒããŠè¡šç€ºã¬ãã«ãäžããŠãã ããïŒ(äœåºŠãæŒããšè¡šç€ºã¬ãã«ã ã©ãã©ãäžãã£ãŠ(ãããã¯äžãã£ãŠ)ããŸãã®ã§ïŒé·ãã«ïŒåã ãæŒããŠãã ãã) F1 ã F2 ãæŒããšïŒããŒã¿ããã³ãåºåããã®ã§ããïŒæšæºã§ã¯ãã®ä»ã«ã ã¡ãã»ãŒãžã倧éã«åºåãããŠããã®ã§ïŒãµã€ãã« F1 ãæŒããã ãã§ã¯ïŒ ãã£ãšãããŸã«å€§éã®ã¡ãã»ãŒãžã«æµãããŠããŸãããšããããŸãïŒ ãã®ãããªãšãã¯ïŒä»¥äžã®ããã«ããŠèµ·åããŸãïŒããšãã°ã³ã³ãã€ã«ã㊠smac ãšããå®è¡åœ¢åŒãã§ããŠããã®ãªãïŒ > smac | grep -v call ããããã£ã©ã¯ã¿çªå·10çªã®ãã£ã©ã¯ã¿ã®ããŒã¿ã ããèŠããå Žåã«ã¯ïŒ 以äžã®ããã«å®è¡ããŠããïŒF3 ããŒãæŒãã°è¯ãã§ãããïŒ > smac | grep "character\[010\]" WonX ã¯ïŒã¡ãã»ãŒãžãåºåããéã«ïŒgrep ã§ãã£ã«ã¿ãªã³ã°ã§ããããã«ïŒ ããªããåºåã¡ãã»ãŒãžã®å é ã«ïŒçµ±äžæ§ã®ããæååã远å ããŠããŸãïŒ ããšãã°ïŒé¢æ°åŒã³åºãæã«è¡šç€ºãããã¡ãã»ãŒãžã«ã¯ïŒå é ã«å¿ ã "call" ãšããæååã远å ãããŠãŸãïŒãã£ãŠïŒgrep -v call ãéãã°ïŒ 颿°åŒã³åºãã®ã¡ãã»ãŒãžããã£ããåºãªããªãïŒãšããããã«ãªã£ãŠãŸãïŒ æšæºã§ã¯å€§éã®ã¡ãã»ãŒãžãåºãŠããã®ã§ïŒgrep ãããŸã䜿ãããã«ããŠãã ããïŒ ãããã¯ïŒ > smac | grep call > function_call.log ã®ããã«ããŠïŒãã°ããšãã®ãæå¹ã§ãããïŒ > smac > /dev/null ã ãšïŒæååã kterm ãªã©ã«è¡šç€ºããªãã¶ãïŒ(ããªã)é«éã«ãªããŸãïŒ â è¶³ããªãã㮠以äžã®ãã®ã«ã¯ãŸã 察å¿ããŠãŸããïŒãããã£ãŠïŒäŸãã°ãµãŠã³ãé¢é£ã® 颿°ãåŒã³åºããŠãïŒäœãèµ·ãããŸããïŒ(空ã®é¢æ°ã«ãªã£ãŠãã) ã»ãµãŠã³ã ã»ããã»ã¹ ã»ã€ã³ãã€ã¬ã¯ãã©ã€ãã©ãª â æ³šæããªããã°ãªããªãããš WonX ã¯ïŒæ¬æ¥ã¯ WonderWitch çšãšããŠæžããã(ãããã¯ïŒæžããã)ããã°ã©ã ãïŒ UNIX äžã§ã³ã³ãã€ã«ã»ãªã³ã¯ããããã®ã©ã€ãã©ãªã§ããïŒããŒããŠãšã¢ã ãšãã¥ã¬ãŒããããã®ã§ã¯ãããŸããïŒ ã§ãããïŒWonderWitch ãš UNIX äžã®Cèšèªã®ã®ã£ããã®ããïŒæ°ãã€ããªããã° ãªããªãããšãããã€ããããŸãïŒããã㯠WonX ã®æ§è³ªäžïŒä»æ¹ã®ç¡ãããšã§ãïŒ ä»¥äžã®ããšã¯ïŒæèããããšãšïŒããããªããã°ã©ã ãæžãããšã§ïŒ ããªãåé¿ã§ãããšæããŸãïŒ(ããããããæäœãªã©ã§ïŒshort int ã«ãã¹ã ãšããã§ã¯ïŒçç¥ããã«ã¡ãããš short int ãšæç€ºãããšã) ãŸãïŒWonX ã®ç®çã¯è«ççãªãã°ãæ©ã段éã§ç¡ããããšãšïŒ è«ççãã°ãšããŒãããã¿ã®ãã°ãåãé¢ããŠåå ãçããããšãšïŒ åäºãé»è»ã®äžã§ã WonderWitch ã®ããã°ã©ã ãæžããããã«ããããšã«ããã®ã§ïŒ ãã®ãžãã¯ãããããã®ã ãšå²ãåã£ãŠäœ¿ã£ãŠãã ããïŒ WonX ã䜿ãéãïŒãªãã¹ãæ©çš®äŸåãç¡ããããã«å¿ãããŸãããïŒ (ãšãã« int ã®ãµã€ãºã«ããŸãäŸåããªãããã«ããŸããã) [ã³ã³ãã€ã«ã®åé¡] å ã«ãæžããŸãããïŒã³ã³ãã€ã«ã§ããªããšããé害ãåºããïŒåå ã¯ãããŠã㯠ããããã¡ã€ã«ã®ã³ã³ããªã¯ãã§ãïŒãšãã«ïŒWonderWitch ã§ sys 以äžã® ãã¡ã€ã«ãã€ã³ã¯ã«ãŒãããŠããå Žåã¯æ³šæããŠãã ããïŒ ushort, ulong ãªã©ã¯ïŒsys/types.h ã§å®çŸ©ãããŠããã·ã¹ãã ããããïŒ ããã§ãªãã·ã¹ãã ããããŸãïŒãã®ãžãã¯ïŒwonx/system_configure.h 㧠調æŽããŠãã ããïŒ (FreeBSD ã§ã¯ ushort ã®ã¿å®çŸ©ãããŠãããïŒRedHat Linux ã§ã¯ïŒ uchort, ulong ãšãã«å®çŸ©ãããŠããã®ã§ïŒãã®ãŸãŸã ãšã³ã³ãã€ã«äžã« ïŒéå®çŸ©ã®ã¯ãŒãã³ã°ãåºãŸã) [int åã®æ±ã] WonderWitch ã§ã¯ sizeof(short int) == sizeof(int) < sizeof(long int) ã§ããïŒ UNIX ã§ã¯ãµã€ã sizeof(short int) < sizeof(int) == sizeof(long int) ã§ãïŒ ãã®ããšã¯ïŒint åãåãªãã«ãŠã³ã¿ãšããŠäœ¿çšãããããªå Žåã«ã¯åé¡ã« ãªããŸãããïŒããããããã®æ ŒçŽå ŽæãšããŠäœ¿çšãããããªãšãã«ã¯ïŒ åé¡ã«ãªããŸãïŒ äžçªåé¡ã«ãªããããã®ã¯ïŒãã£ã©ã¯ã¿ã®ãããããããæ±ãå Žåã§ãïŒ (bmpcnv ã䜿çšããŠïŒããããããããŒã¿ã®åºåã unsigned int bitmap = { ã®ããã«ãªã£ãŠããå Žåãªã©) font_set_colordata()ãªã©ã¯ïŒ16*8 ãã€ãã®ãã£ã©ã¯ã¿ããŒã¿ã short int åã®é åãšããŠåŒæ°ã«æã¡ãŸãïŒWonderWitch ã§ã¯ sizeof(short int) == sizeof(int) ãªã®ã§ïŒWonderWitch çšã®ããã°ã©ã äžã§ã¯ïŒ ãã£ã©ã¯ã¿ããŒã¿ã short int ãšããã«ïŒint åã®é åãšããŠå®çŸ©ããŠããŸã ããšãèããããŸãïŒ(åœç¶ WonderWitch ãªãã°åé¡ã¯ç¡ããïŒUNIX äžã§ å®è¡ãããïŒãã£ã©ã¯ã¿ã«åŠãªçžã ãå ¥ãã ãããšæããã) ãã®ãããªå Žåã«ã¯ïŒUNIX äžã§ã³ã³ãã€ã«ãããšãã«ã¯ïŒã³ã³ãã€ã©ãªãã·ã§ã³ã§ ããã©ã«ãã® int 㯠short int ã«ãªãããã«æå®ãããïŒãããã¯ãœãŒã¹äžã® int ã short int ã«ããã«ä¿®æ£ããå¿ èŠããããŸãïŒi386 äžã§ gcc ã䜿çšãã å Žåã«ã¯ïŒãã®ãããªã³ã³ãã€ã©ãªãã·ã§ã³ã¯ç¡ãã®ã§ïŒããã«ãœãŒã¹ãä¿®æ£ãã ããšã«ãªããŸãïŒ int2sint.pl ãéããšïŒæç€ºãããŠããªã int ã¯ãã¹ãŠ short int ã«å€æããŸããïŒ ãããããªãã int2sint.pl ãä¿¡çšã§ããªããã°ïŒæã§ä¿®æ£ããŠãã ããïŒãµã€ã㯠ãã£ã©ã¯ã¿ã®ããããããããŒã¿ãšãããæ±ãéšåã®ã¿ãä¿®æ£ããã°ååã§ãããïŒ ã³ã³ãã€ã«æã®ã¯ãŒãã³ã°ãã¡ãããšç¢ºèªããŠãã ããïŒãŸãïŒã³ã³ãã€ã«æã«ã¯ -Wall ãªãã·ã§ã³ãã€ããŸãããïŒ wonx-2.1 ããã¯ïŒãã£ã©ã¯ã¿ã®ããããããèšå®é¢é£(font_set_colordata()ãªã©) ã®é¢æ°ã®åŒæ°ã¯ïŒé©åãªåã®ãã€ã³ã¿ã«ä¿®æ£ããã®ã§ïŒã³ã³ãã€ã©ãã¯ãŒãã³ã°ã åºããŠãããïŒããããããããŒã¿ã®åããããããããããŸããïŒ åãªãã«ãŠã³ã¿ããã©ã°ãšããŠäœ¿çšããŠãããã㪠int ã¯ïŒå€ãã®å Žå㯠short int ã§ã long int ã§ãåäœã¯å€ãããŸãããïŒããšãããã ãšããŠãïŒ WonX ã䜿çšããŠïŒgcc ã§ -Wall ãªãã·ã§ã³ãã€ããŠã³ã³ãã€ã«ãããšïŒ WonderWitch ã§åäœããããšãã®æœåšçãªãã°(short int ã®äžäžéã«ãŸã€ãã ãã°ãªã©)ãçºèŠã§ããããšãããã®ã§ïŒãªãã¹ããªã int2sint.pl ã§ int ã ãã£ãã short int ã«ããŠããŸãããšãããããããŸãïŒ [ãã€ããšã³ãã£ã¢ã³ã®åé¡] WonderWitch ã® CPU 㯠x86ç³»ã§ãïŒSPARC ãªã©ã§äœ¿çšããå Žåã«ã¯ïŒ ãšã³ãã£ã¢ã³ã«æ³šæããå¿ èŠããããŸãïŒ font_set_colordata()ãªã©ã¯ïŒshort int åã®é åã§ãã£ã©ã¯ã¿ããŒã¿ãåãåã ã®ã§ïŒunsigned char * ã§å®çŸ©ãããã£ã©ã¯ã¿ããŒã¿ã short int * ã«ãã£ã¹ãã㊠font_set_colordata()ã«æž¡ããªã©ã®ããšãããŠãããšïŒç»åãã²ã£ããè¿ã ããšãèããããŸãïŒ i386 ç³»ã®ãããã PC-UNIX ãªãã°ïŒããããåé¡ã¯ç¡ãã§ãããïŒ WonX-2.1 ããïŒãã£ã©ã¯ã¿ããŒã¿ã«é¢ããŠã¯ïŒæ¥µåãšã³ãã£ã¢ã³ã«äŸåããªãããã« ä¿®æ£ããŸããïŒi386 ãš SPARC ã§ãšã³ãã£ã¢ã³ã«äŸåããªãããšãåäœç¢ºèª ããŠããŸãïŒãããããã§ãïŒãã£ã©ã¯ã¿ããŒã¿ã unsigned char * ã§å®çŸ©ããŠïŒ ããããããèªã¿èŸŒã¿çšã®é¢æ°ã«ãã£ã©ã¯ã¿ããŒã¿ãæž¡ããšãã« short int * ã« ãã£ã¹ãããŠæž¡ããããªæžãæ¹ãããŠãããšïŒäŸåããŠããŸããŸãïŒã€ãŸãïŒ WonX èªäœã¯ãšã³ãã£ã¢ã³ã«äŸåããŠããªããïŒWonX ãå©çšããããã°ã©ã ã ãšã³ãã£ã¢ã³äŸåã«æžããŠãã£ãŠã¯ïŒã©ããããããªããšããããšã§ãïŒ ãã£ã©ã¯ã¿ããŒã¿ã®ããããããèªã¿èŸŒã¿çšã®é¢æ°ã«ã¯ïŒé©åãªåã®ããŒã¿ã æž¡ãããã«ããŠãã ããïŒshort int * ãæž¡ãã¹ããšããã«ïŒunsigned char * ã æž¡ããããããšïŒãã®ãããªãã°ã®åå ã«ãªãå¯èœæ§ããããŸãïŒäžé©å㪠ãã€ã³ã¿ãæž¡ããŠããå Žåã«ã¯ïŒã³ã³ãã€ã©ãã¯ãŒãã³ã°ãåºãã®ã§ïŒ ã³ã³ãã€ã©ã®ã¯ãŒãã³ã°ã«ååã«æ³šæããŠãã ããïŒ [ã¿ã€ãå²ã蟌ã¿ã®åé¡] WonderWitch ã«ã¯ã¿ã€ãå²ã蟌ã¿ããããŸããïŒWonX ã®åäœã¯éåžžã«é ãããïŒ WonderWitch ã®æéåäœããã®ãŸãŸ UNIX ã«æã£ãŠãããïŒå²ã蟌ã¿ã ãããã£ã±ãªãã«ãªã£ãŠããŸããŸãïŒãã£ãŠã¿ã€ãå²ã蟌ã¿ã®æéåäœã¯ïŒ WonderWitch ãããããªã倧ããã«ããŠãããŸãïŒ ããã¯ïŒwonx_configure.h ã§èª¿æŽã§ããŸãïŒ å²ã蟌ã¿ãã³ãã©ã®äžã§ïŒéåžžã«æéã®ãããç»é¢æç»ãªã©ãããŠãã å Žåã«ã¯ïŒå²ã蟌ã¿ã®æéåäœã倧ããããŠãã ããïŒã§ãªããšïŒãã³ãã©ãã æ»ã£ãç¬éã«ãŸããã³ãã©ãåŒã°ããŠïŒå šç¶å®è¡ãå ã«é²ãŸãªãïŒãšããããšã« ãªãåŸãŸãïŒ [ããŒå ¥åå²ã蟌ã¿ïŒã·ãªã¢ã«åä¿¡å²ã蟌ã¿ã®åé¡] (ããŸãããããšã¯ãªããšæããŸãã)ããŒå ¥åå²ã蟌ã¿ãšããŒå ¥åæ€æ»çšé¢æ°ã åäžã«ãŒãå ã§äœµçšãããšïŒå²ã蟌ã¿ã®ãšãããŒããèµ·ãããããªãå¯èœæ§ã ãããŸãïŒ ã€ãŸãïŒä»¥äžã®ãããªããã°ã©ã ãæžããšãã«ã¯æ³šæããŠãã ããïŒ void far key_handler() { /* ããŒå ¥åã®åŠçãããã«å ¥ã */ } static intvector_t key_intvector; static intvector_t key_last_intvector; main() { key_intvector.callback = (void (near *)())FP_OFF(key_handler); key_intvector.cs = _asm_inline("\tmov\tax,cs"); key_intvector.ds = _asm_inline("\tmov\tax,ds"); sys_interrupt_set_hook(SYS_INT_KEY, &key_intvector, &key_last_intvector); while (1) { /* * ããŒå ¥åå²ã蟌ã¿åŸ ã¡ã®ç¶æ ãªã®ã«ïŒkey_press_check() ã§ããŒå ¥åç¶æ ã® * æ€æ»ãè¡ã */ key = key_press_check(); /* ãªããé©åœãªåŠçããã®ãžãã§è¡ã£ãããã */ } } ããŒå ¥åå²ã蟌ã¿ãåŸ ã¡ãªããïŒkey_press_check() ã§ããŒã®å ¥åç¶æ ã å¥åã«æ€æ»ããïŒãšããããšããããšïŒå²ã蟌ã¿ã®ãšãããŒããèµ·ããå¯èœæ§ã ãããŸãïŒ (ãã ãïŒããŒå ¥åå²ã蟌ã¿ã«ãã£ãŠåŒã³åºãããå²ã蟌ã¿ãã³ãã©å ã§ key_press_check() ã䜿çšããããšã¯åé¡ãããŸããïŒ(ã§ãªããšå²ã蟌ã¿ã® æå³ãç¡ããªã£ãŠããŸããã) ãããŸã§ïŒåãã«ãŒãå ã§äœµçšãããšåé¡ã çºçããå¯èœæ§ãããïŒãšããããšã§ã) ã§ãïŒãããªãžããªããã°ã©ã ããŸãæžãããšç¡ãã ãããïŒããããªãšæã£ãŠãŸãïŒ (ãããçŽãããšãããšïŒãšãŠããããžããªã®ã§) ãã®ããšã¯ïŒã·ãªã¢ã«åä¿¡å²ã蟌ã¿ã«é¢ããŠãïŒåæ§ã§ãïŒ [ããŒå ¥åã«ã€ããŠ] ããŒå ¥åã¯ïŒããŒå ¥åçšé¢æ°ãåŒã°ãããšãã®ã¿æç¥ããã®ã§ïŒé·ãã«æŒããŠãªããš åå¿ããªãããšããããŸãïŒ åå¿ããªããããšãã£ãŠãªãã©ãæŒãã®ã§ãªãïŒïŒåãé·ã確å®ã«æŒãããã« ããŠãã ããïŒ [MS-DOS 圢åŒãã¡ã€ã«ã®æ±ã] MS-DOS 圢åŒãã¡ã€ã«ã¯ïŒè¡æ«ã®æ¹è¡ã³ãŒãã UNIX ã®ããã¹ããã¡ã€ã«ãš ç°ãªãã®ã§ïŒæ³šæããŠãã ããïŒ*.[ch] ãã¡ã€ã«ã®å Žåã¯åé¡ç¡ãã®ã§ããïŒ makefile ã¯æ³šæããŠãã ããïŒ (UNIX ã®ããã¹ããã¡ã€ã«ã§ã¯ïŒæ¹è¡ã¯ \n ã§ããïŒMS-DOS ã§ã¯ \r\n ã§ã) äŸãã°ïŒmakefile äžã«ïŒ gcc -g -o smac $(OBJS) -L. -L/usr/X11R6/lib -lwonx -lX11 -lXt ã®ãããªè¡ããã£ããšããŠïŒããã MS-DOS ã®ããã¹ã圢åŒã®ãã¡ã€ã«ã ãšïŒ -lXt ã®ããšã«äœåãªæ¹è¡ã³ãŒã(\r)ãä»å ãããŠããŸãããïŒUNIX äžã§ make ããŠãïŒã-lXt ã«çžåœããã©ã€ãã©ãªãç¡ãããšæãããŠããŸããŸãïŒ (å®éã«ã¯ã³ã³ãã€ã©ã¯ïŒ-lXt\r ã ãšæã£ãŠããŸã£ãŠïŒlibXt\r.a ãšããã©ã€ãã©ãªã æ¢ããŠããŸãã®ã§ã) (ãããïŒãã¡ã€ã«ã emacs ã less ãªã©ã§åç §ããŠãïŒæ¹è¡ã³ãŒãã¯è¡šç€ºãããªã ããïŒåå ããšã£ãŠããããã«ãã) ãŸãïŒ gcc -g -o smac $(OBJS) -lwonx -lX11 -lXt -L. -L/usr/X11R6/lib ã®ããã«ããŠãããšïŒ/usr/X11R6/lib ãæå®ããã€ãããªã®ã«ïŒå®éã«ã¯ /usr/X11R6/lib\r ãšãããã£ã¬ã¯ããªãæå®ãããããšã«ãªã£ãŠããŸãïŒ -lX11, -lXt ã®æ€çŽ¢ã«å€±æãïŒãã¯ã make ã«å€±æããŸãïŒ æŒ¢åã³ãŒãã«é¢ããŠãïŒåãããšããããŸãïŒUNIX ã§ã®æŒ¢åã³ãŒã㯠EUC ãªã®ã§ïŒ ãœãŒã¹ã³ãŒãäžã« SJIS ã®æŒ¢åãå ¥ã£ãŠãããšïŒããŸãã³ã³ãã€ã«ã§ããªãã£ããïŒ make ãããŸãåäœããªãã£ããïŒã³ã³ãã€ã«ã§ããŠãããã°ã©ã èªäœã 誀åäœããŠããŸãïŒãããåå ã«æ°ã¥ãã«ãããªã£ãŠããŸãå¯èœæ§ããããŸãïŒ makefile ããœãŒã¹ã³ãŒãã¯å¿ ãïŒ > cat makefile | qkc -e -u > makefile.tmp > mv makefile.tmp makefile ãªã©ãéããŠïŒUNIXã®ããã¹ããã¡ã€ã«ã«å€æããŸãããïŒ [ãã¡ã€ã«åã®åé¡] MS-DOS ã§ã¯ãã¡ã€ã«åã¯ãã¹ãŠå€§æåã§ããïŒgcc ã§ã¯ *.C ã®ãã㪠ãã¡ã€ã«åã®ãã¡ã€ã«ã¯ C++ ã§æžãããŠãããšå€æãããããïŒ SAMPLE.C ã®ãããªååã®ãã¡ã€ã«ãã³ã³ãã€ã«ãããšïŒããŸããªã³ã¯ã§ããªã ããšããããŸãïŒ ãã®ãããªå Žåã¯ïŒsample.c ã«ãªããŒã ããŠã³ã³ãã€ã«ããŠãã ããïŒ [ã·ãªã¢ã«éä¿¡ã«ã€ããŠ] ã·ãªã¢ã«éä¿¡ã®åä¿¡çšé¢æ°(comm_receive_char()ç)ã¯ïŒfgetc(stdin) ãã å ¥åæåãååŸããŠïŒ\n 㯠\r ã«å€æããŠè¿ããŸãïŒããã¯ïŒäžè¬çãªéä¿¡åç·äžã® 端æ«ããšãã¥ã¬ãŒãããããã§ãïŒ ãŸãïŒcomm_send_char() ã«æž¡ããæåã¯ïŒæšæºåºåã«åºåãããŸããïŒ ã¿ããæ¹è¡ã³ãŒãã¯ïŒ"\t" "\n" ã®ãããªæååã«å€æãããŠåºåãããŸãïŒ æ·»ä»ã® sout2str.pl ãéãããšã«ããïŒã·ãªã¢ã«éä¿¡ãžã®åºåã®ã¿æœåºããŠïŒ 端æ«ãžã®åºåã®ã€ã¡ãŒãžã§è¡šç€ºãããããšãã§ããŸãïŒ sout2str.pl ã¯ä»¥äžã®ããã«ããŠå©çšããŸãïŒ (terminal ãšãã WonderWitch çšããã°ã©ã ãïŒWonX ãå©çšã㊠UNIX äžã§ ã³ã³ãã€ã«ããŠïŒsout2str.pl ãéããŠã·ãªã¢ã«ãžã®åºåã®ã€ã¡ãŒãžãèŠããå Žå) > ./terminal | ./sout2str.pl â å²ã蟌ã¿ã«ã€ã㊠ããŒå ¥åå²ã蟌ã¿ãã·ãªã¢ã«åä¿¡å²ã蟌ã¿ãªã©ã¯ïŒUNIXã®ã¢ã©ãŒã ã·ã°ãã«ã å©çšããŠå®è£ ããŠããŸãïŒ(äžå®æéããã«ããŒãªã³ã°ããŠãã) ãããã£ãŠïŒä»¥äžã®ãããªããã°ã©ã ãã³ã³ãã€ã«ããŠæ£åžžã«åäœããã ããšãã§ããŸãïŒ void far key_handler() { int key; key = key_press_check(); /* ããŒå ¥åã®åŠçãããã«å ¥ã */ } /* ã·ãªã¢ã«åä¿¡ã®å²ã蟌ã¿ãã³ãã© */ void far com_handler() { int c; c = comm_receive_char(); /* ã·ãªã¢ã«åä¿¡ã®åŠçãããã«å ¥ã */ } static intvector_t key_intvector; static intvector_t key_last_intvector; static intvector_t com_intvector; static intvector_t com_last_intvector; main() { key_intvector.callback = (void (near *)())FP_OFF(key_handler); com_intvector.callback = (void (near *)())FP_OFF(com_handler); key_intvector.cs = _asm_inline("\tmov\tax,cs"); key_intvector.ds = _asm_inline("\tmov\tax,ds"); com_intvector.cs = _asm_inline("\tmov\tax,cs"); com_intvector.ds = _asm_inline("\tmov\tax,ds"); sys_interrupt_set_hook(SYS_INT_KEY, &key_intvector, &key_last_intvector); sys_interrupt_set_hook(SYS_INT_RECEIVEREADY, &com_intvector, &com_last_intvector); while (1) { /* ç¡éã«ãŒãïŒå²ã蟌ã¿ãå ¥ã£ããïŒãã®ãã³ãã©ã«é£ã¶ */ } } _asm_inline() ã¯åžžã«0ãè¿ããããŒé¢æ°ãšããŠå®çŸ©ãããŠããŸãïŒ ãŸãïŒFP_OFF(), FP_SEG() ã¯ïŒ #define FP_OFF(p) (p) #define FP_SEG(p) (0) ã®ããã«å®çŸ©ãããŠããŸãïŒãã£ãŠïŒäžèšã®ãããªããã°ã©ã ã WonX ã§ ã³ã³ãã€ã«ããŠå®è¡ããããšãã§ããŸãïŒ ãã®ããã«ïŒwhile (1) {} ã§ç¡éã«ãŒããåããŠïŒå²ã蟌ã¿ããã£ããšãã ã åŠçãããããªããã°ã©ã ãæžããŠãïŒæ£åžžã«åäœããŸãïŒ ãããïŒããŒå ¥åã¯ããŒãªã³ã°ãããŠãããšãããæç¥ãããªãã®ã§ïŒ ããŒå ¥åå²ã蟌ã¿ããããã«ã¯ïŒé·ãã«ããŒãæŒããŠããå¿ èŠããããŸãïŒ (ããŒã¯åºæ¬çã«éãã®ã§ïŒåå¿ãããŸã§é·ãã«æŒããŠãã ãã) â ãœãŒã¹äžã® WonX äŸåéšåã®ããããã WonderWitch çšã®ããã°ã©ã ãéçºããŠããéã«ïŒWonX ã®å Žåã®ã¿çµã¿èŸŒã¿ãããŠïŒ WonderSwan äžã§å®è¡ãããšãã«ã¯åãé€ãããã³ãŒãããã£ããšããŸãïŒ (äŸãã°ïŒãããã°æ å ±ã®åºåã®ããã« printf() ãå ¥ããå Žåãªã©) ãã®ãããªãšãã®ããã«ïŒwonx/types.h ã§ #define _WONX_ ããŠããã®ã§ïŒãã®ãããªå Žæã¯ #ifdef _WONX_ ã§ããã£ãŠãã ããïŒ â WonX ãæäŸãããµãŒãã¹é¢æ° WonX ã¯ä»¥äžã®é¢æ°ããããã°çšã®ãµãŒãã¹é¢æ°ãšããŠæäŸããŠããŸãïŒ ä»¥äžã®é¢æ°ãå®è¡ããããšã«ããïŒãããã°æ å ±ã stdout ã«åºåããŸãïŒ #include "wonx/wonx.h" /* ã«ã©ãŒãããæ å ±ã®åºå */ void wonx_print_colormap_data(void); /* ãã¬ããæ å ±ã®åºå */ void wonx_print_palette_data(int n); /* ãã¹ãŠã®ãã¬ããæ å ±ãåºå */ void wonx_print_all_palette_data(void); /* ãã£ã©ã¯ã¿æ å ±ã®åºå */ void wonx_print_character_data(int n); /* ãã¹ãŠã®ãã£ã©ã¯ã¿æ å ±ãåºå */ void wonx_print_all_character_data(void); /* ã¹ãã©ã€ãæ å ±ã®åºå */ void wonx_print_sprite_data(int n); /* ãã¹ãŠã®ã¹ãã©ã€ãæ å ±ãåºå */ void wonx_print_all_sprite_data(void); ããšãã°ãœãŒã¹äžã«äžå®ãªå Žæããã£ããïŒ #ifdef _WONX_ #include "wonx/wonx.h" #endif void func(void) { ...(äžç¥)... #ifdef _WONX_ wonx_print_sprite_data(0); #endif /* ããã«ã¹ãã©ã€ãã®èšå®ã«ã€ããŠã®äžå®ãªã³ãŒãããã */ #ifdef _WONX_ wonx_print_sprite_data(0); #endif ...(以äžç¥)... ã®ããã«ããŠäžå®ãªã³ãŒãã®ååŸã§ãã³ãããŒã¿ãåããšïŒãããã°ã«åœ¹ç«ã€ ã§ãããïŒ#ifdef _WONX_ ã§ããã£ãŠããã°ïŒãããã°ã³ãŒãããœãŒã¹äžã«æ®ãã ãŸãŸã§ WonderWitch ã§ãã³ã³ãã€ã«ãå¯èœãªã®ã§äŸ¿å©ã§ãïŒ ãŸãïŒWonX ã§ã¯ç»é¢ã®æç»ã«æéããããã®ã«å ããŠïŒç»é¢ã®æç»ã¯ç»é¢é¢é£ã® ã·ã¹ãã ã³ãŒã«(ãã¬ããã®å€æŽãªã©ãå«ã)ãåŒã°ãããã³ã«è¡ãããããïŒ for (y = 0; y < TEXT_SCREEN_HEIGHT; y++) { for (x = 0; x < TEXT_SCREEN_WIDTH; x++) { text_put_char(x, y, ' '); } } ã®ãããªã³ãŒãããããšïŒtext_put_char() ã®åŒã³åºãã®ãã³ã«ç»é¢æç»ãè¡ããã ããïŒåäœãéåžžã«é ããªããŸãïŒ ããã®å¯ŸçãšããŠïŒF9, F10 ãæŒããŠç»é¢ã®è¡šç€ºã¬ãã«ãå€åãããããšã§ ç»é¢ã®è¡šç€º/é衚瀺ãåæ¿ããããããã«ããŠããã®ã§ããïŒä»¥äžã®ãµãŒãã¹é¢æ°ã å©çšããããšã§ïŒããã°ã©ã äžããç»é¢ã®è¡šç€ºã¬ãã«ãå¶åŸ¡ã§ããŸãïŒ è¡šç€ºã¬ãã«ã¯ããã©ã«ãã§ã¯ 1 ã«ãªã£ãŠããïŒè¡šç€ºã¬ãã«ã 1 以äžã®ãšãã®ã¿ æç»ãè¡ãããŸãïŒ ãšãã« gdb ãªã©ã䜿ã£ãŠãããã°ããå Žåã«ã¯ïŒF9, F10 ã®åå¿ãéããªã£ãã ããããããããããïŒéå®ããã§ãããïŒ #include "wonx/wonx.h" /* çŸåšã®è¡šç€º/é衚瀺ã®ã¬ãã«ã®ååŸïŒ(1以äžã§è¡šç€ºïŒ0以äžã§é衚瀺) */ int wonx_get_lcddraw_level(void); /* çŸåšã®è¡šç€º/é衚瀺ã®ã¬ãã«ã®èšå® */ int wonx_set_lcddraw_level(int level); /* 衚瀺ã¬ãã«ãäžãã */ int wonx_lcddraw_level_down(void); /* 衚瀺ã¬ãã«ãäžãã */ int wonx_lcddraw_level_up(void); å®éã®ããã°ã©ã äžã§ã¯ïŒä»¥äžã®ããã«ããŠå©çšããŸãïŒ #ifdef _WONX_ #include "wonx/wonx.h" #endif void func(void) { ...(äžç¥)... #ifdef _WONX_ wonx_lcddraw_level_down(); #endif for (y = 0; y < TEXT_SCREEN_HEIGHT; y++) { for (x = 0; x < TEXT_SCREEN_WIDTH; x++) { text_put_char(x, y, ' '); } } #ifdef _WONX_ wonx_lcddraw_level_up(); #endif ...(以äžç¥)... ãã®ããã«æžãããšã«ããïŒWonX ã§ã®ã³ã³ãã€ã«æã«ã¯ text_put_char() å®è¡æã® ç»é¢æç»ãææ¢ããŠïŒé«éåããããšãã§ããŸãïŒ (#ifdef _WONX_ ã§ãããã®ãå¿ããªãããã«ããŸããã) â ç»é¢ã®è¡šç€ºã¬ãã«ã«ã€ã㊠WonX-2.2 ããïŒç»é¢ã®è¡šç€ºã¬ãã«ãšãããã®ãå°å ¥ããŸããïŒ (WonX-2.1 ãŸã§ã¯ïŒF10 ã«ããç»é¢æç»ã® ON/OFF ã®åæ¿ãã®ã¿ã ã£ã) ããã®çç±ã¯ïŒããã°ã©ã äžãã (wonx_lcddraw_level_up(), wonx_lcddraw_level_down() ãªã©ã«ãã£ãŠ)ç»é¢ã®æç»ã å¶åŸ¡ããéã«ïŒON/OFF ããã§ããªããšïŒé¢æ°ã®äžãã颿°ãåŒã¶ãããªå Žåã« æåŸ éãã«åäœããªãããã§ãïŒããšãã°ä»¥äžã®ãããªå Žåã§ãïŒ void sample1(void) { wonx_lcddraw_draw_off(); /* åŠçïŒ */ wonx_lcddraw_draw_on(); } void sample2(void) { wonx_lcddraw_draw_off(); /* åŠçïŒ */ sample1(); /* åŠçïŒ */ wonx_lcddraw_draw_on(); } åŠçïŒïŒåŠçïŒã®äœçœ®ã§ã¯ç»é¢æç»ã¯OFFã«ãªã£ãŠããã®ã§ããïŒåŠçïŒã®éšåã§ã¯ æåŸ ã«åããŠç»é¢ã®æç»ã¯ ON ã«ãªã£ãŠããŸããŸãïŒããã§ã¯ã©ãã®é¢æ°ã§ ON/OFF ããŠããã®ããåžžã«æ³šæããªããã°ãªããªããªãïŒOFF ã«ããŠããã€ããã§ã ã©ããã§ ON ã«ãªã£ãŠããŸã£ãŠããããšïŒäœã®ãããã°ãããŠããã®ãããããªã ãªã£ãŠããŸããŸãïŒ ãã®å¯ŸçãšããŠïŒè¡šç€ºã¬ãã«ãå®ããŠïŒä»¥äžã®ããã«æžããããã«ããŸããïŒ void sample1(void) { wonx_lcddraw_level_down(); /* åŠçïŒ */ wonx_lcddraw_level_up(); } void sample2(void) { wonx_lcddraw_level_down(); /* åŠçïŒ */ sample1(); /* åŠçïŒ */ wonx_lcddraw_level_up(); } ããã ãšåŠçïŒã®ãšããã§ã¯è¡šç€ºã¬ãã«ã¯ -1ïŒåŠçïŒïŒåŠçïŒã®ãšããã§ã¯ 衚瀺ã¬ãã«ã¯ 0 ãšãªãããïŒæåŸ éãã«åäœããŠãããŸãïŒ â mmap() ã«ã€ã㊠WonX ã®èšèšææ³ã§ã¯ãUNIXåŽã«ãååšãããµãŒãã¹é¢æ°ã¯UNIXã«ãŸãããã ãšèããŠããããïŒfopen() ãªã©ã¯ WonX ã§ã¯çšæããŠããŸããïŒ ããã mmap() ã«é¢ããŠã¯ïŒUNIX ãš WonderWitch ã§åäœãããªãéãã®ãšïŒ WonderWitch ã®ããã°ã©ã äžã§å®éã« mmap() ã䜿çšããŠãããã®ãå€ããšãã 宿 ããã£ãã®ã§ïŒWonX-2.2 ã§ mmap() ã·ã¹ãã ã³ãŒã«ã®å®è£ ãè¡ããŸããïŒ ãã ãå®è£ äžã®åé¡ããã£ãŠïŒUNIX åŽã§ã¯ mmap() ã¯ïŒ/usr/include/stdio.h ã§ïŒ void * mmap(void * addr, size_t len, int prot, int flags, int fd, off_t offset); ã®ããã«å®çŸ©ãããŠããŸãïŒ(FreeBSD ã®äŸ) ããã«å¯Ÿã㊠WonderWitch ã§ã¯ïŒinclude/sys/fcntl.h ã§ïŒ void * mmap(char * filename); ã®ãããªåœ¢ã§ã«å®çŸ©ãããŠããŸãïŒ(å®éã«ã¯ãã€ã³ã¿ã¯ far ãã€ã³ã¿ã«ãªã£ãŠããã) UNIX ã® mmap() ãš WonderWitch ã® mmap() ã§ã¯ïŒåŒæ°ã®æ°ãçš®é¡ãéããŸãïŒ ãã®ãã WonderWitch ã«åãã㊠mmap() ãå®è£ ãããšïŒWonX ã®ã³ã³ãã€ã«æã WonX ããªã³ã¯ããããã°ã©ã ã®ã³ã³ãã€ã«æã«ïŒé¢æ°ã®åŒæ°ãã³ã³ããªã¯ãã㊠ãšã©ãŒãšãªã£ãŠããŸããŸãïŒWonX ããªã³ã¯ããããã°ã©ã äžã§ã¯ïŒstdio.h ã ã€ã³ã¯ã«ãŒããããå¯èœæ§ãåžžã«ååšããã®ã§ïŒç§»æ€æ§ã®é«ãæ¹æ³ã§ãã®åé¡ã æ ¹æ¬çã«è§£æ±ºããããšã¯ã§ããŸããïŒ ããã®èŠèã®å¯ŸçãšããŠïŒWonX ã§ã¯ mmap() 㯠wonx_mmap() ãšããååã§å®çŸ©ããŠïŒ fcntl.h ã§ã¯ïŒ #define mmap wonx_mmap ããããšã§å¯ŸåŠããŠããŸãïŒã€ãŸãïŒmmap() ã®å®äœã¯ wonx_mmap() ãšãªããŸãïŒ å ·äœçã«ã¯ fcntl.[ch] ãåç §ããŠãã ããïŒ ãã®ããïŒfcntl.h ãã€ã³ã¯ã«ãŒãããã®ãå¿ã㊠mmap() ã䜿çšãããšïŒ UNIX ã® mmap() (stdio.h ã® mmap()) ãæå¹ã«ãªã£ãŠããŸãããïŒ ã颿°ã®åŒæ°ãé£ãéã£ãŠããããšããå 容ã®ãšã©ãŒãåºããšæãããã®ã§ïŒ 泚æããŠãã ããïŒ ãŸãïŒãã®æ¹æ³ã ãš fcntl.h ã®åŸã« stdio.h ãã€ã³ã¯ã«ãŒãããããããªå Žåã«ïŒ stdio.h ã®äžã§å®£èšãããŠãã mmap() ã wonx_mmap() ã«æžãå€ãã£ãŠããŸãïŒ ãã¯ã颿°ã®åŒæ°ãã³ã³ããªã¯ãããŠããŸããŸãïŒå¯ŸçãšããŠïŒfcntl.h ã®å é ä»è¿ã§ stdio.h ã®ã€ã³ã¯ã«ãŒããè¡ãïŒfcntl.h ã®åŸã§ stdio.h ãã€ã³ã¯ã«ãŒããããŠãïŒ ïŒåºŠç®ã®ã€ã³ã¯ã«ãŒãã«ãªã£ãŠïŒstdio.h ã®å é ã§ïŒ #ifndef _STDIO_H_ #define _STDIO_H_ ãªã©ã§åãããããã«ãªã£ãŠããŸãïŒ ä»åŸåæ§ãªé¢æ°ãå®è£ ãããšãã«ãïŒåããããªå¯ŸåŠã«ãªãã§ãããïŒ ããŒãïŒã»ããšã«èŠèã®çã ãªã... #define ãã€ãããïŒããã㯠void * wonx_mmap(char * filename); void * mmap; mmap = wonx_mmap; ã®ããã«ããŠä»£å ¥ããªããïŒãªã©ã®æ¹æ³ãæ€èšããã®ã§ããïŒçµå±ããããã¡ã°ã 確å®ã§ããããããæ¹æ³ããªã... ãšæã£ãŠãŸãïŒãã£ãšããã¢ã€ãã£ã¢ããã£ãã æããŠãã ããïŒ â å®è¡ã®é«éåã«ã€ã㊠WonX ã¯ãããã°ç®çã®ã©ã€ãã©ãªã§ããããïŒããŸãé«éåäœã®ããšã èããŠããŸããïŒãã®ããïŒé ãã§ãïŒã§ããïŒä»¥äžã®ããšã«æ³šæããããšã§ïŒ ããªãéãåäœãããããšãã§ããŸãïŒ ããã°ã©ã äžã®ãããã¹ãããã«ãªãéšåãïŒ wonx_lcddraw_level_down(), wonx_lcddraw_level_up() ã§ãããïŒããã«ããïŒF10 ãæŒããŠç»é¢æç»ã OFF ã«ããã®ãšåã广ã åŸãããŸãïŒ å®è¡æã«ã¯ïŒ > ./smac > /dev/null ã®ããã«ããŠïŒåºåã¡ãã»ãŒãžã /dev/null ã«æšãŠãïŒ WonX ã¯å€§éã®ã¡ãã»ãŒãžãåºåããŸããïŒkterm äžãªã©ã§åäœãããŠããå Žåã«ã¯ïŒ ãã®ã¡ãã»ãŒãžã®åŠçã倧ããªè² è·ã«ãªããŸãïŒãã®ããïŒã¡ãã»ãŒãžã /dev/null ã«æšãŠãŠããŸãããšã§ïŒé«éã«åäœãããããšãã§ããããã«ãªããŸãïŒ ãããã®ããšã«æ°ãã€ããã°ïŒããªãé«éã«åããããšãå¯èœã«ãªããŸãïŒ â æ·»ä»ã®ããŒã«ã«ã€ã㊠perl ã¹ã¯ãªãã(*.pl)㯠make ããããšã«ããïŒ*.perl ããèªåçæãããŸãïŒ ãã®ãšãïŒperl ã®ããå Žæãèªåæ€çŽ¢ããŠïŒã¹ã¯ãªããã®å é è¡ã« #!/usr/bin/perl ã®ãããªè¡ã远å ããŠãããŸãïŒ [sys2wonx.pl] #include <sys/disp.h> ãïŒ #include "wonx/disp.h" ã®ããã«å€æãããã£ã«ã¿ã§ãïŒ [int2sint.pl] short ã long ãæç€ºãããŠããªã int ãïŒshort int ã«å€æããŸãïŒ sizeof(int) ã uint* ãïŒsizeof(short int), unsigned short int* ã« å€æãããŸãïŒ ãã ïŒã²ãã£ãšãããããããªå€æãããŠããŸããã... ã§ããã¶ããã®ãšãã«ã¯ ã³ã³ãã€ã«æã«ãšã©ãŒãåºãã ããããïŒãããïŒ ããã ïŒperl ã¯è¡åäœã«åŠçããã®ã§ïŒ long int a; ãšãïŒ void func(long int a) ã®ãããªå€ãªæžãæ¹ãããŠãããšïŒ long short int a; ãšãïŒ void func(long short int a) ã«å€æãããŠããŸã£ãŠïŒãã£ãšãšã©ãŒã«ãªãããšã§ãããïŒæ°ãã€ããŠãã ããïŒ [filters.pl] è€æ°ã®ãã£ã«ã¿ããŸãšããŠéãããã® perl ã¹ã¯ãªããã§ãïŒ æžåŒã¯ïŒ filters.pl [filters...] -f [files...] ã§ãïŒäŸãã°ïŒ > filters.pl sort head -f file1 file2 file3 ã¯ïŒ > cat file1 | sort | head > file1.tmp > mv file1.tmp file1 > cat file2 | sort | head > file2.tmp > mv file2.tmp file2 > cat file3 | sort | head > file3.tmp > mv file3.tmp file3 ãããããšãšç䟡ã§ãïŒ [challsrc.sh] WonderWitchçšãœãŒã¹ â wonxçšãœãŒã¹ ãžã®å€æãããããã®ã·ã§ã«ã¹ã¯ãªããã§ãïŒ å 容ã¯ïŒåã«ïŒ ./filters.pl "qkc -e -u" ./sys2wonx.pl ./int2sint.pl -f [files] ããã ãã§ãïŒ æ¥æ¬èª perl ã䜿çšããå Žåã«ã¯ïŒæŒ¢åã³ãŒã㯠EUC ã§ãªããšæ£åžžã«åäœããªãã®ã§ïŒ "qkc -e -u" ãéããŠãã ./sys2wonx.pl ãš ./int2sint.pl ã éããããªé çªã«ãªã£ãŠããŸãïŒ [sout2str.pl] wonx ã¯ïŒã·ãªã¢ã«ããŒããžã®åºåã¯ïŒ output to serial port : "A" ãšãïŒ output to serial port : "\n" ã®ããã«ïŒæšæºåºåã«åºåããŸãïŒsout2str.pl ã¯ïŒãã® "" ã§ãããããéšå ã®ã¿ãæœåºããŠïŒ\n ã \t ãé©åãªã³ãŒãã«å€æããŠåºåãããã£ã«ã¿ã§ãïŒ ã·ãªã¢ã«ããŒãã䜿çšããããã°ã©ã (äŸ: wwterm)ãèµ·åãããšãã«ã¯ïŒ > wwterm | ./sout2str.pl ã®ããã«ããŠïŒsout2str.pl ãéããŠèµ·åããããšã«ããïŒå®éã®ã·ãªã¢ã«ããŒã ãžã®åºåãã¢ãã¿ããããšãã§ããŸãïŒ â äœè WonX ã¯ïŒåäºåŒäº®ããã®å€§éšåãåŸåŸ©ïŒæéã®éå€é»è»ã®äžã§ Libretto ã§æžããïŒ ãé»è»ãœãããŠãšã¢ãã§ãïŒGPLã§é åžããŸãïŒ äœè ã«ã€ããŠã¯ïŒæ·»ä»ã® OMAKE.jpn ãåç §ããŠãã ããïŒ åäºåŒäº®ã®é£çµ¡å ã®ã¡ãŒã«ã¢ãã¬ã¹ã¯ïŒ hsakai@m8.people.or.jp ã§ãïŒãŸãïŒæ¬ãœãããŠãšã¢ã®ææ°çãïŒ http://www.seki.ee.kagu.sut.ac.jp/~sakai/WonderWitch/index.html ã§é åžããŠããŸãïŒ ä»¥äžã¯ãã©ãŒãµã€ãã§ãïŒ http://hp.vector.co.jp/authors/VA014157/index.html http://www.people.or.jp/~hsakai/index.html ãã©ãŒãµã€ãã¯ïŒåäºãæ°ãåãããšãã«ã¢ããããŒãããã®ã§ïŒåžžã«ææ°ïŒ ãšããããã§ã¯ãããŸããïŒãããŸã§ããã¯ã¢ããçšã§ãïŒ â ãã®ãã¡ã€ã«ã¯ãããŸã§
Description
Languages
C
98.9%
Makefile
0.6%
Perl
0.3%
Shell
0.2%