// create/destroy stack function vms_gen(count : Integer) : pvmbstack; procedure vms_del(s : pvmbstack); // swap two top values procedure vms_swap(s : pvmbstack); // push copy of stacktop on stack procedure vms_dup(s : pvmbstack); // get item count function vms_getc(s : pvmbstack): Integer; // get item/item[0] ptr function vms_data(s : pvmbstack): PIntegerArray; function vms_itemptr(s : pvmbstack; index : Integer): Pointer; // misc procedure vms_clear(s : pvmbstack); // push procedure vms_pushn(s : pvmbstack; n : Integer); procedure vms_pushi(s : pvmbstack; v : Integer); procedure vms_pushp(s : pvmbstack; v : pointer); procedure vms_pushf(s : pvmbstack; v : Single); procedure vms_pushb(s : pvmbstack; v : LongBool); // pop items procedure vms_pop(s : pvmbstack); procedure vms_popn(s : pvmbstack; num : integer); function vms_popi(s : pvmbstack): Integer; function vms_popp(s : pvmbstack): Pointer; function vms_popf(s : pvmbstack): Single; function vms_popb(s : pvmbstack): LongBool; // load / store procedure vms_write(s : pvmbstack; index : Integer; v0 : Integer); function vms_read(s : pvmbstack; index : Integer): Integer; // copy 32 bit of data from [src] to [dst] procedure vms_copy32(s : pvmbstack; srcindex, dstindex : Integer); // peek function vms_peek(s : pvmbstack): Integer; function vms_peekptr(s : pvmbstack): Pointer; // push userdata function vms_pushlightuserdata(s : pvmbstack; args : array of const): LongBool; // set stackpointer/add offset procedure vms_absoluteoffset(s : pvmbstack; v : Integer); procedure vms_relativeoffset(s : pvmbstack; v : Integer);