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