1*7b4697bdStsutsui; $NetBSD: oosiop.ss,v 1.2 2003/04/06 09:48:42 tsutsui Exp $ 28dce160cSfredette 38dce160cSfredette; 4*7b4697bdStsutsui; Copyright (c) 2001 Shuichiro URATA. All rights reserved. 58dce160cSfredette; 68dce160cSfredette; Redistribution and use in source and binary forms, with or without 78dce160cSfredette; modification, are permitted provided that the following conditions 88dce160cSfredette; are met: 98dce160cSfredette; 1. Redistributions of source code must retain the above copyright 108dce160cSfredette; notice, this list of conditions and the following disclaimer. 118dce160cSfredette; 2. Redistributions in binary form must reproduce the above copyright 128dce160cSfredette; notice, this list of conditions and the following disclaimer in the 138dce160cSfredette; documentation and/or other materials provided with the distribution. 14*7b4697bdStsutsui; 3. The name of the author may not be used to endorse or promote products 15*7b4697bdStsutsui; derived from this software without specific prior written permission. 168dce160cSfredette; 178dce160cSfredette; THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 188dce160cSfredette; IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 198dce160cSfredette; OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 208dce160cSfredette; IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 218dce160cSfredette; INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 228dce160cSfredette; NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 238dce160cSfredette; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 248dce160cSfredette; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 258dce160cSfredette; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 268dce160cSfredette; THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 278dce160cSfredette; 288dce160cSfredette 298dce160cSfredette; NCR 53c700 script 308dce160cSfredette; 31*7b4697bdStsutsui 328dce160cSfredetteARCH 700 338dce160cSfredette 34*7b4697bdStsutsui; interrupt codes 35*7b4697bdStsutsuiABSOLUTE int_done = 0xbeef0000 36*7b4697bdStsutsuiABSOLUTE int_msgin = 0xbeef0001 37*7b4697bdStsutsuiABSOLUTE int_extmsg = 0xbeef0002 38*7b4697bdStsutsuiABSOLUTE int_resel = 0xbeef0003 39*7b4697bdStsutsuiABSOLUTE int_res_id = 0xbeef0004 40*7b4697bdStsutsuiABSOLUTE int_resfail = 0xbeef0005 41*7b4697bdStsutsuiABSOLUTE int_disc = 0xbeef0006 42*7b4697bdStsutsuiABSOLUTE int_err = 0xdeadbeef 438dce160cSfredette 44*7b4697bdStsutsui; patch entries 45*7b4697bdStsutsuiENTRY p_resel_msgin_move 46*7b4697bdStsutsuiENTRY p_select 47*7b4697bdStsutsuiENTRY p_datain_jump 48*7b4697bdStsutsuiENTRY p_dataout_jump 49*7b4697bdStsutsuiENTRY p_msgin_move 50*7b4697bdStsutsuiENTRY p_msgout_move 51*7b4697bdStsutsuiENTRY p_cmdout_move 52*7b4697bdStsutsuiENTRY p_status_move 53*7b4697bdStsutsuiENTRY p_extmsglen_move 54*7b4697bdStsutsuiENTRY p_extmsgin_move 558dce160cSfredette 568dce160cSfredette 578dce160cSfredettePROC oosiop_script: 588dce160cSfredette 59*7b4697bdStsutsuiENTRY wait_reselect 60*7b4697bdStsutsuiwait_reselect: 61*7b4697bdStsutsui WAIT RESELECT REL(reselect_fail) 62*7b4697bdStsutsui INT int_resel 63*7b4697bdStsutsuireselect_fail: 64*7b4697bdStsutsui INT int_resfail 658dce160cSfredette 66*7b4697bdStsutsuiENTRY wait_resel_identify 67*7b4697bdStsutsuiwait_resel_identify: 68*7b4697bdStsutsui INT int_err, WHEN NOT MSG_IN 69*7b4697bdStsutsuip_resel_msgin_move: 70*7b4697bdStsutsui MOVE 0, 0, WHEN MSG_IN 71*7b4697bdStsutsui INT int_res_id 728dce160cSfredette 73*7b4697bdStsutsuiENTRY start_select 74*7b4697bdStsutsuistart_select: 75*7b4697bdStsutsuip_select: 76*7b4697bdStsutsui SELECT ATN 0, REL(wait_reselect) 77*7b4697bdStsutsui 78*7b4697bdStsutsuiENTRY phasedispatch 79*7b4697bdStsutsuiphasedispatch: 80*7b4697bdStsutsui JUMP REL(msgin), WHEN MSG_IN 81*7b4697bdStsutsui JUMP REL(msgout), WHEN MSG_OUT 82*7b4697bdStsutsui JUMP REL(status), WHEN STATUS 83*7b4697bdStsutsui JUMP REL(cmdout), WHEN CMD 84*7b4697bdStsutsuip_datain_jump: 85*7b4697bdStsutsui JUMP 0, WHEN DATA_IN 86*7b4697bdStsutsuip_dataout_jump: 87*7b4697bdStsutsui JUMP 0, WHEN DATA_OUT 88*7b4697bdStsutsui INT int_err 898dce160cSfredette 908dce160cSfredettemsgin: 918dce160cSfredette CLEAR ATN 92*7b4697bdStsutsuip_msgin_move: 93*7b4697bdStsutsui MOVE 0, 0, WHEN MSG_IN 94*7b4697bdStsutsui JUMP REL(complete), IF 0x00 95*7b4697bdStsutsui JUMP REL(extmsgsetup), IF 0x01 96*7b4697bdStsutsui JUMP REL(disconnect), IF 0x04 97*7b4697bdStsutsui INT int_msgin 988dce160cSfredette 99*7b4697bdStsutsuiENTRY ack_msgin 100*7b4697bdStsutsuiack_msgin: 1018dce160cSfredette CLEAR ACK 102*7b4697bdStsutsui JUMP REL(phasedispatch) 1038dce160cSfredette 104*7b4697bdStsutsuiENTRY sendmsg 105*7b4697bdStsutsuisendmsg: 1068dce160cSfredette SET ATN 1078dce160cSfredette CLEAR ACK 1088dce160cSfredettemsgout: 109*7b4697bdStsutsuip_msgout_move: 110*7b4697bdStsutsui MOVE 0, 0, WHEN MSG_OUT 1118dce160cSfredette CLEAR ATN 112*7b4697bdStsutsui JUMP REL(phasedispatch) 1138dce160cSfredette 114*7b4697bdStsutsuicmdout: 115*7b4697bdStsutsui CLEAR ATN 116*7b4697bdStsutsuip_cmdout_move: 117*7b4697bdStsutsui MOVE 0, 0, WHEN CMD 118*7b4697bdStsutsui JUMP REL(phasedispatch) 1198dce160cSfredette 120*7b4697bdStsutsuistatus: 121*7b4697bdStsutsuip_status_move: 122*7b4697bdStsutsui MOVE 0, 0, WHEN STATUS 123*7b4697bdStsutsui JUMP REL(phasedispatch) 1248dce160cSfredette 125*7b4697bdStsutsuidisconnect: 1268dce160cSfredette CLEAR ACK 1278dce160cSfredette WAIT DISCONNECT 128*7b4697bdStsutsui INT int_disc 129*7b4697bdStsutsui 130*7b4697bdStsutsuicomplete: 131*7b4697bdStsutsui CLEAR ACK 132*7b4697bdStsutsui WAIT DISCONNECT 133*7b4697bdStsutsui INT int_done 134*7b4697bdStsutsui 135*7b4697bdStsutsui; receive extended message length 136*7b4697bdStsutsuiextmsgsetup: 137*7b4697bdStsutsui CLEAR ACK 138*7b4697bdStsutsui INT int_err, IF NOT MSG_IN 139*7b4697bdStsutsuip_extmsglen_move: 140*7b4697bdStsutsui MOVE 0, 0, WHEN MSG_IN 141*7b4697bdStsutsui INT int_extmsg 142*7b4697bdStsutsui 143*7b4697bdStsutsui; receive extended message 144*7b4697bdStsutsuiENTRY rcv_extmsg 145*7b4697bdStsutsuircv_extmsg: 146*7b4697bdStsutsui CLEAR ACK 147*7b4697bdStsutsui INT int_err, IF NOT MSG_IN 148*7b4697bdStsutsuip_extmsgin_move: 149*7b4697bdStsutsui MOVE 0, 0, WHEN MSG_IN 150*7b4697bdStsutsui INT int_msgin 151