home *** CD-ROM | disk | FTP | other *** search
- ; ************************************************************************
- ; File: Device.inc
- ;
- ; Copyright (c) 1988,1989 Borland International, Inc.
- ;
- ; Purpose: define all the strucs/macros for the BGI interface
- ;
- ; Last Update: 9/30/88
- ;
- ; Updates:
- ;
- ; ************************************************************************
-
- callBGI macro p
- ifndef BGI_add ; long call device driver ovr
- extrn BGI_add:dword ; though pointer to driver
- endif
- mov si,$&p ; (si) is the function code
- call dword ptr BGI_add
- endm
-
- BGIstat macro p ; get es:<si> --> ddo status
- ifndef stable
- extrn stable:dword
- endif
- les si,cs:dword ptr stable ; get location of status to si
- add si,$&p ; offset to correct location
- endm
-
- ; **********************************************************************
-
- ; The following macro builds the required BGI header block
-
- BGI macro name ; the following macro builds
- public name ; the required ddo header block
- name proc far ; the vector table must be at
- ; 'ddovec' if vector not speced
- push ds ; (push ds, push cs are signature)
- push cs ; make ds=cs
- pop ds
- cld ; just in case
- push bp ; 6 bytes
- call [DDOVEC+si] ; call the local function
- pop bp
- pop ds ; restore
- ret ; far
- name endp
- db 'CB' ; just for fun
- dw ?
- EMULATE:ret ; emulate function (nop until
- dw 0,0 ; patched by loader)
- RESERVED:
- NONE: ret ; near ret for unused functions
- endm
-
- ; ************** the device driver vector table definition **************
-
- $ddo struc
-
- $install dw ? ; install device.
- ; required to return es:<bx> to status table.
-
- $init dw ? ; (bh)=texture (bl)= background color to use.
- ; ready device for output.
- ; es:[di] --> rotate,xclip1,yclip1,xclip2,yclip2
-
- $clear dw ? ; clear graphics device and ready it for
- ; output.
-
- $post dw ? ; make picture visible. used for making
- ; printer bitmaps visible, for unloading
- ; the plotter pen, or for restoring screen.
-
- $move dw ? ; used by text, arc, symbol, draw, fill etc.
- ; set c.p. (ax,bx) = (x,y)
-
- $draw dw ? ; draw to (ax,bx) = (x,y)
-
- $vect dw ? ; (ax,bx,cx,dx) = x0,y0,x1,y1
-
- $poly dw ? ; draw polygon.
- ; ax=0 start new polygon definition
- ; ax=1 close and trace poly
- ; ax=2 close, fill poly and trace
- ; ax=3 close and fill poly
- ; ax=4 draw points and don't capture
- ; ax=5 turn off polygon capture
- ; ax=6 draw polygon at es:[bx] and (cx) points
- ; ax=7 fill & trace polygon at es:[bx] with (cx) points
- ; ax=8 fill polygon at es:[bx] with (cx) points
-
- $dbar dw ? ; bar fill (cpx,cpy,ax,bx)=x0,y0,x1,y1
- ; (bx,cx)=dx,dy for 3d (with outline)
-
- $patbar dw ? ; pattern bar (no outline)
-
- $darc dw ? ; draw arc
-
- $piesl dw ? ; (ax,bx)= start ang, end ang
- ; (cx,dx)= x radius, y radius
- ; center is a cp. (with outline)
-
- $fellipse dw ? ; (ab,bx) = x radius, yradius
- ; (no outline)
-
- $palette dw ? ; load a palette entry
- ; (ax)=entry # (bx)=value
- ; if (ax)=-1 set background
-
- $allpalette dw ? ; load the full palette
- ; es:[bx] --> palette array
-
- $color dw ? ; set active draw color & pattern fill color
- ; (al)= draw (trace) color (ah)=fill color
-
- $fstyle dw ? ; (al)=fill pattern #
- ; (al)=0 no fill, 1 solid ...
- ; (ah)=background color (normally 0)
- ; (used only if pattern in al > 80h)
- ; if (al)=ff es:<bx>--> pattern definition
-
- $lstyle dw ? ; (al)=0(solid) 1(dotted) 2(centerline) 3(dash)
- ; 4(use pattern) (bx)=bit pattern
- ; (cx)=line width (normally one)
-
- $tstyle dw ? ; (al)=font (ah)=style
- ; (bx)=x charsize (cx)=y charsize
- ; if (al)=ff es:<bx>--> font definition table
- ; changes all params to those available.
-
- $text dw ? ; draw text. es:<bx> --> <string>, (0)
-
- $textsize dw ? ; text length.
-
- $textinfo dw ? ; extended text settings.
-
- $flood dw ? ; floodfill (ax,bx) = x,y seed coordinate.
-
- $getpix dw ? ; read pixel @(ax,bx) to (dl)
-
- $putpix dw ? ; put (dl) to pixel @(ax,bx)
-
- $bitmaputil dw ? ; returns (es:[bx]) = bitmap utilities.
- ; dw gotographic
- ; dw exitgraphic
- ; dw putpix
- ; dw getpix
- ; dw pixelsperbyte
- ; dw setwritemode
-
- $savebitmap dw ? ; es:[bx]--> buffer to save bitmap to.
- ; contain bitmap size (pixels) in 1st 2 words
- ; cx = start x dx = start line # y
-
-
- $restorebitmap dw ? ; es:[bx]--> bitmap buffer to restore.
- ; contains bitmap size (pixels) in 1st 2 words
- ; cx=start x dx= start y to put
- ; (al) = bitblt op (copy, xor, comp, etc.)
-
- $setclip dw ? ; extended function to set clip window
- ; (ax,bx)-(cx,dx) = clip rectangle
-
- $query_color dw ? ; extended function for color information
-
- $escape dw ? ; escape function for direct i/o
-
- $symbol dw ? ; draw symbol (al) = symbol #
- ; if (al)=ff es:<bx>--> symbol definition
-
- $reserve dw ? ; 32 reserved entry points
-
- $user dw ? ; User available entry points
-
- $ddo ends
-
- ; ************** the device driver status table definition **************
-
- $status struc
- $stat db 0 ; 0 = no errors
- $devtyp db 0 ; device type 0=screen 1=printer 2=plotter
- $xres dw 639 ; full resolution
- $yres dw 199
- $xefres dw 639 ; effective resolution
- $yefres dw 199
- $xinch dw 9000 ; device size in inches*1000
- $yinch dw 7000
- $aspec dw 21200 ; aspect ratio
- $chsiz dw 808h ; standard char size x,y (points)
- $coltbl dw 9090h ; color tables
- $status ends
-
- ; **********************************************************************
- ; this struc defines the info struc returned from the
- ; bgi bitmaputil function call @(es:[bx])
- $bitmapinfo struc
- $gotographic dw ?
- $exitgraphic dw ?
- $putpixel dw ?
- $getpixel dw ?
- $bitsperpixel dw ?
- $setpage dw ? ; draw page in (al)
- $setvisual dw ? ; visual display page (al)
- $setwritemode dw ? ; set write mode (al)
- $bitmapinfo ends
-