I've not tested this but something like this might work.
cube_data:
data 24,12
data -1,-1,-1,1,1
data -1,-1, 1,0,1
data -1, 1, 1,0,0
data -1, 1,-1,1,0
data -1,-1, 1,1,1
data 1,-1, 1,0,1
data 1, 1, 1,0,0
data -1, 1, 1,1,0
data 1,-1, 1,1,1
data 1,-1,-1,0,1
data 1, 1,-1,0,0
data 1, 1, 1,1,0
data 1,-1,-1,1,1
data -1,-1,-1,0,1
data -1, 1,-1,0,0
data 1, 1,-1,1,0
data -1, 1,-1,1,1
data -1, 1, 1,0,1
data 1, 1, 1 0,0
data 1, 1,-1,1,0
data -1,-1, 1,1,1
data -1,-1,-1,0,1
data 1,-1,-1 0,0
data 1,-1, 1,1,0
data 1,2,3, 3,4,1
data 5,6,7, 7,8,5
data 9,10,11, 11,12,9
data 13,14,15, 15,16,13
data 17,18,19, 19,20,17
data 21,22,23, 23,24,21
function new_box_entity() as new_entity ptr
restore cube_data
dim tmp_data as new_entity ptr
tmp_data = callocate(len(new_entity))
read tmp_data->no_vertices,tmp_data->no_faces
tmp_data->vertex = callocate( tmp_data->no_vertices * sizeof(new_entity) )
tmp_data->face = callocate( tmp_data->no_faces * len(new_entity) )
dim as integer vertex,face
for vertex=1 to tmp_data->no_vertices
read tmp_data->vertex[vertex]->x
read tmp_data->vertex[vertex]->y
read tmp_data->vertex[vertex]->z
read tmp_data->vertex[vertex]->u
read tmp_data->vertex[vertex]->v
next
for face=1 to tmp_data->no_faces
read tmp_data->face[face]->a
read tmp_data->face[face]->b
read tmp_data->face[face]->c
next
set_min_max_bbox_vertex( tmp_data )
return tmp_data
end function