; V1A Edit #33 20-Jun-84 Autor: GA File: LOD11Q.AIM ; ; ; LOADER EPROM FUER R6511Q ; ****** ; ; ANZEIGE: ; ------- ; ; BEI POWER-UP 7654 3210 ; BEI ";" GEFUNDEN 1111 1111 ; BEI START MAIN 0000 0000 ; ; BEIM EINLESEN: ; ZIFFER 0 ASCII IN GETCH ; ZIFFER 1 LOW NIBBLE IN GETBYTE ; ZIFFER 2 HIGH NIBBLE IN GETBYTE ; ZIFFER 3 Y IN GETREC ; ; ; VARIABLEN im R6511Q-RAM ; BCNT EQU 41 BYTE COUNT BUF EQU 42 BUFFER fuer Nibbles (2 Bytes) ADR EQU 44 ADRESSE (2 Bytes) ; ; ; I/O- und Control-Register ; SCCR EQU 0015 SERIAL COMMUNICATION CONTROL REGISTER SCSR EQU 0016 SERIAL COMMUNICATION STATUS REGISTER SCDR EQU 0017 SERIAL COMMUNICATION DATA REGISTER COUNTAL EQU 0018 LOWER LATCH COUNTER A COUNTAU EQU 0019 UPPER LATCH COUNTER A ANZEIG EQU 4000 ANZEIGE (8 bytes) ; ; Konstanten ; ;BAUD EQU 0006 9600 Baud (genauer: 8928.57 BAUD EQU 0033 1200 Baud (genau) ; RTICODE EQU 40 INSTRUCTION CODE FUER 'RTI' ; ; Interrupt-Vectoren und Entry-Points ; MAIN EQU 0800 BEGIN HAUPTPROGRAMM IRQO EQU 17FA BEGIN INTERRUPT (Zuoberst im 4K-RAM) NMIO EQU 17FD BEGIN NON MASCABLE INTERRUPT ; ; INITIALISIERUNG + UART FORMAT FESTLEGEN ; ORG 0F800 START LOADER ; RESO LDX #0FF LOCATION STACKPOINTER 00FF-0040 TXS STACKPOINTER SETZEN CLD CLEAR DECIMAL MODE LDA #44 UART RECEIVE, FORMAT (START,7BIT,2STOP) STA SCCR SERIAL COMMUNICATION STATUS REGISTER LDA #>BAUD BAUDRATE LADEN STA COUNTAU UPPER LATCH COUNTER A LDA # GET NEXT CHARAKTER ; LDA #01 "Semikolon gefunden" STA ANZEIG STA ANZEIG+1 STA ANZEIG+2 STA ANZEIG+3 STA ANZEIG+4 STA ANZEIG+5 STA ANZEIG+6 STA ANZEIG+7 ; JSR GETBYTE GET BYTE CMP #00 WORD = '00' ? MARKIERT ENDE UEBERTRAGUNG BNE GETREC NO --> GET RECORD ; LDA #00 "MAIN Loaded" STA ANZEIG STA ANZEIG+1 STA ANZEIG+2 STA ANZEIG+3 STA ANZEIG+4 STA ANZEIG+5 STA ANZEIG+6 STA ANZEIG+7 ; JMP MAIN SPRINGT ZUR INITIALISIERUNG ; GETREC STA BCNT 1.BYTE = BYTECOUNT JSR GETBYTE STA ADR+1 2.BYTE = STARTADDR. HIGH JSR GETBYTE STA ADR 3.BYTE = STARTADDR. LOW LDY #00 COUNTER = 0 INITIALISIEREN NEXTBY JSR GETBYTE STA [ADR],Y INDEXED INDIREKT MIT PAGEOVERFLOW INY Y := Y+1 TYA STA ANZEIG+3 "Show Y" CPY BCNT END OF RECORD ? BNE NEXTBY NO --> GET NEXT BYTE JMP START NEXT RECORD ; GETBYTE JSR GETCH GET CHARAKTER BBR6 BUF,SKIP1 BIT 6=0 => CHAR.='0-9' CLC BIT 6=1 => CHAR.='A-F' (9 ADDIEREN) ADC #9 'A-F' IN HEX UMWANDELN SKIP1 STA ANZEIG+2 "Show High Nibble" ASL A 1.CHAR = HIGHER NIBBLE ASL A ASL A ASL A STA BUF+1 JSR GETCH 2.CHAR = LOWER NIBBLE BBR6 BUF,SKIP2 BIT 6=0 => CHAR.='0-9' CLC BIT 6=1 => CHAR.='A-F' ADC #9 'A-F' --> HEX SKIP2 STA ANZEIG+1 "Show Low Nibble" AND #0F UPPER NIBBLE WEGSCHNEIDEN ORA BUF+1 OR HIGHER NIBBLE LDX #01 RTS GETCH BBR0 SCSR,GETCH STATUSREGISTER PRUEFEN, RCVR DATA REG FULL LDA SCDR DATEN HOLEN AND #7F BIT 7=0 SETZEN STA BUF STA ANZEIG "show ASCII" RTS ; AUFFUELLEN ERPOM MIT NOP BIS 2K VOLL MARK + MARK - 0FFFA-$ FUELLEN BIS ZU DEN VEKTOREN (FUER EPROM) ; VEKTOREN DEFINIEREN ; ADDR NMIO ADDR RESO ADDR IRQO END