<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Need Assembly Help in ColdFire/68K Microcontrollers and Processors</title>
    <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Need-Assembly-Help/m-p/136256#M1780</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hello everyone, I am a teaching assistant and i am in need of some help.&amp;nbsp; Our students used to use a 68k chip and there are numerous labs that go along with it.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;My job is to test these labs using the mcf5211DEMO board.&amp;nbsp; I am unfamiliar with CodeWarrior 6.4 Coldfire and I am unable to even get the option to create a project in assembly.&amp;nbsp; Can someone direct me as to how to test to make sure the programs (each instruction) will still run on the board?&amp;nbsp; I've included an example of a previous lab.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;TIA!&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;~M&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;*******************************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Program that performs BCD arithmetic on data from the parallel port.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*******************************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;* Set the assembler options, cre turns on cross-reference in the listing file&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* and mex turns on macro expansion in the listing file.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; opt&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cre,mex&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;*******************************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Definitions for access to and control of the ACIA chip&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;ACIA_CR&amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp; $E0000&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ; Control Register address&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;ACIA_DR&amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp; $E0002&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ; Data Register address&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Control Register (7..0) Bit definitions:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp; 7&amp;nbsp;&amp;nbsp;&amp;nbsp; Receive Interrupt Enable&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp; 6..5&amp;nbsp;&amp;nbsp;&amp;nbsp; RTS control / Transmit interrupt control&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp; 00 = RTS=Low, Transmit interrupt disabled&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 01 = RTS=Low, Transmit interrupt enabled&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 10 = RTS=High, Transmit interrupt disabled&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 11 = RTS=Low, TxD=Break, Transmit interrupt disabled&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp; 4..2&amp;nbsp;&amp;nbsp;&amp;nbsp; Communication configuration&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp; 000 = 7E2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp; 001 = 7O2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp; 010 = 7E1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp; 011 = 7O1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp; 100 = 8N2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp; 101 = 8N1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp; 110 = 8E1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp; 111 = 8O1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp; 1..0&amp;nbsp;&amp;nbsp;&amp;nbsp; Clock divider / Master Reset&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp; 00 = Divide by 1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp; 01 = Divide by 16&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp; 10 = Divide by 64&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp; 11 = Master Reset&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Control register values:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SER_RST&amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp; $03&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ; CR1=CR0=1 causes master reset&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SER_8N1&amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp; $15&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ; 4..2=8N1, Divide by 16&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*******************************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Definitions for access to and control of the PIA chip&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Port A Data Register&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;PIA_DRA&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp; ($E8001+$0)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Port A Data Direction Register&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;PIA_DDRA &amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp; ($E8001+$0)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Port A Control Register&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;PIA_CRA&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp; ($E8001+$2)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;* Port B Data Register&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;PIA_DRB&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp; ($E8001+$4)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Port B Data Direction Register&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;PIA_DDRB &amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp; ($E8001+$4)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Port B Control Register&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;PIA_CRB&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp; ($E8001+$6)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;* Control Register - Select Data Direction Register&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SEL_DDR&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp; $00&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Control Register - Select Data Register&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SEL_DR&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp; $04&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;* Data Direction Register - Select Input Port&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SEL_INP&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp; $00&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Control Register - Select Output Port&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SEL_OUTP &amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp; $FF&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*******************************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;* Set the starting address of the program.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; org&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $20000&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;start&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Initialize the stack&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVEA.L&amp;nbsp;&amp;nbsp;&amp;nbsp; #$23C00,A7&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;* Waste some time ~1sec. (wait for ACIA to be inactive)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.L &amp;nbsp;&amp;nbsp;&amp;nbsp; #$0002FF00,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;DELAY: &amp;nbsp;&amp;nbsp;&amp;nbsp; SUBQ.L &amp;nbsp;&amp;nbsp;&amp;nbsp; #1,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; BNE&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; DELAY&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;* Initialize ACIA #1 chip&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Reset the chip using "master reset"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B &amp;nbsp;&amp;nbsp;&amp;nbsp; #SER_RST,ACIA_CR&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Setup the communication protocol&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B &amp;nbsp;&amp;nbsp;&amp;nbsp; #SER_8N1,ACIA_CR&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;* Initialize the PIA #1 chip&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Select the Data Direction Register for Port A&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #SEL_DDR,PIA_CRA&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Setup Port A for output to LEDs&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #SEL_OUTP,PIA_DDRA&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Select the Data Register for Port A&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #SEL_DR,PIA_CRA&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Select the Data Direction Register for Port B&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #SEL_DDR,PIA_CRB&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Setup Port B for input from switches&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #SEL_INP,PIA_DDRB&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Select the Data Register for Port B&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #SEL_DR,PIA_CRB&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;REPEAT:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Prompt the user to set the switches for A&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #0,d0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LEA&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; M0,A1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVEQ&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #LENM0,D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BSR&amp;nbsp;&amp;nbsp;&amp;nbsp; SBC_IO&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Wait for a key to be pressed...&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B &amp;nbsp;&amp;nbsp;&amp;nbsp; #5,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BSR&amp;nbsp;&amp;nbsp;&amp;nbsp; SBC_IO&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Read the switches&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; PIA_DRB,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B &amp;nbsp;&amp;nbsp;&amp;nbsp; D0,BCD_A&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Prompt the user to set the switches for B&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B &amp;nbsp;&amp;nbsp;&amp;nbsp; #0,d0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LEA&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; M1,A1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVEQ&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #LENM1,D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BSR&amp;nbsp;&amp;nbsp;&amp;nbsp; SBC_IO&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Wait for a key to be pressed...&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B &amp;nbsp;&amp;nbsp;&amp;nbsp; #5,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BSR&amp;nbsp;&amp;nbsp;&amp;nbsp; SBC_IO&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Read the switches&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; PIA_DRB,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; D0,BCD_B&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Calculate the BCD sum A-23+B&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B &amp;nbsp;&amp;nbsp;&amp;nbsp; #$23,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; BCD_A,D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; BCD_B,D2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Initialize the CCR, X=0 and Z=1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.W&amp;nbsp;&amp;nbsp;&amp;nbsp; #%00100,CCR&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Compute A-23&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SBCD&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; D0,D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Check to see if result is less than 0 (indicated by a carry-out)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BCS&amp;nbsp;&amp;nbsp;&amp;nbsp; OUT_RANGE&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Compute A-23+B&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ABCD&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; D2,D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Check to see if result is greater than 99 (indicated by a carry-out)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BCC&amp;nbsp;&amp;nbsp;&amp;nbsp; IN_RANGE&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Display 'out of range' message&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;OUT_RANGE:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B &amp;nbsp;&amp;nbsp;&amp;nbsp; #1,d0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LEA&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; M3,A1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVEQ&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #LENM3,D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BSR&amp;nbsp;&amp;nbsp;&amp;nbsp; SBC_IO&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Clear the result (and the LEDs) since it is not correct&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CLR.B&amp;nbsp;&amp;nbsp;&amp;nbsp; D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IN_RANGE:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Display the result on the LEDs&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; D1,PIA_DRA&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Prompt the user to contiue&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B &amp;nbsp;&amp;nbsp;&amp;nbsp; #0,d0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LEA&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; M2,A1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVEQ&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #LENM2,D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BSR&amp;nbsp;&amp;nbsp;&amp;nbsp; SBC_IO&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Get the user response&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B &amp;nbsp;&amp;nbsp;&amp;nbsp; #5,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BSR&amp;nbsp;&amp;nbsp;&amp;nbsp; SBC_IO&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Compare the response - repeat if it was 'Y'&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CMP.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #'Y',D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BEQ&amp;nbsp;&amp;nbsp;&amp;nbsp; REPEAT&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;* Stop executing&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; JMP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $48C&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;*******************************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp; This subroutine implements *some* of the Teesside simulator TRAP I/O&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* D0.B : Description (blank descriptions are not implemented)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* 0: Print string pointed at by A1 and D1.W characters long with CRLF&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* 1: Print string pointed at by A1 and D1.W characters long without CRLF&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* 2: Read the string pointed at by A1.&amp;nbsp; Length returned in D1.W (maximum 80)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* 3:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* 4:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* 5: Read a single character in D1.B&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* 6: Print a single character in D1.B&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* 7:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* 8:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* 9:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*******************************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;sbc_io:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Save registers&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVEM.L D0,-(SP)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Dispatch table / switch() statement&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CMP.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #0,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BEQ&amp;nbsp;&amp;nbsp;&amp;nbsp; SUB_0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CMP.B&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #1,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; BEQ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SUB_1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CMP.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #2,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BEQ&amp;nbsp;&amp;nbsp;&amp;nbsp; SUB_2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CMP.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #5,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; BEQ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SUB_5&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CMP.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #6,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; BEQ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SUB_6&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Default for unimplemented subfunctions is to simply exit, an error is better&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; JMP&amp;nbsp;&amp;nbsp;&amp;nbsp; EXIT_IO&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*******************************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Print the string pointed at by A1 and D1.W characters long with CRLF&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SUB_0:&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* setup loop by decrementing LCV&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SUBI.W&amp;nbsp;&amp;nbsp;&amp;nbsp; #1,D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CMP.W&amp;nbsp;&amp;nbsp;&amp;nbsp; #-1,D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BEQ&amp;nbsp;&amp;nbsp;&amp;nbsp; CRLF&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;NEXT_0:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Check to see if the ACIA is ready for a character&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; ACIA_CR,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BTST.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #1,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BEQ&amp;nbsp;&amp;nbsp;&amp;nbsp; NEXT_0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* The ACIA is ready, send it the character&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; (A1)+,ACIA_DR&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DBF&amp;nbsp;&amp;nbsp;&amp;nbsp; D1,NEXT_0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;CRLF:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;CR_WAIT:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Check to see if the ACIA is ready for a character&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; ACIA_CR,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BTST.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #1,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BEQ&amp;nbsp;&amp;nbsp;&amp;nbsp; CR_WAIT&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* The ACIA is ready, send it the CR&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #$0D,ACIA_DR&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Check to see if the ACIA is ready for a character&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LF_WAIT:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; ACIA_CR,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BTST.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #1,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BEQ&amp;nbsp;&amp;nbsp;&amp;nbsp; LF_WAIT&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* The ACIA is ready, send it the LF&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #$0A,ACIA_DR&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Done. Go to the subroutine exit&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; JMP&amp;nbsp;&amp;nbsp;&amp;nbsp; EXIT_IO&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*******************************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Print the string pointed at by A1 and D1.W characters long without CRLF&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SUB_1:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* setup loop by decrementing LCV&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SUBI.W&amp;nbsp;&amp;nbsp;&amp;nbsp; #1,D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CMP.W&amp;nbsp;&amp;nbsp;&amp;nbsp; #-1,D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; BEQ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; DONE_1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;NEXT_1:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Check to see if the ACIA is ready for a character&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; ACIA_CR,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BTST.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #1,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; BEQ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; NEXT_1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* The ACIA is ready, send it the character&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; (A1)+,ACIA_DR&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; DBF&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; D1,NEXT_1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;DONE_1:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; JMP&amp;nbsp;&amp;nbsp;&amp;nbsp; EXIT_IO&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*******************************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Read the string pointed at by A1.&amp;nbsp; Length resturned in D1.W (max 80)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SUB_2:&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Clear Count register&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CLR.W&amp;nbsp;&amp;nbsp;&amp;nbsp; D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;NEXT_2:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Check to see if the ACIA has a character&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; ACIA_CR,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BTST.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #0,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; BEQ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; NEXT_2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* The ACIA has a character, get it the character&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ACIA_DR,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* See if the character is "enter"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CMP.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #$0D,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BEQ&amp;nbsp;&amp;nbsp;&amp;nbsp; DONE_2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Save the character&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; D0,(A1)+&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ADDI.W&amp;nbsp;&amp;nbsp;&amp;nbsp; #1,D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; JMP&amp;nbsp;&amp;nbsp;&amp;nbsp; NEXT_2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;DONE_2:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; JMP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; EXIT_IO&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*******************************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Read a single character in D1.B&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SUB_5:&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Check to see if the ACIA has a character&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; ACIA_CR,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BTST.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #0,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BEQ&amp;nbsp;&amp;nbsp;&amp;nbsp; SUB_5&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* The ACIA has a character, get it the character&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; ACIA_DR,D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; JMP&amp;nbsp;&amp;nbsp;&amp;nbsp; EXIT_IO&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*******************************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Print single character in D1.B&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SUB_6:&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Check to see if the ACIA is ready for a character&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; ACIA_CR,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BTST.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #1,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BEQ&amp;nbsp;&amp;nbsp;&amp;nbsp; SUB_6&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* The ACIA is ready, send it the character&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; D1,ACIA_DR&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; JMP&amp;nbsp;&amp;nbsp;&amp;nbsp; EXIT_IO&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;EXIT_IO:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Restore Resisters&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MOVEM.L &amp;nbsp;&amp;nbsp;&amp;nbsp; (SP)+,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Return from subroutine&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RTS&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;*******************************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Constants are placed at the end of the program.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*******************************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;m0&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dc.b&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 'Enter the BCD value for A on the switches'&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;lenm0 &amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; *-m0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;m1&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dc.b&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 'Enter the BCD value for B on the switches'&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;lenm1 &amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; *-m1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;m2&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dc.b&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 'Enter Y to continue: '&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;lenm2 &amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; *-m2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;m3&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dc.b&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 'The result is out of range (0-99) and cannot be displayed!'&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;lenm3 &amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; *-m3&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;*******************************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Variables are placed in RAM&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*******************************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Set the starting address of RAM data&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; org&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $22000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;BCD_A &amp;nbsp;&amp;nbsp;&amp;nbsp; ds.b&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;BCD_B &amp;nbsp;&amp;nbsp;&amp;nbsp; ds.b&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; start&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 08 Jun 2007 07:57:16 GMT</pubDate>
    <dc:creator>PhatiteM</dc:creator>
    <dc:date>2007-06-08T07:57:16Z</dc:date>
    <item>
      <title>Need Assembly Help</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Need-Assembly-Help/m-p/136256#M1780</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hello everyone, I am a teaching assistant and i am in need of some help.&amp;nbsp; Our students used to use a 68k chip and there are numerous labs that go along with it.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;My job is to test these labs using the mcf5211DEMO board.&amp;nbsp; I am unfamiliar with CodeWarrior 6.4 Coldfire and I am unable to even get the option to create a project in assembly.&amp;nbsp; Can someone direct me as to how to test to make sure the programs (each instruction) will still run on the board?&amp;nbsp; I've included an example of a previous lab.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;TIA!&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;~M&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;*******************************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Program that performs BCD arithmetic on data from the parallel port.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*******************************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;* Set the assembler options, cre turns on cross-reference in the listing file&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* and mex turns on macro expansion in the listing file.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; opt&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cre,mex&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;*******************************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Definitions for access to and control of the ACIA chip&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;ACIA_CR&amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp; $E0000&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ; Control Register address&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;ACIA_DR&amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp; $E0002&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ; Data Register address&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Control Register (7..0) Bit definitions:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp; 7&amp;nbsp;&amp;nbsp;&amp;nbsp; Receive Interrupt Enable&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp; 6..5&amp;nbsp;&amp;nbsp;&amp;nbsp; RTS control / Transmit interrupt control&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp; 00 = RTS=Low, Transmit interrupt disabled&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 01 = RTS=Low, Transmit interrupt enabled&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 10 = RTS=High, Transmit interrupt disabled&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 11 = RTS=Low, TxD=Break, Transmit interrupt disabled&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp; 4..2&amp;nbsp;&amp;nbsp;&amp;nbsp; Communication configuration&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp; 000 = 7E2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp; 001 = 7O2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp; 010 = 7E1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp; 011 = 7O1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp; 100 = 8N2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp; 101 = 8N1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp; 110 = 8E1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp; 111 = 8O1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp; 1..0&amp;nbsp;&amp;nbsp;&amp;nbsp; Clock divider / Master Reset&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp; 00 = Divide by 1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp; 01 = Divide by 16&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp; 10 = Divide by 64&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp; 11 = Master Reset&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Control register values:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SER_RST&amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp; $03&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ; CR1=CR0=1 causes master reset&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SER_8N1&amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp; $15&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ; 4..2=8N1, Divide by 16&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*******************************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Definitions for access to and control of the PIA chip&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Port A Data Register&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;PIA_DRA&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp; ($E8001+$0)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Port A Data Direction Register&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;PIA_DDRA &amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp; ($E8001+$0)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Port A Control Register&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;PIA_CRA&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp; ($E8001+$2)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;* Port B Data Register&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;PIA_DRB&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp; ($E8001+$4)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Port B Data Direction Register&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;PIA_DDRB &amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp; ($E8001+$4)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Port B Control Register&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;PIA_CRB&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp; ($E8001+$6)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;* Control Register - Select Data Direction Register&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SEL_DDR&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp; $00&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Control Register - Select Data Register&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SEL_DR&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp; $04&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;* Data Direction Register - Select Input Port&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SEL_INP&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp; $00&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Control Register - Select Output Port&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SEL_OUTP &amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp; $FF&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*******************************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;* Set the starting address of the program.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; org&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $20000&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;start&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Initialize the stack&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVEA.L&amp;nbsp;&amp;nbsp;&amp;nbsp; #$23C00,A7&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;* Waste some time ~1sec. (wait for ACIA to be inactive)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.L &amp;nbsp;&amp;nbsp;&amp;nbsp; #$0002FF00,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;DELAY: &amp;nbsp;&amp;nbsp;&amp;nbsp; SUBQ.L &amp;nbsp;&amp;nbsp;&amp;nbsp; #1,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; BNE&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; DELAY&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;* Initialize ACIA #1 chip&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Reset the chip using "master reset"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B &amp;nbsp;&amp;nbsp;&amp;nbsp; #SER_RST,ACIA_CR&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Setup the communication protocol&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B &amp;nbsp;&amp;nbsp;&amp;nbsp; #SER_8N1,ACIA_CR&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;* Initialize the PIA #1 chip&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Select the Data Direction Register for Port A&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #SEL_DDR,PIA_CRA&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Setup Port A for output to LEDs&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #SEL_OUTP,PIA_DDRA&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Select the Data Register for Port A&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #SEL_DR,PIA_CRA&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Select the Data Direction Register for Port B&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #SEL_DDR,PIA_CRB&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Setup Port B for input from switches&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #SEL_INP,PIA_DDRB&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Select the Data Register for Port B&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #SEL_DR,PIA_CRB&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;REPEAT:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Prompt the user to set the switches for A&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #0,d0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LEA&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; M0,A1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVEQ&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #LENM0,D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BSR&amp;nbsp;&amp;nbsp;&amp;nbsp; SBC_IO&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Wait for a key to be pressed...&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B &amp;nbsp;&amp;nbsp;&amp;nbsp; #5,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BSR&amp;nbsp;&amp;nbsp;&amp;nbsp; SBC_IO&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Read the switches&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; PIA_DRB,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B &amp;nbsp;&amp;nbsp;&amp;nbsp; D0,BCD_A&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Prompt the user to set the switches for B&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B &amp;nbsp;&amp;nbsp;&amp;nbsp; #0,d0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LEA&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; M1,A1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVEQ&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #LENM1,D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BSR&amp;nbsp;&amp;nbsp;&amp;nbsp; SBC_IO&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Wait for a key to be pressed...&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B &amp;nbsp;&amp;nbsp;&amp;nbsp; #5,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BSR&amp;nbsp;&amp;nbsp;&amp;nbsp; SBC_IO&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Read the switches&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; PIA_DRB,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; D0,BCD_B&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Calculate the BCD sum A-23+B&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B &amp;nbsp;&amp;nbsp;&amp;nbsp; #$23,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; BCD_A,D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; BCD_B,D2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Initialize the CCR, X=0 and Z=1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.W&amp;nbsp;&amp;nbsp;&amp;nbsp; #%00100,CCR&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Compute A-23&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SBCD&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; D0,D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Check to see if result is less than 0 (indicated by a carry-out)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BCS&amp;nbsp;&amp;nbsp;&amp;nbsp; OUT_RANGE&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Compute A-23+B&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ABCD&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; D2,D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Check to see if result is greater than 99 (indicated by a carry-out)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BCC&amp;nbsp;&amp;nbsp;&amp;nbsp; IN_RANGE&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Display 'out of range' message&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;OUT_RANGE:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B &amp;nbsp;&amp;nbsp;&amp;nbsp; #1,d0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LEA&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; M3,A1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVEQ&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #LENM3,D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BSR&amp;nbsp;&amp;nbsp;&amp;nbsp; SBC_IO&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Clear the result (and the LEDs) since it is not correct&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CLR.B&amp;nbsp;&amp;nbsp;&amp;nbsp; D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IN_RANGE:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Display the result on the LEDs&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; D1,PIA_DRA&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Prompt the user to contiue&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B &amp;nbsp;&amp;nbsp;&amp;nbsp; #0,d0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LEA&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; M2,A1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVEQ&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #LENM2,D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BSR&amp;nbsp;&amp;nbsp;&amp;nbsp; SBC_IO&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Get the user response&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B &amp;nbsp;&amp;nbsp;&amp;nbsp; #5,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BSR&amp;nbsp;&amp;nbsp;&amp;nbsp; SBC_IO&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Compare the response - repeat if it was 'Y'&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CMP.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #'Y',D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BEQ&amp;nbsp;&amp;nbsp;&amp;nbsp; REPEAT&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;* Stop executing&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; JMP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $48C&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;*******************************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&amp;nbsp; This subroutine implements *some* of the Teesside simulator TRAP I/O&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* D0.B : Description (blank descriptions are not implemented)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* 0: Print string pointed at by A1 and D1.W characters long with CRLF&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* 1: Print string pointed at by A1 and D1.W characters long without CRLF&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* 2: Read the string pointed at by A1.&amp;nbsp; Length returned in D1.W (maximum 80)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* 3:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* 4:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* 5: Read a single character in D1.B&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* 6: Print a single character in D1.B&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* 7:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* 8:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* 9:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*******************************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;sbc_io:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Save registers&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVEM.L D0,-(SP)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Dispatch table / switch() statement&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CMP.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #0,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BEQ&amp;nbsp;&amp;nbsp;&amp;nbsp; SUB_0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CMP.B&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #1,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; BEQ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SUB_1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CMP.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #2,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BEQ&amp;nbsp;&amp;nbsp;&amp;nbsp; SUB_2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CMP.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #5,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; BEQ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SUB_5&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CMP.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #6,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; BEQ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SUB_6&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Default for unimplemented subfunctions is to simply exit, an error is better&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; JMP&amp;nbsp;&amp;nbsp;&amp;nbsp; EXIT_IO&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*******************************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Print the string pointed at by A1 and D1.W characters long with CRLF&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SUB_0:&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* setup loop by decrementing LCV&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SUBI.W&amp;nbsp;&amp;nbsp;&amp;nbsp; #1,D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CMP.W&amp;nbsp;&amp;nbsp;&amp;nbsp; #-1,D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BEQ&amp;nbsp;&amp;nbsp;&amp;nbsp; CRLF&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;NEXT_0:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Check to see if the ACIA is ready for a character&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; ACIA_CR,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BTST.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #1,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BEQ&amp;nbsp;&amp;nbsp;&amp;nbsp; NEXT_0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* The ACIA is ready, send it the character&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; (A1)+,ACIA_DR&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DBF&amp;nbsp;&amp;nbsp;&amp;nbsp; D1,NEXT_0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;CRLF:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;CR_WAIT:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Check to see if the ACIA is ready for a character&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; ACIA_CR,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BTST.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #1,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BEQ&amp;nbsp;&amp;nbsp;&amp;nbsp; CR_WAIT&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* The ACIA is ready, send it the CR&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #$0D,ACIA_DR&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Check to see if the ACIA is ready for a character&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LF_WAIT:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; ACIA_CR,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BTST.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #1,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BEQ&amp;nbsp;&amp;nbsp;&amp;nbsp; LF_WAIT&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* The ACIA is ready, send it the LF&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #$0A,ACIA_DR&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Done. Go to the subroutine exit&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; JMP&amp;nbsp;&amp;nbsp;&amp;nbsp; EXIT_IO&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*******************************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Print the string pointed at by A1 and D1.W characters long without CRLF&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SUB_1:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* setup loop by decrementing LCV&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SUBI.W&amp;nbsp;&amp;nbsp;&amp;nbsp; #1,D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CMP.W&amp;nbsp;&amp;nbsp;&amp;nbsp; #-1,D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; BEQ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; DONE_1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;NEXT_1:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Check to see if the ACIA is ready for a character&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; ACIA_CR,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BTST.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #1,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; BEQ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; NEXT_1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* The ACIA is ready, send it the character&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; (A1)+,ACIA_DR&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; DBF&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; D1,NEXT_1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;DONE_1:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; JMP&amp;nbsp;&amp;nbsp;&amp;nbsp; EXIT_IO&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*******************************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Read the string pointed at by A1.&amp;nbsp; Length resturned in D1.W (max 80)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SUB_2:&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Clear Count register&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CLR.W&amp;nbsp;&amp;nbsp;&amp;nbsp; D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;NEXT_2:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Check to see if the ACIA has a character&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; ACIA_CR,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BTST.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #0,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; BEQ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; NEXT_2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* The ACIA has a character, get it the character&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ACIA_DR,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* See if the character is "enter"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CMP.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #$0D,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BEQ&amp;nbsp;&amp;nbsp;&amp;nbsp; DONE_2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Save the character&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; D0,(A1)+&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ADDI.W&amp;nbsp;&amp;nbsp;&amp;nbsp; #1,D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; JMP&amp;nbsp;&amp;nbsp;&amp;nbsp; NEXT_2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;DONE_2:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; JMP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; EXIT_IO&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*******************************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Read a single character in D1.B&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SUB_5:&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Check to see if the ACIA has a character&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; ACIA_CR,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BTST.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #0,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BEQ&amp;nbsp;&amp;nbsp;&amp;nbsp; SUB_5&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* The ACIA has a character, get it the character&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; ACIA_DR,D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; JMP&amp;nbsp;&amp;nbsp;&amp;nbsp; EXIT_IO&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*******************************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Print single character in D1.B&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SUB_6:&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Check to see if the ACIA is ready for a character&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; ACIA_CR,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BTST.B&amp;nbsp;&amp;nbsp;&amp;nbsp; #1,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BEQ&amp;nbsp;&amp;nbsp;&amp;nbsp; SUB_6&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* The ACIA is ready, send it the character&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVE.B&amp;nbsp;&amp;nbsp;&amp;nbsp; D1,ACIA_DR&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; JMP&amp;nbsp;&amp;nbsp;&amp;nbsp; EXIT_IO&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;EXIT_IO:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Restore Resisters&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MOVEM.L &amp;nbsp;&amp;nbsp;&amp;nbsp; (SP)+,D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Return from subroutine&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RTS&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;*******************************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Constants are placed at the end of the program.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*******************************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;m0&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dc.b&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 'Enter the BCD value for A on the switches'&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;lenm0 &amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; *-m0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;m1&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dc.b&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 'Enter the BCD value for B on the switches'&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;lenm1 &amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; *-m1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;m2&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dc.b&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 'Enter Y to continue: '&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;lenm2 &amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; *-m2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;m3&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dc.b&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 'The result is out of range (0-99) and cannot be displayed!'&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;lenm3 &amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; *-m3&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;*******************************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Variables are placed in RAM&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*******************************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Set the starting address of RAM data&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; org&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $22000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;BCD_A &amp;nbsp;&amp;nbsp;&amp;nbsp; ds.b&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;BCD_B &amp;nbsp;&amp;nbsp;&amp;nbsp; ds.b&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; start&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 08 Jun 2007 07:57:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Need-Assembly-Help/m-p/136256#M1780</guid>
      <dc:creator>PhatiteM</dc:creator>
      <dc:date>2007-06-08T07:57:16Z</dc:date>
    </item>
    <item>
      <title>Re: Need Assembly Help</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Need-Assembly-Help/m-p/136257#M1781</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;Hi&lt;BR /&gt;&lt;BR /&gt;If you name the file with extension ".s" and include it in the CodeWarrior project, the assembler will automatically be invoked to handle it.&lt;BR /&gt;&lt;BR /&gt;However, I'm afraid you have got three problems...&lt;BR /&gt;&lt;BR /&gt;(a) The code is written in 68K assembler, and not all assembler dialects are the same. CodeWarrior uses the same mnemonics for instructions as your example (Some assemblers like Gnu do not), but some of the assembler directives are different.&lt;BR /&gt;&lt;BR /&gt;For example, the CodeWarrior assembler requires everything to be in a section (text, data), etc, so you'll need to add suitable directives. You'll also need to add explicit "extern" statements for all external labels.&lt;BR /&gt;&lt;BR /&gt;If you try to assemble your example, you'll get quite a few errors...&lt;BR /&gt;&lt;BR /&gt;There is a preference panel for the assembler options. Make sure that you have "Labels must end with :" unchecked, and "Directives begin with ." unchecked. If you then start the file with:&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; text&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; option&amp;nbsp;&amp;nbsp; processor=mcf5211&lt;BR /&gt;&lt;BR /&gt;...then you'll get down to a large but manageable number of assembler errors.&lt;BR /&gt;&lt;BR /&gt;(b) The code is written for a 68K processor and hence uses the 68K instruction set. Some of the instructions which were valid for 68K are not valid for ColdFire. For example:&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ABCD&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SBCD&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOVEM.L&amp;nbsp;&amp;nbsp;&amp;nbsp; D0,-(SP)&lt;BR /&gt;&lt;BR /&gt;You will need to recode these.&lt;BR /&gt;&lt;BR /&gt;(c) The code is written for a 68K processor with 68K-specific peripherals. For example, it is accessing a 'PIA #1' chip. Since the same hardware probably doesn't exist on the ColdFire Demo board, this code will need rewriting too.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;In summary, you might be better off understanding what this code does, and rewriting it for ColdFire.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Sorry this is not more encouraging.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Simon&lt;BR /&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 08 Jun 2007 16:22:04 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Need-Assembly-Help/m-p/136257#M1781</guid>
      <dc:creator>SimonMarsden_de</dc:creator>
      <dc:date>2007-06-08T16:22:04Z</dc:date>
    </item>
  </channel>
</rss>

