home *** CD-ROM | disk | FTP | other *** search
/ ftp.cdrom.com/pub/cdrom/ / cdrom.tar / cdrom / source / sun_cd.c < prev   
C/C++ Source or Header  |  1993-04-27  |  3KB  |  91 lines

  1. #if 0
  2. Article 9781 (135 more) in alt.cd-rom:
  3. From: Thomas.Tornblom@Nexus.Comm.SE (Thomas Tornblom)
  4. Subject: Other CDROMS on a Sun, was Sun CD-ROM on PCs???
  5. In-Reply-To: jk@tools.de's message of 15 Apr 93 20: 16:31 GMT
  6. Message-ID: <THOMAS.TORNBLOM.93Apr20165117@beck.Nexus.Comm.SE>
  7. Followup-To: alt.cd-rom
  8. Sender: news@nexus.comm.se
  9. Organization: Communicator Nexus AB
  10. References: <1qc5gd$13o@marleen.isi.edu> <lsmq0kINNn0m@exodus.Eng.Sun.COM>
  11.         <JK.93Apr14173040@leo.tools.de>
  12.         <1993Apr14.195220.21701@nb.rockwell.com>
  13.         <1993Apr15.040231.17561@c3p0.novell.de> <JK.93Apr15211632@leo.tools.de>
  14. Date: Tue, 20 Apr 1993 15:51:17 GMT
  15. Lines: 68
  16.  
  17. I got inspired by this and modified a tiny hack I did a while back to
  18. allow an Apple CD-ROM to be used on a Sun.
  19.  
  20. As there is nothing in it that depends on the particular brand I guess
  21. it would work with other types as well.
  22.  
  23. It justs sets the block size to 512 byte, which is kosher on the Suns.
  24. Most other drives seem to use 2k.
  25.  
  26. So get a cable that fits both ends, set the SCSI id to 6, compile the
  27. following piece and run it as root. After it has been run you should
  28. be able to use it as any Sun CD-ROM.
  29.  
  30. Probably only works on Sparcs running SunOS 4.1.x.
  31.  
  32. When I can find the time I'll do the opposite, set the Sun CD-ROM to
  33. 2k to allow it to be used on Macs.
  34. -------------
  35. #endif
  36.  
  37. #include <fcntl.h>
  38. #include <sys/types.h>
  39. #include <sys/ioctl.h>
  40. #include <scsi/generic/commands.h>
  41. #include <scsi/generic/mode.h>
  42. #include <scsi/impl/uscsi.h>
  43.  
  44. struct uscsi_cmd cmd;
  45.  
  46. union scsi_cdb cdb;
  47. u_char md[12] = {                       /* random data */
  48.     0,                                  /* reserved */
  49.     0,                                  /* medium type */
  50.     0,                                  /* reserved */
  51.     8,                                  /* block descriptor length */
  52.     0,                                  /* density */
  53.     0,0,0,                              /* # of blocks */
  54.     0,                                  /* reserved */
  55.     0,2,0,                              /* block length (512b) */
  56. };
  57.  
  58. main()
  59. {
  60.     int fd;
  61.  
  62.     if ((fd = open("/dev/rsr0", O_RDWR | O_NDELAY)) == -1) {
  63.         perror("open");
  64.         exit (1);
  65.     }
  66.  
  67.     cdb.scc_cmd = SCMD_MODE_SELECT;
  68.     cdb.low_count = 12;
  69.  
  70.     cmd.uscsi_cdb = (caddr_t) &cdb;
  71.     cmd.uscsi_cdblen = CDB_GROUP0;
  72.     cmd.uscsi_bufaddr = (caddr_t) md;
  73.     cmd.uscsi_buflen = sizeof(md);
  74.     cmd.uscsi_flags = USCSI_DIAGNOSE | USCSI_ISOLATE; /* write */
  75.  
  76.     if ((ioctl(fd, USCSICMD, (struct uscsi_cmd *) &cmd)) == -1) {
  77.         perror("ioctl");
  78.         exit (1);
  79.     }
  80.     exit(0);
  81. }
  82.  
  83. #if 0
  84. --
  85. Real life:      Thomas T^6rnblom           Email:  Thomas.Tornblom@Nexus.Comm.SE 
  86. Snail mail:     Communicator Nexus AB     Phone:  +46 18 171814
  87.                 Box 857                   Fax:    +46 18 696516
  88.                 S - 751 08 Uppsala, Sweden
  89. #endif
  90.  
  91.