CC51B - Arquitectura de Computadores : Tarea #3
El ZX Spectrum 48K
Variables del Sistema
Variables del Sistema
Las variables del sistema corresponden a un bloque de memoria entre las direcciones 23552 y 23734 que son usadas para almacenar distintos valores, y estados de programas en ejecución. En la tabla, la columna #Bytes indica el número de bytes usados, una X señala que introducir valores en estas direcciones (vía POKE) puede producir una caida del sistema y una N, para direcciones donde la introducción de un valor no tendrá efecto.
#Bytes Dir. Nombre Uso N8 23552 KSTATE Used in reading the keyboard. Nl 23560 LAST K Stores newly pressed key. 1 23561 REPDEL Time (in 50ths of a second in 60ths of a second in N. America) that a key must be held down before it repeats. This starts off at 35, but you can POKE in other values. 1 23562 REPPER Delay (in 50ths of a second in 60ths of a second in N. America) between successive repeats of a key held down: initially 5. N2 23563 DEFADD Address of arguments of user defined function if one is being evaluated; otherwise 0. Nl 23565 K DATA Stores 2nd byte of colour controls entered from keyboard . N2 23566 TVDATA Stores bytes of coiour, AT and TAB controls going to television. X38 23568 STRMS Addresses of channels attached to streams. 2 23606 CHARS 256 less than address of character set (which starts with space and carries on to the copyright symbol). Normally in ROM, but you can set up your own in RAM and make CHARS point to it. 1 23608 RASP Length of warning buzz. 1 23609 PIP Length of keyboard click. 1 23610 ERR NR 1 less than the report code. Starts off at 255 (for 1) so PEEK 23610 gives 255. X1 23611 FLAGS Various flags to control the BASIC system. X1 23612 TV FLAG Flags associated with the television. X2 23613 ERR SP Address of item on machine stack to be used as error return. N2 23615 LIST SP Address of return address from automatic listing. N1 23617 MODE Specifies K, L, C. E or G cursor. 2 23618 NEWPPC Line to be jumped to. 23620 NSPPC Statement number in line to be jumped to. Poking first NEWPPC and then NSPPC forces a jump to a specified statement in a line. 2 23621 PPC Line number of statement currently being executed. 1 23623 SUBPPC Number within line of statement being executed. 1 23624 BORDCR Border colour * 8; also contains the attributes normally used for the lower half of the screen. 2 23625 E PPC Number of current line (with program cursor). X2 23627 VARS Address of variables. N2 23629 DEST Address of variable in assignment. X2 23631 CHANS Address of channel data. X2 23633 CURCHL Address of information currently being used for input and output. X2 23635 PROG Address of BASIC program. X2 23637 NXTLIN Address of next line in program. X2 23639 DATADD Address of terminator of last DATA item. X2 23641 E LINE Address of command being typed in. 2 23643 K CUR Address of cursor. X2 23645 CH ADD Address of the next character to be interpreted: the character after the argument of PEEK, or the NEWLINE at the end of a POKE statement. 2 23647 X PTR Address of the character after the ? marker. X2 23649 WORKSP Address of temporary work space. X2 23651 STKBOT Address of bottom of calculator stack. X2 23653 STKEND Address of start of spare space. N1 23655 BREG Calculator's b register. N2 23656 MEM Address of area used for calculator's memory. (Usually MEMBOT, but not always.) 23658 FLAGS2 More flags. X1 23659 DF SZ The number of lines (including one blank line) in the lower part of the screen. 2 23660 S TOP The number of the top program line in automatic listings. 2 23662 OLDPPC Line number to which CONTINUE jumps. 23664 OSPCC Number within line of statement to which CONTINUE jumps. N1 23665 FLAGX Various flags. N2 23666 STRLEN Length of string type destination in assignment. N2 23668 T ADDR Address of next item in syntax table (very unlikely to be useful). 2 23670 SEED The seed for RND. This is the variable that is set by RANDOMIZE. 3 23672 FRAMES 3 byte (least significant first), frame counter. Incremented every 20ms. See Chapter 18. 2 23675 UDG Address of 1st user defined graphic You can change this for instance to save space by having fewer user defined graphics. 1 23677 COORDS x-coordinate of last point plotted. 1 23678 y-coordinate of last point plotted. 1 23679 P POSN 33 column number of printer position 1 23680 PR CC Less significant byte of address of next position for LPRINT to print at (in printer buffer). 1 23681 Not used. 2 23682 ECHO E 33 column number and 24 line number (in lower half) of end of input buffer. 2 23684 DF CC Address in display file of PRINT position. 2 23686 DFCCL Like DF CC for lower part of screen. X1 23688 S POSN 33 column number for PRINT position X1 23689 24 line number for PRINT position. X2 23690 SPOSNL Like S POSN for lower part 23692 SCR CT Counts scrolls: it is always 1 more than the number of scrolls that will be done before stopping with scroll? If you keep poking this with a number bigger than 1 (say 255), the screen will scroll on and on without asking you. 1 23693 ATTR P Permanent current colours, etc (as set up by colour statements). 1 23694 MASK P Used for transparent colours, etc. Any bit that is 1 shows that the corresponding attribute bit is taken not from ATTR P, but from what is already on the screen. N1 23695 ATTR T Temporary current colours, etc (as set up by colour items). N1 23696 MASK T Like MASK P, but temporary. 23697 P FLAG More flags. N30 23698 MEMBOT Calculator's memory area; used to store numbers that cannot conveniently be put on the calculator stack. 2 23728 Not used. 2 23730 RAMTOP Address of last byte of BASIC system area. 2 23732 P RAMT Address of last byte of physical RAM.