,{c H},{BGCOLOR:dddddd|BOLD|CENTER} ,{c C},{CENTER} //%Âè1ÈÇÂè6ºþ P.297- //!!!5¾Ï¡¡ÈÆÍÑÆþ½ÐÎÏ¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹ ¡¡1¾Ï¤Ç¤âÀâÌÀ¤·¤¿¤è¤¦¤Ë¡¢MSX¤Î»ÈÍѤ·¤Æ¤¤¤ëPSG¤Ï¡¢²»À¼½ÐÎϤε¡Ç½¤È¤ÏÊ̤˥ݡ¼¥ÈA¤È¥Ý¡¼¥ÈB¤È¤¤¤¦2¤Ä¤Î8¥Ô¥Ã¥ÈÆþ½ÐÎϥݡ¼¥È¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£MSX¤Ï¤³¤Î2¤Ä¤Î¥Ý¡¼¥È¤òÈÆÍÑÆþ½ÐÎÏ¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹(¤¤¤ï¤æ¤ë¥¸¥ç¥¤¥¹¥Æ¥£¥Ã¥¯¥Ý¡¼¥È)¤ËÀܳ¤·¤Æ¡¢¥¸¥ç¥¤¥¹¥Æ¥£¥Ã¥¯¤ä¥Ñ¥É¥ë¤Ê¤É¤ÎÁõÃ֤ȤΥǡ¼¥¿Æþ½ÐÎϤËÍøÍѤ·¤Æ¤¤¤Þ¤¹(¿Þ5.21)¡£¤³¤ÎÈÆÍÑÆþ½ÐÎÏ¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤ËÀܳ¤µ¤ì¤ë³Æ¼ï¤ÎÁõÃ֤ϡ¢¤½¤ì¤¾¤ìÀìÍѤÎBIOS¥ë¡¼¥Á¥ó¤¬ROMÆâ¤ËÍÑ°Õ¤µ¤ì¤Æ¤ª¤ê¡¢¼ê·Ú¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£ ¡¡ËܾϤǤϡ¢³ÆÆþ½ÐÎÏÁõÃ֤ε¡Ç½¤ÈBIOS¥ë¡¼¥Á¥ó¤Ë¤è¤ë¥¢¥¯¥»¥¹Ë¡¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£ {{div_begin style='text-align:center;'}} {{svg ¿Þ5.21.svg,,size:660x350}} '''¿Þ5.21¡¡ÈÆÍÑÆþ½ÐÎÏ¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹''' {{div_end}} !!5.1¡¡¥Ý¡¼¥È¤Îµ¡Ç½ ¡¡PSG¤Î2¤Ä¤ÎÆþ½ÐÎϥݡ¼¥È¤Ï¡¢¿Þ5.22¤Î¤è¤¦¤ËÍøÍѤµ¤ì¤Æ¤¤¤Þ¤¹¡£ {{div_begin style='text-align:center;'}} {{svg ¿Þ5.22.svg}} '''¿Þ5.22¡¡PSG¤Î¥Ý¡¼¥ÈA¤È¥Ý¡¼¥ÈB¤Îµ¡Ç½''' {{div_end}} !!5.2¡¡¥¸¥ç¥¤¥¹¥Æ¥£¥Ã¥¯¤Î»ÈÍÑË¡ ¡¡¥¸¥ç¥¤¥¹¥Æ¥£¥Ã¥¯¤Î²óÏ©¤ò¿Þ5.23¤Ë¼¨¤·¤Þ¤¹¡£¤³¤Î²óÏ©¤«¤é¤ï¤«¤ë¤è¤¦¤Ë¡¢­¨ÈÖü»Ò¤Ë¡È0¡É¤ò½ÐÎϤ·¡¢­¡¡Á­¤¡¢­¦¡Á­§¤Îü»Ò¤òÆɤ߽Ф»¤Ð¡¢¥¹¥Æ¥£¥Ã¥¯¤È¥È¥ê¥¬¥Ü¥¿¥ó¤Î¾ðÊó¤ÏÆÀ¤é¤ì¤Þ¤¹¤¬¡¢¥×¥í¥°¥é¥à¤Î°Ü¿¢À­¤Ê¤É¤ò¹Íθ¤¹¤ë¤È¡¢¥¸¥ç¥¤¥¹¥Æ¥£¥Ã¥¯¤Î¥¢¥¯¥»¥¹¤Ï¤ä¤Ï¤êBIOS¤òÍøÍѤ·¤Æ¹Ô¤¦Êý¤¬ÌµÆñ¤Ç¤·¤ç¤¦¡£ ¡¡¥¸¥ç¥¤¥¹¥Æ¥£¥Ã¥¯¤ò¥¢¥¯¥»¥¹¤¹¤ë¤¿¤á¤Ë¤Ï¡¢°Ê²¼¤Ë¼¨¤¹BIOS¥ë¡¼¥Á¥ó¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤Ê¤ª¡¢¤³¤ì¤é¤Î¥ë¡¼¥Á¥ó¤ÏBASIC¤ÎSTICK´Ø¿ô¤äSTRIG´Ø¿ô¤È¤Û¤ÜÅù¤·¤¤µ¡Ç½¤ò»ý¤Ã¤Æ¤¤¤ë¤â¤Î¤Ç¡¢¥¸¥ç¥¤¥¹¥Æ¥£¥Ã¥¯°Ê³°¤Ë¥«¡¼¥½¥ë¥­¡¼¤ä¥¹¥Ú¡¼¥¹¥Ð¡¼¤Î¾õÂÖ¤ò¥ê¥¢¥ë¥¿¥¤¥à¤ÇÆɤ߼è¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£ {{div_begin style='text-align:center;'}} {{svg ¿Þ5.23.svg,,SIZE:350x230}} '''¿Þ5.23¡¡¥¸¥ç¥¤¥¹¥Æ¥£¥Ã¥¯²óÏ©¿Þ''' {{div_end}} ¡üGTSTCK(00D5H/MAIN)¡Ä¡Ä¡Ä¡Ä¡Ä¥¸¥ç¥¤¥¹¥Æ¥£¥Ã¥¯¤ÎÆɤ߽Ф· ÆþÎÏ:A¢«¥¸¥ç¥¤¥¹¥Æ¥£¥Ã¥¯ÈÖ¹æ(0=¥«¡¼¥½¥ë¥­¡¼¡¢1¡Á2=¥¸¥ç¥¤¥¹¥Æ¥£¥Ã¥¯) ½ÐÎÏ:A¢«¥¸¥ç¥¤¥¹¥Æ¥£¥Ã¥¯¤Þ¤¿¤Ï¥«¡¼¥½¥ë¥­¡¼¤Î²¡¤µ¤ì¤¿Êý¸þ µ¡Ç½:¸½ºß¤Î¥¸¥ç¥¤¥¹¥Æ¥£¥Ã¥¯¤Þ¤¿¤Ï¥«¡¼¥½¥ë¥­¡¼¤Î¾õÂÖ¤òA¥ì¥¸¥¹¥¿¤ËÊÖ¤¹¡£ÃͤÏBASIC¤ÎSTICK´Ø¿ô¤ÈƱ¤¸¤Ç¤¢¤ë¡£ ¡üGTTRIG(00D8H/MAIN)¡Ä¡Ä¡Ä¡Ä¡Ä¥È¥ê¥¬¥Ü¥¿¥ó¤ÎÆɤ߽Ф· ÆþÎÏ:A¢«¥È¥ê¥¬¥Ü¥¿¥óÈÖ¹æ(0=¥¹¥Ú¡¼¥¹¥Ð¡¼¡¢1¡Á2=¥È¥ê¥¬¥Ü¥¿¥ó) ½ÐÎÏ:A¢«¥È¥ê¥¬¡¦¥Ü¥¿¥ó¤Þ¤¿¤Ï¥¹¥Ú¡¼¥¹¥Ð¡¼¤Î¾õÂÖ(²¡¤¹=OFFH¡¢Î¥¤¹=OOH) µ¡Ç½:¸½ºß¤Î¥È¥ê¥¬¥Ü¥¿¥ó¡¢¤Þ¤¿¤Ï¥¹¥Ú¡¼¥¹¥Ð¡¼¤Î¾õÂÖ¤òA¥ì¥¸¥¹¥¿¤ËÊÖ¤¹¡£¤³¤ÎÃͤϥȥꥬ¤¬²¡¤µ¤ì¤Æ¤¤¤ì¤Ð0FFH¡¢²¡¤µ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð0¤È¤Ê¤ë¡£ {{div_begin style='text-align:right;'}} '''¥ê¥¹¥È5.7¡¡¥¸¥ç¥¤¥¹¥Æ¥£¥Ã¥¯¤Î»ÈÍÑË¡''' {{div_end}} ;============================================================ ; ; List 5.7 Joystick and trigger access ; ;============================================================ ; CHPUT EQU 00A2H BREAKX EQU 00B7H GTSTCK EQU 00D5H GTTRIG EQU 00D8H ORG 0D000H ;-------- program start -------- ¥¸¥ç¥¤¥¹¥Æ¥£¥Ã¥¯¤Î¾õÂÖ¤òɽ¼¨¤¹¤ë STICK: LD A,1 ;choose joystick 1 CALL GTSTCK ;read joystick status. LD (WK1),A LD A,1 ;choose joystick 1 CALL GTTRIG ;read trigger status OR A JR Z,STCK1 LD HL,WDON ;trigger ON JR STCK2 STCK1: LD HL,WDOFF ;trigger OFF STCK2: CALL PUTSTR LD A,(WK1) OR A JR Z,BRKCH0 ;no use joystick LD C,0 STCK3: DEC A JR Z,STCK4 INC C JR STCK3 STCK4: SLA C ;C := C*16 SLA C SLA C SLA C LD B,0 ;Accounting Strings data address. LD HL,WDSTK ADD HL,BC CALL PUTSTR LD A,0DH ;put carriage return CALL CHPUT ;code := 0DH CALL BREAKX ;break check RET C JR STICK ;----- put strings to screen ----- PUTSTR: LD A,(HL) CP '$' RET Z INC HL CALL CHPUT JR PUTSTR ;----- string data ----- WDON: DB 'Trtgger ON: $' WDOFF: DB 'Trigger OFF: $' WDSTK: DB 'UP only ',0DH,0AH,'$' DB 'Up and Right ',0DH,0AH,'$' DB 'Right only ',0DH,0AH,'$' DB 'Right & Down ',0DH,0AH,'$' DB 'Down only ',0DH,0AH,'$' DB 'Dovn and Left',0DH,0AH,'$' DB 'Left only ',0DH,0AH,'$' DB 'Left and Up ',0DH,0AH,'$' WK1: DW 0 END !!5.3¡¡¥Ñ¥É¥ë¤Î»ÈÍÑË¡ ¡¡¥Ñ¥É¥ë¤Î²óÏ©¤Ï¿Þ5.24¤Î¤È¤ª¤ê¤Ç¤¹¡£­¨Ã¼»Ò¤Ë¥Ñ¥ë¥¹¤òÁ÷¤ë¤Èñ°ÂÄê¥Þ¥ë¥Á¥Ð¥¤¥Ö¥ì¡¼¥¿¤Ï¡¢¤¢¤ë»þ´ÖÉý¤Î¥Ñ¥ë¥¹¤òȯÀ¸¤·¤Þ¤¹¡£¤³¤ÎÉý¤Ï²ÄÊÑÄñ¹³¤ÎÃͤˤè¤Ã¤Æ10¦Ìs¡Á3ms¤ÎÈϰϤÇÊѲ½¤·¤Þ¤¹¤Î¤Ç¡¢¥Ñ¥ë¥¹Ä¹¤ò¬Äꤹ¤ì¤Ð²ÄÊÑÄñ¹³¤ÎÃÍ¡¢¤Ò¤¤¤Æ¤Ï¤½¤Î²óž³Ñ¤òÃΤ뤳¤È¤¬¤Ç¤­¤Þ¤¹¡£ {{div_begin style='text-align:center;'}} {{svg ¿Þ5.24.svg,,size:490x460}} '''¿Þ5.24¡¡¥Ñ¥É¥ë²óÏ©¿Þ''' {{div_end}} ¥Ñ¥É¥ë¤ò¥¢¥¯¥»¥¹¤¹¤ë¤¿¤á¤ÎBIOS¥ë¡¼¥Á¥ó¤ò¼¡¤Ë¼¨¤·¤Þ¤¹¡£ ¡üGTPDL(00DEH/MAIN)¡Ä¡Ä¡Ä¡Ä¡Ä¥Ñ¥É¥ë¾ðÊó¤ÎÆɤ߽Ф· ÆþÎÏ:A¢«¥Ñ¥É¥ëÈÖ¹æ(1¡Á12) ½ÐÎÏ:A¢«¥Ñ¥É¥ë¤Î²óž³Ñ(O¡Á255) µ¡Ç½:A¥ì¥¸¥¹¥¿¤Ç»ØÄꤷ¤¿¥Ñ¥É¥ë¤Î¾õÂÖ¤òÄ´¤Ù¡¢·ë²Ì¤òA¥ì¥¸¥¹¥¿¤ËÊÖ¤¹¡£ !!5.4¡¡¥¿¥Ã¥Á¥Ñ¥Í¥ë¡¢¥é¥¤¥È¥Ú¥ó¡¢¥Þ¥¦¥¹¡¢¥È¥é¥Ã¥¯¥Ý¡¼¥ë¤Î»ÈÍÑË¡ ¡¡¥¿¥Ã¥Á¥Ñ¥Í¥ë¡¢¥é¥¤¥È¥Ú¥ó¡¢¥Þ¥¦¥¹¡¢¥È¥é¥Ã¥¯¥Ü¡¼¥ë(¥­¥ã¥Ã¥È)¤Ï¤¹¤Ù¤ÆƱ°ì¤ÎBIOS¤òÍѤ¤¤Æ¥¢¥¯¥»¥¹¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£¤½¤Î»È¤¤Êý¤ò°Ê²¼¤ËÀâÌÀ¤·¤Þ¤¹¡£ ¡üGTPAD(00DBH/MAIN)¡Ä¡Ä¡Ä¡Ä¡Ä³Æ¼ïÆþ½ÐÎÏÁõÃ֤Υ¢¥¯¥»¥¹ ÆþÎÏ:A¢«ÁõÃÖID(0¡Á19) ½ÐÎÏ:A¢«ÌÜŪ¤Î¾ðÊó µ¡Ç½:A¥ì¥¸¥¹¥¿¤Ç»ØÄꤹ¤ëÃͤˤè¤Ã¤Æ¡¢É½5.5¤Î¤è¤¦¤Ê³Æ¼ï¤Î¾ðÊó¤òÆÀ¤ë¤³¤È¤¬¤Ç¤­¤ë¡£¤³¤ì¤ÏBASIC¤ÎPAD´Ø¿ô¤È¤Þ¤Ã¤¿¤¯Æ±¤¸¤Ç¤¢¤ë¡£É½Ãæ¡ÈXXX1¡É¤Ï¡¢ÈÆÍÑÆþ½Ð¥«¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹#1¤ËÀܳ¤·¤¿¡ÈXXX¡É¤ÎÁõÃ֤Ǥ¢¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£Æ±ÍͤˡÈXXX2¡É¤ÏÈÆÍÑÆþ½ÐÎÏ¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹#2¤ËÀܳ¤·¤¿¤â¤Î¤Ç¤¢¤ë¡£ ,{t},{CENTER} ,{c},{H},{H},{H} ,ÁõÃÖID,»ØÄꤵ¤ì¤ëÁõÃÖ,Ê֤äƤ¯¤ë¾ðÊó ,{c},{C},{L},{L} ,0,¥¿¥Ã¥Á¥Ñ¥Í¥ë1{ROWS 4},¥Ñ¥Í¥ëÌ̤˿¨¤Ã¤Æ¤¤¤ì¤ÐOFFH¡¢¤¤¤Ê¤±¤ì¤Ð00H ,1,,XºÂɸ(0¡Á255) ,2,,YºÂɸ(0¡Á255) ,3,,¥Ü¥¿¥ó¤¬²¡¤µ¤ì¤Æ¤¤¤ì¤Ð0FFH¡¢¤¤¤Ê¤±¤ì¤Ð00H ,4,¥¿¥Ã¥Á¥Ñ¥Í¥ë2{ROWS 4},Ʊ¾å{ROWS 4} ,5,, ,6,, ,7,, ,8,¥é¥¤¥È¥Ú¥ó{ROWS 4},0FFH¤Ç¤¢¤ì¤Ð¥Ç¡¼¥¿¤ÏÍ­¸ú¡¢00H¤Ç¤¢¤ì¤Ð̵¸ú ,9,,XºÂɸ(0¡Á255) ,10,,YºÂɸ(0¡Á255) ,11,,¥¹¥¤¥Ã¥Á¤¬²¡¤µ¤ì¤Æ¤¤¤ì¤Ð0FFH¡¢¤¤¤Ê¤±¤ì¤Ð00H ,12,¥Þ¥¦¥¹1¡¢¤Þ¤¿¤Ï{{br}}¥È¥é¥Ã¥¯¥Ü¡¼¥ë1{ROWS 4},¤Ä¤Í¤Ë0FFH¤òÊÖ¤¹(ÆþÎϤÎÍ×µá¤Ë»ÈÍÑ) ,13,,XºÂɸ(0¡Á255) ,14,,YºÂɸ(0¡Á255) ,15,,¤Ä¤Í¤Ë00H¤òÊÖ¤¹(̵°ÕÌ£) ,16,¥Þ¥¦¥¹1¡¢¤Þ¤¿¤Ï{{br}}¥È¥é¥Ã¥¯¥Ü¡¼¥ë2{ROWS 4},Ʊ¾å{ROWS 4} ,17,, ,18,, ,19,, Ãí1:¥é¥¤¥È¥Ú¥ó¤ÎºÂɸ(A=9,1O)¤È¥¹¥¤¥Ã¥Á(A=11)¤Î¾ðÊó¤Ï¡¢A=8¤È¤·¤ÆBIOS¤ò¥³¡¼¥ë¤·¤¿¤È¤­Æ±»þ¤ËÆɤ߹þ¤Þ¤ì¤Þ¤¹¤¬¡¢¤½¤Î·ë²Ì¤¬OFFH¤Î»þ¤Ë¤Î¤ß¡¢Â¾¤ÎÃͤ¬Í­¸ú¤È¤Ê¤ê¤Þ¤¹¡£A=8¤È¤·¤ÆBIOS¤ò¥³¡¼¥ë¤·¤¿·ë²Ì¤¬00H¤Î¾ì´Þ¤Ï¡¢¤½¤Î¸å¤ËÆÀ¤é¤ì¤ëºÂɸÃͤ䥹¥¤¥Ã¥Á¤Î¾õÂ֤ϰÕÌ£¤ò»ý¤Á¤Þ¤»¤ó¡£ Ãí2:¥Þ¥¦¥¹¤È¥È¥é¥Ã¥¯¥Ü¡¼¥ë¤Ï¼«Æ°Åª¤ËȽÊ̤·¤Þ¤¹¡£ Ãí3:¥Þ¥¦¥¹¤ä¥È¥é¥Ã¥¯¥Ü¡¼¥ë¤ÎºÂɸÃͤòµá¤á¤ë¾ì¹ç¡¢¤Þ¤ºÆþÎÏÍ×µá¤Î¥³¡¼¥ë(A=12¤Þ¤¿¤ÏA=16)¤ò¹Ô¤¤¡¢¤½¤Î¸å¤Ë¼ÂºÝ¤ËºÂɸÃͤòµá¤á¤ë¥³¡¼¥ë¤ò¼Â¹Ô¤¹¤ë¡¢¤È¤¤¤¦¼ê½ç¤ò¤Õ¤ß¤Þ¤¹¡£¤³¤Î¤È¤­2¤Ä¤Î¥³¡¼¥ë¤Î»þ´Ö´Ö³Ö¤Ï¤Ç¤­¤ë¸Â¤ê¾®¤µ¤¯¤È¤é¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ÆþÎÏÍ׵ᤫ¤éºÂɸÃͤÎÆþÎϤޤǤËɬÍװʾå¤Ë»þ´Ö¤ò¤«¤±¤ë¤È¡¢ÆÀ¤é¤ì¤¿¥Ç¡¼¥¿¤ÏÊݾڤµ¤ì¤Þ¤»¤ó¡£ Ãí4:¥Þ¥¦¥¹¤Þ¤¿¤Ï¥È¥é¥Ã¥¯¥Ü¡¼¥ë¤Ë¤Ä¤¤¤Æ¤¤¤ë¥È¥ê¥¬¥Ü¥¿¥ó¤Î¾õÂÖ¤òÆÀ¤ë¤¿¤á¤Ë¤Ï¡¢¤³¤ÎGTPAD¥ë¡¼¥Á¥ó¤Ç¤Ï¤Ê¤¯¡¢GTTRIG(00D8H/MAIN)¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£ {{div_begin style='text-align:center;'}} '''ɽ5.5¡¡GTPAD¤ÎBIOS¤ÇÆÀ¤é¤ì¤ë¾ðÊó''' {{div_end}} {{div_begin style='text-align:right;'}} '''¥ê¥¹¥È5.8¡¡¥¿¥Ã¥Á¥Ñ¥Í¥ë¤Î»ÈÍÑË¡''' {{div_end}} ;============================================================ ; ; List 5.8 touch pad access ; ;============================================================ ; BREAKX EQU 00B7H GTPAD EQU 00DBH WRTVRM EQU 004DH ORG 0B000H ;-------- program start -------- ¥¿¥Ã¥Á¥Ñ¥Ã¥É¤Ç»ØÄꤷ¤¿°ÌÃÖ¤Ë"*"¤òɽ¼¨¤¹¤ë PAD: XOR A ;check sense CALL GTPAD OR A JR NZ,PAD1 LD A,3 CALL GTPAD ;break check OR A RET NZ JR PAD PAD1: LD A,1 ;get X axis CALL GTPAD SRL A ;A := A/8 SRL A SRL A LD (WORK),A ;reserve X axis LD A,2 ;get Y axis CALL GTPAD LD L,A ;HL := Y data(0-255) LD H,0 LD C,A LD B,0 ADD HL,BC ;HL := HL*3 (HL:= 0-767) ADD HL,BC LD A,L AND 11100000B LD L,A LD A,(WORK) ADD A,L LD L,A LD BC.1800H ;VRAM start address. ADD HL,BC LD A,2AH CALL WRTVRM ;write VRAM LD A,3 CALL GTPAD ;break check OR A RET NZ JR PAD ;----- work area ----- WORK: DW 0 ;work END {{div_begin style='text-align:right;'}} '''¥ê¥¹¥È5.9¡¡¥Þ¥¦¥¹¤È¥È¥é¥Ã¥¯¥Ü¡¼¥ë¤Î»ÈÍÑË¡''' {{div_end}} ;============================================================ ; ; List 5.9 mouse and track ball access ; ;============================================================ ; GTPAD EQU 00DBH WRTVRM EQU 004DH RDVRM EQU 004AH BREAKX EQU 00B7H ORG 0D000H ;----- program start ----- ¥Þ¥¦¥¹¤Þ¤¿¤Ï¥È¥é¥Ã¥¯¥Ü¡¼¥ë¤Ç»ØÄꤷ¤¿°ÌÃÖ¤Ë"*"¤òɽ¼¨¤¹¤ë TEST: CALL VADR ;Put old data. LD A,(WKOLD) CALL WRTVRM LD A,12 CALL GTPAD ;Request mouse/track ball data. LD A,13 CALL GTPAD ;Read X val. LD (WKXVAL),A LD A.14 CALL GTPAD ;Read Y val. LD (WKYVAL),A LD A,(WKX) LD B,A LD A,(WKXVAL) ADD A,B CP 245 ;X<0? JR C,TEST01 XOR A ;X=0 JR TEST02 TEST01: CP 32 ;X>31? JR C,TEST02 LD A,31 TEST02: LD (WKX),A LD A,(WKY) LD B,A LD A,(WKYVAL) ADD A,B CP 245 ;Y<0? JR C.TEST03 XOR A ;Y=0 JR TEST04 TEST03: CP 24 ;Y>23 JR C,TEST04 LD A,23 TEST04: LD (WKY),A CALL VADR CALL RDVRM ;Read old data. LD (WKOLD),A CALL VADR LD A,2AH CALL WRTVRM ;Put cursor("*"). CALL BREAKX ;Break check. RET C CALL WAIT JR TEST VADR: LD A,(WKY) ;Make SCREEN Address. LD H,A ; From X,Y axis on WORK AREA LD L,0 ; To HL reg. SRL H RR L SRL H RR L SRL H RR L LD A,(WKX) ADD A,L ; Y*32+X LD L,A LD BC,1800H ; VRAM start address. ADD HL,BC RET WAIT: LD A,0 ;WAIT routine WLP1: INC A LD B,(IX+0) LD B,(IX+0) LD B,(IX+0) JR NZ,WLP1 RET ;----- data ----- WKX: DB 10 ;X axis WKY: DB 10 ;Y axis WKOLD: DB 0 ;Character code on (X,Y) WKXVAL: DB 0 ;X variable. WKYVAL: DB 0 ;Y variable. END