|
|
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: 3840 (0xf00)
Types: TextFile
Names: »SKRIVGR.PAS«
└─⟦6cf793dfc⟧ Bits:30003506 JET80 Grafik og fontprogrammering
└─⟦this⟧ »SKRIVGR.PAS«
PROGRAM skrivgr_rnt;
CONST rnt_ant = 16;
TYPE str8 = String(.8.);
VAR error : Boolean;
t : Char;
fil : Array(.1..rnt_ant.) OF String(.8.);
br,ho,fnr,i : Byte;
x,y : Integer;
(*$I minigr *)
PROCEDURE init;
BEGIN
fil(.1.):='ASCII12';
fil(.2.):='CIRCUS24';
fil(.3.):='COPR18';
fil(.4.):='COPR24';
fil(.5.):='FEANOR18';
fil(.6.):='GOTH18';
fil(.7.):='GOTH24';
fil(.8.):='GOTHB18';
fil(.9.):='GOTHB24';
fil(.10.):='ITALIC18';
fil(.11.):='ITALIC24';
fil(.12.):='PUNC18';
fil(.13.):='PUNC24';
fil(.14.):='ROMAN18';
fil(.15.):='ROMAN24';
fil(.16.):='SROMAN24';
END;
PROCEDURE skriv(tkn:Char;dot_size:Byte;rontfil:str8;VAR odef:Boolean;
VAR matb,math:Byte);
TYPE rnt_typ = (init,norm);
tkn_rec = RECORD
CASE rnt_typ OF
init : (init:RECORD
height,intra_chr,
intra_ln : Byte;
END;);
norm : (norm: RECORD
aktiv : Boolean;
bredd : Byte;
rad : Array(.1..3,
1..50.) OF Byte;
END;);
END;
VAR h,pek,ant,kom,i,hght,
inch,inln : Byte;
rntfil : File OF tkn_rec;
rnt_rec : tkn_rec;
BEGIN
Assign(rntfil,rontfil+'.RNT');
Reset(rntfil);
Read(rntfil,rnt_rec);
hght:=rnt_rec.init.height;
inch:=rnt_rec.init.intra_chr;
inln:=rnt_rec.init.intra_ln;
IF (Ord(tkn)-31)<FileSize(rntfil) THEN
BEGIN
Seek(rntfil,(Ord(tkn)-31));
Read(rntfil,rnt_rec);
WITH rnt_rec.norm DO
IF aktiv THEN
BEGIN
odef:=False;
FOR pek:=1 TO bredd DO
Write(#37,Chr(rad(.1,pek.)),Chr(rad(.2,pek.)),
#$C0,#0,#$D0,#$0F,#37,Chr(rad(.3,pek.)),#0,
#$C0,#0,#$D0,#$08,#$C9,#$17);
Write(#37,#$FF,#$FF,#$C8,Chr(inch SHL 4));
matb:=bredd+inch;
math:=hght*6+inln;
END
ELSE
odef:=True;
END
ELSE
odef:=True;
END;
BEGIN
init;
REPEAT
ClrScr;
Writeln(' Dessa fonter finns : ',#10);
FOR fnr:=1 TO rnt_ant DO
Writeln(' ',fnr:2,' - ',fil(.fnr.));
Write(#10,' Ge ett nr (0 før att sluta) - ');
REPEAT
Read(fnr);
UNTIL (fnr>=0) AND (fnr<=rnt_ant);
ClrScr;
IF fnr<>0 THEN
BEGIN
cl_graf;
x:=50;
y:=399;
GotoXY(60,23);
Write('Tryck något !');
GotoXY(60,24);
Write('(Space bryter)');
enter_graphics;
abs_move(50,399,False);
REPEAT
Read(KBD,t);
IF t IN (.#33..'ü'.) THEN
BEGIN
skriv(t,1,fil(.fnr.),error,br,ho);
IF error THEN Write(#7,#27,#81);
x:=x+br;
IF x>580 THEN
BEGIN
x:=50;
y:=y-ho;
IF y<30 THEN
BEGIN
y:=0;
cl_graf;
END;
abs_move(x,y,False);
END;
END;
UNTIL t=#32;
cl_graf;
END;
UNTIL fnr=0;
END.
«eof»