PROGRAM WINDOWS(INPUT,OUTPUT); (* WINDOWS IN PASCAL 2.0 *) (* 12.10.1986 F.MATTHES *) CONST CLEARWINDOW = #19 #19; (* HOME HOME *) REVERSON = #18; INSLINE = #27 'I'; (* ESC I *) DELLINE = #27 'D'; (* ESC D *) CLREOLN = #27 'Q'; (* ESC Q *) BLACK = 1; (* FARCODES *) WHITE = 2; PURPLE = 5; GREEN = 6; VAR I, FENSTER, ZEILE: INTEGER; BREITE, BREITE2 : INTEGER; PROCEDURE SELECTWINDOW(W: INTEGER); (* FENSTER W AKTIVIEREN *) BEGIN WINDOW(W*BREITE2+ 1, 3, (* LINKE OBERE ECKE *) W*BREITE2+ 9,20); (* RECHTE UNTERE ECKE *) COLOR(5,W+2); END; (* SELECTWINDOW *) PROCEDURE WRITETITLE(C: INTEGER; S: STRING); (* DRUCKE ZENTRIERT UEBERSCHRIFT S IN FARBE C *) BEGIN (* UMSCHALTUNG AUF GANZEN BILDSCHIRM, ZEILE LOESCHEN *) WRITE(CLEARWINDOW, CLREOLN); COLOR(5,C); DISPLAY(1, (BREITE - LENGTH(S)) DIV 2, 0, S, 1) END; (* WRITETITLE *) BEGIN SCNCLR; (* BILDSCHIRM LOESCHEN *) BREITE:= RWINDOW(2); (* 40 ODER 80 ZEICHEN BREIT *) BREITE2:= BREITE DIV 4; (* BREITE EINES WINDOWS *) COLOR(0,BLACK); COLOR(6,BLACK); (* HINTERGRUND SCHWARZ *) WRITETITLE(WHITE,'WINDOW-DEMO FUER PASCAL'); DISPLAY(1,0,23,''); FOR I:= 1 TO BREITE DO WRITE("À"); FOR FENSTER:= 0 TO 3 DO BEGIN SELECTWINDOW(FENSTER); WRITELN(REVERSON, '---', FENSTER:2,'---'); FOR ZEILE:= 1 TO 16 DO WRITELN('ZEILE:', ZEILE:2); END; REPEAT UNTIL KEYPRESSED; WRITETITLE(GREEN, 'JETZT AUFWAERTS BLAETTERN'); FOR ZEILE:= 1 TO 16 DO FOR FENSTER:= 0 TO 1 DO BEGIN SELECTWINDOW(FENSTER * 2); WRITELN(INSLINE,'========'); END; REPEAT UNTIL KEYPRESSED; WRITETITLE(PURPLE, 'JETZT ABWAERTS BLAETTERN'); FOR ZEILE:= 1 TO 16 DO FOR FENSTER:= 0 TO 1 DO BEGIN SELECTWINDOW(FENSTER * 2 + 1); WRITE(DELLINE); END; WRITE(CLEARWINDOW); (* SCHALTE AUF GANZEN BILDSCHIRM *) END.