[Simh] Problem with default builds

Ron Young rly1 at embarqmail.com
Fri Aug 7 13:50:40 EDT 2015


Your message dated: Fri, 07 Aug 2015 09:47:14 -0700
--------

> The change was initially thought to be benign and attempted to allows for
> the simh source to be useful on systems with other than ASCII character
> sets (i.e. EBCDIC). There are other issues with simulators running on hosts
> with EBCDIC character sets which are unrelated to the source code. If/when
> those are also addressed, we’ll revisit how to solve the non ASCII source
> code issue as well.

One of things that I frequently did when moving character specific packages
to different machines is to run all input and output through two translation
vectors/arrays/etc. For example the old language grammer package "Lang-pak"
(written in fortran) has the following two arrays and support routines to
translate terminal I/O. When I moved the code to a Cyber, all I had to do
to change character sets is redo the arrays. Of course this doesn't address
the architectual differences, but converting data item to "standard" format
using things like htons, htonl ntohs, ntohl can help alot.

-ron

      BLOCKDATA
      COMMON /TRANS/ IE2A(256), IA2E(256)
      DATA IE2A
     + /   0,   1,   2,   3, 156,   9, 134, 127,
     +   151, 141, 142,  11,  12,  13,  14,  15,
     +    16,  17,  18,  19, 157, 133,   8, 135,
     +    24,  25, 146, 143,  28,  29,  30,  31,
     +   128, 129, 130, 131, 132,  10,  23,  27,
     +   136, 137, 138, 139, 140,   5,   6,   7,
     +   144, 145,  22, 147, 148, 149, 150,   4,
     +   152, 153, 154, 155,  20,  21, 158,  26,
     +    32, 160, 161, 162, 163, 164, 165, 166,
     +   167, 168,  91,  46,  60,  40,  43,  93,
     +    38, 169, 170, 171, 172, 173, 174, 175,
     +   176, 177,  33,  36,  42,  41,  59,  94,
     +    45,  47, 178, 179, 180, 181, 182, 183,
     +   184, 185, 124,  44,  37,  95,  62,  63,
     +   186, 187, 188, 189, 190, 191, 192, 193,
     +   194,  96,  58,  35,  64,  39,  61,  34,
     +   195,  97,  98,  99, 100, 101, 102, 103,
     +   104, 105, 196, 197, 198, 199, 200, 201,
     +   202, 106, 107, 108, 109, 110, 111, 112,
     +   113, 114, 203, 204, 205, 206, 207, 208,
     +   209, 126, 115, 116, 117, 118, 119, 120,
     +   121, 122, 210, 211, 212, 213, 214, 215,
     +   216, 217, 218, 219, 220, 221, 222, 223,
     +   224, 225, 226, 227, 228, 229, 230, 231,
     +   123,  65,  66,  67,  68,  69,  70,  71,
     +    72,  73, 232, 233, 234, 235, 236, 237,
     +   125,  74,  75,  76,  77,  78,  79,  80,
     +    81,  82, 238, 239, 240, 241, 242, 243,
     +    92, 159,  83,  84,  85,  86,  87,  88,
     +    89,  90, 244, 245, 246, 247, 248, 249,
     +    48,  49,  50,  51,  52,  53,  54,  55,
     +    56,  57, 250, 251, 252, 253, 254, 255/
      DATA IA2E
     + /   0,   1,   2,   3,  55,  45,  46,  47,
     +    22,   5,  37,  11,  12,  13,  14,  15,
     +    16,  17,  18,  19,  60,  61,  50,  38,
     +    24,  25,  63,  39,  28,  29,  30,  31,
     +    64,  90, 127, 123,  91, 108,  80, 125,
     +    77,  93,  92,  78, 107,  96,  75,  97,
     +   240, 241, 242, 243, 244, 245, 246, 247,
     +   248, 249, 122,  94,  76, 126, 110, 111,
     +   124, 193, 194, 195, 196, 197, 198, 199,
     +   200, 201, 209, 210, 211, 212, 213, 214,
     +   215, 216, 217, 226, 227, 228, 229, 230,
     +   231, 232, 233,  74, 224,  79,  95, 109,
     +   121, 129, 130, 131, 132, 133, 134, 135,
     +   136, 137, 145, 146, 147, 148, 149, 150,
     +   151, 152, 153, 162, 163, 164, 165, 166,
     +   167, 168, 169, 192, 106, 208, 161,   7,
     +    32,  33,  34,  35,  36,  37,   6,  23,
     +    40,  41,  42,  43,  44,   9,  10,  27,
     +    48,  49,  50,  51,  52,  53,  54,   8,
     +    56,  57,  58,  59,   4,  20,  62, 225,
     +    65,  66,  67,  68,  69,  70,  71,  72,
     +    73,  81,  82,  83,  84,  85,  86,  87,
     +    88,  89,  98,  99, 100, 101, 102, 103,
     +   104, 105, 112, 113, 114, 115, 116, 117,
     +   118, 119, 120, 128, 138, 139, 140, 141,
     +   142, 143, 144, 154, 155, 156, 157, 158,
     +   159, 160, 170, 171, 172, 173, 174, 175,
     +   176, 177, 178, 179, 180, 181, 182, 183,
     +   184, 185, 186, 187, 188, 189, 190, 191,
     +   202, 203, 204, 205, 206, 207, 218, 219,
     +   220, 221, 222, 223, 234, 235, 236, 237,
     +   238, 239, 250, 251, 252, 253, 254, 255/
      END

      subroutine tread(in,kf,ilen)
      character*1000 inputline
      character*480 request
      dimension in(1)
      common /trans/ ie2a(256), ia2e(256)
      common /iocom/ iout

      request=''
      irlen=0

 10   read (*,'(a)') inputline
      ilen = len(inputline)
 1    if (inputline(ilen:ilen).eq.' '.and.ilen.gt.0) then
         ilen = ilen - 1
         goto 1
      endif

      request(irlen+1:irlen+ilen) = inputline(1:ilen)
      irlen = irlen + ilen

      if (inputline(ilen:ilen).eq.'$') then
         irlen = irlen - 1
         goto 10
      endif

      ilen = irlen
      do 2 i = 1, ilen
         in(kf+i-1) = ia2e(ichar(request(I:I))+1)
 2    continue
      return
      end

      subroutine twrite(in,kf,ilen)
      character*1000 outputline
      character*1000 encodestring
      dimension in(1)
      common /iocom/ iout

      outputline = encodestring(in,kf,ilen)
      write(iout,'(a)') outputline(1:ilen)
      return
      end

      character*(*) function encodestring(LN,kf,LEN)
      dimension ln(1)
      COMMON /TRANS/ IE2A(256), IA2E(256)

      encodestring = ''
      do 1 i = 1, len
         encodestring(i:i) = char(ie2a(ln(i+kf-1)+1))
 1    continue
      return
      end
				  
===============================================================================
Ron Young				rly1 at embarqmail.com


More information about the Simh mailing list