; ; ; 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