×
Create a new article
Write your page title here:
We currently have 3,185 articles on s23. Type your article name above or create one of the articles listed here!



    s23
    3,185Articles

    PEEK TYPE: Integer Function FORMAT: PEEK(<numeric>)

    Action: Returns an integer in the range of 0 to 255, which is read from a memory location. The <numeric> expression is a memory location which must be in the range of 0 to 65535. If it isn't then the BASIC error message ?ILLEGAL QUANTITY occurs. EXAMPLES of PEEK Function:

      10 PRINT PEEK(53280) AND 15   (Returns value of screen border color)
    
      5 A%=PEEK(45)+PEEK(46)*256    (Returns address of BASIC variable table)
    

    POKE TYPE: Statement FORMAT: POKE <location>,<value>

    Action: The POKE statement is used to write a one-byte (8-bits) binary value into a given memory location or input/output register. The <location> is an arithmetic expression which must equal a value in the range of 0 to 65535. The <value> is an expression which can be reduced to an integer value of 0 to 255. If either value is out of its respective range, the BASIC error message ?ILLEGAL QUANTITY occurs.

    The POKE statement and PEEK statement (which is a built-in function that looks at a memory location) are useful for data storage, controlling graphics displays or sound generation, loading assembly language sub- routines, and passing arguments and results to and from assembly language subroutines. In addition, Operating System parameters can be examined using PEEK statements or changed and manipulated using POKE statements. A complete memory map of useful locations is given in Appendix G.

    http://www.devili.iki.fi/Computers/Commodore/C64/Programmers_Reference/Chapter_2/page_069.html


    Here is an example of a program using multi-color programmable characters:

    10 REM * EXAMPLE 2 *
    20 REM CREATING MULTI COLOR PROGRAMMABLE CHARACTERS
    31 POKE 56334,PEEK(56334)AND254:POKE1,PEEK(1)AND251
    35 FORI=0TO63:REM CHARACTER RANGE TO BE COPIED FROM ROM
    36 FORJ=0TO7:REM COPY ALL 8 BYTES PER CHARACTER
    37 POKE 12288+I*8+J,PEEK(53248+I*8+J):REM COPY A BYTE
    38 NEXT J,I:REM GOTO NEXT BYTE OR CHARACTER
    39 POKE 1,PEEK(1)OR4:POKE 56334,PEEK(56334)OR1:REM TURN ON I/O AND KB
    40 POKE 53272,(PEEK(53272)AND240)+12:REM SET CHAR POINTER TO MEM. 12288
    50 POKE 53270,PEEK(53270)OR16
    51 POKE 53281,0:REM SET BACKGROUND COLOR #0 TO BLACK
    52 POKE 53282,2:REM SET BACKGROUND COLOR #1 TO RED
    53 POKE 53283,7:REM SET BACKGROUND COLOR #2 TO YELLOW
    60 FOR CHAR=60TO63:REM PROGRAM CHARACTERS 60 THRU 63
    80 FOR BYTE=0TO7:REM DO ALL 8 BYTES OF A CHARACTER
    100 READ NUMBER:REM READ 1/8TH OF THE CHARACTER DATA
    120 POKE 12288+(8*CHAR)+BYTE,NUMBER:REM STORE THE DATA IN MEMORY
    140 NEXT BYTE,CHAR
    150 PRINT"{CLEAR}"TAB(255)CHR$(60)CHR$(61)TAB(55)CHR$(62)CHR$(63)
    160 REM LINE 150 PUTS THE NEWLY DEFINED CHARACTERS ON THE SCREEN
    170 GET A$:REM WAIT FOR USER TO PRESS A KEY
    180 IF A$=""THEN170:REM IF NO KEYS WERE PRESSED, TRY AGAIN
    190 POKE53272,21:POKE53270,PEEK(53270)AND239:REM RETURN TO NORMAL CHARS
    200 DATA129,37,21,29,93,85,85,85: REM DATA FOR CHARACTER 60
    210 DATA66,72,84,116,117,85,85,85: REM DATA FOR CHARACTER 61
    220 DATA87,87,85,21,8,8,40,0: REM DATA FOR CHARACTER 62
    230 DATA213,213,85,84,32,32,40,0: REM DATA FOR CHARACTER 63
    240 END
    
    Cookies help us deliver our services. By using our services, you agree to our use of cookies.
    Cookies help us deliver our services. By using our services, you agree to our use of cookies.