** 4a.asm by Steve Moser ** Marcus Stegner * Addressmap RAM EQU $0 ;RAM section STACK EQU RAM+$800 ;Stack section PGM EQU RAM+$C00 ;Program start ROM EQU $800000 ;ROM section STACKSZ EQU 1024 ;Max stack size * Definitions * * 68332 global register definitions * * SIM SIMCR EQU $FFFA00 ;SIM Configuration Register SYPCR EQU $FFFA20 ;System Protection Register CSBARBT EQU $FFFA48 ;Chip Select Base Address Boot Register CSBAR0 EQU $FFFA4C ;Chip Select Base Address Register 0 CSBAR5 EQU $FFFA60 ;LCD connected to CS5 CSOR5 EQU $FFFA62 CSPAR0 EQU $FFFA44 ;Chip Select Pin Assignment *PORT E PEPAR EQU $FFFA16 ;Pin Assignment Register DDRE EQU $FFFA14 ;Data Direction Register PORTE EQU $FFFA12 ;Port E is decoded on 2 *PORT F PFPAR EQU $FFFA1E ;Pin Assignment Register DDRF EQU $FFFA1C ;Data Direction Register PORTF EQU $FFFA1A ;Port F is decoded on 2 *LCD LCD_IR EQU $200000 ;LCD Instruction Register LCD_DR EQU $200001 ;LCD Data Register * Place FEPROM at $800000, because unused org CSBARBT ;set on CSBARBT dc.w $8003 ;at 8M, size 64KB * Place ext. RAM at $0, 256KB, 0WS org CSBAR0 ;Set on SIM CSs dc.w $0005 ;CSBAR0, ext. RAM_RD dc.w $6830 ;CSOR0 dc.w $0005 ;CSBAR1, ext. RAM_WR_LO dc.w $3030 ;CSOR1 dc.w $0005 ;CSBAR2, ext. RAM_WR_HI dc.w $5030 ;CSOR2 * Initialize SIM and system protection * Switch off watchdogs, also while FREEZE is active org SIMCR dc.w $60CF ;FREEZE settings org SYPCR dc.w $0000 ;no system protection * Define Stack org STACK ;Stack from STACK to STACK + STACKSZ sseg ds.b STACKSZ cseg org PGM ;Programcode at $C00 * Initialize stack pointer move.l #sseg+STACKSZ,a7 ;load stack pointer * Initialize Port E move.w #$0000,PEPAR ;I/O instead of systembus move.w #$000F,DDRE ;4 bit as output * Initialize Port F move.w #$0000,PFPAR ;I/O instead of systembus move.w #$0000,DDRF ;all 8 bit as input * Init LCD Chipselect or.w #$2000,CSPAR0 ;CS5 Enable move.w #$2000,CSBAR5 ;Basisadresse LCD, 2K Block move.w #$7D30,CSOR5 ;CS Options ****main**** main SCCR0 equ $FFFC08 ;Adressbereiche der Register benennen SCBR=Baudrate SCCR1 equ $FFFC0A ;wird benutzt um sci-bus zu konfigurieren SCSR equ $FFFC0C ;sci-bus status register SCDR equ $FFFC0E ;sci-bus data register move.w #$37,SCCR0 ;baudrate in sccr0 einstellen baudrate auf 9600 einstellen sieh TAB in Doku MC68332.pdf move.w #12,SCCR1 ;= 1100 --> enable receiver/transmitter +no parity (Parity Enable=0), (Mode Select=0) 8 bit im sccr1 load movea.l #text,a0 ;Anfangsadresse nach a0 proof btst.b #0,SCSR ;solange transmission data register =1 == beschaeftigt beq proof move.b (a0),SCDR+1 ;information auf ausgang cmp.b #0,(a0)+ ;teste, ob string-ende schon erreicht beq forever bra proof forever bra forever end main text dc.b 'Tach auch',0 ;wichtig dass textdeklaration am ende erfolgen!!!