1.1 diff -r e1693c4b8a0c -r 57c6ef81ae81 src/wd279x.c 1.2 --- a/src/wd279x.c Mon Dec 06 01:26:37 2010 +0000 1.3 +++ b/src/wd279x.c Mon Dec 06 01:43:04 2010 +0000 1.4 @@ -351,6 +351,7 @@ 1.5 switch (cmd) { 1.6 case CMD_READ_ADDRESS: 1.7 // Read Address 1.8 + ctx->head = (val & 0x02) ? 1 : 0; 1.9 1.10 // reset data pointers 1.11 ctx->data_pos = ctx->data_len = 0; 1.12 @@ -380,7 +381,8 @@ 1.13 1.14 case CMD_READ_SECTOR: 1.15 case CMD_READ_SECTOR_MULTI: 1.16 - printf("WD279X: READ SECTOR chs=%d:%d:%d\n", ctx->track, ctx->head, ctx->sector); 1.17 + ctx->head = (val & 0x02) ? 1 : 0; 1.18 + printf("WD279X: READ SECTOR cmd=%02X chs=%d:%d:%d\n", cmd, ctx->track, ctx->head, ctx->sector); 1.19 // Read Sector or Read Sector Multiple 1.20 // reset data pointers 1.21 ctx->data_pos = ctx->data_len = 0; 1.22 @@ -416,6 +418,7 @@ 1.23 case CMD_READ_TRACK: 1.24 // Read Track 1.25 // TODO! implement this 1.26 + ctx->head = (val & 0x02) ? 1 : 0; 1.27 ctx->status = 0; 1.28 // B6, B5, B4, B3 = 0 1.29 // B2 = Lost Data. Caused if DRQ isn't serviced in time. FIXME-not emulated 1.30 @@ -427,6 +430,7 @@ 1.31 case CMD_WRITE_SECTOR_MULTI: 1.32 // Write Sector or Write Sector Multiple 1.33 1.34 + ctx->head = (val & 0x02) ? 1 : 0; 1.35 // reset data pointers 1.36 ctx->data_pos = ctx->data_len = 0; 1.37 1.38 @@ -444,6 +448,7 @@ 1.39 1.40 case CMD_FORMAT_TRACK: 1.41 // Write Track (aka Format Track) 1.42 + ctx->head = (val & 0x02) ? 1 : 0; 1.43 ctx->status = 0; 1.44 // B6 = Write Protect. FIXME -- emulate this! 1.45 // B5, B4, B3 = 0