diff --git a/cores/plus_too/addrController_top.v b/cores/plus_too/addrController_top.v index 854460e..1c4d561 100644 --- a/cores/plus_too/addrController_top.v +++ b/cores/plus_too/addrController_top.v @@ -3,6 +3,7 @@ module addrController_top( input clk8, // 8.125 MHz CPU clock // system config: + input turbo, // 0 = normal, 1 = faster input configROMSize, // 0 = 64K ROM, 1 = 128K ROM input [1:0] configRAMSize, // 0 = 128K, 1 = 512K, 2 = 1MB, 3 = 4MB RAM @@ -117,9 +118,11 @@ module addrController_top( // video controls memory bus during the first clock of the four-clock cycle assign videoBusControl = (busCycle == 2'b00); // cpu controls memory bus during the third clock of the four-clock cycle - assign cpuBusControl = (busCycle == 2'b10) && (subCycle != 2'd2); - // - wire extraBusControl = (busCycle == 2'b01); + assign cpuBusControl = turbo?cpuBusControl_fast:cpuBusControl_normal; + wire cpuBusControl_normal = (busCycle == 2'b01) && (subCycle != 2'd2); + wire cpuBusControl_fast = (busCycle == 2'b01) || (busCycle == 2'b11); + + wire extraBusControl = (busCycle == 2'b10); // interconnects wire selectRAM, selectROM; diff --git a/cores/plus_too/plusToo_top.v b/cores/plus_too/plusToo_top.v index 92a69c7..41c14ff 100644 --- a/cores/plus_too/plusToo_top.v +++ b/cores/plus_too/plusToo_top.v @@ -107,7 +107,7 @@ always @(negedge dio_download or posedge diskEject[1]) begin dsk_ext_ds <= 1'b0; dsk_ext_ss <= 1'b0; end else if(dio_index == 2) begin - dsk_ext_ds <= (dio_addr == 409599); // double sides disk, addr counts words, not bytes + dsk_ext_ds <= (dio_addr == 409599); // double sided disk, addr counts words, not bytes dsk_ext_ss <= (dio_addr == 204799); // single sided disk end end @@ -225,13 +225,15 @@ wire keyData; "F2,DSK;", "S3,IMG;", "O4,Memory,1MB,4MB;", - "T5,Reset" + "O5,Speed,Normal,Turbo;", + "T6,Reset" }; wire status_mem = status[4]; - wire status_reset = status[5]; + wire status_turbo = status[5]; + wire status_reset = status[6]; - parameter CONF_STR_LEN = 10+7+7+7+18+8; + parameter CONF_STR_LEN = 10+7+7+7+18+22+8; // the status register is controlled by the on screen display (OSD) wire [7:0] status; @@ -307,6 +309,7 @@ wire keyData; ._cpuUDS(_cpuUDS), ._cpuLDS(_cpuLDS), ._cpuRW(_cpuRW), + .turbo (status_turbo), .configROMSize(configROMSize), .configRAMSize(configRAMSize), .memoryAddr(memoryAddr), @@ -348,7 +351,7 @@ wire keyData; always @(posedge clk8) begin last_mem_config <= status_mem; - // various source can reset the mac + // various sources can reset the mac if(!pll_locked || status[0] || status_reset || buttons[1] || rom_download || (last_mem_config != status_mem)) rst_cnt <= 16'd65535; diff --git a/cores/plus_too/readme.md b/cores/plus_too/readme.md index c69fd5b..ebc3ecf 100644 --- a/cores/plus_too/readme.md +++ b/cores/plus_too/readme.md @@ -31,5 +31,6 @@ Functional changes: - fix mouse counter wrapping - Basic sound support - SCSI interface + SCSI hdd support +- CPU Turbo mode (ca factor 2.5) Binaries are available at the [binaries repository](https://github.com/mist-devel/mist-binaries/tree/master/cores/plus_too).