And Tetris definitely also needs a way to retain the high score...

This so that the dead RTC battery no longer makes the scope useless.
How about a “wizard” for the screensaver feature?
as a 1st will you share only the std FW with patched option, and after the added bonusses ?
* When booting, check DS1742W battery status and RTC running flags, and if battery is empty then overwrite the NVRAM with something that boots up with default settings. Say default to Jan 1 2000, 00:00, 10000 hours engine hours, all channels on at 1V/div, 10x voltage probe, DC, 1 us/div, MAC random last 3 bytes.
Or maybe store some of those setting in flash instead of NVRAM.
cp flash_tom_patched.bin flash_target_scope_patched.bin &&
dd if=flash_target_scope_original.bin of=flash_target_scope_patched.bin \
bs=131072 skip=20 seek=20 count=12 conv=notrunc
Had to only loadw (erase sectors, reflash) the bottom part of the hexfile. So the bit 0-0x2800000. Not just to save my calibration, but also so that it preserved all 4 channels (instead of ending up with only CH1, CH2 instead of CH1 CH2 CH3 CH4).
* Also set the RTC when loading defaults. It now shows "25 BUG-2580 85:28:0k". Would be nicer maybe to set it to 1/1/2020 12:00:00 when loading default NVRAM image? And let it hide the time/date display by default (is a setting option, 'Display Date/Time On Off').
* The message "NVSRAM corrupt, using default values" does not disappear after it gets a good battery again. Would be nicer if it would not keep saying that after DS1742W battery repair.
* Would be nice if it tests the battery flag (see datasheet DS1742) and uses that (also?) to decide that the NVRAM data is bad.
I think you now only do a checksum check?
* Not sure if this new code already does it, but if not then DS1742 /OSC bit clearing/setting may need attention. As in special sequency with R and W bits, just as with setting the time/date. There's more to that than simply treating the RTC registers as RAM bytes. See DS1742 datasheet for details.
* No longer let it say "To download latest firmware, visit www.tektronix.com" - because this now is the latest and greatest!
* If it sees the empty battery flag in DS1742W, let it prompt "check out eevblog.com forum for hints on how to fix my dead DS1742W battery!"
PS this version did not have the new option from your opening post: the dev team picture, the model BW options etc...
I’m using BDM v4.3. How can I erase and flash a smaller region? Just provide it a smaller file? Can I start flashing at an address other than 0? That would allow me to reflash even faster.
Answer y to each prompt. 30-50 ish times or so.
Some improvement suggestions:

UUUUUUUUUUUUUUUUUUUU
Loading Image
Boot flash checksum OK
Code flash checksum OK
0x00800000 bytes of RAM found
*** Address/Data line FAILED at 0x00000000 expected 0x55555555 actual 0xaaaaaaaa ***
*** Address/Data line FAILED at 0x00000000 expected 0xffffffff actual 0x00000000 ***
NVRAM address line check OK
NVRAM data line check OK
TBC ACQ SRAM address line check OK
TBC ACQ SRAM data line check OK
TBC Display SRAM address line check OK
TBC Display SRAM data line check OK
SuperI/O ID 0x000000b2
Uncompressing code from 0xffc40010 size 0x00000370
*** Address/Data line FAILED at 0x00000000 expected 0x55555555 actual 0xaaaaaaaa ***
*** Address/Data line FAILED at 0x00000000 expected 0xffffffff actual 0x00000000 ***
With the original firmware, it would not sayQuote*** Address/Data line FAILED at 0x00000000 expected 0x55555555 actual 0xaaaaaaaa ***
*** Address/Data line FAILED at 0x00000000 expected 0xffffffff actual 0x00000000 ***
Section Start End
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━ ━━━━━━━━━━━━━━━━━
Boot/recovery 0x000000 0x03FFFF
Application, languages, padding and team photo 0x040000 0x27FFFF
Persistent journal and boot graphics/tail 0x280000 0x3FFFFF
I made a new BDM.exe that lets you do a partial flash erase & reprogram. Press 'Q' instead of 'p' for that.
NVRAM address line check OK
NVRAM data line check OK
A good tds3000b rom image is here i think:
https://www.eevblog.com/forum/repair/tds3014-adventures-(seeking-75-75mhz-oscillator)/msg6176601/#msg6176601
UUUUUUUUUUUUUUUUUUUU
Boot flash checksum OK
Code flash checksum OK
0x00800000 bytes of RAM found
DRAM address line check OK
DRAM data line check OK
NVRAM address line check OK
NVRAM data line check OK
TBC ACQ SRAM address line check OK
TBC ACQ SRAM data line check OK
TBC Display SRAM address line check OK
TBC Display SRAM data line check OK
SuperI/O ID 0x000000b2
Loading Image
Uncompressing code from 0xffc40010 size 0x00000370
Enabling cache
Entering usrRoot
Enabling the MMU
sysClkRateSet using 50 MHz
Enabling I/O system
excInit called
Class 17 Level 3 hwResetTBC(): Installing Machine Check Exception handler. 13:58:00 10/23/2026 (thread: StartUp)
Class 7 Level 3 hwI2CAppKeySearch: new device I2C/APPKEY2 slot 2 addr 0xa2
13:58:01 10/23/2026 (thread: StartUp)
TBC reset count = 0
Doubling core clock ... complete
software emulation
Exception current instruction address: 0x00349ba8
Machine Status Register: 0x0000lass 17 Level 3 hwOnBusErr(): Machine Check Exception - Rebooting... vecNum 4096 13:58:09 10/23/2026 (thread: exec)
cacheDisable (0);
Calling romInitUUUUUUUUUUUUUUUUUUUU
Boot flash checksum OK
Another tds3000b binary flash dump attached. This one works ok in my TDS3014B.
I tried to blend in with your new firmware image, but it still does not work.
I think the reason for different RAM read/write timings is that the -b model doubles CPU clock speed at some point. Without adjusted timings it would be trying to access the chips too fast i guess.
UUUUUUUUUUUUUUUUUUUU
Boot flash checksum OK
Code flash checksum OK
0x00800000 bytes of RAM found
DRAM address line check OK
DRAM data line check OK
NVRAM address line check OK
NVRAM data line check OK
TBC ACQ SRAM address line check OK
TBC ACQ SRAM data line check OK
TBC Display SRAM address line check OK
TBC Display SRAM data line check OK
SuperI/O ID 0x000000b2
Loading Image
Uncompressing code from 0xffc40010 size 0x00000576
Enabling cache
Entering usrRoot
Enabling the MMU
sysClkRateSet using 50 MHz
Enabling I/O system
excInit called
Class 17 Level 3 hwResetTBC(): Installing Machine Check Exception handler. 09:55:32 10/24/2026 (thread: StartUp)
Class 7 Level 3 hwI2CAppKeySearch: new device I2C/APPKEY2 slot 2 addr 0xa2
09:55:32 10/24/2026 (thread: StartUp)
TBC reset count = 0
Doubling core clock ... complete
software emulation
Exception current instruction address: 0x00349ba8
Machine Status Register: 0xlass 17 Level 3 hwOnBusErr(): Machine Check Exception - Rebooting... vecNum 4096 09:55:41 10/24/2026 (thread: exec)
cacheDisable (0);
Calling romInitUUUUUUUUUUUUUUUUUUUU
Boot flash checksum OK
Code flash checksum OK
0x00800000 bytes of RAM found
DRAM address line check OK
DRAM data line check OK
NVRAM address line check OK
NVRAM data line check OK
TBC ACQ SRAM address line check OK
TBC ACQ SRAM data line check OK
TBC Display SRAM address line check OK
TBC Display SRAM data line check OK
SuperI/O ID 0x000000b2
Loading Image
Uncompressing code from 0xffc40010 size 0x00000576
Enabling cache
Entering usrRoot
Enabling the MMU
sysClkRateSet using 50 MHz
Enabling I/O system
excInit called
Class 17 Level 3 hwResetTBC(): Installing Machine Check Exception handler. 09:55:47 10/24/2026 (thread: StartUp)
Class 7 Level 3 hwI2CAppKeySearch: new device I2C/APPKEY2 slot 2 addr 0xa2
09:55:47 10/24/2026 (thread: StartUp)
Class 2 Level 3 acqWaitForAcqDone: timed out, sysjmp = 0x25
09:55:48 10/24/2026 (thread: StartUp)
Class 2 Level 3 acqAcquireScalarStats: acqWaitForAcqDone failed.
09:55:48 10/24/2026 (thread: StartUp)
Class 3 Level 3 calVertSetupForInternalSineWave failed. 09:55:49 10/24/2026 (thread: StartUp)
TBC reset count = 5
Doubling core clock ... complete
software emulation
Exception current instruction address: 0x00349ba8
Machine Status Register: 0x0000b032
Condition Register: lass 17 Level 3 hwOnBusErr(): Machine Check Exception - Rebooting... vecNum 4096 09:55:56 10/24/2026 (thread: exec)
cacheDisable (0);
Calling romInitUUUUUUUUUUUUUUUUUUUU
Boot flash checksum OK
Code flash checksum OK
0x00800000 bytes of RAM found
DRAM address line check OK
DRAM data line check OK
NVRAM address line check OK
NVRAM data line check OK
TBC ACQ SRAM address line check OK
TBC ACQ SRAM data line check OK
TBC Display SRAM address line check OK
TBC Display SRAM data line check OK
SuperI/O ID 0x000000b2
Loading Image
Uncompressing code from 0xffc40010 size 0x00000576
UUUUUUUUUUUUUUUUUUUU
Boot flash checksum OK
This flash_rom_4mb_guard_play_u_tds3054b.bin in the TDS3014B gave the same as what i had yesterday: booting, but then crashing. Diagnostics says this:
...
That worked better. All looks good at first sight. Except for the dev team picture. Scope freezes if i try to get that. Maybe that dev team is angry with us now and no longer wants to show up in this theatre?