1*6a602769Sragge /* $NetBSD: rsp.h,v 1.3 2017/05/22 17:12:11 ragge Exp $ */ 25025b0f9Sragge /* 35025b0f9Sragge * Copyright (c) 1995 Ludd, University of Lule}, Sweden. 45025b0f9Sragge * All rights reserved. 55025b0f9Sragge * 65025b0f9Sragge * Redistribution and use in source and binary forms, with or without 75025b0f9Sragge * modification, are permitted provided that the following conditions 85025b0f9Sragge * are met: 95025b0f9Sragge * 1. Redistributions of source code must retain the above copyright 105025b0f9Sragge * notice, this list of conditions and the following disclaimer. 115025b0f9Sragge * 2. Redistributions in binary form must reproduce the above copyright 125025b0f9Sragge * notice, this list of conditions and the following disclaimer in the 135025b0f9Sragge * documentation and/or other materials provided with the distribution. 145025b0f9Sragge * 155025b0f9Sragge * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 165025b0f9Sragge * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 175025b0f9Sragge * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 185025b0f9Sragge * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 195025b0f9Sragge * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 205025b0f9Sragge * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 215025b0f9Sragge * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 225025b0f9Sragge * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 235025b0f9Sragge * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 245025b0f9Sragge * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 255025b0f9Sragge */ 265025b0f9Sragge 275025b0f9Sragge 285025b0f9Sragge /* 295025b0f9Sragge * The Radial Serial Protocol (RSP) that TU58 (DECtape II) uses 305025b0f9Sragge * is a strange animal that is sent over serial lines. 315025b0f9Sragge * Most packet types can match the struct rsp, but some can't (i.e. 325025b0f9Sragge * data packets). 335025b0f9Sragge * More about RSP can be read in Digital Peripherals Handbook, p. 92. 345025b0f9Sragge */ 355025b0f9Sragge 365025b0f9Sragge struct rsp { 375025b0f9Sragge char rsp_typ; /* Packet type */ 385025b0f9Sragge char rsp_sz; /* Packet size */ 395025b0f9Sragge char rsp_op; /* Operation */ 405025b0f9Sragge char rsp_mod; /* Modifier */ 415025b0f9Sragge char rsp_drv; /* Tape drive number */ 425025b0f9Sragge char rsp_sw; /* Switches */ 435025b0f9Sragge char rsp_xx1; /* Unused, always zero */ 445025b0f9Sragge char rsp_xx2; /* Unused, always zero */ 455025b0f9Sragge short rsp_cnt; /* Byte count to transfer */ 465025b0f9Sragge short rsp_blk; /* Block number */ 475025b0f9Sragge short rsp_sum; /* Checksum of packet */ 485025b0f9Sragge }; 495025b0f9Sragge 505025b0f9Sragge /* Types of packets */ 515025b0f9Sragge #define RSP_TYP_DATA 001 /* DATA packet */ 525025b0f9Sragge #define RSP_TYP_COMMAND 002 /* COMMAND packet */ 535025b0f9Sragge #define RSP_TYP_INIT 004 /* INITIALIZE packet */ 545025b0f9Sragge #define RSP_TYP_BOOT 010 /* BOOTSTRAP packet (PDP11) */ 555025b0f9Sragge #define RSP_TYP_CONTINUE 020 /* CONTINUE packet */ 565025b0f9Sragge #define RSP_TYP_XOFF 023 /* XOFF packet */ 575025b0f9Sragge 585025b0f9Sragge /* Operation types */ 595025b0f9Sragge #define RSP_OP_NOP 000 /* No operation */ 605025b0f9Sragge #define RSP_OP_RESET 001 /* Reset */ 615025b0f9Sragge #define RSP_OP_READ 002 /* Read data */ 625025b0f9Sragge #define RSP_OP_WRITE 003 /* Write data */ 635025b0f9Sragge #define RSP_OP_POS 005 /* Position tape */ 645025b0f9Sragge #define RSP_OP_DIAG 007 /* internal diagnose */ 655025b0f9Sragge #define RSP_OP_GSTAT 010 /* Get status */ 665025b0f9Sragge #define RSP_OP_SSTAT 011 /* Set status */ 67825165a5Sragge #define RSP_OP_END 0100 /* End packet */ 685025b0f9Sragge 695025b0f9Sragge /* Modifier */ 705025b0f9Sragge #define RSP_MOD_VERIFY 001 /* Verify read data */ 715025b0f9Sragge #define RSP_MOD_OK 000 /* Success */ 725025b0f9Sragge #define RSP_MOD_RETR 001 /* Success w/ retries */ 735025b0f9Sragge #define RSP_MOD_FAIL -1 /* Failed self-test */ 745025b0f9Sragge #define RSP_MOD_PART -2 /* Partial operation */ 755025b0f9Sragge #define RSP_MOD_NET -8 /* Non-existent tape drive */ 765025b0f9Sragge #define RSP_MOD_NOC -9 /* No cartridge */ 775025b0f9Sragge #define RSP_MOD_WP -11 /* Write protected */ 785025b0f9Sragge #define RSP_MOD_DERR -17 /* Data error */ 795025b0f9Sragge #define RSP_MOD_SERR -32 /* Seek error */ 805025b0f9Sragge #define RSP_MOD_STOP -33 /* Motor stopped */ 815025b0f9Sragge #define RSP_MOD_INVAL -48 /* Invalid opcode */ 825025b0f9Sragge #define RSP_MOD_INVBLK -55 /* Invalid bloch number */ 835025b0f9Sragge 84