/* Atari VCS Color Bars Program */ #pragma origin $F800 //4k Cartridge #include //TIA and RIOT Registers #include //Initialize VCS #include //VCS Library Routines #include //Two Player Score Kernel zeropage char clrbkg; //Background Color zeropage char clrmov; //Color Movement Flag zeropage char clrofs; //Color Offset zeropage char clrmsk; //Color/B&W Mask zeropage char cntdwn; //Timer Countdown char colors = {$86, $C6, $46, $00, $0E, $06, $0A, $00}; //Color Table /* Setup Code */ void setup() { } /* Vertical Blank Code */ void vrtblk() { setclr(&colors); //Set Color Table scrprp(); //Prepare Score for Display } /* Execute Kernel Code */ void kernel() { CTRLPF = 2; //Set Score Mode scrdsp(); //Display Scores (12 Scanlines) X=180; //Draw 180 Scanlines do { clrbkg = X; if (!SWCHB & 128) clrbkg<<; A = clrbkg + clrofs & clrmsk; //Set Background Color WSYNC = A; //Wait for end of Scanline COLUBK = A; //Set Background Color X--; } while (X); return; } /* Execute Overscan Code */ void ovrscn() { if (!SWCHB & 1) //Game Reset clrmov = $FF; //Turn On Scrolling if (!SWCHB & 2) //Game Select clrmov = 0; //Turn Off Scrolling clrmsk = (SWCHB & 8) ? $FF : $0F; if (clrmov) { if (SWCHB & 64) clrofs--; else clrofs++; } cntdwn++; if (cntdwn == 10) { cntdwn = 0; addbcd(1,&score2); //Increment Player 2 Score if (!score2) addbcd(1, &score1); //Increment Player 1 Score } } #include //Digit Graphics #include //Finalization Code