program scrsvr; USES Crt,graphics,vector,open; var virtualscreen, virtualrgb, virtualsprites : pointer; index, x, y, ofset : word; up, down : boolean; colour, colour2 : byte; filename : string; {--------------------------------------------------------------------------} Procedure setupvirtualrgb; begin rgbw_palette; dump_paletteuser(1,seg(virtualrgb^)); setrgb(255,63,63,63); setrgb(254,63,63,0); setrgb(253,23,36,63); colour:=1; colour2:=251; for x:=0 to 319 do begin if colour=252 then colour:=1; if colour2=0 then colour2:=251; lineuser(x,190,x,200,colour,seg(virtualrgb^)); lineuser(x,1,x,10,colour2,seg(virtualrgb^)); colour:=colour+1; colour2:=colour2-1; end; load320image('dss.img',virtualsprites,9600); getimageuser(1,1,300,29,seg(virtualsprites^)); end; {-------------------------------------------------------------------------} Procedure MoveAround; { This is the main display procedure. Firstly it brings the object towards the viewer by increasing the Zoff, then passes control to the user } VAR deg:integer; BEGIN deg:=0; x:=1; y:=75; up:=false; down:=true; Repeat if down=true then y:=y+1; if up=true then y:=y-1; asmcopyscreen(seg(virtualrgb^),seg(virtualscreen^)); Xoffset:=12; Yoffset:=y+13; Zoffset:=-450; Draw3dwireuser(254,seg(virtualscreen^)); Xoffset:=308; Yoffset:=y+13; Zoffset:=-450; Draw3dwireuser(254,seg(virtualscreen^)); { Draw3dsoliduser(254,seg(virtualscreen^));} {asmretrace;} putimageuser(48,y,5,seg(virtualscreen^)); if y=150 then begin y:=149; up:=true; down:=false; end; if y=20 then begin y:=21; up:=false; down:=true; end; x:=x+1; OutTextXYuser(25,182,1,'Written By Franz-Josef Ayestaran',seg(virtualscreen^)); { rectangleuser(1,y-1,319,y+27,253,seg(virtualscreen^)); rectangleuser(1,y-2,319,y+28,253,seg(virtualscreen^)); } {asmcopywords(seg(virtualsprites^),seg(virtualscreen^)+$14*y,9600 div 2);} asmcopyscreen(seg(virtualscreen^),seg(mode1addr^)); {asmclsuser(0,64000,seg(virtualscreen^));} if up then shift_palette_one(1,252,false); if down then shift_palette_one(1,252,true); Rotate3dwire(deg,deg,deg); deg:=(deg+5) mod 360; Until keypressed; END; {-------------------------------------------------------------------------} BEGIN getmem(virtualscreen,64000); getmem(virtualrgb,64000); getmem(virtualsprites,64000); Xoffset:=10;{160} Yoffset:=100;{100} Zoffset:=-450;{-100} index:=1; x:=1; asminitgraphics(1); setupvirtualrgb; asmclsuser(0,64000,seg(virtualscreen^)); SetUp3dwire(true); MoveAround; asmclosegraph; freemem(virtualscreen,64000); freemem(virtualrgb,64000); freemem(virtualsprites,64000); END.