Application Note
AN1060 — Rev. 1.0
236
MOTOROLA
This S-record translator only looks for the S1 records that contain the
actual object code. All other S-record types are ignored.
When an S1 record is found (lines 1000–1024), the next two characters
form the hex byte giving the number of hex bytes to follow. This byte is
converted to integer by the same subroutine that converted the
bootloaded code from the DATA statements. This BYTECOUNT is
adjusted by subtracting 3, which accounts for the address and checksum
bytes and leaves just the number of object-code bytes in the record.
Starting at line 1100, the 2-byte (4-character) starting address is
converted to decimal. This address is the starting address for the object
code bytes to follow. An index into the CODE% array is formed by
subtracting the base address initialized at the start of the program from
the starting address for this S record.
A FOR-NEXT loop starting at line 1130 converts the object code bytes
to decimal and saves them in the CODE% array. When all the object
code bytes have been converted from the current S record, the program
loops back to find the next S1 record.
A problem arose with the BASIC programming technique used. The draft
versions of this program tried saving the object code bytes directly as
binary in a string array. This caused "Out of Memory" or "Out of String
Space" errors on both a 2-Mbyte Macintosh and a 640-Kbyte PC. The
solution was to make the array an integer array and perform the integer-
to-binary conversion on each byte as it is sent to the target part.
The one compromise made to accommodate both Macintosh and PC
versions of BASIC is in lines 1500 and 1505. Use line 1500 and
comment out line 1505 if the program is to be run on a Macintosh, and,
conversely, use line 1505 and comment out line 1500 if a PC is used.
After the COM port is opened, the code to be bootloaded is modified by
adding the $FF to the start of the string. $FF synchronizes the bootloader
in the MC68HC711E9 to 1200 baud. The entire string is simply sent to
the COM port by PRINTing the string. This is possible since the string is
actually queued in BASIC’s COM buffer, and the operating system takes
care of sending the bytes out one at a time. The M68HC11 echoes the
F
Freescale Semiconductor, Inc.
For More Information On This Product,
Go to: www.freescale.com
n
.