home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fresh Fish 5
/
FreshFish_July-August1994.bin
/
bbs
/
cbm
/
nduk-v39.lha
/
V39
/
include
/
utility
/
pack.i
< prev
next >
Wrap
Text File
|
1992-09-24
|
3KB
|
75 lines
IFND UTILITY_PACK_I
UTILITY_PACK_I EQU 1
**
** $VER: pack.i 39.3 (04.09.92)
** Includes Release 39.108
**
** Control attributes for Pack/UnpackStructureTags()
**
** (C) Copyright 1992 Commodore-Amiga Inc.
** All Rights Reserved
**
*******************************************************************************
*
* PackStructureTags() and UnpackStructureTags(), two very important routines
* for 3.0...
*
*******************************************************************************
*
include "exec/types.i"
include "exec/macros.i"
include "utility/tagitem.i"
*
*******************************************************************************
*
* PackTable definition:
*
* The PackTable is a simple array of LONGWORDS that are then evaluated
* by PackStructureTags and UnpackStructureTags.
*
* The table contains compressed information such as the tag offset from
* the base tag. The tag offset has a limited range so the base tag is
* defined in the first longword.
*
* After the first longword, the fields look as follows:
*
* +--------- 1 = signed, 0 = unsigned (for bits, 1=inverted boolean)
* |
* | +------ 00 = Pack/Unpack, 10 = Pack, 01 = Unpack, 11 = special
* | / \
* | | | +-- 00 = Byte, 01 = Word, 10 = Long, 11 = Bit
* | | | / \
* | | | | | /----- For bit operations: 1 = TAG_EXISTS is TRUE
* | | | | | |
* | | | | | | /-------------------- Tag offset from base tag value
* | | | | | | | \
* m n n o o p q q q q q q q q q q r r r s s s s s s s s s s s s s
* \ | | |
* Bit offset (for bit operations) ----/ | |
* \ |
* Offset into data structure -----------------------------------/
*
* A -1 longword signifies that the next longword will be a new base tag
*
* A 0 longword signifies that it is the end of the pack table.
*
* What this implies is that there are only 13-bits of address offset
* and 10 bits for tag offsets from the base tag. For most uses this
* should be enough, but when this is not, either multiple pack tables
* or a pack table with extra base tags would be able to do the trick.
* The goal here was to make the tables small and yet flexible enough to
* handle most cases.
*
BITDEF PST,SIGNED,31
BITDEF PST,UNPACK,30 ; Note that these are active low...
BITDEF PST,PACK,29 ; Note that these are active low...
BITDEF PST,EXISTS,26 ; Tag exists bit true flag hack...
*
*******************************************************************************
*
; Macros will go here...
*
*******************************************************************************
*
ENDC