瀏覽代碼

Add code to guess IOs

Baglio Tabifata 4 年之前
父節點
當前提交
7bafc65ff6
共有 2 個文件被更改,包括 16 次插入3 次删除
  1. 5 0
      src/net/hkzlab/dupal/App.java
  2. 11 3
      src/net/hkzlab/dupal/boardio/DuPALAnalyzer.java

+ 5 - 0
src/net/hkzlab/dupal/App.java

@@ -11,6 +11,11 @@ public class App {
         PALSpecs pspecs = new PAL16R6Specs();
         DuPALAnalyzer dpan = new DuPALAnalyzer(dpm, pspecs);
 
+        if(!dpm.enterRemoteMode()) {
+            System.out.println("Unable to enter remote mode!");
+            System.exit(-1);
+        }
+
         dpan.startAnalisys();
 
         /*

+ 11 - 3
src/net/hkzlab/dupal/boardio/DuPALAnalyzer.java

@@ -33,30 +33,38 @@ public class DuPALAnalyzer {
     }
 
     private void guessIOs() {
+        logger.info("guessIOs() - starting...");
+
         int inmask = pspecs.getINMask() | pspecs.getIO_WRITEMask();
 
+        logger.info("guessIOs() - inmask: " + Integer.toHexString(inmask));
+
         int read, out_pins = 0;
         for(int idx = 0; idx <= inmask; idx++) {
             if((idx & ~inmask) != 0) continue; // We need to skip this round
 
+            logger.info("guessIOs() -> clock run " + Integer.toHexString(idx) + " outs: " + Integer.toBinaryString(out_pins));
+
             for(int i_idx = 0; i_idx <= inmask; i_idx++) {
                 if((i_idx & ~inmask) != 0) continue; // We need to skip this round
+                
+                //logger.info("guessIOs() -> internal run " + Integer.toHexString(i_idx));
 
                 dpm.writeCommand(DuPALProto.buildWRITECommand((i_idx | pspecs.getIO_WRITEMask()) & ~(pspecs.getOEPinMask() | pspecs.getCLKPinMask() )));
                 dpm.writeCommand(DuPALProto.buildREADCommand());
                 read = DuPALProto.handleREADResponse(dpm.readResponse());
-                out_pins |= (read ^ pspecs.getIO_READMask());
+                out_pins |= (read ^ pspecs.getIO_READMask()) & pspecs.getIO_READMask();
                 
                 dpm.writeCommand(DuPALProto.buildWRITECommand(i_idx & ~(pspecs.getOEPinMask() | pspecs.getCLKPinMask() | pspecs.getIO_WRITEMask())));
                 dpm.writeCommand(DuPALProto.buildREADCommand());
                 read = DuPALProto.handleREADResponse(dpm.readResponse());
-                out_pins |= ((read ^ ~pspecs.getIO_READMask()) & pspecs.getIO_READMask());
+                out_pins |= ((read ^ ~pspecs.getIO_READMask())) & pspecs.getIO_READMask();
             }
 
             pulseClock(idx & ~pspecs.getOEPinMask());
         }
 
-        System.out.println("TEST - guessIO: " + Integer.toHexString(out_pins));
+        logger.info("guessIOs() - end... got:" + Integer.toHexString(out_pins) + " outs:" + Integer.toBinaryString(out_pins));
     }
 
     private void pulseClock(int addr) {