[Simh] UDA-50 - want to use 'odd byte count'

Hoyer Falko Falko.Hoyer at austrocontrol.at
Tue Jul 10 13:16:02 EDT 2007


Hi,

I'm using SIMH and want to use our special written application software
on it. this application was originally designed to run on massbus
controller-disks or now we are using HSC's.

This SW uses QIOW to read/write to/from the disk and supplies:

qio.p1= buffer start address
qio.p2= transfer size
qio.p3= disk block address

My problem now:
the simh is emulating a UDA-50 controller which does not allow a odd
byte count (and I know this is according spec) - but our SW do this.
Currently I don't want to do a change to our application because it is
too sensitive and still running on the "real VAX (6x00)". so for us the
easier approch would be to modify SIMH.

Without any change we got the QIO status "%SYSTEM-F-IVBUFLEN, invalid
buffer length" (= 034C hex)- as expected on UDA-50 - if an attemt to
write odd byte count is made.

now we tried to modify pdp11_rq.c by ourself by incrementing (the user
supplied) byte count in case of odd value - but without full success.

the change we tried was as follows :

==== part of pdp11_rq.c ================

/* Data transfer commands */

t_bool rq_rw (MSC *cp, int32 pkt, t_bool q)
{
uint32 lu = cp->pak[pkt].d[CMD_UN];                     /* unit # */
uint32 cmd = GETP (pkt, CMD_OPC, OPC);                  /* opcode */
uint32 sts;
UNIT *uptr;

/* insert start hy/pa */
uint32 ll = GETP32 (pkt, RW_BCL);
if (ll & 1) {
     fprintf (sim_deb, "+++ len  = %d +++\n", ll);
	 ll++;
     PUTP32 (pkt, RW_BCL, ll);
     ll = GETP32 (pkt, RW_BCL);
     fprintf (sim_deb, "+++ len  = %d +++\n", ll);
}
/* insert end hy/pa */

if (uptr = rq_getucb (cp, lu)) {                        /* unit exist?
*/
..... rest unchanged .....
==============================

with this change applied now we get the following status instead:
%SYSTEM-F-INCSEGTRA, incomplete segmented transfer request posted (=
2234 hex) which is again not what I like.

my question: how can I make this odd byte count possible on that
controller-simulation and/or from where (which code) is this status code
(%x2234) actually coming from ?

any help would be very appreciated.

many thanks in advance
Falko



More information about the Simh mailing list