unit windows; interface uses crt,dos; procedure box(linetype,TLX,TLY,BRX,BRY:integer); procedure setwindow(WindNum,TLX,TLY,BRX,BRY,TColr,BColr,BoxType:integer); procedure removewindow(windno:integer); procedure color(FG,BG:integer); implementation var scrn:array[1..1,0..4003] of byte; procedure color(FG,BG:integer); begin textColor(FG); textBackground(BG); end; procedure box(linetype,TLX,TLY,BRX,BRY:integer); var i,j:integer; TL,TR,BL,BR,HLine,VLine:char; Begin window(1,1,80,25); case linetype of 1:begin TL := #218; TR := #191; BL := #192; BR := #217; VLine := #179; HLine := #196; end; 2:begin TL := #201; TR := #187; BL := #200; BR := #188; VLine := #186; HLine := #205; end; 3:begin TL := #176; TR := #176; BL := #176; BR := #176; VLine := #176; HLine := #176; end; 4:begin TL := #177; TR := #177; BL := #177; BR := #177; VLine := #177; HLine := #177; end; 5:begin TL := #178; TR := #178; BL := #178; BR := #178; VLine := #178; HLine := #178; end; 6:begin TL := #219; TR := #219; BL := #219; BR := #219; VLine := #219; HLine := #219; end; else begin TL := #32; TR := #32; BL := #32; BR := #32; VLine := #32; HLine := #32; end; end; gotoxy(TLX,TLY); write(TL); gotoxy(BRX,TLY); write(TR); gotoxy(TLX,BRY); write(BL); gotoxy(BRX,BRY); write(BR); for i:=TLX+1 to BRX-1 do begin gotoxy(i,TLY); write(HLine); end; for i:=TLX+1 to BRX-1 do begin gotoxy(i,BRY); write(HLine); end; for i:=TLY+1 to BRY-1 do begin gotoxy(TLX,i); write(VLine); end; for i:=TLY+1 to BRY-1 do begin gotoxy(BRX,I); write(VLine); end; if linetype>0 then window(TLX+1,TLY+1,BRX-1,BRY-1) else window(TLX,TLY,BRX,BRY); end; procedure setwindow(WindNum,TLX,TLY,BRX,BRY,TColr,BColr,BoxType: integer); var i:integer; procedure savescreen(WindNo,TLX,TLY,BRX,BRY:integer); var x,y,i:integer; begin {rcg11172000 sux} { scrn[windno,4000]:=TLX; scrn[windno,4001]:=TLY; scrn[windno,4002]:=BRX; scrn[windno,4003]:=BRY; i:=0; for y:=TLY to BRY do for x:=TLX to BRX do begin scrn[WindNo,i]:=mem[$B800:(160*(y-1)+2*(x-1))]; scrn[WindNo,i+1]:=mem[$B800:(160*(y-1)+2*(x-1))+1]; i:=i+2; end; } writeln('STUB: windows.pas; savescreen()...'); end; begin savescreen(WindNum,TLX,TLY,BRX,BRY); { save under window } window(TLX,TLY,BRX,BRY); { set window size } color(TColr,BColr); { set window colors } clrScr; { clear window for action } box(BoxType,TLX,TLY,BRX,BRY); { Set the border } end; procedure removewindow(windno:integer); var TLX,TLY,BRX,BRY,x,y,i:integer; begin window(1,1,80,25); { set back to full screen } color(14,0); {rcg11172000 sux} { TLX:=scrn[windno,4000]; TLY:=scrn[windno,4001]; BRX:=scrn[windno,4002]; BRY:=scrn[windno,4003]; i:=0; for y:=TLY to BRY do for x:=TLX to BRX do begin mem[$B800:(160*(y-1)+2*(x-1))]:=scrn[windno,i]; mem[$B800:(160*(y-1)+2*(x-1))+1]:=scrn[windno,i+1]; i:=i+2; end; } writeln('STUB: windows.pas; removewindow()...'); end; end.