home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 623a.lha / TurboDEX / ExampleSources / vector.dex < prev    next >
Text File  |  1992-03-22  |  3KB  |  113 lines

  1. ' vectordemo
  2.  
  3. PROC init()
  4.   DEF screenx=400:INT, screeny=320:INT, maxframe=49:INT, maxline=26:INT
  5.   DEF coordinates=10400:ARRAY, screenadr1:LONG, screenadr2:LONG
  6.   DEF rast1:LONG, rast2:LONG, out:LONG
  7.   VOID makedata()
  8.   VOID view(90,13)
  9.   screenadr1 := screen(screenx,screeny,2,0,' ')
  10.   rast1 := screenadr1+84
  11.   VOID setcolours(screenadr1)
  12.   screenadr2 := screen(screenx,screeny,2,0,' ')
  13.   rast2 := screenadr2+84
  14.   VOID setcolours(screenadr2)
  15. ENDPROC screenadr1*screenadr2
  16.  
  17. PROC main()
  18.   DEF frame:INT, line:REGINT, actual=0:LONG, rast:LONG, screen:LONG
  19.   DEF x:REGINT, y:REGINT, colour:REGLONG, frameoffset:REGLONG
  20.   DEF lineoffset:REGLONG, suxxes:LONG
  21.   suxxes := init()
  22.   IF suxxes=0
  23.     WRITE 'Could not open screens!\n'
  24.   ELSE
  25.     MOUSE
  26.       FOR frame,maxframe,0,-1
  27.         rast := rast1
  28.         screen := screenadr1
  29.         IF actual=1
  30.           rast := rast2
  31.           screen := screenadr2
  32.         ENDIF
  33.         VOID SetRast(rast,0) 
  34.         colour := 1
  35.         frameoffset := maxline*frame*8+coordinates
  36.         DOWN line,maxline
  37.           lineoffset := line*8+frameoffset
  38.           VOID SetAPen(rast,colour)
  39.           x := MINT(lineoffset)
  40.           y := MINT(lineoffset+2)
  41.           VOID Move(rast,x,y)
  42.           x := MINT(lineoffset+4)
  43.           y := MINT(lineoffset+6)
  44.           VOID Draw(rast,x,y)
  45.           INC 1,colour
  46.           IF colour>3
  47.             colour := 1
  48.           ENDIF
  49.         ENDDOWN
  50.         JUMPMOUSE exit
  51.         VOID ScreenToFront(screen)
  52.         DMACON := 32
  53.         actual := 1-actual
  54.       ENDFOR
  55.     ENDMOUSE
  56.   ENDIF
  57.   exit:
  58.   VOID cleanup()
  59. ENDPROC
  60.  
  61. PROC cleanup()
  62.   IF screenadr1?0
  63.     VOID CloseScreen(screenadr1)
  64.   ENDIF
  65.   IF screenadr2?0
  66.     VOID CloseScreen(screenadr2)
  67.   ENDIF
  68.   VOID view(129,44)
  69. ENDPROC
  70.  
  71. PROC makedata()
  72.   LOCAL adr:REGLONG, count:REGLONG, dummy:REGINT
  73.   adr := {vectordata}
  74.   dummy := 0
  75.   FOR count,0,5199
  76.     dummy := MCHAR(adr+count)
  77.     AND 255,dummy
  78.     MINT count*2+coordinates,dummy*2
  79.   ENDFOR
  80.   STRUCT vectordata
  81.     INCLUDE dex:vector/TDEX.BIN
  82.   ENDSTRUCT
  83. ENDPROC
  84.  
  85. PROC view( x, y)
  86.   LOCAL x:INT, y:INT, viewadr:LONG
  87.   viewadr := ViewAddress()
  88.   MINT viewadr+14, x
  89.   MINT viewadr+12, y
  90.   VOID RemakeDisplay()
  91. ENDPROC
  92.  
  93. PROC setcolours( rastport)
  94.   LOCAL rastport:LONG, viewadr:LONG
  95.   viewadr := rastport+44
  96.   VOID SetRGB4(viewadr,0,0,0,0)
  97.   VOID SetRGB4(viewadr,1,5,5,15)
  98.   VOID SetRGB4(viewadr,2,15,5,5)
  99.   VOID SetRGB4(viewadr,3,15,15,5)  
  100. ENDPROC
  101.  
  102. PROC screen( width, height, depth, mode, title)
  103.   LOCAL width[ns.4]:INT, height[ns.6]:INT, depth[ns.8]:INT, mode[ns.12]:INT
  104.   LOCAL title[ns.20]:LONG, return:REGLONG
  105.   return := OpenScreen({ns})
  106.   STRUCT ns
  107.     INT  0,0,320,256,2,$203,0,1
  108.     LONG 0,0,0,0
  109.   ENDSTRUCT
  110. ENDPROC return
  111.  
  112.  
  113.