HP-35/45 Simulator for PDP-8

Vincent Slyngstad v.slyngstad at frontier.com
Thu Sep 8 19:07:31 CDT 2016


From: Kyle Owen: Thursday, September 08, 2016 3:53 PM
> How does the following compare to your BSWEMU, by the way? This ensures
> that the link bit remains untouched, which may or may not be important in
> every case of BSW in my application.

> I'm sure I've seen some code before that does this, but I can't seem to
> find any now that I'm looking for it. Maybe there's a shorter way. I think
> this takes 23 words if you include the (0100), (7700), and (0077), which
> may or may not also be used elsewhere in the first page where I put this
> subroutine.

Here's my slightly optimized version, for what it's worth:
   1                    *400
   2            /
   3            / BSW emulation
   4            /
   5 00400 0000 bsw,    .-.
   6 00401 3216         dca saveac      / Save AC
   7 00402 7630         szl cla         / Link set?
   8 00403 7140         cll cma         / Yes, remember it
   9 00404 3217         dca savel
  10 00405 1216         tad saveac      / Get 0 xxx xxx yyy yyy
  11 00406 0220         and c7700
  12 00407 1216         tad saveac      / x xx xxx0 yyy yyy
  13 00410 7006         rtl
  14 00411 7006         rtl
  15 00412 7006         rtl             / 0 yyy yyy xxx xxx
  16 00413 2217         isz savel       / Was link set?
  17 00414 7020         cml             / Yes, restore it
  18 00415 5600         jmp i bsw       / return
  19 00416 0000 saveac, .-.
  20 00417 0000 savel,  .-.
  21 00420 7700 c7700,  7700
  22            $

There is a fair chance that each of saveac, savel, and c7700 can be reused 
elsewhere.

Some assemblers flag the "(" construct when used on page 0, BTW.  It's more 
correct
to use "[" there (or to avoid both).

I'm a "family of 8" guy, so I avoid using BSW to begin with.

    Vince 



More information about the cctech mailing list