[BACK]Return to oosiop.ss CVS log [TXT][DIR] Up to [local] / sys / dev / microcode / siop

Annotation of sys/dev/microcode/siop/oosiop.ss, Revision 1.1

1.1     ! nbrk        1: ;      $OpenBSD: oosiop.ss,v 1.2 2004/10/01 04:08:45 jsg Exp $
        !             2: ;      $NetBSD: oosiop.ss,v 1.2 2003/04/06 09:48:42 tsutsui Exp $
        !             3:
        !             4: ;
        !             5: ; Copyright (c) 2001 Shuichiro URATA.  All rights reserved.
        !             6: ;
        !             7: ; Redistribution and use in source and binary forms, with or without
        !             8: ; modification, are permitted provided that the following conditions
        !             9: ; are met:
        !            10: ; 1. Redistributions of source code must retain the above copyright
        !            11: ;    notice, this list of conditions and the following disclaimer.
        !            12: ; 2. Redistributions in binary form must reproduce the above copyright
        !            13: ;    notice, this list of conditions and the following disclaimer in the
        !            14: ;    documentation and/or other materials provided with the distribution.
        !            15: ; 3. The name of the author may not be used to endorse or promote products
        !            16: ;    derived from this software without specific prior written permission.
        !            17: ;
        !            18: ; THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
        !            19: ; IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
        !            20: ; OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
        !            21: ; IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
        !            22: ; INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
        !            23: ; NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
        !            24: ; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
        !            25: ; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
        !            26: ; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
        !            27: ; THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        !            28: ;
        !            29:
        !            30: ; NCR 53c700 script
        !            31: ;
        !            32:
        !            33: ARCH 700
        !            34:
        !            35: ; interrupt codes
        !            36: ABSOLUTE int_done      = 0xbeef0000
        !            37: ABSOLUTE int_msgin     = 0xbeef0001
        !            38: ABSOLUTE int_extmsg    = 0xbeef0002
        !            39: ABSOLUTE int_resel     = 0xbeef0003
        !            40: ABSOLUTE int_res_id    = 0xbeef0004
        !            41: ABSOLUTE int_resfail   = 0xbeef0005
        !            42: ABSOLUTE int_disc      = 0xbeef0006
        !            43: ABSOLUTE int_err       = 0xdeadbeef
        !            44:
        !            45: ; patch entries
        !            46: ENTRY p_resel_msgin_move
        !            47: ENTRY p_select
        !            48: ENTRY p_datain_jump
        !            49: ENTRY p_dataout_jump
        !            50: ENTRY p_msgin_move
        !            51: ENTRY p_msgout_move
        !            52: ENTRY p_cmdout_move
        !            53: ENTRY p_status_move
        !            54: ENTRY p_extmsglen_move
        !            55: ENTRY p_extmsgin_move
        !            56:
        !            57:
        !            58: PROC  oosiop_script:
        !            59:
        !            60: ENTRY wait_reselect
        !            61: wait_reselect:
        !            62:        WAIT RESELECT REL(reselect_fail)
        !            63:        INT int_resel
        !            64: reselect_fail:
        !            65:        INT int_resfail
        !            66:
        !            67: ENTRY wait_resel_identify
        !            68: wait_resel_identify:
        !            69:        INT int_err, WHEN NOT MSG_IN
        !            70: p_resel_msgin_move:
        !            71:        MOVE 0, 0, WHEN MSG_IN
        !            72:        INT int_res_id
        !            73:
        !            74: ENTRY start_select
        !            75: start_select:
        !            76: p_select:
        !            77:        SELECT ATN 0, REL(wait_reselect)
        !            78:
        !            79: ENTRY phasedispatch
        !            80: phasedispatch:
        !            81:        JUMP REL(msgin), WHEN MSG_IN
        !            82:        JUMP REL(msgout), WHEN MSG_OUT
        !            83:        JUMP REL(status), WHEN STATUS
        !            84:        JUMP REL(cmdout), WHEN CMD
        !            85: p_datain_jump:
        !            86:        JUMP 0, WHEN DATA_IN
        !            87: p_dataout_jump:
        !            88:        JUMP 0, WHEN DATA_OUT
        !            89:        INT int_err
        !            90:
        !            91: msgin:
        !            92:        CLEAR ATN
        !            93: p_msgin_move:
        !            94:        MOVE 0, 0, WHEN MSG_IN
        !            95:        JUMP REL(complete), IF 0x00
        !            96:        JUMP REL(extmsgsetup), IF 0x01
        !            97:        JUMP REL(disconnect), IF 0x04
        !            98:        INT int_msgin
        !            99:
        !           100: ENTRY ack_msgin
        !           101: ack_msgin:
        !           102:        CLEAR ACK
        !           103:        JUMP REL(phasedispatch)
        !           104:
        !           105: ENTRY sendmsg
        !           106: sendmsg:
        !           107:        SET ATN
        !           108:        CLEAR ACK
        !           109: msgout:
        !           110: p_msgout_move:
        !           111:        MOVE 0, 0, WHEN MSG_OUT
        !           112:        CLEAR ATN
        !           113:        JUMP REL(phasedispatch)
        !           114:
        !           115: cmdout:
        !           116:        CLEAR ATN
        !           117: p_cmdout_move:
        !           118:        MOVE 0, 0, WHEN CMD
        !           119:        JUMP REL(phasedispatch)
        !           120:
        !           121: status:
        !           122: p_status_move:
        !           123:        MOVE 0, 0, WHEN STATUS
        !           124:        JUMP REL(phasedispatch)
        !           125:
        !           126: disconnect:
        !           127:        CLEAR ACK
        !           128:        WAIT DISCONNECT
        !           129:        INT int_disc
        !           130:
        !           131: complete:
        !           132:        CLEAR ACK
        !           133:        WAIT DISCONNECT
        !           134:        INT int_done
        !           135:
        !           136: ; receive extended message length
        !           137: extmsgsetup:
        !           138:        CLEAR ACK
        !           139:        INT int_err, IF NOT MSG_IN
        !           140: p_extmsglen_move:
        !           141:        MOVE 0, 0, WHEN MSG_IN
        !           142:        INT int_extmsg
        !           143:
        !           144: ; receive extended message
        !           145: ENTRY rcv_extmsg
        !           146: rcv_extmsg:
        !           147:        CLEAR ACK
        !           148:        INT int_err, IF NOT MSG_IN
        !           149: p_extmsgin_move:
        !           150:        MOVE 0, 0, WHEN MSG_IN
        !           151:        INT int_msgin

CVSweb