"The Atari A to Z" by Mark S Baines Copyright (c) 1998 Mark S Baines All Rights Reserved YOU MUST READ "READ_ME.NOW" BEFORE YOU LOOK AT ANY OF THIS FILE ***************************************************************************** V V Volts or Voltage. V number Such as V.22, V.42bis. A CCITT or ITU Recommendation concerning the standards for modems, interfaces and the signals they carry. Some V numbers of interest are: Table V1: Common V Numbers V.3 Definition of International Alphabet No. 5 V.4 The representation of binary 1 and 0, use of parity bits and stop/start elements. V.21 300 bps asynchronous modems V.22 600 and 1,200 bps synchronous and asynchronous modems V.22bis 2,400 bps synchronous and asynchronous modems V.23 600/1,200/75 bps asymmetric protocol V.24 Interface between modem and computer (equivalent to RS-232C port) V.29 9,600 bps half duplex protocol used by Group 3 FAXs, and in some modems, but with proprietary additions. V.32 9,600 bps full duplex V.32bis 14,400 bps full duplex V.34 28,800 bps full duplex later upgraded to 33,600 bps V.42 Error correction for modems, including the MNP 2, 3 & 4 classes with LAP-M being optional. V.42bis Data compression for modems, enhancement to V.42 with LAP-M and MNP 5 support. V-Fast An unratified standard for 24,000-28,800 bps adaptive protocol used by many modem manufacturers before V.34 was approved. VFC V-Fast Class, as V-Fast. V.90 56,600/33,600 bps asymmetric protocol (56,600 bps receive, 33,600 bps receive/transmit) Valid Conformance to a standard or criteria, for instance 'valid input' is data that has been checked for errors. Validation A computer program operation to check operator input to ensure that entered data conforms to certain standards. A database program will validate input to ensure that the data fits within a field length, that it is of the correct type (i.e. numeric or alphabetic where necessary), that dates are legal, that required fields have data in them etc. Validity check To check that a particular bit-pattern character is a valid character in the code in which it is used. Value An individually accessible item having some worth or measure. Vapourware A product that, having been promised for release for some time, never appears for sale. VAR Value-Added Retailer or Value-Added Reseller. A company that buys computer systems and resells them at a profit, often also supplying some additional service with the goods, such as training, installation or maintenance. Variable A unit of storage with specified attributes that is declared for purposes of holding specific data or parameters that may change during or between executions of a program. A local variable can only be referenced within the program block in which it was declared and a global variable is available throughout a program. In mathematics, a variable is a quantity that can assume any of a given set of values. Also, that which can change not having a fixed value or form. Variable declaration In programming, a statement that establishes the size, structure and data type of a variable, such as in C the statement char name[20] which specifies a memory space called name for 20 characters (bytes). Variable-length record A record in a database with a length that depends on its contents and not of fixed-length. They have the advantage of saving on memory and storage space but are harder to operate on as the end of each record is not predetermined. VBL Vertical BLank interrupt. An exception which is triggered as the screen raster beam returns to the left-hand edge of the top scan line from the bottom right of the screen, which may be 50, 60 or 70 times a second depending on the resolution, monitor and country. Because of its strict timing they are used by periodically executing programs such as TSRs or screen display modifiers and TOS uses it to erase and display the mouse cursor as it moves across the screen. A programmer can access a VBL by taking over the exception vector 28 (level 4 interrupt) at address $70 or better still, link into the VBL queue, the address of which is held at $456 (system variable _vblqueue). VCS Video Computer System or Video Console System. A microprocessor computer system with the primary function of interfacing with a video display, such as a TV to play games. Atari have two such systems available. The 2600 Video Computer System offers 192 x 160 pixel resolution, uses plug-in cartridges for instant load and game play and connects to any domestic TV. The processor is an 8-bit 6507 (an uprated 6502) and the system is controlled with one or two joysticks. The cost of the system and the cheap cartridges made it a very popular buy with over one million sold in the UK alone. The 7800 Video Game System is more advanced, with 320 x 242 pixel resolution, 256 available colours and characters, 64 software sprites on screen at once, a 6502 'Sally' processor and two sound channels. It is compatible with the 2600 system cartridges and is controlled by two joypad controllers. VDI Virtual Device Interface. That part of GEM that provides the device independent graphical primitive routines for GEM dealing with point plotting, line drawing, area filling and text drawing among other things with output to printers, plotters and the screen. There is also an input/output system and it deals with the mouse and keyboard. GDOS, GIOS and metafiles are the VDI's responsibility. The VDI function names have a consistent set of prefixes. Table V2: VDI Function Name Prefixes Prefix Meaning v_ Configuration, graphical output, e.g. v_rc() vex_ Vector handling, e.g. vex_butv() vm_ Metafile specific routines, e.g. vm_coords() vq_ Workstation inquiry routines, e.g. vq_color() vqf_, vql_, vqm_, vqt_ Graphical primitive functions, e.g. vqt_extent() vqin_ Inquire input mode, e.g. vqin_mode() vqp_ Inquire palette attributes, e.g. vqp_state() vr_, vro_, vrt_ Raster operations, e.g. vro_cpyfm() vrq_ Request mode input, e.g. vrq_locator() vs_ Workstation configuration, e.g. vs_clip() vsc_ Configure mouse form, e.g. vsc_form() vsf_ Set fill area attributes, e.g. vsf_color() vsin_ Set input mode, e.g. vsin_mode() vsl_ Set line attributes, e.g. vsl_ends() vsm_ Set marker types, e.g. vsm_type() vsp_ Set palette attributes, e.g. vsp_save() vst_ Set text attributes, e.g. vst_effects() vswr_ Set writing mode, e.g. vswr_mode() VDU Visual Display Unit. A display device with keyboard used to communicate with a computer. VDUs were originally dumb terminals but most are now intelligent and interactive. The standard display of 80 or 132 columns and 12 or 24 lines is still used today. The term is now loosely applied to any display device or CRT terminal. Vector In graphics and mathematics, a directed line segment defined by the coordinates of its ends or by the coordinates of its origin, its direction and length. Also, a pointer, a location in memory used to store the address of an executable routine. TRAP vectors contain the main entry points of the TOS subroutines. Vector fonts See Scalable font. Vectored interrupt An interrupt that identifies the cause. Vector image A graphic image produced by an object-oriented drawing program where the image data is stored as a series of vectors and other instructions rather than as a bitmap. Such images tend to be independent of any output device and can be scaled without loss of detail. See Drawing program, GEM metafile, Bitmap image. VectorPad An Atari pressure sensitive pad found on the ST Book in place of a mouse. It is pressed with the fingers in the direction where the mouse cursor is to move, the greater the pressure the faster the movement. Two extra pads act as mouse buttons. Similar devices are found on portable games consoles. Verification The operation of determining whether a condition that is supposed to exist does, in fact, exist. With computer data, it is the process of checking manual operations in an attempt to ensure that they have been performed correctly and has traditionally meant the checking of transcription errors from one medium to another, such as from paper to computer bit-patterns. Verify To determine whether an operation has been performed correctly. See Write verify. Version number A program generation or edition number indicating its development status with regard to changes, improvements and bug fixes. Vertical tabulation To move paper through a printer in order to move the print head to a lower position on the page. Vetting Synonymous with validation. VGA Video Graphics Adaptor. A standard of video display with up to 256 colours and a typical resolution of 640 x 480 x sixteen colours common on PC compatibles and the Falcon030. The TT has a similar resolution (TT medium resolution). VIDEL The Atari custom chip video controller in the Falcon030 which controls most video functions including overscan, overlay mode and true-colour graphics. It is STE SHIFTER compatible. VIDEL sits on a 32-bit data bus. Video A term applied to the techniques and equipment involved in presenting data or other images to CRT screens. Video buffer The RAM used to hold the bit-pattern data of the image to be displayed on a CRT screen. See Logbase and Physbase. Videotex A television-based information system, either Teletext or Viewdata. Viewdata A system by which textual information is transmitted on demand from a central computer to a subscriber's special or adapted TV set via a modem and telephone line. Prestel is the UK's public system. Such systems may provide 'gateways' to other information providers, such as mail-order catalogues and British Rail. The display character set is not ASCII-based and provides for a 40 column and 25 line display with eight colours and extremely low resolution block graphics. This, the slow response time and the very basic control command set make a Viewdata system a good low technology information provider for the 'masses' but a poor system for those that need quick, extensive up-to- date information, searched for on certain criteria and processed for input into a user program, such as a database. Virtual A term used to indicate that the actual physical implementation of something (a storage system, a peripheral device or communications link) is different from that perceived by a user or program. Virtual address An address in source or object code that has not yet been mapped onto real storage. Virtual device A programming identification of a peripheral device that is not an identification of any specific device. Virtual disk A part of a magnetic disk that is treated by the operating system as a separate disk, such as a hard disk partition under TOS. Virtual drive A direct access drive that does not actually exist but which is implemented from mass storage, such as a hard disk partition or a RAM disk. Virtual image A complete graphic image held in storage of which only a part can be displayed on the screen at any one time. Virtual memory Also, virtual storage. The total range of addresses available for use in a computer that is organized so that there is no direct relationship between locations specified in programs and locations actually available in storage hardware. Such systems will often use hard disk storage as RAM or bring in pages and/or segments of RAM not in the main address range into main storage when required. Virtual storage is common on microcomputers that have an architecture or operating system that limits the amount of RAM they can address, such as IBM PC compatibles and 8-bit computers. Multi-user, multiprogramming systems also use virtual storage as the demands on the system increase. Virtual reality A form of imaginary 'space' created in a computer and perceived by a user through computer I/O devices using stereo sound and vision and tactile feedback devices. Computer-generated worlds in three dimensions can be interacted with and moved about in using these techniques, which apart from the obvious entertainment value, have serious applications in science and technology, such as 'manipulating' individual atoms in a molecule or travelling through the inside of a nuclear reactor. Virtual storage See Virtual memory. Virus A computer virus is a small program that has the primary function of copying itself, unseen by a user, from one disk to another and hence from one computer to another. In this manner they 'breed' and 'infect' a computer mimicking the effect of a biological virus. Most viruses have a secondary function which may be innocuous, such as showing the programmer's name on screen at boot-up, but most are more sinister and designed to corrupt data in memory or on disk. Some will go as far as deleting files, formatting disks or corrupting FAT and directory tables on disks making them unusable. Under these circumstances, it has to be assumed that any and all viruses are dangerous and infection by them should be avoided at all costs. Even self-proclaimed harmless viruses should not be tolerated as the user can have no idea of the real effect of a virus in the long term. Until a law can be passed which will outlaw such programs (criminal damage proceedings can and have been brought on those that knowingly spread viruses), it has to be assumed that virus programmers, if not criminal, are undesirable, antisocial and irresponsible. Most viruses exist in the boot sectors of floppy disks. These programs are auto-loaded at boot-up and install themselves into memory. They then wait until another disk access is made and copy themselves to the boot sector of that disk. The swapping of disks amongst friends, PD libraries, magazine cover disks and illegal copying and spreading of commercial programs all encourage the spread of viruses in this manner. Infection is best prevented by checking each new disk with a virus killer or inoculation program which are available commercially or in the public domain. Respectable magazines and commercial companies have been known to pass on viruses so a virus killer is a must for every computer owner. If it is suspected that a virus exists in a computer then a cold boot will delete it from memory and a boot-up without a disk or a known uninfected disk will clear the system so that the use of a virus inoculator program can be safely used to inspect suspect disks. Write- protecting a disk with the write-protect tab will prevent a virus copying itself to a disk. Users may help protect themselves by carrying out other procedures. Make backups of all software regardless of any software licence you may have entered into. Prohibiting the making of backups for your own use and safety is unenforceable and probably against the law. Use a backup copy to work from, never an original master if at all possible. Keep these in a safe place preferably in another room and protect them with the write-protect tab open. Backup all data, especially on hard disks, at regular intervals onto other disks. Check all new disks, commercial or otherwise with a virus killer or immunizer, such as George Woodside's PD Virus Killer, the German PD Sagrotan or Richard Karsmakers' Ultimate Virus Killer. Be careful with commercial games and other auto-booting disks. Do not immunize these as it will remove the boot-up program and the disk will probably become useless. Be aware that these programs cannot detect all viruses, but only the ones they know about. Virus killers are not foolproof and their exclusive use should not be relied upon. Use an anti-virus program on your boot-up disk. Load all auto-booting programs into a computer that has just been switched on with a cold boot. Any virus that may previously have been in the computer cannot then copy itself onto your disk. Report any disk infection to the supplier. Discourage the spread of illegal copies of programs. Educate your friends into safe habits. Protect yourself by protecting others. Anti-virus programs are becoming common and their controlled and intelligent use should be encouraged. These are programs that behave like viruses but whose purpose is to warn the user of the presence of an executable boot sector on the disk in the disk drive. Some are self-copying onto other disks, most are not. The self-copying ones should be discouraged and not used as they may be as troublesome to others as a true virus. The copying of programs from one disk to another should always be under the control of a user and not an invisible program. Most viruses are boot sector viruses, but some called 'link viruses' are more insidious. These copy themselves on to the end of executable files. When that file is run, so is the link virus at the end of it. On an IBM PC compatible, a file commonly linked to is COMMAND.COM which is an important MS-DOS file and always run. On the ST, link viruses are less common (there are only about five known ones). Most link viruses lie dormant, sometimes called 'logic time bombs', until a certain event happens, such as a program being run a certain number of times, the link virus being copied a certain number of times or a particular system date being reached. Visible Evident to a user or program, not transparent. VLSI Very Large Scale Integration. An integrated circuit with more than about 1000 gates per chip. VME bus Versa Module Europe. A common industry standard device interface for add-on circuit board cards called Eurocards, supporting a fast data transfer rate and using a single 96-way connector to provide a 16-bit data bus. Motorola first developed the Versa bus to enable MC68000-based systems to be constructed by joining circuit boards together. This was developed to allow standard-sized Eurocards to be used and became the VME bus. The TT has one single-high VME board backplane where memory space is partitioned to allow the MC68030 to access 16-bit or 24-bit address cards. The standard is not fully implemented as devices act as slaves only. This means that a processor add-on card could not be used which controls the rest of the TT. Additional memory, graphics boards and Ethernet network boards can all be attached to this port on the TT. If RAM is installed there, TOS has to be informed about it with a Maddalt() call. It will be very slow, it is not cacheable, only sixteen bits wide and not SCSI-accessible (meaning transfers have to be use SCSI-accessible RAM which is taken care of in the drivers, but it slows it down). The VME port is only meant for peripherals. Voice recognition An operation involved in recognizing spoken words and converting them to a computer usable form. Void Having no value, a gap or space. Volatile Not permanent or easily dispensed with. A term applied to memory (normally RAM) that requires a continuous electrical input in order to retain stored data, that data being lost when the current is removed. Volume A physical unit of magnetizable-surface storage, such as a disk or digital cassette. Volume name A volume identifier usually written to the volume itself. TOS allows disk and hard disk partitions to have volume names of up to eleven characters, like a file name. Volume/tone control chip A National LMC1992 Computer Controlled Volume/Tone Control chip in the STE, TT and Falcon030 used to provide volume and tone control of the stereo DMA sound production. von Neumann machine A computer constructed according to the principles made by John von Neumann in 1946, characterized by the use of stored programs and the separation of code and data in storage. All computers conform to this principle. VR Virtual Reality. VT Vertical Tabulate. ASCII code 11 that causes a printer to move the paper upwards and thus the print head to a lower, preset position. VT52, VT100 Early industry standard general purpose VT52 and VT100 terminals of the DEC mainframe computers responded to codes - usually escape sequences - to control the cursor on the screen and various other miscellaneous screen functions, such as erase, insert, colour control etc. Terminal technology has since developed but the screen control codes remain, with the effect that most comms terminal programs can emulate a VT52 or VT100 type terminal. The Atari BIOS has a VT52 emulator built into it so it understands these codes without further translation. VT52 escape control sequences These codes are a simple and effective way of controlling the screen in TOS programs but their use is not generally portable to other computers. Examples of their use are given in C. Numbers, such as \033 are in octal. The first #define is for inclusion within a printf() statement, such as: printf("Today is %s%s%s", R_VID, date, N_VID); The second #define can be used on its own as a separate statement: CLS; RVS_VID; printf("PROFILE v1.53 By Linnhe Computing (c) 1994\n"); NORM_VID; Some of these control sequences are duplicated in the Atari VDI set of Screen Escape Functions. Examples in C of some possible macros are given after each definition. Table V3: VT52 Control Codes ASCII 7 BELL This rings the monitor bell, useful for attracting attention. #define BEL "\007" #define BELL printf("%s", BEL) Esc A Cursor Up Moves the cursor up one line. If the cursor is already on the top line of the screen, this has no effect. #define C_UP "\033A" #define CUR_UP printf("%s", C_UP) Esc B Cursor Down Moves the cursor down one line. If the cursor is already on the last line of the screen, this has no effect. #define C_DOWN "\033B" #define CUR_DOWN printf("%s", C_DOWN) Esc C Cursor Right Moves the cursor one position to the right. If this would move the cursor off the screen, this has no effect. #define C_RT "\033C" #define CUR_RT printf("%s", C_RT) Esc D Cursor Left Moves the cursor one position to the left. This is non-destructive i.e. it does not delete the character over which it now rests. If the cursor is already in column 0, this escape sequence has no effect. #define C_LT "\033D" #define CUR_LT printf("%s", C_LT) Esc E Clear Screen (and Home Cursor) This moves the cursor to the top left-hand corner of the screen and clears all characters from the screen. #define CLEAR "\033E" #define CLS printf("%s", CLEAR) Esc H Home Cursor Moves the cursor to the top left-hand corner of the screen. The screen is not cleared. #define CUR_HOME "\033H" #define HOME printf("%s", CUR_HOME) Esc I Scroll Up Moves the cursor up but, in contrast to Esc A, if the cursor is on the top line, a scroll down is performed. The column position remains unchanged. #define SCRL_UP "\033I" #define SCROLL_UP printf("%s", SCRL_UP) Esc J Erase to End of Screen Erases all the data from the cursor (including its position) to the end of the screen. #define E_EOS "\033J" #define ERA_EOS printf("%s", E_EOS) Esc K Clear to End of Line Clears the line from the current cursor position to the end of the line. #define E_EOL "\033K" #define ERA_EOL printf("%s", E_EOL) Esc L Insert Line Inserts a new blank line by moving the line the cursor is on and all following lines down one line; the lowest line is lost. Then the cursor is moved to the start of the new blank line. #define INSERT_LINE "\033L" #define INS_LINE printf("%s", INSERT_LINE) Esc M Delete Line Deletes the contents of the line the cursor is on, places the cursor at the start of the line, moves all the following lines up one line, and adds a blank line at the bottom. #define DELETE_LINE "\033M" #define DEL_LINE printf("%s", DELETE_LINE) Esc Y Position Cursor The two characters that follow the 'Y' specify the line (x) and column (y) to which the cursor is to be moved. Lines and columns number from zero inclusive, but an offset of 32 (decimal) is expected. #define CUR_POS "\033Y" #define CUR_MOVE(x, y) printf("%s%c%c", CUR_POS, 32 + x, 32 + y) To move the cursor to line 7, column 33 enter the line: CUR_MOVE(7, 33); Esc b Foreground Colour Sets the character colour (x). In mono mode there is a choice of 0 = white and 1 = black. In colour modes on the ST there is a choice of four or sixteen depending on the resolution. Only the four least significant bits of the colour character are used. You can use the digit 1 as well as the letters A or a in addition to binary one. #define COL_FORE "\033b" #define INK(x) printf("%s%c", COL_FORE, x) If the current palette has blue as the fourth colour then a line such as: INK(4); will print all following output statements in blue. Esc c Background Colour Sets the background colour, the colour of the cell that contains the characters. The comments above apply. Do not set the foreground and background colours the same! #define COL_BACK "\033c" #define PAPER(x) printf("%s%c", COL_BACK, x) Esc d Erase from Start of Screen Erases from the start of the screen to the cursor position. The cursor position is erased also. #define E_SOS "\033d" #define ERA_SOS printf("%s", E_SOS) Esc e Cursor On Shows the cursor. The cursor may still be moved about on the screen. #define C_ON "\033e" #define CUR_ON printf("%s", C_ON) Esc f Cursor Off Hides the cursor. The cursor may still be moved about on the screen. Useful for getting rid of the annoying flashing cursor when the program is displaying output and not requiring any input from the user. #define C_OFF "\033f" #define CUR_OFF printf("%s", C_OFF) Esc j Save Cursor Position Saves the current cursor position. This function is also used by other Escape sequences so the stored values are no longer available to you if you have used some other code sequence. If you have, the cursor is homed. #define C_SAVE "\033j" #define CUR_SAVE printf("%s", C_SAVE) Esc k Restore Cursor Position Restores the cursor to a previously saved position. If you use this sequence without having previously saved the cursor position, then the cursor is homed. #define C_RESTORE "\033k" #define CUR_RESTORE printf("%s", C_RESTORE) Esc l Erase Line Erases the current line and moves the cursor to the leftmost column. #define E_LINE "\033l" #define ERA_LINE printf("%s", E_LINE) Esc o Erase Start of Line Erases from the start of the line to the cursor including the cursor position. #define E_LINE_TO_C "\033o" #define ERA_LINE_TO_C printf("%s", E_LINE_TO_C) Esc p Reverse Video Mode Enters the reverse video mode so that foreground and background colours are exchanged. Useful for highlighting in mono mode. #define R_VID "\033p" #define RVS_VID printf("%s", R_VID) Esc q Normal Video Mode Exits the reverse video mode. #define N_VID "\033q" #define NORM_VID printf("%s", N_VID) Esc v Automatic Overflow On Attempted output past the last screen column will automatically start a new line. The page scrolls up if necessary. #define LINEWRAP_ON "\033v" #define WRAP_ON printf("%s", LINEWRAP_ON) Esc w Automatic Overflow Off Deactivates the Esc v above. Writing beyond the last column on the screen does not cause a new line but all characters are printed in that column, erasing the last character. #define LINEWRAP_OFF "\033w" #define WRAP_OFF printf("%s", LINEWRAP_OFF) V 55 entries EOF