Menu

es40 scsi emulation

2008-01-05
2013-04-03
  • Fausto Saporito

    Fausto Saporito - 2008-01-05

    Hello all,

    in the latest CVS, I saw a config file including the SCSI configuration.
    I tried that, but it seems the ROM doesn't recognize any disk attached, just the the SCSI ID 7 (the controller). It takes a lot of time saying Waiting for pka0.7.0.16.0 to poll (16 times), then a sh dev shows only the pka0.

    Is the SCSI emulation working?

    thanks,
    fausto

     
    • Fausto Saporito

      Fausto Saporito - 2008-01-06

      Hello,

      tried with the latest cvs (01/06), but still SCSI doesn't work: always stuck on Waiting for pka0.7.0.16.0 to poll, and no device in "sh dev" output.

      regards,
      fausto

       
      • Camiel Vanderhoeven

        That is strange indeed. I just tested SCSI again, and it still works for me. (although it causes problems when a SCSI disk is used to boot OpenVMS from).

         
    • Fausto Saporito

      Fausto Saporito - 2008-01-06

      Camiel, is there some DEBUG option I can enable in order to give you more info?

      regards,
      fausto

       
    • Camiel Vanderhoeven

      Hi Fausto,

      There's a lot of commented-out printf-statements in the SCSI code; you
      might want to uncomment these (or perhaps even wrap them with #if
      defined(DEBUG_SCSI) lines, that way it would be easy to turn on and
      off, and then we could put it in CVS like that).

      Camiel.

       
    • Fausto Saporito

      Fausto Saporito - 2008-01-07

      Hi Camiel,

      ok. I'll enable some debug output with #if macro.
      During the "wait for pka to poll..." do you know what piece of code is more involved?

      thanks,
      fausto

       
      • Camiel Vanderhoeven

        Hi Fausto,

        During the "waiting for pka to poll..." messages, the SCSI controller is running a script that tries to identify each target. The printf statements in CSym53C895::execute() are probably the most important.

        Camiel.

         
    • Fausto Saporito

      Fausto Saporito - 2008-01-07

      Hi Camiel,

      i did some tests...
      Strange things happen during the script execution. I also noticed that the printf commands if finish with "." sometimes print junk characters... !!! It seems the memory is not cleaned.

      Also, doing these tests I got the keyboard bug... and this bug persist through reboot! Maybe the flash.rom and dpr.rom must be deleted (?)

      In config file I defined a disk0.0 and disk0.14
      The first one is system disk, the other is CDROM. Basically the second number should be the target number, if I understood well. So the script should find something with SELECT 0 and SELECT 14, right?

      This is the output:

      SYM: start SCSI bus reset.
      SYM: end SCSI bus reset.
      SYM: 801c7600: SELECT 0 $$
      In Select_target: 0 $$
      state.phase = -1
      In get_disk()
      Bus: 0, Dev: 0$$
      NumBus: 1, NumDev: 16$$
      Setting SCSI parameter... in PTD
      SYM: Ready for transfer.
      SYM: Reading table at DSA(801d9520)+DSPS(00000004) = 801d9524.
      SYM: 801c7610: MOVE Start/count 801d9550, 6
      SYM.0 PHASE 6: c0 01 03 01 00 00
      SYM: Ready for transfer.
      SYM: 801c76d8: MOVE Start/count 801c78f0, 1
      SYM.0 PHASE 7: 01
      SYM: 801c7708: CLEAR ack
      SYM: Ready for transfer.
      SYM: 801c7710: MOVE Start/count 801c7728, 1
      SYM.0 PHASE 7: 03
      SYM: 801c7718: CLEAR ack
      SYM: Ready for transfer.
      SYM: 801c7728: MOVE Start/count 801c78f1, 3
      SYM.0 PHASE 7: 01 00 00
      SYM: start SCSI bus reset.
      SYM: end SCSI bus reset.
      SYM: 801c7600: SELECT 1 $$
      In Select_target: 1 $$
      state.phase = 2
      SYM: start SCSI bus reset.
      SYM: end SCSI bus reset.
      SYM: 801c7600: SELECT 2 $$
      In Select_target: 2 $$
      state.phase = 2
      SYM: start SCSI bus reset.
      SYM: end SCSI bus reset.
      SYM: 801c7600: SELECT 3 $$
      In Select_target: 3 $$
      state.phase = 2
      SYM: start SCSI bus reset.
      SYM: end SCSI bus reset.
      SYM: 801c7600: SELECT 4 $$
      In Select_target: 4 $$
      state.phase = 2
      SYM: start SCSI bus reset.
      SYM: end SCSI bus reset.
      SYM: 801c7600: SELECT 5 $$
      In Select_target: 5 $$
      state.phase = 2
      SYM: start SCSI bus reset.
      SYM: end SCSI bus reset.
      SYM: 801c7600: SELECT 6 $$
      In Select_target: 6 $$
      state.phase = 2
      SYM: start SCSI bus reset.
      SYM: end SCSI bus reset.
      SYM: 801c7600: SELECT 8 $$
      In Select_target: 8 $$
      state.phase = 2
      SYM: start SCSI bus reset.
      SYM: end SCSI bus reset.

      [etc... the same until SELECT 15]

      the script seems continue after the Alpha prompt:

      SYM: 801c7600: SELECT 0 $$
      In Select_target: 0 $$
      state.phase = 2
      SYM: start SCSI bus reset.
      SYM: end SCSI bus reset.0 [NOTE THE JUNK CHARS!!! "0"]
      SYM: 801c7600: SELECT 1 $$
      In Select_target: 1 $$
      state.phase = 2

       
      • Camiel Vanderhoeven

        Hi Fausto,

        What I can see happening is a message sequence:

        MESSAGE OUT phase: controller sends c0 (identify w/disconnect privilege), 01 03 01 00 00 (WDTR)
        MESSAGE IN phase: target sends 01 03 01 00 00 (WDTR)

        After the two WDTR messages, the controller and target have agreed to communicate using 16-bit transfers. Normally, the next phase would now be the command phase; instead, a scsi bus reset occurs.

        Could you try adding

          PT.reselected = false;

        To CSym53C895::select_target(int target)

        Between the other PT.xxx = false;  lines, and let me know what happens?

        Also, please uncomment the printf-statements in CSym53C895::end_xfer, as these show the SCSI bus phase transitions.

        The junk characters might simply be the last characters of the "2992 | 00000000006788C0" text that shows where the PC counter is that are left on the screen.

        You can always delete the dpr.rom and flash.rom files; if these have become corrupted somehow (or possibly after a configuration change) I guess it could lead to strange errors. The only thing you might lose are some SRM variables (like sys_serial_num, auto_action, etc.)

        Camiel.

         
    • Fausto Saporito

      Fausto Saporito - 2008-01-07

      Camiel,

      I did the modifications you told me.
      I have again the keyboard problem... after SCSI I'll enable the debug for KBD too...

      Now this is the output:

      SYM: start SCSI bus reset.
      SYM: end SCSI bus reset.
      SYM: Execution started @ 801c7600.
      SYM: EXECUTING SCRIPT
      SYM: INS @ 801c7600, 801c7604
      SYM: INS @ 1c7600, 1c7604
      SYM: INS = 41, 0, 801c78b8
      SYM: 801c7600: SELECT 0 $$
      In Select_target: 0 $$
      state.phase = -1
      In get_disk()
      Bus: 0, Dev: 0$$
      NumBus: 1, NumDev: 16$$
      Setting SCSI parameter... in PTD
      SYM: EXECUTING SCRIPT
      SYM: INS @ 801c7608, 801c760c
      SYM: INS @ 1c7608, 1c760c
      SYM: INS = 9e, 30000, 65
      SYM: EXECUTING SCRIPT
      SYM: INS @ 801c7610, 801c7614
      SYM: INS @ 1c7610, 1c7614
      SYM: INS = 1e, 0, 4
      SYM: INS = Block Move (i 0, t 1, opc 1, phase 6
      SYM: Ready for transfer.
      SYM: Reading table at DSA(801d9520)+DSPS(00000004) = 801d9524.
      SYM: 801c7610: MOVE Start/count 801d9550, 6
      SYM.0 PHASE 6: c0 01 03 01 00 00
      SYM: Transition from phase 6 to phase 7.
      SYM: EXECUTING SCRIPT
      SYM: INS @ 801c7618, 801c761c
      SYM: INS @ 1c7618, 1c761c
      SYM: INS = 82, b0000, 801c7638
      SYM: EXECUTING SCRIPT
      SYM: INS @ 801c7620, 801c7624
      SYM: INS @ 1c7620, 1c7624
      SYM: INS = 83, b0000, 801c7698
      SYM: EXECUTING SCRIPT
      SYM: INS @ 801c7628, 801c762c
      SYM: INS @ 1c7628, 1c762c
      SYM: INS = 87, b0000, 801c76d8
      SYM: EXECUTING SCRIPT
      SYM: INS @ 801c76d8, 801c76dc
      SYM: INS @ 1c76d8, 1c76dc
      SYM: INS = f, 1, 801c78f0
      SYM: INS = Block Move (i 0, t 0, opc 1, phase 7
      SYM: Ready for transfer.
      SYM: 801c76d8: MOVE Start/count 801c78f0, 1
      SYM.0 PHASE 7: 01
      SYM: EXECUTING SCRIPT
      SYM: INS @ 801c76e0, 801c76e4
      SYM: INS @ 1c76e0, 1c76e4
      SYM: INS = 80, c0004, 801c77d8
      SYM: EXECUTING SCRIPT
      SYM: INS @ 801c76e8, 801c76ec
      SYM: INS @ 1c76e8, 1c76ec
      SYM: INS = 80, c7f80, 801c7760
      SYM: EXECUTING SCRIPT
      SYM: INS @ 801c76f0, 801c76f4
      SYM: INS @ 1c76f0, 1c76f4
      SYM: INS = 80, c0001, 801c7708
      SYM: EXECUTING SCRIPT
      SYM: INS @ 801c7708, 801c770c
      SYM: INS @ 1c7708, 1c770c
      SYM: INS = 60, 40, 0
      SYM: 801c7708: CLEAR ack
      SYM: EXECUTING SCRIPT
      SYM: INS @ 801c7710, 801c7714
      SYM: INS @ 1c7710, 1c7714
      SYM: INS = f, 1, 801c7728
      SYM: INS = Block Move (i 0, t 0, opc 1, phase 7
      SYM: Ready for transfer.
      SYM: 801c7710: MOVE Start/count 801c7728, 1
      SYM.0 PHASE 7: 03
      SYM: EXECUTING SCRIPT
      SYM: INS @ 801c7718, 801c771c
      SYM: INS @ 1c7718, 1c771c
      SYM: INS = 60, 40, 0
      SYM: 801c7718: CLEAR ack
      SYM: EXECUTING SCRIPT
      SYM: INS @ 801c7720, 801c7724
      SYM: INS @ 1c7720, 1c7724
      SYM: INS = 80, c0000, 801c7738
      SYM: EXECUTING SCRIPT
      SYM: INS @ 801c7728, 801c772c
      SYM: INS @ 1c7728, 1c772c
      SYM: INS = f, 3, 801c78f1
      SYM: INS = Block Move (i 0, t 0, opc 1, phase 7
      SYM: Ready for transfer.
      SYM: 801c7728: MOVE Start/count 801c78f1, 3
      SYM.0 PHASE 7: 01 00 00
      SYM: Transition from phase 7 to phase 2.
      SYM: EXECUTING SCRIPT
      SYM: INS @ 801c7730, 801c7734
      SYM: INS @ 1c7730, 1c7734
      SYM: INS = 98, 80000, 7
      SYM: start SCSI bus reset.
      SYM: end SCSI bus reset.
      SYM: Execution started @ 801c7600.
      SYM: EXECUTING SCRIPT
      SYM: INS @ 801c7600, 801c7604
      SYM: INS @ 1c7600, 1c7604
      SYM: INS = 41, 10000, 801c78b8
      SYM: 801c7600: SELECT 1 $$
      In Select_target: 1 $$
      state.phase = 2
      SYM: EXECUTING SCRIPT
      SYM: INS @ 801c7608, 801c760c
      SYM: INS @ 1c7608, 1c760c
      SYM: INS = 9e, 30000, 65
      SYM: start SCSI bus reset.
      SYM: end SCSI bus reset.
      SYM: Execution started @ 801c7600.
      SYM: EXECUTING SCRIPT
      SYM: INS @ 801c7600, 801c7604
      SYM: INS @ 1c7600, 1c7604
      SYM: INS = 41, 20000, 801c78b8
      SYM: 801c7600: SELECT 2 $$
      In Select_target: 2 $$
      state.phase = 2
      SYM: EXECUTING SCRIPT
      SYM: INS @ 801c7608, 801c760c
      SYM: INS @ 1c7608, 1c760c
      SYM: INS = 9e, 30000, 65
      SYM: start SCSI bus reset.
      SYM: end SCSI bus reset.
      SYM: Execution started @ 801c7600.
      SYM: EXECUTING SCRIPT
      SYM: INS @ 801c7600, 801c7604
      SYM: INS @ 1c7600, 1c7604
      SYM: INS = 41, 30000, 801c78b8
      SYM: 801c7600: SELECT 3 $$
      In Select_target: 3 $$
      state.phase = 2
      SYM: EXECUTING SCRIPT
      SYM: INS @ 801c7608, 801c760c
      SYM: INS @ 1c7608, 1c760c
      SYM: INS = 9e, 30000, 65

      [etc... up to SELECT 15]

       
    • Fausto Saporito

      Fausto Saporito - 2008-01-12

      Hello again,

      testing the SCSI interface, with the latest CVS (I updated the source 5 mins ago), I have a new error on the DOS cmd prompt:

      Could not arbitrate for the SCSI bus.
      scsi bus busy...
      Could not arbitrate for the SCSI bus.
      scsi bus busy...
      Could not arbitrate for the SCSI bus.
      scsi bus busy...
      Could not arbitrate for the SCSI bus.
      scsi bus busy...
      Could not arbitrate for the SCSI bus.
      scsi bus busy...
      Could not arbitrate for the SCSI bus.
      scsi bus busy...
      [for ever]

      and I suppose it's a loop.
      Now the system is hand at "Testing the system", and I have no more the "Waiting for pka to poll..." messages.

      regards,
      fausto

       
    • Fausto Saporito

      Fausto Saporito - 2008-01-13

      Just another info, about the above issue.
      Before the loop I have on DOS console these messages:

      pci0.16(sym53c895).disk0.0(file): MSG: identify w/disconnect priv
      pci0.16(sym53c895).disk0.0(file): MSG: extended: SDTR.

      Indeed my conf has disk0.0 as hard disk and disk0.14 as cdrom.

      regards,
      fausto

       

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.