|
|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 3328 (0xd00)
Types: TextFile
Names: »MENU.PAS«
└─⟦1d9c0f429⟧ Bits:30005384 COMAL-80 med små spil (opstartsdiskette)
└─⟦this⟧ »MENU.PAS«
PROGRAM menuvalg;
CONST
ESC = 27;
return = $0D;
op = $0B;
ned = $0A;
pil_on = '=->';
pil_off = ' ';
nul = 0;
VAR
quit : boolean;
valg,tast :byte;
tabulering,pegepind,slet,antal,liniestart, linie_slut, linie : integer;
(*----------------------------------------------------*)
PROCEDURE a;
BEGIN
GOTOXY(tabulering,liniestart -4);
WRITELN('***** rutine A *****')
END;
(*----------------------------------------------------*)
PROCEDURE b;
BEGIN
GOTOXY(tabulering,liniestart -4);
WRITELN('***** rutine B *****')
END;
(*----------------------------------------------------*)
PROCEDURE c;
BEGIN
GOTOXY(tabulering,liniestart -4);
WRITELN('***** rutine C *****')
END;
(*----------------------------------------------------*)
PROCEDURE d;
BEGIN
GOTOXY(tabulering,liniestart -4);
WRITELN('***** rutine D *****');
quit := true;
END;
(*----------------------------------------------------*)
PROCEDURE ny_pegepind;
BEGIN
gotoxy(tabulering-4,slet);
WRITE(pil_off);
gotoxy(tabulering-4,pegepind);
WRITE(pil_on);
gotoxy(tabulering-2,pegepind);
END;
(*----------------------------------------------------*)
PROCEDURE menutekst;
BEGIN
gotoxy (tabulering,liniestart);
WRITELN ('tekst 1 ');
gotoxy (tabulering,liniestart + 1);
WRITELN ('tekst 2 ');
gotoxy (tabulering,liniestart + 2);
WRITELN ('tekst 3 ');
gotoxy (tabulering,liniestart + 3);
WRITELN ('tekst 4 QUIT af program ');
END;
(*----------------------------------------------------*)
PROCEDURE initiering;
BEGIN
tabulering := 12;
liniestart := 12;
pegepind := liniestart;
antal := 4;
antal:=antal-1;
tast:=nul;
linie_slut:=liniestart + antal;
END;
(*----------------------------------------------------*)
PROCEDURE get(VAR tast:byte);
BEGIN
PORT(.$F6.):=0;
tast := 0;
REPEAT
tast := PORT(.$F6.) AND $7F;
UNTIL tast <> 0;
END;
(*----------------------------------------------------*)
BEGIN
GOTOXY (0,0);
CLREOS;
quit := false;
REPEAT
initiering;
menutekst;
ny_pegepind;
WHILE NOT(tast = return) DO
BEGIN
GET(tast);
IF tast = op
THEN BEGIN
slet := pegepind;
IF pegepind = liniestart
THEN BEGIN
pegepind := linie_slut;
END
ELSE BEGIN
pegepind := pegepind - 1;
END;
END
ELSE BEGIN
IF tast = ned
THEN BEGIN
slet:=pegepind;
IF pegepind = linie_slut
THEN BEGIN
pegepind:=liniestart;
END
ELSE BEGIN
pegepind:=pegepind + 1;
END;
END;
END;
ny_pegepind;
END;(*while*)
gotoxy(tabulering-4,pegepind);
WRITE(pil_off);
valg := pegepind - liniestart+1;
CASE valg OF
1: a;
2: b;
3: c;
4: d;
OTHERWISE;
END;
UNTIL quit;
GOTOXY (0,0);
CLREOS;
WRITELN ('program afsluttet');
END.
«eof»