From: Stuart B. <sd...@zu...> - 2013-01-26 22:04:16
|
On Sat, Jan 26, 2013 at 11:48:28AM +0000, fr...@us... wrote: > @@ -424,6 +427,8 @@ > static libspectrum_byte printer_zxp_read(libspectrum_word port GCC_UNUSED, > int *attached) > { > +if(!settings_current.printer) > + return(0xff); > if(!printer_graphics_enabled) > return(0xff); > if(plusd_available) > @@ -470,8 +475,11 @@ > } I'm not sure about this, although I would accept that if this is a bug, then it was already a bug... but it seems to me that if I load a snapshot with the ZX printer enabled, then I shouldn't get floating bus values when reading from the ZX printer's I/O port... but that's exactly what I would get if the global printers option is disabled. I notice that printer_parallel_read() and printer_parallel_write() also seem wrong in this regard, as printer_parallel_read() probably shouldn't return floating bus values (although it may well depend on the parallel interface in question as to what would be returned -- I don't know)... and printer_parallel_write() should probably update parallel_data so that if the 'printing' option is later enabled, then when the strobe bit is toggled, the correct data is written. Arguably, I would imagine that parallel_data should be saved in snapshots (in a similar vein to the way that specdrum_dac is saved), since it's plausible that some print drivers might not update the data register when printing sequences of the same character... I could raise another ticket for this, but am not sure whether it needs fixing for 1.1 or not. Cheers, -- Stuart |