DataMuseum.dk

Presents historical artifacts from the history of:

CP/M

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

See our Wiki for more about CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦874a4dc57⟧ TextFile

    Length: 10624 (0x2980)
    Types: TextFile
    Names: »GRAFIKB.TXT«

Derivation

└─⟦0d02879d3⟧ Bits:30004605 COMPAS Pascal version 3.03
    └─ ⟦this⟧ »GRAFIKB.TXT« 

TextFile


Et par generelle bemærkninger:
GRAFIKB hentes ind som extension. GRAFIKB skal på et senere tidspunkt lægges
i ROM, (den fylder temmelig kraftig). Ved GRAFIKB i ROM hentes en mindre
extension ind, der simpelthen kalder rutinerne i ROMMEN. Disse kald kan også
ske fra andre programmeringssprog, samt på et senere tidspunkt via GSX.
Rutinerne i GRAFIKB inkluderer rutinerne fra RC PICCOLINE, men er ikke
begrænset til disse. 

Programmer save't under GRAFIKA skal hentes ind i COMAL-80 med GRAFIKA
indlæst, og dernæst list'es de ned på disketten. COMAL-80 startes nu op med
GRAFIKB, enter'es ind, og save's på disketten. Husk NEW hvis der er flere 
programmer der skal overspilles.

Programmer skrevet både med og uden GRAFIK, som må distribueres frit
modtages meget gerne hos BOGIKA (Jan eller Holger), og hos Butler
brugergruppen. Det må gerne fremgå klart om programmerne må:
1: distribueres frit.
2: distribueres til konsulenterne.
3: ikke distribueres. 
       
Denne GRAFIKB udsendes til alle konsulenter, men må IKKE uddeles videre.

Hastighedsforskelle i grafikprogrammer mellem forskellige fabrikater af
maskiner vil vi gerne høre om.

Kommentarer, fejl, rettelser osv angående nedenstående 'manual', kontakt
BOGIKA v/ Jan eller Holger.

    


Grafikordrer i GRAFIKB.

Som en cursor på en almindelig skærm, findes der i grafik også en cursor,
blot er denne pixelcursor ikke synlig. Ved opstart i grafik er positionen
sat til punktet med værdien (0,0). Flere af grafikordrerne påvirker
(flytter) denne pixelcursor. Ligeledes vil nogle af ESC-sekvenserne
der findes i Butleren påvirke pixelcursoren. Eks 'ESC :', 'ESC +', 'ESC -'.

  

1. Grafikordrerne der er fælles med RC.

*----------------------------*

CIRCLE radius, buestart, bue

radius:            positivt numerisk udtryk.
buestart, bue:     numerisk udtryk angivet i radianer.
 
          -oOo-                  
Omregning fra grader til radianer:

1: GRAD*4*ATN(1)/180   >> PI=4*ATN(1) <<
2: GRAD*PI()/180

Eksempel:

0010 CLEAR 
0020 FOR GRAD:=0 TO 360 DO 
0030   RADIAN:=GRAD*PI()/180 //eller GRAD*4*ATN(1)/180
0040   PLOT COS(RADIAN)*100+110, SIN(RADIAN)*50+60
0050 NEXT GRAD
          -oOo-


Kommandoen bruges til at tegne elipser eller dele af elipser, alt efter
størelsen af bue. Denne størelse vil normalt ligge mellem -2 pi og 2 pi.
Start af elipsen vil finde sted fra det punkt, der er angivet af buestart.
Punktet udtrykkes i radianer. Pixelcursoren vil antage værdien i
slutpunktet.
  
Eksempel:

0010  GRAFIK
0020  MOVETO 100,100
0030  CIRCLE 40,0,2*PI

Denne programstump vil tegne en hel elipse, startende i vinkel 0, drejende
mod uret rundt til 0 igen.

0030  CIRCLE 40,PI,-PI

Vil tegne en elipse, startende i 180 grader (1 PI), drejende med uret rundt
til 0 igen. (En halv cirkel).

*----------------------*

CLEAR 

Virker som normalt.

*----------------------*

CLOSE GRAPHICS

Virker ikke, da den ikke er nødvendig. Butleren er altid i grafik- 
og tekst-mode, samtidigt.

*----------------------*

OPEN GRAPHICS

'Erstattes' af ordren GRAFIK.

*----------------------*

GPARM (udtryk)

udtryk: kan antage værdien fra 0 til 5

Returnerer information om parametrene der er sat.

Eksempler:

GPARM(0)     angiver aktuel x-koordinat
GPARM(1)     angiver aktuel y-koordinat
GPARM(2)     angiver aktuel vindues nedre x-grænse
GPARM(3)     angiver aktuel vindues øvre x-grænse
GPARM(4)     angiver aktuel vindues nedre y-grænse
GPARM(5)     angiver aktuel vindues øvre y-grænse

GPARM(101)-GPARM(145) fra RC kendes ikke da de på RC indeholder værdien af
parametre fra GSX.  

*----------------------*

DRAW x-koordinat,y-koordinat

x-koordinat, y-koordinat:   numeriske udtryk

Tegner en ret linie fra pixelcursoren i (x,y), til punktet
(x+xkoordinat, y+ykoordinat). Pixelcursoren vil antage værdien
(x+xkoordinat, y+ykoordinat)

Eksempel:

0010  MOVETO 10,10
0020  DRAW 100,50

Vil tegne en ret linie fra (10,10) til (110,60).

*------------------------*

MOVE xkoordinat, ykoordinat

xkoordinat, ykoordinat:    numeriske udtryk

Flytter pixelcursoren fra (x,y) til (x+xkoordinat, y+ykoordinat).


Eksempel:

0010  MOVETO 10,10
0020  MOVE 50,60

Vil flytte pixelcursoren fra (10,10) til (60,70).

*--------------------------*

DRAWTO xkoordinat,ykoordinat

xkoordinat,ykoordinat:   numeriske udtryk

Vil tegne en ret linie fra pixelcursoren i (x,y) til
(xkoordinat,ykoordinat). Samtidig vil pixelcursoren antage
værdien af (xkoordinat,ykoordinat).

Eksempel:

0010  MOVETO 10,10
0020  DRAWTO 100,100

Vil tegne en ret linie fra (10,10) til (100,100).

*--------------------------*

MOVETO xkoordinat,ykoordinat

xkoordinat, ykoordinat:  numeriske udtryk

Vil flytte pixelcursoren fra (x,y) til (xkoordinat,ykoordinat).

Eksempel:

0010  GRAFIK
0020  MOVETO 10,10

Flytter pixelcursoren fra (0,0) som er sat i ordren GRAFIK, til punktet
(10,10).

*--------------------------*

PENCOLOR udtryk

udtryk: kan antage værdierne -1,0,1

Vil sætte hvilken 'farve' der skal tegnes med. 
 0 sætter 'farven' lig med baggrundsfarven. (Vil reelt slukke de berørte
   punkter, hvis de er sat).
 1 sætter 'farven' lig med forgrundsfarven.
-1 vil invertere punkterne, (hvis punktet der skal sættes er sat, vil det
   blive slukket, og hvis det ikke er sat, vil det blive tændt.
 
-1 findes ikke på RC-maskiner.

Eksempel:

0010  GRAFIK
0020  ..  skærmen fyldes op af et eller andet.
0030  PENCOLOR -1
0040  FOR Y:=0 TO 239
0050    MOVETO 0,Y
0060    DRAWTO 639,Y
0070  NEXT Y
  
Programstumpen 30-70 vil invertere hele skærmen. Køres stumpen igen vil
skærmen inverteres endnu engang, og komme tilbage til sit oprindelige 
udseende.

*--------------------------------------*

TEXT str$

Str$:  en tekststreng

Vil starte med at skrive teksten fra pixelcursoren og fremad. Teksten
vil blive skrevet i proportional mode. Ordren vil svare til ESC-sekvensen
'ESC :' med pixelcursoren koordinater som parametrene. Endvidere
svarer det til at 'ESC P', proportionalskrift er sat. Ellers ville
startpunktet ikke altid svare 100% overens med pixelcursorens. En nøjere
beskrivelse af forskellen i pixeladressering med eller uden
proportionalskrift kan findes i Butler manualen.
Pixelcursorens koordinater vil ikke blive ændret.
Ordren vil ikke give 100% samme resultat på en RC, på grund af proportional/
ikke proportionalskrift, samt et forskelligt karaktersæt.
 
Eksempel:

0010  MOVETO 100,100
0020  TEXT "ABC"

vil svare til

0010  PRINT ""27"P",
0020  PRINT ""27":",""0"",""100"",""0"",""100"","ABC"
0030  PRINT ""27"p",

*-----------------------------*

WINDOW startx, slutx, starty, sluty

startx, slutx, starty, sluty:  numeriske udtryk, kan være de største tal der
                               kan dannes i den 7 cifrede comal-version.

Skærmen vil blive logisk opløst i antallet af punkter angivet i parametrene
men vil fysisk blive tegnet i skærmens opløsning på 640,240.
Skærmen vil blive opfattet som værende lige så bred som høj, samt
pixelafstanden værende ens på begge leder.
Det vil sige hvis man åbner skærmen med WINDOW 0,639,0,239  vil en circle
ordre producere en elipse.
Hvis skærmen bliver åbnet med WINDOW 0,1000,0,1000 vil en circle ordre tegne
en cirkel, alt efter skærmens indstilling.

Eksempel:

0010  WINDOW 0,639,0,239

Vil give en 'normal' skærm hvor hvert punkt vil stemme overens fysisk som
logisk. (Pas på CIRCLE og CIRKEL ordrene).

0010  WINDOW -1000,1000,500,1000

Vil åbne skærmen med x-aksen fra -1000 til 1000, og y-aksen fra
500 til 1000. Koordinaterne angivet med grafikordrerne vil blive omregnet 
til et forhold hvor x-aksens -1000 vil svare til fysisk 0, 1000 til fysisk
639 osv.

0010 GRAFIK 
0020 MOVETO 0, 0
0030 DRAWTO 639, 0
0040 WINDOW -1000, 1000, -1000, 1000
0050 FOR T:=1 TO 500 DO 
0060 NEXT T
0070 PENCOLOR 0
0080 MOVETO -1000, -1000
0090 DRAWTO 1000, -1000

Programmet ovenfor vil først producere en linie i en opløsning, dernæst
slette samme linie men i en anden opløsning.

*-----------------------------------*

Ordrer som findes i GRAFIKB, udover GSX-ordrene på RC.

*----------------------------------*

PLOT x,y

x,y:  numerisk udtryk

Vil sætte punktet x,y til at være tændt.

Eksempel:

0010  PLOT 10,10

Vil sætte punktet med koordinaterne 10,10 til at være tændt.
Ordren vil ikke påvirke værdien af pixelcursoren.
Vil ikke være påvirket af værdien af pencolor.

*-----------------------------------*
 
UNPLOT x,y

x,y:  numeriske udtryk

Vil sætte punktet x,y til at være slukket.

Eksempel:

0010  UNPLOT 10,10

Vil slukke punktet med koordinatsættet 10,10 til at være slukket.
Vil ikke påvirke værdien af pixelcursoren.
Vil ikke være påvirket af værdien af pencolor.


*-----------------------------------*

PENCOLOR -1

Er nævnt ovenfor.

*-----------------------------------*

SETMASK udtr

Udtr:  kan være et heltal mellem 0 og 255

Sætter linierne svarende til bitmønsteret i udtr.

Eksempel:

SETMASK 17

Vil tegne linierne med mønsteret 00010001. Det vil sige at kun hvert 4.
punkt i en linie vil blive tændt.

*-------------------------------------*

CIRKEL x,y,r

x,y,r:  numeriske udtryk

Vil tegne en cirkel med centrum i punktet (x,y) og med radius r.
Pixelcursoren vil antage værdien af punktet (x,y).

Eksempel:

CIRKEL 100,100,40

Vil tegne en cirkel med centrum i 100,100 og med radius 40.

*-------------------------------------*

TEXT str$

Er forklaret ovenfor.

*-------------------------------------*

GRAFIK

Vil erstatte ordresættet:

CLEAR
WINDOW 0,639,0,239
PENCOLOR 1
SETMASK 255
MOVETO 0,0

*------------------------------------*

Endvidere findes konstanten PI() i GRAFIKB.
Kan skrives som PI men vil under list af programmet laves om til PI().

*--------------------------------------*

Første gang en grafikordre kaldes vil ordren GRAFIK blive udført.
Det vil bla.a. medføre at skærmen slettes. Har GRAFIK først en gang været
udført vil det ikke ske igen før man selv kalder den.

*--------------------------------------*

Alle ordrer kan som variable acceptere heltal og reelle tal, men vil hvis
det er et reelt tal afrunde det til et heltal. En undtagelse er der fra
reglen; nemlig PENCOLOR, her skal værdien være et heltal men værdien må
gerne ligge i en reel variabel. (Ordren afrunder ikke selv).

*-------------------------------------*   «eof»