]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/modex/demos/pascal/test5.pas
16_ca needs huge amounts of work and I should remember what needs to be done soon...
[16.git] / src / lib / modex / demos / pascal / test5.pas
diff --git a/src/lib/modex/demos/pascal/test5.pas b/src/lib/modex/demos/pascal/test5.pas
deleted file mode 100755 (executable)
index 7cc56bb..0000000
+++ /dev/null
@@ -1,488 +0,0 @@
-{                      ModeX Turbo Pascal Demo Program                       }\r
-{                  Converted to Turbo Pascal by Scott Wyatt                  }\r
-{          Original program written in QuickBasic by Matt Prichard           }\r
-{                       Released to the Public Domain                        }\r
-{                                                                            }\r
-{          Thanks to Matt Prichard for his *EXCELLENT* ModeX Library         }\r
-{                 Additional Comments by Matt Pritchard                                                         }\r
-\r
-Uses Crt;\r
-\r
-{$L modex2.obj}                { This file is the external ModeX Library .OBJ }\r
-{$F+}\r
-\r
-       { Mode Setting Routines }\r
-\r
-Function SET_VGA_MODEX (Mode,MaxXpos,MaxYpos,Pages : integer) : integer; external;\r
-Function SET_MODEX (Mode:integer) : Integer; external;\r
-\r
-       { Graphics Primitives }\r
-\r
-Procedure CLEAR_VGA_SCREEN (Color:integer); external;\r
-Procedure SET_POINT (Xpos,Ypos,Color : integer); external;\r
-Function READ_POINT (Xpos,Ypos:integer) : integer; external;\r
-Procedure FILL_BLOCK (Xpos1,Ypos1,Xpos2,Ypos2,Color:integer); external;\r
-Procedure DRAW_LINE (Xpos1,Ypos1,Xpos2,Ypos2,Color:integer); external;\r
-\r
-       { VGA DAC Routines }\r
-\r
-Procedure SET_DAC_REGISTER (RegNo,Red,Green,Blue:integer); external;\r
-Procedure GET_DAC_REGISTER (RegNo,Red,Green,Blue:integer); external;\r
-\r
-       { Page and Window Control Routines }\r
-\r
-Procedure SET_ACTIVE_PAGE (PageNo:integer); external;\r
-Function GET_ACTIVE_PAGE : integer; external;\r
-Procedure SET_DISPLAY_PAGE (PageNo:integer); external;\r
-Function GET_DISPLAY_PAGE : integer; external;\r
-Procedure SET_WINDOW (DisplayPage,XOffset,YOffset : integer); external;\r
-Function GET_X_OFFSET : integer; external;\r
-Function GET_Y_OFFSET : integer; external;\r
-Procedure SYNC_DISPLAY; external;\r
-\r
-       { Text Display Routines }\r
-\r
-Procedure GPRINTC (CharNum,Xpos,Ypos,ColorF,ColorB:integer); external;\r
-Procedure TGPRINTC ( CharNum,Xpos,Ypos,ColorF : integer); external;\r
-Procedure PRINT_STR (Var Text;MaxLen,Xpos,Ypos,ColorF,ColorB:integer); external;\r
-Procedure TPRINT_STR (Var Text;MaxLen,Xpos,Ypos,ColorF:integer); external;\r
-Procedure SET_DISPLAY_FONT (Var FontData;FontNumber:integer); external;\r
-\r
-       { Sprite and VGA memory -> Vga memory Copy Routines }\r
-\r
-Procedure DRAW_BITMAP (Var Image;Xpos,Ypos,Width,Height:integer); external;\r
-Procedure TDRAW_BITMAP (Var Image;Xpos,Ypos,Width,Height:integer); external;\r
-Procedure COPY_PAGE (SourcePage,DestPage:integer); external;\r
-Procedure COPY_BITMAP (SourcePage,X1,Y1,X2,Y2,DestPage,DestX1,DestY1:integer); external;\r
-\r
-{$F-}\r
-\r
-\r
-TYPE Sprite = Record\r
-       Xpos : INTEGER;\r
-       Ypos : INTEGER;\r
-       XDir : INTEGER;\r
-       YDir : INTEGER;\r
-       Shape : INTEGER;\r
-       LastX : INTEGER;\r
-       LastY : INTEGER;\r
-     END;\r
-\r
-\r
-CONST MaxShapes = 32;\r
-      Circle_16 : Array[1..16,1..16] of byte =\r
-      ((  0,  0,  0,  0,  0,  0, 20, 20, 20, 20,  0,  0,  0,  0,  0,  0),\r
-       (  0,  0,  0,  0, 20, 20, 20, 20, 20, 20, 20, 20,  0,  0,  0,  0),\r
-       (  0,  0,  0, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,  0,  0,  0),\r
-       (  0,  0, 20, 20, 20, 20,  0,  0,  0,  0, 20, 20, 20, 20,  0,  0),\r
-       (  0, 20, 20, 20, 20,  0,  0,  0,  0,  0,  0, 20, 20, 20, 20,  0),\r
-       (  0, 20, 20, 20,  0,  0,  0,  0,  0,  0,  0,  0, 20, 20, 20,  0),\r
-       ( 20, 20, 20,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 20, 20, 20),\r
-       ( 20, 20, 20,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 20, 20, 20),\r
-       ( 20, 20, 20,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 20, 20, 20),\r
-       ( 20, 20, 20,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 20, 20, 20),\r
-       (  0, 20, 20, 20,  0,  0,  0,  0,  0,  0,  0,  0, 20, 20, 20,  0),\r
-       (  0, 20, 20, 20, 20,  0,  0,  0,  0,  0,  0, 20, 20, 20, 20,  0),\r
-       (  0,  0, 20, 20, 20, 20,  0,  0,  0,  0, 20, 20, 20, 20,  0,  0),\r
-       (  0,  0,  0, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,  0,  0,  0),\r
-       (  0,  0,  0,  0, 20, 20, 20, 20, 20, 20, 20, 20,  0,  0,  0,  0),\r
-       (  0,  0,  0,  0,  0,  0, 20, 20, 20, 20,  0,  0,  0,  0,  0,  0));\r
-      Square_16 : Array[1..16,1..16] of byte =\r
-      (( 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21),\r
-       ( 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21),\r
-       ( 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21),\r
-       ( 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21),\r
-       ( 21, 21, 21, 21,  0,  0,  0,  0,  0,  0,  0,  0, 21, 21, 21, 21),\r
-       ( 21, 21, 21, 21,  0,  0,  0,  0,  0,  0,  0,  0, 21, 21, 21, 21),\r
-       ( 21, 21, 21, 21,  0,  0,  0,  0,  0,  0,  0,  0, 21, 21, 21, 21),\r
-       ( 21, 21, 21, 21,  0,  0,  0,  0,  0,  0,  0,  0, 21, 21, 21, 21),\r
-       ( 21, 21, 21, 21,  0,  0,  0,  0,  0,  0,  0,  0, 21, 21, 21, 21),\r
-       ( 21, 21, 21, 21,  0,  0,  0,  0,  0,  0,  0,  0, 21, 21, 21, 21),\r
-       ( 21, 21, 21, 21,  0,  0,  0,  0,  0,  0,  0,  0, 21, 21, 21, 21),\r
-       ( 21, 21, 21, 21,  0,  0,  0,  0,  0,  0,  0,  0, 21, 21, 21, 21),\r
-       ( 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21),\r
-       ( 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21),\r
-       ( 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21),\r
-       ( 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21));\r
-       Diamond : Array[1..8,1..8] of byte =\r
-      ((  0,  0,  0, 22, 22,  0,  0,  0),\r
-       (  0,  0, 22, 22, 22, 22,  0,  0),\r
-       (  0, 22, 22,  0,  0, 22, 22,  0),\r
-       ( 22, 22,  0,  0,  0,  0, 22, 22),\r
-       ( 22, 22,  0,  0,  0,  0, 22, 22),\r
-       (  0, 22, 22,  0,  0, 22, 22,  0),\r
-       (  0,  0, 22, 22, 22, 22,  0,  0),\r
-       (  0,  0,  0, 22, 22,  0,  0,  0));\r
-       Rectangle : Array[1..8,1..3] of byte =\r
-      (( 23, 23, 23),\r
-       ( 23, 23, 23),\r
-       ( 23, 23, 23),\r
-       ( 23, 23, 23),\r
-       ( 23, 23, 23),\r
-       ( 23, 23, 23),\r
-       ( 23, 23, 23),\r
-       ( 23, 23, 23));\r
-\r
-          { Global Variables ? }\r
-\r
-Var\r
-  XCenter,X1,Y1,X2,Y2,Z,Colr,XChars,YChars,X,Y,N,Gap : Integer;\r
-  s : string;\r
-  s1 : Array[1..35] of Char;\r
-  ch : Char;\r
-  obj : Array[1..64] of Sprite;\r
-  ScreenX,ScreenY : Integer;\r
-  c, dc, SpriteX, SpriteY, CurrentPage, LastPage : Integer;\r
-  SetColor, SDir, PrevColor, PDir : Byte;\r
-  XView, YView : Integer;\r
-  XView_Change, YView_Change : Integer;\r
-  Right : Boolean;\r
-  Number_Of_Shapes : Byte;\r
-\r
-\r
-       { Error Handler - Returns to Text Mode & Displays Error }\r
-\r
-Procedure ERROR_OUT(s : string);\r
-  Begin\r
-    asm\r
-      mov ah,0\r
-      mov al,3\r
-      int 10h\r
-    end;\r
-  WriteLn(s);\r
-  Halt(0);\r
-END;\r
-\r
-       { Routine to Print a PASCAL string using Print_Str }\r
-\r
-Procedure Print_Text(s : string; X,Y,BColor,FColor : integer);\r
-Var\r
-  s1 : Array[1..135] of Char;\r
-  i : byte;\r
-Begin\r
-  For i := 1 to Length(s) DO\r
-    s1[i] := s[i];\r
-  Print_Str(s1,Length(s),X,Y,BColor,FColor);\r
-End;\r
-\r
-       { Routine to Transparently Print a PASCAL string using TPrint_Str }\r
-\r
-Procedure TPrint_Text(s : string; X,Y,Color : integer);\r
-Var\r
-  s1 : Array[1..135] of Char;\r
-  i : byte;\r
-Begin\r
-  For i := 1 to Length(s) DO\r
-    s1[i] := s[i];\r
-  TPrint_Str(s1,Length(s),X,Y,Color);\r
-End;\r
-\r
-       { Routines to show test patterns for a given mode }\r
-\r
-Procedure Demo_Res(Mode, Xmax, Ymax : integer);\r
-Begin\r
-\r
-  Str(mode,s);\r
-  If Set_ModeX(Mode) = 0 Then\r
-    Error_Out('Unable to SET_MODEX '+s);\r
-  Clear_VGA_Screen(0);\r
-\r
-  XCenter := Xmax div 2;\r
-  X1 := 10;\r
-  Y1 := 10;\r
-  X2 := Xmax - 1;\r
-  Y2 := Ymax - 1;\r
-\r
-  FOR Z := 0 TO 3 DO\r
-    Begin\r
-      Colr := 31 - Z * 2;\r
-      Draw_Line(X1 + Z, Y1 + Z, X2 - Z, Y1 + Z, Colr);\r
-      Draw_Line(X1 + Z, Y1 + Z, X1 + Z, Y2 - Z, Colr);\r
-      Draw_Line(X1 + Z, Y2 - Z, X2 - Z, Y2 - Z, Colr);\r
-      Draw_Line(X2 - Z, Y1 + Z, X2 - Z, Y2 - Z, Colr);\r
-    End;\r
-\r
-  XChars := Xmax div 10;\r
-  YChars := Ymax div 10;\r
-\r
-  FOR X := 0 TO XChars - 1 DO\r
-    Begin\r
-      TGPRINTC(48 + ((X + 1) MOD 10), X * 10 + 1, 1, 9 + ((X div 8) MOD 7));\r
-      DRAW_LINE(X * 10 + 9, 0, X * 10 + 9, 3, 15);\r
-    End;\r
-  FOR Y := 0 TO YChars - 1 DO\r
-    Begin\r
-      TGPRINTC(48 + ((Y + 1) MOD 10), 1, Y * 10 + 1, 9 + ((Y div 10) MOD 7));\r
-      DRAW_LINE(0, Y * 10 + 9, 3, Y * 10 + 9, 15);\r
-    End;\r
-\r
-   { Test Line Drawing }\r
-\r
-  FOR X := 0 TO 63 DO\r
-    Begin\r
-      N := 15 + ((X * 3) div 4);\r
-      SET_DAC_REGISTER(64 + X, N, N, N);\r
-      SET_DAC_REGISTER(128 + X, 0, N, N);\r
-      DRAW_LINE(103 - X, 60, 40 + X, 123, 64 + X);\r
-      DRAW_LINE(40, 60 + X, 103, 123 - X, 128 + X);\r
-    End;\r
-  s := 'Line Test';\r
-  PRINT_Text(s,37,130,1,0);\r
-\r
-  { Test Block Fills }\r
-\r
-  Y := 60;\r
-  Gap := 0;\r
-  FOR X := 0 TO 9 DO\r
-    Begin\r
-      FILL_BLOCK(120, Y, 120 + X, Y + Gap, 64 + X);\r
-      FILL_BLOCK(140 - (15 - X), Y, 150 + X, Y + Gap, 230 + X);\r
-      FILL_BLOCK(170 - (15 - X), Y, 170, Y + Gap, 128 + X);\r
-      Y := Y + Gap + 2;\r
-      Gap := Gap + 1;\r
-    End;\r
-  s := 'Fill Test';\r
-  Print_Text(s,110, 46, 2,0);\r
-\r
-  { Test Pixel Write and Read }\r
-\r
-  FOR X := 190 TO 250 DO\r
-    FOR Y := 60 TO 122 DO\r
-      SET_POINT( X, Y, X + Y + X + Y);\r
-\r
-  s := 'Pixel Test';\r
-  Print_Text(s,182, 130, 3,0);\r
-\r
-  FOR X := 190 TO 250 DO\r
-    FOR Y := 60 TO 122 DO\r
-      IF READ_POINT(X, Y) <> ((X + Y + X + Y) AND 255) THEN\r
-        WriteLn('READ_PIXEL Failure');\r
-\r
-       { Display rest of screen }\r
-\r
-  s := ' This is a MODE X demo ';\r
-  Print_Text(s,XCenter - (Length(s) * 4), 20, 3, 1);\r
-  s := 'Screen Resolution is     by    ';\r
-  X := XCenter - (Length(s) * 4);\r
-  Print_Text(s,X,30,4,0);\r
-  Str(XMax,s);\r
-  Print_Text(s, X + 8 * 21, 30, 8, 0);\r
-  Str(YMax,s);\r
-  Print_Text(s, X + 8 * 28, 30, 15, 0);\r
-\r
-  FOR X := 0 TO 15 DO\r
-    Begin\r
-      SET_DAC_REGISTER( 230 + X, 63 - X * 4, 0, 15 + X * 3);\r
-      DRAW_LINE(30 + X, Ymax - 6 - X, Xmax - 20 - X, Ymax - 6 - X, 230 + X);\r
-    End;\r
-  s := 'Press <ANY KEY> to Continue';\r
-  For x := 1 to length(s) DO\r
-    s1[x] := s[x];\r
-  TPrint_Str(s1, length(s), XCenter - (26 * 4), Ymax - 18, 5);\r
-\r
-  Ch := ReadKey;\r
-  IF Ch = #27 Then\r
-    Error_Out('Abort');\r
-\r
-End;\r
-\r
-\r
-       { Initialize Sprites for Sprite Demo }\r
-\r
-Procedure Init_Sprites;\r
-Var i : byte;\r
-Begin\r
-  For i := 1 to 64 DO\r
-    Begin\r
-      Obj[i].XPos := Random(300)+10;\r
-      Obj[i].YPos := Random(200)+20;\r
-      Obj[i].XDir := Random(10)-5;\r
-      Obj[i].YDir := Random(10)-5;\r
-      If (Obj[i].XDir = 0) AND (Obj[i].YDir = 0) Then\r
-        Begin\r
-          Obj[i].XDir := Random(5) + 1;\r
-          Obj[i].YDir := Random(5) + 1;\r
-        End;\r
-      Obj[i].Shape := Random(4)+1;\r
-      Obj[i].LastX := obj[i].XPos;\r
-      Obj[i].LastY := obj[i].YPos;\r
-    End;\r
-End;\r
-\r
-Procedure Set_Sprites(number : byte);\r
-Var i : Byte;\r
-Begin\r
-  For i := 1 to number DO\r
-    Begin\r
-      obj[i].LastX := obj[i].XPos;\r
-      obj[i].LastY := obj[i].YPos;\r
-      obj[i].XPos := obj[i].XPos + obj[i].XDir;\r
-      obj[i].YPos := obj[i].YPos + obj[i].YDir;\r
-      If (obj[i].XPos > 335) OR (obj[i].XPos < 5 ) Then\r
-        obj[i].XDir := -(obj[i].XDir);\r
-      If (obj[i].YPos > 220) OR (obj[i].YPos < 5) Then\r
-        obj[i].YDir := -(obj[i].YDir);\r
-    End;\r
-  For i := 1 to number DO\r
-    Case obj[i].Shape of\r
-      1 : TDraw_Bitmap(Circle_16,obj[i].XPos,obj[i].YPos,16,16);\r
-      2 : TDraw_Bitmap(Square_16,obj[i].XPos,obj[i].YPos,16,16);\r
-      3 : TDraw_Bitmap(Diamond,obj[i].XPos,obj[i].YPos,8,8);\r
-      4 : TDraw_Bitmap(Rectangle,obj[i].XPos,obj[i].YPos,3,8);\r
-    End;\r
-End;\r
-\r
-Procedure Remove_Sprites(p,number : byte);\r
-Var i : byte;\r
-Begin\r
-  For i := 1 to number DO\r
-    Copy_Bitmap(2,obj[i].LastX,obj[i].LastY,obj[i].LastX+16,obj[i].LastY+16,p,Obj[i].LastX,Obj[i].LastY);\r
-End;\r
-\r
-Procedure Page_Demo;\r
-Begin\r
-  Number_Of_Shapes := 64;\r
-  XView_Change := 1;\r
-  YView_Change := 1;\r
-  XView := 1;\r
-  YView := 1;\r
-  Right := TRUE;\r
-  ScreenX := 360;\r
-  ScreenY := 240;\r
-  PrevColor := 0;\r
-  SetColor := 3;\r
-  SDir := 1;\r
-  PDir := 1;\r
-  Str(0,s);\r
-\r
-  IF SET_VGA_MODEX(0, ScreenX, ScreenY, 3) = 0 THEN\r
-    ERROR_OUT('Unable to SET_VGA_MODEX' + S);\r
-\r
-  SET_ACTIVE_PAGE(0);\r
-  CLEAR_VGA_SCREEN(0);\r
-  PRINT_TEXT('This is a Test of the Following Functions:', 10, 9, 15, 0);\r
-  DRAW_LINE( 10, 18, 350, 18, 4);\r
-  Print_Text('SET_ACTIVE_PAGE', 10, 20, 1, 0);\r
-  Print_Text('SET_DISPLAY_PAGE', 10, 30, 3,0);\r
-  Print_Text('SET_DAC_REGISTER', 10, 40, 3, 0);\r
-  Print_Text('CLEAR_VGA_SCREEN', 10, 50, 13, 0);\r
-  Print_Text('TDRAW_BITMAP', 10, 60, 14, 0);\r
-  Print_Text('COPY_PAGE', 10, 70, 3, 0);\r
-  Print_Text('COPY_BITMAP', 10, 80, 13, 0);\r
-  Print_Text('GPRINTC', 10, 90, 1, 0);\r
-  Print_Text('TGPRINTC', 10, 100, 3, 0);\r
-  Print_Text('SYNC_DISPLAY', 10, 110, 3, 0);\r
-  Print_Text('SET_WINDOW', 10, 120, 14, 0);\r
-  Print_Text('VIRTUAL SCREEN SIZES', 190, 20, 1, 0);\r
-  Print_Text('    SMOOTH SCROLLING', 190, 30, 3, 0);\r
-  Print_Text('    SPRITE ANIMATION', 190, 40, 13, 0);\r
-  Print_Text('       PAGE FLIPPING', 190, 50, 3, 0);\r
-  Print_Text('       COLOR CYCLING', 190, 60, 14, 0);\r
-\r
-  FOR X := 0 TO 60 DO\r
-    Begin\r
-      SET_DAC_REGISTER( 50 + X, 3 + X, 0, 60 - X);\r
-      SET_DAC_REGISTER( 150 + X, 3 + X, 0, 60 - X);\r
-    End;\r
-\r
-  c := 0;\r
-  DC := 1;\r
-  FOR X := 0 TO ScreenX div 2 DO\r
-    Begin\r
-      DRAW_LINE( ScreenX div 2 - 1, ScreenY div 4, X, ScreenY - 1, c + 50);\r
-      DRAW_LINE( ScreenX div 2, ScreenY div 4, ScreenX - X - 1, ScreenY - 1, c + 50);\r
-      c := c + DC;\r
-      IF (c = 0) OR (c = 60) THEN DC := -DC;\r
-    End;\r
-\r
-  TPrint_Text('Press <ESC> to Continue', 82, 190, 15);\r
-  TPrint_Text('<+> = Fewer Shapes  <-> = More Shapes', 32, 204, 12);\r
-  COPY_PAGE( 0, 1);\r
-  COPY_PAGE( 0, 2);\r
-\r
-  Ch := #0;\r
-  CurrentPage := 1;\r
-  LastPage := 0;\r
-  Set_Sprites(Number_Of_Shapes);\r
-  For c := 1 to 4 DO\r
-    Set_Dac_Register(19+c,63-(c*10),0,0);\r
-\r
-  While Ch <> #27 DO\r
-    Begin\r
-      Set_Active_Page(currentpage);\r
-      Set_Sprites(Number_Of_Shapes);\r
-      If Right Then\r
-        Begin\r
-          XView := XView + XView_Change;\r
-          If (XView > 38) OR (XView < 2) Then\r
-            Begin\r
-              XView_Change := -(XView_Change);\r
-              Right := FALSE;\r
-            End;\r
-        End\r
-      Else\r
-        Begin\r
-          YView := YView + YView_Change;\r
-          If (YView > 38) OR (YView < 2) Then\r
-            Begin\r
-              YView_Change := -(YView_Change);\r
-              Right := TRUE;\r
-            End;\r
-        End;\r
-\r
-      Set_Window(currentpage,XView,YView);\r
-      Set_Display_Page(currentpage);\r
-      Set_Dac_Register(50 + PrevColor, 3 + PrevColor, 0, 60 - PrevColor);\r
-      Set_Dac_Register(50 + SetColor, SetColor, 10, 63 - SetColor);\r
-      Set_Dac_Register(150 + PrevColor, 3 + PrevColor, 0, 60 - PrevColor);\r
-      Set_Dac_Register(150 + SetColor, 63, 63, SetColor);\r
-      SetColor := SetColor + SDir;\r
-      IF (SetColor = 60) OR (SetColor = 0) THEN SDir := -SDir;\r
-      PrevColor := PrevColor + PDir;\r
-      IF (PrevColor = 60) OR (PrevColor = 0) THEN PDir := -PDir;\r
-      Remove_Sprites(lastpage,Number_Of_Shapes);\r
-\r
-      If Keypressed Then\r
-        Begin\r
-          Ch := ReadKey;\r
-          Case Ch of\r
-            '-' : If Number_Of_Shapes > 1 Then\r
-                    Begin\r
-                      c := Number_Of_Shapes;\r
-                      Copy_Bitmap(2,obj[c].XPos,obj[c].YPos,obj[c].XPos+16,obj[c].YPos+16,\r
-                         currentpage,obj[c].XPos,obj[c].YPos);\r
-                      Dec(Number_Of_Shapes);\r
-                    End;\r
-            '+' : If Number_Of_Shapes < 64 Then Inc(Number_Of_Shapes);\r
-          End;\r
-        End;\r
-      lastpage := (lastpage+1) MOD 2;\r
-      currentpage := (currentpage+1) MOD 2;\r
-    End;\r
-END;\r
-\r
-       { MAIN ROUTINE - Run Through Demos and Exit }\r
-\r
-Begin\r
-\r
-  Randomize;\r
-  Init_Sprites;\r
-\r
-  Demo_Res(0, 320, 200);\r
-  Demo_Res(1, 320, 400);\r
-  Demo_Res(2, 360, 200);\r
-  Demo_Res(3, 360, 400);\r
-  Demo_Res(4, 320, 240);\r
-  Demo_Res(5, 320, 480);\r
-  Demo_Res(6, 360, 240);\r
-  Demo_Res(7, 360, 480);\r
-  Page_Demo;\r
-\r
-  asm\r
-    mov ah,0\r
-    mov al,3\r
-    int 10h\r
-  end;\r
-  WriteLn('THIS MODE X DEMO IS FINISHED');\r
-\r
-END.
\ No newline at end of file