So-net無料ブログ作成
パソコン ブログトップ
- | 次の5件

PC-8001mkII の I/O マップ (暫定版) [パソコン]

〔本館〕サイトで公開しようかと思って、PC-8001mkII の I/O マップを作っていたのですが、思いがけず簡単に出来てしまいました。
グラフィック関係のポートがリストアップされていない等、まだまだ不完全ですが暫定版として公開します。
でも、これって誰も必要としていない情報ですよね(笑)

間違っている箇所もあるかと思いますので、もし間違いに気付かれましたら、ご指摘頂ければ大変ありがたいです。

レイアウトの都合上、かなり縮小して表示するように設定してあります。
残念ながら一部のブラウザで表示させると右端が切れてしまう場合や、レイアウトが崩れることもあるのですが、HTMLソースにはデータとしてはちゃんとありますので、ご入用の方はHTMLソースから切り出してください。
なお、HTML化をするに当たって、元のテキストファイルから文字実体参照に変換してある箇所もありますので、使用の際はご注意ください。


--------------------------------------------------------
 PC-8001mk2 I/O Map

                (MSB)   | bit-7 | bit-6 | bit-5 | bit-4 | bit-3 | bit-2 | bit-1 | bit-0 | (LSB)

--------------------------------------------------------

  00H - 0BH: キーボード入力

        (入力) 00H:(MSB)|   7   |   6   |   5   |   4   |   3   |   2   |   1   |   0   | (LSB)
        (入力) 01H:     | RETURN|   .   |   ,   |   =   |   +   |   *   |   9   |   8   |
        (入力) 02H:     |   G   |   F   |   E   |   D   |   C   |   B   |   A   |   @   |
        (入力) 03H:     |   O   |   N   |   M   |   L   |   K   |   J   |   I   |   H   |
        (入力) 04H:     |   W   |   V   |   U   |   T   |   S   |   R   |   Q   |   P   |
        (入力) 05H:     |   -   |   ^   |   ]   |   \   |   [   |   Z   |   Y   |   X   |
        (入力) 06H:     |   7   |   6   |   5   |   4   |   3   |   2   |   1   |   0   |
        (入力) 07H:     |   _   |   ?   |   <   |   >   |   +   |   *   |   )   |   (   |
        (入力) 08H:     |  CTRL | SHIFT | カナ  |  GRPH |  DEL  |   →  |   ↑  |  CLR  |
        (入力) 09H:     |  ESC  | SPACE |   f5  |   f4  |   f3  |   f2  |   f1  |  STOP |
        (入力) 0AH:     |       |       |       |       |       |       |       |       |
        (入力) 0BH:     |       |       |       |       |       |       |       |       |

  10H: プリンタデータ出力

        (出力)
                (MSB)   |  PD7  |  PD6  |  PD5  |  PD4  |  PD3  |  PD2  |  PD1  |  PD0  | (LSB)

  10H: 汎用出力ポート

        (出力)

                (MSB)   | UOP6  |       |       |       |       |       |       |       | (LSB)

                UOP6    : 汎用出力ポート #6

  10H: カレンダクロック(µPD1990) コントロール

        (出力)  

                (MSB)   |       |       |       |       |  CDO  |  C2   |  C1   |   C0  | (LSB)

                CDO     : データ出力
                C2 - C0 : コマンド出力

  11H - 1FH: ポート 10H のイメージ

  20H: USART(µPD8251)データポート(RS-232C #0/ CMT)

        (入出力)

                (MSB)   |   D7  |   D6  |   D5  |   D4  |   D3  |   D2  |   D1  |   D0  | (LSB)
 
  21H: USART(µPD8251)コントロールポート(RS-232C #0/ CMT)
 
        (出力) モード設定:非同期モード

                (MSB)   |   S2  |   S1  |   EP  |  PEN  |   L2  |   L1  |   B2  |   B1  | (LSB)
 
                S2,S1   : ストップビット                        (00:無効, 01:1bit, 10:1.5bit, 11:2bit)
                EP      : パリティ指定                          (0:奇数, 1:偶数)
                PEN     : パリティイネーブル                    (0:Disable, 1:Enable)
                L2,L1   : キャラクタ長                          (00:5bit, 01:6bit, 10:7bit, 11:8bit)
                B2,B1   : ボーレート                            (00:同期モード, 01:x1, 10:x16, 11:x64)
 
        (出力) モード設定:同期モード

                (MSB)   |  SCS  |  ESC  |   EP  |  PEN  |   L2  |   L1  |       |       | (LSB)
 
                SCS     : キャラクタ同期                        (0:ダブルSYNCキャラクタ, 1:シングルSYNCキャラクタ)
                ESC     : 外部同期検出                          (0:SYNDETは出力, 1:SYNDETは入力)
                EP      : パリティ指定                          (0:奇数, 1:偶数)
                PEN     : パリティイネーブル                    (0:Disable, 1:Enable)
                L2,L1   : キャラクタ長                          (00:5bit, 01:6bit, 10:7bit, 11:8bit)
 
        (出力) コマンド出力

                (MSB)   |   EH  |   IR  |  RTS  |   ER  |  SBRX |  RxE  |  DTR  |  TxEN | (LSB)
 
                EH      : HUNTモード時にSYNCキャラクタ検出開始  (0:NOP, 1:開始) (同期モードのみ)
                IR      : 内部リセット                          (0:NOP, 1:インストラクションモードへ戻す)
                RTS     : 送信要求                              (0:OFF, 1:ON)
                ER      : エラーリセット                        (0:NOP, 1:FE/OE/PEをリセット)
                SBRX    : センドブレイクキャラクタ              (0:NOP, 1:送信)
                RxE     : 受信イネーブル                        (0:Disable, 1:Enable)
                DTR     : データターミナルレディ                (0:OFF, 1:ON)
                TxEN    : 送信イネーブル                        (0:Disable, 1:Enable)
 
        (入力) ステータス読出

                (MSB)   |  DSR  | SYNDET|   FE  |   OE  |   PE  |  TxE  | RxRDY | TxRDY | (LSB)
 
                DSR     : データセットレディ                    (0:On, 1:Off)
                SYNDET  : SYNCキャラクタ検出                    (0:なし, 1:あり)
                FE      : フレーミングエラー                    (0:なし, 1:あり)
                OE      : オーバーランエラー                    (0:なし, 1:あり)
                PE      : パリティエラー                        (0:なし, 1:あり)
                TxE     : 送信バッファエンプティ                (0:フル, 1:エンプティ)
                RxRDY   : 受信レディ                            (0:ビジー, 1:レディ)
                TxRDY   : 送信レディ                            (0:ビジー, 1:レディ)
 
  22H - 2FH: ポート 20H, 21H のイメージ
 
  30H: システムコントロール1
 
        (出力) システムコントロール1

                (MSB)   |       |       |  CB2  |  CB1  | MOTOR |  CINH | COLOR |   40  | (LSB)
 
                CB2,CB1 : USART チャンネルコントロール          (00:CMT 600 baud, 01:CMT 1200 baud,
                                                                 10:RS-232C 非同期, 11:RS-232C 同期)
                MOTOR   : CMT モータコントロール                (0:OFF, 1:ON)
                CINH    : CMT キャリアコントロール              (0:マーク [2400Hz], 1:スペース [1200Hz])
                COLOR   : ディスプレイモードコントロール        (0:カラー, 1:モノクロ)
                40      : ディスプレイフォーマットコントロール  (0:40桁, 1:80桁)
 
        (入力) DIP-SW#1 ステータス入力

                (MSB)   |  UIP1 |  UIP2 | SW1-3 | SW1-4 | SW1-5 | SW1-6 | SW1-7 | SW1-8 | (LSB)
 
                UIP1    : 汎用入力ポート #1
                UIP2    : 汎用入力ポート #2
                SW1-3   : DIP-SW #1-3                           (0:ON, 1:OFF)
                SW1-4   : DIP-SW #1-4                           (0:ON, 1:OFF)
                SW1-5   : DIP-SW #1-5                           (0:ON, 1:OFF)
                SW1-6   : DIP-SW #1-6                           (0:ON, 1:OFF)
                SW1-7   : DIP-SW #1-7                           (0:ON, 1:OFF)
                SW1-8   : DIP-SW #1-8 起動時のBASICモード  (0:N-BASIC, 1:N80-BASIC)
 
  31H: システムコントロール3
 
        (出力) システムコントロール3

                (MSB)   |  BGG  |  BGR  |  BGB  |  CGM  |  GRPH | HCOLOR| MMODE | 4THROM| (LSB)
 
                BGG     : バックグラウンドカラー 緑成分         (0:OFF, 1:ON)
                BGR     : バックグラウンドカラー 赤成分         (0:OFF, 1:ON)
                BGG     : バックグラウンドカラー 青成分         (0:OFF, 1:ON)
                CGM     : カラーグラフィックモード              (0:640x200, 1:320x200)
                GRPH    : グラフィック表示                      (0:非表示, 1:表示)
                GMOD    : グラフィックモード                    (0:属性カラー/モード0, 1:モノクロ/モード1)
                4THROM  : 4th ROM アクセスコントロール          (0:許可, 1:禁止)
 
  32H - 3FH: ポート 30H, 31H のイメージ
 
  40H: システムコントロール2

        (出力) システムコントロール2

                (MSB)   |  UOP4 |  UOP3 |  BEEP |       |  CLDS |  CCK  |  CSTB |  PSTB | (LSB)
 
                UOP4    : 汎用出力ポート #4
                UOP3    : 汎用出力ポート #3
                BEEP    : ブザーコントロール                    (0:OFF, 1:ON)
                CLDS    : ディスプレイI/Fの同期コントロール     (0:同期パルス OFF, 1:同期パルス ON)
                CCK     : カレンダクロックへのシフトパルス      (0:パルスOFF, 1:パルスON)
                CSTB    : カレンダクロックへのストローブ信号    (0:OFF, 1:ON)
                PSTB    : プリンタへのストローブ信号            (0:ON, 1:OFF)
 
        (入力) システムコントロール2

                (MSB)   |       |       |  VRTC |  CDI  | EXTON |  DCD  |       |  BUSY | (LSB)
 
                VRTC    : CRTC からの垂直帰線同期               (0:表示/水平帰線サイクル, 1:垂直帰線サイクル)
                CDI     : カレンダクロックからのデータ
                EXTON   : ディスクユニット接続信号              (0:接続されている, 1:接続されていない)
                DCD     : データキャリアディテクト信号          (0:キャリア入力なし, 1:キャリア入力あり)
                BUSY    : プリンタからのビジー信号              (0:READY, 1:BUSY)
 
  41H - 4FH: ポート 40H のイメージ
 
  50H: CRTC(µPD3301) パラメータ出力
 
  51H: CRTC(µPD3301) コマンド出力
 
  60H - 68H: DMAC(µPD8257) コントロール
 
        (入出力) 60H: Ch#0 DMA 開始アドレス(5"DMAタイプのディスク用)
 
        F/L:0   (MSB)   |  A7   |  A6   |  A5   |  A4   |  A3   |  A2   |   A1  |   A0  | (LSB)
        F/L:1           |  A15  |  A14  |  A13  |  A12  |  A11  |  A10  |   A9  |   A8  |
 
                A15 - A0: DMA 開始アドレス
 
                アドレス拡張のためフリップフロップが設けられており、アクセスの度に反転する
 
        (入出力) 61H: Ch#0 ターミナルカウント(5"DMAタイプのディスク用)
 
        F/L:0   (MSB)   |  C7   |  C6   |  C5   |  C4   |  C3   |  C2   |   C1  |   C0  | (LSB)
        F/L:1           |  Rd   |  Wr   |  C13  |  C12  |  C11  |  C10  |   C9  |   C8  |
 
                C13 - C0: ターミナルカウントの値
                Rd,Wr   : 動作モード                            (00:Verify, 01:Write, 10:Read)
 
                アドレス拡張のためフリップフロップが設けられており、アクセスの度に反転する
 
        (入出力) 62H: Ch#1 DMA 開始アドレス(8"DMAタイプのディスク用)
 
        (入出力) 63H: Ch#1 ターミナルカウント(8"DMAタイプのディスク用)
 
        (入出力) 64H: Ch#2 DMA 開始アドレス(テキスト表示用)
 
        (入出力) 65H: Ch#2 ターミナルカウント(テキスト表示用)
 
        (入出力) 66H: Ch#3 DMA 開始アドレス(テキスト表示用オートロードバッファ)
 
        (入出力) 67H: Ch#3 ターミナルカウント(テキスト表示用オートロードバッファ)
 
        (出力)  68H: モードセット
 
                (MSB)   |  AL   |  TCS  |  EW   |  RP   |  EN3  |  EN2  |  EN1  |  EN0  | (LSB)
 
                AL      : オートロード
                TCS     : ターミナルカウントストップ
                EW      : 拡張ライト
                RP      : 回転優先
                EN3-EN0 : チャンネルイネーブル
 
        (入力)  68H: ステータスリード
 
                (MSB)   |   0   |   0   |   0   |   UP  |  TC3  |  TC2  |  TC1  |  TC0  | (LSB)
 
                UP      : UPDATEフラグ
                TC3-TC0 : TCステータスビット
 
  69H - 6FH: ポート 60H - 68H のイメージ
 
  70H - 7FH: 未使用
 
  80H - AFH: 拡張 I/O ポート(PC-8011/8012/8013 で使用可能)
 
  B0H: 汎用パラレル I/O 8ビット入力(PC-8011 で使用)
 
  B1H: 汎用パラレル I/O 8ビット出力(PC-8011 で使用)
 
  B2H: 汎用パラレル I/O 4ビット入力(PC-8011 で使用)
 
  B3H: 汎用パラレル I/O 4ビット出力(PC-8011 で使用)
 
  B4H - BFH: 未使用
 
  C0H: USART(µPD8251)データポート(RS-232C #1)(PC-8011 で使用)
 
        仕様は 20H と同じ
 
  C1H: USART(µPD8251)コントロールポート(RS-232C #1)(PC-8011 で使用)
 
        仕様は 21H と同じ
 
  C2H: USART(µPD8251)データポート(RS-232C #2)(PC-8011 で使用)
 
        仕様は 20H と同じ
 
  C3H: USART(µPD8251)コントロールポート(RS-232C #2)(PC-8011 で使用)

        仕様は 21H と同じ

  C4H - CAH: 不明

  CBH - CFH: 未使用

  D0H: IEEE-488(GP-IB) データ出力

  D1H: IEEE-488(GP-IB) データ入力

  D2H: IEEE-488(GP-IB) 制御信号出力

  D3H: IEEE-488(GP-IB) 8255コントロール

  D8H: IEEE-488(GP-IB) 制御信号入力

  DAH: IEEE-488(GP-IB) マイアドレス モード入力

  DCH: IEEE-488(GP-IB) ストローブコントロール出力

  DEH: IEEE-488(GP-IB) モードコントロール出力

  E0H: メモリーバンク制御 (拡張 ROM:本体側)

  E1H: メモリーバンク制御 (拡張 ROM:拡張ユニット側)

  E2H: メモリーバンク制御 (拡張 RAM)

        (出力)  メモリバンク選択

                (MSB)   |  R3WR |  R2WR |  R1WR |  R0WR |  R3RD |  R2RD |  R1RD | R0RD  | (LSB)

                R3WR    : 拡張 RAM #3 書き込み許可              (0:禁止, 1:許可)
                R2WR    : 拡張 RAM #2 書き込み許可              (0:禁止, 1:許可)
                R1WR    : 拡張 RAM #1 書き込み許可              (0:禁止, 1:許可)
                R0WR    : 拡張 RAM #0 書き込み許可              (0:禁止, 1:許可)
                R3RD    : 拡張 RAM #3 読み出し許可              (0:禁止, 1:許可)
                R2RD    : 拡張 RAM #2 読み出し許可              (0:禁止, 1:許可)
                R1RD    : 拡張 RAM #1 読み出し許可              (0:禁止, 1:許可)
                R0RD    : 拡張 RAM #0 読み出し許可              (0:禁止, 1:許可)

                R3RD - R0RD は「許可」を複数個選択することが可能ですが意味をなしません


        (入力)  メモリバンクステータス

                (MSB)   |  R3WR |  R2WR |  R1WR |  R0WR |  R3RD |  R2RD |  R1RD | R0RD  | (LSB)

                R3WR    : 拡張 RAM #3 書き込み                  (0:許可, 1:禁止)
                R2WR    : 拡張 RAM #2 書き込み                  (0:許可, 1:禁止)
                R1WR    : 拡張 RAM #1 書き込み                  (0:許可, 1:禁止)
                R0WR    : 拡張 RAM #0 書き込み                  (0:許可, 1:禁止)
                R3RD    : 拡張 RAM #3 読み出し                  (0:許可, 1:禁止)
                R2RD    : 拡張 RAM #2 読み出し                  (0:許可, 1:禁止)
                R1RD    : 拡張 RAM #1 読み出し                  (0:許可, 1:禁止)
                R0RD    : 拡張 RAM #0 読み出し                  (0:許可, 1:禁止)

  E3H: メモリーバンク制御 RAMバンク選択

  E4H: 割り込みコントローラ(µPD8214) カレントステータス出力 (INT0 - INT7)

  E5H: 割り込みコントローラ(µPD8214) カレントステータス出力 (INT8 - INT15)

  E6H: 割り込みコントローラ(µPD8214) 割り込みマスク出力

  E7H: メモリーバンク制御 モード選択

  E8H - EFH: 未使用

  F3H: 不明

  F8H: 5"インテリジェントタイプ フロッピディスク モーターコントロール

  FCH: パラレルインターフェース(µPD8255) コマンド/データ入力
       (5"インテリジェントタイプ フロッピディスク)

        (入力)  ポートA

                (MSB)   |  PA7  |  PA6  |  PA5  |  PA4  |  PA3  |  PA2  |  PA1  |  PA0  | (LSB)

                PA7-PA0 : 入力コマンド/データ

  FDH: パラレルインターフェース(µPD8255) コマンド/データ出力
       (5"インテリジェントタイプ フロッピディスク)

        (出力)  ポートB

                (MSB)   |  PB7  |  PB6  |  PB5  |  PB4  |  PB3  |  PB2  |  PB1  |  PB0  | (LSB)

                PB7-PB0 : 出力コマンド/データ

  FEH: パラレルインターフェース(µPD8255) ハンドシェイク入出力
       (5"インテリジェントタイプ フロッピディスク)

        (入出力) ポートC

                (MSB)   |  PC7  |  PC6  |  PC5  |  PC4  |  PC3  |  PC2  |  PC1  |  PC0  | (LSB)

                PC7     : Attention     (送信用)
                PC6     : Data Accepted (送信用)
                PC5     : Ready For Data(送信用)
                PC4     : Data Valid    (送信用)
                PC3     : (Attention)   (受信用)
                PC2     : Data Accepted (受信用)
                PC1     : Ready For Data(受信用)
                PC0     : Data Valid    (受信用)

                ポートCでのハンドシェイクは、直接このポートを制御するのではなく、FFH を使用して行う

  FFH: パラレルインターフェース(µPD8255) コントロール出力
       (5"インテリジェントタイプ フロッピディスク)

        (出力)  モード選択

                (MSB)   |   1   | GAMS2 | GAMS1 |   PA  |  PCH  | GBMS  |   PB  |  PCL  | (LSB)

                GAMS2, GAMS1
                        : モード選択(PA / PC High)            (00:モード0, 01:モード1,
                                                                 10:モード2, 11:モード3)
                PA      : ポートA入出力                        (0:出力ポート, 1:入力ポート)
                PCH     : ポートC上位入出力                    (0:出力ポート, 1:入力ポート)
                GBMS    : モード選択(PB / PC Low)             (0:モード0, 1:モード1)
                PB      : ポートB入出力                        (0:出力ポート, 1:入力ポート)
                PCL     : ポートC下位入出力                    (0:出力ポート, 1:入力ポート)

        (出力)  PIO コントロール

                (MSB)   |   0   |       |       |       |   D3  |   D2  |   D1  |  RSET | (LSB)

                D3 - D0 : ポートCビット選択                    (000:PC0選択, 001:PC1選択,
                                                                 010;PC2選択, 011:PC3選択,
                                                                 100:PC4選択, 101:PC5選択,
                                                                 110:PC6選択, 111:PC7選択)
                RSET    : ビットセット/リセット                (0:リセット, 1:セット)
 
///////////////////////////////////////////////////////


タグ:PC-8001

Undocumented PC-8001 / 8801 【こっそり追記あり】 [パソコン]

今回は、「PC-TechKnow」シリーズ (アスキー出版)や「PC-8001 マシン語活用ハンドブック」「○○解析マニュアル」 (秀和システムトレーディング)にも載っていないような、PC-8001 / 8801 のディープでコアな部分を BASIC 解析マニア(笑)の Thunderbolt が紹介します。




行番号 0

Microsoft 系の BASIC では、行番号として付けられる数字の範囲は1~65529までのはずですが、N-BASIC では行番号 0 の行が入力できてしまいます。N88-BASIC では行番号 0 の行は Syntax error になります。

また、どちらの BASIC でも AUTO コマンドでは、AUTO 0, 10 と入力してもエラーになりません。

しかし、N88-BASIC では、行番号 0 の行は Syntax error になるので、0 A=10 等と入力すると Syntax error が発生して、再度行番号 0 が表示されます。
この状態は、先頭の行番号を変更して 0 以外にするか、STOP キーか Ctrl-C で AUTO モードを中断するまで続きます。

ちなみに AUTO コマンドの書式は以下のとおりです。
書式: AUTO [ 行番号 ][, 増分 ]
「行番号」は0~65529、「増分」は1~65529までの整数値でなければならず、式や数値変数は使用できません。
式や上記範囲外の整数値や実数値はエラー 'SN Error'/'Syntax error' になります。
文字列や文字型変数を指定した場合も 'TM Error'/'Type mismatch' にならず、 'SN Error'/'Syntax error' になります。


「ON ERROR GOTO 行番号」でエラートラップルーチンを指定することが出来ますが、このときの飛び先に、行番号 0 の行を指定することはできません。
これは、ON ERROR GOTO 0 がエラートラップの指定解除に使われる書式なので、仕方がありません。
まぁ、通常はそんなプログラムの組み方をすることはないでしょうが…

ちなみに ON ERROR GOTO コマンドの書式は以下のとおりです。
書式1: ON ERROR GOTO 行番号
書式2: ON ERROR GOTO 0
書式1はエラーが発生した時のトラップルーチンの飛び先を設定する場合、書式2はエラーが発生した時のトラップルーチンの飛び先指定を解除する場合です。



配列変数の添字に付けるカッコ

BASIC の数式や文字列式の計算順序の優先順位を変えたい場合は丸カッコ '(', ')' を使いますが、大抵の方は配列変数の添字にも丸カッコを付けていると思います。
実は N-BASIC と N88-BASIC では、配列変数の添字のカッコは大カッコ '[', ']' が付けられます。
もちろん、ディスクから起動した場合でも可能です。
カッコが複雑に付けられた式も、少しは読み易くなります。

今では、テキストエディタに「対応するカッコの強調表示」なんて機能もありますから、便利になったものですね。

残念なことに、PC-9801 で採用されたN88-BASIC (86) では使えなくなりました。
PC-8801 シリーズ用のリファレンスマニュアルを参考に自社開発されたそうですから、仕方がないですね。
マニュアルには載ってませんから…


PRINT USING

PC-8001 / 8801 リファレンスマニュアルでは PRINT と PRINT USING が別の項目として記述してあり、書式としては PRINT USING <書式制御文字列> ; <式> としか書いてありませんが、実は USING は PRINT の直後にある必要はなく、PRINT "Undefined error occured in "; USING "#####"; ERL という書き方ができます。
ちなみに、ERL はエラーが起きた行を示すシステム変数です。

もちろん PRINT USING "Undefined error occured in #####"; ERL と書いてもいいのですが、書式制御文字列が長いと処理時間が長くなるので、大量に PRINT USING を使う場合の高速化のテクニックとして使われていました。


2009/10/24 追記ここから

CLOAD ? / LOAD ?

カセットテープに BASIC プログラムをセーブした後で、正常に書き込めているかどうかを確かめるコマンドは、
N-BASIC では CLOAD ? "abc"
N88-BASIC では LOAD ? "CAS:abc"
ですが、実は CLOAD PRINT "abc" / LOAD PRINT "abc" と書いても問題なく動作します。

これは、'?' が PRINT コマンドの短縮形として認識されている為なのですが、簡単に確かめる方法があります。
N-BASIC の場合は 10 CLOAD ? "abc"
N88-BASIC の場合は 10 LOAD ? "abc"
とプログラムを打ち込んでリターンキーを押してください。
リストを表示させると 10 CLOAD PRINT "abc" / 10 LOAD PRINT "abc" と表示されます。

2009/10/24 追記ここまで

- | 次の5件 パソコン ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。