On Thu, Sep 8, 2016 at 8:30 AM, Klemens Krause <
krause at informatik.uni-stuttgart.de> wrote:
I tried it out: I dowloaded the hp35only.pal-source, because it needs only
4K of memory, kermited it to my PDP8/E and succeeded assembling with PAL8
without modifying the PALBERT-code.
After starting it worked well. :-)
Awesome, glad to hear!
As I'm always looking for 4K-applications for our older machines,
I downloaded the .BN to our classic-8 and started it.
It gave
"strange" output. :-(
A look in the source showd some BSWs, an operation that doesn't exist
on pre PDP8/E machines. I replaced the BSWs with "JMS BSWEMU", a short
subroutine to perform the byte-swap and now the hp35 runs on the
classic-8 with 4K of memory too. I also had to replace the MQLs with CLAs.
Next step is to modify the output, to run it with a teletype...
You've inspired me to try my hand at converting the current version into a
4K HP-35 only version with a macro switch. Teletype output is already in
the works too; I have some ideas there.
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.
BSWSUB, 0
DCA BSWTMP /SAVE VALUE
SZL /IS LINK ZERO?
TAD (0100) /NO, ADD 100
DCA BSWLNK /SAVE LINK
TAD BSWTMP /GET VALUE TO BSW
CLL /CLEAR LINK
AND (7700) /KEEP TOP HALF
RAL /ROTATE IT LEFT
TAD BSWLNK /ADD LINK
DCA BSWLNK /SAVE IT
TAD BSWTMP /GET VALUE
AND (0077) /KEEP BOTTOM HALF
TAD BSWLNK /GET REST OF IT
RTL /ROTATE INTO POSITION
RTL
RTL
JMP I BSWSUB /RETURN WITH ORIGINAL LINK AND BSW
BSWTMP, 0
BSWLNK, 0
Essentially, I shift the top six bits once to the left into a now-emptied
link bit, add in the bottom six bits and the previous link bit to the left
of the bottom six bits, then shift 6 times to the left; the old link is now
in the link position, and the two halves of the AC are swapped.
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.
Thanks,
Kyle