diff --git a/libsrc/apple2/mou/a2.stdmou.s b/libsrc/apple2/mou/a2.stdmou.s index c54c09d34..9b84c2f53 100644 --- a/libsrc/apple2/mou/a2.stdmou.s +++ b/libsrc/apple2/mou/a2.stdmou.s @@ -155,6 +155,7 @@ next: inc ptr1+1 ; Disable interrupts now because setting the slot number makes ; the IRQ handler (maybe called due to some non-mouse IRQ) try ; calling the firmware which isn't correctly set up yet + php sei ; Convert to and save slot number @@ -211,7 +212,7 @@ next: inc ptr1+1 common: jsr firmware ; Enable interrupts and return success - cli + plp lda #MOUSE_ERR_OK rts @@ -220,6 +221,7 @@ common: jsr firmware ; No return code required (the driver is removed from memory on return). UNINSTALL: ; Hide cursor + php sei jsr CHIDE @@ -249,7 +251,8 @@ SETBOX: ; Apple II Mouse TechNote #1, Interrupt Environment with the Mouse: ; "Disable interrupts before placing position information in the ; screen holes." -: sei +: php + sei ; Set low clamp lda (ptr1),y @@ -298,6 +301,7 @@ GETBOX: ; the screen). No return code required. MOVE: ldy slot + php sei ; Set y @@ -328,9 +332,10 @@ MOVE: ; no special action is required besides hiding the mouse cursor. ; No return code required. HIDE: + php sei jsr CHIDE - cli + plp rts ; SHOW: Is called to show the mouse cursor. The mouse kernel manages a @@ -339,9 +344,10 @@ HIDE: ; no special action is required besides enabling the mouse cursor. ; No return code required. SHOW: + php sei jsr CSHOW - cli + plp rts ; BUTTONS: Return the button mask in A/X. @@ -360,12 +366,13 @@ POS: ; struct pointed to by ptr1. No return code required. INFO: ldy #.sizeof(MOUSE_INFO)-1 -copy: sei +copy: php + sei : lda info,y sta (ptr1),y dey bpl :- - cli + plp rts ; IOCTL: Driver defined entry point. The wrapper will pass a pointer to ioctl diff --git a/libsrc/apple2/ser/a2.gs.s b/libsrc/apple2/ser/a2.gs.s index e35c6156b..ea3e54cc1 100644 --- a/libsrc/apple2/ser/a2.gs.s +++ b/libsrc/apple2/ser/a2.gs.s @@ -304,8 +304,9 @@ IIgs: ldx Channel - ; Deactivate interrupts - sei + php ; Deactivate interrupts + sei ; if enabled + ldy #WR_MASTER_IRQ_RST lda #MASTER_IRQ_SHUTDOWN jsr writeSCCReg @@ -334,7 +335,7 @@ IIgs: ldx #$00 stx Opened ; Mark port as closed - cli + plp ; Reenable interrupts if needed : txa ; Promote char return value rts @@ -352,7 +353,8 @@ getClockSource: ; Must return an SER_ERR_xx code in a/x. SER_OPEN: - sei + php ; Deactivate interrupts + sei ; if enabled ; Check if the handshake setting is valid ldy #SER_PARAMS::HANDSHAKE ; Handshake @@ -497,9 +499,9 @@ BaudOK: lda #SER_ERR_OK SetupOut: + plp ; Reenable interrupts if needed ldx #$00 ; Promote char return value sty Opened - cli rts ;---------------------------------------------------------------------------- diff --git a/libsrc/apple2/waitvsync.s b/libsrc/apple2/waitvsync.s index 1697622de..486b93a53 100644 --- a/libsrc/apple2/waitvsync.s +++ b/libsrc/apple2/waitvsync.s @@ -29,7 +29,8 @@ iigs: bit RDVBLBAR rts ; Apple IIc TechNote #9, Detecting VBL -iic: sei +iic: php + sei sta IOUDISOFF lda RDVBLMSK bit ENVBL @@ -40,7 +41,7 @@ iic: sei bcs :+ ; VBL interrupts were already enabled bit DISVBL : sta IOUDISON ; IIc Tech Ref Man: The firmware normally leaves IOUDIS on. - cli + plp rts .endif ; __APPLE2ENH__