From 4443fccd421417e509c2d95246fc85f89f35627c Mon Sep 17 00:00:00 2001 From: Tony Jewell Date: Sat, 21 May 2016 23:17:17 +0200 Subject: [PATCH] dragon-nx32: Copy dw_transaction() from coco3 --- Kernel/platform-dragon-nx32/drivewire.s | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/Kernel/platform-dragon-nx32/drivewire.s b/Kernel/platform-dragon-nx32/drivewire.s index 7e58f9b7..3b90bb84 100644 --- a/Kernel/platform-dragon-nx32/drivewire.s +++ b/Kernel/platform-dragon-nx32/drivewire.s @@ -9,6 +9,7 @@ ; exported .globl _dw_operation .globl _dw_reset + .globl _dw_transaction .globl _dw_lpr .globl _dw_lpr_close @@ -21,6 +22,25 @@ .area .common +_dw_transaction: + pshs cc,y ; save caller + orcc #0x50 ; stop interrupts + ldy 5,s ; Y = number of bytes to send + beq out@ ; no byte to write - leave + jsr DWWrite ; send to DW + ldx 7,s ; X is receive buffer + ldy 9,s ; Y = number of bytes to receive + beq out@ ; no bytes to send - leave + jsr DWRead ; read in that many bytes + bcs frame@ ; C set on framing error + bne part@ ; Z zet on all bytes received +out@ ldx #0 ; no error + puls cc,y,pc ; return +frame@ ldx #-1 ; frame error + puls cc,y,pc ; return +part@ ldx #-2 ; not all bytes received! + puls cc,y,pc ; return + _dw_reset: ; maybe reinitalise PIA here? ; and send DW_INIT request to server? -- 2.34.1