/* Atari VCS 2 Line Kernel Test` */ #pragma origin $F800 //4k Cartridge #include //TIA and RIOT Registers #include //VCS Program Stub #include //VCS Library Routines #include //Two Player Score Kernel #include //Two Player Score Kernel #include //Two Line Game Kernel //TIA Register Bit Masks #define CLEAR = 0 #define SET = $0B //Console Switch Bit Masks #define P1DIFF = $80 //Player 1 Difficulty #define P0DIFF = $40 //Player 0 Difficulty //Constants Required by timerbar.h02 #define TMRCLR = $64 //Constants Required by k2line.h02 #define P0HGHT = 10 //Player 0 Height #define P1HGHT = 10 //Player 1 Height //Color Table char colors = {$86, $C6, $46, $00, $0E, $06, $0A, $00}; //Human Shaped Player Graphics char human = {%00011100, %00011000, %00011000, %00011000, %01011010, %01011010, %00111100, %00000000, %00011000, %00011000}; zeropage char frame; //Frame Counter /* Setup Code */ void setup() { setclr(&colors); //Set Color Table initmr(); //Initialize Timer Bar } /* Vertical Blank Code */ void vrtblk() { scrprp(); //Prepare Score For Display posobj(0,0); //Set P0 X-Position p0prep(175, &human); //Set P0 Y-Position & Graphics Pointer posobj(8,1); //Set P1 X-Position p1prep(175, &human); //Set P1 Y-Position & Graphics Pointer } /* Execute Kernel Code */ void kernel() { scrdsp(); //Display Scores dsptmr(); //Display Timer Bar dsplns(); //Display Playfield and Objects } /* Execute Overscan Code */ void ovrscn() { frame++; if (!frame & 7) { //Decrement Timer Every X Frames if (!dectmr()) initmr(); //Reset Timer if It Runs Out } } #include //Digit Graphics #include //Finalization Code