Re: [Simh] 101 Basic Games for RSTS/E (was Re: PDP11 on Simh for public access)
Fascinating, as Mr. Spock would say. ;-) I’m not sure where my copy is now, but 101 Basic Computer Games really jump-started my programming, and in my opinion the Star Trek game was the best game in the book. I ended up adapting it to run on my [okay, my Dad’s LOL] TRS-80 (Model 1, Level II, eventually a whopping 32KB of memory), and of course it wasn’t big enough so it got expanded, adding more features like persistent galaxy state (saved between sessions) and multiplayer capability. (Not simultaneously, of course, but the concept of multiple ships of which one was actively in use by the current player.) This abused several interesting features of the TRS-80’s Radio Shack Level II BASIC… One (that I’ve never encountered anywhere else) was that you didn’t have to put spaces in the code, and eliminating each space saved a byte of memory. The following was perfectly legal and readable if your eye was practiced: 100 FORI=1TO10 110 PRINTI 120 NEXTI Now imagine more complex lines. After all, running them all together eliminates unneeded line numbers and saves even more memory: 100 FORI=1TO10:PRINTI:NEXTI Then you eliminate all of the comments, because they’re pure overhead… When I still ran out of room, I started converting some functions into machine code (by hand, using a Z80 reference book) and POKEing them into memory… Luckily, I went to college and encountered a VAX-11/780, at which point I recoded the whole mess in VAX-11 BASIC, took advantage of the expansive VT100 display real estate, and began abusing (as they became available) indexed files, shared global sections, and the lock manager to make real multiplayer gaming workable. Despite all of that, the heredity of the game is evident, including the coordinate system: (see the compass in the upper right corner!) [cid:image001.jpg@01D4B4AA.9B972180] That brings me back around to the point of this note. In VAX BASIC, fundamentally unchanged since some point prior to 1985, my course logic looks like this: ! ! Return a real course from point (x1,y1) to point (x2,y2) ! using Star Trek course notation. ! function single course(long x1,y1,x2,y2) declare long x,y declare single temp on error go back x = x2-x1 ! Calculate offset P1 -> P2 y = y2-y1 ! Std. Cartesian system if x='0'L then if y>'0'L then course = 3.0! Straight up exit function else course = 7.0! Straight down exit function end if else temp = atn(real(y)/real(x))*57.2958 ! Calculate angle in degrees if x<='0'L then temp = temp+180.0 ! Correct for quadrant else if y<'0'L then temp = temp+360.0 end if end if end if course = temp/45.0+1.0 ! Convert to proper notation end function My guess is that this algorithm is more or less what you expected to find before you started digging into the code. (Originally this used bytes, but as memory became cheaper and access more convoluted, I promoted things to improve alignment.) But here’s the punchline: I realized, as I was reading through your excerpt, that the algorithm used by the original game is EXACTLY the same that I used in my head to “estimate” courses when I was playing my game and I didn’t have the time to ask the computer for the course before getting shot myself. I don’t remember learning it from the original code, but I’m sure that’s where it came from. If I had to guess – and I am – I’d say the original implementation might not have had trig functions available (when did BASIC acquire them?), and this is a pretty decent approximation. At least for the limited size and high granularity of a 64-sector quadrant. Certainly I could do it rapidly in my head, and I can testify that the results pretty much always match the “obvious” calculation, if you can aim and shoot fast enough that the target hasn’t moved! Those were the days, Scott From: Simh mailto:simh-boun...@trailing-edge.com>> On Behalf Of Will Senn Sent: Wednesday, January 23, 2019 10:22 AM To: Clem Cole mailto:cl...@ccc.com>> Cc: Simh mailto:simh@trailing-edge.com>>; Bryan Davies mailto:bryan.e.dav...@gmail.com>> Subject: Re: [Simh] 101 Basic Games for RSTS/E (was Re: PDP11 on Simh for public access) On 1/21/19 3:55 PM, Clem Cole wrote: Anyway, the point is that simple computer games in BASIC were being passed around between people (as paper tapes), particularly if you had acccess to multiple different brands of computers.You always had the source code, in those days so it was really not big deal. In fact, my memory is that one of the new things that you could do on the PDP-10 was >>compile<< your basic program, or at least leave it in
Re: [Simh] Transferring the licence file to the VAX emulator
FWIW, I've been running simh for ages and periodically I forget to renew my hobbyist licenses before they expire. It happened again just last week. I usually go through the following song and dance routine in this scenario: 1. Get new hobbyist licenses in attached .COM file 2. Transfer from Windows (where my mail lives) to Linux (where everything fun occurs) 3. Run "dos2unix" to replace DOS line endings with Unix line endings 4. Working on side-by-side windows, find the "VAX-VMS" and "UCX" licenses in the file ... 5. ... and manually enter the LICENSE REGISTER and LICENSE LOAD commands on the VAX console 6. Use FTP to transfer the file from Linux to VMS (remember to use ASCII mode!!) 7. Execute the full script to load all of the other licenses (and harmlessly barf on the two you did manually) Cheers, Scott DXC Technology Company - Headquarters: 1775 Tysons Boulevard, Tysons, Virginia 22102, USA. DXC Technology Company -- This message is transmitted to you by or on behalf of DXC Technology Company or one of its affiliates. It is intended exclusively for the addressee. The substance of this message, along with any attachments, may contain proprietary, confidential or privileged information or information that is otherwise legally exempt from disclosure. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient of this message, you are not authorized to read, print, retain, copy or disseminate any part of this message. If you have received this message in error, please destroy and delete all copies and notify the sender by return e-mail. Regardless of content, this e-mail shall not operate to bind DXC Technology Company or any of its affiliates to any order or other contract unless pursuant to explicit written agreement or government initiative expressly permitting the use of e-mail for such purpose. --. ___ Simh mailing list Simh@trailing-edge.com http://mailman.trailing-edge.com/mailman/listinfo/simh
Re: [Simh] CI750 tech docs and VAX firmware
>Yes. Although there are some slight differences between ethernet and CI, >but from a practical point of view, for cluster networking, ethernet >works just as well. "Practical" has very little to do with my interest in this subject, LOL, but I have a definite fondness for the old "classic" VAXcluster with a star coupler and an HSC (or two - dual-ported disks, anyone?) for storage. For no good reason, I fret over my inability to map the same "shared disk" image to multiple emulated VAXen and have at it. Yeah, I could just MSCP-serve it from one node to another, but the kewlness of having a virtual HSC50 own all my disks and running a completely symmetrical shared-storage cluster cannot be overlooked. Daydreaming, Scott Bailey scott.bai...@hpe.com smime.p7s Description: S/MIME cryptographic signature ___ Simh mailing list Simh@trailing-edge.com http://mailman.trailing-edge.com/mailman/listinfo/simh
Re: [Simh] running on Debian
Sigh. No matter how many times I re-read before sending, it doesn't matter. Let me expand on this: >1. in /etc/rc.local, I have this snippet to make sure the network tap device >I >need is ready to go: > >if ! ip link show tap0 ; then > tunctl -t tap0 > ifconfig tap0 up > brctl addif br0 tap0 >fi > >Here, tap0 is the device I am setting up for my virtual VAX and br0 is my >physical interface. (As a reminder, going through this rather than putting >simh directly on the physical interface is what enables your virtual VAX and >your Debian host to talk to each other.) Actually, of course, br0 is a bridge device that lets me connect tap0 to my physical interface. I have this in /etc/network/interfaces: # The bridge interface auto br0 iface br0 inet static bridge_ports eth1 address X.Y.Z.3 broadcast X.Y.Z.255 netmask 255.255.255.0 gateway X.Y.Z.1 That is, if you current specify a device (like eth1) directly, transfer its settings to br0 and attach the original NIC as a bridge port. [Or change instances of "eth1" to "br0", then add the "bridge_ports eth1" line.] Then continue as I originally described... Cheers, Scott smime.p7s Description: S/MIME cryptographic signature ___ Simh mailing list Simh@trailing-edge.com http://mailman.trailing-edge.com/mailman/listinfo/simh
Re: [Simh] running on Debian
I agree with everything Mark said. (Particularly installing libpcap-dev...) I'm running a simh VAX 8650 on Debian stretch (although nothing has changed appreciably of late except maybe systemd); here are some additional operational notes that you might or might not find useful -- these are about using the executable once you've built it successfully. 1. in /etc/rc.local, I have this snippet to make sure the network tap device I need is ready to go: if ! ip link show tap0 ; then tunctl -t tap0 ifconfig tap0 up brctl addif br0 tap0 fi Here, tap0 is the device I am setting up for my virtual VAX and br0 is my physical interface. (As a reminder, going through this rather than putting simh directly on the physical interface is what enables your virtual VAX and your Debian host to talk to each other.) Run this manually the first time (since of course it wasn't there when your system last booted, lol). 2. In my vax8600.ini file, I attach the network device like so: set xu enable set xu type=delua attach xu tap:tap0 Obviously (?) if you're using an emulated Q-bus system, you'd use xq instead of xu (and I believe the set xu type can just be deleted). 3. I do this to my simh vax8600 executable (each time I build a new one) so that I can run it as a non-root user and still bind to the network device: sudo /sbin/setcap cap_net_raw,cap_net_admin=eip /vax/vax8600 4. I use a script called "screen-vax" to start the VAX with the console attached to a screen session, so I generally can ignore it but have the option of attaching (via "screen -dr") when I actually want to do something on the console -- like enter a new VMS license PAK. ;-) #!/bin/sh export PATH=/sbin:/usr/sbin:/bin:/usr/bin cd /vax # Start the simulator... if [ "$1" = service ] ; then # "detach" process but do not fork (so systemd can track it) FLAG="-D" else # detach and fork so we can go on about our business FLAG="-d" fi screen $FLAG -mh 500 /vax/vax8600 echo "Simulator terminated." exit 0 5. If you want systemd to start your VAX automatically when your host boots, you can use something like this, which sits in /etc/systemd/system/oasis.service: (OASIS:: is the emulated VAX 8650) [Unit] Description=Emulated VAX OASIS:: After=network.target auditd.service Requires=network.target RequiresMountsFor=/vax [Service] Type=simple User=sbailey ExecStart=/vax/screen-vax service #ExecStop= KillMode=process [Install] WantedBy=multi-user.target Alias=simh.service A few notes about this: - I can't remember why I put auditd.service into the "After=" directive; - Don't forget to do "systemctl daemon-reload" after creating or editing this file; - This does *NOT* do a clean shutdown of the system; luckily VMS is very forgiving... ;-) Happy computing, Scott smime.p7s Description: S/MIME cryptographic signature ___ Simh mailing list Simh@trailing-edge.com http://mailman.trailing-edge.com/mailman/listinfo/simh
Re: [Simh] Sounds
I was fortunate to have gotten "on the inside" quite early in my career, and reading this thread really has brought back a wave of nostalgia for the sights, sounds, and feel of old machine rooms. And that's scratching the surface (pardon the pun). I managed a lonely trio of Xerox 8010 servers that lasted into the late 1990s, and of course there was really no hardware or software support of any kind for those dinosaurs. They had huge (by today's standards) internal disks that were rotated by an external motor and drive belt. I recall vividly that following power outages (for whatever reason), one of the servers required you to remove the side panel and "jump start" the disk by rotating the spindle manually -- the belt was a little too worn/loose for the system to spin up the disk from a standing start! When I started at Xerox in 1985, there were 6085s all over the place and we used them for everything. Well, everything that didn't involve the VT100 sitting next to mine. ;-) Actually (he says plaintively) a 8010 or 6085 emulator would be a great SimH fodder -- certainly they were important computing artifacts, and I regret in hindsight that the systems I supported -- with their accompanying materials -- were long ago consigned to the dumpster. :-( (shakes head and returns to the real world) Scott smime.p7s Description: S/MIME cryptographic signature ___ Simh mailing list Simh@trailing-edge.com http://mailman.trailing-edge.com/mailman/listinfo/simh
Re: [Simh] Unable to build on NetBSD
I don't know if this comment represents scope creep or not, but I recently browsed the VAX MP Technical Overview: http://www.oboguev.net/vax_mp/VAX%20MP%20Technical%20Overview.pdf and it has an eye-opening dissection of the pitfalls associated with threaded emulation when the memory consistency model of the emulated hardware is not the same as the host hardware. It's easy to spout off from the back seat :-) but it seems like we collectively would want to give serious thought to any general simh API that might wander into this territory so it is possible to guarantee correctness (while hopefully not punishing performance any more than is necessary). Regards, Scott ___ Simh mailing list Simh@trailing-edge.com http://mailman.trailing-edge.com/mailman/listinfo/simh
[Simh] ALTAIR thinko?
I've never seen an ALTAIR (beyond the Popular Science cover!) or used the emulated simh version, but I was reading code for edification and came across this statement in altair_cpu.c: 3. Non-existent memory. On the 8080, reads to non-existent memory return 0377, and writes are ignored. In the simulator, the largest possible memory is instantiated and initialized to zero. Thus, only writes need be checked against actual memory size. This looks like boilerplate copied from other simulators. Sure enough, later on, I find: for (i = MEMSIZE; i < MAXMEMSIZE; i++) M[i] = 0; However, if the statement above regarding 8080 behavior is correct, and I have no idea if it is, shouldn't that line be: for (i = MEMSIZE; i < MAXMEMSIZE; i++) M[i] = 0377; to preserve accuracy of the simulator? FWIW, Scott Bailey scott.bai...@hp.com ___ Simh mailing list Simh@trailing-edge.com http://mailman.trailing-edge.com/mailman/listinfo/simh
[Simh] Relative efficiency of (simulated) VAX architectures?
It's Friday afternoon, so it seems like a perfect chance to ask a weird question that's been bobbing around in the back of my mind: Which model of SIMH VAX is the fastest? (or most efficient, if there's a difference) I ask because I am a pure hobbyist looking to get the most mileage out of the nostalgia-inducing VMS installation running on my Linux host (which is a Core i7-based system running 64-bit Debian). I used all of the real VAXen back in the day and have much more attachment to the operating system than any specific [virtual] hardware model. That is, do I get faster execution if I run a VAX-11/780 and let SIMH emulate the full VAX instruction set, or if I run a MicroVAX 3900 and let SIMH emulate the architectural subset of commands (and then emulate the software emulation of the missing instructions)? Does the VAX 8600 end up running at the same speed as the 780? Obviously this is likely to be workload dependent, but frankly most of my workload is booting VMS and playing old games written in BASIC or FORTRAN. :-) Yeah, I could break down and figure out some sort of benchmark and investigate it myself, but I'm curious if anybody has done any of this work already, or if the learned members of the list have theoretical understanding that would illuminate the matter. TGIF, Scott ___ Simh mailing list Simh@trailing-edge.com http://mailman.trailing-edge.com/mailman/listinfo/simh