åã®èšäºã®ãã¹ãã¯ãæ¡ä»¶ä»ãã§ãéèªåãããŒãžã§ã³ãšæ¯èŒããŠãã衚瀺ããµã³ãã«ã®ãèªåãå®è£
ã®é«ãå¹çæ§ã説åŸåããã£ãŠç€ºããŸããã èŠããã«ãäž¡æ¹ã®å®è£
ã¯èªåã§ãããå¹çã®éãã¯è€æ°ãããæ ¹æ¬çãªçç±ã¯ãããŒãžã§ã³A1ïŒãèªåãïŒãããšããšãªãŒãããã³ãšããŠèšèšããããªãã·ã§ã³A2ïŒãéèªåãïŒã¯ããã§ã¯ãªãã£ãããã§ãã èªååãããèšèšãé«å¹çã®åºç€ã§ããã»ã©ãèªååãããå®è£
ã§ã¯ãããŸããã åçŽãªã¢ã«ãŽãªãºã ã®å Žåãèªåå®è£
ã¯èªåçã«ååŸãããŸãã èªåããã°ã©ãã³ã°ã¯ãæ§é èšèšãåºç€ãšããèªåèšèšã®ããã«ãæéç¶æ
ãã·ã³ã®åœ¢ã§ããã°ã©ã ãå®è£
ããããšã§ã¯ãªãããšèšãã®ã¯çã«ããªã£ãŠããŸãã ãªãŒãããã³ã®èšèšãšå»ºèšçãªåè§£ã®ãããã¯ã«äœåºŠãè§ŠããŸãããããã®ãããã¯ãæããã«ããã«ã¯å®çšçãªäŸãå¿
èŠã§ãã ãã®èšäºã𿬡ã®ããã€ãã®èšäºã§ã¯ãã¯ãŒã¯ã·ã§ããã宿œããèªåèšèšã®ããã»ã¹ã瀺ããå¯èœã§ããã°ãèªåèšèšã«åºæã®æšè«ã®ã³ãŒã¹ãæäŸããããšããŸããç®æ¬¡
åã®èšäº
èšäº1ã§ã¯ãããã£ã¹ãã¬ã€ãã®äŸïŒå®éšããŒãžã§ã³ïŒã®å
éšæ§é ãã¬ãã¥ãŒãããŸããã æ¬æ¥ã®èšäºã§ã¯ãç¹å®ã®æè¡çãœãªã¥ãŒã·ã§ã³ã®éžææ¹æ³ã«çŠç¹ãåœãŠãŠãäœæ¥ãªãã·ã§ã³ã®èªåéçºããã»ã¹ã«ã€ããŠèª¬æããŸãã èšåãããèšäºã®å
容ãç¹°ãè¿ãããšã¯ãããåé¡ã®ç°¡åãªèª¬æã«ãšã©ãŸããŸãã
åé¡ã®å£°æ
b / wã°ã©ãã£ãã¯ãã£ã¹ãã¬ã€ããããŸãã ãã®ãããªã¡ã¢ãªã«ã¯ãåãããã1ãã¯ã»ã«ãè¡šãæšæºã®ãã€ãæ§æããããŸãã ããŒã¿ã¯ã次ã®ã¿ã€ãã®ãããã³ã«ã䜿çšããŠããã©ã¬ã«ã€ã³ã¿ãŒãã§ã€ã¹ãŸãã¯SPIãä»ããŠãã£ã¹ãã¬ã€ãããªã¡ã¢ãªããã€ãåäœã§ã¹ããªãŒãã³ã°ããããšã«ããåºåãããŸãã
- Write_byteã³ãã³ããéä¿¡ããŸãïŒbyte_ordinates_on_displayïŒ
- 確èªãåä¿¡ããåŸãæ
å ±ãéä¿¡ã§ããŸã
- ããŒã¿ã¯ãé£ç¶ãããã€ãã¹ããªãŒã ã§ããããªã¡ã¢ãªã«è¡ããšã«é£ç¶ããŠéä¿¡ãããŸãã
ããã¹ãåºåã¯ãçå¹
ãã©ã³ãã§ã¯ãªããç°ãªããã©ã³ãã§è¡ãå¿
èŠããããŸãã
aïŒbïŒcïŒå³1.ãã£ã¹ãã¬ã€ã¢ãžã¥ãŒã«ã®èŠä»¶ãã©ã³ãå
ã®ãã¹ãŠã®æåã¯åãé«ãã§ããããã©ã³ãã¯åãè¡ã衚瀺ããããã»ã¹ã§ããªã³ã¶ãã©ã€ãã§å€æŽã§ããŸãã åæ§ã«ã屿§ã倿Žã§ããŸã-倪åãæäœãäžç·ã ãã©ã¡ãŒã¿ãŒãå¶åŸ¡ããã«ã¯ã esc-sequencesã䜿çšããŸã ãããã«ã¯ãå¶åŸ¡æåã\ nããæ¹è¡ãã€ãŸã 1è¡ã®ããã¹ãããã£ã¹ãã¬ã€ã®è€æ°ã®è¡ã«è¡šç€ºã§ããŸãã ããšãã°ãããã¹ãïŒ
"Text 1 \033[7m Text 2 \033[27m \033[1m Text 3 \033[21m \n Text 42"
å³1ïŒbïŒã®å³ã®ããã«è¡šç€ºãããŸã
ããã¹ãã¯ãå³1ïŒcïŒã®é·æ¹åœ¢ã§å²ãŸããé åã«è¡šç€ºããããªãã»ããx_shift
ã y_shift
æã€å ŽåããããŸãã åºåé åã®åº§æšã¯ãã¯ã»ã«åäœã§æå®ããã座æšã¯è² ã«ãªãå ŽåããããŸããããã¯ãåºåé åãè¶
ããããšãæå³ããŸãã åºåé åã®å¢çãè¶ããããã¹ãã¯åãåãããŸããå³1ïŒcïŒã
ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹-ãããã¿ã€ãã䜿çšããæ©èœ
void Out_text(int x0, int y0, int x1, int y1, int x_shift, int y_shift, char * Text);
éçºã®éå§ãããã¹ããããã¯ã®èªååºåã®èŠä»¶ã®ååŸ
ãªãŒãããã³ã®ã³ã³ãã€ã«ã¯ã æäœããã³å¶åŸ¡ãªãŒãããã³ãžã®åè§£ããå§ãŸããååž°çã«ç¹°ãè¿ãããšãã§ããŸããåæ®µéã§ãOAãäœã¬ãã« OAãšãã®UAã®ãã¢ã«åå²ã§ããŸãã
å³2.æ©æ¢°ã®æäœãšå¶åŸ¡ãžã®ååž°çåè§£åè§£ã¯ã解決ãããåé¡ã«ãšã£ãŠèªç¶ãªã¯ãã§ãããã®ããã«ã¯ãã¿ã¹ã¯ãæç¢ºã«æåãããã€ãŸããåé¡ã詳现ã«èª¿ã¹ãå¿
èŠããããŸã ã å€ãã®å Žåãå®è¡ããå¿
èŠãããããã»ã¹ã®æèœãªã€ã¡ãŒãžã¯ãäžè¬çãªæ¹æ³ã§åé¡ã®è§£æ±ºçãåŸãããšã«çžåœããŸããããã¯ãOAãéžæããå Žåã®æåã®ã»ãŒååã§ãã
æå³ã説æãããŠãã ããã åé¡ã®æ¡ä»¶ããæ¬¡ã®ããã«ãäžè¬çãªå Žåã®æåã®æåã·ãŒã±ã³ã¹ã¯æ¬¡ã®ããã«ãªããŸããText1 control1 Text2 control2 Text3 control3 Text4 control4 Text5 \ 0
ããã§ãescã·ãŒã±ã³ã¹ãæ¹è¡ãã¿ããå¶åŸ¡ããŸãã
ãã®å³ã§ããšã¹ã±ãŒãã·ãŒã±ã³ã¹ã§åºåãããã¢ããªã·ãã¯ããã¹ããããã¯ãããããšã確èªããããã«ã远å ã®äœæ¥ã¯å¿
èŠãããŸããã ãããã£ãŠãäžè¬çãªã¿ã¹ã¯ã¯ãå
ã®ã·ãŒã±ã³ã¹ããããã¯ã«åå²ããæ®µéãšããããã®ãããã¯ã®åºåã«åå²ãããŸãã
å³3.åæããŒãã£ã·ã§ã³ããã¯æãåçŽãªã±ãŒã¹ã§ãããå
ã®åé¡ã®ãã®ãããªå
èš³ã¯æããã§ããããä»ã®ã±ãŒã¹ã§ã¯ããã»ã©æçœã§ã¯ãªããããã·ãªãŒãºãã¯ãŒã¯ã·ã§ãããã§ã¯å
ã®åé¡ã®å®¢èгçãªèŠç¹ã«æ³šæãæããäŸã«ã€ããŠã¢ããã€ã¹ããŸãã
éèŠãªå Žæã¯éšåéã®éä¿¡ã§å ããããŠããŸããã¬ãã«ã®1ã€ã倿ŽããŠãä»ã®ã¬ãã«ã«åœ±é¿ãäžããªãããã«ã§ããå Žåãããã¯å€§ããªãã©ã¹ã«ãªããŸãã åããã¹ããããã¯ã¯ãããã¹ããããã¯x_block, y_block
ïŒåºåãŠã£ã³ããŠã«å¯ŸããïŒã®åº§æšã«ãã£ãŠç¹åŸŽä»ããããŸãã ãã©ã³ããšå±æ§ïŒå転ãŸãã¯éå転ãç¹æ»
ã倪åãæäœãäžç·ãªã©ïŒã¯å€æŽãããªãããããã¹ãŠã®ããã¹ããããã¯ã«äžèŠãªæ
å ±ãæäŸããã®ã§ã¯ãªãã屿§ã管çããããã®åå¥ã®ãã£ãã«ïŒ èªåããã¹ããããã¯åºåãã·ã³ã¡ãœããïŒãäœæããå¿
èŠããããŸãã ãã®ãããªåå²ã¹ããŒã ãšããŒãéã®éä¿¡ã«ãããæ®ãã®ããŒãã«è§Šããããšãªããããã¹ããããã¯åºåãã·ã³ã® OAãæã䟿å©ãªæ¹æ³ã§å®è£
ã§ããŸã ãããã¯ãOAãA1ãåè·¯ãšOAãA2ãåè·¯ã§ã¯ãäžè¬çãªåå²ã¹ããŒã ã¯åããŸãŸã§ãåãã
ãããã£ãŠã ããã¹ããããã¯ã®èªååºåã®èŠä»¶ã¯æ¬¡ã®ãšããã§ãã
ããã¹ããããã¯åºåæ©
ããã¹ããããã¯ã®èªååºåã®èŠä»¶ã¯ãã°ã©ãã£ã«ã«ã«è¡šãããšãã§ããŸãã
å³4.ããã¹ããããã¯ã®èªååºåã®èŠä»¶åããã¹ããããã¯ã«ã¯ãšã¹ã±ãŒãã·ãŒã±ã³ã¹ãå«ãŸããªããªããäœçœ®x_block, y_block
ãããããã¯ã®æ«å°ŸãŸãã¯ç»é¢ã®æ«å°ŸãŸã§ã®å€æŽãããŠããªã屿§ã§è¡šç€ºãããŸãã x_shift, y_shift
ã®å€ã¯ããããã¯ã®ã°ã«ãŒãå
šäœã®äœçœ®ã«åœ±é¿ããåäžã®ãããã¯ã衚瀺ãããšãã«ã¯ã x_block, y_block
å€ã§ãã§ã«è£æ£ãããŠããŸãã ããã¹ããããã¯ã®å³äžé
ã¯ãåºåãŠã£ã³ããŠã®å³äžé
ã«å¯ŸããŠã«ãŠã³ããããŸããé«ãã¯ãã©ã³ãã®é«ãã§ãããå¹
ã¯ããã¹ããå®å
šã«åãŸããªãå Žåã®ããã¹ããŸãã¯åºåãŠã£ã³ããŠã®å¹
ã§ãã
ããã»ã¹ãšããŠã®èªåèšèš
å³ã«ç€ºã 2åè§£ã®ååž°æ§ã¯ç¡æéã«ç¶ç¶ããŸããããã®å Žåããããã¯2ã€ã®ã¬ãã«ã®åè§£ã§ãã å€ãã®ã¿ã¹ã¯ã«ã¯ãåãã¬ãã«ã®ãã¢ããŸãã¯1ã€ã®ã¬ãã«ããããŸãã 倧ããªãã«ãã¹ããŒãžã¯ãã¢ãžã¥ãŒã«ã§ã¯ãªãã·ã¹ãã ã®ç¹æ§ã§ãã
ãã®åŸãåå²äžå¯èœãªOA + UAã®ãã¢ãäžäœã¬ãã«ã®ãã¢ãããã³OAããUAãžã®ããã ã¢ããã§çºçãããœãããŠã§ã¢å®è£
ã®è©³çްãªèª¿æ»ããããŸãã ããã¯éåžžãæäœã¬ãã«ãã¢ã¯ãã¥ãšãŒã¿ãŒã«çŽæ¥çµã³ä»ããããŠãããšããäºå®ã«ãã£ãŠæ±ºå®ãããŸããããã«ãããç¹å®ã®ãã¬ãŒã ã¯ãŒã¯ã«å
¥ãããããæäœãã®å¯èœæ§ãå¶éãããåæã«å¹çã®çšåºŠã決å®ãããŸãããããã¯ãåºç€ãšãªããªãŒãããã³ã®å®è£
ã«æºæ ããŠããŸãã èšåãããããã¬ãŒã ã¯ãŒã¯ãã¯ãéçºããã»ã¹äžã«ãã§ã«æããããŠãããæåã®åæããã³æ
éäžã«ããããã¯ãæŠäºã®é§ãã«ãã£ãŠé ãããŠããŸãã ããã¯ãåè¿°ã®ã鲿°Žãã«ã¯ããããã®åœ¹å²ãæããéšåéã®éä¿¡ã®éèŠæ§ã瀺ããŠããããã·ã³ã®ã¹ã¿ãã¯å
šäœã§ã¯ãªããåã
ã®ã¢ãžã¥ãŒã«ã®ã¿ã倿Žããããã«å¶éã§ããŸãã
åå²äžå¯èœãªOA + UAã®å埩ãã¢ã®èªåéçºã®ããã»ã¹ïŒ
å³5.èªåéçºã䜿çšããå埩ããã»ã¹ããŒã ãäœæ¥ããå€§èŠæš¡ãªãããžã§ã¯ããç¹°ãè¿ãéçºããŸãããã®åã圢æ
ã®åŽåçµç¹ã¯ãå人ã§ã®äœ¿çšã«é©ããŠããŸãã ãã®å Žåãç§ãã¡ã¯æç¶ãã«ã€ããŠè©±ããŠããŸããã åã
ã®å埩èšèšããã»ã¹ã¯ãçµæã亀æããŠå ±åããå¿
èŠãããåå è
ã®äŒè°ã®èšç»ãæå³ãããã®ã§ã¯ãªããéçºè
ã¯1人ã ãã§ãã å埩ã¯åãªãæèã®æµãã§ãã åã
ã®å埩èšèšããã»ã¹ã¯ãOAãšUAã®èšèšããã»ã¹ã§ãããåå埩ã¯OAã«ãã£ãŠãå®äºããããUAã«ãã£ãŠããã«ããããŸãã ç¹°ãè¿ãè¿°ã¹ãããã«ã广çãªèšèšã¯äž»ã«å¹æçãªOAã§ãããããéçºã¯ããããå§ãŸããŸãã
OAã¢ãã«ã®éžæ
OAã®éçºã¯æäœã¬ãã«ããå§ãŸããŸãã ããŒã¿ã¯éä¿¡ãã£ãã«ãä»ããŠãããªã¡ã¢ãªã®ãã€ãåäœã®ã¹ããªãŒãã³ã°ãã¹ããªãŒãã³ã°ããããšã«ãããã£ã¹ãã¬ã€ã«åºåããããããåæåïŒã°ãªããã°ãªã¹ïŒã®ããã£ã³ã¬ãŒããªã³ãããé
眮ãããããã¹ããããã¯å
šäœã衚瀺ãããåŸãã©ã€ã³ãããã¡ãŒã®å
容ããã£ã¹ãã¬ã€ã«ãããããããäžéã©ã€ã³ãããã¡ãŒã䜿çšããããšããå§ãããŸããã€ãã¹ããªãŒã ãããã¹ãã®å¹
å
šäœã«ãããæ°Žå¹³ç·ãé«ã1ãã¯ã»ã«ã
å³6.ã©ã€ã³ãããã¡ãããããªã¡ã¢ãªãžã®ã¹ããªãŒãã³ã°åºåã®é·ãã©ã€ã³ãäžè¬çãªåºååè·¯ã¯æ¬¡ã®ããã«ãªããŸãã
å³7.äžè¬çãªåºåã¢ãã«A2ã®å®è£
ïŒäžè¬çãªåºåã¢ãã«ãåãã§ããããšãæãåºããŸããå³3ïŒãã©ã€ã³ãããã¡ãŒã«åºåããããã®æäœãã·ã³ã¯éåžžã«æ®éçã§ããããã®ãããä»»æã®ãã¯ã»ã«è»¢éã®äœå¹çOAã§ãã ãã®ãªãã·ã§ã³ã®åŸªç°æ¶è²»éã¯
OïŒW * HïŒã§ãã ã·ã³ãã«ã®é¢ç©ã«æ¯äŸããŸãã
å³8.ä»»æã®ãã¯ã»ã«è»¢éçšã®æäœãã·ã³ããããã髿§èœOAãååŸããæ¹æ³ã¯ïŒ èªç¶ãªè§£æ±ºçã¯ãããããã°ã«ãŒãã§äžåºŠã«è»¢éããããšã§ãã æçŽã®é·æ¹åœ¢é
åå
šäœãæåãžã§ãã¬ãŒã¿ãŒããã©ã€ã³ãããã¡ãŒã«ããã«ã³ããŒããæäœã§æåã転éããã®ãæé©ã§ãããã®ãªãã·ã§ã³ã®åšæçãªæ¶è²»ã¯OïŒ1ïŒã«æ¯äŸããŸãã ãã ãããã®ãããªããŒã ã¯ãããŸããã æåãæååãããã¡ãŒã«1è¡ãã€ã³ããŒããã®ãæãå¹ççãªæ¹æ³ã§ãã
å³9. A1ã®OAã®åºç€ãšãªãæé©ãªè»¢éãã¿ãŒã³æåãžã§ãã¬ãŒã¿ãŒããã®ã·ã³ãã«ã®è¡ããšã®åºåã¯æè¡çãªè§£æ±ºçNo.1ã§ãããå°æ¥ã®å¹çã®åºç€ãæäŸããæåã®æšå®ããã§ã«è¡ãããšãã§ããŸãïŒãã®ãªãã·ã§ã³ã®åŸªç°æ¶è²»ã¯ã OïŒHïŒã·ã³ãã«ã®è¡æ°ã«æ¯äŸããŸãã 14ã
ãã¯ã»ã«åäœã®æåã®å¹
ã¯ãã€ãã®å¹
ã«æ¯äŸãããããã¹ããããã¯èªäœã¯ãã€ãã®å¢çããéå§ããªãå Žåãããããšã«æ³šæããŠãã ããã ãã®å Žåããã€ããã£ã©ã¯ã¿ãŒãžã§ãã¬ãŒã¿ãŒã®å
容ããã€ãã«ã³ããŒããããšã¯ã§ããŸãããåã·ã³ãã«ã©ã€ã³ã®äºåã·ãããå¿
èŠã§ãã
å³10.ã©ã€ã³ãããã¡ãŒã«åºåããåã«ã°ãªããã·ããããå¿
èŠæ§ã®èª¬æã€ã©ã¹ããã å³10ã¯ãã©ã€ã³ãããã¡ã®ãã€ãå
ã®åæåã«è€æ°ã®æåãå«ãŸããããšãããããšã瀺ããŠããŸãã 1ãã€ãã«å«ãŸããè€æ°ã®æåãäºãã«äžæžããããªãããã«ãã·ããã¬ãžã¹ã¿ã®ããŒã¿ã¯ã³ããŒãããŸãããã ãŸãã¯ã«ãã£ãŠéç³ãããŸãã ãã ãããã®æäœã«ã¯äºåãããã¡ã¯ãªãŒãã³ã°ãå¿
èŠã§ãããããã¯ãªãŒããŒãããã«å€æãããŸããããã¯äžè¬ã«ãã€ãåäœã®ã©ã€ã³ãããã¡ã®ãµã€ãºã«æ¯äŸãããã®ãµã€ãºã¯ãã©ã³ãã®è¡æ°ã«æ¯äŸããŸãã å³ 11ã¯ãã®é¢ä¿ã確èªããŸã
å³11.ã©ã€ã³ãããã¡ãŒãã¯ãªãŒãã³ã°ãããªãã·ã§ã³ã®å Žåããã©ã³ãã®è¡æ°ã«å¯Ÿããç·ãªãŒããŒãããã®äŸåæ§äžéçµæãèŠçŽãããšãäœæ¥ã¹ããŒã ã¯æ¬¡ã®ãšããã§ãã
- æåãžã§ãã¬ãŒã¿ããã®ããŒã¿ã¯ã·ããã¬ãžã¹ã¿ã«ã³ããŒãããŸã-å埩ããšã«1è¡ã®æåã
- ããã§ããããã¯
Current_shift
ãã¯ã»ã«ã ãã·ããããCurrent_shift
- æ¢ã«ã·ãããããã¬ãžã¹ã¿ã®å
容ã¯ã
Current_byte
ãã€ã³ã¿ãŒã«ãã£ãŠã¢ãã¬ã¹æå®ãããã©ã€ã³ãããã¡ãŒã®ç¹å®ã®ã»ã¯ã·ã§ã³ã®äžãŸãã¯äžã«ã¹ãŒããŒã€ã³ããŒãºãããŸãã - ã©ã€ã³ãããã¡ã¯äºåã«ã¯ãªã¢ããå¿
èŠããããŸãã
- ããã¯ã·ã³ãã«ã®ãã¹ãŠã®è¡ã«å¯ŸããŠç¹°ãè¿ããããã®åŸã
Current_shift
ãšCurrent_byte
äž¡æ¹ãåŒã«ãã£ãŠå¢å ããŸãã
ãã©ãŒãã¥ã©1 Current_byte = (Current_byte + (Current_shift + Width)) >> 3; Current_shift = (Current_shift + Width) & 0x7;
å³12. OAããã¹ããããã¯åºåã®åºæ¬ã¢ãã«ç¹ã«åŒïŒ1ïŒããã Current_shift
倿°ïŒã·ããå€ïŒã®7ã€ã®äœçœ®ãæå€§å€ã§ããã倧ããªå€ã«ããã·ããã¯ã¢ãžã¥ã©ã¹8ã«ãã£ãŠå¶éãããŸããããšãã°ã12ãããã¯4ãã¯ã»ã«ã®ã·ããã«å€ããã1ãã€ãã§ã·ããã¬ãžã¹ã¿ãã¢ã³ããŒãããŸããå³ãžã
å³13. 7ãæ³ãšããããæå¶éããã¯æºå段éã®å埩ã§ãããéèŠãªæŠç¥ç決å®ã®éžæã§ããã ãã®å®æœåœ¢æ
ã§ã¯ãåäœããŠãã解決çèªäœãææ¡ãããããåé¡ã®ç¶æ
ã®å®¢èгçãªç»åãããããåŠçãããªãã¬ãŒãã£ã³ã°ãã·ã³ã瀺åããããªãå Žåãããã ãã®å Žåãåé¡ã®æ¡ä»¶ãæ°åŠçåŠçã«ãããå
ã®åé¡ã解決ããã®ã§ã¯ãªããæ°åŠçã«åäžã§ããããã䟿å©ã«ããããšãã§ããŸãïŒãããªãèšäºã§ãããäŸã§èª¬æããŸãïŒã æ·±å»ãªã¿ã¹ã¯ã®å Žåã¯ãããã€ãã®è§£æ±ºçãæ€èšããé床ããã®ä»ã®ãªãœãŒã¹ã³ã¹ãã®æè¡çãªèŠç©ãããè¡ãå¿
èŠããããŸãããã®ããã説æãããŠããæé ã«æ²¿ã£ãŠããã«1åãŸãã¯2åã®å埩ãå®è¡ããå¿
èŠããããŸãã ãããã«ããããã®ã¢ãããŒãã«ããã蚱容ã§ããæéã«æé©ãªãœãªã¥ãŒã·ã§ã³ãéžæããããšãã§ããŸãã
éžæãããæŠç¥ç決å®ã«åºã¥ããŠãOAãéçºãããŠããŸãã OAã§ã¯ãããŒã¿ã®çŽæ¥çãªè»¢éãšå€æã«äŒŽããã¹ãŠã®ããšãé²è¡äžã§ãããOAã§ã¯ãOAãæ©èœããããã«å¿
èŠãªãã®ãé²è¡äžã§ãã
ç¹°ãè¿ã1.ãœãŒã¹OA
ãªãã¬ãŒãã£ã³ã°ãã·ã³ã¯å補åã§ãããæå¹ãªãã©ã¡ãŒã¿ãŒã䜿çšããŠå¿
èŠãªæäœãæé©ã«å®è¡ããŸãã ãã®å ŽåãUAã¯OAã®ãã©ã¡ãŒã¿ãŒåãšèµ·åã§ãã ãã®æ§é ã¯é«ãæè»æ§ãæäŸããç¹ã«ãOAèªäœãCurrent_shift
ããã³Current_byte
å
容ã倿ŽããªãããšãCurrent_byte
ãŸãã äžèšã®ãã¹ãŠã®æäœãå®è¡ããããã®æ¢è£œã®ãã©ã¡ãŒã¿ãŒã»ãããåãåããŸãã å¿
èŠãªä»ã®ãã©ã¡ãŒã¿ãŒãèŠã€ããããã«ãOAãã©ã®ããã«æ©èœããããèããŠã¿ãŸãããã äžèšã§ã¯ãã¢ãã«åãããŠããçŸè±¡ãèŠèŠçã«è¡šçŸããããšã®éèŠæ§ã«ã€ããŠãã§ã«æžããŠããŸãã çæ³çãªã±ãŒã¹ã ãã§ãªããå¢çæ¡ä»¶ã«é¢é£ä»ããããã䟿å©ã§ã¯ãªãããªãã·ã§ã³ãæåããããšãéèŠã§ããããšãä»ãå ããŠãã ããã ããã¯ããããã以åã«éçºããããã¹ãŠã®ããã®åŸã®å€æŽã䌎ãã誀ã£ã決å®ãåé¿ããã®ã«åœ¹ç«ã¡ãŸãã ããã¯å¿ççã«å°é£ãªç¬éã§ãããããç§ã¯ããã«çŠç¹ãåœãŠãŠããŸã-ããªãã®ä»äºãè€éã«ãããã®ããã«ãæãé£ããåŽé¢ããã·ãã¥ã¬ãŒããããçŸè±¡ãæãããšã§ãã ãã ãã 解決ããåé¡ã®è€éãã¯å®¢èгçãªãã®ã§ãããäžå¿«ãªç¬éã«ç®ãã€ã¶ã£ãŠãããã©ããã«äŸåããã圱é¿ãäžããããšãã§ããå¯äžã®ããšã¯ãã®åé¡ã解決ããè€éãã§ãããæåã«ã©ãã ãé£ãããã解決ãããœãªã¥ãŒã·ã§ã³ãæ¢ããŠããå Žåã¯æå°éã«æããããŸãç¬éã«çŽé¢ããå¿
èŠããããŸãã ãã®ã¢ãããŒãã¯ãããã°ã©ã ã®éçºã³ã¹ãããããã°æ®µéïŒå®è£
ããã倿°ã®ã¢ãžã¥ãŒã«ãåŠçããå ŽåïŒããèšè𿮵éïŒç©ºçœã®ãã£ã³ãã¹ãåŠçããå ŽåïŒã«ã·ããããŸãã
ãã¹ãŠã®æåã®å¹
ã¯ç°ãªãããããã©ã¡ãŒã¿ãå¿
èŠã§ããåæååã«ããŒããããã€ãæ°ïŒ
å³14. bytes_For_loadãã©ã¡ãŒã¿ãŒããŒãåŸãã·ã³ãã«ã®åè¡ãã·ããããå¿
èŠããããŸãã ã·ããã¯ãããŸããŸãªæ¹æ³ã§ããŸããŸãªãã€ã¯ãã³ã³ãããŒã©ãŒã«å¯ŸããŠçºçããããšã«æ³šæããŠãã ããã ARMã«ã¯ã1ãµã€ã¯ã«ã§æå€§32ãããå¹
ã®ãããåäœã§ã·ããããããã®å¹æçãªã¡ã«ããºã ãããããã®ãããªã·ããã¯ãç®è¡ãªã©ã®ä»ã®ã³ãã³ãã®ãªãã·ã§ã³ãšããŠåçŽã«è¿œå ã§ããŸãã msp430ã®å Žåãæé©ãªã·ããã³ãã³ãã¯äœçœ®ããšã«16ãããã§ãã ãã ããäžè¬çãªã¹ããŒã ã¯ãããã倿ŽãããŸããã1æ¡ã·ããããããã»ããµãŒïŒmsp430ïŒã«ã€ããŠã¯ãã¢ã»ã³ãã©ãŒã®æ¿å
¥ãä»ããããå¹ççãªã·ããã¹ããŒã ã§ããã転éãã©ã°ã«ããã·ãããã³ãã³ãã䜿çšã§ããŸãã æ¥µç«¯ãªãªãã·ã§ã³ãšããŠïŒããã¯ãã£ã¹ãã¬ã€ã ãã§ãªããäžè¬çã«ç°ãªãOAã«ãåœãŠã¯ãŸããŸãïŒãæ¯èŒçåçŽãªã³ãŒããã¢ã»ã³ãã©ãŒåœä»€ã®é
åã«ãããã€ãããã¯ãã¢ã»ã³ãã©ãŒã§OAãæžãããšãã§ããŸãã ããããã¢ã»ã³ãã©ãŒã®å®è£
ã¯å¿
èŠãããŸãããå¿
èŠã«å¿ããŠã远å ã®ãåãæããã衚瀺ãã¢ãžã¥ãŒã«ãæ¹åããæ¹æ³ãããããšã瀺ãããã«ãããèšåããŸããã åæã«ãUAã¯åã®èšäºã§èª¬æããOAããã³UAãã¡ããªã®æŠå¿µã®äžéšã§ãããããUAã倿Žããå¿
èŠã¯ãããŸããã

å³15. OAããã³UAãã¡ããªãŒæéãçµã€ã«ã€ããŠããªãã¬ãŒãã£ã³ã°ãã·ã³ãã¡ããªã«ã¯ããŸããŸãªãã·ã³ãè£å
ããããããã®éã§å¹æçãªåèªåæ€çŽ¢ã䜿çšã§ããããã«ãªãã䟿å©ãªéçºããŒã«ã«ãªããŸãã ããããã¡ãªã¿ã«ããã®äŸã§ã¯ããæåãèªåèšèšã®å Žåã OAããã³UA ãã¡ããªã¯å¿
èŠãªããããéžæãããªãã·ã§ã³ã®1ã€ã«çŠç¹ãåœãŠãŸãã
è¡å
ã®ãã¹ãŠã®ãã€ããã·ããããå¿
èŠããããŸãã ã·ããã®äœçœ®ã®æ°ãæå°ã«ãªãããã«ã·ããã®æ¹åããšãããšã¯è«ççã§ãããå®éã®çµéšã§ã¯ãæäœã®å®è£
ã®åäžæ§ã¯ããªã䟡å€ããããšèšãããŠãããããå³ã«ã·ãããããªãã·ã§ã³ãèæ
®ãããå®éã«ããçãæéã§å®è¡ãããããã«ãã§ã«å®è£
ã§ããŸãåŽã
ããçšåºŠã®ã·ããããããšãããŒãããå¿
èŠããããã€ãæ°ãšæ¯èŒããŠãã·ããããå¿
èŠããããã€ãæ°ããã1ãã€ãå¢ããå¯èœæ§ããããŸãã
å³16. bytes_For_shiftãã©ã¡ãŒã¿ãŒã·ããã®åŸãã·ããã¬ãžã¹ã¿ã®å
容ãã©ã€ã³ãããã¡ã«ã¹ããŒãããŸãã äžèŠãåºåã®ãã€ãæ°ã¯ã·ããã®ãã€ãæ°ãšäžèŽããå¿
èŠããããŸããããã®æåã®å·Šç«¯ã®ãã¯ã»ã«ãç»é¢ã®ç«¯ã®å·ŠåŽã«ãããšæ³åãããšãåºåã®ãã€ãæ°ã¯ã·ããã®ãã€ãæ°ãšäžèŽããŸããã
å³17. bytes_For_outãã©ã¡ãŒã¿ãŒãããã£ãŠãOAã®äžè¬çãªæŠèŠã¯æ¬¡ã®ããã«ãªããŸãã
class tShift_buffer { public: void Load (u1x *Source, int Bytes_amount); void Shift(int Bits_amount, int Bytes_amount); void Out (u1x *Destination, int Bytes_amount); };
æããã«ããã®OAã®æå¹æ§ã¯ãã·ããã¬ãžã¹ã¿ã䜿çšããæäœã®å®è£
æ¹æ³ã«çŽæ¥äŸåããŸãã ããã«ããã«ã€ããŠã¯ãåœåã®éããããã广çã«å®çŸããã®ã«è€éãªããšã¯äœããªãããã§ãã
ããã§ãå¶åŸ¡ãã·ã³ã®ã¢ãã«ã®ã³ã³ãã€ã«ãéå§ã§ããŸãã OAãããã«è©³ãã説æãããšãè¡ãè©°ãŸãã«ã€ãªããå¯èœæ§ããããŸãã ããã¯ãéåžžã«å¹æçãªOAãéžæãããšãUAã§æ³å€ãªãªãŒããŒããããçºçããããã«å¿ããŠã¹ããŒã å
šäœãéå¹çã«ãªãå¯èœæ§ãããããã§ãã ããã«ãæ¢è£œã®OAã¹ããŒã ãéçºããAAã¢ãã«ããæã£ãŠããªãå Žåããã®ã¢ãã«ã念é ã«çœ®ããŠããå¿
èŠããããŸããããã¯ãå®è¡ã§ããªãç«¶åããèŠä»¶ã«ã€ãªããå¯èœæ§ããããŸãã æåŸã«ãæãéèŠãªããšã¯ãåã®ãªã¹ãããOAã¢ãã«ãã©ã®çšåºŠé©åã§ããããçè§£ããã«ã¯ãããã°é³¥ã®é£ç¿ã®é«ãããããã»ã¹å
šäœãèŠãå¿
èŠããããšããããšã§ãã
å埩1.ãœãŒã¹UA
ãã®ãããAAã®åæå®è£
ãå¿
èŠã§ããããã«ãããOAã®è©³çްãèæ
®ããUAã®èгç¹ãããããäœãããããããè©³çŽ°ã«æ€èšããããšãã§ããŸãã UAã®éçºã¯ãæåã®ãã®ã2çªç®ã®ãã©ã¡ãŒã¿ãŒã管çãããšããäºå®ã«ãããOAã®éçºãšåãé¢ããŸããã UAãéçºãããšããOAãšãã®ãã©ã¡ãŒã¿ãŒã®èª¬æããããŸããããéã«ããããã®ãã©ã¡ãŒã¿ãŒãšãã®åæå€ã®èšç®ã远å ããŸãã
å³18. OAãšAAã®å¯æ¥ãªé¢ä¿ãããã£ãŠãåæåãããŠããªããã©ã¡ãŒã¿ãŒãUAã®å¶åŸ¡ãªãã«ãã©ã¡ãŒã¿ãŒã远跡ãããªãããã«ãããã©ã¡ãŒã¿ãŒã®æ°ã枬å®å€ãè¶
ããŠå€§ãããªããªãããã«ããããšããå§ãããŸãã
衚1. OAã®ãã©ã¡ãŒã¿ãŒ
å¯å€ãã©ã¡ãŒã¿ãŒ | åŒ |
å¹
| ãã£ã©ã¯ã¿ãŒãžã§ãã¬ãŒã¿ãŒããã®èªã¿èŸŒã¿ |
current_byteãcurrent_shift | current_byte =ïŒcurrent_byte +ïŒcurrent_shift + widthïŒïŒ>> 3; current_shift =ïŒcurrent_shift + widthïŒïŒ0x7; current_byte 0 = 0; current_ shift 0 = x_blockïŒ0x7; |
bytes_for_loadãbytes_for_shiftãbytes_for_out | ããã«å®çŸ© |
ãã®ãããªããŒãã«ã¯ãæ©æ¢°ããã©ããäžã§è£å©çãªãã®ãšããŠã³ã³ãã€ã«ããããšãã«æ§ç¯ãããŸãã ãã ããåã®èšäºã®ã Looking to the Future ãã®ç« ã§èª¬æãããŠãããäžè¬åããããŠãããŒãµã«ãªãŒãããã³ãã³ãã¬ãŒããã®ç·šéã«æ»ããšããã®ãããªããŒãã«ã䜿çšããŠãUAãšOAãçžäºãšã¯ã¹ããŒã/ãããªãã¯ã¢ããŠã³ã¹ã®åœ¢ã§èª¬æããããããæ¥ç¶ããããšãã§ããŸãããã¯ãã³ã³ãã¥ãŒã¿ãŒæ¯æŽèšèšã·ã¹ãã ã§äœ¿çšããããã©ã¡ãŒã¿ãŒã®ã»ãããšäžèŽããŸãã
UAã®è©Šçšçã
äœçœ®0ããå§ãŸãç¡éã«é·ãè¡ãããã¡ãŒã«ç¡éã®ããã¹ãã衚瀺ããå ŽåãUAã¯æ¬¡ã®ããã«ãªããŸãã
uchar * Text; uchar String_buffer[y_string][x_max ];
ãã ããæéã®é·ãã®å®éã®ããã¹ããåŠçããŠãããããã«ãåºåãŠã£ã³ããŠã«å¯ŸããŠåæã·ãããããããã®ããã¹ãã¯ãäžäžãå·Šå³ã®äž¡æ¹ã§åºåãŠã£ã³ããŠã«åãŸããªãå ŽåããããŸããããã¹ããåºåãŠã£ã³ããŠã®äžãŸãã¯äžã®ç«¯ãè¶
ããŠåºããå Žåãäžãšäžããã®å¶éãèæ
®ããããšã¯ãå³ãšå·Šãããããç°¡åãªã®ã§ãããããå§ããŸããæåã®é«ããåºåã¹ããªãããããåºãå Žåããããã¹ãã®æåã®ã·ããã«ãããããã¹ãã®äžéšãäžãäžããŸãã¯ããäžãšäžã«è¡šç€ºãããå ŽåããããŸããå³19.瞊é·ã®ããã¹ãã®ããªãšãŒã·ã§ã³OAã®èгç¹ããèŠããšããã®åäœã¯åçŽã«å®è£
ãããŠããŸããè¡ãåæãããåçŽåšæãã®ãªã¹ãã«å€æŽåå0
ã¢ããHeight
ããã«ã¯ãç·ãçµãŠStart_line
ãŸã§End_line
ã©ãStart_line
-ãããã¡ã«å
¥ãäžæ®µçªå·ã°ãªããEnd_line
-ã®ç¯å²ã«è©²åœããªãæåã®è¡çªå·ïŒäžïŒã®å€ãæ€çŽ¢ããŸãããã€ãŸãããããã¡ã«å®å
šã«åãŸã6x9æåã®å Žåã§ãEnd_line = 9
ã
æåã«æ±ºå®Start_line
if(y_block < y0) { Start_line = y0 - y_block; } else { Start_line = 0; } if( Start_line >= Height)
End_line
å€ã«åºã¥ããŠæ€çŽ¢ãããŸãStart_line
ã if( (y1 â y_block) >= Height) { End_line = Height; } else { End_line = y1 â y_block; }
ããã¹ããåºåãŠã£ã³ããŠã®ç«¯ãè¶ããŠå³ãŸãã¯å·Šã«äŒžã³ãå Žåãæ°Žå¹³ã¯ãåã®ãã€ãã°ã«ãŒãåã«ããè€éã§ãããããã¯ã®å§ãŸãã®åº§æšx_block
ãå€ã¯x_shift
è£æ£ãããŸããããããæãåºãããšã¯ã§ããŸããã
20.x_block > x0
, , , , â . x_block < x0
-, . . 20, . , Left_shift
, .
« » . 21ã
21. .Left_shift
, ( 1 ). .
, ( 2 ). ( 3 ), 2 ( ) , 3 . , â . , , .
, 2 3 .
22., 2, 2', 3 3' . , , . , . , . ( ) .
1. .
|
|
left_shift | if ( x _ block >= x 0) left _ shift = 0; else { left _ shift = x 0 â x _ block ; x _ block = x 0; } |
, , . 23
23.åè¿°ããããã«ãç¶æ
å³ã¯ããªãŒãããã³ã®èšè¿°ã«å ããŠãã°ã©ãå³ã®ä»£æ¿ã¢ã«ãŽãªãºã ã§ããã¢ã«ãŽãªãºã ãèšè¿°ããããã®ã¹ããŒã ã§ããããŸãããã®äžã§ãåã«ãœãããŠã§ã¢ã®å®è£
ãè¡ãããšãã§ããŸããè²ã¯ãç¶æ
ã«å¯Ÿå¿ããããã°ã©ã ããã¹ãã匷調衚瀺ããŸãã
ãªã¹ã1. UAãã¬ãŒã ã¯ãŒã¯ã ãã©ã¡ãŒã¿ãŒLine_width
ã¯ãåºåãŠã£ã³ããŠã®æåŸã«å°éãããã©ããã瀺ããŸã衚1. OAæäœã®ãã©ã¡ãŒã¿ãŒãç¶ç¶å¯å€ãã©ã¡ãŒã¿ãŒ | åŒ |
line_width | line _ width = line _ width - width ; line _ width 0 = x 1 -x _ block ; |
ã³ãããã®äœæããã¯ãŸã åäœäžã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãããŸãããOAã®ä»£ããã«ããããã°ã¡ã¢ã«è¡šç€ºãããã¹ã¿ãïŒã·ã³ãã«ãå¹
ãåé¡ïŒ2.2aã3.3aïŒïŒã䜿çšãããŸããã¿ã€ã2 / 2aæåã®å Žåããªãã»ããå€ã衚瀺ãããŸãLeft_shift
ãç¶æ³ã¯äžè¬çã«æããã§ããæ¬¡ã®ã¿ã¹ã¯ã¯ãæåã®è¿äŒŒãšããŠãOAäœæ¥ã¢ãžã¥ãŒã«ãååŸããããšã§ãã
ç¹°ãè¿ã2. OA
3ã€ã®ã¿ã€ã1ã2ã3ã®ã·ã³ãã«ãš2ã€ã®ãµãã¿ã€ã2 'ã3'ããããŸããåºåã®ã¿ã€ãããšã«å°çšã®OAã䜿çšããããšã¯è«ççã§ãã
æåãå®å
šã«åºåãŠã£ã³ããŠã«åãŸããªãã
å·Šã·ããã®ããã«è¡šç€ºé åã«å®å
šã«åãŸããªãã£ãæåã¯ãå³ã®çªå·1ã§ç€ºãããŸãã衚瀺é åã«åãŸããªããã¹ãŠã®æåããã¹ã¯ããŒã«ãããã ãã§ãåŠçãæãç°¡åã§ãã
åºåãŠã£ã³ããŠå
šäœã«é
眮ãããæåãã¿ã€ã3ã¯ããã§ã«èª¬æããã¡ã€ã³ãã£ã©ã¯ã¿ãŒã¿ã€ãã§ãããã®åŠçããŒãºãã©ã¡ãŒã¿ã®Current_byte
ïŒåã®ã·ã³ãã«ããç¥ãããŠããïŒCurrent_shift
ïŒåã®æåããç¥ãããŠããŸãïŒbytes_For_load, bytes_For_shift, bytes_For_out
ãå³24.æåãã©ã¡ãŒã¿ãŒã¿ã€ã3å®éã®èšç®ã¯ä»£æ°ãªã³ã°ã§è¡ãããããããšããžå¹æã¯é¿ããããŸããã
å³25. ã¿ã€ã3ã®ãã©ã¡ãŒã¿ãŒèšç®ã®èª¬æå³ã®å³ã䜿çšããŸãã25ãã©ã¡ãŒã¿ã®èšç®åŒã¯ç°¡åã«å®åŒåã§ããŸãã
bytes_For_load = (Width + 7) >> 3; bytes_For_shift = (Width + Current_shift + 7) >> 3; bytes_For_out = bytes_For_shift; Current_shift_next = (Current_shift + Width) & 0x7; Current_byte_next = Current_byte + ( (Current_shift + Width) >> 3 );
å³åŽã«ã®ã¿è¡šç€ºãããèšå·ãaïŒbïŒå³26.æåãã©ã¡ãŒã¿ãŒã¿ã€ã3a䟡å€
ããã¯æ®ãã®è¡ã§ã Line_widthã€ãã³ããçºçããæç¹ã§ãåºåãŠã£ã³ããŠã®å¢çã«éããŸãããã€ãŸããã¿ã€ã3aã·ã³ãã«ã¯ç»é¢å
šäœã«åãŸããŸããã(Line_width<Width) ã
ã·ã³ãã«ã®ãå³åŽãã¯ãããããã¢ãŠããããŸãããããã£ãŠãã¿ã€ã3aã®ã±ãŒã¹ã¯ã¿ã€ã3ã®ã±ãŒã¹ã«çž®å°ãããã·ã³ãã«ã®å¹
ã眮ãæããããŸããWidthã®å€Line_widthLimit ã
ãã ãããtrueãã¿ã€ã3ãšã¯ç°ãªããæåãžã§ãã¬ãŒã¿ãŒã®ã°ãªãã«ã¯ãå³ãããå³ã«ãã¯ã»ã«ãå«ãŸããŠããŸãLine_width ãããã£ãŠããã¯ã»ã«ã¯æåã®å³ãã€ãã®å³åŽã«å®çŸ©ãããŸãx1
ãããã¯ãåºåãŠã£ã³ããŠã®åº§æšã«ãã£ãŠæ±ºãŸããŸãããããŠãéå»ã®å Žåãšåæ§ã«ã代æ°ãªã³ã°ãæ±ã£ãŠããŸãããã®ã±ãŒã¹ã¯åã®ã±ãŒã¹ã«èŠçŽãããã®ã§ãäžè¬ã«ã以äžã®å³ã¯å¿
èŠãããŸãããããã®å©ãã«ãããäºæããªãççŸãåé¿ã§ããŸããå³27. ã¿ã€ã3aã®ãã©ã¡ãŒã¿ãŒèšç®ã®èª¬æ Width = Line_width; bytes_For_load = (Width + 7) >> 3; bytes_For_shift = (Width + Current_shift + 7) >> 3; bytes_For_out = bytes_For_shift; Right_mask = sb_Right_mask[ (Current_shift + Width) & 0x7]; Current_shift_next = (Current_shift + Width) & 0x7; Current_byte_next = Current_byte + ( (Current_shift + Width) >> 3 );
å·Šã«çªãåºãŠããèšå·ãã¿ã€ã2ã¯ãéšåçã«ãã£ã¹ãã¬ã€ãŠã£ã³ããŠã®å¢çãè¶ããå Žåããããå·ŠåŽããã£ã¹ãã¬ã€ã«è¡šç€ºãããªãå ŽåããããŸããå³28.ã·ã³ãã«ã¿ã€ã2åºåãŠã£ã³ããŠã®å¢çãè¶ããŠå·Šãžã®ãã£ã©ã¯ã¿ãŒã®åºå£ã®ã·ãã¥ã¬ãŒã·ã§ã³ã¯ãæ°ããããŒãããããã£ã©ã¯ã¿ãŒãLeft_shift
ãã¯ã»ã«åäœã§å·Šã«ã·ãããããããCurrent_shift
å³ã«ç§»åããããšã§å®çŸã§ããŸãã
29. 2 ., , , . ( , «» ).
Result_shift = Current_shift - Left_shift;
, Current_shift
30. 2 .8 (5+3) 2 (5-3) . msp430. ARM7 ( ) , .
1. .
|
|
result_shift | result_shift = current_shift â left_shift; |
31. 2Result_shift
, 3 , Current_shift
Result_shift
, , Current_shift
.
, . . 32 .
32. 2, Left_shift
, Current_shift
7 ( Width
). , , () , LS = 10..12 , , . Left_mask
, LS = 8,9 , 0..7, , , . First_byte_gen
â , , . Left_shift
8. Left_shift
7 .
33. Left_shift., Result_shift
, , . ( 7 ) . . 34, , .
34. ., Result_shift
. , 1 .
, , : -2 6. , â 5 2 . Current_shift = 0
,
2. Left_shift
left_shift & 0x7 | result_shift |
32 | 3 3 |
0 | 0 | 0 |
1 | -1 | 7 |
2 | -2 | 6 |
3 | -3 | 5 |
4 | -4 | 4 |
5 | -5 | 3 |
6 | -6 | 2 |
7 | -7 | 1 |
, Left_shift & 0x7
Current_shift
0..7 Result_shift
( )
3. â 2
. 33. | . 34. |
|RSi| | p | RSi | p |
0 | 0.125 | 0 | 0.125 |
1 | 0.21875 | 1 | 0.125 |
2 | 0.1875 | 2 | 0.125 |
3 | 0.15625 | 3 | 0.125 |
4 | 0.125 | 4 | 0.125 |
5 | 0.09375 | 5 | 0.125 |
6 | 0.0625 | 6 | 0.125 |
7 | 0.03125 | 7 | 0.125 |
â Pi * |RSi| 3.625 |
â Pi * RSi 4.5 |
, . . 34 25%, , , .
? , . 34. , , , , .
:
Current_shift = x_block & 0x7; First_byte_gen = Left_shift >> 3; int Corrected_Left_shift = Left_shift & 0x7; Left_mask = sb_Left_mask[Current_shift];
å·Šå³ã«çªãåºãŠããã·ã³ãã«æãè€éãªã±ãŒã¹ãã±ãŒã¹2ãš3aãçµã¿åãããŠããããã§ããaïŒbïŒã¯ãæåã«ã€ããŠã¯ãå³35ã®ãã©ã¡ãŒã¿ã¿ã€ã2Aãã·ã³ãã«ã¿ã€ã2aã¯ãã¿ã€ã2ã®å€æŽãããã±ãŒã¹ã§ãã·ã³ãã«ã®å·Šå³ã®éšåããããããã¢ãŠããããŸãã
äŸ¡å€ Line_widthLimitããã¯æ®ãã®è¡ã§ã Line_widthã€ãã³ããçºçããæç¹ã§ãåºåãŠã£ã³ããŠã®å¢çã«å°éããŸãã3 / 3aãã¢ã®å Žåã®ããã«ãã¿ã€ã2aã¯ã¿ã€ã2ã«æžå°ããæåå¹
ã眮ãæããããŸãWidth)ã®å€ã«Line_widthLimit ã , «» 2 , Line_width, , x1
. , . . 36 .
36. 2
Width = Line_width; Current_shift = x_block & 0x7; First_byte_gen = Left_shift >> 3; int Corrected_Left_shift = Left_shift & 0x7; Left_mask = sb_Left_mask[Current_shift]; Right_mask = sb_Right_mask[ (Current_shift + Width) & 0x7]; if(Corrected_Left_shift <= Current_shift )
., , . , , . . 37ã
å³37.ãããªã¡ã¢ãªãšã©ã€ã³ãããã¡ãŒã®ãã€ãã®åº§æšã®å¯Ÿå¿ãããªã¡ã¢ãªå
ã®ãŠã£ã³ããŠã®å·Šç«¯ã®æ°Žå¹³ãã€ãã€ã³ããã¯ã¹ã¯ãåŒã«ãã£ãŠæ±ºå®ãããŸã
Left_screen_byte = x_block >> 3;
æååãããã¡ãŒã§ã¯ããã®ãã€ãã¯åæå€ã®ãã€ãã«å¯Ÿå¿ããŸãCurrent_byte
ã
Current_byte = 0;
ãããªã¡ã¢ãªã®åãã¯ã»ã«ã©ã€ã³ã®éå§ãã€ãã®ã¢ãã¬ã¹ã¯ãåŒã«ãã£ãŠèšç®ãããŸã
vm_Left_screen_byte_for_line = y_vm * x_max_bytes + Left_screen_byte;
ã©ã€ã³ãããã¡ãŒã®åãã¯ã»ã«ã©ã€ã³ã®éå§ãã€ãã®ã¢ãã¬ã¹ã¯ãåŒã«ãã£ãŠèšç®ãããŸã sb_Left_screen_byte_for_line = y_sb * x_max_bytes;
x_max_bytes
ãããªã¡ã¢ãªãšã©ã€ã³ãããã¡ã®å¹
ã¯åãã§ãã
, , Current_byte
, x1
, Currnt_shift
.
.
38., . :
39.ããã§ãæåŸã®å埩ã§äœæããããã¬ãŒã ã¯ãŒã¯ã«åºã¥ããŠäœæ¥UAãæ§ç¯ããã®ã«ååãªæ
å ±ããããŸãã
ç¹°ãè¿ã2. UAã¯ãã¹ãŠããŸãšããŠåéããŸã
UAã®èŠä»¶ã¯å€æŽãããŠããŸããããåæå段éã§èšç®ããå¿
èŠããããã©ã¡ãŒã¿ãŒã¯å®çŸ©ãããŠããŸããx_shift
ãã®ç¬éã®å€ã¯è£åãããŠããããšãæãåºãããŠãã ãã
ããã¹ããããã¯åºåæ©ã®å¶åŸ¡æ© void tDisplay_A1::Out_text_block () { x_block = x0 + x_rel + x_shift; y_block = y0 + y_rel + y_shift; Text = Text_begin; if(x_block < x0) { Left_shift = x0-x_block; x_block = x0; } else Left_shift = 0; Line_width = x1 - x_block; if(Line_width <= 0) return;
ç¹°ãè¿ã3. OA
ãã¹ãŠã®ã¿ã€ãã®OAã®èŠä»¶ã¯ãå埩2ã§å®å
šã«å®çŸ©ãããŠããŸããããã§ããããã®OAãå®è£
ãã颿°ãäœæã§ããŸãããã¹ãŠã®ã¿ã€ãã®OAã®ä»¥åã®èª¬æã¯ç¶²çŸ
çã§ããããã远å ã®ã³ã¡ã³ãã¯äžèŠã§ãã
ç¹°ãè¿ã3.ãããã°
ãããã°ã®ããã«ãOut_text颿°ã®åæãã©ã¡ãŒã¿ãŒã倿Žã§ããåçŽãªãã©ãŒã ã䜿çšããŸãããé¢å¿ã®ãããã©ã¡ãŒã¿ã¯ãã©ãŒã ã®å³åŽã«è¡šç€ºããããã°ãç°¡åã«ä¿®æ£ã§ããã®ã確èªããŸããå³40.ãããã°çšã®ãã©ãŒã ãããã°ã®éçšã«ã€ããŠã¯èª¬æããŸãããããã°ãªã¹ãã«éå®ããŸãã-ç»é¢ã®bytes_X_size
å¹
ã®ä»£ããã«ãæåã®å¹
ã䜿çšãããŸããbytes_Width
ã-æ°ããæ¬¡ã®å€ã¯çŸåšã®ãã®ã«ãªããŸããã§ãã-ã·ããã¬ãžã¹ã¿ã®ã¯ãªã¢ã¯ãããŸããã§ãã-è§æ¬åŒ§ãå¿ãã圢åŒã®ãã¹ãŠã®åŒã§(Width + Current_shift + 7) >> 3 - First_byte_gen;
-å³ç«¯ã®ãã€ãã€ã³ããã¯ã¹ã®ãã¹ãã³ã°ãä¿®æ£ãããŸãããçµæã¯æããã§ã( (Width + Current_shift + 7) >> 3 ) - First_byte_gen;
ãããã°ã¯é£ãããããŸããã§ãããè¡šå³ 25ã27ã34ã36ã¯å€±æããŸããã§ãããè£å©ããŒãã«ããã®ä»ã®å³ãã³ã³ãã€ã«ããããšã¯åé¡ã®å®¢èгçãªèŠæ¹ã®äžéšã§ãããããç§ã¯ããŒãã«ã«çŠç¹ãåœãŠãŠããŸããããã¯ããã°ã©ãã³ã°ã®éã«éåžžã«åœ¹ç«ã¡ãŸãã
-
. , . , 11, . , , , â tShift_register
. , , « », . â . , , - . , , , . «». , , , , .