pdp-10 / klh10 Goto Github PK
View Code? Open in Web Editor NEWCommunity maintained version of Kenneth L. Harrenstien's PDP-10 emulator.
License: Other
Community maintained version of Kenneth L. Harrenstien's PDP-10 emulator.
License: Other
Hello,
I've found a couple of problems:
System restarting, wait...
Date and time is: Thursday, 16-November-2017 4:16AM
Why reload? cm
Run CHECKD?
(Y OR N) n
DDMP: Started
[KNILDR: Loading microcode version 1(172) into Ethernet channel 0]
[dpni20: Warning - cannot lock memory]
[dpni20: Can't open VDE device "/tmp/vde" - No such file or directory]
[dpni20: ifc "/tmp/vde" => ether f2:b:a4:d:81:90]
[dpni20: VHOST 0.0.0.0]
The boot sequence continues but the simulator hangs and it has to be killed.
/tmp/vde exists and it is under vde control:
MacJordi:~ jguillaumes$ ls -ld /tmp/vde
drwxrwxrwx 3 jguillaumes wheel 96 Nov 16 13:16 /tmp/vde
The dpni20 program is set said:
MacJordi:~ jguillaumes$ ls -l /usr/local/bin/dpni20
-rwsr-sr-x 1 root staff 47328 Nov 16 13:00 /usr/local/bin/dpni20
And this are the contents of my INI file:
; Define basic device config - one DTE, one disk, one tape
devdef dte0 200 dte master
devdef rh0 540 rh20
devdef rh1 544 rh20
devdef dsk0 rh0.0 rp type=rp07 format=dbd9 dppath=/usr/local/bin/dprpxx
devdef mta0 rh1.0 tm03 type=tu45
; Set Ethernet address
devdef ni0 564 ni20 dedic=true ifmeth=vde decnet=true ifc=/tmp/vde dppath=/usr/local/bin/dpni20
; Define the idle device on 700
devdef idler 700 host
; Set switch register
set sw=254200,,147
; Set console lights I/O base register
;Uncomment the following line if you have a Panda display.
;lights 378
; Load disk bootstrap directly
load boot.sav
; Ready to GO
I'm about to migrate my oldest TOPS-20 system from klh-2.0h (last touched 2012) to this version, and discovered that NI20 tap interfaces don't work as they used to. It seems there is a little bit of confusion about the usefulness of tap-only devices (as opposed to tap+bridge devices), given comments in the code.
In my experience, tap-only devices are very useful as tunnel devices if they have their IP addresses set up (as they were in 2.0h). I just committed 510aedc which changes the crucial test to whether (in effect) the tunaddr
parameter was given (indicating that it is to be used as a tunnel device) rather than checking pfdata->pf_ip4_only
(indicating a tun
(rather than tap
) device).
I'm not sure if the other places in the code where tap+bridge is mentioned also need looking at.
And I think OSN_USE_IPONLY
should be abolished in favor of pfdata.pf_ip4_only
, but that's another matter.
(Sorry if this looks more like a rant than an issue.)
klh10 absolutely eats every sysvshm resource I have on my FreeBSD system - and them for some reason I can't ipcrm
them, despite it saying it succeeded.
No particularly helpful errors are returned indicating it is shm-related, either.
I am running ITS from this repo https://github.com/PDP-10/its
My home network is 192.168.0.0/24
I have built and installed on a Raspberry Pi 4 with wired Ethernet, Static IP 192.168.1.223. I also reserve 192.168.1.45 on the router to make sure it does not get handed out by DHCP.
When I SSH into the Pi I cannot Ping or FTP to 192.168.1.100 or ping 192.168.0.45 once ITS is running.
Is there any other step I am missing?
I also tried setting the gateway to .223 but that did not work either.
Any help would be appreciated
Mike
The PDP-10 (specifically the KA-10) was the first computer I ever used and my first job was as a TOPS-20 assembly language programmer, so I wanted to play around. I am on a UBUNTU linux system. After some bumbling around I got it built and it 'starts' ok
Compiled for unknown-linux-gnu on x86_64 with word model USEINT
Emulated config:
CPU: KL10-extend SYS: T20 Pager: KL APRID: 3600
Memory: 8192 pages of 512 words (SHARED)
Time interval: INTRP Base: OSGET
Interval default: 60Hz
Internal clock: OSINT
Other: MCA25 CIRC JPC DEBUG PCCACHE CTYINT EVHINT
Devices: DTE RH20 RPXX(DP) TM03(DP) NI20(DP)
[MEM: Allocating 8192 pages shared memory, clearing...done]
KLH10# ; Sample KLH10.INI for initial installation
KLH10#
KLH10# ; Define basic device config - one DTE, one disk, one tape.
KLH10# ; Use two RH20s because TOPS-10 doesn't like mixing disk and tape on
KLH10# ; the same controller (TOPS-20 is fine).
KLH10#
KLH10# devdef dte0 200 dte master
KLH10# devdef rh0 540 rh20
KLH10# ;devdef rh1 544 rh20
KLH10# devdef dsk0 rh0.0 rp type=rp06 format=dbd9
KLH10# ;devdef mta0 rh1.0 tm03 type=tu45
KLH10#
KLH10# ; Need KLNI to avoid LAPRBF BUGCHKs - use valid address if known
KLH10# ;
KLH10# ; devdef ni0 564 ni20 ipaddr=10.0.0.51
KLH10# ; The (NetBSD/FreeBSD/Linux) version with tap(4) and bridge(4) creates the
KLH10# ; named tap device dynamically and bridges it to the default interface.
KLH10# ; If you want it differently (for instance routed instead of bridged),
KLH10# ; you can create the tap yourself and it will be used as it is.
KLH10# ;devdef ni0 564 ni20 ipaddr=10.0.0.51 ifmeth=tap+bridge ifc=tap0 dedic=true
KLH10# ; Use ifmeth=tap if you handle the bridging or routing yourself.
KLH10#
KLH10# ; Use this version if you want to use libpcap for ethernet access.
KLH10# ;devdef ni0 564 ni20 ipaddr=10.0.0.51 ifmeth=pcap ifc=re0 dedic=false
KLH10#
KLH10# ; Load disk bootstrap directly
KLH10# load boot.sav
Using word format "c36"...
Loaded "boot.sav":
Format: DEC-CSAV
Data: 4630, Symwds: 0, Low: 040000, High: 054641, Startaddress: 040000
Entvec: JRST (120 ST: 0, 124 RE: 0, 137 VR: 0,,0)
KLH10#
KLH10# ; Now ready to GO
KLH10# [EOF on klt20.ini]
KLH10# [Creating RP06 disk file "RH20.RP06.1"]
It just stops here with a zero length file created. Does anyone know what I am doing wrong? When I try the inst-klt20.ini file, it can't find the .tap file. Any help would be appreciated.
John
It seems the console device can get into trouble if it receives input too fast. Error messages typically look like:
[CTYI: 153 => 553, old 465]
Sorry I don't have more details right now, but I can probably cook up a test case.
If you e.g. do "make base-ks-its", it would suffice to create kn10-ks-its once, but the Makefile created by mk/bld.mk repeats the "make base-ks-its" in all subdirectories, i.e. in bld-kl, bld-ks, and in bld-ks-its.
It would seem more reasonable to only do "make base-kl" in bld-kl, "make base-ks" in bld-ks, and "make base-ks-its" in bld-ks-its. Saves time, at least.
Just putting out a feeler. Would anyone be interested in adding support for the KA10 processor and devices? There is some vestigial code for it here and there.
Make it possible to mount a tape image R/W, or change from R/O to R/W.
Is there already a way? If so, I haven't found it.
KLH10 doesn't have an ethernet card for the KS10.
There is half-finished support in ITS for using an NI1010. @atsampson is working on adding support for a DEUNA card.
I tried building base-ks-its on Ubuntu 14.04 LTS and ran into build issues, and after fixing the easy one preventing kn10-ks from building, could not bring up ITS.
The compilation issue is a reference to asm/io.h in dvlites.c. This was easily fixed by changing "asm" to "sys". This fix allows kn10-ks to build. Another issue prevented dpimp from building having to do with "struct ifreq" not having a member named "ifr_space".
But most importantly, ignoring the failed dpimp build, and trying to run ITS with "kn10-its klh10-md.ini", KLH10 makes it through the ".ini" file, but when I try to start (by typing "GO"), I get the following error:
KLH10# go
Starting KN10 at loc 0144430...
Salvager 260
*** ERROR *** THE SYSTEM MAY NOT BE BROUGHT UP
DDT
I've built kn10-kl on the latest Stretch version of Raspbian (2018-3-13) for a Raspberry Pi 2. It works perfectly running TOPS-20 but when I try to boot TOPS-10 I get the following error loading the boot loader:
KLH10 2.0k-Rhialto (MyKL) built Mar 22 2018 20:45:27
Copyright ? 2002 Kenneth L. Harrenstien -- All Rights Reserved.
This program comes "AS IS" with ABSOLUTELY NO WARRANTY.
Compiled for unknown-linux-gnueabihf on armv7l with word model USEINT
Emulated config:
CPU: KL10-extend SYS: T20 Pager: KL APRID: 3600
Memory: 8192 pages of 512 words (SHARED)
Time interval: INTRP Base: OSGET
Interval default: 60Hz
Internal clock: OSINT
Other: MCA25 CIRC JPC DEBUG PCCACHE CTYINT EVHINT
Devices: DTE RH20 RPXX(DP) TM03(DP) NI20(DP)
[MEM: Allocating 8192 pages shared memory, clearing...done]
KLH10# ; KLH10 configuration for TOPS-10 test system
KLH10#
KLH10# ; DTE requires ackdly to avoid T10 race condition
KLH10# devdef dte0 200 dte master ackdly=5
KLH10# devdef rh0 540 rh20
KLH10# devdef rh1 544 rh20
KLH10# devdef dsk0 rh0.0 rp dppath=/usr/local/bin/dprpxx type=rp06 sn=4747 format=dbd9 path=T10-RP06.0-dbd9
KLH10# devdef dsk1 rh0.1 rp dppath=/usr/local/bin/dprpxx type=rp06 sn=1026 format=dbd9 path=T10-RP06.1-dbd9
KLH10# devdef mta0 rh1.0 tm03 dppath=/usr/local/bin/dptm03 type=TU77
KLH10#
KLH10# ; NI: param "c3dly" to avoid T10 race.
KLH10# ; NI: param "rdtmo" to avoid system hangups with OSF/1 V3.0
KLH10# ;
KLH10# ; Decnet node TWONKY, 9.429
KLH10# devdef ni0 564 ni20 dppath=/usr/local/bin/dpni20 dedic=true ifmeth=tap+bridge ifc=tap1 decnet=1 doarp=0 enaddr=aa:00:04:00:1c:fc dpdelay=12 c3dly=2 rdtmo=3
KLH10#
KLH10# load klboot.exe
Using word format "c36"...
Loading aborted, read failed for file page 1, proc page 0
Loading aborted, read failed for file page 2, proc page 448
Loading aborted, read failed for file page 4, proc page 451
Loaded "klboot.exe":
Format: DEC-PEXE
Data: 0, Symwds: 0, Low: 01000000, High: 0, Startaddress: 0
Entvec: 0 wds at 0
KLH10# [EOF on klt10.ini]
@Pul-Ess discovered that KLH10 will crash if the host machine is out of memory and allocation of a shared memory segment fails.
Specifically, inside dvrpxx.c rp_clear will fail if rp->rp_sdprp is NULL.
On a NetBSD system to which I have access, the autogen.sh script hangs in aclocal (repeatable running aclocal interactively) with a prompt "root#"
Has anyone built klh10 under NetBSD before?
See https://github.com/PDP-10/klh10/runs/3000438023 :
Cirrus CI / main failed 2 hours ago in 3m 48s
Task Summary
Instruction main failed in 00:01
Details
✅ 00:01 clone
✅ 03:44 install
❌ 00:01 main
./autogen.sh
autom4te-2.69: need GNU m4 1.4 or later: /usr/local/bin/gm4
aclocal: error: autom4te failed with exit status: 1
autom4te-2.69: need GNU m4 1.4 or later: /usr/local/bin/gm4
autom4te-2.69: need GNU m4 1.4 or later: /usr/local/bin/gm4
autoheader-2.69: '/usr/local/bin/autom4te-2.69' failed with exit status: 1
Not running configure in the source directory.
mkdir tmp
cd tmp
../configure --enable-lights
/tmp/scripts9566c74d10037c4d7bbb0407d1e2c649.sh: ../configure: not found
Exit status: 127
The Chaosnet UDP tunnel listens to all interfaces, including the tun interface used by the IMP.
I used a firewall rule to forward all Chaosnet UDP packets from the host to the ITS IP number. Then @b4 asked if this was necessary, and that got me thinking that it shouldn't be. But it was, and it worked. When I removed the rule, it still worked.
So I looked in the code, and there it was: dpchudp.c binds to INADDR_ANY.
Maybe chudp should accept a parameter, say if
, and bind only to those interfaces.
Has anyone tested KLH10 on an Apple M1 machine?
I decided to feed the source (well, the ITS build, for the moment) through the scan-build utility, and it did indeed turn up a bunch of issues, some of which are trivial patches (e.g. unused or uninitialized variables), others (use-after-frees, for example) that are probably best subject to the gaze of someone who has actually spent time with the code, and in any event I don't want to step on anyone's toes. Would it be best just to attach the results for people to pick over?
There are three KLH10 copies at GitHub. I suggest merging them all into one.
I tried to contact KLH but got no reply, so I guess we're on our own.
Any plans to implement VDE support? (vde2, http://sourceforge.net/projects/vde/files/vde2/) It would greatly simply my running of VMs on BSD. ;)
There seems to be some problem reading from tapes. This is an extract from my configuration file (based on run/ksits/klh10-pi.ini
):
devdef mta0 rh1.0 tm02 fmtr=tm03 type=tu45
devmo mta0 minsys.tape
load @.nsalv-260-u
go
minsys.tape
is a tape image created with itstar. It works fine with SIMH. @.nsalv-260-u
is the ITS disk salvager from run/ksits
.
When I type go
and then mark<ESC>g
, the disk formatting procedure works ok. (Answer 0
, y
, 0
, n
, 3000
, foobar
.)
But next, if I type tran<ESC>g
to restore files from a tape, things sometimes go badly. (Answer 0
, y
.)
On some of my host machines, the start of a file is found, but then I get
Tape offline or controller not ready
*** ERROR *** THE SYSTEM MAY NOT BE BROUGHT UP
On some other host machines, sometimes all files are restored, or the error appears in the middle of the tape.
If we look into the source code of NSALV 260, we see
MREAD2: MOVEI B,<%TMD16_8.>+<%TMFCD_4.>+TMBTS
IOWRI B,%TMTC ;Tell TM03
MOVEI B,%TMNOP ;You may need this to set status values
IOWRI B,%TMCS1 ; but I'm not really sure
IODRI B,%TMCS1
TRNE B,%TM1GO ;Wait till done
JRST .-2
IODRI B,%TMFS ;Get status
TRNE B,%TMSOL ;On line?
TRNN B,%TMSFR ;Formatter ready?
LOSE "~&Tape offline or controller not ready"
%TMTC
is the tape control register at 772432.%TMCS1
is control and status 1 at 772400.%TMFS
is formatter status at 772412.So presumably, the tape controller is ready, but the tape formatter is not.
TOPS-20 tapes store author information, read20 should print it.
For dump.h
add:
#define WdoffAuthor WdoffFDB+030 /* Author offset */
Then in doFileHeader
:
getstring(block, authorname, WdoffAuthor, sizeof(authorname), STRING);
and print it when in verbose mode:
printf("%5d%9d %2d %o %s %s %s", offline ? apgcount : pgcount,
numbytes, bytesize, tprot, timeptr, topsname, authorname);
Towards the end of building the bld-ks-its
target, I get this warning:
../../src/dpimp.c: In function âarp_reqâ:
../../src/dpimp.c:1210:2: warning: âmemcpyâ reading 6 bytes from a region of size 4 [-Wstringop-overflow=]
memcpy((char *)arp.arp.arp_spa, /* Sender IP addr */
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(char *)&ihost_ip, sizeof(arp.arp.arp_sha));
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gcc -o dpimp dpimp.o dpsup.o
It would be nice to run the 8080 software.
For practical use, KLH10's front end is very convenient with its ability to load programs directly from the host file system. But this leaves a gap when it comes to running ALL THE SOFTWARE.
With the latest git changes to klh10 my previously working TCP/IP setup no longer works.
System -
Linux Fedora 24 64 bit
Software -
Latest git klh10 running TOPS-20 Panda distribution.
Startup Script (klt20) -
[neilt@wol panda]$ cat klt20
#!/bin/sh
export KLH10_NET_BRIDGE=enp3s5homenet
exec ./kn10-kl klt20.ini
ini file (klt20.ini) -
[neilt@wol panda]$ cat klt20.ini
; Sample KLH10.INI for initial installation
; Define basic device config - one DTE, one disk, one tape.
; Use two RH20s because TOPS-10 doesn't like mixing disk and tape on
; the same controller (TOPS-20 is fine).
devdef dte0 200 dte master
devdef rh0 540 rh20
devdef rh1 544 rh20
devdef dsk0 rh0.0 rp type=rp07 format=dbd9
devdef mta0 rh1.0 tm03 type=tu45
; Need KLNI to avoid LAPRBF BUGCHKs - use valid address if known
;
; devdef ni0 564 ni20 ipaddr=10.0.0.51
; The (NetBSD/FreeBSD/Linux) version with tap(4) and bridge(4) creates the
; named tap device dynamically and bridges it to the default interface.
; If you want it differently (for instance routed instead of bridged),
; you can create the tap yourself and it will be used as it is.
devdef ni0 564 ni20 ipaddr=192.168.0.51 ifmeth=tap+bridge ifc=tap0 dedic=true
; Use ifmeth=tap if you handle the bridging or routing yourself.
; Use this version if you want to use libpcap for ethernet access.
;devdef ni0 564 ni20 ipaddr=10.0.0.51 ifmeth=pcap ifc=re0 dedic=false
; Load disk bootstrap directly
load boot.sav
; Now ready to GO
System Startup Messages -
[BOOT: Loading] [OK]
[TOPS20 mounted]
Neil's Panda Distribution, PANDA TOPS-20 Monitor 7.1(21733)-4 Internet: Loading host names [OK]
System restarting, wait...
Date and time is: Sunday, 22-January-2017 7:24AM
Why reload? pm
Run CHECKD? n
DDMP: Started
[KNILDR: Loading microcode version 1(172) into Ethernet channel 0]
[dpni20: Cannot find default IP interface for host]
[dpni20: linux bridge_create: ioctl res=0]
[dpni20: Attached "tap0" to bridge "enp3s5homenet"]
[dpni20: ifc "tap0" => ether 0:0:0:0:0:0]
[dpni20: VHOST 192.168.0.51]
[dpni20: Enabled net.ipv4.conf.tap0.arp_accept]
SYSJOB 7A(88)-4 started at 22-Jan-2017 0724
SJ 0: @LOGIN OPERATOR
SJ 0: @ENABLE
SJ 0: $SYSTEM:STSJ1
22-Jan-2017 07:24:37 SYSJB1: SYSJB1 started.
SJ 0: $^ESET LOGIN ANY
SJ 0: $OPR
[NCP]: Waiting for ORION to start
22-Jan-2017 07:24:38 SYSJB1: Job 0:
22-Jan-2017 07:24:38 SYSJB1: Job 0: Neil's Panda Distribution, PANDA TOPS-20 Monitor 7.1(21733)-4
22-Jan-2017 07:24:38 SYSJB1: Job 1:
22-Jan-2017 07:24:38 SYSJB1: Job 1: Neil's Panda Distribution, PANDA TOPS-20 Monitor 7.1(21733)-4
22-Jan-2017 07:24:38 SYSJB1: Job 2:
22-Jan-2017 07:24:38 SYSJB1: Job 2: Neil's Panda Distribution, PANDA TOPS-20 Monitor 7.1(21733)-4
22-Jan-2017 07:24:38 SYSJB1: Job 3:
22-Jan-2017 07:24:38 SYSJB1: Job 3: Neil's Panda Distribution, PANDA TOPS-20 Monitor 7.1(21733)-4
22-Jan-2017 07:24:38 SYSJB1: Job 4:
22-Jan-2017 07:24:38 SYSJB1: Job 4: Neil's Panda Distribution, PANDA TOPS-20 Monitor 7.1(21733)-4
22-Jan-2017 07:24:38 SYSJB1: Job 5:
22-Jan-2017 07:24:38 SYSJB1: Job 5: Neil's Panda Distribution, PANDA TOPS-20 Monitor 7.1(21733)-4
22-Jan-2017 07:24:38 SYSJB1: Job 1: @LOGIN OPERATOR
22-Jan-2017 07:24:38 SYSJB1: Job 3: @LOGIN OPERATOR
22-Jan-2017 07:24:38 SYSJB1: Job 0: @LOGIN OPERATOR
22-Jan-2017 07:24:38 SYSJB1: Job 2: @LOGIN OPERATOR
22-Jan-2017 07:24:38 SYSJB1: Job 2: @ENABLE
22-Jan-2017 07:24:38 SYSJB1: Job 3: @ENABLE
22-Jan-2017 07:24:38 SYSJB1: Job 4: @LOGIN OPERATOR
22-Jan-2017 07:24:38 SYSJB1: Job 5: @LOGIN OPERATOR
22-Jan-2017 07:24:38 SYSJB1: Job 0: @ENABLE
22-Jan-2017 07:24:38 SYSJB1: Job 0: $RESOLV
22-Jan-2017 07:24:38 SYSJB1: Job 1: @ENABLE
22-Jan-2017 07:24:38 SYSJB1: Job 2: $SMTJFN
22-Jan-2017 07:24:38 SYSJB1: Job 3: $MMAILR
22-Jan-2017 07:24:38 SYSJB1: Job 4: @ENABLE
22-Jan-2017 07:24:38 SYSJB1: Job 4: $IMAPSV
22-Jan-2017 07:24:38 SYSJB1: Job 5: @ENABLE
22-Jan-2017 07:24:38 SYSJB1: Job 1: $NETSRV
22-Jan-2017 07:24:38 SYSJB1: Job 5: $FTS
22-Jan-2017 07:24:38 SYSJB1: Job 5: FTS>TAKE FTS.CMD
22-Jan-2017 07:24:38 SYSJB1: Job 5: [FTS20: FTS event 38: spooler started]
22-Jan-2017 07:24:36 Internet: Network My-Network on, Output on
SJ 0: OPR>TAKE SYSTEM:SYSTEM.CMD
SJ 0:
SJ 0: 07:24:40 --ORION logging disabled by job 1 OPERATOR at terminal 13--
SJ 0:
SJ 0: 07:24:40 --Output display for OPR modified--
SJ 0:
SJ 0: 07:24:40 --Output display for OPR modified--
SJ 0:
SJ 0: 07:24:40 --Output display for OPR modified--
SJ 0:
SJ 0: 07:24:40 --Output display for OPR modified--
SJ 0:
SJ 0: 07:24:40 Batch-Stream 0 -- Set Accepted --
SJ 0:
SJ 0: 07:24:40 Batch-Stream 1 -- Set Accepted --
SJ 0:
SJ 0: 07:24:40 Batch-Stream 2 -- Set Accepted --
SJ 0:
SJ 0: 07:24:40 Batch-Stream 3 -- Set Accepted --
SJ 0:
SJ 0: 07:24:40 Batch-Stream 0 -- Set Accepted --
SJ 0:
SJ 0: 07:24:40 Batch-Stream 1 -- Set Accepted --
SJ 0:
SJ 0: 07:24:40 Batch-Stream 2 -- Set Accepted --
SJ 0:
SJ 0: 07:24:40 Batch-Stream 3 -- Set Accepted --
SJ 0:
SJ 0: 07:24:40 Batch-Stream 0 -- Startup Scheduled --
SJ 0:
SJ 0
07:24:40 From operator terminal 13 on node TOPS20::
=>System in operation
: 07:24:40 Batch-Stream 1 -- Startup Scheduled --
SJ 0:
SJ 0: 07:24:40 Batch-Stream 2 -- Startup Scheduled --
SJ 0:
SJ 0: 07:24:40 Batch-Stream 3 -- Startup Scheduled --
SJ 0: OPR>
SJ 0: 07:24:40 --SEND command completed--
% [Logger 22-Jan-2017 07:24:41 ]: Started at 22-Jan-2017 07:24:37
SJ 0: OPR>
SJ 0: 07:24:46 -- Structure Status Change Detected --
SJ 0: Previously mounted structure TOPS20: detected
SJ 0:
SJ 0: 07:24:46 -- Structure Status Change Detected --
SJ 0: Structure state for structure TOPS20 is incorrect
SJ 0: EXCLUSIVE/SHARED attribute set incorrectly
SJ 0: Status of structure TOPS20: is set:
SJ 0: Domestic, Unregulated, Shared, Available, Dumpable
SJ 0:
bridge interface is up -
[root@wol ~]# ip addr show dev enp3s5homenet
7: enp3s5homenet: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:15:17:a6:0e:73 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.5/24 brd 192.168.0.255 scope global enp3s5homenet
valid_lft forever preferred_lft forever
inet6 fde3:e5a0:6e8e:0:215:17ff:fea6:e73/64 scope global mngtmpaddr dynamic
valid_lft forever preferred_lft forever
inet6 fe80::215:17ff:fea6:e73/64 scope link
valid_lft forever preferred_lft forever
tap0 is up and connected to the bridge -
[root@wol ~]# brctl show
bridge name bridge id STP enabled interfaces
docker0 8000.0242d6e8cae6 no
enp3s5homenet 8000.001517a60e73 yes enp2s0f1
tap0
virbr0 8000.000000000000 yes
But no IP address on tap0 -
[root@wol ~]# ip addr show dev tap0
16: tap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master enp3s5homenet state UNKNOWN group default qlen 1000
link/ether 9a:40:a2:c5:fb:af brd ff:ff:ff:ff:ff:ff
inet6 fe80::9840:a2ff:fec5:fbaf/64 scope link
valid_lft forever preferred_lft forever
If I manually add an IP address -
[root@wol ~]# ip addr add 192.168.0.51/24 dev tap0
[root@wol ~]# ip addr show dev tap0
16: tap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master enp3s5homenet state UNKNOWN group default qlen 1000
link/ether 9a:40:a2:c5:fb:af brd ff:ff:ff:ff:ff:ff
inet 192.168.0.51/24 scope global tap0
valid_lft forever preferred_lft forever
inet6 fe80::9840:a2ff:fec5:fbaf/64 scope link
valid_lft forever preferred_lft forever
@Rhialto
I can ping it, but not telnet to my Panda -
[root@wol ~]# ping -c 5 192.168.0.51
PING 192.168.0.51 (192.168.0.51) 56(84) bytes of data.
64 bytes from 192.168.0.51: icmp_seq=1 ttl=64 time=0.056 ms
64 bytes from 192.168.0.51: icmp_seq=2 ttl=64 time=0.048 ms
64 bytes from 192.168.0.51: icmp_seq=3 ttl=64 time=0.049 ms
64 bytes from 192.168.0.51: icmp_seq=4 ttl=64 time=0.060 ms
64 bytes from 192.168.0.51: icmp_seq=5 ttl=64 time=0.049 ms
--- 192.168.0.51 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4103ms
rtt min/avg/max/mdev = 0.048/0.052/0.060/0.008 ms
[root@wol ~]# telnet 192.168.0.51
Trying 192.168.0.51...
telnet: connect to address 192.168.0.51: Connection refused
Entire network broken -
At this stage, the networking on my machine is broken, I can ping my own interface (192.168.0.5) and the tap0 interface (192.168.0.51) but nothing's going into or out of my machine. Once I shutdown klh10, everything's back to normal.
Closedown works
On the plus side - dpni20 no longer hangs around, and everything shuts down properly.
If you need any more info/debugging, please shout.
Implement a printer device that just pipes everything to lpd and friends so I can print to my networked SIXEL dot matrix printer from ITS et al.
The instructions and Makefile seem fuzzy on the notion of having all three emulators: kl
, ks
, and ks-its
installed at the same time. In doc/install.txt
, I read that I should do make -C bld-<model> install
. But for each successive run of that for a different model, the previous install gets thrown into $KLH10_HOME/flushed
. The instructions aren't clear how that directory is used. It seems that it be easier if we could install the assorted binaries to $KLH10_HOME/<model>/
.
Am I missing something really obvious here?
The code to default the serial numbers of massbus devices seems wrong.
dvrpxx.c:
RPREG(rp, RHR_SN) = /* Serial Number register (BCD) */
(((1 / 1000)%10) << 12)
| (((6 / 100)%10) << 8)
| (((nrps / 10)%10) << 4)
| (((nrps )%10) );
dvtm03.c:
TMREG(tm, RHR_SN) = /* Serial Number register (BCD) */
(((9 / 1000)%10) << 12)
| (((9 / 100)%10) << 8)
| (((ntms / 10)%10) << 4)
| (((ntms )%10) );
The intention seems to be to set the serial number to 1600 + n and 9900 + n
respectively. It does not...
@rmaldersoniii reported a problem in PDP-10/its#588.
KLH10# ; Define basic KS10 device config - two RH11s each on its own Unibus
KLH10#
KLH10# devdef rh0 ub1 rh11 addr=776700 br=6 vec=254
KLH10# devdef rh1 ub3 rh11 addr=772440 br=6 vec=224
KLH10#
KLH10# ; Provide one disk, one tape in config ITS expects
KLH10#
KLH10# devdef dsk0 rh0.0 rp type=rp06 format=dlw8 path=../../out/its.0.rp06 iodly=0
KLH10# devdef dsk1 rh0.1 rp type=rp06 format=dlw8 path=../../out/its.1.rp06 iodly=0
KLH10# devdef dsk2 rh0.2 rp type=rp06 format=dlw8 path=../../out/its.2.rp06 iodly=0
KLH10# devdef dsk3 rh0.3 rp type=rp06 format=dlw8 path=../../out/its.3.rp06 iodly=0
KLH10# devdef dsk4 rh0.4 rp type=rp06 format=dlw8 path=../../out/its.4.rp06 iodly=0
KLH10# devdef dsk5 rh0.5 rp type=rp06 format=dlw8 path=../../out/its.5.rp06 iodly=0
KLH10# devdef dsk6 rh0.6 rp type=rp06 format=dlw8 path=../../out/its.6.rp06 iodly=0
KLH10# devdef dsk7 rh0.7 rp type=rp06 format=dlw8 path=../../out/its.7.rp06 iodly=0
KLH10#
KLH10# devdef mta0 rh1.0 tm02 fmtr=tm03 type=tu45
KLH10#
KLH10# ; ITS wants a 60Hz clock, allow it. Need this until defaults OK.
KLH10# set clk_ithzfix=60
clk_ithzfix: 60. => 60.
KLH10#
KLH10# ; Define IMP for PI on ITS.JOSS.COM
KLH10# devdef imp ub3 lhdh addr=767600 br=6 vec=250 ipaddr=172.16.36.247 gwaddr=172.16.36.1
Out of room for more device defs
Consider this compiler warning, which I deliberately did not fix:
cc -c -g3 -O3 -I../src -I../../src -DKLH10_CPU_KS=1 -DKLH10_SYS_ITS=1 -DKLH10_EVHS_INT=1 -DKLH10_DEV_DPTM03=1 -DKLH10_DEV_DPRPXX=1 -DKLH10_DEV_DPIMP=1 -DKLH10_SIMP=0 -DKLH10_MEM_SHARED=1 -DKLH10_RTIME_OSGET=1 -DKLH10_ITIME_INTRP=1 -DKLH10_QTIME_OSVIRT=1 -DKLH10_IMPIO_INT=1 -DKLH10_CTYIO_INT=1 -DKLH10_APRID_SERIALNO=4097 -DKLH10_CLIENT=\"MyITS\" -DVMTAPE_ITSDUMP=1 -DKLH10_I_CIRC=1 ../../src/klh10.c
In file included from ../../src/klh10.c:59:
/* Copyright <A9> 2017 Olaf Seibert
^
../../src/klh10.c:391:24: warning: illegal character encoding in string literal [-Winvalid-source-encoding]
fprintf(f, "%s\n", KLH10_COPYRIGHT);
^~~~~~~~~~~~~~~
../../src/klh10.h:68:15: note: expanded from macro 'KLH10_COPYRIGHT'
Copyright <A9> 2002 Kenneth L. Harrenstien -- All Rights Reserved."
^~~~
2 warnings generated.
I would say that the compiler is running in the wrong locale for this particular program: klh10, or rather the operating systems that run in it, doesn't know what to do with utf-8 text and/or terminals.
We can probably fix the locale of the compilation run, but how can we make sure that the user runs klh10 in a proper ASCII or ISO-8859-1 terminal?
It would be useful to add SLIRP as a networking option.
Currently I get very annoyed that the Panda install on my laptop only has working networking when it is in the correct location.
SIMH has the ability to boot from a tape. I would like that feature in KLH10 too.
(Why? Because I'm working on an automated ITS installation, which starts from boot tapes.)
Hello,
This report should be confirmed by someone else.
Apparently, commit ba556fb has introduced unstability to the KL10 emulator. Now TOPS-20 freezes a few minutes after boot up. It also freezes almost immediately if a CHECKD is requested on boot.
I've tested it with the PANDA distribution. Going back to 9d13c2b seems to "fix" the problem.
Possible diagnose: the increment in the number of devices causes a memory overwrite somewhere. I have not looked at the code yet.
I'm experimenting with running ITS on KLH10's KL10 model B.
The branch is here:
https://github.com/PDP-10/klh10/commits/lars/kl10b-its
contrib/supdup doesn't compile on modern Unix. I've started to modernize it so that it compiles, but it is not finished yet. Hopefully it is going to work with ITS after that.
I have an issue building kn10-kl on High Sierra: A number of places have an interrupted format string in a write to a log file, and the compiler complains about a missing ")" at the end of the first part of the string. I will freely admit that I am using the original Panda distribution, which build just fine in 2011 on whatever generation of OS X that was, but the binaries will not run under High Sierra so I have to rebuild.
Has this been fixed in the Github variant? Or is there a known fix which I am missing?
This was easier when I had numerous Linux and BSD systems lying around the museum; now I'm stuck with my home resources
Secondarily, has anyone created an Xcode project to build KLH10 natively on the Mac?
Thanks,
Rich
Rich Alderson
ex Living Computers: Museum + Labs
I have attempted several times over the last few years to build klh10 on modern versions of macOS, generally trying to follow the information on the network about converting makefiles to Xcode projects (and failing miserably).
How in fact do people build klh10 on macOS?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.