home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / SYS-AXYC.ARC / SYSAXYC.A next >
Encoding:
Text File  |  2019-04-13  |  1.9 KB  |  91 lines

  1. ;---------------------------------------
  2. ; SYSAXYC.A
  3. ;
  4. ;-MODIFICATION TO ORIGINAL ├ ╨OWER SYS()
  5. ; TO ALLOW SETTING AND READING THE
  6. ; CARRY FLAG
  7. ;
  8. ; SYSAXYC(ADDR,A,X,Y,C);
  9. ; UNSIGNED ADDR;
  10. ; CHAR *A,*X,*Y,*C;
  11. ;
  12. ;-PARAMETERS ARE IDENTICAL TO THE
  13. ; ORIGINAL SYS() WITH THE ADDITION
  14. ; OF ACCEPTING A POINTER TO A
  15. ; CHAR VARIABLE WHICH IS PASSED
  16. ; TO SET OR READ THE CARRY FLAG
  17. ;
  18. ; MAR88 ═IKE ╔NGRASSIA
  19. ;---------------------------------------
  20.  .DEF SYSAXYC
  21.  .REF C$FUNCTΣINIT
  22. ;
  23. C$PARMSIZE   = $00FB
  24. C$LOCAL      = $002B
  25. C$PARMS      = $033C
  26. ;
  27. SYSAXYC
  28.  JSR C$FUNCTΣINIT    ;POP # FROM STACK...
  29.  STX C$LOCAL+32      ;...AND CACHE IT
  30. ;
  31.  LDA C$PARMS,╪       ;ADDRESS0
  32.  STA IMPURE+1
  33.  INX             
  34.  LDA C$PARMS,╪       ;ADDRESS1
  35.  STA IMPURE+2
  36.  INX 
  37.  LDA C$PARMS,╪       ;&AREG<
  38.  STA C$LOCAL+33
  39.  INX 
  40.  LDA C$PARMS,╪       ;&AREG>
  41.  STA C$LOCAL+34
  42.  INX 
  43.  LDA C$PARMS,╪       ;&XREG< 
  44.  STA C$LOCAL+35
  45.  INX 
  46.  LDA C$PARMS,╪       ;&XREG>
  47.  STA C$LOCAL+36
  48.  INX 
  49.  LDA C$PARMS,╪       ;&YREG<
  50.  STA C$LOCAL+37
  51.  INX 
  52.  LDA C$PARMS,╪       ;&YREG>
  53.  STA C$LOCAL+38
  54.  INX
  55.  LDA C$PARMS,╪       ;CARRY FLAG<  880224
  56.  STA C$LOCAL+39      ;             880224
  57. ;
  58.  LDY #$00
  59.  LDA (C$LOCAL+33),┘  ;FETCH A
  60.  PHA                 ;PUSH ON STACK
  61.  LDA (C$LOCAL+35),┘  ;FETCH X
  62.  TAX                
  63.  LDA (C$LOCAL+37),┘  ;FETCH Y
  64.  TAY 
  65.  LDA C$LOCAL+39      ;FETCH CARRY    880224
  66.  AND #$01            ;AND ONLY CARRY 880224
  67.  PHA                 ;               880224   
  68.  PLP                 ;               880224
  69.  PLA                 ;RETRIEVE A FROM STACK
  70. ;
  71. IMPURE
  72.  JSR $FFFF           ;ADDRESS FIELD IS CHANGED ABOVE
  73.  PHA                 ;SAVE A ON STACK
  74.  TYA                 ;
  75.  LDY #$00
  76.  STA (C$LOCAL+37),┘  ;RETURN Y
  77.  TXA 
  78.  STA (C$LOCAL+35),┘  ;RETURN X
  79.  PLA                 ;RETRIEVE A FROM STACK
  80.  STA (C$LOCAL+33),┘  ;RETURN A
  81.  LDA #$00             
  82.  BCC *+4
  83.  LDA #$01
  84.  LDX C$LOCAL+32      ;RETURN CARRY FLAG ON PARAMETER STACK...
  85.  STA C$PARMS,╪
  86.  LDA #$00            ;...AS INTEGER 0000 OR 0001
  87.  INX 
  88.  STA C$PARMS,╪
  89.  RTS 
  90.  
  91.