The Complete Machine Code Tutor (UK) (Face 2) (1985) [Original] [TAPE] [UTILITAIRE].cdt
HexaDumpAscii only
000000:  5A 58 54 61 70 65 21 1A 01 0C 20 97 28 11 16 09    ZXTape!... .(...
000010:  F6 04 08 04 94 04 26 09 02 10 08 11 0A 07 01 00    ......&.........
000020:  FC 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000030:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000040:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000050:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000060:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000070:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000080:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000090:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0000A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0000B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0000C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0000D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0000E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0000F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000100:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000110:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000120:  00 63 73 FF FF FF FF 11 14 09 F6 04 08 04 90 04    .cs.............
000130:  21 09 00 10 08 A3 1F AF 55 00 FB 06 58 2C 58 FE    !....£..U...X,X.
000140:  7D 2D 58 31 58 3E 58 45 58 4F 58 56 58 5D 58 6A    }-X1X>XEXOXVX]Xj
000150:  58 71 58 7B 58 82 58 89 58 96 58 9D 58 A7 58 B1    XqX{X.X.X.X.X.X.
000160:  58 BB 58 C2 58 D8 58 00 00 45 80 01 00 DF 58 00    X.X.X.X..E....X.
000170:  3C 5B 00 C4 5D 00 3D 5E 01 00 C3 5E 02 9D 60 01    <[..].=^...^..`.
000180:  00 26 61 00 CA 63 00 64 66 01 00 07 67 02 06 69    .&a..c.df...g..i
000190:  01 00 73 68 02 D1 67 01 00 AB 69 00 92 6C 00 6E    ..sh..g...i..l.n
0001A0:  6F 00 9B 70 01 00 C6 71 02 75 74 01 00 07 75 00    o..p...q.ut...u.
0001B0:  03 78 00 C7 78 01 00 E2 79 02 FB 7B 01 00 A4 7C    .x..x...y..{...|
0001C0:  02 5A 7D 01 00 77 81 00 BA 83 00 39 86 00 E7 86    .Z}..w.....9....
0001D0:  01 00 BF 88 02 93 8A 01 00 3C 8B 00 79 8D 00 7F    .........<..y...
0001E0:  8F 01 00 CE 91 00 02 95 06 76 9C 01 00 99 96 00    .........v......
0001F0:  A8 98 00 B7 9A 01 00 B6 9B 06 14 96 01 00 05 9D    ................
000200:  00 63 9F 00 29 A1 00 D5 A2 00 CC A4 00 57 A6 00    .c..)........W..
000210:  5D A8 01 00 84 A9 02 3D AB 01 20 20 20 20 20 20    ]......=..      
000220:  20 20 20 20 20 20 20 20 20 20 20 4A 55 4D 50 53               JUMPS
000230:  A0 A0 20 54 68 65 20 61 73 70 65 7D A3 63 74 20    .. The aspe}£ct 
000240:  20 6F 66 20 61 20 63 6F 6D 70 75 74 65 72 20 74     of a computer t
000250:  68 61 74 20 6D 61 6B 65 73 20 69 74 6D 6F 72 65    hat makes itmore
000260:  20 74 68 61 6E 20 61 20 63 61 6C 63 75 6C 61 74     than a calculat
000270:  6F 72 20 69 73 20 69 74 73 20 61 62 69 6C 69 74    or is its abilit
000280:  79 20 74 6F 63 68 61 6E 67 65 20 69 74 73 20 20    y tochange its  
000290:  73 65 71 75 65 6E 63 65 20 6F 66 20 6F 70 65 72    sequence of oper
0002A0:  61 74 69 6F 6E 73 20 61 73 20 20 61 72 65 73 75    ations as  aresu
0002B0:  6C 74 20 6F 66 20 20 65 61 72 6C 69 65 72 20 69    lt of  earlier i
0002C0:  6E 73 74 72 75 63 74 69 6F 6E 73 2E 20 20 57 69    nstructions.  Wi
0002D0:  74 68 69 6E 74 68 65 20 5A 38 30 20 20 74 68 65    thinthe Z80  the
0002E0:  72 65 20 20 69 73 20 61 20 63 6F 75 6E 74 65 72    re  is a counter
0002F0:  20 20 63 61 6C 6C 65 64 20 74 68 65 50 72 6F 67      called theProg
000300:  72 61 6D 20 20 43 6F 75 6E 74 65 72 20 20 6F 72    ram  Counter  or
000310:  20 20 50 43 2E 20 20 54 68 69 73 20 20 63 6F 75      PC.  This  cou
000320:  6E 74 65 72 6B 65 65 70 73 20 20 74 72 61 63 6B    nterkeeps  track
000330:  20 20 6F 66 20 20 77 68 69 63 68 20 20 DE 22 69      of  which  ."i
000340:  6E 73 74 72 75 63 74 69 6F 6E 20 74 68 65 70 72    nstruction thepr
000350:  6F 63 65 73 73 6F 72 20 20 69 73 20 20 74 6F 20    ocessor  is  to 
000360:  20 20 70 65 72 66 6F 72 6D 20 20 20 6E 65 78 74      perform   next
000370:  2E 20 20 20 42 79 6D 6F 64 69 66 79 69 6E 67 20    .   Bymodifying 
000380:  20 69 74 73 20 20 63 6F 6E 74 65 6E 74 73 2C 20     its  contents, 
000390:  74 68 65 20 20 70 72 6F 63 65 73 73 6F 72 63 61    the  processorca
0003A0:  6E 20 20 62 65 20 20 6A 75 6D 70 65 64 20 20 74    n  be  jumped  t
0003B0:  6F 20 20 61 6E 79 20 20 69 6E 73 74 72 75 63 74    o  any  instruct
0003C0:  69 6F 6E 20 69 6E 6D 65 6D 6F 72 79 2E A0 A0 20    ion inmemory... 
0003D0:  54 68 65 20 73 69 6D 70 6C 65 73 74 20 6A 75 6D    The simplest jum
0003E0:  70 20 69 73 20 4A 50 20 6E 6E 2C 20 77 68 65 72    p is JP nn, wher
0003F0:  65 20 6E 6E 20 69 73 74 68 65 20 61 64 64 72 65    e nn isthe addre
000400:  73 73 20 74 6F 20 20 77 68 69 63 68 20 74 68 65    ss to  which the
000410:  20 20 70 72 6F 67 72 61 6D 20 69 73 20 74 6F 6A      program is toj
000420:  75 6D 70 2E 20 54 68 69 73 20 69 73 20 61 6E 20    ump. This is an 
000430:  75 6E 63 6F 6E 64 69 74 69 6F 6E 61 6C 20 6A 14    unconditional j.
000440:  89 75 6D 70 2C 20 74 68 65 50 72 6F 67 72 61 6D    .ump, theProgram
000450:  20 20 43 6F 75 6E 74 65 72 20 61 6C 77 61 79 73      Counter always
000460:  20 6A 75 6D 70 69 6E 67 20 20 74 6F 20 20 74 68     jumping  to  th
000470:  65 61 64 64 72 65 73 73 20 6E 6E 2E A3 20 54 68    eaddress nn.£ Th
000480:  65 20 20 20 6D 6F 72 65 20 20 20 70 6F 77 65 72    e   more   power
000490:  66 75 6C 20 20 20 6A 75 6D 70 20 20 20 69 73 20    ful   jump   is 
0004A0:  20 20 74 68 65 63 6F 6E 64 69 74 69 6F 6E 61 6C      theconditional
0004B0:  20 20 6A 75 6D 70 2E 20 20 54 68 65 20 20 70 72      jump.  The  pr
0004C0:  6F 63 65 73 73 6F 72 20 74 65 73 74 73 74 68 65    ocessor teststhe
0004D0:  20 20 73 74 61 74 65 20 20 6F 66 20 20 61 20 20      state  of  a  
0004E0:  66 6C 61 67 2C 20 20 62 65 66 6F 72 65 20 20 65    flag,  before  e
0004F0:  69 74 68 65 72 6A 75 6D 70 69 6E 67 20 6F 72 20    itherjumping or 
000500:  63 6F 6E 74 69 6E 75 69 6E 67 20 69 6E 20 20 73    continuing in  s
000510:  65 71 75 65 6E 63 65 2E A0 A0 20 54 68 65 20 20    equence... The  
000520:  63 6F 6E 64 69 74 69 6F 6E 61 6C 20 20 6A 75 6D    conditional  jum
000530:  70 73 20 20 69 6E 76 6F 6C 76 69 6E 67 20 20 74    ps  involving  t
000540:  68 12 9C 65 63 61 72 72 79 20 61 6E 64 20 7A 65    h..ecarry and ze
000550:  72 6F 20 66 6C 61 67 73 20 61 72 65 3A 2D A0 A0    ro flags are:-..
000560:  4A 50 20 4E 43 2C 6E 6E 20 20 20 20 6A 75 6D 70    JP NC,nn    jump
000570:  20 69 66 20 63 61 72 72 79 20 66 6C 61 67 20 6E     if carry flag n
000580:  6F 74 20 73 65 74 A0 4A 50 20 43 2C 6E 6E 20 20    ot set.JP C,nn  
000590:  20 20 20 6A 75 6D 70 20 69 66 20 63 61 72 72 79       jump if carry
0005A0:  20 66 6C 61 67 20 73 65 74 A0 4A 50 20 4E 5A 2C     flag set.JP NZ,
0005B0:  6E 6E 20 20 20 20 6A 75 6D 70 20 69 66 20 7A 65    nn    jump if ze
0005C0:  72 6F 20 20 66 6C 61 67 20 6E 6F 74 20 73 65 74    ro  flag not set
0005D0:  A0 4A 50 20 5A 2C 6E 6E 20 20 20 20 20 6A 75 6D    .JP Z,nn     jum
0005E0:  70 20 69 66 20 7A 65 72 6F 20 20 66 6C 61 67 20    p if zero  flag 
0005F0:  73 65 74 A0 A0 20 49 6E 64 69 72 65 63 74 20 6A    set.. Indirect j
000600:  75 6D 70 73 20 20 61 72 65 20 20 61 6C 73 6F 20    umps  are  also 
000610:  20 61 76 61 69 6C 61 62 6C 65 20 6F 6E 74 68 65     available onthe
000620:  20 5A 38 30 20 75 73 69 6E 67 20 20 74 68 65 20     Z80 using  the 
000630:  20 48 4C 20 20 20 72 65 67 69 73 74 65 72 20 20     HL   register  
000640:  70 61 69 A4 CE 72 2E 54 68 65 20 20 20 69 6E 73    pai..r.The   ins
000650:  74 72 75 63 74 69 6F 6E 20 20 20 4A 50 20 28 48    truction   JP (H
000660:  4C 29 20 20 20 6C 6F 61 64 73 20 20 74 68 65 70    L)   loads  thep
000670:  72 6F 67 72 61 6D 20 63 6F 75 6E 74 65 72 20 77    rogram counter w
000680:  69 74 68 20 74 68 65 20 63 6F 6E 74 65 6E 74 73    ith the contents
000690:  20 6F 66 20 74 68 65 48 4C 20 72 65 67 69 73 74     of theHL regist
0006A0:  65 72 2E 20 20 54 68 75 73 20 20 74 68 65 20 61    er.  Thus  the a
0006B0:  64 64 72 65 73 73 20 20 6F 66 20 20 74 68 65 6E    ddress  of  then
0006C0:  65 78 74 20 20 69 6E 73 74 72 75 63 74 69 6F 6E    ext  instruction
0006D0:  20 20 74 6F 20 20 62 65 20 20 70 65 72 66 6F 72      to  be  perfor
0006E0:  6D 65 64 20 20 69 73 63 6F 6E 74 61 69 6E 65 64    med  iscontained
0006F0:  20 77 69 74 68 69 6E 20 74 68 65 20 48 4C 20 72     within the HL r
000700:  65 67 69 73 74 65 72 2E A3 53 69 6E 63 65 20 20    egister.£Since  
000710:  74 68 65 20 63 6F 6E 74 65 6E 74 73 20 6F 66 20    the contents of 
000720:  74 68 65 20 20 48 4C 20 20 72 65 67 69 73 74 65    the  HL  registe
000730:  72 70 61 69 72 20 20 20 63 61 6E 20 20 20 62 65    rpair   can   be
000740:  20 20 74 68 65 26 2D 20 20 72 65 73 75 6C 74 20      the&-  result 
000750:  20 20 6F 66 20 20 20 73 6F 6D 65 63 61 6C 63 75      of   somecalcu
000760:  6C 61 74 69 6F 6E 20 74 68 65 20 6A 75 6D 70 20    lation the jump 
000770:  63 61 6E 20 62 65 20 63 6F 6E 64 69 74 69 6F 6E    can be condition
000780:  61 6C 2E A3 20 53 75 6D 6D 61 72 79 20 2D 20 6A    al.£ Summary - j
000790:  75 6D 70 73 A0 A0 4A 50 20 6E 6E A0 4A 50 20 28    umps..JP nn.JP (
0007A0:  48 4C 29 A0 A0 4A 50 20 4E 43 2C 6E 6E 20 20 6A    HL)..JP NC,nn  j
0007B0:  75 6D 70 20 6F 6E 20 6E 6F 20 63 61 72 72 79 A0    ump on no carry.
0007C0:  4A 50 20 43 2C 6E 6E 20 20 20 6A 75 6D 70 20 6F    JP C,nn   jump o
0007D0:  6E 20 63 61 72 72 79 A0 4A 50 20 4E 5A 2C 6E 6E    n carry.JP NZ,nn
0007E0:  20 20 6A 75 6D 70 20 6F 6E 20 6E 6F 74 20 7A 65      jump on not ze
0007F0:  72 6F A0 4A 50 20 5A 2C 6E 6E 20 20 20 6A 75 6D    ro.JP Z,nn   jum
000800:  70 20 6F 6E 20 7A 65 72 6F A3 20 20 20 20 20 20    p on zero£      
000810:  20 20 20 45 58 41 4D 50 4C 45 53 20 4F 46 20 4A       EXAMPLES OF J
000820:  55 4D 50 53 A0 A0 20 41 6C 74 68 6F 75 67 68 20    UMPS.. Although 
000830:  20 79 6F 75 20 20 63 61 6E 20 20 65 6E 74 65 72     you  can  enter
000840:  20 20 74 68 65 20 20 19 EB 61 64 64 72 65 73 73      the  ..address
000850:  77 69 74 68 69 6E 20 74 68 65 20 6A 75 6D 70 20    within the jump 
000860:  69 6E 20 20 6E 75 6D 62 65 72 20 20 66 6F 72 6D    in  number  form
000870:  2C 20 20 69 66 20 69 74 64 6F 65 73 20 6E 6F 74    ,  if itdoes not
000880:  20 65 71 75 61 6C 20 74 68 65 20 61 64 64 72 65     equal the addre
000890:  73 73 20 6F 66 20 20 74 68 65 20 73 74 61 72 74    ss of  the start
0008A0:  6F 66 20 61 6E 20 20 69 6E 73 74 72 75 63 74 69    of an  instructi
0008B0:  6F 6E 2C 20 20 74 68 65 20 73 69 6D 75 6C 61 74    on,  the simulat
0008C0:  6F 72 20 20 77 69 6C 6C 73 74 6F 70 20 61 74 20    or  willstop at 
0008D0:  74 68 65 20 20 4A 55 4D 50 2E 20 20 54 68 69 73    the  JUMP.  This
0008E0:  20 69 73 20 62 65 63 61 75 73 65 20 20 74 68 65     is because  the
0008F0:  70 72 6F 63 65 73 73 6F 72 20 77 6F 75 6C 64 20    processor would 
000900:  70 65 72 66 6F 72 6D 20 20 74 68 65 20 69 6E 73    perform  the ins
000910:  74 72 75 63 74 69 6F 6E 69 74 20 66 69 6E 64 73    tructionit finds
000920:  20 20 61 74 20 20 74 68 61 74 20 20 61 64 64 72      at  that  addr
000930:  65 73 73 20 61 6E 64 20 61 6E 79 74 68 69 6E 67    ess and anything
000940:  63 6F 75 6C 64 20 68 61 70 AD 26 70 65 6E 20 61    could hap.&pen a
000950:  6E 64 20 75 73 75 61 6C 6C 79 20 64 6F 65 73 2E    nd usually does.
000960:  A0 A0 20 54 6F 20 67 65 74 20 72 6F 75 6E 64 20    .. To get round 
000970:  74 68 69 73 20 70 72 6F 62 6C 65 6D 20 20 75 73    this problem  us
000980:  65 20 61 20 6C 61 62 65 6C 2C 64 65 63 6C 61 72    e a label,declar
000990:  69 6E 67 20 20 69 74 20 20 69 6E 20 20 74 68 65    ing  it  in  the
0009A0:  20 20 6C 61 62 65 6C 20 20 63 6F 6C 75 6D 6E 20      label  column 
0009B0:  69 6E 66 72 6F 6E 74 20 6F 66 20 74 68 65 20 20    infront of the  
0009C0:  69 6E 73 74 72 75 63 74 69 6F 6E 20 20 74 6F 20    instruction  to 
0009D0:  77 68 69 63 68 20 20 79 6F 75 77 69 73 68 20 74    which  youwish t
0009E0:  6F 20 6A 75 6D 70 2E A3 20 4C 44 20 48 4C 2C 53    o jump.£ LD HL,S
0009F0:  54 4F 52 45 A0 20 20 4C 44 20 41 2C 33 A0 20 4C    TORE.  LD A,3. L
000A00:  4F 4F 50 31 20 4C 44 20 28 48 4C 29 2C 41 A0 20    OOP1 LD (HL),A. 
000A10:  20 49 4E 43 20 41 A0 20 20 43 50 20 38 A0 20 20     INC A.  CP 8.  
000A20:  4A 50 20 4E 5A 2C 4C 4F 4F 50 31 A0 20 20 A0 20    JP NZ,LOOP1.  . 
000A30:  4C 4F 4F 50 32 20 44 45 43 20 28 48 4C 29 A0 20    LOOP2 DEC (HL). 
000A40:  20 4A 50 20 4E 5A 2C 4C 4F 4F 50 DB 71 32 A0 20     JP NZ,LOOP.q2. 
000A50:  20 52 45 54 A0 20 20 A0 20 20 A0 20 53 54 4F 52     RET.  .  . STOR
000A60:  45 20 44 45 46 42 20 30 A0 20 20 A0 20 20 A0 20    E DEFB 0.  .  . 
000A70:  20 A0 20 20 20 20 20 20 20 20 20 20 20 20 52 45     .            RE
000A80:  4C 41 54 49 56 45 20 4A 55 4D 50 53 A0 A0 20 4F    LATIVE JUMPS.. O
000A90:  6E 65 20 64 69 66 66 69 63 75 6C 74 79 20 77 69    ne difficulty wi
000AA0:  74 68 20 74 68 65 20 20 61 62 6F 76 65 20 74 79    th the  above ty
000AB0:  70 65 73 20 6F 66 6A 75 6D 70 20 69 73 20 74 68    pes ofjump is th
000AC0:  61 74 2C 20 20 69 66 20 20 74 68 65 20 20 73 74    at,  if  the  st
000AD0:  61 72 74 20 61 64 64 72 65 73 73 20 6F 66 74 68    art address ofth
000AE0:  65 20 70 72 6F 67 72 61 6D 20 20 77 65 72 65 20    e program  were 
000AF0:  63 68 61 6E 67 65 64 2C 20 61 6C 6C 20 74 68 65    changed, all the
000B00:  20 20 6A 75 6D 70 61 64 64 72 65 73 73 65 73 20      jumpaddresses 
000B10:  20 77 6F 75 6C 64 20 20 72 65 71 75 69 72 65 20     would  require 
000B20:  20 6D 6F 64 69 66 69 63 61 74 69 6F 6E 2E 52 65     modification.Re
000B30:  6C 61 74 69 76 65 20 20 6A 75 6D 70 73 20 20 64    lative  jumps  d
000B40:  6F 20 20 20 6E 6F 74 20 20 20 68 61 76 06 EE 65    o   not   hav..e
000B50:  20 20 20 20 74 68 69 73 64 69 66 66 69 63 75 6C        thisdifficul
000B60:  74 79 2E 20 54 68 65 20 61 62 73 6F 6C 75 74 65    ty. The absolute
000B70:  20 61 64 64 72 65 73 73 20 69 73 20 20 6E 6F 74     address is  not
000B80:  73 74 6F 72 65 64 20 20 77 69 74 68 20 20 74 68    stored  with  th
000B90:  65 20 69 6E 73 74 72 75 63 74 69 6F 6E 2E 20 49    e instruction. I
000BA0:  74 20 69 73 20 74 68 65 64 69 66 66 65 72 65 6E    t is thedifferen
000BB0:  63 65 20 20 62 65 74 77 65 65 6E 20 74 68 65 20    ce  between the 
000BC0:  63 75 72 72 65 6E 74 20 63 6F 6E 74 65 6E 74 73    current contents
000BD0:  6F 66 20 74 68 65 20 70 72 6F 67 72 61 6D 20 20    of the program  
000BE0:  63 6F 75 6E 74 65 72 20 61 6E 64 20 74 68 65 20    counter and the 
000BF0:  20 61 64 64 72 65 73 73 74 6F 20 77 68 69 63 68     addressto which
000C00:  20 20 77 65 20 77 69 73 68 20 74 6F 20 6A 75 6D      we wish to jum
000C10:  70 20 74 68 61 74 20 69 73 20 73 74 6F 72 65 64    p that is stored
000C20:  77 69 74 68 69 6E 20 20 74 68 65 20 69 6E 73 74    within  the inst
000C30:  72 75 63 74 69 6F 6E 2E 20 20 52 65 6C 61 74 69    ruction.  Relati
000C40:  76 65 20 6A 75 6D 70 73 61 72 65 20 20 6C 69 6A    ve jumpsare  lij
000C50:  8B 6D 69 74 65 64 20 74 6F 20 20 6A 75 6D 70 69    .mited to  jumpi
000C60:  6E 67 20 20 62 61 63 6B 77 61 72 64 73 20 20 31    ng  backwards  1
000C70:  32 38 6C 6F 63 61 74 69 6F 6E 73 20 61 6E 64 20    28locations and 
000C80:  66 6F 72 77 61 72 64 73 20 31 32 37 20 6C 6F 63    forwards 127 loc
000C90:  61 74 69 6F 6E 73 2E A0 A0 20 54 68 65 20 6D 6E    ations... The mn
000CA0:  65 6D 6F 6E 69 63 20 66 6F 72 20 20 72 65 6C 61    emonic for  rela
000CB0:  74 69 76 65 20 6A 75 6D 70 73 20 69 73 20 20 4A    tive jumps is  J
000CC0:  52 61 6E 64 20 63 61 6E 20 74 61 6B 65 20 61 6C    Rand can take al
000CD0:  6C 20 74 68 65 20 66 6F 72 6D 73 20 64 69 73 63    l the forms disc
000CE0:  75 73 73 65 64 20 20 73 6F 66 61 72 20 66 6F 72    ussed  sofar for
000CF0:  20 4A 50 2C 20 69 2E 65 2E 20 4A 52 20 2C 20 4A     JP, i.e. JR , J
000D00:  52 20 4E 43 2C 20 4A 52 20 43 2C 20 4A 52 20 4E    R NC, JR C, JR N
000D10:  5A 61 6E 64 20 4A 52 20 5A 2E A3 20 54 68 65 72    Zand JR Z.£ Ther
000D20:  65 20 20 69 73 20 6F 6E 65 20 70 61 72 74 69 63    e  is one partic
000D30:  75 6C 61 72 20 20 72 65 6C 61 74 69 76 65 20 6A    ular  relative j
000D40:  75 6D 70 69 6E 73 74 72 75 63 74 69 6F 6E 20 74    umpinstruction t
000D50:  68 8F F0 61 74 20 69 73 20 70 61 72 74 69 63 75    h..at is particu
000D60:  6C 61 72 6C 79 20 20 75 73 65 66 75 6C 6E 61 6D    larly  usefulnam
000D70:  65 6C 79 20 20 44 65 63 72 65 6D 65 6E 74 20 20    ely  Decrement  
000D80:  61 6E 64 20 4A 75 6D 70 20 6F 6E 20 4E 6F 6E 2D    and Jump on Non-
000D90:  5A 65 72 6F 2C 6F 72 20 44 4A 4E 5A 2E 20 20 20    Zero,or DJNZ.   
000DA0:  54 68 65 20 42 20 72 65 67 69 73 74 65 72 20 69    The B register i
000DB0:  73 20 64 65 63 72 65 6D 65 6E 74 65 64 61 6E 64    s decrementedand
000DC0:  2C 20 20 69 66 20 20 74 68 65 20 20 72 65 73 75    ,  if  the  resu
000DD0:  6C 74 20 20 69 73 20 20 6E 6F 74 20 7A 65 72 6F    lt  is  not zero
000DE0:  2C 20 74 68 65 70 72 6F 63 65 73 73 6F 72 20 20    , theprocessor  
000DF0:  70 65 72 66 6F 72 6D 73 20 20 61 20 72 65 6C 61    performs  a rela
000E00:  74 69 76 65 20 20 6A 75 6D 70 20 74 6F 74 68 65    tive  jump tothe
000E10:  20 63 6F 6D 70 75 74 65 64 20 6E 65 77 20 61 64     computed new ad
000E20:  64 72 65 73 73 2E 20 49 66 20 74 68 65 20 20 72    dress. If the  r
000E30:  65 73 75 6C 74 69 73 20 20 7A 65 72 6F 20 20 74    esultis  zero  t
000E40:  68 65 6E 20 20 74 68 65 20 20 6E 65 78 74 20 69    hen  the  next i
000E50:  6E 73 74 5A 4D 72 75 63 74 69 6F 6E 20 69 6E 73    nstZMruction ins
000E60:  65 71 75 65 6E 63 65 20 69 73 20 74 61 6B 65 6E    equence is taken
000E70:  2E 20 20 44 4A 4E 5A 20 20 61 6C 6C 6F 77 73 20    .  DJNZ  allows 
000E80:  20 75 73 20 20 74 6F 72 65 70 65 61 74 20 61 20     us  torepeat a 
000E90:  73 65 72 69 65 73 20 6F 66 20 69 6E 73 74 72 75    series of instru
000EA0:  63 74 69 6F 6E 73 20 61 20 70 72 65 73 65 74 6E    ctions a presetn
000EB0:  75 6D 62 65 72 20 6F 66 20 74 69 6D 65 73 2E 20    umber of times. 
000EC0:  54 68 65 20 20 6E 75 6D 62 65 72 20 6F 66 20 20    The  number of  
000ED0:  72 65 70 65 61 74 73 69 73 20 20 65 71 75 61 6C    repeatsis  equal
000EE0:  20 20 74 6F 20 20 74 68 65 20 20 63 6F 6E 74 65      to  the  conte
000EF0:  6E 74 73 20 20 6F 66 20 20 74 68 65 20 20 42 72    nts  of  the  Br
000F00:  65 67 69 73 74 65 72 20 77 68 65 6E 20 74 68 65    egister when the
000F10:  20 20 6C 6F 6F 70 20 69 73 20 20 65 6E 74 65 72      loop is  enter
000F20:  65 64 2C 20 20 73 6F 6C 6F 6E 67 20 20 61 73 20    ed,  solong  as 
000F30:  20 74 68 65 20 20 42 20 20 72 65 67 69 73 74 65     the  B  registe
000F40:  72 20 64 6F 65 73 20 6E 6F 74 20 66 6F 72 6D 70    r does not formp
000F50:  61 72 74 20 6F FC 51 66 20 74 68 65 20 73 65 72    art o.Qf the ser
000F60:  69 65 73 20 6F 66 20 69 6E 73 74 72 75 63 74 69    ies of instructi
000F70:  6F 6E 73 2E A0 A0 20 4E 6F 20 20 66 6C 61 67 73    ons... No  flags
000F80:  20 20 61 72 65 20 20 61 66 66 65 63 74 65 64 20      are  affected 
000F90:  20 62 79 20 20 61 6E 79 20 20 6A 75 6D 70 69 6E     by  any  jumpin
000FA0:  73 74 72 75 63 74 69 6F 6E 73 20 69 6E 63 6C 75    structions inclu
000FB0:  64 69 6E 67 20 44 4A 4E 5A 2E A3 20 53 75 6D 6D    ding DJNZ.£ Summ
000FC0:  61 72 79 20 2D 20 72 65 6C 61 74 69 76 65 20 6A    ary - relative j
000FD0:  75 6D 70 73 A0 A0 4A 52 20 65 20 20 20 20 20 20    umps..JR e      
000FE0:  77 68 65 72 65 20 65 20 69 73 20 74 68 65 20 64    where e is the d
000FF0:  69 73 70 6C 61 63 65 6D 65 6E 74 20 69 6E 4A 52    isplacement inJR
001000:  20 4E 43 2C 65 20 20 20 74 68 65 20 72 61 6E 67     NC,e   the rang
001010:  65 20 31 32 37 20 74 6F 20 2D 31 32 38 A0 4A 52    e 127 to -128.JR
001020:  20 43 2C 65 A0 4A 52 20 4E 5A 2C 65 A0 4A 52 20     C,e.JR NZ,e.JR 
001030:  5A 2C 65 A0 A0 44 4A 4E 5A 20 65 20 20 20 20 64    Z,e..DJNZ e    d
001040:  65 63 72 65 6D 65 6E 74 20 61 6E 64 20 6A 75 6D    ecrement and jum
001050:  70 20 6F 6E 20 6E 6F 05 E6 6E 20 7A 65 72 6F A3    p on no..n zero£
001060:  20 20 20 20 20 20 20 45 58 41 4D 50 4C 45 20 4F           EXAMPLE O
001070:  46 20 52 45 4C 41 54 49 56 45 20 4A 55 4D 50 53    F RELATIVE JUMPS
001080:  A0 A0 20 41 6C 6C 20 61 73 73 65 6D 62 6C 65 72    .. All assembler
001090:  73 20 20 63 61 6C 63 75 6C 61 74 65 20 74 68 65    s  calculate the
0010A0:  20 64 69 73 70 6C 61 63 65 2D 6D 65 6E 74 20 66     displace-ment f
0010B0:  6F 72 20 72 65 6C 61 74 69 76 65 20 6A 75 6D 70    or relative jump
0010C0:  73 2E 20 20 20 54 68 65 20 61 73 73 65 6D 62 6C    s.   The assembl
0010D0:  65 72 77 69 74 68 69 6E 20 20 20 74 68 69 73 20    erwithin   this 
0010E0:  20 54 55 54 4F 52 20 20 69 73 20 20 6E 6F 20 20     TUTOR  is  no  
0010F0:  65 78 63 65 70 74 69 6F 6E 2E 52 65 6C 61 74 69    exception.Relati
001100:  76 65 20 6A 75 6D 70 73 20 20 73 68 6F 75 6C 64    ve jumps  should
001110:  20 20 62 65 20 20 65 6E 74 65 72 65 64 20 77 69      be  entered wi
001120:  74 68 6C 61 62 65 6C 73 2E A3 20 4C 44 20 48 4C    thlabels.£ LD HL
001130:  2C 53 54 4F 52 45 A0 20 20 4C 44 20 42 2C 28 48    ,STORE.  LD B,(H
001140:  4C 29 A0 20 20 49 4E 43 20 48 4C A0 20 20 4C 44    L).  INC HL.  LD
001150:  20 45 2C 28 48 4C 29 A0 20 8A 07 20 4C 44 20 48     E,(HL). .. LD H
001160:  4C 2C 30 A0 20 20 4C 44 20 44 2C 30 A0 20 4C 4F    L,0.  LD D,0. LO
001170:  4F 50 20 20 41 44 44 20 48 4C 2C 44 45 A0 20 20    OP  ADD HL,DE.  
001180:  44 4A 4E 5A 20 4C 4F 4F 50 A0 20 20 4C 44 20 28    DJNZ LOOP.  LD (
001190:  41 4E 53 29 2C 48 4C A0 20 20 52 45 54 A0 20 20    ANS),HL.  RET.  
0011A0:  A0 20 53 54 4F 52 45 20 44 45 46 42 20 36 A0 20    . STORE DEFB 6. 
0011B0:  20 44 45 46 42 20 35 38 A0 20 41 4E 53 20 20 20     DEFB 58. ANS   
0011C0:  44 45 46 57 20 30 A0 20 20 A0 20 20 A0 20 20 20    DEFW 0.  .  .   
0011D0:  20 20 20 20 45 58 41 4D 50 4C 45 20 4F 46 20 52        EXAMPLE OF R
0011E0:  45 4C 41 54 49 56 45 20 4A 55 4D 50 53 A0 A0 20    ELATIVE JUMPS.. 
0011F0:  54 68 69 73 20 20 65 78 61 6D 70 6C 65 20 20 69    This  example  i
001200:  6C 6C 75 73 74 72 61 74 65 73 20 61 20 6D 65 74    llustrates a met
001210:  68 6F 64 20 20 6F 66 6D 75 6C 74 69 70 6C 69 63    hod  ofmultiplic
001220:  61 74 69 6F 6E 2E 20 20 54 68 65 72 65 20 61 72    ation.  There ar
001230:  65 20 20 6F 74 68 65 72 20 66 61 73 74 65 72 6D    e  other fasterm
001240:  65 74 68 6F 64 73 20 74 68 61 74 20 77 69 6C 6C    ethods that will
001250:  20 62 65 20 73 68 6F 77 6E 20 6C F9 DD 61 74 65     be shown l..ate
001260:  72 2E A3 20 4C 44 20 41 2C 31 A0 20 4C 4F 4F 50    r.£ LD A,1. LOOP
001270:  31 20 41 44 44 20 41 2C 41 A0 20 20 4C 44 20 28    1 ADD A,A.  LD (
001280:  53 54 4F 52 45 29 2C 41 A0 20 20 4A 52 20 4E 43    STORE),A.  JR NC
001290:  2C 4C 4F 4F 50 31 A0 20 20 49 4E 43 20 41 A0 20    ,LOOP1.  INC A. 
0012A0:  20 4C 44 20 42 2C 37 A0 20 4C 4F 4F 50 32 20 41     LD B,7. LOOP2 A
0012B0:  44 44 20 41 2C 41 A0 20 20 4C 44 20 28 53 54 4F    DD A,A.  LD (STO
0012C0:  52 45 29 2C 41 A0 20 20 49 4E 43 20 41 A0 20 20    RE),A.  INC A.  
0012D0:  4C 44 20 28 53 54 4F 52 45 29 2C 41 A0 20 20 44    LD (STORE),A.  D
0012E0:  4A 4E 5A 20 4C 4F 4F 50 32 A0 20 20 52 45 54 A0    JNZ LOOP2.  RET.
0012F0:  20 20 A0 20 53 54 4F 52 45 20 44 45 46 42 20 30      . STORE DEFB 0
001300:  A0 20 20 A0 20 20 A0 20 20 20 20 20 20 20 20 20    .  .  .         
001310:  20 20 20 20 20 20 20 54 48 45 20 53 54 41 43 4B           THE STACK
001320:  A0 A0 20 54 68 65 20 53 74 61 63 6B 20 69 73 20    .. The Stack is 
001330:  61 6E 20 61 72 65 61 20 6F 66 20 65 78 74 65 72    an area of exter
001340:  6E 61 6C 20 52 61 6E 64 6F 6D 41 63 63 65 73 73    nal RandomAccess
001350:  20 4D 65 6D 6F 72 79 2C 20 20 74 68 61 0E C2 74     Memory,  tha..t
001360:  20 69 73 20 75 73 65 64 20 61 73 20 61 20 73 65     is used as a se
001370:  72 69 65 73 6F 66 20 72 65 67 69 73 74 65 72 20    riesof register 
001380:  70 61 69 72 73 2C 20 69 6E 20 63 6F 6E 6A 75 6E    pairs, in conjun
001390:  63 74 69 6F 6E 20 77 69 74 68 20 61 53 74 61 63    ction with aStac
0013A0:  6B 20 50 6F 69 6E 74 65 72 2E 20 54 68 65 20 53    k Pointer. The S
0013B0:  74 61 63 6B 20 50 6F 69 6E 74 65 72 20 28 53 50    tack Pointer (SP
0013C0:  29 20 69 73 69 73 20 73 69 6E 67 6C 65 20 20 64    ) isis single  d
0013D0:  6F 75 62 6C 65 20 6C 65 6E 67 74 68 20 72 65 67    ouble length reg
0013E0:  69 73 74 65 72 20 77 69 74 68 69 6E 74 68 65 20    ister withinthe 
0013F0:  5A 38 30 2C 20 63 61 70 61 62 6C 65 20 6F 66 20    Z80, capable of 
001400:  68 6F 6C 64 69 6E 67 20 75 70 20 74 6F 20 36 35    holding up to 65
001410:  33 33 35 2E A0 20 42 65 66 6F 72 65 20 20 6C 6F    335.. Before  lo
001420:  61 64 69 6E 67 20 20 20 74 68 65 20 20 53 74 61    ading   the  Sta
001430:  63 6B 20 20 66 72 6F 6D 20 20 61 6E 79 69 6E 74    ck  from  anyint
001440:  65 72 6E 61 6C 20 20 20 72 65 67 69 73 74 65 72    ernal   register
001450:  20 20 20 70 61 69 72 2C 20 20 20 74 68 65 20 0A       pair,   the .
001460:  D6 20 53 74 61 63 6B 50 6F 69 6E 74 65 72 20 20    . StackPointer  
001470:  69 73 20 20 64 65 63 72 65 6D 65 6E 74 65 64 20    is  decremented 
001480:  20 74 77 69 63 65 2C 20 20 28 20 74 68 75 73 70     twice,  ( thusp
001490:  6F 69 6E 74 69 6E 67 20 20 74 6F 20 74 68 65 20    ointing  to the 
0014A0:  20 6E 65 78 74 20 20 70 61 69 72 20 20 6F 66 20     next  pair  of 
0014B0:  20 6D 65 6D 6F 72 79 6C 6F 63 61 74 69 6F 6E 73     memorylocations
0014C0:  29 2E 20 54 68 65 20 63 6F 6E 74 65 6E 74 73 20    ). The contents 
0014D0:  6F 66 20 74 68 65 20 72 65 67 69 73 74 65 72 69    of the registeri
0014E0:  73 20 74 68 65 6E 20 6C 6F 61 64 65 64 20 69 6E    s then loaded in
0014F0:  74 6F 20 74 68 65 20 53 74 61 63 6B 20 69 6E 64    to the Stack ind
001500:  69 72 65 63 74 6C 79 75 73 69 6E 67 20 74 68 65    irectlyusing the
001510:  20 53 50 20 72 65 67 69 73 74 65 72 20 61 73 20     SP register as 
001520:  74 68 65 20 61 64 64 72 65 73 73 2E A0 A0 20 54    the address... T
001530:  68 65 20 69 6E 73 74 72 75 63 74 69 6F 6E 20 69    he instruction i
001540:  73 20 50 55 53 48 20 64 64 2E 20 20 43 6F 6E 74    s PUSH dd.  Cont
001550:  69 6E 75 69 6E 67 74 6F 20 50 55 53 48 20 20 64    inuingto PUSH  d
001560:  61 F2 D0 74 61 20 6F 6E 20 74 6F 20 74 68 65 20    a..ta on to the 
001570:  53 74 61 63 6B 20 72 65 73 75 6C 74 73 20 69 6E    Stack results in
001580:  74 68 65 20 20 64 61 74 61 20 20 62 65 69 6E 67    the  data  being
001590:  20 70 75 73 68 65 64 20 69 6E 20 61 74 20 74 68     pushed in at th
0015A0:  65 20 62 6F 74 74 6F 6D 6F 66 20 20 74 68 65 20    e bottomof  the 
0015B0:  20 53 74 61 63 6B 20 20 61 6E 64 20 20 74 68 65     Stack  and  the
0015C0:  20 20 53 74 61 63 6B 20 20 50 6F 69 6E 74 65 72      Stack  Pointer
0015D0:  77 6F 72 6B 69 6E 67 20 69 74 73 20 77 61 79 20    working its way 
0015E0:  64 6F 77 6E 20 74 68 72 6F 75 67 68 20 6D 65 6D    down through mem
0015F0:  6F 72 79 2E A3 20 50 4F 50 20 64 64 20 20 72 65    ory.£ POP dd  re
001600:  74 72 69 65 76 65 73 20 20 64 61 74 61 20 20 66    trieves  data  f
001610:  72 6F 6D 20 74 68 65 20 53 74 61 63 6B 69 6E 74    rom the Stackint
001620:  6F 20 20 74 68 65 20 20 64 65 66 69 6E 65 64 20    o  the  defined 
001630:  20 72 65 67 69 73 74 65 72 20 20 70 61 69 72 2E     register  pair.
001640:  20 20 54 68 65 72 65 67 69 73 74 65 72 20 20 20      Theregister   
001650:  70 61 69 72 20 20 69 73 20 20 6C 6F 61 64 65 64    pair  is  loaded
001660:  20 20 20 46 75 77 69 74 68 20 20 20 74 68 65 63       Fuwith   thec
001670:  6F 6E 74 65 6E 74 73 20 6F 66 20 74 68 65 20 20    ontents of the  
001680:  6D 65 6D 6F 72 79 20 6C 6F 63 61 74 69 6F 6E 20    memory location 
001690:  70 6F 69 6E 74 65 64 74 6F 20 62 79 20 53 50 20    pointedto by SP 
0016A0:  72 65 67 69 73 74 65 72 2E 20 20 54 68 65 6E 20    register.  Then 
0016B0:  20 74 68 65 20 53 50 20 69 73 20 69 6E 63 2D 72     the SP is inc-r
0016C0:  65 6D 65 6E 74 65 64 20 74 77 69 63 65 2E A0 A0    emented twice...
0016D0:  20 43 6F 6E 74 69 6E 75 69 6E 67 20 20 74 6F 20     Continuing  to 
0016E0:  20 50 4F 50 20 64 61 74 61 20 66 72 6F 6D 20 74     POP data from t
0016F0:  68 65 20 53 74 61 63 6B 72 65 73 75 6C 74 73 20    he Stackresults 
001700:  69 6E 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 20 62    in information b
001710:  65 69 6E 67 20 50 4F 50 70 65 64 20 66 72 6F 6D    eing POPped from
001720:  74 68 65 20 62 6F 74 74 6F 6D 20 20 6F 66 20 74    the bottom  of t
001730:  68 65 20 53 74 61 63 6B 20 61 6E 64 20 20 74 68    he Stack and  th
001740:  65 20 20 53 74 61 63 6B 50 6F 69 6E 74 65 72 20    e  StackPointer 
001750:  77 6F 72 6B 69 6E 67 20 69 74 73 20 77 61 79 20    working its way 
001760:  62 61 63 6B 20 B0 EB 75 70 20 20 74 68 72 6F 75    back ..up  throu
001770:  67 68 74 68 65 20 6D 65 6D 6F 72 79 2E A0 A0 20    ghthe memory... 
001780:  49 66 20 20 61 20 20 73 65 72 69 65 73 20 6F 66    If  a  series of
001790:  20 72 65 67 69 73 74 65 72 73 20 69 73 20 50 55     registers is PU
0017A0:  53 48 65 64 20 6F 6E 74 6F 20 74 68 65 20 20 53    SHed onto the  S
0017B0:  74 61 63 6B 2C 20 20 61 6E 64 20 73 75 62 73 65    tack,  and subse
0017C0:  71 75 65 6E 74 6C 79 20 20 50 4F 50 70 65 64 6F    quently  POPpedo
0017D0:  66 66 20 74 68 65 20 20 53 74 61 63 6B 2C 20 20    ff the  Stack,  
0017E0:  20 74 68 65 79 20 20 72 65 61 70 70 65 61 72 20     they  reappear 
0017F0:  20 69 6E 20 74 68 65 72 65 76 65 72 73 65 20 6F     in thereverse o
001800:  72 64 65 72 2E A0 20 54 68 65 20 20 42 43 2C 20    rder.. The  BC, 
001810:  20 44 45 20 20 61 6E 64 20 20 48 4C 20 20 72 65     DE  and  HL  re
001820:  67 69 73 74 65 72 73 20 6D 61 79 20 62 65 50 55    gisters may bePU
001830:  53 48 65 64 20 6F 6E 20 74 6F 20 61 6E 64 20 50    SHed on to and P
001840:  4F 50 70 65 64 20 66 72 6F 6D 20 74 68 65 20 20    OPped from the  
001850:  53 74 61 63 6B 2E 54 68 65 20 41 63 63 75 6D 75    Stack.The Accumu
001860:  6C 61 74 6F 72 20 6D 81 7A 61 79 20 61 6C 73 6F    lator m.zay also
001870:  20 62 65 20 50 55 53 48 65 64 20 6F 6E 20 74 6F     be PUSHed on to
001880:  74 68 65 20 20 53 74 61 63 6B 2C 20 20 62 75 74    the  Stack,  but
001890:  20 20 74 68 69 73 20 69 73 20 20 64 6F 6E 65 20      this is  done 
0018A0:  77 69 74 68 20 74 68 65 66 6C 61 67 20 72 65 67    with theflag reg
0018B0:  69 73 74 65 72 20 46 2C 20 77 68 69 63 68 20 77    ister F, which w
0018C0:  69 6C 6C 20 62 65 20 64 69 73 63 75 73 73 65 64    ill be discussed
0018D0:  6C 61 74 65 72 2E A3 20 54 68 65 20 20 53 74 61    later.£ The  Sta
0018E0:  63 6B 20 20 50 6F 69 6E 74 65 72 20 20 63 61 6E    ck  Pointer  can
0018F0:  20 20 74 61 6B 65 20 20 70 61 72 74 20 69 6E 61      take  part ina
001900:  20 20 20 6E 75 6D 62 65 72 20 20 20 6F 66 20 20       number   of  
001910:  20 69 6E 73 74 72 75 63 74 69 6F 6E 73 20 20 20     instructions   
001920:  61 6C 72 65 61 64 79 64 69 73 63 75 73 73 65 64    alreadydiscussed
001930:  2E A0 20 54 68 65 79 20 61 72 65 20 73 69 6D 70    .. They are simp
001940:  6C 79 20 74 68 6F 73 65 20 69 6E 20 20 77 68 69    ly those in  whi
001950:  63 68 20 20 44 45 2C 20 6F 72 42 43 20 20 20 63    ch  DE, orBC   c
001960:  61 6E 20 20 74 61 6B 65 20 B6 8F 20 70 61 72 74    an  take .. part
001970:  2E 20 20 20 54 68 65 20 20 69 6E 73 74 72 75 63    .   The  instruc
001980:  74 69 6F 6E 65 71 75 69 76 61 6C 65 6E 74 20 20    tionequivalent  
001990:  20 74 6F 20 20 20 45 58 20 44 45 2C 48 4C 20 20     to   EX DE,HL  
0019A0:  20 69 73 20 20 68 6F 77 65 76 65 72 45 58 20 28     is  howeverEX (
0019B0:  53 50 29 2C 48 4C 20 2C 20 74 68 61 74 20 45 58    SP),HL , that EX
0019C0:  63 68 61 6E 67 65 73 20 74 68 65 20 63 6F 6E 74    changes the cont
0019D0:  65 6E 74 73 6F 66 20 20 74 68 65 20 20 62 6F 74    entsof  the  bot
0019E0:  74 6F 6D 20 6F 66 20 74 68 65 20 53 74 61 63 6B    tom of the Stack
0019F0:  20 77 69 74 68 20 74 68 65 20 48 4C 72 65 67 69     with the HLregi
001A00:  73 74 65 72 2E A3 20 53 75 6D 6D 61 72 79 20 2D    ster.£ Summary -
001A10:  20 74 68 65 20 53 74 61 63 6B 20 61 6E 64 20 53     the Stack and S
001A20:  50 20 72 65 67 69 73 74 65 72 A0 A0 20 50 55 53    P register.. PUS
001A30:  48 20 44 44 20 20 77 68 65 72 65 20 44 44 20 69    H DD  where DD i
001A40:  73 20 41 46 2C 20 42 43 2C 20 44 45 2C 20 6F 72    s AF, BC, DE, or
001A50:  20 48 4C 2E 20 20 20 20 20 20 20 20 20 20 46 72     HL.          Fr
001A60:  6F 6D 20 20 20 6E 6F 77 20 20 20 A3 31 6F 6E 20    om   now   £1on 
001A70:  20 20 64 64 20 20 20 63 61 6E 20 20 62 65 20 20      dd   can  be  
001A80:  20 20 20 20 20 20 20 20 63 6F 6E 73 69 64 65 72            consider
001A90:  65 64 20 61 73 20 72 65 70 72 65 73 65 6E 74 69    ed as representi
001AA0:  6E 67 A0 20 20 20 20 20 20 20 20 20 20 42 43 2C    ng.          BC,
001AB0:  20 44 45 2C 20 48 4C 2C 6F 72 20 53 50 2E A0 20     DE, HL,or SP.. 
001AC0:  50 4F 50 20 44 44 A0 A0 20 4C 44 20 53 50 2C 6E    POP DD.. LD SP,n
001AD0:  6E A0 20 4C 44 20 53 50 2C 28 6E 6E 29 A0 20 4C    n. LD SP,(nn). L
001AE0:  44 20 28 6E 6E 29 2C 53 50 A0 20 4C 44 20 53 50    D (nn),SP. LD SP
001AF0:  2C 48 4C A0 A0 20 41 44 44 20 48 4C 2C 53 50 A0    ,HL.. ADD HL,SP.
001B00:  20 41 44 43 20 48 4C 2C 53 50 A0 20 53 42 43 20     ADC HL,SP. SBC 
001B10:  48 4C 2C 53 50 A0 20 49 4E 43 20 53 50 A0 20 44    HL,SP. INC SP. D
001B20:  45 43 20 53 50 A0 A0 20 45 58 20 28 53 50 29 2C    EC SP.. EX (SP),
001B30:  48 4C A3 20 20 20 20 20 20 20 20 45 58 41 4D 50    HL£        EXAMP
001B40:  4C 45 53 20 55 53 49 4E 47 20 54 48 45 20 53 54    LES USING THE ST
001B50:  41 43 4B A0 A0 20 54 68 65 20 73 69 6D 75 6C 61    ACK.. The simula
001B60:  74 6F 72 20 75 73 65 73 20 74 68 65 20 75 F8 6D    tor uses the u.m
001B70:  65 6D 6F 72 79 20 61 72 65 61 20 33 38 34 30 74    emory area 3840t
001B80:  6F 20 20 34 30 39 35 20 20 66 6F 72 20 20 74 68    o  4095  for  th
001B90:  65 20 20 70 75 70 69 6C 73 20 70 72 6F 67 72 61    e  pupils progra
001BA0:  6D 73 2E 20 54 68 65 53 74 61 63 6B 20 50 6F 69    ms. TheStack Poi
001BB0:  6E 74 65 72 20 69 73 20 69 6E 69 74 69 61 6C 6C    nter is initiall
001BC0:  79 20 20 73 65 74 20 74 6F 20 34 30 39 34 2C 61    y  set to 4094,a
001BD0:  6E 64 20 20 77 6F 72 6B 73 20 20 69 74 73 20 20    nd  works  its  
001BE0:  77 61 79 20 20 64 6F 77 6E 20 20 74 6F 77 61 72    way  down  towar
001BF0:  64 73 20 20 74 68 65 70 72 6F 67 72 61 6D 20 61    ds  theprogram a
001C00:  72 65 61 2E 20 4B 65 65 70 20 74 68 65 20 53 50    rea. Keep the SP
001C10:  20 61 74 20 74 68 65 20 74 6F 70 20 65 6E 64 6F     at the top endo
001C20:  66 20 20 74 68 69 73 20 20 61 72 65 61 20 6F 66    f  this  area of
001C30:  20 20 6D 65 6D 6F 72 79 20 74 6F 20 65 6E 73 75      memory to ensu
001C40:  72 65 20 74 68 61 74 74 68 65 20 73 69 6D 75 6C    re thatthe simul
001C50:  61 74 6F 72 20 64 6F 65 73 20 6E 6F 74 20 73 74    ator does not st
001C60:  6F 70 2E A0 A0 20 54 68 65 20 6C 61 73 74 20 57    op... The last W
001C70:  01 66 6F 75 72 20 70 61 69 72 73 20 6F 66 20 6D    .four pairs of m
001C80:  65 6D 6F 72 79 20 6C 6F 63 61 74 69 6F 6E 73 69    emory locationsi
001C90:  6E 20 74 68 65 20 53 74 61 63 6B 20 61 72 65 20    n the Stack are 
001CA0:  64 69 73 70 6C 61 79 65 64 20 61 74 20 74 68 65    displayed at the
001CB0:  20 62 6F 74 74 6F 6D 72 69 67 68 74 20 68 61 6E     bottomright han
001CC0:  64 20 63 6F 72 6E 65 72 20 6F 66 20 74 68 65 20    d corner of the 
001CD0:  73 63 72 65 65 6E 2E 20 41 73 20 77 69 74 68 74    screen. As witht
001CE0:  68 65 20 20 50 72 6F 67 72 61 6D 20 20 43 6F 75    he  Program  Cou
001CF0:  6E 74 65 72 2C 20 20 74 68 65 20 20 70 6F 73 69    nter,  the  posi
001D00:  74 69 6F 6E 20 74 6F 77 68 69 63 68 20 20 74 68    tion towhich  th
001D10:  65 20 53 74 61 63 6B 20 50 6F 69 6E 74 65 72 20    e Stack Pointer 
001D20:  70 6F 69 6E 74 73 20 69 73 20 73 68 6F 77 6E 69    points is showni
001D30:  6E 20 52 65 64 2E A0 A0 20 54 68 65 20 69 6E 73    n Red... The ins
001D40:  74 72 75 63 74 69 6F 6E 20 20 49 4E 43 20 53 50    truction  INC SP
001D50:  20 20 69 73 20 69 6E 63 6C 75 64 65 64 20 61 74      is included at
001D60:  74 68 65 20 65 6E 64 20 6F 66 20 74 68 65 20 70    the end of the p
001D70:  72 CC A6 6F 67 72 61 6D 20 74 6F 20 65 6E 73 75    r..ogram to ensu
001D80:  72 65 20 74 68 61 74 20 53 50 69 73 20 64 69 73    re that SPis dis
001D90:  70 6C 61 79 65 64 2E 20 54 68 65 20 61 63 74 75    played. The actu
001DA0:  61 6C 20 76 61 6C 75 65 20 69 6E 20 74 68 65 20    al value in the 
001DB0:  53 50 72 65 67 69 73 74 65 72 20 69 73 20 69 6D    SPregister is im
001DC0:  6D 61 74 65 72 69 61 6C 20 66 6F 72 20 20 6D 6F    material for  mo
001DD0:  73 74 20 20 6F 66 20 69 74 73 61 70 70 6C 69 63    st  of itsapplic
001DE0:  61 74 69 6F 6E 73 2E A3 20 4C 44 20 48 4C 2C 35    ations.£ LD HL,5
001DF0:  36 37 38 39 A0 20 20 4C 44 20 44 45 2C 33 34 35    6789.  LD DE,345
001E00:  36 37 A0 20 20 4C 44 20 42 43 2C 31 32 33 34 35    67.  LD BC,12345
001E10:  A0 20 20 50 55 53 48 20 48 4C A0 20 20 50 55 53    .  PUSH HL.  PUS
001E20:  48 20 42 43 A0 20 20 50 55 53 48 20 44 45 A0 20    H BC.  PUSH DE. 
001E30:  20 45 58 20 28 53 50 29 2C 48 4C A0 20 20 4C 44     EX (SP),HL.  LD
001E40:  20 42 43 2C 30 A0 20 20 50 4F 50 20 44 45 A0 20     BC,0.  POP DE. 
001E50:  20 50 4F 50 20 42 43 A0 20 20 50 4F 50 20 48 4C     POP BC.  POP HL
001E60:  A0 20 20 52 45 54 A0 20 20 A0 20 20 A0 20 20 49    .  RET.  .  .  I
001E70:  4E 43 20 9A 7A 53 50 A0 20 20 A0 20 20 20 20 20    NC .zSP.  .     
001E80:  20 20 20 20 20 20 43 41 4C 4C 53 20 54 4F 20 53          CALLS TO S
001E90:  55 42 52 4F 55 54 49 4E 45 53 A0 A0 20 41 20 20    UBROUTINES.. A  
001EA0:  73 75 62 72 6F 75 74 69 6E 65 20 69 73 20 20 61    subroutine is  a
001EB0:  20 20 70 61 72 74 20 6F 66 20 61 20 20 70 72 6F      part of a  pro
001EC0:  67 72 61 6D 74 68 61 74 20 69 73 20 63 61 6C 6C    gramthat is call
001ED0:  65 64 20 66 72 6F 6D 20 74 68 65 20 6D 61 69 6E    ed from the main
001EE0:  20 70 72 6F 67 72 61 6D 20 61 6E 64 6F 6E 63 65     program andonce
001EF0:  20 63 6F 6D 70 6C 65 74 65 64 20 72 65 74 75 72     completed retur
001F00:  6E 73 20 62 61 63 6B 20 74 6F 20 74 68 65 20 20    ns back to the  
001F10:  6D 61 69 6E 70 72 6F 67 72 61 6D 2E 20 20 54 68    mainprogram.  Th
001F20:  65 20 20 20 73 75 62 72 6F 75 74 69 6E 65 20 20    e   subroutine  
001F30:  69 73 20 20 20 75 73 75 61 6C 6C 79 63 61 6C 6C    is   usuallycall
001F40:  65 64 20 66 72 6F 6D 20 20 61 20 20 6E 75 6D 62    ed from  a  numb
001F50:  65 72 20 6F 66 20 20 70 6C 61 63 65 73 20 69 6E    er of  places in
001F60:  20 74 68 65 70 72 6F 67 72 61 6D 2E A0 A0 20 54     theprogram... T
001F70:  68 65 20 20 5A D1 52 38 30 20 20 61 6C 6C 6F 77    he  Z.R80  allow
001F80:  73 20 20 74 68 69 73 20 20 66 65 61 74 75 72 65    s  this  feature
001F90:  20 20 62 79 20 74 68 65 69 6E 73 74 72 75 63 74      by theinstruct
001FA0:  69 6F 6E 20 20 43 41 4C 4C 2E 20 20 54 68 65 20    ion  CALL.  The 
001FB0:  43 41 4C 4C 20 69 6E 73 74 72 75 63 74 69 6F 6E    CALL instruction
001FC0:  69 73 20 73 69 6D 69 6C 61 72 20 74 6F 20 74 68    is similar to th
001FD0:  65 20 20 4A 50 20 69 6E 73 74 72 75 63 74 69 6F    e  JP instructio
001FE0:  6E 20 65 78 63 65 70 74 74 68 61 74 20 74 68 65    n exceptthat the
001FF0:  20 61 64 64 72 65 73 73 20 6F 66 20 74 68 65 20     address of the 
002000:  6E 65 78 74 20 20 73 65 71 75 65 6E 74 69 61 6C    next  sequential
002010:  69 6E 73 74 72 75 63 74 69 6F 6E 2C 20 68 65 6C    instruction, hel
002020:  64 20 69 6E 20 74 68 65 20 50 43 20 72 65 67 69    d in the PC regi
002030:  73 74 65 72 2C 20 69 73 50 55 53 48 65 64 20 6F    ster, isPUSHed o
002040:  6E 74 6F 20 74 68 65 20 53 74 61 63 6B 2C 20 70    nto the Stack, p
002050:  72 69 6F 72 20 74 6F 20 74 68 65 20 6A 75 6D 70    rior to the jump
002060:  A0 20 54 68 65 20 20 72 65 74 75 72 6E 20 20 69    . The  return  i
002070:  6E 73 74 72 75 63 74 00 27 69 6F 6E 20 20 52 45    nstruct.'ion  RE
002080:  54 2C 20 50 4F 50 73 20 74 68 65 72 65 74 75 72    T, POPs theretur
002090:  6E 20 61 64 64 72 65 73 73 20 66 72 6F 6D 20 74    n address from t
0020A0:  68 65 20 53 74 61 63 6B 2C 20 62 61 63 6B 20 69    he Stack, back i
0020B0:  6E 74 6F 74 68 65 20 50 43 20 72 65 67 69 73 74    ntothe PC regist
0020C0:  65 72 2C 20 20 74 6F 20 63 6F 6E 74 69 6E 75 65    er,  to continue
0020D0:  20 77 68 65 72 65 20 20 74 68 65 6D 61 69 6E 20     where  themain 
0020E0:  70 72 6F 67 72 61 6D 20 6C 65 66 74 20 6F 66 66    program left off
0020F0:  2E 20 49 66 20 74 68 65 20 20 6E 75 6D 62 65 72    . If the  number
002100:  20 6F 66 50 55 53 48 65 73 20 20 61 6E 64 20 43     ofPUSHes  and C
002110:  41 4C 4C 73 20 69 6E 20 74 68 65 20 73 75 62 72    ALLs in the subr
002120:  6F 75 74 69 6E 65 20 64 6F 65 73 6E 6F 74 20 20    outine doesnot  
002130:  65 71 75 61 6C 20 20 74 68 65 20 20 20 6E 75 6D    equal  the   num
002140:  62 65 72 20 20 6F 66 20 20 20 50 4F 50 73 20 20    ber  of   POPs  
002150:  61 6E 64 52 45 54 75 72 6E 73 2C 20 6F 62 76 69    andRETurns, obvi
002160:  6F 75 73 6C 79 20 74 68 69 73 20 77 69 6C 6C 20    ously this will 
002170:  6E 6F 74 20 68 61 70 70 65 0E A7 6E 2E A3 20 42    not happe..n.£ B
002180:  6F 74 68 20 20 20 63 6F 6E 64 69 74 69 6F 6E 61    oth   conditiona
002190:  6C 20 20 61 6E 64 20 20 20 75 6E 63 6F 6E 64 69    l  and   uncondi
0021A0:  74 69 6F 6E 61 6C 43 41 4C 4C 73 20 20 61 6E 64    tionalCALLs  and
0021B0:  20 20 52 45 54 75 72 6E 73 20 61 72 65 20 61 76      RETurns are av
0021C0:  61 69 6C 61 62 6C 65 20 6F 6E 20 74 68 65 5A 38    ailable on theZ8
0021D0:  30 20 2E 20 20 41 6C 6C 20 20 66 6F 75 72 20 20    0 .  All  four  
0021E0:  74 79 70 65 73 20 20 6F 66 20 20 20 63 6F 6E 64    types  of   cond
0021F0:  69 74 69 6F 6E 73 61 6C 72 65 61 64 79 20 63 6F    itionsalready co
002200:  6E 73 69 64 65 72 65 64 20 20 28 20 4E 43 2C 20    nsidered  ( NC, 
002210:  43 2C 20 4E 5A 20 61 6E 64 20 20 5A 20 29 63 61    C, NZ and  Z )ca
002220:  6E 20 62 65 20 75 73 65 64 20 77 69 74 68 20 43    n be used with C
002230:  41 4C 4C 73 20 61 6E 64 20 52 45 54 75 72 6E 73    ALLs and RETurns
002240:  2E A3 20 53 75 6D 6D 61 72 79 20 2D 20 63 61 6C    .£ Summary - cal
002250:  6C 73 20 61 6E 64 20 72 65 74 75 72 6E 73 A0 A0    ls and returns..
002260:  20 20 20 43 41 4C 4C 20 4E 43 2C 6E 6E 20 20 20       CALL NC,nn   
002270:  20 20 20 52 45 54 20 4E 43 20 20 EC A4 20 20 4E       RET NC  ..  N
002280:  6F 20 43 61 72 72 79 A0 A0 20 20 20 43 41 4C 4C    o Carry..   CALL
002290:  20 43 2C 6E 6E 20 20 20 20 20 20 20 52 45 54 20     C,nn       RET 
0022A0:  43 20 20 20 20 20 43 61 72 72 79 20 73 65 74 A0    C     Carry set.
0022B0:  A0 20 20 20 43 41 4C 4C 20 4E 5A 2C 6E 6E 20 20    .   CALL NZ,nn  
0022C0:  20 20 20 20 52 45 54 20 4E 5A 20 20 20 20 4E 6F        RET NZ    No
0022D0:  74 20 5A 65 72 6F A0 A0 20 20 20 43 41 4C 4C 20    t Zero..   CALL 
0022E0:  5A 2C 6E 6E 20 20 20 20 20 20 20 52 45 54 20 5A    Z,nn       RET Z
0022F0:  20 20 20 20 20 5A 65 72 6F 20 73 65 74 A0 A0 20         Zero set.. 
002300:  49 66 20 20 74 68 65 20 20 63 6F 6E 64 69 74 69    If  the  conditi
002310:  6F 6E 20 20 69 73 20 20 6E 6F 74 20 20 20 6D 65    on  is  not   me
002320:  74 2C 20 20 74 68 65 70 72 6F 67 72 61 6D 20 77    t,  theprogram w
002330:  69 6C 6C 20 6E 6F 74 20 43 41 4C 4C 20 74 68 65    ill not CALL the
002340:  20 20 73 75 62 72 6F 75 74 69 6E 65 20 6F 72 52      subroutine orR
002350:  45 54 75 72 6E 20 66 72 6F 6D 20 69 74 2E A3 20    ETurn from it.£ 
002360:  20 20 20 20 45 58 41 4D 50 4C 45 20 4F 46 20 43        EXAMPLE OF C
002370:  41 4C 4C 53 20 54 4F 20 53 55 42 52 4F AB E8 55    ALLS TO SUBRO..U
002380:  54 49 4E 45 A0 A0 20 49 74 20 6D 75 73 74 20 62    TINE.. It must b
002390:  65 20 72 65 6D 65 6D 62 65 72 65 64 20 74 68 61    e remembered tha
0023A0:  74 20 61 20 73 75 62 72 6F 75 74 69 6E 65 6D 61    t a subroutinema
0023B0:  79 20 72 65 71 75 69 72 65 20 74 68 65 20 75 73    y require the us
0023C0:  65 20 6F 66 20 61 20 20 72 65 67 69 73 74 65 72    e of a  register
0023D0:  20 77 68 6F 73 65 63 6F 6E 74 65 6E 74 73 20 20     whosecontents  
0023E0:  61 72 65 20 73 74 69 6C 6C 20 72 65 71 75 69 72    are still requir
0023F0:  65 64 20 69 6E 20 74 68 65 20 6D 61 69 6E 70 72    ed in the mainpr
002400:  6F 67 72 61 6D 2E 20 20 49 74 73 20 63 6F 6E 74    ogram.  Its cont
002410:  65 6E 74 73 20 6D 75 73 74 20 74 68 65 72 65 66    ents must theref
002420:  6F 72 65 20 62 65 50 55 53 48 65 64 20 20 6F 6E    ore bePUSHed  on
002430:  74 6F 20 20 20 74 68 65 20 20 73 74 61 63 6B 20    to   the  stack 
002440:  20 6F 72 20 20 6F 74 68 65 72 77 69 73 65 73 74     or  otherwisest
002450:  6F 72 65 64 20 20 65 6C 73 65 77 68 65 72 65 2C    ored  elsewhere,
002460:  20 61 6E 64 20 20 72 65 74 72 69 65 76 65 64 20     and  retrieved 
002470:  61 74 20 74 68 65 65 6E 64 20 6F 66 20 74 68 D1    at theend of th.
002480:  98 65 20 73 75 62 72 6F 75 74 69 6E 65 2E A0 A0    .e subroutine...
002490:  20 54 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20 65     The following e
0024A0:  78 61 6D 70 6C 65 20 61 64 64 73 20 74 6F 67 65    xample adds toge
0024B0:  74 68 65 72 20 74 68 65 66 69 72 73 74 20 20 33    ther thefirst  3
0024C0:  32 20 70 61 69 72 73 20 6F 66 20 6D 65 6D 6F 72    2 pairs of memor
0024D0:  79 20 6C 6F 63 61 74 69 6F 6E 73 2E 20 54 68 65    y locations. The
0024E0:  72 65 73 75 6C 74 20 69 73 20 6C 65 66 74 20 69    result is left i
0024F0:  6E 20 48 4C 2E 20 20 54 68 65 20 73 74 61 63 6B    n HL.  The stack
002500:  20 61 6E 64 20 74 68 65 48 4C 20 20 72 65 67 69     and theHL  regi
002510:  73 74 65 72 73 20 20 61 72 65 20 62 6F 74 68 20    sters  are both 
002520:  75 73 65 64 20 61 73 20 20 73 74 6F 72 61 67 65    used as  storage
002530:  69 6E 73 70 69 74 65 20 6F 66 20 74 68 65 20 69    inspite of the i
002540:  6E 74 65 72 66 65 72 65 6E 63 65 20 6F 66 20 74    nterference of t
002550:  68 65 20 43 41 4C 4C 2C 62 79 20 75 73 69 6E 67    he CALL,by using
002560:  20 74 68 65 20 45 58 20 28 53 50 29 2C 48 4C 20     the EX (SP),HL 
002570:  69 6E 73 74 72 75 63 74 69 6F 6E A3 20 4C 44 20    instruction£ LD 
002580:  48 91 85 4C 2C 30 A0 20 20 4C 44 20 42 2C 33 32    H..L,0.  LD B,32
002590:  A0 20 20 50 55 53 48 20 48 4C A0 20 4C 4F 4F 50    .  PUSH HL. LOOP
0025A0:  31 20 4C 44 20 45 2C 28 48 4C 29 A0 20 20 49 4E    1 LD E,(HL).  IN
0025B0:  43 20 48 4C A0 20 20 4C 44 20 44 2C 28 48 4C 29    C HL.  LD D,(HL)
0025C0:  A0 20 20 49 4E 43 20 48 4C A0 20 20 45 58 20 28    .  INC HL.  EX (
0025D0:  53 50 29 2C 48 4C A0 20 20 43 41 4C 4C 20 53 55    SP),HL.  CALL SU
0025E0:  42 52 A0 20 20 45 58 20 28 53 50 29 2C 48 4C A0    BR.  EX (SP),HL.
0025F0:  20 20 44 4A 4E 5A 20 4C 4F 4F 50 31 A0 20 20 50      DJNZ LOOP1.  P
002600:  4F 50 20 48 4C A0 20 20 52 45 54 A0 20 53 55 42    OP HL.  RET. SUB
002610:  52 20 20 41 44 44 20 48 4C 2C 44 45 A0 20 20 52    R  ADD HL,DE.  R
002620:  45 54 A0 20 20 A0 20 20 20 20 20 20 45 58 41 4D    ET.  .      EXAM
002630:  50 4C 45 20 4F 46 20 43 4F 4E 44 49 54 49 4F 4E    PLE OF CONDITION
002640:  41 4C 20 43 41 4C 4C 53 A0 A0 20 54 68 69 73 20    AL CALLS.. This 
002650:  20 73 69 6D 70 6C 65 20 20 20 65 78 61 6D 70 6C     simple   exampl
002660:  65 20 20 63 6F 75 6E 74 73 20 20 75 70 20 20 74    e  counts  up  t
002670:  68 65 6E 75 6D 62 65 72 20 20 6F 66 20 20 6D 65    henumber  of  me
002680:  6D 6F 72 67 7D 79 20 20 6C 6F 63 61 74 69 6F 6E    morg}y  location
002690:  73 20 20 68 6F 6C 64 69 6E 67 20 61 6E 75 6D 62    s  holding anumb
0026A0:  65 72 20 61 62 6F 76 65 20 20 31 39 32 20 20 61    er above  192  a
0026B0:  6E 64 20 20 62 65 6C 6F 77 20 20 36 34 20 69 6E    nd  below  64 in
0026C0:  20 74 68 65 66 69 72 73 74 20 33 32 20 6D 65 6D     thefirst 32 mem
0026D0:  6F 72 79 20 6C 6F 63 61 74 69 6F 6E 73 2E A3 20    ory locations.£ 
0026E0:  4C 44 20 48 4C 2C 30 A0 20 20 4C 44 20 44 45 2C    LD HL,0.  LD DE,
0026F0:  30 A0 20 20 4C 44 20 42 2C 33 32 A0 20 4C 4F 4F    0.  LD B,32. LOO
002700:  50 20 20 4C 44 20 41 2C 28 48 4C 29 A0 20 20 43    P  LD A,(HL).  C
002710:  50 20 31 39 33 A0 20 20 43 41 4C 4C 20 4E 43 2C    P 193.  CALL NC,
002720:  41 42 4F 56 45 A0 20 20 43 50 20 36 34 A0 20 20    ABOVE.  CP 64.  
002730:  43 41 4C 4C 20 43 2C 42 45 4C 4F 57 A0 20 20 49    CALL C,BELOW.  I
002740:  4E 43 20 48 4C A0 20 20 44 4A 4E 5A 20 4C 4F 4F    NC HL.  DJNZ LOO
002750:  50 A0 20 20 52 45 54 A0 20 41 42 4F 56 45 20 49    P.  RET. ABOVE I
002760:  4E 43 20 45 A0 20 20 52 45 54 A0 20 42 45 4C 4F    NC E.  RET. BELO
002770:  57 20 49 4E 43 20 44 A0 20 20 52 45 54 A0 20 20    W INC D.  RET.  
002780:  20 A0 20 20 20 2E 83 20 20 20 20 20 20 20 20 20     .   ..         
002790:  20 20 20 4C 65 73 73 6F 6E 73 20 31 30 20 2D 20       Lessons 10 - 
0027A0:  31 37 A0 A0 20 31 30 2E 20 43 6F 6E 64 69 74 69    17.. 10. Conditi
0027B0:  6F 6E 61 6C 20 61 6E 64 20 75 6E 63 6F 6E 64 69    onal and uncondi
0027C0:  74 69 6F 6E 61 6C 20 4A 50 73 A0 20 20 20 20 20    tional JPs.     
0027D0:  20 20 20 20 45 78 20 2D 20 6A 75 6D 70 73 A0 20        Ex - jumps. 
0027E0:  31 31 2E 20 52 65 6C 61 74 69 76 65 20 6A 75 6D    11. Relative jum
0027F0:  70 73 A0 20 20 20 20 20 20 20 20 20 45 78 20 2D    ps.         Ex -
002800:  20 72 65 6C 61 74 69 76 65 20 6A 75 6D 70 73 20     relative jumps 
002810:  31 A0 20 20 20 20 20 20 20 20 20 45 78 20 2D 20    1.         Ex - 
002820:  72 65 6C 61 74 69 76 65 20 6A 75 6D 70 73 20 32    relative jumps 2
002830:  A0 20 31 32 2E 20 54 68 65 20 53 74 61 63 6B A0    . 12. The Stack.
002840:  20 20 20 20 20 20 20 20 20 45 78 20 2D 20 70 75             Ex - pu
002850:  73 68 65 73 20 61 6E 64 20 70 6F 70 73 A0 20 31    shes and pops. 1
002860:  33 2E 20 43 61 6C 6C 73 20 74 6F 20 73 75 62 72    3. Calls to subr
002870:  6F 75 74 69 6E 65 73 A0 20 20 20 20 20 20 20 20    outines.        
002880:  20 45 78 20 2D 20 75 D2 2D 6E 63 6F 6E 64 69 74     Ex - u.-ncondit
002890:  69 6F 6E 61 6C 20 63 61 6C 6C 73 20 26 20 72 65    ional calls & re
0028A0:  74 73 20 20 20 20 20 20 20 20 20 45 78 20 2D 20    ts         Ex - 
0028B0:  63 6F 6E 64 69 74 69 6F 6E 61 6C 20 63 61 6C 6C    conditional call
0028C0:  73 A0 20 31 34 2E 20 42 69 6E 61 72 79 20 6E 6F    s. 14. Binary no
0028D0:  74 61 74 69 6F 6E A0 20 20 20 20 20 20 20 20 20    tation.         
0028E0:  45 78 20 2D 20 62 69 6E 61 72 79 20 6E 6F 74 61    Ex - binary nota
0028F0:  74 69 6F 6E A0 20 31 35 2E 20 48 65 78 61 64 65    tion. 15. Hexade
002900:  63 69 6D 61 6C 20 6E 6F 74 61 74 69 6F 6E A0 20    cimal notation. 
002910:  20 20 20 20 20 20 20 20 45 78 20 2D 20 68 65 78            Ex - hex
002920:  20 6E 6F 74 61 74 69 6F 6E A0 20 31 36 2E 20 42     notation. 16. B
002930:  69 6E 61 72 79 20 43 6F 64 65 64 20 44 65 63 69    inary Coded Deci
002940:  6D 61 6C 20 6E 6F 74 61 74 69 6F 6E A0 20 20 20    mal notation.   
002950:  20 20 20 20 20 20 45 78 20 2D 20 42 43 44 20 6E          Ex - BCD n
002960:  6F 74 61 74 69 6F 6E A0 20 31 37 2E 20 50 6F 73    otation. 17. Pos
002970:  69 74 69 76 65 20 61 6E 64 20 6E 65 67 61 74 69    itive and negati
002980:  76 65 20 6E 6F 74 61 74 69 C3 3A 6F 6E A0 20 20    ve notati.:on.  
002990:  20 20 20 20 20 20 20 45 78 20 2D 20 2B 76 65 20           Ex - +ve 
0029A0:  61 6E 64 20 2D 76 65 20 6E 75 6D 62 65 72 73 A0    and -ve numbers.
0029B0:  20 4C 6F 61 64 20 66 75 72 74 68 65 72 20 6C 65     Load further le
0029C0:  73 73 6F 6E 73 20 66 72 6F 6D 20 74 61 70 65 A3    ssons from tape£
0029D0:  20 20 20 20 20 20 20 20 20 20 20 20 20 49 4E 54                 INT
0029E0:  52 4F 44 55 43 54 49 4F 4E A0 A0 20 54 68 65 20    RODUCTION.. The 
0029F0:  20 70 72 6F 63 65 73 73 6F 72 2C 20 20 75 6E 64     processor,  und
002A00:  65 72 20 74 68 65 20 70 72 6F 67 72 61 6D 6D 65    er the programme
002A10:  72 27 73 64 69 72 65 63 74 69 6F 6E 2C 20 20 68    r'sdirection,  h
002A20:  61 73 20 20 74 68 65 20 20 63 61 70 61 63 69 74    as  the  capacit
002A30:  79 20 20 74 6F 20 20 6D 61 6B 65 64 65 63 69 73    y  to  makedecis
002A40:  69 6F 6E 73 2E 20 20 49 6E 20 20 74 68 65 20 66    ions.  In  the f
002A50:  6F 6C 6C 6F 77 69 6E 67 20 6C 65 73 73 6F 6E 73    ollowing lessons
002A60:  20 77 65 73 68 61 6C 6C 20 20 64 69 73 63 75 73     weshall  discus
002A70:  73 20 20 74 68 65 73 65 20 20 69 6E 73 74 72 75    s  these  instru
002A80:  63 74 69 6F 6E 73 20 74 68 61 74 36 83 6D 61 6B    ctions that6.mak
002A90:  65 20 20 61 20 20 20 63 6F 6D 70 75 74 65 72 20    e  a   computer 
002AA0:  20 20 6D 6F 72 65 20 20 74 68 61 6E 20 20 6A 75      more  than  ju
002AB0:  73 74 20 20 61 63 61 6C 63 75 6C 61 74 6F 72 2E    st  acalculator.
002AC0:  A0 A0 20 57 65 20 20 73 68 61 6C 6C 20 20 74 68    .. We  shall  th
002AD0:  65 6E 20 6C 6F 6F 6B 20 61 74 20 6E 75 6D 62 65    en look at numbe
002AE0:  72 73 20 68 65 6C 64 20 69 6E 72 65 67 69 73 74    rs held inregist
002AF0:  65 72 73 20 69 6E 20 6D 6F 72 65 20 64 65 74 61    ers in more deta
002B00:  69 6C 2E A3 20 20 20 20 20 20 20 20 20 20 20 20    il.£            
002B10:  42 49 4E 41 52 59 20 4E 4F 54 41 54 49 4F 4E A0    BINARY NOTATION.
002B20:  A0 20 49 66 20 77 65 20 77 65 72 65 20 74 6F 20    . If we were to 
002B30:  20 74 61 6B 65 20 74 68 65 20 20 74 6F 70 20 6F     take the  top o
002B40:  66 66 20 61 20 20 5A 38 30 63 68 69 70 20 20 61    ff a  Z80chip  a
002B50:  6E 64 2C 20 75 73 69 6E 67 20 20 61 20 70 6F 77    nd, using  a pow
002B60:  65 72 66 75 6C 20 6D 69 63 72 6F 73 63 6F 70 65    erful microscope
002B70:  2C 6C 6F 6F 6B 20 61 74 20 61 20 72 65 67 69 73    ,look at a regis
002B80:  74 65 72 2C 20 77 65 20 77 6F 75 6C 64 FE DF 20    ter, we would.. 
002B90:  73 65 65 20 74 68 61 74 20 69 74 63 6F 6E 73 69    see that itconsi
002BA0:  73 74 73 20 6F 66 20 20 38 20 63 65 6C 6C 73 2E    sts of  8 cells.
002BB0:  20 20 54 68 65 73 65 20 20 63 65 6C 6C 73 20 20      These  cells  
002BC0:  61 72 65 63 61 70 61 62 6C 65 20 6F 66 20 62 65    arecapable of be
002BD0:  69 6E 67 20 20 73 77 69 74 63 68 65 64 20 20 62    ing  switched  b
002BE0:  65 74 77 65 65 6E 20 20 74 77 6F 64 69 66 66 65    etween  twodiffe
002BF0:  72 65 6E 74 20 20 20 73 74 61 74 65 73 2E 20 20    rent   states.  
002C00:  20 43 6F 6E 76 65 6E 74 69 6F 6E 61 6C 6C 79 20     Conventionally 
002C10:  20 77 65 64 65 73 69 67 6E 61 74 65 20 6F 6E 65     wedesignate one
002C20:  20 73 74 61 74 65 20 61 73 20 22 31 22 20 61 6E     state as "1" an
002C30:  64 20 74 68 65 20 6F 74 68 65 72 61 73 20 22 30    d the otheras "0
002C40:  22 2E 20 54 68 65 20 70 61 74 74 65 72 6E 20 6F    ". The pattern o
002C50:  66 20 31 27 73 20 61 6E 64 20 30 27 73 20 63 6F    f 1's and 0's co
002C60:  75 6C 64 62 65 20 31 30 31 31 31 30 30 30 20 73    uldbe 10111000 s
002C70:  61 79 2E A0 A0 20 48 6F 77 20 20 64 6F 20 77 65    ay... How  do we
002C80:  20 20 69 6E 74 65 72 70 72 65 74 20 74 68 69 53      interpret thiS
002C90:  71 73 20 70 61 74 74 65 72 6E 3F 20 54 68 65 61    qs pattern? Thea
002CA0:  6E 73 77 65 72 20 20 69 73 2C 20 20 61 6E 79 77    nswer  is,  anyw
002CB0:  61 79 20 20 77 65 20 20 6C 69 6B 65 2E 20 20 49    ay  we  like.  I
002CC0:  6E 20 20 74 68 69 73 6C 65 73 73 6F 6E 20 77 65    n  thislesson we
002CD0:  20 73 68 6F 77 20 74 68 61 74 20 74 68 69 73 20     show that this 
002CE0:  20 70 61 74 74 65 72 6E 20 20 63 6F 75 6C 64 62     pattern  couldb
002CF0:  65 20 31 38 34 2C 2D 37 32 2C 20 42 38 48 2C 20    e 184,-72, B8H, 
002D00:  61 6E 64 20 65 76 65 6E 20 43 50 20 42 2E 20 54    and even CP B. T
002D10:  68 65 20 6F 6E 6C 79 6F 6E 65 20 74 68 65 20 20    he onlyone the  
002D20:  70 72 6F 63 65 73 73 6F 72 20 20 68 61 73 20 62    processor  has b
002D30:  75 69 6C 74 20 69 6E 74 6F 20 69 74 20 69 73 74    uilt into it ist
002D40:  68 65 20 6C 61 74 74 65 72 2E A3 20 45 61 63 68    he latter.£ Each
002D50:  20 20 64 69 67 69 74 20 20 69 6E 20 20 61 20 20      digit  in  a  
002D60:  6E 75 6D 62 65 72 20 63 61 6E 20 20 62 65 20 63    number can  be c
002D70:  6F 6E 2D 73 69 64 65 72 65 64 20 74 6F 20 68 61    on-sidered to ha
002D80:  76 65 20 61 20 77 65 69 67 68 74 69 6E 67 2E 20    ve a weighting. 
002D90:  46 2C 26 6F 72 20 64 65 63 69 6D 61 6C 6E 75 6D    F,&or decimalnum
002DA0:  62 65 72 73 20 74 68 65 73 65 20 77 65 69 67 68    bers these weigh
002DB0:  74 69 6E 67 73 20 61 72 65 A0 20 20 44 69 67 69    tings are.  Digi
002DC0:  74 20 20 20 20 20 20 33 20 20 20 20 32 20 20 20    t      3    2   
002DD0:  20 31 20 20 20 20 20 30 A0 20 20 20 20 20 20 20     1     0.       
002DE0:  20 20 20 20 31 30 30 30 20 20 31 30 30 20 20 20        1000  100   
002DF0:  31 30 20 20 20 20 31 A0 A0 20 73 69 6E 63 65 20    10    1.. since 
002E00:  65 61 63 68 20 20 64 69 67 69 74 20 20 63 61 6E    each  digit  can
002E10:  20 68 61 76 65 20 6F 6E 65 20 20 6F 66 20 74 65     have one  of te
002E20:  6E 73 74 61 74 65 73 2C 20 64 65 73 69 67 6E 61    nstates, designa
002E30:  74 65 64 20 30 20 2D 20 39 2E A0 A0 20 49 6E 20    ted 0 - 9... In 
002E40:  61 20 20 72 65 67 69 73 74 65 72 20 20 65 61 63    a  register  eac
002E50:  68 20 20 64 69 67 69 74 20 20 6F 72 20 62 69 74    h  digit  or bit
002E60:  20 68 61 73 6F 6E 6C 79 20 20 20 74 77 6F 20 20     hasonly   two  
002E70:  73 74 61 74 65 73 2E 20 20 20 54 68 65 72 65 66    states.   Theref
002E80:  6F 72 65 20 20 77 65 20 20 63 61 6E 69 6E 74 65    ore  we  caninte
002E90:  72 70 72 9B B6 65 74 20 20 74 68 65 20 20 64 69    rpr..et  the  di
002EA0:  67 69 74 73 20 61 73 20 68 61 76 69 6E 67 20 77    gits as having w
002EB0:  65 69 67 68 74 2D 69 6E 67 73 20 6F 66 A0 A0 20    eight-ings of.. 
002EC0:  62 69 74 20 20 20 20 37 20 20 20 36 20 20 20 35    bit    7   6   5
002ED0:  20 20 20 34 20 20 20 20 33 20 20 20 32 20 20 20       4    3   2   
002EE0:  31 20 20 20 30 A0 20 20 20 20 20 20 20 31 32 38    1   0.       128
002EF0:  20 20 36 34 20 20 33 32 20 20 31 36 20 20 20 38      64  32  16   8
002F00:  20 20 20 34 20 20 20 32 20 20 20 31 A0 A0 20 54       4   2   1.. T
002F10:  61 6B 69 6E 67 20 20 6F 75 72 20 6E 75 6D 62 65    aking  our numbe
002F20:  72 20 31 30 31 31 31 30 30 30 20 66 6F 72 20 65    r 10111000 for e
002F30:  78 61 6D 70 6C 65 61 6E 64 20 20 6E 6F 74 69 6E    xampleand  notin
002F40:  67 20 20 74 68 61 74 20 20 20 62 69 74 73 20 20    g  that   bits  
002F50:  74 68 61 74 20 20 61 72 65 20 20 22 30 22 63 6F    that  are  "0"co
002F60:  6E 74 72 69 62 75 74 65 20 20 6E 6F 74 68 69 6E    ntribute  nothin
002F70:  67 20 74 6F 20 74 68 65 20 20 6E 75 6D 62 65 72    g to the  number
002F80:  2C 20 20 74 68 65 64 65 63 69 6D 61 6C 20 65 71    ,  thedecimal eq
002F90:  75 69 76 61 6C CE E6 65 6E 74 20 6F 66 20 20 31    uival..ent of  1
002FA0:  30 31 31 31 30 30 30 20 69 73 20 67 69 76 65 6E    0111000 is given
002FB0:  62 79 A0 20 20 20 20 20 20 20 20 20 20 20 20 31    by.            1
002FC0:  32 38 2B 33 32 2B 31 36 2B 38 3D 31 38 34 2E A3    28+32+16+8=184.£
002FD0:  20 54 68 65 20 6D 61 78 69 6D 75 6D 20 20 6E 75     The maximum  nu
002FE0:  6D 62 65 72 20 74 68 61 74 20 63 61 6E 20 62 65    mber that can be
002FF0:  20 68 65 6C 64 20 69 6E 61 6E 20 38 20 62 69 74     held inan 8 bit
003000:  20 72 65 67 69 73 74 65 72 20 69 73 A0 A0 20 20     register is..  
003010:  20 20 20 20 20 20 20 20 31 32 38 2B 36 34 2B 33            128+64+3
003020:  32 2B 31 36 2B 38 2B 34 2B 32 2B 31 3D 32 35 35    2+16+8+4+2+1=255
003030:  A0 A0 54 68 69 73 20 69 73 20 74 68 65 20 6E 75    ..This is the nu
003040:  6D 62 65 72 20 77 65 20 6F 72 69 67 69 6E 61 6C    mber we original
003050:  6C 79 20 61 73 73 75 6D 65 64 61 74 20 74 68 65    ly assumedat the
003060:  20 62 65 67 69 6E 6E 69 6E 67 20 6F 66 20 6F 75     beginning of ou
003070:  72 20 64 69 73 63 75 73 73 69 6F 6E 2E A3 20 4A    r discussion.£ J
003080:  75 73 74 20 20 61 73 20 20 20 77 65 20 20 61 64    ust  as   we  ad
003090:  64 20 20 74 77 6F 20 DB 52 64 65 63 69 6D 61 6C    d  two .Rdecimal
0030A0:  20 6E 75 6D 62 65 72 73 74 6F 67 65 74 68 65 72     numberstogether
0030B0:  2C 20 20 63 61 72 72 79 69 6E 67 20 20 6F 6E 65    ,  carrying  one
0030C0:  20 66 6F 72 77 61 72 64 20 20 69 66 20 74 68 65     forward  if the
0030D0:  73 75 6D 20 6F 66 20 74 77 6F 20 20 64 69 67 69    sum of two  digi
0030E0:  74 73 20 69 73 20 67 72 65 61 74 65 72 20 74 68    ts is greater th
0030F0:  61 6E 20 39 2C 20 77 65 63 61 6E 20 61 64 64 20    an 9, wecan add 
003100:  74 77 6F 20 62 69 6E 61 72 79 20 6E 75 6D 62 65    two binary numbe
003110:  72 73 2E 20 20 49 66 20 20 74 68 65 20 73 75 6D    rs.  If  the sum
003120:  69 73 20 61 62 6F 76 65 20 6F 6E 65 2C 20 61 20    is above one, a 
003130:  6F 6E 65 20 69 73 20 63 61 72 72 69 65 64 20 66    one is carried f
003140:  6F 72 77 61 72 64 2E A0 A0 69 2E 65 2E 20 63 61    orward...i.e. ca
003150:  72 72 79 20 20 20 27 20 27 20 20 20 27 20 27 20    rry   ' '   ' ' 
003160:  20 20 20 20 20 A0 20 20 20 20 20 20 20 20 20 20         .          
003170:  20 20 20 30 20 31 20 31 20 30 20 31 20 31 20 31       0 1 1 0 1 1 1
003180:  20 30 A0 20 20 20 20 20 20 20 20 20 20 2B 20 20     0.          +  
003190:  30 20 30 20 31 20 30 20 30 38 EE 20 31 20 30 20    0 0 1 0 08. 1 0 
0031A0:  31 A0 20 20 67 69 76 65 73 20 20 20 20 20 20 31    1.  gives      1
0031B0:  20 30 20 30 20 31 20 30 20 30 20 31 20 31 A0 A0     0 0 1 0 0 1 1..
0031C0:  20 53 69 6D 69 6C 61 72 20 77 65 20 63 61 6E 20     Similar we can 
0031D0:  70 65 72 66 6F 72 6D 20 73 75 62 74 72 61 63 74    perform subtract
0031E0:  69 6F 6E 2E A0 A0 69 2E 65 2E 20 62 6F 72 72 6F    ion...i.e. borro
0031F0:  77 20 20 20 20 30 20 31 20 31 20 32 20 20 20 30    w    0 1 1 2   0
003200:  20 32 A0 20 20 20 20 20 20 20 20 20 20 20 20 20     2.             
003210:  30 20 31 20 31 20 30 20 30 20 31 20 31 20 30 A0    0 1 1 0 0 1 1 0.
003220:  20 20 20 20 20 20 20 20 20 20 2D 20 20 30 20 30              -  0 0
003230:  20 31 20 30 20 31 20 31 20 30 20 31 A0 20 20 67     1 0 1 1 0 1.  g
003240:  69 76 65 73 20 20 20 20 20 20 30 20 30 20 31 20    ives      0 0 1 
003250:  31 20 31 20 30 20 30 20 31 A3 20 20 20 20 20 20    1 1 0 0 1£      
003260:  45 58 41 4D 50 4C 45 53 20 4F 46 20 42 49 4E 41    EXAMPLES OF BINA
003270:  52 59 20 4E 4F 54 41 54 49 4F 4E A0 A0 20 54 68    RY NOTATION.. Th
003280:  65 20 20 61 73 73 65 6D 62 6C 65 72 2C 20 77 69    e  assembler, wi
003290:  74 68 69 6E 20 20 74 68 69 73 20 5E CB 74 75 74    thin  this ^.tut
0032A0:  6F 72 2C 20 68 61 73 6F 6E 65 20 69 6E 73 74 72    or, hasone instr
0032B0:  75 63 74 69 6F 6E 20 6E 6F 74 20 6E 6F 72 6D 61    uction not norma
0032C0:  6C 6C 79 20 66 6F 75 6E 64 20 69 6E 20 61 6E 61    lly found in ana
0032D0:  73 73 65 6D 62 6C 65 72 2C 20 20 6E 61 6D 65 6C    ssembler,  namel
0032E0:  79 20 20 42 49 4E 2E 20 20 54 68 65 20 20 61 73    y  BIN.  The  as
0032F0:  73 65 6D 62 6C 65 72 61 6C 6C 6F 63 61 74 65 73    semblerallocates
003300:  20 20 6F 6E 65 20 20 6D 65 6D 6F 72 79 20 20 6C      one  memory  l
003310:  6F 63 61 74 69 6F 6E 20 20 74 6F 20 74 68 65 6C    ocation  to thel
003320:  69 6E 65 2C 20 77 68 69 63 68 20 77 6F 75 6C 64    ine, which would
003330:  20 6E 6F 72 6D 61 6C 6C 79 20 62 65 20 20 6C 61     normally be  la
003340:  62 65 6C 6C 65 64 2E 49 74 20 63 6F 6E 73 74 61    belled.It consta
003350:  6E 74 6C 79 20 64 69 73 70 6C 61 79 73 20 74 68    ntly displays th
003360:  69 73 20 6C 6F 63 61 74 69 6F 6E 20 20 69 6E 62    is location  inb
003370:  69 6E 61 72 79 20 66 6F 72 6D 2E 20 54 68 65 20    inary form. The 
003380:  6E 75 6D 62 65 72 20 61 66 74 65 72 20 42 49 4E    number after BIN
003390:  20 69 73 20 74 68 65 6E 75 6D 62 65 72 15 94 20     is thenumber.. 
0033A0:  20 69 6E 69 74 69 61 6C 6C 79 20 20 20 69 6E 73     initially   ins
0033B0:  65 72 74 65 64 20 20 69 6E 74 6F 20 20 20 74 68    erted  into   th
0033C0:  65 6C 6F 63 61 74 69 6F 6E 2E A0 A0 20 41 66 74    elocation... Aft
0033D0:  65 72 20 20 67 6F 69 6E 67 20 20 20 74 68 72 6F    er  going   thro
0033E0:  75 67 68 20 20 74 68 65 20 20 20 66 6F 6C 6C 6F    ugh  the   follo
0033F0:  77 69 6E 67 65 78 61 6D 70 6C 65 20 20 74 72 79    wingexample  try
003400:  20 6D 6F 64 69 66 79 69 6E 67 20 74 68 65 20 64     modifying the d
003410:  69 73 70 6C 61 79 69 6E 67 20 6F 66 53 54 4F 52    isplaying ofSTOR
003420:  45 20 69 6E 20 65 78 61 6D 70 6C 65 20 31 31 42    E in example 11B
003430:  2E A3 20 4C 44 20 48 4C 2C 53 54 4F 52 45 A0 20    .£ LD HL,STORE. 
003440:  4C 4F 4F 50 20 20 44 45 43 20 28 48 4C 29 A0 20    LOOP  DEC (HL). 
003450:  20 4A 52 20 4E 5A 2C 4C 4F 4F 50 A0 20 20 4C 44     JR NZ,LOOP.  LD
003460:  20 41 2C 28 4E 55 4D 31 29 A0 20 20 4C 44 20 48     A,(NUM1).  LD H
003470:  4C 2C 4E 55 4D 32 A0 20 20 41 44 44 20 41 2C 28    L,NUM2.  ADD A,(
003480:  48 4C 29 A0 20 20 4C 44 20 28 41 4E 53 29 2C 41    HL).  LD (ANS),A
003490:  A0 20 20 52 45 54 A0 20 20 A0 20 53 54 4F 52 B5    .  RET.  . STOR.
0034A0:  71 45 20 42 49 4E 20 31 35 A0 20 20 A0 20 4E 55    qE BIN 15.  . NU
0034B0:  4D 31 20 20 42 49 4E 20 38 31 A0 20 4E 55 4D 32    M1  BIN 81. NUM2
0034C0:  20 20 42 49 4E 20 39 35 A0 20 41 4E 53 20 20 20      BIN 95. ANS   
0034D0:  42 49 4E 20 30 A0 20 20 A0 20 20 A0 20 20 20 20    BIN 0.  .  .    
0034E0:  20 20 20 20 20 20 48 45 58 41 44 45 43 49 4D 41          HEXADECIMA
0034F0:  4C 20 4E 4F 54 41 54 49 4F 4E A0 A0 20 42 69 6E    L NOTATION.. Bin
003500:  61 72 79 20 20 6E 75 6D 62 65 72 73 20 61 72 65    ary  numbers are
003510:  20 74 6F 6F 20 20 63 75 6D 62 65 72 73 6F 6D 65     too  cumbersome
003520:  20 61 6E 64 64 65 63 69 6D 61 6C 20 20 74 6F 6F     anddecimal  too
003530:  20 20 20 69 6E 63 6F 6E 76 65 6E 69 65 6E 74 20       inconvenient 
003540:  20 74 6F 20 20 64 69 73 70 6C 61 79 6D 75 6C 74     to  displaymult
003550:  69 70 6C 65 20 20 72 65 67 69 73 74 65 72 20 6E    iple  register n
003560:  75 6D 62 65 72 73 2E 20 20 41 20 6D 65 74 68 6F    umbers.  A metho
003570:  64 20 6F 66 70 72 65 73 65 6E 74 69 6E 67 20 20    d ofpresenting  
003580:  20 62 69 6E 61 72 79 20 20 6E 75 6D 62 65 72 73     binary  numbers
003590:  20 20 68 61 73 20 20 20 62 65 65 6E 64 65 76 65      has   beendeve
0035A0:  6C 71 F4 6F 70 65 64 20 20 74 6F 20 67 65 74 20    lq.oped  to get 
0035B0:  72 6F 75 6E 64 20 20 74 68 65 73 65 20 70 72 6F    round  these pro
0035C0:  62 6C 65 6D 73 2E 49 6E 73 74 65 61 64 20 6F 66    blems.Instead of
0035D0:  20 62 61 73 69 6E 67 20 74 68 65 20 6E 75 6D 62     basing the numb
0035E0:  65 72 20 6F 6E 20 31 30 20 61 73 20 69 6E 64 65    er on 10 as inde
0035F0:  63 69 6D 61 6C 20 6F 72 20 32 20 61 73 20 69 6E    cimal or 2 as in
003600:  20 62 69 6E 61 72 79 2C 20 77 65 20 62 61 73 65     binary, we base
003610:  20 69 74 20 6F 6E 31 36 2E 20 20 54 68 69 73 20     it on16.  This 
003620:  20 6E 75 6D 62 65 72 69 6E 67 20 20 73 79 73 74     numbering  syst
003630:  65 6D 20 20 69 73 20 20 63 61 6C 6C 65 64 48 65    em  is  calledHe
003640:  78 61 64 65 63 69 6D 61 6C 2E A0 A0 20 57 65 20    xadecimal... We 
003650:  20 72 65 71 75 69 72 65 20 20 20 31 36 20 20 64     require   16  d
003660:  69 66 66 65 72 65 6E 74 20 20 73 79 6D 62 6F 6C    ifferent  symbol
003670:  73 20 74 6F 72 65 70 72 65 73 65 6E 74 20 20 61    s torepresent  a
003680:  20 20 64 69 67 69 74 2E 20 20 30 2D 39 20 20 67      digit.  0-9  g
003690:  69 76 65 73 20 20 75 73 20 74 68 65 66 69 72 73    ives  us thefirs
0036A0:  74 20 20 45 EF 31 30 20 20 61 6E 64 20 20 41 2D    t  E.10  and  A-
0036B0:  46 20 20 74 68 65 20 66 69 6E 61 6C 20 36 2E 20    F  the final 6. 
0036C0:  41 20 6C 69 73 74 6F 66 20 20 64 65 63 69 6D 61    A listof  decima
0036D0:  6C 2C 20 20 20 62 69 6E 61 72 79 2C 20 20 61 6E    l,   binary,  an
0036E0:  64 20 20 68 65 78 61 64 65 63 69 6D 61 6C 65 71    d  hexadecimaleq
0036F0:  75 69 76 61 6C 65 6E 74 73 20 20 61 72 65 20 20    uivalents  are  
003700:  20 67 69 76 65 6E 20 20 6F 6E 20 20 74 68 65 20     given  on  the 
003710:  20 20 6E 65 78 74 73 63 72 65 65 6E 2E A3 20 20      nextscreen.£  
003720:  20 20 44 65 63 69 6D 61 6C 20 20 20 42 69 6E 61      Decimal   Bina
003730:  72 79 20 20 20 20 48 65 78 61 64 65 63 69 6D 61    ry    Hexadecima
003740:  6C A0 A0 A0 20 20 20 20 20 20 20 30 20 20 20 20    l...       0    
003750:  20 20 20 30 30 30 30 20 20 20 20 20 20 20 20 20       0000         
003760:  30 A0 20 20 20 20 20 20 20 31 20 20 20 20 20 20    0.       1      
003770:  20 30 30 30 31 20 20 20 20 20 20 20 20 20 31 A0     0001         1.
003780:  20 20 20 20 20 20 20 32 20 20 20 20 20 20 20 30           2       0
003790:  30 31 30 20 20 20 20 20 20 20 20 20 32 A0 20 20    010         2.  
0037A0:  20 20 20 20 20 E3 B4 33 20 20 20 20 20 20 20 30         ..3       0
0037B0:  30 31 31 20 20 20 20 20 20 20 20 20 33 A0 20 20    011         3.  
0037C0:  20 20 20 20 20 34 20 20 20 20 20 20 20 30 31 30         4       010
0037D0:  30 20 20 20 20 20 20 20 20 20 34 A0 20 20 20 20    0         4.    
0037E0:  20 20 20 35 20 20 20 20 20 20 20 30 31 30 31 20       5       0101 
0037F0:  20 20 20 20 20 20 20 20 35 A0 20 20 20 20 20 20            5.      
003800:  20 36 20 20 20 20 20 20 20 30 31 31 30 20 20 20     6       0110   
003810:  20 20 20 20 20 20 36 A0 20 20 20 20 20 20 20 37          6.       7
003820:  20 20 20 20 20 20 20 30 31 31 31 20 20 20 20 20           0111     
003830:  20 20 20 20 37 A0 20 20 20 20 20 20 20 38 20 20        7.       8  
003840:  20 20 20 20 20 31 30 30 30 20 20 20 20 20 20 20         1000       
003850:  20 20 38 A0 20 20 20 20 20 20 20 39 20 20 20 20      8.       9    
003860:  20 20 20 31 30 30 31 20 20 20 20 20 20 20 20 20       1001         
003870:  39 A0 20 20 20 20 20 20 20 31 30 20 20 20 20 20    9.       10     
003880:  20 31 30 31 30 20 20 20 20 20 20 20 20 20 41 A0     1010         A.
003890:  20 20 20 20 20 20 20 31 31 20 20 20 20 20 20 31           11      1
0038A0:  30 31 31 20 20 20 20 C4 67 20 20 20 20 20 42 A0    011    .g     B.
0038B0:  20 20 20 20 20 20 20 31 32 20 20 20 20 20 20 31           12      1
0038C0:  31 30 30 20 20 20 20 20 20 20 20 20 43 A0 20 20    100         C.  
0038D0:  20 20 20 20 20 31 33 20 20 20 20 20 20 31 31 30         13      110
0038E0:  31 20 20 20 20 20 20 20 20 20 44 A0 20 20 20 20    1         D.    
0038F0:  20 20 20 31 34 20 20 20 20 20 20 31 31 31 30 20       14      1110 
003900:  20 20 20 20 20 20 20 20 45 A0 20 20 20 20 20 20            E.      
003910:  20 31 35 20 20 20 20 20 20 31 31 31 31 20 20 20     15      1111   
003920:  20 20 20 20 20 20 46 A3 20 41 6C 6C 20 31 36 20          F£ All 16 
003930:  20 73 74 61 74 65 73 20 6F 66 20 74 68 65 20 34     states of the 4
003940:  20 62 69 6E 61 72 79 20 62 69 74 73 20 61 72 65     binary bits are
003950:  63 6F 76 65 72 65 64 20 62 79 20 30 2D 46 2E 20    covered by 0-F. 
003960:  48 65 6E 63 65 20 6F 6E 6C 79 20 32 20 68 65 78    Hence only 2 hex
003970:  61 64 65 63 69 6D 61 6C 64 69 67 69 74 73 20 20    adecimaldigits  
003980:  61 72 65 20 20 72 65 71 75 69 72 65 64 20 20 74    are  required  t
003990:  6F 20 20 64 69 73 70 6C 61 79 20 20 20 74 68 65    o  display   the
0039A0:  63 6F 6E 74 65 6E 74 73 20 20 37 20 6F 66 20 20    contents  7 of  
0039B0:  61 6E 20 20 38 20 20 62 69 74 20 20 72 65 67 69    an  8  bit  regi
0039C0:  73 74 65 72 2E 20 20 4F 75 72 65 78 61 6D 70 6C    ster.  Ourexampl
0039D0:  65 20 20 20 31 30 31 31 31 30 30 30 20 20 20 64    e   10111000   d
0039E0:  69 76 69 64 65 73 20 20 20 75 70 20 20 20 69 6E    ivides   up   in
0039F0:  74 6F 31 30 31 31 20 31 30 30 30 20 6F 72 20 42    to1011 1000 or B
003A00:  38 20 48 65 78 2E 20 20 41 20 20 64 6F 75 62 6C    8 Hex.  A  doubl
003A10:  65 20 72 65 67 69 73 74 65 72 68 6F 6C 64 69 6E    e registerholdin
003A20:  67 20 73 61 79 20 20 31 31 30 30 31 30 30 31 20    g say  11001001 
003A30:  31 30 31 31 31 30 30 30 20 20 77 69 6C 6C 20 20    10111000  will  
003A40:  62 65 72 65 70 72 65 73 65 6E 74 65 64 20 62 79    berepresented by
003A50:  20 43 39 42 38 20 68 65 78 2E A0 A0 20 43 6F 6E     C9B8 hex... Con
003A60:  76 65 72 73 69 6F 6E 20 20 6F 66 20 20 61 20 20    version  of  a  
003A70:  68 65 78 20 20 6E 75 6D 62 65 72 20 20 74 6F 20    hex  number  to 
003A80:  20 69 74 73 64 65 63 69 6D 61 6C 20 65 71 75 69     itsdecimal equi
003A90:  76 61 6C 65 6E 74 20 66 6F 6C 6C 6F 77 73 20 74    valent follows t
003AA0:  68 65 20 20 73 74 61 6E 64 61 72 94 32 64 63 61    he  standar.2dca
003AB0:  6C 63 75 6C 61 74 69 6F 6E 2E A0 A0 69 2E 65 2E    lculation...i.e.
003AC0:  20 20 42 38 20 68 65 78 20 3D 20 28 42 20 68 65      B8 hex = (B he
003AD0:  78 29 2A 20 31 36 2B 20 28 38 29 2A 20 31 A0 20    x)* 16+ (8)* 1. 
003AE0:  20 20 20 20 20 20 20 20 20 20 20 20 3D 20 31 31                = 11
003AF0:  2A 31 36 2B 38 3D 31 38 34 A0 A0 20 41 6C 77 61    *16+8=184.. Alwa
003B00:  79 73 20 72 65 6D 65 6D 62 65 72 20 74 68 61 74    ys remember that
003B10:  20 61 20 68 65 78 20 6E 75 6D 62 65 72 20 68 61     a hex number ha
003B20:  73 20 61 62 61 73 65 20 6F 66 20 31 36 20 64 65    s abase of 16 de
003B30:  63 69 6D 61 6C 2C 20 61 20 64 65 63 69 6D 61 6C    cimal, a decimal
003B40:  20 6E 75 6D 62 65 72 20 68 61 73 61 20 62 61 73     number hasa bas
003B50:  65 20 6F 66 20 31 30 20 20 61 6E 64 20 61 20 62    e of 10  and a b
003B60:  69 6E 61 72 79 20 6E 75 6D 62 65 72 20 61 20 62    inary number a b
003B70:  61 73 65 62 61 73 65 20 32 2E A3 20 20 20 20 45    asebase 2.£    E
003B80:  58 41 4D 50 4C 45 53 20 4F 46 20 48 45 58 41 44    XAMPLES OF HEXAD
003B90:  45 43 49 4D 41 4C 20 4E 4F 54 41 54 49 4F 4E A0    ECIMAL NOTATION.
003BA0:  A0 20 4E 6F 77 20 20 74 68 61 74 20 20 1A 9B 68    . Now  that  ..h
003BB0:  65 78 20 6E 6F 74 61 74 69 6F 6E 20 68 61 73 20    ex notation has 
003BC0:  62 65 65 6E 20 69 6E 74 72 6F 2D 64 75 63 65 64    been intro-duced
003BD0:  20 77 65 20 20 63 61 6E 20 64 69 73 63 75 73 73     we  can discuss
003BE0:  20 20 68 6F 77 20 20 74 68 65 20 63 6F 6D 70 75      how  the compu
003BF0:  74 65 72 73 74 6F 72 65 73 20 20 70 72 6F 67 72    terstores  progr
003C00:  61 6D 73 20 20 69 6E 20 20 6D 6F 72 65 20 20 64    ams  in  more  d
003C10:  65 74 61 69 6C 2E 20 20 20 41 73 61 6C 72 65 61    etail.   Asalrea
003C20:  64 79 20 20 20 6D 65 6E 74 69 6F 6E 65 64 2C 20    dy   mentioned, 
003C30:  20 74 68 65 20 20 20 69 6E 73 74 72 75 63 74 69     the   instructi
003C40:  6F 6E 73 61 72 65 20 20 73 74 6F 72 65 64 20 20    onsare  stored  
003C50:  20 6D 65 6D 6F 72 79 20 20 61 73 20 20 6E 75 6D     memory  as  num
003C60:  62 65 72 73 2E 20 20 53 6F 6D 65 69 6E 73 74 72    bers.  Someinstr
003C70:  75 63 74 69 6F 6E 73 20 20 20 6F 6E 6C 79 20 20    uctions   only  
003C80:  20 72 65 71 75 69 72 65 20 20 61 20 20 73 69 6E     require  a  sin
003C90:  67 6C 65 6E 75 6D 62 65 72 2C 20 6F 74 68 65 72    glenumber, other
003CA0:  73 20 72 65 71 75 69 72 65 20 6D 6F 72 65 2E EB    s require more..
003CB0:  46 20 43 6F 6C 75 6D 6E 20 32 20 6F 6E 74 68 65    F Column 2 onthe
003CC0:  20 53 69 6D 75 6C 61 74 6F 72 20 64 69 73 70 6C     Simulator displ
003CD0:  61 79 20 73 68 6F 77 73 20 20 74 68 65 20 20 6D    ay shows  the  m
003CE0:  65 6D 6F 72 79 63 6F 6E 74 65 6E 74 73 20 66 6F    emorycontents fo
003CF0:  72 20 74 68 65 20 69 6E 73 74 72 75 63 74 69 6F    r the instructio
003D00:  6E 73 20 69 6E 20 68 65 78 2E A0 A0 20 41 6C 6C    ns in hex... All
003D10:  20 74 68 65 20 20 6E 75 6D 62 65 72 73 20 20 75     the  numbers  u
003D20:  73 65 64 20 20 74 6F 20 20 64 65 73 63 72 69 62    sed  to  describ
003D30:  65 20 61 6E 69 6E 73 74 72 75 63 74 69 6F 6E 20    e aninstruction 
003D40:  61 72 65 20 20 67 69 76 65 6E 20 69 6E 20 73 65    are  given in se
003D50:  71 75 65 6E 63 65 20 61 6C 6F 6E 67 74 68 65 20    quence alongthe 
003D60:  6C 69 6E 65 2E 20 20 4E 6F 74 69 63 65 20 74 68    line.  Notice th
003D70:  61 74 20 6E 75 6D 62 65 72 73 20 63 61 6C 6C 65    at numbers calle
003D80:  64 20 75 70 69 6E 20 61 6E 20 69 6E 73 74 72 75    d upin an instru
003D90:  63 74 69 6F 6E 20 61 70 70 65 61 72 20 74 6F 77    ction appear tow
003DA0:  61 72 64 73 20 74 68 65 20 65 6E 64 6F 66 20 74    ards the endof t
003DB0:  68 17 15 65 20 73 74 72 69 6E 67 20 20 6F 66 20    h..e string  of 
003DC0:  20 6E 75 6D 62 65 72 73 2E 20 54 68 65 20 20 65     numbers. The  e
003DD0:  61 72 6C 69 65 72 6E 75 6D 62 65 72 73 20 20 20    arliernumbers   
003DE0:  20 64 65 74 65 72 6D 69 6E 65 20 20 20 20 74 68     determine    th
003DF0:  65 20 20 20 74 79 70 65 20 20 20 20 6F 66 69 6E    e   type    ofin
003E00:  73 74 72 75 63 74 69 6F 6E 2E 20 53 69 6E 63 65    struction. Since
003E10:  20 74 68 65 20 20 74 6F 74 61 6C 20 20 6E 75 6D     the  total  num
003E20:  62 65 72 20 6F 66 69 6E 73 74 72 75 63 74 69 6F    ber ofinstructio
003E30:  6E 73 20 20 20 65 78 63 65 65 64 20 20 20 32 35    ns   exceed   25
003E40:  36 2C 20 20 61 20 20 20 70 72 65 66 69 78 6E 75    6,  a   prefixnu
003E50:  6D 62 65 72 20 69 73 20 75 73 65 64 20 74 6F 20    mber is used to 
003E60:  20 70 72 6F 64 75 63 65 20 6F 74 68 65 72 20 73     produce other s
003E70:  65 74 73 20 6F 66 69 6E 73 74 72 75 63 74 69 6F    ets ofinstructio
003E80:  6E 73 2E 20 54 68 65 20 70 72 65 66 69 78 65 73    ns. The prefixes
003E90:  20 79 6F 75 20 77 69 6C 6C 20 66 69 6E 64 61 72     you will findar
003EA0:  65 20 45 44 2C 20 43 42 2C 20 44 44 20 61 6E 64    e ED, CB, DD and
003EB0:  20 46 44 9C FA 2E A3 20 4C 75 63 6B 69 6C 79 20     FD...£ Luckily 
003EC0:  61 73 73 65 6D 62 6C 65 72 73 20 74 61 6B 65 73    assemblers takes
003ED0:  20 61 63 63 6F 75 6E 74 20 6F 66 20 61 6C 6C 74     account of allt
003EE0:  68 65 73 65 20 20 63 6F 6D 70 6C 65 78 69 74 69    hese  complexiti
003EF0:  65 73 2C 20 20 61 6E 64 20 20 79 6F 75 20 20 77    es,  and  you  w
003F00:  69 6C 6C 20 6E 6F 74 6E 65 65 64 20 20 74 6F 20    ill notneed  to 
003F10:  20 6C 65 61 72 6E 20 20 77 68 69 63 68 20 6E 75     learn  which nu
003F20:  6D 62 65 72 73 20 72 65 70 72 65 73 65 6E 74 77    mbers representw
003F30:  68 69 63 68 20 69 6E 73 74 72 75 63 74 69 6F 6E    hich instruction
003F40:  73 2E A0 A0 20 54 68 65 20 53 69 6D 75 6C 61 74    s... The Simulat
003F50:  6F 72 20 20 63 61 6E 20 20 62 65 20 73 77 69 74    or  can  be swit
003F60:  63 68 65 64 20 62 65 74 77 65 65 6E 64 65 63 69    ched betweendeci
003F70:  6D 61 6C 20 20 20 61 6E 64 20 20 20 68 65 78 61    mal   and   hexa
003F80:  64 65 63 69 6D 61 6C 20 20 64 69 73 70 6C 61 79    decimal  display
003F90:  20 20 62 79 70 72 65 73 73 69 6E 67 20 73 68 69      bypressing shi
003FA0:  66 74 20 20 22 54 22 2C 20 20 77 68 65 6E 20 61    ft  "T",  when a
003FB0:  20 70 72 6F 67 A5 E2 72 61 6D 20 20 69 73 6E 6F     prog..ram  isno
003FC0:  74 20 72 75 6E 6E 69 6E 67 2E A3 20 4C 44 20 41    t running.£ LD A
003FD0:  2C 32 35 48 A0 20 20 41 44 44 20 41 2C 41 A0 20    ,25H.  ADD A,A. 
003FE0:  20 44 41 41 A0 20 20 4C 44 20 48 4C 2C 34 35 38     DAA.  LD HL,458
003FF0:  39 48 A0 20 20 4C 44 20 44 45 2C 33 38 31 32 48    9H.  LD DE,3812H
004000:  A0 20 20 4C 44 20 41 2C 4C A0 20 20 53 55 42 20    .  LD A,L.  SUB 
004010:  45 A0 20 20 44 41 41 A0 20 20 4C 44 20 4C 2C 41    E.  DAA.  LD L,A
004020:  A0 20 20 4C 44 20 41 2C 48 A0 20 20 53 42 43 20    .  LD A,H.  SBC 
004030:  41 2C 44 A0 20 20 44 41 41 A0 20 20 4C 44 20 48    A,D.  DAA.  LD H
004040:  2C 41 A0 20 20 52 45 54 A0 20 20 A0 20 20 A0 20    ,A.  RET.  .  . 
004050:  20 20 20 20 20 42 49 4E 41 52 59 20 43 4F 44 45         BINARY CODE
004060:  44 20 44 45 43 49 4D 41 4C 20 4E 4F 54 41 54 49    D DECIMAL NOTATI
004070:  4F 4E A0 A0 20 57 65 20 20 77 6F 75 6C 64 20 20    ON.. We  would  
004080:  73 74 69 6C 6C 20 20 6C 69 6B 65 20 20 74 6F 20    still  like  to 
004090:  20 62 65 20 20 61 62 6C 65 20 74 6F 70 65 72 66     be  able toperf
0040A0:  6F 72 6D 20 63 61 6C 63 75 6C 61 74 69 6F 6E 73    orm calculations
0040B0:  20 20 6F 6E 20 64 65 08 DC 63 69 6D 61 6C 20 6E      on de..cimal n
0040C0:  75 6D 62 65 72 73 77 69 74 68 6F 75 74 20 20 68    umberswithout  h
0040D0:  61 76 69 6E 67 20 20 74 6F 20 63 6F 6E 76 65 72    aving  to conver
0040E0:  74 20 74 6F 20 62 69 6E 61 72 79 20 6F 72 68 65    t to binary orhe
0040F0:  78 61 64 65 63 69 6D 61 6C 20 66 6F 72 6D 2E 20    xadecimal form. 
004100:  48 65 78 69 64 65 63 69 6D 61 6C 20 66 6F 72 6D    Hexidecimal form
004110:  20 68 6F 6C 64 73 61 20 6B 65 79 20 74 6F 20 61     holdsa key to a
004120:  20 6D 65 74 68 6F 64 20 6F 66 20 61 63 68 69 65     method of achie
004130:  76 69 6E 67 20 74 68 69 73 2E A0 A0 20 54 68 65    ving this... The
004140:  20 20 68 65 78 20 64 69 67 69 74 20 20 72 65 71      hex digit  req
004150:  75 69 72 65 73 20 20 61 64 6A 75 73 74 6D 65 6E    uires  adjustmen
004160:  74 20 74 6F 61 76 6F 69 64 20 74 68 65 20 64 69    t toavoid the di
004170:  67 69 74 73 20 20 41 2D 46 2E 20 20 41 64 64 69    gits  A-F.  Addi
004180:  6E 67 20 20 36 20 74 6F 20 74 68 65 64 69 67 69    ng  6 to thedigi
004190:  74 2C 20 69 66 20 74 68 65 73 65 20 73 79 6D 62    t, if these symb
0041A0:  6F 6C 73 20 61 70 70 65 61 72 2C 20 20 72 65 73    ols appear,  res
0041B0:  75 6C 74 73 69 6E 20 63 6F B8 18 72 72 65 63 74    ultsin co..rrect
0041C0:  20 61 64 6A 75 73 74 6D 65 6E 74 2E A0 A0 20 54     adjustment... T
0041D0:  61 6B 65 20 20 74 68 65 20 20 68 65 78 20 20 6E    ake  the  hex  n
0041E0:  75 6D 62 65 72 20 20 43 20 20 28 3D 20 31 32 20    umber  C  (= 12 
0041F0:  64 65 63 2E 29 2E 41 64 64 69 6E 67 20 20 36 20    dec.).Adding  6 
004200:  20 67 69 76 65 73 20 20 31 38 20 20 64 65 63 69     gives  18  deci
004210:  6D 61 6C 20 6F 72 20 31 32 20 68 65 78 2E 48 65    mal or 12 hex.He
004220:  6E 63 65 20 74 68 65 20 68 65 78 20 6E 75 6D 62    nce the hex numb
004230:  65 72 20 6C 6F 6F 6B 73 20 20 69 64 65 6E 74 69    er looks  identi
004240:  63 61 6C 20 74 6F 74 68 65 20 64 65 63 69 6D 61    cal tothe decima
004250:  6C 20 61 6E 73 77 65 72 20 72 65 71 75 69 72 65    l answer require
004260:  64 2E A3 20 45 61 63 68 20 64 69 67 69 74 20 69    d.£ Each digit i
004270:  73 20 20 68 65 6C 64 20 20 69 6E 20 20 34 20 20    s  held  in  4  
004280:  62 69 74 73 20 6F 66 20 74 68 65 72 65 67 69 73    bits of theregis
004290:  74 65 72 2E 20 20 20 54 68 65 73 65 20 20 34 20    ter.   These  4 
0042A0:  20 62 69 74 73 20 61 72 65 20 63 61 6C 6C 65 64     bits are called
0042B0:  20 20 61 6E 69 62 62 6C 65 2C 20 D5 AB 74 68 65      anibble, ..the
0042C0:  20 77 68 6F 6C 65 20 38 20 62 69 74 20 77 6F 72     whole 8 bit wor
0042D0:  64 20 69 73 20 74 65 72 6D 65 64 20 61 62 79 74    d is termed abyt
0042E0:  65 2E 20 57 68 6F 20 73 61 69 64 20 70 72 6F 67    e. Who said prog
0042F0:  72 61 6D 6D 65 72 73 20 68 61 76 65 20 6E 6F 20    rammers have no 
004300:  73 65 6E 73 65 6F 66 20 68 75 6D 6F 75 72 3F A0    senseof humour?.
004310:  A0 20 54 68 69 73 20 20 70 72 65 73 65 6E 74 61    . This  presenta
004320:  74 69 6F 6E 20 20 69 73 20 20 74 65 72 6D 65 64    tion  is  termed
004330:  20 20 20 42 69 6E 61 72 79 43 6F 64 65 64 20 44       BinaryCoded D
004340:  65 63 69 6D 61 6C 20 6F 72 20 42 43 44 2E A0 A0    ecimal or BCD...
004350:  20 54 68 65 20 20 20 5A 38 30 20 20 20 20 61 63     The   Z80    ac
004360:  63 6F 6D 6D 6F 64 61 74 65 73 20 20 20 74 68 65    commodates   the
004370:  20 20 20 61 62 6F 76 65 61 64 6A 75 73 74 6D 65       aboveadjustme
004380:  6E 74 2C 20 20 77 69 74 68 20 74 68 65 20 69 6E    nt,  with the in
004390:  73 74 72 75 63 74 69 6F 6E 20 20 20 44 41 41 2C    struction   DAA,
0043A0:  6F 72 20 20 44 65 63 69 6D 61 6C 20 20 41 64 6A    or  Decimal  Adj
0043B0:  75 73 74 20 20 41 63 63 75 6D 75 6C 61 B2 D6 74    ust  Accumula..t
0043C0:  6F 72 2E 20 20 20 54 68 69 73 69 6E 73 74 72 75    or.   Thisinstru
0043D0:  63 74 69 6F 6E 20 20 69 73 20 20 75 73 65 64 20    ction  is  used 
0043E0:  20 61 66 74 65 72 20 20 61 6E 20 20 38 20 20 62     after  an  8  b
0043F0:  69 74 41 44 44 2C 20 20 41 44 43 2C 20 20 53 55    itADD,  ADC,  SU
004400:  42 2C 20 20 6F 72 20 20 53 42 43 20 20 74 6F 20    B,  or  SBC  to 
004410:  61 64 6A 75 73 74 20 74 68 65 41 63 63 75 6D 75    adjust theAccumu
004420:  6C 61 74 6F 72 20 63 6F 6E 74 65 6E 74 73 20 62    lator contents b
004430:  79 20 61 64 64 69 6E 67 20 36 20 20 74 6F 20 74    y adding 6  to t
004440:  68 65 6E 69 62 62 6C 65 2C 20 20 69 66 20 65 69    henibble,  if ei
004450:  74 68 65 72 20 20 6E 69 62 62 6C 65 20 69 6E 20    ther  nibble in 
004460:  74 68 65 20 61 6E 73 77 65 72 69 73 20 61 62 6F    the answeris abo
004470:  76 65 20 39 2E A3 20 54 6F 20 70 65 72 66 6F 72    ve 9.£ To perfor
004480:  6D 20 20 74 68 69 73 20 6F 70 65 72 61 74 69 6F    m  this operatio
004490:  6E 20 74 68 65 20 5A 38 30 20 75 73 65 73 74 77    n the Z80 usestw
0044A0:  6F 20 66 75 72 74 68 65 72 20 66 6C 61 67 73 2C    o further flags,
0044B0:  20 74 68 65 20 20 48 20 20 66 6C 61 67 20 28 43     the  H  flag (C
0044C0:  8F 20 61 20 48 61 6C 66 63 61 72 72 79 20 20 62    . a Halfcarry  b
0044D0:  65 74 77 65 65 6E 20 20 6E 69 62 62 6C 65 73 20    etween  nibbles 
0044E0:  29 2C 20 20 61 6E 64 20 20 4E 20 20 66 6C 61 67    ),  and  N  flag
0044F0:  28 73 75 62 74 72 61 63 74 20 20 69 6E 73 74 72    (subtract  instr
004500:  75 63 74 69 6F 6E 20 20 70 65 72 66 6F 72 6D 65    uction  performe
004510:  64 20 6C 61 73 74 29 2E 53 69 6E 63 65 20 20 74    d last).Since  t
004520:  68 65 73 65 20 20 66 6C 61 67 73 20 20 63 61 6E    hese  flags  can
004530:  6E 6F 74 20 62 65 20 74 65 73 74 65 64 20 61 73    not be tested as
004540:  70 61 72 74 20 6F 66 20 61 20 63 6F 6E 64 69 74    part of a condit
004550:  69 6F 6E 61 6C 20 6A 75 6D 70 20 65 74 63 2E 20    ional jump etc. 
004560:  74 68 65 79 20 61 72 65 6F 66 20 6C 69 74 74 6C    they areof littl
004570:  65 20 75 73 65 2E A3 20 20 20 20 20 45 58 41 4D    e use.£     EXAM
004580:  50 4C 45 53 20 4F 46 20 42 2E 43 2E 44 2E 20 4E    PLES OF B.C.D. N
004590:  4F 54 41 54 49 4F 4E A0 A0 20 54 68 65 73 65 20    OTATION.. These 
0045A0:  65 78 61 6D 70 6C 65 73 20 73 68 6F 77 20 73 69    examples show si
0045B0:  6D 70 6C 65 20 61 64 64 69 74 69 6F 6E 20 61 6E    mple addition an
0045C0:  64 72 75 73 75 62 74 72 61 63 74 69 6F 6E 20 69    drusubtraction i
0045D0:  6E 20 20 42 43 44 20 66 6F 72 6D 61 74 2E 20 20    n  BCD format.  
0045E0:  52 65 6D 65 6D 62 65 72 20 74 6F 6B 65 65 70 20    Remember tokeep 
0045F0:  20 69 6E 20 20 20 48 65 78 20 20 64 69 73 70 6C     in   Hex  displ
004600:  61 79 20 20 20 6D 6F 64 65 20 20 20 6F 72 20 20    ay   mode   or  
004610:  74 68 65 69 6C 6C 75 73 74 72 61 74 69 6F 6E 73    theillustrations
004620:  20 77 69 6C 6C 20 6E 6F 74 20 61 70 70 65 61 72     will not appear
004630:  20 69 6E 20 42 43 44 2E A3 20 4C 44 20 41 2C 32     in BCD.£ LD A,2
004640:  35 48 A0 20 20 4C 44 20 48 4C 2C 53 54 4F 52 45    5H.  LD HL,STORE
004650:  A0 20 20 4C 44 20 44 45 2C 32 34 36 38 48 A0 20    .  LD DE,2468H. 
004660:  20 49 4E 43 20 28 48 4C 29 A0 20 20 52 45 54 A0     INC (HL).  RET.
004670:  20 20 A0 20 20 42 49 4E 20 36 35 48 A0 20 20 42      .  BIN 65H.  B
004680:  49 4E 20 38 37 48 A0 20 20 42 49 4E 20 39 41 48    IN 87H.  BIN 9AH
004690:  A0 20 20 42 49 4E 20 44 46 48 A0 20 20 42 49 4E    .  BIN DFH.  BIN
0046A0:  20 46 46 48 A0 20 20 42 49 4E 20 36 34 48 A0 20     FFH.  BIN 64H. 
0046B0:  20 A0 20 53 54 4F 52 45 20 44 45 46 42 20 36 34     . STORE DEFB 64
0046C0:  A0 20 20 87 C2 A0 20 20 A0 20 20 20 50 4F 53 49    .  ...  .   POSI
0046D0:  54 49 56 45 20 41 4E 44 20 4E 45 47 41 54 49 56    TIVE AND NEGATIV
0046E0:  45 20 4E 55 4D 42 45 52 20 4E 4F 54 41 54 49 4F    E NUMBER NOTATIO
0046F0:  4E A0 A0 20 53 6F 20 66 61 72 20 77 65 20 68 61    N.. So far we ha
004700:  76 65 20 6F 6E 6C 79 20 64 65 61 6C 74 20 77 69    ve only dealt wi
004710:  74 68 20 70 6F 73 69 74 69 76 65 6E 75 6D 62 65    th positivenumbe
004720:  72 73 2E 20 20 49 66 20 77 65 20 68 61 64 20 74    rs.  If we had t
004730:  61 6B 65 6E 20 20 36 20 20 66 72 6F 6D 20 20 35    aken  6  from  5
004740:  20 77 65 77 6F 75 6C 64 20 65 6E 64 20 20 75 70     wewould end  up
004750:  20 77 69 74 68 20 20 74 68 65 20 61 6E 73 77 65     with  the answe
004760:  72 20 32 35 35 20 20 77 69 74 68 63 61 72 72 79    r 255  withcarry
004770:  20 73 65 74 2E 20 54 68 65 72 65 20 69 73 20 61     set. There is a
004780:  6E 20 69 6E 74 65 72 70 72 65 74 61 74 69 6F 6E    n interpretation
004790:  20 6F 66 6E 75 6D 62 65 72 73 20 20 74 68 61 74     ofnumbers  that
0047A0:  20 61 6C 6C 6F 77 73 20 75 73 20 74 6F 20 63 6F     allows us to co
0047B0:  6E 73 69 64 65 72 20 74 68 69 73 61 6E 73 77 65    nsider thisanswe
0047C0:  72 20 61 73 20 B8 DF 74 68 65 20 6E 65 67 61 74    r as ..the negat
0047D0:  69 76 65 20 6E 75 6D 62 65 72 20 2D 31 2E A0 A0    ive number -1...
0047E0:  20 49 6E 20 20 74 68 69 73 20 20 69 6E 74 65 72     In  this  inter
0047F0:  70 72 65 74 61 74 69 6F 6E 20 20 2D 31 20 6D 75    pretation  -1 mu
004800:  73 74 20 65 71 75 61 6C 32 35 35 20 6F 72 20 31    st equal255 or 1
004810:  31 31 31 31 31 31 31 2C 20 6F 72 20 74 68 65 20    1111111, or the 
004820:  70 72 6F 63 65 73 73 6F 72 20 20 77 6F 75 6C 64    processor  would
004830:  6E 6F 74 20 62 65 20 61 62 6C 65 20 74 6F 20 74    not be able to t
004840:  61 6B 65 20 20 36 20 20 66 72 6F 6D 20 20 35 20    ake  6  from  5 
004850:  20 61 6E 64 20 67 65 74 74 68 65 20 72 69 67 68     and getthe righ
004860:  74 20 61 6E 73 77 65 72 2E 20 46 75 72 74 68 65    t answer. Furthe
004870:  72 20 35 2D 37 20 3D 2D 32 20 6F 72 20 32 35 34    r 5-7 =-2 or 254
004880:  6F 72 20 31 31 31 31 31 31 31 30 2E 20 42 69 74    or 11111110. Bit
004890:  20 37 2C 20 74 68 65 20 6D 6F 73 74 20 73 69 67     7, the most sig
0048A0:  6E 69 66 69 63 61 6E 74 62 69 74 2C 20 72 65 70    nificantbit, rep
0048B0:  72 65 73 65 6E 74 73 20 20 74 68 65 20 73 69 67    resents  the sig
0048C0:  6E 20 28 20 2B 20 6F 40 51 72 20 2D 20 29 20 20    n ( + o@Qr - )  
0048D0:  6F 66 74 68 65 20 6E 75 6D 62 65 72 2E 20 57 68    ofthe number. Wh
0048E0:  65 6E 20 62 69 74 20 37 20 69 73 20 22 31 22 20    en bit 7 is "1" 
0048F0:  74 68 65 20 6E 75 6D 62 65 72 69 73 20 6E 65 67    the numberis neg
004900:  61 74 69 76 65 2C 20 20 61 6E 64 20 77 68 65 6E    ative,  and when
004910:  20 22 30 22 20 74 68 65 20 6E 75 6D 62 65 72 20     "0" the number 
004920:  69 73 70 6F 73 69 74 69 76 65 2E A3 20 41 20 20    ispositive.£ A  
004930:  75 73 65 66 75 6C 20 6F 70 65 72 61 74 69 6F 6E    useful operation
004940:  20 77 6F 75 6C 64 20 20 62 65 20 74 6F 20 6D 61     would  be to ma
004950:  6B 65 20 61 70 6F 73 69 74 69 76 65 20 6E 75 6D    ke apositive num
004960:  62 65 72 20 6E 65 67 61 74 69 76 65 2E 20 43 68    ber negative. Ch
004970:  61 6E 67 69 6E 67 20 62 69 74 20 37 64 6F 65 73    anging bit 7does
004980:  20 20 6E 6F 74 20 20 64 6F 20 20 74 68 69 73 2E      not  do  this.
004990:  20 20 54 61 6B 65 20 74 68 65 20 20 70 6F 73 69      Take the  posi
0049A0:  74 69 76 65 6E 75 6D 62 65 72 20 20 32 20 6F 72    tivenumber  2 or
0049B0:  20 20 30 30 30 30 30 30 31 30 20 20 61 6E 64 20      00000010  and 
0049C0:  69 74 73 20 6E 65 67 61 74 9C 8E 69 76 65 65 71    its negat..iveeq
0049D0:  75 69 76 61 6C 65 6E 74 20 2D 32 20 20 6F 72 20    uivalent -2  or 
0049E0:  31 31 31 31 31 31 31 30 20 20 66 6F 72 20 65 78    11111110  for ex
0049F0:  61 6D 70 6C 65 2E 49 6E 76 65 72 74 69 6E 67 20    ample.Inverting 
004A00:  61 6C 6C 20 62 69 74 73 20 6F 66 20 74 68 65 20    all bits of the 
004A10:  20 62 69 6E 61 72 79 20 6E 75 6D 62 65 72 6F 66     binary numberof
004A20:  20 20 2B 32 20 20 67 69 76 65 73 20 20 31 31 31      +2  gives  111
004A30:  31 31 31 30 31 2C 20 77 68 69 63 68 20 69 73 20    11101, which is 
004A40:  31 20 6C 65 73 73 74 68 61 6E 20 74 68 61 74 20    1 lessthan that 
004A50:  20 66 6F 72 20 2D 32 2E A0 A0 48 65 6E 63 65 20     for -2...Hence 
004A60:  74 6F 20 6D 61 6B 65 20 61 20 70 6F 73 69 74 69    to make a positi
004A70:  76 65 20 6E 75 6D 62 65 72 20 6E 65 67 61 74 69    ve number negati
004A80:  76 65 77 65 20 69 6E 76 65 72 74 20 61 6C 6C 20    vewe invert all 
004A90:  69 74 73 20 62 69 6E 61 72 79 20 62 69 74 73 2C    its binary bits,
004AA0:  20 20 6B 6E 6F 77 6E 20 61 73 43 6F 6D 70 6C 69      known asCompli
004AB0:  6D 65 6E 74 69 6E 67 2C 20 61 6E 64 20 61 64 64    menting, and add
004AC0:  20 20 31 2E 20 20 54 68 65 20 6E 7A 68 6F 74 61      1.  The nzhota
004AD0:  74 69 6F 6E 69 73 20 67 65 6E 65 72 61 6C 6C 79    tionis generally
004AE0:  20 74 65 72 6D 65 64 20 32 73 20 63 6F 6D 70 6C     termed 2s compl
004AF0:  65 6D 65 6E 74 A3 69 2E 65 2E 20 20 20 20 20 20    ement£i.e.      
004B00:  20 20 20 30 20 30 20 30 20 30 20 30 20 31 20 30       0 0 0 0 0 1 0
004B10:  20 31 20 20 20 20 2B 35 A0 20 20 20 20 69 6E 76     1    +5.    inv
004B20:  65 72 74 20 20 20 31 20 31 20 31 20 31 20 31 20    ert   1 1 1 1 1 
004B30:  30 20 31 20 30 A0 20 20 61 64 64 20 31 20 20 20    0 1 0.  add 1   
004B40:  20 20 20 31 20 31 20 31 20 31 20 31 20 30 20 31       1 1 1 1 1 0 1
004B50:  20 31 20 20 20 20 2D 35 A0 20 20 20 20 69 6E 76     1    -5.    inv
004B60:  65 72 74 20 20 20 30 20 30 20 30 20 30 20 30 20    ert   0 0 0 0 0 
004B70:  31 20 30 20 30 A0 20 20 61 64 64 20 31 20 20 20    1 0 0.  add 1   
004B80:  20 20 20 30 20 30 20 30 20 30 20 30 20 31 20 30       0 0 0 0 0 1 0
004B90:  20 31 20 20 20 20 2B 35 A0 A0 20 54 68 65 20 20     1    +5.. The  
004BA0:  6F 70 65 72 61 74 69 6F 6E 20 20 6C 75 63 6B 69    operation  lucki
004BB0:  6C 79 20 20 61 6C 73 6F 20 20 6D 61 6B 65 73 20    ly  also  makes 
004BC0:  20 61 6E 65 67 61 74 69 76 65 20 20 20 FF 60 6E     anegative   .`n
004BD0:  75 6D 62 65 72 20 20 20 20 70 6F 73 69 74 69 76    umber    positiv
004BE0:  65 2E 20 20 20 41 20 20 76 65 72 79 69 6D 70 6F    e.   A  veryimpo
004BF0:  72 74 61 6E 74 20 70 6F 69 6E 74 2E A0 A0 20 54    rtant point... T
004C00:  68 65 20 6C 61 72 67 65 73 74 20 70 6F 73 69 74    he largest posit
004C10:  69 76 65 20 6E 75 6D 62 65 72 20 77 65 20 63 61    ive number we ca
004C20:  6E 20 68 6F 6C 64 69 6E 20 20 61 20 20 20 73 69    n holdin  a   si
004C30:  6E 67 6C 65 20 20 20 72 65 67 69 73 74 65 72 2C    ngle   register,
004C40:  20 20 75 73 69 6E 67 20 20 20 74 68 69 73 6E 6F      using   thisno
004C50:  74 61 74 69 6F 6E 20 69 73 20 20 30 31 31 31 31    tation is  01111
004C60:  31 31 31 20 20 20 6F 72 20 20 31 32 37 20 20 61    111   or  127  a
004C70:  6E 64 20 74 68 65 6C 61 72 67 65 73 74 20 20 6E    nd thelargest  n
004C80:  65 67 61 74 69 76 65 20 20 20 6E 75 6D 62 65 72    egative   number
004C90:  20 20 31 30 30 30 30 30 30 30 20 20 6F 72 2D 31      10000000  or-1
004CA0:  32 38 2E A3 20 54 68 65 20 20 5A 38 30 20 20 68    28.£ The  Z80  h
004CB0:  61 73 20 74 77 6F 20 69 6E 73 74 72 75 63 74 69    as two instructi
004CC0:  6F 6E 73 20 74 68 61 74 20 6D 61 79 62 65 20 A2    ons that maybe .
004CD0:  2D 75 73 65 64 20 66 6F 72 20 74 68 65 73 65 20    -used for these 
004CE0:  6F 70 65 72 61 74 69 6F 6E 73 A0 A0 20 43 50 4C    operations.. CPL
004CF0:  20 20 20 63 6F 6D 70 6C 65 6D 65 6E 74 73 20 20       complements  
004D00:  20 20 6F 72 20 20 20 69 6E 76 65 72 74 73 20 20      or   inverts  
004D10:  20 74 68 65 20 20 20 20 20 20 20 63 6F 6E 74 65     the       conte
004D20:  6E 74 73 20 6F 66 20 74 68 65 20 41 63 63 75 6D    nts of the Accum
004D30:  75 6C 61 74 6F 72 2E A0 A0 20 4E 45 47 20 20 20    ulator... NEG   
004D40:  6E 65 67 61 74 65 73 2C 20 20 6F 72 20 6D 61 6B    negates,  or mak
004D50:  65 73 20 20 6E 65 67 61 74 69 76 65 2C 20 74 68    es  negative, th
004D60:  65 20 20 20 20 20 20 20 63 6F 6E 74 65 6E 74 73    e       contents
004D70:  20 20 6F 66 20 20 74 68 65 20 20 41 63 63 75 6D      of  the  Accum
004D80:  75 6C 61 74 6F 72 20 62 79 20 20 20 20 20 20 20    ulator by       
004D90:  63 6F 6D 70 6C 65 6D 65 6E 74 69 6E 67 20 61 6E    complementing an
004DA0:  64 20 61 64 64 69 6E 67 20 31 20 69 6E 20 6F 6E    d adding 1 in on
004DB0:  65 20 20 20 20 20 20 20 6F 70 65 72 61 74 69 6F    e       operatio
004DC0:  6E 2E A0 A0 20 41 20 53 69 67 6E 20 66 6C 61 67    n... A Sign flag
004DD0:  20 46 52 28 53 29 20 69 73 20 70 72 6F 76 69 64     FR(S) is provid
004DE0:  65 64 20 6F 6E 20 74 68 65 20 5A 38 30 2E 49 74    ed on the Z80.It
004DF0:  20 64 75 70 6C 69 63 61 74 65 73 20 20 74 68 65     duplicates  the
004E00:  20 73 69 67 6E 20 28 20 62 69 74 20 37 20 29 20     sign ( bit 7 ) 
004E10:  6F 66 20 74 68 65 61 6E 73 77 65 72 20 61 66 74    of theanswer aft
004E20:  65 72 20 61 6E 79 20 61 72 69 74 68 6D 65 74 69    er any arithmeti
004E30:  63 20 6F 70 65 72 61 74 69 6F 6E 20 6F 6E 74 68    c operation onth
004E40:  65 20 41 63 63 75 6D 75 6C 61 74 6F 72 2E 20 20    e Accumulator.  
004E50:  54 68 65 20 20 73 69 67 6E 20 20 66 6C 61 67 20    The  sign  flag 
004E60:  69 73 20 22 30 22 66 6F 72 20 20 61 20 20 70 6F    is "0"for  a  po
004E70:  73 69 74 69 76 65 20 20 72 65 73 75 6C 74 20 20    sitive  result  
004E80:  61 6E 64 20 20 22 31 22 20 66 6F 72 20 61 6E 65    and  "1" for ane
004E90:  67 61 74 69 76 65 20 72 65 73 75 6C 74 2E A3 20    gative result.£ 
004EA0:  57 68 65 6E 20 70 65 72 66 6F 72 6D 69 6E 67 20    When performing 
004EB0:  20 61 72 69 74 68 6D 65 74 69 63 20 20 6F 70 65     arithmetic  ope
004EC0:  72 61 74 69 6F 6E 73 77 68 69 63 68 20 20 77 65    rationswhich  we
004ED0:  20 20 77 A4 87 69 73 68 20 20 74 6F 20 69 6E 74      w..ish  to int
004EE0:  65 72 70 72 65 74 20 77 69 74 68 69 6E 20 74 68    erpret within th
004EF0:  65 72 61 6E 67 65 20 20 2D 31 32 38 20 74 6F 20    erange  -128 to 
004F00:  2B 31 32 37 2C 20 74 68 65 20 43 61 72 72 79 20    +127, the Carry 
004F10:  20 66 6C 61 67 20 20 6E 6F 6C 6F 6E 67 65 72 20     flag  nolonger 
004F20:  20 73 69 67 6E 61 6C 73 20 20 61 6E 20 6F 75 74     signals  an out
004F30:  20 6F 66 20 72 61 6E 67 65 20 72 65 73 75 6C 74     of range result
004F40:  2E 48 6F 77 65 76 65 72 20 61 6E 6F 74 68 65 72    .However another
004F50:  20 66 6C 61 67 2C 20 74 68 65 20 6F 76 65 72 66     flag, the overf
004F60:  6C 6F 77 20 28 50 2F 56 29 66 6C 61 67 20 20 64    low (P/V)flag  d
004F70:  6F 65 73 2E 20 20 49 74 20 20 69 73 20 20 61 20    oes.  It  is  a 
004F80:  20 22 31 22 20 77 68 65 6E 65 76 65 72 20 74 68     "1" whenever th
004F90:  65 61 6E 73 77 65 72 20 69 73 20 6F 75 74 73 69    eanswer is outsi
004FA0:  64 65 20 74 68 65 20 72 61 6E 67 65 20 2D 31 32    de the range -12
004FB0:  38 20 74 6F 20 2B 31 32 37 61 6E 64 20 20 22 30    8 to +127and  "0
004FC0:  22 20 20 77 69 74 68 69 6E 20 20 20 74 68 65 20    "  within   the 
004FD0:  20 20 72 61 6E D5 E9 67 65 2E 20 20 20 49 74 20      ran..ge.   It 
004FE0:  20 69 73 65 66 66 65 63 74 69 76 65 6C 79 20 20     iseffectively  
004FF0:  61 20 20 63 61 72 72 79 20 20 69 6E 74 6F 20 20    a  carry  into  
005000:  62 69 74 20 37 20 77 68 69 63 68 77 6F 75 6C 64    bit 7 whichwould
005010:  20 6D 61 6B 65 20 74 68 65 20 73 69 67 6E 20 62     make the sign b
005020:  69 74 20 69 6E 63 6F 72 72 65 63 74 2E A3 20 54    it incorrect.£ T
005030:  68 65 72 65 20 20 69 73 20 20 6E 6F 20 20 72 65    here  is  no  re
005040:  61 73 6F 6E 20 66 6F 72 20 73 74 69 63 6B 69 6E    ason for stickin
005050:  67 20 74 6F 20 38 62 69 74 73 20 20 75 73 69 6E    g to 8bits  usin
005060:  67 20 74 68 69 73 20 6D 65 74 68 6F 64 2E 20 20    g this method.  
005070:  53 6F 20 6C 6F 6E 67 20 61 73 20 74 68 65 6E 75    So long as thenu
005080:  6D 62 65 72 20 6F 66 20 20 62 69 74 73 20 69 73    mber of  bits is
005090:  20 20 73 75 66 66 69 63 69 65 6E 74 20 20 61 6E      sufficient  an
0050A0:  64 20 20 74 68 65 6D 6F 73 74 20 20 73 69 67 6E    d  themost  sign
0050B0:  69 66 69 63 61 6E 74 20 20 62 69 74 20 20 69 73    ificant  bit  is
0050C0:  20 20 74 61 6B 65 6E 20 61 73 20 74 68 65 73 69      taken as thesi
0050D0:  67 6E 20 20 62 69 74 03 EF 20 20 61 6E 79 20 73    gn  bit..  any s
0050E0:  69 7A 65 20 70 6F 73 69 74 69 76 65 20 6F 72 20    ize positive or 
0050F0:  6E 65 67 61 74 69 76 65 6E 75 6D 62 65 72 20 63    negativenumber c
005100:  61 6E 20 62 65 20 72 65 70 72 65 73 65 6E 74 65    an be represente
005110:  64 2E A0 A0 20 50 65 72 66 6F 72 6D 69 6E 67 20    d... Performing 
005120:  61 20 73 69 6D 69 6C 61 72 20 63 61 6C 63 75 6C    a similar calcul
005130:  61 74 69 6F 6E 20 74 6F 20 74 68 65 61 62 6F 76    ation to theabov
005140:  65 20 20 77 65 20 63 61 6E 20 20 73 68 6F 77 20    e  we can  show 
005150:  74 68 61 74 20 61 20 72 65 67 69 73 74 65 72 20    that a register 
005160:  70 61 69 72 63 61 6E 20 20 72 65 70 72 65 73 65    paircan  represe
005170:  6E 74 20 20 61 20 20 6E 75 6D 62 65 72 20 20 69    nt  a  number  i
005180:  6E 20 74 68 65 20 20 72 61 6E 67 65 2B 33 32 37    n the  range+327
005190:  36 37 20 74 6F 20 2D 33 32 37 36 38 2E A0 A0 20    67 to -32768... 
0051A0:  54 68 65 20 20 53 69 67 6E 20 61 6E 64 20 20 6F    The  Sign and  o
0051B0:  76 65 72 66 6C 6F 77 20 20 66 6C 61 67 73 20 61    verflow  flags a
0051C0:  72 65 20 61 6C 73 6F 6F 70 65 72 61 74 69 76 65    re alsooperative
0051D0:  20 61 66 74 65 72 20 20 41 76 5B 44 43 20 61 6E     after  Av[DC an
0051E0:  64 20 53 42 43 20 69 6E 73 74 72 75 63 74 69 6F    d SBC instructio
0051F0:  6E 6F 6E 20 74 68 65 20 48 4C 20 72 65 67 69 73    non the HL regis
005200:  74 65 72 2E 20 49 74 20 72 65 66 6C 65 63 74 73    ter. It reflects
005210:  20 74 68 65 20 31 35 74 68 62 69 74 20 28 6F 72     the 15thbit (or
005220:  20 62 69 74 20 37 20 6F 66 20 48 20 72 65 67 69     bit 7 of H regi
005230:  73 74 65 72 29 20 2E A3 20 49 74 20 69 73 20 69    ster) .£ It is i
005240:  6D 70 6F 72 74 61 6E 74 20 20 74 6F 20 20 72 65    mportant  to  re
005250:  6D 65 6D 62 65 72 20 20 74 68 61 74 20 74 68 65    member  that the
005260:  5A 65 72 6F 2C 20 20 43 61 72 72 79 2C 20 20 53    Zero,  Carry,  S
005270:  69 67 6E 2C 20 61 6E 64 20 20 6F 76 65 72 66 6C    ign, and  overfl
005280:  6F 77 20 66 6C 61 67 73 61 72 65 20 61 6C 77 61    ow flagsare alwa
005290:  79 73 20 6F 70 65 72 61 74 69 76 65 20 20 61 66    ys operative  af
0052A0:  74 65 72 20 20 61 6E 20 20 20 38 20 20 62 69 74    ter  an   8  bit
0052B0:  61 72 69 74 68 6D 65 74 69 63 20 20 69 6E 73 74    arithmetic  inst
0052C0:  72 75 63 74 69 6F 6E 20 20 20 6F 72 20 20 61 20    ruction   or  a 
0052D0:  20 31 36 20 20 62 69 74 61 64 64 14 8F 69 74 69     16  bitadd..iti
0052E0:  6F 6E 20 20 20 69 6E 76 6F 6C 76 69 6E 67 20 20    on   involving  
0052F0:  20 74 68 65 20 20 43 61 72 72 79 2E 20 20 59 6F     the  Carry.  Yo
005300:  75 72 69 6E 74 65 72 70 72 65 74 61 74 69 6F 6E    urinterpretation
005310:  20 6F 66 20 74 68 65 20 20 72 65 73 75 6C 74 20     of the  result 
005320:  64 65 74 65 72 6D 69 6E 65 73 69 6E 20 20 20 77    determinesin   w
005330:  68 69 63 68 20 20 20 66 6C 61 67 28 73 29 20 20    hich   flag(s)  
005340:  20 79 6F 75 20 20 20 73 68 6F 75 6C 64 20 20 20     you   should   
005350:  62 65 69 6E 74 65 72 65 73 74 65 64 20 69 6E 2E    beinterested in.
005360:  A3 20 20 20 20 45 58 41 4D 50 4C 45 53 20 4F 46    £    EXAMPLES OF
005370:  20 2B 56 45 20 41 4E 44 20 2D 56 45 20 4E 4F 54     +VE AND -VE NOT
005380:  41 54 49 4F 4E A0 A0 20 41 6C 74 68 6F 75 67 68    ATION.. Although
005390:  20 20 74 68 65 73 65 20 20 65 78 61 6D 70 6C 65      these  example
0053A0:  73 20 20 61 70 70 65 61 72 20 74 6F 20 62 65 61    s  appear to bea
0053B0:  6C 6C 20 70 6F 73 69 74 69 76 65 2C 20 74 68 65    ll positive, the
0053C0:  79 20 63 61 6E 20 62 65 20 76 69 65 77 65 64 20    y can be viewed 
0053D0:  65 71 75 61 6C 6C 79 61 73 20 20 6E 65 65 25 67    equallyas  nee%g
0053E0:  61 74 69 76 65 20 20 77 68 65 72 65 20 61 70 70    ative  where app
0053F0:  72 6F 70 72 69 61 74 65 20 61 6E 64 20 20 74 68    ropriate and  th
005400:  65 53 69 67 6E 20 20 20 61 6E 64 20 20 20 6F 76    eSign   and   ov
005410:  65 72 66 6C 6F 77 20 20 20 66 6C 61 67 73 20 20    erflow   flags  
005420:  20 6F 62 73 65 72 76 65 64 6F 70 65 72 61 74 69     observedoperati
005430:  6E 67 2E A0 A0 20 52 65 6D 65 6D 62 65 72 20 20    ng... Remember  
005440:  61 20 20 20 6E 75 6D 62 65 72 20 20 20 61 62 6F    a   number   abo
005450:  76 65 20 20 20 31 32 38 20 20 20 69 73 6E 65 67    ve   128   isneg
005460:  61 74 69 76 65 2E 20 53 69 6E 63 65 20 61 6C 6C    ative. Since all
005470:  20 74 68 65 20 6E 65 67 61 74 69 76 65 20 6E 75     the negative nu
005480:  6D 62 65 72 73 69 6E 20 74 68 65 20 65 78 61 6D    mbersin the exam
005490:  70 6C 65 73 20 61 72 65 20 73 6D 61 6C 6C 2C 20    ples are small, 
0054A0:  20 74 68 65 79 20 20 63 61 6E 20 62 65 73 65 65     they  can besee
0054B0:  6E 20 71 75 69 63 6B 6C 79 20 61 6E 64 20 73 69    n quickly and si
0054C0:  6D 70 6C 79 20 62 65 20 63 6F 6E 76 65 72 74 65    mply be converte
0054D0:  64 20 20 62 79 73 75 62 74 72 61 63 74 69 6E 7F    d  bysubtractin.
0054E0:  53 67 20 74 68 65 20 6E 75 6D 62 65 72 20 66 72    Sg the number fr
0054F0:  6F 6D 20 32 35 36 2E A0 A0 20 69 2E 65 2E 20 20    om 256... i.e.  
005500:  2D 32 20 20 69 73 20 65 71 75 69 76 61 6C 65 6E    -2  is equivalen
005510:  74 20 74 6F 20 32 35 34 20 65 74 63 2E A3 20 4C    t to 254 etc.£ L
005520:  44 20 41 2C 32 35 34 A0 20 20 4E 45 47 A0 20 20    D A,254.  NEG.  
005530:  4E 45 47 A0 20 20 41 44 44 20 41 2C 32 A0 20 20    NEG.  ADD A,2.  
005540:  49 4E 43 20 41 A0 20 20 4C 44 20 48 4C 2C 32 A0    INC A.  LD HL,2.
005550:  20 20 4C 44 20 44 45 2C 46 46 46 45 48 A0 20 20      LD DE,FFFEH.  
005560:  41 44 44 20 48 4C 2C 44 45 A0 20 20 43 50 4C A0    ADD HL,DE.  CPL.
005570:  20 20 4C 44 20 48 4C 2C 53 54 4F 52 45 A0 20 20      LD HL,STORE.  
005580:  4C 44 20 28 48 4C 29 2C 37 46 48 A0 20 20 49 4E    LD (HL),7FH.  IN
005590:  43 20 28 48 4C 29 A0 20 20 52 45 54 A0 20 20 A0    C (HL).  RET.  .
0055A0:  20 53 54 4F 52 45 20 42 49 4E 20 30 A0 20 20 A0     STORE BIN 0.  .
0055B0:  20 38 38 12 7C 90 28 24 22 38 38 90 7C 12 28 48     88.|.($"88.|.(H
0055C0:  88 00 3C 18 3C 3C 3C 18 00 3C FF FF 18 0C 18 30    ..<.<<<..<.....0
0055D0:  18 18 3C 7E 18 18 7E 3C 18 00 24 66 FF 66 24 00    ..<~..~<..$f.f$.
0055E0:  00 2F 20 00 C9 C9 C9 C9 C9 C9 C9 C9 C9 C9 C9 C9    ./ .............
0055F0:  C9 C9 C9 C9 C9 C9 C9 C9 C9 C9 C9 C9 C9 C9 C9 00    ................
005600:  FF 00 00 FF 00 00 00 84 FF FF 00 00 00 3F 88 80    .............?..
005610:  03 00 00 FF FF 00 00 00 00 00 00 FF FF 00 08 79    ...............y
005620:  C8 FD 00 FF FF 00 00 FF FF 00 08 79 C8 FD 00 FF    ...........y....
005630:  FF 00 00 FF FF 00 08 79 C8 FD 00 FF FF 00 00 FF    .......y........
005640:  FF 00 00 FF FF 00 00 00 02 79 C8 FD FF 00 00 FF    .........y......
005650:  FF 00 00 FF FF 00 00 FF FF 00 04 79 C8 FD 00 FF    ...........y....
005660:  FF 00 00 FF FF 00 00 FF DF 00 00 00 08 79 C8 FD    .............y..
005670:  FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 10 79    ...............y
005680:  C8 FD 00 FF FF 00 00 31 00 76 65 20 22 54 45 58    .......1.ve "TEX
005690:  54 31 22 2C 42 2C 26 35 38 30 30 2C 26 35 35 30    T1",B,&5800,&550
0056A0:  30 00 30 00 54 45 52 22 00 61 00 64 00 30 30 31    0.0.TER".a.d.001
0056B0:  00 00 37 39 2C 26 65 64 2C 26 37 38 2C 26 63 62    ..79,&ed,&78,&cb
0056C0:  2C 26 34 37 00 26 31 62 2C 26 37 61 2C 26 42 33    ,&47.&1b,&7a,&B3
0056D0:  20 00 66 2C 26 30 00 FF FF 00 00 FF FF 00 00 FF     .f,&0..........
0056E0:  FF 00 00 FC 6D FF FF FF FF 11 15 09 A6 04 57 04    ....m.........W.
0056F0:  92 04 23 09 00 10 08 12 0A 07 01 00 FC 04 00 00    ..#.............
005700:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
005710:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
005720:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
005730:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
005740:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
005750:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
005760:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
005770:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
005780:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
005790:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0057A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0057B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0057C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0057D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0057E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0057F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 14 FE FF    ................
005800:  FF FF FF 11 15 09 A6 04 08 04 91 04 23 09 00 10    ............#...
005810:  08 12 0A AF 55 00 FB 06 58 26 58 05 83 27 58 2B    ....U...X&X..'X+
005820:  58 32 58 39 58 3D 58 44 58 4B 58 52 58 62 58 69    X2X9X=XDXKXRXbXi
005830:  58 79 58 80 58 90 58 97 58 9E 58 AB 58 00 00 15    XyX.X.X.X.X.X...
005840:  82 01 00 10 85 00 BF 87 01 00 E3 89 00 DB 8B 01    ................
005850:  00 AC 8C 01 00 84 8E 02 E5 8F 01 00 62 59 00 DD    ............bY..
005860:  5B 01 00 B2 58 06 55 5C 01 00 F4 5C 00 96 5F 00    [...X.U\...\.._.
005870:  04 61 00 2F 63 00 8D 64 01 00 F5 64 06 C5 65 01    .a./c..d...d..e.
005880:  00 76 66 00 6D 67 00 40 69 00 FC 6A 00 F7 6C 01    .vf.mg.@i..j..l.
005890:  00 D8 6D 06 6A 6E 01 00 16 6F 00 A6 70 00 05 73    ..m.jn...o..p..s
0058A0:  00 4F 75 00 72 77 01 00 DF 78 06 A4 79 01 00 60    .Ou.rw...x..y..`
0058B0:  7A 02 A6 7B 01 00 49 7C 00 1F 7E 00 7D 7F 00 C1    z..{..I|..~.}...
0058C0:  80 01 00 21 81 06 A5 81 01 20 20 20 20 20 20 45    ...!.....      E
0058D0:  58 41 4D 50 4C 45 53 20 4F 46 20 42 49 54 20 4D    XAMPLES OF BIT M
0058E0:  41 4E 49 50 55 4C 41 54 49 4F 4E A0 A0 20 54 68    ANIPULATION.. Th
0058F0:  65 20 66 6F 6C 6C 6F 77 69 6E 67 20 69 6C 6C 75    e following illu
005900:  73 74 72 61 74 65 73 20 20 74 68 65 20 20 77 61    strates  the  wa
005910:  79 20 20 69 6E 77 68 B2 91 69 63 68 20 20 53 45    y  inwh..ich  SE
005920:  54 2C 20 52 45 53 2C 20 61 6E 64 20 20 42 49 54    T, RES, and  BIT
005930:  20 63 61 6E 20 62 65 20 75 73 65 64 20 74 6F 6D     can be used tom
005940:  61 6E 69 70 75 6C 61 74 65 20 69 6E 64 69 76 69    anipulate indivi
005950:  64 75 61 6C 20 62 69 74 73 20 6F 66 20 61 20 72    dual bits of a r
005960:  65 67 69 73 74 65 72 6F 72 20 6D 65 6D 6F 72 79    egisteror memory
005970:  20 6C 6F 63 61 74 69 6F 6E 2E A3 20 20 20 20 20     location.£     
005980:  20 20 20 20 20 20 20 42 49 54 20 4D 41 4E 49 50           BIT MANIP
005990:  55 4C 41 54 49 4F 4E A0 A0 20 57 65 20 68 61 76    ULATION.. We hav
0059A0:  65 20 73 6F 20 66 61 72 20 74 72 65 61 74 65 64    e so far treated
0059B0:  20 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 20 20 69      information  i
0059C0:  6E 74 68 65 20 66 6F 72 6D 20 6F 66 20 62 79 74    nthe form of byt
0059D0:  65 73 20 6F 72 20 77 6F 72 64 73 2E 20 54 68 65    es or words. The
0059E0:  20 5A 38 30 20 64 6F 65 73 61 6C 6C 6F 77 20 61     Z80 doesallow a
0059F0:  20 6E 75 6D 62 65 72 20 6F 66 20 6F 70 65 72 61     number of opera
005A00:  74 69 6F 6E 73 20 6F 6E 20 73 65 70 61 72 61 74    tions on separat
005A10:  65 6F 72 20 67 72 6F 75 70 E1 FC 73 20 6F 66 20    eor group..s of 
005A20:  62 69 74 73 20 77 69 74 68 69 6E 20 6F 6E 65 20    bits within one 
005A30:  62 79 74 65 A0 A0 20 41 6E 79 20 20 62 69 74 20    byte.. Any  bit 
005A40:  20 69 6E 20 20 20 61 20 20 72 65 67 69 73 74 65     in   a  registe
005A50:  72 2C 20 20 6F 72 20 20 6D 65 6D 6F 72 79 6C 6F    r,  or  memorylo
005A60:  63 61 74 69 6F 6E 20 75 73 69 6E 67 20 28 48 4C    cation using (HL
005A70:  29 2C 20 20 63 61 6E 20 20 62 65 20 20 53 45 54    ),  can  be  SET
005A80:  20 20 74 6F 20 61 22 31 22 2E 20 57 65 20 63 61      to a"1". We ca
005A90:  6E 20 61 6C 73 6F 20 52 45 53 65 74 20 61 6E 79    n also RESet any
005AA0:  20 62 69 74 20 74 6F 20 61 20 22 30 22 2E 54 6F     bit to a "0".To
005AB0:  20 20 74 65 73 74 20 20 74 68 65 20 20 20 73 74      test  the   st
005AC0:  61 74 65 20 20 6F 66 20 20 61 20 20 62 69 74 20    ate  of  a  bit 
005AD0:  20 69 6E 20 20 61 72 65 67 69 73 74 65 72 2C 20     in  aregister, 
005AE0:  6F 72 20 6D 65 6D 6F 72 79 20 6C 6F 63 61 74 69    or memory locati
005AF0:  6F 6E 2C 20 77 65 20 63 61 6E 20 75 73 65 74 68    on, we can useth
005B00:  65 20 69 6E 73 74 72 75 63 74 69 6F 6E 20 42 49    e instruction BI
005B10:  54 2E 20 49 6E 20 74 68 69 73 20 FF D5 69 6E 73    T. In this ..ins
005B20:  74 72 75 63 74 69 6F 6E 74 68 65 20 5A 65 72 6F    tructionthe Zero
005B30:  20 66 6C 61 67 20 69 73 20 73 65 74 20 69 66 20     flag is set if 
005B40:  74 68 65 20 20 61 70 70 72 6F 70 72 69 61 74 65    the  appropriate
005B50:  62 69 74 20 69 73 20 20 22 30 22 20 20 61 6E 64    bit is  "0"  and
005B60:  20 72 65 73 65 74 20 74 6F 20 61 20 20 22 30 22     reset to a  "0"
005B70:  20 20 69 66 20 74 68 65 61 70 70 72 6F 70 72 69      if theappropri
005B80:  61 74 65 20 20 62 69 74 20 20 69 73 20 22 31 22    ate  bit  is "1"
005B90:  2E 20 20 48 65 6E 63 65 20 77 65 20 20 63 61 6E    .  Hence we  can
005BA0:  70 72 6F 64 75 63 65 20 6F 75 72 20 6F 77 6E 20    produce our own 
005BB0:  66 6C 61 67 73 20 74 6F 20 69 6E 64 69 63 61 74    flags to indicat
005BC0:  65 20 65 76 65 6E 74 73 61 6E 64 20 74 68 65 6E    e eventsand then
005BD0:  20 20 61 63 74 20 20 75 70 6F 6E 20 20 74 68 65      act  upon  the
005BE0:  6D 20 20 6C 61 74 65 72 20 69 6E 20 20 6F 75 72    m  later in  our
005BF0:  70 72 6F 67 72 61 6D 73 2E A3 20 53 75 6D 6D 61    programs.£ Summa
005C00:  72 79 20 2D 20 62 69 74 20 6D 61 6E 69 70 75 6C    ry - bit manipul
005C10:  61 74 69 6F 6E A0 A0 53 45 54 20 4E 2C 07 69 72    ation..SET N,.ir
005C20:  20 20 20 20 77 68 65 72 65 20 4E 20 69 73 20 74        where N is t
005C30:  68 65 20 62 69 74 20 6E 75 6D 62 65 72 20 30 2D    he bit number 0-
005C40:  37 53 45 54 20 4E 2C 28 48 4C 29 A0 A0 52 45 53    7SET N,(HL)..RES
005C50:  20 4E 2C 72 A0 52 45 53 20 4E 2C 28 48 4C 29 A0     N,r.RES N,(HL).
005C60:  A0 42 49 54 20 4E 2C 72 A0 42 49 54 20 4E 2C 28    .BIT N,r.BIT N,(
005C70:  48 4C 29 A3 20 4C 44 20 48 4C 2C 53 54 4F 52 45    HL)£ LD HL,STORE
005C80:  A0 20 20 53 45 54 20 36 2C 28 48 4C 29 A0 20 4C    .  SET 6,(HL). L
005C90:  4F 4F 50 20 20 49 4E 43 20 28 48 4C 29 A0 20 20    OOP  INC (HL).  
005CA0:  42 49 54 20 32 2C 28 48 4C 29 A0 20 20 4A 52 20    BIT 2,(HL).  JR 
005CB0:  5A 2C 4C 4F 4F 50 A0 20 20 52 45 53 20 33 2C 28    Z,LOOP.  RES 3,(
005CC0:  48 4C 29 A0 20 20 4C 44 20 42 2C 35 A0 20 20 53    HL).  LD B,5.  S
005CD0:  45 54 20 37 2C 42 A0 20 20 52 45 53 20 32 2C 42    ET 7,B.  RES 2,B
005CE0:  A0 20 20 44 45 43 20 42 A0 20 20 42 49 54 20 35    .  DEC B.  BIT 5
005CF0:  2C 42 A0 20 20 52 45 54 20 5A A0 20 20 A0 20 53    ,B.  RET Z.  . S
005D00:  54 4F 52 45 20 42 49 4E 20 31 36 A0 20 20 A0 20    TORE BIN 16.  . 
005D10:  20 A0 20 20 20 20 20 20 20 20 20 20 4C 4F 47 E4     .          LOG.
005D20:  9C 49 43 41 4C 20 49 4E 53 54 52 55 43 54 49 4F    .ICAL INSTRUCTIO
005D30:  4E 53 A0 A0 20 54 68 65 72 65 20 20 61 72 65 20    NS.. There  are 
005D40:  20 74 68 72 65 65 20 6C 6F 67 69 63 61 6C 20 20     three logical  
005D50:  69 6E 73 74 72 75 63 74 69 6F 6E 73 61 76 61 69    instructionsavai
005D60:  6C 61 62 6C 65 20 20 6F 6E 20 20 74 68 65 20 20    lable  on  the  
005D70:  5A 38 30 2E 20 20 20 54 68 65 79 20 61 72 65 20    Z80.   They are 
005D80:  20 61 6C 6C 70 65 72 66 6F 72 6D 65 64 20 20 6F     allperformed  o
005D90:  6E 20 61 20 62 69 74 20 62 79 20 62 69 74 20 62    n a bit by bit b
005DA0:  61 73 69 73 20 62 65 74 77 65 65 6E 74 68 65 20    asis betweenthe 
005DB0:  41 63 63 75 6D 75 6C 61 74 6F 72 20 61 6E 64 20    Accumulator and 
005DC0:  61 20 20 6E 75 6D 62 65 72 2C 20 72 65 67 69 73    a  number, regis
005DD0:  74 65 72 2C 6F 72 20 69 6E 64 69 72 65 63 74 6C    ter,or indirectl
005DE0:  79 20 61 64 64 72 65 73 73 65 64 20 20 6D 65 6D    y addressed  mem
005DF0:  6F 72 79 20 6C 6F 63 61 74 69 6F 6E 28 48 4C 29    ory location(HL)
005E00:  2E 20 20 54 68 65 20 20 20 72 65 73 75 6C 74 20    .  The   result 
005E10:  20 20 69 73 20 20 6C 65 66 74 20 20 20 69 6E 20      is  left   in 
005E20:  20 D4 1A 74 68 65 41 63 63 75 6D 75 6C 61 74 6F     ..theAccumulato
005E30:  72 2E A0 A0 20 49 6E 20 74 68 65 20 41 4E 44 20    r... In the AND 
005E40:  69 6E 73 74 72 75 63 74 69 6F 6E 2C 20 69 66 20    instruction, if 
005E50:  61 20 62 69 74 20 69 6E 20 74 68 65 41 63 63 75    a bit in theAccu
005E60:  6D 75 6C 61 74 6F 72 20 20 41 4E 44 20 20 6F 74    mulator  AND  ot
005E70:  68 65 72 20 6E 75 6D 62 65 72 20 61 72 65 20 20    her number are  
005E80:  22 31 22 2C 74 68 65 6E 20 74 68 65 20 63 6F 72    "1",then the cor
005E90:  72 65 73 70 6F 6E 64 69 6E 67 20 62 69 74 20 69    responding bit i
005EA0:  6E 20 74 68 65 20 72 65 73 75 6C 74 77 69 6C 6C    n the resultwill
005EB0:  20 62 65 20 22 31 22 2E 20 49 66 20 6E 6F 74 20     be "1". If not 
005EC0:  69 74 20 77 69 6C 6C 20 62 65 20 22 30 22 A0 A0    it will be "0"..
005ED0:  20 69 2E 65 2E 20 20 20 20 20 20 30 31 31 30 31     i.e.      01101
005EE0:  31 30 30 A0 20 20 20 20 20 20 20 20 20 20 20 30    100.           0
005EF0:  31 30 31 30 31 31 30 20 20 20 41 4E 44 65 64 20    1010110   ANDed 
005F00:  74 6F 67 65 74 68 65 72 A0 20 67 69 76 65 73 20    together. gives 
005F10:  20 20 20 20 30 31 30 30 30 31 30 30 A0 A0 20 41        01000100.. A
005F20:  73 20 77 27 B2 65 6C 6C 20 61 73 20 20 70 65 72    s w'.ell as  per
005F30:  66 6F 72 6D 69 6E 67 20 20 41 4E 44 73 20 6F 6E    forming  ANDs on
005F40:  20 6F 75 72 20 6F 77 6E 66 6C 61 67 73 2C 20 20     our ownflags,  
005F50:  74 68 69 73 20 20 69 6E 73 74 72 75 63 74 69 6F    this  instructio
005F60:  6E 20 20 69 73 20 20 75 73 65 66 75 6C 20 69 6E    n  is  useful in
005F70:  6D 61 73 6B 69 6E 67 20 6F 66 66 20 61 72 65 61    masking off area
005F80:  73 20 6F 66 20 77 6F 72 64 73 2C 20 6F 72 20 72    s of words, or r
005F90:  65 73 65 74 74 69 6E 67 67 72 6F 75 70 73 20 6F    esettinggroups o
005FA0:  66 20 62 69 74 73 20 69 6E 20 74 68 65 20 41 63    f bits in the Ac
005FB0:  63 75 6D 75 6C 61 74 6F 72 2E A3 20 49 6E 20 20    cumulator.£ In  
005FC0:  74 68 65 20 4F 52 20 69 6E 73 74 72 75 63 74 69    the OR instructi
005FD0:  6F 6E 2C 20 69 66 20 61 20 62 69 74 20 69 6E 20    on, if a bit in 
005FE0:  74 68 65 41 63 63 75 6D 75 6C 61 74 6F 72 20 20    theAccumulator  
005FF0:  4F 52 20 69 6E 20 74 68 65 20 6F 74 68 65 72 20    OR in the other 
006000:  6E 75 6D 62 65 72 20 69 73 20 61 22 31 22 2C 20    number is a"1", 
006010:  74 68 65 20 63 6F 72 72 65 73 70 6F 6E 64 69 6E    the correspondin
006020:  67 20 62 69 74 A1 E3 20 69 6E 20 74 68 65 20 72    g bit.. in the r
006030:  65 73 75 6C 74 77 69 6C 6C 20 62 65 20 22 31 22    esultwill be "1"
006040:  2E 20 49 66 20 6E 6F 74 20 69 74 20 77 69 6C 6C    . If not it will
006050:  20 62 65 20 22 30 22 A0 A0 20 69 2E 65 2E 20 20     be "0".. i.e.  
006060:  20 20 20 20 30 31 31 30 31 31 30 30 A0 20 20 20        01101100.   
006070:  20 20 20 20 20 20 20 20 30 31 30 31 30 31 31 30            01010110
006080:  20 20 20 4F 52 65 64 20 74 6F 67 65 74 68 65 72       ORed together
006090:  A0 20 67 69 76 65 20 20 20 20 20 20 30 31 31 31    . give      0111
0060A0:  31 31 31 30 A0 A0 20 41 73 20 77 65 6C 6C 20 61    1110.. As well a
0060B0:  73 20 70 65 72 66 6F 72 6D 69 6E 67 20 20 4F 52    s performing  OR
0060C0:  20 6F 70 65 72 61 74 69 6F 6E 73 20 6F 6E 6F 75     operations onou
0060D0:  72 20 20 6F 77 6E 20 20 66 6C 61 67 73 2C 20 20    r  own  flags,  
0060E0:  20 74 68 69 73 20 20 69 6E 73 74 72 75 63 74 69     this  instructi
0060F0:  6F 6E 20 20 69 73 75 73 65 66 75 6C 20 69 6E 20    on  isuseful in 
006100:  53 45 54 74 69 6E 67 20 61 20 67 72 6F 75 70 20    SETting a group 
006110:  6F 66 20 62 69 74 73 20 69 6E 20 74 68 65 41 63    of bits in theAc
006120:  63 75 6D 75 6C 61 74 48 9C 6F 72 2E A3 20 49 6E    cumulatH.or.£ In
006130:  20 74 68 65 20 58 4F 52 20 20 28 65 58 63 6C 75     the XOR  (eXclu
006140:  73 69 76 65 20 4F 52 29 20 69 6E 73 74 72 75 63    sive OR) instruc
006150:  74 69 6F 6E 2C 69 66 20 74 68 65 20 20 62 69 74    tion,if the  bit
006160:  20 69 6E 20 74 68 65 20 20 41 63 63 75 6D 75 6C     in the  Accumul
006170:  61 74 6F 72 20 20 69 73 20 20 74 68 65 73 61 6D    ator  is  thesam
006180:  65 20 61 73 20 74 68 61 74 20 69 6E 20 74 68 65    e as that in the
006190:  20 20 6E 75 6D 62 65 72 20 2C 20 20 74 68 65 6E      number ,  then
0061A0:  20 20 74 68 65 63 6F 72 72 65 73 70 6F 6E 64 69      thecorrespondi
0061B0:  6E 67 20 20 62 69 74 20 69 6E 20 74 68 65 20 72    ng  bit in the r
0061C0:  65 73 75 6C 74 20 77 69 6C 6C 20 62 65 22 30 22    esult will be"0"
0061D0:  2E 20 20 49 66 20 74 68 65 79 20 61 72 65 20 20    .  If they are  
0061E0:  64 69 66 66 65 72 65 6E 74 20 69 74 20 20 77 69    different it  wi
0061F0:  6C 6C 20 62 65 22 31 22 2E 20 41 6E 6F 74 68 65    ll be"1". Anothe
006200:  72 20 77 61 79 20 6F 66 20 6C 6F 6F 6B 69 6E 67    r way of looking
006210:  20 61 74 20 20 74 68 65 20 20 58 4F 52 69 6E 73     at  the  XORins
006220:  74 72 75 63 74 69 6F 6E 20 A6 5D 69 73 20 20 69    truction .]is  i
006230:  66 20 20 6F 6E 65 20 20 4F 52 20 74 68 65 20 6F    f  one  OR the o
006240:  74 68 65 72 20 69 73 22 31 22 20 62 75 74 20 20    ther is"1" but  
006250:  4E 4F 54 20 20 62 6F 74 68 2C 20 20 74 68 65 20    NOT  both,  the 
006260:  20 61 6E 73 77 65 72 20 77 69 6C 6C 20 62 65 22     answer will be"
006270:  31 22 2E A0 A0 20 69 2E 65 2E 20 20 20 20 20 20    1"... i.e.      
006280:  30 31 31 30 31 31 30 30 A0 20 20 20 20 20 20 20    01101100.       
006290:  20 20 20 20 30 31 30 31 30 31 31 30 20 20 20 20        01010110    
0062A0:  58 4F 52 65 64 20 74 6F 67 65 74 68 65 72 A0 20    XORed together. 
0062B0:  67 69 76 65 20 20 20 20 20 20 30 30 31 31 31 30    give      001110
0062C0:  31 30 A0 A0 20 41 70 61 72 74 20 20 66 72 6F 6D    10.. Apart  from
0062D0:  20 20 70 65 72 66 6F 72 6D 69 6E 67 20 74 68 65      performing the
0062E0:  20 6C 6F 67 69 63 61 6C 20 58 4F 52 66 75 6E 63     logical XORfunc
0062F0:  74 69 6F 6E 20 20 6F 6E 20 20 6F 75 72 20 20 6F    tion  on  our  o
006300:  77 6E 20 20 66 6C 61 67 73 20 20 20 74 68 65 20    wn  flags   the 
006310:  20 58 4F 52 69 6E 73 74 72 75 63 74 69 6F 6E 20     XORinstruction 
006320:  20 20 69 73 20 20 75 73 65 66 75 FE 9C 6C 20 20      is  usefu..l  
006330:  20 69 6E 20 20 69 6E 76 65 72 74 69 6E 67 69 6E     in  invertingin
006340:  64 69 76 69 64 75 61 6C 20 6F 72 20 67 72 6F 75    dividual or grou
006350:  70 73 20 6F 66 20 62 69 74 73 2E A3 20 54 68 65    ps of bits.£ The
006360:  20 74 68 72 65 65 20 6C 6F 67 69 63 61 6C 20 69     three logical i
006370:  6E 73 74 72 75 63 74 69 6F 6E 73 20 41 4E 44 2C    nstructions AND,
006380:  20 4F 52 2C 61 6E 64 20 20 58 4F 52 20 20 61 66     OR,and  XOR  af
006390:  66 65 63 74 20 20 74 68 65 20 20 5A 65 72 6F 2C    fect  the  Zero,
0063A0:  20 20 53 69 67 6E 2C 20 20 61 6E 64 50 61 72 69      Sign,  andPari
0063B0:  74 79 20 66 6C 61 67 73 2E 20 54 68 65 20 43 61    ty flags. The Ca
0063C0:  72 72 79 20 66 6C 61 67 20 69 73 20 72 65 73 65    rry flag is rese
0063D0:  74 20 74 6F 22 30 22 20 69 6E 20 61 6C 6C 20 63    t to"0" in all c
0063E0:  61 73 65 73 2E 20 54 68 75 73 20 74 68 65 20 6C    ases. Thus the l
0063F0:  69 6D 69 74 61 74 69 6F 6E 20 6F 66 6E 6F 20 20    imitation ofno  
006400:  20 43 6C 65 61 72 20 20 43 61 72 72 79 20 20 69     Clear  Carry  i
006410:  6E 73 74 72 75 63 74 69 6F 6E 20 20 20 63 61 6E    nstruction   can
006420:  20 20 62 65 70 65 72 66 6F 72 6D 65 64 6C AF 20      beperformedl. 
006430:  62 79 20 61 20 6C 6F 67 69 63 61 6C 20 69 6E 73    by a logical ins
006440:  74 72 75 63 74 69 6F 6E 2E A0 A0 20 41 4E 44 20    truction... AND 
006450:  41 20 6F 72 20 4F 52 20 41 20 77 69 6C 6C 20 63    A or OR A will c
006460:  6C 65 61 72 20 74 68 65 20 63 61 72 72 79 20 66    lear the carry f
006470:  6C 61 67 61 6E 64 20 6E 6F 74 20 61 66 66 65 63    lagand not affec
006480:  74 20 61 6E 79 20 72 65 67 69 73 74 65 72 73 2E    t any registers.
006490:  20 58 4F 52 20 41 20 77 69 6C 6C 63 6C 65 61 72     XOR A willclear
0064A0:  20 43 61 72 72 79 20 61 6E 64 20 74 68 65 20 41     Carry and the A
0064B0:  63 63 75 6D 75 6C 61 74 6F 72 2E A3 20 53 75 6D    ccumulator.£ Sum
0064C0:  6D 61 72 79 20 2D 20 6C 6F 67 69 63 61 6C 20 69    mary - logical i
0064D0:  6E 73 74 72 75 63 74 69 6F 6E 73 A0 A0 20 41 4E    nstructions.. AN
0064E0:  44 20 6E A0 20 41 4E 44 20 72 A0 20 41 4E 44 20    D n. AND r. AND 
0064F0:  28 48 4C 29 A0 A0 20 4F 52 20 6E A0 20 4F 52 20    (HL).. OR n. OR 
006500:  72 A0 20 4F 52 20 28 48 4C 29 A0 A0 20 58 4F 52    r. OR (HL).. XOR
006510:  20 6E A0 20 58 4F 52 20 72 A0 20 58 4F 52 20 28     n. XOR r. XOR (
006520:  48 4C 29 A3 20 20 20 20 45 58 41 4D 50 4C 45 7B    HL)£    EXAMPLE{
006530:  6F 53 20 4F 46 20 4C 4F 47 49 43 41 4C 20 49 4E    oS OF LOGICAL IN
006540:  53 54 52 55 43 54 49 4F 4E 53 A0 A0 20 54 68 65    STRUCTIONS.. The
006550:  20 65 78 61 6D 70 6C 65 73 20 69 6C 6C 75 73 74     examples illust
006560:  72 61 74 65 20 20 74 68 65 20 20 6F 70 65 72 61    rate  the  opera
006570:  74 69 6F 6E 6F 66 20 20 74 68 65 20 20 6C 6F 67    tionof  the  log
006580:  69 63 20 20 69 6E 73 74 72 75 63 74 69 6F 6E 73    ic  instructions
006590:  2E 20 20 54 68 65 20 70 75 70 69 6C 73 68 6F 75    .  The pupilshou
0065A0:  6C 64 20 20 20 74 65 73 74 20 20 20 68 69 73 2F    ld   test   his/
0065B0:  68 65 72 20 20 20 20 75 6E 64 65 72 73 74 61 6E    her    understan
0065C0:  64 69 6E 67 66 75 72 74 68 65 72 20 62 79 20 6D    dingfurther by m
0065D0:  6F 64 69 66 79 69 6E 67 20 74 68 65 20 63 6F 6E    odifying the con
0065E0:  74 65 6E 74 73 20 6F 66 20 74 68 65 33 20 73 74    tents of the3 st
0065F0:  6F 72 65 73 2E A3 20 4C 44 20 48 4C 2C 53 54 32    ores.£ LD HL,ST2
006600:  A0 20 20 4C 44 20 41 2C 28 53 54 31 29 A0 20 20    .  LD A,(ST1).  
006610:  41 4E 44 20 28 48 4C 29 A0 20 20 4C 44 20 28 53    AND (HL).  LD (S
006620:  54 33 29 2C 41 A0 20 20 4C 44 20 41 2C 28 53 54    T3),A.  LD A,(ST
006630:  31 92 E4 29 A0 20 20 4F 52 20 28 48 4C 29 A0 20    1..).  OR (HL). 
006640:  20 4C 44 20 28 53 54 33 29 2C 41 A0 20 20 4C 44     LD (ST3),A.  LD
006650:  20 41 2C 28 53 54 31 29 A0 20 20 58 4F 52 20 28     A,(ST1).  XOR (
006660:  48 4C 29 A0 20 20 4C 44 20 28 53 54 33 29 2C 41    HL).  LD (ST3),A
006670:  A0 20 20 52 45 54 A0 20 20 A0 20 53 54 31 20 20    .  RET.  . ST1  
006680:  20 42 49 4E 20 36 35 48 A0 20 53 54 32 20 20 20     BIN 65H. ST2   
006690:  42 49 4E 20 46 48 A0 20 53 54 33 20 20 20 42 49    BIN FH. ST3   BI
0066A0:  4E 20 30 48 A0 20 20 A0 20 20 20 20 20 20 20 20    N 0H.  .        
0066B0:  20 20 20 20 53 48 49 46 54 20 49 4E 53 54 52 55        SHIFT INSTRU
0066C0:  43 54 49 4F 4E 53 A0 A0 20 41 20 73 68 69 66 74    CTIONS.. A shift
0066D0:  20 69 6E 73 74 72 75 63 74 69 6F 6E 20 69 73 20     instruction is 
0066E0:  6F 6E 65 20 69 6E 20 77 68 69 63 68 20 74 68 65    one in which the
0066F0:  62 69 74 73 20 6F 66 20 20 61 20 20 72 65 67 69    bits of  a  regi
006700:  73 74 65 72 20 6F 72 20 20 6D 65 6D 6F 72 79 20    ster or  memory 
006710:  6C 6F 63 61 74 69 6F 6E 61 72 65 20 6D 6F 76 65    locationare move
006720:  64 20 73 69 64 65 77 61 79 73 2C 20 6C 65 66 74    d sideways, left
006730:  20 6F 72 C3 04 20 72 69 67 68 74 20 74 6F 20 74     or.. right to t
006740:  68 65 61 64 6A 61 63 65 6E 74 20 62 69 74 2E 20    headjacent bit. 
006750:  20 41 73 20 20 77 65 20 20 73 68 61 6C 6C 20 20     As  we  shall  
006760:  73 65 65 2C 20 20 74 68 69 73 67 69 76 65 73 20    see,  thisgives 
006770:  75 73 20 61 20 6D 65 61 6E 73 20 20 6F 66 20 64    us a means  of d
006780:  69 76 69 73 69 6F 6E 20 61 73 20 77 65 6C 6C 20    ivision as well 
006790:  61 73 6D 75 6C 74 69 70 6C 69 63 61 74 69 6F 6E    asmultiplication
0067A0:  2E A3 20 54 68 65 20 20 53 52 41 20 72 2C 20 20    .£ The  SRA r,  
0067B0:  61 6E 64 20 20 53 52 41 20 28 48 4C 29 20 69 6E    and  SRA (HL) in
0067C0:  73 74 72 75 63 74 69 6F 6E 73 73 68 69 66 74 20    structionsshift 
0067D0:  74 68 65 20 20 72 65 67 69 73 74 65 72 2F 6D 65    the  register/me
0067E0:  6D 6F 72 79 20 6C 6F 63 61 74 69 6F 6E 20 28 48    mory location (H
0067F0:  4C 29 72 69 67 68 74 2C 20 20 73 68 69 66 74 69    L)right,  shifti
006800:  6E 67 20 20 62 69 74 20 30 20 20 69 6E 74 6F 20    ng  bit 0  into 
006810:  20 74 68 65 20 43 61 72 72 79 66 6C 61 67 20 61     the Carryflag a
006820:  6E 64 20 72 65 74 61 69 6E 69 6E 67 20 74 68 65    nd retaining the
006830:  20 73 74 61 74 E1 59 65 20 6F 66 20 62 69 74 20     stat.Ye of bit 
006840:  37 2E A0 A0 20 69 2E 65 2E 20 20 20 20 37 20 36    7... i.e.    7 6
006850:  20 35 20 34 20 33 20 32 20 31 20 30 20 20 20 43     5 4 3 2 1 0   C
006860:  A0 20 20 20 20 20 20 20 20 20 30 20 31 20 31 20    .         0 1 1 
006870:  30 20 30 20 30 20 31 20 30 20 20 20 78 20 20 28    0 0 0 1 0   x  (
006880:  39 38 20 64 65 63 2E 29 20 62 65 63 6F 6D 65 73    98 dec.) becomes
006890:  20 20 30 20 30 20 31 20 31 20 30 20 30 20 30 20      0 0 1 1 0 0 0 
0068A0:  31 20 20 20 30 20 20 28 34 39 20 64 65 63 2E 29    1   0  (49 dec.)
0068B0:  20 A0 20 20 6F 72 20 20 20 20 20 31 20 31 20 31     .  or     1 1 1
0068C0:  20 30 20 30 20 30 20 31 20 30 20 20 20 78 20 20     0 0 0 1 0   x  
0068D0:  28 2D 33 30 20 64 65 63 2E 29 62 65 63 6F 6D 65    (-30 dec.)become
0068E0:  73 20 20 31 20 31 20 31 20 31 20 30 20 30 20 30    s  1 1 1 1 0 0 0
0068F0:  20 31 20 20 20 30 20 20 28 2D 31 35 20 64 65 63     1   0  (-15 dec
006900:  2E 29 A0 20 48 65 6E 63 65 20 20 20 74 68 65 20    .). Hence   the 
006910:  20 20 53 52 41 20 20 20 6F 72 20 20 20 20 53 68      SRA   or    Sh
006920:  69 66 74 20 20 20 52 69 67 68 74 41 72 69 74 68    ift   RightArith
006930:  6D 65 74 69 63 61 6C 38 80 6C 79 20 69 6E 73 74    metical8.ly inst
006940:  72 75 63 74 69 6F 6E 20 64 69 76 69 64 65 73 20    ruction divides 
006950:  20 62 6F 74 68 70 6F 73 69 74 69 76 65 20 61 6E     bothpositive an
006960:  64 20 6E 65 67 61 74 69 76 65 20 6E 75 6D 62 65    d negative numbe
006970:  72 73 20 62 79 20 32 2E A3 20 54 68 65 20 20 53    rs by 2.£ The  S
006980:  52 4C 20 72 2C 20 20 61 6E 64 20 20 53 52 4C 20    RL r,  and  SRL 
006990:  28 48 4C 29 20 69 6E 73 74 72 75 63 74 69 6F 6E    (HL) instruction
0069A0:  73 73 68 69 66 74 20 20 20 74 68 65 20 20 20 72    sshift   the   r
0069B0:  65 67 69 73 74 65 72 2F 6D 65 6D 6F 72 79 20 20    egister/memory  
0069C0:  20 6C 6F 63 61 74 69 6F 6E 63 6F 6E 74 65 6E 74     locationcontent
0069D0:  73 20 72 69 67 68 74 2C 20 73 68 69 66 74 69 6E    s right, shiftin
0069E0:  67 20 20 62 69 74 20 30 20 69 6E 74 6F 20 74 68    g  bit 0 into th
0069F0:  65 43 61 72 72 79 20 66 6C 61 67 20 61 6E 64 20    eCarry flag and 
006A00:  61 20 22 30 22 20 69 6E 74 6F 20 62 69 74 20 37    a "0" into bit 7
006A10:  2E A0 A0 20 69 2E 65 2E 20 20 20 20 37 20 36 20    ... i.e.    7 6 
006A20:  35 20 34 20 33 20 32 20 31 20 30 20 20 20 43 A0    5 4 3 2 1 0   C.
006A30:  20 20 20 20 20 20 20 20 20 46 35 31 20 30 20 31             F51 0 1
006A40:  20 31 20 30 20 31 20 31 20 31 20 20 20 78 20 20     1 0 1 1 1   x  
006A50:  28 31 38 33 20 64 65 63 2E 29 62 65 63 6F 6D 65    (183 dec.)become
006A60:  73 20 20 30 20 31 20 30 20 31 20 31 20 30 20 31    s  0 1 0 1 1 0 1
006A70:  20 31 20 20 20 31 20 20 28 39 31 20 64 65 63 2E     1   1  (91 dec.
006A80:  29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    )               
006A90:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
006AA0:  61 6E 64 20 43 61 72 72 79 20 A0 20 54 68 65 20    and Carry . The 
006AB0:  20 53 52 4C 20 20 20 6F 72 20 20 20 53 68 69 66     SRL   or   Shif
006AC0:  74 20 20 52 69 67 68 74 20 20 4C 6F 67 69 63 61    t  Right  Logica
006AD0:  6C 6C 79 69 6E 73 74 72 75 63 74 69 6F 6E 20 74    llyinstruction t
006AE0:  68 65 72 65 66 6F 72 65 20 64 69 76 69 64 65 73    herefore divides
006AF0:  20 61 20 70 6F 73 69 74 69 76 65 6E 75 6D 62 65     a positivenumbe
006B00:  72 20 62 79 20 32 2E 20 20 41 73 20 77 69 74 68    r by 2.  As with
006B10:  20 53 52 41 20 74 68 65 20 43 61 72 72 79 20 66     SRA the Carry f
006B20:  6C 61 67 69 6E 64 69 63 61 74 65 73 20 74 68 65    lagindicates the
006B30:  20 68 61 6C 66 2E A3 20 54 68 65 CC 71 20 20 53     half.£ The.q  S
006B40:  4C 41 20 72 2C 20 20 61 6E 64 20 20 53 4C 41 20    LA r,  and  SLA 
006B50:  28 48 4C 29 20 69 6E 73 74 72 75 63 74 69 6F 6E    (HL) instruction
006B60:  73 73 68 69 66 74 20 20 74 68 65 20 72 65 67 69    sshift  the regi
006B70:  73 74 65 72 2F 6D 65 6D 6F 72 79 20 63 6F 6E 74    ster/memory cont
006B80:  65 6E 74 73 20 6C 65 66 74 73 68 69 66 74 69 6E    ents leftshiftin
006B90:  67 20 61 20 22 30 22 20 69 6E 74 6F 20 62 69 74    g a "0" into bit
006BA0:  20 30 20 61 6E 64 20 62 69 74 20 37 20 69 6E 74     0 and bit 7 int
006BB0:  6F 74 68 65 20 43 61 72 72 79 20 66 6C 61 67 2E    othe Carry flag.
006BC0:  A0 A0 20 69 2E 65 2E 20 20 20 20 43 20 20 20 37    .. i.e.    C   7
006BD0:  20 36 20 35 20 34 20 33 20 32 20 31 20 30 A0 20     6 5 4 3 2 1 0. 
006BE0:  20 20 20 20 20 20 20 20 78 20 20 20 30 20 31 20            x   0 1 
006BF0:  31 20 30 20 30 20 30 20 31 20 30 20 20 28 39 38    1 0 0 0 1 0  (98
006C00:  20 64 65 63 2E 29 A0 62 65 63 6F 6D 65 73 20 20     dec.).becomes  
006C10:  30 20 20 20 31 20 31 20 30 20 30 20 30 20 31 20    0   1 1 0 0 0 1 
006C20:  30 20 30 20 20 28 31 39 36 20 64 65 63 2E 29 A0    0 0  (196 dec.).
006C30:  20 48 65 6E 63 65 20 74 68 65 20 72 65 D0 B3 73     Hence the re..s
006C40:  75 6C 74 20 6F 66 20 74 68 65 20 69 6E 73 74 72    ult of the instr
006C50:  75 63 74 69 6F 6E 20 53 4C 41 6F 72 20 20 20 53    uction SLAor   S
006C60:  68 69 66 74 20 20 4C 65 66 74 20 20 41 72 69 74    hift  Left  Arit
006C70:  68 6D 65 74 69 63 61 6C 6C 79 20 20 69 73 20 20    hmetically  is  
006C80:  74 6F 6D 75 6C 74 69 70 6C 79 20 20 74 68 65 20    tomultiply  the 
006C90:  20 70 6F 73 69 74 69 76 65 20 6E 75 6D 62 65 72     positive number
006CA0:  20 62 79 20 32 2E 20 54 68 65 43 61 72 72 79 20     by 2. TheCarry 
006CB0:  20 69 6E 64 69 63 61 74 65 73 20 20 61 20 20 72     indicates  a  r
006CC0:  65 73 75 6C 74 20 67 72 65 61 74 65 72 20 74 68    esult greater th
006CD0:  61 6E 32 35 35 2E A0 A0 41 6C 6C 20 74 68 65 73    an255...All thes
006CE0:  65 20 69 6E 73 74 72 75 63 74 69 6F 6E 73 20 20    e instructions  
006CF0:  61 66 66 65 63 74 20 20 6E 6F 74 20 6F 6E 6C 79    affect  not only
006D00:  74 68 65 20 43 61 72 72 79 20 66 6C 61 67 2C 20    the Carry flag, 
006D10:  20 62 75 74 20 74 68 65 20 5A 65 72 6F 2C 20 53     but the Zero, S
006D20:  69 67 6E 2C 20 61 6E 64 50 61 72 69 74 79 20 66    ign, andParity f
006D30:  6C 61 67 73 2E A3 20 53 75 6D 6D 61 72 79 20 E0    lags.£ Summary .
006D40:  FA 2D 20 73 68 69 66 74 20 69 6E 73 74 72 75 63    .- shift instruc
006D50:  74 69 6F 6E 73 A0 A0 20 53 52 41 20 72 20 20 64    tions.. SRA r  d
006D60:  69 76 69 64 65 73 20 2B 76 65 20 61 6E 64 20 2D    ivides +ve and -
006D70:  76 65 20 6E 75 6D 62 65 72 73 20 62 79 20 32 A0    ve numbers by 2.
006D80:  20 53 52 41 20 28 48 4C 29 A0 A0 20 53 52 4C 20     SRA (HL).. SRL 
006D90:  72 20 20 64 69 76 69 64 65 73 20 2B 76 65 20 6E    r  divides +ve n
006DA0:  75 6D 62 65 72 73 20 30 20 2D 20 32 35 35 20 62    umbers 0 - 255 b
006DB0:  79 20 32 A0 20 53 52 4C 20 28 48 4C 29 A0 A0 20    y 2. SRL (HL).. 
006DC0:  53 4C 41 20 72 20 20 6D 75 6C 74 69 70 6C 69 65    SLA r  multiplie
006DD0:  73 20 2B 76 65 20 61 6E 64 20 2D 76 65 20 6E 75    s +ve and -ve nu
006DE0:  6D 62 65 72 73 A0 20 20 20 20 20 20 20 20 20 20    mbers.          
006DF0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
006E00:  20 20 20 20 20 20 20 20 20 20 62 79 20 32 A0 20              by 2. 
006E10:  53 4C 41 20 28 48 4C 29 A3 20 20 20 20 45 58 41    SLA (HL)£    EXA
006E20:  4D 50 4C 45 53 20 4F 46 20 53 48 49 46 54 20 49    MPLES OF SHIFT I
006E30:  4E 53 54 52 55 43 54 49 4F 4E 53 A0 A0 20 54 68    NSTRUCTIONS.. Th
006E40:  65 36 7F 20 20 20 74 68 72 65 65 20 20 20 73 68    e6.   three   sh
006E50:  69 66 74 20 20 69 6E 73 74 72 75 63 74 69 6F 6E    ift  instruction
006E60:  73 20 20 20 61 72 65 69 6C 6C 75 73 74 72 61 74    s   areillustrat
006E70:  65 64 20 20 75 73 69 6E 67 20 61 20 66 69 78 65    ed  using a fixe
006E80:  64 20 69 6E 69 74 69 61 6C 20 76 61 6C 75 65 69    d initial valuei
006E90:  6E 20 74 68 65 20 6D 65 6D 6F 72 79 20 6C 6F 63    n the memory loc
006EA0:  61 74 69 6F 6E 20 53 54 4F 52 45 2E A3 20 4C 44    ation STORE.£ LD
006EB0:  20 48 4C 2C 53 54 4F 52 45 A0 20 20 4C 44 20 42     HL,STORE.  LD B
006EC0:  2C 35 A0 20 4C 4F 4F 50 31 20 53 52 41 20 28 48    ,5. LOOP1 SRA (H
006ED0:  4C 29 A0 20 20 44 4A 4E 5A 20 4C 4F 4F 50 31 A0    L).  DJNZ LOOP1.
006EE0:  20 20 4C 44 20 28 48 4C 29 2C 41 35 48 A0 20 20      LD (HL),A5H.  
006EF0:  4C 44 20 42 2C 35 A0 20 4C 4F 4F 50 32 20 53 4C    LD B,5. LOOP2 SL
006F00:  41 20 28 48 4C 29 A0 20 20 44 4A 4E 5A 20 4C 4F    A (HL).  DJNZ LO
006F10:  4F 50 32 A0 20 20 4C 44 20 42 2C 38 A0 20 4C 4F    OP2.  LD B,8. LO
006F20:  4F 50 33 20 53 52 4C 20 28 48 4C 29 A0 20 20 44    OP3 SRL (HL).  D
006F30:  4A 4E 5A 20 4C 4F 4F 50 33 A0 20 20 52 45 54 A0    JNZ LOOP3.  RET.
006F40:  20 20 A0 A3 4D 20 53 54 4F 52 45 20 42 49 4E 20      .£M STORE BIN 
006F50:  36 39 48 A0 20 20 A0 20 20 A0 20 20 20 20 20 20    69H.  .  .      
006F60:  20 20 20 20 20 20 52 4F 54 41 54 45 20 49 4E 53          ROTATE INS
006F70:  54 52 55 43 54 49 4F 4E 53 A0 A0 20 54 68 65 73    TRUCTIONS.. Thes
006F80:  65 20 20 69 6E 73 74 72 75 63 74 69 6F 6E 73 20    e  instructions 
006F90:  61 72 65 20 73 68 69 66 74 20 69 6E 73 74 72 75    are shift instru
006FA0:  63 74 2D 69 6F 6E 73 20 69 6E 20 77 68 69 63 68    ct-ions in which
006FB0:  20 74 68 65 20 62 69 74 20 74 68 61 74 20 66 61     the bit that fa
006FC0:  6C 6C 73 20 6F 75 74 20 6F 6E 65 65 6E 64 20 6F    lls out oneend o
006FD0:  66 20 74 68 65 20 72 65 67 69 73 74 65 72 20 20    f the register  
006FE0:  6F 72 20 6D 65 6D 6F 72 79 20 20 6C 6F 63 61 74    or memory  locat
006FF0:  69 6F 6E 69 73 20 70 75 73 68 65 64 20 62 61 63    ionis pushed bac
007000:  6B 20 69 6E 74 6F 20 74 68 65 20 20 6F 74 68 65    k into the  othe
007010:  72 20 65 6E 64 2E 20 20 54 68 65 43 61 72 72 79    r end.  TheCarry
007020:  20 66 6C 61 67 20 20 65 69 74 68 65 72 20 20 66     flag  either  f
007030:  6F 72 6D 73 20 20 70 61 72 74 20 20 6F 66 20 20    orms  part  of  
007040:  74 68 65 6E 75 9C 85 6D 62 65 72 20 73 68 69 66    thenu..mber shif
007050:  74 65 64 2C 20 74 68 65 72 65 62 79 20 6D 61 6B    ted, thereby mak
007060:  69 6E 67 20 69 74 20 39 20 62 69 74 73 6C 6F 6E    ing it 9 bitslon
007070:  67 2C 20 6F 72 20 64 75 70 6C 69 63 61 74 65 73    g, or duplicates
007080:  20 74 68 65 20 73 74 61 74 65 20 6F 66 20 74 68     the state of th
007090:  65 20 62 69 74 74 68 61 74 20 66 65 6C 6C 20 6F    e bitthat fell o
0070A0:  75 74 20 6F 66 20 74 68 65 20 72 65 67 69 73 74    ut of the regist
0070B0:  65 72 2E 20 54 68 65 72 65 20 61 72 65 74 68 65    er. There arethe
0070C0:  72 65 66 6F 72 65 20 20 20 66 6F 75 72 20 20 20    refore   four   
0070D0:  64 69 66 66 65 72 65 6E 74 20 20 20 74 79 70 65    different   type
0070E0:  73 20 20 6F 66 72 6F 74 61 74 65 2E A3 20 52 4C    s  ofrotate.£ RL
0070F0:  43 20 72 2C 20 61 6E 64 20 52 4C 43 20 28 48 4C    C r, and RLC (HL
007100:  29 20 28 6E 61 6D 65 6C 79 20 52 6F 74 61 74 65    ) (namely Rotate
007110:  20 4C 65 66 74 43 61 72 72 79 20 64 75 70 6C 69     LeftCarry dupli
007120:  63 61 74 69 6E 67 20 29 2C 20 73 68 69 66 74 73    cating ), shifts
007130:  20 74 68 65 20 63 6F 6E 74 65 6E 74 73 6C 65 66     the contentslef
007140:  74 2C 20 62 69 74 20 D9 55 37 20 72 6F 74 61 74    t, bit .U7 rotat
007150:  69 6E 67 20 69 6E 74 6F 20 62 69 74 20 30 2C 20    ing into bit 0, 
007160:  61 6E 64 20 74 68 65 43 61 72 72 79 20 64 75 70    and theCarry dup
007170:  6C 69 63 61 74 69 6E 67 20 74 68 65 20 74 72 61    licating the tra
007180:  6E 73 66 65 72 72 65 64 20 62 69 74 2E A0 A0 20    nsferred bit... 
007190:  69 2E 65 2E 20 20 20 20 43 20 20 37 20 36 20 35    i.e.    C  7 6 5
0071A0:  20 34 20 33 20 32 20 31 20 30 A0 20 20 20 20 20     4 3 2 1 0.     
0071B0:  20 20 20 20 78 20 20 31 20 30 20 31 20 31 20 30        x  1 0 1 1 0
0071C0:  20 30 20 30 20 31 A0 62 65 63 6F 6D 65 73 20 20     0 0 1.becomes  
0071D0:  31 20 20 30 20 31 20 31 20 30 20 30 20 30 20 31    1  0 1 1 0 0 0 1
0071E0:  20 31 20 20 6F 6C 64 20 62 69 74 20 37 3D 31 A0     1  old bit 7=1.
0071F0:  20 52 4C 20 72 2C 20 61 6E 64 20 52 4C 20 28 48     RL r, and RL (H
007200:  4C 29 20 20 52 6F 74 61 74 65 20 4C 65 66 74 2C    L)  Rotate Left,
007210:  20 72 6F 74 61 74 65 73 74 68 65 20 20 72 65 67     rotatesthe  reg
007220:  69 73 74 65 72 2F 6D 65 6D 6F 72 79 20 6C 6F 63    ister/memory loc
007230:  61 74 69 6F 6E 20 20 77 69 74 68 20 20 74 68 65    ation  with  the
007240:  43 61 72 72 79 20 61 73 20 69 C2 61 20 39 74 68    Carry as i.a 9th
007250:  20 62 69 74 2C 20 6C 65 66 74 2E A0 A0 20 69 2E     bit, left... i.
007260:  65 2E 20 20 20 20 43 20 20 37 20 36 20 35 20 34    e.    C  7 6 5 4
007270:  20 33 20 32 20 31 20 30 A0 20 20 20 20 20 20 20     3 2 1 0.       
007280:  20 20 63 20 20 31 20 30 20 31 20 31 20 30 20 30      c  1 0 1 1 0 0
007290:  20 30 20 31 A0 62 65 63 6F 6D 65 73 20 20 31 20     0 1.becomes  1 
0072A0:  20 30 20 31 20 31 20 30 20 30 20 30 20 31 20 63     0 1 1 0 0 0 1 c
0072B0:  20 20 63 3D 6F 6C 64 20 43 61 72 72 79 A0 20 52      c=old Carry. R
0072C0:  4C 20 20 69 6E 73 74 72 75 63 74 69 6F 6E 73 20    L  instructions 
0072D0:  63 61 6E 20 62 65 20 73 74 72 75 6E 67 20 74 6F    can be strung to
0072E0:  67 65 74 68 65 72 74 6F 20 6D 75 6C 74 69 70 6C    getherto multipl
0072F0:  79 20 20 61 6E 79 20 20 6C 65 6E 67 74 68 20 20    y  any  length  
007300:  6E 75 6D 62 65 72 20 20 62 79 20 20 32 2C 73 69    number  by  2,si
007310:  6E 63 65 20 74 68 65 20 20 43 61 72 72 79 20 20    nce the  Carry  
007320:  69 73 20 74 72 61 6E 73 66 65 72 72 65 64 20 62    is transferred b
007330:  65 74 77 65 65 6E 72 65 70 65 61 74 65 64 20 52    etweenrepeated R
007340:  4C 20 69 6E 73 74 72 75 63 74 69 FF C6 6F 6E 73    L instructi..ons
007350:  2E A3 20 52 52 43 20 72 2C 20 20 52 52 43 20 28    .£ RRC r,  RRC (
007360:  48 4C 29 20 20 69 6E 73 74 72 75 63 74 69 6F 6E    HL)  instruction
007370:  73 20 20 28 52 6F 74 61 74 65 52 69 67 68 74 20    s  (RotateRight 
007380:  43 61 72 72 79 20 62 65 69 6E 67 20 64 75 70 6C    Carry being dupl
007390:  69 63 61 74 65 64 29 20 69 73 20 73 69 6D 69 6C    icated) is simil
0073A0:  61 72 74 6F 20 74 68 65 20 20 52 4C 43 20 20 69    arto the  RLC  i
0073B0:  6E 73 74 72 75 63 74 69 6F 6E 20 20 62 75 74 20    nstruction  but 
0073C0:  69 73 20 61 20 72 69 67 68 74 73 68 69 66 74 2E    is a rightshift.
0073D0:  20 20 42 69 74 20 30 20 69 73 20 20 73 68 69 66      Bit 0 is  shif
0073E0:  74 65 64 20 69 6E 74 6F 20 62 69 74 20 37 20 61    ted into bit 7 a
0073F0:  6E 64 74 68 65 20 43 61 72 72 79 20 64 75 70 6C    ndthe Carry dupl
007400:  69 63 61 74 65 73 20 74 68 65 20 6F 6C 64 20 62    icates the old b
007410:  69 74 20 30 2E A0 A0 20 69 2E 65 2E 20 20 20 20    it 0... i.e.    
007420:  37 20 36 20 35 20 34 20 33 20 32 20 31 20 30 20    7 6 5 4 3 2 1 0 
007430:  20 43 A0 20 20 20 20 20 20 20 20 20 31 20 30 20     C.         1 0 
007440:  31 20 31 20 30 20 30 20 30 20 31 20 20 E3 CE 78    1 1 0 0 0 1  ..x
007450:  A0 62 65 63 6F 6D 65 73 20 20 31 20 31 20 30 20    .becomes  1 1 0 
007460:  31 20 31 20 30 20 30 20 30 20 20 31 20 20 6F 6C    1 1 0 0 0  1  ol
007470:  64 20 62 69 74 20 30 3D 31 A0 20 52 52 20 72 2C    d bit 0=1. RR r,
007480:  20 61 6E 64 20 52 52 20 28 48 4C 29 20 69 6E 73     and RR (HL) ins
007490:  74 72 75 63 74 69 6F 6E 73 20 28 20 52 6F 74 61    tructions ( Rota
0074A0:  74 65 52 69 67 68 74 20 29 20 69 73 20 73 69 6D    teRight ) is sim
0074B0:  69 6C 61 72 20 74 6F 20 52 4C 20 65 78 63 65 70    ilar to RL excep
0074C0:  74 20 74 68 61 74 20 74 68 65 73 68 69 66 74 20    t that theshift 
0074D0:  61 72 6F 75 6E 64 20 74 68 65 20 39 20 62 69 74    around the 9 bit
0074E0:  73 20 69 73 20 74 6F 20 74 68 65 20 72 69 67 68    s is to the righ
0074F0:  74 2E A0 20 69 2E 65 2E 20 20 20 20 37 20 36 20    t.. i.e.    7 6 
007500:  35 20 34 20 33 20 32 20 31 20 30 20 20 43 A0 20    5 4 3 2 1 0  C. 
007510:  20 20 20 20 20 20 20 20 31 20 30 20 31 20 31 20            1 0 1 1 
007520:  30 20 30 20 30 20 31 20 20 63 A0 62 65 63 6F 6D    0 0 0 1  c.becom
007530:  65 73 20 20 63 20 31 20 30 20 31 20 31 20 30 20    es  c 1 0 1 1 0 
007540:  30 20 30 20 20 31 20 20 63 3D 6F 6C 64 20 43 66    0 0  1  c=old Cf
007550:  6A 61 72 72 79 A0 20 52 52 20 69 6E 73 74 72 75    jarry. RR instru
007560:  63 74 69 6F 6E 73 20 63 61 6E 20 62 65 20 73 74    ctions can be st
007570:  72 75 6E 67 20 20 74 6F 67 65 74 68 65 72 74 6F    rung  togetherto
007580:  20 64 69 76 69 64 65 20 61 6E 79 20 6C 65 6E 67     divide any leng
007590:  74 68 20 6E 75 6D 62 65 72 20 62 79 20 32 2E A3    th number by 2.£
0075A0:  20 52 4C 43 20 61 6E 64 20 52 52 43 20 20 69 6E     RLC and RRC  in
0075B0:  73 74 72 75 63 74 69 6F 6E 73 20 61 72 65 20 75    structions are u
0075C0:  73 65 66 75 6C 20 69 6E 73 65 71 75 65 6E 74 69    seful insequenti
0075D0:  61 6C 6C 79 20 20 20 69 6E 74 65 72 72 6F 67 61    ally   interroga
0075E0:  74 69 6E 67 20 20 74 68 65 20 20 77 68 6F 6C 65    ting  the  whole
0075F0:  63 6F 6E 74 65 6E 74 73 20 6F 66 20 61 20 72 65    contents of a re
007600:  67 69 73 74 65 72 20 77 69 74 68 6F 75 74 20 20    gister without  
007610:  63 6F 72 72 75 70 74 2D 69 6E 67 20 69 74 73 20    corrupt-ing its 
007620:  63 6F 6E 74 65 6E 74 73 2E A0 A0 20 41 6C 6C 20    contents... All 
007630:  74 68 65 20 61 62 6F 76 65 20 72 6F 74 61 74 65    the above rotate
007640:  20 69 6E 73 74 72 75 63 74 69 6F 6E 73 20 20 52     instructions  R
007650:  4C F7 97 43 2C 52 4C 2C 20 20 52 52 43 2C 20 61    L..C,RL,  RRC, a
007660:  6E 64 20 20 52 52 20 20 6E 6F 74 20 20 6F 6E 6C    nd  RR  not  onl
007670:  79 20 20 61 66 66 65 63 74 20 74 68 65 43 61 72    y  affect theCar
007680:  72 79 20 66 6C 61 67 20 20 62 75 74 20 61 6C 73    ry flag  but als
007690:  6F 20 20 74 68 65 20 5A 65 72 6F 2C 20 53 69 67    o  the Zero, Sig
0076A0:  6E 20 61 6E 64 50 61 72 69 74 79 20 20 20 66 6C    n andParity   fl
0076B0:  61 67 73 2C 20 20 61 73 20 20 20 68 61 76 65 20    ags,  as   have 
0076C0:  20 20 61 6C 6C 20 20 20 73 68 69 66 74 69 6E 73      all   shiftins
0076D0:  74 72 75 63 74 69 6F 6E 73 20 64 69 73 63 75 73    tructions discus
0076E0:  73 65 64 2E A0 A0 20 54 68 65 72 65 20 20 61 72    sed... There  ar
0076F0:  65 20 20 34 20 6F 74 68 65 72 20 72 6F 74 61 74    e  4 other rotat
007700:  65 20 69 6E 73 74 72 75 63 74 69 6F 6E 73 74 68    e instructionsth
007710:  61 74 20 20 69 6E 76 6F 6C 76 65 20 74 68 65 20    at  involve the 
007720:  41 63 63 75 6D 75 6C 61 74 6F 72 20 6F 6E 6C 79    Accumulator only
007730:  2E 20 54 68 65 79 61 72 65 20 52 4C 43 41 2C 20    . Theyare RLCA, 
007740:  20 52 4C 41 2C 20 20 52 52 43 41 2C 20 61 6E 64     RLA,  RRCA, and
007750:  20 52 52 23 67 41 2E 20 54 68 65 79 20 61 72 65     RR#gA. They are
007760:  69 64 65 6E 74 69 63 61 6C 20 74 6F 20 20 52 4C    identical to  RL
007770:  43 20 41 2C 20 20 52 4C 20 41 2C 20 20 52 52 43    C A,  RL A,  RRC
007780:  20 41 2C 20 20 61 6E 64 52 52 20 41 2C 20 62 75     A,  andRR A, bu
007790:  74 20 6F 6E 6C 79 20 20 61 66 66 65 63 74 20 20    t only  affect  
0077A0:  74 68 65 20 20 43 61 72 72 79 20 66 6C 61 67 2C    the  Carry flag,
0077B0:  61 6E 64 20 61 72 65 20 74 77 69 63 65 20 61 73    and are twice as
0077C0:  20 66 61 73 74 2E A3 20 53 75 6D 6D 61 72 79 20     fast.£ Summary 
0077D0:  2D 20 72 6F 74 61 74 65 20 69 6E 73 74 72 75 63    - rotate instruc
0077E0:  74 69 6F 6E 73 A0 A0 20 52 4C 43 20 72 20 20 72    tions.. RLC r  r
0077F0:  6F 74 61 74 65 20 72 20 6C 65 66 74 2C 20 63 61    otate r left, ca
007800:  72 72 79 20 20 64 75 70 6C 69 63 61 74 65 73 20    rry  duplicates 
007810:  52 4C 43 20 28 48 4C 29 A0 20 52 4C 43 41 20 20    RLC (HL). RLCA  
007820:  20 72 6F 74 61 74 65 20 41 20 6C 65 66 74 2C 20     rotate A left, 
007830:  63 61 72 72 79 20 20 64 75 70 6C 69 63 61 74 65    carry  duplicate
007840:  73 A0 20 52 4C 20 72 20 20 20 72 6F 74 61 74 65    s. RL r   rotate
007850:  20 72 20 61 6E DB AF 64 20 63 61 72 72 79 20 6C     r an..d carry l
007860:  65 66 74 A0 20 52 4C 20 28 48 4C 29 A0 20 52 4C    eft. RL (HL). RL
007870:  41 20 20 20 20 72 6F 74 61 74 65 20 41 20 61 6E    A    rotate A an
007880:  64 20 63 61 72 72 79 20 6C 65 66 74 A0 A0 20 52    d carry left.. R
007890:  52 43 20 72 20 20 72 6F 74 61 74 65 20 72 20 72    RC r  rotate r r
0078A0:  69 67 68 74 2C 20 63 61 72 72 79 20 64 75 70 6C    ight, carry dupl
0078B0:  69 63 61 74 65 73 20 52 52 43 20 28 48 4C 29 A0    icates RRC (HL).
0078C0:  20 52 52 43 41 20 20 20 72 6F 74 61 74 65 20 41     RRCA   rotate A
0078D0:  20 72 69 67 68 74 2C 20 63 61 72 72 79 20 64 75     right, carry du
0078E0:  70 6C 69 63 61 74 65 73 A0 20 52 52 20 72 20 20    plicates. RR r  
0078F0:  20 72 6F 74 61 74 65 20 72 20 61 6E 64 20 43 61     rotate r and Ca
007900:  72 72 79 20 72 69 67 68 74 A0 20 52 52 20 28 48    rry right. RR (H
007910:  4C 29 A0 20 52 52 41 20 20 20 20 20 20 72 6F 74    L). RRA      rot
007920:  61 74 65 20 41 20 61 6E 64 20 43 61 72 72 79 20    ate A and Carry 
007930:  72 69 67 68 74 A3 20 20 20 20 45 58 41 4D 50 4C    right£    EXAMPL
007940:  45 53 20 4F 46 20 52 4F 54 41 54 45 20 49 4E 53    ES OF ROTATE INS
007950:  54 52 55 43 54 49 4F 1A CD 4E 53 A0 A0 20 54 68    TRUCTIO..NS.. Th
007960:  65 73 65 20 65 78 61 6D 70 6C 65 73 20 69 6C 6C    ese examples ill
007970:  75 73 74 72 61 74 65 20 74 68 65 20 6F 70 65 72    ustrate the oper
007980:  61 74 69 6F 6E 6F 66 20 20 72 6F 74 61 74 65 20    ationof  rotate 
007990:  20 20 69 6E 73 74 72 75 63 74 69 6F 6E 73 2E 20      instructions. 
0079A0:  20 20 4D 6F 64 69 66 79 20 20 74 68 65 69 6E 69      Modify  theini
0079B0:  74 69 61 6C 20 63 6F 6E 64 69 74 69 6F 6E 20 6F    tial condition o
0079C0:  66 20 74 68 65 20 6C 6F 63 61 74 69 6F 6E 20 20    f the location  
0079D0:  53 54 4F 52 45 74 6F 20 69 6E 76 65 73 74 69 67    STOREto investig
0079E0:  61 74 65 20 74 68 65 69 72 20 6F 70 65 72 61 74    ate their operat
0079F0:  69 6F 6E 20 66 75 72 74 68 65 72 2E A3 20 4C 44    ion further.£ LD
007A00:  20 48 4C 2C 53 54 4F 52 45 A0 20 20 4C 44 20 42     HL,STORE.  LD B
007A10:  2C 38 A0 20 4C 4F 4F 50 31 20 52 4C 43 20 28 48    ,8. LOOP1 RLC (H
007A20:  4C 29 A0 20 20 44 4A 4E 5A 20 4C 4F 4F 50 31 A0    L).  DJNZ LOOP1.
007A30:  20 20 4C 44 20 42 2C 38 A0 20 4C 4F 4F 50 32 20      LD B,8. LOOP2 
007A40:  52 4C 20 28 48 4C 29 A0 20 20 44 4A 4E 5A 20 4C    RL (HL).  DJNZ L
007A50:  4F 4F 50 32 A0 20 20 4C 44 A5 09 20 42 2C 38 A0    OOP2.  LD.. B,8.
007A60:  20 4C 4F 4F 50 33 20 52 52 43 20 28 48 4C 29 A0     LOOP3 RRC (HL).
007A70:  20 20 44 4A 4E 5A 20 4C 4F 4F 50 33 A0 20 20 4C      DJNZ LOOP3.  L
007A80:  44 20 42 2C 38 A0 20 4C 4F 4F 50 34 20 52 52 20    D B,8. LOOP4 RR 
007A90:  28 48 4C 29 A0 20 20 44 4A 4E 5A 20 4C 4F 4F 50    (HL).  DJNZ LOOP
007AA0:  34 A0 20 20 52 45 54 A0 20 53 54 4F 52 45 20 42    4.  RET. STORE B
007AB0:  49 4E 20 36 39 48 A0 20 20 20 A0 20 20 20 20 45    IN 69H.   .    E
007AC0:  58 41 4D 50 4C 45 20 55 53 49 4E 47 20 52 4F 54    XAMPLE USING ROT
007AD0:  41 54 45 20 41 4E 44 20 53 48 49 46 54 A0 A0 20    ATE AND SHIFT.. 
007AE0:  54 68 69 73 20 65 78 61 6D 70 6C 65 20 20 75 73    This example  us
007AF0:  65 73 20 20 73 68 69 66 74 73 20 20 61 6E 64 20    es  shifts  and 
007B00:  20 72 6F 74 61 74 65 69 6E 73 74 72 75 63 74 69     rotateinstructi
007B10:  6F 6E 73 20 20 74 6F 20 20 6D 75 6C 74 69 70 6C    ons  to  multipl
007B20:  79 20 20 74 77 6F 20 20 38 20 20 20 62 69 74 6E    y  two  8   bitn
007B30:  75 6D 62 65 72 73 20 74 6F 67 65 74 68 65 72 2E    umbers together.
007B40:  20 20 4F 6E 65 20 6E 75 6D 62 65 72 20 69 73 20      One number is 
007B50:  72 6F 74 61 74 65 64 74 6F 20 65 5C D2 78 61 6D    rotatedto e\.xam
007B60:  69 6E 65 20 20 65 61 63 68 20 62 69 74 20 69 6E    ine  each bit in
007B70:  20 74 75 72 6E 2E 20 20 54 68 65 20 6F 74 68 65     turn.  The othe
007B80:  72 6E 75 6D 62 65 72 20 69 73 20 61 6C 73 6F 20    rnumber is also 
007B90:  73 68 69 66 74 65 64 20 61 6E 64 20 20 61 64 64    shifted and  add
007BA0:  65 64 20 74 6F 20 74 68 65 74 6F 74 61 6C 20 69    ed to thetotal i
007BB0:  66 20 74 68 65 20 20 62 69 74 20 69 73 20 73 65    f the  bit is se
007BC0:  74 2E 20 54 68 69 73 20 6D 65 74 68 6F 64 20 69    t. This method i
007BD0:  73 66 61 72 20 71 75 69 63 6B 65 72 20 74 68 61    sfar quicker tha
007BE0:  6E 20 74 68 65 20 20 6D 65 74 68 6F 64 20 6F 66    n the  method of
007BF0:  20 72 65 70 65 61 74 65 64 61 64 64 69 74 69 6F     repeatedadditio
007C00:  6E 2E A3 20 4C 44 20 48 4C 2C 30 A0 20 20 4C 44    n.£ LD HL,0.  LD
007C10:  20 44 45 2C 28 4E 55 4D 32 29 A0 20 20 4C 44 20     DE,(NUM2).  LD 
007C20:  41 2C 28 4E 55 4D 31 29 A0 20 4C 4F 4F 50 20 20    A,(NUM1). LOOP  
007C30:  52 52 20 41 A0 20 20 4A 52 20 4E 43 2C 4A 50 31    RR A.  JR NC,JP1
007C40:  A0 20 20 41 44 44 20 48 4C 2C 44 45 A0 20 4A 50    .  ADD HL,DE. JP
007C50:  31 20 20 20 52 45 54 20 5A A0 20 20 53 C6 F7 4C    1   RET Z.  S..L
007C60:  41 20 45 A0 20 20 52 4C 20 44 A0 20 20 4A 52 20    A E.  RL D.  JR 
007C70:  4C 4F 4F 50 A0 20 20 A0 20 4E 55 4D 31 20 20 44    LOOP.  . NUM1  D
007C80:  45 46 42 20 32 31 32 A0 20 4E 55 4D 32 20 20 44    EFB 212. NUM2  D
007C90:  45 46 42 20 32 30 33 A0 20 20 44 45 46 42 20 30    EFB 203.  DEFB 0
007CA0:  A0 20 20 A0 20 20 A0 20 20 20 20 20 20 20 20 20    .  .  .         
007CB0:  20 20 20 20 20 20 44 45 43 49 4D 41 4C 20 52 4F          DECIMAL RO
007CC0:  54 41 54 45 A0 A0 20 54 68 65 20 20 5A 38 30 20    TATE.. The  Z80 
007CD0:  20 61 6C 6C 6F 77 73 20 20 75 73 20 74 6F 20 72     allows  us to r
007CE0:  6F 74 61 74 65 20 6C 65 66 74 20 61 6E 64 72 69    otate left andri
007CF0:  67 68 74 20 6E 69 62 62 6C 65 73 20 61 73 20 77    ght nibbles as w
007D00:  65 6C 6C 20 61 73 20 62 69 74 73 2E A0 A0 20 52    ell as bits... R
007D10:  4C 44 20 20 52 6F 74 61 74 65 73 20 74 68 65 20    LD  Rotates the 
007D20:  44 65 63 69 6D 61 6C 20 6E 75 6D 62 65 72 20 4C    Decimal number L
007D30:  65 66 74 A0 20 52 52 44 20 20 52 6F 74 61 74 65    eft. RRD  Rotate
007D40:  73 20 74 68 65 20 44 65 63 69 6D 61 6C 20 6E 75    s the Decimal nu
007D50:  6D 62 65 72 20 52 69 67 68 74 A0 A0 20 54 68 5B    mber Right.. Th[
007D60:  20 65 20 20 20 62 65 73 74 20 20 20 77 61 79 20     e   best   way 
007D70:  20 20 74 6F 20 20 20 64 65 73 63 72 69 62 65 20      to   describe 
007D80:  20 74 68 65 73 65 6F 70 65 72 61 74 69 6F 6E 73     theseoperations
007D90:  20 20 20 20 69 73 20 20 20 20 62 79 20 20 20 65        is    by   e
007DA0:  78 61 6D 70 6C 65 2E 20 20 20 42 6F 74 68 69 6E    xample.   Bothin
007DB0:  73 74 72 75 63 74 69 6F 6E 73 20 20 69 6E 76 6F    structions  invo
007DC0:  6C 76 65 20 20 74 68 65 20 20 41 63 63 75 6D 75    lve  the  Accumu
007DD0:  6C 61 74 6F 72 2C 61 6E 64 20 20 20 74 68 65 20    lator,and   the 
007DE0:  20 20 6D 65 6D 6F 72 79 20 20 6C 6F 63 61 74 69      memory  locati
007DF0:  6F 6E 20 20 28 48 4C 29 2E 20 20 54 68 65 65 78    on  (HL).  Theex
007E00:  61 6D 70 6C 65 73 20 61 72 65 20 69 6E 20 20 42    amples are in  B
007E10:  69 6E 61 72 79 20 43 6F 64 65 64 20 44 65 63 69    inary Coded Deci
007E20:  6D 61 6C 20 6F 66 63 6F 75 72 73 65 2C 20 20 65    mal ofcourse,  e
007E30:  61 63 68 20 64 69 67 69 74 20 74 61 6B 69 6E 67    ach digit taking
007E40:  20 75 70 20 6F 6E 65 20 6E 69 62 62 6C 65 6F 72     up one nibbleor
007E50:  20 20 66 6F 75 72 20 20 62 69 74 73 20 6F 66 20      four  bits of 
007E60:  74 5F 6E 68 65 20 72 65 67 69 73 74 65 72 20 6F    t_nhe register o
007E70:  72 20 6D 65 6D 6F 72 79 6C 6F 63 61 74 69 6F 6E    r memorylocation
007E80:  2E A3 20 20 20 20 20 20 20 20 20 20 20 20 20 41    .£             A
007E90:  20 61 66 74 65 72 20 20 20 28 48 4C 29 20 20 20     after   (HL)   
007EA0:  20 41 20 62 65 66 6F 72 65 20 A0 20 20 20 20 20     A before .     
007EB0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
007EC0:  20 20 35 20 34 20 20 20 20 20 20 20 20 78 20 33      5 4        x 3
007ED0:  A0 20 61 66 74 65 72 20 52 4C 44 20 20 20 20 20    . after RLD     
007EE0:  78 20 35 20 20 20 20 20 34 20 33 A0 A0 77 68 65    x 5     4 3..whe
007EF0:  72 65 20 20 78 20 69 73 20 61 6E 79 20 6E 75 6D    re  x is any num
007F00:  62 65 72 20 61 6E 64 20 69 73 20 75 6E 61 66 66    ber and is unaff
007F10:  65 63 74 65 64 62 79 20 74 68 65 20 69 6E 73 74    ectedby the inst
007F20:  72 75 63 74 69 6F 6E 2E A0 A0 20 41 73 20 63 61    ruction... As ca
007F30:  6E 20 62 65 20 20 73 65 65 6E 20 74 68 65 20 65    n be  seen the e
007F40:  66 66 65 63 74 20 6F 66 20 73 74 72 69 6E 67 69    ffect of stringi
007F50:  6E 67 74 6F 67 65 74 68 65 72 20 52 4C 44 20 69    ngtogether RLD i
007F60:  6E 73 74 94 C0 72 75 63 74 69 6F 6E 73 20 69 73    nst..ructions is
007F70:  20 74 6F 20 6D 75 6C 74 69 70 6C 79 61 20 20 64     to multiplya  d
007F80:  65 63 69 6D 61 6C 20 20 6E 75 6D 62 65 72 20 20    ecimal  number  
007F90:  62 79 20 20 31 30 2E 20 20 49 74 20 69 73 20 20    by  10.  It is  
007FA0:  61 6C 73 6F 75 73 65 66 75 6C 20 69 6E 20 69 73    alsouseful in is
007FB0:  6F 6C 61 74 69 6E 67 20 74 68 65 20 68 69 67 68    olating the high
007FC0:  20 64 69 67 69 74 20 20 66 72 6F 6D 74 68 65 20     digit  fromthe 
007FD0:  74 77 6F 20 64 69 67 69 74 20 6E 75 6D 62 65 72    two digit number
007FE0:  2E A3 20 20 20 20 20 20 20 20 20 20 20 20 20 41    .£             A
007FF0:  20 61 66 74 65 72 20 20 20 28 48 4C 29 20 20 20     after   (HL)   
008000:  20 41 20 62 65 66 6F 72 65 20 A0 20 20 20 20 20     A before .     
008010:  20 20 20 20 20 20 20 20 20 20 78 20 35 20 20 20              x 5   
008020:  20 20 34 20 33 A0 20 61 66 74 65 72 20 52 52 44      4 3. after RRD
008030:  20 20 20 20 20 20 20 20 20 20 20 20 20 35 20 34                 5 4
008040:  20 20 20 20 20 20 20 78 20 33 A0 A0 20 54 68 65           x 3.. The
008050:  20 20 52 52 44 20 20 69 6E 73 74 72 75 63 74 69      RRD  instructi
008060:  6F 6E 20 74 68 97 8A 65 72 65 66 6F 72 65 20 64    on th..erefore d
008070:  69 76 69 64 65 73 74 68 65 20 64 65 63 69 6D 61    ividesthe decima
008080:  6C 20 6E 75 6D 62 65 72 20 62 79 20 31 30 2E 20    l number by 10. 
008090:  49 74 20 63 61 6E 20 61 6C 73 6F 20 62 65 73 74    It can also best
0080A0:  72 75 6E 67 20 74 6F 67 65 74 68 65 72 20 74 6F    rung together to
0080B0:  20 64 69 76 69 64 65 20 61 6E 79 20 6C 65 6E 67     divide any leng
0080C0:  74 68 20 42 43 44 6E 75 6D 62 65 72 20 20 62 79    th BCDnumber  by
0080D0:  20 31 30 2E 20 20 54 68 65 20 6C 6F 77 20 64 69     10.  The low di
0080E0:  67 69 74 20 6F 66 20 74 68 65 20 74 77 6F 64 69    git of the twodi
0080F0:  67 69 74 20 20 64 65 63 69 6D 61 6C 20 6E 75 6D    git  decimal num
008100:  62 65 72 20 63 61 6E 20 62 65 20 69 73 6F 6C 61    ber can be isola
008110:  74 65 64 20 62 79 74 68 69 73 20 69 6E 73 74 72    ted bythis instr
008120:  75 63 74 69 6F 6E 2E A3 20 53 75 6D 6D 61 72 79    uction.£ Summary
008130:  20 2D 20 64 65 63 69 6D 61 6C 20 73 68 69 66 74     - decimal shift
008140:  73 A0 A0 52 4C 44 20 20 20 20 52 6F 74 61 74 65    s..RLD    Rotate
008150:  20 4C 65 66 74 20 44 65 63 69 6D 61 6C 20 20 28     Left Decimal  (
008160:  2A 31 30 29 A0 A0 52 BC 00 52 44 20 20 20 20 52    *10)..R..RD    R
008170:  6F 74 61 74 65 20 52 69 67 68 74 20 44 65 63 69    otate Right Deci
008180:  6D 61 6C 20 28 2F 31 30 29 A3 20 20 20 20 20 20    mal (/10)£      
008190:  45 58 41 4D 50 4C 45 53 20 4F 46 20 44 45 43 49    EXAMPLES OF DECI
0081A0:  4D 41 4C 20 52 4F 54 41 54 49 4F 4E A0 A0 20 54    MAL ROTATION.. T
0081B0:  68 65 73 65 20 20 20 20 20 65 78 61 6D 70 6C 65    hese     example
0081C0:  73 20 20 20 20 69 6C 6C 75 73 74 72 61 74 65 20    s    illustrate 
0081D0:  20 20 20 74 68 65 6D 75 6C 74 69 70 6C 69 63 61       themultiplica
0081E0:  74 69 6F 6E 20 20 20 61 6E 64 20 20 20 64 69 76    tion   and   div
0081F0:  69 73 69 6F 6E 20 20 6F 66 20 20 42 43 44 6E 75    ision  of  BCDnu
008200:  6D 62 65 72 73 20 62 79 20 74 65 6E 2E A3 20 4C    mbers by ten.£ L
008210:  44 20 48 4C 2C 53 54 4F 52 45 A0 20 20 4C 44 20    D HL,STORE.  LD 
008220:  41 2C 30 A0 20 20 52 4C 44 A0 20 20 49 4E 43 20    A,0.  RLD.  INC 
008230:  48 4C A0 20 20 52 4C 44 A0 20 20 A0 20 20 4C 44    HL.  RLD.  .  LD
008240:  20 41 2C 30 A0 20 20 52 52 44 A0 20 20 44 45 43     A,0.  RRD.  DEC
008250:  20 48 4C A0 20 20 52 52 44 A0 20 20 52 45 54 A0     HL.  RRD.  RET.
008260:  20 20 A0 20 20 A0 20 53 54 00 73 4F 52 45 20 44      .  . ST.sORE D
008270:  45 46 57 20 32 35 34 48 A0 20 20 A0 20 20 A0 20    EFW 254H.  .  . 
008280:  20 20 20 20 20 20 20 20 20 20 20 20 20 49 4E 54                 INT
008290:  52 4F 44 55 43 54 49 4F 4E A0 A0 20 54 68 69 73    RODUCTION.. This
0082A0:  20 20 67 72 6F 75 70 20 20 6F 66 20 6C 65 73 73      group  of less
0082B0:  6F 6E 73 20 77 69 6C 6C 20 20 69 6E 74 72 6F 64    ons will  introd
0082C0:  75 63 65 74 68 65 20 69 64 65 61 20 6F 66 20 62    ucethe idea of b
0082D0:  69 74 20 6D 61 6E 69 70 75 6C 61 74 69 6F 6E 20    it manipulation 
0082E0:  61 6E 64 20 69 74 73 20 75 73 65 69 6E 20 20 66    and its usein  f
0082F0:  6C 61 67 20 20 6F 70 65 72 61 74 69 6F 6E 73 20    lag  operations 
008300:  20 61 6E 64 20 20 69 6E 20 20 70 72 6F 64 75 63     and  in  produc
008310:  69 6E 67 66 61 73 74 65 72 20 6D 65 74 68 6F 64    ingfaster method
008320:  73 20 6F 66 20 6D 75 6C 74 69 70 6C 69 63 61 74    s of multiplicat
008330:  69 6F 6E 2E A0 A0 20 42 75 74 20 66 69 72 73 74    ion... But first
008340:  20 20 77 65 20 73 68 61 6C 6C 20 6C 6F 6F 6B 20      we shall look 
008350:  66 75 72 74 68 65 72 20 61 74 20 74 68 65 70 72    further at thepr
008360:  6F 63 65 73 73 6F 72 73 20 66 6C 80 34 61 67 73    ocessors fl.4ags
008370:  2E A3 20 20 20 20 20 20 20 20 20 20 20 20 20 4C    .£             L
008380:  45 53 53 4F 4E 53 20 20 31 38 20 2D 20 32 35 A0    ESSONS  18 - 25.
008390:  A0 20 31 38 2E 20 20 50 61 72 69 74 79 A0 20 31    . 18.  Parity. 1
0083A0:  39 2E 20 20 54 68 65 20 66 6C 61 67 20 72 65 67    9.  The flag reg
0083B0:  69 73 74 65 72 20 61 6E 64 20 41 46 A0 20 32 30    ister and AF. 20
0083C0:  2E 20 20 53 20 61 6E 64 20 50 2F 56 20 66 6C 61    .  S and P/V fla
0083D0:  67 73 20 69 6E 20 69 6E 73 74 72 75 63 74 69 6F    gs in instructio
0083E0:  6E 73 A0 20 20 20 20 20 20 20 20 20 20 20 20 20    ns.             
0083F0:  45 78 20 2D 20 73 69 67 6E 20 61 6E 64 20 70 61    Ex - sign and pa
008400:  72 69 74 79 20 66 6C 61 67 73 20 20 32 31 2E 20    rity flags  21. 
008410:  20 42 69 74 20 6D 61 6E 69 70 75 6C 61 74 69 6F     Bit manipulatio
008420:  6E A0 20 20 20 20 20 20 20 20 20 20 20 45 78 20    n.           Ex 
008430:  2D 20 62 69 74 20 6D 61 6E 69 70 75 6C 61 74 69    - bit manipulati
008440:  6F 6E A0 20 32 32 2E 20 20 4C 6F 67 69 63 61 6C    on. 22.  Logical
008450:  20 69 6E 73 74 72 75 63 74 69 6F 6E 73 A0 20 20     instructions.  
008460:  20 20 20 20 20 20 20 20 20 45 78 20 2D E4 CA 20             Ex -.. 
008470:  6C 6F 67 69 63 61 6C 20 69 6E 73 74 72 75 63 74    logical instruct
008480:  69 6F 6E 73 A0 20 32 33 2E 20 20 53 68 69 66 74    ions. 23.  Shift
008490:  20 69 6E 73 74 72 75 63 74 69 6F 6E 73 A0 20 20     instructions.  
0084A0:  20 20 20 20 20 20 20 20 20 45 78 20 2D 20 73 68             Ex - sh
0084B0:  69 66 74 20 69 6E 73 74 72 75 63 74 69 6F 6E 73    ift instructions
0084C0:  A0 20 32 34 2E 20 20 52 6F 74 61 74 65 20 69 6E    . 24.  Rotate in
0084D0:  73 74 72 75 63 74 69 6F 6E 73 A0 20 20 20 20 20    structions.     
0084E0:  20 20 20 20 20 20 45 78 20 2D 20 72 6F 74 61 74          Ex - rotat
0084F0:  65 20 69 6E 73 74 72 75 63 74 69 6F 6E 73 20 31    e instructions 1
008500:  A0 20 20 20 20 20 20 20 20 20 20 20 45 78 20 2D    .           Ex -
008510:  20 72 6F 74 61 74 65 20 69 6E 73 74 72 75 63 74     rotate instruct
008520:  69 6F 6E 73 20 32 A0 20 32 35 2E 20 20 44 65 63    ions 2. 25.  Dec
008530:  69 6D 61 6C 20 72 6F 74 61 74 69 6E 67 A0 20 20    imal rotating.  
008540:  20 20 20 20 20 20 20 20 20 45 78 20 2D 20 64 65             Ex - de
008550:  63 69 6D 61 6C 20 72 6F 74 61 74 69 6F 6E A0 20    cimal rotation. 
008560:  4C 6F 61 64 20 66 75 72 74 68 65 72 20 6C 65 1A    Load further le.
008570:  F9 73 73 6F 6E 73 20 66 72 6F 6D 20 74 61 70 65    .ssons from tape
008580:  A3 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    £               
008590:  20 20 50 41 52 49 54 59 A0 A0 20 57 68 65 6E 20      PARITY.. When 
0085A0:  64 61 74 61 20 69 73 20 74 72 61 6E 73 6D 69 74    data is transmit
0085B0:  74 65 64 20 66 72 6F 6D 20 6F 6E 65 20 70 6C 61    ted from one pla
0085C0:  63 65 74 6F 20 61 6E 6F 74 68 65 72 2C 20 69 74    ceto another, it
0085D0:  20 69 73 20 70 6F 73 73 69 62 6C 65 20 66 6F 72     is possible for
0085E0:  20 65 72 72 6F 72 73 20 74 6F 61 70 70 65 61 72     errors toappear
0085F0:  20 69 6E 20 74 68 65 20 72 65 63 65 69 76 65 64     in the received
008600:  20 64 61 74 61 2E 20 50 61 72 69 74 79 20 69 73     data. Parity is
008610:  20 61 73 69 6D 70 6C 65 20 77 61 79 20 6F 66 20     asimple way of 
008620:  64 65 74 65 63 74 69 6E 67 20 73 69 6E 67 6C 65    detecting single
008630:  20 65 72 72 6F 72 73 20 69 6E 64 61 74 61 2E 20     errors indata. 
008640:  20 41 6E 20 61 64 64 69 74 69 6F 6E 61 6C 20 62     An additional b
008650:  69 74 20 69 73 20 61 64 64 65 64 20 74 6F 20 74    it is added to t
008660:  68 65 64 61 74 61 20 74 68 61 74 20 6D 61 6B 65    hedata that make
008670:  73 49 F9 20 74 68 65 20 74 6F 74 61 6C 20 6E 75    sI. the total nu
008680:  6D 62 65 72 20 6F 66 20 22 31 22 73 69 6E 20 74    mber of "1"sin t
008690:  68 65 20 20 77 6F 72 64 20 20 61 6E 20 20 65 76    he  word  an  ev
0086A0:  65 6E 20 20 6E 75 6D 62 65 72 2E 20 20 20 49 66    en  number.   If
0086B0:  20 74 68 65 72 65 63 65 69 76 65 64 20 20 77 6F     thereceived  wo
0086C0:  72 64 20 20 64 6F 65 73 20 20 6E 6F 74 20 20 68    rd  does  not  h
0086D0:  61 76 65 20 20 61 6E 20 65 76 65 6E 6E 75 6D 62    ave  an evennumb
0086E0:  65 72 20 20 6F 66 20 22 31 22 73 20 69 6E 20 69    er  of "1"s in i
0086F0:  74 2C 20 74 68 65 6E 20 61 6E 20 65 72 72 6F 72    t, then an error
008700:  20 68 61 73 6F 63 63 75 72 72 65 64 2E 20 20 20     hasoccurred.   
008710:  49 6E 20 20 61 64 64 69 74 69 6F 6E 20 20 74 6F    In  addition  to
008720:  20 20 74 68 69 73 20 20 65 76 65 6E 70 61 72 69      this  evenpari
008730:  74 79 20 77 65 20 63 6F 75 6C 64 20 75 73 65 20    ty we could use 
008740:  20 6F 64 64 20 20 70 61 72 69 74 79 2C 20 20 77     odd  parity,  w
008750:  68 65 72 65 74 68 65 20 77 6F 72 64 20 69 73 20    herethe word is 
008760:  6D 61 64 65 20 74 6F 20 68 61 76 65 20 20 61 6E    made to have  an
008770:  20 20 6F 14 E9 64 64 20 6E 75 6D 62 65 72 6F 66      o..dd numberof
008780:  20 22 31 22 73 20 69 6E 20 69 74 2E A0 A0 20 54     "1"s in it... T
008790:  68 65 20 20 5A 38 30 20 20 68 61 73 20 61 20 66    he  Z80  has a f
0087A0:  6C 61 67 20 74 68 61 74 20 69 73 20 73 65 74 20    lag that is set 
0087B0:  69 66 20 74 68 65 6E 75 6D 62 65 72 20 6F 66 20    if thenumber of 
0087C0:  22 31 22 73 20 69 6E 20 61 20 6E 75 6D 62 65 72    "1"s in a number
0087D0:  20 69 73 20 65 76 65 6E 2E 20 54 68 69 73 66 6C     is even. Thisfl
0087E0:  61 67 20 20 69 73 20 69 6E 20 66 61 63 74 20 20    ag  is in fact  
0087F0:  74 68 65 20 20 73 61 6D 65 20 66 6C 61 67 20 20    the  same flag  
008800:  61 73 20 74 68 65 6F 76 65 72 66 6C 6F 77 20 66    as theoverflow f
008810:  6C 61 67 2E 20 20 49 74 20 20 69 73 20 20 74 65    lag.  It  is  te
008820:  72 6D 65 64 20 20 74 68 65 20 20 50 2F 56 66 6C    rmed  the  P/Vfl
008830:  61 67 2E A3 20 69 2E 65 2E A0 30 20 30 20 31 20    ag.£ i.e..0 0 1 
008840:  31 20 30 20 31 20 30 20 30 20 20 20 70 61 72 69    1 0 1 0 0   pari
008850:  74 79 20 66 6C 61 67 20 69 73 20 6E 6F 74 20 73    ty flag is not s
008860:  65 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20    et              
008870:  20 20 20 20 73 11 27 69 6E 63 65 20 20 6E 75 6D        s.'ince  num
008880:  62 65 72 20 20 6F 66 20 22 31 22 73 20 20 20 20    ber  of "1"s    
008890:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 73                  is
0088A0:  20 33 2E 20 20 20 69 2E 65 2E 20 6F 64 64 2E A0     3.   i.e. odd..
0088B0:  A0 30 20 31 20 30 20 30 20 30 20 31 20 31 20 31    .0 1 0 0 0 1 1 1
0088C0:  20 20 20 70 61 72 69 74 79 20 20 66 6C 61 67 20       parity  flag 
0088D0:  20 20 69 73 20 20 73 65 74 20 20 20 20 20 20 20      is  set       
0088E0:  20 20 20 20 20 20 20 20 20 20 20 73 69 6E 63 65               since
0088F0:  20 20 6E 75 6D 62 65 72 20 20 6F 66 20 22 31 22      number  of "1"
008900:  73 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    s               
008910:  20 20 20 69 73 20 34 2E 20 20 20 69 2E 65 2E 20       is 4.   i.e. 
008920:  65 76 65 6E 2E A0 A0 20 54 68 65 20 20 69 6E 73    even... The  ins
008930:  74 72 75 63 74 69 6F 6E 20 20 70 65 72 66 6F 72    truction  perfor
008940:  6D 65 64 20 20 64 65 74 65 72 6D 69 6E 65 73 74    med  determinest
008950:  68 65 20 6D 65 61 6E 69 6E 67 20 6F 66 20 74 68    he meaning of th
008960:  65 20 50 2F 56 20 66 6C 61 67 2E A0 A0 20 4F 66    e P/V flag... Of
008970:  20 20 61 6C 6C 20 20 77 24 74 68 65 20 69 6E 73      all  w$the ins
008980:  74 72 75 63 74 69 6F 6E 73 20 20 64 65 73 63 72    tructions  descr
008990:  69 62 65 64 20 74 6F 64 61 74 65 20 20 6F 6E 6C    ibed todate  onl
0089A0:  79 20 20 44 41 41 20 20 74 72 65 61 74 73 20 20    y  DAA  treats  
0089B0:  69 74 20 20 61 73 20 61 20 70 61 72 69 74 79 66    it  as a parityf
0089C0:  6C 61 67 2E 20 20 41 6C 6C 20 6F 74 68 65 72 73    lag.  All others
0089D0:  20 65 69 74 68 65 72 20 68 61 76 65 20 20 6E 6F     either have  no
0089E0:  20 65 66 66 65 63 74 6F 6E 20 69 74 20 20 6F 72     effecton it  or
0089F0:  20 75 73 65 20 69 74 20 61 73 20 20 61 6E 20 20     use it as  an  
008A00:  6F 76 65 72 66 6C 6F 77 20 20 66 6C 61 67 2E 41    overflow  flag.A
008A10:  6C 6C 20 73 75 62 73 65 71 75 65 6E 74 20 69 6E    ll subsequent in
008A20:  73 74 72 75 63 74 69 6F 6E 73 20 65 69 74 68 65    structions eithe
008A30:  72 20 20 68 61 76 65 6E 6F 20 65 66 66 65 63 74    r  haveno effect
008A40:  20 6F 6E 20 69 74 20 6F 72 20 75 73 65 20 69 74     on it or use it
008A50:  20 61 73 20 70 61 72 69 74 79 2E A3 20 54 48 45     as parity.£ THE
008A60:  20 46 4C 41 47 20 52 45 47 49 53 54 45 52 20 41     FLAG REGISTER A
008A70:  4E 44 20 41 46 20 52 45 47 19 B2 49 53 54 45 52    ND AF REG..ISTER
008A80:  20 50 41 49 52 A0 A0 20 57 65 20 20 68 61 76 65     PAIR.. We  have
008A90:  20 20 64 69 73 63 75 73 73 65 64 20 66 6C 61 67      discussed flag
008AA0:  73 20 61 73 20 69 6E 64 69 76 69 64 75 61 6C 62    s as individualb
008AB0:  69 74 73 2E 20 20 54 68 69 73 20 69 73 20 74 68    its.  This is th
008AC0:  65 20 77 61 79 20 74 68 65 79 20 61 72 65 20 6E    e way they are n
008AD0:  6F 72 6D 61 6C 6C 79 75 73 65 64 2E 20 20 20 54    ormallyused.   T
008AE0:  68 65 79 20 61 72 65 20 68 6F 77 65 76 65 72 20    hey are however 
008AF0:  61 63 74 75 61 6C 6C 79 20 73 74 6F 72 65 64 69    actually storedi
008B00:  6E 20 74 68 65 20 5A 38 30 20 69 6E 20 61 20 72    n the Z80 in a r
008B10:  65 67 69 73 74 65 72 2C 20 64 65 73 69 67 6E 61    egister, designa
008B20:  74 65 64 20 20 61 73 46 20 20 6F 72 20 20 66 6C    ted  asF  or  fl
008B30:  61 67 20 20 72 65 67 69 73 74 65 72 2E 20 20 54    ag  register.  T
008B40:  68 65 20 20 66 6C 61 67 73 20 20 20 61 72 65 61    he  flags   area
008B50:  72 72 61 6E 67 65 64 20 61 73 20 66 6F 6C 6C 6F    rranged as follo
008B60:  77 73 20 3A 2D A0 A0 20 20 20 62 69 74 20 20 30    ws :-..   bit  0
008B70:  20 20 20 20 20 20 43 20 20 20 20 7C 4A 43 61 72          C    |JCar
008B80:  72 79 A0 20 20 20 62 69 74 20 20 31 20 20 20 20    ry.   bit  1    
008B90:  20 20 4E 20 20 20 20 53 75 62 74 72 61 63 74 20      N    Subtract 
008BA0:  6C 61 73 74 A0 20 20 20 62 69 74 20 20 32 20 20    last.   bit  2  
008BB0:  20 20 20 50 2F 56 20 20 20 50 61 72 69 74 79 20       P/V   Parity 
008BC0:  61 6E 64 20 6F 76 65 72 66 6C 6F 77 A0 20 20 20    and overflow.   
008BD0:  62 69 74 20 20 33 20 20 20 20 20 20 20 20 20 20    bit  3          
008BE0:  20 4E 6F 74 20 75 73 65 64 A0 20 20 20 62 69 74     Not used.   bit
008BF0:  20 20 34 20 20 20 20 20 20 48 20 20 20 20 48 61      4      H    Ha
008C00:  6C 66 20 63 61 72 72 79 A0 20 20 20 62 69 74 20    lf carry.   bit 
008C10:  20 35 20 20 20 20 20 20 20 20 20 20 20 4E 6F 74     5           Not
008C20:  20 75 73 65 64 A0 20 20 20 62 69 74 20 20 36 20     used.   bit  6 
008C30:  20 20 20 20 20 5A 20 20 20 20 5A 65 72 6F A0 20         Z    Zero. 
008C40:  20 20 62 69 74 20 20 37 20 20 20 20 20 20 53 20      bit  7      S 
008C50:  20 20 20 53 69 67 6E A3 20 54 68 65 20 46 6C 61       Sign£ The Fla
008C60:  67 20 20 72 65 67 69 73 74 65 72 20 20 73 6F 6D    g  register  som
008C70:  65 74 69 6D 65 73 20 20 66 6F 72 6D 73 0A 31 20    etimes  forms.1 
008C80:  20 61 72 65 67 69 73 74 65 72 20 20 70 61 69 72     aregister  pair
008C90:  20 20 69 6E 20 20 63 6F 6E 6A 75 6E 63 74 69 6F      in  conjunctio
008CA0:  6E 20 77 69 74 68 20 74 68 65 41 63 63 75 6D 75    n with theAccumu
008CB0:  6C 61 74 6F 72 2E 20 54 68 69 73 20 70 61 69 72    lator. This pair
008CC0:  20 69 73 20 63 61 6C 6C 65 64 20 41 46 2E 20 54     is called AF. T
008CD0:  68 65 6F 6E 6C 79 20 69 6E 73 74 72 75 63 74 69    heonly instructi
008CE0:  6F 6E 73 20 20 70 72 65 76 69 6F 75 73 6C 79 20    ons  previously 
008CF0:  20 6D 65 6E 74 69 6F 6E 65 64 74 68 61 74 20 69     mentionedthat i
008D00:  6E 76 6F 6C 76 65 20 74 68 69 73 20 72 65 67 69    nvolve this regi
008D10:  73 74 65 72 20 70 61 69 72 20 61 72 65 20 50 55    ster pair are PU
008D20:  53 48 61 6E 64 20 50 4F 50 2E A3 20 20 20 20 20    SHand POP.£     
008D30:  53 20 61 6E 64 20 50 2F 56 20 46 4C 41 47 53 20    S and P/V FLAGS 
008D40:  49 4E 20 49 4E 53 54 52 55 43 54 49 4F 4E 53 A0    IN INSTRUCTIONS.
008D50:  A0 20 54 68 65 20 73 69 67 6E 20 20 61 6E 64 20    . The sign  and 
008D60:  20 70 61 72 69 74 79 20 66 6C 61 67 73 20 63 61     parity flags ca
008D70:  6E 20 62 65 20 75 73 65 64 69 6E 20 20 61 6C F4    n be usedin  al.
008D80:  6A 6C 20 20 61 62 73 6F 6C 75 74 65 20 28 20 4E    jl  absolute ( N
008D90:  4F 54 20 72 65 6C 61 74 69 76 65 29 20 6A 75 6D    OT relative) jum
008DA0:  70 73 2C 63 61 6C 6C 73 2C 20 61 6E 64 20 72 65    ps,calls, and re
008DB0:  74 75 72 6E 73 2E A0 A0 20 54 68 65 20 6E 6F 74    turns... The not
008DC0:  61 74 69 6F 6E 20 69 73 20 3A 2D A0 A0 20 4A 50    ation is :-.. JP
008DD0:  20 50 4F 2C 6E 6E 20 20 43 41 4C 4C 20 50 4F 2C     PO,nn  CALL PO,
008DE0:  6E 6E 20 20 52 45 54 20 50 4F A0 20 20 20 20 20    nn  RET PO.     
008DF0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
008E00:  20 20 20 20 20 20 50 61 72 69 74 79 20 6F 64 64          Parity odd
008E10:  3D 30 20 A0 20 4A 50 20 50 45 2C 6E 6E 20 20 43    =0 . JP PE,nn  C
008E20:  41 4C 4C 20 50 45 2C 6E 6E 20 20 52 45 54 20 50    ALL PE,nn  RET P
008E30:  45 A0 20 20 20 20 20 20 20 20 20 20 20 20 20 20    E.              
008E40:  20 20 20 20 20 20 20 20 20 20 20 20 20 50 61 72                 Par
008E50:  69 74 79 20 65 76 65 6E 3D 31 A0 A0 20 4A 50 20    ity even=1.. JP 
008E60:  50 2C 6E 6E 20 20 20 43 41 4C 4C 20 50 2C 6E 6E    P,nn   CALL P,nn
008E70:  20 20 20 52 45 54 20 50 20 20 20 53 69 67 6E 20       RET P   Sign 
008E80:  2B 6B 43 76 65 A0 20 4A 50 20 4D 2C 6E 6E 20 20    +kCve. JP M,nn  
008E90:  20 43 41 4C 4C 20 4D 2C 6E 6E 20 20 20 52 45 54     CALL M,nn   RET
008EA0:  20 4D 20 20 20 53 69 67 6E 20 2D 76 65 A0 A0 20     M   Sign -ve.. 
008EB0:  49 66 20 74 68 65 20 63 6F 6E 64 69 74 69 6F 6E    If the condition
008EC0:  20 69 73 20 6E 6F 74 20 6D 65 74 20 74 68 65 20     is not met the 
008ED0:  70 72 6F 67 72 61 6D 77 69 6C 6C 20 20 6E 6F 74    programwill  not
008EE0:  20 20 6A 75 6D 70 2C 20 20 63 61 6C 6C 20 61 20      jump,  call a 
008EF0:  20 73 75 62 72 6F 75 74 69 6E 65 2C 20 6F 72 72     subroutine, orr
008F00:  65 74 75 72 6E 2E A3 20 20 20 20 20 20 20 20 45    eturn.£        E
008F10:  58 41 4D 50 4C 45 20 4F 46 20 4A 55 4D 50 20 4F    XAMPLE OF JUMP O
008F20:  4E 20 53 49 47 4E A0 A0 20 54 68 69 73 20 20 65    N SIGN.. This  e
008F30:  78 61 6D 70 6C 65 20 20 69 73 20 61 20 73 69 6D    xample  is a sim
008F40:  70 6C 65 20 20 70 72 6F 67 72 61 6D 20 20 74 6F    ple  program  to
008F50:  69 6C 6C 75 73 74 72 61 74 65 20 20 4A 50 20 50    illustrate  JP P
008F60:  2C 6E 6E 20 2C 20 61 6E 64 20 4A 50 20 4D 2C 6E    ,nn , and JP M,n
008F70:  6E 3B 20 20 6A 75 6D 70 69 66 20 70 6F 73 69 74    n;  jumpif posit
008F80:  69 76 65 68 3B 20 61 6E 64 20 6A 75 6D 70 20 69    iveh; and jump i
008F90:  66 20 6D 69 6E 75 73 2E 20 4E 6F 74 65 20 74 68    f minus. Note th
008FA0:  61 74 74 68 65 20 20 63 61 72 72 79 20 20 69 73    atthe  carry  is
008FB0:  20 20 73 74 69 6C 6C 20 20 20 6F 70 65 72 61 74      still   operat
008FC0:  69 76 65 2C 20 20 20 61 6E 64 74 68 65 72 65 66    ive,   andtheref
008FD0:  6F 72 65 2C 20 69 66 20 79 6F 75 20 64 6F 20 6E    ore, if you do n
008FE0:  6F 74 20 63 6C 65 61 72 20 69 74 20 62 65 66 6F    ot clear it befo
008FF0:  72 65 41 44 43 20 20 61 6E 64 20 53 42 43 20 20    reADC  and SBC  
009000:  74 68 65 20 20 6C 61 74 65 72 20 6A 75 6D 70 20    the  later jump 
009010:  20 63 6F 75 6C 64 20 20 62 65 75 6E 65 78 70 65     could  beunexpe
009020:  63 74 65 64 2E 20 49 6E 20 74 68 69 73 20 65 78    cted. In this ex
009030:  61 6D 70 6C 65 20 74 68 65 20 63 61 72 72 79 20    ample the carry 
009040:  69 73 6E 6F 74 20 63 6C 65 61 72 65 64 2C 20 73    isnot cleared, s
009050:  6F 20 22 6C 6F 6F 6B 20 62 65 66 6F 72 65 20 79    o "look before y
009060:  6F 75 20 6C 65 61 70 22 2E A3 20 4C 44 20 48 4C    ou leap".£ LD HL
009070:  2C 35 32 A0 20 20 4C 44 20 44 45 2C 33 33 A0 20    ,52.  LD DE,33. 
009080:  20 4C 44 20 42 21 6F 43 2C 35 A0 20 4C 4F 4F 50     LD B!oC,5. LOOP
009090:  31 20 53 42 43 20 48 4C 2C 44 45 A0 20 20 4C 44    1 SBC HL,DE.  LD
0090A0:  20 28 4C 52 45 47 29 2C 48 4C A0 20 20 4A 50 20     (LREG),HL.  JP 
0090B0:  50 2C 4C 4F 4F 50 31 A0 20 4C 4F 4F 50 32 20 41    P,LOOP1. LOOP2 A
0090C0:  44 43 20 48 4C 2C 42 43 A0 20 20 4C 44 20 28 4C    DC HL,BC.  LD (L
0090D0:  52 45 47 29 2C 48 4C A0 20 20 4A 50 20 4D 2C 4C    REG),HL.  JP M,L
0090E0:  4F 4F 50 32 A0 20 20 52 45 54 20 5A A0 20 20 4A    OOP2.  RET Z.  J
0090F0:  52 20 4C 4F 4F 50 31 A0 20 20 A0 20 4C 52 45 47    R LOOP1.  . LREG
009100:  20 20 42 49 4E 20 30 A0 20 48 52 45 47 20 20 42      BIN 0. HREG  B
009110:  49 4E 20 30 A0 20 20 A0 20 20 A0 20 62 65 72 65    IN 0.  .  . bere
009120:  70 72 65 73 65 6E 74 65 64 20 62 79 20 43 39 42    presented by C9B
009130:  38 20 68 65 78 2E A0 A0 20 43 6F 6E 76 65 72 73    8 hex... Convers
009140:  69 6F 6E 20 20 6F 66 20 20 61 20 20 68 65 78 20    ion  of  a  hex 
009150:  20 6E 75 6D 62 65 72 20 20 74 6F 20 20 69 74 73     number  to  its
009160:  64 65 63 69 6D 61 6C 20 65 71 75 69 76 61 6C 65    decimal equivale
009170:  6E 74 20 66 6F 6C 6C 6F 77 73 20 74 68 65 20 20    nt follows the  
009180:  73 74 61 6E 64 61 72 90 0A 64 63 61 6C 63 75 6C    standar..dcalcul
009190:  61 74 69 6F 6E 2E A0 A0 69 2E 65 2E 20 20 42 38    ation...i.e.  B8
0091A0:  20 68 65 78 20 3D 20 28 42 20 68 65 78 29 2A 20     hex = (B hex)* 
0091B0:  31 36 2B 20 28 38 29 2A 20 31 A0 20 20 20 20 20    16+ (8)* 1.     
0091C0:  20 20 20 20 20 20 20 20 3D 20 31 31 2A 31 36 2B            = 11*16+
0091D0:  38 3D 31 38 34 A0 A0 20 41 6C 77 61 79 73 20 72    8=184.. Always r
0091E0:  65 6D 65 6D 62 65 72 20 74 68 61 74 20 61 20 68    emember that a h
0091F0:  65 78 20 6E 75 6D 62 65 72 20 68 61 73 20 61 62    ex number has ab
009200:  61 73 65 20 6F 66 20 31 36 20 64 65 63 69 6D 61    ase of 16 decima
009210:  6C 2C 20 61 20 64 65 63 69 6D 61 6C 20 6E 75 6D    l, a decimal num
009220:  62 65 72 20 68 61 73 61 20 62 61 73 65 20 6F 66    ber hasa base of
009230:  20 31 30 20 20 61 6E 64 20 61 20 62 69 6E 61 72     10  and a binar
009240:  79 20 6E 75 6D 62 65 72 20 61 20 62 61 73 65 62    y number a baseb
009250:  61 73 65 20 32 2E A3 20 20 20 20 45 58 41 4D 50    ase 2.£    EXAMP
009260:  4C 45 53 20 4F 46 20 48 45 58 41 44 45 43 49 4D    LES OF HEXADECIM
009270:  41 4C 20 4E 4F 54 41 54 49 4F 4E A0 A0 20 4E 6F    AL NOTATION.. No
009280:  77 20 20 74 68 61 74 20 20 1A 9B 68 65 78 20 6E    w  that  ..hex n
009290:  6F 74 61 74 69 6F 6E 20 68 61 73 20 62 65 65 6E    otation has been
0092A0:  20 69 6E 74 72 6F 2D 64 75 63 65 64 20 77 65 20     intro-duced we 
0092B0:  20 63 61 6E 20 64 69 73 63 75 73 73 20 20 68 6F     can discuss  ho
0092C0:  77 20 20 74 68 65 20 63 6F 6D 70 75 74 65 72 73    w  the computers
0092D0:  74 6F 72 65 73 20 20 70 72 6F 67 72 61 6D 73 20    tores  programs 
0092E0:  20 69 6E 20 20 6D 6F 72 65 20 20 64 65 74 61 69     in  more  detai
0092F0:  6C 2E 20 20 20 41 73 61 6C 72 65 61 64 79 20 20    l.   Asalready  
009300:  20 6D 65 6E 74 69 6F 6E 65 64 2C 20 20 74 68 65     mentioned,  the
009310:  20 20 20 69 6E 73 74 72 75 63 74 69 6F 6E 73 61       instructionsa
009320:  72 65 20 20 73 74 6F 72 65 64 20 20 20 6D 65 6D    re  stored   mem
009330:  6F 72 79 20 20 61 73 20 20 6E 75 6D 62 65 72 73    ory  as  numbers
009340:  2E 20 20 53 6F 6D 65 69 6E 73 74 72 75 63 74 69    .  Someinstructi
009350:  6F 6E 73 20 20 20 6F 6E 6C 79 20 20 20 72 65 71    ons   only   req
009360:  75 69 72 65 20 20 61 20 20 73 69 6E 67 6C 65 6E    uire  a  singlen
009370:  75 6D 62 65 72 2C 20 6F 74 68 65 72 73 20 72 65    umber, others re
009380:  71 75 69 72 65 20 6D 6F 72 65 2E EB 46 20 43 6F    quire more..F Co
009390:  6C 75 6D 6E 20 32 20 6F 6E 74 68 65 20 53 69 6D    lumn 2 onthe Sim
0093A0:  75 6C 61 74 6F 72 20 64 69 73 70 6C 61 79 20 73    ulator display s
0093B0:  68 6F 77 73 20 20 74 68 65 20 20 6D 65 6D 6F 72    hows  the  memor
0093C0:  79 63 6F 6E 74 65 6E 74 73 20 66 6F 72 20 74 68    ycontents for th
0093D0:  65 20 69 6E 73 74 72 75 63 74 69 6F 6E 73 20 69    e instructions i
0093E0:  6E 20 68 65 78 2E A0 A0 20 41 6C 6C 20 74 68 65    n hex... All the
0093F0:  20 20 6E 75 6D 62 65 72 73 20 20 75 73 65 64 20      numbers  used 
009400:  20 74 6F 20 20 64 65 73 63 72 69 62 65 20 61 6E     to  describe an
009410:  69 6E 73 74 72 75 63 74 69 6F 6E 20 61 72 65 20    instruction are 
009420:  20 67 69 76 65 6E 20 69 6E 20 73 65 71 75 65 6E     given in sequen
009430:  63 65 20 61 6C 6F 6E 67 74 68 65 20 6C 69 6E 65    ce alongthe line
009440:  2E 20 20 4E 6F 74 69 63 65 20 74 68 61 74 20 6E    .  Notice that n
009450:  75 6D 62 65 72 73 20 63 61 6C 6C 65 64 20 75 70    umbers called up
009460:  69 6E 20 61 6E 20 69 6E 73 74 72 75 63 74 69 6F    in an instructio
009470:  6E 20 61 70 70 65 61 72 20 74 6F 77 61 72 64 73    n appear towards
009480:  20 74 68 65 20 65 6E 64 6F 66 20 74 68 17 15 65     the endof th..e
009490:  20 73 74 72 69 6E 67 20 20 6F 66 20 20 6E 75 6D     string  of  num
0094A0:  62 65 72 73 2E 20 54 68 65 20 20 65 61 72 6C 69    bers. The  earli
0094B0:  65 72 6E 75 6D 62 65 72 73 20 20 20 20 64 65 74    ernumbers    det
0094C0:  65 72 6D 69 6E 65 20 20 20 20 74 68 65 20 20 20    ermine    the   
0094D0:  74 79 70 65 20 20 20 20 6F 66 69 6E 73 74 72 75    type    ofinstru
0094E0:  63 74 69 6F 6E 2E 20 53 69 6E 63 65 20 74 68 65    ction. Since the
0094F0:  20 20 74 6F 74 61 6C 20 20 6E 75 6D 62 65 72 20      total  number 
009500:  6F 66 69 6E 73 74 72 75 63 74 69 6F 6E 73 20 20    ofinstructions  
009510:  20 65 78 63 65 65 64 20 20 20 32 35 36 2C 20 20     exceed   256,  
009520:  61 20 20 20 70 72 65 66 69 78 6E 75 6D 62 65 72    a   prefixnumber
009530:  20 69 73 20 75 73 65 64 20 74 6F 20 20 70 72 6F     is used to  pro
009540:  64 75 63 65 20 6F 74 68 65 72 20 73 65 74 73 20    duce other sets 
009550:  6F 66 69 6E 73 74 72 75 63 74 69 6F 6E 73 2E 20    ofinstructions. 
009560:  54 68 65 20 70 72 65 66 69 78 65 73 20 79 6F 75    The prefixes you
009570:  20 77 69 6C 6C 20 66 69 6E 64 61 72 65 20 45 44     will findare ED
009580:  2C 20 43 42 2C 20 44 44 20 61 6E 64 20 46 44 9C    , CB, DD and FD.
009590:  FA 2E A3 20 4C 75 63 6B 69 6C 79 20 61 73 73 65    ..£ Luckily asse
0095A0:  6D 62 6C 65 72 73 20 74 61 6B 65 73 20 61 63 63    mblers takes acc
0095B0:  6F 75 6E 74 20 6F 66 20 61 6C 6C 74 68 65 73 65    ount of allthese
0095C0:  20 20 63 6F 6D 70 6C 65 78 69 74 69 65 73 2C 20      complexities, 
0095D0:  20 61 6E 64 20 20 79 6F 75 20 20 77 69 6C 6C 20     and  you  will 
0095E0:  6E 6F 74 6E 65 65 64 20 20 74 6F 20 20 6C 65 61    notneed  to  lea
0095F0:  72 6E 20 20 77 68 69 63 68 20 6E 75 6D 62 65 72    rn  which number
009600:  73 20 72 65 70 72 65 73 65 6E 74 77 68 69 63 68    s representwhich
009610:  20 69 6E 73 74 72 75 63 74 69 6F 6E 73 2E A0 A0     instructions...
009620:  20 54 68 65 20 53 69 6D 75 6C 61 74 6F 72 20 20     The Simulator  
009630:  63 61 6E 20 20 62 65 20 73 77 69 74 63 68 65 64    can  be switched
009640:  20 62 65 74 77 65 65 6E 64 65 63 69 6D 61 6C 20     betweendecimal 
009650:  20 20 61 6E 64 20 20 20 68 65 78 61 64 65 63 69      and   hexadeci
009660:  6D 61 6C 20 20 64 69 73 70 6C 61 79 20 20 62 79    mal  display  by
009670:  70 72 65 73 73 69 6E 67 20 73 68 69 66 74 20 20    pressing shift  
009680:  22 54 22 2C 20 20 77 68 65 6E 20 61 20 70 72 6F    "T",  when a pro
009690:  67 A5 E2 72 61 6D 20 20 69 73 6E 6F 74 20 72 75    g..ram  isnot ru
0096A0:  6E 6E 69 6E 67 2E A3 20 4C 44 20 41 2C 32 35 48    nning.£ LD A,25H
0096B0:  A0 20 20 41 44 44 20 41 2C 41 A0 20 20 44 41 41    .  ADD A,A.  DAA
0096C0:  A0 20 20 4C 44 20 48 4C 2C 34 35 38 39 48 A0 20    .  LD HL,4589H. 
0096D0:  20 4C 44 20 44 45 2C 33 38 31 32 48 A0 20 20 4C     LD DE,3812H.  L
0096E0:  44 20 41 2C 4C A0 20 20 53 55 42 20 45 A0 20 20    D A,L.  SUB E.  
0096F0:  44 41 41 A0 20 20 4C 44 20 4C 2C 41 A0 20 20 4C    DAA.  LD L,A.  L
009700:  44 20 41 2C 48 A0 20 20 53 42 43 20 41 2C 44 A0    D A,H.  SBC A,D.
009710:  20 20 44 41 41 A0 20 20 4C 44 20 48 2C 41 A0 20      DAA.  LD H,A. 
009720:  20 52 45 54 A0 20 20 A0 20 20 A0 20 20 20 20 20     RET.  .  .     
009730:  20 42 49 4E 41 52 59 20 43 4F 44 45 44 20 44 45     BINARY CODED DE
009740:  43 49 4D 41 4C 20 4E 4F 54 41 54 49 4F 4E A0 A0    CIMAL NOTATION..
009750:  20 57 65 20 20 77 6F 75 6C 64 20 20 73 74 69 6C     We  would  stil
009760:  6C 20 20 6C 69 6B 65 20 20 74 6F 20 20 62 65 20    l  like  to  be 
009770:  20 61 62 6C 65 20 74 6F 70 65 72 66 6F 72 6D 20     able toperform 
009780:  63 61 6C 63 75 6C 61 74 69 6F 6E 73 20 20 6F 6E    calculations  on
009790:  20 64 65 08 DC 63 69 6D 61 6C 20 6E 75 6D 62 65     de..cimal numbe
0097A0:  72 73 77 69 74 68 6F 75 74 20 20 68 61 76 69 6E    rswithout  havin
0097B0:  67 20 20 74 6F 20 63 6F 6E 76 65 72 74 20 74 6F    g  to convert to
0097C0:  20 62 69 6E 61 72 79 20 6F 72 68 65 78 61 64 65     binary orhexade
0097D0:  63 69 6D 61 6C 20 66 6F 72 6D 2E 20 48 65 78 69    cimal form. Hexi
0097E0:  64 65 63 69 6D 61 6C 20 66 6F 72 6D 20 68 6F 6C    decimal form hol
0097F0:  64 73 61 20 6B 65 79 20 74 6F 20 61 20 6D 65 74    dsa key to a met
009800:  68 6F 64 20 6F 66 20 61 63 68 69 65 76 69 6E 67    hod of achieving
009810:  20 74 68 69 73 2E A0 A0 20 54 68 65 20 20 68 65     this... The  he
009820:  78 20 64 69 67 69 74 20 20 72 65 71 75 69 72 65    x digit  require
009830:  73 20 20 61 64 6A 75 73 74 6D 65 6E 74 20 74 6F    s  adjustment to
009840:  61 76 6F 69 64 20 74 68 65 20 64 69 67 69 74 73    avoid the digits
009850:  20 20 41 2D 46 2E 20 20 41 64 64 69 6E 67 20 20      A-F.  Adding  
009860:  36 20 74 6F 20 74 68 65 64 69 67 69 74 2C 20 69    6 to thedigit, i
009870:  66 20 74 68 65 73 65 20 73 79 6D 62 6F 6C 73 20    f these symbols 
009880:  61 70 70 65 61 72 2C 20 20 72 65 73 75 6C 74 73    appear,  results
009890:  69 6E 20 63 6F B8 18 72 72 65 63 74 20 61 64 6A    in co..rrect adj
0098A0:  75 73 74 6D 65 6E 74 2E A0 A0 20 54 61 6B 65 20    ustment... Take 
0098B0:  20 74 68 65 20 20 68 65 78 20 20 6E 75 6D 62 65     the  hex  numbe
0098C0:  72 20 20 43 20 20 28 3D 20 31 32 20 64 65 63 2E    r  C  (= 12 dec.
0098D0:  29 2E 41 64 64 69 6E 67 20 20 36 20 20 67 69 76    ).Adding  6  giv
0098E0:  65 73 20 20 31 38 20 20 64 65 63 69 6D 61 6C 20    es  18  decimal 
0098F0:  6F 72 20 31 32 20 68 65 78 2E 48 65 6E 63 65 20    or 12 hex.Hence 
009900:  74 68 65 20 68 65 78 20 6E 75 6D 62 65 72 20 6C    the hex number l
009910:  6F 6F 6B 73 20 20 69 64 65 6E 74 69 63 61 6C 20    ooks  identical 
009920:  74 6F 74 68 65 20 64 65 63 69 6D 61 6C 20 61 6E    tothe decimal an
009930:  73 77 65 72 20 72 65 71 75 69 72 65 64 2E A3 20    swer required.£ 
009940:  45 61 63 68 20 64 69 67 69 74 20 69 73 20 20 68    Each digit is  h
009950:  65 6C 64 20 20 69 6E 20 20 34 20 20 62 69 74 73    eld  in  4  bits
009960:  20 6F 66 20 74 68 65 72 65 67 69 73 74 65 72 2E     of theregister.
009970:  20 20 20 54 68 65 73 65 20 20 34 20 20 62 69 74       These  4  bit
009980:  73 20 61 72 65 20 63 61 6C 6C 65 64 20 20 61 6E    s are called  an
009990:  69 62 62 6C 65 2C 20 D5 AB 74 68 65 20 77 68 6F    ibble, ..the who
0099A0:  6C 65 20 38 20 62 69 74 20 77 6F 72 64 20 69 73    le 8 bit word is
0099B0:  20 74 65 72 6D 65 64 20 61 62 79 74 65 2E 20 57     termed abyte. W
0099C0:  68 6F 20 73 61 69 64 20 70 72 6F 67 72 61 6D 6D    ho said programm
0099D0:  65 72 73 20 68 61 76 65 20 6E 6F 20 73 65 6E 73    ers have no sens
0099E0:  65 6F 66 20 68 75 6D 6F 75 72 3F A0 A0 20 54 68    eof humour?.. Th
0099F0:  69 73 20 20 70 72 65 73 65 6E 74 61 74 69 6F 6E    is  presentation
009A00:  20 20 69 73 20 20 74 65 72 6D 65 64 20 20 20 42      is  termed   B
009A10:  69 6E 61 72 79 43 6F 64 65 64 20 44 65 63 69 6D    inaryCoded Decim
009A20:  61 6C 20 6F 72 20 42 43 44 2E A0 A0 20 54 68 65    al or BCD... The
009A30:  20 20 20 5A 38 30 20 20 20 20 61 63 63 6F 6D 6D       Z80    accomm
009A40:  6F 64 61 74 65 73 20 20 20 74 68 65 20 20 20 61    odates   the   a
009A50:  62 6F 76 65 61 64 6A 75 73 74 6D 65 6E 74 2C 20    boveadjustment, 
009A60:  20 77 69 74 68 20 74 68 65 20 69 6E 73 74 72 75     with the instru
009A70:  63 74 69 6F 6E 20 20 20 44 41 41 2C 6F 72 20 20    ction   DAA,or  
009A80:  44 65 63 69 6D 61 6C 20 20 41 64 6A 75 73 74 20    Decimal  Adjust 
009A90:  20 41 63 63 75 6D 75 6C 61 B2 D6 74 6F 72 2E 20     Accumula..tor. 
009AA0:  20 20 54 68 69 73 69 6E 73 74 72 75 63 74 69 6F      Thisinstructio
009AB0:  6E 20 20 69 73 20 20 75 73 65 64 20 20 61 66 74    n  is  used  aft
009AC0:  65 72 20 20 61 6E 20 20 38 20 20 62 69 74 41 44    er  an  8  bitAD
009AD0:  44 2C 20 20 41 44 43 2C 20 20 53 55 42 2C 20 20    D,  ADC,  SUB,  
009AE0:  6F 72 20 20 53 42 43 20 20 74 6F 20 61 64 6A 75    or  SBC  to adju
009AF0:  73 74 20 74 68 65 41 63 63 75 6D 75 6C 61 74 6F    st theAccumulato
009B00:  72 20 63 6F 6E 74 65 6E 74 73 20 62 79 20 61 64    r contents by ad
009B10:  64 69 6E 67 20 36 20 20 74 6F 20 74 68 65 6E 69    ding 6  to theni
009B20:  62 62 6C 65 2C 20 20 69 66 20 65 69 74 68 65 72    bble,  if either
009B30:  20 20 6E 69 62 62 6C 65 20 69 6E 20 74 68 65 20      nibble in the 
009B40:  61 6E 73 77 65 72 69 73 20 61 62 6F 76 65 20 39    answeris above 9
009B50:  2E A3 20 54 6F 20 70 65 72 66 6F 72 6D 20 20 74    .£ To perform  t
009B60:  68 69 73 20 6F 70 65 72 61 74 69 6F 6E 20 74 68    his operation th
009B70:  65 20 5A 38 30 20 75 73 65 73 74 77 6F 20 66 75    e Z80 usestwo fu
009B80:  72 74 68 65 72 20 66 6C 61 67 73 2C 20 74 68 65    rther flags, the
009B90:  20 20 48 20 20 66 6C 61 67 20 28 43 8F 20 61 20      H  flag (C. a 
009BA0:  48 61 6C 66 63 61 72 72 79 20 20 62 65 74 77 65    Halfcarry  betwe
009BB0:  65 6E 20 20 6E 69 62 62 6C 65 73 20 29 2C 20 20    en  nibbles ),  
009BC0:  61 6E 64 20 20 4E 20 20 66 6C 61 67 28 73 75 62    and  N  flag(sub
009BD0:  74 72 61 63 74 20 20 69 6E 73 74 72 75 63 74 69    tract  instructi
009BE0:  6F 6E 20 20 70 65 72 66 6F 72 6D 65 64 20 6C 61    on  performed la
009BF0:  73 74 29 2E 53 69 6E 63 65 20 20 74 68 65 73 65    st).Since  these
009C00:  20 20 66 6C 61 67 73 20 20 63 61 6E 6E 6F 74 20      flags  cannot 
009C10:  62 65 20 74 65 73 74 65 64 20 61 73 70 61 72 74    be tested aspart
009C20:  20 6F 66 20 61 20 63 6F 6E 64 69 74 69 6F 6E 61     of a conditiona
009C30:  6C 20 6A 75 6D 70 20 65 74 63 2E 20 74 68 65 79    l jump etc. they
009C40:  20 61 72 65 6F 66 20 6C 69 74 74 6C 65 20 75 73     areof little us
009C50:  65 2E A3 20 20 20 20 20 45 58 41 4D 50 4C 45 53    e.£     EXAMPLES
009C60:  20 4F 46 20 42 2E 43 2E 44 2E 20 4E 4F 54 41 54     OF B.C.D. NOTAT
009C70:  49 4F 4E A0 A0 20 54 68 65 73 65 20 65 78 61 6D    ION.. These exam
009C80:  70 6C 65 73 20 73 68 6F 77 20 73 69 6D 70 6C 65    ples show simple
009C90:  20 61 64 64 69 74 69 6F 6E 20 61 6E 64 72 75 73     addition andrus
009CA0:  75 62 74 72 61 63 74 69 6F 6E 20 69 6E 20 20 42    ubtraction in  B
009CB0:  43 44 20 66 6F 72 6D 61 74 2E 20 20 52 65 6D 65    CD format.  Reme
009CC0:  6D 62 65 72 20 74 6F 6B 65 65 70 20 20 69 6E 20    mber tokeep  in 
009CD0:  20 20 48 65 78 20 20 64 69 73 70 6C 61 79 20 20      Hex  display  
009CE0:  20 6D 6F 64 65 20 20 20 6F 72 20 20 74 68 65 69     mode   or  thei
009CF0:  6C 6C 75 73 74 72 61 74 69 6F 6E 73 20 77 69 6C    llustrations wil
009D00:  6C 20 6E 6F 74 20 61 70 70 65 61 72 20 69 6E 20    l not appear in 
009D10:  42 43 44 2E A3 20 4C 44 20 41 2C 32 35 48 A0 20    BCD.£ LD A,25H. 
009D20:  20 4C 44 20 48 4C 2C 53 54 4F 52 45 A0 20 20 4C     LD HL,STORE.  L
009D30:  44 20 44 45 2C 32 34 36 38 48 A0 20 20 49 4E 43    D DE,2468H.  INC
009D40:  20 28 48 4C 29 A0 20 20 52 45 54 A0 20 20 A0 20     (HL).  RET.  . 
009D50:  20 42 49 4E 20 36 35 48 A0 20 20 42 49 4E 20 38     BIN 65H.  BIN 8
009D60:  37 48 A0 20 20 42 49 4E 20 39 41 48 A0 20 20 42    7H.  BIN 9AH.  B
009D70:  49 4E 20 44 46 48 A0 20 20 42 49 4E 20 46 46 48    IN DFH.  BIN FFH
009D80:  A0 20 20 42 49 4E 20 36 34 48 A0 20 20 A0 20 53    .  BIN 64H.  . S
009D90:  54 4F 52 45 20 44 45 46 42 20 36 34 A0 20 20 87    TORE DEFB 64.  .
009DA0:  C2 A0 20 20 A0 20 20 20 50 4F 53 49 54 49 56 45    ..  .   POSITIVE
009DB0:  20 41 4E 44 20 4E 45 47 41 54 49 56 45 20 4E 55     AND NEGATIVE NU
009DC0:  4D 42 45 52 20 4E 4F 54 41 54 49 4F 4E A0 A0 20    MBER NOTATION.. 
009DD0:  53 6F 20 66 61 72 20 77 65 20 68 61 76 65 20 6F    So far we have o
009DE0:  6E 6C 79 20 64 65 61 6C 74 20 77 69 74 68 20 70    nly dealt with p
009DF0:  6F 73 69 74 69 76 65 6E 75 6D 62 65 72 73 2E 20    ositivenumbers. 
009E00:  20 49 66 20 77 65 20 68 61 64 20 74 61 6B 65 6E     If we had taken
009E10:  20 20 36 20 20 66 72 6F 6D 20 20 35 20 77 65 77      6  from  5 wew
009E20:  6F 75 6C 64 20 65 6E 64 20 20 75 70 20 77 69 74    ould end  up wit
009E30:  68 20 20 74 68 65 20 61 6E 73 77 65 72 20 32 35    h  the answer 25
009E40:  35 20 20 77 69 74 68 63 61 72 72 79 20 73 65 74    5  withcarry set
009E50:  2E 20 54 68 65 72 65 20 69 73 20 61 6E 20 69 6E    . There is an in
009E60:  74 65 72 70 72 65 74 61 74 69 6F 6E 20 6F 66 6E    terpretation ofn
009E70:  75 6D 62 65 72 73 20 20 74 68 61 74 20 61 6C 6C    umbers  that all
009E80:  6F 77 73 20 75 73 20 74 6F 20 63 6F 6E 73 69 64    ows us to consid
009E90:  65 72 20 74 68 69 73 61 6E 73 77 65 72 20 61 73    er thisanswer as
009EA0:  20 B8 DF 74 68 65 20 6E 65 67 61 74 69 76 65 20     ..the negative 
009EB0:  6E 75 6D 62 65 72 20 2D 31 2E A0 A0 20 49 6E 20    number -1... In 
009EC0:  20 74 68 69 73 20 20 69 6E 74 65 72 70 72 65 74     this  interpret
009ED0:  61 74 69 6F 6E 20 20 2D 31 20 6D 75 73 74 20 65    ation  -1 must e
009EE0:  71 75 61 6C 32 35 35 20 6F 72 20 31 31 31 31 31    qual255 or 11111
009EF0:  31 31 31 2C 20 6F 72 20 74 68 65 20 70 72 6F 63    111, or the proc
009F00:  65 73 73 6F 72 20 20 77 6F 75 6C 64 6E 6F 74 20    essor  wouldnot 
009F10:  62 65 20 61 62 6C 65 20 74 6F 20 74 61 6B 65 20    be able to take 
009F20:  20 36 20 20 66 72 6F 6D 20 20 35 20 20 61 6E 64     6  from  5  and
009F30:  20 67 65 74 74 68 65 20 72 69 67 68 74 20 61 6E     getthe right an
009F40:  73 77 65 72 2E 20 46 75 72 74 68 65 72 20 35 2D    swer. Further 5-
009F50:  37 20 3D 2D 32 20 6F 72 20 32 35 34 6F 72 20 31    7 =-2 or 254or 1
009F60:  31 31 31 31 31 31 30 2E 20 42 69 74 20 37 2C 20    1111110. Bit 7, 
009F70:  74 68 65 20 6D 6F 73 74 20 73 69 67 6E 69 66 69    the most signifi
009F80:  63 61 6E 74 62 69 74 2C 20 72 65 70 72 65 73 65    cantbit, represe
009F90:  6E 74 73 20 20 74 68 65 20 73 69 67 6E 20 28 20    nts  the sign ( 
009FA0:  2B 20 6F 40 51 72 20 2D 20 29 20 20 6F 66 74 68    + o@Qr - )  ofth
009FB0:  65 20 6E 75 6D 62 65 72 2E 20 57 68 65 6E 20 62    e number. When b
009FC0:  69 74 20 37 20 69 73 20 22 31 22 20 74 68 65 20    it 7 is "1" the 
009FD0:  6E 75 6D 62 65 72 69 73 20 6E 65 67 61 74 69 76    numberis negativ
009FE0:  65 2C 20 20 61 6E 64 20 77 68 65 6E 20 22 30 22    e,  and when "0"
009FF0:  20 74 68 65 20 6E 75 6D 62 65 72 20 69 73 70 6F     the number ispo
00A000:  73 69 74 69 76 65 2E A3 20 41 20 20 75 73 65 66    sitive.£ A  usef
00A010:  75 6C 20 6F 70 65 72 61 74 69 6F 6E 20 77 6F 75    ul operation wou
00A020:  6C 64 20 20 62 65 20 74 6F 20 6D 61 6B 65 20 61    ld  be to make a
00A030:  70 6F 73 69 74 69 76 65 20 6E 75 6D 62 65 72 20    positive number 
00A040:  6E 65 67 61 74 69 76 65 2E 20 43 68 61 6E 67 69    negative. Changi
00A050:  6E 67 20 62 69 74 20 37 64 6F 65 73 20 20 6E 6F    ng bit 7does  no
00A060:  74 20 20 64 6F 20 20 74 68 69 73 2E 20 20 54 61    t  do  this.  Ta
00A070:  6B 65 20 74 68 65 20 20 70 6F 73 69 74 69 76 65    ke the  positive
00A080:  6E 75 6D 62 65 72 20 20 32 20 6F 72 20 20 30 30    number  2 or  00
00A090:  30 30 30 30 31 30 20 20 61 6E 64 20 69 74 73 20    000010  and its 
00A0A0:  6E 65 67 61 74 9C 8E 69 76 65 65 71 75 69 76 61    negat..iveequiva
00A0B0:  6C 65 6E 74 20 2D 32 20 20 6F 72 20 31 31 31 31    lent -2  or 1111
00A0C0:  31 31 31 30 20 20 66 6F 72 20 65 78 61 6D 70 6C    1110  for exampl
00A0D0:  65 2E 49 6E 76 65 72 74 69 6E 67 20 61 6C 6C 20    e.Inverting all 
00A0E0:  62 69 74 73 20 6F 66 20 74 68 65 20 20 62 69 6E    bits of the  bin
00A0F0:  61 72 79 20 6E 75 6D 62 65 72 6F 66 20 20 2B 32    ary numberof  +2
00A100:  20 20 67 69 76 65 73 20 20 31 31 31 31 31 31 30      gives  1111110
00A110:  31 2C 20 77 68 69 63 68 20 69 73 20 31 20 6C 65    1, which is 1 le
00A120:  73 73 74 68 61 6E 20 74 68 61 74 20 20 66 6F 72    ssthan that  for
00A130:  20 2D 32 2E A0 A0 48 65 6E 63 65 20 74 6F 20 6D     -2...Hence to m
00A140:  61 6B 65 20 61 20 70 6F 73 69 74 69 76 65 20 6E    ake a positive n
00A150:  75 6D 62 65 72 20 6E 65 67 61 74 69 76 65 77 65    umber negativewe
00A160:  20 69 6E 76 65 72 74 20 61 6C 6C 20 69 74 73 20     invert all its 
00A170:  62 69 6E 61 72 79 20 62 69 74 73 2C 20 20 6B 6E    binary bits,  kn
00A180:  6F 77 6E 20 61 73 43 6F 6D 70 6C 69 6D 65 6E 74    own asCompliment
00A190:  69 6E 67 2C 20 61 6E 64 20 61 64 64 20 20 31 2E    ing, and add  1.
00A1A0:  20 20 54 68 65 20 6E 7A 68 6F 74 61 74 69 6F 6E      The nzhotation
00A1B0:  69 73 20 67 65 6E 65 72 61 6C 6C 79 20 74 65 72    is generally ter
00A1C0:  6D 65 64 20 32 73 20 63 6F 6D 70 6C 65 6D 65 6E    med 2s complemen
00A1D0:  74 A3 69 2E 65 2E 20 20 20 20 20 20 20 20 20 30    t£i.e.         0
00A1E0:  20 30 20 30 20 30 20 30 20 31 20 30 20 31 20 20     0 0 0 0 1 0 1  
00A1F0:  20 20 2B 35 A0 20 20 20 20 69 6E 76 65 72 74 20      +5.    invert 
00A200:  20 20 31 20 31 20 31 20 31 20 31 20 30 20 31 20      1 1 1 1 1 0 1 
00A210:  30 A0 20 20 61 64 64 20 31 20 20 20 20 20 20 31    0.  add 1      1
00A220:  20 31 20 31 20 31 20 31 20 30 20 31 20 31 20 20     1 1 1 1 0 1 1  
00A230:  20 20 2D 35 A0 20 20 20 20 69 6E 76 65 72 74 20      -5.    invert 
00A240:  20 20 30 20 30 20 30 20 30 20 30 20 31 20 30 20      0 0 0 0 0 1 0 
00A250:  30 A0 20 20 61 64 64 20 31 20 20 20 20 20 20 30    0.  add 1      0
00A260:  20 30 20 30 20 30 20 30 20 31 20 30 20 31 20 20     0 0 0 0 1 0 1  
00A270:  20 20 2B 35 A0 A0 20 54 68 65 20 20 6F 70 65 72      +5.. The  oper
00A280:  61 74 69 6F 6E 20 20 6C 75 63 6B 69 6C 79 20 20    ation  luckily  
00A290:  61 6C 73 6F 20 20 6D 61 6B 65 73 20 20 61 6E 65    also  makes  ane
00A2A0:  67 61 74 69 76 65 20 20 20 FF 60 6E 75 6D 62 65    gative   .`numbe
00A2B0:  72 20 20 20 20 70 6F 73 69 74 69 76 65 2E 20 20    r    positive.  
00A2C0:  20 41 20 20 76 65 72 79 69 6D 70 6F 72 74 61 6E     A  veryimportan
00A2D0:  74 20 70 6F 69 6E 74 2E A0 A0 20 54 68 65 20 6C    t point... The l
00A2E0:  61 72 67 65 73 74 20 70 6F 73 69 74 69 76 65 20    argest positive 
00A2F0:  6E 75 6D 62 65 72 20 77 65 20 63 61 6E 20 68 6F    number we can ho
00A300:  6C 64 69 6E 20 20 61 20 20 20 73 69 6E 67 6C 65    ldin  a   single
00A310:  20 20 20 72 65 67 69 73 74 65 72 2C 20 20 75 73       register,  us
00A320:  69 6E 67 20 20 20 74 68 69 73 6E 6F 74 61 74 69    ing   thisnotati
00A330:  6F 6E 20 69 73 20 20 30 31 31 31 31 31 31 31 20    on is  01111111 
00A340:  20 20 6F 72 20 20 31 32 37 20 20 61 6E 64 20 74      or  127  and t
00A350:  68 65 6C 61 72 67 65 73 74 20 20 6E 65 67 61 74    helargest  negat
00A360:  69 76 65 20 20 20 6E 75 6D 62 65 72 20 20 31 30    ive   number  10
00A370:  30 30 30 30 30 30 20 20 6F 72 2D 31 32 38 2E A3    000000  or-128.£
00A380:  20 54 68 65 20 20 5A 38 30 20 20 68 61 73 20 74     The  Z80  has t
00A390:  77 6F 20 69 6E 73 74 72 75 63 74 69 6F 6E 73 20    wo instructions 
00A3A0:  74 68 61 74 20 6D 61 79 62 65 20 A2 2D 75 73 65    that maybe .-use
00A3B0:  64 20 66 6F 72 20 74 68 65 73 65 20 6F 70 65 72    d for these oper
00A3C0:  61 74 69 6F 6E 73 A0 A0 20 43 50 4C 20 20 20 63    ations.. CPL   c
00A3D0:  6F 6D 70 6C 65 6D 65 6E 74 73 20 20 20 20 6F 72    omplements    or
00A3E0:  20 20 20 69 6E 76 65 72 74 73 20 20 20 74 68 65       inverts   the
00A3F0:  20 20 20 20 20 20 20 63 6F 6E 74 65 6E 74 73 20           contents 
00A400:  6F 66 20 74 68 65 20 41 63 63 75 6D 75 6C 61 74    of the Accumulat
00A410:  6F 72 2E A0 A0 20 4E 45 47 20 20 20 6E 65 67 61    or... NEG   nega
00A420:  74 65 73 2C 20 20 6F 72 20 6D 61 6B 65 73 20 20    tes,  or makes  
00A430:  6E 65 67 61 74 69 76 65 2C 20 74 68 65 20 20 20    negative, the   
00A440:  20 20 20 20 63 6F 6E 74 65 6E 74 73 20 20 6F 66        contents  of
00A450:  20 20 74 68 65 20 20 41 63 63 75 6D 75 6C 61 74      the  Accumulat
00A460:  6F 72 20 62 79 20 20 20 20 20 20 20 63 6F 6D 70    or by       comp
00A470:  6C 65 6D 65 6E 74 69 6E 67 20 61 6E 64 20 61 64    lementing and ad
00A480:  64 69 6E 67 20 31 20 69 6E 20 6F 6E 65 20 20 20    ding 1 in one   
00A490:  20 20 20 20 6F 70 65 72 61 74 69 6F 6E 2E A0 A0        operation...
00A4A0:  20 41 20 53 69 67 6E 20 66 6C 61 67 20 46 52 28     A Sign flag FR(
00A4B0:  53 29 20 69 73 20 70 72 6F 76 69 64 65 64 20 6F    S) is provided o
00A4C0:  6E 20 74 68 65 20 5A 38 30 2E 49 74 20 64 75 70    n the Z80.It dup
00A4D0:  6C 69 63 61 74 65 73 20 20 74 68 65 20 73 69 67    licates  the sig
00A4E0:  6E 20 28 20 62 69 74 20 37 20 29 20 6F 66 20 74    n ( bit 7 ) of t
00A4F0:  68 65 61 6E 73 77 65 72 20 61 66 74 65 72 20 61    heanswer after a
00A500:  6E 79 20 61 72 69 74 68 6D 65 74 69 63 20 6F 70    ny arithmetic op
00A510:  65 72 61 74 69 6F 6E 20 6F 6E 74 68 65 20 41 63    eration onthe Ac
00A520:  63 75 6D 75 6C 61 74 6F 72 2E 20 20 54 68 65 20    cumulator.  The 
00A530:  20 73 69 67 6E 20 20 66 6C 61 67 20 69 73 20 22     sign  flag is "
00A540:  30 22 66 6F 72 20 20 61 20 20 70 6F 73 69 74 69    0"for  a  positi
00A550:  76 65 20 20 72 65 73 75 6C 74 20 20 61 6E 64 20    ve  result  and 
00A560:  20 22 31 22 20 66 6F 72 20 61 6E 65 67 61 74 69     "1" for anegati
00A570:  76 65 20 72 65 73 75 6C 74 2E A3 20 57 68 65 6E    ve result.£ When
00A580:  20 70 65 72 66 6F 72 6D 69 6E 67 20 20 61 72 69     performing  ari
00A590:  74 68 6D 65 74 69 63 20 20 6F 70 65 72 61 74 69    thmetic  operati
00A5A0:  6F 6E 73 77 68 69 63 68 20 20 77 65 20 20 77 A4    onswhich  we  w.
00A5B0:  87 69 73 68 20 20 74 6F 20 69 6E 74 65 72 70 72    .ish  to interpr
00A5C0:  65 74 20 77 69 74 68 69 6E 20 74 68 65 72 61 6E    et within theran
00A5D0:  67 65 20 20 2D 31 32 38 20 74 6F 20 2B 31 32 37    ge  -128 to +127
00A5E0:  2C 20 74 68 65 20 43 61 72 72 79 20 20 66 6C 61    , the Carry  fla
00A5F0:  67 20 20 6E 6F 6C 6F 6E 67 65 72 20 20 73 69 67    g  nolonger  sig
00A600:  6E 61 6C 73 20 20 61 6E 20 6F 75 74 20 6F 66 20    nals  an out of 
00A610:  72 61 6E 67 65 20 72 65 73 75 6C 74 2E 48 6F 77    range result.How
00A620:  65 76 65 72 20 61 6E 6F 74 68 65 72 20 66 6C 61    ever another fla
00A630:  67 2C 20 74 68 65 20 6F 76 65 72 66 6C 6F 77 20    g, the overflow 
00A640:  28 50 2F 56 29 66 6C 61 67 20 20 64 6F 65 73 2E    (P/V)flag  does.
00A650:  20 20 49 74 20 20 69 73 20 20 61 20 20 22 31 22      It  is  a  "1"
00A660:  20 77 68 65 6E 65 76 65 72 20 74 68 65 61 6E 73     whenever theans
00A670:  77 65 72 20 69 73 20 6F 75 74 73 69 64 65 20 74    wer is outside t
00A680:  68 65 20 72 61 6E 67 65 20 2D 31 32 38 20 74 6F    he range -128 to
00A690:  20 2B 31 32 37 61 6E 64 20 20 22 30 22 20 20 77     +127and  "0"  w
00A6A0:  69 74 68 69 6E 20 20 20 74 68 65 20 20 20 72 61    ithin   the   ra
00A6B0:  6E D5 E9 67 65 2E 20 20 20 49 74 20 20 69 73 65    n..ge.   It  ise
00A6C0:  66 66 65 63 74 69 76 65 6C 79 20 20 61 20 20 63    ffectively  a  c
00A6D0:  61 72 72 79 20 20 69 6E 74 6F 20 20 62 69 74 20    arry  into  bit 
00A6E0:  37 20 77 68 69 63 68 77 6F 75 6C 64 20 6D 61 6B    7 whichwould mak
00A6F0:  65 20 74 68 65 20 73 69 67 6E 20 62 69 74 20 69    e the sign bit i
00A700:  6E 63 6F 72 72 65 63 74 2E A3 20 54 68 65 72 65    ncorrect.£ There
00A710:  20 20 69 73 20 20 6E 6F 20 20 72 65 61 73 6F 6E      is  no  reason
00A720:  20 66 6F 72 20 73 74 69 63 6B 69 6E 67 20 74 6F     for sticking to
00A730:  20 38 62 69 74 73 20 20 75 73 69 6E 67 20 74 68     8bits  using th
00A740:  69 73 20 6D 65 74 68 6F 64 2E 20 20 53 6F 20 6C    is method.  So l
00A750:  6F 6E 67 20 61 73 20 74 68 65 6E 75 6D 62 65 72    ong as thenumber
00A760:  20 6F 66 20 20 62 69 74 73 20 69 73 20 20 73 75     of  bits is  su
00A770:  66 66 69 63 69 65 6E 74 20 20 61 6E 64 20 20 74    fficient  and  t
00A780:  68 65 6D 6F 73 74 20 20 73 69 67 6E 69 66 69 63    hemost  signific
00A790:  61 6E 74 20 20 62 69 74 20 20 69 73 20 20 74 61    ant  bit  is  ta
00A7A0:  6B 65 6E 20 61 73 20 74 68 65 73 69 67 6E 20 20    ken as thesign  
00A7B0:  62 69 74 03 EF 20 20 61 6E 79 20 73 69 7A 65 20    bit..  any size 
00A7C0:  70 6F 73 69 74 69 76 65 20 6F 72 20 6E 65 67 61    positive or nega
00A7D0:  74 69 76 65 6E 75 6D 62 65 72 20 63 61 6E 20 62    tivenumber can b
00A7E0:  65 20 72 65 70 72 65 73 65 6E 74 65 64 2E A0 A0    e represented...
00A7F0:  20 50 65 72 66 6F 72 6D 69 6E 67 20 61 20 73 69     Performing a si
00A800:  6D 69 6C 61 72 20 63 61 6C 63 75 6C 61 74 69 6F    milar calculatio
00A810:  6E 20 74 6F 20 74 68 65 61 62 6F 76 65 20 20 77    n to theabove  w
00A820:  65 20 63 61 6E 20 20 73 68 6F 77 20 74 68 61 74    e can  show that
00A830:  20 61 20 72 65 67 69 73 74 65 72 20 70 61 69 72     a register pair
00A840:  63 61 6E 20 20 72 65 70 72 65 73 65 6E 74 20 20    can  represent  
00A850:  61 20 20 6E 75 6D 62 65 72 20 20 69 6E 20 74 68    a  number  in th
00A860:  65 20 20 72 61 6E 67 65 2B 33 32 37 36 37 20 74    e  range+32767 t
00A870:  6F 20 2D 33 32 37 36 38 2E A0 A0 20 54 68 65 20    o -32768... The 
00A880:  20 53 69 67 6E 20 61 6E 64 20 20 6F 76 65 72 66     Sign and  overf
00A890:  6C 6F 77 20 20 66 6C 61 67 73 20 61 72 65 20 61    low  flags are a
00A8A0:  6C 73 6F 6F 70 65 72 61 74 69 76 65 20 61 66 74    lsooperative aft
00A8B0:  65 72 20 20 41 76 5B 44 43 20 61 6E 64 20 53 42    er  Av[DC and SB
00A8C0:  43 20 69 6E 73 74 72 75 63 74 69 6F 6E 6F 6E 20    C instructionon 
00A8D0:  74 68 65 20 48 4C 20 72 65 67 69 73 74 65 72 2E    the HL register.
00A8E0:  20 49 74 20 72 65 66 6C 65 63 74 73 20 74 68 65     It reflects the
00A8F0:  20 31 35 74 68 62 69 74 20 28 6F 72 20 62 69 74     15thbit (or bit
00A900:  20 37 20 6F 66 20 48 20 72 65 67 69 73 74 65 72     7 of H register
00A910:  29 20 2E A3 20 49 74 20 69 73 20 69 6D 70 6F 72    ) .£ It is impor
00A920:  74 61 6E 74 20 20 74 6F 20 20 72 65 6D 65 6D 62    tant  to  rememb
00A930:  65 72 20 20 74 68 61 74 20 74 68 65 5A 65 72 6F    er  that theZero
00A940:  2C 20 20 43 61 72 72 79 2C 20 20 53 69 67 6E 2C    ,  Carry,  Sign,
00A950:  20 61 6E 64 20 20 6F 76 65 72 66 6C 6F 77 20 66     and  overflow f
00A960:  6C 61 67 73 61 72 65 20 61 6C 77 61 79 73 20 6F    lagsare always o
00A970:  70 65 72 61 74 69 76 65 20 20 61 66 74 65 72 20    perative  after 
00A980:  20 61 6E 20 20 20 38 20 20 62 69 74 61 72 69 74     an   8  bitarit
00A990:  68 6D 65 74 69 63 20 20 69 6E 73 74 72 75 63 74    hmetic  instruct
00A9A0:  69 6F 6E 20 20 20 6F 72 20 20 61 20 20 31 36 20    ion   or  a  16 
00A9B0:  20 62 69 74 61 64 64 14 8F 69 74 69 6F 6E 20 20     bitadd..ition  
00A9C0:  20 69 6E 76 6F 6C 76 69 6E 67 20 20 20 74 68 65     involving   the
00A9D0:  20 20 43 61 72 72 79 2E 20 20 59 6F 75 72 69 6E      Carry.  Yourin
00A9E0:  74 65 72 70 72 65 74 61 74 69 6F 6E 20 6F 66 20    terpretation of 
00A9F0:  74 68 65 20 20 72 65 73 75 6C 74 20 64 65 74 65    the  result dete
00AA00:  72 6D 69 6E 65 73 69 6E 20 20 20 77 68 69 63 68    rminesin   which
00AA10:  20 20 20 66 6C 61 67 28 73 29 20 20 20 79 6F 75       flag(s)   you
00AA20:  20 20 20 73 68 6F 75 6C 64 20 20 20 62 65 69 6E       should   bein
00AA30:  74 65 72 65 73 74 65 64 20 69 6E 2E A3 20 20 20    terested in.£   
00AA40:  20 45 58 41 4D 50 4C 45 53 20 4F 46 20 2B 56 45     EXAMPLES OF +VE
00AA50:  20 41 4E 44 20 2D 56 45 20 4E 4F 54 41 54 49 4F     AND -VE NOTATIO
00AA60:  4E A0 A0 20 41 6C 74 68 6F 75 67 68 20 20 74 68    N.. Although  th
00AA70:  65 73 65 20 20 65 78 61 6D 70 6C 65 73 20 20 61    ese  examples  a
00AA80:  70 70 65 61 72 20 74 6F 20 62 65 61 6C 6C 20 70    ppear to beall p
00AA90:  6F 73 69 74 69 76 65 2C 20 74 68 65 79 20 63 61    ositive, they ca
00AAA0:  6E 20 62 65 20 76 69 65 77 65 64 20 65 71 75 61    n be viewed equa
00AAB0:  6C 6C 79 61 73 20 20 6E 65 65 25 67 61 74 69 76    llyas  nee%gativ
00AAC0:  65 20 20 77 68 65 72 65 20 61 70 70 72 6F 70 72    e  where appropr
00AAD0:  69 61 74 65 20 61 6E 64 20 20 74 68 65 53 69 67    iate and  theSig
00AAE0:  6E 20 20 20 61 6E 64 20 20 20 6F 76 65 72 66 6C    n   and   overfl
00AAF0:  6F 77 20 20 20 66 6C 61 67 73 20 20 20 6F 62 73    ow   flags   obs
00AB00:  65 72 76 65 64 6F 70 65 72 61 74 69 6E 67 2E A0    ervedoperating..
00AB10:  A0 20 52 65 6D 65 6D 62 65 72 20 20 61 20 20 20    . Remember  a   
00AB20:  6E 75 6D 62 65 72 20 20 20 61 62 6F 76 65 20 20    number   above  
00AB30:  20 31 32 38 20 20 20 69 73 6E 65 67 61 74 69 76     128   isnegativ
00AB40:  65 2E 20 53 69 6E 63 65 20 61 6C 6C 20 74 68 65    e. Since all the
00AB50:  20 6E 65 67 61 74 69 76 65 20 6E 75 6D 62 65 72     negative number
00AB60:  73 69 6E 20 74 68 65 20 65 78 61 6D 70 6C 65 73    sin the examples
00AB70:  20 61 72 65 20 73 6D 61 6C 6C 2C 20 20 74 68 65     are small,  the
00AB80:  79 20 20 63 61 6E 20 62 65 73 65 65 6E 20 71 75    y  can beseen qu
00AB90:  69 63 6B 6C 79 20 61 6E 64 20 73 69 6D 70 6C 79    ickly and simply
00ABA0:  20 62 65 20 63 6F 6E 76 65 72 74 65 64 20 20 62     be converted  b
00ABB0:  79 73 75 62 74 72 61 63 74 69 6E 7F 53 67 20 74    ysubtractin.Sg t
00ABC0:  68 65 20 6E 75 6D 62 65 72 20 66 72 6F 6D 20 32    he number from 2
00ABD0:  35 36 2E A0 A0 20 69 2E 65 2E 20 20 2D 32 20 20    56... i.e.  -2  
00ABE0:  69 73 20 65 71 75 69 76 61 6C 65 6E 74 20 74 6F    is equivalent to
00ABF0:  20 32 35 34 20 65 74 63 2E A3 20 4C 44 20 41 2C     254 etc.£ LD A,
00AC00:  32 35 34 A0 20 20 4E 45 47 A0 20 20 4E 45 47 A0    254.  NEG.  NEG.
00AC10:  20 20 41 44 44 20 41 2C 32 A0 20 20 49 4E 43 20      ADD A,2.  INC 
00AC20:  41 A0 20 20 4C 44 20 48 4C 2C 32 A0 20 20 4C 44    A.  LD HL,2.  LD
00AC30:  20 44 45 2C 46 46 46 45 48 A0 20 20 41 44 44 20     DE,FFFEH.  ADD 
00AC40:  48 4C 2C 44 45 A0 20 20 43 50 4C A0 20 20 4C 44    HL,DE.  CPL.  LD
00AC50:  20 48 4C 2C 53 54 4F 52 45 A0 20 20 4C 44 20 28     HL,STORE.  LD (
00AC60:  48 4C 29 2C 37 46 48 A0 20 20 49 4E 43 20 28 48    HL),7FH.  INC (H
00AC70:  4C 29 A0 20 20 52 45 54 A0 20 20 A0 20 53 54 4F    L).  RET.  . STO
00AC80:  52 45 20 42 49 4E 20 30 A0 20 20 A0 20 38 38 12    RE BIN 0.  . 88.
00AC90:  7C 90 28 24 22 38 38 90 7C 12 28 48 88 00 3C 18    |.($"88.|.(H..<.
00ACA0:  3C 3C 3C 18 00 3C FF FF 18 0C 18 30 18 18 3C 7E    <<<..<.....0..<~
00ACB0:  18 18 7E 3C 18 00 24 66 FF 66 24 00 00 2F 20 00    ..~<..$f.f$../ .
00ACC0:  C9 C9 C9 C9 C9 C9 C9 C9 C9 C9 C9 C9 C9 C9 C9 C9    ................
00ACD0:  C9 C9 C9 C9 C9 C9 C9 C9 C9 C9 C9 00 FF 00 00 FF    ................
00ACE0:  00 00 00 84 FF FF 00 00 00 3F 88 80 03 00 00 FF    .........?......
00ACF0:  FF 00 00 00 00 00 00 FF FF 00 08 79 C8 FD 00 FF    ...........y....
00AD00:  FF 00 00 FF FF 00 08 79 C8 FD 00 FF FF 00 00 FF    .......y........
00AD10:  FF 00 08 79 C8 FD 00 FF FF 00 00 FF FF 00 00 FF    ...y............
00AD20:  FF 00 00 00 02 79 C8 FD FF 00 00 FF FF 00 00 FF    .....y..........
00AD30:  FF 00 00 FF FF 00 04 79 C8 FD 00 FF FF 00 00 FF    .......y........
00AD40:  FF 00 00 FF DF 00 00 00 08 79 C8 FD FF 00 00 FF    .........y......
00AD50:  FF 00 00 FF FF 00 00 FF FF 00 10 79 C8 FD 00 FF    ...........y....
00AD60:  FF 00 00 32 00 76 65 20 22 54 45 58 54 32 22 2C    ...2.ve "TEXT2",
00AD70:  42 2C 26 35 38 30 30 2C 26 35 35 30 30 20 00 00    B,&5800,&5500 ..
00AD80:  54 45 52 22 00 61 00 64 00 30 30 31 00 00 37 39    TER".a.d.001..79
00AD90:  2C 26 65 64 2C 26 37 38 2C 26 63 62 2C 26 34 37    ,&ed,&78,&cb,&47
00ADA0:  00 26 31 62 2C 26 37 61 2C 26 42 33 20 00 66 2C    .&1b,&7a,&B3 .f,
00ADB0:  26 30 00 FF FF 00 00 FF FF 00 00 FF FF 00 00 7B    &0.............{
00ADC0:  B8 FF FF FF FF                                     .....
RESULT OF SEARCH :
PRO=48   CHEA=0   COD=6   MUSI=0   COP=1   GRA=25   WRIT=0   198=0   199=0   STARTER=0   KBI=0   CAAV=0   L.TOURNIER=0  
 (& cs!£UX,X-X1XXEXOXVXXjXqXXXXXXXXXXXEX&acdfgishgilnopqutuxxyZw9yvc)W          
       JUMPS The aspe£ct  of a computer that makes itmore than a calculator is i
ts ability tochange its  sequence of operations as  aresult of  earlier instruct
ions.  Withinthe Z80  there  is a counter  called theProgram  Counter  or  PC.  
This  counterkeeps  track  of  which  "instruction theprocessor  is  to   perfor
m   next.   Bymodifying  its  contents, the  processorcan  be  jumped  to  any  
instruction inmemory. The simplest jump is JP nn, where nn isthe address to  whi
ch the  program is tojump. This is an unconditional jump, theProgram  Counter al
ways jumping  to  theaddress nn.£ The   more   powerful   jump   is   theconditi
onal  jump.  The  processor teststhe  state  of  a  flag,  before  eitherjumping
 or continuing in  sequence. The  conditional  jumps  involving  thecarry and ze
ro flags are-JP NC,nn    jump if carry flag not setJP C,nn     jump if carry fla
g setJP NZ,nn    jump if zero  flag not setJP Z,nn     jump if zero  flag set In
direct jumps  are  also  available onthe Z80 using  the  HL   register  pair.The
   instruction   JP (HL)   loads  theprogram counter with the contents of theHL 
register.  Thus  the address  of  thenext  instruction  to  be  performed  iscon
tained within the HL register.£Since  the contents of the  HL  registerpair   ca
n   be  the&-  result   of   somecalculation the jump can be conditional.£ Summa
ry - jumpsJP nnJP (HL)JP NC,nn  jump on no carryJP C,nn   jump on carryJP NZ,nn 
 jump on not zeroJP Z,nn   jump on zero£         EXAMPLES OF JUMPS Although  you
  can  enter  the  addresswithin the jump in  number  form,  if itdoes not equal
 the address of  the startof an  instruction,  the simulator  willstop at the  J
UMP.  This is because  theprocessor would perform  the instructionit finds  at  
that  address and anythingcould hap&pen and usually does. To get round this prob
lem  use a label,declaring  it  in  the  label  column infront of the  instructi
on  to which  youwish to jump.£ LD HL,STORE  LD A,3 LOOP1 LD (HL),A  INC A  CP 8
  JP NZ,LOOP1   LOOP2 DEC (HL)  JP NZ,LOOPq2  RET     STORE DEFB 0              
    RELATIVE JUMPS One difficulty with the  above types ofjump is that,  if  the
  start address ofthe program  were changed, all the  jumpaddresses  would  requ
ire  modification.Relative  jumps  do   not   have    thisdifficulty. The absolu
te address is  notstored  with  the instruction. It is thedifference  between th
e current contentsof the program  counter and the  addressto which  we wish to j
ump that is storedwithin  the instruction.  Relative jumpsare  lijmited to  jump
ing  backwards  128locations and forwards 127 locations. The mnemonic for  relat
ive jumps is  JRand can take all the forms discussed  sofar for JP, i.e. JR , JR
 NC, JR C, JR NZand JR Z.£ There  is one particular  relative jumpinstruction th
at is particularly  usefulnamely  Decrement  and Jump on Non-Zero,or DJNZ.   The
 B register is decrementedand,  if  the  result  is  not zero, theprocessor  per
forms  a relative  jump tothe computed new address. If the  resultis  zero  then
  the  next instZMruction insequence is taken.  DJNZ  allows  us  torepeat a ser
ies of instructions a presetnumber of times. The  number of  repeatsis  equal  t
o  the  contents  of  the  Bregister when the  loop is  entered,  solong  as  th
e  B  register does not formpart oQf the series of instructions. No  flags  are 
 affected  by  any  jumpinstructions including DJNZ.£ Summary - relative jumpsJR
 e      where e is the displacement inJR NC,e   the range 127 to -128JR C,eJR NZ
,eJR Z,eDJNZ e    decrement and jump on non zero£       EXAMPLE OF RELATIVE JUMP
S All assemblers  calculate the displace-ment for relative jumps.   The assemble
rwithin   this  TUTOR  is  no  exception.Relative jumps  should  be  entered wit
hlabels.£ LD HL,STORE  LD B,(HL)  INC HL  LD E,(HL)  LD HL,0  LD D,0 LOOP  ADD H
L,DE  DJNZ LOOP  LD (ANS),HL  RET   STORE DEFB 6  DEFB 58 ANS   DEFW 0          
 EXAMPLE OF RELATIVE JUMPS This  example  illustrates a method  ofmultiplication
.  There are  other fastermethods that will be shown later.£ LD A,1 LOOP1 ADD A,
A  LD (STORE),A  JR NC,LOOP1  INC A  LD B,7 LOOP2 ADD A,A  LD (STORE),A  INC A  
LD (STORE),A  DJNZ LOOP2  RET   STORE DEFB 0                    THE STACK The St
ack is an area of external RandomAccess Memory,  that is used as a seriesof regi
ster pairs, in conjunction with aStack Pointer. The Stack Pointer (SP) isis sing
le  double length register withinthe Z80, capable of holding up to 65335. Before
  loading   the  Stack  from  anyinternal   register   pair,   the   StackPointe
r  is  decremented  twice,  ( thuspointing  to the  next  pair  of  memorylocati
ons). The contents of the registeris then loaded into the Stack indirectlyusing 
the SP register as the address. The instruction is PUSH dd.  Continuingto PUSH  
data on to the Stack results inthe  data  being pushed in at the bottomof  the  
Stack  and  the  Stack  Pointerworking its way down through memory.£ POP dd  ret
rieves  data  from the Stackinto  the  defined  register  pair.  Theregister   p
air  is  loaded   Fuwith   thecontents of the  memory location pointedto by SP r
egister.  Then  the SP is inc-remented twice. Continuing  to  POP data from the 
Stackresults in information being POPped fromthe bottom  of the Stack and  the  
StackPointer working its way back up  throughthe memory. If  a  series of regist
ers is PUSHed onto the  Stack,  and subsequently  POPpedoff the  Stack,   they  
reappear  in thereverse order. The  BC,  DE  and  HL  registers may bePUSHed on 
to and POPped from the  Stack.The Accumulator mzay also be PUSHed on tothe  Stac
k,  but  this is  done with theflag register F, which will be discussedlater.£ T
he  Stack  Pointer  can  take  part ina   number   of   instructions   alreadydi
scussed. They are simply those in  which  DE, orBC   can  take  part.   The  ins
tructionequivalent   to   EX DE,HL   is  howeverEX (SP),HL , that EXchanges the 
contentsof  the  bottom of the Stack with the HLregister.£ Summary - the Stack a
nd SP register PUSH DD  where DD is AF, BC, DE, or HL.          From   now   £1o
n   dd   can  be          considered as representing          BC, DE, HL,or SP. 
POP DD LD SP,nn LD SP,(nn) LD (nn),SP LD SP,HL ADD HL,SP ADC HL,SP SBC HL,SP INC
 SP DEC SP EX (SP),HL£        EXAMPLES USING THE STACK The simulator uses the um
emory area 3840to  4095  for  the  pupils programs. TheStack Pointer is initiall
y  set to 4094,and  works  its  way  down  towards  theprogram area. Keep the SP
 at the top endof  this  area of  memory to ensure thatthe simulator does not st
op. The last Wfour pairs of memory locationsin the Stack are displayed at the bo
ttomright hand corner of the screen. As withthe  Program  Counter,  the  positio
n towhich  the Stack Pointer points is shownin Red. The instruction  INC SP  is 
included atthe end of the program to ensure that SPis displayed. The actual valu
e in the SPregister is immaterial for  most  of itsapplications.£ LD HL,56789  L
D DE,34567  LD BC,12345  PUSH HL  PUSH BC  PUSH DE  EX (SP),HL  LD BC,0  POP DE 
 POP BC  POP HL  RET      INC zSP             CALLS TO SUBROUTINES A  subroutine
 is  a  part of a  programthat is called from the main program andonce completed
 returns back to the  mainprogram.  The   subroutine  is   usuallycalled from  a
  number of  places in theprogram. The  ZR80  allows  this  feature  by theinstr
uction  CALL.  The CALL instructionis similar to the  JP instruction exceptthat 
the address of the next  sequentialinstruction, held in the PC register, isPUSHe
d onto the Stack, prior to the jump The  return  instruct'ion  RET, POPs theretu
rn address from the Stack, back intothe PC register,  to continue where  themain
 program left off. If the  number ofPUSHes  and CALLs in the subroutine doesnot 
 equal  the   number  of   POPs  andRETurns, obviously this will not happen.£ Bo
th   conditional  and   unconditionalCALLs  and  RETurns are available on theZ80
 .  All  four  types  of   conditionsalready considered  ( NC, C, NZ and  Z )can
 be used with CALLs and RETurns.£ Summary - calls and returns   CALL NC,nn      
RET NC    No Carry   CALL C,nn       RET C     Carry set   CALL NZ,nn      RET N
Z    Not Zero   CALL Z,nn       RET Z     Zero set If  the  condition  is  not  
 met,  theprogram will not CALL the  subroutine orRETurn from it.£     EXAMPLE O
F CALLS TO SUBROUTINE It must be remembered that a subroutinemay require the use
 of a  register whosecontents  are still required in the mainprogram.  Its conte
nts must therefore bePUSHed  onto   the  stack  or  otherwisestored  elsewhere, 
and  retrieved at theend of the subroutine. The following example adds together 
thefirst  32 pairs of memory locations. Theresult is left in HL.  The stack and 
theHL  registers  are both used as  storageinspite of the interference of the CA
LL,by using the EX (SP),HL instruction£ LD HL,0  LD B,32  PUSH HL LOOP1 LD E,(HL
)  INC HL  LD D,(HL)  INC HL  EX (SP),HL  CALL SUBR  EX (SP),HL  DJNZ LOOP1  POP
 HL  RET SUBR  ADD HL,DE  RET        EXAMPLE OF CONDITIONAL CALLS This  simple  
 example  counts  up  thenumber  of  memorgy  locations  holding anumber above  
192  and  below  64 in thefirst 32 memory locations.£ LD HL,0  LD DE,0  LD B,32 
LOOP  LD A,(HL)  CP 193  CALL NC,ABOVE  CP 64  CALL C,BELOW  INC HL  DJNZ LOOP  
RET ABOVE INC E  RET BELOW INC D  RET      .            Lessons 10 - 17 10. Cond
itional and unconditional JPs         Ex - jumps 11. Relative jumps         Ex -
 relative jumps 1         Ex - relative jumps 2 12. The Stack         Ex - pushe
s and pops 13. Calls to subroutines         Ex - u-nconditional calls & rets    
     Ex - conditional calls 14. Binary notation         Ex - binary notation 15.
 Hexadecimal notation         Ex - hex notation 16. Binary Coded Decimal notatio
n         Ex - BCD notation 17. Positive and negative notation         Ex - +ve 
and -ve numbers Load further lessons from tape£             INTRODUCTION The  pr
ocessor,  under the programmer'sdirection,  has  the  capacity  to  makedecision
s.  In  the following lessons weshall  discuss  these  instructions that6make  a
   computer   more  than  just  acalculator. We  shall  then look at numbers hel
d inregisters in more detail.£            BINARY NOTATION If we were to  take th
e  top off a  Z80chip  and, using  a powerful microscope,look at a register, we 
would see that itconsists of  8 cells.  These  cells  arecapable of being  switc
hed  between  twodifferent   states.   Conventionally  wedesignate one state as 
"1" and the otheras "0". The pattern of 1's and 0's couldbe 10111000 say. How  d
o we  interpret thiSqs pattern Theanswer  is,  anyway  we  like.  In  thislesson
 we show that this  pattern  couldbe 184,-72, B8H, and even CP B. The onlyone th
e  processor  has built into it isthe latter.£ Each  digit  in  a  number can  b
e con-sidered to have a weighting. F,&or decimalnumbers these weightings are  Di
git      3    2    1     0           1000  100   10    1 since each  digit  can 
have one  of tenstates, designated 0 - 9. In a  register  each  digit  or bit ha
sonly   two  states.   Therefore  we  caninterpret  the  digits as having weight
-ings of bit    7   6   5   4    3   2   1   0       128  64  32  16   8   4   2
   1 Taking  our number 10111000 for exampleand  noting  that   bits  that  are 
 "0"contribute  nothing to the  number,  thedecimal equivalent of  10111000 is g
ivenby            128+32+16+8184.£ The maximum  number that can be held inan 8 b
it register is          128+64+32+16+8+4+2+1255This is the number we originally 
assumedat the beginning of our discussion.£ Just  as   we  add  two Rdecimal num
berstogether,  carrying  one forward  if thesum of two  digits is greater than 9
, wecan add two binary numbers.  If  the sumis above one, a one is carried forwa
rd.i.e. carry   ' '   ' '                   0 1 1 0 1 1 1 0          +  0 0 1 0 
08 1 0 1  gives      1 0 0 1 0 0 1 1 Similar we can perform subtraction.i.e. bor
row    0 1 1 2   0 2             0 1 1 0 0 1 1 0          -  0 0 1 0 1 1 0 1  gi
ves      0 0 1 1 1 0 0 1£      EXAMPLES OF BINARY NOTATION The  assembler, withi
n  this tutor, hasone instruction not normally found in anassembler,  namely  BI
N.  The  assemblerallocates  one  memory  location  to theline, which would norm
ally be  labelled.It constantly displays this location  inbinary form. The numbe
r after BIN is thenumber  initially   inserted  into   thelocation. After  going
   through  the   followingexample  try modifying the displaying ofSTORE in exam
ple 11B.£ LD HL,STORE LOOP  DEC (HL)  JR NZ,LOOP  LD A,(NUM1)  LD HL,NUM2  ADD A
,(HL)  LD (ANS),A  RET   STORqE BIN 15   NUM1  BIN 81 NUM2  BIN 95 ANS   BIN 0  
            HEXADECIMAL NOTATION Binary  numbers are too  cumbersome anddecimal 
 too   inconvenient  to  displaymultiple  register numbers.  A method ofpresenti
ng   binary  numbers  has   beendevelqoped  to get round  these problems.Instead
 of basing the number on 10 as indecimal or 2 as in binary, we base it on16.  Th
is  numbering  system  is  calledHexadecimal. We  require   16  different  symbo
ls torepresent  a  digit.  0-9  gives  us thefirst  E10  and  A-F  the final 6. 
A listof  decimal,   binary,  and  hexadecimalequivalents  are   given  on  the 
  nextscreen.£    Decimal   Binary    Hexadecimal       0       0000         0  
     1       0001         1       2       0010         2       3       0011     
    3       4       0100         4       5       0101         5       6       01
10         6       7       0111         7       8       1000         8       9  
     1001         9       10      1010         A       11      1011    g     B  
     12      1100         C       13      1101         D       14      1110     
    E       15      1111         F£ All 16  states of the 4 binary bits arecover
ed by 0-F. Hence only 2 hexadecimaldigits  are  required  to  display   theconte
nts  7 of  an  8  bit  register.  Ourexample   10111000   divides   up   into101
1 1000 or B8 Hex.  A  double registerholding say  11001001 10111000  will  berep
resented by C9B8 hex. Conversion  of  a  hex  number  to  itsdecimal equivalent 
follows the  standar2dcalculation.i.e.  B8 hex  (B hex)* 16+ (8)* 1             
 11*16+8184 Always remember that a hex number has abase of 16 decimal, a decimal
 number hasa base of 10  and a binary number a basebase 2.£    EXAMPLES OF HEXAD
ECIMAL NOTATION Now  that  hex notation has been intro-duced we  can discuss  ho
w  the computerstores  programs  in  more  detail.   Asalready   mentioned,  the
   instructionsare  stored   memory  as  numbers.  Someinstructions   only   req
uire  a  singlenumber, others require more.F Column 2 onthe Simulator display sh
ows  the  memorycontents for the instructions in hex. All the  numbers  used  to
  describe aninstruction are  given in sequence alongthe line.  Notice that numb
ers called upin an instruction appear towards the endof the string  of  numbers.
 The  earliernumbers    determine    the   type    ofinstruction. Since the  tot
al  number ofinstructions   exceed   256,  a   prefixnumber is used to  produce 
other sets ofinstructions. The prefixes you will findare ED, CB, DD and FD.£ Luc
kily assemblers takes account of allthese  complexities,  and  you  will notneed
  to  learn  which numbers representwhich instructions. The Simulator  can  be s
witched betweendecimal   and   hexadecimal  display  bypressing shift  "T",  whe
n a program  isnot running.£ LD A,25H  ADD A,A  DAA  LD HL,4589H  LD DE,3812H  L
D A,L  SUB E  DAA  LD L,A  LD A,H  SBC A,D  DAA  LD H,A  RET          BINARY COD
ED DECIMAL NOTATION We  would  still  like  to  be  able toperform calculations 
 on decimal numberswithout  having  to convert to binary orhexadecimal form. Hex
idecimal form holdsa key to a method of achieving this. The  hex digit  requires
  adjustment toavoid the digits  A-F.  Adding  6 to thedigit, if these symbols a
ppear,  resultsin correct adjustment. Take  the  hex  number  C  ( 12 dec.).Addi
ng  6  gives  18  decimal or 12 hex.Hence the hex number looks  identical tothe 
decimal answer required.£ Each digit is  held  in  4  bits of theregister.   The
se  4  bits are called  anibble, the whole 8 bit word is termed abyte. Who said 
programmers have no senseof humour This  presentation  is  termed   BinaryCoded 
Decimal or BCD. The   Z80    accommodates   the   aboveadjustment,  with the ins
truction   DAA,or  Decimal  Adjust  Accumulator.   Thisinstruction  is  used  af
ter  an  8  bitADD,  ADC,  SUB,  or  SBC  to adjust theAccumulator contents by a
dding 6  to thenibble,  if either  nibble in the answeris above 9.£ To perform  
this operation the Z80 usestwo further flags, the  H  flag (C a Halfcarry  betwe
en  nibbles ),  and  N  flag(subtract  instruction  performed last).Since  these
  flags  cannot be tested aspart of a conditional jump etc. they areof little us
e.£     EXAMPLES OF B.C.D. NOTATION These examples show simple addition andrusub
traction in  BCD format.  Remember tokeep  in   Hex  display   mode   or  theill
ustrations will not appear in BCD.£ LD A,25H  LD HL,STORE  LD DE,2468H  INC (HL)
  RET    BIN 65H  BIN 87H  BIN 9AH  BIN DFH  BIN FFH  BIN 64H   STORE DEFB 64   
    POSITIVE AND NEGATIVE NUMBER NOTATION So far we have only dealt with positiv
enumbers.  If we had taken  6  from  5 wewould end  up with  the answer 255  wit
hcarry set. There is an interpretation ofnumbers  that allows us to consider thi
sanswer as the negative number -1. In  this  interpretation  -1 must equal255 or
 11111111, or the processor  wouldnot be able to take  6  from  5  and getthe ri
ght answer. Further 5-7 -2 or 254or 11111110. Bit 7, the most significantbit, re
presents  the sign ( + oQr - )  ofthe number. When bit 7 is "1" the numberis neg
ative,  and when "0" the number ispositive.£ A  useful operation would  be to ma
ke apositive number negative. Changing bit 7does  not  do  this.  Take the  posi
tivenumber  2 or  00000010  and its negativeequivalent -2  or 11111110  for exam
ple.Inverting all bits of the  binary numberof  +2  gives  11111101, which is 1 
lessthan that  for -2.Hence to make a positive number negativewe invert all its 
binary bits,  known asComplimenting, and add  1.  The nzhotationis generally ter
med 2s complement£i.e.         0 0 0 0 0 1 0 1    +5    invert   1 1 1 1 1 0 1 0
  add 1      1 1 1 1 1 0 1 1    -5    invert   0 0 0 0 0 1 0 0  add 1      0 0 0
 0 0 1 0 1    +5 The  operation  luckily  also  makes  anegative   number    pos
itive.   A  veryimportant point. The largest positive number we can holdin  a   
single   register,  using   thisnotation is  01111111   or  127  and thelargest 
 negative   number  10000000  or-128.£ The  Z80  has two instructions that maybe
 -used for these operations CPL   complements    or   inverts   the       conten
ts of the Accumulator. NEG   negates,  or makes  negative, the       contents  o
f  the  Accumulator by       complementing and adding 1 in one       operation. 
A Sign flag FR(S) is provided on the Z80.It duplicates  the sign ( bit 7 ) of th
eanswer after any arithmetic operation onthe Accumulator.  The  sign  flag is "0
"for  a  positive  result  and  "1" for anegative result.£ When performing  arit
hmetic  operationswhich  we  wish  to interpret within therange  -128 to +127, t
he Carry  flag  nolonger  signals  an out of range result.However another flag, 
the overflow (P/V)flag  does.  It  is  a  "1" whenever theanswer is outside the 
range -128 to +127and  "0"  within   the   range.   It  iseffectively  a  carry 
 into  bit 7 whichwould make the sign bit incorrect.£ There  is  no  reason for 
sticking to 8bits  using this method.  So long as thenumber of  bits is  suffici
ent  and  themost  significant  bit  is  taken as thesign  bit  any size positiv
e or negativenumber can be represented. Performing a similar calculation to thea
bove  we can  show that a register paircan  represent  a  number  in the  range+
32767 to -32768. The  Sign and  overflow  flags are alsooperative after  AvDC an
d SBC instructionon the HL register. It reflects the 15thbit (or bit 7 of H regi
ster) .£ It is important  to  remember  that theZero,  Carry,  Sign, and  overfl
ow flagsare always operative  after  an   8  bitarithmetic  instruction   or  a 
 16  bitaddition   involving   the  Carry.  Yourinterpretation of the  result de
terminesin   which   flag(s)   you   should   beinterested in.£    EXAMPLES OF +
VE AND -VE NOTATION Although  these  examples  appear to beall positive, they ca
n be viewed equallyas  nee%gative  where appropriate and  theSign   and   overfl
ow   flags   observedoperating. Remember  a   number   above   128   isnegative.
 Since all the negative numbersin the examples are small,  they  can beseen quic
kly and simply be converted  bysubtractinSg the number from 256. i.e.  -2  is eq
uivalent to 254 etc.£ LD A,254  NEG  NEG  ADD A,2  INC A  LD HL,2  LD DE,FFFEH  
ADD HL,DE  CPL  LD HL,STORE  LD (HL),7FH  INC (HL)  RET   STORE BIN 0   88($"88(
H0$ff$/ yyyyyyy1ve "TEXT1",B,&5800,&55000TER"ad00179,&ed,&78,&cb,&47&1b,&7a,&B3 
f,&0mW# # UX&X'X+X2X9XXDXKXRXbXiXyXXXXXXbYXUa/cddevfmgijlmjnopsOurwxyzI!      EX
AMPLES OF BIT MANIPULATION The following illustrates  the  way  inwhich  SET, RE
S, and  BIT can be used tomanipulate individual bits of a registeror memory loca
tion.£            BIT MANIPULATION We have so far treated  information  inthe fo
rm of bytes or words. The Z80 doesallow a number of operations on separateor gro
ups of bits within one byte Any  bit  in   a  register,  or  memorylocation usin
g (HL),  can  be  SET  to a"1". We can also RESet any bit to a "0".To  test  the
   state  of  a  bit  in  aregister, or memory location, we can usethe instructi
on BIT. In this instructionthe Zero flag is set if the  appropriatebit is  "0"  
and reset to a  "0"  if theappropriate  bit  is "1".  Hence we  canproduce our o
wn flags to indicate eventsand then  act  upon  them  later in  ourprograms.£ Su
mmary - bit manipulationSET N,ir    where N is the bit number 0-7SET N,(HL)RES N
,rRES N,(HL)BIT N,rBIT N,(HL)£ LD HL,STORE  SET 6,(HL) LOOP  INC (HL)  BIT 2,(HL
)  JR Z,LOOP  RES 3,(HL)  LD B,5  SET 7,B  RES 2,B  DEC B  BIT 5,B  RET Z   STOR
E BIN 16              LOGICAL INSTRUCTIONS There  are  three logical  instructio
nsavailable  on  the  Z80.   They are  allperformed  on a bit by bit basis betwe
enthe Accumulator and a  number, register,or indirectly addressed  memory locati
on(HL).  The   result   is  left   in  theAccumulator. In the AND instruction, i
f a bit in theAccumulator  AND  other number are  "1",then the corresponding bit
 in the resultwill be "1". If not it will be "0" i.e.      01101100           01
010110   ANDed together gives     01000100 As w'ell as  performing  ANDs on our 
ownflags,  this  instruction  is  useful inmasking off areas of words, or resett
inggroups of bits in the Accumulator.£ In  the OR instruction, if a bit in theAc
cumulator  OR in the other number is a"1", the corresponding bit in the resultwi
ll be "1". If not it will be "0" i.e.      01101100           01010110   ORed to
gether give      01111110 As well as performing  OR operations onour  own  flags
,   this  instruction  isuseful in SETting a group of bits in theAccumulatHor.£ 
In the XOR  (eXclusive OR) instruction,if the  bit in the  Accumulator  is  thes
ame as that in the  number ,  then  thecorresponding  bit in the result will be"
0".  If they are  different it  will be"1". Another way of looking at  the  XORi
nstruction is  if  one  OR the other is"1" but  NOT  both,  the  answer will be"
1". i.e.      01101100           01010110    XORed together give      00111010 A
part  from  performing the logical XORfunction  on  our  own  flags   the  XORin
struction   is  useful   in  invertingindividual or groups of bits.£ The three l
ogical instructions AND, OR,and  XOR  affect  the  Zero,  Sign,  andParity flags
. The Carry flag is reset to"0" in all cases. Thus the limitation ofno   Clear  
Carry  instruction   can  beperformedl by a logical instruction. AND A or OR A w
ill clear the carry flagand not affect any registers. XOR A willclear Carry and 
the Accumulator.£ Summary - logical instructions AND n AND r AND (HL) OR n OR r 
OR (HL) XOR n XOR r XOR (HL)£    EXAMPLEoS OF LOGICAL INSTRUCTIONS The examples 
illustrate  the  operationof  the  logic  instructions.  The pupilshould   test 
  his/her    understandingfurther by modifying the contents of the3 stores.£ LD 
HL,ST2  LD A,(ST1)  AND (HL)  LD (ST3),A  LD A,(ST1)  OR (HL)  LD (ST3),A  LD A,
(ST1)  XOR (HL)  LD (ST3),A  RET   ST1   BIN 65H ST2   BIN FH ST3   BIN 0H      
        SHIFT INSTRUCTIONS A shift instruction is one in which thebits of  a  re
gister or  memory locationare moved sideways, left or right to theadjacent bit. 
 As  we  shall  see,  thisgives us a means  of division as well asmultiplication
.£ The  SRA r,  and  SRA (HL) instructionsshift the  register/memory location (H
L)right,  shifting  bit 0  into  the Carryflag and retaining the statYe of bit 7
. i.e.    7 6 5 4 3 2 1 0   C         0 1 1 0 0 0 1 0   x  (98 dec.) becomes  0 
0 1 1 0 0 0 1   0  (49 dec.)   or     1 1 1 0 0 0 1 0   x  (-30 dec.)becomes  1 
1 1 1 0 0 0 1   0  (-15 dec.) Hence   the   SRA   or    Shift   RightArithmetica
l8ly instruction divides  bothpositive and negative numbers by 2.£ The  SRL r,  
and  SRL (HL) instructionsshift   the   register/memory   locationcontents right
, shifting  bit 0 into theCarry flag and a "0" into bit 7. i.e.    7 6 5 4 3 2 1
 0   C         F51 0 1 1 0 1 1 1   x  (183 dec.)becomes  0 1 0 1 1 0 1 1   1  (9
1 dec.)                               and Carry  The  SRL   or   Shift  Right  L
ogicallyinstruction therefore divides a positivenumber by 2.  As with SRA the Ca
rry flagindicates the half.£ Theq  SLA r,  and  SLA (HL) instructionsshift  the 
register/memory contents leftshifting a "0" into bit 0 and bit 7 intothe Carry f
lag. i.e.    C   7 6 5 4 3 2 1 0         x   0 1 1 0 0 0 1 0  (98 dec.)becomes  
0   1 1 0 0 0 1 0 0  (196 dec.) Hence the result of the instruction SLAor   Shif
t  Left  Arithmetically  is  tomultiply  the  positive number by 2. TheCarry  in
dicates  a  result greater than255.All these instructions  affect  not onlythe C
arry flag,  but the Zero, Sign, andParity flags.£ Summary - shift instructions S
RA r  divides +ve and -ve numbers by 2 SRA (HL) SRL r  divides +ve numbers 0 - 2
55 by 2 SRL (HL) SLA r  multiplies +ve and -ve numbers                          
          by 2 SLA (HL)£    EXAMPLES OF SHIFT INSTRUCTIONS The6   three   shift 
 instructions   areillustrated  using a fixed initial valuein the memory locatio
n STORE.£ LD HL,STORE  LD B,5 LOOP1 SRA (HL)  DJNZ LOOP1  LD (HL),A5H  LD B,5 LO
OP2 SLA (HL)  DJNZ LOOP2  LD B,8 LOOP3 SRL (HL)  DJNZ LOOP3  RET  £M STORE BIN 6
9H                ROTATE INSTRUCTIONS These  instructions are shift instruct-ion
s in which the bit that falls out oneend of the register  or memory  locationis 
pushed back into the  other end.  TheCarry flag  either  forms  part  of  thenum
ber shifted, thereby making it 9 bitslong, or duplicates the state of the bittha
t fell out of the register. There aretherefore   four   different   types  ofrot
ate.£ RLC r, and RLC (HL) (namely Rotate LeftCarry duplicating ), shifts the con
tentsleft, bit U7 rotating into bit 0, and theCarry duplicating the transferred 
bit. i.e.    C  7 6 5 4 3 2 1 0         x  1 0 1 1 0 0 0 1becomes  1  0 1 1 0 0 
0 1 1  old bit 71 RL r, and RL (HL)  Rotate Left, rotatesthe  register/memory lo
cation  with  theCarry as ia 9th bit, left. i.e.    C  7 6 5 4 3 2 1 0         c
  1 0 1 1 0 0 0 1becomes  1  0 1 1 0 0 0 1 c  cold Carry RL  instructions can be
 strung togetherto multiply  any  length  number  by  2,since the  Carry  is tra
nsferred betweenrepeated RL instructions.£ RRC r,  RRC (HL)  instructions  (Rota
teRight Carry being duplicated) is similarto the  RLC  instruction  but is a rig
htshift.  Bit 0 is  shifted into bit 7 andthe Carry duplicates the old bit 0. i.
e.    7 6 5 4 3 2 1 0  C         1 0 1 1 0 0 0 1  xbecomes  1 1 0 1 1 0 0 0  1  
old bit 01 RR r, and RR (HL) instructions ( RotateRight ) is similar to RL excep
t that theshift around the 9 bits is to the right. i.e.    7 6 5 4 3 2 1 0  C   
      1 0 1 1 0 0 0 1  cbecomes  c 1 0 1 1 0 0 0  1  cold Cfjarry RR instruction
s can be strung  togetherto divide any length number by 2.£ RLC and RRC  instruc
tions are useful insequentially   interrogating  the  wholecontents of a registe
r without  corrupt-ing its contents. All the above rotate instructions  RLC,RL, 
 RRC, and  RR  not  only  affect theCarry flag  but also  the Zero, Sign andPari
ty   flags,  as   have   all   shiftinstructions discussed. There  are  4 other 
rotate instructionsthat  involve the Accumulator only. Theyare RLCA,  RLA,  RRCA
, and RR#gA. They areidentical to  RLC A,  RL A,  RRC A,  andRR A, but only  aff
ect  the  Carry flag,and are twice as fast.£ Summary - rotate instructions RLC r
  rotate r left, carry  duplicates RLC (HL) RLCA   rotate A left, carry  duplica
tes RL r   rotate r and carry left RL (HL) RLA    rotate A and carry left RRC r 
 rotate r right, carry duplicates RRC (HL) RRCA   rotate A right, carry duplicat
es RR r   rotate r and Carry right RR (HL) RRA      rotate A and Carry right£   
 EXAMPLES OF ROTATE INSTRUCTIONS These examples illustrate the operationof  rota
te   instructions.   Modify  theinitial condition of the location  STOREto inves
tigate their operation further.£ LD HL,STORE  LD B,8 LOOP1 RLC (HL)  DJNZ LOOP1 
 LD B,8 LOOP2 RL (HL)  DJNZ LOOP2  LD B,8 LOOP3 RRC (HL)  DJNZ LOOP3  LD B,8 LOO
P4 RR (HL)  DJNZ LOOP4  RET STORE BIN 69H       EXAMPLE USING ROTATE AND SHIFT T
his example  uses  shifts  and  rotateinstructions  to  multiply  two  8   bitnu
mbers together.  One number is rotatedto examine  each bit in turn.  The othernu
mber is also shifted and  added to thetotal if the  bit is set. This method isfa
r quicker than the  method of repeatedaddition.£ LD HL,0  LD DE,(NUM2)  LD A,(NU
M1) LOOP  RR A  JR NC,JP1  ADD HL,DE JP1   RET Z  SLA E  RL D  JR LOOP   NUM1  D
EFB 212 NUM2  DEFB 203  DEFB 0                   DECIMAL ROTATE The  Z80  allows
  us to rotate left andright nibbles as well as bits. RLD  Rotates the Decimal n
umber Left RRD  Rotates the Decimal number Right Th e   best   way   to   descri
be  theseoperations    is    by   example.   Bothinstructions  involve  the  Acc
umulator,and   the   memory  location  (HL).  Theexamples are in  Binary Coded D
ecimal ofcourse,  each digit taking up one nibbleor  four  bits of tnhe register
 or memorylocation.£             A after   (HL)    A before                     
   5 4        x 3 after RLD     x 5     4 3where  x is any number and is unaffec
tedby the instruction. As can be  seen the effect of stringingtogether RLD instr
uctions is to multiplya  decimal  number  by  10.  It is  alsouseful in isolatin
g the high digit  fromthe two digit number.£             A after   (HL)    A bef
ore                x 5     4 3 after RRD             5 4       x 3 The  RRD  ins
truction therefore dividesthe decimal number by 10. It can also bestrung togethe
r to divide any length BCDnumber  by 10.  The low digit of the twodigit  decimal
 number can be isolated bythis instruction.£ Summary - decimal shiftsRLD    Rota
te Left Decimal  (*10)RRD    Rotate Right Decimal (/10)£      EXAMPLES OF DECIMA
L ROTATION These     examples    illustrate    themultiplication   and   divisio
n  of  BCDnumbers by ten.£ LD HL,STORE  LD A,0  RLD  INC HL  RLD    LD A,0  RRD 
 DEC HL  RRD  RET     STsORE DEFW 254H                  INTRODUCTION This  group
  of lessons will  introducethe idea of bit manipulation and its usein  flag  op
erations  and  in  producingfaster methods of multiplication. But first  we shal
l look further at theprocessors fl4ags.£             LESSONS  18 - 25 18.  Parit
y 19.  The flag register and AF 20.  S and P/V flags in instructions            
 Ex - sign and parity flags  21.  Bit manipulation           Ex - bit manipulati
on 22.  Logical instructions           Ex - logical instructions 23.  Shift inst
ructions           Ex - shift instructions 24.  Rotate instructions           Ex
 - rotate instructions 1           Ex - rotate instructions 2 25.  Decimal rotat
ing           Ex - decimal rotation Load further lessons from tape£             
    PARITY When data is transmitted from one placeto another, it is possible for
 errors toappear in the received data. Parity is asimple way of detecting single
 errors indata.  An additional bit is added to thedata that makesI the total num
ber of "1"sin the  word  an  even  number.   If thereceived  word  does  not  ha
ve  an evennumber  of "1"s in it, then an error hasoccurred.   In  addition  to 
 this  evenparity we could use  odd  parity,  wherethe word is made to have  an 
 odd numberof "1"s in it. The  Z80  has a flag that is set if thenumber of "1"s 
in a number is even. Thisflag  is in fact  the  same flag  as theoverflow flag. 
 It  is  termed  the  P/Vflag.£ i.e.0 0 1 1 0 1 0 0   parity flag is not set    
              s'ince  number  of "1"s                  is 3.   i.e. odd.0 1 0 0 
0 1 1 1   parity  flag   is  set                  since  number  of "1"s        
          is 4.   i.e. even. The  instruction  performed  determinesthe meaning 
of the P/V flag. Of  all  w$the instructions  described todate  only  DAA  treat
s  it  as a parityflag.  All others either have  no effecton it  or use it as  a
n  overflow  flag.All subsequent instructions either  haveno effect on it or use
 it as parity.£ THE FLAG REGISTER AND AF REGISTER PAIR We  have  discussed flags
 as individualbits.  This is the way they are normallyused.   They are however a
ctually storedin the Z80 in a register, designated  asF  or  flag  register.  Th
e  flags   arearranged as follows -   bit  0      C    JCarry   bit  1      N   
 Subtract last   bit  2     P/V   Parity and overflow   bit  3           Not use
d   bit  4      H    Half carry   bit  5           Not used   bit  6      Z    Z
ero   bit  7      S    Sign£ The Flag  register  sometimes  forms 1  aregister  
pair  in  conjunction with theAccumulator. This pair is called AF. Theonly instr
uctions  previously  mentionedthat involve this register pair are PUSHand POP.£ 
    S and P/V FLAGS IN INSTRUCTIONS The sign  and  parity flags can be usedin  a
ljl  absolute ( NOT relative) jumps,calls, and returns. The notation is - JP PO,
nn  CALL PO,nn  RET PO                           Parity odd0  JP PE,nn  CALL PE,
nn  RET PE                           Parity even1 JP P,nn   CALL P,nn   RET P   
Sign +kCve JP M,nn   CALL M,nn   RET M   Sign -ve If the condition is not met th
e programwill  not  jump,  call a  subroutine, orreturn.£        EXAMPLE OF JUMP
 ON SIGN This  example  is a simple  program  toillustrate  JP P,nn , and JP M,n
n  jumpif positiveh and jump if minus. Note thatthe  carry  is  still   operativ
e,   andtherefore, if you do not clear it beforeADC  and SBC  the  later jump  c
ould  beunexpected. In this example the carry isnot cleared, so "look before you
 leap".£ LD HL,52  LD DE,33  LD B!oC,5 LOOP1 SBC HL,DE  LD (LREG),HL  JP P,LOOP1
 LOOP2 ADC HL,BC  LD (LREG),HL  JP M,LOOP2  RET Z  JR LOOP1   LREG  BIN 0 HREG  
BIN 0     berepresented by C9B8 hex. Conversion  of  a  hex  number  to  itsdeci
mal equivalent follows the  standar dcalculation.i.e.  B8 hex  (B hex)* 16+ (8)*
 1              11*16+8184 Always remember that a hex number has abase of 16 dec
imal, a decimal number hasa base of 10  and a binary number a basebase 2.£    EX
AMPLES OF HEXADECIMAL NOTATION Now  that  hex notation has been intro-duced we  
can discuss  how  the computerstores  programs  in  more  detail.   Asalready   
mentioned,  the   instructionsare  stored   memory  as  numbers.  Someinstructio
ns   only   require  a  singlenumber, others require more.F Column 2 onthe Simul
ator display shows  the  memorycontents for the instructions in hex. All the  nu
mbers  used  to  describe aninstruction are  given in sequence alongthe line.  N
otice that numbers called upin an instruction appear towards the endof the strin
g  of  numbers. The  earliernumbers    determine    the   type    ofinstruction.
 Since the  total  number ofinstructions   exceed   256,  a   prefixnumber is us
ed to  produce other sets ofinstructions. The prefixes you will findare ED, CB, 
DD and FD.£ Luckily assemblers takes account of allthese  complexities,  and  yo
u  will notneed  to  learn  which numbers representwhich instructions. The Simul
ator  can  be switched betweendecimal   and   hexadecimal  display  bypressing s
hift  "T",  when a program  isnot running.£ LD A,25H  ADD A,A  DAA  LD HL,4589H 
 LD DE,3812H  LD A,L  SUB E  DAA  LD L,A  LD A,H  SBC A,D  DAA  LD H,A  RET     
     BINARY CODED DECIMAL NOTATION We  would  still  like  to  be  able toperfor
m calculations  on decimal numberswithout  having  to convert to binary orhexade
cimal form. Hexidecimal form holdsa key to a method of achieving this. The  hex 
digit  requires  adjustment toavoid the digits  A-F.  Adding  6 to thedigit, if 
these symbols appear,  resultsin correct adjustment. Take  the  hex  number  C  
( 12 dec.).Adding  6  gives  18  decimal or 12 hex.Hence the hex number looks  i
dentical tothe decimal answer required.£ Each digit is  held  in  4  bits of the
register.   These  4  bits are called  anibble, the whole 8 bit word is termed a
byte. Who said programmers have no senseof humour This  presentation  is  termed
   BinaryCoded Decimal or BCD. The   Z80    accommodates   the   aboveadjustment
,  with the instruction   DAA,or  Decimal  Adjust  Accumulator.   Thisinstructio
n  is  used  after  an  8  bitADD,  ADC,  SUB,  or  SBC  to adjust theAccumulato
r contents by adding 6  to thenibble,  if either  nibble in the answeris above 9
.£ To perform  this operation the Z80 usestwo further flags, the  H  flag (C a H
alfcarry  between  nibbles ),  and  N  flag(subtract  instruction  performed las
t).Since  these  flags  cannot be tested aspart of a conditional jump etc. they 
areof little use.£     EXAMPLES OF B.C.D. NOTATION These examples show simple ad
dition andrusubtraction in  BCD format.  Remember tokeep  in   Hex  display   mo
de   or  theillustrations will not appear in BCD.£ LD A,25H  LD HL,STORE  LD DE,
2468H  INC (HL)  RET    BIN 65H  BIN 87H  BIN 9AH  BIN DFH  BIN FFH  BIN 64H   S
TORE DEFB 64       POSITIVE AND NEGATIVE NUMBER NOTATION So far we have only dea
lt with positivenumbers.  If we had taken  6  from  5 wewould end  up with  the 
answer 255  withcarry set. There is an interpretation ofnumbers  that allows us 
to consider thisanswer as the negative number -1. In  this  interpretation  -1 m
ust equal255 or 11111111, or the processor  wouldnot be able to take  6  from  5
  and getthe right answer. Further 5-7 -2 or 254or 11111110. Bit 7, the most sig
nificantbit, represents  the sign ( + oQr - )  ofthe number. When bit 7 is "1" t
he numberis negative,  and when "0" the number ispositive.£ A  useful operation 
would  be to make apositive number negative. Changing bit 7does  not  do  this. 
 Take the  positivenumber  2 or  00000010  and its negativeequivalent -2  or 111
11110  for example.Inverting all bits of the  binary numberof  +2  gives  111111
01, which is 1 lessthan that  for -2.Hence to make a positive number negativewe 
invert all its binary bits,  known asComplimenting, and add  1.  The nzhotationi
s generally termed 2s complement£i.e.         0 0 0 0 0 1 0 1    +5    invert   
1 1 1 1 1 0 1 0  add 1      1 1 1 1 1 0 1 1    -5    invert   0 0 0 0 0 1 0 0  a
dd 1      0 0 0 0 0 1 0 1    +5 The  operation  luckily  also  makes  anegative 
  number    positive.   A  veryimportant point. The largest positive number we c
an holdin  a   single   register,  using   thisnotation is  01111111   or  127  
and thelargest  negative   number  10000000  or-128.£ The  Z80  has two instruct
ions that maybe -used for these operations CPL   complements    or   inverts   t
he       contents of the Accumulator. NEG   negates,  or makes  negative, the   
    contents  of  the  Accumulator by       complementing and adding 1 in one   
    operation. A Sign flag FR(S) is provided on the Z80.It duplicates  the sign 
( bit 7 ) of theanswer after any arithmetic operation onthe Accumulator.  The  s
ign  flag is "0"for  a  positive  result  and  "1" for anegative result.£ When p
erforming  arithmetic  operationswhich  we  wish  to interpret within therange  
-128 to +127, the Carry  flag  nolonger  signals  an out of range result.However
 another flag, the overflow (P/V)flag  does.  It  is  a  "1" whenever theanswer 
is outside the range -128 to +127and  "0"  within   the   range.   It  iseffecti
vely  a  carry  into  bit 7 whichwould make the sign bit incorrect.£ There  is  
no  reason for sticking to 8bits  using this method.  So long as thenumber of  b
its is  sufficient  and  themost  significant  bit  is  taken as thesign  bit  a
ny size positive or negativenumber can be represented. Performing a similar calc
ulation to theabove  we can  show that a register paircan  represent  a  number 
 in the  range+32767 to -32768. The  Sign and  overflow  flags are alsooperative
 after  AvDC and SBC instructionon the HL register. It reflects the 15thbit (or 
bit 7 of H register) .£ It is important  to  remember  that theZero,  Carry,  Si
gn, and  overflow flagsare always operative  after  an   8  bitarithmetic  instr
uction   or  a  16  bitaddition   involving   the  Carry.  Yourinterpretation of
 the  result determinesin   which   flag(s)   you   should   beinterested in.£  
  EXAMPLES OF +VE AND -VE NOTATION Although  these  examples  appear to beall po
sitive, they can be viewed equallyas  nee%gative  where appropriate and  theSign
   and   overflow   flags   observedoperating. Remember  a   number   above   12
8   isnegative. Since all the negative numbersin the examples are small,  they  
can beseen quickly and simply be converted  bysubtractinSg the number from 256. 
i.e.  -2  is equivalent to 254 etc.£ LD A,254  NEG  NEG  ADD A,2  INC A  LD HL,2
  LD DE,FFFEH  ADD HL,DE  CPL  LD HL,STORE  LD (HL),7FH  INC (HL)  RET   STORE B
IN 0   88($"88(H0$ff$/ yyyyyyy2ve "TEXT2",B,&5800,&5500 TER"ad00179,&ed,&78,&cb,
&47&1b,&7a,&B3 f,&0
Tous droits réservés. Reproduction sans autorisation interdite. © Kukulcan