DECLARE SUB AddLines (AddAmount AS INTEGER) DECLARE SUB AddScore (AddAmount AS INTEGER) DECLARE SUB MyColor (TheColor AS INTEGER) DECLARE SUB MyLocate (x AS INTEGER, y AS INTEGER) DECLARE SUB MyPrint (PrintString AS STRING) DECLARE SUB PrintMain (Variable1 AS STRING, Variable2 AS STRING, FunctionNum AS INTEGER) DECLARE SUB CheckEraseLines () DECLARE SUB NewShape () DECLARE SUB PatchScreen () DECLARE FUNCTION DirFunction! (MaxCount!) DECLARE SUB Initialize () DECLARE SUB DrawShape () DECLARE SUB MakeBlock (a!, B!, Num AS INTEGER) DECLARE SUB xyBlock (Left!, Top!, Num AS INTEGER) DECLARE SUB MakeStartScreen (Num!) DECLARE SUB DrawObject (Left!, Top!, ObjectNum!) DIM SHARED CurrentShape AS INTEGER DIM SHARED CurrentDirection AS INTEGER DIM SHARED ScreenBlocks(1 TO 16, 1 TO 21) AS INTEGER DIM SHARED Block(1 TO 7, 1 TO 4, 1 TO 4, 1 TO 4) AS INTEGER DIM SHARED Col AS INTEGER DIM SHARED Row AS INTEGER DIM SHARED Score AS INTEGER DIM SHARED Lines AS INTEGER DIM k AS STRING GOSUB ObtainSpeed Initialize Main: GOSUB CheckFunctions GOTO Main CheckFunctions: Speed = 2 + Lines / 4 FunctionNum = DirFunction(LoopSpeed / Speed) IF FunctionNum = 0 THEN GOTO Quit IF FunctionNum = 1 THEN FOR a = 1 TO 4 FOR B = 1 TO 4 c = Block(CurrentShape, CurrentDirection, a, B) IF c <> 0 THEN ScreenBlocks(Col + a - 1, Row + B - 1) = c END IF NEXT B NEXT a SCREEN , , 2, 0 DrawShape PCOPY 2, 1 PCOPY 1, 0 CheckEraseLines NewShape SCREEN , , 0, 0 DrawShape FOR B = 1 TO 4 FOR a = 1 TO 4 c = Block(CurrentShape, CurrentDirection, a, B) IF B + Row - 1 >= 1 THEN d = ScreenBlocks(a + Col - 1, B + Row - 1) IF c <> 0 AND d <> 0 THEN GOTO YouLost END IF NEXT a NEXT B END IF IF FunctionNum = 2 THEN PatchScreen Col = Col + 1 SCREEN , , 1, 0 DrawShape PCOPY 1, 0 END IF IF FunctionNum = 3 THEN PatchScreen Row = Row + 1 SCREEN , , 1, 0 DrawShape PCOPY 1, 0 END IF IF FunctionNum = 4 THEN PatchScreen Col = Col - 1 SCREEN , , 1, 0 DrawShape PCOPY 1, 0 END IF IF FunctionNum = 5 THEN PatchScreen CurrentDirection = CurrentDirection + 1 IF CurrentDirection > 4 THEN CurrentDirection = 1 SCREEN , , 1, 0 DrawShape PCOPY 1, 0 END IF IF FunctionNum = 6 THEN PatchScreen CurrentDirection = CurrentDirection - 1 IF CurrentDirection < 1 THEN CurrentDirection = 4 SCREEN , , 1, 0 DrawShape PCOPY 1, 0 END IF IF FunctionNum = 7 THEN DO FunctionNum = DirFunction(0) IF FunctionNum = 3 THEN PatchScreen Row = Row + 1 SCREEN , , 1, 0 DrawShape PCOPY 1, 0 END IF LOOP UNTIL FunctionNum = 1 FOR a = 1 TO 4 FOR B = 1 TO 4 c = Block(CurrentShape, CurrentDirection, a, B) IF c <> 0 THEN ScreenBlocks(Col + a - 1, Row + B - 1) = c END IF NEXT B NEXT a SCREEN , , 2, 0 DrawShape PCOPY 2, 1 PCOPY 1, 0 CheckEraseLines NewShape SCREEN , , 0, 0 DrawShape END IF RETURN YouLost: GOTO Quit Quit: END ObtainSpeed: IF a = 1 THEN a = 2 IF a = 0 THEN LOCATE 12, 33: PRINT "Loading....." a = 1 ON TIMER(2) GOSUB ObtainSpeed TIMER ON END IF DO UNTIL a = 2 k = INKEY$ IF NOT k = "" THEN LoopSpeed = 0 a = 0 PRINT "Don't press any keys!!!!!!!!!!!!!!!!!!!!!!!!" GOTO ObtainSpeed END IF LoopSpeed = LoopSpeed + .001 LOOP TIMER OFF RETURN SUB AddLines (AddAmount AS INTEGER) Lines = Lines + AddAmount DIM Image(0 TO 100) SCREEN , , 3, 0 GET (263, 68)-STEP(47, 7), Image SCREEN , , 2, 0 PUT (263, 68), Image, PSET MyLocate 263, 68 MyPrint LTRIM$(RTRIM$(STR$(Lines))) END SUB SUB AddScore (AddAmount AS INTEGER) Score = Score + AddAmount DIM Image(0 TO 100) SCREEN , , 3, 0 GET (263, 38)-STEP(47, 7), Image SCREEN , , 2, 0 PUT (263, 38), Image, PSET MyLocate 263, 38 MyPrint LTRIM$(RTRIM$(STR$(Score))) END SUB SUB Captions 'Screen 0 = Visual Screen. 'Screen 1 = Construction Screen. 'Screen 2 = Screen with blocks. 'Screens 3 - 7 = Background Screens. 'The left of the game area is 40. 'The top of the game area is 27. 'There are 16 columns that are 10 dots wide. 'There are 21 rows that are 8 dots tall. 'Blocks: '1 - L. '2 - Backward L. '3 - Square. '4 - T. '5 - Right slope zig zag. '6 - Left slope zig zag. '7 - Line. 'For CurrentDirection: 1 = Up, 2 = Right, 3 = Down, 4 = Left. END SUB SUB CheckEraseLines DIM FullLine(1 TO 4) AS INTEGER TopLine = 21 Count = 0 FOR B = 1 TO 21 Delete = 1 FOR a = 1 TO 16 c = ScreenBlocks(a, B) IF c = 0 THEN Delete = 0 IF c <> 0 AND TopLine >= B THEN TopLine = B NEXT a IF Delete = 1 THEN Count = Count + 1 FullLine(Count) = B END IF NEXT B IF Count > 0 THEN FOR c = 1 TO Count d = FullLine(c) FOR B = d TO 2 STEP -1 FOR a = 1 TO 16 ScreenBlocks(a, B) = ScreenBlocks(a, B - 1) NEXT a NEXT B NEXT c FOR c = 0 TO Count - 1 B = TopLine + c FOR a = 1 TO 16 ScreenBlocks(a, B) = 0 NEXT a NEXT c PCOPY 3, 2 FOR B = 21 TO TopLine STEP -1 FOR a = 1 TO 16 c = ScreenBlocks(a, B) IF c <> 0 THEN MakeBlock a, B, INT(c) NEXT a NEXT B AddScore INT(Count ^ 2 * 10) AddLines INT(Count) PCOPY 2, 1 PCOPY 1, 0 END IF END SUB FUNCTION DirFunction (MaxCount) DIM k AS STRING STATIC Count AS DOUBLE Num = -1 DO UNTIL k <> "" OR Count >= MaxCount k = INKEY$ Count = Count + .001 LOOP IF Count >= MaxCount THEN Count = 0 Num = 3 END IF IF k = " " THEN Num = 7 IF k = CHR$(0) + "M" THEN TestCol = Col + 1 Num = 2 END IF IF k = CHR$(0) + "P" THEN Num = 3 END IF IF k = CHR$(0) + "K" THEN TestCol = Col - 1 Num = 4 END IF IF UCASE$(k) = "F" THEN TestDirection = CurrentDirection + 1 IF TestDirection > 4 THEN TestDirection = 1 Num = 5 END IF IF UCASE$(k) = "S" THEN TestDirection = CurrentDirection - 1 IF TestDirection < 1 THEN TestDirection = 4 Num = 6 END IF IF k = CHR$(27) THEN Num = 0 IF Num = 2 OR Num = 4 THEN FOR a = 1 TO 4 FOR B = 1 TO 4 c = Block(CurrentShape, CurrentDirection, a, B) IF c <> 0 THEN d = TestCol + a - 1 IF d < 1 OR d > 16 THEN Num = -1 IF Num <> -1 THEN IF ScreenBlocks(d, Row + B - 1) <> 0 THEN Num = -1 END IF NEXT B NEXT a END IF IF Num = 3 THEN FOR a = 1 TO 4 FOR B = 1 TO 4 c = Block(CurrentShape, CurrentDirection, a, B) IF c <> 0 THEN d = Col + a - 1 e = Row + B IF e > 21 THEN Num = 1 IF Num = 3 THEN f = ScreenBlocks(d, e) IF f <> 0 THEN Num = 1 END IF END IF NEXT B NEXT a END IF IF Num = 5 OR Num = 6 THEN FOR a = 1 TO 4 FOR B = 1 TO 4 c = Block(CurrentShape, TestDirection, a, B) IF c <> 0 THEN d = Col + a - 1 e = Row + B - 1 IF d < 1 OR d > 16 OR e < 1 OR e > 21 THEN Num = -1 IF Num = 5 OR Num = 6 THEN IF ScreenBlocks(d, e) <> 0 THEN Num = -1 END IF END IF NEXT B NEXT a END IF DO k = INKEY$ LOOP UNTIL k = "" DirFunction = Num END FUNCTION SUB DrawShape FOR a = 1 TO 4 FOR B = 1 TO 4 IF Block(CurrentShape, CurrentDirection, a, B) <> 0 THEN MakeBlock Col + a - 1, Row + B - 1, Block(CurrentShape, CurrentDirection, a, B) END IF NEXT B NEXT a END SUB SUB Initialize RANDOMIZE TIMER Block(1, 1, 1, 3) = 2 Block(1, 1, 1, 2) = 2 Block(1, 1, 2, 2) = 2 Block(1, 1, 3, 2) = 2 Block(1, 2, 2, 1) = 2 Block(1, 2, 3, 1) = 2 Block(1, 2, 3, 2) = 2 Block(1, 2, 3, 3) = 2 Block(1, 3, 1, 3) = 2 Block(1, 3, 2, 3) = 2 Block(1, 3, 3, 3) = 2 Block(1, 3, 3, 2) = 2 Block(1, 4, 2, 1) = 2 Block(1, 4, 2, 2) = 2 Block(1, 4, 2, 3) = 2 Block(1, 4, 3, 3) = 2 Block(2, 1, 1, 2) = 2 Block(2, 1, 2, 2) = 2 Block(2, 1, 3, 2) = 2 Block(2, 2, 1, 3) = 2 Block(2, 2, 2, 3) = 2 Block(2, 2, 2, 2) = 2 Block(2, 2, 2, 1) = 2 Block(2, 1, 3, 3) = 2 Block(2, 3, 1, 2) = 2 Block(2, 3, 1, 3) = 2 Block(2, 3, 2, 3) = 2 Block(2, 3, 3, 3) = 2 Block(2, 4, 2, 1) = 2 Block(2, 4, 1, 1) = 2 Block(2, 4, 1, 2) = 2 Block(2, 4, 1, 3) = 2 Block(3, 1, 1, 1) = 2 Block(3, 1, 2, 1) = 2 Block(3, 1, 1, 2) = 2 Block(3, 1, 2, 2) = 2 Block(3, 2, 1, 1) = 2 Block(3, 2, 2, 1) = 2 Block(3, 2, 1, 2) = 2 Block(3, 2, 2, 2) = 2 Block(3, 3, 1, 1) = 2 Block(3, 3, 2, 1) = 2 Block(3, 3, 1, 2) = 2 Block(3, 3, 2, 2) = 2 Block(3, 4, 1, 1) = 2 Block(3, 4, 2, 1) = 2 Block(3, 4, 1, 2) = 2 Block(3, 4, 2, 2) = 2 Block(4, 1, 1, 1) = 2 Block(4, 1, 2, 1) = 2 Block(4, 1, 3, 1) = 2 Block(4, 1, 2, 2) = 2 Block(4, 2, 3, 1) = 2 Block(4, 2, 3, 2) = 2 Block(4, 2, 3, 3) = 2 Block(4, 2, 2, 2) = 2 Block(4, 3, 1, 3) = 2 Block(4, 3, 2, 3) = 2 Block(4, 3, 3, 3) = 2 Block(4, 3, 2, 2) = 2 Block(4, 4, 1, 1) = 2 Block(4, 4, 1, 2) = 2 Block(4, 4, 1, 3) = 2 Block(4, 4, 2, 2) = 2 Block(5, 1, 1, 3) = 2 Block(5, 1, 2, 3) = 2 Block(5, 1, 2, 2) = 2 Block(5, 1, 3, 2) = 2 Block(5, 2, 1, 1) = 2 Block(5, 2, 1, 2) = 2 Block(5, 2, 2, 2) = 2 Block(5, 2, 2, 3) = 2 Block(5, 3, 1, 3) = 2 Block(5, 3, 2, 3) = 2 Block(5, 3, 2, 2) = 2 Block(5, 3, 3, 2) = 2 Block(5, 4, 1, 1) = 2 Block(5, 4, 1, 2) = 2 Block(5, 4, 2, 2) = 2 Block(5, 4, 2, 3) = 2 Block(6, 1, 1, 1) = 2 Block(6, 1, 2, 1) = 2 Block(6, 1, 2, 2) = 2 Block(6, 1, 3, 2) = 2 Block(6, 2, 1, 3) = 2 Block(6, 2, 1, 2) = 2 Block(6, 2, 2, 2) = 2 Block(6, 2, 2, 1) = 2 Block(6, 3, 1, 1) = 2 Block(6, 3, 2, 1) = 2 Block(6, 3, 2, 2) = 2 Block(6, 3, 3, 2) = 2 Block(6, 4, 1, 3) = 2 Block(6, 4, 1, 2) = 2 Block(6, 4, 2, 2) = 2 Block(6, 4, 2, 1) = 2 Block(7, 1, 1, 2) = 2 Block(7, 1, 2, 2) = 2 Block(7, 1, 3, 2) = 2 Block(7, 1, 4, 2) = 2 Block(7, 2, 3, 1) = 2 Block(7, 2, 3, 2) = 2 Block(7, 2, 3, 3) = 2 Block(7, 2, 3, 4) = 2 Block(7, 3, 1, 3) = 2 Block(7, 3, 2, 3) = 2 Block(7, 3, 3, 3) = 2 Block(7, 3, 4, 3) = 2 Block(7, 4, 2, 1) = 2 Block(7, 4, 2, 2) = 2 Block(7, 4, 2, 3) = 2 Block(7, 4, 2, 4) = 2 MakeStartScreen 2 NewShape NewShape SCREEN , , 0, 0 DrawShape LINE (56, 80)-STEP(16 * 8 - 1, 3 * 8 - 1), 0, BF FOR i = 0 TO 2 LINE (56 + i, 80 + i)-STEP(16 * 8 - 1 - i * 2, 3 * 8 - 1 - i * 2), 15, B NEXT i LINE (59, 101)-STEP(121, 0), 7 LINE (58, 102)-STEP(123, 0), 7 LINE (57, 103)-STEP(125, 0), 7 LINE (181, 83)-STEP(0, 17), 7 LINE (182, 82)-STEP(0, 19), 7 LINE (183, 81)-STEP(0, 21), 7 LINE (56, 80)-STEP(2, 2), 7 MyColor 14 MyLocate 263, 38: MyPrint "0" LOCATE 12, 9: PRINT "Press any key." MyLocate 263, 68: MyPrint "0" SLEEP SCREEN , , 1, 0 MyLocate 263, 38: MyPrint "0" MyLocate 263, 68: MyPrint "0" SCREEN , , 2, 0 MyLocate 263, 38: MyPrint "0" MyLocate 263, 68: MyPrint "0" END SUB SUB MakeBlock (a, B, Num AS INTEGER) Left = (a - 1) * 10 + 40 Top = (B - 1) * 8 + 27 xyBlock Left, Top, Num END SUB SUB MakeStartScreen (Num) DIM Image(1 TO 1000) SCREEN 7 IF Num = 1 THEN C1 = 0 C2 = 9 C3 = 1 LINE (Left, Top)-STEP(19, 13), C3, BF LINE (Left, Top)-STEP(1, 0), C1 PSET (Left, Top + 1), C1 LINE (Left + 19, Top)-STEP(0, 12), C1 PSET (Left + 15, Top), C1 LINE (Left + 14, Top)-STEP(0, 4), C1 LINE (Left + 15, Top + 3)-STEP(2, 0), C1 LINE (Left + 17, Top + 4)-STEP(1, 0), C1 LINE (Left + 13, Top + 4)-STEP(0, 3), C1 LINE (Left + 12, Top + 7)-STEP(0, 2), C1 LINE (Left + 11, Top + 9)-STEP(0, 3), C1 LINE (Left + 1, Top + 13)-STEP(16, 0), C1 LINE (Left + 7, Top + 10)-STEP(3, 0), C1 LINE (Left + 5, Top + 9)-STEP(2, 0), C1 LINE (Left + 1, Top + 8)-STEP(4, 0), C1 LINE (Left, Top + 7)-STEP(1, 0), C1 LINE (Left + 17, Top + 12)-STEP(1, 0), C1 LINE (Left, Top + 2)-STEP(0, 4), C2 LINE (Left, Top + 8)-STEP(0, 5), C2 LINE (Left + 1, Top + 1)-STEP(0, 1), C2 PSET (Left + 2, Top + 1), C2 LINE (Left + 2, Top)-STEP(11, 0), C2 LINE (Left + 16, Top)-STEP(2, 0), C2 LINE (Left + 15, Top + 1)-STEP(1, 0), C2 PSET (Left + 15, Top + 2), C2 LINE (Left + 15, Top + 4)-STEP(1, 0), C2 LINE (Left + 14, Top + 5)-STEP(1, 0), C2 LINE (Left + 17, Top + 5)-STEP(1, 0), C2 LINE (Left + 14, Top + 6)-STEP(0, 2), C2 LINE (Left + 13, Top + 8)-STEP(0, 2), C2 LINE (Left + 12, Top + 10)-STEP(0, 3), C2 LINE (Left + 1, Top + 9)-STEP(3, 0), C2 LINE (Left + 5, Top + 10)-STEP(1, 0), C2 LINE (Left + 7, Top + 11)-STEP(3, 0), C2 LINE (Left + 18, Top + 13)-STEP(1, 0), C2 GET (0, 0)-STEP(19, 13), Image FOR a = 1 TO 14 Top = (a - 1) * 14 FOR B = 1 TO 16 Left = (B - 1) * 20 PUT (Left, Top), Image, PSET NEXT B NEXT a GET (0, 0)-(319, 3), Image PUT (0, 14 * 14), Image, PSET END IF IF Num = 2 THEN C1 = 0 C2 = 9 C3 = 1 LINE (Left, Top)-STEP(19, 13), C3, BF LINE (Left, Top + 3)-STEP(2, 0), C1 LINE (Left + 2, Top + 4)-STEP(4, 0), C1 LINE (Left + 6, Top + 3)-STEP(2, 0), C1 LINE (Left + 8, Top + 2)-STEP(0, -1), C1 LINE (Left + 7, Top + 1)-STEP(0, -1), C1 PSET (Left + 6, Top), C1 LINE (Left + 6, Top + 13)-STEP(-2, 0), C1 LINE (Left + 4, Top + 12)-STEP(-2, 0), C1 LINE (Left + 2, Top + 11)-STEP(-2, 0), C1 LINE (Left + 19, Top + 11)-STEP(-1, 0), C1 LINE (Left + 18, Top + 12)-STEP(-1, 0), C1 LINE (Left + 17, Top + 13)-STEP(-1, 0), C1 LINE (Left + 16, Top)-STEP(0, 2), C1 LINE (Left + 17, Top + 2)-STEP(1, 0), C1 LINE (Left + 18, Top + 3)-STEP(1, 0), C1 LINE (Left + 12, Top + 7)-STEP(-1, 0), C1 PSET (Left + 11, Top + 8), C1 LINE (Left + 10, Top + 9)-STEP(1, 1), C1, B LINE (Left + 11, Top + 11)-STEP(1, 0), C1 LINE (Left + 12, Top + 12)-STEP(0, 1), C1 LINE (Left + 12, Top)-STEP(-1, 0), C1 LINE (Left + 11, Top + 1)-STEP(0, 2), C1 LINE (Left + 12, Top + 3)-STEP(0, 3), C1 LINE (Left + 13, Top + 6)-STEP(4, 0), C1 LINE (Left + 17, Top + 7)-STEP(2, 0), C1 LINE (Left, Top + 7)-STEP(1, 0), C1 LINE (Left + 1, Top + 8)-STEP(3, 0), C1 LINE (Left + 4, Top + 9)-STEP(2, 0), C1 LINE (Left + 6, Top + 10)-STEP(3, 0), C1 LINE (Left, Top + 4)-STEP(1, 0), C2 LINE (Left + 2, Top + 5)-STEP(5, 0), C2 LINE (Left + 7, Top + 4)-STEP(2, 0), C2 LINE (Left + 9, Top + 3)-STEP(0, -2), C2 PSET (Left + 8, Top), C2 LINE (Left + 5, Top)-STEP(-1, 0), C2 LINE (Left + 3, Top + 13)-STEP(-1, 0), C2 LINE (Left + 1, Top + 12)-STEP(-1, 0), C2 LINE (Left + 19, Top + 12)-STEP(0, 1), C2 PSET (Left + 18, Top + 13), C2 LINE (Left + 17, Top)-STEP(0, 1), C2 PSET (Left + 17, Top + 3), C2 LINE (Left + 18, Top + 4)-STEP(1, 0), C2 PSET (Left + 13, Top + 8), C2 LINE (Left + 12, Top + 8)-STEP(0, 2), C2 LINE (Left + 13, Top + 11)-STEP(0, 2), C2 LINE (Left + 13, Top)-STEP(0, 1), C2 LINE (Left + 12, Top + 1)-STEP(0, 1), C2 LINE (Left + 13, Top + 3)-STEP(0, 2), C2 LINE (Left + 13, Top + 7)-STEP(3, 0), C2 LINE (Lfet + 17, Top + 8)-STEP(2, 0), C2 PSET (Left, Top + 8), C2 LINE (Left + 1, Top + 9)-STEP(2, 0), C2 LINE (Left + 4, Top + 10)-STEP(1, 0), C2 LINE (Left + 6, Top + 11)-STEP(4, 0), C2 GET (0, 0)-STEP(19, 13), Image FOR a = 1 TO 16 Left = (a - 1) * 20 FOR B = 1 TO 14 Top = (B - 1) * 14 PUT (Left, Top), Image, PSET NEXT B NEXT a GET (0, 0)-STEP(319, 3), Image PUT (0, 14 ^ 2), Image, PSET END IF xyBlock 40, 27, 0 GET (40, 27)-STEP(9, 7), Image FOR a = 1 TO 16 Left = (a - 1) * 10 + 40 FOR B = 1 TO 21 Top = (B - 1) * 8 + 27 PUT (Left, Top), Image, PSET NEXT B NEXT a LINE (39, 26)-STEP(161, 8 * 21 + 1), 13, B MyColor 13 MyLocate 96, 18: MyPrint "TETRIS" FOR i = 0 TO 13 Top = i * 8 + 26 xyBlock 201, Top, 1 xyBlock 311, Top, 1 NEXT i FOR i = 1 TO 10 Left = i * 10 + 201 xyBlock Left, 26, 1 xyBlock Left, 130, 1 NEXT i LINE (211, 34)-STEP(19, 13), 4, BF c = 1 d = 1 FOR a = 34 TO 47 d = d * -1 FOR B = 211 TO 230 c = c * -1 IF d * c = 1 THEN PSET (B, a), 8 NEXT B NEXT a LINE (211, 34)-STEP(19, 13), 7 LINE (211, 48)-STEP(9, -7), 7 ' add 171, 7 GET (211, 34)-STEP(19, 13), Image FOR a = 1 TO 6 Top = (a - 1) * 14 + 34 FOR B = 1 TO 5 Left = (B - 1) * 20 + 211 PUT (Left, Top), Image, PSET NEXT B NEXT a GET (211, 34)-STEP(5 * 20, 11), Image PUT (211, 34 + 6 * 14), Image, PSET MyColor 14 MyLocate 215, 38 MyPrint "Score:" MyLocate 215, 68 MyPrint "Lines:" MyLocate 215, 98 MyPrint "Next:" FOR i = 1 TO 7 PCOPY 0, i NEXT i END SUB SUB MyColor (TheColor AS INTEGER) PrintMain STR$(TheColor), "", 2 END SUB SUB MyLocate (x AS INTEGER, y AS INTEGER) PrintMain STR$(x), STR$(y), 1 END SUB SUB MyPrint (PrintString AS STRING) PrintMain PrintString, "", 0 END SUB SUB NewShape DIM Image(0 TO 500) STATIC NextShape AS INTEGER CurrentShape = NextShape NextShape = INT(RND * 7 + 1) IF CurrentShape < 1 OR CurrentShape > 7 THEN CurrentShape = 1 CurrentDirection = 1 Col = 7 FOR B = 1 TO 4 FOR a = 1 TO 4 c = Block(CurrentShape, CurrentDirection, a, B) IF c <> 0 THEN EXIT FOR NEXT a IF c <> 0 THEN TopLine = B EXIT FOR END IF NEXT B Row = 2 - TopLine SCREEN , , 3, 0 GET (260, 98)-STEP(39, 32), Image SCREEN , , 2, 0 PUT (260, 98), Image, PSET FOR B = 1 TO 4 FOR a = 1 TO 4 c = Block(NextShape, 4, a, B) IF c <> 0 THEN EXIT FOR END IF NEXT a IF c <> 0 THEN TopLine = B EXIT FOR END IF NEXT B FOR B = 1 TO 4 y = (B - 1) * 8 - (TopLine - 1) * 8 + 98 FOR a = 1 TO 4 x = (a - 1) * 10 + 260 c = Block(NextShape, 4, a, B) IF c <> 0 THEN xyBlock x, y, INT(c) NEXT a NEXT B GET (260, 98)-STEP(39, 32), Image SCREEN , , 1, 0 PUT (260, 98), Image, PSET SCREEN , , 0, 0 PUT (260, 98), Image, PSET END SUB SUB PatchScreen DIM Image(1 TO 3000) Left = (Col - 1) * 10 + 40 Top = (Row - 1) * 8 + 27 Right = Left + 39 Bottom = Top + 31 IF Bottom > 199 THEN Bottom = 199 IF Left < 0 THEN Left = 0 IF Top < 0 THEN Top = 0 IF Right > 319 THEN Right = 319 SCREEN , , 2, 0 GET (Left, Top)-(Right, Bottom), Image SCREEN , , 1, 0 PUT (Left, Top), Image, PSET END SUB SUB PrintMain (Variable1 AS STRING, Variable2 AS STRING, FunctionNum AS INTEGER) DIM Letter AS STRING STATIC PrintColor AS INTEGER STATIC Left AS INTEGER STATIC Top AS INTEGER IF FunctionNum = 0 THEN FOR i = 1 TO LEN(Variable1) Letter = MID$(Variable1, i, 1) IF Letter = "A" THEN LINE (Left + 2, Top)-STEP(1, 0), PrintColor LINE (Left + 1, Top + 1)-STEP(3, 0), PrintColor LINE (Left, Top + 2)-STEP(1, 4), PrintColor, BF LINE (Left + 4, Top + 2)-STEP(1, 4), PrintColor, BF LINE (Left + 2, Top + 4)-STEP(1, 0), PrintColor, BF END IF IF Letter = "B" THEN LINE (Left, Top)-STEP(5, 0), PrintColor LINE (Left + 1, Top + 1)-STEP(1, 4), PrintColor, B LINE (Left, Top + 6)-STEP(5, 0), PrintColor LINE (Left + 3, Top + 3)-STEP(2, 0), PrintColor LINE (Left + 5, Top + 1)-STEP(1, 1), PrintColor, B LINE (Left + 5, Top + 4)-STEP(1, 1), PrintColor, B END IF IF Letter = "C" THEN LINE (Left + 5, Top + 1)-STEP(1, 0), PrintColor LINE (Left + 2, Top)-STEP(3, 0), PrintColor LINE (Left + 1, Top + 1)-STEP(1, 0), PrintColor LINE (Left, Top + 2)-STEP(1, 2), PrintColor, B LINE (Left + 1, Top + 5)-STEP(1, 0), PrintColor LINE (Left + 2, Top + 6)-STEP(3, 0), PrintColor LINE (Left + 5, Top + 5)-STEP(1, 0), PrintColor END IF IF Letter = "D" THEN LINE (Left, Top)-STEP(4, 0), PrintColor LINE (Left + 1, Top + 1)-STEP(1, 4), PrintColor, B LINE (Left, Top + 6)-STEP(4, 0), PrintColor LINE (Left + 4, Top + 1)-STEP(1, 0), PrintColor LINE (Left + 5, Top + 2)-STEP(1, 2), PrintColor, B LINE (Left + 4, Top + 5)-STEP(1, 0), PrintColor END IF IF Letter = "E" THEN LINE (Left + 1, Top)-STEP(1, 6), PrintColor, B LINE (Left + 2, Top)-STEP(4, 0), PrintColor LINE (Left + 2, Top + 3)-STEP(2, 0), PrintColor LINE (Left + 2, Top + 6)-STEP(4, 0), PrintColor END IF IF Letter = "F" THEN LINE (Left + 1, Top)-STEP(1, 6), PrintColor, B LINE (Left + 3, Top)-STEP(3, 0), PrintColor LINE (Left + 3, Top + 3)-STEP(1, 0), PrintColor END IF IF Letter = "G" THEN LINE (Left + 2, Top)-STEP(3, 0), PrintColor LINE (Left + 1, Top + 1)-STEP(1, 0), PrintColor LINE (Left + 5, Top + 1)-STEP(1, 0), PrintColor LINE (Left, Top + 2)-STEP(1, 2), PrintColor, B LINE (Left + 1, Top + 5)-STEP(1, 0), PrintColor LINE (Left + 2, Top + 6)-STEP(4, 0), PrintColor LINE (Left + 5, Top + 4)-STEP(1, 1), PrintColor, B PSET (Left + 4, Top + 4), PrintColor END IF IF Letter = "H" THEN LINE (Left, Top)-STEP(1, 6), PrintColor, B LINE (Left + 4, Top)-STEP(1, 6), PrintColor, B LINE (Left + 2, Top + 3)-STEP(1, 0), PrintColor END IF IF Letter = "I" THEN LINE (Left + 1, Top)-STEP(3, 0), PrintColor LINE (Left + 1, Top + 6)-STEP(3, 0), PrintColor LINE (Left + 2, Top + 1)-STEP(1, 4), PrintColor, B END IF IF Letter = "J" THEN LINE (Left + 3, Top)-STEP(3, 0), PrintColor LINE (Left + 4, Top + 1)-STEP(1, 4), PrintColor, B LINE (Left, Top + 4)-STEP(1, 1), PrintColor, B LINE (Left + 1, Top + 6)-STEP(3, 0), PrintColor END IF IF Letter = "K" THEN LINE (Left + 1, Top)-STEP(1, 6), PrintColor, B PSET (Left, Top), PrintColor PSET (Left, Top + 6), PrintColor LINE (Left + 3, Top + 3)-STEP(1, 0), PrintColor LINE (Left + 4, Top + 2)-STEP(1, 0), PrintColor LINE (Left + 4, Top + 4)-STEP(1, 0), PrintColor LINE (Left + 5, Top)-STEP(1, 1), PrintColor, B LINE (Left + 5, Top + 5)-STEP(1, 1), PrintColor, B END IF IF Letter = "L" THEN LINE (Left + 1, Top)-STEP(1, 6), PrintColor, B LINE (Left + 3, Top + 6)-STEP(3, 0), PrintColor END IF IF Letter = "M" THEN LINE (Left, Top)-STEP(1, 6), PrintColor, B LINE (Left + 5, Top)-STEP(1, 6), PrintColor, B LINE (Left + 2, Top + 1)-STEP(0, 2), PrintColor LINE (Left + 3, Top + 2)-STEP(0, 2), PrintColor LINE (Left + 4, Top + 1)-STEP(0, 2), PrintColor END IF IF Letter = "N" THEN LINE (Left, Top)-STEP(1, 6), PrintColor, B LINE (Left + 5, Top)-STEP(1, 6), PrintColor, B LINE (Left + 2, Top + 1)-STEP(2, 2), PrintColor LINE (Left + 2, Top + 2)-STEP(2, 2), PrintColor END IF IF Letter = "O" THEN LINE (Left + 3, Top)-STEP(-3, 2), PrintColor LINE (Left + 4, Top)-STEP(2, 2), PrintColor LINE (Left + 3, Top + 6)-STEP(-3, -2), PrintColor LINE (Left + 4, Top + 6)-STEP(2, -2), PrintColor LINE (Left + 2, Top + 1)-STEP(-1, 1), PrintColor LINE (Left + 4, Top + 1)-STEP(1, 1), PrintColor LINE (Left + 2, Top + 5)-STEP(-1, -1), PrintColor LINE (Left + 4, Top + 5)-STEP(1, -1), PrintColor LINE (Left, Top + 3)-STEP(1, 0), PrintColor LINE (Left + 5, Top + 3)-STEP(1, 0), PrintColor END IF IF Letter = "P" THEN LINE (Left, Top)-STEP(5, 0), PrintColor LINE (Left + 1, Top + 1)-STEP(1, 4), PrintColor, B LINE (Left, Top + 6)-STEP(3, 0), PrintColor LINE (Left + 5, Top + 1)-STEP(1, 1), PrintColor, B LINE (Left + 3, Top + 3)-STEP(2, 0), PrintColor END IF IF Letter = "Q" THEN LINE (Left + 1, Top)-STEP(3, 0), PrintColor LINE (Left, Top + 1)-STEP(1, 3), PrintColor, B LINE (Left + 4, Top + 1)-STEP(1, 3), PrintColor, B PSET (Left + 3, Top + 4), PrintColor LINE (Left + 1, Top + 5)-STEP(3, 0), PrintColor LINE (Left + 3, Top + 6)-STEP(2, 0), PrintColor END IF IF Letter = "R" THEN LINE (Left, Top)-STEP(5, 0), PrintColor LINE (Left + 1, Top + 1)-STEP(1, 4), PrintColor, B LINE (Left, Top + 6)-STEP(2, 0), PrintColor LINE (Left + 5, Top + 1)-STEP(1, 1), PrintColor, B LINE (Left + 3, Top + 3)-STEP(2, 0), PrintColor LINE (Left + 4, Top + 4)-STEP(1, 0), PrintColor LINE (Left + 5, Top + 5)-STEP(1, 1), PrintColor, B END IF IF Letter = "S" THEN LINE (Left + 1, Top)-STEP(3, 0), PrintColor LINE (Left, Top + 1)-STEP(1, 1), PrintColor, B LINE (Left + 4, Top + 1)-STEP(1, 0), PrintColor PSET (Left + 2, Top + 2), PrintColor LINE (Left + 1, Top + 3)-STEP(2, 0), PrintColor LINE (Left + 3, Top + 4)-STEP(2, 0), PrintColor LINE (Left, Top + 5)-STEP(1, 0), PrintColor LINE (Left + 4, Top + 5)-STEP(1, 0), PrintColor LINE (Left + 1, Top + 6)-STEP(3, 0), PrintColor END IF IF Letter = "T" THEN LINE (Left, Top)-STEP(5, 0), PrintColor LINE (Left + 2, Top + 1)-STEP(1, 5), PrintColor, B END IF IF Letter = "U" THEN LINE (Left, Top)-STEP(1, 5), PrintColor, B LINE (Left + 4, Top)-STEP(1, 5), PrintColor, B LINE (Left, Top + 6)-STEP(5, 0), PrintColor END IF IF Letter = "V" THEN LINE (Left, Top)-STEP(1, 4), PrintColor, B LINE (Left + 4, Top)-STEP(1, 4), PrintColor, B LINE (Left + 1, Top + 5)-STEP(3, 0), PrintColor LINE (Left + 2, Top + 6)-STEP(1, 0), PrintColor END IF IF Letter = "W" THEN LINE (Left, Top)-STEP(1, 6), PrintColor, B LINE (Left + 5, Top)-STEP(1, 6), PrintColor, B LINE (Left + 2, Top + 4)-STEP(0, 1), PrintColor LINE (Left + 4, Top + 4)-STEP(0, 1), PrintColor LINE (Left + 3, Top + 3)-STEP(0, 1), PrintColor END IF IF Letter = "X" THEN LINE (Left, Top)-STEP(1, 1), PrintColor, B LINE (Left + 5, Top)-STEP(1, 1), PrintColor, B LINE (Left + 1, Top + 2)-STEP(1, 0), PrintColor LINE (Left + 4, Top + 2)-STEP(1, 0), PrintColor LINE (Left + 2, Top + 3)-STEP(2, 1), PrintColor, B LINE (Left + 1, Top + 5)-STEP(1, 0), PrintColor LINE (Left + 4, Top + 5)-STEP(1, 0), PrintColor LINE (Left, Top + 6)-STEP(1, 0), PrintColor LINE (Left + 5, Top + 6)-STEP(1, 0), PrintColor END IF IF Letter = "Y" THEN LINE (Left, Top)-STEP(1, 2), PrintColor, B LINE (Left + 4, Top)-STEP(1, 2), PrintColor, B LINE (Left + 1, Top + 3)-STEP(3, 0), PrintColor LINE (Left + 2, Top + 4)-STEP(1, 1), PrintColor, B LINE (Left + 1, Top + 6)-STEP(3, 0), PrintColor END IF IF Letter = "Z" THEN LINE (Left, Top)-STEP(6, 0), PrintColor LINE (Left + 5, Top + 1)-STEP(-4, 4), PrintColor LINE (Left + 6, Top + 1)-STEP(-4, 4), PrintColor LINE (Left, Top + 6)-STEP(6, 0), PrintColor END IF IF Letter = "a" THEN LINE (Left + 1, Top + 2)-STEP(3, 0), PrintColor LINE (Left + 4, Top + 3)-STEP(1, 2), PrintColor, B LINE (Left + 1, Top + 4)-STEP(2, 0), PrintColor LINE (Left, Top + 5)-STEP(1, 0), PrintColor LINE (Left + 1, Top + 6)-STEP(2, 0), PrintColor LINE (Left + 5, Top + 6)-STEP(1, 0), PrintColor END IF IF Letter = "b" THEN PSET (Left, Top), PrintColor LINE (Left + 1, Top)-STEP(1, 5), PrintColor, B LINE (Left, Top + 6)-STEP(1, 0), PrintColor LINE (Left + 3, Top + 3)-STEP(2, 0), PrintColor LINE (Left + 3, Top + 6)-STEP(2, 0), PrintColor LINE (Left + 5, Top + 4)-STEP(1, 1), PrintColor, B END IF IF Letter = "c" THEN LINE (Left + 1, Top + 2)-STEP(3, 0), PrintColor LINE (Left, Top + 3)-STEP(1, 2), PrintColor, B LINE (Left + 4, Top + 3)-STEP(1, 0), PrintColor LINE (Left + 1, Top + 6)-STEP(3, 0), PrintColor LINE (Left + 4, Top + 5)-STEP(1, 0), PrintColor END IF IF Letter = "d" THEN PSET (Left + 3, Top), PrintColor LINE (Left + 4, Top)-STEP(1, 5), PrintColor, B LINE (Left + 1, Top + 3)-STEP(2, 0), PrintColor LINE (Left, Top + 4)-STEP(1, 1), PrintColor, B LINE (Left + 1, Top + 6)-STEP(2, 0), PrintColor LINE (Left + 5, Top + 6)-STEP(1, 0), PrintColor END IF IF Letter = "e" THEN LINE (Left + 1, Top + 2)-STEP(3, 0), PrintColor LINE (Left, Top + 3)-STEP(1, 2), PrintColor, B LINE (Left + 4, Top + 3)-STEP(1, 1), PrintColor, B LINE (Left + 2, Top + 4)-STEP(1, 0), PrintColor LINE (Left + 1, Top + 6)-STEP(3, 0), PrintColor END IF IF Letter = "f" THEN LINE (Left + 2, Top)-STEP(2, 0), PrintColor LINE (Left + 4, Top + 1)-STEP(1, 0), PrintColor LINE (Left + 1, Top + 1)-STEP(1, 4), PrintColor, B PSET (Left, Top + 3), PrintColor PSET (Left + 3, Top + 3), PrintColor LINE (Left, Top + 6)-STEP(3, 0), PrintColor END IF IF Letter = "g" THEN LINE (Left + 1, Top + 2)-STEP(2, 0), PrintColor LINE (Left + 5, Top + 2)-STEP(1, 0), PrintColor LINE (Left, Top + 3)-STEP(1, 1), PrintColor, B LINE (Left + 1, Top + 5)-STEP(2, 0), PrintColor LINE (Left + 4, Top + 3)-STEP(1, 3), PrintColor, B LINE (Left, Top + 7)-STEP(4, 0), PrintColor END IF IF Letter = "h" THEN PSET (Left, Top), PrintColor LINE (Left + 1, Top)-STEP(1, 6), PrintColor, B PSET (Left, Top + 6), PrintColor PSET (Left + 3, Top + 3), PrintColor LINE (Left + 4, Top + 2)-STEP(1, 0), PrintColor LINE (Left + 5, Top + 3)-STEP(1, 3), PrintColor, B END IF IF Letter = "i" THEN LINE (Left + 2, Top)-STEP(1, 0), PrintColor PSET (Left + 1, Top + 2), PrintColor LINE (Left + 2, Top + 2)-STEP(1, 3), PrintColor, B LINE (Left + 1, Top + 6)-STEP(3, 0), PrintColor END IF IF Letter = "j" THEN LINE (Left + 4, Top)-STEP(1, 0), PrintColor LINE (Left + 4, Top + 2)-STEP(1, 4), PrintColor, B LINE (Left, Top + 5)-STEP(1, 1), PrintColor, B LINE (Left + 1, Top + 7)-STEP(3, 0), PrintColor END IF IF Letter = "k" THEN PSET (Left, Top), PrintColor PSET (Left, Top + 6), PrintColor LINE (Left + 1, Top)-STEP(1, 6), PrintColor, B LINE (Left + 3, Top + 4)-STEP(1, 0), PrintColor LINE (Left + 4, Top + 3)-STEP(1, 0), PrintColor LINE (Left + 4, Top + 5)-STEP(1, 0), PrintColor LINE (Left + 5, Top + 2)-STEP(1, 0), PrintColor LINE (Left + 5, Top + 6)-STEP(1, 0), PrintColor END IF IF Letter = "l" THEN PSET (Left + 1, Top), PrintColor LINE (Left + 2, Top)-STEP(1, 5), PrintColor, B LINE (Left + 1, Top + 6)-STEP(3, 0), PrintColor END IF IF Letter = "m" THEN LINE (Left + 1, Top + 2)-STEP(1, 0), PrintColor LINE (Left, Top + 3)-STEP(1, 3), PrintColor, B LINE (Left + 5, Top + 3)-STEP(1, 3), PrintColor, B LINE (Left + 4, Top + 2)-STEP(1, 0), PrintColor LINE (Left + 2, Top + 3)-STEP(2, 1), PrintColor, B PSET (Left + 3, Top + 5), PrintColor END IF IF Letter = "n" THEN LINE (Left, Top + 2)-STEP(4, 0), PrintColor LINE (Left, Top + 3)-STEP(1, 3), PrintColor, B LINE (Left + 4, Top + 3)-STEP(1, 3), PrintColor, B END IF IF Letter = "o" THEN LINE (Left + 1, Top + 2)-STEP(3, 0), PrintColor LINE (Left, Top + 3)-STEP(1, 2), PrintColor, B LINE (Left + 4, Top + 3)-STEP(1, 2), PrintColor, B LINE (Left + 1, Top + 6)-STEP(3, 0), PrintColor END IF IF Letter = "p" THEN LINE (Left, Top + 2)-STEP(1, 0), PrintColor LINE (Left + 1, Top + 3)-STEP(1, 3), PrintColor, B LINE (Left, Top + 7)-STEP(3, 0), PrintColor LINE (Left + 3, Top + 2)-STEP(2, 0), PrintColor LINE (Left + 5, Top + 3)-STEP(1, 1), PrintColor, B LINE (Left + 3, Top + 5)-STEP(2, 0), PrintColor END IF IF Letter = "q" THEN LINE (Left + 1, Top + 2)-STEP(2, 0), PrintColor LINE (Left + 5, Top + 2)-STEP(1, 0), PrintColor LINE (Left, Top + 3)-STEP(1, 1), PrintColor, B LINE (Left + 1, Top + 5)-STEP(2, 0), PrintColor LINE (Left + 4, Top + 3)-STEP(1, 3), PrintColor, B LINE (Left + 3, Top + 7)-STEP(3, 0), PrintColor END IF IF Letter = "r" THEN LINE (Left, Top + 2)-STEP(1, 0), PrintColor LINE (Left + 3, Top + 2)-STEP(2, 0), PrintColor LINE (Left + 1, Top + 3)-STEP(1, 2), PrintColor, B PSET (Left + 3, Top + 3), PrintColor LINE (Left + 5, Top + 3)-STEP(1, 1), PrintColor, B LINE (Left, Top + 6)-STEP(3, 0), PrintColor END IF IF Letter = "s" THEN LINE (Left + 1, Top + 2)-STEP(4, 0), PrintColor LINE (Left, Top + 3)-STEP(1, 0), PrintColor LINE (Left + 1, Top + 4)-STEP(3, 0), PrintColor LINE (Left + 4, Top + 5)-STEP(1, 0), PrintColor LINE (Left, Top + 6)-STEP(4, 0), PrintColor END IF IF Letter = "t" THEN LINE (Left + 2, Top + 1)-STEP(0, 4), PrintColor LINE (Left + 3, Top)-STEP(0, 5), PrintColor PSET (Left + 1, Top + 2), PrintColor LINE (Left + 4, Top + 2)-STEP(1, 0), PrintColor PSET (Left + 5, Top + 5), PrintColor LINE (Left + 3, Top + 6)-STEP(1, 0), PrintColor END IF IF Letter = "u" THEN LINE (Left, Top + 2)-STEP(1, 3), PrintColor, B LINE (Left + 4, Top + 2)-STEP(1, 3), PrintColor, B LINE (Left + 1, Top + 6)-STEP(2, 0), PrintColor LINE (Left + 5, Top + 6)-STEP(1, 0), PrintColor END IF IF Letter = "v" THEN LINE (Left, Top + 2)-STEP(1, 2), PrintColor, B LINE (Left + 4, Top + 2)-STEP(1, 2), PrintColor, B LINE (Left + 1, Top + 5)-STEP(3, 0), PrintColor LINE (Left + 2, Top + 6)-STEP(1, 0), PrintColor END IF IF Letter = "w" THEN LINE (Left, Top + 2)-STEP(1, 3), PrintColor, B LINE (Left + 5, Top + 2)-STEP(1, 3), PrintColor, B PSET (Left + 3, Top + 3), PrintColor LINE (Left + 2, Top + 4)-STEP(2, 1), PrintColor, B LINE (Left + 1, Top + 6)-STEP(1, 0), PrintColor LINE (Left + 4, Top + 6)-STEP(1, 0), PrintColor END IF IF Letter = "x" THEN LINE (Left, Top + 2)-STEP(1, 0), PrintColor LINE (Left + 5, Top + 2)-STEP(1, 0), PrintColor LINE (Left + 1, Top + 3)-STEP(1, 0), PrintColor LINE (Left + 4, Top + 3)-STEP(1, 0), PrintColor LINE (Left + 2, Top + 4)-STEP(2, 0), PrintColor LINE (Left + 1, Top + 5)-STEP(1, 0), PrintColor LINE (Left + 4, Top + 5)-STEP(1, 0), PrintColor LINE (Left, Top + 6)-STEP(1, 0), PrintColor LINE (Left + 5, Top + 6)-STEP(1, 0), PrintColor END IF IF Letter = "y" THEN LINE (Left, Top + 2)-STEP(1, 2), PrintColor, B LINE (Left + 4, Top + 2)-STEP(1, 4), PrintColor, B LINE (Left + 1, Top + 5)-STEP(2, 0), PrintColor LINE (Left, Top + 7)-STEP(4, 0), PrintColor END IF IF Letter = "z" THEN LINE (Left, Top + 2)-STEP(5, 0), PrintColor PSET (Left, Top + 3), PrintColor LINE (Left + 3, Top + 3)-STEP(-2, 2), PrintColor LINE (Left + 4, Top + 3)-STEP(-2, 2), PrintColor PSET (Left + 5, Top + 5), PrintColor LINE (Left, Top + 6)-STEP(5, 0), PrintColor END IF IF Letter = "0" THEN LINE (Left + 1, Top)-STEP(4, 0), PrintColor LINE (Left, Top + 1)-STEP(1, 4), PrintColor, B LINE (Left + 5, Top + 1)-STEP(1, 4), PrintColor, B LINE (Left + 4, Top + 2)-STEP(0, 1), PrintColor LINE (Left + 3, Top + 3)-STEP(0, 1), PrintColor LINE (Left + 2, Top + 4)-STEP(0, 1), PrintColor LINE (Left + 1, Top + 6)-STEP(4, 0), PrintColor END IF IF Letter = "1" THEN LINE (Left + 2, Top)-STEP(1, 5), PrintColor, B PSET (Left + 1, Top + 1), PrintColor LINE (Left, Top + 6)-STEP(5, 0), PrintColor END IF IF Letter = "2" THEN LINE (Left + 1, Top)-STEP(3, 0), PrintColor LINE (Left, Top + 1)-STEP(1, 0), PrintColor LINE (Left + 4, Top + 1)-STEP(1, 1), PrintColor, B LINE (Left + 2, Top + 3)-STEP(2, 0), PrintColor LINE (Left + 1, Top + 4)-STEP(1, 0), PrintColor LINE (Left, Top + 5)-STEP(1, 1), PrintColor, B LINE (Left + 2, Top + 6)-STEP(3, 0), PrintColor LINE (Left + 4, Top + 5)-STEP(1, 0), PrintColor END IF IF Letter = "3" THEN LINE (Left + 1, Top)-STEP(3, 0), PrintColor LINE (Left, Top + 1)-STEP(1, 0), PrintColor LINE (Left + 4, Top + 1)-STEP(1, 1), PrintColor, B LINE (Left + 2, Top + 3)-STEP(2, 0), PrintColor LINE (Left + 4, Top + 4)-STEP(1, 1), PrintColor, B LINE (Left, Top + 5)-STEP(1, 0), PrintColor LINE (Left + 1, Top + 6)-STEP(3, 0), PrintColor END IF IF Letter = "4" THEN PSET (Left + 3, Top), PrintColor LINE (Left + 2, Top + 1)-STEP(1, 0), PrintColor LINE (Left + 1, Top + 2)-STEP(1, 0), PrintColor LINE (Left, Top + 3)-STEP(1, 0), PrintColor LINE (Left + 4, Top)-STEP(1, 5), PrintColor, B LINE (Left, Top + 4)-STEP(3, 0), PrintColor PSET (Left + 6, Top + 4), PrintColor LINE (Left + 3, Top + 6)-STEP(3, 0), PrintColor END IF IF Letter = "5" THEN LINE (Left, Top)-STEP(5, 0), PrintColor LINE (Left, Top + 1)-STEP(1, 1), PrintColor, B LINE (Left + 2, Top + 2)-STEP(2, 0), PrintColor LINE (Left + 4, Top + 3)-STEP(1, 2), PrintColor, B LINE (Left, Top + 5)-STEP(1, 0), PrintColor LINE (Left + 1, Top + 6)-STEP(3, 0), PrintColor END IF IF Letter = "6" THEN LINE (Left + 2, Top)-STEP(2, 0), PrintColor LINE (Left + 1, Top + 1)-STEP(1, 0), PrintColor LINE (Left, Top + 2)-STEP(1, 3), PrintColor, B LINE (Left + 2, Top + 3)-STEP(2, 0), PrintColor LINE (Left + 4, Top + 4)-STEP(1, 1), PrintColor, B LINE (Left + 1, Top + 6)-STEP(3, 0), PrintColor END IF IF Letter = "7" THEN LINE (Left, Top)-STEP(5, 0), PrintColor LINE (Left, Top + 1)-STEP(1, 0), PrintColor LINE (Left + 4, Top + 1)-STEP(1, 1), PrintColor, B LINE (Left + 3, Top + 3)-STEP(1, 0), PrintColor LINE (Left + 2, Top + 4)-STEP(1, 2), PrintColor, B END IF IF Letter = "8" THEN LINE (Left + 1, Top)-STEP(3, 0), PrintColor LINE (Left, Top + 1)-STEP(1, 1), PrintColor, B LINE (Left + 4, Top + 1)-STEP(1, 1), PrintColor, B LINE (Left + 1, Top + 3)-STEP(3, 0), PrintColor LINE (Left, Top + 4)-STEP(1, 1), PrintColor, B LINE (Left + 4, Top + 4)-STEP(1, 1), PrintColor, B LINE (Left + 1, Top + 6)-STEP(3, 0), PrintColor END IF IF Letter = "9" THEN LINE (Left + 1, Top)-STEP(3, 0), PrintColor LINE (Left, Top + 1)-STEP(1, 1), PrintColor, B LINE (Left + 4, Top + 1)-STEP(1, 3), PrintColor, B LINE (Left + 1, Top + 3)-STEP(2, 0), PrintColor, B LINE (Left + 3, Top + 5)-STEP(1, 0), PrintColor LINE (Left + 1, Top + 6)-STEP(2, 0), PrintColor END IF IF Letter = "." THEN LINE (Left + 2, Top + 5)-STEP(1, 1), PrintColor, B END IF IF Letter = "," THEN LINE (Left + 2, Top + 5)-STEP(1, 1), PrintColor, B LINE (Left + 1, Top + 7)-STEP(1, 0), PrintColor END IF IF Letter = ":" THEN LINE (Left + 2, Top + 1)-STEP(1, 1), PrintColor, B LINE (Left + 2, Top + 5)-STEP(1, 1), PrintColor, B END IF IF Letter = ";" THEN LINE (Left + 2, Top + 1)-STEP(1, 1), PrintColor, B LINE (Left + 2, Top + 5)-STEP(1, 1), PrintColor, B LINE (Left + 1, Top + 7)-STEP(1, 0), PrintColor END IF IF Letter = "(" THEN LINE (Left + 3, Top)-STEP(1, 0), PrintColor LINE (Left + 2, Top + 1)-STEP(1, 0), PrintColor LINE (Left + 1, Top + 2)-STEP(1, 2), PrintColor, B LINE (Left + 2, Top + 5)-STEP(1, 0), PrintColor LINE (Left + 3, Top + 6)-STEP(1, 0), PrintColor END IF IF Letter = ")" THEN LINE (Left + 1, Top)-STEP(1, 0), PrintColor LINE (Left + 2, Top + 1)-STEP(1, 0), PrintColor LINE (Left + 3, Top + 2)-STEP(1, 2), PrintColor, B LINE (Left + 2, Top + 5)-STEP(1, 0), PrintColor LINE (Left + 1, Top + 6)-STEP(1, 0), PrintColor END IF IF Letter = "!" THEN LINE (Left + 1, Top + 1)-STEP(0, 2), PrintColor LINE (Left + 2, Top)-STEP(1, 4), PrintColor, B LINE (Left + 4, Top + 1)-STEP(0, 2), PrintColor LINE (Left + 2, Top + 6)-STEP(1, 0), PrintColor END IF IF Letter = "?" THEN LINE (Left + 1, Top)-STEP(3, 0), PrintColor LINE (Left, Top + 1)-STEP(1, 0), PrintColor LINE (Left + 4, Top + 1)-STEP(1, 1), PrintColor, B LINE (Left + 3, Top + 3)-STEP(1, 0), PrintColor LINE (Left + 2, Top + 4)-STEP(1, 0), PrintColor LINE (Left + 2, Top + 6)-STEP(1, 0), PrintColor END IF IF Letter = "`" THEN LINE (Left + 2, Top)-STEP(1, 1), PrintColor, B LINE (Left + 3, Top + 2)-STEP(1, 0), PrintColor END IF IF Letter = "'" THEN LINE (Left + 1, Top)-STEP(1, 1), PrintColor, B LINE (Left, Top + 2)-STEP(1, 0), PrintColor END IF IF Letter = "+" THEN LINE (Left + 2, Top + 1)-STEP(1, 4), PrintColor, B LINE (Left, Top + 3)-STEP(1, 0), PrintColor LINE (Left + 4, Top + 3)-STEP(1, 0), PrintColor END IF IF Letter = "-" THEN LINE (Left, Top + 3)-STEP(5, 0), PrintColor END IF IF Letter = "*" THEN LINE (Left + 2, Top + 2)-STEP(2, 2), PrintColor, BF PSET (Left + 1, Top + 1), PrintColor PSET (Left + 5, Top + 1), PrintColor PSET (Left + 1, Top + 3), PrintColor PSET (Left + 5, Top + 3), PrintColor PSET (Left + 1, Top + 5), PrintColor PSET (Left + 5, Top + 5), PrintColor END IF IF Letter = "/" THEN LINE (Left, Top + 5)-STEP(5, -5), PrintColor LINE (Left, Top + 6)-STEP(6, -6), PrintColor END IF IF Letter = "=" THEN LINE (Left, Top + 2)-STEP(5, 0), PrintColor LINE (Left, Top + 5)-STEP(5, 0), PrintColor END IF Left = Left + 8 NEXT i END IF IF FunctionNum = 1 THEN Left = VAL(Variable1) Top = VAL(Variable2) END IF IF FunctionNum = 2 THEN PrintColor = VAL(Variable1) END SUB SUB xyBlock (Left, Top, Num AS INTEGER) Right = Left + 9 Bottom = Top + 7 IF Num = 0 THEN C1 = 11 C2 = 3 C3 = 9 C4 = 1 END IF IF Num = 1 THEN C1 = 15 C2 = 7 C3 = 8 C4 = 0 END IF IF Num = 0 OR Num = 1 THEN LINE (Left, Top)-STEP(4, 7), C2, BF LINE (Left + 5, Top)-STEP(4, 7), C3, BF FOR Dis = 0 TO 3 LINE (Left + 1 + Dis, Top + Dis)-(Right - 1 - Dis, Top + Dis), C1 LINE (Left + 1 + Dis, Bottom - Dis)-(Right - 1 - Dis, Bottom - Dis), C4 NEXT Dis END IF IF Num = 2 THEN LINE (Left, Top)-STEP(9, 7), 15, BF END IF END SUB