public DFS addBankJumpPointerTable(int address, int length) {

    rom.labelType[address] = 3;

    for(int i=0; i<length; i++) {
      int ca = address + 3*i;
      rom.type[ca] = ROM.DATA_BANKJUMPPOINTER;
      if (i > 0 && i % 8 == 0)
        rom.comment[ca] = "$" + Util.toHex(i);

      int goalBank = rom.data[ca] & 0xFF;
      int goalAddress = ((rom.data[ca+1]&0xFF) | ((rom.data[ca+2]&0xFF) << 8)) & 0xFFFF;

      if(goalAddress >= 0x8000)
        System.out.println("jump tabel entry to non-RAM location "+Integer.toHexString(goalAddress)+" at "+Integer.toHexString(address)+" element "+i);
      else {
        int fullAddress = goalAddress + (goalBank-1)*0x4000;
        //System.out.println("addJump "+Integer.toHexString(fullAddress));
        rom.payloadAsBank[ca] = fullAddress;
        rom.payloadAsAddress[ca+1] = fullAddress;
        if(rom.label[fullAddress] == null)
          rom.labelType[fullAddress] = Math.max(rom.labelType[fullAddress], 3);
        dfsStack.push(new DFSStackElem(fullAddress, new CPUState(), true));
      }
    }
    return this;
  }