Home | History | Annotate | Line # | Download | only in dev
siop_script.ss revision 1.1
      1  1.1  chopps ; NCR 53c710 script
      2  1.1  chopps ;
      3  1.1  chopps ABSOLUTE ds_Device	= 0
      4  1.1  chopps ABSOLUTE ds_MsgOut 	= ds_Device + 4
      5  1.1  chopps ABSOLUTE ds_Cmd		= ds_MsgOut + 8
      6  1.1  chopps ABSOLUTE ds_Status	= ds_Cmd + 8
      7  1.1  chopps ABSOLUTE ds_Msg		= ds_Status + 8
      8  1.1  chopps ABSOLUTE ds_MsgIn	= ds_Msg + 8
      9  1.1  chopps ABSOLUTE ds_ExtMsg	= ds_MsgIn + 8
     10  1.1  chopps ABSOLUTE ds_SyncMsg	= ds_ExtMsg + 8
     11  1.1  chopps ABSOLUTE ds_Data1	= ds_SyncMsg + 8
     12  1.1  chopps ABSOLUTE ds_Data2	= ds_Data1 + 8
     13  1.1  chopps ABSOLUTE ds_Data3	= ds_Data2 + 8
     14  1.1  chopps ABSOLUTE ds_Data4	= ds_Data3 + 8
     15  1.1  chopps ABSOLUTE ds_Data5	= ds_Data4 + 8
     16  1.1  chopps ABSOLUTE ds_Data6	= ds_Data5 + 8
     17  1.1  chopps ABSOLUTE ds_Data7	= ds_Data6 + 8
     18  1.1  chopps ABSOLUTE ds_Data8	= ds_Data7 + 8
     19  1.1  chopps ABSOLUTE ds_Data9	= ds_Data8 + 8
     20  1.1  chopps 
     21  1.1  chopps ABSOLUTE ok		= 0xff00
     22  1.1  chopps ABSOLUTE err1		= 0xff01
     23  1.1  chopps ABSOLUTE err2		= 0xff02
     24  1.1  chopps ABSOLUTE err3		= 0xff03
     25  1.1  chopps ABSOLUTE err4		= 0xff04
     26  1.1  chopps ABSOLUTE err5		= 0xff05
     27  1.1  chopps ABSOLUTE err6		= 0xff06
     28  1.1  chopps ABSOLUTE err7		= 0xff07
     29  1.1  chopps ABSOLUTE err8		= 0xff08
     30  1.1  chopps ABSOLUTE err9		= 0xff09
     31  1.1  chopps ABSOLUTE err10		= 0xff0a
     32  1.1  chopps 
     33  1.1  chopps ENTRY	scripts
     34  1.1  chopps ENTRY	switch
     35  1.1  chopps ENTRY	wait_reselect
     36  1.1  chopps 
     37  1.1  chopps PROC	scripts:
     38  1.1  chopps 
     39  1.1  chopps scripts:
     40  1.1  chopps 
     41  1.1  chopps 	SELECT ATN FROM ds_Device, REL(reselect)
     42  1.1  chopps ;
     43  1.1  chopps switch:
     44  1.1  chopps 	JUMP REL(msgin), WHEN MSG_IN
     45  1.1  chopps 	JUMP REL(msgout), IF MSG_OUT
     46  1.1  chopps 	JUMP REL(command_phase), IF CMD
     47  1.1  chopps 	JUMP REL(dataout), IF DATA_OUT
     48  1.1  chopps 	JUMP REL(datain), IF DATA_IN
     49  1.1  chopps 	JUMP REL(end), IF STATUS
     50  1.1  chopps 
     51  1.1  chopps 	INT err1
     52  1.1  chopps 
     53  1.1  chopps msgin:
     54  1.1  chopps 	MOVE FROM ds_MsgIn, WHEN MSG_IN
     55  1.1  chopps 	CLEAR ACK
     56  1.1  chopps 	JUMP REL(ext_msg), IF 0x01	; extended message
     57  1.1  chopps 	JUMP REL(disc), IF 0x04		; disconnect message
     58  1.1  chopps 	JUMP REL(switch), IF 0x02	; ignore save data pointers
     59  1.1  chopps 	JUMP REL(msg_rej), IF 0x07	; ignore message reject
     60  1.1  chopps 	JUMP REL(switch), IF 0x03	; ignore restore data pointers
     61  1.1  chopps 	INT err2
     62  1.1  chopps 
     63  1.1  chopps msg_rej:
     64  1.1  chopps 	CLEAR ATN
     65  1.1  chopps 	JUMP REL(switch)
     66  1.1  chopps 
     67  1.1  chopps ext_msg:
     68  1.1  chopps 	MOVE FROM ds_ExtMsg, WHEN MSG_IN
     69  1.1  chopps 	JUMP REL(sync_msg), IF 0x03
     70  1.1  chopps 	int err3
     71  1.1  chopps 
     72  1.1  chopps sync_msg:
     73  1.1  chopps 	CLEAR ACK
     74  1.1  chopps 	MOVE FROM ds_SyncMsg, WHEN MSG_IN
     75  1.1  chopps 	CLEAR ACK
     76  1.1  chopps 	JUMP REL(switch)
     77  1.1  chopps 
     78  1.1  chopps disc:
     79  1.1  chopps 	WAIT DISCONNECT
     80  1.1  chopps 
     81  1.1  chopps 	INT err10			; let host know about disconnect
     82  1.1  chopps 
     83  1.1  chopps wait_reselect:
     84  1.1  chopps 	WAIT RESELECT REL(select_adr)
     85  1.1  chopps 
     86  1.1  chopps 	INT err4, WHEN NOT MSG_IN
     87  1.1  chopps 	MOVE FROM ds_Msg, WHEN MSG_IN
     88  1.1  chopps 	CLEAR ACK
     89  1.1  chopps 	INT err9			; let host know about reconnect
     90  1.1  chopps 	JUMP REL(switch)
     91  1.1  chopps 
     92  1.1  chopps msgout:
     93  1.1  chopps 	MOVE FROM ds_MsgOut, WHEN MSG_OUT
     94  1.1  chopps 	JUMP REL(switch)
     95  1.1  chopps 
     96  1.1  chopps command_phase:
     97  1.1  chopps 	CLEAR ATN
     98  1.1  chopps 	MOVE FROM ds_Cmd, WHEN CMD
     99  1.1  chopps 	JUMP REL(switch)
    100  1.1  chopps 
    101  1.1  chopps dataout:
    102  1.1  chopps 	MOVE FROM ds_Data1, WHEN DATA_OUT
    103  1.1  chopps 	CALL REL(switch), WHEN NOT DATA_OUT
    104  1.1  chopps 	MOVE FROM ds_Data2, WHEN DATA_OUT
    105  1.1  chopps 	CALL REL(switch), WHEN NOT DATA_OUT
    106  1.1  chopps 	MOVE FROM ds_Data3, WHEN DATA_OUT
    107  1.1  chopps 	CALL REL(switch), WHEN NOT DATA_OUT
    108  1.1  chopps 	MOVE FROM ds_Data4, WHEN DATA_OUT
    109  1.1  chopps 	CALL REL(switch), WHEN NOT DATA_OUT
    110  1.1  chopps 	MOVE FROM ds_Data5, WHEN DATA_OUT
    111  1.1  chopps 	CALL REL(switch), WHEN NOT DATA_OUT
    112  1.1  chopps 	MOVE FROM ds_Data6, WHEN DATA_OUT
    113  1.1  chopps 	CALL REL(switch), WHEN NOT DATA_OUT
    114  1.1  chopps 	MOVE FROM ds_Data7, WHEN DATA_OUT
    115  1.1  chopps 	CALL REL(switch), WHEN NOT DATA_OUT
    116  1.1  chopps 	MOVE FROM ds_Data8, WHEN DATA_OUT
    117  1.1  chopps 	CALL REL(switch), WHEN NOT DATA_OUT
    118  1.1  chopps 	MOVE FROM ds_Data9, WHEN DATA_OUT
    119  1.1  chopps 	CALL REL(switch)
    120  1.1  chopps 
    121  1.1  chopps datain:
    122  1.1  chopps 	MOVE FROM ds_Data1, WHEN DATA_IN
    123  1.1  chopps 	CALL REL(switch), WHEN NOT DATA_IN
    124  1.1  chopps 	MOVE FROM ds_Data2, WHEN DATA_IN
    125  1.1  chopps 	CALL REL(switch), WHEN NOT DATA_IN
    126  1.1  chopps 	MOVE FROM ds_Data3, WHEN DATA_IN
    127  1.1  chopps 	CALL REL(switch), WHEN NOT DATA_IN
    128  1.1  chopps 	MOVE FROM ds_Data4, WHEN DATA_IN
    129  1.1  chopps 	CALL REL(switch), WHEN NOT DATA_IN
    130  1.1  chopps 	MOVE FROM ds_Data5, WHEN DATA_IN
    131  1.1  chopps 	CALL REL(switch), WHEN NOT DATA_IN
    132  1.1  chopps 	MOVE FROM ds_Data6, WHEN DATA_IN
    133  1.1  chopps 	CALL REL(switch), WHEN NOT DATA_IN
    134  1.1  chopps 	MOVE FROM ds_Data7, WHEN DATA_IN
    135  1.1  chopps 	CALL REL(switch), WHEN NOT DATA_IN
    136  1.1  chopps 	MOVE FROM ds_Data8, WHEN DATA_IN
    137  1.1  chopps 	CALL REL(switch), WHEN NOT DATA_IN
    138  1.1  chopps 	MOVE FROM ds_Data9, WHEN DATA_IN
    139  1.1  chopps 	CALL REL(switch)
    140  1.1  chopps 
    141  1.1  chopps end:
    142  1.1  chopps 	MOVE FROM ds_Status, WHEN STATUS
    143  1.1  chopps 	int err5, WHEN NOT MSG_IN
    144  1.1  chopps 	MOVE FROM ds_Msg, WHEN MSG_IN
    145  1.1  chopps 	CLEAR ACK
    146  1.1  chopps 	WAIT DISCONNECT
    147  1.1  chopps 	INT ok
    148  1.1  chopps 	JUMP REL(wait_reselect)
    149  1.1  chopps 
    150  1.1  chopps reselect:
    151  1.1  chopps 	WAIT RESELECT REL(select_adr)
    152  1.1  chopps 	INT err6
    153  1.1  chopps 
    154  1.1  chopps 	INT err4, WHEN NOT MSG_IN
    155  1.1  chopps 	MOVE FROM ds_Msg, WHEN MSG_IN
    156  1.1  chopps 	CLEAR ACK
    157  1.1  chopps 	JUMP REL(switch)
    158  1.1  chopps 
    159  1.1  chopps select_adr:
    160  1.1  chopps 	MOVE CTEST2 & 0x40 to SFBR	; get Sig_P
    161  1.1  chopps 	INT err7
    162  1.1  chopps 	JUMP REL(scripts)
    163