P CLS 1ABE P CONT 1AB8 P COPY 1AD6 P DATA 1ACC P DEF FN 1AF9 P DIM 1AA2 P DRAW 1AD2 see 1A7A syntax offset table PEEK key (BE) see also commands, functions and operators, KEYBOARD SCANNING, 022C extended mode table (b) The O key in E mode without shift produces the function PEEK. It requires one numeric operand X; it needn't be an integer though it is read as an integer, can be zero, and must be < 65536d, and the value of the function is the number stored at the ROM/RAM address INT X. PEEK is a function, with one operand; POKE is a command, with two. On execution, 24FB SCANNING quickly leads to 26DF S NEGATE. This converts the key code BE first to 0F, then to EB, and adds the priority 10h/16d. Code and priority 10EB are now pushed on to the machine stack (270D S PUSH PO) while the expression following PEEK is evaluated. When the code is taken off the stack (2734 S LOOP), it is converted (2373 S TIGHTER) from EB to 2B, the calculator offset for 34AC peek. peek subroutine 34AC Called only from 0028 FP CALC with literal 2B to executethe PEEK X function. Could be called from m/c to change the value on the calculator stack; for ordinary purposes it is a lotsimpler to write LD A,(BC) or similar. Input parameters: none - X is the last value on the calculator stack. Action: call 1F99 FIND INT 2 to get X off the calculator stack - read the byte at that address. Exit: into 2D2B STACK A, which puts the result on the calculator stack. Output parameters: the byte is in A. P ERASE 1B10 see 1A7A syntax offset table permanent attribute values, colours see colours PERMS subroutine 1C96 see CLASS 07 PF ALL 9 2EB8 (2DE3 PRINT FP) Jumps from: 2EB3 PF TEST 2 PF BITS 2E7B (2DE3 PRINT FP) Jumps from: 2E7B PF SAVE 2E8A PF BYTES PF BYTES 2E8A (2DE3 PRINT FP) Jumps from: auto PF COUNT 2F2D (2DE3 PRINT FP) Jumps from: 2F18 PF RND LP PF DC OUT 2F5E (2DE3 PRINT FP) Exit from: 2F4A PF E SBRN (2DE3 PRINT FP) PF DEC 0S 2F64 (2DE3 PRINT FP) Jumps from: auto PF DIGITS 2EA1 (2DE3 PRINT FP) Jumps from: 2EB8 PF ALL 9 PF E FRMT 2F6C (2DE3 PRINT FP) Jumps from: 2F2D PF COUNT PF E POS 2F83 (2DE3 PRINT FP) Jumps from: 2F6C PF E PRMT PF E SBRN 2F4A (2DE3 PRINT FP) An exit routine of 2DE3 PRINT FP, also called recursively from 2F6C PF E FRMT within the routine. Called from: 2F6C PF E FRMT Exit from: 2DE3 PRINT FP through 2F46 PF NOT E PF E SIGN 2F85 (2DE3 PRINT FP) Jumps from: 2F6C PF E FRMT PF FRACTN 2ECF (2DE3 PRINT FP) Jumps from: 2E24 PF SMALL PF FR DGT 2EEC (2DE3 PRINT FP) Jumps from: 2EDF PF FRN LP (misprinted) PF FR EXX 2EEF (2DE3 PRINT FP) Jumps from: auto PF FRN LP 2EDF (2DE3 PRINT FP) Jumps from: 2EEF PF FR EXX PF INSERT 2EA9 (2DE3 PRINT FP) Jumps from: 2EA1 PF DIGITS P FLAG system variable 5C91 see also colours Bytes: 1 All the bits are used as separate flags. The even bits, which are those described below, are "temporary attribute" flags, the odd ones "permanent"; the odd bits aren't written individually, but whenever 0D4D TEMPS is called they are copied en bloc from the even ones. INVERSE and OVER, and PAPER or INK 9, aren't recorded as such in the attribute bytes; they are set by the flags of P FLAGS. P FLAG is the byte following ATTR T and MASK T, so it ischanged by the third call to 226C CO CHANGE in 2258 CO TEMP B. All bits saved and restored: 0A3D PO RIGHT 0C88 PO SCR 2 0D02 PO SCR 4/0D2D PO SCR 4B 18C1 OUT FLASH All written by: 0A3D PO RIGHT temporarily bit 0 set, others reset 0D5B TEMPS 1 odd bits temporarily copied to even bits 18C1 OUT FLASH temporarily all reset 1C96 PERMS even bits copied to odd bits 226C CO CHANGE sets INK and PAPER 9 flags Rems: 0BDB PO ATTR used in setting PAPER/INK in attributes 0D65 TEMPS 2 odd bits copied to even bits 2211 CO TEMP 5 altered by CO CHANGE as required 2228 CO TEMP 6 altered by CO CHANGE (bits 2 and 0) 2246 CO TEMP 9 bits 6 and 4 set for PAPER/INK 9 22DC PLOT used in PLOTting pixel P FLAG bit 6: PAPER 9 flag On "PAPER colour is 9" Written by: 2258 CO TEMP B according to parameter of command Turned off: 1CBE CLASS 09 Read by: 0BDB PO ATTR P FLAG bit 4: INK 9 flag On "INK colour is 9" Written by: 2258 CO TEMP B according to parameter of command Read by: 0BFA PO ATTR 1 P FLAG bit 2: INVERSE flag On: "INVERSE 1"; off "INVERSE 0" Written by: 2228 CO TEMP 6 according to parameter of command Read by: 0BA4 PR ALL 2 22F0 PLOT LOOP P FLAG bit 0: OVER flag On "OVER 1"; off "OVER 0" Written by: 2228 CO TEMP 6 according to parameter of command Read by: 0B93 PR ALL 1 22F0 PLOT LOOP PF LARGE 2E56 (2DE3 PRINT FP) Jumps from: 2E01 PF LOOP P FLASH 1AED see 1A7A syntax offset table PF LOOP 2E01 (2DE3 PRINT FP) Jumps from: 2E56 PF LARGE PF MEDIUM 2E6F (2DE3 PRINT FP) Jumps from: 2E56 PF LARGE PF MORE 2ECB (2DE3 PRINT FP) Jumps from: 2EB8 PF ALL 9 PF NEGTVE 2DF2 (2DE3 PRINT FP) Jumps from: 2DE3 PRINT FP PF NOT E 2F46 (2DE3 PRINT FP) Label omitted by a misprint. It should appear opposite AND A, two lines above 2F4A PF E SBRN. Jumps from: 2F2D PF COUNT P FOR 1A90 P FORMAT 1B06 see 1A7A syntax offset table PF OUT DT 2F59 (2DE3 PRINT FP) Jumps from: 2F52 PF OUT LP PF OUT LP 2F52 (2DE3 PRINT FP) Jumps from: 2F4A PF E SBRN 2F59 PF OUT DT 2F64 PF DEC 0S PF POSTVE 2DF8 (2DE3 PRINT FP) Jumps from: 2DE3 PRINT FP PF R BACK 2F25 (2DE3 PRINT FP) Jumps from: 2F18 PF RND LP PF RND LP 2F18 (2DE3 PRINT FP) Jumps from: 2F25 PF R BACK PF ROUND 2F0C (2DE3 PRINT FP) Jumps from: 2EB8 PF ALL 9 2EDF PF FRN LP PF SAVE 2E1E (2DE3 PRINT FP) Jumps from: 2E01 PF LOOP PF SMALL 2E24 (2DE3 PRINT FP) Jumps from: 2E01 PF LOOP PF TEST 2 2EB3 (2DE3 PRINT FP) Jumps from: 2EA1 PF DIGITS P GO SUB 1A86 P GO TO 1A7D see 1A7A syntax offset table PI key (A7) see also commands, functions and operators, KEYBOARD SCANNING The M key in E mode without shift produces the function PI; a function without an argument, which always produces the same numerical value 3.1415927d. On execution, 24FB SCANNING indexes into the scanning function table at 2596 to find the executive routine 2627 S PI. 0C35 PO TRSP does not require trailing space P IF 1A81 P INK 1AEB P INPUT 1A9F see 1A7A syntax offset table P INT STO 2D8C (2D8E INT STORE) The P INT STO entry point was apparently provided for storing a small integer_known_to_be_positive in FP format, but it is never called from ROM. P INVERSE 1AEF see 1A7A syntax offset table PIP system variable 5C39 Bytes: 1 The number of cycles to be output in the_keyboard_click.The pitch is fixed by 0F38 ED LOOP at a little more than three octaves above middle C; the value of PIP controls the length of the click. Set to zero on startup by 11EF RAM DONE, at end. The effect is that only one cycle in 03B5 BEEPER is completed, giving a very short click of rather indeterminate pitch. The high-pitched click can be heard by poking any number 1 -> 255d into PIP, 23609d. Immediately follows 5C38 RASP; they are saved together in 11B7 NEW and written together in 11EF RAM DONE, so any changemade in PIP won't be affected by NEW. Written by: 11EF RAM DONE (twice) Read by: 0F38 ED LOOP 11B7 NEW pitch see timing pitch of keyboard click see 5C39 PIP pixel, pixel address, pixel byte, pixel coordinates, pixel line see DISPLAY AREA PIXEL ADD subroutine 22AA Given a pair of pixel coordinates from BASIC, finds the actual pixel in the display area. It is used by the POINT and PLOT subroutines, and can readily be used in m/c programming. The BASIC y-coordinate runs from zero at the bottom of the display area to AFh/175d at the top, the x-coordinate X fromzero on the left of the screen to FFh/255d on the right. Howeverthe y-coordinate mainly used in the subroutine, here called Y, runs from zero at the_top of the screen to AFh/175d at the bottom of the upper display.