home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
8bitfiles.net/archives
/
archives.tar
/
archives
/
canada-remote-systems
/
cpower
/
peekpoke.asm
< prev
next >
Wrap
Assembly Source File
|
2019-04-13
|
4KB
|
129 lines
;
;
; PEEKPOKE128.A
;
; A FIX FOR THE ╨OWER ├ PEEK.OBJ FILE
; THIS FIX HAS TO DO WITH THE RELOCATED ZERO PAGE ON THE 128
; THE ORIGINAL VERSION ON THE LIBRARY DISKS FAILED TO RESTORE
; IT CORRECTLY ON EXIT. THIS LED TO UNPREDICTABLE RESULTS WHEN USED
; THE FIX WAS SIMPLE WHEN I FOUND IT JUST A LDX #7 ┬┼╞╧╥┼ LDA #13
; JSR C$MEM.
;
; C$MEM IS A ROUTINE PLACED AT $0135 BY THE C$START MODULE ON ENTERY
; TO A PROGRAM AND HAS TWO RELATED ROUTINES AT $0124 AND $0148 C$MEM
; IS USED TO ALTER PAGE-ZERO POINTERS AND $0124(C$JSRñFAR) IS A
; DISPATCH POINT FOR ╙┘╙() ╨┼┼╦() ╨╧╦┼() AND C$KERNOUT (IN KERNAL.OBJ)
; AND BY STUDING THIS AND THE ABOVE IT CAN BEE USED BY CUSTOM ML/├
; FUNCTIONS.
;
; ─ENNY FIGUERRES 12/22/87 ╙TOCKTON ├A 08:44:00 ╨M
; ═ERRY ╪-═AS ╚APPY ╬EW ┘EAR!
;
;
;--------------------
C$PARMSIZE = $00FB
C$PARAMPTR = $0086
C$LOCAL = $00A0
C$PARMS = $0400 ;----- ╬╧╘┼ WAS $033├ ON ├=64
C$JSRñFAR = $0124 ; BANK TO BANK DISPATCH
C$MEM = $0135 ; ══╒ ACCESS ╪ = ══╒ ╥EG# (STA ══╒ñ╥EGS,X)
╙╘┴╓┼├ = $02B9 ;ññññññFOR STAñFAR
┴ñ╥EG = $0006
╪ñ╥EG = $0007
┘ñ╥EG = $0008
┬ANK = $0002
╙ñ╥EG = $0005
╨├ñ╚IGH = $0003
╨├ñ╠OW = $0004
══╒ñ╥EGS = $D500
══╒ñ├╥ = $FF00
;
;
;
.REF C$FUNCTñINIT
.DEF PEEK, POKE
; C = ╨┼┼╦(BANK,ADDRR)
PEEK JSR C$FUNCTñINIT ; PICK UP ┴RGñ╙TACK ╨TR
STX C$LOCAL
TXA
PHA ; STASH PTR ON STACK
LDX #$07 ; ══╒ ╨AGE ┌ERO ╨TR ╥EGISTER -----FIX
LDA #$00 ; ══╒ ╨TR ╓ALUE
JSR C$MEM ; SWAP EM
PLA ; ╨╧╨ ┴RGñ╨TR
TAX ; MOVE TO ╪
LDA C$PARMS+2,╪ ; TARGET ADDRESS LOWBYTE
STA C$PARMSIZE+1
LDA C$PARMS+3,╪ ; HIBYTE
STA C$PARMSIZE+2
LDA #$0F ; SET BANK15
STA ┬ANK
LDA #$FF
STA ╨├ñ╚IGH
LDA #$74
STA ╨├ñ╠OW ; CALL $╞╞74 - ╠─┴ñ╞┴╥(C$PARAMSIZE),Y
PHP
PLA
STA ╙ñ╥EG
LDA #$FC
STA ┴ñ╥EG
LDA C$PARMS,╪ ; GET BANK TO LOAD BYTE FROM
STA ╪ñ╥EG
LDA #$00
STA ┘ñ╥EG ; SET ┘ TO ┌┼╥╧ SEE ABOVE ^
JSR C$JSRñFAR ; CALL ╩╙╥ñ╞┴╥ ╔╬─ñ╞┼╘ ( ^ )
LDA ┴ñ╥EG ; GET RETURNED VALUE
PHA ; ╨╒╙╚ ON STACK
LDX #$07 ; ╥┼╙╘╧╥┼ ┌ERO ╨AGE -------FIX
LDA #$13 ; FOR ╨OWER ├
JSR C$MEM ; SWAP
PLA ; ╨╧╨ VALUE
LDX C$LOCAL ; GET ╥┼╘╒╥╬ PARAMITER
STA C$PARMS,╪ ;
LDA #$00 ; ALWAYS SET HIBYTE 0
STA C$PARMS+1,╪
RTS ; RETURN
;
; ╬╧╘┼: RETURN VALUE IS PLACED AT SAME LOCATION AS FUNCTION
; ARGUMENT#1. (?)
;
;
;
;
; ╨╧╦┼(BANK,ADDRESS,VALUE)
POKE JSR C$FUNCTñINIT ; SEE COMMANTS ABOVE FOR DETAILS
STX C$LOCAL
TXA
PHA
LDX #$07 ;-----FIX
LDA #$00
JSR C$MEM
PLA
TAX
LDA C$PARMS+2,╪
STA C$PARMSIZE+1
LDA C$PARMS+3,╪
STA C$PARMSIZE+2
LDA #$FC
STA ╙╘┴╓┼├
LDA #$0F
STA ┬ANK
LDA #$FF
STA ╨├ñ╚IGH
LDA #$77
STA ╨├ñ╠OW
PHP
PLA
STA ╙ñ╥EG
LDA C$PARMS+4,╪
STA ┴ñ╥EG
LDA C$PARMS,╪
STA ╪ñ╥EG
LDA #$00
STA ┘ñ╥EG
JSR C$JSRñFAR
LDX #$07 ;---------FIX
LDA #$13
JMP C$MEM