DataMuseum.dk

Presents historical artifacts from the history of:

CP/M

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦657bb649a⟧ TextFile

    Length: 29312 (0x7280)
    Types: TextFile
    Names: »AESBND.PAS«

Derivation

└─⟦4fbcde1e4⟧ Bits:30003931/GEM_Development-A.imd Disketter indleveret af Steffen Jensen (Piccolo/Piccoline)
    └─⟦this⟧ »AESBND.PAS« 

TextFile


(*****************************************************************)
(**      File Name     :  AESBND.PAS                            **)
(**                                                             **)
(**      Modified for Turbo Pascal.                             **)
(**                                                             **)
(**      Comments      :  All these language bindings use       **)
(**                       array's relative to zero to match the **)
(**                       Programmer's Guide (GEM AES VOL 2)    **)
(**                                                             **)
(**      Author        : Athol M. Foden                         **)
(**      History       : Feb 1985                               **)
(**      Last Modified : 12 February 1986                       **)
(**      Digital Research Inc                                   **)
(*****************************************************************)

PROCEDURE GAES (VAR     a_addrout : aad_ARRAY;
                 VAR a_addrin : aad_ARRAY;
                 VAR aintout : ao_ARRAY;
                 VAR aintin : ai_ARRAY;
                 VAR aglobal : ag_ARRAY;
                 VAR acontrol : ac_ARRAY);

CONST
        AESinterruptVector = $EF;
        AESmagicConstant = 200;

TYPE
        ADDRESS = ^BYTE;

VAR
        parameterBlock : RECORD
                controlArray : ADDRESS;
                globalArray : ADDRESS;
                inputParameterArray : ADDRESS;
                outputParameterArray : ADDRESS;
                inputAddressArray : ADDRESS;
                outputAddressArray : ADDRESS;
        END (* RECORD *);
        registers : RECORD

                ax, bx, cx, dx, bp, si, di, ds, es, flags : INTEGER;

        END (* RECORD *);

BEGIN (* GAES *)

        parameterBlock.controlArray := ADDR(acontrol);
        parameterBlock.globalArray := ADDR(aglobal);
        parameterBlock.inputParameterArray := ADDR(aintin);
        parameterBlock.outputParameterArray := ADDR(aintout);
        parameterBlock.inputAddressArray := ADDR(a_addrin);
        parameterBlock.outputAddressArray := ADDR(a_addrout);

        registers.cx := AESmagicConstant;
        registers.es := SEG(parameterBlock);
        registers.bx := OFS(parameterBlock);

        swint(AESinterruptvector, registers);

END (* GAES *);

(*---------------------------------------------------------------------*)
(** Common call to the GEM AES routines - used by all other functions *)

FUNCTION GEMAES(opcode, c1, c2, c3, c4 : INTEGER) : INTEGER;
BEGIN
        gcontrolÆ0Å := opcode;
        gcontrolÆ1Å := c1;        (* number of params in gintin *)
        gcontrolÆ2Å := c2;        (* number of params in gintout *)
        gcontrolÆ3Å := c3;        (* number of params in addrin *)
        gcontrolÆ4Å := c4;        (* number of params in addrout *)
        GAES(addr_out, addr_in, gintout, gintin, global, gcontrol);
        GEMAES := gintoutÆ0Å;                     (* return value if any *)
END;

(***********************************************************************)

                  (*** APPLICATION LIBRARY ***)

(*---------------------------------------------------------------------*)

FUNCTION appl_init : INTEGER;

VAR     ap_id : INTEGER ;
BEGIN
        ap_id := GEMAES(10,0,1,0,0);
        globalÆ 2 Å := ap_id ;
        appl_init := ap_id;
END ;

(*---------------------------------------------------------------------*)

FUNCTION appl_read ( ap_rid, ap_rlength: INTEGER;
                                ap_rpbuff: ADDRESS ) : INTEGER;
BEGIN
        gintinÆ 0 Å := ap_rid;
        gintinÆ 1 Å := ap_rlength;
        addr_inÆ 0 Å := ap_rpbuff;
        appl_read := GEMAES(11,2,1,1,0);
END ;

(*---------------------------------------------------------------------*)

FUNCTION   appl_write(  ap_wid, ap_wlength : INTEGER;
                        ap_wpbuff: ADDRESS ) : INTEGER;
BEGIN
        gintinÆ 0 Å := ap_wid;
        gintinÆ 1 Å := ap_wlength;
        addr_inÆ 0 Å := ap_wpbuff;
        appl_write := GEMAES(12,2,1,1,0);
END ;

(*---------------------------------------------------------------------*)

FUNCTION appl_find (ap_fpname : ADDRESS) : INTEGER;
BEGIN
        addr_inÆ0Å := ap_fpname;
        appl_find := GEMAES(13,0,1,1,0);
END;

(*---------------------------------------------------------------------*)

FUNCTION appl_tplay (ap_tpmem : ADDRESS;
                        ap_tpnum, ap_tpscale : INTEGER) : INTEGER;
BEGIN
        gintinÆ0Å := ap_tpnum;
        gintinÆ1Å := ap_tpscale;
        addr_inÆ0Å := ap_tpmem;
        appl_tplay := GEMAES(14,2,1,1,0);
END;

(*---------------------------------------------------------------------*)

FUNCTION appl_trecord (ap_trmem : ADDRESS;
ap_trcount : INTEGER) : INTEGER;
BEGIN
        gintinÆ0Å := ap_trcount;
        addr_inÆ0Å := ap_trmem;
        appl_trecord := GEMAES(15,1,1,1,0);
END;

(*---------------------------------------------------------------------*)

FUNCTION appl_exit : INTEGER;
BEGIN
        appl_exit := GEMAES(19,0,1,0,0);
END ;

(***********************************************************************)
                (** EVENT LIBRARY **)

(*---------------------------------------------------------------------*)

FUNCTION evnt_keybd : INTEGER;
BEGIN
        evnt_keybd := GEMAES(20,0,1,0,0);
END ;

(*---------------------------------------------------------------------*)

FUNCTION evnt_button(ev_bclicks, ev_bmask, ev_bstate : INTEGER;

                        VAR ev_bmx, ev_bmy, ev_bmb, ev_bks : INTEGER) : INTEGER ;
BEGIN
        gintinÆ 0 Å := ev_bclicks;
        gintinÆ 1 Å := ev_bmask;
        gintinÆ 2 Å := ev_bstate;
        evnt_button := GEMAES(21,3,5,0,0);
        ev_bmx := gintoutÆ1Å;
        ev_bmy := gintoutÆ2Å;
        ev_bmb := gintoutÆ3Å;
        ev_bks := gintoutÆ4Å;
END ;

(*---------------------------------------------------------------------*)

FUNCTION   evnt_mouse( ev_moflags, ev_mox, ev_moy, ev_mowidth, 
                                                ev_moheight : INTEGER;

                VAR ev_momx, ev_momy, ev_momb, ev_momks : INTEGER) : INTEGER;
BEGIN
        gintinÆ 0 Å := ev_moflags;
        gintinÆ 1 Å := ev_mox;
        gintinÆ 2 Å := ev_moy;
        gintinÆ 3 Å := ev_mowidth;
        gintinÆ 4 Å := ev_moheight;
        evnt_mouse := GEMAES(22,5,5,0,0);
        ev_momx := gintoutÆ1Å;
        ev_momy := gintoutÆ2Å;
        ev_momb := gintoutÆ3Å;
        ev_momks := gintoutÆ4Å;
END ;

(*---------------------------------------------------------------------*)

FUNCTION   evnt_mesag( ev_mgpbuff : ADDRESS ) : INTEGER;
BEGIN
        addr_inÆ 0 Å := ev_mgpbuff;
        evnt_mesag := GEMAES(23,0,1,1,0);
END ;

(*---------------------------------------------------------------------*)

FUNCTION   evnt_timer( ev_tlocount, ev_thicount : INTEGER ) : INTEGER;
BEGIN
        gintinÆ 0 Å := ev_tlocount;
        gintinÆ 1 Å := ev_thicount;
        evnt_timer := GEMAES(24,2,1,0,0);
END ;

(*---------------------------------------------------------------------*)

FUNCTION   evnt_multi( ev_mflags, ev_mbclicks, ev_mbmask, ev_mbstate, 
                   ev_mm1flags, ev_mm1x, ev_mm1y, ev_mm1width, ev_m1height, 
           ev_mm2flags, ev_mm2x, ev_mm2y, ev_mm2width, ev_mm2height : INTEGER ;
                           ev_mmgpbuff : ADDRESS ;
                           ev_mtlocount, ev_mthicount : INTEGER ;

            VAR ev_mmox, ev_mmoy, ev_mmobutton, ev_mmokstate, 
                ev_mkreturn, ev_mbreturn : INTEGER ) : INTEGER;
BEGIN
        gintinÆ 0 Å := ev_mflags;
        gintinÆ 1 Å := ev_mbclicks;
        gintinÆ 2 Å := ev_mbmask;
        gintinÆ 3 Å := ev_mbstate;
        gintinÆ 4 Å := ev_mm1flags;
        gintinÆ 5 Å := ev_mm1x;
        gintinÆ 6 Å := ev_mm1y;
        gintinÆ 7 Å := ev_mm1width;
        gintinÆ 8 Å := ev_m1height;
        gintinÆ 9 Å := ev_mm2flags;
        gintinÆ 10 Å := ev_mm2x;
        gintinÆ 11 Å := ev_mm2y;
        gintinÆ 12 Å := ev_mm2width;
        gintinÆ 13 Å := ev_mm2height;
        addr_inÆ 0 Å := ev_mmgpbuff ;
        gintinÆ 14 Å := ev_mtlocount;
        gintinÆ 15 Å := ev_mthicount;
        EVNT_MULTI := GEMAES(25,16,7,1,0);
        ev_mmox  := gintoutÆ 1 Å ;
        ev_mmoy  := gintoutÆ 2 Å ;
        ev_mmobutton := gintoutÆ 3 Å ;
        ev_mmokstate := gintoutÆ4Å;
        ev_mkreturn := gintoutÆ5Å;
        ev_mbreturn := gintoutÆ6Å;
END ;

(*----------------------------------------------------------------------*)

FUNCTION evnt_dclick(ev_dnew, ev_dgtest : INTEGER) : INTEGER;
BEGIN
        gintinÆ0Å := ev_dnew;
        gintinÆ1Å := ev_dgtest;
        evnt_dclick := GEMAES(26,2,1,0,0);
END;

(************************************************************************)

                (** MENU LIBRARY **)

(*---------------------------------------------------------------------*)

FUNCTION   menu_bar( me_btree : ADDRESS ;
me_bshow : INTEGER ) : INTEGER;
BEGIN
        addr_inÆ 0 Å := me_btree;
        gintinÆ 0 Å := me_bshow;
        menu_bar := GEMAES(30,1,1,1,0);
END ;

(*---------------------------------------------------------------------*)

FUNCTION menu_icheck( me_ctree : ADDRESS ;
                        me_citem, me_ccheck : INTEGER ) : INTEGER;
BEGIN
        addr_inÆ 0 Å := me_ctree;
        gintinÆ 0 Å := me_citem;
        gintinÆ 1 Å := me_ccheck;
        menu_icheck := GEMAES(31,2,1,1,0);
END ;

(*---------------------------------------------------------------------*)

FUNCTION   menu_ienable( me_etree : ADDRESS ;
                         me_eitem, me_eenable : INTEGER ) : INTEGER;
BEGIN
        addr_inÆ 0 Å := me_etree;
        gintinÆ 0 Å := me_eitem;
        gintinÆ 1 Å := me_eenable;
         menu_ienable := GEMAES(32,2,1,1,0);
END ;

(*---------------------------------------------------------------------*)

FUNCTION menu_tnormal( me_ntree : ADDRESS ;
                                me_ntitle, me_nnormal : INTEGER ) : INTEGER;
BEGIN
        addr_inÆ 0 Å := me_ntree;
        gintinÆ 0 Å := me_ntitle;
        gintinÆ 1 Å := me_nnormal;
        menu_tnormal := GEMAES(33,2,1,1,0);
END ;


(*---------------------------------------------------------------------*)

FUNCTION menu_text( me_ttree : ADDRESS ;
me_titem : INTEGER ;
                me_ttext : ADDRESS ) : INTEGER;
BEGIN
        addr_inÆ 0 Å := me_ttree;
        gintinÆ 0 Å := me_titem;
        addr_inÆ 1 Å := me_ttext;
        menu_text := GEMAES(34,1,1,2,0);
END ;

(*----------------------------------------------------------------------*)

FUNCTION menu_register( me_raccapid : INTEGER;
                                me_rpstring : ADDRESS) : INTEGER;
BEGIN
        gintinÆ0Å := me_raccapid;
        addr_inÆ0Å := me_rpstring;
        menu_register := GEMAES(35,1,1,1,0);
END;

(************************************************************************)

                (** OBJECT LIBRARY **)

(*---------------------------------------------------------------------*)

FUNCTION   objc_add( ob_atree : ADDRESS ;
                        ob_aparent, ob_achild : INTEGER ) : INTEGER;
BEGIN
        addr_inÆ 0 Å := ob_atree;
        gintinÆ 0 Å := ob_aparent;
        gintinÆ 1 Å := ob_achild;
        objc_add := GEMAES(40,2,1,1,0);
END ;

(*---------------------------------------------------------------------*)

FUNCTION objc_delete( ob_dltree : ADDRESS ;
ob_dlobject : INTEGER ) : INTEGER;
BEGIN
        addr_inÆ 0 Å := ob_dltree;
        gintinÆ 0 Å := ob_dlobject;
        objc_delete := GEMAES(41,1,1,1,0);
END ;

(*---------------------------------------------------------------------*)

FUNCTION objc_draw( ob_dtree : ADDRESS ;
                        ob_drstartob, ob_drdepth, ob_drxclip, 
                ob_dryclip, ob_drwclip, ob_drhclip : INTEGER ) : INTEGER;
BEGIN
        addr_inÆ 0 Å := ob_dtree;
        gintinÆ 0 Å := ob_drstartob;
        gintinÆ 1 Å := ob_drdepth;
        gintinÆ 2 Å := ob_drxclip;
        gintinÆ 3 Å := ob_dryclip;
        gintinÆ 4 Å := ob_drwclip;
        gintinÆ 5 Å := ob_drhclip;
        objc_draw := GEMAES(42,6,1,1,0);
END ;

(*---------------------------------------------------------------------*)

FUNCTION objc_find( ob_ftree : ADDRESS ;
                ob_fstartob, ob_fdepth, ob_fmx, ob_fmy : INTEGER) : INTEGER;
BEGIN
        addr_inÆ 0 Å := ob_ftree;
        gintinÆ 0 Å := ob_fstartob;
        gintinÆ 1 Å := ob_fdepth;
        gintinÆ 2 Å := ob_fmx;
        gintinÆ 3 Å := ob_fmy;
        objc_find := GEMAES(43,4,1,1,0);
END ;

(*---------------------------------------------------------------------*)

FUNCTION objc_offset( ob_oftree : ADDRESS ;
                        ob_ofobject  : INTEGER  ;

                        VAR ob_ofxoff, ob_ofyoff : INTEGER ) : INTEGER;
BEGIN
        addr_inÆ 0 Å := ob_oftree;
        gintinÆ 0 Å := ob_ofobject;
        objc_offset := GEMAES(44,1,3,1,0);
        ob_ofxoff := gintoutÆ 1 Å ;
        ob_ofyoff := gintoutÆ 2 Å ;

END ;

(*---------------------------------------------------------------------*)

FUNCTION objc_order( ob_ortree : ADDRESS ;
                     ob_orobject, ob_ornewpos : INTEGER ) : INTEGER;
BEGIN
        addr_inÆ 0 Å := ob_ortree;
        gintinÆ 0 Å := ob_orobject;
        gintinÆ 1 Å := ob_ornewpos;
        objc_order := GEMAES(45,2,1,1,0);
END ;

(*---------------------------------------------------------------------*)

FUNCTION objc_edit( ob_edtree : ADDRESS ;
                        ob_edobject : INTEGER;
                        ob_edchar : char;
                        ob_edidx, ob_edkind : INTEGER;

                  VAR ob_ednewidx : INTEGER) : INTEGER;
BEGIN
        addr_inÆ 0 Å := ob_edtree;
        gintinÆ 0 Å := ob_edobject;
        gintinÆ 1 Å := ORD(ob_edchar);
        gintinÆ 2 Å := ob_edidx;
        gintinÆ 3 Å := ob_edkind;
        objc_edit := GEMAES(46,4,2,1,0);
        ob_ednewidx := gintoutÆ1Å;
END ;

(*---------------------------------------------------------------------*)

FUNCTION objc_change(ob_ctree : ADDRESS;
                ob_cobject, ob_cresvd,
                ob_cxclip, ob_cyclip, ob_cwclip, ob_chclip,
                ob_cnewstate, ob_credraw : INTEGER ) : INTEGER;
BEGIN
        addr_inÆ 0 Å := ob_ctree;
        gintinÆ 0 Å := ob_cobject;
        gintinÆ 1 Å := ob_cresvd;
        gintinÆ 2 Å := ob_cxclip;
        gintinÆ 3 Å := ob_cyclip;
        gintinÆ 4 Å := ob_cwclip;
        gintinÆ 5 Å := ob_chclip;
        gintinÆ 6 Å := ob_cnewstate;
        gintinÆ 7 Å := ob_credraw;
        objc_change := GEMAES(47,8,1,1,0);
END ;

(**********************************************************************)

                      (** FORM LIBRARY **)

(*---------------------------------------------------------------------*)

FUNCTION   form_do( fo_dotree: ADDRESS ;
             fo_dostartob : INTEGER ) : INTEGER;
BEGIN
        gintinÆ 0 Å := fo_dostartob;
        addr_inÆ 0 Å := fo_dotree;
        form_do := GEMAES(50,1,1,1,0);
END ;

(*---------------------------------------------------------------------*)

FUNCTION  form_dial(fo_diflag, fo_dilx, fo_dily, fo_dilw, 
                        fo_dilh, fo_dibigx, fo_dibigy, 
                        fo_dibigw, fo_dibigh : INTEGER ) : INTEGER;
BEGIN
        gintinÆ 0 Å := fo_diflag;
        gintinÆ 1 Å := fo_dilx ;
        gintinÆ 2 Å := fo_dily ;
        gintinÆ 3 Å := fo_dilw ;
        gintinÆ 4 Å := fo_dilh ;
        gintinÆ 5 Å := fo_dibigx ;
        gintinÆ 6 Å := fo_dibigy ;
        gintinÆ 7 Å := fo_dibigw ;
        gintinÆ 8 Å := fo_dibigh ;
        form_dial := GEMAES(51,9,1,0,0);
END ;

(*---------------------------------------------------------------------*)

FUNCTION form_alert(fo_adefbttn : INTEGER;
                    fo_aastring : ADDRESS ) : INTEGER ;
BEGIN
        addr_inÆ 0 Å := fo_aastring ;
        gintinÆ 0 Å := fo_adefbttn ;
        form_alert := GEMAES(52,1,1,1,0);
END ;

(*-------------------------------------------------------------------*)

FUNCTION form_error (fo_enum : INTEGER) : INTEGER;
BEGIN
        gintinÆ0Å := fo_enum;
        form_error := GEMAES(53,1,1,0,0);
END;

(*---------------------------------------------------------------------*)

FUNCTION form_center (fo_ctree : ADDRESS;
                  VAR fo_cx, fo_cy, fo_cw, fo_ch : INTEGER) : INTEGER;
BEGIN
        addr_inÆ0Å := fo_ctree;
        form_center := GEMAES(54,0,5,1,0);
        fo_cx := gintoutÆ1Å;
        fo_cy := gintoutÆ2Å;
        fo_cw := gintoutÆ3Å;
        fo_ch := gintoutÆ4Å;
END;

(**********************************************************************)

                    (** GRAPHICS LIBRARY **)

(*--------------------------------------------------------------------*)

FUNCTION graf_rubbox ( gr_rx, gr_ry, gr_rminwidth, gr_rminheight : INTEGER;
                VAR gr_rlastwidth, gr_rlastheight : INTEGER) : INTEGER;
BEGIN
        gintinÆ0Å := gr_rx;
        gintinÆ1Å := gr_ry;
        gintinÆ2Å := gr_rminwidth;
        gintinÆ3Å := gr_rminheight;
        graf_rubbox := GEMAES(70,4,3,0,0);
        gr_rlastwidth := gintoutÆ1Å;
        gr_rlastheight := gintoutÆ2Å;
END;

(*-------------------------------------------------------------------*)

FUNCTION graf_dragbox (gr_dwidth, gr_dheight, gr_dstx, gr_dsty, 
                 gr_dbndx, gr_dbndy, gr_dbndw, gr_dbndh : INTEGER;

                        VAR gr_dfinx, gr_dfiny : INTEGER) : INTEGER;
BEGIN
        gintinÆ0Å := gr_dwidth;
        gintinÆ1Å := gr_dheight;
        gintinÆ2Å := gr_dstx;
        gintinÆ3Å := gr_dsty;
        gintinÆ4Å := gr_dbndx;
        gintinÆ5Å := gr_dbndy;
        gintinÆ6Å := gr_dbndw;
        gintinÆ7Å := gr_dbndh;
        graf_dragbox := GEMAES(71,8,3,0,0);
        gr_dfinx := gintoutÆ1Å;
        gr_dfiny := gintoutÆ2Å;
END;

(*--------------------------------------------------------------------*)

FUNCTION graf_movebox (gr_mwidth, gr_mheight, gr_msrcex, gr_msrcey,
                       gr_mdestx, gr_mdesty : INTEGER) : INTEGER;
BEGIN
        gintinÆ0Å := gr_mwidth;
        gintinÆ1Å := gr_mheight;
        gintinÆ2Å := gr_msrcex;
        gintinÆ3Å := gr_msrcey;
        gintinÆ4Å := gr_mdestx;
        gintinÆ5Å := gr_mdesty;
        graf_movebox := GEMAES(72,6,1,0,0);
END;

(*-------------------------------------------------------------------*)

FUNCTION graf_growbox (gr_gstx, gr_gsty, gr_gstwidth, gr_gstheight, 
          gr_gfinx, gr_gfiny, gr_gfinwidth, gr_gfinheight : INTEGER) : INTEGER;
BEGIN
        gintinÆ0Å := gr_gstx;
        gintinÆ1Å := gr_gsty;
        gintinÆ2Å := gr_gstwidth;
        gintinÆ3Å := gr_gstheight;
        gintinÆ4Å := gr_gfinx;
        gintinÆ5Å := gr_gfiny;
        gintinÆ6Å := gr_gfinwidth;
        gintinÆ7Å := gr_gfinheight;
        graf_growbox := GEMAES(73,8,1,0,0);
END;

(*---------------------------------------------------------------------*)

FUNCTION graf_shrinkbox(gr_sstx, gr_ssty, gr_sstwidth, gr_sstheight, 
        gr_sfinx, gr_sfiny, gr_sfinwidth, gr_sfinheight : INTEGER) : INTEGER;
BEGIN
        gintinÆ0Å := gr_sstx;
        gintinÆ1Å := gr_ssty;
        gintinÆ2Å := gr_sstwidth;
        gintinÆ3Å := gr_sstheight;
        gintinÆ4Å := gr_sfinx;
        gintinÆ5Å := gr_sfiny;
        gintinÆ6Å := gr_sfinwidth;
        gintinÆ7Å := gr_sfinheight;
        graf_shrinkbox := GEMAES(74,8,1,0,0);
END;

(*--------------------------------------------------------------------*)

FUNCTION graf_watchbox (gr_wptree : ADDRESS;
                gr_wobject, gr_winstate, gr_woutstate : INTEGER) : INTEGER;
BEGIN
        gintinÆ1Å := gr_wobject;
        gintinÆ2Å := gr_winstate;
        gintinÆ3Å := gr_woutstate;
        addr_inÆ0Å := gr_wptree;
        graf_watchbox := GEMAES(75,4,1,1,0);
END;

(*-------------------------------------------------------------------*)

FUNCTION graf_slidebox(gr_slptree : ADDRESS;
                gr_slparent, gr_slobject, gr_slvh : INTEGER) : INTEGER;
BEGIN
        gintinÆ0Å := gr_slparent;
        gintinÆ1Å := gr_slobject;
        gintinÆ2Å := gr_slvh;
        graf_slidebox := GEMAES(76,3,1,1,0);
END;

(*-------------------------------------------------------------------*)

FUNCTION graf_handle (VAR gr_hwchar, gr_hhchar, gr_hwbox,
                      gr_hhbox : INTEGER) : INTEGER;
BEGIN
        graf_handle := GEMAES(77,0,5,0,0);
        gr_hwchar := gintoutÆ1Å;
        gr_hhchar := gintoutÆ2Å;
        gr_hwbox := gintoutÆ3Å;
        gr_hhbox := gintoutÆ4Å;
END;

(*------------------------------------------------------------------*)

FUNCTION graf_mouse(gr_monumber : INTEGER;
gr_mofaddr : ADDRESS) : INTEGER;
BEGIN
        gintinÆ0Å := gr_monumber;
        addr_inÆ0Å := gr_mofaddr;
        graf_mouse := GEMAES(78,1,1,1,0);
END;

(*------------------------------------------------------------------*)

FUNCTION graf_mkstate (VAR gr_mkmx, gr_mkmy,
                        gr_mkmstate, gr_mkkstate : INTEGER) : INTEGER;
BEGIN
        graf_mkstate := GEMAES(79,0,5,0,0);
        gr_mkmx := gintoutÆ1Å;
        gr_mkmy := gintoutÆ2Å;
        gr_mkmstate := gintoutÆ3Å;
        gr_mkkstate := gintoutÆ4Å;
END;

(*********************************************************************)

                (** SCRAP LIBRARY **)


(*---------------------------------------------------------------------*)

FUNCTION   scrp_info( sc_idtype : INTEGER ;
                      VAR sc_ioutdtype, sc_iavail,
                      sc_iused : INTEGER ) : INTEGER;
BEGIN
        gintinÆ 0 Å := sc_idtype;
        scrp_info := GEMAES(0,1,4,0,0);
        sc_ioutdtype := gintoutÆ 1 Å ;
        sc_iavail := gintoutÆ 2 Å ;
        sc_iused := gintoutÆ 3 Å ;
END ;

(*---------------------------------------------------------------------*)

FUNCTION scrp_read( sc_rdtype, sc_rsize : INTEGER ;
                    sc_rpbuff : ADDRESS ) : INTEGER;
BEGIN
        gintinÆ 0 Å := sc_rdtype;
        gintinÆ 1 Å := sc_rsize;
        addr_inÆ 0 Å := sc_rpbuff;
        scrp_read := GEMAES(81,2,1,1,0);
END ;

(*---------------------------------------------------------------------*)

FUNCTION scrp_write( sc_wdtype, sc_wsize : INTEGER ;
                        sc_wpbuff : ADDRESS ) : INTEGER;
BEGIN
        gintinÆ 0 Å := sc_wdtype;
        gintinÆ 1 Å := sc_wsize;
        addr_inÆ 0 Å := sc_wpbuff;
        scrp_write := GEMAES(82,2,1,1,0);
END ;

(**********************************************************************)
                 (** FILE SELECTOR LIBRARY **)

(*---------------------------------------------------------------------*)

FUNCTION fsel_input( fs_iinpath, fs_iinsel : ADDRESS ;
                     VAR fs_iexbutton : INTEGER ) : INTEGER;
BEGIN
        addr_inÆ 0 Å := fs_iinpath;
        addr_inÆ 1 Å := fs_iinsel;
        fsel_input := GEMAES(90,0,2,2,0);
        fs_iexbutton  := gintoutÆ 1 Å ;
END ;

(************************************************************************)

                (** WINDOW LIBRARY **)

(*---------------------------------------------------------------------*)

FUNCTION wind_create( wi_crkind, wi_crwx, wi_crwy,
                wi_crww, wi_crwh : INTEGER ) : INTEGER ;
BEGIN
        gintinÆ 0 Å := wi_crkind;
        gintinÆ 1 Å := wi_crwx;
        gintinÆ 2 Å := wi_crwy;
        gintinÆ 3 Å := wi_crww;
        gintinÆ 4 Å := wi_crwh;
        wind_create := GEMAES(100,5,1,0,0);
END ;

(*---------------------------------------------------------------------*)

FUNCTION wind_open( wi_ohandle, wi_owx, wi_owy, 
                    wi_oww, wi_owh : INTEGER ) : INTEGER;
BEGIN
        gintinÆ 0 Å := wi_ohandle;
        gintinÆ 1 Å := wi_owx;
        gintinÆ 2 Å := wi_owy;
        gintinÆ 3 Å := wi_oww;
        gintinÆ 4 Å := wi_owh;
        wind_open := GEMAES(101,5,1,0,0);
END ;

(*---------------------------------------------------------------------*)

FUNCTION wind_close( wi_clhandle : INTEGER ) : INTEGER;
BEGIN
        gintinÆ 0 Å := wi_clhandle;
        wind_close := GEMAES(102,1,1,0,0);
END ;

(*---------------------------------------------------------------------*)

FUNCTION wind_delete( wi_dhandle : INTEGER ) : INTEGER;
BEGIN
        gintinÆ 0 Å := wi_dhandle;
        wind_delete := GEMAES(103,1,1,0,0);
END ;

(*---------------------------------------------------------------------*)

FUNCTION wind_get( wi_ghandle, wi_gfield : INTEGER ;
                   VAR wi_gw1, wi_gw2, wi_gw3, wi_gw4 : INTEGER ) : INTEGER;
BEGIN
        gintinÆ 0 Å := wi_ghandle;
        gintinÆ 1 Å := wi_gfield;
        wind_get := GEMAES(104,2,5,0,0);
        wi_gw1 := gintoutÆ 1 Å;
        wi_gw2 := gintoutÆ 2 Å;
        wi_gw3 := gintoutÆ 3 Å;
        wi_gw4 := gintoutÆ 4 Å;
END ;

(*---------------------------------------------------------------------*)

FUNCTION wind_set( wi_shandle, wi_sfield, 
                wi_sw1, wi_sw2, wi_sw3, wi_sw4 : INTEGER ) : INTEGER;
BEGIN
        gintinÆ 0 Å := wi_shandle;
        gintinÆ 1 Å := wi_sfield;
        gintinÆ 2 Å := wi_sw1;
        gintinÆ 3 Å := wi_sw2;
        gintinÆ 4 Å := wi_sw3;
        gintinÆ 5 Å := wi_sw4;
        wind_set := GEMAES(105,6,1,0,0);
END ;

(*---------------------------------------------------------------------*)

FUNCTION wind_find( wi_fmx, wi_fmy : INTEGER ) : INTEGER ;
BEGIN
        gintinÆ 0 Å := wi_fmx;
        gintinÆ 1 Å := wi_fmy;
        wind_find := GEMAES(106,2,1,0,0);
END ;

(*---------------------------------------------------------------------*)

FUNCTION wind_update( wi_ubegend : INTEGER ) : INTEGER;
BEGIN
        gintinÆ 0 Å := wi_ubegend;
        wind_update := GEMAES(107,1,1,0,0);
END ;


(*---------------------------------------------------------------------*)

FUNCTION wind_calc( wi_ctype, wi_ckind, 
            wi_cx, wi_cy, wi_cinwidth, wi_cinheight : INTEGER;
            VAR wi_coutx, wi_couty, wi_coutwidth, wi_coutheight : INTEGER ) :
                                                                  INTEGER;
BEGIN
        gintinÆ 0 Å := wi_ctype ;
        gintinÆ 1 Å := wi_ckind ;
        gintinÆ 2 Å := wi_cx ;
        gintinÆ 3 Å := wi_cy ;
        gintinÆ 4 Å := wi_cinwidth ;
        gintinÆ 5 Å := wi_cinheight ;
        wind_calc := GEMAES(108,6,5,0,0);
        wi_coutx := gintoutÆ 1 Å ;
        wi_couty := gintoutÆ 2 Å ;
        wi_coutwidth  := gintoutÆ 3 Å ;
        wi_coutheight := gintoutÆ 4 Å ;
END ;

(************************************************************************)
                (** RESOURCE LIBRARY **)

(*---------------------------------------------------------------------*)

FUNCTION rsrc_load( re_lpfname : ADDRESS ) : INTEGER;
BEGIN
        addr_inÆ 0 Å := re_lpfname ;
        rsrc_load := GEMAES(110,0,1,1,0);
END ;

(*---------------------------------------------------------------------*)

FUNCTION rsrc_free : INTEGER;
BEGIN
        rsrc_free := GEMAES(111,0,1,0,0);
END ;

(*---------------------------------------------------------------------*)

FUNCTION rsrc_gaddr( re_gttype, re_gtindex : INTEGER ;
                     VAR re_gtaddr : ADDRESS ) : INTEGER;
BEGIN
        gintinÆ 0 Å := re_gttype ;
        gintinÆ 1 Å := re_gtindex ;
        rsrc_gaddr := GEMAES(112,2,1,0,1);
        re_gtaddr := addr_outÆ 0 Å ;
END ;

(*---------------------------------------------------------------------*)

FUNCTION rsrc_saddr( re_sttype, re_stindex : INTEGER ;
                        re_staddr : ADDRESS ) : INTEGER;
BEGIN
        gintinÆ 0 Å := re_sttype ;
        gintinÆ 1 Å := re_stindex ;
        addr_inÆ 0 Å := re_staddr ;
        rsrc_saddr := GEMAES(113,2,1,1,0);
END ;

(*------------------------------------------------------------------------*)

FUNCTION rsrc_obfix (re_oobject : INTEGER;
                     re_otree : ADDRESS) : INTEGER;
BEGIN
        gintinÆ0Å := re_oobject;
        addr_inÆ0Å := re_otree;
        rsrc_obfix := GEMAES(114,1,1,1,0);
END;

(***********************************************************************)
                        (** SHELL LIBRARY **)

(*---------------------------------------------------------------------*)

FUNCTION shel_read( sh_rpcmd, sh_rptail : ADDRESS ) : INTEGER;
BEGIN
        addr_inÆ 0 Å := sh_rpcmd;
        addr_inÆ 1 Å := sh_rptail;
        shel_read := GEMAES(120,0,1,2,0);
END ;


(*---------------------------------------------------------------------*)

FUNCTION shel_write( sh_wdoex, sh_wisgr, sh_wiscr : INTEGER ;
                     sh_wpcmd, sh_wptail : ADDRESS ) : INTEGER;
BEGIN
        gintinÆ 0 Å := sh_wdoex;
        gintinÆ 1 Å := sh_wisgr;
        gintinÆ 2 Å := sh_wiscr;
        addr_inÆ 0 Å := sh_wpcmd;
        addr_inÆ 1 Å := sh_wptail;
        shel_write := GEMAES(121,3,1,2,0);
END ;