Update servicerequest.asm
This commit is contained in:
@@ -37,8 +37,10 @@
|
|||||||
!SCM_SPAWN = "#$0C"
|
!SCM_SPAWN = "#$0C"
|
||||||
!SCM_PAUSE = "#$0D"
|
!SCM_PAUSE = "#$0D"
|
||||||
|
|
||||||
!SCM_STALL = "#$7E"
|
!SCM_STALL = "#$70"
|
||||||
!SCM_RESUME = "#$7F"
|
!SCM_RESUME = "#$71"
|
||||||
|
|
||||||
|
!SCM_VERSION = "#$80"
|
||||||
; ;--------------------------------------------------------------------------------
|
; ;--------------------------------------------------------------------------------
|
||||||
!RX_BUFFER = "$7F5300"
|
!RX_BUFFER = "$7F5300"
|
||||||
!RX_STATUS = "$7F537F"
|
!RX_STATUS = "$7F537F"
|
||||||
@@ -47,33 +49,17 @@
|
|||||||
!TX_STATUS = "$7F53FF"
|
!TX_STATUS = "$7F53FF"
|
||||||
!TX_SEQUENCE = "$7EF4A0"
|
!TX_SEQUENCE = "$7EF4A0"
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
PollService:
|
macro ServiceRequestVersion()
|
||||||
PHP
|
LDA !TX_STATUS : BEQ + : SEC : RTL : + ; return fail if we don't have the lock
|
||||||
SEP #$20 ; set 8-bit accumulator
|
LDA.b #$01 : STA !TX_BUFFER+8 ; version
|
||||||
LDA !RX_STATUS : DEC : BEQ + : PLP : SEC : RTL : + ; return fail if there's nothing to read
|
LDA.b #$00 : STA !TX_BUFFER+9
|
||||||
LDA #$FF : STA !RX_STATUS ; stop calls from recursing in
|
STA !TX_BUFFER+10
|
||||||
LDA !RX_BUFFER : CMP.b !SCM_GIVE : BNE +
|
STA !TX_BUFFER+11
|
||||||
PHY : LDA.l !RX_BUFFER+8 : TAY
|
LDA.b !SCM_VERSION : STA !TX_BUFFER
|
||||||
LDA.l !RX_BUFFER+9 : BNE ++
|
LDA #$01 : STA !TX_STATUS ; mark ready for reading
|
||||||
JSL.l Link_ReceiveItem ; do something else
|
|
||||||
PLY : BRA .done
|
|
||||||
++
|
|
||||||
JSL.l Link_ReceiveItem
|
|
||||||
PLY : BRA .done
|
|
||||||
+ : CMP.b !SCM_PROMPT : BNE +
|
|
||||||
LDA.l !RX_BUFFER+8 : TAX
|
|
||||||
LDA.l !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
|
|
||||||
+
|
|
||||||
.done
|
|
||||||
LDA #$00 : STA !RX_STATUS ; release lock
|
|
||||||
PLP
|
|
||||||
CLC ; mark request as successful
|
CLC ; mark request as successful
|
||||||
RTL
|
RTL
|
||||||
|
endmacro
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
macro ServiceRequestChest(type)
|
macro ServiceRequestChest(type)
|
||||||
LDA !TX_STATUS : BEQ + : SEC : RTL : + ; return fail if we don't have the lock
|
LDA !TX_STATUS : BEQ + : SEC : RTL : + ; return fail if we don't have the lock
|
||||||
@@ -111,6 +97,36 @@ macro ServiceRequest(type,index)
|
|||||||
RTL
|
RTL
|
||||||
endmacro
|
endmacro
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
PollService:
|
||||||
|
PHP
|
||||||
|
SEP #$20 ; set 8-bit accumulator
|
||||||
|
LDA !RX_STATUS : DEC : BEQ + : PLP : SEC : RTL : + ; return fail if there's nothing to read
|
||||||
|
LDA #$FF : STA !RX_STATUS ; stop calls from recursing in
|
||||||
|
LDA !RX_BUFFER : CMP.b !SCM_GIVE : BNE + ; give item
|
||||||
|
PHY : LDA.l !RX_BUFFER+8 : TAY
|
||||||
|
LDA.l !RX_BUFFER+9 : BNE ++
|
||||||
|
JSL.l Link_ReceiveItem ; do something else
|
||||||
|
PLY : BRA .done
|
||||||
|
++
|
||||||
|
JSL.l Link_ReceiveItem
|
||||||
|
PLY : BRA .done
|
||||||
|
+ : CMP.b !SCM_PROMPT : BNE + ; item prompt
|
||||||
|
LDA.l !RX_BUFFER+8 : TAX
|
||||||
|
LDA.l !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
|
||||||
|
+ : CMP.b !SCM_VERSION : BNE + ; version
|
||||||
|
%ServiceRequestVersion()
|
||||||
|
+
|
||||||
|
.done
|
||||||
|
LDA #$00 : STA !RX_STATUS ; release lock
|
||||||
|
PLP
|
||||||
|
CLC ; mark request as successful
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
ItemVisualServiceRequest_F0:
|
ItemVisualServiceRequest_F0:
|
||||||
%ServiceRequest(!SCM_SEEN, #$F0)
|
%ServiceRequest(!SCM_SEEN, #$F0)
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user