scene.org File Archive

File download

<root>­/­mirrors­/­amigascne­/­Groups­/­Sourcecodes/mc68kfaq.txt

File size:
26 052 bytes (25.44K)
File date:
2010-08-22 23:05:27
Download count:
all-time: 545

Preview



                          comp.sys.m68k FAQ List


    This is the frequently asked questions list (FAQ) for comp.sys.m68k.
    It is posted on a periodic basis to comp.sys.m68k.  This list is
    maintained by gregh@cserver.plexus.com (Greg Hawley).

    Errors, corrections, comments are encouraged.  Please send them to
    Greg Hawley at the email address listed above.  When vendor names
    or products are listed, it is not a recommendation of one vendor
    over another.  If you have a product that fits in one of the lists,
    feel free to contact the maintainer with information about the
    product.

    While a good faith effort has been made to cite from where 
    information has come, some of this document may not have properly 
    be attributed to its source.  Corrections should be sent to the
    maintainer.


    Revision History:

        1.0  15FEB93  Original Release
	1.1  28FEB93  Intel Hex ASCII section added, Motorola BBS # 
	 	      corrected, Some information added to Getting 
		      Started Building Hardware, Location of SIMTEL
		      cross-assembler/simulator added.
	1.1.1 08MAR93 Updated reference to Dr. Dobbs book.
        $Id: FAQ,v 1.3 1993/04/05 13:52:26 gregh Exp gregh $


    [Index]

	The following topics are covered by this FAQ.

	    Cross Assemblers
	    C Cross Compilers
	    Monitors/Debuggers
            Data Sheets/Literature
	    Samples
	    Motorola BBS Access
	    Getting Started Building Hardware
	    Real-time Operating Systems
	    S-Record Format
    	    Intel Hex ASCII Format
	    Contributors

    [Cross Assemblers]

	Several cross assemblers are available for Motorola 680x0
	processors.  Any experience that you wish to share with
	the group about any of these products would be much 
	appreciated.

	    o   a68k in source from to go with HCC see *C Cross 
		Compilers* is available from the Fred Fish Amiga 
		disk collection.
	    
	    o   Another version of a68k in PC executable and in
		source form? is available from the Motorola BBS.

	    o   The GNU assembler GAS to go with GCC is available
		from GNU sites.  See *C Cross Compilers*.

            o   A simulator/assembler for the IBM-PC compatibles on
                Simtel.  The file is <msdos.crossasm>68asmsim.zip.
                The file description says "68000 cross-assembler/
                simulator with C source"  See archive (location): 
		swdsrv.edvz.univie.ac.at
		(/pc/dos/crossasm/68asmsim.zip), plaza.aarnet.edu.au
		(/micros/pc/oak/crossasm/68asmsim.zip), nic.switch.ch
		(/mirror/msdos/crossasm/68asmsim.zip) 
		(/software/pc/simtel20/crossasm/68asmsim.zip),
		sun0.urz.uni-heidelberg.de 
		(/pub/msdos/simtel/crossasm/68asmsim.zip), 
		barnacle.erc.clarkson.edu
		(/pub/simtel20-cdrom/msdos/crossasm/68asmsim.zip),
		rigel.acs.oakland.edu (/pub/msdos/crossasm/68asmsim.zip),
		wuarchive.wustl.edu (/mirrors/msdos/crossasm/68asmsim.zip),
		isfs.kuis.kyoto-u.ac.jp
		(/mirrors/simtel20.msdos/crossasm/68asmsim.zip),
		ftp.uu.net
		(/systems/ibmpc/msdos/simtel20/crossasm/68asmsim.zip),
		gdr.bath.ac.uk (/simtel-cdrom/msdos/crossasm/68asmsim.zip),
		src.doc.ic.ac.uk
		(/computing/systems/ibmpc/wsmr-simtel20.army.mil/
		  crossasm/68asmsim.zip)


    [C Cross Compilers]

	Several cross compilers are available for Motorola 680x0
	processors.  Below is a list of currently know C cross
	compilers.  Any comments from readers about the reliability/
	portability/pricing/availability is appreciated.  What are
	people using?

	    o   Microtec Research has tools available for Suns, 
		Ultrix/VMS, PC and possibly others.  Their address
		is 2350 Mission College Blvd., Santa Clara CA 95054.
		Phone 408-980-1300, 800-950-5554.  Fax 408-982-8266.

	    o   Archemedes has unknown availablility.

	    o   GNU C 2.2.2 is available in source from GNU 
		anonymous FTP sites.  Some effort has gone into
		porting this code to the PC.  The PC port is
		called djgpp and is for 386 or better machines
		running DOS.  The source is free and available
		at prep.ai.mit.edu

	    o   HCC available for the Amiga in the Fred Fish Amiga
		disk collections.  Fred Fish Amiga disk collection
		is archived on ux1.cso.uiuc.edu.  These archives
		are in lhz format.  The source for the utility to
		uncompress these archives is called lharc.  Lharc
		is available on comp.sources.misc archives in
		volume 11.  Try wuarchive.wustl.edu for a comp.
		sources.misc archive.
	
	    o   A freeware C compiler is available on the Motorola
		BBS.  There is certainly a PC executable available.
		Source code, as well as executables for other
		platforms may be in the BBS.

	A good comparison of supported, commercial Motorola C Cross 
	Compilers appeared in _Computer Design_ in January 1993 pages
	103-109.  Vendors listed in this article were: 2500AD Software,
	Buena Vista CO; Avocet Systems, Rockport ME; BSO/Tasking, Dedham
	MA; Cygnus Support, Mountain View CA; Diab Data, Foster City CA;
	Intermetrics Microsystems Software, Cambridge MA; Introl, 
	Milwaukee WI; Lattice, Downers Grove IL; Microtec Systems, 
	Santa Clara CA; Microware Systems, Des Moines IA; Oasys,
	Lexington MA; Production Languages Corp (PLC), Weatherford TX;
	Sierra Systems, Oakland CA; Software Development Systems
	Oak Brook IL; UniPress Software, Edison NJ.  

	Another company that apparently sells 68k based assemblers,
	cross-compilers and debuggers is Intermeterics Microsystems
	Software, Inc. 733 Concord Ave., Cambridge MA 02138.


    [Monitors/Debuggers]
	
	One monitor available is fbug.  It is on the Motorola BBS.
	The author is currently compiling and assembling it.  It
	is an unsupported piece of code written by Motorola
	engineers in Austin.


    [Data Sheets/Literature]

	Data sheets can be found by calling your local Motorola
	Sales Office or Distributor.  Local Sales Offices and
	Distributors are listed in the back of any Motorola Master
	Selection Guide.  If you can not find a local 
	representative, Motorola Literature Distributions Center
	addresses are listed by continent/region.

	    USA
		Motorola Literature Distribution, P.O. Box 20912,
		Phoenix AZ 85036

	    EUROPE
		Motorola Ltd., European Literature Center, 88 Tanners Drive,
		Blakelands, Milton Keynes, MK14 5BP England

	    JAPAN
		Nippon Motorola Ltd., 4-32-1 Nishi-Gotanda, Shinagawa-ku,
		Tokyo 141 Japan

	    ASIA-PACIFIC
		Motorola Semiconductors H.K. Ltd., Silicon Harbour Center,
		No. 2 Dai King Street, Tai Po Industrial Estate,
		Tai Po, N.T.,  Hong Kong

	Ask for application notes, too.  A list with Motorola document
	numbers follows is found in Motorola Document BR321/D.  This list
	includes about 100 different documents.  The author would have
	typed them in, but he was short of time and space.

	Programmers guide is available that describes the instructions
	sets of all of the 68000-based microprocessors.  


    [Samples]

	For Microcomputer products try 800-845-MOTO. That is the number
	for the sales division that samples microcomputers (up to 
	and including the 68EC040 and 68340).


    [Motorola BBS]

	The Motorola BBS number is 512-891-FREE or 512-891-3733.  
	This is a new number perhaps less than a couple of years old.  
	The old number for the BBS was 512-440-2725.  This number may 
	still work, but is not recommended. Connection to the BBS is 
	1200 or 2400? baud 8-N-1. For those with Internet access, 
	this bulletin board is mirrored on several internet 
	anonymous FTP sites:

	    bode.ee.ualberta.ca
	    calvin.stanford.edu
	    ee.utal.edu
	    red.cs.tcu.edu
	    ernie.uvic.ca (login as ftp)

	The location of the Motorola BBS information inside these
	BBSs are unknown.  You'll have to dig around to find them.
	The site ernie.uvic.ca seems to be sanctioned by the 
	Motorola BBS.

	In general, if you are looking for something on the network,
	you can use any of a number of anonymous ftp database servers.
	One of these servers is quiche.cs.mcgill.  Telnet to this
	machine and login as archie.  From there the directions are
	self-explanatory.

	An anonymous ftp archive is currently being sought.  Any 
	parties interested in helping set one up should contact
	gregh@cserver.plexus.com (Greg Hawley).


    [Getting Started Building Hardware]

	A percentage of the articles on comp.sys.m68k relate to
	building your own hardware based on 68xxx processors.  People
	seem interested in building their own hardware or modifying
	what others have already built.  Because this is such a pop-
	ular topic, no frequently asked questions list for comp.sys.
	m68k would be complete without some mention of hardware hacking.
	The author is in the middle of building his own 68010 box
	at the writing of this FAQ.

        Choosing the Micro

	One of the first decisions to be made is which processor is
	to be used.  Everything else falls around the choice of processors,
	so this isn't as trivial a issue as it might appear.  By the time
	you have come to read this FAQ, you probably have joined the
	Motorola 68xxx camp. Several criteria are important in the 
	decision of which processor to use.  They are listed below.

		Criteria used to Choose a Microprocessor

		o  Availability.  Where can the micro of your choice be
		   bought.

		o  Cost.  Can your budget afford it.  When I get a
		   chance I'll post what the Motorola Price List says.
		   Anybody have any recommendations for sources?
	
		o  Package.  If you don't have surface mount equipment
		   in your basement, you should look for a Plastic 
		   Leadless Chip Carrier (PLCC), Dual In-line Package 
		   (DIP) or Pin Grid Array (PGA) package for the micro.  
		   Motorola lists part numbers that include the package 
		   type:

		   	MC68010L8
		   	\/\___/||
		   	|   |  |+--- Speed (in MHz)
                        |   |  +---- Package Type
                        |   |          L  - Ceramic DIP
                        |   |          LC - Ceramic DIP, Gold Lead Finish
                        |   |          P  - Plastic DIP
                        |   |          RC - Pin Grid Array, Gold Lead Finish
                        |   |          RL - Pin Grid Array, Solder Lead Finish
                        |   |          R  - Pin Grid Array, Solder Lead Finish
                        |   |          RP - Plastic Pin Grid Array
                        |   |          FN - Plastic Quad Pack (PLCC)
                        |   |	       FG - Plastic Quad Plat Pack (PQFP)
                        |   |	       FE - Ceramic Quad (Gull Wing)
                        |   |          FC - Plastic Quad (Gull Wing)
                        |   |
                        |   +------- Part Number
                        +----------- Motorola Prefix

		o  On-Chip Peripherals.  Many microprocessors have lots
		   of on-chip stuff.  Commonly available modules include
		   UARTS, Timers, Chip-select generation circuitry, 
		   Interrupt handling circuitry, etc.  Don't immediately
		   write this more expensive microprocessors with on
		   chip stuff.  Many of the these functions are tricky
		   to implement in discrete or programmable logic.  The
		   extra cost of having all of this extra functionality 
		   many be well worth your application.

		o  Manufacturer.  Don't forget.  Motorola is not the only
		   company to make 68xxx processors.  At least one other
		   company (and maybe others) make processors with 68xxx
		   cores.  Check Toshiba for information on there products.
		  
	In general, the 683xx series of embedded microcontrollers,
	especially the 68340 are well suited for hardware hacking.
	Byron@cc.gatech.edu (Byron A. Jeff) outlines the features of the 
        68340:

		o  16 bit data bus.  32 bit address bus.
		o  Quad Flat Pack (QFP) or Pin Grid Array (PGA) package.
		o  HCMOS process with 90 mA load (60 uA in LPSTOP mode).
		o  2 high speed serial ports.
		o  2 general purpose timers.
		o  2 DMA channels -- max data rate of 33 Mbytes/sec.
		o  watchdog and interval timers.
		o  2 eight bit parallel ports.
		o  integrated IRQ, IACK and chip select circuitry.
		o  On-board reset circuitry.
		o  16 MHz version available. 25 MHz version planned.
		o  Background Debugging Mode.

	The background debugging mode for the 68340 can be accessed
	from a free debugger that runs on IBM-PC compatibles.  The
	debugger is available somewhere in the Motorola Freeware
	BBS.

	The pricing guide for Motorola entitled Motorola Semiconductor
	Price List with effective date January 9, 1993 (Motorola part
	number 22480-18) lists "No new designs" for the 68010.  It is
	unclear what the future of this part is.  Be ware.

	Initial Design

	The best first step in designing your computer is reading the
	application notes.

	Glue logic

	For hardware hacking perhaps the best discrete logic family to
	use is HC.  It doesn't use a lot of power and can be purchased
	from just about anywhere.  7400, LS, ALS and other bipolar
	families require higher currents.  The bipolars, however, are
	faster.  Typically from a HC gate the propagation delay is
	around 20 ns.  The fast bipolars can run in the 2-3 ns range.

	Don't rule out using PLDs.  While it is valuable experience to
	build you're whole computer out of discrete logic, if you have
	access to equipment to blow PLDs, use it.  PLDs keeps your board
	smaller, reworks easier, and the final product more reliable.

	Choosing Other Parts 

	DRAM controllers are available from National Semiconductors.
	A DRAM Management Handbook from National explains in an
	application note how to interface their controllers to 
	68000, 68010, 68020 and others.

	Procuring Parts

	Section under construction.

	Software Development Package

	Section under construction.
	

    [Real-time Operating Systems]

	A freeware real-time operating system called uCOS was published 
	in _Embedded Systems Programming_ in May and June 1992.
	_Embedded Systems Programming_ is a Miller Freeman
	Publication and can be reached at:

	    Miller Freeman Inc.
	    600 Harrison St.
	    San Francisco CA 94107
	    (415) 905-2200

        In general _Embedded Systems Programming_ is a good magazine
        for users interested in developing embedded systems.  The 
        magazine covers a lot of things that are relevant to programmers
        working with hardware on a more intimate level.

        Real-time operating systems are also available from numerous
	vendors.

	A book published by the publishers of Dr. Dobbs contains source 
	code for a real-time operating system.  This book contains a 
	cross-assembler in FORTH, a BASIC interpreter and a bunch of 
	other goodies.  The reference is: _Dr. Dobbs Toolbox of 68000
	Programming_, ISBN 0-13-216557-0.  Unfortunately, this book is
	out of print.  Does anyone have other appropriate references?


    [S-Record Format]

        Chaplin@keinstr.uucp (Roger Chaplin) reposted an article written
	by mcdchg!motmpl!ron (Ron Widell) that explained how Motorola
	S-Records are formatted.  This comes from a unix man page.  No
        mention of which version of Unix is specified.  This section
	of the FAQ is a bit long.  An anonymous ftp archive is currently
	being sought.  When one is found, the section will be placed in
	the archive.

        SREC(4)                UNIX 5.0 (03/21/84)                SREC(4)


        An S-record file consists of a sequence of specially formatted
	ASCII character strings.  An S-record will be less than or equal to
	78 bytes in length.

        The order of S-records within a file is of no significance and no 
	particular order may be assumed.

        The general format of an S-record follow:

        +------------------//-------------------//-----------------------+
        | type | count | address  |            data           | checksum |
        +------------------//-------------------//-----------------------+

          type      A char[2] field.  These characters describe the
                    type of record (S0, S1, S2, S3, S5, S7, S8, or
                    S9).
          count     A char[2] field.  These characters when paired and
                    interpreted as a hexadecimal value, display the
                    count of remaining character pairs in the record.

          address   A char[4,6, or 8] field.  These characters grouped
                    and interpreted as a hexadecimal value, display
                    the address at which the data field is to be
                    loaded into memory.  The length of the field
                    depends on the number of bytes necessary to hold
                    the address.  A 2-byte address uses 4 characters,
                    a 3-byte address uses 6 characters, and a 4-byte
                    address uses 8 characters.
          data      A char [0-64] field.  These characters when paired
                    and interpreted as hexadecimal values represent
                    the memory loadable data or descriptive
                    information.

          checksum  A char[2] field.  These characters when paired and
                    interpreted as a hexadecimal value display the
                    least significant byte of the ones complement of
                    the sum of the byte values represented by the
                    pairs of characters making up the count, the
                    address, and the data fields.

          Each record is terminated with a line feed.  If any
          additional or different record terminator(s) or delay
          characters are needed during transmission to the target
          system it is the responsibility of the transmitting program
          to provide them.

          S0 Record  The type of record is 'S0' (0x5330).  The address


                     field is unused and will be filled with zeros
                     (0x0000).  The header information within the data
                     field is divided into the following subfields.

                                  mname      is char[20] and is the
                                             module name.
                                  ver        is char[2] and is the
                                             version number.

                                  rev        is char[2] and is the
                                             revision number.
                                  description is char[0-36] and is a
                                             text comment.

                     Each of the subfields is composed of ASCII bytes
                     whose associated characters, when paired,
                     represent one byte hexadecimal values in the case
                     of the version and revision numbers, or represent
                     the hexadecimal values of the ASCII characters
                     comprising the module name and description.

          S1 Record  The type of record field is 'S1' (0x5331).  The
                     address field is interpreted as a 2-byte address.
                     The data field is composed of memory loadable
                     data.
          S2 Record  The type of record field is 'S2' (0x5332).  The
                     address field is interpreted as a 3-byte address.
                     The data field is composed of memory loadable
                     data.

          S3 Record  The type of record field is 'S3' (0x5333).  The
                     address field is interpreted as a 4-byte address.
                     The data field is composed of memory loadable
                     data.
          S5 Record  The type of record field is 'S5' (0x5335).  The
                     address field is interpreted as a 2-byte value
                     and contains the count of S1, S2, and S3 records
                     previously transmitted.  There is no data field.

          S7 Record  The type of record field is 'S7' (0x5337).  The
                     address field contains the starting execution
                     address and is interpreted as  4-byte address.
                     There is no data field.
          S8 Record  The type of record field is 'S8' (0x5338).  The
                     address field contains the starting execution
                     address and is interpreted as  3-byte address.
                     There is no data field.

          S9 Record  The type of record field is 'S9' (0x5339).  The
                     address field contains the starting execution
                     address and is interpreted as  2-byte address.
                     There is no data field.

     EXAMPLE

          Shown below is a typical S-record format file.

                 S00600004844521B
                 S1130000285F245F2212226A000424290008237C2A
                 S11300100002000800082629001853812341001813
                 S113002041E900084E42234300182342000824A952
                 S107003000144ED492
                 S5030004F8
                 S9030000FC

          The file consists of one S0 record, four S1 records, one S5
          record and an S9 record.

          The S0 record is comprised as follows:

             S0     S-record type S0, indicating it is a header
                    record.
             06     Hexadecimal 06 (decimal 6), indicating that six
                    character pairs (or ASCII bytes) follow.

             00 00  Four character 2-byte address field, zeroes in
                    this example.
             48     ASCII H, D, and R - "HDR".

             1B     The checksum.

          The first S1 record is comprised as follows:
             S1     S-record type S1, indicating it is a data record
                    to be loaded at a 2-byte address.

             13     Hexadecimal 13 (decimal 19), indicating that
                    nineteen character pairs, representing a 2 byte
                    address, 16 bytes of binary data, and a 1 byte
                    checksum, follow.
             00 00  Four character 2-byte address field; hexidecimal
                    address 0x0000, where the data which follows is to
                    be loaded.

             28 5F 24 5F 22 12 22 6A 00 04 24 29 00 08 23 7C Sixteen
                    character pairs representing the actual binary
                    data.
             2A     The checksum.

          The second and third S1 records each contain 0x13 (19)
          character pairs and are ended with checksums of 13 and 52,
          respectively.  The fourth S1 record contains 07 character
          pairs and has a checksum of 92.

          The S5 record is comprised as follows:

             S5     S-record type S5, indicating it is a count record
                    indicating the number of S1 records.



             03     Hexadecimal 03 (decimal 3), indicating that three
                    character pairs follow.

             00 04  Hexadecimal 0004 (decimal 4), indicating that
                    there are four data records previous to this
                    record.
             F8     The checksum.

          The S9 record is comprised as follows:

             S9     S-record type S9, indicating it is a termination
                    record.
             03     Hexadecimal 03 (decimal 3), indicating that three
                    character pairs follow.

             00 00  The address field, hexadecimal 0 (decimal 0)
                    indicating the starting execution address.
             FC     The checksum.


    [Intel Hex ASCII Format]

	Intel HEX-ASCII format takes the form:

            +----------------------------------- Start Character
            |
            |  +-------------------------------- Byte Count 
            |  |                                     (# of data bytes)
            |  | 
            |  |     +-------------------------- Address of first data.
            |  |     |     
            |  |     |     +-------------------- Record Type (00 data,
            |  |     |     |                         01 end of record)
            |  |     |     |
            |  |     |     |       +------------ Data Bytes
            |  |     |     |       |        
            |  |     |     |       |       +---- Checksum
            |  |     |     |       |       |
	    | / \ /     \ / \ /         \ / \
	    : B C A A A A T T H H ... H H C C

	An examples:

	    :10000000DB00E60F5F1600211100197ED300C3004C
	    :1000100000000101030307070F0F1F1F3F3F7F7FF2
	    :01002000FFE0
	    :00000001FF

	This information comes from _Microprocessors and Programmed
	Logic_, Second Edition, Kenneth L. Short, 1987, Prentice-Hall, 
	ISBN 0-13-580606-2. 

	Provisions have been made for data spaces larger than 64 kBytes.
	The above reference does not discuss them.  I suspect there is
	a start of segment type record, but I do not know how it is
	implemented.


    [Contributors]

        Many people have contributed to this list.  Below is a list
        of people who have helped by either their direct input or through
	their postings to comp.sys.m68k.  I can't list everyone, but I 
	have tried to include many.  

	    walvdrk_r@research.ptt.nl (Kees van der Wal)
	    byron@cc.gatech.edu (Byron A Jeff)
            mcdchg!motmpl!ron (Ron Widell)
	    rrt@mpd.tandem.com (Bob Teisberg)
	    benstn@olivetti.nl (Ben Stuyts)
	    csuley@cs.cornell.edu (Christopher Suley)
	    idr@mailhost.cs.pdx.edu (Ian D Romanick)
	    wayne@netcom.com (wayne t. watson)



Happy Computing,
-- Greg
+---------------------------+----------------------------+-----------------+
|  __     __          ___   |  Greg Hawley               |  Expressed      |
| /  \|  /   \ / |  | \     |  Technology Group Inc.     |  Opinions are   |
| +--/|  +--  X  |  |  \    |  55 Jewelers Park Drive    |  mine and not   |
| |   \__\__ / \ \__/ __\   |  Neenah WI 54956           |  of Technology  |
|                           |  gregh@cserver.plexus.com  |  Group Inc. or  |
|  Technology Group Inc.    |                            |  Plexus Corp.   |
+---------------------------+----------------------------+-----------------+