Home | History | Annotate | Line # | Download | only in siop
      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