Skip to content

Instantly share code, notes, and snippets.

@Nicholas-Westby
Created September 1, 2020 18:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Nicholas-Westby/b51faa079d20c479cd14fb53ebf88767 to your computer and use it in GitHub Desktop.
Save Nicholas-Westby/b51faa079d20c479cd14fb53ebf88767 to your computer and use it in GitHub Desktop.
A Tetris clone I made in high school in QuickBasic.
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment