1
0
mirror of synced 2026-03-10 04:24:54 +00:00
This commit is contained in:
brad
2010-04-02 12:36:00 +00:00
parent a89f158a85
commit 0e9bfd9d85
25 changed files with 21846 additions and 0 deletions

BIN
tss8/rf.dsk Normal file

Binary file not shown.

29
tss8/rim.txt Normal file
View File

@@ -0,0 +1,29 @@
7756 6014
7757 6011
7760 5357
7761 6016
7762 7106
7763 7006
7764 7510
7765 5374
7766 7006
7767 6011
7770 5367
7771 6016
7772 7420
7773 3776
7774 3376
7775 5357
7776 0000
rf08 boot
0000
7750
7600
6603
6622
5352
5752
7750

31
tss8/system/NOTES.txt Normal file
View File

@@ -0,0 +1,31 @@
README
fipb.pal
fipa.pal
fipc.pal
inita.pal
initb.pal
initc.pal
link.pal
param.pal
si.pal
ts8a.pal
ts8b.pal
ts8c.pal
ts8d.pal
ts8e.pal
ts8f.pal
----
si
fip
xddt?
ts8
init
link

52
tss8/system/README Normal file
View File

@@ -0,0 +1,52 @@
This directory contains the source code to the TSS/8.24 timesharing system
for the PDP-8. This copy comes from a source listing that I borrowed from
the Melrose (Mass.) High School in 1984, typed in to my PDP-8/E (which came
from the Belmont High School but ran Melrose H.S.'s monitor), and proofread.
Then I cleverly dumped it to TSS/8 PUTR DECtapes for "safekeeping", and it
took me over a decade to get around to extracting the data (on a PDP-11),
and three more years to get around to finishing reverse-engineering PUTR.SAV's
DECtape format! But here the files are, finally.
This should be an almost 100% vanilla DEC source set, unless some typos
crept in. The only change I made was to fix comments that refer to the user
as "HIM" to say "HIM/HER". What can I say, I was going through a P.C. phase.
Also, I inadvertantly had EDIT.SAV set in the mode where it expands any two
spaces to a tab on input from a file, so some things look funny, like the
DEC copyright notice. The source for each 4 K component is broken into
pieces small enough to fit into the free space on my system's RF08/RS08
disk when I was typing it in, they should be concatenated before actual use.
This version is set up for an 8/E with 32 KW of core, one RF08/RS08 256 KW
disk unit, a PC8E/PC04 high speed paper tape reader/punch, an RK05, line
printer, card reader, and a bazillion KL8E terminals (I used an LC8E for K00,
which worked fine). It seems to be a good sport about running with missing
hardware (my machine had no RK05, LP, or card reader, and ran this monitor
fine), except the RF08 of course.
There are lots of conditionals to tweak if you want to change the
configuration. Normally this was done by DEC, they'd rebuild it using
the PAL-10 cross-assembler on a TOPS-10 system and ship the binaries (and
maybe a hardcopy listing) to the customer. I'm not sure what needs to be
changed to make it build under PAL-8 on OS/8 but I've heard it's been done.
PAL-D (the TSS/8 assembler) doesn't support conditionals at all, so it
certainly couldn't be used...
CPU=4 seems to be a valid setting for the CPU model, although its meaning
is not documented. Maybe it's for the PDP-8/A?
The sources to SI (the System Interpreter, i.e. command line interface) were
typed in separately a few years later, I ran out of steam typing in the
original listing so I photocopied the SI part so I could return the listing.
SI was typed into an IBM PC so it doesn't have the problem with two blanks
being translated into a tab. Also, I split off the "parameters" and "linking"
sections into PARAM.PAL and LINK.PAL since it looks like they were constant
prefix files for assembling all five components, those parts should probably
be hacked off of the other sources so that one centralized file can adjust
each.
Thank you very much to Bob McCann, who if I'm not mistaken was the person at
Melrose HS who loaned me the listing (in 1983 or 1984). And thank you to
Ron Diamond (who went to M.H.S.) for brainstorming about M.H.S. faculty to
remind me of Bob's name (sorry, it was a long time ago!).
John Wilson <wilson@dbit.com>, 18-May-2000.

1195
tss8/system/fipa.pal Normal file

File diff suppressed because it is too large Load Diff

1268
tss8/system/fipb.pal Normal file

File diff suppressed because it is too large Load Diff

1329
tss8/system/fipc.pal Normal file

File diff suppressed because it is too large Load Diff

1223
tss8/system/inita.pal Normal file

File diff suppressed because it is too large Load Diff

1184
tss8/system/initb.pal Normal file

File diff suppressed because it is too large Load Diff

888
tss8/system/initc.pal Normal file
View File

@@ -0,0 +1,888 @@
/ROUTINE TO CONVERT ASCII TO TSS/8 SIXBIT
ASCSIX, 0
CLL STA RAL /SET AC=-2
DCA ASCNT
TAD INBUF
DCA ASCI6 /INPUT BUFFER
TAD I ASCSIX
DCA ASCI7 /POINTER TO OUTPUT VECTOR
ISZ ASCSIX
ASCI1, JMS ASCGET /GET ONE CHARACTER
CLL RTL
RTL
RTL /SHIFT TO HIGH ORDER
DCA I ASCI7 /SAVE THE CHARACTER
CHDF
JMS ASCGET /GO GET ANOTHER CHARACTER
TAD I ASCI7 /PACK IT IN WITH THE LAST ONE
DCA I ASCI7 /AND SAVE IT
ISZ ASCI7
CHDF
ISZ ASCNT /DONE?
JMP ASCI1 /NO
JMP I ASCSIX /YES, EXIT
ASC240, -240
ASCGET, 0 /GET A PASSWORD CHARACTER, EXIT UPON CARRIAGE RETURN
TAD I ASCI6 /GET NEXT CHARACTER
TAD ASCCR
SNA CLA /IS IT CR?
JMP I ASCSIX /YES, RETURN
TAD I ASCI6
ISZ ASCI6
TAD ASC240 /PASSWORDS ARE STORED IN EXCESS 240 CODE
DATFLD
JMP I ASCGET
ASCCR, -215
CSQ, TEXT "ENABLE ^S FEATURE? "
*INIP+2200
/USES INIT'S BINARY LOADER TO LOAD INTO FIELD 1
ZERO1 /ZERO FIELD 1
DATFLD
Y1, JMS I BINLD /GO LOAD BINARY TAPE
SKP /FIELD SETTING ENCOUNTERED
JMP I SUPERA /END OF TAPE
DCA DISC0 /SAVE IT
RDF
CIA
TAD DISC0 /IS IT THE CURRENT FIELD ANYWAY?
SNA CLA
JMP I BINT3B /YES - SO IT'S OK
TAD DISC0 /NO - LET HIM/HER KNOW ABOUT IT
HLT
CLA /IGNORE FIELD SETTING
JMP I BINT3B
BINLD, BINTAP
BINT3B, BINT3
Y, JMS I STFLDA
JMP Y1
STFLDA, STFLD
RDORWT, TEXT "READ OR WRITE - "
FIELD1, TEXT "FIELD NUMBER - "
TRACK, TEXT "TRACK NUMBER - "
TAPMES, TEXT "_TAPE "
TIMESS, TEXT "HR:MIN - "
NUMBLK, TEXT "# - "
YN, TEXT "YES OR NO... "
/DISK READ OR WRITE
/CALL DISC
/ FUNCTION
/ DEAL ARGUMENTS (DISC EXTENSION IN BITS 1-8; MEMORY FIELD IN BITS 9-11)
/ DISCHK
/ RETURN HERE WHEN OK
DISC= JMS I DISCA
DISCHK= JMS I DISCHA
DISC0, 0
RDF
TAD C6201
DCA DISC2
CHDF
TAD I DISC0
DCA DISROW
ISZ DISC0
TAD I DISC0
DCA DEALSV /SAVE THE DEAL ARGUMENTS
TAD DEALSV
IFZERO RF08-40 < ISZ DISC0
CLL RTL
RAL
DEAL
CLA CLL>
IFZERO RF08 < RTL
RAL
AND C0070
DIML
TAD I DISC0
CLL RTR
ISZ DISC0
RAR
DXAL>
CDF
DCA I C7750
STA
DCA I C7751
DISROW, 0
JMP I DISC0
C0070, 70
C7750, 7750
C7751, 7751
/SUBROUTINE TO WAIT FOR DISK COMPLETION, CHECK FOR ERRORS, AND
/IF THERE ARE ANY ERRORS, RETRY THE OPERATION.
DISCH0, 0
CLL STA RTL
DCA RFTRY /TRY 3 TIMES
IFZERO RF08 <DFSE DFSC>
IFNZRO RF08 <DFSC>
JMP .-1 /WAIT FOR THE DISK TO FINISH
DFSE /ERROR?
IFZERO RF08-40 <SKP> /DF32 SKIPS BACKWARDS
JMP DISC2 /NO
DIMA
AND DSKFLG /CHECK WLS, DRL, PER
CDF
SNA
TAD I C7750 /MAYBE NXD - IS WC=0?
DISC2, .-. /CDF -- RESTORE DATA FIELD
SNA /OK?
JMP I DISCH0 /I GUESS SO
ISZ RFTRY /3 TRIES YET?
CLA SKP
JMP DISERR /DISK WRITE LOCKED, PARITY ERROR, OR DRL
TAD DISROW /GET OLD DMAR OR DMAW
DCA .+2
DISC
0
DEALSV, 0 /DEAL ARGUMENTS SAVED BY LAST DISC CALL
JMP DISCH0+3
DSKFLG, IFZERO RF08 <1005>
IFZERO RF08-40 <0007>
RFTRY, 0 /RETRY COUNT FOR DISK ERRORS
DISERR, MESSAG
DISKER
JMP I SUPERA
DISKER, TEXT "_DISK ERROR"
*INIP+2400
/DISC DUMP ON DTA1
/DECTAPE BLOCK 40N+1=DISC TRACK N
DSKDMP, JMS I RWA /GO TO INITIALIZE CHDF, PRINT MESSAGE,
TAPMES /AND DETERMINE READ OR WRITE
DCA DTA
MESSAG
NUMBLK
GETIN
OCTIN
CIA
SNA
DSKSUP, TAD DSKSZ
DCA LDFCNT /SAVE DISK TRACK COUNT
DCA RFFUNC /WELL, FOLKS, THE FOLLOWING ROUTINE
CHDF /ONLY WORKS IN FIELD 0, SO HERE
TAD I RFFUNC /WE GO, MOVING EVERYTHING DOWN TO
CDF /FIELD 0 SO THAT IT WILL BE HAPPY
DCA I RFFUNC
ISZ RFFUNC
JMP .-5
CIF CDF /AND DOWN TO FIELD 0!
JMP .+1
TAD .-2
DCA INIF /SET UP CHDF FOR FIELD 0
TAD DTA /IS IT LOAD OR DUMP??
CLL
SNA CLA
STL
SNL /SKIP IF READ
TAD C0020
TAD C0030
DCA I DTFUNA /SAVE FUNCTION FOR DECTAPE
TAD RFDMAR
SZL /SKIP IF DISK READ
TAD C0002 /MAKE IT DMAW
DCA RFFUNC /SAVE DMAR OR DMAW
TAD LDFCNT
RAL
DCA LDFCNT /FUDGE LDFCNT SO THAT IT ISZES TO 0 AT THE RIGHT TIME
DCA I DTBLKA /START AT DECTAPE BLOCK 1
TAD C1000
DTLA /START WITH DECTAPE DRIVE 1
IAC
DCA RFTRAK /START WITH RF08/DF32 TRACK 0 FIELD 1
TAD C0010
DCA I DTFLDA /START WITH DECTAPE FIELD 1
TAD DTA
SZA CLA /LOAD OR DUMP?
JMP DMPINI /MUST BE DUMP
JMS I DTRWA /READ FIRST TRACK FROM DECTAPE
DISC /READ OR WRITE - START OPERATION ONLY
RFFUNC, 0 /DMAR OR DMAW
RFTRAK, 0 /BITS 1-8=TRACK, 9-11=FIELD
ISZ LDFCNT /DONE LOADING?
JMP LD2 /NO
DISCHK /YES - LAST WRITE OK??
JMP LDSTOP
LD2, TAD RFTRAK /WHAT FIELD DOES DECTAPE GO TO NOW?
RTR
SPA CLA
TAD C0010
TAD C0010
DCA I DTFLDA
JMS I DTRWA /READ/WRITE DECTAPE
ISZ LDFCNT /DONE DUMPING???
JMP DMPJMP /NO
DCMA /MAKE SURE THE DISK IS STOPPED
LDSTOP, TAD C0400 /YES - REWIND LAST DECTAPE
DTXA
JMP I .+1
RFBOOT /NOW GO BOOT WHATEVER IS ON RF08/DF32
DMPJMP, DISKCHK /DISK OK??
TAD RFTRAK
RAR
SZL CLA
TAD C0002
TAD C0007
TAD RFTRAK
DCA RFTRAK
JMP RFFUNC-1
DMPINI, DISC
RFDMAR, DMAR
1
JMP DMPJMP
SUPDMP, STA
SUPLOD, DCA DTA /SET DTA NON-0 FOR LOAD, 0 FOR DUMP
JMP DSKSUP /AND GO LOAD OR DUMP
DTA, 0
DSKSZ, -DSKSIZ
LDFCNT, 0
DTFUNA, DTFUNC
DTBLKA, DTBLOK
DTFLDA, DTFLD
DTRWA, DTRORW
C0020, 0020
C0030, 0030
RWA, RW
TAPERR, TEXT "_TAPE READ ERROR"
HUH, TEXT "_WHAT?_PLEASE TRY AGAIN_"
HUH2= HUH+3
/FILE PHANTOM AND DISK REFRESHER
/WRITE NEW MFD ON DISC DIRECTLY ABOVE THE SWAPPING AREA
PAGE
FIPR4, 0
FIPASC, ASCSIX
MFD1, MFDT-1
FIPREF, ZERO1 /ZERO FIELD 1
MESSAG /"SYSTEM"
SYSTEM
MESSAG /"PASSWORD"
PASWRD
GETIN
JMS I FIPASC /CONVERT PASSWORD TO SIXBIT
0011 /GOOES AT WORD 11, 12 OF MFD
MESSAG /"LIBRARY"
LIBARY
MESSAG /"PASSWORD"
PASWRD
GETIN
JMS I FIPASC /CONVERT PASSWORD TO SIXBIT
0041 /AND PUT IT AT WORDS 41,42 OF MFD
MESSAG /"OPERATOR"
OPRAT
MESSAG /"PASSWORD"
PASWRD
GETIN
JMS I FIPASC /CONVERT PASSWORD TO SIXBIT
0061 /AND PUT IT AT WORDS 61,62 OF MFD
TAD MFD1 /INITIALIZE POINTER
DCA AXS1
FIPR2, TAD I AXS1 /GET ADDRESS OF DATA TO BE STORED IN MFD
SNA /ARE WE THROUGH?
JMP FIPR3 /YES
DCA FIPR4 /SAVE IT
TAD I AXS1 /GET DATA TO STORE
DATFLD
DCA I FIPR4 /STORE IT IN THE MFD
CHDF
JMP FIPR2 /GO FOR MORE
FIPR3, TAD SWBASE
TAD JBMXP /"JOBMAX"
CLL RTL
STL RAL /MAKE IT FIELD 1
DCA .+3
DISC
DMAW /WRITE OUT THE MFD
.-.
DISCHK
/INITIALIZE STORAGE ALLOCATION TABLE "SAT"
/THE SAT TABLE RESIDES IN FIP AT 7777 AND EXTENDS
/DOWN THROUGH 7777-(SATSIZ-1). EACH BIT POSITION REPRESENTS 1 SEGMENT
/OF FILE STORAGE.
/SEGMENT 0 IS BIT 0 OF 7252,
/SEGMENT 1 IS BIT 1 OF 7252, ETC. 7252=7777-(SATSIZ+2).
/LOCATION SATCNT=7777-(SATSIZ-1)+1 CONTAINS THE COUNT OF AVAILABLE
/SEGMENTS. A SEGMENT IS AVAILABLE IF ITS SAT BIT HAS THE
/VALUE 0.
JMS I FIPRFD /FIP TO FIELD 1
TAD CJTABL
ZERO1 /CLEAR ALL FIP TABLES AND RETRIEVAL INFORMATION
TAD SWDEXP
TAD CJOBMX
TAD DSKSZP /"DSKSIZ"
CLL RTL
RTL
TAD C7777 /CAN'T USE LAST SEGMENT ON DF32
DCA STORE0 /NUMBER OF DISK SEGMENTS
CLA CMA
DATFLD
DCA I SATBOT /"-255"
CLL STA RTL /SUBTRACT THREE SEGMENTS (FOR 1,2,3 UFD'S)
TAD STORE0 /SET SATCNT TO # DISC SEGMENTS-2
DCA I SATCNT /"-254"
TAD K7000 /MARK SEGMENTS 1,2,3 FOR MFD, UFD USAGE
DCA I SATTBL
TAD STORE0 /MORE THAN 4000 SEGMENTS.
SMA
JMP .+6 /NO OK
TAD CM4004 /SUBTRACT 4004
DCA STORE0
TAD C0253 /253 WORDS=4004 SEGS
DCA COUNT
TAD STORE0
TAD C7764 /-14
ISZ COUNT /COUNT # ZERO WORDS IN SAT
SMA
JMP .-3
DCA STORE0
STA
TAD COUNT
TAD SATTBL
DCA COUNT
STL RAL
ISZ STORE0
JMP .-2
DCA I COUNT /MARK END OF FILE STORAGE AS ALLOCATED
JMP FIPRF5
FIPRF4, CLA CMA
DCA I COUNT
FIPRF5, ISZ COUNT
JMP FIPRF4
DISC
DMAW
0011 /FIP IS TRACK 1, FIELD 1
DISCHK /MAKE SURE THE DISK IS OK
JMP I SUPERA
SATTBL, -SATSIZ+2
K7000, 7000
COUNT, 0
SWDEXP, -SWDEX
JBMXP, JOBMAX
C7764, -14
DSKSZP, DSKSIZ
STORE0, 0
FIPRFD, FIPRD
CJTABL, JTABLE
SATBOT, -SATSIZ
SATCNT, -SATSIZ+1
C0253, 253
CM4004, -4004
FIPREM, TEXT "_WRITE ZERO SYSTEM DIRECTORY? "
*INIP+3000
JMP I .+1
INBOOT
/MFD SEGMENT #S TO INBUF
FRD0, 0
TAD SWBASE
TAD JBMAX
CLL RTL
STL RAL
DCA FRD1
DISC
DMAR
FRD1, 0
DISCHK /MAKE SURE THE DISK IS OK
TAD K0020
DCA AXS1
TAD INBUF
DCA AXS2
TAD K7771
DCA Z1
FRD2, DATFLD
TAD I AXS1
CHDF
DCA I AXS2
ISZ Z1
JMP FRD2
DATFLD
TAD I FGRACE /FETCH SIZE OF "GRACE SPACE"
CHDF
DCA I AXS2
JMP I FRD0
JBMAX, JOBMAX
FGRACE, 0014
K0020, 0020
Z1,
FIPRD, 0
DISC
DMAR
0011 /FIP IS TRACK 1, READ INTO FIELD 1
DISCHK /MAKE SURE THE DISK IS OK
JMP I FIPRD
Z0, JMS I STFLDB /SET DATA FIELD TYPED
DCA Z1
DCA I Z1 /ZERO OUT A FIELD
ISZ Z1
JMP .-2
JMP I SUPERA
STFLDB, STFLD
/TABLE USED TO CONSTRUCT VIRGIN MFD
/INCLUDES ENTRIES FOR ACCOUNTS 1, 2, 3
/EACH PAIR OF NUMBERS INCLUDES FIRST THE MFD ADDRESS, THEN ITS CONTENTS
MFDT, 3;10 /DUMMY POINTER
10;1 /ACCOUNT NUMBER 1
13;40 /NEXT ACCOUNT STARTS AT 40; LINK TO IT
14;12 /DEFAULT "GRACE SPACE" OF 10 SEGMENTS PAST QUOTA
17;20 /SEGMENT LIST IS AT 20
21;1 /MFD STARTS WITH SEGMENT 1 ONLY
30 /AN EXTRA BLOCK IS USED HERE. THE REASON IS SO THAT THE
7777 /LAST ACCOUNT IN A SEGMENT WON'T HAVE ITS RETRIEVAL
/BLOCK IN THE NEXT SEGMENT.
40;2 /ACCOUNT 2
43;60 /LINK TO NEXT ACCOUNT AT 60
44;7777 /NO LIMIT ON DISK SEGMENTS
47;50 /SEGMENT LIST IS AT 50
51;2 /ACCOUNT 2 UFD STARTS WITH ONLY SEGMENT 2
60;3 /ACCOUNT 3
64;7777 /NO LIMIT ON DISK SEGMENTS
67;70 /SEGMENT LIST IS AT 70
71;3 /ACC. 3 UFD OWNS SEGMENT 3 ONLY, INITIALLY
0 /TABLE TERMINATOR
CRTABL, RTABLE-1 /MFD SEGMENT #S
CUTABL, UTABLE
SATCON, SATSIZ+1
CJOBTB, JTABLE-1 /START OF AREA TO CLEAR IN FIP
PERSET, 0
JMS FRD0 /MFD SEGMENT #S TO INBUF
JMS FIPRD /FIP TO FIELD 1
TAD CJOBTB /CLEAR FIP TABLES
DCA AXS1
DATFLD
DCA I AXS1
TAD AXS1 /HAVE WE REACHED BOTTOM OF SAT?
TAD SATCON
SZA CLA
JMP .-4 /NO
TAD CRTABL /MOVE MFD SEGMENT #S TO RTABLE
DCA AXS1
TAD INBUF
DCA AXS2
TAD K7771
DCA Z1
PERSE3, CHDF
TAD I AXS2
DATFLD
DCA I AXS1
ISZ Z1
JMP PERSE3
CLL CLA CML RAL
DCA I CUTABL /UTABLE=1
CMA
ISZ CUTABL
DCA I CUTABL /UTABLE+1=-1
ISZ CUTABL
CHDF
TAD I AXS2
DATFLD
CIA
DCA I CUTABL /UTABLE+2=-"GRACE SPACE"
CHDF
DISC
DMAW
0011 /WRITE FIP FROM FIELD 1, TO TRACK 1
DISCHK /MAKE SURE THE DISK IS OK
JMP I PERSET
K7771, 7771
/THERE'S ALWAYS SOMEONE WHO WILL TRY TO LOAD INIT INTO THE SAME FIELD AS
/THE BINARY LOADER. GIVE HIM/HER A MESSAGE IF [S]HE DOES!!
*4200
CLA
RIF
TAD C6201
DCA INIF
MESSAG
OOPS
HLT
JMP .-4
OOPS, TEXT "_PLEASE DON'T TRY TO LOAD INIT WITH THE BINARY LOADER "
*.-1
TEXT "LOCATED IN FIELD 2!"
*7632
JMP I SUPERA /THIS INSTRUCTION SHOULD INTERCEPT ANY BINARY
/LOADER IN PROGRESS IN THIS FIELD.
/INIT SUPERVISOR
/OVERLAYS XDDT PERMANENT SYMBOL TABLE
*4200
SUPER, CLA /SET DATA FIELD
RIF
TAD C6201
DCA INIF
CHDF
DTRA
AND C0200
DTXA /STOP ANY DECTAPE WHICH MAY BE MOVING AFTER AN ERROR
TAD OUT1
DCA OUTA /RESTORE TTY OUTPUT
IFZERO CPU-2 <6030> /DO HIM/HER A FAVOR IF IT'S AN 8/E
IFNZRO CPU-2 <6032> /NOT QUITE AS HELPFUL, BUT NECESSARY
MESSAG
LDXRS /LOAD, DUMP, START AND OTHER THINGS IN THE LIST OF COMMANDS??
GETIN /WAIT FOR REPLY
TAD SUPTBA /ADDRESS OF TABLE OF LETTERS
DCA AXS1 /SAVE IT AUTO-INDEX
SUPER2, TAD I AXS1 /GET A LETTER FROM TABLE
SNA /END OF TABLE?
JMP SUPHUH /YES - LET HIM/HER TRY AGAIN
TAD I INBUF /ADD ON FIRST CHARACTER TYPED
SNA CLA /THIS ONE?
JMP SUPER3 /YES - DISPATCH
ISZ AXS1 /NO - PASS UP DISPATCH ADDRESS
JMP SUPER2 /NEXT
SUPER3, TAD I AXS1 /GET DISPATCH ADDRESS
DCA CHDFA
JMP I CHDFA /AND DISPATCH
SUPHUH, CLA
MESSAG
HUH
JMP SUPER
SUPTBA, SUPTBL-1
OUT1, OUT
STFLD, 0
CHDF
TAD I STFAD /WHAT WAS THE SECOND CHARACTER TYPED?
TAD STFM8
CLL
TAD C0010
SNL
JMP SUPHUH
CLL RTL
RAL
TAD C6201
DCA .+1
.-.
JMP I STFLD
STFAD, INBUFA+1
STFM8, -"8
/REFRESHER CONTROL
LOGSMA, LOGMES
REFFLD, CORFLD
REFDDT, XDDFLG
NOCSQ, ISZ CONDBA
REFCSQ, CORJMS
IFZERO DC08A <
REFREQ, FREQ
CYC50, FRETEL
CYC60,
IFNZRO CPU-2 <-6>
IFZERO CPU-2 <-14> >
REFCO0, JMS I LOGSMA /CHECK FOR NEW SI LOGIN MESSAGE
DISC /READ INIT INTO FIELD 1
DMAR
21
DISCHK /IS IT OK?
YESNO /LAOD XDDT?
DDTMES
STA
DATFLD
DCA I REFDDT /INITIALIZE XDDT LOAD FLAG
REFCO1, CHDF
MESSAG /# USER FIELDS -
CORMES
GETIN
OCTIN
DATFLD
DCA I REFFLD /INITIALIZE NUMBER OF USER FIELDS
TAD I REFFLD
CLL IAC
TAD C7770
SZL CLA /IS HIS/HER ANSWER REASONABLE?
JMP REFCO1 /NO
CHDF
YESNO
CSQ /DOES [S]HE WANT ^S FEATURE?
TAD NOCSQ /NO
DATFLD
DCA I REFCSQ
IFZERO DC08A < IFNZRO CPU-4 <
CHDF
YESNO
FREQUE /60 HERTZ?
JMS I CYC50
TAD CYC60
DATFLD
DCA I REFREQ > >
CHDF
DISC /WRITE OUT INIT
DMAW
21
DISCHK /MAKE SURE IT'S OK
YESNO /DO YOU WANT TO REFRESH?
FIPREM
JMP I SUPERA /NO
JMP I .+1
FIPREF /GO REFRESH
SUPTBL, -"L
SUPLOD /LOAD
-"D
SUPDMP /DUMP
-"I
SUPREF /INITIALIZE
-"S
SUPST /START
-"X
7000 /XDDT
-"B
SBUILD /BUILD
-"P
DISCLK /PATCH
-"T
DSKDMP /LOAD OR DUMP; YOU CHOOSE HOW MANY TRACKS
-"O
PATCH /LOAD AN OVERLAY TAPE
-"C
LOAD /READ OR WRITE 4K TO "C" OR
-"Y
Y /READ BINARY TAPE TO A SELECTED FIELD
-"Z
Z0 /ZERO A SELECTED FIELD
-"M
MF0 /MATCH A SELECT FIELD WITH FIELD 1
-"W
CD0 /DUMP A SELECTED FIELD
-"E
OSB /EXIT TO SOME OPERATING SYSTEM
-"R
RFBOOT /BOOT TO OPERATING SYSTEM ON RF08/DF32
-"K
KEBOOT /ROOT TO RK8E
0 /TABLE TERMINATOR
/FOLLOWING THIS COMMENT, YOU WILL FIND XDDT. ONLY IT MIGHT BE A
/LITTLE HARD TO SEE, SINCE IT'S XLISTED.
*5400
70 /PATCH FIELD SELECT FOR XDDT
*6400
4434
4434
4434
*4724
6031 /PATCH TO FIX XDDT BUGS ON 8E
*4726
5376
*4776
6032
5772
*5004 /^C CODE
TSF
JMP .-1 /WAIT FOR FLAG FROM ^C
XOP, SKP /NOP IF XDDT IS EXEC DDT
CIF CDF 0
JMP I .+1
4200
*5523
1222
*5547
7000
*5572
7760 /GIVE THE TTY FLAG MORE TIME
*6045
5225 /DON'T GO TO BINARY LOADER
/BINARY LOADER SUBROUTINE
/CALLING SEQUENCE: CDF TO FIELD TO LOAD TAPE INTO
/ JMS BINTAP
/ JMP ? /RETURN WITH FIELD SETTING IN AC6-8
/ /JMP BINT3 WHEN DESIRED ACTION HAS BEEN TAKEN
/ ? /RETURN WITH CHECKSUM IN THE AC
*7600
BINTAP, 0
KCC /BRING UP FLAG ON LS READER, AC=0
RFC /BRING UP FLAG ON HS READER
TAD M200
DCA TEMP /INITIALIZE DELAY TIME
BLORI,
BINF, KSF /LS READER FLAG YET?
JMP .+3 /NO
TAD BLORI /YES ---
JMP .+4
RSF /HS READER FLAG YET?
JMP BINIL /NO
TAD BHIRI /YES
DCA BINRD+1 /SAVE HI/LO SWITCH
JMS BFR /READ TAPE-LEADER?
JMP .+2 /YES - GO FIND END OF LEADER
JMP .-2 /NO - FIND LEADER BEFORE ANYTHING
JMS BFR /READ TAPE - LEADER?
JMP .-1 /YES - KEEP LOOKING
DCA ORIGIN /INITIALIZE ORIGIN FOR SAVE TAPES
GO, DCA BINCHK /CLEAR OUT OR UPDATE CHECKSUM
BINT2, TAD FRAME /WHAT WAS IT?
TAD C7500
SMA
JMP BINFLD /MUST HAVE BEEN A FIELD SETTING
TAD MASK /NOW GET THE FRAME BACK
DCA WORD1
JMS BINRD /GET NEXT FRAME
DCA WORD2
JMS BFR /NOW LOOK AHEAD FOR LEADER/TRAILER
JMP BINC /TRAILER! GO DO CHECKSUM
JMS ASSEMB /ASSEMBLE WORD
SZL /ORIGIN?
JMP BINORG /ORIGIN
DCA I ORIGIN /STORE AWAY DATA
ISZ ORIGIN /PREPARE FOR NEXT
M200, CLA 400
BINT4, TAD WORD1 /NOW UPDATE THE CHECKSUM
TAD WORD2
TAD BINCHK /ADD IN OLD CHECKSUM
JMP GO /AND GO SAVE IT AND CONTINUE
BINC, JMS ASSEMB /ASSEMBLE THE CHECKSUM
CIA
TAD BINCHK /COMPUTE FINAL CHECKSUM
BINC2, ISZ BINTAP /SKIP ON RETURN
SNA /CHECKSUM OK?
JMP I BINTAP /YES
DCA BINCHK /SAVE IT
MESSAG /TELL HIM/HER ABOUT BAD CHECKSUM
TAPERR
TAD BINCHK /GET CHECKSUM
JMP I BINTAP /AND RETURN; CHECKSUM IN AC
BINFLD, AND K0070 /GET FIELD BITS
JMP I BINTAP /AND GO PROCESS THEM
SWITCH,
ASSEMB, 0
TAD WORD1
CLL RTL
RTL
RTL
TAD WORD2
JMP I ASSEMB
BINIL, JMS DELAY
JMP BINF
/HERE IS THE REAL BINARY LOADER!
JMS BINTAP /GO AND BINARY LOAD
JMP .+3 /FOUND A FIELD SETTING
M376, HLT /FINISHED - CHECKSUM IN AC
BEGIN, JMP .-3 /CONTINUE - [S]HE WANTS ANOTHER TAPE READ
TAD K6201 /MAKE A CDF
DCA .+1 /SAVE IT
TEMP, .-.
JMP BINT3 /AND CONTINUE
/MORE BINARY LOAD JUNK
/BFR - READ TAPE, IGNORING FRAMES BRACKETED BY RUBOUTS
/SKIP ON RETURN IF LEADER NOT FOUND
BFR, 0
DCA SWITCH /SET THE SWITCH (OR RESET IT)
TAD M200
DCA TEMP
JMS BINRD /GET A CHARACTER
TAD M376 /TEST FOR 377; RUBOUT
SPA SNA CLA
JMP .+4 /NOT RUBOUT
ISZ SWITCH /YES; COMPLEMENT SWITCH
CMA
JMP BFR+1
TAD SWITCH
SZA CLA /IS THE SWITCH SET?
JMP BFR+2 /YES; IGNORE THE DATA
TAD FRAME /WHAT WAS THE CHARACTER AGAIN?
AND MASK
TAD M200
SZA CLA /WAS IT LEADER?
ISZ BFR /NO, SKIP ON RETURN
JMP I BFR /AND RETURN
BINT3, JMS BFR /GET NEXT FRAME
JMP BINC /HUH? LEADER/TRAILER FOLLOWING FIELD SETTING OR ORIGIN!!
JMP BINT2 /AND PROCESS IT
BINRD, 0
HLT /KSF OR ELSE JMP HIR
JMP BINDL
KRB
DCA FRAME
TAD FRAME
JMP I BINRD
BHIR, RSF
JMP BINDL
RRB RFC
JMP .-6
*7750 /WC & CA; INIT WILL READ INTO FIELD 0 OK
.+1;.
BINDL, JMS DELAY
JMP BINRD+1
WORD1, .-. /DECTAPE WC & CA
WORD2, .-.
/MORE BINARY LOAD JUNK
BINORG, DCA ORIGIN /SAVE ORIGIN
JMP BINT4
DELAY, 0
ISZ FRAME
JMP I DELAY
ISZ TEMP
JMP I DELAY
STA /TIME OUT - GIVE HIM/HER ERROR MESSAGE
JMP BINC2
BHIRI, JMP BHIR
BINCHK, 0 /CHECKSUM ACCUMULATION
ORIGIN, 0 /CURRNET ADDRESS
FRAME, 0
C7500, 7500
MASK, 0300
K0070, 0070
K6201, 6201
*7777
JMP BEGIN /BINARY LOADER?!!
$ $ $ $ $!!!!!!!!!!

61
tss8/system/link.pal Normal file
View File

@@ -0,0 +1,61 @@
/SUPER CRITICAL LOCATIONS
/THESE LOCATIONS ARE USED TO LINK TS8, TS8II, FIP, SI AND INIT.
/IT MAY BE NECESSARY TO ADJUST THEM ACCORDINGLY
/DEFINED IN TS8:
MSCHED=2573 /ADDRESS FOR WAIT
GETJTB=401 /GETJTA
CORSRC=1317 /SEARCH CORE TABLE
OVERLA=5171 /FILE STUFF
READFI=574 /MORE FILE STUFF
CONDBA=132 /DEVTBL POINTER USED BY "PRINT" ETC.
RETB=611 /RETURN A BLOCK TO FREE CORE
GETB=1405 /GET A BLOCK OF FREE CORE
GETDB0=1447 /GET A DDB
CLK1=51 /LOW ORDER DAYTIME CLOCK
CLK2=50 /HIGH ORDER DAYTIME CLOCK
DATE=166 /12 BIT DATE WORD
TTCHAR=31 /SAVE REG. FOR CONSOLE CHARACTERS
KBD00=3201 /PROCESS KEYBOARD INPUT
PRINT0=1205 /TYPE OUT A CHARACTER
OVRLA1=562 /MORE FILE STUFF
RUNFI=605 /SI FILE TRANSFER INITIALIZER
L2SF=103 /LEVEL 2 SAVED MODE AND FIELD
SICLR=6572 /SI CLEAR LINKED BUFFER
TIMSI=2421 /TIMER FOR SI "COMWAT"
SIWAIT=1702 /NUMBER OF SI COMMANDS BEING WAITED ON
TIMFIP=2423 /TIMER FOR FIPLOCK
FIPLOK=2724 /CORTBL STATUS CHECK FOR FORCE OUT
CLKINI=322 /CONVERT HARDWARE CLOCK TO SYSTEM-TICKS (100MS)
BLT0=1602 /BLOCK TRANSFER FROM CORE TO CORE
KBDSQ=3213 /ADDRESS OF JMS TO ^S/^Q CODE
/DEFINED IN TS8II:
F1TCNT=175 /SI DDB CHARACTER COUNT
F1ECNT=176 /SI DDB EMPTY COUNT
F1BUF=177 /SI DDB EMPTY BLOCK POINTER
DTJOB=20 /JOB OWNING THE DECTAPE CONTROLLER
RKJOB=54 /JOB OWNING RK05 CONTROLLER
DTSI=1175 /SI TERMINATE A DECTAPE ON TIMER
DATA1=2200+DCSIZE
DEVTBL=DATA1+140
DEVTBE=DEVTBL+NULINE+NULINE+2
JOBTBL=DEVTBE+22
CLKTBL=JOBTBL+JOBMAX+1
TTYTBL=CLKTBL+JOBMAX+1
PRGTBL=TTYTBL+JOBMAX+1
DSUTBL=PRGTBL+JOBMAX+JOBMAX+JOBMAX-7
FIPBLK=7720 /FIXED BLOCK FOR FIP IO
WINBAS=7730 /ADDRESS OF THE BASIC WINDOW
OUTDIF=-OUTREG^2+DEVTBL /FOR LINKING BETWEEN OUTREG AND DEVTBL
F1OFFJ=164 /FOR OFF /ON COMMANDS USED BY SI
IFNZRO DEVTBL&1 <YOU GOOFED>
/DEFINED IN SI
DTSIDT=7270 /RETURNED FROM STOPPING A DECTAPE ON TIMER
VERBRK=7600 /START OF INSTALLATION DEFINED LOGIN MESSAGE

450
tss8/system/param.pal Normal file
View File

@@ -0,0 +1,450 @@
/PARAMETERS VERSION 8.24 (01-JANUARY-75)
/
/
/
/
/COPYRIGHT (C) 1975
/DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
/
/
/THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY
/ON A SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH
/THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS
/SOFTWARE, OR ANY OTHER COPIES THEREOF, MAY NOT BE PRO-
/VIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON
/EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO AGREES TO
/THESE LICENSE TERMS. TITLE TO AND OWNERSHIP OF THE
/SOFTWARE SHALL REMAIN IN DEC.
/
/THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE
/WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED AS A COM-
/MITMENT BY DIGITAL EQUIPMENT CORPORATION.
/
/DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR
/RELIABILITY OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT
/SUPPLIED BY DEC.
/EDUSYSTEM 50 MONITOR FOR MELROSE HIGH SCHOOL #495AB
/COPYRIGHT 1975
/DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
/
/THIS SECTION DEFINES THE HARDWARE CONFIGURATION ON WHICH INDIVIDUAL
/EDUSYSTEM 50 MONITORS ARE TO RUN.
/FOR EACH STATEMENT, THE COMMENT INDICATES THE POSSIBLE RESPONSES
CPU=2 /1 IF CPU IS PDP-8; 0 IF CPU IS PDP-8/I;
/2 IF CPU IS PDP-8/E
/4 is defined too (PDP-8/A???)
CORMEM=70 /HIGHEST DATA FIELD SELECT, FOR 12K SYSTEM,
/RESPOND 20, FOR 16K SYSTEM, RESPOND 30, ETC. (70 MAX)
PHONES=0 /1 IF DC08 INCLUDES 689AG;
/0 IF IT DOES NOT OR IF TTY INTERFACING IS OTHER THAN DC08
EAE=0 /20 IF PROCESSOR INCLUDES EAE; 0 IF IT DOES NOT
RF08=0 /40 IF SYSTEM DISC IS DF32; 0 IF SYSTEM DISK IS RF08
RS08=1 /NUMBER OF DISCS ON THE SYSTEM, WHETHER DF/DS OR RF/RS,
/RESPOND WITH 1, 2, 3, OR 4.
PUNCH=1 /1 IF SYSTEM INCLUDES PUNCH; 0 IF IT DOES NOT
TC01=1 /1 IF SYSTEM INCLUDES DECTAPE(S); 0 IF IT DOES NOT
RK05=1 /NUMBER OF RK05 CARTRIDGE DISK DRIVES ON THE SYSTEM; 0 TO 4
CDR=1 /1 IF SYSTEM INCLUDES CARD READER; 0 IF IT DOES NOT
LPT=1 /1 IF SYSTEM INCLUDES LINE PRINTER; 0 IF NO LINE PRINTER
DECIMAL /MONITOR CAPACITY FOR THIS SYSTEM
JOBMAX=20 /NUMBER OF SIMULTANEOUS USERS (20 MAXIMUM)
/THE FOLLOWING ENTRIES DEFINE THE NUMBER OF TERMINALS
/ATTACHED TO THE SYSTEM, AND ALSO THE METHOD OF INTERFACING
CONTTY=1 /WE ALWAYS HAVE A CONSOLE ( K00 )
DC08A=0 /NUMBER OF TERMINALS INTERFACED VIA DC08A (PDP-8/I ONLY, 19 MAX.)
DC08LO=0 /LOWEST HARDWARE LINE NUMBER UTILIZED ON DC08A; USUALLY 0
PT08=0 /NUMBER OF TERMINALS INTERFACED VIA PT08 (PDP-8 & PDP-8/I ONLY)
KL8=16 /NUMBER OF ADDITIONAL TERMINALS INTERFACED VIA KL8 (PDP-8/E ONLY, 19 MAX.)
OCTAL
PLT=0
IFNZRO CPU < IFNZRO DC08A <ILLEGAL CONFIGURATION>>
IFNZRO 24-JOBMAX&4000 <ILLEGAL CONFIGURATION>
IFNZRO 23-KL8-PT08&4000 <ILLEGAL CONFIGURATION>
IFNZRO 24-DC08A&4000 <ILLEGAL CONFIGURATION>
IFZERO DC08A <D689=0>
IFNZRO DC08A < IFNZRO PHONES <D689=4>
IFZERO PHONES <D689=0>>
NULINE=DC08A+PT08+KL8 /EVERY TERMINAL EXCEPT THE CONSOLE
SWDEX=5 /DISK TRACK OF THE FIRST USER SWAP TRACK
STOMIN=5 /MINIMUM # FREE STORAGE BLOCK FOR NEWJOB
IFZERO RF08-40 <
IFZERO RS08-1 <DSKSIZ=10>
IFZERO RS08-2 <DSKSIZ=20>
IFZERO RS08-3 <DSKSIZ=30>
IFZERO RS08-4 <DSKSIZ=40>
DSKEXT=DSKSIZ-1>
IFZERO RF08 <DSKSIZ=RS08^100 /# 4K DISC TRACKS
DSKEXT=RS08^100+77>
CLOCKR=144 /MILLISECONDS PER TICK
TICMIN=1130 /600 TICKS PER MINUTE
INCLK2=0322 /INITIAL CLOCK
INCLK1=7400
TICSPS=12 /NUMBER OF SYSTEM TICKS PER SECOND
INIDEX=10 /INIT DISC EXTENSION
TS8DEX=30 /FIELD 0 DISC EXTENSION*2^3
ERPDEX=0 /ERP DISC EXTENSION*4
ERPWC=0 /ERP WORD COUNT
FIPDEX=4 /FIP DISC EXTENSION*4
FIPWC=0 /FIP WORD COUNT
SIDEX=ERPDEX /SI DISC EXTENSION*4
SIWC=ERPWC /SI WORD COUNT
LIBACT=2 /LIBRARY ACCOUNT #
BRKINI=4000 /INITIAL USER BREAK MASK
/IOT DEFINITIONS
IFNZRO DC08A < /DC08A,DL8I IOTS
TTIL=6401 /INCREMENT LINE REGISTER
TTI=6402 /TELETYPE INPUT COMMAND
TTO=6404 /TELETYPE OUTPUT COMMAND
TTCL=6411 /CLEAR LINE REGISTER
TTLL=6412 /LOAD LINE REGISTER, CLEAR AC
TTRL=6414 /READ LINE REGISTER
T1SKP=6421 /SKIP ON CLOCK FLAG
T1OFF=6422 /TURN CLOCK OFF
T1ON=6424 /TURN CLOCK ON
TTIR=6461 /INCREMENT THE R REG.
TTCR=6471 /CLEAR THE R REG.
TTLR=6472 > /LOAD THE R REG.
/EXTENDED MEMORY
CDF=6201 /CHANGE TO DATA FIELD 0
CIF=6202 /CHANGE TO INSTRUCTION FIELD 0
CINT=6204 /CLEAR USER IOT
RDF=6214 /READ DATA FIELD
RIF=6224 /READ INSTRUCTION FIELD
RIB=6234 /READ INTERRUPT BUFFER
RMF=6244 /RESTORE MEMORY FIELD
SINT=6254 /SKIP ON USER IOT
CUF=6264 /USER FLAG OFF
SUF=6274 /USER FLAG ON
/EAE
MUY=7405 /MULTIPLY
DVI=7407 /DIVIDE
NMI=7411 /NORMALIZE
SHL=7413 /SHIFT ARITHMETIC LEFT
ASR=7415 /ARITHMETIC SHIFT RIGHT
LSR=7417 /LOGICAL SHIFT RIGHT
MQL=7421 /LOAD MQ
SCL=7403 /STEP COUNTER LOAD FROM MEMORY
SCA=7441 /STEP COUNTER TO AC
MQA=7501 /MQ TO AC
IFZERO CPU-2 <
DPSZ=7451 /MODE B ONLY - SKIP IF AC&MQ ARE CLEAR
SWBA=7447 /CHANGE MODE TO A
SWAB=7431 /CHANGE MODE TO B (ALSO DOES MQL)
ACS=7403 /AC(7:11) TO SC; AC CLEARED
SGT=6006 /SKIP ON GT FLAG
>
/LINE PRINTER IOTS
LSF=6661 /SKIP ON CHAR FLAG SET
LCF=6662 /CLEAR CHAR FLAG
LSRP=6663 /SKIP ON NOT READY OR ON ERROR
LLC=6664 /TRANSMIT CHAR TO PRINTER
LSP=6665 /SET PROGRAM INTERRUPT; LP08/LE8
LPC=6666 /TRANSMIT CHAR &CLEAR FLAG
LCP=6667 /CLEAR PROGRAM INTERRUPT
LIE=6665 /AC11 TO INTERRUPT ENABLE; LS08/LS8E
/CTY
TPC=6044 /LOAD TELEPRINTER AND PRINT
/DISC (DF32)
DCMA=6601 /CLEAR
DMAR=6603 /READ
DMAW=6605 /WRITE
DCEA=6611 /CLEAR DISC EXTENDED ADDRESS
DEAL=6615 /LOAD EXTENDED ADDRESS
DFSE=6621 /SKIP ON ERROR
DFSC=6622 /SKIP ON COMPLETION
DEAC=6616 /READ EXTENDED ADDRESSES
/DISC (RF08)
DSAC=6612
DORS=6614
DIML=6615
DIMA=6616
DCXA=6641
DXAL=6643
/CARD READER IOT'S
RCSF=6631
RCRA=6632
RCRB=6634
RCNO=6635 /8E ONLY
RCRC=6636 /8E ONLY
RCNI=6637 /8E ONLY
RCSD=6671
RCSE=6672
RCRD=6674
RCSI=6675 /8E ONLY
RCTF=6677 /8E ONLY
/RK05 IOT'S
IFZERO PHONES<
DSKP= 6741
DCLR= 6742
DLAG= 6743
DLCA= 6744
DRST= 6745
DLDC= 6746
DMAINT= 6747 >
IFNZRO PHONES <
DSKP= 6751
DCLR= 6752
DLAG= 6753
DLCA= 6754
DRST= 6755
DLDC= 6756
DMAINT= 6757 >
/DECTAPE
DTRA=6761
DTCA=6762
DTXA=6764
DTSF=6771
DTRB=6772
DTLB=6774
IFZERO CPU <
/KW8I REAL TIME CLOCK
CECI=6137 /CLEAR AND ENABLE CLOCK AND INTERRUPT
CSCF=6133 /SKIP AND CLEAR FLAG IF FLAG
>
IFZERO CPU-1 <
CECI=6315 /CLOCK ENABLE
CSCF=6301 /SKIP ON CLOCK FLAG
CCF=6302 /CLEAR CLOCK FLAG, CLEAR ENABLE AND CLEAR BUFFER
CLB=6304 > /LOAD BUFFER FROM AC
IFZERO CPU-2 <
CECI=6131 /CLOCK ENABLE
CSCF=6133 /SKIP AND CLEAR FLAG IF FLAG
/POWER FAIL IOT
SPL=6102 /SKIP IF POWER LOW
/ 8/E PROCESSOR IOT
SRQ=6003 /SKIP ON INTERRUPT REQUEST
GTF=6004 /LINK TO AC0, GT FLAG TO AC1
RTF=6005 /AC0 TO LINK, AC1 TO GT FLAG
CAF=6007 > /CLEAR ALL FLAGS
IFZERO CPU-4 <
CLLE=6135 /AC11 TO INTERRUPT ENABLE FOR CLOCK
CLCL=6136 /CLEAR CLOCK FLAG
CLSK=6137 /SKIP ON CLOCK FLAG
SPL=6102 /SKIP POWER LOW
CAL=6133 > /CLEAR AC LOW FLAG
IFNZRO DC08A <
/689AG
SRF=6701 /SKIP IF RING FLAG
SCF=6711 /SKIP IF CARRIER FLAG
DFCRF=6742 /CLEAR RING FLAG
CTG=6721 /CLEAR GROUP COUNTER
RRS=6702 /READ RING STATUS
ITG=6731 /INCREMENT GROUP COUNTER
STR=6722 /SET TERMINAL READY
EDF=6704 /ENABLE DATAPHONE FEATURES
DDF=6714 /DISABLE DATAPHONE FEATURES
CTR=6724 /CLEAR TERMINAL FLAG
CCF=6741 /CLEAR CARRIER FLAG
RCS=6712 /READ CARRIER STATUS
>
/FIP IOTS (IN ABBREVIATED FORM)
SEGS=0006 /RETURN NUMBER OF FREE SEGMENTS ON DISK
ASD=0040 /ASSIGN
REL=0042 /RELEASE
REN=0200 /RENAME
OPEN=0201 /OPEN
CLOS=0202 /CLOSE
RFILE=6603 /READ FILE
PROT=0204 /PROTECT
WFILE=6605 /WRITE FILE
CRF=0210 /CREATE
EXT=0211 /EXTEND
RED=0212 /REDUCE
FINF=6613 /FILE INFORMATION
LIN=0214 /LOGIN
LOUT=0215 /LOGOUT
WHO=6616 /WHO
/DEVICE DATA BLOCK
DDBSTS=0 /WORD 1, STATUS AND UNIT NUMBER
DXON=2000 /XOFF SENT FLAG
DSI=1000 /DESTINATION IS S.I. FLAG
DFULL=400 /KEYBOARD BUFFER IS FULL
DUPL=200 /CONSOLE IN DUPLEX MODE
SICOM=100 /COMMAND WAITING
DECHO=40 /CAUSE SI TO RE-ECHO CURRENT INPUT BUFFER
/DEVICE UNIT NUMBER IS IN BITS 6-11
DDBJN=1 /WORD 2, JOB NUMBER IN 7-11
DDBBRK=2 /BREAK MASK
DDBTIM=3 /TIME THAT DEVICE WAS ASSIGNED
DDBINP=4 /BUFFER FILL POINTER
DDBINC=5 /BUFFER TOTAL COUNT
DDBOUC=6 /BUFFER EMPTY COUNT
DDBOUP=7 /BUFFER EMPTY POINTER
/JOB DATA AREA
JOBSTS=0 /STATUS
/STR0
JSRUN=4000 /RUN BIT
JSEREN=2000 /USER ERROR ENABLE
JCOMBD=1000 /LAST TIME THE JOB RAN AS COMPUTE BOUND
JSPEEK=400 /ALLOW "PEEK" AND "LOGOUT" IOT'S
JSACC=200 /JOB LOGGED IN UNDER PRIVILEGED ACCOUNT (1,2 OR 3)
JSIOT=100 /NON-RESIDENT IOT
JSIOTC=40 /COPY IOT RESULT TO USER
JSEXON=20 /EXECUTE ONLY
JSINER=10 /INHIBIT ERROR REPORT FROM SI. (UNTIL NEXT COMMAND)
/BITS 9-11 ARE SYSTEM ERROR CODE
UUOERF=1 /IOT ERROR
SWPRER=2 /SWAP READ ERROR
SWPWER=3 /SWAP WRITE ERROR
DSKERR=5 /DISC ERROR
HUNGDV=6 /HUNG DEVICE
/STR1
JSTIME=4000 /TIME IS UP
JSF0=2000 /FILE 0 NOT BUSY
JSF1=1000 /FILE 1 IS NOT BUSY
JSF2=400 /FILE 2 IS NOT BUSY
JSF3=200 /FILE 3 IS NOT BUSY
JSDEL=100 /KEYBOARD DELIMITER SEEN
JSLPT=40 /LINE PRINTER BUFFER IN USE BUT NOT FULL
JSTEL=20 /TELEPRINTER OUTPUT BUFFER IN USE BUT NOT FULL
JSPTR=10 /CHARACTERS IN READER BUFFER
JSPTP=4 /PUNCH BUFFER IN USE BUT IS NOT FULL
JSERR=2 /SYSTEM ERROR DETECTED
JSWAIT=1 /JOB NOT IN WAIT STATE
JOBSTB=2 /DEVICE STATUS REGISTER (FOR RK05 DECTAPE AND CARD READER)
JOBWMK=3 /WAIT MASK
JOBSRA=5 /JOB RESTART ADDRESS
JOBERR=6 /JOB ERROR RESTART ADDRESS
JOBLNK=7 /IOT LINKAGE
JOBSWR=10 /SWITCH REGISTER
JOBREG=11 /PC LINK AC
JOBEAE=14 /MQ MODE GT SC
JOBACC=16 /ACCOUNT NUMBER
JOBF0=17 /POINTER TO FILE 0 CONTROL
JOBF1=20 /POINTER TO FILE 1 CONTROL
JOBF2=21 /POINTER TO FILE 2 CONTROL
JOBF3=22 /POINTER TO FILE 3 CONTROL
JOBRTM=23 /LOW ORDER RUN TIME
JOBRTH=24 /HI ORDER RUN TIME
/FILE CONTROL BLOCK - POINTED TO BY JOBFX, X=0,1,2,3
FILWPT=0 /POINTER TO FILE RETRIEVAL WINDOW
FILSCT=1 /SEGMENT NUMBER OF FIRST WINDOW ENTRY
FILPRO=2 /FILE PROTECTION - BIT 9
FILPAR=3 /POINTER TO RFILE OR WFILE PARAMETER BLOCK
FILDA=4 /DISC ADDRESS OF RFILE OR WFILE
FILWC=6 /-WORD COUNT OF RFILE OR WFILE
FILRES=7 /POINTER TO FILPIF IN USER AREA
/FILE RETRIEVAL WINDOW
/WORD 0: UFD LINK TO NEXT GROUP OF 7 SEGMENT POINTERS
/WORDS 1-7: SEVEN SEGMENT ADDRESSES
/RFILE OR WFILE PARAMETER BLOCK - POINTED AT BY FILPAR
FILPFN=0 /FUNCTION; 0603 OR 0605
FILPDX=1 /DISC EXTENSION
FILPIF=2 /INTERNAL FILE # (BITS 10-11) AND FIELD # (BITS 7-9)
FILPWC=3 /-WORD COUNT FOR THIS TRANSFER
FILPCA=4 /CORE ADDRESS FOR THIS TRANSFER
FILPDA=5 /DISC ADDRESS
FILPRA=6 /EXEC RETURN ADDRESS FOR THIS TRANSFER
FILPCT=7 /POINTER TO FILE CONTROL BLOCK
/CORE TABLE CONTROL FLAGS
SWAP=4000 /SWAP REQUEST
LOCK=2000 /LOCK IN CORE
NOTRUN=1000 /HAS NOT BEEN SCHEDULED TO RUN
FIP=400 /FILE PHANTOM
SI=200 /SYSTEM INTERPRETER
NOHOLD=140 /INHIBIT "NOTRUN" STATUS AFTER FOUR CONSECUTIVE FILE TRANSFERS
CJOB=37 /BITS 7-11 CONTAIN THE JOB #
/FIP TABLE DEFINITIONS
SATSIZ=530
JTABLE=6000
ENTABL=JTABLE+JOBMAX+1
UTABLE=ENTABL+JOBMAX+JOBMAX+JOBMAX+JOBMAX+JOBMAX+JOBMAX+JOBMAX+JOBMAX
RTABLE=UTABLE+JOBMAX+JOBMAX+JOBMAX+JOBMAX+JOBMAX+JOBMAX+JOBMAX+JOBMAX
/TABLES
CORTBL=7001 /CORE ASSIGNMENT TABLE
L2QTB=CORTBL+7
IFZERO DC08A <DCSIZE=0>
IFNZRO DC08A <DCSIZE=400> /SIZE OF FIELD 1 DC08A CODE PLUS 689AG CODE
OUTREG=200 /ACTIVE OUTPUT REGISTERS (TTY'S, LPT & PTP)
SKPTBL=OUTREG+NULINE+3 /START OF IOT SKIP TABLE
SKPTP=SKPTBL+NULINE+NULINE+3 /POSITION OF PUNCH SKIP IN SKIP TABLE
RINGIN=SKPTP+3 /KEYBOARD INPUT RING BUFFER
ENDBUF=OUTREG+200 /END OF KEYBOARD INPUT BUFFER
INPUTS=ENDBUF-RINGIN%2 /NUMBER OF POSSIBLE ENTRIES IN THE KEYBOARD RING BUFFER
DATFLD=CDF 10 /MONITOR DATA FIELD SELECT
IFZERO EAE-20 <MQREG=1>
IFZERO EAE <IFNZRO CPU&7776 <MQREG=1>
IFZERO CPU&7776 <MQREG=0>>
IFNZRO OUTREG&1 <YOU GOOFED>

4456
tss8/system/si.pal Normal file

File diff suppressed because it is too large Load Diff

1372
tss8/system/ts8a.pal Normal file

File diff suppressed because it is too large Load Diff

1263
tss8/system/ts8b.pal Normal file

File diff suppressed because it is too large Load Diff

1294
tss8/system/ts8c.pal Normal file

File diff suppressed because it is too large Load Diff

1279
tss8/system/ts8d.pal Normal file

File diff suppressed because it is too large Load Diff

1329
tss8/system/ts8e.pal Normal file

File diff suppressed because it is too large Load Diff

620
tss8/system/ts8f.pal Normal file
View File

@@ -0,0 +1,620 @@
/ROUTINE TO SET A WAIT 2 CONDITION FOR THE CURRENT USER
/ (FOR DECTAPE, RK05, OR CARDREADER)
/ ENTER WITH DESIRED WAIT 2 STATUS IN THE AC
WAITS2, 0
DCA TEMP2
CDF
TAD I JOB /GET USER JOB NUMBER
JMS GETTBA
JOBWMK
DCA I TEMP0 /CLEAR WAIT MASK 1
ISZ TEMP0
TAD TEMP0 /GET WAIT NUMBER
DCA I TEMP0 /NOW [S]HE'S WAITING
JMP I WAITS2
/ROUTINE TO LOCK CURRENT USER IN HIS/HER CORE FIELD
/ RETURNS WITH CORTBL POINTER IN AC
USRLOK, 0
CDF
TAD I L2SFP /POINTER TO LEVEL 2 SAVE FIELD
AND K0007 /JUST THE FIELD
TAD CORTBA /DISPLACEMENT INTO THE CORE TABLE
DCA TEMP2
STL RTR /AC=2000
TAD I TEMP2
DCA I TEMP2 /LOCK IN CORE
DATFLD
TAD TEMP2 /NOW RETURN WITH POINTER INTO CORE TABLE
JMP I USRLOK
L2SFP, L2SF
FCB3= .+7&7770
CDCNT, 0
CDCORE, 0
CDTIMR, TIMCDR
CDL21, CLL CMA RTR /AC=5777
AND I CDCORE
DCA I CDCORE /UNLOCK THE CORE FIELD
TAD CDJOB
JMS GETTBA /FIND HIS/HER AC
JOBREG+2
TAD CDCNT
DCA I TEMP0 /PUT THE COLUMN COUNT IN HIS/HER AC
TAD CDJOB
JMS I AWAKEN /TAKE HIM/HER OUT OF WAIT STATUS
CDBUF, 0
EXITF1
CDL11, TAD I CDTIMR
SNA CLA /WERE WE EXPECTING AN INTERRUPT?
JMP CDIOT /NO
ISZ CDCNT /COUNT A COLUMN
ISZ CDBUF /BUMP THE USER'S POINTER
CDJOB, 0 /JOB OWNING THE CARD READER - (COVERS THE "ISZ SKIP")
CDREAD, .-. /THE PROPER READ IOT IS PLACED HERE
CDFLD, .-. /CDF TO THE USER'S FIELD
DCA I CDBUF /STASH A COLUMN IN THE USER'S BUFFER
INTRTN
CDIOT, RCRA /CLEAR UNWANTED INTERRUPT
CLA
INTRTN
UUCDR, CLL RAL /TIMES 2
TAD CDIOT /CONSTRUCT READ IOT
DCA CDREAD /EITHER ALPHA, BINARY, OR COMPRESSED (8E ONLY)
TAD I L2SAP
DCA CDBUF /SAVE THE USER'S BUFFER POINTER
DCA I L2SAP /CLEAR USER AC - IN CASE THE READER ISN'T READY
TAD I UDFP
DCA CDFLD /SAVE CDF TO USER'S FIELD
TAD I JOB
DCA CDJOB
DCA CDCNT /ZERO COLUMN COUNT
IOF
IFZERO CPU&7776 < JMP .+4 >
IFNZRO CPU&7776 < RCTF > /CLEAR 8E TRANSITION FLAG
IAC
RCNO /ENABLE CARD READER INTERRUPTS
CLA
RCSE /START CARD READER
JMP UUCDRB /NOT READY - PUT HIM/HER TO SLEEP BEFORE CONTINUING
JMS USRLOK /LOCK HIM/HER IN HIS/HER FIELD
DCA CDCORE /SAVE POINTER TO CORTBL
TAD K0004
JMS I WAIT2 /MAKE HIM/HER WAIT FOR THE CARD READER
CIF CDF
CLL CMA RAL /AC=-2
DCA I CDTIMR /SET CARD READER TIMER
JMP I WAIT1
UUCDRB, CIF CDF
JMP I SLEEPB /PUT HIM/HER TO SLEEP FOR A COUPLE OF SECONDS
*2000
FCE3= .&7770
FCB4= .+7&7770
RKL11, DRST /GET CONTROLLER STATUS
CLL RAL /IGNORE THE DONE BIT
SZA
JMP RKSR1 /ERROR!!!!!
ISZ RKBLKS /COUNT A SUCCESSFUL TRANSFER
TAD RKCMD
SNA /ARE WE FINISHED?
JMP RKSR2 /YES
DLDC /LOAD THE NEW COMMAND
TAD RKSECT
DLAG /LOAD THE NEW SECTOR - WE'RE OFF AND RUNNING AGAIN
JMS RKNXT /SET UP FOR THE NEXT BLOCK (IF ANY)
CLL STA RAL
DCA RKTIME /SET CONTROLLER TIMER FOR 2 MORE SECONDS
CLL STA RTL
DCA I RKERRA /THREE ERRORS
INTRTN
RKSR1, ISZ I RKERRA
JMP RKSR4 /STILL OK TO RETRY
DRST
RKSR2, DCA I RKERRA /FINAL STATUS FOR THE USER
DLDC /CLEAR CONTROLLER STATUS AND COMMAND REGISTERS
DCA RKTIME
TAD RKL2 /SCHEDULE LEVEL 2
INTRTN
RKSR4, AND K1012 /SAVE SPECIAL CASE ERROR BITS
SNA
RKSRE, JMP RKSR5+1 /DON'T RECAL. OR PUT CURRENT JOB TO SLEEP
AND K0010
SZA CLA
JMP RKSR5 /PUT CURRENT JOB TO SLEEP AND RE-TRY
IAC
DCLR /IN CASE WE HAVE SOMETHING REALLY IN TROUBLE
TAD RKCOM
AND K0006 /SAVE ONLY THE UNIT #
TAD K0600 /ENABLE INTERRUPT ON SEEK COMPLETION
DLDC
STL RTL
DCLR /RE-CALIBRATE
TAD RKSRE
DCA RKL11 /CHANGE LEVEL 1
CLL STA RTL /ALLOW 3 SECONDS FOR THE RE-CALIBRATE
DCA RKTIME
DCLR
INTRTN
RKSR5, TAD SLEEPB
DCA INTS2
CLL CMA RTL /AC=-3
TAD IX3 /POINTER TO DDB WORD 4 (-1)
JMS RKGO /RE-TRY
SNA /ANYTHING BAD?
TAD INTS2 /NO - HOW ABOUT PUTTING SOMEONE TO SLEEP?
INTRTN
K1012, 1012
RKL2, RKL20
RKFLD, -CORTBL+51
RKGO, 0
DCA IX3 /SAVE THE DDB POINTER
IAC
DCLR /CLEAR THE CONTROLLER
TAD I IX3 /USER WORD 1
CLL RTR
RAR
DCA RKCOM /SAVE COMMAND DIVIDED BY 10
TAD RKCOM
AND K0037 /PAGE COUNT
SNA
TAD K0040 /FOR 0 OR 40 GIVE HIM/HER 40
CMA
TAD RKBLKS
TAD RKBLKS /ADD NUMBER OF PAGES ALREADY TRANSFERRED
DCA RKCNT
TAD RKCOM
AND K7400 /SAVE FUNCTION, DRIVE, AND HI ORDER SECTOR BIT
TAD RKCORE /POINTER TO CORTBL ENTRY
TAD RKFLD /EXTRACT FIELD NUMBER AND INSERT INTERRUPT ENABLE AND HALF BLOCK BITS
CML RTL /"RKFLD" COMPLEMENTED THE LINK
RAL
DCA RKCOM /SAVE THE CONSTRUCTED COMMAND REGISTER
TAD RKBLKS /NUMBER OF SECTORS ALREADY TRANSFERRED
TAD I IX3
DCA RKSECT /STARTING SECTOR NUMBER FROM THE USER
SZL
ISZ RKCOM /BUMP HI ORDER BIT
TAD RKBLKS /NUMBER OF BLOCKS ALREADY TRANSFERRED
CLL RTR /TIMES 400
RTR
RAR
TAD I IX3
IAC /WE ADD ONE SINCE THE CONTROLLER WANTS THE REAL ADDRESS
DLCA /LOAD USER'S CA INTO THE CONTROLLER
JMS RKCMD /GENERATE FIRST COMMAND
IOF
DLDC /LOAD CONTROLLER COMMAND REGISTER
TAD RKSECT
DLAG /LOAD IN THE DESIRED SECTOR - WE ARE OFF AND RUNNING
JMS RKNXT /SET UP FOR THE NEXT SECTOR (IF ANY)
TAD RKDRST
DCA RKL11 /FIX FIRST WORD OF INTERRUPT SERVICE
DSKP /ARE WE TRYING TO DO SOMETHING BAD?
JMP I RKGO /NO - EVERYTHING IS PEACHY
RKDRST, DRST
DCA I RKERRA /SAVE ERROR STATUS - NO RE-TRIES WILL BE MADE
DLDC /CLEAR CONTROLLER STATUS AND COMMAND REGISTERS
TAD RKL2 /RETURN WITH L2 DISPATCH
JMP I RKGO
RKCMD, 0
ISZ RKCNT
TAD RKCNT
SMA CLA /ANY MORE BLOCKS TO GO?
JMP RKDONE /NO - CLOSE IT OUT
ISZ RKCNT /HALF BLOCK?
TAD K7700 /NO - REMOVE THE HALF BLOCK BIT FROM THE COMMAND
TAD RKCOM /GET THE COMMAND
JMP I RKCMD
RKNXT, 0
ISZ RKSECT /BUMP SECTOR
TAD RKSECT
SNA
ISZ RKCOM /BUMP HI-ORDER SECTOR BIT
AND K0037
SZA CLA /WILL WE SEEK ON THIS ONE?
TAD K1000 /NO - DO A READ ALL OR WRITE ALL
DCA INTS1
JMS RKCMD /CHECK FOR HALF BLOCK AND COMPLETION
TAD INTS1
RKDONE, DCA RKCMD /SAVE THE NEW COMMAND REGISTER
JMP I RKNXT
PAGE
FCE4= .&7770
IFNZRO DC08A <
T8ASSM, 0
AND T83770 /THE CHARACTER ONLY
SNA
JMP T8ASS1 /IGNORE NULL CHARACTERS
CLL RTR /BRING THE CHARACTER INTO POSITION
RAR
AND T80177
TAD K0200 /FORCE ON THE PARITY BIT
CIF 00 /STASH IT AWAY
JMS I T8IN1A /THAT'S DONE IN FIELD 0
ION
T8ASS1, CLL STA RTL /AC=-3
TAD T8ASSM
DCA T8T /POINTS TO THE LSW
TAD I T8T
AND T83770 /SAVE ONLY THE LINE NUMBER
DCA I T8T
ISZ T8T /POINTS TO THE CAW
STL RTR /AC=2000
DCA I T8T /RESET THE FLAG BIT
TTIR /BUMP THE "R" REGISTER
JMP I T8ASSM
T80177, 177
T83770, 3770
T8IN1A, T8IN1
T8T, 0
T8TTI, TTI
DC08LO^10+0 /LSW LINE # PT08+DC08LO+1
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+10 /LSW LINE # PT08+DC08LO+2
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+20 /LSW LINE # PT08+DC08LO+3
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+30 /LSW LINE # PT08+DC08LO+4
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+40 /LSW LINE # PT08+DC08LO+5
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+50 /LSW LINE # PT08+DC08LO+6
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+60 /LSW LINE # PT08+DC08LO+7
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+70 /LSW LINE # PT08+DC08LO+10
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+100 /LSW LINE # PT08+DC08LO+11
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+110 /LSW LINE # PT08+DC08LO+12
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+120 /LSW LINE # PT08+DC08LO+13
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+130 /LSW LINE # PT08+DC08LO+14
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+140 /LSW LINE # PT08+DC08LO+15
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+150 /LSW LINE # PT08+DC08LO+16
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+160 /LSW LINE # PT08+DC08LO+17
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+170 /LSW LINE # PT08+DC08LO+20
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+200 /LSW LINE # PT08+DC08LO+21
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+210 /LSW LINE # PT08+DC08LO+22
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+220 /LSW LINE # PT08+DC08LO+23
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+230 /LSW LINE # PT08+DC08LO+24
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
*T8TTI+DC08A+DC08A+DC08A+DC08A
CIF 00
JMP I .+1 /BACK TO THE REST OF THE DC08A SERVICE
T8OUT1
FCB5= .+7&7770
*2360
FCE5= .&7770
DFCLS0, ZBLOCK 4
DFCNO0, ZBLOCK 4
DFL2S0, ZBLOCK 4
-1 /TO END TABLE
DFL2DL= .
1-DC08LO+PT08+KL8;11-DC08LO+PT08+KL8
21-DC08LO+PT08+KL8;31-DC08LO+PT08+KL8
DFRING, CTG /CLEAR THE GROUP COUNTER
TAD K7774
DCA TEMP0 /COUNTER FOR GROUP SEARCH
DFRNG1, RRS /READ RING STATUS
SZA
STR /ACKNOWLEDGE RING(S)
CLA
ITG /INCREMENT THE GROUP COUNTER
ISZ TEMP0 /LOOKED AT ALL LINES?
JMP DFRNG1 /NO, KEEP LOOKING
STA
IOF
DCA I .+2 /DATA FLD=0 HERE, I HOPE. RESET COUNTER
EXITF1
D6FLAG
DFCLSI, 0
DFCNWI, 0
DFCLST, DFCLS0
DFCNOW, DFCNO0
DFCNTR, 0
DFCSET, 0
TAD DFCLST
DCA DFCLSI /POINTER TO STATUS AT LAST INTERRUPT
TAD DFCNOW
DCA DFCNWI /POINTER TO STATUS AT THIS INTERRUPT
TAD K7774
DCA DFCNTR /COUNTER FOR COMPARISONNS
CTG /CLEAR GROUP COUNTER
JMP I DFCSET
DFCARR, JMS DFCSET /INITIALIZE STATUS
DFCAR1, RCS /READ CARRIER STATUS
DCA I DFCNWI /PLACE ON TABLE
ISZ DFCNWI
ITG /INCREMENT THE GROUP COUNTER
ISZ DFCNTR /READ ALL FOUR GROUPS?
JMP DFCAR1 /NO, READ NEXT
JMS DFCSET
TAD DFL2ST
DCA DFL2SI
DFCAR2, TAD I DFCNWI
CMA
AND I DFCLSI
SZA /ANY LINES CLEARED?
JMP DFCAR3 /YES, ACKNOWLEDGE
DFCAR5, TAD I DFCLSI
CMA
AND I DFCNWI
SZA
JMS DFCAR6
ISZ DFCLSI
ISZ DFCNWI
ISZ DFL2SI
ITG /INCREMENT THE GROUP COUNTER
ISZ DFCNTR /ALL LINES CHECKED?
JMP DFCAR2 /NO
JMS DFCSET
DFCAR4, TAD I DFCNWI /TRANSFER THIS STATUS TABLE TO LAST
DCA I DFCLSI
ISZ DFCNWI
ISZ DFCLSI
ISZ DFCNTR
JMP DFCAR4
JMP DFL200
DFCAR3, CTR /CLEAR TERMINAL READY
JMS DFCAR6
JMP DFCAR5 /LOOK AT OTHER GROUPS
DFCAR6, 0
DCA TEMP4 /BIT TO SET
TAD TEMP4
CMA
AND I DFL2SI
TAD TEMP4
DCA I DFL2SI
JMP IDFCAR6
DFL200, TAD DFL2ST /INITIALIZE PSEUDO GROUP CTR
DCA DFL2SG
DFL22, TAD K7770 /EIGHT PHONES
DCA TEMP0
IAC
DCA TEMP1 /SELECT EACH LINE IN GROUP
DFL21, TAD I DFL2SG
SNA
JMP DFL23
SPA
EXITF1
AND TEMP1
SZA CLA
JMP DFL25
DFL26, TAD TEMP1
CLL RAL
DCA TEMP1
ISZ TEMP0
JMP DFL21
DFL23, DCA I DFL2SG
ISZ DFL2SG
JMP DFL22
DFGBLK, GETB
DFL25, TAD DFL2SG
TAD DFL2C
DCA TEMP2
TAD I TEMP2
TAD TEMP0
TAD K0010
CLL RAL
TAD DFVTBA
DCA TEMP3
TAD I TEMP3
SZA CLA
JMP .+5 /YES
TAD TEMP3
CIF
JMS I DFGBLK
JMP DFL26
TAD TEMP3
CIF CDF
JMS I DFUMES
JMP DFL26
DFL2SG, 0
DFL2C, DFL2DL-DFL2S0
DFVTBA= DEVTBA
DFL2SI, 0
DFL2ST, DFL2S0
DFUMES, UHLTMS
>
*DATA1
/ROUTINE TO DECREMENT TIMERS
/THEY ARE BUMPED ONCE EACH SECOND
/THUS A USER CAN MEASURE UP TO 1 HOUR, 8 MINUTES, 15 SECONDS
TIMER0, 0
ISZ TIMBIG /HAVE WE GONE THROUGH A SECOND YET?
JMP F0TIMT /NO - DID WE FINISH ALL THE TIMERS LAST TIME?
TAD TICSEC /REFRESH SECOND TIMER
DCA TIMBIG
TAD JOBCNT
DCA TIMET1
TAD TIMTB1 /START OF CLKTBL
DCA TIMET2
TIMER1, DATFLD
TAD I TIMET2
SZA CLA
ISZ I TIMET2
JMP TIMER2
TAD TIMEJM /SET TIMER FLAG
TAD TIMET1
JMS GETTBA /GET PTR TO STATUS 1
JOBSTS+1
TAD TEMP0 /DOES THE JOB STILL EXIST?
SNA CLA
JMP TIMER2 /NO
TAD I TEMP0 /YES, SET JSTIME IN STR1
RAL
STL RAR
DCA I TEMP0
TIMER2, ISZ TIMET2
ISZ TIMET1
JMP TIMER1
ISZ UPTIM1 /INDEX LOW ORDER UPTIME
SKP
ISZ UPTIM2 /INDEX HI ORDER UPTIME
TIMEJM, JOBMAX+1 /NOP
IFZERO TC01 < JMP .+3 >
IFNZRO TC01 < STA >
DCA TEMP2 /ENABLE TRANSFER BACK TO DECTAPE CONTROLLER WAIT
JMS I TIMEDT /RUN DECTAPE TIMERS
IFZERO RK05 < JMP F0TIMR >
IFNZRO RK05 < CIF DATFLD > /NO INTERRUPTS
TAD RKTIME
SZA CLA /ACTIVE?
ISZ RKTIME /YES, BUMP TIMER
JMP F0TIMR /ALL IS WELL
IAC
DCLR /STOP WHATEVER IS GOING ON WITH THE RK05
STA
DCA I RKERRA /SHOW THAT TRANSFER WAS TERMINATED
TAD RKJOB
JMS I RKHUNG /REPORT THE ERROR
RKL20
/ROUTINE TO DUMP VALUE OF ONE CORE CELL INTO MQ
/RUNS AT EACH SYSTEM TICK
/TO USE, SET THE DESIRED CORE ADDRESS IN THE SWITCH REGISTER
/TO SELECT FIELDS, CLEAR SR TO 0, AND SET THE DESIRED
/FIELD IN THE LOW ORDER BITS OF THE SR.
/THIS MEANS THAT YOU CANNOT ADDRESS LOCATIONS 0,1,2, OR 3
/IF THIS ROUTINE IS RUNNING, THE EAE IS NOT MUCH USE
/TO USER PROGRAMS. SORRY ABOUT THAT.
TIMOUT, JMP TIMEX /LAS /INSERT THE "LAS" (7604) TO ENABLE DISPLAY
AND K7774 /TRYING A FIELD SELECT?
SNA
JMP DISPL1 /YES, GO CHANGE THE FIELD
LAS /NO; WHAT WAS THAT ADDRESS AGAIN?
DCA TEMP0
DISFLD, CDF /ASSUME FIELD 0 TO START
TAD I TEMP0 /PICK UP CONTENTS OF SPECIFIED ADDRESS
MQL /DUMP IT IN THE MQ
TIMEX, CIF CDF /BACK TO FIELD 0
JMP I TIME3A /RETURN
TIMIT, TIMER3
TIME3A, TIMER3
TIMBIG, -TICSPS /ACTIVE COUNTER
TICSEC, -TICSPS /STARTING VALUE OF TIMBIG
TIMET1= TEMP4
TIMET2= TEMP2
TIMTB1, CLKTBL+1
TIMEDT, DTIMER
RKHUNG, DTRKER
DISPL1, LAS /WHAT WAS THAT FIELD AGAIN?
CLL RAL
RTL
TAD K6201 /BUILD FIELD SELECT
DCA DISFLD
JMP DISFLD-1 /NOW GO LOOK
DEVDMB= JOBTBL-2
*DEVTBL-1
DEVDMB /DUMMY USED BY FIP RELEASE
ZBLOCK DEVTBE-DEVTBL
0 /WE ALLOW THE READER EVEN IF NOT CONFIGURED FOR ONE
/THIS ALLOWS FIELD SERVICE TO USE THEIR PMK01
IFZERO PUNCH <DEVDMB>
IFNZRO PUNCH <0>
DEVDMB
IFZERO LPT <DEVDMB>
IFNZRO LPT <0>
IFZERO CDR <DEVDMB>
IFNZRO CDR <0>
IFZERO TC01 <DEVDMB
DEVDMB
DEVDMB
DEVEMB
DEVDMB
DEVDMB
DEVDMB
DEVDMB>
IFNZRO TC01 <ZBLOCK 10>
IFNZRO RK05 <ZBLOCK RK05>
IFNZRO .-JOBTBL+1 <DEVDMB>
IFNZRO .-JOBTBL+1 <DEVDMB>
IFNZRO .-JOBTBL+1 <DEVDMB>
IFNZRO .-JOBTBL+1 <DEVDMB>
-1 /TERMINATES ASSIGNABLE DEVICE TABLE
/JOBTBL, CLKTBL, TTYTBL, PRGTBL, & DSUTBL ARE SET UP BY INIT
*FIPBLK
ZBLOCK 10 /FIP'S FIXED PARAMETER BLOCK
*WINBAS
ZBLOCK 50 /BASIC'S WINDOW
$$$$$$$$$$$$$$$$$$$$$$$$$$$$

BIN
tss8/tss8.zip Normal file

Binary file not shown.

65
tss8/tss8_boostrap.txt Normal file
View File

@@ -0,0 +1,65 @@
Loading TSS/8
-------------
Note: your environment must have a functioning second Teletype; that is, you cannot
at present run Foreground/Background if your host system is VMS or OS/2.
1. Load the paper-tape bootstrap:
sim> load tss8_init.bin
2. Enable the RF08, if it is not enabled, and disable the DF32, if it is enabled:
sim> set rf enabled
sim> set df disabled
3. Mount the TSS/8 disk image of the RF08:
sim> attach rf tss8_rf.dsk
4. Assign a TCP/IP port to the Telnet listener for the extra terminals:
sim> attach tti1 <port #> -- 4000 typically works
5. Run the bootstrap:
sim> run 24200
5. TSS/8 will boot and go through its startup dialog
LOAD, DUMP, START, ETC? START
MONTH-DAY-YEAR: mm:dd:yy -- numeric, yy in range [74:85]
HR:MIN - hh:mm -- numeric, 24 hour format
(type cr to get attention)
.
and is now ready for login. The list of accounts and passwords:
PPN Password
[0,1] VH3M
[0,2] LXHE
[0,3] SHUG
[77,77]
[1,10] WBCN
[20,1] DT
[20,2] PT
[20,3] TSS8
[20,4] EDIT
[20,5] 4TH
[1,50] JERK
6. Login using one of the existing accounts. The login command won't echo:
.LOGIN 2 LXHE -- privileged library account
TSS/8.24 JOB 01 [00,02] K00 23:23:06
SYSTEM IS DOWN, INC.
7. The system is now ready for commands. To get a directory listing:
.R CAT
8. Other users can log in by connecting, from a Telnet client, to localhost
on the port specified in the attach tti1 command.

BIN
tss8/tss8_init.bin Normal file

Binary file not shown.

2458
tss8/tss8_init.v Normal file

File diff suppressed because it is too large Load Diff

BIN
tss8/tss8_rf.dsk Normal file

Binary file not shown.

BIN
tss8/tss8_rf.dsk.orig Normal file

Binary file not shown.