TAL Programmer's Guide
Using Extended Data Segments
Managing Addressing
B–18 096254 Tandem Computers Incorporated
Example B-2. D-Series Extended Addressing Program
(Page 3 of 3)
!USE new extended data segment for more manipulations.
 status := SEGMENT_USE_ (seg_id_two, , block_ptr1);
 IF status <> 0 THEN CALL PROCESS_DEBUG_;
 @pool_ptr := @pool_head + %47D;
 !Store first byte address
 ! after pool header
 status := DEFINEPOOL (pool_head, pool_ptr, 4000D);
 IF status <> 0 THEN CALL PROCESS_DEBUG_;
 @block_ptr1 := GETPOOL (pool_head , 101D);
 !For content of BYTE_ARRAY
 IF <> THEN CALL PROCESS_DEBUG_;
 block_ptr1 ':=' byte_array[-1] FOR array_len BYTES;
 !Move BYTE_ARRAY to first
 ! pool in extended segment
 @block_ptr2 := GETPOOL (pool_head, 1000D);
 !Get second pool in current
 ! extended segment
 IF <> THEN CALL PROCESS_DEBUG_;
 block_ptr2 ':=' [8, 16, 32, 40, 48, 56, 64, 128];
 !Move constant list into
 ! this pool in extended
 ! segment
 CALL PUTPOOL (pool_head, block_ptr1);
 !Give first pool back
 IF <> THEN CALL PROCESS_DEBUG_;
 CALL PUTPOOL (pool_head, block_ptr2);
 !Give second pool back
 IF <> THEN CALL PROCESS_DEBUG_;
 CALL SEGMENT_DEALLOCATE_ (seg_id_two, dealloc_flags);
 CALL SEGMENT_DEALLOCATE_ (seg_id_zero, dealloc_flags);
 END;










