Fixed a part of the data dump part. Changed the line of perl script from / usr / bin / perl to / usr / local / bin / perl. (On FreeBSD, Japanese perl is in / usr / local / bin) For disp.c, libwwc.c, a function for reading and acquiring bitmap data of characters, The type of bitmap data is not unsigned char *, but instead of short int *, long int * It was modified to an appropriate type. Let the bitmap of the WWCharacter class be union of uchar, ushort, ulong, By accessing with an appropriate type in WWCharacter_GetPixel () The endian dependence of bitmap data is eliminated. (i386, confirmed by SPARC) Fixed how to get the value of WWCharacter_GetPixel () in 16 PACKED color mode. (The bug that the character was displayed inverted horizontally was resolved) Stop for 10 seconds at F11, forcibly end with Ctrl-c or F12, Added iconization with Ctrl-i. (It was a function that was originally, but I forgot that, We modified it somewhat to make it formal support) Move display / non-display change key from p to F10. Manual correction. XDisplay.c: generated with XColorGC_CreateFromRGB () with XDisplay_DrawLCDWindow () Since we did not Destroy () the XColorGC object, we made a bug that caused memory flow Fix. (XColorGC_Destroy (x_color_gc) addition) Add wonx_include / fcntl.h. The contents are / usr / include / fcntl.h, Just include /usr/include/sys/fcntl.h. Format change of serial output message (output to serial port:). (I tried to enclose it with "".) etc.c: wonx_print_character () Fixed. (Add \ ", \ \ and others) Fix sout2str.pl. (Add \ ", \ \ etc .... The above message for serial output It was modified according to format change) Added int2sint.pl, filters.pl, challsrc.sh. Change sys2wonx.pl. in wonx_include / types.h typedef unsigned short WORD; typedef unsigned long DWORD; To typedef unsigned short int WORD; typedef unsigned long int DWORD; change to. Fixed README. Version 2.1 - from wonx-2.1.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)
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. â é åžã«åœãã£ãŠ ãæèŠïŒãèŠæãªã©æè¿ããŸãïŒã©ãã©ããå¯ããã ããïŒ ãã°æ å ±ãã¢ããã€ã¹ãããã°ïŒäœè ã®åäºåŒäº®ãŸã§ïŒã©ãã©ãã¡ãŒã«ãã ããïŒ ã¢ãã¬ã¹ã¯ïŒ sakai@seki.ee.kagu.sut.ac.jp hsakai@pfu.co.jp ã§ãïŒ (ãã ãïŒè¿äºãæžããšã¯éããªããïŒèŠæãåæ ãããšãéããŸããã®ã§ ãã®ç¹ã¯ã容赊ãã ãã) ãŸãïŒåäºã®æ°ãåãéãïŒã¢ããããŒãã¯éæè¡ã£ãŠãããŸãïŒ http://www.seki.ee.kagu.sut.ac.jp/~sakai/WonderWitch/index.html ã§ïŒéæå ¬éããŠãããŸãïŒ â ã¯ããã« WonX ã¯ïŒWonderWitch çšã®ããã°ã©ã ã X ã¢ããªã±ãŒã·ã§ã³ãšããŠã³ã³ãã€ã«ãã ããã®ïŒã©ã€ãã©ãªã§ãïŒä»¥äžã®ç¹åŸŽããããŸãïŒ ã»Cèšèªã¬ãã«ã§äºææ©èœãæã£ãŠããã®ã§ïŒWonderWitch çšã®ããã°ã©ã ã UNIXäžã§ãã®ãŸãŸã³ã³ãã€ã«ã§ããïŒ(-lwonx ã§ã³ã³ãã€ã«ãã) ã»UNIXäžã§ãããã¬ã䜿çšããŠãããã°ã§ããããã«ãªãïŒ(匷å!) ã»ãã£ã©ã¯ã¿ããŒã¿ããã¬ããããŒã¿ã®ãã³ãæ©èœãããïŒ ã»äžæ£ãªåŒæ°ã®å€ãïŒãã¬ããããã£ã©ã¯ã¿ãåæåããªãã§äœ¿çšãããªã©ã å³ãããã§ãã¯ãïŒãšã©ãŒãåºåãã(ããã«ãã)ïŒå³ãããšã©ãŒãã§ãã¯ããïŒ ã»äœ¿çšã§ããªãæ©èœ(颿°ã¯çšæããŠãããïŒãŸã å®è£ ããŠãªãã£ããïŒ å®è£ ãå°é£ã ã£ããããŠïŒäžèº«ã空ã®ãã®)ã¯ããããããïŒ åŸã ã«è¿œå ããŠããã€ããïŒ ã»ã²ãŒã ã®ç»é¢åçãç°¡åã«æ®ããïŒ(ããžã«ã¡ã§æ®ã£ããïŒç»ååã蟌ã¿çšã® ããã°ã©ã ã䜿ã£ããããå¿ èŠãç¡ããªã) ããã¯ãããšã¹ããïŒ ã»ãšãã¥ã¬ãŒã¿ã§ãªãã©ã€ãã©ãªã§ããïŒãœãŒã¹ã³ãŒãå ¬éããŠããã®ã§ïŒ èªç±ã«ã«ã¹ã¿ãã€ãºãå¯èœïŒ ã»æç»é床ã¯é ããïŒãããã°ç®çã®ãããªã®ã§ïŒé床ãéãããããšã¯ ããŸãèããŠããªãïŒ(ãããããäžèšã®ãããã°æ§ãåªå ãã) ã»WonderWitch çšã®ããã°ã©ã ãïŒXäžã§æ¥œããããã®ãã®ã§ã¯ãªãïŒ ãŸãïŒãšãã¥ã¬ãŒã·ã§ã³ãç®çãªã®ã§ã¯ãªãïŒ ãããŸã§ãããã°ç®çã®ãã®ïŒ(ããããããªã·ãŒã§éçºãé²ãã) åŸã£ãŠïŒWonderWitch ã§ã®åäœãæš¡å£ããããšãããïŒãããã°æ å ±ã åºåããããšãæ¹é ã®ãããããåªå ãããããªå®è£ ãããå ŽåãããïŒ â å¿ èŠãªãã® WonX ã§ã¯ïŒä»¥äžã®ãã®ã䜿çšããŠããŸãïŒ ã»perl (WonderWitchçšãœãŒã¹ã³ãŒã â WonXçšãœãŒã¹ã³ãŒãã®å€æçš perl ã¹ã¯ãªããã æ·»ä»ããŠããã®ã§ïŒWonderWitchçšãœãŒã¹ã³ãŒãã®äžã«æŒ¢åãå ¥ã£ãŠããã®ãªãã°ïŒ æ¥æ¬èª perl ãæãŸãã) æ·»ä»ã® perl ã¹ã¯ãªããã¯ïŒãã¹ãŠ #!/usr/local/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 ãŠã€ã³ããŠãéããŠïŒæšæºåºåã«ã¡ãã»ãŒãžãåºåãããŸãïŒ ãã£ãã F10 ãæŒããŠç»é¢æç»ã OFF ã«ããŸãïŒãã°ããããã (ã¡ãã»ãŒãžã®å 容ãå€ãã£ãã) F10 ãæŒããŠåã³ç»é¢è¡šç€ºã ON ã«ãããšïŒ smac ã®ã¿ã€ãã«ç»é¢ã衚瀺ãããŸãïŒ ããã§ã¹ããŒã¹ãæŒããŠïŒããã«ãŸã F10 ã§ç»é¢è¡šç€ºã OFF ã«ããŠïŒ ãã°ããããã(ã¡ãã»ãŒãžã®å 容ãå€ãã£ãã) F10 ã§ç»é¢è¡šç€ºã ON ã«ããŸãïŒ ã©ãã§ããïŒ SpeedMac ã®ã²ãŒã ç»é¢ã衚瀺ãããŠããã§ããããïŒ ã«ãŒãœã«ããŒã§ç§»åïŒã¹ããŒã¹ããŒã§å°æã§ãïŒ ãã ãïŒããŒå ¥åã¯ããŒå ¥åçšé¢æ°ãåŒã°ãããšãããæå¹ã§ã¯ãªãã®ã§ïŒ ããŒã¯åå¿ãããŸã§é·ãã«æŒããŠãã ããïŒ 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 ãã§ãããããŸãïŒ ~>% tar xvzf wonx-x.x.tar.gz (äžç¥) ~>% cd wonx ~/wonx>% make (äžç¥) ~/wonx>% ls libwonx.a libwonx.a ~/wonx>% 次ã«ïŒlibwonx.a ãšïŒwonx_include ãã£ã¬ã¯ããªãšïŒ challsrc.sh, filters.pl, sys2wonx.pl, int2sint.pl ãããªãã®äœã£ãããã°ã©ã ã® ãã£ã¬ã¯ããª(ããã§ã¯äŸãšããŠïŒyoursample ãšããŸã)ã«ã³ããŒããŸãïŒ ~/wonx>% cp -R libwonx.a wonx_include ../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_include/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 ããŸãïŒ ãŸãïŒWonderWitch ã«ã¯ïŒsys/types.h ãªã©ãšãã£ãããããã¡ã€ã«ããããŸãïŒ ãã£ãŠïŒWonderWitch ã®ããããã¡ã€ã«æ§æããã®ãŸãŸ WonX ã«åŒãç¶ããšïŒ WonX ã®ããããã¡ã€ã«ãš UNIX ã®ããããã¡ã€ã«ãã³ã³ããªã¯ããã å¯èœæ§ãåºãŠããŸãïŒ (ããšãã°ïŒWonderWitch ã® sys/types.h ãš /usr/include/sys/types ã ã³ã³ããªã¯ãããïŒãªã©ã§ã) ããã¯ïŒWonderWitchçšã®ã¢ããªã±ãŒã·ã§ã³ãã³ã³ãã€ã«ãããšãã«ïŒèŠæ³šæã§ãïŒ ã³ã³ãã€ã«ãããŸããšãããªããšããé害ã®åå ã¯ïŒã»ãšãã©ããã®ãããªïŒ ãããããã¡ã€ã«ã®ã³ã³ããªã¯ããããã¯èª€èªãã«èµ·å ããŠããŸãïŒ å¯ŸçãšããŠïŒWonX ã§ã¯ wonx_include ãšãããã£ã¬ã¯ããªã®äžã«ããããã¡ã€ã«ã æ ŒçŽããŠãããŸãïŒ(æ¬åœã¯ sys ãšãããã£ã¬ã¯ããªã«ãããã£ããïŒ äžèšã®å¯Ÿçã®ããïŒãã®ããã«ãã) WonderWitch çšããã°ã©ã äžã®ïŒ #include <sys/types.h> ã®ãããªéšåã¯ïŒãã¹ãŠïŒ #include <wonx_include/types.h> ã®ããã«ä¿®æ£ããå¿ èŠããããŸãïŒ (stdio.h ã stdlib.h ã¯ïŒUNIX ã·ã¹ãã ä»å±ã®ãã®ã䜿çšããã®ã§ïŒ ãã®ãŸãŸã§ããŸããŸãã) (ãã ãïŒã³ã³ããªã¯ãããªããšãã絶察ã®èªä¿¡ããããªãïŒãã®éãã§ã¯ãããŸãã) WonderWitch ã®ããã°ã©ã ã®ïŒ#include <sys/*.h> ã¯ïŒãã¹ãŠ #include <wonx_include/*.h> ã«ä¿®æ£ããå¿ èŠãããïŒãšããããšã§ãïŒ (ããããŸãšããŠè¡ãããã® sys2wonx.pl ãšãã perl ã¹ã¯ãªãããæ·»ä»ã㊠ãããŸãïŒ./filters.pl ./sys2wonx.pl -f *.[ch] ãå®è¡ãããšïŒãã£ãããš æžãæããŠãããŸã) ãŸãïŒUNIXã·ã¹ãã ã«ãã£ãŠã¯ïŒ/usr/include/sys/types.h ã§ ushort, ulong ã å®çŸ©ããŠãããã®ãšããªããã®ããããŸãïŒãã£ãŠïŒã³ã³ãã€ã«äžã« ulong ãïŒéå®çŸ©ãããŠãããšãããããå ŽåããããŸãïŒ ãã®ãããã®åŸ®èª¿æŽã«ã¯ïŒwonx_include 以äžã®ãã¡ã€ã«ãçŽæ¥ä¿®æ£ã㊠調æŽããŠãã ããïŒwonx_include/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>% ãããŸã§ã§ïŒã©ã€ãã©ãªã®äœæã¯çµãã§ãïŒ â 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_include . ~/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_include/disp.h" #include "wonx_include/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 ãæŒããšïŒã¹ãã©ã€ãã®ããŒã¿ããã³ãåºåããïŒ ã»F10 ãæŒããšïŒè¡šç€º/é衚瀺ã¢ãŒããåæ¿ããïŒ (é衚瀺ã ãšç»é¢ãžã®æç»ãè¡ããªããé«é) ã»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); /* ããã§æ¯ååæç»ããã */ } } ãã®ãããªå Žåã¯ïŒF10 ãæŒããŠé衚瀺ã¢ãŒãã«ããŠïŒã«ãŒãåŠçãçµã£ãã åã³ 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_include/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 * ã« ãã£ã¹ãããŠæž¡ããããªæžãæ¹ãããŠãããšïŒäŸåããŠããŸããŸãïŒ ãã£ã©ã¯ã¿ããŒã¿ã®ããããããèªã¿èŸŒã¿çšã®é¢æ°ã«ã¯ïŒé©åãªåã®ããŒã¿ã æž¡ãããã«ããŠãã ããïŒ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 ã®æ€çŽ¢ã«å€±æããŸãïŒ æŒ¢åã³ãŒãã«é¢ããŠãïŒåãããšããããŸãïŒ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 ãéãããšã«ããïŒã·ãªã¢ã«éä¿¡ãžã®åºåã®ã¿æœåºããŠïŒ 端æ«ãžã®åºåã®ã€ã¡ãŒãžã§è¡šç€ºãããããšãã§ããŸãïŒ â å²ã蟌ã¿ã«ã€ã㊠ããŒå ¥åå²ã蟌ã¿ãã·ãªã¢ã«åä¿¡å²ã蟌ã¿ãªã©ã¯ïŒ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_include/types.h ã§ #define _WONX_ ããŠããã®ã§ïŒãã®ãããªå Žæã¯ #ifdef _WONX_ ã§ããã£ãŠãã ããïŒ â ãã³ãããŒã¿ã®åããã ãœãŒã¹äžã«ïŒ #include "WonX.h" #include "WonXDisplay.h" #include "WWDisplay.h" #include "WWColorMap.h" #include "WWPalette.h" #include "WWCharacter.h" #include "WWSprite.h" int i; WWDisplay ww_display; ww_display = WonXDisplay_GetWWDisplay(WonX_GetWonXDisplay()); WWColorMap_PrintData(WWDisplay_GetColorMap(ww_display), stdout); for (i = 0; i < 16; i++) WWPalette_PrintData(WWDisplay_GetPalette(ww_display, i), stdout); for (i = 0; i < 512; i++) WWCharacter_PrintData(WWDisplay_GetCharacter(ww_display, i), stdout); for (i = 0; i < 128; i++) WWSprite_PrintData(WWDisplay_GetSprite(ww_display, i), stdout); ã®ãããªã³ãŒããæ¿å ¥ããããšã«ããïŒä»»æã®å Žæã§ãã£ã©ã¯ã¿ããã¬ããã® ãã³ãããŒã¿ãåºåãããããšãã§ããŸãïŒ ããã°ã©ã äžã«ïŒäžå®ãªå Žæããã£ããïŒ #ifdef _WONX_ ww_display = WonXDisplay_GetWWDisplay(WonX_GetWonXDisplay()); printf("Before setting:\n"); WWSprite_PrintData(WWDisplay_GetSprite(ww_display, 0), stdout); #endif /* _WONX_ */ /* ããã«ã¹ãã©ã€ãã®èšå®ã«ã€ããŠã®äžå®ãªã³ãŒãããã */ #ifdef _WONX_ printf("After setting:\n"); WWSprite_PrintData(WWDisplay_GetSprite(ww_display, 0), stdout); #endif /* _WONX_ */ ã®ããã«ããŠäžå®ãªã³ãŒãã®ååŸã§ãã³ãããŒã¿ãåããšïŒãããã°ã« 圹ç«ã€ã§ãããïŒ â æ·»ä»ã®ããŒã«ã«ã€ã㊠[sys2wonx.pl] #include <sys/disp.h> ãïŒ #include "wonx_include/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 ãåç §ããŠãã ããïŒ åäºåŒäº®ã®é£çµ¡å ã®ã¡ãŒã«ã¢ãã¬ã¹ã¯ïŒ sakai@seki.ee.kagu.sut.ac.jp hsakai@pfu.co.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%