859 lines
18 KiB
Plaintext
859 lines
18 KiB
Plaintext
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
****************************
|
|||
|
* R E L E A S E N O T E S *
|
|||
|
****************************
|
|||
|
|
|||
|
|
|||
|
Pascal/MT+ Version 3.1.1
|
|||
|
|
|||
|
|
|||
|
For The IBM Personal Computer
|
|||
|
Disk Operating System Version 1.1
|
|||
|
|
|||
|
|
|||
|
Copyright (c) 1983 by Digital Research
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
1-1
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Pascal/MT+ Release Notes
|
|||
|
|
|||
|
|
|||
|
|
|||
|
These release notes pertain to both the software and
|
|||
|
the documentation set for the Digital Research
|
|||
|
product:
|
|||
|
|
|||
|
|
|||
|
Pascal/MT+
|
|||
|
|
|||
|
For the IBM Personal Computer
|
|||
|
|
|||
|
Disk Operating System Version 1.1 (IBMDOS)
|
|||
|
|
|||
|
|
|||
|
They provide the most current information regarding:
|
|||
|
|
|||
|
o changes to the software, or bugs that have been
|
|||
|
identified since the product was released.
|
|||
|
|
|||
|
o errors or omissions in the documentation set
|
|||
|
that could not be corrected because of the lead
|
|||
|
time needed for production and printing.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Note: These release notes have been formatted so
|
|||
|
that you can print them on your own printer, cut them
|
|||
|
to size (6 1/2 x 8 1/2), and then place them in the
|
|||
|
back of your manuals.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
1-2
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Pascal/MT+ Release Notes
|
|||
|
|
|||
|
|
|||
|
RUNNING UNDER IBMDOS
|
|||
|
|
|||
|
|
|||
|
Under IBMDOS, the space available for the transient
|
|||
|
program area is not as large as under CP/M-86. If
|
|||
|
your system has a total memory size of 150K or less,
|
|||
|
the compiler will have a smaller symbol table, and
|
|||
|
the linker will have both a smaller symbol table and
|
|||
|
code buffer. Both programs have messages that inform
|
|||
|
you of the size of their respective tables. No other
|
|||
|
programs are affected.
|
|||
|
|
|||
|
|
|||
|
Note: Under IBMDOS, the utility programs NM and SZ do
|
|||
|
not accept ambiguous filenames as they do under CP/M-
|
|||
|
86. Only one name is allowed, and it must be unique.
|
|||
|
For example,
|
|||
|
|
|||
|
FPREALS.R86 is valid
|
|||
|
FPREALS.* is invalid
|
|||
|
????.R86 is invalid
|
|||
|
|
|||
|
|
|||
|
SOFTWARE CHANGES FROM THE PREVIOUS VERSION
|
|||
|
|
|||
|
|
|||
|
There are four new functions in the run-time library,
|
|||
|
PASLIB: @SETDATE, @SETTIME, @GETDATE, AND @GETTIME.
|
|||
|
These functions set and access the system date and
|
|||
|
time. The SET functions return a completion code
|
|||
|
exactly as it is set by IBMDOS. Please see your
|
|||
|
systems manual for return code values and legal
|
|||
|
values for each parameter.
|
|||
|
|
|||
|
To use these functions, declare each as an EXTERNAL
|
|||
|
PROCEDURE with the following syntax:
|
|||
|
|
|||
|
@GETTIME(HOUR,MINUTE,SECOND,HUND : INTEGER);
|
|||
|
@GETDATE(MONTH,DAY,YEAR : INTEGER);
|
|||
|
@SETTIME(HOUR,MINUTE,SECOND,HUND : INTEGER) : INTEGER;
|
|||
|
@SETDATE(MONTH,DAY,YEAR : INTEGER) : INTEGER;
|
|||
|
|
|||
|
|
|||
|
1-3
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Pascal/MT+ Release Notes
|
|||
|
|
|||
|
|
|||
|
SOFTWARE BUGS
|
|||
|
|
|||
|
|
|||
|
|
|||
|
The following software bugs have been identified in
|
|||
|
the current release (3.1.1):
|
|||
|
|
|||
|
|
|||
|
o There are errors in allocating array bounds for
|
|||
|
conformant arrays of two or more dimensions.
|
|||
|
One-dimensional conformant arrays work
|
|||
|
correctly.
|
|||
|
|
|||
|
Solution: There is no fix available at this
|
|||
|
time. Work is in progress, and the problem will
|
|||
|
be fixed by the next release.
|
|||
|
|
|||
|
o Sometimes, expressions used as procedure
|
|||
|
parameters do not result in the correct values
|
|||
|
being passed to the procedure.
|
|||
|
|
|||
|
Solution: First assign the value of the
|
|||
|
expression to a variable, and then pass the
|
|||
|
variable to the procedure.
|
|||
|
|
|||
|
o When using the OUT function, the port number and
|
|||
|
the value are inadvertently swapped.
|
|||
|
|
|||
|
Solution: Use OUT as follows:
|
|||
|
|
|||
|
OUT[(value to put out)] := PORT number
|
|||
|
|
|||
|
o After the compiler reports a syntax error it
|
|||
|
asks if you want to continue or abort.
|
|||
|
Occasionally, attempting to continue will hang
|
|||
|
the system and require a reboot.
|
|||
|
|
|||
|
Solution: If this error occurs, correct the
|
|||
|
reported syntax error before attempting to
|
|||
|
recompile. This error will be corrected in the
|
|||
|
next release.
|
|||
|
|
|||
|
|
|||
|
1-4
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Pascal/MT+ Release Notes
|
|||
|
|
|||
|
|
|||
|
|
|||
|
o Some users have reported an incompatibality
|
|||
|
between some CP/M-86 implementations and the
|
|||
|
IBMDOS version. IBMDOS V1.1 does not interpret
|
|||
|
ANSI standard escape sequences. Consequently,
|
|||
|
programs that attempt to handle displays via
|
|||
|
escape sequences for cursor control will not
|
|||
|
execute properly.
|
|||
|
|
|||
|
Solution: There is no fix available at this
|
|||
|
time.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
1-5
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Pascal/MT+ Release Notes
|
|||
|
|
|||
|
|
|||
|
DOCUMENTATION ERRATA
|
|||
|
|
|||
|
|
|||
|
|
|||
|
The following are errors in the Pascal/MT+ Language
|
|||
|
Reference Manual (February 1983 edition):
|
|||
|
|
|||
|
|
|||
|
Page 3-3. Change WORD(x) to WRD(x)
|
|||
|
|
|||
|
Page 6-2. Change the third paragraph to read:
|
|||
|
|
|||
|
"The data type for a function must be a
|
|||
|
simple type. Put the type name after a
|
|||
|
colon at the end of the function heading.
|
|||
|
|
|||
|
Page 6-8. In Table 6-1, change the Returns type for
|
|||
|
the Function ABS from REAL to "same as
|
|||
|
NUM".
|
|||
|
|
|||
|
Page 6-10. In Table 6-1, the Function @HERR returns
|
|||
|
a BOOLEAN type, and the the Function ADDR
|
|||
|
returns a POINTER not an INTEGER type.
|
|||
|
Also change FUNCTION @RLS to PROCEDURE
|
|||
|
@RLS.
|
|||
|
|
|||
|
Page 6-12. Change the first sentence in the second
|
|||
|
paragraph to read:
|
|||
|
|
|||
|
"You can use ADDR to reference external
|
|||
|
variables."
|
|||
|
|
|||
|
Page 6-13. Change the example to ARCTAN(1) = 0.78539
|
|||
|
|
|||
|
Page 6-19. Change the first sentence in the second
|
|||
|
paragraph to read:
|
|||
|
|
|||
|
"CLOSEDEL closes and deletes files after
|
|||
|
use." In the last paragraph, change File
|
|||
|
Control Blocks (FCBs) to File Information
|
|||
|
Blocks (FIBs).
|
|||
|
|
|||
|
|
|||
|
1-6
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Pascal/MT+ Release Notes
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Page 6-68. Change the fifth paragraph to read:
|
|||
|
|
|||
|
"WRITE and WRITELN treat strings as
|
|||
|
arrays of characters. They do not write
|
|||
|
the length byte to TEXT files."
|
|||
|
|
|||
|
Page 7-2. In the second paragraph, change F2 to F3
|
|||
|
in:
|
|||
|
|
|||
|
F2^ := 45;
|
|||
|
|
|||
|
puts the integer value 45 in the buffer
|
|||
|
of the file variable F2.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
1-7
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Pascal/MT+ Release Notes
|
|||
|
|
|||
|
|
|||
|
The following are errors in the Pascal/MT+
|
|||
|
Programmer's Guide for the IBM Personal Computer Disk
|
|||
|
Operating System (April 1983 edition):
|
|||
|
|
|||
|
|
|||
|
Page 1-5. Delete the following files from Table 1-
|
|||
|
2. They are NOT distributed with the
|
|||
|
product:
|
|||
|
|
|||
|
o CONCAT.EXE
|
|||
|
o 8087.I86
|
|||
|
o 87XOP.I86
|
|||
|
o 87TRS.I86
|
|||
|
o 87REALS.BLD
|
|||
|
|
|||
|
Page 1-6. The second paragraph states you can use
|
|||
|
the distribution disks just as they are.
|
|||
|
This is not true; they are write-
|
|||
|
protected. You must copy them onto
|
|||
|
backup disks.
|
|||
|
|
|||
|
Page 2-3. Change the first paragraph to read:
|
|||
|
|
|||
|
"During Phase 0, When the compiler finds
|
|||
|
a syntax error, it displays the line
|
|||
|
containing the error. If you are using
|
|||
|
the MTERRS.TXT file, the compiler also
|
|||
|
displays an error description. In all
|
|||
|
other Phases, if you are not using the
|
|||
|
MTERRS.TXT file, or you have a nonsyntax
|
|||
|
error, the compiler displays the line
|
|||
|
number and an error identification
|
|||
|
number."
|
|||
|
|
|||
|
Page 2-15. Table 2-5 is incomplete. Add the
|
|||
|
following Linker error messages:
|
|||
|
|
|||
|
Unable to open input file: xxxxxxxx
|
|||
|
|
|||
|
Explanation: The linker cannot find the
|
|||
|
specified input file.
|
|||
|
|
|||
|
|
|||
|
1-8
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Pascal/MT+ Release Notes
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Incompatible relocatable file format
|
|||
|
|
|||
|
Explanation: Either the R86 file is
|
|||
|
corrupted or it has a format that is
|
|||
|
incompatible with the format expected by
|
|||
|
LINK/MT+86.
|
|||
|
|
|||
|
Initialization of DSEG not allowed
|
|||
|
|
|||
|
Explanation: The linker has encountered a
|
|||
|
DB or DW instruction in the Data segment.
|
|||
|
|
|||
|
Undefined symbol: xxxxxxxxx
|
|||
|
|
|||
|
Explanation: The specified symbol is
|
|||
|
referenced but not defined in the module.
|
|||
|
|
|||
|
Page 3-8. The explanation of the /O option is
|
|||
|
incorrect. Change as follows:
|
|||
|
|
|||
|
"/O:n tells the linker that the previous
|
|||
|
file is a SYM file and that n is the
|
|||
|
overlay number, in hexadecimal. You must
|
|||
|
specify the overlay filename and number
|
|||
|
in the link command line. This option is
|
|||
|
for overlays only."
|
|||
|
|
|||
|
Page 3-10. Change the command line for linking an
|
|||
|
overlay to:
|
|||
|
|
|||
|
LINKMT <prog.00n>=<sym file>/O:,<modules|libraries>/P:mmmm/X:ssss
|
|||
|
|
|||
|
|
|||
|
Page 3-11. Change section 3.2.5 to 3.2.6. Insert
|
|||
|
section 3.2.5 as follows:
|
|||
|
|
|||
|
3.2.5 Overlay Symbol Table
|
|||
|
|
|||
|
LINKMT creates a symbol table at the end
|
|||
|
of the code segment for each overlay
|
|||
|
|
|||
|
|
|||
|
1-9
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Pascal/MT+ Release Notes
|
|||
|
|
|||
|
|
|||
|
module. This symbol table can be very
|
|||
|
large because it includes all the symbols
|
|||
|
in the overlay and the root. However,
|
|||
|
not all the entries in the symbol table
|
|||
|
are required by the overlay. The overlay
|
|||
|
requires only those entries called from
|
|||
|
the root or another overlay. Therefore,
|
|||
|
after linking each overlay module, you
|
|||
|
should use the STRIP utility to reduce
|
|||
|
the size of the symbol table.
|
|||
|
|
|||
|
Note: LINKMT provides the size of the
|
|||
|
code segment which does not include the
|
|||
|
symbol table for overlay modules. Thus,
|
|||
|
the total code size required for an
|
|||
|
overlay module will be much larger than
|
|||
|
the size given by LINKMT if you do not
|
|||
|
use STRIP.
|
|||
|
|
|||
|
To use STRIP, enter the command
|
|||
|
|
|||
|
A>strip
|
|||
|
|
|||
|
|
|||
|
Once invoked, STRIP asks for the name of
|
|||
|
the file to strip, the location of the
|
|||
|
symbol table (the same number used with
|
|||
|
the P parameter when you link the
|
|||
|
overlay), and the name of each entry
|
|||
|
point you want to retain in the symbol
|
|||
|
table. You must enter the entry points
|
|||
|
in reverse order of their declaration.
|
|||
|
|
|||
|
STRIP searches the symbol table for the
|
|||
|
first entry point and deletes all others
|
|||
|
it encounters until it finds the correct
|
|||
|
one. STRIP then requests another entry
|
|||
|
point and continues. When the last one
|
|||
|
is found, you enter a dummy entry point
|
|||
|
such as ZZZ and then STRIP continues to
|
|||
|
delete the other entries until it finds
|
|||
|
|
|||
|
|
|||
|
1-10
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Pascal/MT+ Release Notes
|
|||
|
|
|||
|
|
|||
|
the end to the table.
|
|||
|
|
|||
|
After deleting all the unused entry
|
|||
|
points, STRIP lists the remaining entry
|
|||
|
points and asks if it should replace the
|
|||
|
original version with the stripped
|
|||
|
version. You must answer with "YESDOIT"
|
|||
|
to replace the original. Any other
|
|||
|
response terminates STRIP and does not
|
|||
|
change the original.
|
|||
|
|
|||
|
|
|||
|
Page 3-13. The example command lines for linking
|
|||
|
overlays 1 and 2 are incorrect. They
|
|||
|
should be:
|
|||
|
|
|||
|
A>LINKMT DEMOPROG.001=DEMOPROG/O.1,MOD1,PASLIB,/S/P:4000/L
|
|||
|
|
|||
|
A>LINKMT DEMOPROG.002=DEMOPROG/O.2,MOD2,PASLIB,/S/P:4000/L
|
|||
|
|
|||
|
|
|||
|
Page 3-14. Insert the following before paragraph 6:
|
|||
|
|
|||
|
"To chain from one EXE file to another,
|
|||
|
you must perform the following steps:
|
|||
|
|
|||
|
1) Using the linker, determine the code
|
|||
|
size of the largest program you want
|
|||
|
to chain to.
|
|||
|
|
|||
|
2) Round the value of the code size to
|
|||
|
the nearest multiple of 512 bytes
|
|||
|
(200H), and then add 512 bytes.
|
|||
|
|
|||
|
3) Use this new value for the code size
|
|||
|
of the root program, unless the root
|
|||
|
is already larger.
|
|||
|
|
|||
|
Page 3-14. Add the following to paragraph 6
|
|||
|
concerning shared variables:
|
|||
|
|
|||
|
|
|||
|
|
|||
|
1-11
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Pascal/MT+ Release Notes
|
|||
|
|
|||
|
|
|||
|
"You must also rewrite the initialization
|
|||
|
routine in PASLIB because it zeros out
|
|||
|
the data area. Change @INI3.I86 to
|
|||
|
reflect the size of the common area. For
|
|||
|
example,
|
|||
|
|
|||
|
SUB CX, 100H + common area size
|
|||
|
MOV DI, 100H + " " "
|
|||
|
|
|||
|
|
|||
|
Page 4-7. Delete the third paragraph, and insert the
|
|||
|
following:
|
|||
|
|
|||
|
"Floating-point real numbers are returned
|
|||
|
in the DX, CX, BX, and AX registers. BCD
|
|||
|
reals are returned in DI, DX, CX, BX, and
|
|||
|
AX. The high-order byte is in DX (or
|
|||
|
DI), and the low-order is always in AX."
|
|||
|
|
|||
|
Page 4-14. In the paragraph under Listing 4-6 add
|
|||
|
the sentence:
|
|||
|
|
|||
|
"An extra eight bytes of code is
|
|||
|
generated here, but the amount can vary
|
|||
|
depending on the number and type of
|
|||
|
parameters. There is no empirical
|
|||
|
formula for determining the extra
|
|||
|
amount."
|
|||
|
|
|||
|
Page 4-18. Add the following to the explanation of
|
|||
|
MEMAVAIL:
|
|||
|
|
|||
|
"FULLHEAP.R86 has been extended to make
|
|||
|
available up to 1 megabyte of heap space.
|
|||
|
MEMAVAIL and MAXAVAIL both return INTEGER
|
|||
|
values, so if you are using more than 32K
|
|||
|
of heap space, you must declare them as
|
|||
|
follows:
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
1-12
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Pascal/MT+ Release Notes
|
|||
|
|
|||
|
|
|||
|
EXTERNAL FUNCTION LMEMAVAIL : LONGINT;
|
|||
|
EXTERNAL FUNCTION LMAXAVAIL : LONGINT;
|
|||
|
|
|||
|
These functions are both in PASLIB.
|
|||
|
|
|||
|
Page 5-1. The first paragraph in Section 5.1 refers
|
|||
|
to the Intel publication named "MCS-86
|
|||
|
Macro Assembly Language Reference
|
|||
|
Manual." This manual is no longer in
|
|||
|
print, but has been replaced by the
|
|||
|
"ASM86 Language Reference Manual". The
|
|||
|
Intel order number for this new manual is
|
|||
|
121703-002.
|
|||
|
|
|||
|
Page 5-3. In Table 5-1, add the following to the
|
|||
|
explanation of the Pd option:
|
|||
|
|
|||
|
Unlike the similar MT86 compiler option,
|
|||
|
P does not send output to the printer.
|
|||
|
|
|||
|
Page 5-9. In Table 5-3, 320 bytes should be 32
|
|||
|
bytes.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
1-13
|
|||
|
|
|||
|
|
|||
|
|