6850 ACIA support
This commit is contained in:
		
							
								
								
									
										83
									
								
								6850.asm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								6850.asm
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,83 @@ | |||||||
|  | ; 6502 BIOS  | ||||||
|  | ; Based on original code by Daryl Rictor | ||||||
|  | ; Adapted to 6850 ACIA board for RC2014 | ||||||
|  | ; NOTE: The 6850 ACIA works with the 6502 card for simple Monitor functions | ||||||
|  | ; However, loading an Intel HEX file appears to overwhelm the ACIA. | ||||||
|  | ; | ||||||
|  | ; | ||||||
|  | ; ----------------- assembly instructions ----------------------------  | ||||||
|  | ; | ||||||
|  | ; this is a subroutine library only | ||||||
|  | ; it must be included in an executable source file | ||||||
|  | ; | ||||||
|  | ; | ||||||
|  | ;*** I/O Locations ******************************* | ||||||
|  | ; Define the i/o address of the UART chip | ||||||
|  | ;*** 6850 ACIA ************************ | ||||||
|  |  | ||||||
|  | uart_base       = $c080 | ||||||
|  | uart_reg0       = $c080 | ||||||
|  | uart_reg1       = $c081 | ||||||
|  | uart_xmit       = uart_reg1     ; Used by upload.asm | ||||||
|  |  | ||||||
|  | ; | ||||||
|  | ;*********************************************************************** | ||||||
|  | ; UART I/O Support Routines | ||||||
|  | ; We'll use Daryl's routine names for compatibility with his software/code | ||||||
|  | ; Otherwise, we'll use UART-agnostic nomemclature | ||||||
|  |  | ||||||
|  | ;--------------------------------------------------------------------- | ||||||
|  | ; | ||||||
|  |   | ||||||
|  | ACIA1_init | ||||||
|  | uart_init | ||||||
|  |                 lda     #$03    ; master reset | ||||||
|  |                 sta     uart_reg0 | ||||||
|  | 		; 0001 0110 | ||||||
|  | ;                lda     #$16    ; 28.8k baud, /64, 8+1, rts=0, no interrupts | ||||||
|  | 		; 0001 0101 | ||||||
|  |                 lda     #$15    ; 115200 baud, /16, 8+1, rts=0, no interrupts | ||||||
|  |  | ||||||
|  |                 sta     uart_reg0 | ||||||
|  |                 rts                     ; done | ||||||
|  |                  | ||||||
|  | ;--------------------------------------------------------------------- | ||||||
|  | ; Input char from UART (blocking) | ||||||
|  | ; Exit: character in A | ||||||
|  | ACIA1_Input | ||||||
|  | uart_input | ||||||
|  |                lda      uart_reg0           ; Serial port status              | ||||||
|  |                and      #$01               ; is recvr full | ||||||
|  |                beq      uart_input        ; no char to get | ||||||
|  |                lda      uart_reg1           ; get chr | ||||||
|  |                rts                      ; | ||||||
|  |  | ||||||
|  | ;--------------------------------------------------------------------- | ||||||
|  | ; Non-waiting get character routine  | ||||||
|  | ; Scan for input (no wait), C=1 char, C=0 no character | ||||||
|  | ACIA1_Scan | ||||||
|  | uart_scan | ||||||
|  |                 clc | ||||||
|  |                 lda   uart_reg0        ; Serial port status | ||||||
|  |                 and   #$01               ; mask rcvr full bit | ||||||
|  |                 beq   uart_scan2 | ||||||
|  |                 lda   uart_reg1           ; get chr | ||||||
|  |                 sec | ||||||
|  | uart_scan2     rts | ||||||
|  |  | ||||||
|  | ;--------------------------------------------------------------------- | ||||||
|  | ; output to OutPut Port | ||||||
|  | ; Entry: character in A | ||||||
|  | ; Exit: character in A | ||||||
|  | ACIA1_Output | ||||||
|  | uart_output    | ||||||
|  |                 pha                      ; save registers | ||||||
|  | uart_out1      | ||||||
|  |                 lda   uart_reg0           ; serial port status | ||||||
|  |                 and   #$02               ; is tx buffer empty | ||||||
|  |                 beq   uart_out1         ; no | ||||||
|  |                 pla                      ; get chr | ||||||
|  |                 sta   uart_reg1           ; put character to Port | ||||||
|  |                 rts                      ; done | ||||||
|  | ; | ||||||
|  | ;end of file | ||||||
		Reference in New Issue
	
	Block a user