From 6eab68f92ea46a1093bfcad55e81713547e4f493 Mon Sep 17 00:00:00 2001 From: Kat Date: Sun, 1 Sep 2019 20:11:51 -0400 Subject: [PATCH] various --- servicerequest.asm | 19 ++++++++++++++----- toast.asm | 15 +++++++++++++++ 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/servicerequest.asm b/servicerequest.asm index 0e0b4cc..ae36296 100644 --- a/servicerequest.asm +++ b/servicerequest.asm @@ -28,16 +28,25 @@ !TX_SEQUENCE = "$7EF4A0" ;-------------------------------------------------------------------------------- PollService: - LDA !RX_BUFFER : BNE + : RTL : + ; return if command is 0 + LDA !RX_STATUS : BEQ + : SEC : RTL : + ; return fail if we don't have the lock LDA #$01 : STA !RX_STATUS ; mark busy LDA !RX_BUFFER+1 : STA !RX_SEQUENCE ; mark this as handled LDA !RX_BUFFER+2 : STA !RX_SEQUENCE+1 - ; whatever - LDA #$00 : STA !RX_STATUS ; mark ready + LDA !RX_BUFFER : CMP.b #03 : BNE + + LDA !RX_BUFFER + 8 : TAX + LDA !RX_BUFFER + 9 : STA $7E012E, X ; set sound effect, could possibly make this STA not-long + REP #$30 ; set 16-bit accumulator and index registers + LDA !RX_BUFFER + 10 : TAX + LDA !RX_BUFFER + 12 + JSL.L DoToast + SEP #$30 ; set 8-bit accumulator and index registers + + + LDA #$00 : STA !RX_STATUS ; release lock + CLC ; mark request as successful RTL ;-------------------------------------------------------------------------------- macro ServiceRequest(type) - LDA !TX_STATUS : BEQ + : SEC : RTL : + ; return fail if status is anything but idle + LDA !TX_STATUS : BEQ + : SEC : RTL : + ; return fail if we don't have the lock LDA #$01 : STA !TX_STATUS ; mark busy LDA $7B : STA !TX_BUFFER+1 ; world LDA $1B : STA !TX_BUFFER+2 ; indoor/outdoor @@ -45,7 +54,7 @@ macro ServiceRequest(type) LDA $A1 : STA !TX_BUFFER+4 ; roomid high LDA $76 : STA !TX_BUFFER+5 ; object index (type 2 only) LDA : STA !TX_BUFFER ; item get - LDA #$02 : STA !TX_STATUS ; mark ready for tx + LDA #$00 : STA !TX_STATUS ; release lock CLC ; mark request as successful RTL endmacro diff --git a/toast.asm b/toast.asm index e69de29..8321829 100644 --- a/toast.asm +++ b/toast.asm @@ -0,0 +1,15 @@ +!TOAST_BUFFER = "$7F5400" ; for now +!TOAST_BUFFER_LOW = "$5400" ; for now +! +;-------------------------------------------------------------------------------- +; DoToast: +; in: A(w) - VRAM Destination +; in: X(w) - Length in Tiles +;-------------------------------------------------------------------------------- +DoToast: + PHY : PHP + LDY.w !TOAST_BUFFER_LOW + JSL.l WriteVRAMBlock + PLP : PLY +RTL +;-------------------------------------------------------------------------------- \ No newline at end of file