home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1989 / 12 / praxis / graphx.con < prev    next >
Encoding:
Text File  |  1989-09-14  |  3.1 KB  |  88 lines

  1.  
  2. Cornelis van der Laan
  3.  
  4.  
  5.   - ASMGRAPH.DEF        Definitionsmodul zu ASMGRAPH.ASM
  6.   - ASMGRAPH.ASM        Assemblermodul für Topspeed Modula-2
  7.                         Bietet 16 Farben auf dem Schneider PC und
  8.                         einen Line-Algorithmus, der auch von anderen
  9.                         Graphikkarten benutzt werden kann.
  10.  
  11.  
  12.   Da bei Topspeed Modula-2 der Modul GRAPH die Graphikmöglichkeiten
  13.   des Schneider PC 1512 nicht unterstützt, ja sogar nicht einmal den
  14.   640 x 200 Hires-Mode der CGA-Karte, habe ich kurzerhand ein
  15.   entsprechendes Modul in Assembler kodiert, das die entsprechenden
  16.   Prozeduren zur Verfügung stellt.
  17.  
  18.   Da Modula-2 durch die Modularisierung hervorragend geeignet ist,
  19.   auch Module von anderen Sprachen zu benutzen (sofern sie sich an
  20.   die Aufrufkonventionen halten), bereitete die Einbindung des
  21.   Assemblermoduls keine größeren Schwierigkeiten.
  22.  
  23.   Ein Codesegment bekommt in Topspeed den Namen 'C_Modulname', wird
  24.   in die Gruppe 'G_Modulname' gesteckt, und exportiert die Prozeduren
  25.   als 'Modulname$Prozedurname'. Das Datensegment heißt 'D_Modulname',
  26.   liegt in der Gruppe 'MDATA' und die Variablen heißen
  27.   'Modulname@Variablenname'. Die gleiche Konvention gilt, wenn externe
  28.   Variablen aus anderen Modulen importiert werden sollen.
  29.   Eventueller Initialisierungscode steht in der speziellen Gruppe 'G_CODE'
  30.   und das Segment dazu heißt schlicht 'INITCODE'. Dieses Segment muß den
  31.   Code über das öffentliche Label 'Modulname@' zur Verfügung stellen (nicht
  32.   als Prozedur).
  33.  
  34.   Die Einbindung eines fremden Moduls erfolgt über ein entsprechendes
  35.   Definitionsmodul, das die im Modul exportierten Prozeduren und
  36.   Variablen deklariert.
  37.  
  38.   Nachdem das Assemblermodul also mit
  39.  
  40.          MASM ASMGRAPH /ml;
  41.  
  42.   assembliert wurde, können die Prozeduren wie gewohnt importiert werden.
  43.   (Die Option ist dabei wichtig, da sonst alle Symbole ohne Rücksicht auf
  44.   Wünsche des Programmierers in Großbuchstaben umgewandelt werden !)
  45.   Der Linker besorgt dann den Rest.
  46.  
  47. Der Einbau der Erweiterungen geht wie
  48. folgt:
  49. In das Definitionsmodel von GRAPH wird
  50. hinter
  51. PROCEDURE InitATT;
  52. die neue Initialisierungsroutine
  53. eingatragen:
  54. PROCEDURE Init1512;
  55. Hinter HLine : HLineProc ;
  56. wird die neue Prozedur Clear
  57. geschrieben: Clear : PROC ;
  58.  
  59. zwei Prozedurköpfe werden hinter der
  60. PROCEDURE ATTHLine angefügt:
  61.  
  62. PROCEDURE MyHLine(x, y, x2 :
  63. CARDINAL; color : CARDINAL);
  64.  
  65. PROCEDURE Line1512(x1,y1,x2,y2,color :
  66. CARDINAL);
  67.  
  68. Im Implementationsteil müssen die
  69. Assemblerroutinen importiert werden:
  70.  
  71. FROM ASMGraph IMPORT ASMHiRes,
  72.    ASMText, ASMPlot, ASMPoint,
  73.    ASMLine;
  74.  
  75. Zum Schluß müssen Sie noch den
  76. Amstrad-spezifischen Kram aus Listing
  77. 2 hinter den
  78. ATT-Routinen und vor dem
  79. Geräteunabhängigen Teil einfügen und
  80. im Initialisierungsteil des
  81. Grafikmoduls Init1512 aufrufen
  82. (standardmäßig ist ja CGA
  83. eingestellt).
  84.  
  85.   Als kleines Demo bietet sich das Programm 'Pulsierende Kristalle' von
  86.   Matthias Uphoff aus der TOOLBOX 9'89 S. 40 oder das Beispielprogamm Nr. 6,
  87.   das zum Topspeed Compiler mitgeliefert wird, an.
  88.