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