Listing 1: Original code from Zilog’s listing.


008C  31 F0     236 RESET: SRP  #RPx        ! MAKE =WORK, SO SHORT
008E  B0 FB     237        CLR  IRQ+1       ! CLEAR INTERRUPT MASK
0090  8C 96     238        LD   rP01M,#150  ! RAM, FAST, INT STK
                239                         ! (10010110)
0092  FC 68     240        LD   rSPL,#ISTAK ! STACK POINTER
0094  4C AF     241        LD   rT0R,#175   ! INITIALLY 110 BAUD
0096  5C 0D     242        LD   rT0Rp1,#13  !  FOR UART (00001101)
0098  7C 41     243        LD   rP3M,#65    ! SERIAL I/O (01000001)
009A  1C 03     244        LD   rTMR,#0     ! START UART CLOCK (%03)
009C  CC 02     245        LD   rFLAGS,#2   ! SET XEQ
009E  31 13     246        SRP  #AC
00A0  B0 03     247        CLR  PORT3
00A2  4C FF     248        LD   rADH,#-1    ! POINT TO SWITCHES
00A4  5C FD     249        LD   rADL,#-3    ! = FFFD
00A6  C2 24     250        LDC  rACX,@rrADH ! GET THEM
                251 !      LD   rACX,#2     ! USE MUD DEFAULT !(commented out)
00A8  3C 80     252        LD   rAC,#128    ! POSITION SINGLE BIT
00AA  90 E3     253        RL   rAC         ! (THIS MAY TAKE A WHILE
00AC  2A FC     254        DJNZ rACX,#-2    !  BUT WHO CARES?)
00AE  A6 E3 20  255        CP   rACX,#32    ! IF NOT 110,
00B1  6B 02     256        JR   EQ $+4      !  (110 BAUD ALREADY SET)
00B3  39 F4     257        LD   T0R,rAC     !  THEN FIX UP TIMER
00B5  9F        258        EI               ! *&%$#@ UART
00B6  76 03 01  259        TM   PORT3,#1    ! IS BREAK SET?