On Tue, 13 Sep 2016, Doug Ingraham wrote:


Not bad but I realized even more was possible.


  31 00210  0000  BSWI,   .-.             /ENTRY POINT
  32 00211  3174          DCA SAVEAC
  33 00212  7430          SZL             /REMEMBER LINK STATE
  34 00213  1176          TAD C0100       /PRE ROTATE LINK POSITION
  35 00214  7100          CLL             /NEED THE LINK CLEARED
  36 00215  1174          TAD SAVEAC      /GET 0 XXX XXX YYY YYY
  37 00216  0175          AND C7700       /    0 XXX XXX 000 000
  38 00217  1174          TAD SAVEAC      /    X XXX XX0 YYY YYY
  39 00220  7006          RTL             /    X XXX LYY YYY YXX
  40 00221  7006          RTL             /    X XLY YYY YYX XXX
  41 00222  7006          RTL             /    L YYY YYY XXX XXX
  42 00223  5610          JMP I BSWI      /RETURN

I realized I could add in the link with the first TAD and the result is the
same so was able to eliminate the DCA SAVEL and

Nice idea, I needed some time to understand whats going on.
Application of the commutativity of addition:
PREROTLINK + XXXXXX + XXXXXX = XXXXXX + XXXXXX + PREROTLINK :-)

I found the next simplification:

BSWI,  0
       DCA SAVEAC
       RTR         / MOVE LINK TO THE PREROTATE POSITION
       RTR         / ELIMINATE C0100
       RTR         / LINK IS CLEARED BECAUSE AC WAS 0 AFTER DCA
       TAD SAVEAC
       AND C7700
       TAD SAVEAC
       RTL
       RTL
       RTL
       JMP I  BSWI
SAVEAC,0
C7700, 7700

Statistically, if 50% link is set, and 50% link is not set both
versions have identical speed, but one constant is eliminated.

Doug Ingraham
PDP-8 SN 1175


Klemens
PDP-8 SN 768



--

klemens krause
Stuttgarter KompetenzZentrum fyr Minimal- & Retrocomputing.
http://computermuseum.informatik.uni-stuttgart.de

Reply via email to