PEEK and POKE in line 100 of a Commodore Basic program on a CBM 3016
  1. Poker Virtual Background
  2. Poker Visual Basics
  1. Helping a friend with a homework assignment, I designed a Windows Forms Application, that evaluates a 5 card poker hand, from a 2 Dimensional Array. The user, from 10 drop down lists (5 Face Value Lists and 5 Suit Lists) should define the cards in his or her hand and click a button to tell.
  2. Poker is any of a number of card games in which players wager over which hand is best according to that specific game's rules in ways similar to these rankings.Often using a standard deck, poker games vary in deck configuration, the number of cards in play, the number dealt face up or face down, and the number shared by all players, but all have rules which involve one or more rounds of betting.

PEEK and POKE in line 100 of a Commodore Basic program on a CBM 3016 In computing, PEEK and POKE are commands used in some high-level programming languages for accessing the contents of a specific memory cell referenced by its memory address. PEEK gets the byte located at the specified memory address. This is the snippet Poker Game on FreeVBCode. The FreeVBCode site provides free Visual Basic code, examples, snippets, and articles on a variety of other topics as well.

In computing, PEEK and POKE are commands used in some high-level programming languages for accessing the contents of a specific memory cell referenced by its memory address. PEEK gets the byte located at the specified memory address.[1]POKE sets the memory byte at the specified address.[2] These commands originated with machine code monitors such as the DECsystem-10 monitor;[3] these commands are particularly associated with the BASIC programming language, though some other languages such as Pascal and COMAL also have these commands. These commands are comparable in their roles to pointers in the C language and some other programming languages.

One of the earliest references to these commands in BASIC, if not the earliest, is in Altair BASIC[4]. The PEEK and POKE commands were conceived in early personal computing systems to serve a variety of purposes, especially for modifying special memory-mappedhardware registers to control particular functions of the computer such as the input/output peripherals. Alternatively programmers might use these commands to copy software or even to circumvent the intent of a particular piece of software (e.g. manipulate a game program to allow the user to cheat). Today it is unusual to control computer memory at such a low level using a high-level language like BASIC. As such the notions of PEEK and POKE commands are generally seen as antiquated.

The terms peek and poke are sometimes used colloquially in computer programming to refer to memory access in general.

Visual

Statement syntax[edit]

The PEEK function and POKE commands are usually invoked as follows, either in direct mode (entered and executed at the BASIC prompt) or in indirect mode (as part of a program):

The address and value parameters may contain complex expressions, as long as the evaluated expressions correspond to valid memory addresses or values, respectively. A valid address in this context is an address within the computer's address space, while a valid value is (typically) an unsigned value between zero and the maximum unsigned number that the minimum addressable unit (memory cell) may hold.

Memory cells and hardware registers[edit]

The address locations that are POKEd or PEEKed at may refer either to ordinary memory cells or to memory-mappedhardware registers of I/O units or support chips such as sound chips and video graphics chips, or even to memory-mapped registers of the CPU itself (which makes software implementations of powerful machine code monitors and debugging/simulation tools possible). As an example of a POKE-driven support chip control scheme, the following POKE command is directed at a specific register of the Commodore 64's built-in VIC-II graphics chip, which will make the screen border turn black:

A similar example from the Atari 8-bit family tells the ANTIC display driver to turn all text upside-down:

The difference between machines, and the importance and utility of the hard-wired memory locations, meant that 'memory maps' of various machines were important documents. An example is Mapping the Atari, which starts at location zero and mapped out the entire 64 kB memory of the Atari 8-bit systems location by location.

PEEK and POKE in other BASICs[edit]

North Star Computers, a vendor from the early 1980s, offered their own dialect of BASIC with their NSDOS operating system. Concerned about possible legal issues, they renamed the commands EXAM and FILL.[citation needed] There were also BASIC dialects that used the reserved words MEMW and MEMR instead.

BBC BASIC, used on the BBC Micro and other Acorn Computers machines, did not feature the keywords PEEK and POKE but used the question mark symbol (?), known as query in BBC BASIC, for both operations, as a function and command. For example:

32-bit values could be POKEd and PEEKed using the exclamation mark symbol (!), known as pling, with the least significant byte first (little-endian). In addition, the address could be offset by specifying either query or pling after the address and following it with the offset:

Strings of text could be PEEKed and POKEd in a similar way using the Dollar sign ($). The end of the string is marked with the Carriage return character (&0D in ASCII); when read back, this terminating character is not returned. Offsets cannot be used with the dollar sign.

16 and 32-bit versions[edit]

As most early home computers uses 8-bit processors, PEEK or POKE values are between 0 and 255. Setting or reading a 16-bit value on such machines requires two commands, such asPEEKA+256*PEEK(A+1) to read a 16-bit integer at address A, and POKEA,V followed by POKEA+1,V/256 and to store a 16-bit integer V at address A.

Some BASICs, even on 8-bit machines, have commands for reading and writing 16-bit values from memory. BASIC XL for the Atari 8-bit family uses a 'D' (for 'double') prefix: DPEEK and DPOKE The East-German 'Kleincomputer' KC85/1 and KC87 calls them DEEK and DOKE.[5]

The Sinclair QL has PEEK_W and POKE_W for 16-bit values and PEEK_L and POKE_L for 32-bit values. ST BASIC for the Atari ST uses the traditional names but allows defining 8/16/32 bit memory segments and addresses that determine the size.

POKEs as cheats[edit]

In the context of games for many 8-bit computers, users could load games into memory and, before launching them, modify specific memory addresses in order to cheat, getting an unlimited number of lives, immunity, invisibility, etc. Such modifications were performed using POKE statements. The Commodore 64, ZX Spectrum and Amstrad CPC also allowed players with the relevant cartridges or Multiface add-on to freeze the running program, enter POKEs, and resume.

For example, in Knight Lore for the ZX Spectrum, immunity can be achieved with the following command:

In this case, the value 201 corresponds to a RET instruction, so that the game returns from a subroutine early before triggering collision detection.

Magazines such as Your Sinclair published lists of such POKEs for games. Such codes were generally identified by reverse-engineering the machine code to locate the memory address containing the desired value that related to, for example, the number of lives, detection of collisions, etc.

Poker Virtual Background

Using a 'POKE' cheat is more difficult in modern games, as many include anti-cheat or copy-protection measures that inhibit modification of the game's memory space. Modern operating systems enforce virtual memory protection schemes to deny external program access to non-shared memory (for example, separate page tables for each application, hence inaccessible memory spaces).

Generic usage of POKE[edit]

'POKE' is sometimes used to refer to any direct manipulation of the contents of memory, rather than just via BASIC, particularly among people who learned computing on the 8-bitmicrocomputers of the late 1970s and early 1980s. BASIC was often the only language available on those machines (on home computers, usually present in ROM), and therefore the obvious, and simplest, way to program in machine language was to use BASIC to POKE the opcode values into memory. Doing much low-level coding like this usually came from lack of access to an assembler.

An example of the generic usage of POKE and PEEK is in Visual Basic for Windows, where DDE can be achieved with the LinkPoke keyword.

See also[edit]

References[edit]

  1. ^'PEEK'. Microsoft QuickBasic 4.5 Advisor. Microsoft. 1990. Archived from the original on 2011-05-16. Retrieved 2007-12-28.
  2. ^'POKE'. Microsoft QuickBasic 4.5 Advisor. Microsoft. 1990. Archived from the original on 2011-05-16. Retrieved 2007-12-28.
  3. ^'What is the oldest reference to PEEK, POKE, and USR?'. Retrieved 15 August 2020.
  4. ^Altair 8800 BASIC Reference_Manual 1975, Page 68 of PDF
  5. ^Kühnel, Claus (1987) [1986]. '4. Kleincomputer - Eigenschaften und Möglichkeiten' [4. Microcomputer - Properties and possibilities]. In Erlekampf, Rainer; Mönk, Hans-Joachim (eds.). Mikroelektronik in der Amateurpraxis [Micro-electronics for the practical amateur] (in German). 3 (1 ed.). Berlin: Militärverlag der Deutschen Demokratischen Republik [de], Leipzig. pp. 218, 232, 236. ISBN3-327-00357-2. 7469332.
Retrieved from 'https://en.wikipedia.org/w/index.php?title=PEEK_and_POKE&oldid=993152943'

For those unfamiliar with poker rules and the game of Poker, along with others who might want a refresher, this is the most basic of basic poker. The various games are based on this.

Poker is a game of five card hands dealt from a 52 card deck of standard playing cards. All poker hands consist of exactly five cards. Most games, like seven card stud for example, give the players more than five cards to select from, but the final winning result goes to the one with the best five card poker hand. In the popular stud poker games, the players are all dealt one card at a time or in small groups and they bet money each time they get more cards. They bet that they will end up with the best hand. The players that don't want to bet on their hands any longer can 'fold' their hands, get out of the contest and forfeit all the bets they have made to that point. At the end, the player with the best poker hand wins all the bets. In draw poker the players bet, then replace the cards they don't like with new ones from the dealer and then bet again.

The best hand is determined by the Poker Hand Ranking chart below.

Mobile Users - I've created a special chart in universal .pdf format for easy viewing on narrow screens. The original large chart is also available for downloading, viewing or printing.

Poker

Mobile - hand-rankings-mobile.pdf
Tablet / Desktop - hand-rankings.pdf

Rules for the More Popular Poker Games

Basic Poker Resources

  • Poker Terms - Before sitting down at a poker table, new players should check out my glossary and get familiar with some of the poker lingo.

Can you name thesePoker Legends?

In 1978, Doyle Brunson, two time winner of the 'World Championship of Poker' at Binions Horseshoe in Las Vegas, published probably the best ever written book on casino level poker games. This 600 page, 3 lb. volume is more like an encyclopedia reference than a typical poker book. The work is packed with sound professional advice with volumes of stats for advanced players and was strangely named 'How I Made Over $1,000,000 Playing Poker'. In reprint, it is now named 'Super System'.

For this classic, Brunson enlisted the services of some of the best professional poker players in the world, all champions in their own right, to collaborate the authoring of the game sections of their particular specialties. The cartoon of this world class poker game is shown on the books inside front cover. Here are the players and their game contributions.

Poker Visual Basics

1. DOYLE BRUNSON - No Limit Hold'em 2. MIKE CARO - Draw Poker 3. JOEY HAWTHORN - Five and Seven Card Lowball 4. DAVID SKLANSKY - Seven Card Stud, High-Low Split 5. CHIP REESE - Seven Card Stud 6. BOBBY BALDWIN - Limit Hold'em