TAL Programmer's Guide
Using Extended Data Segments
Managing Addressing
B–22 096254 Tandem Computers Incorporated
C-Series Extended Segment Management Program
Example B-4 shows a C-series version of the previous D-series extended segment
management program. This example is not portable to future software platforms.
Example B-4. C-Series Extended Segment Management Program
(Page 1 of 3)
?INSPECT, SYMBOLS
?NOCODE
?PAGE "dummy page directive"
LITERAL dealloc_flags = 1; !For DEALLOCATESEGMENT later
LITERAL seg_id_zero = 0; !User extended data segment
LITERAL seg_id_two = 2; !IDs need not be contiguous
LITERAL seg_id_zero_len = 2048D;
LITERAL seg_id_two_len = 4096D;
INT .EXT word_ptr := -1D; !Nil pointer
STRING .EXT byte_ptr := -1D; !Nil pointer
INT .EXT pool_head := %2000000D;
!Beginning of 19-word pool
! header in extended segment
INT .EXT pool_ptr := %2000046D;
!First byte after pool header
INT .EXT block_ptr1 := -1D; !Pool block general pointer
INT .EXT block_ptr2 := -1D; !Pool block general pointer
STRING .byte_array[-1:100]; !Byte array for local scan
STRING .EXT ba_ptr := -1D; !Extended pointer to byte
! array for extended move
STRING .offset_ptr := -1;
INT offset_x := 0;
LITERAL str_len = 47; !Length of string to move
LITERAL array_len = 102; !Length of byte array
INT status := 1000; !Beyond maximum error range
INT old_seg_num := -1; !Not a valid user extended
! data segment ID
INT error; !Outcome of system procedure
?PUSHLIST, NOLIST SOURCE $SYSTEM.SYSTEM.EXTDECS0 (
? DEBUG, DEFINEPOOL, GETPOOL, PUTPOOL,
? ALLOCATESEGMENT, USESEGMENT, DEALLOCATESEGMENT)
?POPLIST