TSS8 patch area(s)

89 views
Skip to first unread message

Rick Adams

unread,
Oct 9, 2025, 1:11:35 PM (9 days ago) Oct 9
to PiDP-8
As I mentioned earlier, I found source listings for TSS8 8.24 online and managed to find just enough unused memory for a small patch to the OS at 7756 to 7777 in TS8.  But I don't have an assembled listing and have no idea where to find more space for a slightly more elaborate patch I have in mind.  Anyone have a clue for me?

William Cattey

unread,
Oct 9, 2025, 4:21:41 PM (9 days ago) Oct 9
to PiDP-8
Do you have a .BN file of TSS8?  You could run BITMAP on it to see where ABSLDR is loading code. That might unearth some blocks of available patch memory.

timr...@gmail.com

unread,
Oct 9, 2025, 8:56:46 PM (9 days ago) Oct 9
to PiDP-8
You could build it yourself. I did. TS8II probably wont have any space as much of it is used for the bitmap of free disk space.  At least I think that's true.  It's been some time since I looked at the code.  I can't say where I got this
source and the stuff to compile it.  Maybe from Vince's pages?

Rick Adams

unread,
Oct 10, 2025, 2:12:57 PM (8 days ago) Oct 10
to PiDP-8
I would love to build it myself, but under TSS8 I can't figure out how to attach TS8.pal as a paper tape or disk and then read it onto the disk.  I've tried various ways, to no avail.

 I suspect PALD doesn't know about the special system IOTs that'd be necessary, though, so maybe I need to do this via PAL8 under OS8?

Rick Murphy

unread,
Oct 10, 2025, 2:31:37 PM (8 days ago) Oct 10
to Rick Adams, PiDP-8
In my days of playing seriously with TSS-8 I compiled it using PAL-8 on OS/8.
I used to have (long lost) a hacked up TSS-8 that used a RK05 as the system disk.  In OS/8 parlance,  booted OS/8 from RKA0: and TSS-8 from what OS/8 thought was RKB0: (the inner half of the tracks.)

When DEC was distributing TSS/8 it was being compiled using PAL-10.
    -Rick

On Fri, Oct 10, 2025 at 2:13 PM Rick Adams <rick.a...@gmail.com> wrote:
I would love to build it myself, but under TSS8 I can't figure out how to attach TS8.pal as a paper tape or disk and then read it onto the disk.  I've tried various ways, to no avail.

 I suspect PALD doesn't know about the special system IOTs that'd be necessary, though, so maybe I need to do this via PAL8 under OS8?

--
You received this message because you are subscribed to the Google Groups "PiDP-8" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pidp-8+un...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/pidp-8/bb52d76c-f109-483d-8dd3-fcf7335f2792n%40googlegroups.com.


--
Rick Murphy, D. Sc., CISSP-ISSAP, K1MU/4, Annandale VA USA

Michael Roach

unread,
Oct 10, 2025, 3:48:12 PM (8 days ago) Oct 10
to Rick Murphy, Rick Adams, PiDP-8
We assembled TSS/8 using PAL10 on the county's KA-10 under TOPS-10 (5.03, I think.) We then transferred it to the PDP-8/i using DECtapes but I was never involved in that part of the process.Perhaps you could set up a SIMH KA-10 and assemble TSS/8 in a similar fashion, or just figure out the PAL/8 way. We never used PAL/8 except when we were using OS/8 after the HS and middle schools' computer clubs went home and we could play in other fields.

The school district ran the -10 for the county and received funding from running the payroll for county offices. It paid for the -10 for district and county services, and the -8 for us younglings (though they called us "squirrels") to play. 

A fun project was using the dual DECTAPE drive as a real random access file system where we could store files by each school's account. The directory blocks were in the middle of each tape to reduce latency and the file didn't care if its blocks were on one tape or the other or both. I wish I still had the source to that including the hooks in TSS/8 to essentially handle two tape drives as a single disk.

I don't know if the concept was unique to our district or if someone got the idea from another site. I'm almost certain that the the guys working on FORTH each built their own versions as we had so many incompatible versions running side-by-side!





--
Michael Roach                           954-478-9678
300 SW 24th Ave.
Fort Lauderdale, FL  33312

timr...@gmail.com

unread,
Oct 10, 2025, 4:03:28 PM (8 days ago) Oct 10
to PiDP-8
I compled it all with macro8x which is included as a tool.  One place I see it is heeltoe.com.  Look for tss8 and you can download the tar.gz image.  There are several versions of TSS/8 in there.  Pretty sure there
is enough there to explain how to build it.  If not please ask questions.  It may take a bit of messing around to get things to load depending on which version. 8.25 I could never make work as I did not have
the newer tools like (CAT, SYSTAT, etc).  I was able to build 8.22, 8.23, and 8.24.  Then load them into Simh and boot it all.  Works quite well.  You end up with a simulated RF disk with everything on it.
Good luck, and like I said ask questions if you can't make it work for you.

timr...@gmail.com

unread,
Oct 10, 2025, 4:06:55 PM (8 days ago) Oct 10
to PiDP-8
One more thing.  I did this building on Linux.  It works fine and the tools provided run there.  Don't know if this would work under Windows.

William Cattey

unread,
Oct 10, 2025, 4:08:10 PM (8 days ago) Oct 10
to PiDP-8
You might look at how I build the OS/8 system from source with Python Expect scripts I've created in the pidp8 development tree at tangentsoft.com:

Rick Adams

unread,
Oct 10, 2025, 4:16:47 PM (8 days ago) Oct 10
to William Cattey, PiDP-8
I don't need to actually load or run it, I just want to create an
assembled listing so I can see what areas are legitimately vacant so I
can put patches there.

I patch the disk using DISKLOOK.  That part I'm pretty proficient at.

I probably can do this with PAL8 on OS8 once I figure out how to
transfer my TS8.pal file on my laptop to the OS8 disk, probably via
mounting it as paper tape and reading it onto the disk with PIP or PUTR.

timr...@gmail.com

unread,
Oct 10, 2025, 4:52:26 PM (8 days ago) Oct 10
to PiDP-8
If you download what I suggested there is an TSS8.2 directory which contains 8.24.  There is a make file in there and all parts will have
a .LST file.  This way is so much easier than having to go the OS/8 route I think.  Or if you just want the listings I could send you what
I have.  Which version.  I have 8.22, 8.23, and 8.24.  I have an 8.25 but it does not do much as the system tools must have been
updated with new system calls so the ones there do not work.

Rick Adams

unread,
Oct 10, 2025, 6:28:13 PM (8 days ago) Oct 10
to timr...@gmail.com, PiDP-8
Thanks to the TS8.lst file I found there, it appears there are 66 words
free at 33635 on the disk, thanks to some conditional assembly that did
not get included.

I could be wrong, of course... I'll put something there and see how much
trouble I get into.  :)

Thanks for the pointers!

Rick Adams

unread,
Oct 11, 2025, 11:17:11 AM (7 days ago) Oct 11
to PiDP-8
And now I have used this new, larger patch area I found, everything works, nothing bad has happened to me, everything's fine!

Rick Adams

unread,
Oct 12, 2025, 7:20:48 PM (6 days ago) Oct 12
to PiDP-8
This is the patch I put into the large patch area I found.  If you're good at this sort of thing, you might give it a try.  If you're not, maybe keep scrolling.  In either case, backups are your friend.

This patch rotates a bit back and forth in the accumulator for the null job of TSS8.

PALD LISTING:

            L2SVLK=105
            L2SA=106
            EXIT=5467

                    *6673
6673  5674          JMP I .+1       / FORMERLY ISZ NULAC
6674  3635          PATCH           / FORMERLY TAD NULAC

                    *3635           / PATCH AREA
3635  1260  PATCH,  TAD NULLK       / GET NULL LINK
3636  7004  LOP,    RAL             / SET LINK
3637  7200          CLA
3640  1261          TAD NULAC       / GET NULL AC

                    / ROTATE LEFT OR RIGHT
3641  7430          SZL
3642  4271          JMS RIGHT
3643  7010          RAR
3644  7430          SZL
3645  4263          JMS LEFT
3646  7004          RAL
3647  7004  HOOK,   RAL

3650  3261          DCA NULAC       / SAVE NULL AC
3651  7010  ROP,    RAR             / GET LINK
3652  3260          DCA NULLK       / SAVE NULL LINK
3653  1261          TAD NULAC       / GET AC
3654  3106          DCA L2SA        / UPDATE TASK AC
3655  1260          TAD NULLK       / GET LINK
3656  3105          DCA L2SVLK      / UPDATE TASK LINK
3657  5467          EXIT
3660  0000  NULLK,  0               / LINK
3661  0001  NULAC,  1               / AC
3662  0000  TEMP,   0

                    / ROTATE BITS LEFT
3663  0000  LEFT,   0
3664  3262          DCA TEMP
3665  1236          TAD LOP
3666  3247          DCA HOOK
3667  1262          TAD TEMP
3670  5663          JMP I LEFT

                    / ROTATE BITS RIGHT
3671  0000  RIGHT,  0
3672  3262          DCA TEMP
3673  1251          TAD ROP
3674  3247          DCA HOOK
3675  1262          TAD TEMP
3676  5671          JMP I RIGHT


ENTER PATCH VIA DISKLOOK:

36673: 2277 5674
36674: 1277 3635

33635  0000 1260
33636  0000 7004
33637  0000 7200
33640  0000 1261
33641  0000 7430
33642  0000 4271
33643  0000 7010
33644  0000 7430
33645  0000 4263
33646  0000 7004
33647  0000 7004
33650  0000 3261
33651  0000 7010
33652  0000 3260
33653  0000 1261
33654  0000 3106
33655  0000 1260
33656  0000 3105
33657  0000 5467
33660  0000 0000
33661  0000 0001
33662  0000 0000
33663  0000 0000
33664  0000 3262
33665  0000 1236
33666  0000 3247
33667  0000 1262
33670  0000 5663
33671  0000 0000
33672  0000 3262
33673  0000 1251
33674  0000 3247
33675  0000 1262
33676  0000 5671

timr...@gmail.com

unread,
Oct 13, 2025, 10:33:45 AM (5 days ago) Oct 13
to PiDP-8
I bet this can be shrunk.  Back in those days they often used self modifying code to do something.  So your rotate left and right could be one routine with the actual rotate changed 
when needed.  Made code sometimes very hard to figure, but there was not much space so every word had to be used well.

Rick Adams

unread,
Oct 14, 2025, 8:32:04 AM (4 days ago) Oct 14
to PiDP-8
You'll notice I'm already doing self-modifying code.  That said, I feel like this can be reduced in size, but I have yet to figure out how.

timr...@gmail.com

unread,
Oct 14, 2025, 9:51:45 AM (4 days ago) Oct 14
to PiDP-8
I did not really look at the code that close.  Back then I'd write a small PAL-D program to count down instead of up.  Or rotate as you
have done.  As long as the system was mostly idle it would do the same as the null job.  We did not have access to the actual code
to modify.  Yes, we had listings which I often looked at to see how it all worked.  I was quite amazed they could do so much with
such minimal memory.

Rick Murphy

unread,
Oct 14, 2025, 1:25:31 PM (4 days ago) Oct 14
to timr...@gmail.com, PiDP-8
I don't think you can get this much smaller.
For reference, here's a (modified) copy of the idle light pattern from Adventure. It uses the same self-modifying code to make a "Cylon" light pattern, four bits shifting left and right.

/
/ Blinky lights
/
IDLE,   TAD     ROTWRD  /GET WORD TO DISPLAY
STALL,  ISZ     COUNT
        JMP     STALL
        ISZ     COUNT2
        JMP     STALL
FLOP,   RAL             /Shift over
        DCA     ROTWRD  /Save it
        TAD     RESET   /Reset outer counter
        DCA     COUNT2
        SNL
        JMP     IDLE
        TAD     ROTWRD
FLIP,   RAR             /Rotate back
        DCA     ROTWRD
        TAD     FLOP
        DCA     COUNT   /Save old rotate
        TAD     FLIP    /And flip 'em around
        DCA     FLOP
        TAD     COUNT
        DCA     FLIP
        DCA     COUNT
        JMP     IDLE
ROTWRD, 0017
COUNT,  0               / Idle loop count
COUNT2, 7774            / Outer counter
RESET,  7774            / Outer counter value

--
You received this message because you are subscribed to the Google Groups "PiDP-8" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pidp-8+un...@googlegroups.com.

Steve Tockey

unread,
Oct 14, 2025, 4:54:31 PM (4 days ago) Oct 14
to PiDP-8

Just some possible observations regarding reducing in size ...

One fairly obvious thing would be to in-line the subroutines. Each call (JMS) costs one word, each subroutine entry point costs one word, and each return (JMP I) costs one word. You may be able to save up to six words on that alone.

I would need to look at things more closely, but it also seems that if you sequenced the instructions more carefully you might be able to avoid a bunch of save-retrieve pairs. For example, locations 3635-3640 retrieve the old null AC + Link only to save and restore the AC again in the LEFT and RIGHT subroutines. If you could do what you needed to do in the LEFT and RIGHT subroutines before you restored the null AC + Link then you could save 4 more words by avoiding those two DCA TEMP and TAD TEMP pairs.

Up to six words avoided on the subroutine calls plus another four by avoiding the DCA TEMP + TAD TEMP pairs is already up to ten (decimal) locations saved.

Once last comment is that if you're willing to live with a different pattern, the logic could be even simpler. For example, in RSX-11/M the idle pattern is a group of 3-4 lights that always rotate in a left-going direction. It takes fewer instructions to always go left than to switch back and forth.


-- steve
Reply all
Reply to author
Forward
0 new messages