src/mess/machine/osborne1.c
| r5628 | r5629 | |
| 19 | 19 | #include "machine/6821pia.h" |
| 20 | 20 | #include "machine/6850acia.h" |
| 21 | 21 | #include "machine/wd17xx.h" |
| 22 | | #include "devices/basicdsk.h" |
| 23 | 22 | #include "cpu/z80/z80daisy.h" |
| 24 | 23 | #include "sound/beep.h" |
| 25 | 24 | #include "includes/osborne1.h" |
| 25 | #include "devices/mflopimg.h" |
| 26 | 26 | |
| 27 | 27 | #define RAMMODE (0x01) |
| 28 | 28 | |
| r5628 | r5629 | |
| 413 | 413 | timer_adjust_oneshot(osborne1.video_timer, video_screen_get_time_until_pos(machine->primary_screen, y + 1, 0 ), 0); |
| 414 | 414 | } |
| 415 | 415 | |
| 416 | | /* |
| 417 | | * The Osborne-1 supports the following disc formats: |
| 418 | | * - Osborne single density: 40 tracks, 10 sectors per track, 256-byte sectors (100 KByte) |
| 419 | | * - Osborne double density: 40 tracks, 5 sectors per track, 1024-byte sectors (200 KByte) |
| 420 | | * - IBM Personal Computer: 40 tracks, 8 sectors per track, 512-byte sectors (160 KByte) |
| 421 | | * - Xerox 820 Computer: 40 tracks, 18 sectors per track, 128-byte sectors (90 KByte) |
| 422 | | * - DEC 1820 double density: 40 tracks, 9 sectors per track, 512-byte sectors (180 KByte) |
| 423 | | * |
| 424 | | */ |
| 425 | | DEVICE_IMAGE_LOAD( osborne1_floppy ) |
| 426 | | { |
| 427 | | int size, sectors, sectorsize; |
| 428 | | const device_config *fdc = devtag_get_device(image->machine, "mb8877"); |
| 429 | | |
| 430 | | if ( ! image_has_been_created( image ) ) |
| 431 | | { |
| 432 | | size = image_length( image ); |
| 433 | | |
| 434 | | switch( size ) |
| 435 | | { |
| 436 | | case 40 * 10 * 256: |
| 437 | | sectors = 10; |
| 438 | | sectorsize = 256; |
| 439 | | wd17xx_set_density( fdc, DEN_FM_LO ); |
| 440 | | break; |
| 441 | | case 40 * 5 * 1024: |
| 442 | | sectors = 5; |
| 443 | | sectorsize = 1024; |
| 444 | | wd17xx_set_density( fdc, DEN_FM_HI ); |
| 445 | | break; |
| 446 | | case 40 * 8 * 512: |
| 447 | | sectors = 8; |
| 448 | | sectorsize = 512; |
| 449 | | wd17xx_set_density( fdc, DEN_FM_LO ); |
| 450 | | return INIT_FAIL; |
| 451 | | case 40 * 18 * 128: |
| 452 | | sectors = 18; |
| 453 | | sectorsize = 128; |
| 454 | | wd17xx_set_density( fdc, DEN_FM_LO ); |
| 455 | | return INIT_FAIL; |
| 456 | | case 40 * 9 * 512: |
| 457 | | sectors = 9; |
| 458 | | sectorsize = 512; |
| 459 | | wd17xx_set_density( fdc, DEN_FM_HI ); |
| 460 | | return INIT_FAIL; |
| 461 | | default: |
| 462 | | return INIT_FAIL; |
| 463 | | } |
| 464 | | } |
| 465 | | else |
| 466 | | { |
| 467 | | return INIT_FAIL; |
| 468 | | } |
| 469 | | |
| 470 | | if ( device_load_basicdsk_floppy( image ) != INIT_PASS ) |
| 471 | | { |
| 472 | | return INIT_FAIL; |
| 473 | | } |
| 474 | | |
| 475 | | basicdsk_set_geometry( image, 40, 1, sectors, sectorsize, 1, 0, FALSE ); |
| 476 | | |
| 477 | | return INIT_PASS; |
| 478 | | } |
| 479 | | |
| 480 | | |
| 481 | 416 | static TIMER_CALLBACK( setup_osborne1 ) |
| 482 | 417 | { |
| 483 | 418 | const device_config *speaker = devtag_get_device(machine, "beep"); |
| r5628 | r5629 | |
| 488 | 423 | pia6821_ca1_w( pia_1, 0, 0 ); |
| 489 | 424 | } |
| 490 | 425 | |
| 426 | static void osborne1_load_proc(const device_config *image) |
| 427 | { |
| 428 | int size = image_length( image ); |
| 429 | const device_config *fdc = devtag_get_device(image->machine, "mb8877"); |
| 491 | 430 | |
| 431 | switch( size ) |
| 432 | { |
| 433 | case 40 * 10 * 256: |
| 434 | wd17xx_set_density( fdc, DEN_FM_LO ); |
| 435 | break; |
| 436 | case 40 * 5 * 1024: |
| 437 | wd17xx_set_density( fdc, DEN_FM_HI ); |
| 438 | break; |
| 439 | case 40 * 8 * 512: |
| 440 | wd17xx_set_density( fdc, DEN_FM_LO ); |
| 441 | break; |
| 442 | case 40 * 18 * 128: |
| 443 | wd17xx_set_density( fdc, DEN_FM_LO ); |
| 444 | break; |
| 445 | case 40 * 9 * 512: |
| 446 | wd17xx_set_density( fdc, DEN_FM_HI ); |
| 447 | break; |
| 448 | } |
| 449 | } |
| 450 | |
| 492 | 451 | MACHINE_RESET( osborne1 ) |
| 493 | 452 | { |
| 453 | int drive; |
| 494 | 454 | const address_space* space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM); |
| 495 | 455 | /* Initialize memory configuration */ |
| 496 | 456 | osborne1_bankswitch_w( space, 0x00, 0 ); |
| r5628 | r5629 | |
| 510 | 470 | |
| 511 | 471 | timer_set(machine, attotime_zero, NULL, 0, setup_osborne1 ); |
| 512 | 472 | |
| 473 | for(drive=0;drive<2;drive++) |
| 474 | { |
| 475 | floppy_install_load_proc(image_from_devtype_and_index(machine, IO_FLOPPY, drive), osborne1_load_proc); |
| 476 | } |
| 477 | |
| 513 | 478 | memory_set_direct_update_handler( space, osborne1_opbase ); |
| 514 | 479 | } |
| 515 | 480 | |
src/mess/machine/comx35.c
| r5628 | r5629 | |
| 184 | 184 | } |
| 185 | 185 | |
| 186 | 186 | /* Floppy Disc Controller */ |
| 187 | | |
| 188 | | DEVICE_IMAGE_LOAD( comx35_floppy ) |
| 189 | | { |
| 190 | | if (image_has_been_created(image)) |
| 191 | | return INIT_FAIL; |
| 192 | | |
| 193 | | if (device_load_basicdsk_floppy(image) == INIT_PASS) |
| 194 | | { |
| 195 | | int size = image_length(image); |
| 196 | | UINT8 header[0x20] = {0}; |
| 197 | | |
| 198 | | switch (size) |
| 199 | | { |
| 200 | | case 35*1*16*128: |
| 201 | | /* drive, tracks, heads, sectors per track, sector length, first sector id, offset track zero, track skipping */ |
| 202 | | basicdsk_set_geometry(image, 35, 1, 16, 128, 0, 0, FALSE); |
| 203 | | break; |
| 204 | | |
| 205 | | case 35*2*16*128: |
| 206 | | image_fread(image, header, 0x20); |
| 207 | | |
| 208 | | if (header[0x12] == 0x01) |
| 209 | | { |
| 210 | | /* drive, tracks, heads, sectors per track, sector length, first sector id, offset track zero, track skipping */ |
| 211 | | basicdsk_set_geometry(image, 70, 1, 16, 128, 0, 0, FALSE); |
| 212 | | } |
| 213 | | else |
| 214 | | { |
| 215 | | /* drive, tracks, heads, sectors per track, sector length, first sector id, offset track zero, track skipping */ |
| 216 | | basicdsk_set_geometry(image, 35, 2, 16, 128, 0, 0, FALSE); |
| 217 | | } |
| 218 | | break; |
| 219 | | } |
| 220 | | |
| 221 | | return INIT_PASS; |
| 222 | | } |
| 223 | | |
| 224 | | return INIT_FAIL; |
| 225 | | } |
| 226 | | |
| 227 | 187 | static WD17XX_CALLBACK( comx35_fdc_callback ) |
| 228 | 188 | { |
| 229 | 189 | comx35_state *driver_state = device->machine->driver_data; |
src/mess/formats/comx35_dsk.c
| r0 | r5629 | |
| 1 | /********************************************************************* |
| 2 | |
| 3 | formats/comx35_dsk.c |
| 4 | |
| 5 | COMX35 disk images |
| 6 | |
| 7 | *********************************************************************/ |
| 8 | |
| 9 | #include <string.h> |
| 10 | |
| 11 | #include "formats/comx35_dsk.h" |
| 12 | #include "formats/basicdsk.h" |
| 13 | |
| 14 | static FLOPPY_IDENTIFY(comx35_dsk_identify) |
| 15 | { |
| 16 | *vote = ((floppy_image_size(floppy) == (35*1*16*128)) || (floppy_image_size(floppy) == (35*2*16*128))) ? 100 : 0; |
| 17 | return FLOPPY_ERROR_SUCCESS; |
| 18 | } |
| 19 | |
| 20 | static FLOPPY_CONSTRUCT(comx35_dsk_construct) |
| 21 | { |
| 22 | struct basicdsk_geometry geometry; |
| 23 | UINT8 header[1]; |
| 24 | int heads; |
| 25 | int cylinders; |
| 26 | |
| 27 | switch(floppy_image_size(floppy)) { |
| 28 | case 35*1*16*128: |
| 29 | heads = 1; |
| 30 | cylinders = 35; |
| 31 | break; |
| 32 | |
| 33 | case 35*2*16*128: |
| 34 | floppy_image_read( floppy, header, 0x12 , 1 ); |
| 35 | if (header[0] == 0x01) |
| 36 | { |
| 37 | heads = 1; |
| 38 | cylinders = 70; |
| 39 | } |
| 40 | else |
| 41 | { |
| 42 | heads = 2; |
| 43 | cylinders = 35; |
| 44 | } |
| 45 | break; |
| 46 | } |
| 47 | |
| 48 | memset(&geometry, 0, sizeof(geometry)); |
| 49 | geometry.heads = heads; |
| 50 | geometry.first_sector_id = 0; |
| 51 | geometry.sector_length = 128; |
| 52 | geometry.tracks = cylinders; |
| 53 | geometry.sectors = 16; |
| 54 | return basicdsk_construct(floppy, &geometry); |
| 55 | } |
| 56 | |
| 57 | /* ----------------------------------------------------------------------- */ |
| 58 | |
| 59 | FLOPPY_OPTIONS_START( comx35 ) |
| 60 | FLOPPY_OPTION( comx35, "img", "COMX35 floppy disk image", comx35_dsk_identify, comx35_dsk_construct, NULL) |
| 61 | FLOPPY_OPTIONS_END |
| 62 | |
src/mess/drivers/osborne1.c
| r5628 | r5629 | |
| 38 | 38 | #include "cpu/z80/z80.h" |
| 39 | 39 | #include "cpu/z80/z80daisy.h" |
| 40 | 40 | #include "sound/beep.h" |
| 41 | | #include "devices/basicdsk.h" |
| 41 | #include "devices/mflopimg.h" |
| 42 | #include "formats/basicdsk.h" |
| 42 | 43 | #include "machine/wd17xx.h" |
| 43 | 44 | #include "machine/6821pia.h" |
| 44 | 45 | #include "includes/osborne1.h" |
| r5628 | r5629 | |
| 215 | 216 | ROM_LOAD( "osbchr.bin", 0x0000, 0x800, BAD_DUMP CRC(6c1eab0d) SHA1(b04459d377a70abc9155a5486003cb795342c801) ) |
| 216 | 217 | ROM_END |
| 217 | 218 | |
| 219 | /* System Configuration */ |
| 220 | /* |
| 221 | * The Osborne-1 supports the following disc formats: |
| 222 | * - Osborne single density: 40 tracks, 10 sectors per track, 256-byte sectors (100 KByte) |
| 223 | * - Osborne double density: 40 tracks, 5 sectors per track, 1024-byte sectors (200 KByte) |
| 224 | * - IBM Personal Computer: 40 tracks, 8 sectors per track, 512-byte sectors (160 KByte) |
| 225 | * - Xerox 820 Computer: 40 tracks, 18 sectors per track, 128-byte sectors (90 KByte) |
| 226 | * - DEC 1820 double density: 40 tracks, 9 sectors per track, 512-byte sectors (180 KByte) |
| 227 | * |
| 228 | */ |
| 229 | FLOPPY_OPTIONS_START(osborne1 ) |
| 230 | FLOPPY_OPTION( osd, "img", "Osborne single density", basicdsk_identify_default, basicdsk_construct_default, |
| 231 | HEADS([1]) |
| 232 | TRACKS([40]) |
| 233 | SECTORS([10]) |
| 234 | SECTOR_LENGTH([256]) |
| 235 | FIRST_SECTOR_ID([1])) |
| 236 | FLOPPY_OPTION( odd, "img", "Osborne double density", basicdsk_identify_default, basicdsk_construct_default, |
| 237 | HEADS([1]) |
| 238 | TRACKS([40]) |
| 239 | SECTORS([5]) |
| 240 | SECTOR_LENGTH([1024]) |
| 241 | FIRST_SECTOR_ID([1])) |
| 242 | FLOPPY_OPTION( ibm, "img", "IBM Personal Computer", basicdsk_identify_default, basicdsk_construct_default, |
| 243 | HEADS([1]) |
| 244 | TRACKS([40]) |
| 245 | SECTORS([8]) |
| 246 | SECTOR_LENGTH([512]) |
| 247 | FIRST_SECTOR_ID([1])) |
| 248 | FLOPPY_OPTION( xerox, "img", "Xerox 820 Computer", basicdsk_identify_default, basicdsk_construct_default, |
| 249 | HEADS([1]) |
| 250 | TRACKS([40]) |
| 251 | SECTORS([18]) |
| 252 | SECTOR_LENGTH([128]) |
| 253 | FIRST_SECTOR_ID([1])) |
| 254 | FLOPPY_OPTION( dec, "img", "DEC 1820 double density", basicdsk_identify_default, basicdsk_construct_default, |
| 255 | HEADS([1]) |
| 256 | TRACKS([40]) |
| 257 | SECTORS([9]) |
| 258 | SECTOR_LENGTH([512]) |
| 259 | FIRST_SECTOR_ID([1])) |
| 260 | FLOPPY_OPTIONS_END |
| 218 | 261 | |
| 219 | | static void osborne1_floppy_getinfo( const mess_device_class *devclass, UINT32 state, union devinfo *info ) |
| 262 | static void osborne1_floppy_getinfo(const mess_device_class *devclass, UINT32 state, union devinfo *info) |
| 220 | 263 | { |
| 221 | | switch( state ) |
| 264 | /* floppy */ |
| 265 | switch(state) |
| 222 | 266 | { |
| 223 | | case MESS_DEVINFO_INT_COUNT: info->i = 2; break; |
| 224 | | case MESS_DEVINFO_PTR_LOAD: info->load = DEVICE_IMAGE_LOAD_NAME(osborne1_floppy); break; |
| 225 | | case MESS_DEVINFO_STR_FILE_EXTENSIONS: strcpy( info->s = device_temp_str(), "img" ); break; |
| 226 | | default: legacybasicdsk_device_getinfo( devclass, state, info ); break; |
| 267 | /* --- the following bits of info are returned as 64-bit signed integers --- */ |
| 268 | case MESS_DEVINFO_INT_COUNT: info->i = 2; break; |
| 269 | |
| 270 | /* --- the following bits of info are returned as pointers to data or functions --- */ |
| 271 | case MESS_DEVINFO_PTR_FLOPPY_OPTIONS: info->p = (void *) floppyoptions_osborne1; break; |
| 272 | |
| 273 | default: floppy_device_getinfo(devclass, state, info); break; |
| 227 | 274 | } |
| 228 | 275 | } |
| 229 | 276 | |
| 230 | | |
| 231 | 277 | static SYSTEM_CONFIG_START( osborne1 ) |
| 232 | 278 | CONFIG_DEVICE( osborne1_floppy_getinfo ) |
| 233 | 279 | CONFIG_RAM_DEFAULT( 68 * 1024 ) /* 64KB Main RAM and 4Kbit video attribute RAM */ |
src/mess/drivers/comx35.c
| r5628 | r5629 | |
| 15 | 15 | #include "cpu/cdp1802/cdp1802.h" |
| 16 | 16 | #include "sound/cdp1869.h" |
| 17 | 17 | #include "sound/wave.h" |
| 18 | | #include "devices/basicdsk.h" |
| 18 | #include "devices/mflopimg.h" |
| 19 | #include "formats/comx35_dsk.h" |
| 19 | 20 | #include "devices/cassette.h" |
| 20 | 21 | #include "devices/printer.h" |
| 21 | 22 | #include "devices/snapquik.h" |
| r5628 | r5629 | |
| 449 | 450 | #define rom_comx35n rom_comx35p |
| 450 | 451 | |
| 451 | 452 | /* System Configuration */ |
| 452 | | |
| 453 | 453 | static void comx35_floppy_getinfo(const mess_device_class *devclass, UINT32 state, union devinfo *info) |
| 454 | 454 | { |
| 455 | 455 | /* floppy */ |
| 456 | 456 | switch(state) |
| 457 | 457 | { |
| 458 | 458 | /* --- the following bits of info are returned as 64-bit signed integers --- */ |
| 459 | | case MESS_DEVINFO_INT_COUNT: info->i = 2; break; |
| 459 | case MESS_DEVINFO_INT_COUNT: info->i = 2; break; |
| 460 | 460 | |
| 461 | 461 | /* --- the following bits of info are returned as pointers to data or functions --- */ |
| 462 | | case MESS_DEVINFO_PTR_LOAD: info->load = DEVICE_IMAGE_LOAD_NAME(comx35_floppy); break; |
| 462 | case MESS_DEVINFO_PTR_FLOPPY_OPTIONS: info->p = (void *) floppyoptions_comx35; break; |
| 463 | 463 | |
| 464 | | /* --- the following bits of info are returned as NULL-terminated strings --- */ |
| 465 | | case MESS_DEVINFO_STR_FILE_EXTENSIONS: strcpy(info->s = device_temp_str(), "img"); break; |
| 466 | | |
| 467 | | default: legacybasicdsk_device_getinfo(devclass, state, info); break; |
| 464 | default: floppy_device_getinfo(devclass, state, info); break; |
| 468 | 465 | } |
| 469 | 466 | } |
| 470 | | |
| 471 | 467 | static SYSTEM_CONFIG_START( comx35 ) |
| 472 | 468 | CONFIG_RAM_DEFAULT (32 * 1024) |
| 473 | 469 | CONFIG_DEVICE(comx35_floppy_getinfo) |
src/mess/drivers/xerox820.c
| r5628 | r5629 | |
| 34 | 34 | #include "machine/z80sio.h" |
| 35 | 35 | #include "machine/wd17xx.h" |
| 36 | 36 | #include "machine/com8116.h" |
| 37 | | #include "devices/basicdsk.h" |
| 37 | #include "devices/mflopimg.h" |
| 38 | #include "formats/basicdsk.h" |
| 38 | 39 | |
| 39 | 40 | INLINE const device_config *get_floppy_image(running_machine *machine, int drive) |
| 40 | 41 | { |
| r5628 | r5629 | |
| 590 | 591 | } |
| 591 | 592 | return 0; |
| 592 | 593 | } |
| 594 | static void xerox820_load_proc(const device_config *image) |
| 595 | { |
| 596 | xerox820_state *state = image->machine->driver_data; |
| 597 | |
| 598 | switch (image_length(image)) |
| 599 | { |
| 600 | case 77*1*26*128: // 250K 8" SSSD |
| 601 | state->_8n5 = 1; |
| 602 | state->dsdd = 0; |
| 603 | return; |
| 593 | 604 | |
| 605 | case 77*1*26*256: // 500K 8" SSDD |
| 606 | state->_8n5 = 1; |
| 607 | state->dsdd = 0; |
| 608 | return; |
| 609 | |
| 610 | case 40*1*18*128: // 90K 5.25" SSSD |
| 611 | state->_8n5 = 0; |
| 612 | state->dsdd = 0; |
| 613 | return; |
| 614 | |
| 615 | case 40*2*18*128: // 180K 5.25" DSSD |
| 616 | state->_8n5 = 0; |
| 617 | state->dsdd = 1; |
| 618 | return; |
| 619 | } |
| 620 | |
| 621 | } |
| 622 | |
| 594 | 623 | /* Machine Initialization */ |
| 595 | 624 | |
| 596 | 625 | static MACHINE_START( xerox820 ) |
| 597 | 626 | { |
| 627 | int drive; |
| 598 | 628 | xerox820_state *state = machine->driver_data; |
| 599 | 629 | |
| 600 | 630 | /* find devices */ |
| r5628 | r5629 | |
| 617 | 647 | |
| 618 | 648 | /* bank switch */ |
| 619 | 649 | xerox820_bankswitch(machine, 1); |
| 650 | |
| 651 | for(drive=0;drive<2;drive++) |
| 652 | { |
| 653 | floppy_install_load_proc(image_from_devtype_and_index(machine, IO_FLOPPY, drive), xerox820_load_proc); |
| 654 | } |
| 620 | 655 | |
| 656 | |
| 621 | 657 | /* register for state saving */ |
| 622 | 658 | state_save_register_global_pointer(machine, state->video_ram, XEROX820_LCD_VIDEORAM_SIZE); |
| 623 | 659 | state_save_register_global(machine, state->pbrdy); |
| r5628 | r5629 | |
| 710 | 746 | ROM_END |
| 711 | 747 | |
| 712 | 748 | /* System Configuration */ |
| 749 | FLOPPY_OPTIONS_START(xerox820 ) |
| 750 | FLOPPY_OPTION( sssd8, "dsk", "8\" SSSD", basicdsk_identify_default, basicdsk_construct_default, |
| 751 | HEADS([1]) |
| 752 | TRACKS([77]) |
| 753 | SECTORS([26]) |
| 754 | SECTOR_LENGTH([128]) |
| 755 | FIRST_SECTOR_ID([1])) |
| 756 | FLOPPY_OPTION( ssdd8, "dsk", "8\" SSDD", basicdsk_identify_default, basicdsk_construct_default, |
| 757 | HEADS([1]) |
| 758 | TRACKS([77]) |
| 759 | SECTORS([26]) |
| 760 | SECTOR_LENGTH([256]) |
| 761 | FIRST_SECTOR_ID([1])) |
| 762 | FLOPPY_OPTION( sssd5, "dsk", "5.25\" SSSD", basicdsk_identify_default, basicdsk_construct_default, |
| 763 | HEADS([1]) |
| 764 | TRACKS([40]) |
| 765 | SECTORS([18]) |
| 766 | SECTOR_LENGTH([128]) |
| 767 | FIRST_SECTOR_ID([1])) |
| 768 | FLOPPY_OPTION( ssdd5, "dsk", "5.25\" SSDD", basicdsk_identify_default, basicdsk_construct_default, |
| 769 | HEADS([2]) |
| 770 | TRACKS([40]) |
| 771 | SECTORS([18]) |
| 772 | SECTOR_LENGTH([128]) |
| 773 | FIRST_SECTOR_ID([1])) |
| 774 | FLOPPY_OPTIONS_END |
| 713 | 775 | |
| 714 | | static DEVICE_IMAGE_LOAD( xerox820_floppy ) |
| 715 | | { |
| 716 | | xerox820_state *state = image->machine->driver_data; |
| 717 | | |
| 718 | | if (image_has_been_created(image)) |
| 719 | | { |
| 720 | | return INIT_FAIL; |
| 721 | | } |
| 722 | | |
| 723 | | if (device_load_basicdsk_floppy(image) == INIT_PASS) |
| 724 | | { |
| 725 | | switch (image_length(image)) |
| 726 | | { |
| 727 | | case 77*1*26*128: // 250K 8" SSSD |
| 728 | | basicdsk_set_geometry(image, 77, 1, 26, 128, 1, 0, FALSE); |
| 729 | | state->_8n5 = 1; |
| 730 | | state->dsdd = 0; |
| 731 | | return INIT_PASS; |
| 732 | | |
| 733 | | case 77*1*26*256: // 500K 8" SSDD |
| 734 | | basicdsk_set_geometry(image, 77, 1, 26, 256, 1, 0, FALSE); |
| 735 | | state->_8n5 = 1; |
| 736 | | state->dsdd = 0; |
| 737 | | return INIT_PASS; |
| 738 | | |
| 739 | | case 40*1*18*128: // 90K 5.25" SSSD |
| 740 | | basicdsk_set_geometry(image, 40, 1, 18, 128, 1, 0, FALSE); |
| 741 | | state->_8n5 = 0; |
| 742 | | state->dsdd = 0; |
| 743 | | return INIT_PASS; |
| 744 | | |
| 745 | | case 40*2*18*128: // 180K 5.25" DSSD |
| 746 | | basicdsk_set_geometry(image, 40, 2, 18, 128, 1, 0, FALSE); |
| 747 | | state->_8n5 = 0; |
| 748 | | state->dsdd = 1; |
| 749 | | return INIT_PASS; |
| 750 | | } |
| 751 | | } |
| 752 | | |
| 753 | | return INIT_FAIL; |
| 754 | | } |
| 755 | | |
| 756 | 776 | static void xerox820_floppy_getinfo(const mess_device_class *devclass, UINT32 state, union devinfo *info) |
| 757 | 777 | { |
| 758 | 778 | /* floppy */ |
| 759 | 779 | switch(state) |
| 760 | 780 | { |
| 761 | 781 | /* --- the following bits of info are returned as 64-bit signed integers --- */ |
| 762 | | case MESS_DEVINFO_INT_COUNT: info->i = 2; break; |
| 782 | case MESS_DEVINFO_INT_COUNT: info->i = 2; break; |
| 763 | 783 | |
| 764 | 784 | /* --- the following bits of info are returned as pointers to data or functions --- */ |
| 765 | | case MESS_DEVINFO_PTR_LOAD: info->load = DEVICE_IMAGE_LOAD_NAME(xerox820_floppy); break; |
| 785 | case MESS_DEVINFO_PTR_FLOPPY_OPTIONS: info->p = (void *) floppyoptions_xerox820; break; |
| 766 | 786 | |
| 767 | | /* --- the following bits of info are returned as NULL-terminated strings --- */ |
| 768 | | case MESS_DEVINFO_STR_FILE_EXTENSIONS: strcpy(info->s = device_temp_str(), "dsk"); break; |
| 769 | | |
| 770 | | default: legacybasicdsk_device_getinfo(devclass, state, info); break; |
| 787 | default: floppy_device_getinfo(devclass, state, info); break; |
| 771 | 788 | } |
| 772 | 789 | } |
| 773 | 790 | |