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