91 lines
2.7 KiB
NASM
91 lines
2.7 KiB
NASM
|
; ====================================================================
|
|||
|
; DR 6502 AER 201S Engineering Design 6502 Execution Simulator
|
|||
|
; ====================================================================
|
|||
|
;
|
|||
|
; Supplementary Notes By: M.J.Malone
|
|||
|
;
|
|||
|
;
|
|||
|
; Project Board Test Program
|
|||
|
; ==========================
|
|||
|
; This program sets Port A to input and Port B to output on both VIAs.
|
|||
|
; The program reads from Port A and writes to Port B making the computer
|
|||
|
; act as a giant wire. If you connect Port A, bit 0 to ground, bit 0 of
|
|||
|
; Port B will go to ground. If you connect bit 0 of Port A to 5 volts or do
|
|||
|
; not connect it to anything then Port B bit 0 will be 5 volts. Note that if
|
|||
|
; an input port (Port A in this case) is not connected to anything then it
|
|||
|
; will default to being 5 volts because of an internal pull up resistor in
|
|||
|
; the VIA.
|
|||
|
;
|
|||
|
; Note that the data read from Port A is written to memory and read back
|
|||
|
; to test the RAM as well.
|
|||
|
;
|
|||
|
; If a board completes this test then the following components are known to
|
|||
|
; work for the following reasons.
|
|||
|
; Proven
|
|||
|
; Component: Reason:
|
|||
|
; 6502 It could not be running the code if it were not working
|
|||
|
; 6522s The ports would not read or write correctly otherwise
|
|||
|
; EPROM If the program is in EPROM and is running then the EPROM is OK
|
|||
|
; RAM Because the data read on Port A is reflected correctly on B
|
|||
|
; 74HC74 Necessary to the system clock and therefore functioning
|
|||
|
; 74HC139 Necessary to the address select of VIA, EPROM and RAM
|
|||
|
; 74xx04 Necessary to the clock, R/W and address select functions
|
|||
|
; Reset The system must be resetting properly if the program runs.
|
|||
|
;
|
|||
|
; If the test fails then the above can be used in reverse for troubleshooting.
|
|||
|
;
|
|||
|
.ORG $E000
|
|||
|
SEI ; INITIALIZING THE STACK POINTER
|
|||
|
LDX #$FF
|
|||
|
TXS
|
|||
|
;
|
|||
|
LDX #$00 ; Initial delay to allow Spurious Resets to
|
|||
|
LDY #$00 ; subside.
|
|||
|
Delay DEX
|
|||
|
BNE Delay
|
|||
|
DEY
|
|||
|
BNE Delay
|
|||
|
;
|
|||
|
PORTA1 = $A001
|
|||
|
PORTB1 = $A000
|
|||
|
DDRA1 = $A003
|
|||
|
DDRB1 = $A002
|
|||
|
;
|
|||
|
PORTA2 = $8001
|
|||
|
PORTB2 = $8000
|
|||
|
DDRA2 = $8003
|
|||
|
DDRB2 = $8002
|
|||
|
;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
page 2
|
|||
|
|
|||
|
lda #%11111111 ; Port Bs to outputs
|
|||
|
sta DDRB1
|
|||
|
sta DDRB2
|
|||
|
lda #%00000000 ; Port As to inputs
|
|||
|
sta DDRA1
|
|||
|
sta DDRA2
|
|||
|
Top lda PORTA1 ; VIA 1: Port A ==> RAM ==> Port B
|
|||
|
sta $ab
|
|||
|
lda $ab
|
|||
|
sta PORTB1
|
|||
|
;
|
|||
|
lda PORTA2 ; VIA 2: Port A ==> RAM ==> Port B
|
|||
|
sta $ae
|
|||
|
lda $ae
|
|||
|
sta PORTB2
|
|||
|
;
|
|||
|
jmp Top
|
|||
|
;
|
|||
|
.ORG $FFFC
|
|||
|
.WORD $E000
|
|||
|
.END
|
|||
|
|