
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
.