trunk/src/emu/machine/scsibus.c
| r17664 | r17665 | |
| 321 | 321 | dataout_timer->adjust(attotime::from_seconds(FORMAT_UNIT_TIMEOUT)); |
| 322 | 322 | break; |
| 323 | 323 | |
| 324 | | // Check track format Xebec |
| 325 | | case SCSI_CMD_CHECK_TRACK_FORMAT: |
| 326 | | LOG(1,"SCSIBUS: check track format\n"); |
| 327 | | command_local=1; |
| 328 | | xfer_count=0; |
| 329 | | data_last=xfer_count; |
| 330 | | bytes_left=0; |
| 331 | | devices[last_id]->SetPhase(SCSI_PHASE_STATUS); |
| 332 | | break; |
| 333 | | |
| 334 | | // Setup drive parameters Xebec |
| 335 | | case SCSI_CMD_INIT_DRIVE_PARAMS: |
| 336 | | LOG(1,"SCSIBUS: init_drive_params: Xebec S1410\n"); |
| 337 | | command_local=1; |
| 338 | | xfer_count=XEBEC_PARAMS_SIZE; |
| 339 | | data_last=xfer_count; |
| 340 | | bytes_left=0; |
| 341 | | devices[last_id]->SetPhase(SCSI_PHASE_DATAOUT); |
| 342 | | break; |
| 343 | | |
| 344 | | // Format bad track Xebec |
| 345 | | case SCSI_CMD_FORMAT_ALT_TRACK: |
| 346 | | LOG(1,"SCSIBUS: format_alt_track: Xebec S1410\n"); |
| 347 | | command_local=1; |
| 348 | | xfer_count=XEBEC_ALT_TRACK_SIZE; |
| 349 | | data_last=xfer_count; |
| 350 | | bytes_left=0; |
| 351 | | devices[last_id]->SetPhase(SCSI_PHASE_DATAOUT); |
| 352 | | break; |
| 353 | | |
| 354 | | // Write buffer Xebec S1410 specific |
| 355 | | case SCSI_CMD_WRITE_SEC_BUFFER: |
| 356 | | LOG(1,"SCSIBUS: write_sector_buffer: Xebec S1410\n"); |
| 357 | | command_local=1; |
| 358 | | xfer_count=XEBEC_SECTOR_BUFFER_SIZE; |
| 359 | | data_last=xfer_count; |
| 360 | | bytes_left=0; |
| 361 | | devices[last_id]->SetPhase(SCSI_PHASE_DATAOUT); |
| 362 | | break; |
| 363 | | |
| 364 | | // Read buffer Xebec S1410 specific |
| 365 | | case SCSI_CMD_READ_SEC_BUFFER: |
| 366 | | LOG(1,"SCSIBUS: read_sector_buffer: Xebec S1410\n"); |
| 367 | | command_local=1; |
| 368 | | xfer_count=XEBEC_SECTOR_BUFFER_SIZE; |
| 369 | | data_last=xfer_count; |
| 370 | | bytes_left=0; |
| 371 | | devices[last_id]->SetPhase(SCSI_PHASE_DATAIN); |
| 372 | | break; |
| 373 | | |
| 374 | | // Write buffer, Adaptec ACB40x0 specific |
| 375 | | case SCSI_CMD_WRITE_DATA_BUFFER: |
| 376 | | LOG(1,"SCSIBUS: write_buffer: Adaptec ACB40x0\n"); |
| 377 | | command_local=1; |
| 378 | | xfer_count=ADAPTEC_DATA_BUFFER_SIZE; |
| 379 | | data_last=xfer_count; |
| 380 | | bytes_left=0; |
| 381 | | devices[last_id]->SetPhase(SCSI_PHASE_DATAOUT); |
| 382 | | break; |
| 383 | | |
| 384 | | // Read buffer, Adaptec ACB40x0 specific |
| 385 | | case SCSI_CMD_READ_DATA_BUFFER: |
| 386 | | LOG(1,"SCSIBUS: read_data_buffer: Adaptec ACB40x0\n"); |
| 387 | | command_local=1; |
| 388 | | xfer_count=ADAPTEC_DATA_BUFFER_SIZE; |
| 389 | | data_last=xfer_count; |
| 390 | | bytes_left=0; |
| 391 | | devices[last_id]->SetPhase(SCSI_PHASE_DATAIN); |
| 392 | | break; |
| 393 | | |
| 394 | 324 | // Send diagnostic info |
| 395 | 325 | case SCSI_CMD_SEND_DIAGNOSTIC: |
| 396 | 326 | LOG(1,"SCSIBUS: send_diagnostic\n"); |
| r17664 | r17665 | |
| 402 | 332 | break; |
| 403 | 333 | |
| 404 | 334 | case SCSI_CMD_SEARCH_DATA_EQUAL: |
| 405 | | LOG(1,"SCSIBUS: Search_data_equal ACB40x0\n"); |
| 335 | LOG(1,"SCSIBUS: Search_data_equaln"); |
| 406 | 336 | command_local=1; |
| 407 | 337 | xfer_count=0; |
| 408 | 338 | data_last=xfer_count; |
| r17664 | r17665 | |
| 444 | 374 | bytes_left=0; |
| 445 | 375 | devices[last_id]->SetPhase(SCSI_PHASE_DATAIN); |
| 446 | 376 | break; |
| 447 | | |
| 448 | | // Xebec S1410 |
| 449 | | case SCSI_CMD_RAM_DIAGS: |
| 450 | | case SCSI_CMD_DRIVE_DIAGS: |
| 451 | | case SCSI_CMD_CONTROLER_DIAGS: |
| 452 | | LOG(1,"SCSIBUS: Xebec RAM, disk or Controler diags [%02X]\n",command[0]); |
| 453 | | command_local=1; |
| 454 | | xfer_count=0; |
| 455 | | data_last=xfer_count; |
| 456 | | bytes_left=0; |
| 457 | | devices[last_id]->SetPhase(SCSI_PHASE_STATUS); |
| 458 | | break; |
| 459 | | |
| 460 | | // Commodore D9060/9090 |
| 461 | | case SCSI_CMD_PHYSICAL_DEVICE_ID: |
| 462 | | LOG(1,"SCSIBUS: physical device ID\n"); |
| 463 | | command_local=1; |
| 464 | | xfer_count=0; |
| 465 | | data_last=xfer_count; |
| 466 | | bytes_left=0; |
| 467 | | devices[last_id]->SetPhase(SCSI_PHASE_STATUS); |
| 468 | | break; |
| 469 | 377 | } |
| 470 | 378 | |
| 471 | 379 | |
| r17664 | r17665 | |
| 527 | 435 | |
| 528 | 436 | switch (command[0]) |
| 529 | 437 | { |
| 530 | | case SCSI_CMD_INIT_DRIVE_PARAMS: |
| 531 | | tracks=((buffer[0]<<8)+buffer[1]); |
| 532 | | capacity=(tracks * buffer[2]) * 17; |
| 533 | | LOG(1,"Tracks=%d, Heads=%d\n",tracks,buffer[2]); |
| 534 | | LOG(1,"Setting disk capacity to %d blocks\n",capacity); |
| 535 | | //debugger_break(device->machine()); |
| 536 | | break; |
| 537 | | |
| 538 | 438 | case SCSI_CMD_MODE_SELECT: |
| 539 | 439 | sense=(adaptec_sense_t *)buffer; |
| 540 | 440 | tracks=(sense->cylinder_count[0]<<8)+sense->cylinder_count[1]; |
| r17664 | r17665 | |
| 757 | 657 | scsi_out_line_change(SCSI_LINE_REQ,1); |
| 758 | 658 | scsi_out_line_change(SCSI_LINE_BSY,1); |
| 759 | 659 | LOG(1,"SCSIBUS: done\n\n"); |
| 760 | | //if (IS_COMMAND(SCSI_CMD_READ_CAPACITY)) |
| 761 | | // debugger_break(device->machine()); |
| 762 | 660 | break; |
| 763 | 661 | |
| 764 | 662 | case SCSI_PHASE_COMMAND: |
trunk/src/emu/machine/scsibus.h
| r17664 | r17665 | |
| 64 | 64 | #define CMD_BUF_SIZE 32 |
| 65 | 65 | #define ADAPTEC_BUF_SIZE 1024 |
| 66 | 66 | |
| 67 | // scsidev |
| 67 | 68 | #define SCSI_CMD_TEST_READY 0x00 |
| 68 | 69 | #define SCSI_CMD_RECALIBRATE 0x01 |
| 69 | 70 | #define SCSI_CMD_REQUEST_SENSE 0x03 |
| 70 | | #define SCSI_CMD_FORMAT_UNIT 0x04 |
| 71 | | #define SCSI_CMD_CHECK_TRACK_FORMAT 0x05 |
| 72 | | #define SCSI_CMD_INIT_DRIVE_PARAMS 0x0C |
| 73 | | #define SCSI_CMD_FORMAT_ALT_TRACK 0x0E |
| 74 | | #define SCSI_CMD_WRITE_SEC_BUFFER 0x0F |
| 75 | | #define SCSI_CMD_READ_SEC_BUFFER 0x10 |
| 76 | | #define SCSI_COMMAND_INQUIRY 0x12 |
| 77 | | #define SCSI_CMD_WRITE_DATA_BUFFER 0x13 |
| 78 | | #define SCSI_CMD_READ_DATA_BUFFER 0x14 |
| 79 | 71 | #define SCSI_CMD_MODE_SELECT 0x15 |
| 80 | 72 | #define SCSI_CMD_SEND_DIAGNOSTIC 0x1D |
| 81 | | #define SCSI_CMD_READ_CAPACITY 0x25 |
| 82 | | #define SCSI_CMD_SEARCH_DATA_EQUAL 0x31 |
| 83 | | #define SCSI_CMD_READ_DEFECT 0x37 |
| 84 | 73 | #define SCSI_CMD_BUFFER_WRITE 0x3B |
| 85 | 74 | #define SCSI_CMD_BUFFER_READ 0x3C |
| 86 | 75 | |
| 87 | | // Xebec SASI |
| 88 | | #define SCSI_CMD_RAM_DIAGS 0xE0 |
| 89 | | #define SCSI_CMD_DRIVE_DIAGS 0xE3 |
| 90 | | #define SCSI_CMD_CONTROLER_DIAGS 0xE4 |
| 76 | // scsihd |
| 77 | #define SCSI_CMD_FORMAT_UNIT 0x04 |
| 78 | #define SCSI_CMD_SEARCH_DATA_EQUAL 0x31 |
| 79 | #define SCSI_CMD_READ_DEFECT 0x37 |
| 91 | 80 | |
| 92 | | // Commodore D9060/9090 SASI |
| 93 | | #define SCSI_CMD_PHYSICAL_DEVICE_ID 0xc0 |
| 94 | 81 | |
| 95 | | #define RW_BUFFER_HEAD_BYTES 0x04 |
| 96 | | |
| 97 | | #define ADAPTEC_DATA_BUFFER_SIZE 0x0400 |
| 98 | | #define XEBEC_SECTOR_BUFFER_SIZE 0x0200 |
| 99 | | |
| 100 | | #define XEBEC_PARAMS_SIZE 0x08 |
| 101 | | #define XEBEC_ALT_TRACK_SIZE 0x03 |
| 102 | | |
| 103 | 82 | #define IS_COMMAND(cmd) (command[0]==cmd) |
| 104 | 83 | #define IS_READ_COMMAND() ((command[0]==0x08) || (command[0]==0x28) || (command[0]==0xa8)) |
| 105 | 84 | #define IS_WRITE_COMMAND() ((command[0]==0x0a) || (command[0]==0x2a)) |
trunk/src/mess/machine/s1410.c
| r17664 | r17665 | |
| 193 | 193 | return MACHINE_CONFIG_NAME( s1410 ); |
| 194 | 194 | } |
| 195 | 195 | |
| 196 | | |
| 197 | | |
| 198 | 196 | //************************************************************************** |
| 199 | 197 | // LIVE DEVICE |
| 200 | 198 | //************************************************************************** |
| r17664 | r17665 | |
| 204 | 202 | //------------------------------------------------- |
| 205 | 203 | |
| 206 | 204 | s1410_device::s1410_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 207 | | : device_t(mconfig, S1410, "Xebec S1410", tag, owner, clock) |
| 205 | : scsihd_device(mconfig, S1410, "Xebec S1410", tag, owner, clock) |
| 208 | 206 | { |
| 209 | 207 | } |
| 210 | 208 | |
| 209 | #define S1410_CMD_CHECK_TRACK_FORMAT ( 0x05 ) |
| 210 | #define S1410_CMD_INIT_DRIVE_PARAMS ( 0x0c ) |
| 211 | #define S1410_CMD_FORMAT_ALT_TRACK ( 0x0E ) |
| 212 | #define S1410_CMD_WRITE_SEC_BUFFER ( 0x0F ) |
| 213 | #define S1410_CMD_READ_SEC_BUFFER ( 0x10 ) |
| 214 | #define S1410_CMD_RAM_DIAGS ( 0xe0 ) |
| 215 | #define S1410_CMD_DRIVE_DIAGS ( 0xe3 ) |
| 216 | #define S1410_CMD_CONTROLER_DIAGS ( 0xe4 ) |
| 211 | 217 | |
| 212 | | //------------------------------------------------- |
| 213 | | // device_start - device-specific startup |
| 214 | | //------------------------------------------------- |
| 218 | #define TRANSFERLENGTH_INIT_DRIVE_PARAMS ( 0x08 ) |
| 219 | #define TRANSFERLENGTH_FORMAT_ALT_TRACK ( 0x03 ) |
| 220 | #define TRANSFERLENGTH_SECTOR_BUFFER ( 0x0200 ) |
| 215 | 221 | |
| 216 | | void s1410_device::device_start() |
| 222 | void s1410_device::ExecCommand( int *transferLength ) |
| 217 | 223 | { |
| 224 | UINT8 *command; |
| 225 | int commandLength; |
| 226 | GetCommand( &command, &commandLength ); |
| 227 | |
| 228 | switch( command[ 0 ] ) |
| 229 | { |
| 230 | case S1410_CMD_INIT_DRIVE_PARAMS: |
| 231 | SetPhase(SCSI_PHASE_DATAOUT); |
| 232 | *transferLength = TRANSFERLENGTH_INIT_DRIVE_PARAMS; |
| 233 | break; |
| 234 | |
| 235 | case S1410_CMD_FORMAT_ALT_TRACK: |
| 236 | SetPhase(SCSI_PHASE_DATAOUT); |
| 237 | *transferLength = TRANSFERLENGTH_FORMAT_ALT_TRACK; |
| 238 | break; |
| 239 | |
| 240 | case S1410_CMD_WRITE_SEC_BUFFER: |
| 241 | SetPhase(SCSI_PHASE_DATAOUT); |
| 242 | *transferLength = TRANSFERLENGTH_SECTOR_BUFFER; |
| 243 | break; |
| 244 | |
| 245 | case S1410_CMD_READ_SEC_BUFFER: |
| 246 | SetPhase(SCSI_PHASE_DATAIN); |
| 247 | *transferLength = TRANSFERLENGTH_SECTOR_BUFFER; |
| 248 | break; |
| 249 | |
| 250 | case S1410_CMD_CHECK_TRACK_FORMAT: |
| 251 | case S1410_CMD_RAM_DIAGS: |
| 252 | case S1410_CMD_DRIVE_DIAGS: |
| 253 | case S1410_CMD_CONTROLER_DIAGS: |
| 254 | SetPhase(SCSI_PHASE_STATUS); |
| 255 | *transferLength = 0; |
| 256 | break; |
| 257 | |
| 258 | default: |
| 259 | scsihd_device::ExecCommand( transferLength ); |
| 260 | break; |
| 261 | } |
| 218 | 262 | } |
| 219 | 263 | |
| 264 | void s1410_device::WriteData( UINT8 *data, int dataLength ) |
| 265 | { |
| 266 | UINT8 *command; |
| 267 | int commandLength; |
| 268 | GetCommand( &command, &commandLength ); |
| 220 | 269 | |
| 221 | | //------------------------------------------------- |
| 222 | | // device_reset - device-specific reset |
| 223 | | //------------------------------------------------- |
| 270 | switch( command[ 0 ] ) |
| 271 | { |
| 272 | case S1410_CMD_INIT_DRIVE_PARAMS: |
| 273 | { |
| 274 | UINT16 tracks=((data[0]<<8)+data[1]); |
| 275 | UINT8 heads = data[2]; |
| 276 | UINT32 capacity=(tracks * heads) * 17; |
| 277 | logerror("S1410_CMD_INIT_DRIVE_PARAMS Tracks=%d, Heads=%d, Capacity=%d\n",tracks,heads,capacity); |
| 278 | } |
| 279 | break; |
| 224 | 280 | |
| 225 | | void s1410_device::device_reset() |
| 226 | | { |
| 281 | default: |
| 282 | scsihd_device::WriteData( data, dataLength ); |
| 283 | break; |
| 284 | } |
| 227 | 285 | } |
trunk/src/mess/machine/s1410.h
| r17664 | r17665 | |
| 13 | 13 | #define __S1410__ |
| 14 | 14 | |
| 15 | 15 | #include "emu.h" |
| 16 | #include "machine/scsihd.h" |
| 16 | 17 | |
| 17 | | |
| 18 | | |
| 19 | | //************************************************************************** |
| 20 | | // INTERFACE CONFIGURATION MACROS |
| 21 | | //************************************************************************** |
| 22 | | |
| 23 | | #define MCFG_S1410_ADD( _tag) \ |
| 24 | | MCFG_DEVICE_ADD(_tag, S1410, 0) |
| 25 | | |
| 26 | | |
| 27 | | |
| 28 | | //************************************************************************** |
| 29 | | // TYPE DEFINITIONS |
| 30 | | //************************************************************************** |
| 31 | | |
| 32 | | // ======================> s1410_interface |
| 33 | | |
| 34 | | struct s1410_interface |
| 18 | class s1410_device : public scsihd_device |
| 35 | 19 | { |
| 36 | | }; |
| 37 | | |
| 38 | | // ======================> s1410_device |
| 39 | | |
| 40 | | class s1410_device : public device_t, |
| 41 | | public s1410_interface |
| 42 | | { |
| 43 | 20 | public: |
| 44 | | // construction/destruction |
| 45 | | s1410_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 21 | // construction/destruction |
| 22 | s1410_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 23 | |
| 46 | 24 | // optional information overrides |
| 47 | 25 | virtual const rom_entry *device_rom_region() const; |
| 48 | 26 | virtual machine_config_constructor device_mconfig_additions() const; |
| 49 | 27 | |
| 50 | | protected: |
| 51 | | // device-level overrides |
| 52 | | virtual void device_start(); |
| 53 | | virtual void device_reset(); |
| 54 | | virtual void device_config_complete(); |
| 28 | virtual void ExecCommand( int *transferLength ); |
| 29 | virtual void WriteData( UINT8 *data, int dataLength ); |
| 55 | 30 | |
| 56 | | private: |
| 31 | protected: |
| 32 | // device-level overrides |
| 33 | virtual void device_config_complete(); |
| 57 | 34 | }; |
| 58 | 35 | |
| 59 | 36 | |
| 60 | 37 | // device type definition |
| 61 | 38 | extern const device_type S1410; |
| 62 | 39 | |
| 63 | | |
| 64 | | |
| 65 | 40 | #endif |
trunk/src/mess/machine/acb4070.c
| r0 | r17665 | |
| 1 | /* |
| 2 | * ACB4070 + RLL drive |
| 3 | * |
| 4 | */ |
| 5 | |
| 6 | #include "emu.h" |
| 7 | #include "machine/acb4070.h" |
| 8 | |
| 9 | // device type definition |
| 10 | const device_type ACB4070 = &device_creator<acb4070_device>; |
| 11 | |
| 12 | acb4070_device::acb4070_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 13 | : scsihd_device(mconfig, ACB4070, "ACB4070", tag, owner, clock) |
| 14 | { |
| 15 | } |
| 16 | |
| 17 | #define ACB4070_CMD_WRITE_DATA_BUFFER ( 0x13 ) |
| 18 | #define ACB4070_CMD_READ_DATA_BUFFER ( 0x14 ) |
| 19 | |
| 20 | #define TRANSFERLENGTH_DATA_BUFFER 0x0400 |
| 21 | |
| 22 | void acb4070_device::ExecCommand( int *transferLength ) |
| 23 | { |
| 24 | UINT8 *command; |
| 25 | int commandLength; |
| 26 | GetCommand( &command, &commandLength ); |
| 27 | |
| 28 | switch( command[ 0 ] ) |
| 29 | { |
| 30 | case ACB4070_CMD_WRITE_DATA_BUFFER: |
| 31 | SetPhase( SCSI_PHASE_DATAOUT ); |
| 32 | *transferLength = TRANSFERLENGTH_DATA_BUFFER; |
| 33 | break; |
| 34 | |
| 35 | case ACB4070_CMD_READ_DATA_BUFFER: |
| 36 | SetPhase( SCSI_PHASE_DATAIN ); |
| 37 | *transferLength = TRANSFERLENGTH_DATA_BUFFER; |
| 38 | break; |
| 39 | |
| 40 | default: |
| 41 | scsihd_device::ExecCommand( transferLength ); |
| 42 | break; |
| 43 | } |
| 44 | } |
trunk/src/mess/machine/d9060hd.c
| r0 | r17665 | |
| 1 | /* |
| 2 | * D9060 - SASI + TANDON TM602S |
| 3 | * |
| 4 | */ |
| 5 | |
| 6 | #include "emu.h" |
| 7 | #include "machine/d9060hd.h" |
| 8 | |
| 9 | // device type definition |
| 10 | const device_type D9060HD = &device_creator<d9060hd_device>; |
| 11 | |
| 12 | d9060hd_device::d9060hd_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 13 | : scsihd_device(mconfig, D9060HD, "D9060HD", tag, owner, clock) |
| 14 | { |
| 15 | } |
| 16 | |
| 17 | #define D9060HD_CMD_PHYSICAL_DEVICE_ID ( 0xc0 ) |
| 18 | #define D9060HD_CMD_DRIVE_DIAGS ( 0xe3 ) |
| 19 | |
| 20 | void d9060hd_device::ExecCommand( int *transferLength ) |
| 21 | { |
| 22 | UINT8 *command; |
| 23 | int commandLength; |
| 24 | GetCommand( &command, &commandLength ); |
| 25 | |
| 26 | switch( command[ 0 ] ) |
| 27 | { |
| 28 | case D9060HD_CMD_PHYSICAL_DEVICE_ID: |
| 29 | case D9060HD_CMD_DRIVE_DIAGS: |
| 30 | SetPhase(SCSI_PHASE_STATUS); |
| 31 | *transferLength = 0; |
| 32 | break; |
| 33 | |
| 34 | default: |
| 35 | scsihd_device::ExecCommand( transferLength ); |
| 36 | break; |
| 37 | } |
| 38 | } |
trunk/src/mess/drivers/rmnimbus.c
| r17664 | r17665 | |
| 16 | 16 | #include "includes/rmnimbus.h" |
| 17 | 17 | #include "machine/er59256.h" |
| 18 | 18 | #include "machine/scsihd.h" |
| 19 | #include "machine/s1410.h" |
| 20 | #include "machine/acb4070.h" |
| 19 | 21 | #include "machine/6522via.h" |
| 20 | 22 | #include "machine/ctronics.h" |
| 21 | 23 | #include "sound/ay8910.h" |
| r17664 | r17665 | |
| 320 | 322 | MCFG_LEGACY_FLOPPY_4_DRIVES_ADD(nimbus_floppy_interface) |
| 321 | 323 | |
| 322 | 324 | MCFG_SCSIBUS_ADD(SCSIBUS_TAG, scsibus_config) |
| 323 | | MCFG_SCSIDEV_ADD(SCSIBUS_TAG ":harddisk0", SCSIHD, SCSI_ID_0) |
| 324 | | MCFG_SCSIDEV_ADD(SCSIBUS_TAG ":harddisk1", SCSIHD, SCSI_ID_1) |
| 325 | MCFG_SCSIDEV_ADD(SCSIBUS_TAG ":harddisk0", ACB4070, SCSI_ID_0) |
| 326 | MCFG_SCSIDEV_ADD(SCSIBUS_TAG ":harddisk1", S1410, SCSI_ID_1) |
| 325 | 327 | MCFG_SCSIDEV_ADD(SCSIBUS_TAG ":harddisk2", SCSIHD, SCSI_ID_2) |
| 326 | 328 | MCFG_SCSIDEV_ADD(SCSIBUS_TAG ":harddisk3", SCSIHD, SCSI_ID_3) |
| 327 | 329 | |