static void laser_put_track(void) { /* drive selected and image file ok? */ if( laser_drive >= 0 && laser_file() != NULL ) { int size, offs; offs = TRKSIZE_VZ * laser_track_x2[laser_drive]/2; image_fseek(laser_file(), offs + laser_fdc_start, SEEK_SET); size = image_fwrite(laser_file(), &laser_fdc_data[laser_fdc_start], laser_fdc_write); logerror("put track @$%05X+$%X $%04X/$%04X bytes\n", offs, laser_fdc_start, size, laser_fdc_write); } }
static void vtech1_put_track(void) { /* drive selected and image file ok? */ if (vtech1_drive >= 0 && vtech1_file() != NULL) { int size, offs; offs = TRKSIZE_VZ * vtech1_track_x2[vtech1_drive]/2; image_fseek(vtech1_file(), offs + vtech1_fdc_start, SEEK_SET); size = image_fwrite(vtech1_file(), &vtech1_fdc_data[vtech1_fdc_start], vtech1_fdc_write); if (LOG_VTECH1_FDC) logerror("put track @$%05X+$%X $%04X/$%04X bytes\n", offs, vtech1_fdc_start, size, vtech1_fdc_write); } }
/* Write a character to typewriter */ static void typewriter_out(running_machine &machine, UINT8 data) { pdp1_state *state = machine.driver_data<pdp1_state>(); if (LOG_IOT_EXTRA) logerror("typewriter output %o\n", data); pdp1_typewriter_drawchar(machine, data); if (state->m_typewriter.fd) #if 1 state->m_typewriter.fd->fwrite(& data, 1); #else { static const char ascii_table[2][64] = { /* n-s = non-spacing */ { /* lower case */ ' ', '1', '2', '3', '4', '5', '6', '7', '8', '9', '*', '*', '*', '*', '*', '*', '0', '/', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '*', ',', '*',/*black*/ '*',/*red*/ '*',/*Tab*/ '*', '\200',/*n-s middle dot*/'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', '*', '*', '-', ')', '\201',/*n-s overstrike*/'(', '*', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', '*',/*Lower Case*/ '.', '*',/*Upper Case*/ '*',/*Backspace*/ '*', '*'/*Carriage Return*/ }, { /* upper case */ ' ', '"', '\'', '~', '\202',/*implies*/ '\203',/*or*/ '\204',/*and*/ '<', '>', '\205',/*up arrow*/ '*', '*', '*', '*', '*', '*', '\206',/*right arrow*/'?', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '*', '=', '*',/*black*/ '*',/*red*/ '\t',/*Tab*/ '*', '_',/*n-s???*/ 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', '*', '*', '+', ']', '|',/*n-s???*/ '[', '*', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', '*',/*Lower Case*/ '\207',/*multiply*/ '*',/*Upper Case*/ '\b',/*Backspace*/ '*', '*'/*Carriage Return*/ } }; data &= 0x3f; switch (data) { case 034: /* Black: ignore */ //color = color_typewriter_black; { static const char black[5] = { '\033', '[', '3', '0', 'm' }; image_fwrite(state->m_typewriter.fd, black, sizeof(black)); } break; case 035: /* Red: ignore */ //color = color_typewriter_red; { static const char red[5] = { '\033', '[', '3', '1', 'm' }; image_fwrite(state->m_typewriter.fd, red, sizeof(red)); } break; case 072: /* Lower case */ state->m_case_shift = 0; break; case 074: /* Upper case */ state->m_case_shift = 1; break; case 077: /* Carriage Return */ { static const char line_end[2] = { '\r', '\n' }; image_fwrite(state->m_typewriter.fd, line_end, sizeof(line_end)); } break; default: /* Any printable character... */ if ((data != 040) && (data != 056)) /* 040 and 056 are non-spacing characters: don't try to print right now */ /* print character (lookup ASCII equivalent in table) */ image_fwrite(state->m_typewriter.fd, & ascii_table[state->m_case_shift][data], 1); break; } } #endif }
static UINT32 mess_chd_write(chd_interface_file *file, UINT64 offset, UINT32 count, const void *buffer) { image_fseek((mess_image *)file, offset, SEEK_SET); return image_fwrite((mess_image *)file, buffer, count); }