home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 19 / AACD19.BIN / AACD / Programming / YAEC / modules / graphics / graphics.e < prev    next >
Encoding:
Text File  |  2001-02-23  |  40.1 KB  |  1,614 lines

  1. OPT MODULE
  2. OPT EXPORT
  3.  
  4. MODULE 'exec/exec'
  5. MODULE 'utility/utility'
  6. MODULE 'hardware/hardware'
  7.  
  8. CONST NEWLOCKS=1
  9.  
  10.  
  11. OBJECT layer
  12.   front:PTR TO layer
  13.   back:PTR TO layer
  14.   cliprect:PTR TO cliprect
  15.   rp:PTR TO rastport
  16.   minx:INT
  17.   miny:INT
  18.   maxx:INT
  19.   maxy:INT
  20.   reserved[4]:ARRAY
  21.   priority:INT  -> This is unsigned
  22.   flags:INT  -> This is unsigned
  23.   superbitmap:PTR TO bitmap
  24.   supercliprect:PTR TO cliprect
  25.   window:LONG
  26.   scroll_x:INT
  27.   scroll_y:INT
  28.   cr:PTR TO cliprect
  29.   cr2:PTR TO cliprect
  30.   crnew:PTR TO cliprect
  31.   supersavercliprects:PTR TO cliprect
  32. -> Um, this had an illegal name
  33.   cliprects_:PTR TO cliprect
  34.   layerinfo:PTR TO layer_info
  35.   lock:ss
  36.   backfill:PTR TO hook
  37.   reserved1:LONG
  38.   clipregion:PTR TO region
  39.   savecliprects:PTR TO region
  40.   reserved2[22]:ARRAY
  41.   damagelist:PTR TO region
  42. ENDOBJECT     /* SIZEOF=160 */
  43.  
  44. OBJECT cliprect
  45.   next:PTR TO cliprect
  46.   prev:PTR TO cliprect
  47.   lobs:PTR TO layer
  48.   bitmap:PTR TO bitmap
  49.   minx:INT
  50.   miny:INT
  51.   maxx:INT
  52.   maxy:INT
  53. -> Um, these had illegal names
  54.   p1_:LONG
  55.   p2_:LONG
  56.   reserved:LONG
  57.   flags:LONG
  58. ENDOBJECT     /* SIZEOF=40 */
  59.  
  60. CONST CR_NEEDS_NO_CONCEALED_RASTERS=1,
  61.       CR_NEEDS_NO_LAYERBLIT_DAMAGE=2,
  62.       ISLESSX=1,
  63.       ISLESSY=2,
  64.       ISGRTRX=4,
  65.       ISGRTRY=8,
  66.       LR_FRONT=0,
  67.       LR_BACK=4,
  68.       LR_RASTPORT=12,
  69.       CR_PREV=4,
  70.       CR_LOBS=8
  71.  
  72. CONST LAYERSIMPLE=1,
  73.       LAYERSMART=2,
  74.       LAYERSUPER=4,
  75.       LAYERUPDATING=16,
  76.       LAYERBACKDROP=$40,
  77.       LAYERREFRESH=$80,
  78.       LAYERIREFRESH=$200,
  79.       LAYERIREFRESH2=$400,
  80.       LAYER_CLIPRECTS_LOST=$100
  81.  
  82.  
  83. OBJECT layer_info
  84.   top_layer:PTR TO layer
  85.   check_lp:PTR TO layer
  86.   obs:PTR TO cliprect
  87.   freecliprects:PTR TO cliprect
  88.   privatereserve1:LONG
  89.   privatereserve2:LONG
  90.   lock:ss
  91.   gs_head:mlh
  92.   privatereserve3:INT
  93.   privatereserve4:LONG
  94.   flags:INT  -> This is unsigned
  95.   fatten_count:CHAR
  96.   locklayerscount:CHAR
  97.   privatereserve5:INT
  98.   blankhook:LONG
  99.   layerinfo_extra:LONG
  100. ENDOBJECT     /* SIZEOF=102 */
  101.  
  102. CONST NEWLAYERINFO_CALLED=1,
  103.       ALERTLAYERSNOMEM=$83010000,
  104.       LAYERS_NOBACKFILL=1,
  105.       LAYERS_BACKFILL=0
  106.  
  107.  
  108.  
  109. CONST PRESERVE_COLORS=1,
  110.       AVOID_FLICKER=2,
  111.       IGNORE_MCOMPAT=4,
  112.       BIDTAG_COERCE=1
  113.  
  114.  
  115. CONST BORDERHIT=0,
  116.       TOPHIT=1,
  117.       BOTTOMHIT=2,
  118.       LEFTHIT=4,
  119.       RIGHTHIT=8
  120.  
  121. CONST COPPER_MOVE=0,
  122.       COPPER_WAIT=1,
  123.       CPRNXTBUF=2,
  124.       CPR_NT_LOF=$8000,
  125.       CPR_NT_SHT=$4000,
  126.       CPR_NT_SYS=$2000
  127.  
  128. OBJECT copins
  129.   opcode:INT
  130. -> a) next two INTs are unioned with "nxtlist:PTR TO coplist"
  131. -> b) next INT is unioned with "destaddr:INT"
  132.   vwaitpos:INT
  133. -> b) next INT is unioned with "destdata:INT"
  134.   hwaitpos:INT
  135. ENDOBJECT     /* SIZEOF=6 */
  136.  
  137. #define VWAITPOS vwaitpos
  138. #define DESTADDR vwaitpos
  139. #define HWAITPOS hwaitpos
  140. #define DESTDATA hwaitpos
  141.  
  142. OBJECT cprlist
  143.   next:PTR TO cprlist
  144.   start:PTR TO INT  -> Target is unsigned
  145.   maxcount:INT
  146. ENDOBJECT     /* SIZEOF=10 */
  147.  
  148. OBJECT coplist
  149.   next:PTR TO coplist
  150. -> Um, these had illegal names
  151.   coplist_:PTR TO coplist
  152.   viewport_:PTR TO viewport
  153.   copins:PTR TO copins
  154.   copptr:PTR TO copins
  155.   coplstart:PTR TO INT  -> Target is unsigned
  156.   copsstart:PTR TO INT  -> Target is unsigned
  157.   count:INT
  158.   maxcount:INT
  159.   dyoffset:INT
  160. -> Um, if V1_3 only?
  161. ->  cop2start:PTR TO INT
  162. ->  cop3start:PTR TO INT
  163. ->  cop4start:PTR TO INT
  164. ->  cop5start:PTR TO INT
  165.   slrepeat:INT  -> This is unsigned
  166.   flags:INT  -> This is unsigned
  167. ENDOBJECT     /* SIZEOF=50 */
  168.  
  169. CONST EXACT_LINE=1,
  170.       HALF_LINE=2
  171.  
  172. OBJECT ucoplist
  173.   next:PTR TO ucoplist
  174.   firstcoplist:PTR TO coplist
  175.   coplist:PTR TO coplist
  176. ENDOBJECT     /* SIZEOF=12 */
  177.  
  178. OBJECT copinit
  179.   vsync_hblank[2]:ARRAY OF INT  -> Array is unsigned
  180.   diagstrt[12]:ARRAY OF INT  -> Array is unsigned
  181.   fm0[2]:ARRAY OF INT  -> Array is unsigned
  182.   diwstart[10]:ARRAY OF INT  -> Array is unsigned
  183.   bplcon2[2]:ARRAY OF INT  -> Array is unsigned
  184.   sprfix[16]:ARRAY OF INT  -> Array is unsigned
  185.   sprstrtup[32]:ARRAY OF INT  -> Array is unsigned
  186.   wait14[2]:ARRAY OF INT  -> Array is unsigned
  187.   norm_hblank[2]:ARRAY OF INT  -> Array is unsigned
  188.   jump[2]:ARRAY OF INT  -> Array is unsigned
  189.   wait_forever[6]:ARRAY OF INT  -> Array is unsigned
  190.   sprstop[8]:ARRAY OF INT  -> Array is unsigned
  191. ENDOBJECT     /* SIZEOF=192 */
  192.  
  193.  
  194. CONST MODE_640=$8000,
  195.       PLNCNTMSK=7,
  196.       PLNCNTSHFT=12,
  197.       PF2PRI=$40,
  198.       COLORON=$200,
  199.       DBLPF=$400,
  200.       HOLDNMODIFY=$800,
  201.       INTERLACE=4,
  202.       PFA_FINE_SCROLL=15,
  203.       PFB_FINE_SCROLL_SHIFT=4,
  204.       PF_FINE_SCROLL_MASK=15,
  205.       DIW_HORIZ_POS=$7F,
  206.       DIW_VRTCL_POS=$1FF,
  207.       DIW_VRTCL_POS_SHIFT=7,
  208.       DFTCH_MASK=$FF,
  209.       VPOSRLOF=$8000
  210.  
  211. CONST DTAG_DISP=$80000000,
  212.       DTAG_DIMS=$80001000,
  213.       DTAG_MNTR=$80002000,
  214.       DTAG_NAME=$80003000,
  215.       DTAG_VEC=$80004000
  216.  
  217. OBJECT qh
  218.   structid:LONG
  219.   displayid:LONG
  220.   skipid:LONG
  221.   length:LONG
  222. ENDOBJECT     /* SIZEOF=16 */
  223.  
  224. OBJECT displayinfo
  225.   qh:qh
  226.   notavailable:INT  -> This is unsigned
  227.   propertyflags:LONG
  228.   resolution:tpoint
  229.   pixelspeed:INT  -> This is unsigned
  230.   numstdsprites:INT  -> This is unsigned
  231.   paletterange:INT  -> This is unsigned
  232.   spriteresolution:tpoint
  233.   pad[4]:ARRAY
  234.   redbits:CHAR
  235.   greenbits:CHAR
  236.   bluebits:CHAR
  237.   pad2a:CHAR
  238.   pad2b[4]:ARRAY
  239.   reserved[2]:ARRAY OF LONG
  240. ENDOBJECT     /* SIZEOF=56 */
  241.  
  242. CONST DI_AVAIL_NOCHIPS=1,
  243.       DI_AVAIL_NOMONITOR=2,
  244.       DI_AVAIL_NOTWITHGENLOCK=4,
  245.       DIPF_IS_LACE=1,
  246.       DIPF_IS_DUALPF=2,
  247.       DIPF_IS_PF2PRI=4,
  248.       DIPF_IS_HAM=8,
  249.       DIPF_IS_ECS=16,
  250.       DIPF_IS_AA=$10000,
  251.       DIPF_IS_PAL=$20,
  252.       DIPF_IS_SPRITES=$40,
  253.       DIPF_IS_GENLOCK=$80,
  254.       DIPF_IS_WB=$100,
  255.       DIPF_IS_DRAGGABLE=$200,
  256.       DIPF_IS_PANELLED=$400,
  257.       DIPF_IS_BEAMSYNC=$800,
  258.       DIPF_IS_EXTRAHALFBRITE=$1000,
  259.       DIPF_IS_SPRITES_ATT=$2000,
  260.       DIPF_IS_SPRITES_CHNG_RES=$4000,
  261.       DIPF_IS_SPRITES_BORDER=$8000,
  262.       DIPF_IS_SCANDBL=$20000,
  263.       DIPF_IS_SPRITES_CHNG_BASE=$40000,
  264.       DIPF_IS_SPRITES_CHNG_PRI=$80000,
  265.       DIPF_IS_DBUFFER=$100000,
  266.       DIPF_IS_PROGBEAM=$200000,
  267.       DIPF_IS_FOREIGN=$80000000
  268.  
  269. OBJECT dimensioninfo
  270.   qh:qh
  271.   maxdepth:INT  -> This is unsigned
  272.   minrasterwidth:INT  -> This is unsigned
  273.   minrasterheight:INT  -> This is unsigned
  274.   maxrasterwidth:INT  -> This is unsigned
  275.   maxrasterheight:INT  -> This is unsigned
  276.   nominal:rectangle
  277.   maxoscan:rectangle
  278.   videooscan:rectangle
  279.   txtoscan:rectangle
  280.   stdoscan:rectangle
  281.   pad[14]:ARRAY
  282.   reserved[2]:ARRAY OF LONG
  283. ENDOBJECT     /* SIZEOF=88 */
  284.  
  285. OBJECT monitorinfo
  286.   qh:qh
  287.   mspc:PTR TO monitorspec
  288.   viewposition:tpoint
  289.   viewresolution:tpoint
  290.   viewpositionrange:rectangle
  291.   totalrows:INT  -> This is unsigned
  292.   totalcolorclocks:INT  -> This is unsigned
  293.   minrow:INT  -> This is unsigned
  294.   compatibility:INT
  295.   pad[32]:ARRAY
  296.   mousetick:tpoint
  297.   defaultviewposition:tpoint
  298.   preferredmodeid:LONG
  299.   reserved[2]:ARRAY OF LONG
  300. ENDOBJECT     /* SIZEOF=96 */
  301.  
  302. CONST MCOMPAT_MIXED=0,
  303.       MCOMPAT_SELF=1,
  304.       MCOMPAT_NOBODY=-1,
  305.       DISPLAYNAMELEN=$20
  306.  
  307. OBJECT nameinfo
  308.   qh:qh
  309.   name[32]:ARRAY
  310.   reserved[2]:ARRAY OF LONG
  311. ENDOBJECT     /* SIZEOF=56 */
  312.  
  313. OBJECT vecinfo
  314.   qh:qh
  315.   vec:LONG
  316.   data:LONG
  317.   type:INT  -> This is unsigned
  318.   pad[3]:ARRAY OF INT  -> Array is unsigned
  319.   reserved[2]:ARRAY OF LONG
  320. ENDOBJECT     /* SIZEOF=40 */
  321.  
  322.  
  323. CONST SUSERFLAGS=$FF,
  324.       VSF_VSPRITE=1,
  325.       VSF_SAVEBACK=2,
  326.       VSF_OVERLAY=4,
  327.       VSF_MUSTDRAW=8,
  328.       VSF_BACKSAVED=$100,
  329.       VSF_BOBUPDATE=$200,
  330.       VSF_GELGONE=$400,
  331.       VSF_VSOVERFLOW=$800,
  332.       BUSERFLAGS=$FF,
  333.       BF_SAVEBOB=1,
  334.       BF_BOBISCOMP=2,
  335.       BF_BWAITING=$100,
  336.       BF_BDRAWN=$200,
  337.       BF_BOBSAWAY=$400,
  338.       BF_BOBNIX=$800,
  339.       BF_SAVEPRESERVE=$1000,
  340.       BF_OUTSTEP=$2000,
  341.       ANFRACSIZE=6,
  342.       ANIMHALF=$20,
  343.       RINGTRIGGER=1
  344.  
  345. OBJECT vs
  346.   nextvsprite:PTR TO vs
  347.   prevvsprite:PTR TO vs
  348.   drawpath:PTR TO vs
  349.   clearpath:PTR TO vs
  350.   oldy:INT
  351.   oldx:INT
  352.   vsflags:INT
  353.   y:INT
  354.   x:INT
  355.   height:INT
  356.   width:INT
  357.   depth:INT
  358.   memask:INT
  359.   hitmask:INT
  360.   imagedata:PTR TO INT
  361.   borderline:PTR TO INT
  362.   collmask:PTR TO INT
  363.   sprcolors:PTR TO INT
  364.   vsbob:PTR TO bob
  365.   planepick:CHAR  -> This is signed
  366.   planeonoff:CHAR  -> This is signed
  367.   vuserext:LONG
  368. ENDOBJECT     /* SIZEOF=58 */
  369.  
  370. OBJECT bob
  371.   bobflags:INT
  372.   savebuffer:PTR TO INT
  373.   imageshadow:PTR TO INT
  374.   before:PTR TO bob
  375.   after:PTR TO bob
  376.   bobvsprite:PTR TO vs
  377.   bobcomp:PTR TO ac
  378.   dbuffer:PTR TO dbp
  379.   buserext:LONG
  380. ENDOBJECT     /* SIZEOF=30 */
  381.  
  382. OBJECT ac
  383.   compflags:INT
  384.   timer:INT
  385.   timeset:INT
  386.   nextcomp:PTR TO ac
  387.   prevcomp:PTR TO ac
  388.   nextseq:PTR TO ac
  389.   prevseq:PTR TO ac
  390.   animcroutine:LONG
  391.   ytrans:INT
  392.   xtrans:INT
  393.   headob:PTR TO ao
  394.   animbob:PTR TO bob
  395. ENDOBJECT     /* SIZEOF=38 */
  396.  
  397. OBJECT ao
  398.   nextob:PTR TO ao
  399.   prevob:PTR TO ao
  400.   clock:LONG
  401.   anoldy:INT
  402.   anoldx:INT
  403.   any:INT
  404.   anx:INT
  405.   yvel:INT
  406.   xvel:INT
  407.   yaccel:INT
  408.   xaccel:INT
  409.   ringytrans:INT
  410.   ringxtrans:INT
  411.   animoroutine:LONG
  412.   headcomp:PTR TO ac
  413.   auserext:LONG
  414. ENDOBJECT     /* SIZEOF=40 */
  415.  
  416. OBJECT dbp
  417.   bufy:INT
  418.   bufx:INT
  419.   bufpath:PTR TO vs
  420.   bufbuffer:PTR TO INT
  421. -> Um, 'bufplanes' not in .h file
  422.   bufplanes:PTR TO LONG
  423. ENDOBJECT     /* SIZEOF=16 */
  424.  
  425. #define InitAnimate(animKey) PutLong(animKey,NIL)
  426. #define RemBob(b)            PutInt(b, Int(b) OR BF_BOBSAWAY)
  427.  
  428. CONST B2NORM=0,
  429.       B2SWAP=1,
  430.       B2BOBBER=2
  431.  
  432. -> Um, this was in 'graphics/view'
  433. OBJECT colltable
  434.   collptrs[16]:ARRAY OF LONG
  435. ENDOBJECT
  436.  
  437. #define RASSIZE(w,h) (Mul((h),Shr((w)+15,3) AND $FFFE))
  438.  
  439. CONST BITSET=$8000,
  440.       BITCLR=0,
  441.       AGNUS=1,
  442.       DENISE=1
  443.  
  444. OBJECT bitmap
  445.   bytesperrow:INT  -> This is unsigned
  446.   rows:INT  -> This is unsigned
  447.   flags:CHAR
  448.   depth:CHAR
  449.   pad:INT
  450.   planes[8]:ARRAY OF LONG
  451. ENDOBJECT     /* SIZEOF=40 */
  452.  
  453. OBJECT rectangle
  454.   minx:INT
  455.   miny:INT
  456.   maxx:INT
  457.   maxy:INT
  458. ENDOBJECT     /* SIZEOF=8 */
  459.  
  460. OBJECT rect32
  461.   minx:LONG
  462.   miny:LONG
  463.   maxx:LONG
  464.   maxy:LONG
  465. ENDOBJECT     /* SIZEOF=16 */
  466.  
  467. OBJECT tpoint
  468.   x:INT
  469.   y:INT
  470. ENDOBJECT     /* SIZEOF=4 */
  471.  
  472. CONST BMB_CLEAR=0,
  473.       BMB_DISPLAYABLE=1,
  474.       BMB_INTERLEAVED=2,
  475.       BMB_STANDARD=3,
  476.       BMB_MINPLANES=4,
  477.       BMF_CLEAR=1,
  478.       BMF_DISPLAYABLE=2,
  479.       BMF_INTERLEAVED=4,
  480.       BMF_STANDARD=8,
  481.       BMF_MINPLANES=16,
  482.       BMA_HEIGHT=0,
  483.       BMA_DEPTH=4,
  484.       BMA_WIDTH=8,
  485.       BMA_FLAGS=12
  486.  
  487.  
  488. OBJECT gfxbase
  489. -> Um, this was missing
  490.   lib:lib
  491.   actiview:PTR TO view
  492.   copinit:PTR TO copinit
  493.   cia:PTR TO LONG
  494.   blitter:PTR TO LONG
  495.   loflist:PTR TO INT  -> Target is unsigned
  496.   shflist:PTR TO INT  -> Target is unsigned
  497.   blthd:PTR TO bltnode
  498.   blttl:PTR TO bltnode
  499.   bsblthd:PTR TO bltnode
  500.   bsblttl:PTR TO bltnode
  501.   vbsrv:is
  502.   timsrv:is
  503.   bltsrv:is
  504.   textfonts:lh
  505.   defaultfont:PTR TO textfont
  506.   modes:INT  -> This is unsigned
  507.   vblank:CHAR  -> This is signed
  508.   debug:CHAR  -> This is signed
  509.   beamsync:INT
  510.   system_bplcon0:INT
  511.   spritereserved:CHAR
  512.   bytereserved:CHAR
  513.   flags:INT  -> This is unsigned
  514.   blitlock:INT
  515.   blitnest:INT
  516.   blitwaitq:lh
  517.   blitowner:PTR TO tc
  518.   tof_waitq:lh
  519.   displayflags:INT  -> This is unsigned
  520. -> This is really PTR TO PTR TO simplesprite
  521.   simplesprites:PTR TO LONG
  522.   maxdisplayrow:INT  -> This is unsigned
  523.   maxdisplaycolumn:INT  -> This is unsigned
  524.   normaldisplayrows:INT  -> This is unsigned
  525.   normaldisplaycolumns:INT  -> This is unsigned
  526.   normaldpmx:INT  -> This is unsigned
  527.   normaldpmy:INT  -> This is unsigned
  528.   lastchancememory:PTR TO ss
  529.   lcmptr:PTR TO INT  -> Target is unsigned
  530.   microsperline:INT  -> This is unsigned
  531.   mindisplaycolumn:INT  -> This is unsigned
  532.   chiprevbits0:CHAR
  533.   memtype:CHAR
  534.   crb_reserved[4]:ARRAY
  535.   monitor_id:INT  -> This is unsigned
  536.   hedley[8]:ARRAY OF LONG
  537.   hedley_sprites[8]:ARRAY OF LONG
  538.   hedley_sprites1[8]:ARRAY OF LONG
  539.   hedley_count:INT
  540.   hedley_flags:INT  -> This is unsigned
  541.   hedley_tmp:INT
  542.   hash_table:PTR TO LONG
  543.   current_tot_rows:INT  -> This is unsigned
  544.   current_tot_cclks:INT  -> This is unsigned
  545.   hedley_hint:CHAR
  546.   hedley_hint2:CHAR
  547.   nreserved[4]:ARRAY OF LONG
  548.   a2024_sync_raster:PTR TO LONG
  549.   control_delta_pal:INT  -> This is unsigned
  550.   control_delta_ntsc:INT  -> This is unsigned
  551.   current_monitor:PTR TO monitorspec
  552.   monitorlist:lh
  553.   default_monitor:PTR TO monitorspec
  554.   monitorlistsemaphore:PTR TO ss
  555.   displayinfodatabase:LONG
  556.   topline:INT  -> This is unsigned
  557.   activiewcprsemaphore:PTR TO ss
  558.   utilbase:PTR TO LONG
  559.   execbase:PTR TO LONG
  560.   bwshifts:PTR TO CHAR
  561.   strtfetchmasks:PTR TO INT  -> Target is unsigned
  562.   stopfetchmasks:PTR TO INT  -> Target is unsigned
  563.   overrun:PTR TO INT  -> Target is unsigned
  564.   realstops:PTR TO INT
  565.   spritewidth:INT  -> This is unsigned
  566.   spritefmode:INT  -> This is unsigned
  567.   softsprites:CHAR  -> This is signed
  568.   arraywidth:CHAR  -> This is signed
  569.   defaultspritewidth:INT  -> This is unsigned
  570.   sprmovedisable:CHAR  -> This is signed
  571.   wantchips:CHAR
  572.   boardmemtype:CHAR
  573.   bugs:CHAR
  574.   layersbase:PTR TO LONG
  575.   colormask:LONG
  576.   ivector:LONG
  577.   idata:LONG
  578.   specialcounter:LONG
  579.   dblist:LONG
  580.   monitorflags:INT  -> This is unsigned
  581.   scandoubledsprites:CHAR
  582.   bp3bits:CHAR
  583.   monitorvblank:analogsignalinterval
  584.   natural_monitor:PTR TO monitorspec
  585.   progdata:LONG
  586.   extsprites:CHAR
  587.   pad3:CHAR
  588.   gfxflags:INT  -> This is unsigned
  589.   vbcounter:LONG
  590.   hashtablesemaphore:PTR TO ss
  591.   hwemul[9]:ARRAY OF LONG
  592. ENDOBJECT     /* SIZEOF=497 */
  593.  
  594. #define chunkytoplanarptr hwemul[0]
  595.  
  596. CONST OWNBLITTERN=0,
  597.       QBOWNERN=1,
  598.       BLITMSG_FAULTN=2,
  599.       BLITMSG_FAULT=4,
  600.       QBOWNER=2,
  601.       GBFLAGSF_TIMER=$40,
  602.       GBFLAGSF_LASTBLIT=$80,
  603.       GFXB_BIG_BLITS=0,
  604.       GFXB_HR_AGNUS=0,
  605.       GFXB_HR_DENISE=1,
  606.       GFXB_AA_ALICE=2,
  607.       GFXB_AA_LISA=3,
  608.       GFXB_AA_MLISA=4,
  609.       GFXF_BIG_BLITS=1,
  610.       GFXF_HR_AGNUS=1,
  611.       GFXF_HR_DENISE=2,
  612.       GFXF_AA_ALICE=4,
  613.       GFXF_AA_LISA=8,
  614.       GFXF_AA_MLISA=16,
  615.       SETCHIPREV_A=1,
  616.       SETCHIPREV_ECS=3,
  617.       SETCHIPREV_AA=15,
  618.       SETCHIPREV_BEST=-1,
  619.       BUS_16=0,
  620.       NML_CAS=0,
  621.       BUS_32=1,
  622.       DBL_CAS=2,
  623.       BANDWIDTH_1X=0,
  624.       BANDWIDTH_2XNML=1,
  625.       BANDWIDTH_2XDBL=2,
  626.       BANDWIDTH_4X=3,
  627.       NEW_DATABASE=1,
  628.       NTSCN=0,
  629.       NTSC=1,
  630.       GENLOCN=1,
  631.       GENLOC=2,
  632.       PALN=2,
  633.       PAL=4,
  634.       TODA_SAFEN=3,
  635.       TODA_SAFE=8,
  636.       REALLY_PALN=4,
  637.       REALLY_PAL=16,
  638.       LPEN_SWAP_FRAMES=32
  639.  
  640. #define GRAPHICSNAME 'graphics.library'
  641.  
  642. -> These need 'graphics/gfx', 'hardware/custom', 'hardware/dmabits'
  643. #define ON_DISPLAY      PutInt(CUSTOMADDR+DMACON,BITSET OR DMAF_RASTER)
  644. #define OFF_DISPLAY     PutInt(CUSTOMADDR+DMACON,BITCLR OR DMAF_RASTER)
  645. #define ON_SPRITE       PutInt(CUSTOMADDR+DMACON,BITSET OR DMAF_SPRITE)
  646. #define OFF_SPRITE      PutInt(CUSTOMADDR+DMACON,BITCLR OR DMAF_SPRITE)
  647.  
  648. -> Same, but 'hardware/intbits' instead of 'hardware/dmabits'
  649. #define ON_VBLANK       PutInt(CUSTOMADDR+INTENA,BITSET OR INTF_VERTB)
  650. #define OFF_VBLANK      PutInt(CUSTOMADDR+INTENA,BITCLR OR INTF_VERTB)
  651.  
  652. #define SetDrPt(w,p)   (PutInt((w)+RP_LINEPTRN,(p)) BUT \
  653.                        PutInt((w)+RP_FLAGS,Int((w)+RP_FLAGS) OR FRST_DOT) BUT \
  654.                        PutChar((w)+RP_LINPATCNT,15))
  655. #define SetAfPt(w,p,n) (PutLong((w)+RP_AREAPTRN,(p)) BUT \
  656.                        PutChar((w)+RP_AREAPTSZ,(n)))
  657.  
  658. #define SetOPen(w,c)   (PutChar((w)+RP_AOLPEN,(c)) BUT \
  659.                        PutInt((w)+RP_FLAGS,Int((w)+RP_FLAGS) OR RPF_AREAOUTLINE))
  660. #define SetWrMsk(w,m)  PutChar((w)+RP_MASK,(m))
  661.  
  662. #define SafeSetOutlinePen(w,c) (IF KickVersion(39) THEN SetOutlinePen((w),(c)) \
  663.                                ELSE SetOPen(w,c))
  664. #define SafeSetWriteMask(w,m)  (IF KickVersion(39) THEN SetWriteMask((w),(m)) \
  665.                                ELSE SetWrMsk(w,m))
  666.  
  667. #define GetOutlinePen(rp) GetOPen((rp))
  668.  
  669. #define BNDRYOFF(w)  PutInt((w)+RP_FLAGS,Int((w)+RP_FLAGS) AND Not(RPF_AREAOUTLINE))
  670.  
  671. #define CINIT(c,n)     UcopperListInit((c),(n))
  672. #define CMOVE(c,a,b)   (Cmove((c),{a},(b)) BUT Cbump((c)))
  673. -> CMOVE is a little hard to use due to {a}.  CMOVEA() is the same except it
  674. -> expects the address, so it may be easier to use...
  675. #define CMOVEA(c,d,b)  (Cmove((c),(d),(b)) BUT Cbump((c)))
  676. #define CWAIT(c,a,b)   (Cwait((c),(a),(b)) BUT Cbump((c)))
  677. #define CEND(c)        CWAIT((c),10000,255)
  678.  
  679. #define DrawCircle(rp,cx,cy,r)  DrawEllipse((rp),(cx),(cy),(r),(r))
  680. #define AreaCircle(rp,cx,cy,r)  AreaEllipse((rp),(cx),(cy),(r),(r))
  681.  
  682. OBJECT xln
  683.   succ:PTR TO ln
  684.   pred:PTR TO ln
  685.   type:CHAR
  686.   pri:CHAR  -> This is signed
  687.   name:PTR TO CHAR
  688.   subsystem:CHAR
  689.   subtype:CHAR
  690.   library:LONG
  691.   init:LONG
  692. ENDOBJECT     /* SIZEOF=24 */
  693.  
  694. CONST SS_GRAPHICS=2,
  695.       VIEW_EXTRA_TYPE=1,
  696.       VIEWPORT_EXTRA_TYPE=2,
  697.       SPECIAL_MONITOR_TYPE=3,
  698.       MONITOR_SPEC_TYPE=4
  699.  
  700.  
  701. OBJECT isrvstr
  702.   ln:ln
  703.   iptr:PTR TO isrvstr
  704.   code:LONG
  705.   ccode:LONG
  706.   carg:LONG
  707. ENDOBJECT
  708.  
  709. CONST INVALID_ID=-1,
  710.       MONITOR_ID_MASK=$FFFF1000,
  711.       DEFAULT_MONITOR_ID=0,
  712.       NTSC_MONITOR_ID=$11000,
  713.       PAL_MONITOR_ID=$21000,
  714.       LORES_KEY=0,
  715.       HIRES_KEY=$8000,
  716.       SUPER_KEY=$8020,
  717.       HAM_KEY=$800,
  718.       LORESLACE_KEY=4,
  719.       HIRESLACE_KEY=$8004,
  720.       SUPERLACE_KEY=$8024,
  721.       HAMLACE_KEY=$804,
  722.       LORESDPF_KEY=$400,
  723.       HIRESDPF_KEY=$8400,
  724.       SUPERDPF_KEY=$8420,
  725.       LORESLACEDPF_KEY=$404,
  726.       HIRESLACEDPF_KEY=$8404,
  727.       SUPERLACEDPF_KEY=$8424,
  728.       LORESDPF2_KEY=$440,
  729.       HIRESDPF2_KEY=$8440,
  730.       SUPERDPF2_KEY=$8460,
  731.       LORESLACEDPF2_KEY=$444,
  732.       HIRESLACEDPF2_KEY=$8444,
  733.       SUPERLACEDPF2_KEY=$8464,
  734.       EXTRAHALFBRITE_KEY=$80,
  735.       EXTRAHALFBRITELACE_KEY=$84,
  736.       HIRESHAM_KEY=$8800,
  737.       SUPERHAM_KEY=$8820,
  738.       HIRESEHB_KEY=$8080,
  739.       SUPEREHB_KEY=$80A0,
  740.       HIRESHAMLACE_KEY=$8804,
  741.       SUPERHAMLACE_KEY=$8824,
  742.       HIRESEHBLACE_KEY=$8084,
  743.       SUPEREHBLACE_KEY=$80A4,
  744.       LORESSDBL_KEY=8,
  745.       LORESHAMSDBL_KEY=$808,
  746.       LORESEHBSDBL_KEY=$88,
  747.       HIRESHAMSDBL_KEY=$8808,
  748.       VGA_MONITOR_ID=$31000,
  749.       VGAEXTRALORES_KEY=$31004,
  750.       VGALORES_KEY=$39004,
  751.       VGAPRODUCT_KEY=$39024,
  752.       VGAHAM_KEY=$31804,
  753.       VGAEXTRALORESLACE_KEY=$31005,
  754.       VGALORESLACE_KEY=$39005,
  755.       VGAPRODUCTLACE_KEY=$39025,
  756.       VGAHAMLACE_KEY=$31805,
  757.       VGAEXTRALORESDPF_KEY=$31404,
  758.       VGALORESDPF_KEY=$39404,
  759.       VGAPRODUCTDPF_KEY=$39424,
  760.       VGAEXTRALORESLACEDPF_KEY=$31405,
  761.       VGALORESLACEDPF_KEY=$39405,
  762.       VGAPRODUCTLACEDPF_KEY=$39425,
  763.       VGAEXTRALORESDPF2_KEY=$31444,
  764.       VGALORESDPF2_KEY=$39444,
  765.       VGAPRODUCTDPF2_KEY=$39464,
  766.       VGAEXTRALORESLACEDPF2_KEY=$31445,
  767.       VGALORESLACEDPF2_KEY=$39445,
  768.       VGAPRODUCTLACEDPF2_KEY=$39465,
  769.       VGAEXTRAHALFBRITE_KEY=$31084,
  770.       VGAEXTRAHALFBRITELACE_KEY=$31085,
  771.       VGAPRODUCTHAM_KEY=$39824,
  772.       VGALORESHAM_KEY=$39804,
  773.       VGAEXTRALORESHAM_KEY=$31804,
  774.       VGAPRODUCTHAMLACE_KEY=$39825,
  775.       VGALORESHAMLACE_KEY=$39805,
  776.       VGAEXTRALORESHAMLACE_KEY=$31805,
  777.       VGAEXTRALORESEHB_KEY=$31084,
  778.       VGAEXTRALORESEHBLACE_KEY=$31085,
  779.       VGALORESEHB_KEY=$39084,
  780.       VGALORESEHBLACE_KEY=$39085,
  781.       VGAEHB_KEY=$390A4,
  782.       VGAEHBLACE_KEY=$390A5,
  783.       VGAEXTRALORESDBL_KEY=$31000,
  784.       VGALORESDBL_KEY=$39000,
  785.       VGAPRODUCTDBL_KEY=$39020,
  786.       VGAEXTRALORESHAMDBL_KEY=$31800,
  787.       VGALORESHAMDBL_KEY=$39800,
  788.       VGAPRODUCTHAMDBL_KEY=$39820,
  789.       VGAEXTRALORESEHBDBL_KEY=$31080,
  790.       VGALORESEHBDBL_KEY=$39080,
  791.       VGAPRODUCTEHBDBL_KEY=$390A0,
  792.       A2024_MONITOR_ID=$41000,
  793.       A2024TENHERTZ_KEY=$41000,
  794.       A2024FIFTEENHERTZ_KEY=$49000,
  795.       PROTO_MONITOR_ID=$51000,
  796.       EURO72_MONITOR_ID=$61000,
  797.       EURO72EXTRALORES_KEY=$61004,
  798.       EURO72LORES_KEY=$69004,
  799.       EURO72PRODUCT_KEY=$69024,
  800.       EURO72HAM_KEY=$61804,
  801.       EURO72EXTRALORESLACE_KEY=$61005,
  802.       EURO72LORESLACE_KEY=$69005,
  803.       EURO72PRODUCTLACE_KEY=$69025,
  804.       EURO72HAMLACE_KEY=$61805,
  805.       EURO72EXTRALORESDPF_KEY=$61404,
  806.       EURO72LORESDPF_KEY=$69404,
  807.       EURO72PRODUCTDPF_KEY=$69424,
  808.       EURO72EXTRALORESLACEDPF_KEY=$61405,
  809.       EURO72LORESLACEDPF_KEY=$69405,
  810.       EURO72PRODUCTLACEDPF_KEY=$69425,
  811.       EURO72EXTRALORESDPF2_KEY=$61444,
  812.       EURO72LORESDPF2_KEY=$69444,
  813.       EURO72PRODUCTDPF2_KEY=$69464,
  814.       EURO72EXTRALORESLACEDPF2_KEY=$61445,
  815.       EURO72LORESLACEDPF2_KEY=$69445,
  816.       EURO72PRODUCTLACEDPF2_KEY=$69465,
  817.       EURO72EXTRAHALFBRITE_KEY=$61084,
  818.       EURO72EXTRAHALFBRITELACE_KEY=$61085,
  819.       EURO72PRODUCTHAM_KEY=$69824,
  820.       EURO72PRODUCTHAMLACE_KEY=$69825,
  821.       EURO72LORESHAM_KEY=$69804,
  822.       EURO72LORESHAMLACE_KEY=$69805,
  823.       EURO72EXTRALORESHAM_KEY=$61804,
  824.       EURO72EXTRALORESHAMLACE_KEY=$61805,
  825.       EURO72EXTRALORESEHB_KEY=$61084,
  826.       EURO72EXTRALORESEHBLACE_KEY=$61085,
  827.       EURO72LORESEHB_KEY=$69084,
  828.       EURO72LORESEHBLACE_KEY=$69085,
  829.       EURO72EHB_KEY=$690A4,
  830.       EURO72EHBLACE_KEY=$690A5,
  831.       EURO72EXTRALORESDBL_KEY=$61000,
  832.       EURO72LORESDBL_KEY=$69000,
  833.       EURO72PRODUCTDBL_KEY=$69020,
  834.       EURO72EXTRALORESHAMDBL_KEY=$61800,
  835.       EURO72LORESHAMDBL_KEY=$69800,
  836.       EURO72PRODUCTHAMDBL_KEY=$69820,
  837.       EURO72EXTRALORESEHBDBL_KEY=$61080,
  838.       EURO72LORESEHBDBL_KEY=$69080,
  839.       EURO72PRODUCTEHBDBL_KEY=$690A0,
  840.       EURO36_MONITOR_ID=$71000,
  841.       SUPER72_MONITOR_ID=$81000,
  842.       SUPER72LORESDBL_KEY=$81008,
  843.       SUPER72HIRESDBL_KEY=$89008,
  844.       SUPER72SUPERDBL_KEY=$89028,
  845.       SUPER72LORESHAMDBL_KEY=$81808,
  846.       SUPER72HIRESHAMDBL_KEY=$89808,
  847.       SUPER72SUPERHAMDBL_KEY=$89828,
  848.       SUPER72LORESEHBDBL_KEY=$81088,
  849.       SUPER72HIRESEHBDBL_KEY=$89088,
  850.       SUPER72SUPEREHBDBL_KEY=$890A8,
  851.       DBLNTSC_MONITOR_ID=$91000,
  852.       DBLNTSCLORES_KEY=$91000,
  853.       DBLNTSCLORESFF_KEY=$91004,
  854.       DBLNTSCLORESHAM_KEY=$91800,
  855.       DBLNTSCLORESHAMFF_KEY=$91804,
  856.       DBLNTSCLORESEHB_KEY=$91080,
  857.       DBLNTSCLORESEHBFF_KEY=$91084,
  858.       DBLNTSCLORESLACE_KEY=$91005,
  859.       DBLNTSCLORESHAMLACE_KEY=$91805,
  860.       DBLNTSCLORESEHBLACE_KEY=$91085,
  861.       DBLNTSCLORESDPF_KEY=$91400,
  862.       DBLNTSCLORESDPFFF_KEY=$91404,
  863.       DBLNTSCLORESDPFLACE_KEY=$91405,
  864.       DBLNTSCLORESDPF2_KEY=$91440,
  865.       DBLNTSCLORESDPF2FF_KEY=$91444,
  866.       DBLNTSCLORESDPF2LACE_KEY=$91445,
  867.       DBLNTSCHIRES_KEY=$99000,
  868.       DBLNTSCHIRESFF_KEY=$99004,
  869.       DBLNTSCHIRESHAM_KEY=$99800,
  870.       DBLNTSCHIRESHAMFF_KEY=$99804,
  871.       DBLNTSCHIRESLACE_KEY=$99005,
  872.       DBLNTSCHIRESHAMLACE_KEY=$99805,
  873.       DBLNTSCHIRESEHB_KEY=$99080,
  874.       DBLNTSCHIRESEHBFF_KEY=$99084,
  875.       DBLNTSCHIRESEHBLACE_KEY=$99085,
  876.       DBLNTSCHIRESDPF_KEY=$99400,
  877.       DBLNTSCHIRESDPFFF_KEY=$99404,
  878.       DBLNTSCHIRESDPFLACE_KEY=$99405,
  879.       DBLNTSCHIRESDPF2_KEY=$99440,
  880.       DBLNTSCHIRESDPF2FF_KEY=$99444,
  881.       DBLNTSCHIRESDPF2LACE_KEY=$99445,
  882.       DBLNTSCEXTRALORES_KEY=$91200,
  883.       DBLNTSCEXTRALORESHAM_KEY=$91A00,
  884.       DBLNTSCEXTRALORESEHB_KEY=$91280,
  885.       DBLNTSCEXTRALORESDPF_KEY=$91600,
  886.       DBLNTSCEXTRALORESDPF2_KEY=$91640,
  887.       DBLNTSCEXTRALORESFF_KEY=$91204,
  888.       DBLNTSCEXTRALORESHAMFF_KEY=$91A04,
  889.       DBLNTSCEXTRALORESEHBFF_KEY=$91284,
  890.       DBLNTSCEXTRALORESDPFFF_KEY=$91604,
  891.       DBLNTSCEXTRALORESDPF2FF_KEY=$91644,
  892.       DBLNTSCEXTRALORESLACE_KEY=$91205,
  893.       DBLNTSCEXTRALORESHAMLACE_KEY=$91A05,
  894.       DBLNTSCEXTRALORESEHBLACE_KEY=$91285,
  895.       DBLNTSCEXTRALORESDPFLACE_KEY=$91605,
  896.       DBLNTSCEXTRALORESDPF2LACE_KEY=$91645,
  897.       DBLPAL_MONITOR_ID=$A1000,
  898.       DBLPALLORES_KEY=$A1000,
  899.       DBLPALLORESFF_KEY=$A1004,
  900.       DBLPALLORESHAM_KEY=$A1800,
  901.       DBLPALLORESHAMFF_KEY=$A1804,
  902.       DBLPALLORESEHB_KEY=$A1080,
  903.       DBLPALLORESEHBFF_KEY=$A1084,
  904.       DBLPALLORESLACE_KEY=$A1005,
  905.       DBLPALLORESHAMLACE_KEY=$A1805,
  906.       DBLPALLORESEHBLACE_KEY=$A1085,
  907.       DBLPALLORESDPF_KEY=$A1400,
  908.       DBLPALLORESDPFFF_KEY=$A1404,
  909.       DBLPALLORESDPFLACE_KEY=$A1405,
  910.       DBLPALLORESDPF2_KEY=$A1440,
  911.       DBLPALLORESDPF2FF_KEY=$A1444,
  912.       DBLPALLORESDPF2LACE_KEY=$A1445,
  913.       DBLPALHIRES_KEY=$A9000,
  914.       DBLPALHIRESFF_KEY=$A9004,
  915.       DBLPALHIRESHAM_KEY=$A9800,
  916.       DBLPALHIRESHAMFF_KEY=$A9804,
  917.       DBLPALHIRESLACE_KEY=$A9005,
  918.       DBLPALHIRESHAMLACE_KEY=$A9805,
  919.       DBLPALHIRESEHB_KEY=$A9080,
  920.       DBLPALHIRESEHBFF_KEY=$A9084,
  921.       DBLPALHIRESEHBLACE_KEY=$A9085,
  922.       DBLPALHIRESDPF_KEY=$A9400,
  923.       DBLPALHIRESDPFFF_KEY=$A9404,
  924.       DBLPALHIRESDPFLACE_KEY=$A9405,
  925.       DBLPALHIRESDPF2_KEY=$A9440,
  926.       DBLPALHIRESDPF2FF_KEY=$A9444,
  927.       DBLPALHIRESDPF2LACE_KEY=$A9445,
  928.       DBLPALEXTRALORES_KEY=$A1200,
  929.       DBLPALEXTRALORESHAM_KEY=$A1A00,
  930.       DBLPALEXTRALORESEHB_KEY=$A1280,
  931.       DBLPALEXTRALORESDPF_KEY=$A1600,
  932.       DBLPALEXTRALORESDPF2_KEY=$A1640,
  933.       DBLPALEXTRALORESFF_KEY=$A1204,
  934.       DBLPALEXTRALORESHAMFF_KEY=$A1A04,
  935.       DBLPALEXTRALORESEHBFF_KEY=$A1284,
  936.       DBLPALEXTRALORESDPFFF_KEY=$A1604,
  937.       DBLPALEXTRALORESDPF2FF_KEY=$A1644,
  938.       DBLPALEXTRALORESLACE_KEY=$A1205,
  939.       DBLPALEXTRALORESHAMLACE_KEY=$A1A05,
  940.       DBLPALEXTRALORESEHBLACE_KEY=$A1285,
  941.       DBLPALEXTRALORESDPFLACE_KEY=$A1605,
  942.       DBLPALEXTRALORESDPF2LACE_KEY=$A1645,
  943.       MUST_FLAGS=$100E,
  944.       SPECIAL_FLAGS=$100E,
  945.       BIDTAG_DIPFMUSTHAVE=$80000001,
  946.       BIDTAG_DIPFMUSTNOTHAVE=$80000002,
  947.       BIDTAG_VIEWPORT=$80000003,
  948.       BIDTAG_NOMINALWIDTH=$80000004,
  949.       BIDTAG_NOMINALHEIGHT=$80000005,
  950.       BIDTAG_DESIREDWIDTH=$80000006,
  951.       BIDTAG_DESIREDHEIGHT=$80000007,
  952.       BIDTAG_DEPTH=$80000008,
  953.       BIDTAG_MONITORID=$80000009,
  954.       BIDTAG_SOURCEID=$8000000A,
  955.       BIDTAG_REDBITS=$8000000B,
  956.       BIDTAG_BLUEBITS=$8000000C,
  957.       BIDTAG_GREENBITS=$8000000D,
  958.       BIDTAG_GFXPRIVATE=$8000000E
  959.  
  960. OBJECT analogsignalinterval
  961.   start:INT  -> This is unsigned
  962.   stop:INT  -> This is unsigned
  963. ENDOBJECT     /* SIZEOF=4 */
  964.  
  965. OBJECT specialmonitor
  966.   xln:xln
  967.   flags:INT  -> This is unsigned
  968.   do_monitor:LONG
  969.   reserved1:LONG
  970.   reserved2:LONG
  971.   reserved3:LONG
  972.   hblank:analogsignalinterval
  973.   vblank:analogsignalinterval
  974.   hsync:analogsignalinterval
  975.   vsync:analogsignalinterval
  976. ENDOBJECT     /* SIZEOF=58 */
  977.  
  978. OBJECT monitorspec
  979.   xln:xln
  980.   flags:INT  -> This is unsigned
  981.   ratioh:LONG
  982.   ratiov:LONG
  983.   total_rows:INT  -> This is unsigned
  984.   total_colorclocks:INT  -> This is unsigned
  985.   denisemaxdisplaycolumn:INT  -> This is unsigned
  986.   beamcon0:INT  -> This is unsigned
  987.   min_row:INT  -> This is unsigned
  988.   special:PTR TO specialmonitor
  989.   opencount:INT  -> This is unsigned
  990.   transform:LONG
  991.   translate:LONG
  992.   scale:LONG
  993.   xoffset:INT  -> This is unsigned
  994.   yoffset:INT  -> This is unsigned
  995.   legalview:rectangle
  996.   maxoscan:LONG
  997.   videoscan:LONG
  998.   denisemindisplaycolumn:INT  -> This is unsigned
  999.   displaycompatible:LONG
  1000.   displayinfodatabase:lh
  1001.   didbsemaphore:ss
  1002.   mrgcop:LONG
  1003.   loadview:LONG
  1004.   killview:LONG
  1005. ENDOBJECT     /* SIZEOF=160 */
  1006.  
  1007. CONST MSB_REQUEST_NTSC=0,
  1008.       MSB_REQUEST_PAL=1,
  1009.       MSB_REQUEST_SPECIAL=2,
  1010.       MSB_REQUEST_A2024=3,
  1011.       MSB_DOUBLE_SPRITES=4,
  1012.       MSF_REQUEST_NTSC=1,
  1013.       MSF_REQUEST_PAL=2,
  1014.       MSF_REQUEST_SPECIAL=4,
  1015.       MSF_REQUEST_A2024=8,
  1016.       MSF_DOUBLE_SPRITES=16,
  1017.       STANDARD_VIEW_X=$81,
  1018.       STANDARD_VIEW_Y=$2C,
  1019.       TO_MONITOR=0,
  1020.       FROM_MONITOR=1,
  1021.       STANDARD_XOFFSET=9,
  1022.       STANDARD_YOFFSET=0,
  1023.       REQUEST_NTSC=1,
  1024.       REQUEST_PAL=2,
  1025.       REQUEST_SPECIAL=4,
  1026.       REQUEST_A2024=8,
  1027.       STANDARD_MONITOR_MASK=3,
  1028.       STANDARD_NTSC_ROWS=262,
  1029.       STANDARD_PAL_ROWS=312,
  1030.       STANDARD_COLORCLOCKS=226,
  1031.       STANDARD_DENISE_MAX=455,
  1032.       STANDARD_DENISE_MIN=93,
  1033.       STANDARD_NTSC_BEAMCON=0,
  1034.       STANDARD_PAL_BEAMCON=$20,
  1035.       SPECIAL_BEAMCON=$1b8a,
  1036.       MIN_NTSC_ROW=21,
  1037.       MIN_PAL_ROW=29,
  1038.       STANDARD_VIEW_X=$81,
  1039.       STANDARD_VIEW_Y=$2C,
  1040.       STANDARD_HBSTRT=$6,
  1041.       STANDARD_HSSTRT=$B,
  1042.       STANDARD_HSSTOP=$1C,
  1043.       STANDARD_HBSTOP=$2C,
  1044.       STANDARD_VBSTRT=$122,
  1045.       STANDARD_VSSTRT=$2A6,
  1046.       STANDARD_VSSTOP=$3AA,
  1047.       STANDARD_VBSTOP=$1066,
  1048.       VGA_COLORCLOCKS=113,
  1049.       VGA_TOTAL_ROWS=131,
  1050.       VGA_DENISE_MIN=59,
  1051.       MIN_VGA_ROW=29,
  1052.       VGA_HBSTRT=$8,
  1053.       VGA_HSSTRT=$0E,
  1054.       VGA_HSSTOP=$1C,
  1055.       VGA_HBSTOP=$1E,
  1056.       VGA_VBSTRT=0,
  1057.       VGA_VSSTRT=$153,
  1058.       VGA_VSSTOP=$235,
  1059.       VGA_VBSTOP=$CCD,
  1060.       BROADCAST_HBSTRT=$1,
  1061.       BROADCAST_HSSTRT=$6,
  1062.       BROADCAST_HSSTOP=$17,
  1063.       BROADCAST_HBSTOP=$27,
  1064.       BROADCAST_VBSTRT=0,
  1065.       BROADCAST_VSSTRT=$2A6,
  1066.       BROADCAST_VSSTOP=$054C,
  1067.       BROADCAST_VBSTOP=$1C40,
  1068.       BROADCAST_BEAMCON=$808,
  1069.       RATIO_FIXEDPART=4,
  1070.       RATIO_UNITY=16
  1071.  
  1072. #define DEFAULT_MONITOR_NAME 'default.monitor'
  1073. #define NTSC_MONITOR_NAME 'ntsc.monitor'
  1074. #define PAL_MONITOR_NAME 'pal.monitor'
  1075. #define VGA_MONITOR_NAME 'vga.monitor'
  1076.  
  1077. OBJECT tmpras
  1078.   rasptr:PTR TO CHAR
  1079.   size:LONG
  1080. ENDOBJECT     /* SIZEOF=8 */
  1081.  
  1082. OBJECT gelsinfo
  1083.   sprrsrvd:CHAR  -> This is signed
  1084.   flags:CHAR
  1085.   gelhead:PTR TO vs
  1086.   geltail:PTR TO vs
  1087.   nextline:PTR TO INT
  1088. -> This is actually PTR TO PTR TO INT
  1089.   lastcolor:PTR TO LONG
  1090.   collhandler:PTR TO colltable
  1091.   leftmost:INT
  1092.   rightmost:INT
  1093.   topmost:INT
  1094.   bottommost:INT
  1095.   firstblissobj:LONG
  1096.   lastblissobj:LONG
  1097. ENDOBJECT     /* SIZEOF=38 */
  1098.  
  1099. CONST RPF_FRST_DOT=1,
  1100.       RPF_ONE_DOT=2,
  1101.       RPF_DBUFFER=4,
  1102.       RPF_AREAOUTLINE=8,
  1103.       RPF_NOCROSSFILL=$20,
  1104.       RP_JAM1=0,
  1105.       RP_JAM2=1,
  1106.       RP_COMPLEMENT=2,
  1107.       RP_INVERSVID=4,
  1108.       RPF_TXSCALE=1
  1109.  
  1110. CONST RP_AREAPTRN=8,
  1111.       RP_MASK=24,
  1112.       RP_AOLPEN=27,
  1113.       RP_AREAPTSZ=29,
  1114.       RP_LINPATCNT=30,
  1115.       RP_FLAGS=32,
  1116.       RP_LINEPTRN=34
  1117.  
  1118. OBJECT rastport
  1119.   layer:PTR TO layer
  1120.   bitmap:PTR TO bitmap
  1121.   areaptrn:PTR TO INT  -> Target is unsigned
  1122.   tmpras:PTR TO tmpras
  1123.   areainfo:PTR TO areainfo
  1124.   gelsinfo:PTR TO gelsinfo
  1125.   mask:CHAR
  1126.   fgpen:CHAR  -> This is signed
  1127.   bgpen:CHAR  -> This is signed
  1128.   aolpen:CHAR  -> This is signed
  1129.   drawmode:CHAR  -> This is signed
  1130.   areaptsz:CHAR  -> This is signed
  1131.   linpatcnt:CHAR  -> This is signed
  1132.   dummy:CHAR
  1133.   flags:INT  -> This is unsigned
  1134.   lineptrn:INT  -> This is unsigned
  1135.   cp_x:INT
  1136.   cp_y:INT
  1137.   minterms[8]:ARRAY
  1138.   penwidth:INT
  1139.   penheight:INT
  1140.   font:PTR TO textfont
  1141.   algostyle:CHAR
  1142.   txflags:CHAR
  1143.   txheight:INT  -> This is unsigned
  1144.   txwidth:INT  -> This is unsigned
  1145.   txbaseline:INT  -> This is unsigned
  1146.   txspacing:INT
  1147.   rp_user:PTR TO LONG
  1148.   longreserved[2]:ARRAY OF LONG
  1149.   wordreserved[7]:ARRAY OF INT  -> Array is unsigned
  1150.   reserved[8]:ARRAY
  1151. ENDOBJECT     /* SIZEOF=100 */
  1152.  
  1153. OBJECT areainfo
  1154.   vctrtbl:PTR TO INT
  1155.   vctrptr:PTR TO INT
  1156.   flagtbl:PTR TO CHAR  -> Target is signed
  1157.   flagptr:PTR TO CHAR  -> Target is signed
  1158.   count:INT
  1159.   maxcount:INT
  1160.   firstx:INT
  1161.   firsty:INT
  1162. ENDOBJECT     /* SIZEOF=24 */
  1163.  
  1164. CONST ONE_DOTN=1,
  1165.       ONE_DOT=2,
  1166.       FRST_DOTN=0,
  1167.       FRST_DOT=1
  1168.  
  1169.  
  1170. OBJECT region
  1171.   bounds:rectangle
  1172.   regionrectangle:PTR TO regionrectangle
  1173. ENDOBJECT     /* SIZEOF=12 */
  1174.  
  1175. OBJECT regionrectangle
  1176.   next:PTR TO regionrectangle
  1177.   prev:PTR TO regionrectangle
  1178.   bounds:rectangle
  1179. ENDOBJECT     /* SIZEOF=16 */
  1180.  
  1181.  
  1182. CONST RPTAG_FONT=$80000000,
  1183.       RPTAG_APEN=$80000002,
  1184.       RPTAG_BPEN=$80000003,
  1185.       RPTAG_DRMD=$80000004,
  1186.       RPTAG_OUTLINEPEN=$80000005,
  1187.       RPTAG_WRITEMASK=$80000006,
  1188.       RPTAG_MAXPEN=$80000007,
  1189.       RPTAG_DRAWBOUNDS=$80000008
  1190.  
  1191.  
  1192. OBJECT bitscaleargs
  1193.   srcx:INT  -> This is unsigned
  1194.   srcy:INT  -> This is unsigned
  1195.   srcwidth:INT  -> This is unsigned
  1196.   srcheight:INT  -> This is unsigned
  1197.   xsrcfactor:INT  -> This is unsigned
  1198.   ysrcfactor:INT  -> This is unsigned
  1199.   destx:INT  -> This is unsigned
  1200.   desty:INT  -> This is unsigned
  1201.   destwidth:INT  -> This is unsigned
  1202.   destheight:INT  -> This is unsigned
  1203.   xdestfactor:INT  -> This is unsigned
  1204.   ydestfactor:INT  -> This is unsigned
  1205.   srcbitmap:PTR TO bitmap
  1206.   destbitmap:PTR TO bitmap
  1207.   flags:LONG
  1208.   xdda:INT  -> This is unsigned
  1209.   ydda:INT  -> This is unsigned
  1210.   reserved1:LONG
  1211.   reserved2:LONG
  1212. ENDOBJECT     /* SIZEOF=48 */
  1213.  
  1214.  
  1215. OBJECT simplesprite
  1216.   posctldata:PTR TO INT  -> Target is unsigned
  1217.   height:INT  -> This is unsigned
  1218.   x:INT  -> This is unsigned
  1219.   y:INT  -> This is unsigned
  1220.   num:INT  -> This is unsigned
  1221. ENDOBJECT     /* SIZEOF=12 */
  1222.  
  1223. OBJECT extsprite
  1224.   simplesprite:simplesprite
  1225.   wordwidth:INT  -> This is unsigned
  1226.   flags:INT  -> This is unsigned
  1227. ENDOBJECT     /* SIZEOF=16 */
  1228.  
  1229. CONST SPRITEA_WIDTH=$81000000,
  1230.       SPRITEA_XREPLICATION=$81000002,
  1231.       SPRITEA_YREPLICATION=$81000004,
  1232.       SPRITEA_OUTPUTHEIGHT=$81000006,
  1233.       SPRITEA_ATTACHED=$81000008,
  1234.       SPRITEA_OLDDATAFORMAT=$8100000A,
  1235.       GSTAG_SPRITE_NUM=$82000020,
  1236.       GSTAG_ATTACHED=$82000022,
  1237.       GSTAG_SOFTSPRITE=$82000024,
  1238.       GSTAG_SCANDOUBLED=$83000000
  1239.  
  1240.  
  1241. CONST FS_NORMAL=0,
  1242.       FSB_UNDERLINED=0,
  1243.       FSF_UNDERLINED=1,
  1244.       FSB_BOLD=1,
  1245.       FSF_BOLD=2,
  1246.       FSB_ITALIC=2,
  1247.       FSF_ITALIC=4,
  1248.       FSB_EXTENDED=3,
  1249.       FSF_EXTENDED=8,
  1250.       FSB_COLORFONT=6,
  1251.       FSF_COLORFONT=$40,
  1252.       FSB_TAGGED=7,
  1253.       FSF_TAGGED=$80,
  1254.       FPB_ROMFONT=0,
  1255.       FPF_ROMFONT=1,
  1256.       FPB_DISKFONT=1,
  1257.       FPF_DISKFONT=2,
  1258.       FPB_REVPATH=2,
  1259.       FPF_REVPATH=4,
  1260.       FPB_TALLDOT=3,
  1261.       FPF_TALLDOT=8,
  1262.       FPB_WIDEDOT=4,
  1263.       FPF_WIDEDOT=16,
  1264.       FPB_PROPORTIONAL=5,
  1265.       FPF_PROPORTIONAL=$20,
  1266.       FPB_DESIGNED=6,
  1267.       FPF_DESIGNED=$40,
  1268.       FPB_REMOVED=7,
  1269.       FPF_REMOVED=$80
  1270.  
  1271. OBJECT textattr
  1272.   name:LONG
  1273.   ysize:INT  -> This is unsigned
  1274.   style:CHAR
  1275.   flags:CHAR
  1276. ENDOBJECT     /* SIZEOF=8 */
  1277.  
  1278. OBJECT ttextattr
  1279.   name:LONG
  1280.   ysize:INT  -> This is unsigned
  1281.   style:CHAR
  1282.   flags:CHAR
  1283.   tags:PTR TO tagitem
  1284. ENDOBJECT     /* SIZEOF=12 */
  1285.  
  1286. CONST TA_DEVICEDPI=$80000001,
  1287.       MAXFONTMATCHWEIGHT=$7FFF
  1288.  
  1289. OBJECT textfont
  1290.   mn:mn
  1291.   ysize:INT  -> This is unsigned
  1292.   style:CHAR
  1293.   flags:CHAR
  1294.   xsize:INT  -> This is unsigned
  1295.   baseline:INT  -> This is unsigned
  1296.   boldsmear:INT  -> This is unsigned
  1297.   accessors:INT  -> This is unsigned
  1298.   lochar:CHAR
  1299.   hichar:CHAR
  1300.   chardata:PTR TO CHAR
  1301.   modulo:INT  -> This is unsigned
  1302.   charloc:PTR TO INT
  1303.   charspace:PTR TO INT
  1304.   charkern:PTR TO INT
  1305. ENDOBJECT     /* SIZEOF=52 */
  1306.  
  1307. CONST TE0B_NOREMFONT=0,
  1308.       TE0F_NOREMFONT=1
  1309.  
  1310. OBJECT textfontextension
  1311.   matchword:INT  -> This is unsigned
  1312.   flags0:CHAR
  1313.   flags1:CHAR
  1314.   backptr:PTR TO textfont
  1315.   origreplyport:PTR TO mp
  1316.   tags:PTR TO tagitem
  1317.   ofontpatchs:PTR TO INT  -> Target is unsigned
  1318.   ofontpatchk:PTR TO INT  -> Target is unsigned
  1319. ENDOBJECT     /* SIZEOF=24 */
  1320.  
  1321. CONST CT_COLORFONT=1,
  1322.       CT_GREYFONT=2,
  1323.       CT_ANTIALIAS=4,
  1324.       CTB_MAPCOLOR=0,
  1325.       CTF_MAPCOLOR=1,
  1326.       CT_COLORMASK=$f
  1327.  
  1328. OBJECT colorfontcolors
  1329.   reserved:INT
  1330.   count:INT  -> This is unsigned
  1331.   colortable:PTR TO INT  -> Target is unsigned
  1332. ENDOBJECT     /* SIZEOF=8 */
  1333.  
  1334. OBJECT colortextfont
  1335.   textfont:textfont
  1336.   flags:INT  -> This is unsigned
  1337.   depth:CHAR
  1338.   fgcolor:CHAR
  1339.   low:CHAR
  1340.   high:CHAR
  1341.   planepick:CHAR
  1342.   planeonoff:CHAR
  1343.   colorfontcolors:PTR TO colorfontcolors
  1344.   chardata[8]:ARRAY OF LONG
  1345. ENDOBJECT     /* SIZEOF=96 */
  1346.  
  1347. OBJECT textextent
  1348.   width:INT  -> This is unsigned
  1349.   height:INT  -> This is unsigned
  1350.   extent:rectangle
  1351. ENDOBJECT     /* SIZEOF=12 */
  1352.  
  1353.  
  1354. CONST VTAG_END_CM=0,
  1355.       VTAG_CHROMAKEY_CLR=$80000000,
  1356.       VTAG_CHROMAKEY_SET=$80000001,
  1357.       VTAG_BITPLANEKEY_CLR=$80000002,
  1358.       VTAG_BITPLANEKEY_SET=$80000003,
  1359.       VTAG_BORDERBLANK_CLR=$80000004,
  1360.       VTAG_BORDERBLANK_SET=$80000005,
  1361.       VTAG_BORDERNOTRANS_CLR=$80000006,
  1362.       VTAG_BORDERNOTRANS_SET=$80000007,
  1363.       VTAG_CHROMA_PEN_CLR=$80000008,
  1364.       VTAG_CHROMA_PEN_SET=$80000009,
  1365.       VTAG_CHROMA_PLANE_SET=$8000000A,
  1366.       VTAG_ATTACH_CM_SET=$8000000B,
  1367.       VTAG_NEXTBUF_CM=$8000000C,
  1368.       VTAG_BATCH_CM_CLR=$8000000D,
  1369.       VTAG_BATCH_CM_SET=$8000000E,
  1370.       VTAG_NORMAL_DISP_GET=$8000000F,
  1371.       VTAG_NORMAL_DISP_SET=$80000010,
  1372.       VTAG_COERCE_DISP_GET=$80000011,
  1373.       VTAG_COERCE_DISP_SET=$80000012,
  1374.       VTAG_VIEWPORTEXTRA_GET=$80000013,
  1375.       VTAG_VIEWPORTEXTRA_SET=$80000014,
  1376.       VTAG_CHROMAKEY_GET=$80000015,
  1377.       VTAG_BITPLANEKEY_GET=$80000016,
  1378.       VTAG_BORDERBLANK_GET=$80000017,
  1379.       VTAG_BORDERNOTRANS_GET=$80000018,
  1380.       VTAG_CHROMA_PEN_GET=$80000019,
  1381.       VTAG_CHROMA_PLANE_GET=$8000001A,
  1382.       VTAG_ATTACH_CM_GET=$8000001B,
  1383.       VTAG_BATCH_CM_GET=$8000001C,
  1384.       VTAG_BATCH_ITEMS_GET=$8000001D,
  1385.       VTAG_BATCH_ITEMS_SET=$8000001E,
  1386.       VTAG_BATCH_ITEMS_ADD=$8000001F,
  1387.       VTAG_VPMODEID_GET=$80000020,
  1388.       VTAG_VPMODEID_SET=$80000021,
  1389.       VTAG_VPMODEID_CLR=$80000022,
  1390.       VTAG_USERCLIP_GET=$80000023,
  1391.       VTAG_USERCLIP_SET=$80000024,
  1392.       VTAG_USERCLIP_CLR=$80000025,
  1393.       VTAG_PF1_BASE_GET=$80000026,
  1394.       VTAG_PF2_BASE_GET=$80000027,
  1395.       VTAG_SPEVEN_BASE_GET=$80000028,
  1396.       VTAG_SPODD_BASE_GET=$80000029,
  1397.       VTAG_PF1_BASE_SET=$8000002A,
  1398.       VTAG_PF2_BASE_SET=$8000002B,
  1399.       VTAG_SPEVEN_BASE_SET=$8000002C,
  1400.       VTAG_SPODD_BASE_SET=$8000002D,
  1401.       VTAG_BORDERSPRITE_GET=$8000002E,
  1402.       VTAG_BORDERSPRITE_SET=$8000002F,
  1403.       VTAG_BORDERSPRITE_CLR=$80000030,
  1404.       VTAG_SPRITERESN_SET=$80000031,
  1405.       VTAG_SPRITERESN_GET=$80000032,
  1406.       VTAG_PF1_TO_SPRITEPRI_SET=$80000033,
  1407.       VTAG_PF1_TO_SPRITEPRI_GET=$80000034,
  1408.       VTAG_PF2_TO_SPRITEPRI_SET=$80000035,
  1409.       VTAG_PF2_TO_SPRITEPRI_GET=$80000036,
  1410.       VTAG_IMMEDIATE=$80000037,
  1411.       VTAG_FULLPALETTE_SET=$80000038,
  1412.       VTAG_FULLPALETTE_GET=$80000039,
  1413.       VTAG_FULLPALETTE_CLR=$8000003A,
  1414.       VTAG_DEFSPRITERESN_SET=$8000003B,
  1415.       VTAG_DEFSPRITERESN_GET=$8000003C,
  1416.       VC_INTERMEDIATECLUPDATE=$80000080,
  1417.       VC_INTERMEDIATECLUPDATE_QUERY=$80000081,
  1418.       VC_NOCOLORPALETTELOAD=$80000082,
  1419.       VC_NOCOLORPALETTELOAD_QUERY=$80000083,
  1420.       VC_DUALPF_DISABLE=$80000084,
  1421.       VC_DUALPF_DISABLE_QUERY=$80000085
  1422.  
  1423. CONST GENLOCK_VIDEO=2,
  1424.       V_LACE=4,
  1425.       V_DOUBLESCAN=8,
  1426.       V_SUPERHIRES=$20,
  1427.       V_PFBA=$40,
  1428.       V_EXTRA_HALFBRITE=$80,
  1429.       GENLOCK_AUDIO=$100,
  1430.       V_DUALPF=$400,
  1431.       V_HAM=$800,
  1432.       V_EXTENDED_MODE=$1000,
  1433.       V_VP_HIDE=$2000,
  1434.       V_SPRITES=$4000,
  1435.       V_HIRES=$8000,
  1436.       EXTEND_VSTRUCT=$1000,
  1437.       VPF_A2024=$40,
  1438.       VPF_TENHZ=16,
  1439.       VPB_A2024=6,
  1440.       VPB_TENHZ=4
  1441.  
  1442. OBJECT colormap
  1443.   flags:CHAR
  1444.   type:CHAR
  1445.   count:INT  -> This is unsigned
  1446.   colortable:LONG
  1447.   vpe:PTR TO viewportextra
  1448.   lowcolorbits:LONG
  1449.   transparencyplane:CHAR
  1450.   spriteresolution:CHAR
  1451.   spriteresdefault:CHAR
  1452.   auxflags:CHAR
  1453.   vp:PTR TO viewport
  1454.   normaldisplayinfo:LONG
  1455.   coercedisplayinfo:LONG
  1456.   batch_items:PTR TO tagitem
  1457.   vpmodeid:LONG
  1458.   palextra:PTR TO paletteextra
  1459.   spritebase_even:INT  -> This is unsigned
  1460.   spritebase_odd:INT  -> This is unsigned
  1461.   bp_0_base:INT  -> This is unsigned
  1462.   bp_1_base:INT  -> This is unsigned
  1463. ENDOBJECT     /* SIZEOF=52 */
  1464.  
  1465. CONST CM_TRANSPARENYPLANE=16,
  1466.       COLORMAP_TYPE_V1_2=0,
  1467.       COLORMAP_TYPE_V1_4=1,
  1468.       COLORMAP_TYPE_V36=1,
  1469.       COLORMAP_TYPE_V39=2,
  1470.       COLORMAP_TRANSPARENCY=1,
  1471.       COLORPLANE_TRANSPARENCY=2,
  1472.       BORDER_BLANKING=4,
  1473.       BORDER_NOTRANSPARENCY=8,
  1474.       VIDEOCONTROL_BATCH=16,
  1475.       USER_COPPER_CLIP=$20,
  1476.       BORDER_SPRITES=$40,
  1477.       CMF_CMTRANS=1,
  1478.       CMF_CPTRANS=2,
  1479.       CMF_BRDRBLNK=4,
  1480.       CMF_BRDNTRAN=8,
  1481.       CMF_BRDRSPRT=$40,
  1482.       CMB_CMTRANS=0,
  1483.       CMB_CPTRANS=1,
  1484.       CMB_BRDRBLNK=2,
  1485.       CMB_BRDNTRAN=3,
  1486.       CMB_BRDRSPRT=6,
  1487.       SPRITERESN_ECS=0,
  1488.       SPRITERESN_140NS=1,
  1489.       SPRITERESN_70NS=2,
  1490.       SPRITERESN_35NS=3,
  1491.       SPRITERESN_DEFAULT=-1,
  1492.       CMAF_FULLPALETTE=1,
  1493.       CMAB_FULLPALETTE=0,
  1494.       CMAF_NO_INTERMED_UPDATE=2,
  1495.       CMAB_NO_INTERMED_UPDATE=1,
  1496.       CMAF_NO_COLOR_LOAD=4,
  1497.       CMAB_NO_COLOR_LOAD=2,
  1498.       CMAF_DUALPF_DISABLE=3,
  1499.       CMAB_DUALPF_DISABLE=8
  1500.  
  1501. OBJECT paletteextra
  1502.   semaphore:ss
  1503.   firstfree:INT  -> This is unsigned
  1504.   nfree:INT  -> This is unsigned
  1505.   firstshared:INT  -> This is unsigned
  1506.   nshared:INT  -> This is unsigned
  1507.   refcnt:LONG
  1508.   alloclist:LONG
  1509.   viewport:PTR TO viewport
  1510.   sharablecolors:INT  -> This is unsigned
  1511. ENDOBJECT     /* SIZEOF=68 */
  1512.  
  1513. CONST PRECISION_EXACT=-1,
  1514.       PRECISION_IMAGE=0,
  1515.       PRECISION_ICON=16,
  1516.       PRECISION_GUI=$20,
  1517.       OBP_PRECISION=$84000000,
  1518.       OBP_FAILIFBAD=$84000001,
  1519.       PEN_EXCLUSIVE=1,
  1520.       PEN_NO_SETCOLOR=2,
  1521.       PENF_EXCLUSIVE=1,
  1522.       PENF_NO_SETCOLOR=2,
  1523.       PENB_EXCLUSIVE=0,
  1524.       PENB_NO_SETCOLOR=1
  1525.  
  1526. OBJECT viewport
  1527.   next:PTR TO viewport
  1528.   colormap:PTR TO colormap
  1529.   dspins:PTR TO coplist
  1530.   sprins:PTR TO coplist
  1531.   clrins:PTR TO coplist
  1532.   ucopins:PTR TO ucoplist
  1533.   dwidth:INT
  1534.   dheight:INT
  1535.   dxoffset:INT
  1536.   dyoffset:INT
  1537.   modes:INT  -> This is unsigned
  1538.   spritepriorities:CHAR
  1539.   extendedmodes:CHAR
  1540.   rasinfo:PTR TO rasinfo
  1541. ENDOBJECT     /* SIZEOF=40 */
  1542.  
  1543. OBJECT view
  1544.   viewport:PTR TO viewport
  1545.   lofcprlist:PTR TO cprlist
  1546.   shfcprlist:PTR TO cprlist
  1547.   dyoffset:INT
  1548.   dxoffset:INT
  1549.   modes:INT  -> This is unsigned
  1550. ENDOBJECT     /* SIZEOF=18 */
  1551.  
  1552. OBJECT viewextra
  1553.   xln:xln
  1554.   view:PTR TO view
  1555.   monitor:PTR TO monitorspec
  1556.   topline:INT  -> This is unsigned
  1557. ENDOBJECT     /* SIZEOF=34 */
  1558.  
  1559. OBJECT viewportextra
  1560.   xln:xln
  1561.   viewport:PTR TO viewport
  1562.   displayclip:rectangle
  1563.   vectable:LONG
  1564.   driverdata[2]:ARRAY OF LONG
  1565.   flags:INT  -> This is unsigned
  1566.   origin[2]:ARRAY OF tpoint
  1567.   cop1ptr:LONG
  1568.   cop2ptr:LONG
  1569. ENDOBJECT     /* SIZEOF=58 */
  1570.  
  1571. CONST VPXB_FREE_ME=0,
  1572.       VPXF_FREE_ME=1,
  1573.       VPXB_VP_LAST=1,
  1574.       VPXF_VP_LAST=2,
  1575.       VPXB_STRADDLES_256=4,
  1576.       VPXF_STRADDLES_256=16,
  1577.       VPXB_STRADDLES_512=5,
  1578.       VPXF_STRADDLES_512=$20
  1579.  
  1580. OBJECT rasinfo
  1581.   next:PTR TO rasinfo
  1582.   bitmap:PTR TO bitmap
  1583.   rxoffset:INT
  1584.   ryoffset:INT
  1585. ENDOBJECT     /* SIZEOF=12 */
  1586.  
  1587. CONST MVP_OK=0,
  1588.       MVP_NO_MEM=1,
  1589.       MVP_NO_VPE=2,
  1590.       MVP_NO_DSPINS=3,
  1591.       MVP_NO_DISPLAY=4,
  1592.       MVP_OFF_BOTTOM=5,
  1593.       MCOP_OK=0,
  1594.       MCOP_NO_MEM=1,
  1595.       MCOP_NOP=2
  1596.  
  1597. OBJECT dbufinfo
  1598.   link1:LONG
  1599.   count1:LONG
  1600.   safemessage:mn
  1601.   userdata1:LONG
  1602.   link2:LONG
  1603.   count2:LONG
  1604.   dispmessage:mn
  1605.   userdata2:LONG
  1606.   matchlong:LONG
  1607.   copptr1:LONG
  1608.   copptr2:LONG
  1609.   copptr3:LONG
  1610.   beampos1:INT  -> This is unsigned
  1611.   beampos2:INT  -> This is unsigned
  1612. ENDOBJECT     /* SIZEOF=84 */
  1613.  
  1614.