¡¡1¾Ï¤Ç¤âÀâÌÀ¤·¤¿¤è¤¦¤Ë¡¢MSX¤Î»ÈÍѤ·¤Æ¤¤¤ëPSG¤Ï¡¢²»À¼½ÐÎϤε¡Ç½¤È¤ÏÊ̤˥ݡ¼¥ÈA¤È¥Ý¡¼¥ÈB¤È¤¤¤¦2¤Ä¤Î8¥Ô¥Ã¥ÈÆþ½ÐÎϥݡ¼¥È¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£MSX¤Ï¤³¤Î2¤Ä¤Î¥Ý¡¼¥È¤òÈÆÍÑÆþ½ÐÎÏ¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹(¤¤¤ï¤æ¤ë¥¸¥ç¥¤¥¹¥Æ¥£¥Ã¥¯¥Ý¡¼¥È)¤ËÀܳ¤·¤Æ¡¢¥¸¥ç¥¤¥¹¥Æ¥£¥Ã¥¯¤ä¥Ñ¥É¥ë¤Ê¤É¤ÎÁõÃ֤ȤΥǡ¼¥¿Æþ½ÐÎϤËÍøÍѤ·¤Æ¤¤¤Þ¤¹(¿Þ5.21)¡£¤³¤ÎÈÆÍÑÆþ½ÐÎÏ¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤ËÀܳ¤µ¤ì¤ë³Æ¼ï¤ÎÁõÃ֤ϡ¢¤½¤ì¤¾¤ìÀìÍѤÎBIOS¥ë¡¼¥Á¥ó¤¬ROMÆâ¤ËÍѰդµ¤ì¤Æ¤ª¤ê¡¢¼ê·Ú¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£
¡¡ËܾϤǤϡ¢³ÆÆþ½ÐÎÏÁõÃ֤ε¡Ç½¤ÈBIOS¥ë¡¼¥Á¥ó¤Ë¤è¤ë¥¢¥¯¥»¥¹Ë¡¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£
5.1¡¡¥Ý¡¼¥È¤Îµ¡Ç½
¡¡PSG¤Î2¤Ä¤ÎÆþ½ÐÎϥݡ¼¥È¤Ï¡¢¿Þ5.22¤Î¤è¤¦¤ËÍøÍѤµ¤ì¤Æ¤¤¤Þ¤¹¡£
5.2¡¡¥¸¥ç¥¤¥¹¥Æ¥£¥Ã¥¯¤Î»ÈÍÑË¡
¡¡¥¸¥ç¥¤¥¹¥Æ¥£¥Ã¥¯¤Î²óÏ©¤ò¿Þ5.23¤Ë¼¨¤·¤Þ¤¹¡£¤³¤Î²óÏ©¤«¤é¤ï¤«¤ë¤è¤¦¤Ë¡¢¨ÈÖü»Ò¤Ë¡È0¡É¤ò½ÐÎϤ·¡¢¡¡Á¤¡¢¦¡Á§¤Îü»Ò¤òÆÉ¤ß½Ð¤»¤Ð¡¢¥¹¥Æ¥£¥Ã¥¯¤È¥È¥ê¥¬¥Ü¥¿¥ó¤Î¾ðÊó¤ÏÆÀ¤é¤ì¤Þ¤¹¤¬¡¢¥×¥í¥°¥é¥à¤Î°Ü¿¢À¤Ê¤É¤ò¹Íθ¤¹¤ë¤È¡¢¥¸¥ç¥¤¥¹¥Æ¥£¥Ã¥¯¤Î¥¢¥¯¥»¥¹¤Ï¤ä¤Ï¤êBIOS¤òÍøÍѤ·¤Æ¹Ô¤¦Êý¤¬ÌµÆñ¤Ç¤·¤ç¤¦¡£
¡¡¥¸¥ç¥¤¥¹¥Æ¥£¥Ã¥¯¤ò¥¢¥¯¥»¥¹¤¹¤ë¤¿¤á¤Ë¤Ï¡¢°Ê²¼¤Ë¼¨¤¹BIOS¥ë¡¼¥Á¥ó¤¬ÍѰդµ¤ì¤Æ¤¤¤Þ¤¹¡£¤Ê¤ª¡¢¤³¤ì¤é¤Î¥ë¡¼¥Á¥ó¤ÏBASIC¤ÎSTICK´Ø¿ô¤äSTRIG´Ø¿ô¤È¤Û¤ÜÅù¤·¤¤µ¡Ç½¤ò»ý¤Ã¤Æ¤¤¤ë¤â¤Î¤Ç¡¢¥¸¥ç¥¤¥¹¥Æ¥£¥Ã¥¯°Ê³°¤Ë¥«¡¼¥½¥ë¥¡¼¤ä¥¹¥Ú¡¼¥¹¥Ð¡¼¤Î¾õÂÖ¤ò¥ê¥¢¥ë¥¿¥¤¥à¤ÇÆÉ¤ß¼è¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£
¡üGTSTCK(00D5H/MAIN)¡Ä¡Ä¡Ä¡Ä¡Ä¥¸¥ç¥¤¥¹¥Æ¥£¥Ã¥¯¤ÎÆÉ¤ß½Ð¤·
ÆþÎÏ:A¢«¥¸¥ç¥¤¥¹¥Æ¥£¥Ã¥¯ÈÖ¹æ(0=¥«¡¼¥½¥ë¥¡¼¡¢1¡Á2=¥¸¥ç¥¤¥¹¥Æ¥£¥Ã¥¯)
½ÐÎÏ:A¢«¥¸¥ç¥¤¥¹¥Æ¥£¥Ã¥¯¤Þ¤¿¤Ï¥«¡¼¥½¥ë¥¡¼¤Î²¡¤µ¤ì¤¿Êý¸þ
µ¡Ç½:¸½ºß¤Î¥¸¥ç¥¤¥¹¥Æ¥£¥Ã¥¯¤Þ¤¿¤Ï¥«¡¼¥½¥ë¥¡¼¤Î¾õÂÖ¤òA¥ì¥¸¥¹¥¿¤ËÊÖ¤¹¡£ÃͤÏBASIC¤ÎSTICK´Ø¿ô¤ÈƱ¤¸¤Ç¤¢¤ë¡£
¡üGTTRIG(00D8H/MAIN)¡Ä¡Ä¡Ä¡Ä¡Ä¥È¥ê¥¬¥Ü¥¿¥ó¤ÎÆÉ¤ß½Ð¤·
ÆþÎÏ:A¢«¥È¥ê¥¬¥Ü¥¿¥óÈÖ¹æ(0=¥¹¥Ú¡¼¥¹¥Ð¡¼¡¢1¡Á2=¥È¥ê¥¬¥Ü¥¿¥ó)
½ÐÎÏ:A¢«¥È¥ê¥¬¡¦¥Ü¥¿¥ó¤Þ¤¿¤Ï¥¹¥Ú¡¼¥¹¥Ð¡¼¤Î¾õÂÖ(²¡¤¹=OFFH¡¢Î¥¤¹=OOH)
µ¡Ç½:¸½ºß¤Î¥È¥ê¥¬¥Ü¥¿¥ó¡¢¤Þ¤¿¤Ï¥¹¥Ú¡¼¥¹¥Ð¡¼¤Î¾õÂÖ¤òA¥ì¥¸¥¹¥¿¤ËÊÖ¤¹¡£¤³¤ÎÃͤϥȥꥬ¤¬²¡¤µ¤ì¤Æ¤¤¤ì¤Ð0FFH¡¢²¡¤µ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð0¤È¤Ê¤ë¡£
¥ê¥¹¥È5.7¡¡¥¸¥ç¥¤¥¹¥Æ¥£¥Ã¥¯¤Î»ÈÍÑË¡
;============================================================
;
; 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¤ÎÈϰϤÇÊѲ½¤·¤Þ¤¹¤Î¤Ç¡¢¥Ñ¥ë¥¹Ä¹¤ò¬Äꤹ¤ì¤Ð²ÄÊÑÄñ¹³¤ÎÃÍ¡¢¤Ò¤¤¤Æ¤Ï¤½¤Î²óž³Ñ¤òÃΤ뤳¤È¤¬¤Ç¤¤Þ¤¹¡£
¥Ñ¥É¥ë¤ò¥¢¥¯¥»¥¹¤¹¤ë¤¿¤á¤Î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¤ËÀܳ¤·¤¿¤â¤Î¤Ç¤¢¤ë¡£
| ÁõÃÖID | »ØÄꤵ¤ì¤ëÁõÃÖ | Ê֤äƤ¯¤ë¾ðÊó |
| 0 | ¥¿¥Ã¥Á¥Ñ¥Í¥ë1 | ¥Ñ¥Í¥ëÌ̤˿¨¤Ã¤Æ¤¤¤ì¤ÐOFFH¡¢¤¤¤Ê¤±¤ì¤Ð00H |
| 1 | XºÂɸ(0¡Á255) | |
| 2 | YºÂɸ(0¡Á255) | |
| 3 | ¥Ü¥¿¥ó¤¬²¡¤µ¤ì¤Æ¤¤¤ì¤Ð0FFH¡¢¤¤¤Ê¤±¤ì¤Ð00H | |
| 4 | ¥¿¥Ã¥Á¥Ñ¥Í¥ë2 | Ʊ¾å |
| 5 | ||
| 6 | ||
| 7 | ||
| 8 | ¥é¥¤¥È¥Ú¥ó | 0FFH¤Ç¤¢¤ì¤Ð¥Ç¡¼¥¿¤Ï͸ú¡¢00H¤Ç¤¢¤ì¤Ð̵¸ú |
| 9 | XºÂɸ(0¡Á255) | |
| 10 | YºÂɸ(0¡Á255) | |
| 11 | ¥¹¥¤¥Ã¥Á¤¬²¡¤µ¤ì¤Æ¤¤¤ì¤Ð0FFH¡¢¤¤¤Ê¤±¤ì¤Ð00H | |
| 12 | ¥Þ¥¦¥¹1¡¢¤Þ¤¿¤Ï ¥È¥é¥Ã¥¯¥Ü¡¼¥ë1 | ¤Ä¤Í¤Ë0FFH¤òÊÖ¤¹(ÆþÎϤÎÍ×µá¤Ë»ÈÍÑ) |
| 13 | XºÂɸ(0¡Á255) | |
| 14 | YºÂɸ(0¡Á255) | |
| 15 | ¤Ä¤Í¤Ë00H¤òÊÖ¤¹(̵°ÕÌ£) | |
| 16 | ¥Þ¥¦¥¹1¡¢¤Þ¤¿¤Ï ¥È¥é¥Ã¥¯¥Ü¡¼¥ë2 | Ʊ¾å |
| 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)¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£
ɽ5.5¡¡GTPAD¤ÎBIOS¤ÇÆÀ¤é¤ì¤ë¾ðÊó
¥ê¥¹¥È5.8¡¡¥¿¥Ã¥Á¥Ñ¥Í¥ë¤Î»ÈÍÑË¡
;============================================================
;
; 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
¥ê¥¹¥È5.9¡¡¥Þ¥¦¥¹¤È¥È¥é¥Ã¥¯¥Ü¡¼¥ë¤Î»ÈÍÑË¡
;============================================================
;
; 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
