What is the Rug Pattern?
With this hardware architecture, anything that is in the RAM gets 'written' out to the display (independently from the CPU - sharing alternate clock cycles). The 'Rug' pattern is the visual representation of the RAM test. After the RAM, ROM tests complete, the game code(application) is loaded and controls what's in the RAM.
Watchdog?
There is another independent circuit that will trigger a complete board/CPU reset if it isn't satisfied withing a certain time period. The term Watchdog is a great analogy. It 'Watches' the hardware and software and will 'Bark' if not 'Petted' every so often.
For this architecture, there is a counter that starts at zero and begins counting up with each vertical blanking pulse. The refresh rate is 60Hz, so you get a pulse every ~16.7 milliseconds. Once the counter reaches 8 (~133 milliseconds), the reset is triggered and the whole boot process starts over (Looping).
To prevent this reset from happening, the programmers had to add code that would write out a specific value to reset the counter back to zero before it reached 8. This ensures the code is running as intended and isn't 'hung' or locked up. There are also additional hardware monitoring that the watchdog circuit monitors, but they all have to be present and working for this software reset to get through.
Rug/Boot Looping?
When we power on any game, the CPU is hard coded to look at a specific memory address for it's first instruction. This is called the 'Reset Vector' (Boot Sector). Williams put the RAM/ROM test program in this location and is typically on ROM3/12 (closest to the Ribbon cable). Once the tests are complete, the system attempts to load the game code. This code is spread across the rest of the ROMs and if any problem prevents or delays the application from running, the watchdog will trigger causing this looping.
Take it to the BANK...
The CPU has a limited number of pins which in turn limits the number of addresses it can communicate with. To expand this range, the engineers got creative and created a method to Re-Use addresses for different devices called Bank Switching. If the system in on Bank 0, it can 'talk' to the full address range with whatever hardware is in that section. The code can then switch over to Bank 1 and communicate with all the devices there. This comes with some limitations such as trying to move data between the banks and the time to switch back and forth. Williams architecture put all of the DRAM and a few of the ROMS on Bank 0. This space includes the Reset Vector, so the game can boot and run the test programs (Rug Pattern) without having to leave Bank 0. When the test completes and tries to load the game code (mostly in Bank 1). if the Bank switching has an issue and can't move to Bank 1, the ROMS in that space can't be read (watchdog will trigger).
~Brad