First Commit
This commit is contained in:
116
externals/teakra/hwtest/dspapbptester/firm/source
vendored
Normal file
116
externals/teakra/hwtest/dspapbptester/firm/source
vendored
Normal file
@ -0,0 +1,116 @@
|
||||
segment p 0000
|
||||
br 0x0000$0800 always // reset vector
|
||||
reti always
|
||||
data 0000
|
||||
reti always
|
||||
data 0000
|
||||
br 0x0000$5000 always // int0
|
||||
data 0000
|
||||
data 0000
|
||||
data 0000
|
||||
data 0000
|
||||
data 0000
|
||||
data 0000
|
||||
reti always // int1
|
||||
data 0000
|
||||
data 0000
|
||||
data 0000
|
||||
data 0000
|
||||
data 0000
|
||||
data 0000
|
||||
data 0000
|
||||
reti always // int2
|
||||
|
||||
segment p 0800 // init
|
||||
mov 0x$f000 sp // set stack pointer
|
||||
mov 0x$0180 mod3 // enable interrupt
|
||||
load 0x0082u8 page // configure ICU
|
||||
mov 0x$4000 r0
|
||||
mov r0 [page:0x000eu8]
|
||||
mov r0 [page:0x0010u8]
|
||||
mov r0 [page:0x0006u8] // enable apbp as int0
|
||||
br 0x0000$1000 always
|
||||
|
||||
segment p 1000 // Main loop
|
||||
load 0x0000u8 page
|
||||
|
||||
mov 0x$80CC r0 // transfer APBP register
|
||||
mov [r0++] r1
|
||||
mov r1 [page:0x0005u8]
|
||||
modr [r0++]
|
||||
mov [r0++] r1
|
||||
mov r1 [page:0x0006u8]
|
||||
modr [r0++]
|
||||
mov [r0++] r1
|
||||
mov r1 [page:0x0007u8]
|
||||
modr [r0++]
|
||||
mov [r0++] r1
|
||||
mov r1 [page:0x0008u8]
|
||||
modr [r0++]
|
||||
mov [r0++] r1
|
||||
mov r1 [page:0x0009u8]
|
||||
modr [r0++]
|
||||
mov [r0++] r1
|
||||
mov r1 [page:0x000au8]
|
||||
modr [r0++]
|
||||
mov [r0++] r1
|
||||
mov r1 [page:0x000bu8]
|
||||
modr [r0++]
|
||||
|
||||
|
||||
mov [page:0x0000u8] b0l // get signal
|
||||
br 0x0000$1000 eq // loop back if no signal
|
||||
|
||||
mov [page:0x0001u8] b0l // get command type
|
||||
|
||||
cmpv 0x$0000 b0l
|
||||
br 0x0000$2000 eq
|
||||
|
||||
cmpv 0x$0001 b0l
|
||||
br 0x0000$3000 eq
|
||||
|
||||
br 0x0000$4000 always
|
||||
|
||||
segment p 2000 // read
|
||||
mov [page:0x0002u8] r0
|
||||
mov [r0] r1
|
||||
mov r1 [page:0x0003u8]
|
||||
br 0x0000$4000 always
|
||||
|
||||
segment p 3000 // write
|
||||
mov [page:0x0002u8] r0
|
||||
mov [page:0x0003u8] r1
|
||||
mov r1 [r0]
|
||||
br 0x0000$4000 always
|
||||
|
||||
segment p 4000 // end
|
||||
clr b0 always
|
||||
mov b0l [page:0x0000u8] // clear signal
|
||||
br 0x0000$1000 always
|
||||
|
||||
segment p 5000 // interrupt handler
|
||||
mov 0x$4000 r5
|
||||
mov 0x$8202 r4
|
||||
mov r5 [r4] // ack
|
||||
mov 0x$0004 r4
|
||||
mov [r4] r5
|
||||
modr [r5++]
|
||||
mov r5 [r4]
|
||||
reti always
|
||||
|
||||
|
||||
|
||||
|
||||
segment d 0000 // signal area
|
||||
data 0000 // 0, Start signal
|
||||
data 0000 // 1, Operation type
|
||||
data 0000 // 2, Address
|
||||
data 0000 // 3, Data
|
||||
data 0000 // 4, interrupt counter
|
||||
data 0000 // 5, 80CC
|
||||
data 0000 // 6, 80CE
|
||||
data 0000 // 7, 80D0
|
||||
data 0000 // 8, 80D2
|
||||
data 0000 // 9, 80D4
|
||||
data 0000 // A, 80D6
|
||||
data 0000 // B, 80D8
|
||||
Reference in New Issue
Block a user