home *** CD-ROM | disk | FTP | other *** search
/ Outlet 51 / outlet-51.mgt / I1 < prev    next >
Text File  |  2021-04-18  |  8KB  |  1 lines

  1.                           INTRODUCTION                                                                                                  "The Spectrum ROM Disassembly", by Dr Ian Logan & Dr    Frank O'Hara, published by Melbourne House Publishers, 1983, is now out of print and unobtainable, as far as I know. To publish an index to it may therefore seem a little perverse. However, myindex is as much an index to the Spectrum ROM itself as to the  Melbourne House publication: I have tried to compile it in a    form that will be useful to Spectrum owners even if they haven'tgot a copy of the book. The vital ROM listing is reproduced as  an Appendix to the index.                                               The index couldn't possibly have been written without   constant use of the work done by Logan & O'Hara; for example allthe labels used to refer to the ROM are taken straight from the "Disassembly". It contains many references to and comments on   the "Disassembly"; see for example under "misprints". If you_do have a copy of the book these references will be useful, if you don't you may still find some of them enlightening.                                                                                                          -----                                                                                                      The items indexed are of five kinds:                         1. Labels. Under each label name, every call or jump to    that label from any part of the ROM is listed, and where        relevant a list of "Rems" indexes every mention of it in "ROM   Disassembled". There is also a description of the operation of  the subroutine labelled, or a cross-reference to the subroutine under which the action of that section is described.                    A label is counted as a_subroutine if it is CALLed from some point in the ROM - though other addresses can be CALLed    from machine code, with suitable precautions, and in a few casesthese are suggested in the index. Subroutines are listed under  their labels, not under the cross-head titles used in           "Disassembly" as headers for each section of the listing.               A label counts as an_exit routine if it includes or     terminates with a RET. It is sometimes, but by no means always, safe to call these from machine code.                                2. The cross-head titles used as headers in "Disassembly", unless they are very similar to the first label: generally theseare merely cross-referenced to the first label used in the      listing, but in a few cases they are treated as "topics", see 4.below.                                                               3. Every key code on the "old" Spectrum. Letter and digit  key codes are indexed under "letter keys" and "digit keys";     including for example the special use of the E key in "E-format"numbers. The other uses eg of the "E" key with symbol shift etc will be found indexed under ">= key", "REM key", "TAN key", "ATNkey". "Commands, functions and operators" are indexed under the corresponding key, but there is an index entry with that title  which gives a summary table.                                            For all but the most straightforward key codes, an      indication is given of how the code is implemented in ROM.           4. Topics, mostly terms mentioned in "Disassembly" which   aren't self-explanatory and aren't normal terms of assembly     language or machine code programming. There are a few additionaltopics: see for example "BASIC interpreter", "Chebyshev         polynomials", "misprints", a full list of all the misprints     encountered in "Disassembly", "mistakes in ROM", "one-byte      binary arithmetic", "useful routines", a list of subroutines    which machine code programmers may find useful.                      5. In the case of system variables, the index shows every  case in which a value is written to the variable, and,          separately, every case in which its value is read by the ROM, aswell as each mention in the "Rems". For the five "flag" system  variables FLAGS, FLAGS2, FLAGX, P FLAG and TV FLAG, this        information is shown for each individual bit of the variable.           Two general notes on the system variables may be        inserted here:                                                          5.1. All the flag svs except P FLAG contain unused bits:       FLAGS bit 4                                                     FLAGS2 bits 7, 6 and 5                                          FLAGX bits 4, 3 and 2                                           TV FLAG bits 7, 6, 2 and 1                                       These 11 spare flags can sometimes be used by machine   code programmers. Beware! Some of them are used by the 128K     Spectrum versions, and some may be pre-empted by hardware       operating systems, eg FLAGS bit 4 is certainly used by the      DISCiPLE disc operating system.                                         5.2. The listing in "Disassembly" contains many         instructions relating to the system variables which appear at   first sight to be impossible, eg in 1CBE CLASS 09: RES 6,(P     FLAG). RES 6,(nnnn) isn't in Z80 assembly language.                     Reference to the machine code will show that such       instructions are expressions for RES 6,(IY+87d) and similar:           FLAGS is IY+1                                                   TV FLAG is IY+2                                                 FLAGS2 is IY+48d                                                FLAGX is IY+55d                                                 P FLAG is IY+87d                                                 Machine code programmers can also make use of such IY   instructions - so long as the value of IY itself, 5C3Ah/23610d, isn't disturbed.                                                                                                                                             -----                                                                                                      The alphabetical order observed throughout is as        follows:                                                             letters A-Z, ignoring spaces and the difference between    upper and lower case except when two items are otherwise        identical, when lower case comes first, and a space precedes    both upper and lower case                                            the numeral digits 0 to 9; even where A-F indicate hex     digits, they precede the digit 0                                     other symbols in Spectrum character code order, except that"underline" and "up arrow" are listed under "U", and the "hatch"symbol code 23h/35d is called (hatch) - these symbols cannot be printed by this word processor!                                         Numbers are suffixed h for hex, d for decimal, b for    binary. They should be presumed to be hex if no indication is   given, unless they are written in full, eg "sixteen" means 10h/ 16d. In many cases both hex and decimal forms are given, eg     10000h/65536d; or binary and hex forms are so given, eg         10001100b/8Ch.                                                          Throughout the index "the notes" means the notes or     "Rems" attached to the listing in "Disassembly": "the index"    means this index.                                                                                                                                            -----                                                                                                                                                                                                                               --------------------------------------------------------------