***************************************************************** * * * MORROW 68K SYSTEM boot EPROM REV 0. * * * * initial coding: 5/15/84 -bjg- * * * ***************************************************************** ioaddr = $ff0000 * compupro i/o address space *********************************** * Compupro interfacer IV equates * *********************************** sio = ioaddr+$10 * interfacer base address siostat = sio+$1 * uart status siodat = sio * uart data select = sio+$7 * group select port console = 7 * interface left port ********************** * mult i/o equates * ********************** base = ioaddr+$48 * standard base address grpctl = base+$7 * select port dll = base * divisor latch lsb dlm = base+$1 * divisor latch msb ier = base+$1 * interrupt enable register lcr = base+$3 * line control register mcr = base+$4 * modem control register lsr = base+$5 * line status register rbr = base * receive buffer register thr = base * trasnmitter holding register dlab = $80 * divisor latch access bit thre = $20 * transmitter hold reg empty status dr = $1 * received data ready status ******************** * SIO4/DMA equates * ******************** * sio port assignments sbase = ioaddr+$20 * SIO4 base I/O address dmaddrl = sbase * low byte dma address dmaddrh = sbase+$1 * high byte dma address dmaddre = sbase+$2 * extended byte of dma address recntrl = sbase+$3 * receiver control port lcount = sbase+$4 * low byte of dma count hcount = sbase+$5 * high byte of dma count enable = sbase+$6 * start / stop enable dmacntl = sbase+$7 * dma control and status sdata = sbase+$8 * uart data port sstatus = sbase+$9 * uart status port smode = sbase+$a * uart mode register scommnd = sbase+$b * uart command register fifost = sbase+$c * fifo status fifoda = sbase+$d * fifo data dmaglbl = sbase+$e * global dma status sselect = sbase+$f * tty select port * sio constants control = $27 * normal async mode ttya = 0 * select byte for ttya ttyb = 1 * select byte for tttb ttyc = 2 * select byte for tttc ttyd = 3 * select byte for tttd divisor = $d * 9600 baud divisor * 1200 baud divisor = $8 * 19200 baud divisor = $e * sio flags and masks done = $40 * DMA idle when port 27 = 40 sro = $1 * transmit buffer empty when high sr1 = $2 * receive buffer full when high sr6 = $40 * carrier detected when low sr7 = $80 * data set ready when low kick = 1 * value to kick controller *************************** * miscellaneous equates * *************************** alf = $a * ascii line feed acr = $d * ascii carriage return asp = $20 * ascii space acs = $1a * ascii clear for ADM31 qpat = $AA55 * initial ram test pattern spat = $00ff * marching pattern stop = $F0000 * end of 2 Meg ramtest area page = 1024 * 2K X 8 ram chips image = 0 uerr = $4fe ************************* * B E G I N * ************************* * set baud rates for all four SIO4 ports * 9600 baud, async, no parity, 8 data and 2 stop bits sbaud: move.b #ttya,d2 * select uart 0 sbaud1: move.b d2,sselect * select the tty move.b scommnd,d0 * set up for uart mode reg. 1 move.b smode,d1 * read mode register 1 point to 2 move.b smode,d0 * read mode register 2 point to 1 move.b smode,d1 * read mode register 1 setup for 2 andi.b #$f0,d0 * strip baud rate off ori.b #divisor,d0 * lower 4 bits = 9600 baud move.b d0,smode * write register 2 move.b #control,scommnd * set it for normal async rs232 addq.b #1,d2 * next one cmpi.b #4,d2 bne sbaud1 * PRINT SIGNON init1: move.l #signon,a1 * say hello move.l #ramtest,a6 * set up return through a6 bra string * check for good ram before using stack ramtest: move.l #0,a0 * beginning of ram move.w #qpat,d0 * ramtest pattern ramtst1: move.w d0,(a0) * write it cmp d0,(a0) * check it bne ramerr swap.b d0 * complement move.w d0,(a0) * write it cmp d0,(a0) * read it bne ramerr addq.l #1,a0 * increment ram address bra ramtst1 ramerr: cmpi.l #0,a0 * check for no memory bne ramer2 move.l #ramer1,a6 move.l #rerr1,a1 * no ram message bra string ramer1: halt ramer2: move.l a0,a7 * set up stack bsr paddr * print address move.l $rerr2,a1 * move.l #main,a6 * return to main bra string main: jmp main