|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 29312 (0x7280) Types: TextFile Names: »AESBND.PAS«
└─⟦4fbcde1e4⟧ Bits:30003931/GEM_Development-A.imd Disketter indleveret af Steffen Jensen (Piccolo/Piccoline) └─⟦this⟧ »AESBND.PAS«
(*****************************************************************) (** 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 ;