opcode TabQueue2_Append, 0, iii itab, ival1, ival2 xin ind = 0 ik tab_i ind, itab tabw_i ival1, (2 * (ik + 1) ), itab tabw_i ival2, (2 * (ik + 1) + 1), itab tabw_i (ik + 1), ind, itab endop opcode TabQueue2_Delete, 0,ii itab, ival xin ind = 0 iLast tab_i ind, itab iCount = 1 iFound = 0 until iCount > iLast do iCur tab_i (2 * iCount), itab if (iCur == ival) then iFound = 1 tabw_i (iLast - 1), ind, itab endif if (iFound == 1) then iNext1 tab_i (2 * (iCount + 1)) , itab iNext2 tab_i (2 * (iCount + 1) + 1), itab tabw_i iNext1, (2 * iCount) , itab tabw_i iNext2, (2 * iCount + 1), itab endif iCount = iCount + 1 od endop opcode TabQueue2_HasElements, k, i itab xin knd = 0 kk tab knd, itab kres = (kk == 0) ? 0 : 1 xout kres endop opcode TabQueue2_ReadLastElement, kk, i itab xin knd = 0 kk tab knd, itab kres1 tab (2 * kk) , itab kres2 tab (2 * kk + 1), itab xout kres1, kres2 endop