DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦064bafda3⟧ TextFile

    Length: 21504 (0x5400)
    Types: TextFile
    Names: »plotman«

Derivation

└─⟦667bb35d6⟧ Bits:30007480 RC8000 Dump tape fra HCØ.
    └─⟦4334b4c0b⟧ 
        └─⟦this⟧ »plotman« 

TextFile

\f





H. C. Ørsted Institute
Computer Department
Universitetsparken 5
DK-2100 København Ø






                     RC8000 algol 8. Procedurer
                Externt algol tegnemaskinestyresystem




                              "plotman"



                           Anders Lindgård
 



















                                               80/1 

                                               januar 1980
                                               revideret 82.02.17



                                               
\f



                   RC8000 tegnemaskinestyresystem                   1

Forord
------
    Denne  lille  vejledning  beskriver,  hvordan  man skriver de ko-
destumper, som er nødvendige for at få  tegnet  formater,  koordinat-
systemer  og  kurver  på  H.C.  Ørsted  Institutets RC8000's digitale
tegnemaskine. Systemet ligger tæt op af det i ref. 1 beskrevne,  hvad
de ydre konventioner angår.
    (c) 1973, 1976, 1978, 1980,1982 Anders Lindgård Det heri beskrev-
ne system må kun anvendes til undervisnings- og forskningsformål, som
udelukkende  er  financieret  af  den danske stat med mindre andet er
aftalt  med  forfatteren.  Denne  vejledning  må  ikke  ændres  eller
mangfoldiggøres uden aftale med forfatteren.
    Systemet  er  under  stadig  udvikling.  Fejl  i  systemet  eller
beskrivelse bedes overgivet forfatteren vedlagt dokumentation.
    Ved kald af programmet "plhotnews" kan man få oplysninger  om  de
seneste ændringer i systemet.
    Denne  vejledning  er  tilgængelig på pladelagret og kan kopieres
fra "plotman". Tegningerne til vejledningen kan tegnes på  "houstona"
ved  at skrive "i pmaneks" på terminalen under SOS (se dog nedenfor).
    Tegnemaskinerne styres fysisk  af  en  terminalmultiplekseren  på
RC8000.


Om tegning
----------
    Tilkoblet RC8000 findes nogle digitale tegnemaskiner, hvortil der
er  udviklet  styreprogrammel,  som  gør dem nemme at anvende i algol
programmer.


Calcomp 563-cm tegnemaskine (for tiden kun på RC4000)
---------------------------
    Denne tromletegnemaskine tegner med kuglepen/tuschpen på et 75 cm
bredt papir, som kan være blankt papir eller milimeterpapir.  Papiret
forefindes  i  ruller  a 36 m. Skridtlængden for tegnemaskinen er 0,1
mm og den maksimale hastighed er 300 skridt/sek = 3  cm/sek.  Hævning
og  sænkning  af  pen tager hver 0.1 sek. Tegnemaskinen har en "local
remote" knap. Tegnemaskinen findes i RC4000 maskinstuen og kan bruges
af alle. Dens navn er "calcm".


Calcomp 81-tegnemaskine
------------------------
    Denne tegnemaskine tegner med filtpen/tuschpen på papir.  Største
format  er  33.8  cm  i  x-aksen og 28 cm i y-aksen. Den har op til 8
penne. Papiret forefindes i ruller a 25 m. Skridtlængden  er  0.1  mm
og  maximal  hastighed  er 30 cm/sec. Denne maskintype forefindes for
tiden ikke på HCØ. Dens navn er 'calcomp81'.


\f




                   RC8000 tegnemaskinestyresystem                   2


Tektronix 4006 grafisk terminal
-------------------------------
    Denne skærm har et areal på 19 cm x 14 cm.  Skrivehastigheden  er
300  cm/sek.  Tegnemaskinen findes i RC4000 maskinstuen og kan bruges
af alle. Dette er  systemets  standard  tegnemaskine.  Dens  navn  er
'tek4006a'. Tegnemaskinen vil automatisk ændre formater således at de
passer bedst muligt til skærmens størrelse.


Houston dp-11 tegnemaskine
--------------------------
    Denne  tegnemaskine  tegner med kuglepen/tuschpen på foldet papir
med maksimal størrelse af en tegning på 25.1cm x 20.1 cm. Skridtlæng-
den kan stilles til 0.02, 0.04, 0.05, 0.1 mm. Normalt er den 0.1  mm.
Den  maksimale  hastighed er ca 10 cm/sek. Hævning og sænkning af pen
tager 10 msek og 60 msek henholdsvis. Tegnemaskinen findes  i  RC4000
maskinstuen og tilhører Kemisk Centralinstitut.


Generelle betragtninger
-----------------------

    Til  betjening  af disse tegnemaskiner fra algolprogrammer er der
udviklet en række standardprocedurer. Systemet er  således  udviklet,
at  uanset  hvilken  tegnemaskine  man  anvender,  får  man  ensartet
udseende  tegninger. Standard procedurerne kaldes fra algolprogrammer
på samme måde som f.eks. sin og cos, d.v.s.  de  skal  ikke  erklæres
af brugeren forinden.

Det  må anbefales at man i videst muligt omfang holder beregninger og
tegning adskilt i programmerne, da man  ellers  ved  mere  langvarige
beregninger optager tegnemaskinen uden at den tegner.

Desuden  er  der  i systemet indbygget grænser for, hvor længe man må
optage tegnemaskinen ad gangen. Denne grænse er  for  tiden  15  min.
Tegn små tegninger på Calcomp tegnemaskinerne. De færreste kurver har
så fine detaljer, at de ikke kan holdes inden for et A5 format.

Et tegneprogram består typisk af følgende trin, der beskrives nærmere
nedenfor:
1)  Valg af tegnemaskine
2)  Reservation  af  tegnemaskine og tegning af format, som definerer
    de begrænsninger, som pennen skal holde sig indenfor
3)  Tegning af tekst til identifikation af tegnemaskine
4)  Tegning af et koordinatsystem
5)  Tegning af en eller flere kurver
6)  Tegning af punkter
\f


                   RC8000 tegnemaskinestyresystem                   3

7)  Frigivelse af tegnemaskine
Hvis man ønsker at udføre  flere  sæt  tegninger  adskilt  af  større
beregninger, bør man absolut frigive tegnemaskinen, når man er færdig
med  det  sæt  tegninger,  der  hører til et format, således at andre
brugere også har en chance for at få noget tegnet.

Tegnemaskinerne kan anvendes under alle operativsystemerne.




1. Valg af tegnemaskine
-----------------------
    For at kunne vælge den rette terminal udgang hvorpå tegnemaskinen
er tilkoblet er det nødvendigt at sætte en fildescriptor således:
<plotname>=set pl <terminal>
<plotname> er navnet på tegnemaskinen f. eks. "tek4006a og <terminal>
er navnet på terminaludgangen f. eks. "terminal20".
    Ved kørsel under operativsystemet "sos" er det yderligere nødven-
digt at inkludere den pågældende enhed. Dette gøres ved:

att sos
>include 54

hvorved "terminal20" inkluderes for en "sos" proces.

    Hvis dette trin udelades, vælger  systemet  automatisk  den  Tek-
tronix 4006 grafiske terminal, som er opstillet i RC4000 maskinstuen.
Valg af tegnemaskien foregår ved kald af proceduren:

     setplotname(name,type)  ;
      name kan være          
      <:calcm:>              ;  calcomp 653-cm tegnemaskine
      <:calcomp81:>          ;  calcomp 81-cm tegnemaskine 

      <:tek4006a:>           ;  tektronix 4006 grafisk skærm (standard)
      <:houstona:>           ;  houston dp11 tegnemaskine


type har kun betydning for "houstona". På "houstona" er type beregnet
til  at vælge skridtlængde. type=0 svarer til 0.1 mm, type=1 til 0.05
mm. Type=4 er som type=1 med automatisk ændring af format således  at
papiret  udnyttes  bedst muligt. Analogt for type 5,6,7 osv. Der skal
være overenstemmelse mellem den skridtlængde som type angiver og  den
der er sat med en kontakt på selve dp11 tegnemaskinen. For skærme har
kun type 0 og 4 mening.



2. Reservation og tegning af format
-----------------------------------
    Dette gøres ved kald af proceduren

\f


                   RC8000 tegnemaskinestyresystem                   4

plotform(type,xsize,ysize);

Hvis  tegnemaskinen  er  ledig,  reserveres  den  ellers udskrives på
hovedkonsollen:

    message <name> wait for <pname>
    message <name> reserved <user>

hvor <user> er navnet på den proces, der har  reserveret  tegnemaski-
nen.  Derefter venter programmet på, at tegnemaskinen bliver ledig og
kan reserveres. <pname> er navnet på den ønskede tegnemaskine. <user>
er navnet på dens egen proces.

Dernæst tegnes et format afhængigt af den  anvendte  tegnemaskine  og
parameteren type.

For houston dp-11 og calcomp-cm tegnemaskinerne gælder:
    type = 0  Der tegnes et format som er xsize cm 
              gange ysize cm.
    type = 1  Der tegnes et standard A-format. Hvis xsize er 1,
              tegnes et A1 format, hvis xsize er 2 tegnes et A2
              format o.s.v. Formatet placeres med den korteste
              side i x-aksens retning.
    type = 2  Der tegnes A-formater, som ved type = 1 blot placeres
              den længste side i x-aksens retning.
Der  er  nu  defineret  et  koordinatsystem  med  nulpunkt i nederste
venstre hjørne og med en  enhed  på  1  cm.  Pennen  befinder  sig  i
nulpunktet med pennen hævet.

Skærmene  slettes  ved  plotform-kaldet,  og  formatet vælges som for
cm-tegnemaskinerne men dog  således,  at  formatet  og  længdeenheden
divideres ned, således at formatet kan være på skærmen. Tegninger vil
være  tro  formindskede kopier af de tilsvarende calcomp- og houston-
tegninger.



3. Tegning af tekst og tal
--------------------------
    
    Det må frarådes at skrive alt for megen tekst  på  tegnemaskinen,
da det er en tidsrøvende proces at tegne bogstaver og andre symboler.
Til udskrivning af tekst og tal anvendes en af de to procedurer

      writeplot(    ...    )
\f


                   RC8000 tegnemaskinestyresystem                   5

      write(plotz,     ...     )

prikkerne står for en eller flere parametre som i et almindeligt kald
write. Anvendes write skal man skrive

      setposition(plotz,0,0);

før  andre  tegnemaskineprocedurer  bliver  kaldt, ellers vil teksten
ikke blive tegnet.
Tegningen  af  bogstaver  og  symboler  sker  fra  pennens  nuværende
position. Da denne efter et kald af plotform er  i  nederste  venstre
hjørne af formatet, er det normalt nødvendigt at flytte den.
For  Calcomp81  tegnemaskinen  kan mange anvende den indbyggede tegn-
generator ved at sætte: plotalpha:=true;
Det valgte alfabet på calcomp81 er det dansk/norske.
Ved at kalde proceduren

      setmargin(x,y);

sættes et marginpunkt x,y cm (tommer) fra formatets nederste  venstre
hjørne.  Ved at skrive et sideskifttegn (tegnværdi 12) flyttes pennen
til marginpunktet. Et  linieskifttegn  (tegnværdi  10)  bevirker,  at
pennen  flyttes  til marginpunktets x-koordinat, medens y-koordinaten
reduceres med linieafstanden, der er 0.70 cm. Bogstavhøjden  er  0.35
cm,  medens  bogstavbredden  er 0.28 cm (også på tomme-tegnemaskinen)
Disse størrelser er gemt  i  3  standardvariable  "linediff",  "plot-
height"  og  "plotsize"  og kan ændres ved at give disse variable nye
værdier.


Eksempel:

         begin
         integer j;
         plotform(0,8,3);
         plotheight:=0,50; plotsize:=0,4;
         linediff:=2*plotheight;
         setmargin(1,2);  j:=4;
         writeplot(<:<12> en tekst med en <10> vognretur :>,j*2);
         plotclose;
         end;


der giver tegningen i figur1





\f


                   RC8000 tegnemaskinestyresystem                   6

4. Tegning af koordinatsystem
-----------------------------
    Til at administrere tegnearealet og tegning af et koordinatsystem
anvendes proceduren

       plotadmini(xmin,xmax,ymin,ymax,type);

Den definerer  et  brugerkoordinatsystem,  således  at  koordinaterne
xmin,xmax,ymin,ymax  ligger  iden  for  formatet  og således, at 1 cm
svarer til et 'pænt' tal; ved et 'pænt' tal  forstås  et  af  tallene
1,  2,  5  gange  et tiereksponent, og således at punktet xmin, ymin,
ligger så tæt som muligt på  punktet  1,1  cm  fra  nederste  venstre
hjørne.  Den tegner et koordinatsystem således at akseskæringspunktet
(ikke nødvendigvis 0,0) ligger  i  venstre  halvdel  og  indenfor  de
nederste  9/10  af  formatet.  Ved  akseskæringspunktet angives dette
punkts koordinater i brugersystemet. Ved hver af  enderne  af  de  to
pile  skrives,  hvor  meget en inddeling er i koordinatsystemet. Hvis
type er 0 tegnes der mærker på  akserne  for  hver  inddeling  ellers
tegnes kun et mærke på hver akse ved akseskræringspunktet.


5. Tegning af kurver
--------------------
    Til kurvetegning findes to procedurer

     plotgraph(x,y,xl,xh,dx);
     plotcurve(x,y,t,tl,th,dt);

plotgraph  tegner  en  kurve  y(x) i intervallet fra xl til xh med en
skridtlængde på dx.
Eksempel:
        plotgraph(x,sin(x),0,2*pi,pi/200);

tegner funktionen sinus af x i intervallet  fra  0  til  2pi  med  en
skridtlængde  på  pi/200.  Plotcurve  tegner en funktion givet ved en
parameterfremstilling x(t), y(t), hvor t varieres i  intervallet  fra
tl til th med en ændring på dt.


Eksempel 1:     plotcurve(x,sin(x),x,0,2*pi,pi/200);
                identisk med eksemplet for plotgraph.

Eksempel 2:     plotcurve(sin(t),cos(t),t,0,2*pi,pi/200);
                tegner enhedescirklen.

Eksempel 3:     plotcurve(x(t),y(t),t,0,200,1.0);
                Tegner en stykvis ret linie gennem punktparrene
                x(t) y(t),  t = 1,2, ..., 200.
                (t skal være en erklæret real variabel.)


dt i plotcurve skal vælges med nogen omhu. Den bør ikke vælges mindre
\f


                   RC8000 tegnemaskinestyresystem                   7

end svarende til et skridt på tegnemaskinen, da man ellers får udført
overflødige  tidsrøvende  beregninger, d.v.s dt bør vælges således at
pennen flyttes mindst et skridt ved en ændring af t på dt.


6. Tegning af punkter
---------------------
    Til dette brug findes proceduren

     plotpoint(x,y,type);

som flytter pennen til punktet x,y.  Hvis  "type"  er  nul  i  kaldet
plotpoint,  flyttes  pennen  blot.  På  skærmen sættes en prik, eller
tegnes et punkt afhængig af type, se figur2. Den  tegnede  figur  vil
ligge  i  en  omskreven cirkel med radius pointsize og centrum i x,y.
Standard værdi for pointsixe er 0.3 cm, og pointsize  ændres  ved  at
give denne variabel en ny værdi.
Eksempel  der  viser  de  15  forskellige  punkttyper udtegnet med et
algolprogram, se figur2.

     begin
         2 integer i;
         3 plotform(0,17,4);
         4 pointsize:=35;
         5 for i:=step 1 until 15 do
         6   begin
         7   plotmove(1+i-plotsize,3);
         8   writeplot(i);
         9   plotpoint(1+i,1,i);
        10   end;
        11   plotclose;
     end
     algol end 68

Hvis type er større end 15, tegnes  flere  figurer  oven  i  hinanden
svarende til følgende algol-sætning:

   for type:=type,type shift(-4) while type<>0 do
      plotpoint(x,y,type extract 4);

plotpoint  ændrer ikke pennens lodrette position. Dette kan gøres ved
at kalde procedurerne "pendown" eller "penup"  som  sænker  og  hæver
pennen henholdsvis.


7. Frigivelse af tegnemaskiner
---------------------------
    På RC8000 vil det desværre indtil videre være nødvendigt explicit
at  frigive  tegnemaskiner  ved  afslutningsvis i tegneprogrammer ved
kald af "plotclose". Hvis et tegneprogram går i fejl og kalder en  af
ALGOLs alarmprocedurer vil der ofte mangle noget af tegningen.


\f




                   RC8000 tegnemaskinestyresystem                   8


Nogle eksempler på tegnemaskineprogrammer:

    begin
    real x;
    plotform(0,8,8);
    setmargin(3,7);
    writeplot(<:<12>sin(x)*exp(-x):>);
    plotadmini(0,2*pi,-0.1.4,0);
    plotgraph(x,sin(x)*exp(-x),0,2*pi,pi/200);
    plotclose;
    end

eller

    begin
    real x;
    plotform(0,8,8);
    setmargin(3,7);
    writeplot(<:12>sin(x)*exp(-x):>);
    plotadmini(0,2*pi,-0.1,0.4,0);
    plotcurve(x,sin(x)*exp(-x),x,0,2*pi,pi/200);
    plotclose;
    end

der begge giver figur3.

    begin
    real t;
    plotform(0,8,8);
    setmargin(1,7);
    writeplot(<:12>unitcircle:>);
    plotadmini(-1.3,1.3,-1.3,0);
    plotcurve(sin(t),cost(t)T,0,2*pi,pi/200);
    plotclose;
    end

der giver figur4.



\f


                   RC8000 tegnemaskinestyresystem                   9

Ref. 1. Ole J. Heilmann and Preben Graae Sørensen
        A set of procedures for administrating the
        plotter in GIER-Algol 4.
        Rapport nr. 1.
        Kemisk Laboratorium III
        H.C. Ørsted Institutet.

Ref. 2. Anders Lindgård, P. Graae Sørensen and J. Oxenbøll
        J. Phys. E 10 264 (1977)

Ref. 3. R. Moss and A. Lindgård
        Comput. & Graphics 4 51 (1979)

\f




                   RC8000 tegnemaskinestyresystem                  10


Appendix 1.
-----------
    Nogle udvalgte algol 8 tegnemaskineprocedurer.



Pennens flytning
----------------
Hvis  man  ønsker  selv  at  gøre  det i stedet for at benytte de før
nævnte procedurer).

Til at ændre pennens position findes 3 procedurer:
     plotmove(x,y);
     penup;
     pendown;

penup og pendown henholdsvis løfter og  sænker  pennen  fra  papiret,
mens plotmove flytter pennen til punktet med brugerkoordinaterne x,y.
Pennen  kan  dog  ikke  flyttes  uden  for formatet. Pennens lodrette
position ændres ikke ved kald af plotmove.
    Pennens position i bruger koordinater gemmes af systemet i de  to
"real" variable "plotxpos" og "plotypos".
    Omsætningsfaktorerne  mellem cm-systemet og brugerkoordinatsyste-
met er givet ved de to  standardvariable  "deltax"  og  "deltay"  som
angiver 1 cm (enhed) i brugerkoordinater.


Underformatadministration
-------------------------
    
Ved kald af proceduren

    plotsubform(xmin,xmax,ymin,ymax,draw);


defineres der et underformat i det af plotform definerende koordinat-
system. Dette underformat vil i alle henseender virke, som om det var
det  oprindelige format for de øvrige tegnemaskine procedurer. (xmin,
ymin) er koordinaterne for nederste venstre hjørne  af  underformatet
i  det  af  plotform fastlagte cm(tomme) koordinatsystem. (xmax,ymax)
koordinaterne for det øverste højre hjørne af  underformatet.Er  draw
true  tegnes  underformatets  grænser. Er draw false tegnes grænserne
ikke. Ved et kald af plotsubform omdefineres et eventuelt brugerkoor-
dinatsystem (fra plotadmini)  til  et  koordinatsystem  med  (0,0)  i
subformatets  nedre  venstre  hjørne  og  med  længdeenheden  1 cm (1
tomme).

\f


                   RC8000 tegnemaskinestyresystem                  11

Eksempler:
    begin
    real x;
    plotform(0,8,8);
    setmargin(2,7);
    writeplot(<:<12>sin(x)*exp(-x):>);
    plotsubform(2,6,2,6,true);
    plotadmini(0,2*pi,-0,1,0.4,0);
    plotcurve(x,sin(x)*exp(-x),x,0,2*pi,pi/200);
    plotclose;
    end

se figur 5

    begin
        2 real t;
        3 plotform(0,8,8);
        4 plotsubform(2,6,1,5,true);
        5 plotadmini(-1.5,1.5,-1.5,1.5,0);
        6 plotcurve(sin(t),cos(t),t,0,2*pi,pi/200);
        7 plotsubform(1,7,6,8,false);
        8 setmargin(1,1);
        9 write(plotz,<:12>unitcircle:>);
       10 setposition(plotz,0,0);
       11 plotclose;
       12 end

se figur 6




Alfabeter
---------
    Standardalfabetet indeholder såvel det latinske alfabet  som  det
græske og desuden nogle specialtegn.
    Skift  mellem  latinsk  og  græsk  alfabet  styres  af tegnene SO
(tegnværdi 14) og SI (tegnværdi 15) hvor SO vælger det græske alfabet
og SI det latinske. I et kald af "writeplot" er tegnsættet  initiali-
seret til det latinske. Tegnsættene er vist på figur 7 og 8.
Eksempel:

    Writeplot (<:greek letters: :>,
     <:<14> a b c d e f g h i k l m
     n o p q r s t w x y z ø <15>:>);


Hvis  man anvender calcomp81 tegnemaskinens indbyggede tegn-generator
kan ikke få græsk alfabet. Til gengæld kan man ved at kalde:

select_char(charset);


vælge mellem ASCII (=0), tysk (=1), spansk  (=2),  svensk/finsk  (=3)
eller dansk/norsk (=4).


Skift af skriveretning
----------------------
    Det  er  muligt  at opnå andre skriveretninger end x-aksen, og få
hældning på bogstaver og tal ved at kalde proceduren:

\f


                   RC8000 tegnemaskinestyresystem                  12

plotsettext(plotsize,plotheight,thetax,thetay,linediff);

hvor "plotsize", "plotheight", "linediff" angiver bredden, højden  af
bogstaver  samt  linieafstand  alt  målt  i  cm. "thetax" og "thetay"
angiver vinkler for  henholdsvis  skriveretning  og  hældning.  Begge
måles  i  radianer  (0,2pi).  "thetax"  måles  fra  x-aksen i positiv
omløbsretning. "thetay" måles fra y-aksen  i  negativ  omløbsretning.
Alle variable ses i forhold til marginpunktet som sat ved
setmargin (x_cm, y_cm);
Se figur 9.
For  calcomp81  gælder  det  specielle  ved  brug  af  den indbyggede
tegn-generator at kun basis-linien kan ændres ved kald af plotsettext
og desuden at det er uden effekt blot  at  ændre  standardvariablene.



Kønne bogstaver
---------------
    Som  standard  tegnes  bogstaver og tal med rette linier givet på
et 5 x 8 gitter. Ved at sætte standardvariablen "plotspline" således:

     plotspline:=true;

opnås at alle bogstaver herefter tegnes optimalt runde  ved  brug  af
splines.  Algoritmen  er ret regnetidskrævende og medfører en hel del
transporter fra baggrundslageret, hvorfor den kun anbefales til  brug
ved publikationstegninger.


Enheder
-------

    Standardenheden  i  systemet er givet ved variablen "plotunit" og
er for calcomp tegnemaskinerne 100 skridt svarende til 1  cm.  Ændres
"plotunit"  umiddelbart  før  et kald af plotform vil man opnå at den
efterfølgende tegning bliver forstørret/formindsket.
"plotunit" bør aldrig ændres andre steder.


Buffering
---------

    Systemet opsamler normalt  vektorer  i  en  for  brugerprogrammet
usynlig  buffer. Nar denne er fuld overføres bufferen til tegnemaski-
nen og vektorerne tegnes.
    Man kan i programmet synkronisere programafvikling og tegning ved
et kald af proceduren  "plotend".  Denne  sender  bufferen  over  til
tegnemaskinen  og  venter  på at disse vektorer bliver tegnet færdig.

\f

▶EOF◀