This program is an extension of the ETOPS program from Popular Electronics. This version allows for full 16-bit addresses.

This program is used by first placing the desired function code on the switches and then placing the computer into run mode. At this point the computer will wait for the high portion of the address. Enter the high byte of the address on the switches and then press the IN button. Then the computer will wait for the low byte of the address. Again, enter this portion of the address on the switches and press the IN button. Then the program will perform the requested function:

    1 0000:                        org     0
    2 0000: 90                     ghi     r0                  ; setup stack
    3 0001: b2                     phi     r2
    4 0002: f8 3b                  ldi     low scratch
    5 0004: a2                     plo     r2
    6 0005: e2                     sex     r2
    7 0006: 90                     ghi     r0
    8 0007: b3                     phi     r3
    9 0008: f8 0c                  ldi     low start
   10 000a: a3                     plo     r3
   11 000b: d3                     sep     r3
   12 000c: 6c          start:     inp     4                   ; get command code
   13 000d: 64                     out     4                   ; write to data displays
   14 000e: 22                     dec     r2                  ; keep pointing to scratch
   15 000f: a1                     plo     r1                  ; save command code
   16 0010: 3f 10                  bn4     $                   ; wait for in to be pressed
   17 0012: 37 12                  b4      $                   ; wait for release
   18 0014: 6c                     inp     4                   ; get high address
   19 0015: 64                     out     4                   ; display it
   20 0016: 22                     dec     r2
   21 0017: b0                     phi     r0                  ; put into address register
   22 0018: 3f 18                  bn4     $                   ; wait for in to be pressed
   23 001a: 37 1a                  b4      $                   ; wait for release
   24 001c: 6c                     inp     4                   ; get high address
   25 001d: 64                     out     4                   ; display it
   26 001e: 22                     dec     r2
   27 001f: a0                     plo     r0                  ; put into address register
   28 0020: 81                     glo     r1                  ; get command code
   29 0021: 3a 24                  bnz     notrun              ; jump if not run
   30 0023: d0                     sep     r0                  ; transfer control
   31 0024: ff 01       notrun:    smi     1                   ; check for view
   32 0026: 32 29                  bz      mnloop              ; go to main loop
   33 0028: 7b                     seq                         ; enable write mode
   34 0029: 3f 29       mnloop:    bn4     $                   ; wait for IN to be pressed
   35 002b: 80                     glo     r0
   36 002c: 52                     str     r2
   37 002d: 64                     out     4
   38 002e: 22                     dec     r2
   39 002f: 37 2f                  b4      $                   ; and released
   40 0031: 39 35                  bnq    noload               ; jump if not in load mode
   41 0033: 6c                     inp     4                   ; read switches
   42 0034: 50                     str     r0                  ; store into memory
   43 0035: 40          noload:    lda     r0                  ; get byte from memory
   44 0036: 52                     str     r2                  ; ready for out
   45 0037: 64                     out     4                   ; write to displays
   46 0038: 22                     dec     r2
   47 0039: 30 29                  br      mnloop              ; loop back
   48 003b: 00          scratch:   db      0