simh / simh

The Computer History Simulation Project
http://simh.trailing-edge.com
Other
1.67k stars 304 forks source link

VAX: System time slow and Ethernet adjacency down/up #705

Closed agn453 closed 5 years ago

agn453 commented 5 years ago

I'm seeing DECnet adjacency up/down OPCOM messages using OpenVMS VAX V7.3 under SIMH VAX and the system time is slow (commit id: 45d8c908) following the recent timer/clock commits. Prior to this I was using commit id: 42271bd4.

This is on both Cygwin (Windows 10 19H1) and Linux (Raspbian stretch).

markpizz commented 5 years ago

Config file please!

agn453 commented 5 years ago

Sorry Mark. My configuration has been fairly static for quite some time.

;
; Load CPU microcode (use internal ka655x.bin)
load -r ka655x.bin
;
; Attach non-volatile RAM to a file
att nvr vaxnvram.bin
;
; This virtual machine has 64M memory and idle detection enabled
set cpu 64m
set cpu idle
set cpu idle=VMS
set cpu conhalt
;set cpu model=VAXstation
show cpu
;
; Disable RL02s
set rl disable
;
; Disable RX02s
;set ry disable
;
; Disable magtape
set ts disable
;
; Disable cardreader
set cr disable
;
; TK50 tape drives
set tq tk50
;att tq0 /c/vax/tk50-0.tap
set tq0 locked
;att tq0 -r /c/Users/tony/Simh/vax/AQ-RAE30-01-OpenVMS-Year-2000-TK50.tap
set tq1 disable
;set tq1 /c/vax/tk50-1.tap
set tq2 disable
set tq3 disable
;
; allow telnet on tcp/ip port 4023 to DZ11 multiplexor
; with active disconnect (-a switch), 8bit characters
; and modem control (-m switch)
set dz enable
set dz 8b
set dz lines=8
;set dz modem
;set dz hangup
att -a -m dz 4123
;
; Disable VH terminal multiplexor
set vh disable
;
; LP11 line printer
set lpt enable
att lpt printer.txt
;
; Attach defined drives to local files
set rq0 ra92
att rq0 /c/Users/tony/simh/vax/ra92-vogon_sys73.dsk
;
set rq1 ra92
att rq1 /c/Users/tony/simh/vax/ra92-vogon_user.dsk
;
set rq2 rd54
att rq2 /c/Users/tony/simh/vax/rd54-vogon_alt73.dsk
;
set rq3 cdrom
;att -r rq3 /c/Users/tony/simh/vax/vaxvms073.iso
;
; Hobbyist V1 distribution
att -r rq3 /c/Users/tony/Simh/vax/hobbyistv1.iso
;
; Second disk controller
set rqb enable
;
set rqb0 ra92
att rqb0 /c/Users/tony/Simh/vax/ra92-vogon_sys552.dsk
set rqb1 ra92
att rqb1 /c/Users/tony/Simh/vax/ra92-kits552.dsk
set rqb2 ra82
set rqb3 cdrom
att -r rqb3 /c/Users/tony/Simh/vax/vms552h4.iso
;
;
set rqc enable
set rqc0 ra92
set rqc1 ra92
set rqc2 cdrom
set rqc3 cdrom
;
; HP OpenVMS VAX Consolidated Distribution Set Dec-2007
att -r rqc3 /c/Users/tony/Simh/VAX/VAXBINDEC071.iso
;att -r rqc3 /c/Users/tony/Simh/VAX/VAXBINDEC072.iso
;att -r rqc3 /c/Users/tony/Simh/VAX/VAXBINDEC073.iso
;att -r rqc3 /c/Users/tony/Simh/VAX/VAXBINDEC074.iso
;att -r rqc3 /c/Users/tony/Simh/VAX/VAXBINDEC075.iso
;att -r rqc3 /c/Users/tony/Simh/VAX/VAXBINDEC076.iso
;att -r rqc3 /c/Users/tony/Simh/VAX/VAXDOCDEC07.iso
;
;
; Attach Ethernet to a network interface
; Use 'show xq eth' command to show available interfaces.
;show xq eth
set xq mac=08-00-2B-AA-BB-CC
att xq eth0
show xq
;
; Now start the emulator
echo To start the emulator type 'boot cpu'

and

trillian:~/simh$ vax

MicroVAX 3900 simulator V4.0-0 Current        git commit id: 45d8c908
sim> show version
MicroVAX 3900 simulator V4.0-0 Current
    Simulator Framework Capabilities:
        64b data
        64b addresses
        Polled Ethernet Packet transports:PCAP:NAT:UDP
        Idle/Throttling support is available
        Virtual Hard Disk (VHD) support
        Asynchronous I/O support (Lock free asynchronous event queue)
        Asynchronous Clock support
        FrontPanel API Version 12
    Host Platform:
        Compiler: GCC 7.4.0
        Simulator Compiled as C arch: x86 (Release Build) on May 30 2019 at 09:13:34
        Memory Access: Little Endian
        Memory Pointer Size: 32 bits
        Large File (>2GB) support
        SDL Video support: SDL Version 2.0.7
        RegEx support for EXPECT commands
        OS clock resolution: 1ms
        Time taken by msleep(1): 1ms
        OS: CYGWIN_NT-10.0-WOW trillian 3.0.7(0.338/5/3) 2019-04-30 18:04 i686 Cygwin
        git commit id: 45d8c908
        git commit time: 2019-05-29T00:44:17-07:00
agn453 commented 5 years ago

And this is a 'show clock' after it's been running a while...

Simulation stopped, PC: 827DED46 (BEQL 827DEDB4)
sim> show clock
Minimum Host Sleep Time:       1 ms (1000Hz)
Host Clock Resolution:         1 ms
Execution Rate:                3,729,400 cycles/sec
Idling:                        Enabled
Time before Idling starts:     20 seconds
Calibrated Timer:              CLK
Calibration:                   Skipped when Idle exceeds 50%

MicroVAX 3900 clock device is CLK
Calibrated Timer 0:
  Running at:                100 Hz
  Tick Size:                 10 msecs
  Ticks in current second:   56
  Seconds Running:           1,706 (28:26 minutes)
  Calibration Opportunities: 1,706
  Calib Skip Idle Thresh %:  50
  Calibs Skip While Idle:    1646
  Calibs Skip Gap Too Big:   2
  Instruction Time:          12579421550
  Real Time:                 103952321
  Virtual Time:              102145273
  Next Interval:             1,500
  Base Tick Delay:           24,863
  Initial Insts Per Tick:    5,000
  Current Insts Per Tick:    37,294
  Initializations:           6
  Ticks:                     170,656
  Tick Time:                 28:26.55 minutes
  Initialize Base Time:      09:20:30.054
  Tick Start Time:           09:20:30.203
  Wall Clock Time Now:       10:44:46.241
  Total Time Idled:          1:18:51.497 hours
sim>
markpizz commented 5 years ago

Thanks for reporting this. Several details that hadn't been tested before are now dependent on the correct timer behavior. The latest commit should fix the VAX cases. Please confirm.

I'm not sure that this has anything to do with your network issues though.

agn453 commented 5 years ago

Thanks Mark. I'll grab the latest and test it shortly.

The network issues (DECnet adjacency flapping) would have been a consequence of the slow clock (time-out on the DECnet Hello packets trigger a node-down if none are received in a 60 second interval).

agn453 commented 5 years ago

Confirming the timer/clock is back to normal and VAX is working again (I tested VAXserver 3900 under Cygwin on Windows 10 and VAX780 under Raspbian on a Pi3).

Thanks again Mark. Your efforts are much appreciated!

agn453 commented 5 years ago

I've re-opened this because I found that I had tested the old commit of VAX780 on Raspbian.

Re-attempting this with the latest commit does not work for VAX780. The console is unresponsive (except for a CTRL-E break to the sim> prompt) and I see DECnet come up and then adjacency drops.

'show clock etc. follows -

Simulation stopped, PC: 804D7CDF (BBC #3,26C(R3),804D7D1C)
sim> sh clock
Minimum Host Sleep Time:       1 ms (1000Hz)
Host Clock Resolution:         1 ms
Execution Rate:                214,748,364,700 cycles/sec
Idling:                        Enabled
Time before Idling starts:     20 seconds
Calibrated Timer:              TMR
Calibration:                   Skipped when Idle exceeds 50%

VAX 11/780 clock device is TMR
Calibrated Timer 0:
  Running at:                100 Hz
  Tick Size:                 10 msecs
  Ticks in current second:   75
  Seconds Running:           658 (10:58 minutes)
  Calibration Opportunities: 658
  Calib Skip Idle Thresh %:  50
  Calibs Skip While Idle:    24
  Instruction Time:          838002384
  Real Time:                 143170746
  Virtual Time:              143423680
  Next Interval:             1,500
  Base Tick Delay:           2,147,483,647
  Initial Insts Per Tick:    5,000
  Current Insts Per Tick:    2,147,483,647
  Initializations:           9
  Ticks:                     65,868
  Total Ticks:               65,869
  Peak Clock Skew:           1:13.612552 minutes slow
  Ticks Acked:               65,873
  Tick Time:                 10:58.68 minutes
  Total Tick Time:           10:58.69 minutes
  Catchup Ticks Sched:       63,866
  Initialize Base Time:      21:27:21.262
  Tick Start Time:           21:27:21.262
  Wall Clock Time Now:       21:38:23.006
  Catchup Tick Time:         21:38:19.944
  Catchup Base Time:         21:27:21.264
  Total Time Idled:          23.529 seconds
sim> sh vers
VAX 11/780 simulator V4.0-0 Current
    Simulator Framework Capabilities:
        64b data
        64b addresses
        Threaded Ethernet Packet transports:PCAP:TAP:VDE:NAT:UDP
        Idle/Throttling support is available
        Virtual Hard Disk (VHD) support
        RAW disk and CD/DVD ROM support
        Asynchronous I/O support (Lock free asynchronous event queue)
        Asynchronous Clock support
        FrontPanel API Version 12
    Host Platform:
        Compiler: GCC 6.3.0 20170516
        Simulator Compiled as C arch: ARM (Release Build) on May 30 2019 at 20:57:25
        Memory Access: Little Endian
        Memory Pointer Size: 32 bits
        Large File (>2GB) support
        SDL Video support: No Video Support
        PCRE RegEx (Version 8.39 2016-06-14) support for EXPECT commands
        OS clock resolution: 1ms
        Time taken by msleep(1): 1ms
        OS: Linux pi1 4.19.42-v7+ #1219 SMP Tue May 14 21:20:58 BST 2019 armv7l GNU/Linux
        git commit id: 0195bbda
        git commit time: 2019-05-30T01:51:52-07:00
sim> 

and idle is enabled in the config...

;
; VAX-11/780 running VAX/VMS V5.5-2
;
; This virtual machine has 32Mb of memory and idle detection enabled
set cpu 32m
set cpu idle
set cpu idle=VMS
show cpu
;
...
wpappas commented 5 years ago

Mark -- I can confirm that the VAX simulator is losing several seconds per minute when idling is enabled. This is on git commit 45d8c908. However, on the same commit, the HP2100 simulator is keeping very accurate time.

markpizz commented 5 years ago

Bill,

Please test with the latest commit.

Tony,

I don't see a problem with the 780 using the latest commit. Please try that.

wpappas commented 5 years ago

Bill,

Please test with the latest commit.

Tony,

I don't see a problem with the 780 using the latest commit. Please try that.

Hi Mark, Git commit id 564ce2b3 is not working for me. I'm running the microvax3900 simulator with the attached script. It boots into VMS 7.3 OK, but then the console locks up and I can't log in. Host CPU stays pegged at 100% even though idling is enabled. This is running on a Pi 3B Raspbian Stretch host. For reference, commit id b6b457a8 was working fine with the same configuration.

EDIT: Just tried accessing the VAX by telnet and I can get in even though the console is still unresponsive. Weird.

vax.zip

agn453 commented 5 years ago

Just had my heart starter caffeine beverage and about to compile the latest commit on Raspbian.

I'm not sure if it's related but I see the two other emulations I keep idling on my Raspberry Pi (both PDP11) are also showing slow clocks when they usually keep good time compared to wall clock time!

They're using commit id: 0195bbda - the first one running RSX-11M-PLUS V4.6 -

Simulation stopped, PC: 020364 (BR 20332)
sim> show version
PDP-11 simulator V4.0-0 Current
    Simulator Framework Capabilities:
        32b data
        32b addresses
        Threaded Ethernet Packet transports:PCAP:TAP:VDE:NAT:UDP
        Idle/Throttling support is available
        Virtual Hard Disk (VHD) support
        RAW disk and CD/DVD ROM support
        Asynchronous I/O support (Lock free asynchronous event queue)
        Asynchronous Clock support
        FrontPanel API Version 12
    Host Platform:
        Compiler: GCC 6.3.0 20170516
        Simulator Compiled as C arch: ARM (Release Build) on May 30 2019 at 20:50:02
        Memory Access: Little Endian
        Memory Pointer Size: 32 bits
        Large File (>2GB) support
        SDL Video support: SDL Version 2.0.5
        PCRE RegEx (Version 8.39 2016-06-14) support for EXPECT commands
        OS clock resolution: 1ms
        Time taken by msleep(1): 1ms
        OS: Linux pi1 4.19.42-v7+ #1219 SMP Tue May 14 21:20:58 BST 2019 armv7l GNU/Linux
        git commit id: 0195bbda
        git commit time: 2019-05-30T01:51:52-07:00
sim> show clock
Minimum Host Sleep Time:       1 ms (1000Hz)
Host Clock Resolution:         1 ms
Execution Rate:                6,214,860 cycles/sec
Idling:                        Enabled
Time before Idling starts:     20 seconds
Calibrated Timer:              CLK
Calibration:                   Skipped when Idle exceeds 50%

PDP-11 clock device is CLK
Calibrated Timer 0:
  Running at:                60 Hz
  Tick Size:                 16.667 msecs
  Ticks in current second:   50
  Seconds Running:           26,307 (7:18:27 hours)
  Calibration Opportunities: 26,307
  Calib Skip Idle Thresh %:  50
  Calibs Skip While Idle:    26282
  Instruction Time:          164568217927
  Real Time:                 180219670
  Virtual Time:              193729690
  Next Interval:             1,500
  Base Tick Delay:           69,054
  Initial Insts Per Tick:    16,667
  Current Insts Per Tick:    103,581
  Initializations:           6
  Ticks:                     1,578,469
  Tick Time:                 7:18:27.8 hours
  Initialize Base Time:      21:04:25.434
  Tick Start Time:           21:04:25.480
  Wall Clock Time Now:       07:55:55.692
  Total Time Idled:          10:19:29.976 hours
sim> show cpu
CPU 11/93, NOCIS, autoconfiguration enabled, idle enabled
    2MB
sim> c

and the other running RSTS/E V10.1-L

Simulation stopped, PC: 113040 (SOB R1,113036)
sim> show vers
PDP-11 simulator V4.0-0 Current
    Simulator Framework Capabilities:
        32b data
        32b addresses
        Threaded Ethernet Packet transports:PCAP:TAP:VDE:NAT:UDP
        Idle/Throttling support is available
        Virtual Hard Disk (VHD) support
        RAW disk and CD/DVD ROM support
        Asynchronous I/O support (Lock free asynchronous event queue)
        Asynchronous Clock support
        FrontPanel API Version 12
    Host Platform:
        Compiler: GCC 6.3.0 20170516
        Simulator Compiled as C arch: ARM (Release Build) on May 30 2019 at 20:50:02
        Memory Access: Little Endian
        Memory Pointer Size: 32 bits
        Large File (>2GB) support
        SDL Video support: SDL Version 2.0.5
        PCRE RegEx (Version 8.39 2016-06-14) support for EXPECT commands
        OS clock resolution: 1ms
        Time taken by msleep(1): 1ms
        OS: Linux pi1 4.19.42-v7+ #1219 SMP Tue May 14 21:20:58 BST 2019 armv7l GNU/Linux
        git commit id: 0195bbda
        git commit time: 2019-05-30T01:51:52-07:00
sim> show clock
Minimum Host Sleep Time:       1 ms (1000Hz)
Host Clock Resolution:         1 ms
Execution Rate:                5,557,380 cycles/sec
Idling:                        Enabled
Time before Idling starts:     20 seconds
Calibrated Timer:              CLK
Calibration:                   Skipped when Idle exceeds 50%

PDP-11 clock device is CLK
Calibrated Timer 0:
  Running at:                60 Hz
  Tick Size:                 16.667 msecs
  Ticks in current second:   47
  Seconds Running:           37,178 (10:19:38 hours)
  Calibration Opportunities: 37,178
  Calib Skip Idle Thresh %:  50
  Calibs Skip While Idle:    37147
  Instruction Time:          147854167959
  Real Time:                 180304883
  Virtual Time:              215401951
  Next Interval:             1,500
  Base Tick Delay:           61,749
  Initial Insts Per Tick:    16,667
  Current Insts Per Tick:    92,623
  Initializations:           7
  Ticks:                     2,230,726
  Tick Time:                 10:19:38.750001 hours
  Initialize Base Time:      21:03:21.419
  Tick Start Time:           21:03:21.439
  Wall Clock Time Now:       07:57:20.856
  Total Time Idled:          10:06:02.477 hours
sim> show cpu
CPU 11/70, FPP, RH70, autoconfiguration enabled, idle enabled
    2MB

I'll compile and test the latest commit now and report back.

agn453 commented 5 years ago

The latest commit does not work for me. Here are the details and an edited log of the startup.

The system console is unresponsive. DECnet and Multinet are started via SYSTARTUP_V5.COM but I can't login using SET HOST or TELNET. I waited for the layered product startup to run (from batch) and can't get in using LAT either.

I just compiled using make vax780.

It's a Raspberry Pi 3B running Raspbian Stretch (Debian 9.9) and fully patched.

The last working version of VAX780 with this same configuration was commit id: 6b3bff56 that I compiled on May 22nd.

pi@pi1:~/simh $ cat run-vms.sh 
#!/bin/sh
sudo ~pi/bin/vax780 vms780.ini
pi@pi1:~/simh $ cat vms780.ini 
;
; VAX-11/780 running VAX/VMS V5.5-2
;
; This virtual machine has 32Mb of memory and idle detection enabled
set cpu 32m
set cpu idle
set cpu idle=VMS
show cpu
;
; Disable RL02s
set rl disable
;
; Console floppy (enabled by default)
;set cs enable
set cs writeenable
att cs /home/pi/simh/disk-images/vax/rx01-console0.dsk
;
; Disable RX02s
set ry disable
;
; Disable RK611/RK06 cartridge disk controller
set hk disable
;
; Disable TS11 magtape
set ts disable
;
; Dual TU77 800/1600bpi Massbus magnetic tape drives on a TM03
set tu enable
set tu0 TU77
;att tu0 /home/pi/simh/disk-images/vax/tu77-0.tap
set tu0 LOCKED
set tu1 TU77
;att tu1 /home/pi/simh/disk-images/vax/tu77-0.tap
set tu1 LOCKED
set tu2 disable
set tu3 disable
set tu4 disable
set tu5 disable
set tu6 disable
set tu7 disable
;
; Disable cardreader
set cr disable
;
; TK50 tape drive on a TMSCP controller
set tq tk50
att tq0 /home/pi/simh/disk-images/vax/tk50-0.tap
set tq1 disable
set tq2 disable
set tq3 disable
;
; allow telnet on tcp port 4023 to DZ11 multiplexor
; with active disconnect (-a switch), 8bit characters
; and modem control (-m switch)
set dz enable
set dz 8b
set dz lines=8
att -a -m dz 4023
;
; LP11 line printer
set lpt enable
att lpt /home/pi/simh/printer.txt
;
; Define disk drive types. RA92 is largest-supported VAX drive.
;
; Massbus controller with dual RM80's to play with old versions of VMS
set rp enable
set rp0 rm80
att rp0 /home/pi/simh/disk-images/vax/rm80-vax_sys73.dsk
set rp1 rm80
att rp1 /home/pi/simh/disk-images/vax/rm80-vax_user.dsk
set rp2 disable
set rp3 disable
set rp4 disable
set rp5 disable
set rp6 disable
set rp7 disable
;
; UDA50 MSCP disk controller
set rq enable
set rq0 RA92
att rq0 /home/pi/simh/disk-images/vax/ra92-vax_disk_bilby.dsk
set rq1 RA92
att rq1 /home/pi/simh/disk-images/vax/ra92-vax_sys62.dsk
set rq2 RA92
att rq2 /home/pi/simh/disk-images/vax/ra92-vax_possum_page2.dsk
set rq3 RA82
att rq3 /home/pi/simh/disk-images/vax/ra82-vax_sys47.dsk
;
set rqb enable
; Old RA82 system disks
set rqb0 ra82
att rqb0 /home/pi/simh/disk-images/vax/ra82-vax_disk_bilby.dsk
set rqb1 ra82
att rqb1 /home/pi/simh/disk-images/vax/ra82-vax_sys62.dsk
set rqb2 ra82
att rqb2 /home/pi/simh/disk-images/vax/ra82-vax_possum_page2.dsk
set rqb3 RRD40
att -r rqb3 /home/pi/simh/disk-images/vax/hobbyistv1.iso
;
; Attach Ethernet to a network interface
; Use 'show xq eth' command to show available interfaces.
set xu enable
show xu eth
set xu type=DELUA
set xu mac=08-00-2B-11-07-80
att xu eth0
show xu
;
; Now start the emulator
echo   
echo Use 'boot rp0'  an RM80 with    OpenVMS 7.3 
echo  or 'boot rq0'   an RA92 with    VAX/VMS 5.5-2
echo  or 'boot rq1'   an RA92 with    OpenVMS 6.2 
echo  or 'boot rq2'   an RA92 with    Standalone Backup 7.3
echo  or 'boot rq3'   an RA82 with    OpenVMS 4.7 
echo  or 'boot rqb3'  an RRD40 with SA Backup and VAX Hobbyist V1 CD-ROM
echo   
echo (add /R5:1 for conversational boot or /R5:F0000001 to boot from SYSF root)
echo   
echo To load a program from the console floppy use 'fload filename'
echo   
pi@pi1:~/simh $ ./run-vms.sh 

VAX 11/780 simulator V4.0-0 Current        git commit id: 564ce2b3
CPU idle=VMS, idle enabled, model=VAX 11/780, Implementing: All standard VAX instructions and Compatibility mode
    32MB, HALT to SIMH
/home/pi/simh/vms780.ini-16> att cs /home/pi/simh/disk-images/vax/rx01-console0.dsk
CS: buffering file in memory
/home/pi/simh/vms780.ini-64> att -a -m dz 4023
Listening on port 4023
Modem control activated
Auto disconnect activated
/home/pi/simh/vms780.ini-75> att rp0 /home/pi/simh/disk-images/vax/rm80-vax_sys73.dsk
RP0: '/home/pi/simh/disk-images/vax/rm80-vax_sys73.dsk' Contains ODS2 File system
RP0: Volume Name: OVMSVAXSYS   Format: DECFILE11B   Sectors In Volume: 242606
/home/pi/simh/vms780.ini-77> att rp1 /home/pi/simh/disk-images/vax/rm80-vax_user.dsk
RP1: '/home/pi/simh/disk-images/vax/rm80-vax_user.dsk' Contains ODS2 File system
RP1: Volume Name: VAX_USER     Format: DECFILE11B   Sectors In Volume: 242606
/home/pi/simh/vms780.ini-88> att rq0 /home/pi/simh/disk-images/vax/ra92-vax_disk_bilby.dsk
RQ0: '/home/pi/simh/disk-images/vax/ra92-vax_disk_bilby.dsk' Contains ODS2 File system
RQ0: Volume Name: DISK_BILBY   Format: DECFILE11B   Sectors In Volume: 2940951
/home/pi/simh/vms780.ini-90> att rq1 /home/pi/simh/disk-images/vax/ra92-vax_sys62.dsk
RQ1: '/home/pi/simh/disk-images/vax/ra92-vax_sys62.dsk' Contains ODS2 File system
RQ1: Volume Name: VAX_SYS62    Format: DECFILE11B   Sectors In Volume: 2940951
/home/pi/simh/vms780.ini-94> att rq2 /home/pi/simh/disk-images/vax/ra92-vax_possum_page2.dsk
RQ2: '/home/pi/simh/disk-images/vax/ra92-vax_possum_page2.dsk' Contains ODS2 File system
RQ2: Volume Name: POSSUM_PAGE2 Format: DECFILE11B   Sectors In Volume: 2940951
/home/pi/simh/vms780.ini-104> att rq3 /home/pi/simh/disk-images/vax/ra82-vax_sys47.dsk
RQ3: '/home/pi/simh/disk-images/vax/ra82-vax_sys47.dsk' Contains ODS2 File system
RQ3: Volume Name: VAXVMSRL4    Format: DECFILE11B   Sectors In Volume: 1216665
/home/pi/simh/vms780.ini-109> att rqb0 /home/pi/simh/disk-images/vax/ra82-vax_disk_bilby.dsk
RQB0: '/home/pi/simh/disk-images/vax/ra82-vax_disk_bilby.dsk' Contains ODS2 File system
RQB0: Volume Name: DISK_BILBY   Format: DECFILE11B   Sectors In Volume: 1216665
/home/pi/simh/vms780.ini-111> att rqb1 /home/pi/simh/disk-images/vax/ra82-vax_sys62.dsk
RQB1: '/home/pi/simh/disk-images/vax/ra82-vax_sys62.dsk' Contains ODS2 File system
RQB1: Volume Name: VAX_SYS62    Format: DECFILE11B   Sectors In Volume: 1216665
/home/pi/simh/vms780.ini-113> att rqb2 /home/pi/simh/disk-images/vax/ra82-vax_possum_page2.dsk
RQB2: '/home/pi/simh/disk-images/vax/ra82-vax_possum_page2.dsk' Contains ODS2 File system
RQB2: Volume Name: POSSUM_PAGE2 Format: DECFILE11B   Sectors In Volume: 1216665
/home/pi/simh/vms780.ini-115> att -r rqb3 /home/pi/simh/disk-images/vax/hobbyistv1.iso
RQB3: unit is read only
RQB3: '/home/pi/simh/disk-images/vax/hobbyistv1.iso' Contains ODS2 File system
RQB3: Volume Name: HOBBYISTV1   Format: DECFILE11B   Sectors In Volume: 1331200
ETH devices:
 eth0   enxb827eb4340f0                      (No description available)
 eth1   wlan0                                (No description available)
 eth2   tap:tapN                             (Integrated Tun/Tap support)
 eth3   vde:device{:switch-port-number}      (Integrated VDE support)
 eth4   nat:{optional-nat-parameters}        (Integrated NAT (SLiRP) support)
 eth5   udp:sourceport:remotehost:remoteport (Integrated UDP bridge support)
libpcap version 1.8.1
/home/pi/simh/vms780.ini-152> att xu eth0
Eth: opened OS device enxb827eb4340f0
XU  address=2013F948-2013F94F, vector=50, BR5, MAC=08:00:2B:11:07:80
    type=DELUA, throttle=disabled
    attached to eth0

Use 'boot rp0'  an RM80 with    OpenVMS 7.3
or 'boot rq0'   an RA92 with    VAX/VMS 5.5-2 ex BILBY
or 'boot rq1'   an RA92 with    OpenVMS 6.2
or 'boot rq2'   an RA92 with    Standalone Backup 7.3
or 'boot rq3'   an RA82 with    OpenVMS 4.7
or 'boot rqb3'  an RRD40 with SA Backup and VAX Hobbyist V1 CD-ROM

(add /R5:1 for conversational boot or /R5:F0000001 to boot from SYSF root)

To load a program from the console floppy use 'fload filename'

sim> show clock
Minimum Host Sleep Time:       1 ms (1000Hz)
Host Clock Resolution:         1 ms
Execution Rate:                2,463,000 cycles/sec
Idling:                        Enabled
Time before Idling starts:     20 seconds
Calibrated Timer:              Internal Timer
Catchup Ticks:                 Enabled for clocks ticking faster than 1000 Hz
Calibration:                   Skipped when Idle exceeds 50%

VAX 11/780 clock device is TMR
Uncalibrated Timer 0:
  Seconds Running:           0 ()
  Real Time:                 182374926
  Virtual Time:              182374926
  Next Interval:             1,000
  Base Tick Delay:           5,000
  Initial Insts Per Tick:    5,000
  Current Insts Per Tick:    5,000
  Initializations:           5
  Ticks:                     0
  Initialize Base Time:      08:31:45.563
  Wall Clock Time Now:       08:31:52.446
VAX 11/780 clock device is Internal Calibrated Timer(INT-TIMER)
Calibrated Timer 8:
  Running at:                100 Hz
  Tick Size:                 10 msecs
  Ticks in current second:   1
  Seconds Running:           0 ()
  Calibration Opportunities: 0
  Calib Skip Idle Thresh %:  50
  Real Time:                 182374926
  Virtual Time:              182374926
  Next Interval:             1,000
  Base Tick Delay:           24,630
  Initial Insts Per Tick:    24,630
  Current Insts Per Tick:    24,630
  Initializations:           4
  Ticks:                     0
  Initialize Base Time:      08:31:45.526
  Tick Start Time:           08:31:45.526
  Wall Clock Time Now:       08:31:52.447
sim> b rq0
Loading boot code from internal vmb.exe

   VAX/VMS Version V5.5-2   Major version id = 1 Minor version id = 0

waiting to form or join a VAXcluster system
%CNXMAN,  Proposing formation of a VAXcluster
%CNXMAN,  Now a VAXcluster member -- system VAX
%CNXMAN,  Completing VAXcluster state transition
$!  Copyright (c) 1992 Digital Equipment Corporation.  All rights reserved.

%STDRV-I-STARTUP, VMS startup begun at 31-MAY-2019 08:33:00.68
$!

[snip]

$!      Submit job to start layered products, queues etc
$!
$       submit/que=sys$sysmgr-
                /log=mgr_log:startall.log-
                /noprint-
                /after="+00:05:00" -
                mgr_com:startall
%%%%%%%%%%%  OPCOM  31-MAY-2019 08:34:31.63  %%%%%%%%%%%
Message from user SYSTEM on VAX
XDM: XDM Server 3.4 (6) starting

Job STARTALL (queue SYS$SYSMGR, entry 106) holding until 31-MAY-2019 08:39
$!
$       set noverify
%DECW-W-NODEVICE, No graphics device found on this system
-DECW-I-NODECW, DECwindows graphics drivers will not be loaded
%SET-I-INTSET, login interactive limit = 64, current interactive value = 0
  31-MAY-2019 08:34:33
%RUN-S-PROC_ID, identification of created process is 20200097
  SYSTEM       job terminated at 31-MAY-2019 08:34:53.31

  Accounting information:
  Buffered I/O count:            3636         Peak working set size:    1153
  Direct I/O count:              1917         Peak page file size:      4765
  Page faults:                  19877         Mounted volumes:             2
  Charged CPU time:           0 00:00:09.27   Elapsed time:     0 00:01:53.02
%%%%%%%%%%%  OPCOM  31-MAY-2019 08:34:59.34  %%%%%%%%%%%
Message from user DECNET on VAX
DECnet event 4.18, adjacency down
From node 42.32 (VAX), 31-MAY-2019 08:34:59.34
Circuit UNA-0, Adjacent node listener receive timeout
Adjacent node = 42.30 (ALPHA)

%%%%%%%%%%%  OPCOM  31-MAY-2019 08:35:18.34  %%%%%%%%%%%
Message from user DECNET on VAX
DECnet event 4.18, adjacency down
From node 42.32 (VAX), 31-MAY-2019 08:35:18.34
Circuit UNA-0, Adjacent node listener receive timeout
Adjacent node = 42.6 (VOGON)

%%%%%%%%%%%  OPCOM  31-MAY-2019 08:45:36.16  %%%%%%%%%%%
Message from user LATACP on VAX
LATACP initialized                                                                                                                  

Reply received on VAX from user SYSTEM at VAX Batch   08:46:28
VAX is now on the air!

Simulation stopped, PC: 804D7CDF (BBC #3,26C(R3),804D7D1C)
sim> show clock
Minimum Host Sleep Time:       1 ms (1000Hz)
Host Clock Resolution:         1 ms
Execution Rate:                214,748,364,700 cycles/sec
Idling:                        Enabled
Time before Idling starts:     20 seconds
Calibrated Timer:              TMR
Calibration:                   Skipped when Idle exceeds 50%

VAX 11/780 clock device is TMR
Calibrated Timer 0:
  Running at:                100 Hz
  Tick Size:                 10 msecs
  Ticks in current second:   7
  Seconds Running:           1,030 (17:10 minutes)
  Calibration Opportunities: 1,030
  Calib Skip Idle Thresh %:  50
  Calibs Skip While Idle:    24
  Calibs Skip Gap Too Big:   1
  Instruction Time:          1971708439
  Real Time:                 183437285
  Virtual Time:              183871257
  Next Interval:             1,500
  Base Tick Delay:           2,147,483,647
  Initial Insts Per Tick:    5,000
  Current Insts Per Tick:    2,147,483,647
  Initializations:           9
  Ticks:                     103,005
  Total Ticks:               103,006
  Peak Clock Skew:           7:12.981114 minutes slow
  Ticks Acked:               103,006
  Tick Time:                 17:10.05 minutes
  Total Tick Time:           17:10.06 minutes
  Catchup Ticks Sched:       100,996
  Initialize Base Time:      08:32:15.751
  Tick Start Time:           08:32:15.751
  Wall Clock Time Now:       08:49:30.204
  Catchup Tick Time:         08:49:25.803
  Catchup Base Time:         08:32:15.753
  Total Time Idled:          7:36.979 minutes
sim> show console
WRU = 0x5 = ^E
BRK = 0x0 = ^@
DEL = 0x7F
pchar mask = 2780 {CR(^M),LF(^J),HT(^I),BS(^H),BEL(^G)}
No Logging
Connected to console window
Debugging disabled
Unbuffered
Console Expect processing:
  Match Rules:
Console Send processing:
CONSOLE
  No Pending Input Data
  Minimum of 0 instructions between characters
  Default delay before first character input is 1000 instructions
  Default delay between character input is 1000 instructions
sim> sho config
VAX 11/780 simulator configuration

CPU idle=VMS, idle enabled, model=VAX 11/780, Implementing: All standard VAX instructions and Compatibility mode
    32MB, HALT to SIMH
TLB 2 units
  TLB0  8192W
  TLB1  8192W
SBI
MCTL0   nexus=1, address=20002000
MCTL1   nexus=2, address=20004000
UBA nexus=3, address=20006000, autoconfiguration enabled
MBA0    nexus=8, address=20010000
MBA1    nexus=9, address=20012000
TODR
    12B
TMR
TTI
    8b
TTO
    8b
CS
    256KB, attached to /home/pi/simh/disk-images/vax/rx01-console0.dsk, write enabled
TC  disabled
TDC disabled
DZ  address=2013E040-2013E047*, vector=C0-C4*, BR5, lines=8
    attached to 4023, 8b, 0 current connections
VH  disabled
CR  disabled
LPT address=2013FF4C-2013FF4F, vector=80, BR4
    attached to /home/pi/simh/printer.txt
RP  Massbus adapter 0, 8 units
  RP0   62MW, attached to /home/pi/simh/disk-images/vax/rm80-vax_sys73.dsk, write enabled
    RAW format, RM80
  RP1   62MW, attached to /home/pi/simh/disk-images/vax/rm80-vax_user.dsk, write enabled
    RAW format, RM80
RL  disabled
HK  disabled
RK  disabled
RQ  address=2013F468-2013F46B, vector=1FC*, BR5, UDA50, 4 units
  RQ0   1505MB, attached to /home/pi/simh/disk-images/vax/ra92-vax_disk_bilby.dsk, write enabled
    RA92, UNIT=0, autosize
    RAW format
  RQ1   1505MB, attached to /home/pi/simh/disk-images/vax/ra92-vax_sys62.dsk, write enabled
    RA92, UNIT=1, autosize
    RAW format
  RQ2   1505MB, attached to /home/pi/simh/disk-images/vax/ra92-vax_possum_page2.dsk, write enabled
    RA92, UNIT=2, autosize
    RAW format
  RQ3   622MB, attached to /home/pi/simh/disk-images/vax/ra82-vax_sys47.dsk, write enabled
    RA82, UNIT=3, autosize
    RAW format
RQB address=2013E0EC-2013E0EF*, vector=C8*, BR5, UDA50, 4 units
  RQB0  622MB, attached to /home/pi/simh/disk-images/vax/ra82-vax_disk_bilby.dsk, write enabled
    RA82, UNIT=0, autosize
    RAW format
  RQB1  622MB, attached to /home/pi/simh/disk-images/vax/ra82-vax_sys62.dsk, write enabled
    RA82, UNIT=1, autosize
    RAW format
  RQB2  622MB, attached to /home/pi/simh/disk-images/vax/ra82-vax_possum_page2.dsk, write enabled
    RA82, UNIT=2, autosize
    RAW format
  RQB3  681MB, attached to /home/pi/simh/disk-images/vax/hobbyistv1.iso, read only, read only
    RRD40, UNIT=3, autosize
    RAW format
RQC disabled
RQD disabled
RY  disabled
TU  Massbus adapter 1, TM03, 8 units
  TU0   not attached, write locked, TU77
    SIMH format, unlimited capacity
  TU1   not attached, write locked, TU77
    SIMH format, unlimited capacity
TS  disabled
TQ  TK50 (94MB), address=2013F940-2013F943, vector=B0, BR5, 4 units
  TQ0   attached to /home/pi/simh/disk-images/vax/tk50-0.tap, write enabled, UNIT=0
    SIMH format, capacity=98MB
XU  address=2013F948-2013F94F, vector=50, BR5, MAC=08:00:2B:11:07:80
    type=DELUA, throttle=disabled
    attached to eth0
XUB disabled
DMC disabled
CH  disabled
sim> q
markpizz commented 5 years ago

Hi Tony,

This number:

Execution Rate: 214,748,364,700 cycles/sec

Is rather incredible on a Raspberry Pi (or any other machine for that matter). The fact that we're seeing this number will have something to do with the behavior you're seeing. I'm looking for it now.

markpizz commented 5 years ago

As it turns out, I knew that the timing changes I was messing with were in no way platform specific, so I was surprised to get reports about potential problems specifically on the Raspberry Pi. The real problem was that things worked just fine AS LONG AS you never used ^E to stop execution and then subsequently resume it. The time spent sitting at the sim> prompt was accounted for in some contexts, but not in the catchup tick computations. If now is and my testing is much better now.

agn453 commented 5 years ago

I've just rebuilt VAX780 commit id: f917accb on my Raspberry Pi. It still has problems.

VMS boots up and runs the start-up, then the vax780 process on the Raspberry Pi enters into a 100% CPU usage loop and I cannot login on the console. The execution rate in show clock is still weird!

%DECW-W-NODEVICE, No graphics device found on this system
-DECW-I-NODECW, DECwindows graphics drivers will not be loaded
%SET-I-INTSET, login interactive limit = 64, current interactive value = 0
   2-JUN-2019 09:19:47
%RUN-S-PROC_ID, identification of created process is 20200097
%%%%%%%%%%%  OPCOM   2-JUN-2019 09:20:06.08  %%%%%%%%%%%
Message from user DECNET on VAX
DECnet event 4.18, adjacency down
From node 42.32 (VAX),  2-JUN-2019 09:20:06.08
Circuit UNA-0, Adjacent node listener receive timeout
Adjacent node = 42.6 (VOGON)

  SYSTEM       job terminated at  2-JUN-2019 09:20:08.08

  Accounting information:
  Buffered I/O count:            3637         Peak working set size:     899
  Direct I/O count:              1928         Peak page file size:      4765
  Page faults:                  20027         Mounted volumes:             2
  Charged CPU time:           0 00:00:08.35   Elapsed time:     0 00:01:47.34
%%%%%%%%%%%  OPCOM   2-JUN-2019 09:20:10.77  %%%%%%%%%%%
Message from user DECNET on VAX
DECnet event 4.18, adjacency down
From node 42.32 (VAX),  2-JUN-2019 09:20:07.76
Circuit UNA-0, Adjacent node listener receive timeout
Adjacent node = 42.30 (ALPHA)

Simulation stopped, PC: 804D7CDF (BBC #3,26C(R3),804D7D1C)
sim> sh clock
Minimum Host Sleep Time:       1 ms (1000Hz)
Host Clock Resolution:         1 ms
Execution Rate:                214,748,364,700 cycles/sec
Idling:                        Enabled
Time before Idling starts:     20 seconds
Calibrated Timer:              TMR
Calibration:                   Skipped when Idle exceeds 50%

VAX 11/780 clock device is TMR
Calibrated Timer 0:
  Running at:                100 Hz
  Tick Size:                 10 msecs
  Ticks in current second:   4
  Seconds Running:           366 (6:06 minutes)
  Calibration Opportunities: 366
  Calib Skip Idle Thresh %:  50
  Calibs Skip While Idle:    23
  Instruction Time:          726877963
  Real Time:                 358293734
  Virtual Time:              358316752
  Next Interval:             1,500
  Base Tick Delay:           2,147,483,647
  Initial Insts Per Tick:    5,000
  Current Insts Per Tick:    2,147,483,647
  Initializations:           9
  Ticks:                     36,602
  Total Ticks:               36,603
  Peak Clock Skew:           6.910104 seconds slow
  Ticks Acked:               36,603
  Tick Time:                 6:06.02 minutes
  Total Tick Time:           6:06.03 minutes
  Catchup Ticks Sched:       34,591
  Initialize Base Time:      09:17:36.200
  Tick Start Time:           09:17:36.200
  Wall Clock Time Now:       09:23:47.055
  Catchup Tick Time:         09:23:42.222
  Catchup Base Time:         09:17:36.202
  Total Time Idled:          22.49 seconds
sim> 
sim> show version
VAX 11/780 simulator V4.0-0 Current
    Simulator Framework Capabilities:
        64b data
        64b addresses
        Threaded Ethernet Packet transports:PCAP:TAP:VDE:NAT:UDP
        Idle/Throttling support is available
        Virtual Hard Disk (VHD) support
        RAW disk and CD/DVD ROM support
        Asynchronous I/O support (Lock free asynchronous event queue)
        Asynchronous Clock support
        FrontPanel API Version 12
    Host Platform:
        Compiler: GCC 6.3.0 20170516
        Simulator Compiled as C arch: ARM (Release Build) on Jun  2 2019 at 08:23:00
        Memory Access: Little Endian
        Memory Pointer Size: 32 bits
        Large File (>2GB) support
        SDL Video support: No Video Support
        PCRE RegEx (Version 8.39 2016-06-14) support for EXPECT commands
        OS clock resolution: 1ms
        Time taken by msleep(1): 1ms
        OS: Linux pi1 4.19.42-v7+ #1219 SMP Tue May 14 21:20:58 BST 2019 armv7l GNU/Linux
        git commit id: f917accb
        git commit time: 2019-06-01T21:40:52+02:00

I forced a crash dump in VMS -

sim> d psl 041f0000
sim> d pc ffffffff
sim> con

**** Fatal BUG CHECK, version = V5.5-2   INVEXCEPTN, Exception while above ASTDEL or on interrupt stack

    Crash CPU: 00        Primary CPU: 00

    Active/available CPU masks: 00000001/00000001

    Current process = NULL

    Register dump

    R0 = 0000001F
    R1 = 041F0000
    R2 = 00000006
    R3 = 8142A000
    R4 = 808167F0
    R5 = 81D6E200
    R6 = 00128DFC
    R7 = 00000000
    R8 = 00133A18
    R9 = 0013345C
    R10= 00118E30
    R11= 7FFBE70A
    AP = 00167C58
    FP = 00167C34
    SP = 8142BDC8
    PC = 80497042
    PSL= 041F0009

    Kernel/interrupt/boot stack

    8142BDD0  00000004
    8142BDD4  00167C34
    8142BDD8  FFFFFFFD
    8142BDDC  00000001
    8142BDE0  00000000
    8142BDE4  00000001
    8142BDE8  00000005
    8142BDEC  0000000C
    8142BDF0  00000001
    8142BDF4  FFFFFFFC
    8142BDF8  FFFFFFFF
    8142BDFC  041F0000

    Loaded images 

[SYSMSG]SYSMSG.EXE                     803B9600 803E8400
[SYS$LDR]SYSLDR_DYN.EXE                804F3C00 804F5C00
[SYS$LDR]DDIF$RMS_EXTENSION.EXE        804F6200 804F7400
[SYS$LDR]RECOVERY_UNIT_SERVICES.EXE    804F7600 804F7E00
[SYS$LDR]RMS.EXE                       803E8400 80410200
VAXCLUSTER_CACHE.EXE                   80459000 80459600
SYS$NETWORK_SERVICES.EXE               80459C00 80459E00
SYS$TRANSACTION_SERVICES.EXE           8045A400 80475600
CPULOA.EXE                             80475A00 80478C00
LMF$GROUP_TABLE.EXE                    80479C00 8047B000
SYSLICENSE.EXE                         8047B400 8047CC00
SYSGETSYI.EXE                          8047D200 8047E800
SYSDEVICE.EXE                          8047EC00 80481200
MESSAGE_ROUTINES.EXE                   80481800 80486A00
EXCEPTION.EXE                          80496E00 8049FE00
LOGICAL_NAMES.EXE                      804A0600 804A2200
SECURITY.EXE                           804A2800 804A4E00
LOCKING.EXE                            804A5400 804AA800
PAGE_MANAGEMENT.EXE                    804AAE00 804B3800
WORKING_SET_MANAGEMENT.EXE             804C4200 804C9200
IMAGE_MANAGEMENT.EXE                   804C9C00 804CC800
EVENT_FLAGS_AND_ASTS.EXE               804CCE00 804CE200
IO_ROUTINES.EXE                        804CE800 804D7400
PROCESS_MANAGEMENT.EXE                 804D7C00 804E1A00
ERRORLOG.EXE                           804E9800 804EA200
PRIMITIVE_IO.EXE                       804EA800 804EB800
SYSTEM_SYNCHRONIZATION_UNI.EXE         804EBC00 804ED800
SYSTEM_PRIMITIVES.EXE                  804EDE00 804F1400

**** Starting memory dump....

    Header and error log buffers dumped...
    SPT & GPT dumped...
    System space dumped...
    Global pages dumped...
    NETACP dumped...
    REMACP dumped...
    CONFIGURE dumped...
    IPCACP dumped...
    SMISERVER dumped...
    ERRFMT dumped...
    CACHE_SERVER dumped...
    CLUSTER_SERVER dumped...
    OPCOM dumped...
    AUDIT_SERVER dumped...
    JOB_CONTROL dumped...
    QUEUE_MANAGER dumped...
    EVL dumped...
    MULTINET_SERVER dumped...
    XDM_SERVER dumped...
    LATACP dumped...
    SYMBIONT_1 dumped...

**** Memory dump complete....

Loading boot code from internal vmb.exe
Rebooting...

   VAX/VMS Version V5.5-2   Major version id = 1 Minor version id = 0
Killed

Booting up the older commit -

pi@pi1:~/simh $ sudo ~/src/simh-master-6b3bff56/BIN/vax780 vms780.ini

Then analyzing the crash dump shows VMS was in the IDLE state - so something inside SIMH is doing this.

Do you have a Raspberry Pi to test this on?

I tried building with DEBUG=1 and get errors with the basic instruction exerciser phase.

pi@pi1:~/src/simh-master $ make DEBUG=1 vax780
lib paths are: /lib/ /lib/arm-linux-gnueabihf/ /opt/vc/lib/ /usr/lib/ /usr/lib/arm-linux-gnueabihf/ /usr/lib/arm-linux-gnueabihf/libfakeroot/ /usr/lib/arm-linux-gnueabihf/neon/vfp/
include paths are:  /usr/lib/gcc/arm-linux-gnueabihf/6/include /usr/local/include /usr/lib/gcc/arm-linux-gnueabihf/6/include-fixed /usr/include/arm-linux-gnueabihf /usr/include
using libm: /usr/lib/arm-linux-gnueabihf/libm.so
using librt: /usr/lib/arm-linux-gnueabihf/librt.so
using libpthread: /usr/lib/arm-linux-gnueabihf/libpthread.so /usr/include/pthread.h
using libpcreposix: /usr/lib/arm-linux-gnueabihf/libpcreposix.so /usr/lib/arm-linux-gnueabihf/libpcre.so /usr/include/pcreposix.h /usr/include/pcre.h
using semaphore: /usr/include/semaphore.h
using libdl: /usr/lib/arm-linux-gnueabihf/libdl.so /usr/include/dlfcn.h
using mman: /usr/include/arm-linux-gnueabihf/sys/mman.h
using libpcap: /usr/include/pcap.h
using libvdeplug: /usr/lib/libvdeplug.so /usr/include/libvdeplug.h
***
*** vax780 Simulator being built with:
*** - debugging support. GCC Version: 6.3.0.
*** - dynamic networking support using Linux provided libpcap components.
*** - Local LAN packet transports: PCAP VDE TAP NAT(SLiRP)
*** - Per simulator tests will be run.
***
*** git commit id is f917accbec53f97bbe7f9312385c09fd056a8d8e.
*** git commit time is 2019-06-01T21:40:52+02:00.
***
mkdir -p BIN/buildtools
mkdir -p BIN/buildtools
gcc -std=gnu99 -U__STRICT_ANSI__ -g -ggdb -g3 -O0 -Wno-unused-result -DSIM_GIT_COMMIT_ID=f917accbec53f97bbe7f9312385c09fd056a8d8e -DSIM_GIT_COMMIT_TIME=2019-06-01T21:40:52+02:00  -DSIM_COMPILER="GCC Version: 6.3.0" -I . -D_GNU_SOURCE -DUSE_READER_THREAD -DSIM_ASYNCH_IO  -DHAVE_PCREPOSIX_H -DHAVE_SEMAPHORE -DHAVE_SYS_IOCTL -DHAVE_LINUX_CDROM -DHAVE_DLOPEN=so -DHAVE_UTIME -DHAVE_GLOB -DHAVE_SHM_OPEN  VAX/vax_cpu.c VAX/vax_cpu1.c VAX/vax_fpa.c VAX/vax_cis.c VAX/vax_octa.c  VAX/vax_cmode.c VAX/vax_mmu.c VAX/vax_sys.c  VAX/vax_syscm.c VAX/vax780_stddev.c VAX/vax780_sbi.c VAX/vax780_mem.c VAX/vax780_uba.c VAX/vax7x0_mba.c VAX/vax780_fload.c VAX/vax780_syslist.c PDP11/pdp11_rl.c PDP11/pdp11_rq.c PDP11/pdp11_ts.c PDP11/pdp11_dz.c PDP11/pdp11_lp.c PDP11/pdp11_tq.c PDP11/pdp11_xu.c PDP11/pdp11_ry.c PDP11/pdp11_cr.c PDP11/pdp11_rp.c PDP11/pdp11_tu.c PDP11/pdp11_hk.c PDP11/pdp11_vh.c PDP11/pdp11_dmc.c PDP11/pdp11_dup.c PDP11/pdp11_td.c PDP11/pdp11_tc.c PDP11/pdp11_rk.c PDP11/pdp11_io_lib.c PDP11/pdp11_ch.c scp.c sim_console.c sim_fio.c sim_timer.c sim_sock.c sim_tmxr.c sim_ether.c sim_tape.c sim_disk.c sim_serial.c sim_video.c sim_imd.c sim_card.c -DVM_VAX -DVAX_780 -DUSE_INT64 -DUSE_ADDR64 -I VAX -I PDP11 -DHAVE_PCAP_NETWORK -I/usr/include/ -DBPF_CONST_STRING -DUSE_SHARED -DHAVE_VDE_NETWORK -DHAVE_TAP_NETWORK -Islirp -Islirp_glue -Islirp_glue/qemu -DHAVE_SLIRP_NETWORK -DUSE_SIMH_SLIRP_DEBUG slirp/*.c slirp_glue/*.c -o BIN/vax780 -lm -lrt -lpthread -lpcreposix -lpcre -ldl -lvdeplug -Wl,-R,/usr/lib/ -L/usr/lib/ 
BIN/vax780 /home/pi/src/simh-master/VAX/tests/vax-diag_test.ini 

VAX 11/780 simulator V4.0-0 Current        git commit id: f917accb
Running Hardware Core Test (EVKAA)

*** PASSED - VAX 11/780 Hardware Core Instruction test EVKAA

Starting VAX Diagnostic Supervisor

Running - VAX Basic Instructions Exerciser EVKAB

*** FAILED - VAX Basic Instructions Exerciser EVKAB

makefile:2183: recipe for target 'BIN/vax780' failed
make: *** [BIN/vax780] Error 1
pi@pi1:~/src/simh-master $ cd
pi@pi1:~ $ cd simh
pi@pi1:~/simh $ sudo gdb ~/src/simh-master/BIN/vax780
GNU gdb (Raspbian 7.12-6) 7.12.0.20161007-git
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "arm-linux-gnueabihf".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /home/pi/src/simh-master/BIN/vax780...done.
(gdb) run
Starting program: /home/pi/src/simh-master/BIN/vax780 
markpizz commented 5 years ago

When you get a build failure with the basic tests, more useful info might be visible if you passed TEST_ARG=-v on the make command line:

$ make DEBUG=1 TEST_ARG=-v vax780

I do have a Raspberry Pi to test on. I DO NOT see the build test failure that you're seeing. You're running a newer kernel, but we're using the same GCC version.

Apart from the build failure, I am seeing behavior similar to what you're reporting when running the vax780 simulator. I'm looking into the underlying cause.

agn453 commented 5 years ago

Commit id: 53ad66f5 now behaves properly with the latest clock routine changes on Raspbian (VAX780 and PDP11) and also for VAX 3900 under Windows 10 with Visual Studio 2015.

However, under Cygwin I'm seeing the VAX 3900 console throw ?53 errors (timer test failures).

sim> b

KA655-B V5.3, VMB 2.7
Performing normal system tests.
40..39..38..37..36..35..34..33..32..31..

?53 2 0A FF 00 0000

P1=00000002  P2=00000028  P3=00002718  P4=00D40077  P5=00000001
P6=FFFFFFFF  P7=00000000  P8=00000000  P9=20051BD0 P10=20051CE0
r0=00000008  r1=20140110  r2=5FBF786E  r3=0003041C  r4=5FBF7878
r5=2004E8F9  r6=00018678  r7=000186C8  r8=0001ADB8 ERF=82000180
30..29..28..27..26..25..
24..23..22..21..20..19..18..17..16..15..14..13..12..11..10..09..
08..07..06..05..04..03..
Normal operation not possible.

If I persist and try again a few times (doing a vax vms.ini command) I can get it to pass the rom diagnostics and boot into OpenVMS VAX V7.3 - but after the start-up runs, I am unable to login and I see DECnet adjacency down messages. CTRL-E is also unresponsive. I left it a while to grab something to eat and tried a flurry of CTRL-E's when I returned and was able to get the sim> prompt.

sim> show clock
Minimum Host Sleep Time:        1 ms (1000Hz)
Host Clock Resolution:          1 ms
Execution Rate:                 43,899,218,700 cycles/sec
Idling:                         Enabled
Time before Idling starts:      20 seconds
Calibrated Timer:               CLK
Pre-Calibration Estimated Rate: 13,368,983
Calibration:                    Always
Asynchronous Clocks:            Available

MicroVAX 3900 clock device is CLK
Calibrated Timer 0:
  Running at:                100 Hz
  Tick Size:                 10 msecs
  Ticks in current second:   0
  Seconds Running:           226 (3:46 minutes)
  Calibration Opportunities: 226
  Calibs Skip Gap Too Big:   47
  Instruction Time:          -11606888538
  Real Time:                 573721080
  Virtual Time:              573721080
  Next Interval:             1,000
  Base Tick Delay:           324,218,750
  Initial Insts Per Tick:    5,000
  Current Insts Per Tick:    438,992,187
  Initializations:           6
  Ticks:                     20,867
  Total Ticks:               22,600
  Peak Clock Skew:           49.168433 seconds slow
  Ticks Acked:               19,526
  Tick Time:                 43:03.555 minutes
  Total Tick Time:           43:20.875 minutes
  Catchup Ticks Sched:       16,149
  Initialize Base Time:      20:31:38.810
  Tick Start Time:           20:31:38.989
  Wall Clock Time Now:       21:19:33.172
  Catchup Tick Time:         21:14:55.631
  Catchup Base Time:         20:31:52.076
  Total Time Idled:          41:02.112 minutes
sim> show version
MicroVAX 3900 simulator V4.0-0 Current
    Simulator Framework Capabilities:
        64b data
        64b addresses
        Polled Ethernet Packet transports:PCAP:NAT:UDP
        Idle/Throttling support is available
        Virtual Hard Disk (VHD) support
        Asynchronous I/O support (Lock free asynchronous event queue)
        Asynchronous Clock support
        FrontPanel API Version 12
    Host Platform:
        Compiler: GCC 7.4.0
        Simulator Compiled as C arch: x86 (Release Build) on Jun  4 2019 at 20:23:51
        Memory Access: Little Endian
        Memory Pointer Size: 32 bits
        Large File (>2GB) support
        SDL Video support: SDL Version 2.0.7
        RegEx support for EXPECT commands
        OS clock resolution: 1ms
        Time taken by msleep(1): 1ms
        OS: CYGWIN_NT-10.0-WOW trillian 3.0.7(0.338/5/3) 2019-04-30 18:04 i686 Cygwin
        git commit id: 53ad66f5
        git commit time: 2019-06-04T00:02:17-07:00
sim>

There's still some problems with the clock routines... a negative instruction time looks wrong!

markpizz commented 5 years ago

Tony,

The latest code works well for me on my Raspberry Pi. If you are still experiencing strange timing behavior. Please include these lines at the beginning of your configuration file and when it misbehaves, please zip the resulting timing.dbg file and attach it to this issue. Note, you want to capture the timing.dbg file after you have stopped the running simulator with ^E.

Add these commands: sim> SET DEBUG -NT timing.dbg sim> SET INT-CLOCK DEBUG=CALIB

Thanks.

Mark

agn453 commented 5 years ago

Sorry for the delay in responding. It was a holiday long weekend here and I was away for a few days.

Commit id: 9ab8d0e9 still has problems under Cygwin on Windows 10 for me.

I'm able to boot into OpenVMS, the start-up completes, I can log-in to SYSTEM, then the performance degrades to the point that keystrokes are taking 30 seconds or more to echo.

Attached is the timing.dbg file and the show version/show clock after a shutdown was taking too long.. so i broke in with CTRL-E...

sim> show version
MicroVAX 3900 simulator V4.0-0 Current
    Simulator Framework Capabilities:
        64b data
        64b addresses
        Polled Ethernet Packet transports:PCAP:NAT:UDP
        Idle/Throttling support is available
        Virtual Hard Disk (VHD) support
        Asynchronous I/O support (Lock free asynchronous event queue)
        Asynchronous Clock support
        FrontPanel API Version 12
    Host Platform:
        Compiler: GCC 7.4.0
        Simulator Compiled as C arch: x86 (Release Build) on Jun  9 2019 at 16:01:38
        Memory Access: Little Endian
        Memory Pointer Size: 32 bits
        Large File (>2GB) support
        SDL Video support: SDL Version 2.0.7
        RegEx support for EXPECT commands
        OS clock resolution: 1ms
        Time taken by msleep(1): 1ms
        OS: CYGWIN_NT-10.0-WOW trillian 3.0.7(0.338/5/3) 2019-04-30 18:04 i686 Cygwin
        git commit id: 9ab8d0e9
        git commit time: 2019-06-08T16:38:15-07:00
sim> show clock
Minimum Host Sleep Time:        1 ms (1000Hz)
Host Clock Resolution:          1 ms
Execution Rate:                 32,003,420,400 cycles/sec
Idling:                         Enabled
Time before Idling starts:      20 seconds
Calibrated Timer:               CLK
Pre-Calibration Estimated Rate: 13,586,956
Calibration:                    Always
Asynchronous Clocks:            Available

MicroVAX 3900 clock device is CLK
Calibrated Timer 0:
  Running at:                100 Hz
  Tick Size:                 10 msecs
  Ticks in current second:   1
  Seconds Running:           317 (5:17 minutes)
  Calibration Opportunities: 317
  Calibs Skip Gap Too Big:   34
  Instruction Time:          -69319516630
  Real Time:                 1067611803
  Virtual Time:              1067611803
  Next Interval:             1,000
  Base Tick Delay:           213,356,136
  Initial Insts Per Tick:    5,000
  Current Insts Per Tick:    320,034,204
  Initializations:           3
  Ticks:                     29,576
  Total Ticks:               31,701
  Peak Clock Skew:           4:58.280969 minutes slow
  Ticks Acked:               27,390
  Tick Time:                 34:16.109 minutes
  Total Tick Time:           34:37.349 minutes
  Catchup Ticks Sched:       25,476
  Catchup Ticks this second: 1
  Initialize Base Time:      13:51:42.317
  Tick Start Time:           13:51:42.487
  Wall Clock Time Now:       14:31:27.931
  Catchup Tick Time:         14:26:13.896
  Catchup Base Time:         13:51:57.787
  Total Time Idled:          37:19.594 minutes
sim>

timing.dbg.gz

markpizz commented 5 years ago

Hi Tony,

Can you do the same with a VAX780 simulator that you had mentioned previously? The internal timing behaviors on the MicroVAX 3900 and the VAX780 are significantly different during startup. Specifically, the MicroVAX 3900 runs from ROM which has deliberate delays that affect clock calibration and confuses the data that has been gathered. Once the details have been completely fixed on the VAX780, the net results should work on all simulators.

Thanks.

Mark

markpizz commented 5 years ago

Please pickup the latest code to test with.

agn453 commented 5 years ago

Mark,

Here's the VAX780 timer debug output (attached) from running under Cygwin on Windows 10 version 1903 (OS Build 18362.145). After 20 minutes uptime the booted VAX/VMS V5.5-2 system seems running fine with no perceived issues. Inside the debug output you'll find the output of the 'show clock' command too after I shutdown.

I ran the previous commit of VAX780 overnight on my Raspberry Pi 3B and it had no issues too.

sim> sh ver
VAX 11/780 simulator V4.0-0 Current
    Simulator Framework Capabilities:
        64b data
        64b addresses
        Polled Ethernet Packet transports:PCAP:NAT:UDP
        Idle/Throttling support is available
        Virtual Hard Disk (VHD) support
        Asynchronous I/O support (Lock free asynchronous event queue)
        Asynchronous Clock support
        FrontPanel API Version 12
    Host Platform:
        Compiler: GCC 7.4.0
        Simulator Compiled as C arch: x86 (Release Build) on Jun 11 2019 at 08:23:08
        Memory Access: Little Endian
        Memory Pointer Size: 32 bits
        Large File (>2GB) support
        SDL Video support: No Video Support
        RegEx support for EXPECT commands
        OS clock resolution: 1ms
        Time taken by msleep(1): 1ms
        OS: CYGWIN_NT-10.0-WOW trillian 3.0.7(0.338/5/3) 2019-04-30 18:04 i686 Cygwin
        git commit id: 8c4f8b0b
        git commit time: 2019-06-10T14:55:05-07:00

timing-vax780.dbg.gz

markpizz commented 5 years ago

We're getting close. There was only a couple of minor functional changes in the most recent commit.

Please try this with the MicroVax 3900 hopefully on both the Cygwin and Raspberry environments.

Thanks.

Mark

agn453 commented 5 years ago

Attached are the timing debug files for MicroVax3900 on both Raspberry Pi and under Cygwin.

The Raspberry Pi seems very well behaved, however I'm still seeing the ?53 boot rom error occasionally under Cygwin. Once I get it to boot, all seems well.

sim> b

KA655-B V5.3, VMB 2.7
Performing normal system tests.
40..39..38..37..36..35..34..33..32..31..

?53 2 0A FF 00 0000

P1=00000002  P2=00000028  P3=00002714  P4=00D40077  P5=00000001
P6=FFFFFFFF  P7=00000000  P8=00000000  P9=20051BD0 P10=20051CE0
r0=00000004  r1=20140110  r2=633DF851  r3=00030412  r4=633DF85B
r5=2004E8F9  r6=00018678  r7=000186C8  r8=0001ADB4 ERF=82000180
30..29..28..27..26..25..
24..23..22..21..20..19..18..17..16..15..14..13..12..11..10..09..
08..07..06..05..04..03..
Normal operation not possible.

>>> <CTRL-E>
Simulation stopped, PC: 2004367B (PUSHR #80C)
sim> b

KA655-B V5.3, VMB 2.7
Performing normal system tests.
40..39..38..37..36..35..34..33..32..31..30..29..28..27..26..25..
24..23..22..21..20..19..18..17..16..15..14..13..12..11..10..09..
08..07..06..05..04..03..
Tests completed.
>>>b
(BOOT/R5:0 DUA0

timing-rp.dbg.gz timing-cygwin.dbg.gz

markpizz commented 5 years ago

Tony,

Several stability changes have occurred in the TIMER functionality. Please confirm that things work well now on the various simulators and host systems you work with.

Thanks.

agn453 commented 5 years ago

Mark, I've built the latest commit id: b3fa1f9f microvax3900 and VAX780 on Raspbian, macOS and Cygwin. There appear to be no noticeable timer issues. I'll leave things running overnight and report back.

Tony

agn453 commented 5 years ago

Everything is fine this morning with this latest commit. Looks like you've fixed it Mark.

Thank you for your help.

Tony