██5,15≡15,1██5,15F1ile 5E1dit 5S1earch 5R1un 5C1ompile 5D1ebug 5P1roject 5O1ptions 5W1indow15,1██5,15H1elp15,1██ 0,2╔═[9■0]════════════════════════════15 0ADVENT.CPP15 0════════════════════════════2═[9 0]═╗ 0,2║2,1█9,2#include 8 15 0 ║ 0,2║2,1█9,2#include 8 15 0 ║ 0,2║2,1█9,2#include 8 15 0 ║ 0,2║2,1█9,2#include 8 15 0 ║ 0,2║2,1█9,2 8 15 0 ║ 0,2║2,1█9,2#define YEAR 2023 8 15 0 ║ 0,2║2,1█9,2#define SCREEN_SIZE 40008 15 0 ║ 0,2║2,1█8,2 15 0 ║ 0,2║2,1█0,2void8 wait_retrace0()8 { 15 0 ║ 0,2║2,1█8,2 0while8 0(8inp(110x3da0)8 0&8 1180);8 15 0 ║ 0,2║2,1█8,2 0while8 0(!(8inp(110x3da0)8 0&8 1180));15 0 ║ 0,2║2,1█8,2} 0 ║ 0,2║2,1█8,2 0 ║ 0,2║2,1█0,2int8 advent_day0()8 0{8 0 ║ 0,2║2,1█8,2 0struct8 date today0;8 0 ║ 0,2║2,1█8,2 getdate0(&8today0);8 0 ║ 0,2║2,1█8,2 0if ((8today0.8da_year 0==8 YEAR 0&&8 today0.8da_mon 0<8 11120)8 2oday.da_year < YEAR)0║ 0,2║2,1█8,2 0||8 today.da_year 0<8 YEAR0)8 0{8 2 0║ 0,2║2,1█8,2 0return8 1100;8 0 ║ 0,2║2,1█8,2 0}8 0 ║ 0,2║2,1█8,2 0if8 0(8today.da_year 0>8 YEAR 0||8 today0.8da_day 0>8 11250)8 0{8 0 ║ 0,2║2,1█8,2 0return8 11250;8 0 ║ 0,2║2,1█8,2 0}8 0 ║ 0,2║2,1█8,2 0return8 today0.8da_day0;8 0 ║ 0,2║2,1█0,2}8 0 ║ 0,2║2,1█8,2 0 ║ 0,2║2,1█0,2void8 display_day0(int8 day0)8 0{8 0 ║ 0,2║2,1█8,2 0char *8screen 0=8 0(char *)8malloc0(8SCREEN_SIZE0);8 0 ║ 0,2║2,1█8,2 FILE 0*8f = fopen0(11"ADVENT.DAT"8, 11"rb"0);8 0 ║ 0,2║2,1█8,2 0long8 0int8 offset 0=8 0(long int)(8day 0-8 1110)8 0*8 SCREEN_SIZE0;8 0 ║ 0,2║2,1█8,2 fseek0(8f0,8 offset0,8 SEEK_SET0);8 0 ║ 0,2║2,1█8,2 fread0(8screen0,8 1110,8 SCREEN_SIZE0,8 f0);8 0 ║ 0,2║2,1█8,2 fclose0(8f0);8 0 ║ 0,2║2,1█8,2 puttext0(1110,8 1110,8 11800,8 11250,8 screen0);8 0 ║ 0,2║2,1█8,2 free0(8screen0);8 0 ║ 0,2║2,1█8,2} 0 ║ 0,2║2,1█8,2 0 ║ 0,2║2,1█0,2void 8display_advent0(int8 current_day0)8 0{8 0 ║ 0,2║2,1█8,2 0int8 max_day 0=8 current_day0;8 0 ║ 0,2║2,1█8,2 0int8 new_day0;8 0 ║ 0,2║2,1█8,2 _setcursortype0(8_NOCURSOR0);8 0 ║ 0,2║2,1█8,2 clrscr0();8 0 ║ 0,2║2,1█8,2 display_day0(8current_day0);8 0 ║ 0,2║2,1█8,2 while 0(1110)8 0{8 0 ║ 0,2║2,1█8,2 0if8 0(8kbhit0())8 0{8 0 ║ 0,2║2,1█15,2 8 switch 0(8getch0())8 0{8 15 0 ║ 0,2║2,1█8,2 0case8 110x1b0:8 0 ║ 0,2║2,1█8,2 textcolor0(8WHITE0);8 0 ║ 0,2║2,1█8,2 textbackground0(8BLACK0);8 0 ║ 0,2║2,1█8,2 gotoxy0(810,8 250);8 0 ║ 0,2║2,1█8,2 _setcursortype0(8_NORMALCURSOR0);8 0 ║ 0,2║2,1█8,2 0return;8 0 ║ 0,2║2,1█8,2 0case8 110x4d0:8 0 ║ 0,2║2,1█8,2 0if (8current_day 0<8 max_day0)8 0{8 0 ║ 0,2║2,1█8,2 current_day0++;8 0 ║ 0,2║2,1█8,2 display_day0(8current_day0);8 0 ║ 0,2║2,1█8,2 0}8 0 ║ 0,2║2,1█8,2 0break;8 0 ║ 0,2║2,1█8,2 0case8 110x4b0:8 0 ║ 0,2║2,1█8,2 0if (8current_day 0>8 1110)8 0{8 0 ║ 0,2║2,1█8,2 current_day0--;8 0 ║ 0,2║2,1█8,2 display_day0(8current_day0);8 0 ║ 0,2║2,1█8,2 0}8 0 ║ 0,2║2,1█8,2 0break;8 0 ║ 0,2║2,1█8,2 0}8 0 ║ 0,2║2,1█8,2 0}8 0 ║ 0,2║2,1█8,2 new_day 0=8 advent_day0();8 0 ║ 0,2║2,1█8,2 0if (8new_day 0>8 max_day0)8 0{8 0 ║ 0,2║2,1█8,2 current_day 0=8 new_day0;8 0 ║ 0,2║2,1█8,2 display_day0(8current_day0);8 0 ║ 0,2║2,1█8,2 max_day 0=8 new_day0;8 0 ║ 0,2║2,1█8,2 0}8 0 ║ 0,2║2,1█8,2 wait_retrace0();8 0 ║ 0,2║2,1█8,2 0}8 0 ║ 0,2║2,1█0,2}8 0 ║ 0,2║2,1█8,2 0 ║ 0,2║ int8 main0() {8 0 ║ 0,2║2,1█8,2 0int8 current_day 0=8 advent_day0();8 0 ║ 0,2║2,1█8,2 0if8 0(8current_day 0==8 1100) {8 0 ║ 0,2║2,1█8,2 clrscr0();8 0 ║ 0,2║2,1█8,2 printf0(11"Come back on December 1st, %d!\n0",8 YEAR0);8 0 ║ 0,2║2,1█8,2 getch0();8 0 ║ 0,2║2,1█8,2 0} else {8 0 ║ 0,2║2,1█8,2 display_advent0(8current_day0);8 0 ║ 0,2║2,1█8,2 printf0(11"\nBack to the void (MS-DOS)...\n"0);8 0 ║ 0,2║2,1█8,2 0}8 0 ║ 0,2║2,1█8,2 0return8 1100;8 0 ║ 0,2║2,1█0,2}8 0 ║ 0,2║2,1█0,12█0,2 ║ 0,2╚══════════════════════════════════════════════════════════════════════════════╝