siop2_script.ss revision 1.1
11.1Sis; $NetBSD: siop2_script.ss,v 1.1 1999/03/07 22:16:20 is Exp $ 21.1Sis 31.1Sis; 41.1Sis; Copyright (c) 1998 Michael L. Hitch 51.1Sis; All rights reserved. 61.1Sis; 71.1Sis; Redistribution and use in source and binary forms, with or without 81.1Sis; modification, are permitted provided that the following conditions 91.1Sis; are met: 101.1Sis; 1. Redistributions of source code must retain the above copyright 111.1Sis; notice, this list of conditions and the following disclaimer. 121.1Sis; 2. Redistributions in binary form must reproduce the above copyright 131.1Sis; notice, this list of conditions and the following disclaimer in the 141.1Sis; documentation and/or other materials provided with the distribution. 151.1Sis; 3. All advertising materials mentioning features or use of this software 161.1Sis; must display the following acknowledgement: 171.1Sis; This product includes software developed by Michael L. Hitch. 181.1Sis; 4. The name of the author may not be used to endorse or promote products 191.1Sis; derived from this software without specific prior written permission 201.1Sis; 211.1Sis; THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 221.1Sis; IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 231.1Sis; OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 241.1Sis; IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 251.1Sis; INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 261.1Sis; NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 271.1Sis; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 281.1Sis; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 291.1Sis; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 301.1Sis; THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 311.1Sis; 321.1Sis 331.1Sis; NCR 53c770 script 341.1Sis; 351.1SisARCH 720 361.1Sis; 371.1SisABSOLUTE ds_Device = 0 381.1SisABSOLUTE ds_MsgOut = ds_Device + 4 391.1SisABSOLUTE ds_Cmd = ds_MsgOut + 8 401.1SisABSOLUTE ds_Status = ds_Cmd + 8 411.1SisABSOLUTE ds_Msg = ds_Status + 8 421.1SisABSOLUTE ds_MsgIn = ds_Msg + 8 431.1SisABSOLUTE ds_ExtMsg = ds_MsgIn + 8 441.1SisABSOLUTE ds_SyncMsg = ds_ExtMsg + 8 451.1SisABSOLUTE ds_Data1 = ds_SyncMsg + 8 461.1SisABSOLUTE ds_Data2 = ds_Data1 + 8 471.1SisABSOLUTE ds_Data3 = ds_Data2 + 8 481.1SisABSOLUTE ds_Data4 = ds_Data3 + 8 491.1SisABSOLUTE ds_Data5 = ds_Data4 + 8 501.1SisABSOLUTE ds_Data6 = ds_Data5 + 8 511.1SisABSOLUTE ds_Data7 = ds_Data6 + 8 521.1SisABSOLUTE ds_Data8 = ds_Data7 + 8 531.1SisABSOLUTE ds_Data9 = ds_Data8 + 8 541.1Sis 551.1SisABSOLUTE ok = 0xff00 561.1SisABSOLUTE err1 = 0xff01 571.1SisABSOLUTE err2 = 0xff02 581.1SisABSOLUTE err3 = 0xff03 591.1SisABSOLUTE err4 = 0xff04 601.1SisABSOLUTE err5 = 0xff05 611.1SisABSOLUTE err6 = 0xff06 621.1SisABSOLUTE err7 = 0xff07 631.1SisABSOLUTE err8 = 0xff08 641.1SisABSOLUTE err9 = 0xff09 651.1SisABSOLUTE err10 = 0xff0a 661.1Sis 671.1SisENTRY scripts 681.1SisENTRY switch 691.1SisENTRY wait_reselect 701.1SisENTRY dataout 711.1SisENTRY datain 721.1Sis 731.1SisPROC scripts: 741.1Sis 751.1Sisscripts: 761.1Sis 771.1Sis SELECT ATN FROM ds_Device, REL(reselect) 781.1Sis; 791.1Sisswitch: 801.1Sis JUMP REL(msgin), WHEN MSG_IN 811.1Sis JUMP REL(msgout), IF MSG_OUT 821.1Sis JUMP REL(command_phase), IF CMD 831.1Sis JUMP REL(dataout), IF DATA_OUT 841.1Sis JUMP REL(datain), IF DATA_IN 851.1Sis JUMP REL(end), IF STATUS 861.1Sis 871.1Sis INT err5 ; Unrecognized phase 881.1Sis 891.1Sismsgin: 901.1Sis MOVE FROM ds_MsgIn, WHEN MSG_IN 911.1Sis JUMP REL(ext_msg), IF 0x01 ; extended message 921.1Sis JUMP REL(disc), IF 0x04 ; disconnect message 931.1Sis JUMP REL(msg_sdp), IF 0x02 ; save data pointers 941.1Sis JUMP REL(msg_rej), IF 0x07 ; message reject 951.1Sis JUMP REL(msg_rdp), IF 0x03 ; restore data pointers 961.1Sis INT err6 ; unrecognized message 971.1Sis 981.1Sismsg_rdp: 991.1Sismsg_rej: 1001.1Sis CLEAR ACK 1011.1Sis CLEAR ATN 1021.1Sis JUMP REL(switch) 1031.1Sis 1041.1Sisext_msg: 1051.1Sis CLEAR ACK 1061.1Sis MOVE FROM ds_ExtMsg, WHEN MSG_IN 1071.1Sis JUMP REL(sync_msg), IF 0x03 1081.1Sis int err7 ; extended message not SDTR 1091.1Sis 1101.1Sissync_msg: 1111.1Sis CLEAR ACK 1121.1Sis MOVE FROM ds_SyncMsg, WHEN MSG_IN 1131.1Sis CLEAR ACK 1141.1Sis JUMP REL(switch) 1151.1Sis 1161.1Sisdisc: 1171.1Sis MOVE SCNTL2 & 0x7f TO SCNTL2 1181.1Sis CLEAR ACK 1191.1Sis WAIT DISCONNECT 1201.1Sis 1211.1Sis int err2 ; signal disconnect w/o save DP 1221.1Sis 1231.1Sismsg_sdp: 1241.1Sis CLEAR ACK ; acknowledge message 1251.1Sis JUMP REL(switch), WHEN NOT MSG_IN 1261.1Sis MOVE FROM ds_ExtMsg, WHEN MSG_IN 1271.1Sis INT err8, IF NOT 0x04 ; interrupt if not disconnect 1281.1Sis MOVE SCNTL2 & 0x7f TO SCNTL2 1291.1Sis CLEAR ACK 1301.1Sis WAIT DISCONNECT 1311.1Sis 1321.1Sis INT err1 ; signal disconnect 1331.1Sis 1341.1Sisreselect: 1351.1Siswait_reselect: 1361.1Sis WAIT RESELECT REL(select_adr) 1371.1Sis MOVE SSID & 0x8f to SFBR ; Save reselect ID 1381.1Sis MOVE SFBR to SCRATCHA0 1391.1Sis 1401.1Sis INT err9, WHEN NOT MSG_IN ; didn't get IDENTIFY 1411.1Sis MOVE FROM ds_Msg, WHEN MSG_IN 1421.1Sis INT err3 ; let host know about reconnect 1431.1Sis CLEAR ACK ; acknowlege the message 1441.1Sis JUMP REL(switch) 1451.1Sis 1461.1Sis 1471.1Sisselect_adr: 1481.1Sis MOVE SCNTL1 & 0x10 to SFBR ; get connected status 1491.1Sis INT err4, IF 0x00 ; tell host if not connected 1501.1Sis MOVE CTEST2 & 0x40 to SFBR ; clear Sig_P 1511.1Sis JUMP REL(wait_reselect) ; and try reselect again 1521.1Sis 1531.1Sismsgout: 1541.1Sis MOVE FROM ds_MsgOut, WHEN MSG_OUT 1551.1Sis JUMP REL(switch) 1561.1Sis 1571.1Siscommand_phase: 1581.1Sis CLEAR ATN 1591.1Sis MOVE FROM ds_Cmd, WHEN CMD 1601.1Sis JUMP REL(switch) 1611.1Sis 1621.1Sisdataout: 1631.1Sis MOVE FROM ds_Data1, WHEN DATA_OUT 1641.1Sis CALL REL(switch), WHEN NOT DATA_OUT 1651.1Sis MOVE FROM ds_Data2, WHEN DATA_OUT 1661.1Sis CALL REL(switch), WHEN NOT DATA_OUT 1671.1Sis MOVE FROM ds_Data3, WHEN DATA_OUT 1681.1Sis CALL REL(switch), WHEN NOT DATA_OUT 1691.1Sis MOVE FROM ds_Data4, WHEN DATA_OUT 1701.1Sis CALL REL(switch), WHEN NOT DATA_OUT 1711.1Sis MOVE FROM ds_Data5, WHEN DATA_OUT 1721.1Sis CALL REL(switch), WHEN NOT DATA_OUT 1731.1Sis MOVE FROM ds_Data6, WHEN DATA_OUT 1741.1Sis CALL REL(switch), WHEN NOT DATA_OUT 1751.1Sis MOVE FROM ds_Data7, WHEN DATA_OUT 1761.1Sis CALL REL(switch), WHEN NOT DATA_OUT 1771.1Sis MOVE FROM ds_Data8, WHEN DATA_OUT 1781.1Sis CALL REL(switch), WHEN NOT DATA_OUT 1791.1Sis MOVE FROM ds_Data9, WHEN DATA_OUT 1801.1Sis CALL REL(switch) 1811.1Sis 1821.1Sisdatain: 1831.1Sis MOVE FROM ds_Data1, WHEN DATA_IN 1841.1Sis CALL REL(switch), WHEN NOT DATA_IN 1851.1Sis MOVE FROM ds_Data2, WHEN DATA_IN 1861.1Sis CALL REL(switch), WHEN NOT DATA_IN 1871.1Sis MOVE FROM ds_Data3, WHEN DATA_IN 1881.1Sis CALL REL(switch), WHEN NOT DATA_IN 1891.1Sis MOVE FROM ds_Data4, WHEN DATA_IN 1901.1Sis CALL REL(switch), WHEN NOT DATA_IN 1911.1Sis MOVE FROM ds_Data5, WHEN DATA_IN 1921.1Sis CALL REL(switch), WHEN NOT DATA_IN 1931.1Sis MOVE FROM ds_Data6, WHEN DATA_IN 1941.1Sis CALL REL(switch), WHEN NOT DATA_IN 1951.1Sis MOVE FROM ds_Data7, WHEN DATA_IN 1961.1Sis CALL REL(switch), WHEN NOT DATA_IN 1971.1Sis MOVE FROM ds_Data8, WHEN DATA_IN 1981.1Sis CALL REL(switch), WHEN NOT DATA_IN 1991.1Sis MOVE FROM ds_Data9, WHEN DATA_IN 2001.1Sis CALL REL(switch) 2011.1Sis 2021.1Sisend: 2031.1Sis MOVE FROM ds_Status, WHEN STATUS 2041.1Sis int err10, WHEN NOT MSG_IN ; status not followed by msg 2051.1Sis MOVE FROM ds_Msg, WHEN MSG_IN 2061.1Sis MOVE SCNTL2 & 0x7f TO SCNTL2 2071.1Sis CLEAR ACK 2081.1Sis WAIT DISCONNECT 2091.1Sis INT ok ; signal completion 2101.1Sis JUMP REL(wait_reselect) 211