File "hello.asm"

Full Path: /home/analogde/www/private/Projet/Example/HC11/hello.asm
File size: 2.56 KB
MIME-type: text/plain
Charset: utf-8

l****************************************************************************
*  HELLO.ASM
*
*	Simple program for testing the Axiom CMx11A8 boards.
*	A text string is sent to the terminal using COM1.
*

***************
*   EQUATES   *
***************
REGBS   EQU  $1000      start of registers

BAUD    EQU  REGBS+$2B  sci baud reg
SCCR1   EQU  REGBS+$2C  sci control1 reg
SCCR2   EQU  REGBS+$2D  sci control2 reg
SCSR    EQU  REGBS+$2E  sci status reg
SCDAT   EQU  REGBS+$2F  sci data reg
COPRST  EQU  REGBS+$3A  cop reset reg

IBUFSIZ EQU  35		input buffer size
EOT     EQU  $04        end of text/table

***************
*     RAM     *
***************
        ORG  $2000

INBUFF  RMB  IBUFSIZ    input buffer, defined but not used
ENDBUFF EQU  *
COUNT   RMB  1     # characters read, also unused


***********************
* Program starts here *
***********************
         ORG  $2400
*         ORG  $E000
START
*         LDS  #$23FF	 set stack pointer, DO NOT set when running under monitor

	 JSR  ONSCI	 initialize serial port
         LDX  #MSG	 get message string
         JSR  OUTSTRG	 send it out serial port

*eloop   nop		endless loop
*        bra	eloop

         RTS


**********
*   ONSCI() - Initialize the SCI for 9600
*                 baud at 8 MHz Extal.
**********
ONSCI    LDAA #$30
         STAA BAUD        baud register
         LDAA #$00
         STAA SCCR1
         LDAA #$0C
         STAA SCCR2       enable
         RTS

**********
*  OUTSTRG(x) - Output string of ASCII bytes
* starting at x until end of text ($04).
**********
OUTSTRG  JSR  OUTCRLF
OUTSTRG0 PSHA
OUTSTRG1 LDAA 0,X          read char into a
         CMPA #EOT
         BEQ  OUTSTRG3     jump if eot
         JSR  OUTPUT       output character
         INX               incriment pointer
         BRA  OUTSTRG1     loop
OUTSTRG3 PULA
         RTS

**********
*  OUTCRLF() - Output a Carriage return and
* a line feed.  Returns a = cr.
**********
OUTCRLF  LDAA #$0D      cr
         JSR  OUTPUT    output a
         LDAA #$00
         JSR  OUTPUT    output padding
         LDAA #$0D
         RTS

**********
*  OUTPUT() - Output A to sci.
**********
OUTPUT
OUTSCI2  LDAB SCSR        read status
         BITB #$80
         BEQ  OUTSCI2     loop until tdre=1
         ANDA #$7F        mask parity
         STAA SCDAT       send character
OUTSCI3  RTS


*** TEXT TABLES ***

MSG     FCC   'Hello World'
        FCB   EOT


*        org     $FFFE        set the reset vector
*        fdb     START


         END