'======= CUT ALL THE LINES ABOVE ========================== '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ' 1. Save this text file as XMAS.BAS. ' 2. Download it to your computer. ' 3. Open XMAS.BAS with a text editor. ' 4. Using text editor cut all the lines above ' the line saying so. ' 5. Using text editor cut all the lines below ' the line saying so. ' 6. Save the file as XMAS.BAS . ' 7. At DOS prompt type QBASIC /RUN XMAS.BAS . ' TYPE Coords: x AS INTEGER: y AS INTEGER: END TYPE DIM T(14) AS Coords: DIM Tt(3) AS Coords DIM S(10) AS Coords: PI = 3.141592: Ratio = .619: R = 65 CLS : SCREEN 12: S(0).x = 90: S(0).y = 160: FOR i = 1 TO 10 k% = i MOD 2 S(i).x = R * (1 - k% * Ratio) * COS((PI / 5) * i - PI / 10) + S(0).x S(i).y = R * (1 - k% * Ratio) * SIN((PI / 5) * i - PI / 10) + S(0).y NEXT i: FOR i = 1 TO 10 IF i < 10 THEN LINE (S(i).x, S(i).y)-(S(i + 1).x, S(i + 1).y), 15 ELSE LINE (S(i).x, S(i).y)-(S(1).x, S(1).y), 15 END IF NEXT i: PAINT (S(0).x, S(0).y), 3, 15 CIRCLE (400, 380), 400, 15, PI / 2, (9 / 12) * PI, .9 CIRCLE (400, 268), 400, 15, PI / 2, (9 / 12) * PI, .5 PSET (400, 21), 15: LINE -STEP(-60, 22), 15 LINE -STEP(60, 24), 15: PAINT (320, 45), 3, 15 T(0).x = 420: T(0).y = 50: FOR i = 1 TO 7: k% = i MOD 2 last% = i \ 7 T(i).x = -(30 * (1 - k%) * i) - (10 * k% * (i - 1) - last% * 60) T(i).y = (50 * (1 - k%) * i) + (40 * k% * (i - 1) + 40 * last%) NEXT i: FOR i = 8 TO 14: T(i).x = -T(7 - (i - 8)).x T(i).y = T(7 - (i - 8)).y: NEXT i: FOR i = 1 TO 14 T(i).x = T(i).x + T(0).x: T(i).y = T(i).y + T(0).y: NEXT i Tt(0).x = 15 + T(7).x: Tt(0).y = T(7).y + 2: Tt(1).x = Tt(0).x Tt(1).y = Tt(0).y + 60: Tt(2).x = Tt(0).x - 30: Tt(2).y = Tt(1).y Tt(3).x = Tt(2).x: Tt(3).y = Tt(0).y FOR i = 0 TO 2 LINE (Tt(i).x, Tt(i).y)-(Tt(i + 1).x, Tt(i + 1).y), 15 NEXT i LINE (Tt(3).x, Tt(3).y)-(T(7).x, T(7).y), 15 LINE (T(7).x, T(7).y)-(Tt(0).x, Tt(0).y), 15 PAINT ((Tt(0).x + Tt(2).x) \ 2, (Tt(1).y + Tt(3).y) \ 2), 6, 15 FOR i = 1 TO 13 LINE (T(i).x, T(i).y)-(T(i + 1).x, T(i + 1).y), 15: NEXT i PAINT (T(1).x, ((T(1).y + T(7).y) \ 2) + T(0).y), 2, 15 PSET (0, 330), 15 LINE -STEP(100, -30), 15: LINE -STEP(250, 100), 15 LINE -STEP(-50, -20), 15: LINE -STEP(105, -20), 15 LINE (435, 360)-(640, 370), 15 PALETTE 0, 7 PAINT (320, 450), 0, 15: PAINT (320, 20), 1, 15 LOCATE 23, 10: PALETTE 12, 63: COLOR 12 PRINT "Merry Christmas" LOCATE 24, 10: PRINT "and a Happy New Year!" LOCATE 26, 10: PRINT "from" LOCATE 27, 20: PRINT "Marek" LOCATE 28, 20: PRINT "ao487@freenet.toronto.on.ca" LOCATE 30, 40: PRINT "Esc to quit."; DATA t220 DATA l8e,p8,e,p8,l2e,l8e,p8,e,p8,l2e,l4e.,l8g,l4c,d,l2e,p2 DATA l8f,p8,f,p8,l2f,l8f,p8,e,p8,l2e,l4e,d,d,e,d,p4,g,p4 DATA l8e,p8,e,p8,l2e,l8e,p8,e,p8,l2e,l4e.,l8g,l4c,d,l2e,p2 DATA l8f,p8,f,p8,l2f,l8f,p8,e,p8,l2e,l4g,g,f,d,l2c,p2 DATA o2l4g,o3e,d,c,o2l2g,p2,o2l4g,o3e,d,c,o2l2a,p2 DATA o2l4a,o3f,e,d,l8g,p8,g,p8,l4,g,p4,l4a.,l8g,l4f,d,l2e,p2 DATA o2l4g,o3e,d,c,o2l2g,p2,o2l4g,o3e,d,c,o2l2a,p2 DATA o2l4a,o3f,e,d,l8g,p8,g,p8,l4,g,p4,l4a.,l8g,l4f,d,l2c,p2 DATA "END" DO Q$ = INKEY$ IF Blue% <= 20 THEN BF% = 1 ELSEIF Blue% >= 62 THEN BF% = -1 END IF IF Green% <= 20 THEN GF% = 1 ELSEIF Green% >= 62 THEN GF% = -1 END IF IF Red% <= 25 THEN RF% = 1 ELSEIF Red% >= 62 THEN RF% = -1 END IF Blue% = Blue% + BF% * 1: Green% = Green% + GF% * 2: Red% = Red% + RF% * 3 PALETTE 3, Blue% + 256 * Green% + Red% READ Music$ IF Music$ <> "END" THEN PLAY "o3 X" + VARPTR$(Music$) ELSE RESTORE END IF LOOP UNTIL Q$ = CHR$(27) SYSTEM '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> '=============== CUT ALL THE LINES BELOW ================= SUB Palete( BYVAL Colour%, BYVAL RGB& ) LOCAL PUBLIC LOCAL Red%, Green%, Blue% Red% = ( RGB& MOD 256 ) : RGB& = RGB& \ 256 Green% = ( RGB& MOD 256 ) Blue% = ( RGB& \ 256 ) OUT &h03C8, Colour% OUT &h03C9, Red% OUT &h03C9, Green% OUT &h03C9, Blue% END SUB