home *** CD-ROM | disk | FTP | other *** search
- ;---------------------------------------
- ; SYSAXYC.A
- ;
- ;-MODIFICATION TO ORIGINAL ├ ╨OWER SYS()
- ; TO ALLOW SETTING AND READING THE
- ; CARRY FLAG
- ;
- ; SYSAXYC(ADDR,A,X,Y,C);
- ; UNSIGNED ADDR;
- ; CHAR *A,*X,*Y,*C;
- ;
- ;-PARAMETERS ARE IDENTICAL TO THE
- ; ORIGINAL SYS() WITH THE ADDITION
- ; OF ACCEPTING A POINTER TO A
- ; CHAR VARIABLE WHICH IS PASSED
- ; TO SET OR READ THE CARRY FLAG
- ;
- ; MAR88 ═IKE ╔NGRASSIA
- ;---------------------------------------
- .DEF SYSAXYC
- .REF C$FUNCTΣINIT
- ;
- C$PARMSIZE = $00FB
- C$LOCAL = $002B
- C$PARMS = $033C
- ;
- SYSAXYC
- JSR C$FUNCTΣINIT ;POP # FROM STACK...
- STX C$LOCAL+32 ;...AND CACHE IT
- ;
- LDA C$PARMS,╪ ;ADDRESS0
- STA IMPURE+1
- INX
- LDA C$PARMS,╪ ;ADDRESS1
- STA IMPURE+2
- INX
- LDA C$PARMS,╪ ;&AREG<
- STA C$LOCAL+33
- INX
- LDA C$PARMS,╪ ;&AREG>
- STA C$LOCAL+34
- INX
- LDA C$PARMS,╪ ;&XREG<
- STA C$LOCAL+35
- INX
- LDA C$PARMS,╪ ;&XREG>
- STA C$LOCAL+36
- INX
- LDA C$PARMS,╪ ;&YREG<
- STA C$LOCAL+37
- INX
- LDA C$PARMS,╪ ;&YREG>
- STA C$LOCAL+38
- INX
- LDA C$PARMS,╪ ;CARRY FLAG< 880224
- STA C$LOCAL+39 ; 880224
- ;
- LDY #$00
- LDA (C$LOCAL+33),┘ ;FETCH A
- PHA ;PUSH ON STACK
- LDA (C$LOCAL+35),┘ ;FETCH X
- TAX
- LDA (C$LOCAL+37),┘ ;FETCH Y
- TAY
- LDA C$LOCAL+39 ;FETCH CARRY 880224
- AND #$01 ;AND ONLY CARRY 880224
- PHA ; 880224
- PLP ; 880224
- PLA ;RETRIEVE A FROM STACK
- ;
- IMPURE
- JSR $FFFF ;ADDRESS FIELD IS CHANGED ABOVE
- PHA ;SAVE A ON STACK
- TYA ;
- LDY #$00
- STA (C$LOCAL+37),┘ ;RETURN Y
- TXA
- STA (C$LOCAL+35),┘ ;RETURN X
- PLA ;RETRIEVE A FROM STACK
- STA (C$LOCAL+33),┘ ;RETURN A
- LDA #$00
- BCC *+4
- LDA #$01
- LDX C$LOCAL+32 ;RETURN CARRY FLAG ON PARAMETER STACK...
- STA C$PARMS,╪
- LDA #$00 ;...AS INTEGER 0000 OR 0001
- INX
- STA C$PARMS,╪
- RTS
-
-