クエリちゃんリバーシ8192 US TUTOR対応

クエリちゃんリバーシ8192がUS TUTORで動かないという指摘を頂いたので勝手にパッチ作成しました。

http://d.hatena.ne.jp/EXCEED/20161231/p1

初代ぴゅう太/Jr/mk2で動作確認しています。US TUTORはmk2と同じと思われます。

        AORG  >9E60
VIRTKB  EQU   >F0E9
        CLR   @VIRTKB
        LI    R0,>0000
        MOVB  @>0002,R0
        CZC   @BIT5,R0              ; Pyuuta Jr ?
        JNE   JUNIOR
        LI    R12,>EC60
        STCR  R2,8                  ; Bring 8 row bits into MSB of R2
        COC   @BIT3,R2              ; RT pressed ?
        JEQ   DSPSE4
        LI    R12,>EC00
        STCR  R2,8                  ; Bring 8 row bits into MSB of R2
        COC   @BIT6,R2              ; 2 pressed ?
        JEQ   DSPSE3
        COC   @BIT7,R2              ; 1 pressed ?
        JEQ   DSPSE2
        LI    R1,>0000
        B     @EXIT
JUNIOR  MOVB  @>EA00,R2
        COC   @BIT5,R2              ; RT pressed ?
        JEQ   DSPSE4
        COC   @BIT0,R2              ; 2 pressed ?
        JEQ   DSPSE3
        COC   @BIT1,R2              ; 1 pressed ?
        JEQ   DSPSE2
        LI    R1,>0000
        B     @EXIT
DSPSE2  LI    R1,>F500
        B     @EXIT
DSPSE3  LI    R1,>F600
        B     @EXIT
DSPSE4  LI    R1,>0D00
EXIT    MOVB  R1,@VIRTKB
        B     *R11

BIT0    DATA  >8000                 ; Binary 1000000000000000
BIT1    DATA  >4000                 ; Binary 0100000000000000
BIT2    DATA  >2000                 ; Binary 0010000000000000
BIT3    DATA  >1000                 ; Binary 0001000000000000
BIT4    DATA  >800                  ; Binary 0000100000000000
BIT5    DATA  >400                  ; Binary 0000010000000000
BIT6    DATA  >200                  ; Binary 0000001000000000
BIT7    DATA  >100                  ; Binary 0000000100000000
BIT8    DATA  >80                   ; Binary 0000000010000000
BIT9    DATA  >40                   ; Binary 0000000001000000
BIT10   DATA  >20                   ; Binary 0000000000100000
BIT11   DATA  >10                   ; Binary 0000000000010000
BIT12   DATA  >8                    ; Binary 0000000000001000
BIT13   DATA  >4                    ; Binary 0000000000000100
BIT14   DATA  >2                    ; Binary 0000000000000010
BIT15   DATA  >1                    ; Binary 0000000000000001

        AORG  >9F00
VIRTCN  EQU   >F0EA
VIRTCN2 EQU   >F0EB
        CLR   @VIRTCN
        CLR   @VIRTCN2
        LI    R0,>0000
        MOVB  @>0002,R0
        CZC   @BIT5,R0              ; Pyuuta Jr ?
        JNE   JUNIOR2
        LI    R12,>EC40
        STCR  R2,8                  ; Bring 8 row bits into MSB of R2
        B     @KBSCAE
JUNIOR2 MOVB  @>E800,R2
KBSCAE  COC   @BIT5,R2              ; FIRE pressed ?
        JNE   KBSCAF
        LI    R1,>2000
        MOVB  R1,@VIRTCN 
KBSCAF  COC   @BIT2,R2              ; Moved left ?
        JNE   KBSCAG
        LI    R1,>0400
        MOVB  R1,@VIRTCN 
KBSCAG  COC   @BIT0,R2              ; Moved right ?
        JNE   KBSCAH
        LI    R1,>0100
        MOVB  R1,@VIRTCN 
KBSCAH  COC   @BIT3,R2              ; Moved down ?
        JNE   KBSCAI
        LI    R1,>0800
        MOVB  R1,@VIRTCN 
KBSCAI  COC   @BIT1,R2              ; Moved up ?
        JNE   KBSCAC
        LI    R1,>0200
        MOVB  R1,@VIRTCN 
KBSCAC  COC   @BIT4,R2              ; FIRE pressed ?
        JNE   KBSCAD
        LI    R1,>1000
        MOVB  R1,@VIRTCN 

KBSCAD  LI    R0,>0000
        MOVB  @>0002,R0
        CZC   @BIT5,R0              ; Pyuuta Jr ?
        JNE   JUNIOR3
        LI    R12,>EC50
        STCR  R2,8                  ; Bring 8 row bits into MSB of R2
        B     @KBSCAE2
JUNIOR3 MOVB  @>EE00,R2
KBSCAE2 COC   @BIT5,R2              ; FIRE pressed ?
        JNE   KBSCAF2
        LI    R1,>2000
        MOVB  R1,@VIRTCN2
KBSCAF2 COC   @BIT2,R2              ; Moved left ?
        JNE   KBSCAG2
        LI    R1,>0400
        MOVB  R1,@VIRTCN2
KBSCAG2 COC   @BIT0,R2              ; Moved right ?
        JNE   KBSCAH2
        LI    R1,>0100
        MOVB  R1,@VIRTCN2
KBSCAH2 COC   @BIT3,R2              ; Moved down ?
        JNE   KBSCAI2
        LI    R1,>0800
        MOVB  R1,@VIRTCN2
KBSCAI2 COC   @BIT1,R2              ; Moved up ?
        JNE   KBSCAC2
        LI    R1,>0200
        MOVB  R1,@VIRTCN2
KBSCAC2 COC   @BIT4,R2              ; FIRE pressed ?
        JNE   KBSCAJ
        LI    R1,>1000
        MOVB  R1,@VIRTCN2

*--------------------------------------------------------------
* Exit
*-------@-----@---------------------@--------------------------
KBSCAJ  B     *R11

勝手に再配布するのも気が引けるのでパッチを作成しました。

* Patch for QueryReversi8192.bin *
* Made by バイナリ書き替え君 Version 2.03 *
*== TARGET_FILE ================
FILENAME QueryReversi8192.bin
* FileSize: 8192 bytes
* LastMod : 2018/01/13 10:39:51
*===============================
00000180: 00 9E
00000181: 40 60
000007C4: 00 9E
000007C5: 40 60
00000E22: 00 9F
00000E23: F0 00
00001E60: FF 04
00001E61: FF E0
00001E62: FF F0
00001E63: FF E9
00001E64: FF 02
00001E65: FF 00
00001E66: FF 00
00001E67: FF 00
00001E68: FF D0
00001E69: FF 20
00001E6A: FF 00
00001E6B: FF 02
00001E6C: FF 24
00001E6D: FF 20
00001E6E: FF 9E
00001E6F: FF DA
00001E70: FF 16
00001E71: FF 13
00001E72: FF 02
00001E73: FF 0C
00001E74: FF EC
00001E75: FF 60
00001E76: FF 36
00001E77: FF 02
00001E78: FF 20
00001E79: FF A0
00001E7A: FF 9E
00001E7B: FF D6
00001E7C: FF 13
00001E7D: FF 24
00001E7E: FF 02
00001E7F: FF 0C
00001E80: FF EC
00001E81: FF 00
00001E82: FF 36
00001E83: FF 02
00001E84: FF 20
00001E85: FF A0
00001E86: FF 9E
00001E87: FF DC
00001E88: FF 13
00001E89: FF 1A
00001E8A: FF 20
00001E8B: FF A0
00001E8C: FF 9E
00001E8D: FF DE
00001E8E: FF 13
00001E8F: FF 13
00001E90: FF 02
00001E91: FF 01
00001E92: FF 00
00001E93: FF 00
00001E94: FF 04
00001E95: FF 60
00001E96: FF 9E
00001E97: FF CA
00001E98: FF D0
00001E99: FF A0
00001E9A: FF EA
00001E9B: FF 00
00001E9C: FF 20
00001E9D: FF A0
00001E9E: FF 9E
00001E9F: FF DA
00001EA0: FF 13
00001EA1: FF 12
00001EA2: FF 20
00001EA3: FF A0
00001EA4: FF 9E
00001EA5: FF D0
00001EA6: FF 13
00001EA7: FF 0B
00001EA8: FF 20
00001EA9: FF A0
00001EAA: FF 9E
00001EAB: FF D2
00001EAC: FF 13
00001EAD: FF 04
00001EAE: FF 02
00001EAF: FF 01
00001EB0: FF 00
00001EB1: FF 00
00001EB2: FF 04
00001EB3: FF 60
00001EB4: FF 9E
00001EB5: FF CA
00001EB6: FF 02
00001EB7: FF 01
00001EB8: FF F5
00001EB9: FF 00
00001EBA: FF 04
00001EBB: FF 60
00001EBC: FF 9E
00001EBD: FF CA
00001EBE: FF 02
00001EBF: FF 01
00001EC0: FF F6
00001EC1: FF 00
00001EC2: FF 04
00001EC3: FF 60
00001EC4: FF 9E
00001EC5: FF CA
00001EC6: FF 02
00001EC7: FF 01
00001EC8: FF 0D
00001EC9: FF 00
00001ECA: FF D8
00001ECB: FF 01
00001ECC: FF F0
00001ECD: FF E9
00001ECE: FF 04
00001ECF: FF 5B
00001ED0: FF 80
00001ED1: FF 00
00001ED2: FF 40
00001ED3: FF 00
00001ED4: FF 20
00001ED5: FF 00
00001ED6: FF 10
00001ED7: FF 00
00001ED8: FF 08
00001ED9: FF 00
00001EDA: FF 04
00001EDB: FF 00
00001EDC: FF 02
00001EDD: FF 00
00001EDE: FF 01
00001EDF: FF 00
00001EE0: FF 00
00001EE1: FF 80
00001EE2: FF 00
00001EE3: FF 40
00001EE4: FF 00
00001EE5: FF 20
00001EE6: FF 00
00001EE7: FF 10
00001EE8: FF 00
00001EE9: FF 08
00001EEA: FF 00
00001EEB: FF 04
00001EEC: FF 00
00001EED: FF 02
00001EEE: FF 00
00001EEF: FF 01
00001EF0: FF 00
00001EF1: FF 00
00001EF2: FF 00
00001EF3: FF 00
00001EF4: FF 00
00001EF5: FF 00
00001EF6: FF 00
00001EF7: FF 00
00001EF8: FF 00
00001EF9: FF 00
00001EFA: FF 00
00001EFB: FF 00
00001EFC: FF 00
00001EFD: FF 00
00001EFE: FF 00
00001EFF: FF 00
00001F00: FF 04
00001F01: FF E0
00001F02: FF F0
00001F03: FF EA
00001F04: FF 04
00001F05: FF E0
00001F06: FF F0
00001F07: FF EB
00001F08: FF 02
00001F09: FF 00
00001F0A: FF 00
00001F0B: FF 00
00001F0C: FF D0
00001F0D: FF 20
00001F0E: FF 00
00001F0F: FF 02
00001F10: FF 24
00001F11: FF 20
00001F12: FF 9E
00001F13: FF DA
00001F14: FF 16
00001F15: FF 05
00001F16: FF 02
00001F17: FF 0C
00001F18: FF EC
00001F19: FF 40
00001F1A: FF 36
00001F1B: FF 02
00001F1C: FF 04
00001F1D: FF 60
00001F1E: FF 9F
00001F1F: FF 24
00001F20: FF D0
00001F21: FF A0
00001F22: FF E8
00001F23: FF 00
00001F24: FF 20
00001F25: FF A0
00001F26: FF 9E
00001F27: FF DA
00001F28: FF 16
00001F29: FF 04
00001F2A: FF 02
00001F2B: FF 01
00001F2C: FF 20
00001F2D: FF 00
00001F2E: FF D8
00001F2F: FF 01
00001F30: FF F0
00001F31: FF EA
00001F32: FF 20
00001F33: FF A0
00001F34: FF 9E
00001F35: FF D4
00001F36: FF 16
00001F37: FF 04
00001F38: FF 02
00001F39: FF 01
00001F3A: FF 04
00001F3B: FF 00
00001F3C: FF D8
00001F3D: FF 01
00001F3E: FF F0
00001F3F: FF EA
00001F40: FF 20
00001F41: FF A0
00001F42: FF 9E
00001F43: FF D0
00001F44: FF 16
00001F45: FF 04
00001F46: FF 02
00001F47: FF 01
00001F48: FF 01
00001F49: FF 00
00001F4A: FF D8
00001F4B: FF 01
00001F4C: FF F0
00001F4D: FF EA
00001F4E: FF 20
00001F4F: FF A0
00001F50: FF 9E
00001F51: FF D6
00001F52: FF 16
00001F53: FF 04
00001F54: FF 02
00001F55: FF 01
00001F56: FF 08
00001F57: FF 00
00001F58: FF D8
00001F59: FF 01
00001F5A: FF F0
00001F5B: FF EA
00001F5C: FF 20
00001F5D: FF A0
00001F5E: FF 9E
00001F5F: FF D2
00001F60: FF 16
00001F61: FF 04
00001F62: FF 02
00001F63: FF 01
00001F64: FF 02
00001F65: FF 00
00001F66: FF D8
00001F67: FF 01
00001F68: FF F0
00001F69: FF EA
00001F6A: FF 20
00001F6B: FF A0
00001F6C: FF 9E
00001F6D: FF D8
00001F6E: FF 16
00001F6F: FF 04
00001F70: FF 02
00001F71: FF 01
00001F72: FF 10
00001F73: FF 00
00001F74: FF D8
00001F75: FF 01
00001F76: FF F0
00001F77: FF EA
00001F78: FF 02
00001F79: FF 00
00001F7A: FF 00
00001F7B: FF 00
00001F7C: FF D0
00001F7D: FF 20
00001F7E: FF 00
00001F7F: FF 02
00001F80: FF 24
00001F81: FF 20
00001F82: FF 9E
00001F83: FF DA
00001F84: FF 16
00001F85: FF 05
00001F86: FF 02
00001F87: FF 0C
00001F88: FF EC
00001F89: FF 50
00001F8A: FF 36
00001F8B: FF 02
00001F8C: FF 04
00001F8D: FF 60
00001F8E: FF 9F
00001F8F: FF 94
00001F90: FF D0
00001F91: FF A0
00001F92: FF EE
00001F93: FF 00
00001F94: FF 20
00001F95: FF A0
00001F96: FF 9E
00001F97: FF DA
00001F98: FF 16
00001F99: FF 04
00001F9A: FF 02
00001F9B: FF 01
00001F9C: FF 20
00001F9D: FF 00
00001F9E: FF D8
00001F9F: FF 01
00001FA0: FF F0
00001FA1: FF EB
00001FA2: FF 20
00001FA3: FF A0
00001FA4: FF 9E
00001FA5: FF D4
00001FA6: FF 16
00001FA7: FF 04
00001FA8: FF 02
00001FA9: FF 01
00001FAA: FF 04
00001FAB: FF 00
00001FAC: FF D8
00001FAD: FF 01
00001FAE: FF F0
00001FAF: FF EB
00001FB0: FF 20
00001FB1: FF A0
00001FB2: FF 9E
00001FB3: FF D0
00001FB4: FF 16
00001FB5: FF 04
00001FB6: FF 02
00001FB7: FF 01
00001FB8: FF 01
00001FB9: FF 00
00001FBA: FF D8
00001FBB: FF 01
00001FBC: FF F0
00001FBD: FF EB
00001FBE: FF 20
00001FBF: FF A0
00001FC0: FF 9E
00001FC1: FF D6
00001FC2: FF 16
00001FC3: FF 04
00001FC4: FF 02
00001FC5: FF 01
00001FC6: FF 08
00001FC7: FF 00
00001FC8: FF D8
00001FC9: FF 01
00001FCA: FF F0
00001FCB: FF EB
00001FCC: FF 20
00001FCD: FF A0
00001FCE: FF 9E
00001FCF: FF D2
00001FD0: FF 16
00001FD1: FF 04
00001FD2: FF 02
00001FD3: FF 01
00001FD4: FF 02
00001FD5: FF 00
00001FD6: FF D8
00001FD7: FF 01
00001FD8: FF F0
00001FD9: FF EB
00001FDA: FF 20
00001FDB: FF A0
00001FDC: FF 9E
00001FDD: FF D8
00001FDE: FF 16
00001FDF: FF 04
00001FE0: FF 02
00001FE1: FF 01
00001FE2: FF 10
00001FE3: FF 00
00001FE4: FF D8
00001FE5: FF 01
00001FE6: FF F0
00001FE7: FF EB
00001FE8: FF 04
00001FE9: FF 5B
00001FEA: FF 00
00001FEB: FF 00
00001FEC: FF 00
00001FED: FF 00
00001FEE: FF 00
00001FEF: FF 00
00001FF0: FF 00
00001FF1: FF 00
00001FF2: FF 00
00001FF3: FF 00
00001FF4: FF 00
00001FF5: FF 00
00001FF6: FF 00
00001FF7: FF 00
00001FF8: FF 00
00001FF9: FF 00
00001FFA: FF 00
00001FFB: FF 00
00001FFC: FF 00
00001FFD: FF 00
00001FFE: FF 00
00001FFF: FF 00