home *** CD-ROM | disk | FTP | other *** search
/ ftp.update.uu.se / ftp.update.uu.se.2014.03.zip / ftp.update.uu.se / pub / rainbow / msdos / decus / RB140 / grlib03a.arj / FGLIB.ASM < prev    next >
Assembly Source File  |  1988-12-19  |  21KB  |  963 lines

  1. PAGE ,132
  2. TITLE FGLIB.ASM
  3. ;*************************************************************
  4. ;       Microsoft fortran interface into GRLIB               *
  5. ;      (Computer Innovations C Graphics library)             *
  6. ;*************************************************************
  7. ;
  8. ; This is really a interface between the LARGE Fortran and 
  9. ; small C model.
  10. ;
  11. ; Fortran Parameters are passed by far reference, left to right
  12. ;
  13. ; C parameters are passed right to left; arrays & strings by
  14. ; near reference, integers & chars by value.
  15. ;
  16. include asmc.h
  17.  
  18.     SEGEND    CODE
  19.     SEGDEF    DATA
  20.     EXTRN     f_col:BYTE,     f_style:BYTE,   f_type:BYTE
  21.     EXTRN     l_col:BYTE,     l_type:BYTE,    l_wid:BYTE
  22.     EXTRN     m_col:BYTE,     m_sca:BYTE,     m_type:BYTE
  23.     EXTRN     t_col:BYTE,     t_dir:BYTE,     t_font:BYTE
  24.     EXTRN     t_sca:BYTE,     ws_number:BYTE, ws_wmo:BYTE
  25.  
  26.     public    F_WORK_BUF_
  27.  
  28. ARRAY    DW        ?
  29. ARRAY4    DW        ?
  30. BLUE    DW        ?
  31. CENTRX    DW        ?
  32. CENTRY    DW        ?
  33. CHAR    DW        ?
  34. COUNT    DW        ?
  35. ENDDEG    DW        ?
  36. GREEN    DW        ?
  37. INDEX    DW        ?
  38. RADIUS    DW        ?
  39. RED    DW        ?
  40. STARTD    DW        ?
  41. X    DW        ?
  42. XEND    DW        ?
  43. XSTART    DW        ?
  44. Y    DW        ?
  45. YEND    DW        ?
  46. YSTART    DW        ?
  47. ZERO    DW        0
  48.  
  49. F_WORK_BUF_ LABEL BYTE                ;external name
  50. STRING        LABEL BYTE                ;ASCIZ local copy 
  51. WORK    DW        2048 DUP(?)            ;for circles etc
  52.  
  53.     SEGEND    DATA
  54.  
  55.     SEGDEF    CODE
  56.     Extrn     a_wmode:NEAR, arc:NEAR, bar:NEAR, circle:NEAR
  57.     Extrn     color:NEAR, ltext:NEAR, g_off:NEAR, g_on:NEAR
  58.     Extrn     openws:NEAR, closews:NEAR, point:NEAR, polyfill:NEAR 
  59.     Extrn     polyline:NEAR, polymark:NEAR, rectangle:NEAR
  60.     Extrn     rq_locator:NEAR, segment_:NEAR, gtext:NEAR
  61.     Extrn      rd_cell:NEAR, wr_cell:NEAR, rd_plane:NEAR, wr_plane:NEAR
  62.     Extrn      save_ws:NEAR, restore_ws:NEAR, ld_font:NEAR, kill_gr:NEAR
  63.  
  64.     PUBLIC    GRARC,  GRBAR,  GRCIRC, GRCLOS, GRCOLR, GRFCOL
  65.     PUBLIC    GRFSTY, GRFTYP, GRGON,  GRGOFF, GRGTXT, GRHSCR
  66.     PUBLIC    GRLCOL, GRLTYP, GRLWID, GRMCOL, GRMSCA, GRMTYP
  67.     PUBLIC    GROPEN, GRPFIL, GRPLIN, GRPMAR, GRPOIN, GRRECT
  68.     PUBLIC    GRRQLO, GRSEGM, GRTCOL, GRTDIR, GRTEXT, GRTFON
  69.     PUBLIC    GRTSCA, GRVSCR, GRWMOD, GRRCEL, GRWCEL, GRRPLN
  70.     PUBLIC      GRWPLN, GRSAVE, GRREST, GRLFNT, GRLFNT, GRKILL
  71.  
  72. ;make a local ASCIZ copy of string
  73. ;ES:SI must point to source
  74. ;CX must contain count
  75. movc    PROC      NEAR
  76.     PUSH      DS
  77.     PUSH      ES
  78.     POP       DS            ;DS=ES
  79.     POP       ES            ;ES=DS
  80.     LEA       DI, STRING
  81.     REP MOVSB
  82.     MOV       AL,0            ;add ASCIZ terminator
  83.     STOSB
  84.     PUSH      DS
  85.     PUSH      ES
  86.     POP       DS            ;DS=ES
  87.     POP       ES            ;ES=DS
  88.     RET
  89. movc    ENDP
  90.  
  91. ;***********************************
  92. ;*   SUBROUTINE GROPEN()
  93. ;***********************************
  94.  
  95. GROPEN    PROC      FAR
  96.     PUSH      BP
  97.     MOV       BP,SP
  98.     LES       BX,[BP].0AH
  99.     MOV       AX,ES:[BX]
  100.     MOV      INDEX,AX
  101.     LES       BX,[BP].06H
  102.     MOV       AX,ES:[BX]
  103.     PUSH      AX
  104.     MOV      AX,INDEX
  105.     PUSH      AX
  106.     PUSH      DS            ;call with ES set to DS
  107.     POP       ES
  108.     CALL      openws        ;open workstation
  109.     ADD       SP,4            ;C convention remove params from stack
  110.     MOV       SP,BP
  111.     POP       BP
  112.     RET
  113. GROPEN    ENDP
  114.  
  115. ;***********************************
  116. ;*   SUBROUTINE GRLFNT()
  117. ;***********************************
  118.  
  119. GRLFNT    PROC      FAR
  120.     PUSH      BP
  121.     MOV       BP,SP
  122.     LES       BX,[BP].0EH
  123.     MOV       AX,ES:[BX]
  124.     MOV       INDEX,AX
  125.  
  126.     LES       SI,[BP].0AH        ;character string addr
  127.     LES       BX,[BP].06H        ;count
  128.     MOV       CX,ES:[BX]
  129.     CALL      movc
  130.  
  131.     LEA       AX, STRING
  132.     PUSH      AX
  133.     MOV       AX,INDEX
  134.     PUSH      AX
  135.     PUSH      DS            ;call with ES set to DS
  136.     POP       ES
  137.     CALL      ld_font
  138.     ADD       SP,4            ;C convention remove params from stack
  139.     MOV       SP,BP
  140.     POP       BP
  141.     RET
  142. GRLFNT    ENDP
  143.  
  144. ;***********************************
  145. ;*   SUBROUTINE GRKILL()
  146. ;***********************************
  147.  
  148. GRKILL    PROC      FAR
  149.     PUSH      BP
  150.     MOV       BP,SP
  151.     PUSH      DS            ;call with ES set to DS
  152.     POP       ES
  153.     CALL      kill_gr        ;turn Graphics ON
  154.     MOV       SP,BP
  155.     POP       BP
  156.     RET
  157. GRKILL    ENDP
  158.  
  159. ;***********************************
  160. ;*   SUBROUTINE GRGON()
  161. ;***********************************
  162.  
  163. GRGON    PROC      FAR
  164.     PUSH      BP
  165.     MOV       BP,SP
  166.     PUSH      DS            ;call with ES set to DS
  167.     POP       ES
  168.     CALL      g_on            ;turn Graphics ON
  169.     MOV       SP,BP
  170.     POP       BP
  171.     RET
  172. GRGON    ENDP
  173.  
  174.  
  175. ;***********************************
  176. ;*   SUBROUTINE GRCIRC()
  177. ;***********************************
  178.  
  179. GRCIRC    PROC      FAR
  180.     PUSH      BP
  181.     MOV       BP,SP
  182.     LES       BX,[BP].0EH        ;p1
  183.     MOV       AX,ES:[BX]
  184.     MOV       CENTRX,AX
  185.     LES       BX,[BP].0AH        ;p2
  186.     MOV       AX,ES:[BX]
  187.     MOV       CENTRY,AX
  188.     LES       BX,[BP].06H        ;p3
  189.     MOV       AX,ES:[BX]
  190.     MOV       RADIUS,AX
  191.  
  192.     MOV       AX,RADIUS
  193.     PUSH      AX
  194.     MOV       AX,CENTRY
  195.     PUSH      AX
  196.     MOV       AX,CENTRX
  197.     PUSH      AX
  198.     PUSH      DS            ;call with ES set to DS
  199.     POP       ES
  200.     CALL      circle
  201.     ADD       SP,6            ;C convention remove params from stack
  202.     MOV       SP,BP
  203.     POP       BP
  204.     RET
  205. GRCIRC    ENDP
  206.  
  207. ;***********************************
  208. ;*   SUBROUTINE GRARC()
  209. ;***********************************
  210.  
  211. GRARC    PROC      FAR
  212.     PUSH      BP
  213.     MOV       BP,SP
  214.     LES       BX,[BP].16H
  215.     MOV       AX,ES:[BX]
  216.     MOV       CENTRX,AX
  217.     LES       BX,[BP].12H
  218.     MOV       AX,ES:[BX]
  219.     MOV       CENTRY,AX
  220.     LES       BX,[BP].0EH
  221.     MOV       AX,ES:[BX]
  222.     MOV       RADIUS,AX
  223.     LES       BX,[BP].0AH
  224.     MOV       AX,ES:[BX]
  225.     MOV       STARTD,AX
  226.     LES       BX,[BP].06H
  227.     MOV       AX,ES:[BX]
  228.     MOV       ENDDEG,AX
  229.     MOV       AX,ENDDEG
  230.     PUSH      AX
  231.     MOV       AX,STARTD
  232.     PUSH      AX
  233.     MOV       AX,RADIUS
  234.     PUSH      AX
  235.     MOV       AX,CENTRY
  236.     PUSH      AX
  237.     MOV       AX,CENTRX
  238.     PUSH      AX
  239.     PUSH      DS            ;call with ES set to DS
  240.     POP       ES
  241.     CALL      arc
  242.     ADD       SP,10            ;C convention remove params from stack
  243.     MOV       SP,BP
  244.     POP       BP
  245.     RET
  246. GRARC    ENDP
  247.  
  248. ;***********************************
  249. ;*   SUBROUTINE GRSEGM()
  250. ;***********************************
  251.  
  252. GRSEGM    PROC      FAR
  253.     PUSH      BP
  254.     MOV       BP,SP
  255.     LES       BX,[BP].16H
  256.     MOV       AX,ES:[BX]
  257.     MOV       CENTRX,AX
  258.     LES       BX,[BP].12H
  259.     MOV       AX,ES:[BX]
  260.     MOV       CENTRY,AX
  261.     LES       BX,[BP].0EH
  262.     MOV       AX,ES:[BX]
  263.     MOV       RADIUS,AX
  264.     LES       BX,[BP].0AH
  265.     MOV       AX,ES:[BX]
  266.     MOV       STARTD,AX
  267.     LES       BX,[BP].06H
  268.     MOV       AX,ES:[BX]
  269.     MOV       ENDDEG,AX
  270.     MOV       AX,ENDDEG
  271.     PUSH      AX
  272.     MOV       AX,STARTD
  273.     PUSH      AX
  274.     MOV       AX,RADIUS
  275.     PUSH      AX
  276.     MOV       AX,CENTRY
  277.     PUSH      AX
  278.     MOV       AX,CENTRX
  279.     PUSH      AX
  280.     PUSH      DS            ;call with ES set to DS
  281.     POP       ES
  282.     CALL      segment_
  283.     ADD       SP,10            ;C convention remove params from stack
  284.     MOV       SP,BP
  285.     POP       BP
  286.     RET
  287. GRSEGM    ENDP
  288.  
  289. ;***********************************
  290. ;*   SUBROUTINE GRCOLR()
  291. ;***********************************
  292.  
  293. GRCOLR    PROC      FAR
  294.     PUSH      BP
  295.     MOV       BP,SP
  296.     LES       BX,[BP].12H
  297.     MOV       AX,ES:[BX]
  298.     MOV       INDEX,AX
  299.     LES       BX,[BP].0EH
  300.     MOV       AX,ES:[BX]
  301.     MOV       RED,AX
  302.     LES       BX,[BP].0AH
  303.     MOV       AX,ES:[BX]
  304.     MOV       GREEN,AX
  305.     LES       BX,[BP].06H
  306.     MOV       AX,ES:[BX]
  307.     MOV       BLUE,AX
  308.     MOV       AX,BLUE
  309.     PUSH      AX
  310.     MOV       AX,GREEN
  311.     PUSH      AX
  312.     MOV       AX,RED
  313.     PUSH      AX
  314.     MOV       AX,INDEX
  315.     PUSH      AX
  316.     PUSH      DS            ;call with ES set to DS
  317.     POP       ES
  318.     CALL      color
  319.     ADD       SP,8            ;C convention remove params from stack
  320.     MOV       SP,BP
  321.     POP       BP
  322.     RET
  323. GRCOLR    ENDP
  324.  
  325. ;***********************************
  326. ;*   SUBROUTINE GRBAR()
  327. ;***********************************
  328.  
  329. GRBAR    PROC      FAR
  330.     PUSH      BP
  331.     MOV       BP,SP
  332.     LES       BX,[BP].06H
  333.     PUSH      BX
  334.     PUSH      DS            ;call with ES set to DS
  335.     POP       ES
  336.     CALL      bar
  337.     ADD       SP,2            ;C convention remove params from stack
  338.     MOV       SP,BP
  339.     POP       BP
  340.     RET
  341. GRBAR    ENDP
  342.  
  343. ;***********************************
  344. ;*   SUBROUTINE GRPLIN()
  345. ;***********************************
  346.  
  347. GRPLIN    PROC      FAR
  348.     PUSH      BP
  349.     MOV       BP,SP
  350.     LES       BX,[BP].0AH
  351.     MOV       AX,ES:[BX]
  352.     MOV       COUNT,AX
  353.     LES       BX,[BP].06H
  354.     MOV       ARRAY,BX
  355.     MOV       AX,ARRAY
  356.     PUSH      AX
  357.     MOV       AX,COUNT
  358.     PUSH      AX
  359.     PUSH      DS            ;call with ES set to DS
  360.     POP       ES
  361.     CALL      polyline
  362.     ADD       SP,4            ;C convention remove params from stack
  363.     MOV       SP,BP
  364.     POP       BP
  365.     RET
  366. GRPLIN    ENDP
  367.  
  368. ;***********************************
  369. ;*   SUBROUTINE GRPMAR()
  370. ;***********************************
  371.  
  372. GRPMAR    PROC      FAR
  373.     PUSH      BP
  374.     MOV       BP,SP
  375.     LES       BX,[BP].0AH
  376.     MOV       AX,ES:[BX]
  377.     MOV       COUNT,AX
  378.     LES       BX,[BP].06H
  379.     MOV       ARRAY,BX
  380.     MOV       AX,ARRAY
  381.     PUSH      AX
  382.     MOV       AX,COUNT
  383.     PUSH      AX
  384.     PUSH      DS            ;call with ES set to DS
  385.     POP       ES
  386.     CALL      polymark
  387.     ADD       SP,4            ;C convention remove params from stack
  388.     MOV       SP,BP
  389.     POP       BP
  390.     RET
  391. GRPMAR    ENDP
  392.  
  393. ;***********************************
  394. ;*   SUBROUTINE GRPFIL()
  395. ;***********************************
  396.  
  397. GRPFIL    PROC      FAR
  398.     PUSH      BP
  399.     MOV       BP,SP
  400.     LES       BX,[BP].0AH
  401.     MOV       AX,ES:[BX]
  402.     MOV       COUNT,AX
  403.     LES       BX,[BP].06H
  404.     MOV       ARRAY,BX
  405.     MOV       AX,ARRAY
  406.     PUSH      AX
  407.     MOV       AX,COUNT
  408.     PUSH      AX
  409.     PUSH      DS            ;call with ES set to DS
  410.     POP       ES
  411.     CALL      polyfill
  412.     ADD       SP,4            ;C convention remove params from stack
  413.     MOV       SP,BP
  414.     POP       BP
  415.     RET
  416. GRPFIL    ENDP
  417.  
  418. ;***********************************
  419. ;*   SUBROUTINE GRGTXT()
  420. ;***********************************
  421.  
  422. GRGTXT    PROC      FAR
  423.     PUSH      BP
  424.     MOV       BP,SP
  425.     LES       BX,[BP].12H
  426.     MOV       AX,ES:[BX]
  427.     MOV       X,AX
  428.     LES       BX,[BP].0EH
  429.     MOV       AX,ES:[BX]
  430.     MOV       Y,AX
  431.  
  432.     LES       SI,[BP].0AH        ;character string addr
  433.     LES       BX,[BP].06H        ;count
  434.     MOV       CX,ES:[BX]
  435.     CALL      movc
  436.  
  437.     LEA       AX, STRING
  438.     PUSH      AX
  439.     MOV       AX,Y
  440.     PUSH      AX
  441.     MOV       AX,X
  442.     PUSH      AX
  443.     PUSH      DS            ;call with ES set to DS
  444.     POP       ES
  445.     CALL      gtext
  446.     ADD       SP,6            ;C convention remove params from stack
  447.     MOV       SP,BP
  448.     POP       BP
  449.     RET
  450. GRGTXT    ENDP
  451.  
  452. ;***********************************
  453. ;*   SUBROUTINE GRTEXT()
  454. ;***********************************
  455.  
  456. GRTEXT    PROC      FAR
  457.     PUSH      BP
  458.     MOV       BP,SP
  459.     LES       BX,[BP].12H
  460.     MOV       AX,ES:[BX]
  461.     MOV       X,AX
  462.     LES       BX,[BP].0EH
  463.     MOV       AX,ES:[BX]
  464.     MOV       Y,AX
  465.     LES       SI,[BP].0AH
  466.     LES       BX,[BP].06H
  467.     MOV       CX,ES:[BX]
  468.     CALL      movc
  469.     LEA       AX, STRING
  470.     PUSH      AX
  471.     MOV       AX,Y
  472.     PUSH      AX
  473.     MOV       AX,X
  474.     PUSH      AX
  475.     PUSH      DS            ;call with ES set to DS
  476.     POP       ES
  477.     CALL      ltext
  478.     ADD       SP,6            ;C convention remove params from stack
  479.     MOV       SP,BP
  480.     POP       BP
  481.     RET
  482. GRTEXT    ENDP
  483.  
  484. ;***********************************
  485. ;*   SUBROUTINE GRRQLO()
  486. ;***********************************
  487.  
  488. GRRQLO    PROC      FAR
  489.     PUSH      BP
  490.     MOV       BP,SP
  491.     LES       BX,[BP].16H
  492.     MOV       AX,ES:[BX]
  493.     MOV       XSTART,AX
  494.     LES       BX,[BP].12H
  495.     MOV       AX,ES:[BX]
  496.     MOV       YSTART,AX
  497.     LES       BX,[BP].0EH
  498.     MOV       AX,ES:[BX]
  499.     MOV       CHAR,AX
  500.     LES       BX,[BP].0AH
  501.     MOV       AX,ES:[BX]
  502.     MOV       XEND,AX
  503.     LES       BX,[BP].06H
  504.     MOV       AX,ES:[BX]
  505.     MOV       YEND,AX
  506.     MOV       AX,YEND
  507.     PUSH      AX
  508.     MOV       AX,XEND
  509.     PUSH      AX
  510.     MOV       AX,CHAR
  511.     PUSH      AX
  512.     MOV       AX,YSTART
  513.     PUSH      AX
  514.     MOV       AX,XSTART
  515.     PUSH      AX
  516.     MOV       AX,ZERO
  517.     PUSH      AX
  518.     PUSH      DS            ;call with ES set to DS
  519.     POP       ES
  520.     CALL      rq_locator
  521.     ADD       SP,12            ;C convention remove params from stack
  522.     LES       BX,[BP].0EH
  523.     MOV       AX,CHAR
  524.     MOV       ES:[BX],AL
  525.     LES       BX,[BP].0AH
  526.     MOV       AX,XEND
  527.     MOV       ES:[BX],AX
  528.     LES       BX,[BP].06H
  529.     MOV       AX,YEND
  530.     MOV       ES:[BX],AX
  531.     MOV       SP,BP
  532.     POP       BP
  533.     RET
  534. GRRQLO    ENDP
  535.  
  536. ;***********************************
  537. ;*   SUBROUTINE GRVSCR()
  538. ;***********************************
  539.  
  540. GRVSCR    PROC      FAR
  541. ;    PUSH      BP
  542. ;    MOV       BP,SP
  543. ;    MOV       SP,BP
  544. ;    POP       BP
  545.     RET
  546. GRVSCR    ENDP
  547.  
  548. ;***********************************
  549. ;*   SUBROUTINE GRHSCR()
  550. ;***********************************
  551.  
  552. GRHSCR    PROC      FAR
  553. ;    PUSH      BP
  554. ;    MOV       BP,SP
  555. ;    MOV       SP,BP
  556. ;    POP       BP
  557.     RET
  558. GRHSCR    ENDP
  559.  
  560. ;***********************************
  561. ;*   SUBROUTINE GRPOIN()
  562. ;***********************************
  563.  
  564. GRPOIN    PROC      FAR
  565.     PUSH      BP
  566.     MOV       BP,SP
  567.     LES       BX,[BP].0AH
  568.     MOV       AX,ES:[BX]
  569.     MOV       X,AX
  570.     LES       BX,[BP].06H
  571.     MOV       AX,ES:[BX]
  572.     MOV       Y,AX
  573.     MOV       AX,Y
  574.     PUSH      AX
  575.     MOV       AX,X
  576.     PUSH      AX
  577.     PUSH      DS            ;call with ES set to DS
  578.     POP       ES
  579.     CALL      point
  580.     ADD       SP,4            ;C convention remove params from stack
  581.     MOV       SP,BP
  582.     POP       BP
  583.     RET
  584. GRPOIN    ENDP
  585.  
  586. ;***********************************
  587. ;*   SUBROUTINE GRRECT()
  588. ;***********************************
  589.  
  590. GRRECT    PROC      FAR
  591.     PUSH      BP
  592.     MOV       BP,SP
  593.     LES       AX,[BP].06H
  594.     MOV       ARRAY4,AX
  595.     MOV       AX,ARRAY4
  596.     PUSH      AX
  597.     PUSH      DS            ;call with ES set to DS
  598.     POP       ES
  599.     CALL      rectangle
  600.     ADD       SP,2            ;C convention remove params from stack
  601.     MOV       SP,BP
  602.     POP       BP
  603.     RET
  604. GRRECT    ENDP
  605.  
  606. ;***********************************
  607. ;*   SUBROUTINE GRTSCA()
  608. ;***********************************
  609.  
  610. GRTSCA    PROC      FAR
  611.     PUSH      BP
  612.     MOV       BP,SP
  613.     LES       BX,[BP].06H
  614.     MOV       AX,ES:[BX]
  615.     MOV       BYTE PTR t_sca,AL
  616.     MOV       SP,BP
  617.     POP       BP
  618.     RET
  619. GRTSCA    ENDP
  620.  
  621. ;***********************************
  622. ;*   SUBROUTINE GRCLOS()
  623. ;***********************************
  624.  
  625. GRCLOS    PROC      FAR
  626.     PUSH      BP
  627.     MOV       BP,SP
  628.     PUSH      DS            ;call with ES set to DS
  629.     POP       ES
  630.     CALL      closews
  631.     MOV       SP,BP
  632.     POP       BP
  633.     RET
  634. GRCLOS    ENDP
  635.  
  636. ;***********************************
  637. ;*   SUBROUTINE GRGOFF()
  638. ;***********************************
  639.  
  640. GRGOFF    PROC      FAR
  641.     PUSH      BP
  642.     MOV       BP,SP
  643.     PUSH      DS            ;call with ES set to DS
  644.     POP       ES
  645.     CALL      g_off
  646.     MOV       SP,BP
  647.     POP       BP
  648.     RET
  649. GRGOFF    ENDP
  650.  
  651. ;***********************************
  652. ;*   SUBROUTINE GRTDIR()
  653. ;***********************************
  654.  
  655. GRTDIR    PROC      FAR
  656.     PUSH      BP
  657.     MOV       BP,SP
  658.     LES       BX,[BP].06H
  659.     MOV       AX,ES:[BX]
  660.     MOV       BYTE PTR t_dir,AL
  661.     MOV       SP,BP
  662.     POP       BP
  663.     RET
  664. GRTDIR    ENDP
  665.  
  666. ;***********************************
  667. ;*   SUBROUTINE GRFCOL()
  668. ;***********************************
  669.  
  670. GRFCOL    PROC      FAR
  671.     PUSH      BP
  672.     MOV       BP,SP
  673.     LES       BX,[BP].06H
  674.     MOV       AX,ES:[BX]
  675.     MOV       BYTE PTR f_col,AL
  676.     MOV       SP,BP
  677.     POP       BP
  678.     RET
  679. GRFCOL    ENDP
  680.  
  681. ;***********************************
  682. ;*   SUBROUTINE GRFSTY()
  683. ;***********************************
  684.  
  685. GRFSTY    PROC      FAR
  686.     PUSH      BP
  687.     MOV       BP,SP
  688.     LES       BX,[BP].06H
  689.     MOV       AX,ES:[BX]
  690.     MOV       BYTE PTR f_style,AL
  691.     MOV       SP,BP
  692.     POP       BP
  693.     RET
  694. GRFSTY    ENDP
  695.  
  696. ;***********************************
  697. ;*   SUBROUTINE GRFTYP()
  698. ;***********************************
  699.  
  700. GRFTYP    PROC      FAR
  701.     PUSH      BP
  702.     MOV       BP,SP
  703.     LES       BX,[BP].06H
  704.     MOV       AX,ES:[BX]
  705.     MOV       BYTE PTR f_type,AL
  706.     MOV       SP,BP
  707.     POP       BP
  708.     RET
  709. GRFTYP    ENDP
  710.  
  711. ;***********************************
  712. ;*   SUBROUTINE GRLCOL()
  713. ;***********************************
  714.  
  715. GRLCOL    PROC      FAR
  716.     PUSH      BP
  717.     MOV       BP,SP
  718.     LES       BX,[BP].06H
  719.     MOV       AX,ES:[BX]
  720.     MOV       BYTE PTR l_col,AL
  721.     MOV       SP,BP
  722.     POP       BP
  723.     RET
  724. GRLCOL    ENDP
  725.  
  726. ;***********************************
  727. ;*   SUBROUTINE GRLTYP()
  728. ;***********************************
  729.  
  730. GRLTYP    PROC      FAR
  731.     PUSH      BP
  732.     MOV       BP,SP
  733.     LES       BX,[BP].06H
  734.     MOV       AX,ES:[BX]
  735.     MOV       BYTE PTR l_type,AL
  736.     MOV       SP,BP
  737.     POP       BP
  738.     RET
  739. GRLTYP    ENDP
  740.  
  741. ;***********************************
  742. ;*   SUBROUTINE GRLWID()
  743. ;***********************************
  744.  
  745. GRLWID    PROC      FAR
  746.     PUSH      BP
  747.     MOV       BP,SP
  748.     LES       BX,[BP].06H
  749.     MOV       AX,ES:[BX]
  750.     MOV       BYTE PTR l_wid,AL
  751.     MOV       SP,BP
  752.     POP       BP
  753.     RET
  754. GRLWID    ENDP
  755.  
  756. ;***********************************
  757. ;*   SUBROUTINE GRMCOL()
  758. ;***********************************
  759.  
  760. GRMCOL    PROC      FAR
  761.     PUSH      BP
  762.     MOV       BP,SP
  763.     LES       BX,[BP].06H
  764.     MOV       AX,ES:[BX]
  765.     MOV       BYTE PTR m_col,AL
  766.     MOV       SP,BP
  767.     POP       BP
  768.     RET
  769. GRMCOL    ENDP
  770.  
  771. ;***********************************
  772. ;*   SUBROUTINE GRMSCA()
  773. ;***********************************
  774.  
  775. GRMSCA    PROC      FAR
  776.     PUSH      BP
  777.     MOV       BP,SP
  778.     LES       BX,[BP].06H
  779.     MOV       AX,ES:[BX]
  780.     MOV       BYTE PTR m_sca,AL
  781.     MOV       SP,BP
  782.     POP       BP
  783.     RET
  784. GRMSCA    ENDP
  785.  
  786. ;***********************************
  787. ;*   SUBROUTINE GRMTYP()
  788. ;***********************************
  789.  
  790. GRMTYP    PROC      FAR
  791.     PUSH      BP
  792.     MOV       BP,SP
  793.     LES       BX,[BP].06H
  794.     MOV       AX,ES:[BX]
  795.     MOV       BYTE PTR m_type,AL
  796.     MOV       SP,BP
  797.     POP       BP
  798.     RET
  799. GRMTYP    ENDP
  800.  
  801. ;***********************************
  802. ;*   SUBROUTINE GRWMOD()
  803. ;***********************************
  804.  
  805. GRWMOD    PROC      FAR
  806.     PUSH      BP
  807.     MOV       BP,SP
  808.     LES       BX,[BP].06H
  809.     MOV       AX,ES:[BX]
  810.     MOV       BYTE PTR ws_wmo,AL
  811.     PUSH      DS            ;call with ES set to DS
  812.     POP       ES
  813.     CALL      a_wmode
  814.     MOV       SP,BP
  815.     POP       BP
  816.     RET
  817. GRWMOD    ENDP
  818.  
  819. ;***********************************
  820. ;*   SUBROUTINE GRTCOL()
  821. ;***********************************
  822.  
  823. GRTCOL    PROC      FAR
  824.     PUSH      BP
  825.     MOV       BP,SP
  826.     LES       BX,[BP].06H
  827.     MOV       AX,ES:[BX]
  828.     MOV       BYTE PTR t_col,AL
  829.     MOV       SP,BP
  830.     POP       BP
  831.     RET
  832. GRTCOL    ENDP
  833.  
  834. ;***********************************
  835. ;*   SUBROUTINE GRTFON()
  836. ;***********************************
  837.  
  838. GRTFON    PROC      FAR
  839.     PUSH      BP
  840.     MOV       BP,SP
  841.     LES       BX,[BP].06H
  842.     MOV       AX,ES:[BX]
  843.     MOV       BYTE PTR t_font,AL
  844.     MOV       SP,BP
  845.     POP       BP
  846.     RET
  847. GRTFON    ENDP
  848.  
  849. ;***********************************
  850. ;*   SUBROUTINE GRRCEL()
  851. ;***********************************
  852.  
  853. GRRCEL    PROC      FAR
  854.     PUSH      BP
  855.     MOV       BP,SP
  856.     LES       BX,[BP].06H
  857.     PUSH      BX
  858.     PUSH      DS            ;call with ES set to DS
  859.     POP       ES
  860.     CALL      rd_cell
  861.     ADD       SP,2            ;C convention remove params from stack
  862.     MOV       SP,BP
  863.     POP       BP
  864.     RET
  865. GRRCEL    ENDP
  866.  
  867. ;***********************************
  868. ;*   SUBROUTINE GRWCEL()
  869. ;***********************************
  870.  
  871. GRWCEL    PROC      FAR
  872.     PUSH      BP
  873.     MOV       BP,SP
  874.     LES       BX,[BP].06H
  875.     PUSH      BX
  876.     PUSH      DS            ;call with ES set to DS
  877.     POP       ES
  878.     CALL      wr_cell
  879.     ADD       SP,2            ;C convention remove params from stack
  880.     MOV       SP,BP
  881.     POP       BP
  882.     RET
  883. GRWCEL    ENDP
  884.  
  885. ;***********************************
  886. ;*   SUBROUTINE GRRPLN()
  887. ;***********************************
  888.  
  889. GRRPLN    PROC      FAR
  890.     PUSH      BP
  891.     MOV       BP,SP
  892.     LES       BX,[BP].06H
  893.     PUSH      BX
  894.     PUSH      DS            ;call with ES set to DS
  895.     POP       ES
  896.     CALL      rd_plane
  897.     ADD       SP,2            ;C convention remove params from stack
  898.     MOV       SP,BP
  899.     POP       BP
  900.     RET
  901. GRRPLN    ENDP
  902.  
  903. ;***********************************
  904. ;*   SUBROUTINE GRWPLN()
  905. ;***********************************
  906.  
  907. GRWPLN    PROC      FAR
  908.     PUSH      BP
  909.     MOV       BP,SP
  910.     LES       BX,[BP].06H
  911.     PUSH      BX
  912.     PUSH      DS            ;call with ES set to DS
  913.     POP       ES
  914.     CALL      wr_plane
  915.     ADD       SP,2            ;C convention remove params from stack
  916.     MOV       SP,BP
  917.     POP       BP
  918.     RET
  919. GRWPLN    ENDP
  920.  
  921. ;***********************************
  922. ;*   SUBROUTINE GRSAVE()
  923. ;***********************************
  924.  
  925. GRSAVE    PROC      FAR
  926.     PUSH      BP
  927.     MOV       BP,SP
  928.     LES       BX,[BP].06H
  929.     MOV      AX,ES:[BX]
  930.     PUSH      AX
  931.     PUSH      DS            ;call with ES set to DS
  932.     POP       ES
  933.     CALL      save_ws
  934.     ADD       SP,2            ;C convention remove params from stack
  935.     MOV       SP,BP
  936.     POP       BP
  937.     RET
  938. GRSAVE    ENDP
  939.  
  940. ;***********************************
  941. ;*   SUBROUTINE GRREST()
  942. ;***********************************
  943.  
  944. GRREST    PROC      FAR
  945.     PUSH      BP
  946.     MOV       BP,SP
  947.     LES       BX,[BP].06H
  948.     MOV      AX,ES:[BX]
  949.     PUSH      AX
  950.     PUSH      DS            ;call with ES set to DS
  951.     POP       ES
  952.     CALL      restore_ws
  953.     ADD       SP,2            ;C convention remove params from stack
  954.     MOV       SP,BP
  955.     POP       BP
  956.     RET
  957. GRREST    ENDP
  958.  
  959.  
  960. include epilogue.h
  961.     END
  962. 
  963.