ADDR B1 B2 B3 B4 thrass11.tmp PAGE 1 ************************************************************* . *************** * 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 0000 8E 00 FF LDS #$00ff set stack pointer, DO NOT set when . running under monitor 0003 BD 00 24 JSR ONSCI initialize serial port 0006 CE 00 5E LDX #MSG get message string 0009 BD 00 34 JSR OUTSTRG send it out serial port 000C BD 00 14 JSR COUNT10 eloop ADDR B1 B2 B3 B4 thrass11.tmp PAGE 2 000F 01 nop 0010 20 FD bra eloop endless loop 0012 39 RTS 0013 39 MAXCH FCC '9' COUNT10 0014 36 PSHA 0015 BD 00 46 JSR OUTCRLF 0018 86 30 LDAA #'0' 001A BD 00 51 LOOPY JSR OUTPUT 001D 4C INCA 001E 91 13 CMPA MAXCH 0020 2F F8 BLE LOOPY 0022 32 PULA 0023 39 RTS ********** * ONSCI() - Initialize the SCI for 9600 * baud at 8 MHz Extal. ********** 0024 86 30 ONSCI LDAA #$30 0026 B7 10 2B STAA BAUD baud register 0029 86 00 LDAA #$00 002B B7 10 2C STAA SCCR1 002E 86 0C LDAA #$0C 0030 B7 10 2D STAA SCCR2 enable 0033 39 RTS ********** * OUTSTRG(x) - Output string of ASCII bytes * starting at x until end of text ($04). ********** 0034 BD 00 46 OUTSTRG JSR OUTCRLF 0037 36 OUTSTRG0 PSHA 0038 A6 00 OUTSTRG1 LDAA 0,X read char into a 003A 81 04 CMPA #EOT 003C 27 06 BEQ OUTSTRG3 jump if eot 003E BD 00 51 JSR OUTPUT output character 0041 08 INX incriment pointer 0042 20 F4 BRA OUTSTRG1 loop 0044 32 OUTSTRG3 PULA 0045 39 RTS ********** * OUTCRLF() - Output a Carriage return and * a line feed. Returns a = cr. ********** 0046 86 0D OUTCRLF LDAA #$0D cr 0048 BD 00 51 JSR OUTPUT output a 004B 86 0A LDAA #$0A 004D BD 00 51 JSR OUTPUT output padding 0050 39 RTS ********** * OUTPUT() - Output A to sci. ********** OUTPUT 0051 F6 10 2E OUTSCI2 LDAB SCSR read status 0054 C5 80 BITB #$80 0056 27 F9 BEQ OUTSCI2 loop until tdre=1 0058 84 7F ANDA #$7F mask parity 005A B7 10 2F STAA SCDAT send character ADDR B1 B2 B3 B4 thrass11.tmp PAGE 3 005D 39 OUTSCI3 RTS *** TEXT TABLES *** 005E 48 65 6C 6C MSG FCC 'Hello World' . 0062 6F 20 57 6F . 0066 72 36 64 0069 04 FCB EOT org $fffe reset vector FFFE 00 00 fdb START END Symbol Table COUNT10 0014 OPTION 1039 CONFIG 103F ELOOP 000F INBUFF 2000 COPRST 103A LOOPY 001A TCTL1 1020 COUNT 2023 TMSK1 1022 TMSK2 1024 SCCR1 102C SCCR2 102D BAUD 102B MAXCH 0013 OUTCRLF 0046 TFLG1 1023 CFORC 100B MSG 005E START 0000 REGBS 1000 HPRIO 103C OUTSTRG0 0037 OUTSTRG1 0038 OUTSTRG3 0044 SCSR 102E SCDAT 102F IBUFSIZ 0023 EOT 0004 TCNT 100E ENDBUFF 2023 PORTE 100A PPROG 103B OUTSTRG 0034 OUTSCI2 0051 OUTSCI3 005D BPROT 1035 TOC5 101E ONSCI 0024 ACIA B5F8 OUTPUT 0051