SAGE CP/M 68k on SIMH

Somehow, I missed this as a ‘beta’ driver for the last public release of SIMH.

68k CP/M 1.2

68k CP/M 1.2

What makes the 68000 version of CP/M different from the i8080 version is that it was coded in C.  And of course 68k CP/M suffered the same problem every other processor incompatible ‘same os’ OS has ever suffered which is no applications.  But that is when I remembered the COM, which started out it’s life as an 8080 emulator for the 68000.  With a LOT of creative googlling, I managed to find the source, mysteriously labelled 8088M.ZIP.  I also found a binary here. But unfortunately that is as far as I got.  I haven’t managed to figure out a way to inject files into the SAGE CP/M IMD disk images.

So this is where I’m stuck, and this is my call for help.  If anyone knows how to get files in/out of these IMD files give me a shout.  For anyone interested in 68k CP/M this is your chance to get it running.

The one funny thing I found in a hex editor of the disk image was this:

Screen Shot 2013-12-05 at 12.20.20 AM

Cryptic message

Oh well.

 

***EDIT***

Never mind, me and a friend of mine (hi Lorenzo!) got the disk image thing figured out!

Qemu enters the 1.7 testing phase

I built 1.7rc2 on OSX, and I’ve only tested the x86 portion… x86_64 of course still fails on vista & friends… 2003 of course hangs at “starting windows” so no progress there.  I haven’t tried any MIPS, PowerPC, or SPARC things…

Also the Adlib/SoundBlaster is still broken in this release, there is a source change in adlib.c that has to be made.  Also I just noticed that IRQ sharing works in ISA mode again, so the Ne2000 can go back to 0x300 IRQ 9.

Also speaking of emulation, I was thinking of shoving a VAX-11/780 into the world for the heck of it.  Although I don’t think anyone would care.  I’ll have to dig out the source to 4.3 and give the shell the ability to add new users.  I wrote it once, and I fear I’ve lost those changes but it was cool for something back then.

Anyways post back here if you want an account on vax.superglobalmegacorp.com !

So a few things …

So after this comment, I decided to put a SIMH VAX running 4.3 BSD.  Back in the day, I used to keep a bunch of legacy systems online for the heck of it.  Although I don’t think it ever really took off.. But yeah I figured I should get something back online.

So this time I thought I’d make it somewhat.. different.. So anyways if you feel so inclined go ahead and telnet to

mud.superglobalmegacorp.com

And from there you can create a user account on the mud, and then it’ll create a user in the operating system.

 

I’ve loaded up a bunch of 3rd party stuff.. And since we are living in the past I managed to get the old news reader ‘rn’ to talk to olduse.net  The first time it runs it’ll complain a bunch but there isn’t much you can do except enjoy the ride.

Lynx is present but.. downloading stuff kind of stalls.

All I ask is you play nice.

I’ve added in the flash telnet app.

Some minor work on SIMH

So it’d been a while since I’ve booted it up, and I just went with the 3.8-2 rc2 release (I forget did that version ever get released..?) Anyways since I wanted to run my SIMH instance under a Linux VM..

Soooo I went through some fun to recompile it as a 32bit binary, as the slirp doesn’t work on 64bit machines..

I just built the 11/780 emulator as I wanted to run 4.3 UWisc on my VM (in a VM)..

You can download the build here.

As a reminder the installation instructions for 4.3 BSD Uwisc can be found on gunkies, and all the files needed are on sourceforge.  Also the 4.x BSD if_de.c driver errors out on receiving packets, and I’ve found it easier to just remove the error checking from the driver, and recompile the kernel and just boot that up.

I’m thinking of rebuilding the login process on 4.3 BSD to bring back AberMud, and self service user creation.  Years ago I used to host all kinds of ancient UNIX, and I’d like to bring back at least one..

SIMH 3.9-0 released!

And among the changes …

scp.c:

  • added *nix READLINE support (Mark Pizzolato)
  • fixed handling of DO with no arguments (Dave Bryan)
  • fixed “SHOW DEVICE” with only one enabled unit (Dave Bryan)
  • clarified some help messages (Mark Pizzolato)
  • added “SHOW SHOW” and “SHOW <dev> SHOW” commands (Mark Pizzolato)
  • fixed bug in deposit stride for numeric input (John Dundas)

sim_console.c

  • added support for BREAK key on Windows (Mark Pizzolato)

sim_ether.c

  • major revision (Dave Hittner and Mark Pizzolato)
  • fixed array overrun which caused SEGFAULT on hosts with many devices which libpcap can access.
  • fixed duplicate MAC address detection to work reliably on switch connected LANs

sim_tmxr.c:

  • made telnet option negotiation more reliable, VAX simulator now works with PuTTY as console (Mark Pizzolato)

h316_cpu.c:

  • fixed bugs in MPY, DIV introduced in 3.8-1 (from Theo Engel)
  • fixed bugs in double precision, normalization, SC (from Adrian Wise)
  • fixed XR behavior (from Adrian Wise)

hp2100 all peripherals (Dave Bryan):

  • Changed I/O signal handlers for newly revised signal model
  • Deprecated DEVNO modifier in favor of SC

hp2100_cpu.c (Dave Bryan):

  • Minor speedup in “is_mapped”
  • Added casts to cpu_mod, dmasio, dmapio, cpu_reset, dma_reset
  • Fixed I/O return status bug for DMA cycles
  • Failed I/O cycles now stop on failing instruction
  • Revised DMA for new multi-card paradigm
  • Consolidated DMA reset routines
  • DMA channels renamed from 0,1 to 1,2 to match documentation
  • Changed I/O instructions, handlers, and DMA for revised signal model
  • Changed I/O dispatch table to use DIB pointers
  • Removed DMA latency counter
  • Fixed DMA requests to enable stealing every cycle
  • Fixed DMA priority for channel 1 over channel 2
  • Corrected comments for “cpu_set_idle”

hp2100_cpu.h:

  • Changed declarations for VMS compiler

hp2100_cpu0.c (Dave Bryan):

  • Removed DS note regarding PIF card (is now implemented)

hp2100_cpu4.c (Dave Bryan):

  • Added OPSIZE casts to fp_accum calls in .FPWR/.TPWR

hp2100_cpu5.c (Dave Bryan):

  • Added sign extension for dim count in “cpu_ema_resolve”
  • Eliminated unused variable in “cpu_ema_vset”

hp2100_cpu6.c (Dave Bryan):

  • DMA channels renamed from 0,1 to 1,2 to match documentation

hp2100_cpu7.c (Dave Bryan):

  • Corrected “opsize” parameter type in vis_abs

hp2100_defs.h (Dave Bryan):

  • Added hp_setsc, hp_showsc functions to support SC modifier
  • DMA channels renamed from 0,1 to 1,2 to match documentation
  • Revised I/O signal enum values for concurrent signals
  • Revised I/O macros for new signal handling
  • Added DA and DC device select code assignments

hp2100_di.c, hp2100_di.h (Dave Bryan):

  • Implemented 12821A HP-IB Disc Interface

hp2100_di_da.c (Dave Bryan):

  • Implemented 7906H/20H/25H ICD disc drives

hp2100_dp.c (Dave Bryan):

  • Added CNTLR_TYPE cast to dp_settype

hp2100_ds.c (Dave Bryan):

  • Rewritten to use the MAC/ICD disc controller library
  • ioIOO now notifies controller service of parameter output
  • Corrected SRQ generation and FIFO under/overrun detection
  • Corrected Clear command to conform to the hardware
  • Fixed Request Status to return Unit Unavailable if illegal
  • Seek and Cold Load Read now Seek Check if seek in progress
  • Remodeled command wait for seek completion
  • Corrected status returns for disabled drive, auto-seek beyond drive limits, Request Sector Address and Wakeup with invalid or offline unit
  • Address verification reenabled if auto-seek during
  • Read Without Verify

hp2100_fp1.c (Dave Bryan):

  • Added missing precision on constant “one” in fp_trun
  • Completed the comments for divide; no code changes

hp2100_ipl.c (Dave Bryan):

  • Added CARD_INDEX casts to dib.card_index
  • A failed STC may now be retried
  • Consolidated reporting of consecutive CRS signals
  • Revised for new multi-card paradigm

hp2100_lps.c (Dave Bryan):

  • Revised detection of CLC at last DMA cycle
  • Corrected 12566B (DIAG mode) jumper settings

hp2100_ms.c (Dave Bryan):

  • Added CNTLR_TYPE cast to ms_settype

hp2100_mt.c (Dave Bryan):

  • Removed redundant MTAB_VUN from “format” MTAB entry
  • Fixed command scanning error in mtcio ioIOO handler

hp2100_stddev.c (Dave Bryan):

  • Add TBG as a logical name for the CLK device

hp2100_sys.c (Dave Bryan):

  • Deprecated DEVNO in favor of SC
  • Added hp_setsc, hp_showsc functions to support SC modifier
  • Added DA and dummy DC devices
  • DMA channels renamed from 0,1 to 1,2 to match documentation
  • Changed DIB access for revised signal model

hp_disclib.c, hp_disclib.h (Dave Bryan)

  • Created MAC/ICD disc controller library

i1401_cd.c:

  • fixed read stacker operation in column binary mode
  • fixed punch stacker operation (Van Snyder)

id_pas.c:

  • fixed TT_GET_MODE test to use TTUF_MODE_x (Michael Bloom)
  • revised to use clock coscheduling

id_tt.c, id_ttc.p:

  • revised to use clock coscheduling

id_uvc.c:

  • added clock coscheduling routine

1401_cpu.c:

  • reverted multiple tape indicator implementation
  • fixed EOT indicator test not to clear indicator (Van Snyder)
  • fixed divide not to clear word marks in quotient (Van Snyder)
  • revised divide algorithm (Van Snyder)

i1401_mt.c:

  • reverted multiple tape indicator implementation
  • fixed END indicator test not to clear indicator (Van Snyder)
  • fixed backspace over tapemark not to set EOR (Van Snyder)
  • added no rewind option (Van Snyder)

i1401_sys.c:

  • fixed misuse of & instead of && in decode (Peter Schorn)

pdp1_cpu.c:

  • fixed misuse of & instead of && in Ea_ch (Michael Bloom)

pdp1_stddev.c:

  • fixed unitialized variable in tty output service (Michael Bloom)

pdp10_fe.c:

  • revised to use clock coscheduling

pdp11_defs.h:

  • fixed priority of PIRQ vs IO; added INT_INTERNALn

pdp11_io.c:

  • fixed Qbus interrupts to treat all IO devices (except clock) as BR4
  • fixed order of int_internal (Jordi Guillaumes i Pons)

ppd11_rf.c

  • fixed bug in updating mem addr extension (Peter Schorn)

pdp11_rk.c:

  • fixed bug in read header (Walter F Mueller)

pdp11_rl.c:

  • added debug support

pdp11_rq.c:

  • added RD32 support

pdp11_tq.c: (Mark Pizzolato)

  • set UNIT_SXC flag when a tape mark is encountered during forward motion read operations
  • fixed logic which clears UNIT_SXC to check command modifier
  • added CMF_WR flag to tq_cmf entry for OP_WTM
  • made non-immediate rewind positioning operations take 2 seconds
  • added UNIT_IDLE flag to tq units.
  • fixed debug output of tape file positions when they are 64b
  • added more debug output after positioning operations
  • added textual display of the command being performed
  • fixed comments about register addresses

pdp11_ts.c:

  • fixed t_addr printouts for 64b big-endian systems (Mark Pizzolato)

pdp11_tu.c:

  • fixed t_addr printouts for 64b big-endian systems (Mark Pizzolato)

pdp11_vh.c: (Mark Pizzolato)

  • fixed SET VH LINES=n to correctly adjust the number of lines available to be 8, 16, 24, or 32.
  • fixed performance issue avoiding redundant polling

pdp11_xq.c: (Mark Pizzolato)

  • Fixed missing information from save/restore which caused operations to not complete correctly after a restore until the OS reset the controller.
  • Added address conflict check during attach.
  • Fixed loopback processing to correctly handle forward packets.
  • Fixed interrupt dispatch issue which caused delivered packets (in and out) to sometimes not interrupt the CPU after processing.
  • Fixed the SCP visibile SA registers to always display the ROM mac address, even after it is changed by SET XQ MAC=.
  • Added changes so that the Console DELQA diagnostic (>>>TEST 82) will succeed.
  • Added DELQA-T (aka DELQA Plus) device emulation support.
  • Added dropped frame statistics to record when the receiver discards received packets due to the receiver being disabled, or due to the XQ device’s packet receive queue being full.
  • Fixed bug in receive processing when we’re not polling. This could cause receive processing to never be activated again if we don’t read all available packets via eth_read each time we get the opportunity.
  • Added the ability to Coalesce received packet interrupts. This is enabled by SET XQ POLL=DELAY=nnn where nnn is a number of microseconds to delay the triggering of an interrupt when a packet is received.
  • Added SET XQ POLL=DISABLE (aka SET XQ POLL=0) to operate without polling for packet read completion.
  • Changed the sanity and id timer mechanisms to use a separate timer unit so that transmit and recieve activities can be dealt with by the normal xq_svc routine.
  • Dynamically determine the timer polling rate based on the calibrated tmr_poll and clk_tps values of the simulator.
  • Enabled the SET XQ POLL to be meaningful if the simulator currently doesn’t support idling.
  • Changed xq_debug_setup to use sim_debug instead of printf so that all debug output goes to the same place.
  • Restored the call to xq_svc after all successful calls to eth_write to allow receive processing to happen before the next event service time. This must have been inadvertently commented out while other things were being tested.

pdp11_xu.c: (Mark Pizzolato)

  • Added SHOW XU FILTERS modifier (Dave Hittner)
  • Corrected SELFTEST command, enabling use by VMS 3.7, VMS 4.7, and Ultrix 1.1 (Dave Hittner)
  • Added address conflict check during attach.
  • Added loopback processing support
  • Fixed the fact that no broadcast packets were received by the DEUNA
  • Fixed transmitted packets to have the correct source MAC address.
  • Fixed incorrect address filter setting calling eth_filter().

pdp18b_stddev.c:

  • added clock coscheduling
  • revised TTI to use clock coscheduling and to fix perpetual CAF bug

pdp18b_ttx.c:

  • revised to use clock coscheduling

pdp8_clk.c:

  • added clock coscheduling

pdp8_fpp.c: (Rick Murphy)

  • many bug fixes; now functional

pdp8_tt.c:

  • revised to use clock coscheduling and to fix perpetual CAF bug

pdp8_ttx.c:

  • revised to use clock cosheduling

pdp8_sys.c:

  • added link to FPP

pdp8_td.c:

  • fixed SDLC to clear AC (Dave Gesswein)

sds_mt.c:

  • fixed bug in scan function decode (Peter Schorn)

vax_cpu.c:

  • revised idle design (Mark Pizzolato)
  • fixed bug in SET CPU IDLE
  • fixed failure to clear PSL<tp> in BPT, XFC

vax_cpu1.c:

  • revised idle design Mark Pizzolato)
  • added VEC_QMODE test in interrupt handler

vax_fpa.c:

  • fixed integer overflow bug in EMODx (Camiel Vanderhoeven)
  • fixed POLYx normalizing before add mask bug (Camiel Vanderhoeven)
  • fixed missing arguments in 32b floating add (Mark Pizzolato)

vax_octa.c (Camiel Vanderhoeven)

  • fixed integer overflow bug in EMODH
  • fixed POLYH normalizing before add mask bug

vax_stddev.c:

  • revised to use clock coscheduling

vax_syscm.c:

  • fixed t_addr printouts for 64b big-endian systems (Mark Pizzolato)

vax_sysdev.c:

  • added power clear call to boot routine (Mark Pizzolato)

vax780_sbi.c:

  • added AUTORESTART switch support (Mark Pizzolato)

vax780_stddev.c

  • added REBOOT support (Mark Pizzolato)
  • revised to use clock coscheduling

vaxmod_def.h

  • moved all Qbus devices to BR4; deleted RP definitions

 

As always you can download it from the homepage, or from sourceforge.

Transferring data into CP/M with SIMH

This has been an exersize in insnaity..

So for some strange reason I wanted to load up Zork into SIMH‘s less featured (and much simpler) altair 8080 emulator.  The catch is the disk format which for the life of me I couldn’t get to work in any of the CP/M disk access tools.

The Altair z80 emulator as part of the same SIMH package includes a far more complicated setup, but out of the box it CANNOT read the disk image from the 8080 emulator.  After digging around it seems that one of the ‘approved’ methods of getting stuff into CP/M was to load it into memory, and just save the block (provided it fits in the 64k, more on that later).  The syntax really is quite simple:

load zork1.com 100

And that’ll load it up at the normal program entry point (just like an MS-DOS COM file!)..

Except it doesn’t want to work.

What?

but of course it works on the z80.

No problems here!

Which is great but the z80 can’t read the 8080’s disks..!  So after digging through the source code, I find this small gem that the z8080 has been changed to use a much larger disk size!

#define MAX_TRACKS 254 /* number of tracks,
original Altair has 77 tracks only */

So yes, by changing that to 77 I can now boot off the 8080’s boot disk on the z80!  Of course it also means that I’m unable to ‘see’ the hardisk in the z80, or any of the other great peripherals as no doubt the altair CP/M disk hasn’t been configured for all of these fine things.  I also tried only altering one of the disks on the z80 for 77 tracks, but once more again it seems that CP/M has an everything/nothing type idea for a disk controller.

But the load command works on the monitor, and the Altair CP/M can handle two disks, so its enough for me to format the B: drive ( a copy of the CP/M disks) and work with that.

Once you’ve loaded a program into memory, you toggle back to CP/M and run the ‘save’ command which then dumps how many pages back to disk.

For example, the program STAT is 5,248 bytes in size. 5248/256 = 20.5. Thus, the save command would be:

A>SAVE 21 STAT.COM

Pretty simple, right?  But what happens if you have a file greater than memory?  Well first I thought I could compress it, and I’d forgotten just how many old compression programs there were for CP/M, crunch, arc, zoo, zip … Finding MS-DOS equivalents wasn’t too bad (thanks for dosbox!) but I couldn’t get the 84kb data file into the memory limit, so I figure’d I’d just split the file into something on  a 256 byte boundary.  Loading them into RAM wasn’t too hard, as saving them out.. but how do you join them together on CP/M?  I found PLENTY of utils to split files, but nothing on putting them back together!

On MS-DOS you can just do a copy /B file1+file2 bigfile

But I couldn’t find out how to do this on CP/M until I looked further into the PIP command, CP/M’s answer to copy.

To join a binary file it goes something like this:

>PIP sd.com=sd.001[OV],sd.002[OV],sd.003[OV]

So with all that work, I was now able to create a zork1.dsk that the 8080 emulator is capable of playing!

Zork1 finally loaded on the SIMH Altair 8080

And for the curious, here is Zork1, in the old Altair 77 track format.

 

 

I don’t know how I missed it, but SIMH 3.9-0 was released!

SIMH, is Bob Supniks emulation package that includes:

  • Data General Nova, Eclipse
  • Digital Equipment Corporation PDP-1, PDP-4, PDP-7, PDP-8, PDP-9, PDP-10, PDP-11, PDP-15, VAX
  • GRI Corporation GRI-909, GRI-99
  • IBM 1401, 1620, 1130,  7090/7094, System 3
  • Interdata (Perkin-Elmer) 16b and 32b systems
  • Hewlett-Packard 2114, 2115, 2116, 2100, 21MX, 1000
  • Honeywell H316/H516
  • MITS Altair 8800, with both 8080 and Z80
  • Royal-Mcbee LGP-30, LGP-21
  • Scientific Data Systems SDS 940
  • SWTP 6800
The changes from the previous version are:

0 01-May-2012 scp.c:
– added *nix READLINE support (Mark Pizzolato)
– fixed handling of DO with no arguments (Dave Bryan)
– fixed “SHOW DEVICE” with only one enabled unit (Dave Bryan)
– clarified some help messages (Mark Pizzolato)
– added “SHOW SHOW” and “SHOW <dev> SHOW” commands (Mark Pizzolato)
– fixed bug in deposit stride for numeric input (John Dundas)

sim_console.c
– added support for BREAK key on Windows (Mark Pizzolato)

sim_ether.c
– major revision (Dave Hittner and Mark Pizzolato)
– fixed array overrun which caused SEGFAULT on hosts with many
devices which libpcap can access.
– fixed duplicate MAC address detection to work reliably on switch
connected LANs

sim_tmxr.c:
– made telnet option negotiation more reliable, VAX simulator now
works with PuTTY as console (Mark Pizzolato)

h316_cpu.c:
– fixed bugs in MPY, DIV introduced in 3.8-1 (from Theo Engel)
– fixed bugs in double precision, normalization, SC (from Adrian Wise)
– fixed XR behavior (from Adrian Wise)

hp2100 all peripherals (Dave Bryan):
– Changed I/O signal handlers for newly revised signal model
– Deprecated DEVNO modifier in favor of SC

hp2100_cpu.c (Dave Bryan):
– Minor speedup in “is_mapped”
– Added casts to cpu_mod, dmasio, dmapio, cpu_reset, dma_reset
– Fixed I/O return status bug for DMA cycles
– Failed I/O cycles now stop on failing instruction
– Revised DMA for new multi-card paradigm
– Consolidated DMA reset routines
– DMA channels renamed from 0,1 to 1,2 to match documentation
– Changed I/O instructions, handlers, and DMA for revised signal model
– Changed I/O dispatch table to use DIB pointers
– Removed DMA latency counter
– Fixed DMA requests to enable stealing every cycle
– Fixed DMA priority for channel 1 over channel 2
– Corrected comments for “cpu_set_idle”

hp2100_cpu.h:
– Changed declarations for VMS compiler

hp2100_cpu0.c (Dave Bryan):
– Removed DS note regarding PIF card (is now implemented)

hp2100_cpu4.c (Dave Bryan):
– Added OPSIZE casts to fp_accum calls in .FPWR/.TPWR

hp2100_cpu5.c (Dave Bryan):
– Added sign extension for dim count in “cpu_ema_resolve”
– Eliminated unused variable in “cpu_ema_vset”

hp2100_cpu6.c (Dave Bryan):
– DMA channels renamed from 0,1 to 1,2 to match documentation

hp2100_cpu7.c (Dave Bryan):
– Corrected “opsize” parameter type in vis_abs

hp2100_defs.h (Dave Bryan):
– Added hp_setsc, hp_showsc functions to support SC modifier
– DMA channels renamed from 0,1 to 1,2 to match documentation
– Revised I/O signal enum values for concurrent signals
– Revised I/O macros for new signal handling
– Added DA and DC device select code assignments

hp2100_di.c, hp2100_di.h (Dave Bryan):
– Implemented 12821A HP-IB Disc Interface

hp2100_di_da.c (Dave Bryan):
– Implemented 7906H/20H/25H ICD disc drives

hp2100_dp.c (Dave Bryan):
– Added CNTLR_TYPE cast to dp_settype

hp2100_ds.c (Dave Bryan):
– Rewritten to use the MAC/ICD disc controller library
– ioIOO now notifies controller service of parameter output
– Corrected SRQ generation and FIFO under/overrun detection
– Corrected Clear command to conform to the hardware
– Fixed Request Status to return Unit Unavailable if illegal
– Seek and Cold Load Read now Seek Check if seek in progress
– Remodeled command wait for seek completion
– Corrected status returns for disabled drive, auto-seek
beyond drive limits, Request Sector Address and Wakeup
with invalid or offline unit
– Address verification reenabled if auto-seek during
Read Without Verify

hp2100_fp1.c (Dave Bryan):
– Added missing precision on constant “one” in fp_trun
– Completed the comments for divide; no code changes

hp2100_ipl.c (Dave Bryan):
– Added CARD_INDEX casts to dib.card_index
– A failed STC may now be retried
– Consolidated reporting of consecutive CRS signals
– Revised for new multi-card paradigm

hp2100_lps.c (Dave Bryan):
– Revised detection of CLC at last DMA cycle
– Corrected 12566B (DIAG mode) jumper settings

hp2100_ms.c (Dave Bryan):
– Added CNTLR_TYPE cast to ms_settype

hp2100_mt.c (Dave Bryan):
– Removed redundant MTAB_VUN from “format” MTAB entry
– Fixed command scanning error in mtcio ioIOO handler

hp2100_stddev.c (Dave Bryan):
– Add TBG as a logical name for the CLK device

hp2100_sys.c (Dave Bryan):
– Deprecated DEVNO in favor of SC
– Added hp_setsc, hp_showsc functions to support SC modifier
– Added DA and dummy DC devices
– DMA channels renamed from 0,1 to 1,2 to match documentation
– Changed DIB access for revised signal model

hp_disclib.c, hp_disclib.h (Dave Bryan)
– Created MAC/ICD disc controller library

i1401_cd.c:
– fixed read stacker operation in column binary mode
– fixed punch stacker operation (Van Snyder)

id_pas.c:
– fixed TT_GET_MODE test to use TTUF_MODE_x (Michael Bloom)
– revised to use clock coscheduling

id_tt.c, id_ttc.p:
– revised to use clock coscheduling

id_uvc.c:
– added clock coscheduling routine

1401_cpu.c:
– reverted multiple tape indicator implementation
– fixed EOT indicator test not to clear indicator (Van Snyder)
– fixed divide not to clear word marks in quotient (Van Snyder)
– revised divide algorithm (Van Snyder)

i1401_mt.c:
– reverted multiple tape indicator implementation
– fixed END indicator test not to clear indicator (Van Snyder)
– fixed backspace over tapemark not to set EOR (Van Snyder)
– added no rewind option (Van Snyder)

i1401_sys.c:
– fixed misuse of & instead of && in decode (Peter Schorn)

pdp1_cpu.c:
– fixed misuse of & instead of && in Ea_ch (Michael Bloom)

pdp1_stddev.c:
– fixed unitialized variable in tty output service (Michael Bloom)

pdp10_fe.c:
– revised to use clock coscheduling

pdp11_defs.h:
– fixed priority of PIRQ vs IO; added INT_INTERNALn

pdp11_io.c:
– fixed Qbus interrupts to treat all IO devices (except clock) as BR4
– fixed order of int_internal (Jordi Guillaumes i Pons)

ppd11_rf.c
– fixed bug in updating mem addr extension (Peter Schorn)

pdp11_rk.c:
– fixed bug in read header (Walter F Mueller)

pdp11_rl.c:
– added debug support

pdp11_rq.c:
– added RD32 support

pdp11_tq.c: (Mark Pizzolato)
– set UNIT_SXC flag when a tape mark is encountered
during forward motion read operations
– fixed logic which clears UNIT_SXC to check command modifier
– added CMF_WR flag to tq_cmf entry for OP_WTM
– made non-immediate rewind positioning operations take 2 seconds
– added UNIT_IDLE flag to tq units.
– fixed debug output of tape file positions when they are 64b
– added more debug output after positioning operations
– added textual display of the command being performed
– fixed comments about register addresses

pdp11_ts.c:
– fixed t_addr printouts for 64b big-endian systems (Mark Pizzolato)

pdp11_tu.c:
– fixed t_addr printouts for 64b big-endian systems (Mark Pizzolato)

pdp11_vh.c: (Mark Pizzolato)
– fixed SET VH LINES=n to correctly adjust the number
of lines available to be 8, 16, 24, or 32.
– fixed performance issue avoiding redundant polling

pdp11_xq.c: (Mark Pizzolato)
– Fixed missing information from save/restore which
caused operations to not complete correctly after
a restore until the OS reset the controller.
– Added address conflict check during attach.
– Fixed loopback processing to correctly handle forward packets.
– Fixed interrupt dispatch issue which caused delivered packets
(in and out) to sometimes not interrupt the CPU after processing.
– Fixed the SCP visibile SA registers to always display the
ROM mac address, even after it is changed by SET XQ MAC=.
– Added changes so that the Console DELQA diagnostic (>>>TEST 82)
will succeed.
– Added DELQA-T (aka DELQA Plus) device emulation support.
– Added dropped frame statistics to record when the receiver discards
received packets due to the receiver being disabled, or due to the
XQ device’s packet receive queue being full.
– Fixed bug in receive processing when we’re not polling. This could
cause receive processing to never be activated again if we don’t
read all available packets via eth_read each time we get the
opportunity.
– Added the ability to Coalesce received packet interrupts. This
is enabled by SET XQ POLL=DELAY=nnn where nnn is a number of
microseconds to delay the triggering of an interrupt when a packet
is received.
– Added SET XQ POLL=DISABLE (aka SET XQ POLL=0) to operate without
polling for packet read completion.
– Changed the sanity and id timer mechanisms to use a separate timer
unit so that transmit and recieve activities can be dealt with
by the normal xq_svc routine.
Dynamically determine the timer polling rate based on the
calibrated tmr_poll and clk_tps values of the simulator.
– Enabled the SET XQ POLL to be meaningful if the simulator currently
doesn’t support idling.
– Changed xq_debug_setup to use sim_debug instead of printf so that
all debug output goes to the same place.
– Restored the call to xq_svc after all successful calls to eth_write
to allow receive processing to happen before the next event
service time. This must have been inadvertently commented out
while other things were being tested.

pdp11_xu.c: (Mark Pizzolato)
– Added SHOW XU FILTERS modifier (Dave Hittner)
– Corrected SELFTEST command, enabling use by VMS 3.7, VMS 4.7, and Ultrix 1.1 (Dave Hittner)
– Added address conflict check during attach.
– Added loopback processing support
– Fixed the fact that no broadcast packets were received by the DEUNA
– Fixed transmitted packets to have the correct source MAC address.
– Fixed incorrect address filter setting calling eth_filter().

pdp18b_stddev.c:
– added clock coscheduling
– revised TTI to use clock coscheduling and to fix perpetual CAF bug

pdp18b_ttx.c:
– revised to use clock coscheduling

pdp8_clk.c:
– added clock coscheduling

pdp8_fpp.c: (Rick Murphy)
– many bug fixes; now functional

pdp8_tt.c:
– revised to use clock coscheduling and to fix perpetual CAF bug

pdp8_ttx.c:
– revised to use clock cosheduling

pdp8_sys.c:
– added link to FPP

pdp8_td.c:
– fixed SDLC to clear AC (Dave Gesswein)

sds_mt.c:
– fixed bug in scan function decode (Peter Schorn)

vax_cpu.c:
– revised idle design (Mark Pizzolato)
– fixed bug in SET CPU IDLE
– fixed failure to clear PSL<tp> in BPT, XFC

vax_cpu1.c:
– revised idle design Mark Pizzolato)
– added VEC_QMODE test in interrupt handler

vax_fpa.c:
– fixed integer overflow bug in EMODx (Camiel Vanderhoeven)
– fixed POLYx normalizing before add mask bug (Camiel Vanderhoeven)
– fixed missing arguments in 32b floating add (Mark Pizzolato)

vax_octa.c (Camiel Vanderhoeven)
– fixed integer overflow bug in EMODH
– fixed POLYH normalizing before add mask bug

vax_stddev.c:
– revised to use clock coscheduling

vax_syscm.c:
– fixed t_addr printouts for 64b big-endian systems (Mark Pizzolato)

vax_sysdev.c:
– added power clear call to boot routine (Mark Pizzolato)

vax780_sbi.c:
– added AUTORESTART switch support (Mark Pizzolato)

vax780_stddev.c
– added REBOOT support (Mark Pizzolato)
– revised to use clock coscheduling

vaxmod_def.h
– moved all Qbus devices to BR4; deleted RP definitions

 

Anyways, let the good times roll!

 

NetBSD 1.2 for the MicroVAX II package…

Well looking around on my sourceforge page, it hit me that I never did do a NetBSD 1.2 MicroVAX II package, so I thought I’d slap one together.  I basically just followed my install notes, and added in some stuff that I’d built earlier.

So for those who care, here you go!

From the package’s readme:

Welcome to this minimal version of NetBSD 1.2 for the MicroVAX II.

Getting started
:::::::::::::::

just fire up the emulator like this:

vax.exe run.ini

—–8<—–8<—–8<—–8<—–8<—–8<

C:\netbsd1.2\test>vax.exe run.ini

VAX simulator V3.8-1
run.ini> set idle OLDVMS
Non-existent device
TS: creating new file
Loading boot code from ka655x.bin

?[c
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.
>>>
—–8<—–8<—–8<—–8<—–8<—–8<

You’ll be booted up to the boot rom. next we have to boot from the
hard disk. NetBSD’s bootblocks were very fragile back then so
it won’t autoboot. I never did tear into it to see why it won’t boot
so you’ll have to do it the old fasioned way.
>>>b/3 dua0
(BOOT/R5:3 DUA0

2..
-DUA0
1..0..
howto 0x3, bdev 0x11, booting…done. (11108+33996)

Nboot
:ra(0,0)netbsd
—–8<—–8<—–8<—–8<—–8<—–8<

Once you’ve booted the kernel, it’ll probe out the hardware, then
it’ll ask where the root disk is (ra0a).

—–8<—–8<—–8<—–8<—–8<—–8<
zs0: timeout waiting for TS_SSR
tmscp0 at uba0 csr 174500 vec 760, ipl 15
tms0 at tmscp0 slave 0
qe0 at uba0 csr 174440 vec 754 ipl 15
qe0: delqa, hardware address 08:00:2b:aa:bb:cc
dz0 at uba0 csr 160100 vec 304 ipl 15
root device?
—–8<—–8<—–8<—–8<—–8<—–8<

Armed with this information you can simply hit enter as it’ll want
to drop to single user mode, then hit contrl+d and it’ll resume booting
into multiuser mode.

—–8<—–8<—–8<—–8<—–8<—–8<
root device? ra0a
?Enter pathname of shell or RETURN for sh:
#
—–8<—–8<—–8<—–8<—–8<—–8<
remember it’s enter then control+d

—–8<—–8<—–8<—–8<—–8<—–8<
#^D setting tty flags
starting network
add host amnesiac.my.domain: gateway localhost
add net default: gateway 10.0.2.2
starting rpc daemons: portmap.
starting system logger, time daemon.
checking for core dump…
savecore: no core dump
checking quotas: done.
building databases…
clearing /tmp
standard daemons: update cron.
starting network daemons: routed printer inetd.
creating runtime link editor directory cache.
starting local daemons:.
Tue May 5 08:29:22 PDT 1998
May 5 08:29:22 amnesiac init: kernel security level changed from 0 to 1

NetBSD/vax (amnesiac.my.domain) (console)

login:
—–8<—–8<—–8<—–8<—–8<—–8<
And there we go, NetBSD is all booted. The network is configured, you
may wish to change the /etc/resolv.conf if you so wish.
USING NETBSD
::::::::::::

Once the system is booted up into multiuser mode, TCP/IP is enabled and
you can now telnet into your system, by connecting to the localhost on
port 42323.

telnet localhost 42323

will connect you, and you’ll get the login prompt:

—–8<—–8<—–8<—–8<—–8<—–8<
NetBSD/vax (amnesiac.my.domain) (ttyp0)

login:
—–8<—–8<—–8<—–8<—–8<—–8<

There is no root password, so you can just login as root, and away you
go. I prefer to telnet in so I get a working terminal as the console
doesn’t do any VT100 emulation, its more of a dumb TTY. Outside of the
default programs in NetBSD the following programs have been installed
into the image:
* bash-2.0
* dungeon-2.5.6
* ircii-4.4
* lynx-2.8.2
* GNUmake-3.75
* pine-3.87
* screen-3.7.1
* unzip552

This should at least make using the system somewhat tollerable.

FAQ
:::
Q:When I hit backspace I get ^H ‘s!!!
A:stty erase <backspace>

In unix they used keyboards with delete keys instead of backspaces… Oh the horrors.
SHUTTING DOWN
:::::::::::::

This should be simple, login as root and just issue the following command:

reboot

And you’ll get halted to the SIMH prompt from there you can just quit.

NetBSD 1.2 MicroVAX II

 

 

Slow VM disk access on Qemu/SIMH or other emulators running on Windows?

Turns out from an interesting thread on the SIMH mailing list, is that the Windows volume shadow copy service, and other ‘system’ protecting services may tag files like .dsk to be monitored, and to save a difference of every write to the file.

Yes that is right, on top of NTFS’s transaction log and rolls, you have the OS doing the same thing which in turn makes your disk access slower than hell.

The fix?

Quite simple, dont use TLA (three letter acronym) file extensions, or no extensions at all and suddenly you’ll find that your disk based emulation is significantly faster.