**************************************************************************** * 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 PORTE EQU REGBS+$0A port e CFORC EQU REGBS+$0B force output compare TCNT EQU REGBS+$0E timer count TOC5 EQU REGBS+$1E oc5 reg TCTL1 EQU REGBS+$20 timer control 1 TMSK1 EQU REGBS+$22 timer mask 1 TFLG1 EQU REGBS+$23 timer flag 1 TMSK2 EQU REGBS+$24 timer mask 2 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 BPROT EQU REGBS+$35 block protect reg OPTION EQU REGBS+$39 option reg COPRST EQU REGBS+$3A cop reset reg PPROG EQU REGBS+$3B ee prog reg HPRIO EQU REGBS+$3C hprio reg CONFIG EQU REGBS+$3F config register ACIA EQU $B5F8 axiom 65c51 address * +0 = RX/TX register * +1 = status * +2 = command * +3 = control 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 $0000 START LDS #$00ff 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 JSR COUNT10 eloop nop bra eloop endless loop RTS MAXCH FCC '9' COUNT10 PSHA JSR OUTCRLF LDAA #'0' LOOPY JSR OUTPUT INCA CMPA MAXCH BLE LOOPY PULA 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 #$0A JSR OUTPUT output padding 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 reset vector fdb START END