]> 4ch.mooo.com Git - 16.git/blobdiff - 16/xw__/modex/DEMO07.PAS
trying to translate that lib into open watcom...
[16.git] / 16 / xw__ / modex / DEMO07.PAS
diff --git a/16/xw__/modex/DEMO07.PAS b/16/xw__/modex/DEMO07.PAS
new file mode 100755 (executable)
index 0000000..04fff79
--- /dev/null
@@ -0,0 +1,68 @@
+(*\r
+    DEMO07 - Hardware scrolling\r
+    Copyright (c) 1994 Alessandro Scotti\r
+*)\r
+uses Crt, Modex;\r
+\r
+const\r
+  (* Change this if scrolling seems jerky (this simple program does *)\r
+  (* not handle vertical retrace/display very well) *)\r
+  STEPS = 5;\r
+\r
+procedure Check( Cond: boolean; var Coord, DeltaC: integer; NewCoord, Sign: integer );\r
+begin\r
+  if( Cond ) then begin\r
+    Coord := NewCoord;\r
+    DeltaC := Sign*(Random(3)+2);\r
+  end;\r
+end;\r
+\r
+var\r
+  I, X, Y, DX, DY: integer;\r
+begin\r
+  (* Initialize library and graphics mode *)\r
+  mxInit;\r
+  mxSetMode( MX_320x200 );\r
+  (* Set a 640x400 virtual screen *)\r
+  mxSetVirtualScreen( 640, 400 );\r
+  mxSetClip( TRUE );\r
+\r
+  X := 0;\r
+  Y := 0;\r
+  DX := 1;\r
+  DY := 1;\r
+\r
+  (* Main loop: draw lines, circles, points and rectangles in separate *)\r
+  (* 320x200 windows, while smoothly panning virtual screen *)\r
+  while( not KeyPressed ) do begin\r
+    (* Points *)\r
+    mxSetClipRegion( 0, 0, 320, 200 );\r
+    for I:=1 to STEPS do\r
+      mxPutPixel( Random(320), Random(200), Random(16) );\r
+    (* Lines *)\r
+    mxSetClipRegion( 0, 200, 320, 200 );\r
+    for I:=1 to STEPS do\r
+      mxLine( Random(320), Random(200)+200, Random(320), Random(200)+200, Random(16), OP_SET );\r
+    (* Circles *)\r
+    mxSetClipRegion( 320, 0, 320, 200 );\r
+    for I:=1 to STEPS do\r
+      mxCircle( Random(320)+320, Random(200), Random(100), Random(16) );\r
+    (* Boxes *)\r
+    mxSetClipRegion( 320, 200, 320, 200 );\r
+    for I:=1 to STEPS do\r
+      mxFillBox( Random(320)+320, Random(200)+200, Random(100)+1, Random(100)+1, Random(16), OP_SET );\r
+    (* Pan *)\r
+    Inc( X, DX );\r
+    Check( X+320 >= 639, X, DX, 319, -1 );\r
+    Check( X < 0, X, DX, 0, +1 );\r
+    Inc( Y, DY );\r
+    Check( Y+200 >= 399, Y, DY, 199, -1 );\r
+    Check( Y < 0, Y, DY, 0, +1 );\r
+    mxPan( X, Y );\r
+    mxWaitRetrace;\r
+  end;\r
+\r
+  (* Shutdown *)\r
+  mxSetMode( MX_TEXT );\r
+  mxTerm;\r
+end.\r