;"VGAXXX_M.MSF" ("MACSFOR.LIB" FORTRAN-CALLABLE LIBRARY SUBROUTINES) ;$ABSTRACT ; VGAXXX_M -- A collection of MULTIPLE subroutines for graphics manipulation. ;$DESCRIPTION ; The VGAXXX_M library module contains a set of subroutines for performing ;graphics functions. ;$AUTHOR ; Written by E. Nicholas Cupery 19 DEC 88 ;$MODIFICATION_HISTORY ; 03 JUN 92 ENC ADDED CALL TO "NOCTRLC" IN VGA_INIT_M ;$VERSION ; v1.1 ;$CALLING_SEQUENCE ; CALL VGA_INIT_M (STATUS,ADAPTYP,MONITYP,MONOFLAG,BIOSTYP) ; CALL VGA_MODE_M (MODECOD,MONOTOP,MONOBOT,STATUS,HRES,VRES,NCLRS) ; CALL VGA_LOAD_1_COLOR_DAC_M (DACNUM,REDVAL,GRNVAL,BLUVAL) ; CALL VGA_SET_DEFAULTS_M () ; CALL VGA_SET_COLOR_M (COLOR) ; CALL VGA_SET_BAK_COLOR_M (COLOR) ; CALL VGA_SET_BLINK_M (YESNO) ; CALL VGA_SET_CHAR_SIZE_M (SIZECODE,STATUS) ; CALL VGA_SET_CHAR_ORI_M (ORICODE,STATUS) ; CALL VGA_SET_STRING_DIR_M (DIRCODE,STATUS) ; CALL VGA_DRAW_DOT_M (X1,Y1) ; CALL VGA_DRAW_LINE_M (X1,Y1,X2,Y2) ; CALL VGA_DRAW_RECT_M (X1,Y1,X2,Y2) ; CALL VGA_FILL_RECT_M (X1,Y1,X2,Y2) ; CALL VGA_DRAW_DIAMOND_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_DRAW_DIAMOND_HALF_TOP_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_DRAW_DIAMOND_HALF_LEFT_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_DRAW_DIAMOND_HALF_BOTTOM_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_DRAW_DIAMOND_HALF_RIGHT_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_DRAW_DIAMOND_QTR_UR_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_DRAW_DIAMOND_QTR_UL_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_DRAW_DIAMOND_QTR_LL_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_DRAW_DIAMOND_QTR_LR_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_FILL_DIAMOND_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_FILL_DIAMOND_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_FILL_DIAMOND_HALF_TOP_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_FILL_DIAMOND_HALF_LEFT_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_FILL_DIAMOND_HALF_BOTTOM_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_FILL_DIAMOND_HALF_RIGHT_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_FILL_DIAMOND_QTR_UR_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_FILL_DIAMOND_QTR_UL_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_FILL_DIAMOND_QTR_LL_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_FILL_DIAMOND_QTR_LR_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_DRAW_CIRCLE_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_DRAW_CIRCLE_HALF_TOP_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_DRAW_CIRCLE_HALF_LEFT_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_DRAW_CIRCLE_HALF_BOTTOM_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_DRAW_CIRCLE_HALF_RIGHT_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_DRAW_CIRCLE_QTR_UR_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_DRAW_CIRCLE_QTR_UL_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_DRAW_CIRCLE_QTR_LL_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_DRAW_CIRCLE_QTR_LR_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_FILL_CIRCLE_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_FILL_CIRCLE_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_FILL_CIRCLE_HALF_TOP_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_FILL_CIRCLE_HALF_LEFT_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_FILL_CIRCLE_HALF_BOTTOM_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_FILL_CIRCLE_HALF_RIGHT_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_FILL_CIRCLE_QTR_UR_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_FILL_CIRCLE_QTR_UL_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_FILL_CIRCLE_QTR_LL_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_FILL_CIRCLE_QTR_LR_M (XCENTER,YCENTER,RADIUS) ; CALL VGA_DRAW_ELLIPSE_M (XCENTER,YCENTER,XRADIUS,YRADIUS) ; CALL VGA_DRAW_ELLIPSE_HALF_TOP_M (XCENTER,YCENTER,XRADIUS,YRADIUS) ; CALL VGA_DRAW_ELLIPSE_HALF_LEFT_M (XCENTER,YCENTER,XRADIUS,YRADIUS) ; CALL VGA_DRAW_ELLIPSE_HALF_BOTTOM_M (XCENTER,YCENTER,XRADIUS,YRADIUS) ; CALL VGA_DRAW_ELLIPSE_HALF_RIGHT_M (XCENTER,YCENTER,XRADIUS,YRADIUS) ; CALL VGA_DRAW_ELLIPSE_QTR_UR_M (XCENTER,YCENTER,XRADIUS,YRADIUS) ; CALL VGA_DRAW_ELLIPSE_QTR_UL_M (XCENTER,YCENTER,XRADIUS,YRADIUS) ; CALL VGA_DRAW_ELLIPSE_QTR_LL_M (XCENTER,YCENTER,XRADIUS,YRADIUS) ; CALL VGA_DRAW_ELLIPSE_QTR_LR_M (XCENTER,YCENTER,XRADIUS,YRADIUS) ; CALL VGA_FILL_ELLIPSE_M (XCENTER,YCENTER,XRADIUS,YRADIUS) ; CALL VGA_FILL_ELLIPSE_M (XCENTER,YCENTER,XRADIUS,YRADIUS) ; CALL VGA_FILL_ELLIPSE_HALF_TOP_M (XCENTER,YCENTER,XRADIUS,YRADIUS) ; CALL VGA_FILL_ELLIPSE_HALF_LEFT_M (XCENTER,YCENTER,XRADIUS,YRADIUS) ; CALL VGA_FILL_ELLIPSE_HALF_BOTTOM_M (XCENTER,YCENTER,XRADIUS,YRADIUS) ; CALL VGA_FILL_ELLIPSE_HALF_RIGHT_M (XCENTER,YCENTER,XRADIUS,YRADIUS) ; CALL VGA_FILL_ELLIPSE_QTR_UR_M (XCENTER,YCENTER,XRADIUS,YRADIUS) ; CALL VGA_FILL_ELLIPSE_QTR_UL_M (XCENTER,YCENTER,XRADIUS,YRADIUS) ; CALL VGA_FILL_ELLIPSE_QTR_LL_M (XCENTER,YCENTER,XRADIUS,YRADIUS) ; CALL VGA_FILL_ELLIPSE_QTR_LR_M (XCENTER,YCENTER,XRADIUS,YRADIUS) ; CALL VGA_DRAW_CHAR_M (X1,Y1,CHARBYTE) ; CALL VGA_DRAW_STRING_M (X1,Y1,STRING,STRLEN) ; CALL VGA_DRAW_STRINGZ_M (X1,Y1,STRINGZ) ; CALL VGA_DRAW_STRINGT_M (X1,Y1,STRINGT) ; CALL VGA_RESTORE_M (ZEROFLAG) ;$INPUT_ARGUMENTS ; ADAPTYP -- Video adapter type-code [INTEGER*2] ; BIOSTYP -- Actual BIOS non-mono video subsystem type-code [INTEGER*2] ; BLUVAL -- Blue color value for color DAC (0-63) [INTEGER*2] ; CHARBYTE -- A byte containing an ASCII character-code [BYTE] ; COLOR -- Color-number (7,15,255 max, depending on mode) [INTEGER*2] ; DACNUM -- Color Digital-to-Analog Converter number (0-255)[INTEGER*2] ; DIRCODE -- String direction-code (0=across;1=down;2=up) [INTEGER*2] ; GRNVAL -- Green color value for color DAC (0-63) [INTEGER*2] ; MODECOD -- Mode type-code (for "VGA_MODE_M" only) [INTEGER*2] ; MONITYP -- Video monitor type-code [INTEGER*2] ; MONOBOT -- Bottom scan-line for mono cursor (VGA_MODE_M) [INTEGER*2] ; MONOFLAG -- "Monochrome system allowed" flag (0=NO) [INTEGER*2] ; MONOTOP -- Top scan-line for mono cursor (for VGA_MODE_M) [INTEGER*2] ; ORICODE -- Text orientation-code (0=normal;1=faceup;2=down)[INTEGER*2] ; RADIUS -- Radius length of graphic objects [INTEGER*2] ; REDVAL -- Red color value for color DAC (0-63) [INTEGER*2] ; SIZECODE -- Text size-code (0=small;1=normal;2=lrge;3=xlrge)[INTEGER*2] ; STRING -- Byte array of ASCII characters [BYTE ARRAY] ; STRINGT -- Byte array of ASCIT characters (ends in Tilde) [BYTE ARRAY] ; STRINGZ -- Byte array of ASCIZ characters [BYTE ARRAY] ; STRLEN -- String length in bytes [INTEGER*2] ; X1 -- Starting x-coordinate [INTEGER*2] ; X2 -- Ending x-coordinate [INTEGER*2] ; XCENTER -- X-coordinate of center of graphic objects [INTEGER*2] ; XRADIUS -- Horizontal radius of ellipse [INTEGER*2] ; Y1 -- Starting y-coordinate [INTEGER*2] ; Y2 -- Ending y-coordinate [INTEGER*2] ; YCENTER -- Y-coordinate of center of graphic objects [INTEGER*2] ; YESNO -- Yes/No flag (0 = no ; anything else = yes) [INTEGER*2] ; YRADIUS -- Vertical radius of ellipse [INTEGER*2] ; ZEROFLAG -- Flag to cause exit restoration of slashed zero [INTEGER*2] ;$OUTPUT_ARGUMENTS ; STATUS -- Final status from subroutine call [INTEGER*2] ; 0 = Success ;= See individual subroutine descriptions ; ; HRES -- Horizontal resolution (from VGA_MODE_M) [INTEGER*2] ; MONOFLAG -- "Monochrome system also available" flag [INTEGER*2] ; NCLRS -- Number of displayable colors (from VGA_MODE_M) [INTEGER*2] ; VRES -- Vertical resolution (from VGA_MODE_M) [INTEGER*2] ; ;$END_SECTION PUBLIC VGA_INIT_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_MODE_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_LOAD_1_COLOR_DAC_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_SET_DEFAULTS_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_SET_COLOR_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_SET_BAK_COLOR_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_SET_BLINK_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_SET_CHAR_SIZE_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_SET_CHAR_ORI_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_SET_STRING_DIR_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_DOT_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_LINE_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_RECT_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_FILL_RECT_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_DIAMOND_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_DIAMOND_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_DIAMOND_HALF_TOP_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_DIAMOND_HALF_LEFT_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_DIAMOND_HALF_BOTTOM_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_DIAMOND_HALF_RIGHT_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_DIAMOND_QTR_UR_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_DIAMOND_QTR_UL_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_DIAMOND_QTR_LL_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_DIAMOND_QTR_LR_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_FILL_DIAMOND_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_FILL_DIAMOND_HALF_TOP_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_FILL_DIAMOND_HALF_LEFT_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_FILL_DIAMOND_HALF_BOTTOM_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_FILL_DIAMOND_HALF_RIGHT_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_FILL_DIAMOND_QTR_UR_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_FILL_DIAMOND_QTR_UL_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_FILL_DIAMOND_QTR_LL_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_FILL_DIAMOND_QTR_LR_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_CIRCLE_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_CIRCLE_HALF_TOP_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_CIRCLE_HALF_LEFT_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_CIRCLE_HALF_BOTTOM_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_CIRCLE_HALF_RIGHT_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_CIRCLE_QTR_UR_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_CIRCLE_QTR_UL_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_CIRCLE_QTR_LL_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_CIRCLE_QTR_LR_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_FILL_CIRCLE_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_FILL_CIRCLE_HALF_TOP_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_FILL_CIRCLE_HALF_LEFT_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_FILL_CIRCLE_HALF_BOTTOM_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_FILL_CIRCLE_HALF_RIGHT_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_FILL_CIRCLE_QTR_UR_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_FILL_CIRCLE_QTR_UL_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_FILL_CIRCLE_QTR_LL_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_FILL_CIRCLE_QTR_LR_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_ELLIPSE_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_ELLIPSE_HALF_TOP_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_ELLIPSE_HALF_LEFT_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_ELLIPSE_HALF_BOTTOM_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_ELLIPSE_HALF_RIGHT_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_ELLIPSE_QTR_UR_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_ELLIPSE_QTR_UL_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_ELLIPSE_QTR_LL_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_ELLIPSE_QTR_LR_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_FILL_ELLIPSE_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_FILL_ELLIPSE_HALF_TOP_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_FILL_ELLIPSE_HALF_LEFT_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_FILL_ELLIPSE_HALF_BOTTOM_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_FILL_ELLIPSE_HALF_RIGHT_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_FILL_ELLIPSE_QTR_UR_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_FILL_ELLIPSE_QTR_UL_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_FILL_ELLIPSE_QTR_LL_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_FILL_ELLIPSE_QTR_LR_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_CHAR_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_STRING_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_STRINGZ_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_DRAW_STRINGT_M ;MAKE THIS (FAR) ROUTINE GLOBAL PUBLIC VGA_RESTORE_M ;MAKE THIS (FAR) ROUTINE GLOBAL EXTRN VGA_INIT$:NEAR ;NEAR SUBROUTINE IN MACUSER.LIB EXTRN VGA_MODE$:NEAR ;NEAR SUBROUTINE IN MACUSER.LIB EXTRN VGA_SET_DEFAULTS$:NEAR ;NEAR SUBROUTINE IN MACUSER.LIB EXTRN VGA_SET_COLOR$:NEAR ;NEAR SUBROUTINE IN MACUSER.LIB EXTRN VGA_SET_BAK_COLOR$:NEAR ;NEAR SUBROUTINE IN MACUSER.LIB EXTRN VGA_SET_BLINK$:NEAR ;NEAR SUBROUTINE IN MACUSER.LIB EXTRN VGA_SET_CHAR_SIZE$:NEAR ;NEAR SUBROUTINE IN MACUSER.LIB EXTRN VGA_SET_CHAR_ORI$:NEAR ;NEAR SUBROUTINE IN MACUSER.LIB EXTRN VGA_SET_STRING_DIR$:NEAR ;NEAR SUBROUTINE IN MACUSER.LIB EXTRN VGA_DRAW_DOT$:NEAR ;NEAR SUBROUTINE IN MACUSER.LIB EXTRN VGA_DRAW_LINE$:NEAR ;NEAR SUBROUTINE IN MACUSER.LIB EXTRN VGA_DRAW_RECT$:NEAR ;NEAR SUBROUTINE IN MACUSER.LIB EXTRN VGA_FILL_RECT$:NEAR ;NEAR SUBROUTINE IN MACUSER.LIB EXTRN VGA_DRAW_DIAMOND$:NEAR ;NEAR SUBROUTINE IN MACUSER.LIB EXTRN VGA_DRAW_DIAMOND_HALF_TOP$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_DRAW_DIAMOND_HALF_LEFT$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_DRAW_DIAMOND_HALF_BOTTOM$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_DRAW_DIAMOND_HALF_RIGHT$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_DRAW_DIAMOND_QTR_UR$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_DRAW_DIAMOND_QTR_UL$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_DRAW_DIAMOND_QTR_LL$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_DRAW_DIAMOND_QTR_LR$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_FILL_DIAMOND$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_FILL_DIAMOND_HALF_TOP$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_FILL_DIAMOND_HALF_LEFT$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_FILL_DIAMOND_HALF_BOTTOM$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_FILL_DIAMOND_HALF_RIGHT$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_FILL_DIAMOND_QTR_UR$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_FILL_DIAMOND_QTR_UL$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_FILL_DIAMOND_QTR_LL$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_FILL_DIAMOND_QTR_LR$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_DRAW_CIRCLE$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_DRAW_CIRCLE_HALF_TOP$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_DRAW_CIRCLE_HALF_LEFT$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_DRAW_CIRCLE_HALF_BOTTOM$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_DRAW_CIRCLE_HALF_RIGHT$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_DRAW_CIRCLE_QTR_UR$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_DRAW_CIRCLE_QTR_UL$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_DRAW_CIRCLE_QTR_LL$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_DRAW_CIRCLE_QTR_LR$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_FILL_CIRCLE$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_FILL_CIRCLE_HALF_TOP$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_FILL_CIRCLE_HALF_LEFT$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_FILL_CIRCLE_HALF_BOTTOM$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_FILL_CIRCLE_HALF_RIGHT$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_FILL_CIRCLE_QTR_UR$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_FILL_CIRCLE_QTR_UL$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_FILL_CIRCLE_QTR_LL$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_FILL_CIRCLE_QTR_LR$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_DRAW_ELLIPSE$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_DRAW_ELLIPSE_HALF_TOP$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_DRAW_ELLIPSE_HALF_LEFT$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_DRAW_ELLIPSE_HALF_BOTTOM$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_DRAW_ELLIPSE_HALF_RIGHT$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_DRAW_ELLIPSE_QTR_UR$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_DRAW_ELLIPSE_QTR_UL$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_DRAW_ELLIPSE_QTR_LL$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_DRAW_ELLIPSE_QTR_LR$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_FILL_ELLIPSE$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_FILL_ELLIPSE_HALF_TOP$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_FILL_ELLIPSE_HALF_LEFT$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_FILL_ELLIPSE_HALF_BOTTOM$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_FILL_ELLIPSE_HALF_RIGHT$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_FILL_ELLIPSE_QTR_UR$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_FILL_ELLIPSE_QTR_UL$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_FILL_ELLIPSE_QTR_LL$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_FILL_ELLIPSE_QTR_LR$:NEAR ;NEAR MACUSER.LIB SUBROUTINE EXTRN VGA_DRAW_CHAR$:NEAR ;NEAR SUBROUTINE IN MACUSER.LIB EXTRN VGA_DRAW_STRING$:NEAR ;NEAR SUBROUTINE IN MACUSER.LIB EXTRN VGA_DRAW_STRINGZ$:NEAR ;NEAR SUBROUTINE IN MACUSER.LIB EXTRN VGA_DRAW_STRINGT$:NEAR ;NEAR SUBROUTINE IN MACUSER.LIB EXTRN VGA_RESTORE$:NEAR ;NEAR SUBROUTINE IN MACUSER.LIB EXTRN NOCTRLC:NEAR ;NEAR SUBROUTINE IN MACUSER.LIB ARG1OF1 EQU [BP+06] ;STACK OFFSET TO ARGUMENT #1 IF 1 ARG ARG1OF2 EQU [BP+10] ;STACK OFFSET TO ARGUMENT #1 IF 2 ARGS ARG2OF2 EQU [BP+06] ;STACK OFFSET TO ARGUMENT #2 IF 2 ARGS ARG1OF3 EQU [BP+14] ;STACK OFFSET TO ARGUMENT #1 IF 3 ARGS ARG2OF3 EQU [BP+10] ;STACK OFFSET TO ARGUMENT #2 IF 3 ARGS ARG3OF3 EQU [BP+06] ;STACK OFFSET TO ARGUMENT #3 IF 3 ARGS ARG1OF4 EQU [BP+18] ;STACK OFFSET TO ARGUMENT #1 IF 4 ARGS ARG2OF4 EQU [BP+14] ;STACK OFFSET TO ARGUMENT #2 IF 4 ARGS ARG3OF4 EQU [BP+10] ;STACK OFFSET TO ARGUMENT #3 IF 4 ARGS ARG4OF4 EQU [BP+06] ;STACK OFFSET TO ARGUMENT #4 IF 4 ARGS ARG1OF5 EQU [BP+22] ;STACK OFFSET TO ARGUMENT #1 IF 5 ARGS ARG2OF5 EQU [BP+18] ;STACK OFFSET TO ARGUMENT #2 IF 5 ARGS ARG3OF5 EQU [BP+14] ;STACK OFFSET TO ARGUMENT #3 IF 5 ARGS ARG4OF5 EQU [BP+10] ;STACK OFFSET TO ARGUMENT #4 IF 5 ARGS ARG5OF5 EQU [BP+06] ;STACK OFFSET TO ARGUMENT #5 IF 5 ARGS ARG10F6 EQU [BP+26] ;STACK OFFSET TO ARGUMENT #1 IF 6 ARGS ARG2OF6 EQU [BP+22] ;STACK OFFSET TO ARGUMENT #2 IF 6 ARGS ARG3OF6 EQU [BP+18] ;STACK OFFSET TO ARGUMENT #3 IF 6 ARGS ARG4OF6 EQU [BP+14] ;STACK OFFSET TO ARGUMENT #4 IF 6 ARGS ARG5OF6 EQU [BP+10] ;STACK OFFSET TO ARGUMENT #5 IF 6 ARGS ARG6OF6 EQU [BP+06] ;STACK OFFSET TO ARGUMENT #6 IF 6 ARGS ARG1OF7 EQU [BP+30] ;STACK OFFSET TO ARGUMENT #1 IF 7 ARGS ARG2OF7 EQU [BP+26] ;STACK OFFSET TO ARGUMENT #2 IF 7 ARGS ARG3OF7 EQU [BP+22] ;STACK OFFSET TO ARGUMENT #3 IF 7 ARGS ARG4OF7 EQU [BP+18] ;STACK OFFSET TO ARGUMENT #4 IF 7 ARGS ARG5OF7 EQU [BP+14] ;STACK OFFSET TO ARGUMENT #5 IF 7 ARGS ARG6OF7 EQU [BP+10] ;STACK OFFSET TO ARGUMENT #6 IF 7 ARGS ARG7OF7 EQU [BP+06] ;STACK OFFSET TO ARGUMENT #7 IF 7 ARGS DATSEG SEGMENT PARA PUBLIC 'DATA' ;DEFINE DATA-SEGMENT NAMED "DATSEG" ; ; DATSEG ENDS ;END OF DATA-SEGMENT NAMED "DATSEG" CODSEG SEGMENT PARA PUBLIC 'CODE' ;DEFINE CODE-SEGMENT NAMED "CODSEG" ASSUME CS:CODSEG,DS:DATSEG,ES:NOTHING ;$LOCAL_VARIABLES ;$END_SECTION ;$EXTERNAL_ROUTINES ;$END_SECTION ; CALL VGA_INIT_M (STATUS,ADAPTYP,MONITYP,MONOFLAG,BIOSTYP) ; VGA_INIT_M PROC FAR ;BEGIN FAR PROCEDURE CALL NOCTRLC ;STOMP OUT CONTROL-Cs PUSH BP ;SAVE CALLER'S BASE-POINTER MOV BP,SP ;SET MY STACK FRAME-POINTER PUSH SI ;SAVE SI PUSH DI ;SAVE DI PUSH DS ;SAVE DS MOV AX,DATSEG ;FARBA-LOCAL DATA-SEGMENT ADDRESS MOV DS,AX ;POINT TO IT WITH DS LES DI,ARG4OF5 ;POINT TO MONO-ALLOWED VARIABLE MOV CX,ES:[DI] ;LOAD MONO-ALLOWED FLAG FOR VGA_INIT$ OR CL,CH ;MAKE SURE FLAG IS IN LOW BYTE CALL VGA_INIT$ ;INITIALIZE THE VGA GRAPHICS SUBSYSTEM LES DI,ARG1OF5 ;POINT TO CALLER'S STATUS VARIABLE MOV ES:[DI],AX ;STORE VGA_INIT$ STATUS FOR CALLER LES DI,ARG2OF5 ;POINT TO ADAPTER-TYPE VARIABLE MOV DL,BH ;SAVE MONITOR-TYPE MOV BH,0 ;CLEAR HIGH-BYTE OF ADAPTER-TYPE MOV ES:[DI],BX ;STORE ADAPTER-TYPE FOR CALLER LES DI,ARG3OF5 ;POINT TO MONITOR-TYPE VARIABLE MOV DH,0 ;CLEAR HIGH-BYTE OF MONITOR-TYPE MOV ES:[DI],DX ;STORE MONITOR-TYPE FOR CALLER LES DI,ARG4OF5 ;POINT TO MONO-AVAILABLE VARIABLE MOV DL,CH ;SAVE BIOS VIDEO-TYPE CODE MOV CH,0 ;CLEAR HIGH-BYTE OF MONO-FLAG MOV ES:[DI],CX ;STORE MONO-AVAILABLE FLAG FOR CALLER LES DI,ARG5OF5 ;POINT TO BIOS VIDEO-TYPE VARIABLE MOV DH,0 ;CLEAR HIGH-BYTE OF BIOS VIDEO-TYPE MOV ES:[DI],DX ;STORE BIOS VIDEO-TYPE FOR CALLER POP DS ;RESTORE DS POP DI ;RESTORE DI POP SI ;RESTORE SI POP BP ;RESTORE CALLER'S BASE-POINTER RET 20 ;RETURN TO CALLER & CLEAR STACK VGA_INIT_M ENDP ;END OF PROCEDURE ; CALL VGA_MODE_M (MODECOD,MONOTOP,MONOBOT,STATUS,HRES,VRES,NCLRS) ; VGA_MODE_M PROC FAR ;BEGIN FAR PROCEDURE PUSH BP ;SAVE CALLER'S BASE-POINTER MOV BP,SP ;SET MY STACK FRAME-POINTER PUSH SI ;SAVE SI PUSH DI ;SAVE DI PUSH DS ;SAVE DS MOV AX,DATSEG ;FARBA-LOCAL DATA-SEGMENT ADDRESS MOV DS,AX ;POINT TO IT WITH DS LES DI,ARG1OF7 ;POINT TO MODE-CODE MOV AX,ES:[DI] ;FETCH THE MODE-CODE LES DI,ARG2OF7 ;POINT TO TOP SCAN-LINE MOV CX,ES:[DI] ;FETCH THE TOP MONO CURSOR SCAN-LINE MOV BH,CL ;STORE IT FOR VGA_MODE$ LES DI,ARG3OF7 ;POINT TO BOTTOM SCAN-LINE MOV CX,ES:[DI] ;FETCH THE BOTTOM MONO CURSOR SCAN-LINE MOV BL,CL ;STORE IT FOR VGA_MODE$ CALL VGA_MODE$ ;SET THE DESIRED OPERATING MODE LES DI,ARG4OF7 ;POINT TO CALLER'S STATUS VARIABLE MOV ES:[DI],DX ;STORE RETURN STATUS FOR CALLER LES DI,ARG5OF7 ;POINT TO CALLER'S HOR-RES VARIABLE MOV ES:[DI],AX ;STORE HORIZONTAL RESOLUTION FOR CALLER LES DI,ARG6OF7 ;POINT TO CALLER'S VERT-RES VARIABLE MOV ES:[DI],BX ;STORE VERTICAL RESOLUTION FOR CALLER LES DI,ARG7OF7 ;POINT TO CALLER'S COLOR-COUNT VARIABLE MOV ES:[DI],CX ;STORE RETURN # OF COLORS FOR CALLER POP DS ;RESTORE DS POP DI ;RESTORE DI POP SI ;RESTORE SI POP BP ;RESTORE CALLER'S BASE-POINTER RET 28 ;RETURN TO CALLER & CLEAR STACK VGA_MODE_M ENDP ;END OF PROCEDURE ; CALL VGA_LOAD_1_COLOR_DAC_M (DACNUM,REDVAL,GRNVAL,BLUVAL) ; VGA_LOAD_1_COLOR_DAC_M PROC FAR ;BEGIN FAR PROCEDURE PUSH BP ;SAVE CALLER'S BASE-POINTER MOV BP,SP ;SET MY STACK FRAME-POINTER PUSH SI ;SAVE SI PUSH DI ;SAVE DI PUSH DS ;SAVE DS MOV AX,DATSEG ;FARBA-LOCAL DATA-SEGMENT ADDRESS MOV DS,AX ;POINT TO IT WITH DS LES DI,ARG1OF4 ;POINT TO DAC REGISTER NUMBER MOV BX,ES:[DI] ;FETCH IT LES DI,ARG2OF4 ;POINT TO RED COLOR VALUE MOV DH,ES:[DI] ;FETCH IT LES DI,ARG3OF4 ;POINT TO GREEN COLOR VALUE MOV CH,ES:[DI] ;FETCH IT LES DI,ARG4OF4 ;POINT TO BLUE COLOR VALUE MOV CL,ES:[DI] ;FETCH IT MOV AH,10h ;"PALLETTE/COLORS" FUNCTION MOV AL,10h ;"SET ONE COLOR DAC" INT 10h ;EXECUTE VIDEO BIOS FUNCTION-CALL POP DS ;RESTORE DS POP DI ;RESTORE DI POP SI ;RESTORE SI POP BP ;RESTORE CALLER'S BASE-POINTER RET 16 ;RETURN TO CALLER & CLEAR STACK VGA_LOAD_1_COLOR_DAC_M ENDP ;END OF PROCEDURE ; CALL VGA_SET_DEFAULTS_M () ; VGA_SET_DEFAULTS_M PROC FAR ;BEGIN FAR PROCEDURE PUSH BP ;SAVE CALLER'S BASE-POINTER MOV BP,SP ;SET MY STACK FRAME-POINTER PUSH DS ;SAVE DS MOV AX,DATSEG ;FARBA-LOCAL DATA-SEGMENT ADDRESS MOV DS,AX ;POINT TO IT WITH DS CALL VGA_SET_DEFAULTS$ ;SET ALL DRAWING DEFAULTS POP DS ;RESTORE DS POP BP ;RESTORE CALLER'S BASE-POINTER RET ;RETURN TO CALLER VGA_SET_DEFAULTS_M ENDP ;END OF PROCEDURE ; CALL VGA_SET_COLOR_M (COLOR) ; VGA_SET_COLOR_M PROC FAR ;BEGIN FAR PROCEDURE PUSH BP ;SAVE CALLER'S BASE-POINTER MOV BP,SP ;SET MY STACK FRAME-POINTER PUSH DI ;SAVE DI PUSH DS ;SAVE DS MOV AX,DATSEG ;FARBA-LOCAL DATA-SEGMENT ADDRESS MOV DS,AX ;POINT TO IT WITH DS LES DI,ARG1OF1 ;POINT TO COLOR MOV BX,ES:[DI] ;FETCH THE COLOR CALL VGA_SET_COLOR$ ;SET THE DRAWING COLOR POP DS ;RESTORE DS POP DI ;RESTORE DI POP BP ;RESTORE CALLER'S BASE-POINTER RET 4 ;RETURN TO CALLER & CLEAR STACK VGA_SET_COLOR_M ENDP ;END OF PROCEDURE ; CALL VGA_SET_BAK_COLOR_M (COLOR) ; VGA_SET_BAK_COLOR_M PROC FAR ;BEGIN FAR PROCEDURE PUSH BP ;SAVE CALLER'S BASE-POINTER MOV BP,SP ;SET MY STACK FRAME-POINTER PUSH DI ;SAVE DI PUSH DS ;SAVE DS MOV AX,DATSEG ;FARBA-LOCAL DATA-SEGMENT ADDRESS MOV DS,AX ;POINT TO IT WITH DS LES DI,ARG1OF1 ;POINT TO COLOR MOV BX,ES:[DI] ;FETCH THE COLOR CALL VGA_SET_BAK_COLOR$ ;SET THE BACKGROUND COLOR POP DS ;RESTORE DS POP DI ;RESTORE DI POP BP ;RESTORE CALLER'S BASE-POINTER RET 4 ;RETURN TO CALLER & CLEAR STACK VGA_SET_BAK_COLOR_M ENDP ;END OF PROCEDURE ; CALL VGA_SET_BLINK_M (YESNO) ; VGA_SET_BLINK_M PROC FAR ;BEGIN FAR PROCEDURE PUSH BP ;SAVE CALLER'S BASE-POINTER MOV BP,SP ;SET MY STACK FRAME-POINTER PUSH DI ;SAVE DI PUSH DS ;SAVE DS MOV AX,DATSEG ;FARBA-LOCAL DATA-SEGMENT ADDRESS MOV DS,AX ;POINT TO IT WITH DS LES DI,ARG1OF1 ;POINT TO BLINK-FLAG MOV BX,ES:[DI] ;FETCH THE BLINK-FLAG CALL VGA_SET_BLINK$ ;SET THE BLINK-FLAG POP DS ;RESTORE DS POP DI ;RESTORE DI POP BP ;RESTORE CALLER'S BASE-POINTER RET 4 ;RETURN TO CALLER & CLEAR STACK VGA_SET_BLINK_M ENDP ;END OF PROCEDURE ; CALL VGA_SET_CHAR_SIZE_M (SIZECODE,STATUS) ; VGA_SET_CHAR_SIZE_M PROC FAR ;BEGIN FAR PROCEDURE PUSH BP ;SAVE CALLER'S BASE-POINTER MOV BP,SP ;SET MY STACK FRAME-POINTER PUSH DI ;SAVE DI PUSH DS ;SAVE DS MOV AX,DATSEG ;FARBA-LOCAL DATA-SEGMENT ADDRESS MOV DS,AX ;POINT TO IT WITH DS LES DI,ARG1OF2 ;POINT TO CHARACTER SIZE-CODE MOV BX,ES:[DI] ;FETCH THE SIZE-CODE CALL VGA_SET_CHAR_SIZE$ ;SET THE CHARACTER-SIZE XOR AX,AX ;ASSUME NO ERROR OCCURRED JNC SIZEOK ;BR IF NO ERROR DEC AX ;CHANGE STATUS TO -1 SIZEOK: LES DI,ARG2OF2 ;POINT TO CALLER'S STATUS VARIABLE MOV ES:[DI],AX ;STORE STATUS FOR CALLER POP DS ;RESTORE DS POP DI ;RESTORE DI POP BP ;RESTORE CALLER'S BASE-POINTER RET 8 ;RETURN TO CALLER & CLEAR STACK VGA_SET_CHAR_SIZE_M ENDP ;END OF PROCEDURE ; CALL VGA_SET_CHAR_ORI_M (ORICODE,STATUS) ; VGA_SET_CHAR_ORI_M PROC FAR ;BEGIN FAR PROCEDURE PUSH BP ;SAVE CALLER'S BASE-POINTER MOV BP,SP ;SET MY STACK FRAME-POINTER PUSH DI ;SAVE DI PUSH DS ;SAVE DS MOV AX,DATSEG ;FARBA-LOCAL DATA-SEGMENT ADDRESS MOV DS,AX ;POINT TO IT WITH DS LES DI,ARG1OF2 ;POINT TO ORIENTATION-CODE MOV BX,ES:[DI] ;FETCH THE ORIENTATION-CODE CALL VGA_SET_CHAR_ORI$ ;SET THE TEXT CHARACTER ORIENTATION XOR AX,AX ;ASSUME NO ERROR OCCURRED JNC ORIOK ;BR IF NO ERROR DEC AX ;CHANGE STATUS TO -1 ORIOK: LES DI,ARG2OF2 ;POINT TO CALLER'S STATUS VARIABLE MOV ES:[DI],AX ;STORE STATUS FOR CALLER POP DS ;RESTORE DS POP DI ;RESTORE DI POP BP ;RESTORE CALLER'S BASE-POINTER RET 8 ;RETURN TO CALLER & CLEAR STACK VGA_SET_CHAR_ORI_M ENDP ;END OF PROCEDURE ; CALL VGA_SET_STRING_DIR_M (DIRCODE,STATUS) ; VGA_SET_STRING_DIR_M PROC FAR ;BEGIN FAR PROCEDURE PUSH BP ;SAVE CALLER'S BASE-POINTER MOV BP,SP ;SET MY STACK FRAME-POINTER PUSH DI ;SAVE DI PUSH DS ;SAVE DS MOV AX,DATSEG ;FARBA-LOCAL DATA-SEGMENT ADDRESS MOV DS,AX ;POINT TO IT WITH DS LES DI,ARG1OF2 ;POINT TO DIRECTION-CODE MOV BX,ES:[DI] ;FETCH THE DIRECTION-CODE CALL VGA_SET_STRING_DIR$ ;SET THE STRING DRAWING DIRECTION XOR AX,AX ;ASSUME NO ERROR OCCURRED JNC DIROK ;BR IF NO ERROR DEC AX ;CHANGE STATUS TO -1 DIROK: LES DI,ARG2OF2 ;POINT TO CALLER'S STATUS VARIABLE MOV ES:[DI],AX ;STORE STATUS FOR CALLER POP DS ;RESTORE DS POP DI ;RESTORE DI POP BP ;RESTORE CALLER'S BASE-POINTER RET 8 ;RETURN TO CALLER & CLEAR STACK VGA_SET_STRING_DIR_M ENDP ;END OF PROCEDURE ; CALL VGA_DRAW_DOT_M (X1,Y1) ; VGA_DRAW_DOT_M PROC FAR ;BEGIN FAR PROCEDURE PUSH BP ;SAVE CALLER'S BASE-POINTER MOV BP,SP ;SET MY STACK FRAME-POINTER PUSH SI ;SAVE SI PUSH DI ;SAVE DI PUSH DS ;SAVE DS MOV AX,DATSEG ;FARBA-LOCAL DATA-SEGMENT ADDRESS MOV DS,AX ;POINT TO IT WITH DS LES DI,ARG1OF2 ;POINT TO X-COORDINATE MOV AX,ES:[DI] ;FETCH THE X-COORDINATE LES DI,ARG2OF2 ;POINT TO Y-COORDINATE MOV SI,ES:[DI] ;FETCH THE Y-COORDINATE CALL VGA_DRAW_DOT$ ;DRAW THE DOT POP DS ;RESTORE DS POP DI ;RESTORE DI POP SI ;RESTORE SI POP BP ;RESTORE CALLER'S BASE-POINTER RET 8 ;RETURN TO CALLER & CLEAR STACK VGA_DRAW_DOT_M ENDP ;END OF PROCEDURE ; CALL VGA_DRAW_LINE_M (X1,Y1,X2,Y2) ; VGA_DRAW_LINE_M PROC FAR ;BEGIN FAR PROCEDURE PUSH BP ;SAVE CALLER'S BASE-POINTER MOV BP,SP ;SET MY STACK FRAME-POINTER PUSH SI ;SAVE SI PUSH DI ;SAVE DI PUSH DS ;SAVE DS MOV AX,DATSEG ;FARBA-LOCAL DATA-SEGMENT ADDRESS MOV DS,AX ;POINT TO IT WITH DS LES DI,ARG1OF4 ;POINT TO STARTING X-COORDINATE MOV AX,ES:[DI] ;FETCH THE STARTING X-COORDINATE LES DI,ARG2OF4 ;POINT TO STARTING Y-COORDINATE MOV SI,ES:[DI] ;FETCH THE STARTING Y-COORDINATE LES DI,ARG3OF4 ;POINT TO ENDING X-COORDINATE MOV DX,ES:[DI] ;FETCH THE ENDING X-COORDINATE LES DI,ARG4OF4 ;POINT TO ENDING Y-COORDINATE MOV DI,ES:[DI] ;FETCH THE ENDING Y-COORDINATE CALL VGA_DRAW_LINE$ ;DRAW THE LINE POP DS ;RESTORE DS POP DI ;RESTORE DI POP SI ;RESTORE SI POP BP ;RESTORE CALLER'S BASE-POINTER RET 16 ;RETURN TO CALLER & CLEAR STACK VGA_DRAW_LINE_M ENDP ;END OF PROCEDURE ; CALL VGA_DRAW_RECT_M (X1,Y1,X2,Y2) ; VGA_DRAW_RECT_M PROC FAR ;BEGIN FAR PROCEDURE PUSH BP ;SAVE CALLER'S BASE-POINTER MOV BP,SP ;SET MY STACK FRAME-POINTER PUSH SI ;SAVE SI PUSH DI ;SAVE DI PUSH DS ;SAVE DS MOV AX,DATSEG ;FARBA-LOCAL DATA-SEGMENT ADDRESS MOV DS,AX ;POINT TO IT WITH DS LES DI,ARG1OF4 ;POINT TO STARTING X-COORDINATE MOV AX,ES:[DI] ;FETCH THE STARTING X-COORDINATE LES DI,ARG2OF4 ;POINT TO STARTING Y-COORDINATE MOV SI,ES:[DI] ;FETCH THE STARTING Y-COORDINATE LES DI,ARG3OF4 ;POINT TO ENDING X-COORDINATE MOV DX,ES:[DI] ;FETCH THE ENDING X-COORDINATE LES DI,ARG4OF4 ;POINT TO ENDING Y-COORDINATE MOV DI,ES:[DI] ;FETCH THE ENDING Y-COORDINATE CALL VGA_DRAW_RECT$ ;DRAW THE RECTANGLE POP DS ;RESTORE DS POP DI ;RESTORE DI POP SI ;RESTORE SI POP BP ;RESTORE CALLER'S BASE-POINTER RET 16 ;RETURN TO CALLER & CLEAR STACK VGA_DRAW_RECT_M ENDP ;END OF PROCEDURE ; CALL VGA_FILL_RECT_M (X1,Y1,X2,Y2) ; VGA_FILL_RECT_M PROC FAR ;BEGIN FAR PROCEDURE PUSH BP ;SAVE CALLER'S BASE-POINTER MOV BP,SP ;SET MY STACK FRAME-POINTER PUSH SI ;SAVE SI PUSH DI ;SAVE DI PUSH DS ;SAVE DS MOV AX,DATSEG ;FARBA-LOCAL DATA-SEGMENT ADDRESS MOV DS,AX ;POINT TO IT WITH DS LES DI,ARG1OF4 ;POINT TO STARTING X-COORDINATE MOV AX,ES:[DI] ;FETCH THE STARTING X-COORDINATE LES DI,ARG2OF4 ;POINT TO STARTING Y-COORDINATE MOV SI,ES:[DI] ;FETCH THE STARTING Y-COORDINATE LES DI,ARG3OF4 ;POINT TO ENDING X-COORDINATE MOV DX,ES:[DI] ;FETCH THE ENDING X-COORDINATE LES DI,ARG4OF4 ;POINT TO ENDING Y-COORDINATE MOV DI,ES:[DI] ;FETCH THE ENDING Y-COORDINATE CALL VGA_FILL_RECT$ ;DRAW THE FILLED RECTANGLE POP DS ;RESTORE DS POP DI ;RESTORE DI POP SI ;RESTORE SI POP BP ;RESTORE CALLER'S BASE-POINTER RET 16 ;RETURN TO CALLER & CLEAR STACK VGA_FILL_RECT_M ENDP ;END OF PROCEDURE VGA_DRAW_DIAMOND_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_DRAW_DIAMOND$ ;HANDLER ADDRESS JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_DRAW_DIAMOND_M ENDP ;END OF PROCEDURE VGA_DRAW_DIAMOND_HALF_TOP_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_DRAW_DIAMOND_HALF_TOP$ ;HANDLER ADDRESS JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_DRAW_DIAMOND_HALF_TOP_M ENDP ;END OF PROCEDURE VGA_DRAW_DIAMOND_HALF_LEFT_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_DRAW_DIAMOND_HALF_LEFT$ ;HANDLER ADDRESS JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_DRAW_DIAMOND_HALF_LEFT_M ENDP ;END OF PROCEDURE VGA_DRAW_DIAMOND_HALF_BOTTOM_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_DRAW_DIAMOND_HALF_BOTTOM$ ;HANDLER JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_DRAW_DIAMOND_HALF_BOTTOM_M ENDP ;END OF PROCEDURE VGA_DRAW_DIAMOND_HALF_RIGHT_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_DRAW_DIAMOND_HALF_RIGHT$ ;HANDLER JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_DRAW_DIAMOND_HALF_RIGHT_M ENDP ;END OF PROCEDURE VGA_DRAW_DIAMOND_QTR_UR_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_DRAW_DIAMOND_QTR_UR$ ;HANDLER ADDRESS JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_DRAW_DIAMOND_QTR_UR_M ENDP ;END OF PROCEDURE VGA_DRAW_DIAMOND_QTR_UL_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_DRAW_DIAMOND_QTR_UL$ ;HANDLER ADDRESS JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_DRAW_DIAMOND_QTR_UL_M ENDP ;END OF PROCEDURE VGA_DRAW_DIAMOND_QTR_LL_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_DRAW_DIAMOND_QTR_LL$ ;HANDLER ADDRESS JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_DRAW_DIAMOND_QTR_LL_M ENDP ;END OF PROCEDURE VGA_DRAW_DIAMOND_QTR_LR_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_DRAW_DIAMOND_QTR_LR$ ;HANDLER ADDRESS JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_DRAW_DIAMOND_QTR_LR_M ENDP ;END OF PROCEDURE VGA_FILL_DIAMOND_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_FILL_DIAMOND$ ;HANDLER ADDRESS JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_FILL_DIAMOND_M ENDP ;END OF PROCEDURE VGA_FILL_DIAMOND_HALF_TOP_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_FILL_DIAMOND_HALF_TOP$ ;HANDLER ADDRESS JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_FILL_DIAMOND_HALF_TOP_M ENDP ;END OF PROCEDURE VGA_FILL_DIAMOND_HALF_LEFT_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_FILL_DIAMOND_HALF_LEFT$ ;HANDLER ADDRESS JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_FILL_DIAMOND_HALF_LEFT_M ENDP ;END OF PROCEDURE VGA_FILL_DIAMOND_HALF_BOTTOM_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_FILL_DIAMOND_HALF_BOTTOM$ ;HANDLER JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_FILL_DIAMOND_HALF_BOTTOM_M ENDP ;END OF PROCEDURE VGA_FILL_DIAMOND_HALF_RIGHT_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_FILL_DIAMOND_HALF_RIGHT$ ;HANDLER JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_FILL_DIAMOND_HALF_RIGHT_M ENDP ;END OF PROCEDURE VGA_FILL_DIAMOND_QTR_UR_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_FILL_DIAMOND_QTR_UR$ ;HANDLER ADDRESS JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_FILL_DIAMOND_QTR_UR_M ENDP ;END OF PROCEDURE VGA_FILL_DIAMOND_QTR_UL_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_FILL_DIAMOND_QTR_UL$ ;HANDLER ADDRESS JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_FILL_DIAMOND_QTR_UL_M ENDP ;END OF PROCEDURE VGA_FILL_DIAMOND_QTR_LL_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_FILL_DIAMOND_QTR_LL$ ;HANDLER ADDRESS JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_FILL_DIAMOND_QTR_LL_M ENDP ;END OF PROCEDURE VGA_FILL_DIAMOND_QTR_LR_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_FILL_DIAMOND_QTR_LR$ ;HANDLER ADDRESS JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_FILL_DIAMOND_QTR_LR_M ENDP ;END OF PROCEDURE VGA_DRAW_CIRCLE_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_DRAW_CIRCLE$ ;HANDLER ADDRESS JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_DRAW_CIRCLE_M ENDP ;END OF PROCEDURE VGA_DRAW_CIRCLE_HALF_TOP_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_DRAW_CIRCLE_HALF_TOP$ ;HANDLER ADDRESS JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_DRAW_CIRCLE_HALF_TOP_M ENDP ;END OF PROCEDURE VGA_DRAW_CIRCLE_HALF_LEFT_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_DRAW_CIRCLE_HALF_LEFT$ ;HANDLER ADDRESS JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_DRAW_CIRCLE_HALF_LEFT_M ENDP ;END OF PROCEDURE VGA_DRAW_CIRCLE_HALF_BOTTOM_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_DRAW_CIRCLE_HALF_BOTTOM$ ;HANDLER JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_DRAW_CIRCLE_HALF_BOTTOM_M ENDP ;END OF PROCEDURE VGA_DRAW_CIRCLE_HALF_RIGHT_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_DRAW_CIRCLE_HALF_RIGHT$ ;HANDLER JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_DRAW_CIRCLE_HALF_RIGHT_M ENDP ;END OF PROCEDURE VGA_DRAW_CIRCLE_QTR_UR_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_DRAW_CIRCLE_QTR_UR$ ;HANDLER ADDRESS JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_DRAW_CIRCLE_QTR_UR_M ENDP ;END OF PROCEDURE VGA_DRAW_CIRCLE_QTR_UL_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_DRAW_CIRCLE_QTR_UL$ ;HANDLER ADDRESS JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_DRAW_CIRCLE_QTR_UL_M ENDP ;END OF PROCEDURE VGA_DRAW_CIRCLE_QTR_LL_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_DRAW_CIRCLE_QTR_LL$ ;HANDLER ADDRESS JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_DRAW_CIRCLE_QTR_LL_M ENDP ;END OF PROCEDURE VGA_DRAW_CIRCLE_QTR_LR_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_DRAW_CIRCLE_QTR_LR$ ;HANDLER ADDRESS JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_DRAW_CIRCLE_QTR_LR_M ENDP ;END OF PROCEDURE VGA_FILL_CIRCLE_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_FILL_CIRCLE$ ;HANDLER ADDRESS JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_FILL_CIRCLE_M ENDP ;END OF PROCEDURE VGA_FILL_CIRCLE_HALF_TOP_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_FILL_CIRCLE_HALF_TOP$ ;HANDLER ADDRESS JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_FILL_CIRCLE_HALF_TOP_M ENDP ;END OF PROCEDURE VGA_FILL_CIRCLE_HALF_LEFT_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_FILL_CIRCLE_HALF_LEFT$ ;HANDLER ADDRESS JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_FILL_CIRCLE_HALF_LEFT_M ENDP ;END OF PROCEDURE VGA_FILL_CIRCLE_HALF_BOTTOM_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_FILL_CIRCLE_HALF_BOTTOM$ ;HANDLER JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_FILL_CIRCLE_HALF_BOTTOM_M ENDP ;END OF PROCEDURE VGA_FILL_CIRCLE_HALF_RIGHT_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_FILL_CIRCLE_HALF_RIGHT$ ;HANDLER JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_FILL_CIRCLE_HALF_RIGHT_M ENDP ;END OF PROCEDURE VGA_FILL_CIRCLE_QTR_UR_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_FILL_CIRCLE_QTR_UR$ ;HANDLER ADDRESS JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_FILL_CIRCLE_QTR_UR_M ENDP ;END OF PROCEDURE VGA_FILL_CIRCLE_QTR_UL_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_FILL_CIRCLE_QTR_UL$ ;HANDLER ADDRESS JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_FILL_CIRCLE_QTR_UL_M ENDP ;END OF PROCEDURE VGA_FILL_CIRCLE_QTR_LL_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_FILL_CIRCLE_QTR_LL$ ;HANDLER ADDRESS JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_FILL_CIRCLE_QTR_LL_M ENDP ;END OF PROCEDURE VGA_FILL_CIRCLE_QTR_LR_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_FILL_CIRCLE_QTR_LR$ ;HANDLER ADDRESS JMP VGA_THREE_ARGS ;USE COMMON 3-ARG ROUTINE VGA_FILL_CIRCLE_QTR_LR_M ENDP ;END OF PROCEDURE VGA_DRAW_ELLIPSE_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_DRAW_ELLIPSE$ ;HANDLER ADDRESS JMP VGA_FOUR_ARGS ;USE COMMON 4-ARG ROUTINE VGA_DRAW_ELLIPSE_M ENDP ;END OF PROCEDURE VGA_DRAW_ELLIPSE_HALF_TOP_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_DRAW_ELLIPSE_HALF_TOP$ ;HANDLER ADDRESS JMP VGA_FOUR_ARGS ;USE COMMON 4-ARG ROUTINE VGA_DRAW_ELLIPSE_HALF_TOP_M ENDP ;END OF PROCEDURE VGA_DRAW_ELLIPSE_HALF_LEFT_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_DRAW_ELLIPSE_HALF_LEFT$ ;HANDLER ADDRESS JMP VGA_FOUR_ARGS ;USE COMMON 4-ARG ROUTINE VGA_DRAW_ELLIPSE_HALF_LEFT_M ENDP ;END OF PROCEDURE VGA_DRAW_ELLIPSE_HALF_BOTTOM_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_DRAW_ELLIPSE_HALF_BOTTOM$ ;HANDLER JMP VGA_FOUR_ARGS ;USE COMMON 4-ARG ROUTINE VGA_DRAW_ELLIPSE_HALF_BOTTOM_M ENDP ;END OF PROCEDURE VGA_DRAW_ELLIPSE_HALF_RIGHT_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_DRAW_ELLIPSE_HALF_RIGHT$ ;HANDLER JMP VGA_FOUR_ARGS ;USE COMMON 4-ARG ROUTINE VGA_DRAW_ELLIPSE_HALF_RIGHT_M ENDP ;END OF PROCEDURE VGA_DRAW_ELLIPSE_QTR_UR_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_DRAW_ELLIPSE_QTR_UR$ ;HANDLER ADDRESS JMP VGA_FOUR_ARGS ;USE COMMON 4-ARG ROUTINE VGA_DRAW_ELLIPSE_QTR_UR_M ENDP ;END OF PROCEDURE VGA_DRAW_ELLIPSE_QTR_UL_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_DRAW_ELLIPSE_QTR_UL$ ;HANDLER ADDRESS JMP VGA_FOUR_ARGS ;USE COMMON 4-ARG ROUTINE VGA_DRAW_ELLIPSE_QTR_UL_M ENDP ;END OF PROCEDURE VGA_DRAW_ELLIPSE_QTR_LL_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_DRAW_ELLIPSE_QTR_LL$ ;HANDLER ADDRESS JMP VGA_FOUR_ARGS ;USE COMMON 4-ARG ROUTINE VGA_DRAW_ELLIPSE_QTR_LL_M ENDP ;END OF PROCEDURE VGA_DRAW_ELLIPSE_QTR_LR_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_DRAW_ELLIPSE_QTR_LR$ ;HANDLER ADDRESS JMP VGA_FOUR_ARGS ;USE COMMON 4-ARG ROUTINE VGA_DRAW_ELLIPSE_QTR_LR_M ENDP ;END OF PROCEDURE VGA_FILL_ELLIPSE_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_FILL_ELLIPSE$ ;HANDLER ADDRESS JMP VGA_FOUR_ARGS ;USE COMMON 4-ARG ROUTINE VGA_FILL_ELLIPSE_M ENDP ;END OF PROCEDURE VGA_FILL_ELLIPSE_HALF_TOP_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_FILL_ELLIPSE_HALF_TOP$ ;HANDLER ADDRESS JMP VGA_FOUR_ARGS ;USE COMMON 4-ARG ROUTINE VGA_FILL_ELLIPSE_HALF_TOP_M ENDP ;END OF PROCEDURE VGA_FILL_ELLIPSE_HALF_LEFT_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_FILL_ELLIPSE_HALF_LEFT$ ;HANDLER ADDRESS JMP VGA_FOUR_ARGS ;USE COMMON 4-ARG ROUTINE VGA_FILL_ELLIPSE_HALF_LEFT_M ENDP ;END OF PROCEDURE VGA_FILL_ELLIPSE_HALF_BOTTOM_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_FILL_ELLIPSE_HALF_BOTTOM$ ;HANDLER JMP VGA_FOUR_ARGS ;USE COMMON 4-ARG ROUTINE VGA_FILL_ELLIPSE_HALF_BOTTOM_M ENDP ;END OF PROCEDURE VGA_FILL_ELLIPSE_HALF_RIGHT_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_FILL_ELLIPSE_HALF_RIGHT$ ;HANDLER JMP VGA_FOUR_ARGS ;USE COMMON 4-ARG ROUTINE VGA_FILL_ELLIPSE_HALF_RIGHT_M ENDP ;END OF PROCEDURE VGA_FILL_ELLIPSE_QTR_UR_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_FILL_ELLIPSE_QTR_UR$ ;HANDLER ADDRESS JMP VGA_FOUR_ARGS ;USE COMMON 4-ARG ROUTINE VGA_FILL_ELLIPSE_QTR_UR_M ENDP ;END OF PROCEDURE VGA_FILL_ELLIPSE_QTR_UL_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_FILL_ELLIPSE_QTR_UL$ ;HANDLER ADDRESS JMP VGA_FOUR_ARGS ;USE COMMON 4-ARG ROUTINE VGA_FILL_ELLIPSE_QTR_UL_M ENDP ;END OF PROCEDURE VGA_FILL_ELLIPSE_QTR_LL_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_FILL_ELLIPSE_QTR_LL$ ;HANDLER ADDRESS JMP VGA_FOUR_ARGS ;USE COMMON 4-ARG ROUTINE VGA_FILL_ELLIPSE_QTR_LL_M ENDP ;END OF PROCEDURE VGA_FILL_ELLIPSE_QTR_LR_M PROC FAR ;BEGIN FAR PROCEDURE MOV BX, OFFSET CODSEG:VGA_FILL_ELLIPSE_QTR_LR$ ;HANDLER ADDRESS JMP VGA_FOUR_ARGS ;USE COMMON 4-ARG ROUTINE VGA_FILL_ELLIPSE_QTR_LR_M ENDP ;END OF PROCEDURE ; CALL VGA_DRAW_CHAR_M (X1,Y1,CHARBYTE) ; VGA_DRAW_CHAR_M PROC FAR ;BEGIN FAR PROCEDURE PUSH BP ;SAVE CALLER'S BASE-POINTER MOV BP,SP ;SET MY STACK FRAME-POINTER PUSH SI ;SAVE SI PUSH DI ;SAVE DI PUSH DS ;SAVE DS MOV AX,DATSEG ;FARBA-LOCAL DATA-SEGMENT ADDRESS MOV DS,AX ;POINT TO IT WITH DS LES DI,ARG1OF3 ;POINT TO X-COORDINATE MOV AX,ES:[DI] ;FETCH THE X-COORDINATE LES DI,ARG2OF3 ;POINT TO Y-COORDINATE MOV SI,ES:[DI] ;FETCH THE Y-COORDINATE LES DI,ARG3OF3 ;POINT TO CHARACTER TO DRAW MOV CL,ES:[DI] ;FETCH THE CHARACTER CALL VGA_DRAW_CHAR$ ;DRAW THE CHARACTER POP DS ;RESTORE DS POP DI ;RESTORE DI POP SI ;RESTORE SI POP BP ;RESTORE CALLER'S BASE-POINTER RET 12 ;RETURN TO CALLER & CLEAR STACK VGA_DRAW_CHAR_M ENDP ;END OF PROCEDURE ; CALL VGA_DRAW_STRING_M (X1,Y1,STRING,STRLEN) ; VGA_DRAW_STRING_M PROC FAR ;BEGIN FAR PROCEDURE PUSH BP ;SAVE CALLER'S BASE-POINTER MOV BP,SP ;SET MY STACK FRAME-POINTER PUSH SI ;SAVE SI PUSH DI ;SAVE DI PUSH DS ;SAVE DS MOV AX,DATSEG ;FARBA-LOCAL DATA-SEGMENT ADDRESS MOV DS,AX ;POINT TO IT WITH DS LES DI,ARG1OF4 ;POINT TO X-COORDINATE MOV AX,ES:[DI] ;FETCH THE X-COORDINATE LES DI,ARG2OF4 ;POINT TO Y-COORDINATE MOV SI,ES:[DI] ;FETCH THE Y-COORDINATE LES DI,ARG4OF4 ;POINT TO CHARACTER-COUNT MOV CL,ES:[DI] ;FETCH THE CHARACTER-COUNT LES DI,ARG3OF4 ;POINT ES:DI TO THE CHARACTER-STRING CALL VGA_DRAW_STRING$ ;DRAW THE CHARACTER-STRING POP DS ;RESTORE DS POP DI ;RESTORE DI POP SI ;RESTORE SI POP BP ;RESTORE CALLER'S BASE-POINTER RET 16 ;RETURN TO CALLER & CLEAR STACK VGA_DRAW_STRING_M ENDP ;END OF PROCEDURE ; CALL VGA_DRAW_STRINGZ_M (X1,Y1,STRINGZ) ; VGA_DRAW_STRINGZ_M PROC FAR ;BEGIN FAR PROCEDURE PUSH BP ;SAVE CALLER'S BASE-POINTER MOV BP,SP ;SET MY STACK FRAME-POINTER PUSH SI ;SAVE SI PUSH DI ;SAVE DI PUSH DS ;SAVE DS MOV AX,DATSEG ;FARBA-LOCAL DATA-SEGMENT ADDRESS MOV DS,AX ;POINT TO IT WITH DS LES DI,ARG1OF3 ;POINT TO X-COORDINATE MOV AX,ES:[DI] ;FETCH THE X-COORDINATE LES DI,ARG2OF3 ;POINT TO Y-COORDINATE MOV SI,ES:[DI] ;FETCH THE Y-COORDINATE LES DI,ARG3OF3 ;POINT TO THE ASCIZ CHARACTER-STRING CALL VGA_DRAW_STRINGZ$ ;DRAW THE ASCIZ CHARACTER-STRING POP DS ;RESTORE DS POP DI ;RESTORE DI POP SI ;RESTORE SI POP BP ;RESTORE CALLER'S BASE-POINTER RET 12 ;RETURN TO CALLER & CLEAR STACK VGA_DRAW_STRINGZ_M ENDP ;END OF PROCEDURE ; CALL VGA_DRAW_STRINGT_M (X1,Y1,STRINGT) ; VGA_DRAW_STRINGT_M PROC FAR ;BEGIN FAR PROCEDURE PUSH BP ;SAVE CALLER'S BASE-POINTER MOV BP,SP ;SET MY STACK FRAME-POINTER PUSH SI ;SAVE SI PUSH DI ;SAVE DI PUSH DS ;SAVE DS MOV AX,DATSEG ;FARBA-LOCAL DATA-SEGMENT ADDRESS MOV DS,AX ;POINT TO IT WITH DS LES DI,ARG1OF3 ;POINT TO X-COORDINATE MOV AX,ES:[DI] ;FETCH THE X-COORDINATE LES DI,ARG2OF3 ;POINT TO Y-COORDINATE MOV SI,ES:[DI] ;FETCH THE Y-COORDINATE LES DI,ARG3OF3 ;POINT TO THE ASCIT CHARACTER-STRING CALL VGA_DRAW_STRINGT$ ;DRAW THE ASCIZ CHARACTER-STRING POP DS ;RESTORE DS POP DI ;RESTORE DI POP SI ;RESTORE SI POP BP ;RESTORE CALLER'S BASE-POINTER RET 12 ;RETURN TO CALLER & CLEAR STACK VGA_DRAW_STRINGT_M ENDP ;END OF PROCEDURE ; CALL VGA_RESTORE_M (ZEROFLAG) ; VGA_RESTORE_M PROC FAR ;BEGIN FAR PROCEDURE PUSH BP ;SAVE CALLER'S BASE-POINTER MOV BP,SP ;SET MY STACK FRAME-POINTER PUSH DS ;SAVE DS MOV AX,DATSEG ;FARBA-LOCAL DATA-SEGMENT ADDRESS MOV DS,AX ;POINT TO IT WITH DS LES DI,ARG1OF1 ;POINT TO CALLER'S "SLASHED-ZERO" FLAG MOV AX,ES:[DI] ;LOAD SLASHED-ZERO FLAG FOR VGA_RESTORE$ CALL VGA_RESTORE$ ;RESTORE PREVIOUS VIDEO CONDITIONS POP DS ;RESTORE DS POP BP ;RESTORE CALLER'S BASE-POINTER RET 4 ;RETURN TO CALLER & CLEAR STACK VGA_RESTORE_M ENDP ;END OF PROCEDURE ;LOCAL GENERIC SUBROUTINE TO HANDLE 3-ARGUMENT CALLS ;CAUTION: ALWAYS PUTS ARGUMENTS 1,2,3 IN AX,SI,DX RESPECTIVELY) ;CAUTION: ALWAYS JUMPS TO NEAR ADDRESS HELD IN REGISTER BX ; VGA_THREE_ARGS PROC NEAR ;GENERIC 3-ARGUMENT ROUTINE PUSH BP ;SAVE CALLER'S BASE-POINTER MOV BP,SP ;SET MY STACK FRAME-POINTER PUSH SI ;SAVE SI PUSH DI ;SAVE DI PUSH DS ;SAVE DS MOV AX,DATSEG ;FARBA-LOCAL DATA-SEGMENT ADDRESS MOV DS,AX ;POINT TO IT WITH DS LES DI,ARG1OF3 ;POINT TO CENTER X-COORDINATE MOV AX,ES:[DI] ;FETCH THE CENTER X-COORDINATE LES DI,ARG2OF3 ;POINT TO CENTER Y-COORDINATE MOV SI,ES:[DI] ;FETCH THE CENTER Y-COORDINATE LES DI,ARG3OF3 ;POINT TO RADIUS MOV DX,ES:[DI] ;FETCH THE RADIUS CALL BX ;CALL THE APPROPRIATE HANDLER ROUTINE POP DS ;RESTORE DS POP DI ;RESTORE DI POP SI ;RESTORE SI POP BP ;RESTORE CALLER'S BASE-POINTER RETF 12 ;RETURN TO CALLER & CLEAR STACK VGA_THREE_ARGS ENDP ;END OF LOCAL GENERIC 3-ARG PROCEDURE ;LOCAL GENERIC SUBROUTINE TO HANDLE 4-ARGUMENT CALLS ;CAUTION: ALWAYS PUTS ARGUMENTS 1,2,3,4 IN AX,SI,DX,DI RESPECTIVELY ;CAUTION: ALWAYS JUMPS TO NEAR ADDRESS HELD IN REGISTER BX ; VGA_FOUR_ARGS PROC NEAR ;GENERIC 4-ARGUMENT ROUTINE PUSH BP ;SAVE CALLER'S BASE-POINTER MOV BP,SP ;SET MY STACK FRAME-POINTER PUSH SI ;SAVE SI PUSH DI ;SAVE DI PUSH DS ;SAVE DS MOV AX,DATSEG ;FARBA-LOCAL DATA-SEGMENT ADDRESS MOV DS,AX ;POINT TO IT WITH DS LES DI,ARG1OF4 ;POINT TO CENTER X-COORDINATE MOV AX,ES:[DI] ;FETCH THE CENTER X-COORDINATE LES DI,ARG2OF4 ;POINT TO CENTER Y-COORDINATE MOV SI,ES:[DI] ;FETCH THE CENTER Y-COORDINATE LES DI,ARG3OF4 ;POINT TO X-RADIUS MOV DX,ES:[DI] ;FETCH THE X-RADIUS LES DI,ARG4OF4 ;POINT TO Y-RADIUS MOV DI,ES:[DI] ;FETCH THE Y-RADIUS CALL BX ;CALL THE APPROPRIATE HANDLER ROUTINE POP DS ;RESTORE DS POP DI ;RESTORE DI POP SI ;RESTORE SI POP BP ;RESTORE CALLER'S BASE-POINTER RETF 16 ;RETURN TO CALLER & CLEAR STACK VGA_FOUR_ARGS ENDP ;END OF LOCAL GENERIC 4-ARG PROCEDURE CODSEG ENDS ;END OF CODE-SEGMENT ; ;END OF LIBRARY MODULE "VGAXXX_M.MSF" END ;END OF ENTIRE SOURCE MODULE