1
0
mirror of https://github.com/livingcomputermuseum/cpus-pdp8.git synced 2026-01-12 00:12:44 +00:00

added new tss8 source dirs

This commit is contained in:
brad 2016-01-02 16:39:18 +00:00
parent c164b2a51d
commit e526fff7c6
142 changed files with 137633 additions and 46 deletions

Binary file not shown.

View File

@ -143,7 +143,8 @@ int32 t;
{
extern unsigned long cycles;
printf("clock fire; cycles %d\n", cycles);
extern FILE *traceout;
fprintf(traceout, "clock fire; cycles %lu\n", cycles);
}
dev_done = dev_done | INT_CLK; /* set done */

View File

@ -324,6 +324,8 @@ static unsigned long cycles_last;
static unsigned long max_cycles;
int need_stop;
FILE *traceout;
t_stat sim_instr (void)
{
int32 IR, MB, IF, DF, LAC, MQ;
@ -346,25 +348,32 @@ sim_rtcn_init (ttix_unit.wait, TMR_TTX); /* init ttx calib */
/* Main instruction fetch/decode loop */
if (traceout == NULL) {
traceout = fopen("trace.txt", "w");
}
while (reason == 0) { /* loop until halted */
#if 1
cycles++;
if (max_cycles && cycles >= max_cycles)
need_stop = 1;
cycles_last++;
if (cycles_last >= 100000) {
cycles_last = 0;
printf("xxx cycles %d\r\n", (int)cycles);
}
{
extern FILE *traceout;
cycles++;
if (max_cycles && cycles >= max_cycles)
need_stop = 1;
cycles_last++;
if (cycles_last >= 100000) {
cycles_last = 0;
fprintf(traceout, "xxx cycles %d\r\n", (int)cycles);
}
if (need_stop) {
printf("\r\nxxx %lu stop\n", cycles);
reason = STOP_HALT;
if (1) { sim_ttclose(); exit(0); }
break;
if (need_stop) {
fprintf(traceout, "\r\nxxx %lu stop\n", cycles);
reason = STOP_HALT;
if (1) { sim_ttclose(); exit(0); }
break;
}
tt_service();
}
tt_service();
#endif
if (sim_interval <= 0) { /* check clock queue */
@ -373,8 +382,8 @@ while (reason == 0) { /* loop until halted */
if (int_req > INT_PENDING) { /* interrupt? */
#if 0
if (dtrace) printf("xxx %lu interrupt @ %o (UF%d IF%o DF%o)\n",
cycles, PC, UF, IF>>12, DF>>12);
if (dtrace) { extern FILE *traceout; fprintf(traceout, "xxx %lu interrupt @ %o (UF%d IF%o DF%o)\n",
cycles, PC, UF, IF>>12, DF>>12); }
#endif
int_req = int_req & ~INT_ION; /* interrupts off */
SF = (UF << 6) | (IF >> 9) | (DF >> 12); /* form save field */
@ -414,11 +423,12 @@ while (reason == 0) { /* loop until halted */
#if 1
if (dtrace) {
printf("pc %04o ir %04o l%o ac %04o ion %d "
"(IF%o DF%o UF%o SF%03o IB%o UB%o)\n",
MA, IR, LAC & 010000 ? 1 : 0, LAC & 07777,
int_req & INT_ION ? 1 : 0,
IF>>12, DF>>12, UF, SF, IB>>12, UB);
extern FILE *traceout;
fprintf(traceout, "pc %04o ir %04o l%o ac %04o ion %d "
"(IF%o DF%o UF%o SF%03o IB%o UB%o)\n",
MA, IR, LAC & 010000 ? 1 : 0, LAC & 07777,
int_req & INT_ION ? 1 : 0,
IF>>12, DF>>12, UF, SF, IB>>12, UB);
}
#endif
@ -483,7 +493,7 @@ switch ((IR >> 7) & 037) { /* decode IR<0:4> */
MA = IF | (IR & 0177); /* dir addr, page zero */
LAC = (LAC + M[MA]) & 017777;
#if 1
if (mtrace) printf("mem read [%o] -> %o\n", MA, M[MA]);
if (mtrace) { extern FILE *traceout; fprintf(traceout, "mem read [%o] -> %o\n", MA, M[MA]); }
#endif
break;
@ -491,7 +501,7 @@ switch ((IR >> 7) & 037) { /* decode IR<0:4> */
MA = (MA & 077600) | (IR & 0177); /* dir addr, curr page */
LAC = (LAC + M[MA]) & 017777;
#if 1
if (mtrace) printf("mem read [%o] -> %o\n", MA, M[MA]);
if (mtrace) { extern FILE *traceout; fprintf(traceout, "mem read [%o] -> %o\n", MA, M[MA]); }
#endif
break;
@ -501,7 +511,7 @@ switch ((IR >> 7) & 037) { /* decode IR<0:4> */
else MA = DF | (M[MA] = (M[MA] + 1) & 07777); /* incr before use */
LAC = (LAC + M[MA]) & 017777;
#if 1
if (mtrace) printf("mem read [%o] -> %o\n", MA, M[MA]);
if (mtrace) { extern FILE *traceout; fprintf(traceout, "mem read [%o] -> %o\n", MA, M[MA]); }
#endif
break;
@ -511,7 +521,7 @@ switch ((IR >> 7) & 037) { /* decode IR<0:4> */
else MA = DF | (M[MA] = (M[MA] + 1) & 07777); /* incr before use */
LAC = (LAC + M[MA]) & 017777;
#if 1
if (mtrace) printf("mem read [%o] -> %o\n", MA, M[MA]);
if (mtrace) { extern FILE *traceout; fprintf(traceout, "mem read [%o] -> %o\n", MA, M[MA]); }
#endif
break;
@ -554,7 +564,7 @@ switch ((IR >> 7) & 037) { /* decode IR<0:4> */
M[MA] = LAC & 07777;
LAC = LAC & 010000;
#if 1
if (mtrace) printf("mem write [%o] <- %o\n", MA, M[MA]);
if (mtrace) { extern FILE *traceout; fprintf(traceout, "mem write [%o] <- %o\n", MA, M[MA]); }
#endif
break;
@ -563,7 +573,7 @@ switch ((IR >> 7) & 037) { /* decode IR<0:4> */
M[MA] = LAC & 07777;
LAC = LAC & 010000;
#if 1
if (mtrace) printf("mem write [%o] <- %o\n", MA, M[MA]);
if (mtrace) { extern FILE *traceout; fprintf(traceout, "mem write [%o] <- %o\n", MA, M[MA]); }
#endif
break;
@ -574,7 +584,7 @@ switch ((IR >> 7) & 037) { /* decode IR<0:4> */
if (MEM_ADDR_OK (MA)) M[MA] = LAC & 07777;
LAC = LAC & 010000;
#if 1
if (mtrace) printf("mem write [%o] <- %o\n", MA, M[MA]);
if (mtrace) { extern FILE *traceout; fprintf(traceout, "mem write [%o] <- %o\n", MA, M[MA]); }
#endif
break;
@ -585,7 +595,7 @@ switch ((IR >> 7) & 037) { /* decode IR<0:4> */
if (MEM_ADDR_OK (MA)) M[MA] = LAC & 07777;
LAC = LAC & 010000;
#if 1
if (mtrace) printf("mem write [%o] <- %o\n", MA, M[MA]);
if (mtrace) { extern FILE *traceout; fprintf(traceout, "mem write [%o] <- %o\n", MA, M[MA]); }
#endif
break;
@ -732,7 +742,7 @@ switch ((IR >> 7) & 037) { /* decode IR<0:4> */
PCQ_ENTRY;
MA = IF | (IR & 0177); /* dir addr, page zero */
#if 1
if (mtrace) printf("mem read [%o] -> %o\n", MA, M[MA]);
if (mtrace) { extern FILE *traceout; fprintf(traceout, "mem read [%o] -> %o\n", MA, M[MA]); }
#endif
if ((MA & 07770) != 00010) MA = M[MA]; /* indirect; autoinc? */
else MA = (M[MA] = (M[MA] + 1) & 07777); /* incr before use */
@ -754,7 +764,7 @@ switch ((IR >> 7) & 037) { /* decode IR<0:4> */
PCQ_ENTRY;
MA = (MA & 077600) | (IR & 0177); /* dir addr, curr page */
#if 1
if (mtrace) printf("mem read [%o] -> %o\n", MA, M[MA]);
if (mtrace) { extern FILE *traceout; fprintf(traceout, "mem read [%o] -> %o\n", MA, M[MA]); }
#endif
if ((MA & 07770) != 00010) MA = M[MA]; /* indirect; autoinc? */
else MA = (M[MA] = (M[MA] + 1) & 07777); /* incr before use */

View File

@ -200,8 +200,12 @@ if (pulse & 6) { /* DMAR, DMAW */
t = (rf_da & RF_WMASK) - GET_POS (rf_time); /* delta to new loc */
if (t < 0) t = t + RF_NUMWD; /* wrap around? */
#if 1
printf("xxx rf_go! (rf_da %o, wc %o, ma %o)\n", rf_da, M[RF_WC], M[RF_MA]);
sim_activate (&rf_unit, 0); /* schedule op */
{
extern FILE *traceout;
fprintf(traceout, "xxx rf_go! (rf_da %o, wc %o, ma %o)\n", rf_da, M[RF_WC], M[RF_MA]);
}
//sim_activate (&rf_unit, 0); /* schedule op */
sim_activate (&rf_unit, t * rf_time); /* schedule op */
#else
sim_activate (&rf_unit, t * rf_time); /* schedule op */
#endif
@ -268,7 +272,10 @@ switch (pulse) { /* decode IR<9:11> */
case 1: /* DCXA */
rf_da = rf_da & 07777; /* clear DAR<0:7> */
#if 1
printf("xxx rf_da %o\n", rf_da);
{
extern FILE *traceout;
fprintf(traceout, "xxx rf_da %o\n", rf_da);
}
#endif
break;
@ -277,7 +284,10 @@ switch (pulse) { /* decode IR<9:11> */
case 2: /* DXAL w/o clear */
rf_da = rf_da | ((AC & 0377) << 12); /* DAR<0:7> |= AC */
#if 1
printf("xxx rf_da %o\n", rf_da);
{
extern FILE *traceout;
fprintf(traceout, "xxx rf_da %o\n", rf_da);
}
#endif
AC = 0; /* clear AC */
break;
@ -332,7 +342,7 @@ do {
if (MEM_ADDR_OK (pa)) /* if !nxm */
M[pa] = fbuf[rf_da]; /* read word */
#if 1
if (dtrace) printf("dma [%o] <- %o\n", pa, M[pa]);
if (dtrace) { extern FILE *traceout; fprintf(traceout, "dma [%o] <- %o\n", pa, M[pa]); }
#endif
}
else { /* write */
@ -349,7 +359,8 @@ do {
if ((M[RF_WC] != 0) && ((rf_sta & RFS_ERR) == 0)) /* more to do? */
#if 1
sim_activate (&rf_unit, 1/*0*/); /* sched next */
// sim_activate (&rf_unit, 1/*0*/); /* sched next */
sim_activate (&rf_unit, rf_time); /* sched next */
#else
sim_activate (&rf_unit, rf_time); /* sched next */
#endif

View File

@ -134,7 +134,7 @@ DEVICE tto_dev = {
&tto_dib, 0
};
#define FAKE_INPUT
//#define FAKE_INPUT
#ifdef FAKE_INPUT
int tt_input_index;
char tt_input[] = "START\r01:01:85\r10:10\r";
@ -269,7 +269,7 @@ void tt_service(void)
{
if (tt_refire == 0 && (tt_input_index == tt_input_count)) {
if (cycles >= R1) {
strcpy(tt_input, "LOGIN 2 LXHE\r\r");
strcpy(tt_input, "\rLOGIN 2 LXHE\r\r");
tt_input_count = strlen(tt_input);
tt_input_index = 0;
tt_refire++;

View File

@ -147,7 +147,7 @@ PDP8 = ${PDP8D}pdp8_cpu.c ${PDP8D}pdp8_clk.c ${PDP8D}pdp8_df.c \
${PDP8D}pdp8_rx.c ${PDP8D}pdp8_sys.c ${PDP8D}pdp8_tt.c \
${PDP8D}pdp8_ttx.c ${PDP8D}pdp8_rl.c ${PDP8D}pdp8_tsc.c \
${PDP8D}pdp8_td.c
PDP8_OPT = -I ${PDP8D}
PDP8_OPT = -I ${PDP8D} -lm

View File

@ -6,7 +6,7 @@
/EDUSYSTEM 50 MONITORS ARE TO RUN.
/FOR EACH STATEMENT, THE COMMENT INDICATES THE POSSIBLE RESPONSES.
CPU= 0 /1 IF CPU IS PDP-8; 0 IF CPU IS PDP-8/I;
CPU= 2 /1 IF CPU IS PDP-8; 0 IF CPU IS PDP-8/I;
/2 IF CPU IS PDP-8/E
CORMEM= 70 /HIGHEST DATA FIELD SELECT. FOR 12K SYSTEM,
@ -22,7 +22,7 @@ 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
PUNCH= 0 /1 IF SYSTEM INCLUDES PUNCH; 0 IF IT DOES NOT
TC01= 0 /1 IF SYSTEM INCLUDES DECTAPE(S); 0 IF IT DOES NOT
@ -30,7 +30,7 @@ RK05= 0 /NUMBER OF RK05 CARTRIDGE DISK DRIVES ON THE SYSTEM; 0 TO 4
CDR= 0 /1 IF SYSTEM INCLUDES CARD READER; 0 IF IT DOES NOT
LPT= 1 /1 IF SYSTEM INCLUDES LINE PRINTER; 0 IF NO LINE PRINTER
LPT= 0 /1 IF SYSTEM INCLUDES LINE PRINTER; 0 IF NO LINE PRINTER
DECIMAL /MONITOR CAPACITY FOR THIS SYSTEM
@ -41,11 +41,11 @@ JOBMAX= 20 /NUMBER OF SIMULTANEOUS USERS (20 MAXIMUM)
CONTTY= 1 /WE ALWAYS HAVE A CONSOLE (K00)
DC08A= 19 /NUMBER OF TERMINALS INTERFACED VIA DC08A (PDP-8/I ONLY, 19 MAX.)
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= 8 /NUMBER OF TERMINALS INTERFACED VIA PT08 (PDP-8 & PDP-8/I ONLY)
PT08= 0 /NUMBER OF TERMINALS INTERFACED VIA PT08 (PDP-8 & PDP-8/I ONLY)
KL8= 0 /NUMBER OF ADDITIONAL TERMINALS INTERFACED VIA KL8 (PDP-8/E ONLY, 19 MAX.)

39
tss8.23/ASM.BI Normal file
View File

@ -0,0 +1,39 @@
$JOB ASSEMBLE TSS/8
/TSS/8 CONFIG PARMS IN DSK:TSCON.PA ??
$MSG MT TSS/8 #1 & #2 ON D1 & D2
.R PIP
*DSK:<DSK: (OS)
.R FOTP
*DTA1:*.TS<DTA1:PARAM.PA,SI.PA /R
*DTA1:*.TS<DTA1:FIP.PA,INIT.PA /R
*DSK:*.TM<DTA1:*.TS,XDDT.BN
*DTA1:*.PA<DTA1:*.TS /R
$MSG TSS/8 #1 (D1) FREE.
.R PAL8
*SI<TSCON.PA,PARAM.TM,SI.TM (WKE)
.R PIP
*SI.TM/D<
*DSK:<DSK: (OS)
.R PAL8
*FIP<TSCON.PA,PARAM.TM,FIP.TM (WKE)
.R PAL8
*INIT<TSCON.PA,PARAM.TM,INIT.TM (WKE)
.R PIP
*INIT.BN<XDDT.TM,INIT.BN /B
*FIP.TM,INIT.TM,XDDT.TM/D<
*DSK:<DSK: (OS)
.R FOTP
*DSK:*.TM<DTA2:TS8.PA,TS8II.PA
$MSG TSS/8 #2 (D2) FREE.
.R PAL8
*TS8<TSCON.PA,PARAM.TM,TS8.TM (WKE)
.R PIP
*TS8.TM/D<
*DSK:<DSK: (OS)
.R PAL8
*TS8II<TSCON.PA,PARAM.TM,TS8II.TM (WKE)
.R PIP
*PARAM.TM,TS8II.TM/D<
*DSK:<DSK: (OS)
$END

43
tss8.23/ASMJOB.BI Normal file
View File

@ -0,0 +1,43 @@
$JOB ASSEMBLE TSS/8
/TSS/8 CONFIG PARMS IN DSK:TSCON.PA ??
$MSG MT TSS/8 #1 & #2 ON D1 & D2
.R PIP
*DSK:<DSK: (OS)
.R FOTP
*DSK:*.TM<DTA1:PARAM.PA,SI.PA
.R PAL8
*SI<TSCON.PA,PARAM.TM,SI.TM (WKE)
.R PIP
*SI.TM/D<
*DSK:<DSK: (OS)
*FIP.TM<DTA1:FIP.PA
.R PAL8
*FIP<TSCON.PA,PARAM.TM,FIP.TM (WKE)
.R PIP
*FIP.TM/D<
*DSK:<DSK: (OS)
.R FOTP
*DSK:<DTA1:INIT.PA,INIT.XD
$MSG TSS/8 #1 (D1) FREE.
.R PAL8
*INIT<TSCON.PA,PARAM.TM,INIT.PA (WKE)
.R PIP
*INIT.PA/D<
*INIT.BN<INIT.XD,INIT.BN /B
*INIT.XD/D<
*DSK:<DSK: (OS)
*TS8.TM<DTA2:TS8.PA
.R PAL8
*TS8<TSCON.PA,PARAM.TM,TS8.TM (WKE)
.R PIP
*TS8.TM/D<
*DSK:<DSK: (OS)
*TS8II.TM<DTA2:TS8II.PA
$MSG TSS/8 #2 (D2) FREE.
.R PAL8
*TS8II<TSCON.PA,PARAM.TM,TS8II.TM (WKE)
.R PIP
*PARAM.TM,TS8II.TM/D<
*DSK:<DSK: (OS)
$END

BIN
tss8.23/BATCH.SV Normal file

Binary file not shown.

325
tss8.23/DOWN.PA Normal file
View File

@ -0,0 +1,325 @@
/// SYSTEM-DOWN PROGRAM
/ MONITORS ALL KEYBOARDS AND RESPONDS
/ TO ANY INPUT WITH A CANNED MESSAGE
/ WRITTEN BY R. B. BARTLEIN - 11/14/74
/
*0
0
JMP I .+1
INTER
*10
XR1, 0
XR2, 0
*20
CHGPTR, 0
CHKPTR, 0
K00PTR, DEVLST+2 /MESSAGE POINTER FOR K00
NEWMSG, EMSG
RUBFLG, 0
EDCHAR, 0
/
TYPE= JMS . /TYPE A CHARACTER
0
TLS
CLA
TSF
JMP .-1
JMP I .-5 /RETURN
/
AAAP0= .-1
///
*200
/
/START OF MAIN PROGRAM - WE MONITOR ALL TERMINALS AND
/PRINT OUR CANNED MESSAGE WHEN ANYONE TYPES A CHAR
START, CLA CLL
CAF /CLEAR EVERYTHING INITIALLY
TAD [CHGMSG-1
DCA I K00PTR /START MESSAGE ON CONSOLE
TLS
ION
TAD [707
DCA DISPLY /SET UP THE AC DISPLAY
LOOP, TAD LPCNT
DCA TMP2 /SET SECOND LOOP COUNTER
TAD DISPLY
RAL
ISZ TMP1
JMP .-1
ISZ TMP2
JMP .-3
DCA DISPLY
TAD [DEVLST
DCA TMP2 /SET THE LIST POINTER
KIELP, TAD I TMP2 /GET AN INPUT DEVICE
SNA /END OF LIST?
JMP LOOP /YES - JUST WAIT
TAD [6005 /NO - FORM THE 'KIE' INSTRUCTION
DCA .+2
CLA IAC
HLT /NOW ENABLE INTERRUPTS
CLA
ISZ TMP2 /INCREMENT THE LIST POINTER
ISZ TMP2
ISZ TMP2
JMP KIELP / AND ENABLE THE REST
/
DISPLY, 707
LPCNT, -4
TMP1, 0
TMP2, 0
/
AAAP1= .-1
///
/INTERRUPT HANDLING - WE JUST CONTINUE TYPING
/IF THIS IS AN OUTPUT INTERRUPT; IF THIS IS AN INPUT
/INTERRUPT, WE START TYPING THE "DOWN" MESSAGE.
INTER, DCA AC
RTR
DCA LINK
TAD [DEVLST
DCA CHKPTR
INTER1, TAD I CHKPTR /GET THE INPUT DEVICE
SNA /END OF LIST?
JMP INTER7 /YES - EXIT ROUTINE
TAD [6001
DCA INTER2 /SET THE INPUT CHECK
ISZ CHKPTR
TAD I CHKPTR /GET THE OUTPUT DEVICE
TAD [6006
DCA INTER5 /SET THE OUTPUT SELECT
ISZ CHKPTR
INTER2, HLT / KSF
JMP INTER3 /NOT INPUT DEVICE
CLA IAC
TAD .-3
DCA .+1
HLT / KCC
TAD I CHKPTR /GET THE MESSAGE INDEX
SZA CLA /ALREADY TYPING MESSAGE?
JMP INTER6 /YES
TAD K00PTR
CIA
TAD CHKPTR
SNA CLA /IS THIS THE CONSOLE (K00)?
TAD [CHGMSG-MSG /YES - ADD THE 'CHANGE' MESSAGE
TAD [MSG-1 /NO - SET THE DOWN-MESSAGE
DCA I CHKPTR /SET THE MESSAGE POINTER
JMP INTER4
INTER3, TAD INTER5 /GET THE OUTPUT SELECT
TAD [-5
DCA .+1
HLT / TSF
JMP INTER6 /NOPE - CONTINUE LOOP
CLA IAC
TAD .-3
DCA .+1
HLT /CLEAR THE FLAG
INTER4, TAD I CHKPTR
SNA /ANY MESSAGE BEING TYPED?
JMP INTER6 /NOPE - JUST EXIT
IAC
DCA I CHKPTR /YES - INCREMENT THE ADDRESS
TAD I CHKPTR
DCA INTEMP /SET THE MESSAGE ADDRESS
TAD I INTEMP
SZA /END OF MESSAGE?
JMP INTER5 /NO - TYPE THE CHARACTER
DCA I CHKPTR /YES - CLEAR THE POINTER
JMP INTER6 / AND EXIT
INTER5, HLT /TYPE THE CHARACTER
CLA CLL
INTER6, ISZ CHKPTR
SRQ /ANY MORE INTERRUPTS?
JMP INTER7 /NO - JUST EXIT
JMP INTER1 /YES - CONTINUE CHECKING
/
/NOW WE RELOAD THE AC & LINK AND RETURN TO OUR MAINLINE.
INTER7, CLA CLL
TAD LINK
CLL RTL
CLA
TAD AC
ION
JMP I 0 /EXIT INTERRUPT HANDLER
/
AC, 0
LINK, 0
INTEMP, 0
///
*1000
/
/WE ARE STARTED HERE TO CHANGE THE "DOWN MESSAGE"
CHANGE, CLA CLL
DCA EDCHAR
TAD ENDMSG
DCA XR1
TAD I XR1 /TYPE "END WITH ALT-MODE"
SNA
JMP .+3
TYPE
JMP .-4
TAD NEWMSG /INITIALIZE THE MESSAGE POINTER
DCA CHGPTR
TAD [MSG+2
DCA XR1 /SET POINTER FOR CHARACTER SEARCH
DCA RUBFLG
CHG2, KSF /NOW WAIT FOR A CHARACTER
JMP .-1
KRB
AND [177
TAD [200
TAD [-377
SNA /RUBOUT?
JMP RUBOUT /YES
DCA XR2 /NO - SAVE OUR CHAR A MOMENT
ISZ RUBFLG /JUST FINISH RUBOUTS?
JMP .+3 /NO
TAD ["\
TYPE /YES - CLOSE THE BLOCK
DCA RUBFLG / AND CLEAR THE FLAG
TAD XR2
TAD [377-375
SNA /ALT MODE?
JMP CHGEND /YES
TAD [375-376
SNA /ASR 35 ALT MODE?
JMP CHGEND /YES
TAD [376-233
SNA /ESCAPE?
JMP CHGEND /YES
TAD [233-232
SNA /CTRL/Z - EDIT COMMAND?
JMP EDIT /YES
TAD [232-214
SNA /CTRL/L - CONTINUE SEARCH?
JMP EDITC /YES
TAD [214
DCA I CHGPTR /NOW STORE THE CHARACTER
TAD I CHGPTR
TYPE /NOW ECHO THE CHARACTER
ISZ CHGPTR
JMP CHG2 /GET THE NEXT CHARACTER
JMP CHANGE /RAN OUT OF ROOM - RESTART
/
/HERE WE HANDLE THE RUBOUT CONTROL
RUBOUT, TAD NEWMSG
CIA
TAD CHGPTR
SNA CLA /ANYTHING TO RUB OUT?
JMP CHG2 /NO - IGNORE THE RUBOUT
ISZ RUBFLG /PART OF A STRING?
SKP /NOT YET
JMP .+3
TAD ["\
TYPE /YES - TYPE "\"
CLA CMA
DCA RUBFLG / AND SET THE FLAG
CLA CMA
TAD CHGPTR
DCA CHGPTR /BACK UP THE POINTER
TAD I CHGPTR
TYPE / AND ECHO THE CHARACTER
JMP CHG2 /NOW GET THE NEXT CHARACTER
/
/HERE WE TERMINATE THE NEW MESSAGE AND START THE
/MAIN PROGRAM.
CHGEND, DCA I CHGPTR /STORE A ZERO
TAD [MSG+2
DCA XR1 /SET THE DESTINATION POINTER
CLA CMA
TAD NEWMSG
DCA XR2 / AND THE NEW MSG POINTER
TAD I XR2 /GET A CHARACTER
SNA /END OF MESSAGE?
JMP CHGSET /YES - SET FOR THE NEXT CHANGE
DCA I XR1
JMP .-4 /NO - MOVE THE NEXT CHARACTER
CHGSET, DCA I XR1 /STORE A ZERO
DCA I XR1
TAD XR1 /GET THE END ADDRESS
DCA NEWMSG / AND SAVE IT
JMP I [200 /THEN START THE PROGRAM
/
/WE COME HERE TO SEARCH THE PREVIOUS MESSAGE
/AND COPY IT TO THE NEW MESSAGE.
EDIT, TAD ["^
TYPE /TYPE A PROMPT
KSF
JMP .-1
KRB /READ THE SEARCH CHAR
AND [177
SNA /ZERO?
JMP .-5 /YES - THAT'S NOT ALLOWED
TAD [200
CIA
DCA EDCHAR
/
/WE COME HERE TO CONTINUE A SINGLE CHARACTER SEARCH.
EDITC, TAD EDCHAR
SNA CLA /IS THERE A SEARCH CHAR?
JMP CHG2 /NO - IGNORE THE CTRL/L
EDIT1, TAD I XR1 /GET THE NEXT MESSAGE CHARACTER
SNA /END OF MESSAGE?
JMP EDIT2 /YES
DCA I CHGPTR /NO - STORE IT
TAD I CHGPTR
TYPE / AND ECHO IT
TAD I CHGPTR
ISZ CHGPTR /INCREMENT THE MESSAGE POINTER
SKP
JMP CHANGE /OUT OF ROOM - RESTART
TAD EDCHAR
SZA CLA /IS IT OUR SEARCH CHAR?
JMP EDIT1 /NO - KEEP GOING
JMP CHG2 /YES - STOP HERE
/
/WE REACHED THE END OF THE OLD MESSAGE
EDIT2, CLA CMA
TAD XR1 /RESET THE POINTER
DCA XR1 / TO POINT TO THE END
JMP CHG2 / AND TERMINATE THE SEARCH
/
AAACHG= .-1
/
ENDMSG, .;215;212;212;"E;"N;"D;" ;"W;"I;"T;"H
" ;"A;"L;"T;" ;"M;"O;"D;"E;215;212;0
///
DEVLST, 030; 040; 0 /K00
400; 410; 0
420; 430; 0 /K02
440; 450; 0
460; 470; 0 /K04
340; 350; 0
110; 120; 0 /K06
300; 310; 0
320; 330; 0 /K10
500; 510; 0
520; 530; 0 /K12
540; 550; 0
560; 570; 0 /K14
700; 710; 0
360; 370; 0 /K16
720; 730; 0
740; 750; 0 /K20
060; 070; 0
140; 150; 0
160; 170; 0 /K23
0 /END OF LIST
/
CHGMSG, 215;212;212;"S;"T;"O;"P;" ;"C;"P;"U;" ;"A;"N;"D
" ;"S;"T;"A;"R;"T;" ;"A;"T;" ;"L;"O;"C;"A;"T;"I;"O;"N
" ;"1;"0;"0;"0;" ;"T;"O;" ;"C;"H;"A;"N;"G;"E
" ;"M;"E;"S;"S;"A;"G;"E;".
MSG, 215;212;212;"S;"Y;"S;"T;"E;"M;" ;"I;"S
" ;"D;"O;"W;"N;";;" ;"P;"L;"E;"A;"S;"E
" ;"H;"A;"N;"G;" ;"U;"P;" ;"N;"O;"W;215;212
"A;"N;"D;" ;"C;"A;"L;"L;" ;"B;"A;"C;"K
" ;"L;"A;"T;"E;"R;".;215;212
0
EMSG= .
/
AAAEND= .-1
/// $$$
$$$

321
tss8.23/FD.PA Normal file
View File

@ -0,0 +1,321 @@
/// HANDLER FOR THE ADC FLOPPY DISC
/
IFNDEF FDN <FDN= 1>
/
IDTRK= 20 /FIXED LOCATION FOR 'READ SECTOR I.D.'
IDSECT= 21
/
X= 20 /IOT DIGIT FOR FIRST CONTROLLER
Y= 30
/
CLRC= 6700+X /CLEAR CONTROLLER
RTSR= 6701+X /READ STATUS REGISTER
RTCA= 6703+X /READ CURRENT ADDRESS REGISTER
DKGO= 6704+X /START OPERATION
LTCR= 6705+X /LOAD COMMAND REGISTER
LCAR= 6706+X /LOAD CURRENT ADDRESS REGISTER
LDTA= 6707+X /LOAD THE DATA REGISTER
SKRY= 6700+Y /SKIP ON READY
SKER= 6701+Y /SKIP ON ERROR
SKCE= 6702+Y /SKIP ON CRC ERROR
/
*0
-1 /ONE HANDLER
IFZERO FDN <DEVICE FDK0; DEVICE FD0>
IFZERO FDN-1 <DEVICE FDK1; DEVICE FD1>
IFZERO FDN-2 <DEVICE FDK2; DEVICE FD2>
IFZERO FDN-3 <DEVICE FDK3; DEVICE FD3>
IFZERO FDN-4 <DEVICE FDK4; DEVICE FD4>
IFZERO FDN-5 <DEVICE FDK5; DEVICE FD5>
IFZERO FDN-6 <DEVICE FDK6; DEVICE FD6>
IFZERO FDN-7 <DEVICE FDK7; DEVICE FD7>
4400; FDK0-200+4000; ZBLOCK 2
///
*200
/
/SUBROUTINE TO SELECT THE DATA-BUFFER'S DATA FIELD
FDUDF, 0
HLT
JMP I FDUDF
/
FDPFIX, -74-1
FD37, 37
FD70, 70
FDRIVE, FDN+200 /SET 'HEAD LOAD' BIT ALSO
M1898D, -3552 /-1898
/
/SUBROUTINE TO INITIALIZE STUFF
FDINIT, HLT
CLA CLL CMA RAL
TAD FDEXIT
DCA FDIN2 /SET CDF BACK TO CALLING FIELD
FD6201, CDF
TAD FDPTR1
TAD FDINIT /MAKE OUR POINTER ABSOLUTE
DCA FDPTR1
FDIN1, TAD I FDPTR1 /GET RELATIVE ADDRESS
TAD FDINIT / AND ADD THE BASE ADDRESS
FDBUF, DCA I FDPTR1 /STORE THE ABSOLUTE POINTER
FDCMD, ISZ FDPTR1
FDFUNC, ISZ FDCNT1
FDPGCT, JMP FDIN1
FDPKMK, TAD .+3 /FIX SO WE ONLY INITIALIZE ONCE
FDREC, DCA FDINIT+1
FDIN2, HLT /SET CALLING FIELD AGAIN
FDSECT, JMP I FDINIT
/
FDK0, 01 /HANDLER VERSION NUMBER
FDM200, 7600 /ALSO 'CLA'
RDF /GET THE CALLING FIELD
TAD FD6203
DCA FDEXIT / AND SET THE EXIT 'CIF CDF'
JMS FDINIT /INITIALIZE THE HANDLER
FDBASE, TAD I FDK0 /GET THE FUNCTION CODE
DCA FDFUNC
ISZ FDK0
TAD FDFUNC
AND FD70 /GET THE DATA FIELD SELECT
BSW
TAD FDRIVE / ADD IN THE DRIVE NUMBER
DCA FDCMD /SAVE AS THE COMMAND BASE
TAD FDFUNC
AND FD70 /GET THE BUFFER DATA FIELD AGAIN
TAD FD6201 / AND BUILD A 'CDF' TO IT
DCA FDUDF+1
TAD I FDK0 /GET THE BUFFER ADDRESS
DCA FDBUF
ISZ FDK0
TAD I FDK0 /GET THE OS/8 BLOCK NUMBER
ISZ FDK0
FD6203, CIF CDF
CLL RAL /CONVERT IT TO A RECORD NUMBER
SPA SZL /REASONABLE RECORD NUMBER?
JMS FATAL /NO - FATAL ERROR
DCA FDREC /YES - SAVE THE RECORD NUMBER
TAD FDFUNC
BSW
AND FD37 /GET THE RECORD COUNT
CMA
DCA FDPGCT
JMP FDEPG /DO ZERO PAGES IF ZERO SPECIFIED
FDPGLP, TAD FDREC
CLL RAL
SPA SZL /LEGAL?
JMS FATAL /NO
DCA FDSECT /SECTOR NUMBER = RECORD * 2
TAD FDSECT
TAD M1898D
SMA CLA /LEGAL SECTOR NUMBER?
JMS FATAL /NO - TAKE ERROR EXIT
TAD FDFUNC
SMA CLA /READ OR WRITE?
JMP FDKRD /READ
/
/WRITE A PAGE OUT TO DISC
TAD FDSECT
JMS I FDSTRT /FIRST A SECTOR OF FULL BYTES
20
JMS FDPACK /THEN OVERLAY THE PARTIAL SECTOR
-1
TAD FDSECT
IAC
JMS I FDSTRT / AND WRITE BACK THE PARTIAL SECTOR
20
JMP .+5
/
/READ A PAGE FROM THE DISC.
FDKRD, TAD FDSECT
IAC
JMS I FDSTRT /FIRST READ THE PARTIAL SECTOR
10
JMS FDPACK / AND SHIFT THE HALF-BYTES UP
+1
TAD FDSECT
JMS I FDOVER /THEN OVERLAY IT WITH THE FULL BYTES
CDF
RTCA /NOW UPDATE THE BUFFER ADDRESS
DCA FDBUF
ISZ FDREC / AND THE RECORD NUMBER
FDEPG, ISZ FDPGCT
JMP FDPGLP / AND GO TRANSFER ANOTHER PAGE
ISZ FDK0 /OTHERWISE WE'RE DONE
FDEXIT, HLT
JMP I FDK0 / AND RETURN
/
/SUBROUTINE TO PACK THE PARTIAL BYTES
FDPACK, HLT
JMS I FDWAIT /MAKE SURE THE DISC IS DONE
TAD FDBUF
DCA FDPTR1
TAD FDM200 /SET THE WORD COUNT
DCA FDCNT1
TAD I FDPACK /GET THE READ/WRITE SWITCH
ISZ FDPACK
SPA CLA /READ-PACK OR WRITE-PACK?
TAD FDPFIX /WRITE - SET MASK = 74
CMA /READ - SET MASK = 7777
DCA FDPKMK
JMS FDUDF /CHANGE TO BUFFER'S DATA FIELD
FDPK1, TAD I FDPTR1 /GET THE WORD
BSW /SWAP HALVES
AND FDPKMK / AND MAYBE AND OFF PART
DCA I FDPTR1 /THEN STORE BACK THE WORD
ISZ FDPTR1
ISZ FDCNT1 /DECREMENT COUNTER
JMP FDPK1 / AND CONTINUE
CDF
JMP I FDPACK
/
FATAL,
FDCNT1, FDPTR1-FDEREL /LENGTH OF RELOCATION LIST
CLA CLL CMA /YES - INDICATE FATAL ERROR
JMP FDEXIT / AND EXIT
/
IFNZRO 400-4-.&4000 <GLITCH>
*400-4 /PART OF LIST BELONGS IN SECOND PAGE
FDPTR1, .+1-FDBASE /USED DURING INITIALIZATION
FDOVER, FDOVLY-FDBASE
FDSTRT, FDST-FDBASE
FDWAIT, FDWT-FDBASE
FDUDFA, FDUDF-FDBASE
FDCMDA, FDCMD-FDBASE
FDBUFA, FDBUF-FDBASE
FDQUIT, FATAL-FDBASE
FDEREL= .-1 /END OF RELOCATION LIST
///
/
/SUBROUTINE TO OVERLAY PART OF THE BUFFER WITH A SECTOR.
FDOVLY, 0
DCA SECT
TAD I FDBUFA
DCA FDPTR2 /SET THE OVERLAY POINTER
TAD M200
DCA FDCNT2 / AND THE WORD COUNTER
TAD SECT
JMS FDST /START THE TRANSFER
10
SKER /ANY ERROR NOW?
SKP
JMS I FDQUIT /YES - TAKE FATAL ERROR EXIT
JMS I FDUDFA /CHANGE TO USER'S DATA FIELD
FDOV1, TAD I FDPTR2 /GET THE WORD
MQL / AND SAVE IT IN THE MQ
FDOV2, RTCA /NOW GET THE CURRENT ADDRESS
CIA
TAD FDPTR2
SMA CLA /PAST OUR WORD YET?
JMP FDOV2 /NO - WAIT FOR IT
TAD I FDPTR2 /YES - GET THE NEW VALUE
MQA / AND 'OR' IN THE ORIGINAL
DCA I FDPTR2 /THEN STORE THE FINAL RESULT
ISZ FDPTR2
ISZ FDCNT2 /DECREMENT THE COUNTER
JMP FDOV1 / AND CONTINUE
JMS FDWT /THEN WAIT FOR I/O COMPLETION
JMP I FDOVLY / AND RETURN
/
/SUBROUTINE TO START A DISC TRANSFER.
FDST, 0
DCA SECT /SAVE THE SECTOR NUMBER
CLA IAC
DCA TRK
TAD SECT
FDST1, TAD M26D /NOW DIVIDE THE SECTOR BY 26
SPA
JMP .+3
ISZ TRK / TO GET THE TRACK NUMBER
JMP FDST1
TAD K27D /SECTOR = REMAINDER + 1
DCA SECT
TAD M26D
DCA TKERR /SET ERROR LIMITS
TAD M200
DCA SCERR
TAD IDTRK /SAVE THE FIELD ZERO LOCATIONS
DCA SAVIDT
TAD IDSECT
DCA SAVIDS
FDST2, TAD I FDCMDA
LTCR /READ SECTOR I.D.
DKGO
SKRY /WAIT FOR 'READY'
JMP .-1
RTSR
AND FDSMSK
SZA CLA /ANY FATAL ERRORS?
JMS I FDQUIT /YES - DIE
SKCE /CRC ERROR?
JMP FDST3 /NO
ISZ TKERR /YES - COUNT AS TRACK ERROR
JMP FDST2 / AND TRY AGAIN
JMS I FDQUIT /OTHERWISE ERROR
FDST3, TAD IDTRK
CIA
TAD TRK
SNA /RIGHT TRACK?
JMP FDST4 /YES - CHECK SECTOR NUMBER
LDTA /NO LOAD THE DIFFERENCE
TAD I FDCMDA
TAD FDSEEK
LTCR /SET THE MOVE HEAD FUNCTION
DKGO
JMS FDWT /WAIT FOR COMPLETION
ISZ TKERR /COUNT THIS AS A TRACK-ERROR
JMP FDST2 / AND CHECK AGAIN
JMS I FDQUIT
FDST4, TAD IDSECT
CIA
TAD SECT
SNA CLA /ARE WE AT THE RIGHT SECTOR?
JMP FDST5 /YES
ISZ SCERR /NO - COUNT OUR TRIES
JMP FDST2 / AND TRY AGAIN
JMS I FDQUIT /ERROR LIMIT REACHED
FDST5, TAD I FDBUFA
LCAR /SET THE BUFFER ADDRESS
TAD K373
LDTA /ASSUME SECTOR GOOD
TAD TRK
TAD M44D
SMA CLA /TRACK NUMBER .GE. 44?
TAD K40 /YES - SET FLAG TO USE LOWER WRITE CURRENT
TAD I FDST /GET THE FUNCTION CODE
ISZ FDST / AND INCREMENT THE RETURN
TAD I FDCMDA /GET THE REST OF THE COMMAND
LTCR
TAD SAVIDT /NOW RESTORE THE PAGE ZERO STUFF
DCA IDTRK
TAD SAVIDS
DCA IDSECT
DKGO /NOW START THE TRANSFER
JMP I FDST / AND RETURN
/
K40, 40
K373, 373
M26D, -32
M44D, -54
M200, -200
K27D, 33
FDSMSK, 2235
TRK, 0
SECT, 0
TKERR, 0
SCERR, 0
FDPTR2, 0
FDCNT2, 0
FDSEEK, 30 /MOVE HEAD
SAVIDS, 0
SAVIDT, 0
/
/SUBROUTINE TO WAIT FOR DISC COMPLETION.
FDWT, 0
SKRY
JMP .-1
SKER /ANY ERROR BITS?
JMP I FDWT /NO - JUST RETURN
JMS I FDQUIT /YES - TAKE FATAL ERROR EXIT
/
AAAFD= .-1
/// $$$
$$$

1
tss8.23/FIP.CM Normal file
View File

@ -0,0 +1 @@
FIP<UWM,PARAM,FIP (WKE)

3200
tss8.23/FIP.PA Normal file

File diff suppressed because it is too large Load Diff

1
tss8.23/INIT.CM Normal file
View File

@ -0,0 +1 @@
INIT<UWM,PARAM,INIT (WKE)

2957
tss8.23/INIT.PA Normal file

File diff suppressed because it is too large Load Diff

2956
tss8.23/INIT.PA.1 Normal file

File diff suppressed because it is too large Load Diff

BIN
tss8.23/INIT.XD Normal file

Binary file not shown.

BIN
tss8.23/INIT.XD.bin Normal file

Binary file not shown.

43
tss8.23/Makefile Normal file
View File

@ -0,0 +1,43 @@
MACRO = ../utils/macro/macro8x
SHOWBIN = ../utils/showbin
all: init.bin fip.bin si.bin ts8.bin ts8ii.bin INIT.XD.bin
clean:
rm -f *.bin *.prm *.lst *.err *.mem *.dump
init.bin: INIT.PA
rm -f init.err init.lst
$(MACRO) -o init UWM.PA PARAM.PA INIT.PA
fip.bin: FIP.PA
rm -f fip.err fip.lst
$(MACRO) -o fip UWM.PA PARAM.PA FIP.PA
si.bin: SI.PA
rm -f si.err si.lst
$(MACRO) -o si UWM.PA PARAM.PA SI.PA
ts8.bin: TS8.PA
rm -f ts8.err ts8.lst
$(MACRO) -o ts8 UWM.PA PARAM.PA TS8.PA
ts8ii.bin: TS8II.PA
rm -f ts8ii.err ts8ii.lst
$(MACRO) -o ts8ii UWM.PA PARAM.PA TS8II.PA
#it's a bin format papertape encoded as ascii bytes
#but we dumped it as binary
INIT.XD.bin: INIT.XD
../tapes/tools/asc <INIT.XD >INIT.XD.bin
xxx:
$(SHOWBIN) fip.bin >fip.src.mem
$(SHOWBIN) init.bin >init.src.mem
$(SHOWBIN) si.bin >si.src.mem
$(SHOWBIN) ts8.bin >ts8.src.mem
$(SHOWBIN) ts8ii.bin >ts8ii.src.mem
# sdiff fip.rf.mem fip.src.mem
# sdiff init.rf.mem init.src.mem
# sdiff si.rf.mem si.src.mem

583
tss8.23/PARAM.PA Normal file
View File

@ -0,0 +1,583 @@
/PARAMETERS - UWM VERSION 23
/
/COPYRIGHT 1971 DIGITAL EQUIPMENT CORPORATION
/ MAYNARD, MASSACHUSETTS
/
/
VERNUM= 27 /SYSTEM VERSION NUMBER
/
STOMIN= 5 /MINIMUM # FREE STORAGE BLOCKS FOR NEW JOB
IFZERO RK8E <
IFZERO RF08-40 <
DSKSIZ= RS08^10
>
IFZERO RF08 <
DSKSIZ= RS08^100 /# OF 4K DISC TRACKS
>
>
IFNZRO RK8E <
DSKSIZ= 400 /# OF 4K DISC TRACKS
>
CLOCKR= 62 /50 MILLISECONDS
TICMIN= 2260 /1200
INCLK2= 0645 /1,728,000 TICKS PER DAY
INCLK1= 7000
TICSPS= 24 /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
WRDSEG= 400 /#WORDS PER DISC SEGMENT
/IOT DEFINITIONS
IFZERO D680-2 <
TTINCR= 6401 /INCREMENT LINE REGISTER
TTI= 6402 /TELETYPE INPUT COMMAND
TTO= 6404 /TELETYPE OUTPUT COMMAND
TTCL= 6411 /CLEAR LINE REGISTER
TTSL= 6412 /SET LINE REGISTER, CLEAR AC
TTRL= 6414 /READ LINE REGISTER
T8SKP= 6421 /SKIP ON CLOCK FLAG
T8OFF= 6422 /TURN CLOCK OFF
TT8ON= 6424 /TURN CLOCK ON
TTRINC= 6461 /INCREMENT THE R REG.
TT8CLR= 6473 /CLEAR AND LOAD THE R REG.
>
/EXTENDED MEMORY
CDF= 6201 /CHANGE TO DATA FIELD 0
CIF= 6202 /CHANGE TO INSTRUCTION FIELD 0
CIOT= 6204 /CLEAR USER IOT
RDF= 6214 /READ DATA FIELD
RIF= 6224 /READ INSTRUCTION FIELD
RIB= 6234 /READ INTERRUPT BUFFER
RMF= 6244 /RESTORE MEMORY FIELD
SKPIOT= 6254 /SKIP ON USER IOT
UFF= 6264 /USER FLAG OFF
UFN= 6274 /USER FLAG ON
/EAE
IFZERO EAE-20 <
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 <
SAM= 7453 /SUBTRACT AC FROM MQ
SKB= 7671 /SKIP IF MODE B (MESSES UP AC AND MQ)
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
/SOMEDAY FIX 'WHERE' COMMAND TO PRINT MODE & GT
/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
LPC= 6666 /TRANSMIT CHAR & CLEAR FLAG
LCP= 6667 /CLEAR PROGRAM INTERRUPT
/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 ADDRESS
/DISC (RF08)
DIML= 6615
DIMA= 6616
DXAL= 6643
IFNZRO RK8E <
DCLR= 6742 /CLEAR THE CONTROLLER
DLAG= 6743 /LOAD DISC ADDRESS & GO
DLDC= 6746 /LOAD THE COMMAND REGISTER
DRST= 6745 /READ THE STATUS
DSKP= 6741 /SKIP IF DONE OR ERROR
DLCA= 6744 /LOAD CURRENT CORE ADDRESS
>
/
/STANDARD DECTAPE CONTROLLER IOTS
DTRA= 6761 /READ A-REGISTER
DTCA= 6762 /CLEAR A-REGISTER
DTXA= 6764 /XOR INTO A-REGISTER
DTSF= 6771 /SKIP ON DECTAPE FLAG
DTRB= 6772 /READ STATUS-REGISTER (B)
DTLB= 6774 /LOAD STATUS-REGISTER (B)
IFZERO CPU-3 <
CLAB= 6133
CLLR= 6132
CLEN= 6134
CLSA= 6135
CLSK= 6131
MTPF= 6113
MINT= 6115
MTON= 6117
MKTF= 6123
MINS= 6125
MTRS= 6127
MKSF= 6111
MKCC= 6112
MKRS= 6114
MKRB= 6116
MTSF= 6121
MTCF= 6122
MTPC= 6124
MTLS= 6126
>
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
CAF= 6007 /CLEAR ALL FLAGS
>
IFZERO D689-4 <
/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
>
/TSS/8 IOTS
SEGS= 406 /RETURN NUMBER OF FREE SEGMENTS ON DISC
ASD= 440 /ASSIGN DEVICE
REL= 442 /RELEASE DEVICE
REN= 600 /RENAME FILE
OPEN= 6601 /OPEN FILE
CLOS= 602 /CLOSE
RFILE= 6603 /READ FILE
PROT= 604 /PROTECT
WFILE= 6605 /WRITE FILE
XOPEN= 6606 /OPEN FILE WITH EXCLUSIVE USE
CPASS= 607 /CHANGE A USER'S PASSWORD
CRF= 610 /CREATE
EXT= 611 /EXTEND
RED= 612 /REDUCE
FINF= 6613 /FILE INFORMATION
LIN= 614 /LOGIN
LOUT= 615 /LOGOUT
BCLR= 620 /CLEAR MFD BILLING INFORMATION
/DEVICE DATA BLOCK
DDBSTS= 0 /WORD 1. STATUS AND UNIT NUMBER
DXON= 2000 /XOFF SENT FLAG
DSI= 1000 /DESTINATION IS S.I. FLAG
DXOUT= 400 /BIT TO CAUSE 'XOFF' TO GO OUT
DUPL= 200 /CONSOLE IN DUPLEX MODE
SICOM= 100 /COMMAND WAITING
CTRLC= 40 /USER TYPED CTRL/C
/DEVICE UNIT NUMBER IS IN BITS 6-11
DDBJN= 1 /WORD 2. JOB NUMBER IN 7-11
DDBBRK= 2 /BREAK MASK
SIBRKM= 204 /SI BREAK MASK
DDBTIM= 3 /TIME THAT DEVICE WAS ASSIGNED
DDBINP= 4 /BUFFER FILL POINTER
DDBINC= 5 /BUFFER FILL COUNT
DDBOUP= 6 /BUFFER EMPTY POINTER
DDBOUC= 7 /BUFFER EMPTY COUNT
/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
JSHLT= 400 /PROGRAM EXECUTED 'HLT'
JSPRIV= 200 /LIBRARY PROGRAM (HAS PRIVILEGES)
JSIOT= 100 /NON-RESIDENT IOT
JSIOTC= 40 /COPY IOT RESULT TO USER
JSEXON= 20 /EXECUTE ONLY
/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 /DELIMITER SEEN
JSTEL= 20 /OUTPUT BUFFER NOT FULL
JSPTR= 10 /CHARACTER IN READER BUFFER
JSPTP= 4 /PUNCH BUFFER IS NOT FULL
JSERR= 2 /SYSTEM ERROR DETECTED
JSWAIT= 1 /JOB NOT IN WAIT STATE
STR2= 1 /TC01&1!PUNCH&1!PLOTTER&1!LPT&1!CDR&1
JSPLT= 1000 /PLOTTER DONE
JSCDR= 400 /CHARACTER IN CDR BUFFER
JSCRNR= 200 /CDR NOT READY
JSCREF= 100 /CDR END FILE
JSDTC= 4 /DECTAPE CONTROLLER FLAG
JSDTE= 2 /DT ERROR FLAG
JSDTF= 1 /DT DONE FLAG
JOBWMK= 2+STR2 /WAIT MASK
JOBSRA= JOBWMK+1+STR2 /JOB RESTART ADDRESS
JOBERR= JOBSRA+1 /JOB ERROR RESTART ADDRESS
JOBLNK= JOBERR+1 /IOT LINKAGE
JOBSWR= JOBLNK+1 /SWITCH REGISTER
JOBREG= JOBSWR+1 /PC, AC, & LINK (W/MODE, GT, & SC)
JOBEAE= JOBREG+3 /MQ REGISTER
JOBACT= JOBEAE+1 /USER'S ACCOUNT #
JOBRTM= JOBACT+1 /LOW ORDER RUN TIME
JOBRTH= JOBRTM+1 /HIGH ORDER RUN TIME
JOBF0= JOBRTH+1 /POINTER TO FILE 0 CONTROL
JOBF1= JOBF0+1 /POINTER TO FILE 1 CONTROL
JOBF2= JOBF1+1 /POINTER TO FILE 2 CONTROL
JOBF3= JOBF2+1 /POINTER TO FILE 3 CONTROL
JOBSTB= JOBF3+1 /DECTAPE STATUS REGISTER B
/TUNING PARAMETERS
MAXBUF= 10 /MAXIMUM PERMITTED # OF OUTPUT BUFFERS
MINBUF= 3 /RESTART JOB WHEN ONLY MINBUF BUFFERS ARE STILL FULL
/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
FSWP= 4000 /SWAP REQUEST
LOCK= 2000 /LOCK IN CORE
NOTRUN= 1000 /HAS NOT BEEN SCHEDULED TO RUN
FIP= 400 /FILE PHANTOM (NOTE: FIP HAS BEEN ASSUMED EQUAL TO SEGISZ)
SI= 200 /SYSTEM COMMAND INTERPRETER PHANTOM
FIX= 100 /JUST FINISHED DISC TRANSFER
/BITS 7-11 CONTAIN THE JOB #
/FIP TABLE DEFINITIONS
SATSIZ= 530
ENTABL= 5600
UTABLE= ENTABL+JOBMAX+JOBMAX+JOBMAX+JOBMAX+JOBMAX+JOBMAX+JOBMAX+JOBMAX
RTABLE= UTABLE+JOBMAX+JOBMAX+JOBMAX+JOBMAX
SIDATA=20 /SYSTEM INTERPRETER DATA
*SIDATA
COMPTR, . /POINTER TO LAST DEVTBL ENTRY SCANNED. INITIALIZE TO DEVTBL-1
SIBUF, . /BUFFER STATE
SICNT, .
COMDSP, . /FIP RETURN DISPATCH
SIFLG, . /COMMAND FLAGS
SICHAR, . /SAVE LAST CHAR FROM COMMAND SCAN
SIREG, . /USER AC, LINK, PC
.
.
TTCHAR, . /TTY CHARACTER
CONSTANTS=SIDATA+12
*CONSTANTS
C0002, 2
C0003, 3
C0004, 4
C0007, 7
C0037, 37
C0100, 100
C1000, 1000
C7770, 7770
JOBCON=CONSTANTS+11 /JOB CONTROL
*JOBCON
JOBTIM, . /-#TICKS REMAINING TO RUN
JOBTBA, JOBTBL /JOB TABLE ADDRESS
FRSTOR=JOBCON+3
*FRSTOR
FREE, . /POINTER TO HEAD OF FREE STORAGE
FRECNT, . /# FREE BLOCKS AVAILABLE
TIMDAT= FRSTOR+2 /CLOCK AND DATE
*TIMDAT
/CLOCK
CLK2, .
CLK1, .
SCHDAT=TIMDAT+2
*SCHDAT /SCHEDULING DATA
COMCNT, . /NUMBER OF COMMANDS WAITING EXECUTION
SQREQ, . /SWAP REQUEST FLAG
FINISH, . /+(I)-(O) FIELD OF JOB BEING SWAPPED
FIT, . /JOB # TO BE SWAPPED IN
FORCE, . /FIELD TO BE SWAPPED OUT
DATEND= 60 /END OF FIELD 0 PAGE 0 DATA
FIPDAT=156 /DATA REFERENCED BY FIP
*FIPDAT
C0400, 400
IFNZRO WRDSEG-400 <GLITCH>
SEGSIZ= C0400 /WRDSEG
FIBASE, SWDEX+JOBMAX /BASE ADDRESS OF ALLOCATABLE DISC STORAGE
JOB, . /# OF CURRENT JOB
JOBDAT, . /ADDRESS OF CURRENT JOB DATA LIST. MUST RESIDE IN DATA FIELD.
CORTBA, CORTBL-1 /CORE ALLOCATION TABLE
DEVTBA, DEVTBL /DEVICE TABLE
DSUTBA, DSUTBL /USER DISC REQUEST QUEUE
DSBUSY, . /DISC BUSY COUNT
/THE DATE IS KEPT AS A 12 BIT NUMBER IN THE FORMAT
/DATE=((YEAR-1974)*12+(MONTH-1))*31+DAY-1
DATE, .
FISUBR=FIPDAT+11 /INST FIELD INDEPENDENT SUBROUTINES
*FISUBR
FISUBL=400
BLT0= FISUBL+1200
BLTA, BLT0 /BLOCK TRANSFER
BLT= JMS I Z BLTA
CORSRA, CORSRC
CORE= JMS I CORSRA
GETBA, GETB
GETBLK= JMS I GETBA
GETDBA, GETDB0 /GET A DATA BLOCK
GETDDB= JMS I GETDBA
TOFA, TOF /FETCH CHARACTER
FETCH= JMS I Z TOFA
GETJT0, GETJTB /GET JOB DATA TABLE ADDRESS
GETJTA= JMS I Z GETJT0
GIRSCA, GIRSC /STORE CHARACTER IN BUFFER
STORE= JMS I Z GIRSCA
RETBA, RETB /RETURN BLOCK TO FREE STORAGE
RETBLK= JMS I Z RETBA
WAITA, WSCHED
WAIT= JMP I WAITA
/TABLES
IFNZRO CPU-3 <
DATA= 7100 /START OF FIELD 0 TABLES AND BUFFERS
>
IFZERO CPU-3 <
DATA= 7200 /IF DC02 THERE LEAVE ROOM FOR THE CODE
>
CORTBL= DATA /CORE ASSIGNMENT TABLE
L2QTB= CORTBL+7
IFZERO D680-2 <
T8OBF= L2QTB+20 /TTY CHAR OUT BUFFER 1. # LINES
T8OBF2= T8OBF+NULINE /TTY CHAR OUT BUFFER 2. # LINES
T8IBF= T8OBF2+NULINE /TTY CHAR IN BUFFER. 2*# LINES
T8IN= T8IBF+NULINE+NULINE /TTI LIST. 4*#LINES+1
TYBEND= T8IN+NULINE+NULINE+NULINE+NULINE+1
>
IFZERO D680 <
TIBUFF= L2QTB+20 /TTY INPUT BUFFER. # LINES
TOBUFF= TIBUFF+NULINE+1 /TTY OUTPUT BUFFER. # LINES
TIDEV= TOBUFF+NULINE+1 /DEVICE CODES (INPUT)
IFNZRO CPU-3 <
TODEV= TIDEV+NULINE+1 /DEVICE CODES (OUTPUT)
TYBEND= TODEV+NULINE+1
>
IFZERO CPU-3 <
TODEV= TIDEV+1
TYBEND= TODEV+1
>
>
IFZERO TC01 <DTASIZ=0> /SIZE OF DTA CODE+BUFFERS
IFZERO TC01-1 <DTASIZ=1400>
IFZERO D689 <D689SIZ=0> /SIZE OF 689AG CODE
IFZERO D689-4 <D689SIZ=200>
PTRSIZ= 200
PTPSIZ= 200
PTPBUF= 200 /START OF DEVICE BUFFERS
PTRBUF= PTPBUF+PTPSIZ
DTBUF1= PTRBUF+PTRSIZ
DTBUF2= DTBUF1+201
DATFLD=6211 /MONITOR DATA FIELD SELECT
IFZERO EAE-20 <MQREG=1>
IFZERO EAE <IFZERO CPU-2 <MQREG=1>
IFNZRO CPU-2 <MQREG=0>>
/SUPER CRITICAL LOCATIONS
/THESE LOCATIONS ARE USED TO LINK TS8 AND TS8II
/IT MAY BE NECESSARY TO ADJUST THEM ACCORDINGLY
/DEFINED IN TS8:
BLT0= 1600
CORSRC= 1302 /SEARCH CORE TABLE
DATE= 166
DISMI0= 300 /DISMIS
DTINT= 273 /DECTAPE SLOT IN INTERRUPT CHAIN
IFNZRO CPU-3 <DTL20= 2375>
IFZERO CPU-3 <DTL20= 6575>
GETB= 1400 /GET A BLOCK OF FREE CORE
GETDB0= 1451 /GET A DDB
GETJTB= 6600 /GETJTA
GIRSC= 404 /STORE A CHARACTER
GIR00= 6013 /ENTRY TO GIR (GENERAL INPUT ROUTINE)
INTCOM= 5770 /COMPLETION OF INTERRUPT CODE
L2EXIT= 354 /LEAVE LEVEL 2
L2SV0= 104 /LEVEL 2 SAVED PC
OVERLA= 2175 /FILE STUFF
OVRLA1= 0576
NFSEGS= 5333 /NUMBER OF FREE DISC SEGMENTS
PTPEMP= 7420 /PTP BUFFER EMPTY PTR
PTPFIL= 7457 /PTP BUFFER FILL PTR
IFZERO D680 <PTP1= 211> /IOTS TO BE OVERLAYED
IFZERO D680-2 <PTP1= 234>
PTP2= 7477
PTP3= 7531
PTP4= 7533
PTP5= 7537
READFI= 3604 /MORE FILE STUFF
RELOAD= 3400 /AUTOMATIC SYSTEM RESTART
RETB= 600 /RETURN A BLOCK TO FREE CORE
SOURCE= 112 /CHARACTER SOURCE FOR GIR
T8K9= 6402
T8LC= 6401
T8MNC= 6400 /DC08 COMMON STORAGE LOCATIONS
UUDF= 151 /USER DATA FIELD SELECT
UUOERR= 5172
UUOEX1= 326 /UUO (RESIDENT IOT HANDLERS) EXIT
WSCHED= 2455 /ADDRESS FOR WAIT
/DEFINED IN TS8II
DTBST1= 32 /DT BUFFER 1 STATUS
DTL21= PTRSIZ+PTPSIZ+DTASIZ /DT LEVEL 2 DISPATCH
FIPBLK= 7720 /FIXED BLOCK FOR FIP I/O
F1OFFJ= 151 /FOR OFF /ON COMMANDS USED BY SI
UDTXA= DTL21-400 /DT UUO SERVICE
UPTIM1= 174 /UPTIME COUNTER IN FIELD 1
UPTIM2= 173
WINBAS= 7730 /ADDRESS OF THE BASIC WINDOW
IFNZRO CPU-3 <
DTL11= DTL21+1 /DT LEVEL 1 DISPATCH
>
IFZERO CPU-3 <
DTL11= DTL21+1+1 /DT LEVEL 1 DISPATCH; TO ALLOW FOR DISPLAY CHARACTERS
>
TOF= DTL21+200 /FETCH A CHARACTER
BUFTST= TOF+116
CRASH= TOF+200
CNTRLC= CRASH+1 /DECTAPE CTRL/C HANDLER
BRKTST= CRASH+105
TIMER0= CRASH+200
UPEEK1= TIMER0+100
DFINT1= UPEEK1+34
SWK1= UPEEK1+D689SIZ+100
IFNZRO CPU-3 <DATA1= SWK1+200>
IFZERO CPU-3 <
PDPBAS= SWK1
DATA1= PDPBAS+1000
PDPEXT= PDPBAS
PDPIDE= PDPEXT+2
DSCX= PDPBAS&6000+1
>
DEVCHK= DATA1-200
KSFPRA= DATA1-100
DEVTBL= DATA1
DEVTBE= DEVTBL+NULINE+NULINE+2
JOBTBL= DEVTBE+16
CLKTBL= JOBTBL+JOBMAX+1
TTYTBL= CLKTBL+JOBMAX+1
PRGTBL= TTYTBL+JOBMAX+1
DSUTBL= PRGTBL+JOBMAX+JOBMAX+JOBMAX
AUTOST= 4201 /SYSTEM RESTART ADDRESS IN INIT
/// END OF PARAMETERS & COMMON DATA

95
tss8.23/PHAM.PA Normal file
View File

@ -0,0 +1,95 @@
/TSS/8 CONFIGURATION FOR UWM
/CONFIGURATION PARAMETERS FOR THE TSS/8 MONITOR
/COPYRIGHT 1971
/DIGITAL EQUIPMENT CORP. -MAYNARD, MASS
/
/TSS/8 PDP-8/E HARDWARE OPTIONS
/THIS SECTION DEFINES THE HARDWARE CONFIGURATION ON
/WHICH THIS TSS/8 MONITOR WILL BE RUN
/FOR EACH STATEMENT THE COMMENT INDICATES THE
/POSSIBLE RESPONSES
CPU= 2 /0 IF CPU IS PDP-8/I; 1 IF PDP-8
/ 2 IF PDP-8/E; 3 IF PDP-12
EAE= 0 /20 IF CPU INCLUDES EAE; 0 IF NOT
CORMEM= 30 /HIGHEST DATA FIELD SELECT; FOR 12K SYS,
/ RESPOND 20; FOR 16K, RESPOND 30; FOR 32K, 70
D680= 0 /2 IF TTY INTERFACING IS 680 OR DC08;
/ 0 IF TTY INTERFACING IS PT08'S
D689= 0 /4 IF 680 OR DC08 INCLUDES 689 OR DC08F;
/ 0 IF IT DOESN'T OR TTY INTERFACING IS PT08'S
RF08= 0 /40 IF SYSTEM DISC IS DF32; 0 IF RF08
RS08= 1 /# OF DISCS IN SYSTEM, WHETHER RF08 OR DF32
RK8E= 0 /# OF RK8E DRIVES; ONLY FIRST IS USED FOR SYSTEM
/ THE REMAINDER ARE TREATED AS PERIPHERALS
READER= 0 /1 IF SYSTEM INCLUDES HIGH-SPEED READER; 0 IF NOT
PUNCH= 0 /1 IF SYS HAS HSP, 0 IF NOT
TC01= 1 /1 IF SYS HAS DECTAPES; 0 IF NOT
TU55= 0 /1 IF SYSTEM INCLUDES MORE THAN TWO DECTAPES
/ 0 IF 0, 1, OR 2 DRIVES
TD8E= 0 /1 IF TD8E DECTAPES AVAILABLE FOR LOADING & DUMPING
/ 0 IF NOT; NOTE THAT TD8E TAPES CANNOT BE USED UNDER
/ TSS/8, THEY REQUIRE CONTINUOUS CPU ATTENTION
PLOTTER=0 /NO SYSTEMS CAN HAVE PLOTTER
LPT= 2 /0 IF NO PRINTER ON SYS; 1 IF LP08; 2 IF LS8E
CDR= 0 /NO SYS CAN HAVE CARD READER
/
/MONITOR OPTIONS
/FILL IN THE FOLLOWING LINES TO INDICATE THE
/MONITOR CAPACITY FOR THIS SYSTEM
DECIMAL
JOBMAX= 6 /NUMBER OF SIMULTANEOUS USERS (.LE. 20)
NULINE= 15 /NUMBER OF TTYS TO BE ATTACHED TO SYS.
/ SIMULTANEOUSLY, NOT COUNTING CONSOLE (.LE. 19)
/ GENERALLY .GE. JOBMAX; IF SYS. USES 680 OR DC08,
/ NULINE MUST BE A MULTIPLE OF 5 (FIVE); IF CPU IS
/ A PDP-12, NULINE MUST BE MULTIPLE OF 8 (EIGHT)
TRUKBD= 5 /NUMBER OF ACTUAL KEYBOARDS ON SYSTEM (NOT COUNTING
/ CONSOLE TTY). THIS MUST BE .LE. NULINE; NULINE
/ MAY INCLUDE DUMMY TERMINALS, THIS MAY NOT.
FRCMAX= TRUKBD /THE HIGHEST KEYBOARD # A '00XX' ACCT # MAY FORCE
/ NOTE THAT A '000X' ACCOUNT MAY FORCE UP TO 'NULINE'
TLKMAX= TRUKBD /THE HIGHEST KEYBOARD # WHICH MAY BE 'TALK'ED TO
BRDMAX= TRUKBD /THE HIGHEST KEYBOARD WHICH WILL RECEIVE BROADCASTS
OCTAL
DTAMIN= 0 /THE FIRST DECTAPE DRIVE WHICH WILL BE ASSIGNED
/ FOR 'ASSIGN D' COMMAND; NORMALLY =0, BUT MAY
/ VARY FOR SLIGHTLY RESTRICTED DRIVE USE.
BILLNG= 7 /THE ACCOUNT NUMBER OF THE BILLING SYSTEM
/ 0, IF NO BILLING SYSTEM USED
/
/SYSTEM CONSTANTS
QUANT= -2 /NUMBER OF SYSTEM TICKS PER TIME SLICE (-)
SWDEX= 5 /DISC TRACK OF FIRST SWAP AREA
TTYEVEN=1 /1 INDICATES PARITY TTY MAY BE USED WITH SYS
/ 0 ALLOWS ONLY DEC MODIFIED TTYS
INFLD= 20 /FIELD SELECT THAT 'INIT' SHOULD BE BOOTED INTO
/ MAKING IT 20 AVOIDS PROBLEMS SHOULD A
/ FIELD NEED REPAIR & SYSTEM IS RUN ON 12K
/// END OF SYSTEM CONFIGURATION PARAMETERS

95
tss8.23/PHAM20.PA Normal file
View File

@ -0,0 +1,95 @@
/TSS/8 CONFIGURATION FOR UWM
/CONFIGURATION PARAMETERS FOR THE TSS/8 MONITOR
/COPYRIGHT 1971
/DIGITAL EQUIPMENT CORP. -MAYNARD, MASS
/
/TSS/8 PDP-8/E HARDWARE OPTIONS
/THIS SECTION DEFINES THE HARDWARE CONFIGURATION ON
/WHICH THIS TSS/8 MONITOR WILL BE RUN
/FOR EACH STATEMENT THE COMMENT INDICATES THE
/POSSIBLE RESPONSES
CPU= 2 /0 IF CPU IS PDP-8/I; 1 IF PDP-8
/ 2 IF PDP-8/E; 3 IF PDP-12
EAE= 0 /20 IF CPU INCLUDES EAE; 0 IF NOT
CORMEM= 30 /HIGHEST DATA FIELD SELECT; FOR 12K SYS,
/ RESPOND 20; FOR 16K, RESPOND 30; FOR 32K, 70
D680= 0 /2 IF TTY INTERFACING IS 680 OR DC08;
/ 0 IF TTY INTERFACING IS PT08'S
D689= 0 /4 IF 680 OR DC08 INCLUDES 689 OR DC08F;
/ 0 IF IT DOESN'T OR TTY INTERFACING IS PT08'S
RF08= 0 /40 IF SYSTEM DISC IS DF32; 0 IF RF08
RS08= 1 /# OF DISCS IN SYSTEM, WHETHER RF08 OR DF32
RK8E= 0 /# OF RK8E DRIVES; ONLY FIRST IS USED FOR SYSTEM
/ THE REMAINDER ARE TREATED AS PERIPHERALS
READER= 0 /1 IF SYSTEM INCLUDES HIGH-SPEED READER; 0 IF NOT
PUNCH= 0 /1 IF SYS HAS HSP, 0 IF NOT
TC01= 1 /1 IF SYS HAS DECTAPES; 0 IF NOT
TU55= 0 /1 IF SYSTEM INCLUDES MORE THAN TWO DECTAPES
/ 0 IF 0, 1, OR 2 DRIVES
TD8E= 0 /1 IF TD8E DECTAPES AVAILABLE FOR LOADING & DUMPING
/ 0 IF NOT; NOTE THAT TD8E TAPES CANNOT BE USED UNDER
/ TSS/8, THEY REQUIRE CONTINUOUS CPU ATTENTION
PLOTTER=0 /NO SYSTEMS CAN HAVE PLOTTER
LPT= 0 /0 IF NO PRINTER ON SYS; 1 IF LP08; 2 IF LS8E
CDR= 0 /NO SYS CAN HAVE CARD READER
/
/MONITOR OPTIONS
/FILL IN THE FOLLOWING LINES TO INDICATE THE
/MONITOR CAPACITY FOR THIS SYSTEM
DECIMAL
JOBMAX= 20 /NUMBER OF SIMULTANEOUS USERS (.LE. 20)
NULINE= 19 /NUMBER OF TTYS TO BE ATTACHED TO SYS.
/ SIMULTANEOUSLY, NOT COUNTING CONSOLE (.LE. 19)
/ GENERALLY .GE. JOBMAX; IF SYS. USES 680 OR DC08,
/ NULINE MUST BE A MULTIPLE OF 5 (FIVE); IF CPU IS
/ A PDP-12, NULINE MUST BE MULTIPLE OF 8 (EIGHT)
TRUKBD= 4 /NUMBER OF ACTUAL KEYBOARDS ON SYSTEM (NOT COUNTING
/ CONSOLE TTY). THIS MUST BE .LE. NULINE; NULINE
/ MAY INCLUDE DUMMY TERMINALS, THIS MAY NOT.
FRCMAX= TRUKBD /THE HIGHEST KEYBOARD # A '00XX' ACCT # MAY FORCE
/ NOTE THAT A '000X' ACCOUNT MAY FORCE UP TO 'NULINE'
TLKMAX= TRUKBD /THE HIGHEST KEYBOARD # WHICH MAY BE 'TALK'ED TO
BRDMAX= TRUKBD /THE HIGHEST KEYBOARD WHICH WILL RECEIVE BROADCASTS
OCTAL
DTAMIN= 0 /THE FIRST DECTAPE DRIVE WHICH WILL BE ASSIGNED
/ FOR 'ASSIGN D' COMMAND; NORMALLY =0, BUT MAY
/ VARY FOR SLIGHTLY RESTRICTED DRIVE USE.
BILLNG= 7 /THE ACCOUNT NUMBER OF THE BILLING SYSTEM
/ 0, IF NO BILLING SYSTEM USED
/
/SYSTEM CONSTANTS
QUANT= -2 /NUMBER OF SYSTEM TICKS PER TIME SLICE (-)
SWDEX= 5 /DISC TRACK OF FIRST SWAP AREA
TTYEVEN=1 /1 INDICATES PARITY TTY MAY BE USED WITH SYS
/ 0 ALLOWS ONLY DEC MODIFIED TTYS
INFLD= 20 /FIELD SELECT THAT 'INIT' SHOULD BE BOOTED INTO
/ MAKING IT 20 AVOIDS PROBLEMS SHOULD A
/ FIELD NEED REPAIR & SYSTEM IS RUN ON 12K
/// END OF SYSTEM CONFIGURATION PARAMETERS

BIN
tss8.23/PIP2.SV Normal file

Binary file not shown.

4
tss8.23/SCAN.TE Normal file
View File

@ -0,0 +1,4 @@
!LOOP!1J :<GLITCH><GLITCH; *.-1> "L OLOOP'
:N Z"N OLOOP' EF

1
tss8.23/SI.CM Normal file
View File

@ -0,0 +1 @@
SI<UWM,PARAM,SI (WKE)

4263
tss8.23/SI.PA Normal file

File diff suppressed because it is too large Load Diff

74
tss8.23/TEST.BI Normal file
View File

@ -0,0 +1,74 @@
$JOB TEST TSS/8 CONFIGURATIONS
$MSG MT TSS/8 #1 & #2 ON D1 & D2
.R PIP
*DSK:<DSK: (OS)
.R FOTP
*DSK:<DTA2:TEST.0?,DTA1:PARAM.PA,SI.PA
$MSG
$MSG MAX PDP-8/E SYSTEM -- SI.01
.PAL SI.01<TEST.01,PARAM,SI (WKE)
$MSG MAX PDP-8/I SYSTEM, W/D680 & D689 -- SI.02
.PAL SI.02<TEST.02,PARAM,SI (WKE)
$MSG MAX PDP-12 SYSTEM -- SI.03
.PAL SI.03<TEST.03,PARAM,SI (WKE)
$MSG MAX PDP-8 SYSTEM, W/PT08 -- SI.04
.PAL SI.04<TEST.04,PARAM,SI (WKE)
.R PIP
*SI.PA/D<
*DSK:<DSK: (OS)
*FIP.PA<DTA1:FIP.PA
$MSG
$MSG -- FIP.01
.PAL FIP.01<TEST.01,PARAM,FIP (WKE)
$MSG -- FIP.02
.PAL FIP.02<TEST.02,PARAM,FIP (WKE)
$MSG -- FIP.03
.PAL FIP.03<TEST.03,PARAM,FIP (WKE)
$MSG -- FIP.04
.PAL FIP.04<TEST.04,PARAM,FIP (WKE)
.R PIP
*FIP.PA/D<
*DSK:<DSK: (OS)
*INIT.PA<DTA1:INIT.PA
$MSG TSS/8 #1 (D1) FREE
$MSG
$MSG -- INIT.01
.PAL INIT.01<TEST.01,PARAM,INIT (WKE)
$MSG -- INIT.02
.PAL INIT.02<TEST.02,PARAM,INIT (WKE)
$MSG -- INIT.03
.PAL INIT.03<TEST.03,PARAM,INIT (WKE)
$MSG -- INIT.04
.PAL INIT.04<TEST.04,PARAM,INIT (WKE)
.R PIP
*INIT.PA/D<
*DSK:<DSK: (OS)
*TS8.PA<DTA2:TS8.PA
$MSG
$MSG -- TS8.01
.PAL TS8.01<TEST.01,PARAM,TS8 (WKE)
$MSG -- TS8.02
.PAL TS8.02<TEST.02,PARAM,TS8 (WKE)
$MSG -- TS8.03
.PAL TS8.03<TEST.03,PARAM,TS8 (WKE)
$MSG -- TS8.04
.PAL TS8.04<TEST.04,PARAM,TS8 (WKE)
.R PIP
*TS8.PA/D<
*DSK:<DSK: (OS)
*TS8II.PA<DTA2:TS8II.PA
$MSG
$MSG -- TS8II.01
.PAL TS8II.01<TEST.01,PARAM,TS8II (WKE)
$MSG -- TS8II.02
.PAL TS8II.02<TEST.02,PARAM,TS8II (WKE)
$MSG -- TS8II.03
.PAL TS8II.03<TEST.03,PARAM,TS8II (WKE)
$MSG -- TS8II.04
.PAL TS8II.04<TEST.04,PARAM,TS8II (WKE)
.R FOTP
*TEST.0?,PARAM.PA,TS8II.PA /D
.R PIP
*DSK:<DSK: (OS)
$END

1
tss8.23/TS8.CM Normal file
View File

@ -0,0 +1 @@
TS8<UWM,PARAM,TS8 (WKE)

5838
tss8.23/TS8.PA Normal file

File diff suppressed because it is too large Load Diff

1
tss8.23/TS8II.CM Normal file
View File

@ -0,0 +1 @@
TS8II<UWM,PARAM,TS8II (WKE)

2424
tss8.23/TS8II.PA Normal file

File diff suppressed because it is too large Load Diff

95
tss8.23/UWM.PA Normal file
View File

@ -0,0 +1,95 @@
/TSS/8 CONFIGURATION FOR UWM
/CONFIGURATION PARAMETERS FOR THE TSS/8 MONITOR
/COPYRIGHT 1971
/DIGITAL EQUIPMENT CORP. -MAYNARD, MASS
/
/TSS/8 PDP-8/E HARDWARE OPTIONS
/THIS SECTION DEFINES THE HARDWARE CONFIGURATION ON
/WHICH THIS TSS/8 MONITOR WILL BE RUN
/FOR EACH STATEMENT THE COMMENT INDICATES THE
/POSSIBLE RESPONSES
CPU= 2 /0 IF CPU IS PDP-8/I; 1 IF PDP-8
/ 2 IF PDP-8/E; 3 IF PDP-12
EAE= 0 /20 IF CPU INCLUDES EAE; 0 IF NOT
CORMEM= 70 /HIGHEST DATA FIELD SELECT; FOR 12K SYS,
/ RESPOND 20; FOR 16K, RESPOND 30; FOR 32K, 70
D680= 0 /2 IF TTY INTERFACING IS 680 OR DC08;
/ 0 IF TTY INTERFACING IS PT08'S
D689= 0 /4 IF 680 OR DC08 INCLUDES 689 OR DC08F;
/ 0 IF IT DOESN'T OR TTY INTERFACING IS PT08'S
RF08= 0 /40 IF SYSTEM DISC IS DF32; 0 IF RF08
RS08= 1 /# OF DISCS IN SYSTEM, WHETHER RF08 OR DF32
RK8E= 0 /# OF RK8E DRIVES; ONLY FIRST IS USED FOR SYSTEM
/ THE REMAINDER ARE TREATED AS PERIPHERALS
READER= 1 /1 IF SYSTEM INCLUDES HIGH-SPEED READER; 0 IF NOT
PUNCH= 1 /1 IF SYS HAS HSP, 0 IF NOT
TC01= 1 /1 IF SYS HAS DECTAPES; 0 IF NOT
TU55= 0 /1 IF SYSTEM INCLUDES MORE THAN TWO DECTAPES
/ 0 IF 0, 1, OR 2 DRIVES
TD8E= 0 /1 IF TD8E DECTAPES AVAILABLE FOR LOADING & DUMPING
/ 0 IF NOT; NOTE THAT TD8E TAPES CANNOT BE USED UNDER
/ TSS/8, THEY REQUIRE CONTINUOUS CPU ATTENTION
PLOTTER=0 /NO SYSTEMS CAN HAVE PLOTTER
LPT= 0 /0 IF NO PRINTER ON SYS; 1 IF LP08; 2 IF LS8E
CDR= 0 /NO SYS CAN HAVE CARD READER
/
/MONITOR OPTIONS
/FILL IN THE FOLLOWING LINES TO INDICATE THE
/MONITOR CAPACITY FOR THIS SYSTEM
DECIMAL
JOBMAX= 20 /NUMBER OF SIMULTANEOUS USERS (.LE. 20)
NULINE= 15 /NUMBER OF TTYS TO BE ATTACHED TO SYS.
/ SIMULTANEOUSLY, NOT COUNTING CONSOLE (.LE. 19)
/ GENERALLY .GE. JOBMAX; IF SYS. USES 680 OR DC08,
/ NULINE MUST BE A MULTIPLE OF 5 (FIVE); IF CPU IS
/ A PDP-12, NULINE MUST BE MULTIPLE OF 8 (EIGHT)
TRUKBD= 9 /NUMBER OF ACTUAL KEYBOARDS ON SYSTEM (NOT COUNTING
/ CONSOLE TTY). THIS MUST BE .LE. NULINE; NULINE
/ MAY INCLUDE DUMMY TERMINALS, THIS MAY NOT.
FRCMAX= TRUKBD /THE HIGHEST KEYBOARD # A '00XX' ACCT # MAY FORCE
/ NOTE THAT A '000X' ACCOUNT MAY FORCE UP TO 'NULINE'
TLKMAX= TRUKBD /THE HIGHEST KEYBOARD # WHICH MAY BE 'TALK'ED TO
BRDMAX= TRUKBD /THE HIGHEST KEYBOARD WHICH WILL RECEIVE BROADCASTS
OCTAL
DTAMIN= 2 /THE FIRST DECTAPE DRIVE WHICH WILL BE ASSIGNED
/ FOR 'ASSIGN D' COMMAND; NORMALLY =0, BUT MAY
/ VARY FOR SLIGHTLY RESTRICTED DRIVE USE.
BILLNG= 7 /THE ACCOUNT NUMBER OF THE BILLING SYSTEM
/ 0, IF NO BILLING SYSTEM USED
/
/SYSTEM CONSTANTS
QUANT= -2 /NUMBER OF SYSTEM TICKS PER TIME SLICE (-)
SWDEX= 5 /DISC TRACK OF FIRST SWAP AREA
TTYEVEN=1 /1 INDICATES PARITY TTY MAY BE USED WITH SYS
/ 0 ALLOWS ONLY DEC MODIFIED TTYS
INFLD= 20 /FIELD SELECT THAT 'INIT' SHOULD BE BOOTED INTO
/ MAKING IT 20 AVOIDS PROBLEMS SHOULD A
/ FIELD NEED REPAIR & SYSTEM IS RUN ON 12K
/// END OF SYSTEM CONFIGURATION PARAMETERS

BIN
tss8.23/fip.bin Normal file

Binary file not shown.

4239
tss8.23/fip.lst Normal file

File diff suppressed because it is too large Load Diff

BIN
tss8.23/init.bin Normal file

Binary file not shown.

4103
tss8.23/init.lst Normal file

File diff suppressed because it is too large Load Diff

39
tss8.23/orig/ASM.BI Normal file
View File

@ -0,0 +1,39 @@
$JOB ASSEMBLE TSS/8
/TSS/8 CONFIG PARMS IN DSK:TSCON.PA ??
$MSG MT TSS/8 #1 & #2 ON D1 & D2
.R PIP
*DSK:<DSK: (OS)
.R FOTP
*DTA1:*.TS<DTA1:PARAM.PA,SI.PA /R
*DTA1:*.TS<DTA1:FIP.PA,INIT.PA /R
*DSK:*.TM<DTA1:*.TS,XDDT.BN
*DTA1:*.PA<DTA1:*.TS /R
$MSG TSS/8 #1 (D1) FREE.
.R PAL8
*SI<TSCON.PA,PARAM.TM,SI.TM (WKE)
.R PIP
*SI.TM/D<
*DSK:<DSK: (OS)
.R PAL8
*FIP<TSCON.PA,PARAM.TM,FIP.TM (WKE)
.R PAL8
*INIT<TSCON.PA,PARAM.TM,INIT.TM (WKE)
.R PIP
*INIT.BN<XDDT.TM,INIT.BN /B
*FIP.TM,INIT.TM,XDDT.TM/D<
*DSK:<DSK: (OS)
.R FOTP
*DSK:*.TM<DTA2:TS8.PA,TS8II.PA
$MSG TSS/8 #2 (D2) FREE.
.R PAL8
*TS8<TSCON.PA,PARAM.TM,TS8.TM (WKE)
.R PIP
*TS8.TM/D<
*DSK:<DSK: (OS)
.R PAL8
*TS8II<TSCON.PA,PARAM.TM,TS8II.TM (WKE)
.R PIP
*PARAM.TM,TS8II.TM/D<
*DSK:<DSK: (OS)
$END

43
tss8.23/orig/ASMJOB.BI Normal file
View File

@ -0,0 +1,43 @@
$JOB ASSEMBLE TSS/8
/TSS/8 CONFIG PARMS IN DSK:TSCON.PA ??
$MSG MT TSS/8 #1 & #2 ON D1 & D2
.R PIP
*DSK:<DSK: (OS)
.R FOTP
*DSK:*.TM<DTA1:PARAM.PA,SI.PA
.R PAL8
*SI<TSCON.PA,PARAM.TM,SI.TM (WKE)
.R PIP
*SI.TM/D<
*DSK:<DSK: (OS)
*FIP.TM<DTA1:FIP.PA
.R PAL8
*FIP<TSCON.PA,PARAM.TM,FIP.TM (WKE)
.R PIP
*FIP.TM/D<
*DSK:<DSK: (OS)
.R FOTP
*DSK:<DTA1:INIT.PA,INIT.XD
$MSG TSS/8 #1 (D1) FREE.
.R PAL8
*INIT<TSCON.PA,PARAM.TM,INIT.PA (WKE)
.R PIP
*INIT.PA/D<
*INIT.BN<INIT.XD,INIT.BN /B
*INIT.XD/D<
*DSK:<DSK: (OS)
*TS8.TM<DTA2:TS8.PA
.R PAL8
*TS8<TSCON.PA,PARAM.TM,TS8.TM (WKE)
.R PIP
*TS8.TM/D<
*DSK:<DSK: (OS)
*TS8II.TM<DTA2:TS8II.PA
$MSG TSS/8 #2 (D2) FREE.
.R PAL8
*TS8II<TSCON.PA,PARAM.TM,TS8II.TM (WKE)
.R PIP
*PARAM.TM,TS8II.TM/D<
*DSK:<DSK: (OS)
$END

BIN
tss8.23/orig/BATCH.SV Normal file

Binary file not shown.

325
tss8.23/orig/DOWN.PA Normal file
View File

@ -0,0 +1,325 @@
/// SYSTEM-DOWN PROGRAM
/ MONITORS ALL KEYBOARDS AND RESPONDS
/ TO ANY INPUT WITH A CANNED MESSAGE
/ WRITTEN BY R. B. BARTLEIN - 11/14/74
/
*0
0
JMP I .+1
INTER
*10
XR1, 0
XR2, 0
*20
CHGPTR, 0
CHKPTR, 0
K00PTR, DEVLST+2 /MESSAGE POINTER FOR K00
NEWMSG, EMSG
RUBFLG, 0
EDCHAR, 0
/
TYPE= JMS . /TYPE A CHARACTER
0
TLS
CLA
TSF
JMP .-1
JMP I .-5 /RETURN
/
AAAP0= .-1
///
*200
/
/START OF MAIN PROGRAM - WE MONITOR ALL TERMINALS AND
/PRINT OUR CANNED MESSAGE WHEN ANYONE TYPES A CHAR
START, CLA CLL
CAF /CLEAR EVERYTHING INITIALLY
TAD [CHGMSG-1
DCA I K00PTR /START MESSAGE ON CONSOLE
TLS
ION
TAD [707
DCA DISPLY /SET UP THE AC DISPLAY
LOOP, TAD LPCNT
DCA TMP2 /SET SECOND LOOP COUNTER
TAD DISPLY
RAL
ISZ TMP1
JMP .-1
ISZ TMP2
JMP .-3
DCA DISPLY
TAD [DEVLST
DCA TMP2 /SET THE LIST POINTER
KIELP, TAD I TMP2 /GET AN INPUT DEVICE
SNA /END OF LIST?
JMP LOOP /YES - JUST WAIT
TAD [6005 /NO - FORM THE 'KIE' INSTRUCTION
DCA .+2
CLA IAC
HLT /NOW ENABLE INTERRUPTS
CLA
ISZ TMP2 /INCREMENT THE LIST POINTER
ISZ TMP2
ISZ TMP2
JMP KIELP / AND ENABLE THE REST
/
DISPLY, 707
LPCNT, -4
TMP1, 0
TMP2, 0
/
AAAP1= .-1
///
/INTERRUPT HANDLING - WE JUST CONTINUE TYPING
/IF THIS IS AN OUTPUT INTERRUPT; IF THIS IS AN INPUT
/INTERRUPT, WE START TYPING THE "DOWN" MESSAGE.
INTER, DCA AC
RTR
DCA LINK
TAD [DEVLST
DCA CHKPTR
INTER1, TAD I CHKPTR /GET THE INPUT DEVICE
SNA /END OF LIST?
JMP INTER7 /YES - EXIT ROUTINE
TAD [6001
DCA INTER2 /SET THE INPUT CHECK
ISZ CHKPTR
TAD I CHKPTR /GET THE OUTPUT DEVICE
TAD [6006
DCA INTER5 /SET THE OUTPUT SELECT
ISZ CHKPTR
INTER2, HLT / KSF
JMP INTER3 /NOT INPUT DEVICE
CLA IAC
TAD .-3
DCA .+1
HLT / KCC
TAD I CHKPTR /GET THE MESSAGE INDEX
SZA CLA /ALREADY TYPING MESSAGE?
JMP INTER6 /YES
TAD K00PTR
CIA
TAD CHKPTR
SNA CLA /IS THIS THE CONSOLE (K00)?
TAD [CHGMSG-MSG /YES - ADD THE 'CHANGE' MESSAGE
TAD [MSG-1 /NO - SET THE DOWN-MESSAGE
DCA I CHKPTR /SET THE MESSAGE POINTER
JMP INTER4
INTER3, TAD INTER5 /GET THE OUTPUT SELECT
TAD [-5
DCA .+1
HLT / TSF
JMP INTER6 /NOPE - CONTINUE LOOP
CLA IAC
TAD .-3
DCA .+1
HLT /CLEAR THE FLAG
INTER4, TAD I CHKPTR
SNA /ANY MESSAGE BEING TYPED?
JMP INTER6 /NOPE - JUST EXIT
IAC
DCA I CHKPTR /YES - INCREMENT THE ADDRESS
TAD I CHKPTR
DCA INTEMP /SET THE MESSAGE ADDRESS
TAD I INTEMP
SZA /END OF MESSAGE?
JMP INTER5 /NO - TYPE THE CHARACTER
DCA I CHKPTR /YES - CLEAR THE POINTER
JMP INTER6 / AND EXIT
INTER5, HLT /TYPE THE CHARACTER
CLA CLL
INTER6, ISZ CHKPTR
SRQ /ANY MORE INTERRUPTS?
JMP INTER7 /NO - JUST EXIT
JMP INTER1 /YES - CONTINUE CHECKING
/
/NOW WE RELOAD THE AC & LINK AND RETURN TO OUR MAINLINE.
INTER7, CLA CLL
TAD LINK
CLL RTL
CLA
TAD AC
ION
JMP I 0 /EXIT INTERRUPT HANDLER
/
AC, 0
LINK, 0
INTEMP, 0
///
*1000
/
/WE ARE STARTED HERE TO CHANGE THE "DOWN MESSAGE"
CHANGE, CLA CLL
DCA EDCHAR
TAD ENDMSG
DCA XR1
TAD I XR1 /TYPE "END WITH ALT-MODE"
SNA
JMP .+3
TYPE
JMP .-4
TAD NEWMSG /INITIALIZE THE MESSAGE POINTER
DCA CHGPTR
TAD [MSG+2
DCA XR1 /SET POINTER FOR CHARACTER SEARCH
DCA RUBFLG
CHG2, KSF /NOW WAIT FOR A CHARACTER
JMP .-1
KRB
AND [177
TAD [200
TAD [-377
SNA /RUBOUT?
JMP RUBOUT /YES
DCA XR2 /NO - SAVE OUR CHAR A MOMENT
ISZ RUBFLG /JUST FINISH RUBOUTS?
JMP .+3 /NO
TAD ["\
TYPE /YES - CLOSE THE BLOCK
DCA RUBFLG / AND CLEAR THE FLAG
TAD XR2
TAD [377-375
SNA /ALT MODE?
JMP CHGEND /YES
TAD [375-376
SNA /ASR 35 ALT MODE?
JMP CHGEND /YES
TAD [376-233
SNA /ESCAPE?
JMP CHGEND /YES
TAD [233-232
SNA /CTRL/Z - EDIT COMMAND?
JMP EDIT /YES
TAD [232-214
SNA /CTRL/L - CONTINUE SEARCH?
JMP EDITC /YES
TAD [214
DCA I CHGPTR /NOW STORE THE CHARACTER
TAD I CHGPTR
TYPE /NOW ECHO THE CHARACTER
ISZ CHGPTR
JMP CHG2 /GET THE NEXT CHARACTER
JMP CHANGE /RAN OUT OF ROOM - RESTART
/
/HERE WE HANDLE THE RUBOUT CONTROL
RUBOUT, TAD NEWMSG
CIA
TAD CHGPTR
SNA CLA /ANYTHING TO RUB OUT?
JMP CHG2 /NO - IGNORE THE RUBOUT
ISZ RUBFLG /PART OF A STRING?
SKP /NOT YET
JMP .+3
TAD ["\
TYPE /YES - TYPE "\"
CLA CMA
DCA RUBFLG / AND SET THE FLAG
CLA CMA
TAD CHGPTR
DCA CHGPTR /BACK UP THE POINTER
TAD I CHGPTR
TYPE / AND ECHO THE CHARACTER
JMP CHG2 /NOW GET THE NEXT CHARACTER
/
/HERE WE TERMINATE THE NEW MESSAGE AND START THE
/MAIN PROGRAM.
CHGEND, DCA I CHGPTR /STORE A ZERO
TAD [MSG+2
DCA XR1 /SET THE DESTINATION POINTER
CLA CMA
TAD NEWMSG
DCA XR2 / AND THE NEW MSG POINTER
TAD I XR2 /GET A CHARACTER
SNA /END OF MESSAGE?
JMP CHGSET /YES - SET FOR THE NEXT CHANGE
DCA I XR1
JMP .-4 /NO - MOVE THE NEXT CHARACTER
CHGSET, DCA I XR1 /STORE A ZERO
DCA I XR1
TAD XR1 /GET THE END ADDRESS
DCA NEWMSG / AND SAVE IT
JMP I [200 /THEN START THE PROGRAM
/
/WE COME HERE TO SEARCH THE PREVIOUS MESSAGE
/AND COPY IT TO THE NEW MESSAGE.
EDIT, TAD ["^
TYPE /TYPE A PROMPT
KSF
JMP .-1
KRB /READ THE SEARCH CHAR
AND [177
SNA /ZERO?
JMP .-5 /YES - THAT'S NOT ALLOWED
TAD [200
CIA
DCA EDCHAR
/
/WE COME HERE TO CONTINUE A SINGLE CHARACTER SEARCH.
EDITC, TAD EDCHAR
SNA CLA /IS THERE A SEARCH CHAR?
JMP CHG2 /NO - IGNORE THE CTRL/L
EDIT1, TAD I XR1 /GET THE NEXT MESSAGE CHARACTER
SNA /END OF MESSAGE?
JMP EDIT2 /YES
DCA I CHGPTR /NO - STORE IT
TAD I CHGPTR
TYPE / AND ECHO IT
TAD I CHGPTR
ISZ CHGPTR /INCREMENT THE MESSAGE POINTER
SKP
JMP CHANGE /OUT OF ROOM - RESTART
TAD EDCHAR
SZA CLA /IS IT OUR SEARCH CHAR?
JMP EDIT1 /NO - KEEP GOING
JMP CHG2 /YES - STOP HERE
/
/WE REACHED THE END OF THE OLD MESSAGE
EDIT2, CLA CMA
TAD XR1 /RESET THE POINTER
DCA XR1 / TO POINT TO THE END
JMP CHG2 / AND TERMINATE THE SEARCH
/
AAACHG= .-1
/
ENDMSG, .;215;212;212;"E;"N;"D;" ;"W;"I;"T;"H
" ;"A;"L;"T;" ;"M;"O;"D;"E;215;212;0
///
DEVLST, 030; 040; 0 /K00
400; 410; 0
420; 430; 0 /K02
440; 450; 0
460; 470; 0 /K04
340; 350; 0
110; 120; 0 /K06
300; 310; 0
320; 330; 0 /K10
500; 510; 0
520; 530; 0 /K12
540; 550; 0
560; 570; 0 /K14
700; 710; 0
360; 370; 0 /K16
720; 730; 0
740; 750; 0 /K20
060; 070; 0
140; 150; 0
160; 170; 0 /K23
0 /END OF LIST
/
CHGMSG, 215;212;212;"S;"T;"O;"P;" ;"C;"P;"U;" ;"A;"N;"D
" ;"S;"T;"A;"R;"T;" ;"A;"T;" ;"L;"O;"C;"A;"T;"I;"O;"N
" ;"1;"0;"0;"0;" ;"T;"O;" ;"C;"H;"A;"N;"G;"E
" ;"M;"E;"S;"S;"A;"G;"E;".
MSG, 215;212;212;"S;"Y;"S;"T;"E;"M;" ;"I;"S
" ;"D;"O;"W;"N;";;" ;"P;"L;"E;"A;"S;"E
" ;"H;"A;"N;"G;" ;"U;"P;" ;"N;"O;"W;215;212
"A;"N;"D;" ;"C;"A;"L;"L;" ;"B;"A;"C;"K
" ;"L;"A;"T;"E;"R;".;215;212
0
EMSG= .
/
AAAEND= .-1
/// $$$
$$$

321
tss8.23/orig/FD.PA Normal file
View File

@ -0,0 +1,321 @@
/// HANDLER FOR THE ADC FLOPPY DISC
/
IFNDEF FDN <FDN= 1>
/
IDTRK= 20 /FIXED LOCATION FOR 'READ SECTOR I.D.'
IDSECT= 21
/
X= 20 /IOT DIGIT FOR FIRST CONTROLLER
Y= 30
/
CLRC= 6700+X /CLEAR CONTROLLER
RTSR= 6701+X /READ STATUS REGISTER
RTCA= 6703+X /READ CURRENT ADDRESS REGISTER
DKGO= 6704+X /START OPERATION
LTCR= 6705+X /LOAD COMMAND REGISTER
LCAR= 6706+X /LOAD CURRENT ADDRESS REGISTER
LDTA= 6707+X /LOAD THE DATA REGISTER
SKRY= 6700+Y /SKIP ON READY
SKER= 6701+Y /SKIP ON ERROR
SKCE= 6702+Y /SKIP ON CRC ERROR
/
*0
-1 /ONE HANDLER
IFZERO FDN <DEVICE FDK0; DEVICE FD0>
IFZERO FDN-1 <DEVICE FDK1; DEVICE FD1>
IFZERO FDN-2 <DEVICE FDK2; DEVICE FD2>
IFZERO FDN-3 <DEVICE FDK3; DEVICE FD3>
IFZERO FDN-4 <DEVICE FDK4; DEVICE FD4>
IFZERO FDN-5 <DEVICE FDK5; DEVICE FD5>
IFZERO FDN-6 <DEVICE FDK6; DEVICE FD6>
IFZERO FDN-7 <DEVICE FDK7; DEVICE FD7>
4400; FDK0-200+4000; ZBLOCK 2
///
*200
/
/SUBROUTINE TO SELECT THE DATA-BUFFER'S DATA FIELD
FDUDF, 0
HLT
JMP I FDUDF
/
FDPFIX, -74-1
FD37, 37
FD70, 70
FDRIVE, FDN+200 /SET 'HEAD LOAD' BIT ALSO
M1898D, -3552 /-1898
/
/SUBROUTINE TO INITIALIZE STUFF
FDINIT, HLT
CLA CLL CMA RAL
TAD FDEXIT
DCA FDIN2 /SET CDF BACK TO CALLING FIELD
FD6201, CDF
TAD FDPTR1
TAD FDINIT /MAKE OUR POINTER ABSOLUTE
DCA FDPTR1
FDIN1, TAD I FDPTR1 /GET RELATIVE ADDRESS
TAD FDINIT / AND ADD THE BASE ADDRESS
FDBUF, DCA I FDPTR1 /STORE THE ABSOLUTE POINTER
FDCMD, ISZ FDPTR1
FDFUNC, ISZ FDCNT1
FDPGCT, JMP FDIN1
FDPKMK, TAD .+3 /FIX SO WE ONLY INITIALIZE ONCE
FDREC, DCA FDINIT+1
FDIN2, HLT /SET CALLING FIELD AGAIN
FDSECT, JMP I FDINIT
/
FDK0, 01 /HANDLER VERSION NUMBER
FDM200, 7600 /ALSO 'CLA'
RDF /GET THE CALLING FIELD
TAD FD6203
DCA FDEXIT / AND SET THE EXIT 'CIF CDF'
JMS FDINIT /INITIALIZE THE HANDLER
FDBASE, TAD I FDK0 /GET THE FUNCTION CODE
DCA FDFUNC
ISZ FDK0
TAD FDFUNC
AND FD70 /GET THE DATA FIELD SELECT
BSW
TAD FDRIVE / ADD IN THE DRIVE NUMBER
DCA FDCMD /SAVE AS THE COMMAND BASE
TAD FDFUNC
AND FD70 /GET THE BUFFER DATA FIELD AGAIN
TAD FD6201 / AND BUILD A 'CDF' TO IT
DCA FDUDF+1
TAD I FDK0 /GET THE BUFFER ADDRESS
DCA FDBUF
ISZ FDK0
TAD I FDK0 /GET THE OS/8 BLOCK NUMBER
ISZ FDK0
FD6203, CIF CDF
CLL RAL /CONVERT IT TO A RECORD NUMBER
SPA SZL /REASONABLE RECORD NUMBER?
JMS FATAL /NO - FATAL ERROR
DCA FDREC /YES - SAVE THE RECORD NUMBER
TAD FDFUNC
BSW
AND FD37 /GET THE RECORD COUNT
CMA
DCA FDPGCT
JMP FDEPG /DO ZERO PAGES IF ZERO SPECIFIED
FDPGLP, TAD FDREC
CLL RAL
SPA SZL /LEGAL?
JMS FATAL /NO
DCA FDSECT /SECTOR NUMBER = RECORD * 2
TAD FDSECT
TAD M1898D
SMA CLA /LEGAL SECTOR NUMBER?
JMS FATAL /NO - TAKE ERROR EXIT
TAD FDFUNC
SMA CLA /READ OR WRITE?
JMP FDKRD /READ
/
/WRITE A PAGE OUT TO DISC
TAD FDSECT
JMS I FDSTRT /FIRST A SECTOR OF FULL BYTES
20
JMS FDPACK /THEN OVERLAY THE PARTIAL SECTOR
-1
TAD FDSECT
IAC
JMS I FDSTRT / AND WRITE BACK THE PARTIAL SECTOR
20
JMP .+5
/
/READ A PAGE FROM THE DISC.
FDKRD, TAD FDSECT
IAC
JMS I FDSTRT /FIRST READ THE PARTIAL SECTOR
10
JMS FDPACK / AND SHIFT THE HALF-BYTES UP
+1
TAD FDSECT
JMS I FDOVER /THEN OVERLAY IT WITH THE FULL BYTES
CDF
RTCA /NOW UPDATE THE BUFFER ADDRESS
DCA FDBUF
ISZ FDREC / AND THE RECORD NUMBER
FDEPG, ISZ FDPGCT
JMP FDPGLP / AND GO TRANSFER ANOTHER PAGE
ISZ FDK0 /OTHERWISE WE'RE DONE
FDEXIT, HLT
JMP I FDK0 / AND RETURN
/
/SUBROUTINE TO PACK THE PARTIAL BYTES
FDPACK, HLT
JMS I FDWAIT /MAKE SURE THE DISC IS DONE
TAD FDBUF
DCA FDPTR1
TAD FDM200 /SET THE WORD COUNT
DCA FDCNT1
TAD I FDPACK /GET THE READ/WRITE SWITCH
ISZ FDPACK
SPA CLA /READ-PACK OR WRITE-PACK?
TAD FDPFIX /WRITE - SET MASK = 74
CMA /READ - SET MASK = 7777
DCA FDPKMK
JMS FDUDF /CHANGE TO BUFFER'S DATA FIELD
FDPK1, TAD I FDPTR1 /GET THE WORD
BSW /SWAP HALVES
AND FDPKMK / AND MAYBE AND OFF PART
DCA I FDPTR1 /THEN STORE BACK THE WORD
ISZ FDPTR1
ISZ FDCNT1 /DECREMENT COUNTER
JMP FDPK1 / AND CONTINUE
CDF
JMP I FDPACK
/
FATAL,
FDCNT1, FDPTR1-FDEREL /LENGTH OF RELOCATION LIST
CLA CLL CMA /YES - INDICATE FATAL ERROR
JMP FDEXIT / AND EXIT
/
IFNZRO 400-4-.&4000 <GLITCH>
*400-4 /PART OF LIST BELONGS IN SECOND PAGE
FDPTR1, .+1-FDBASE /USED DURING INITIALIZATION
FDOVER, FDOVLY-FDBASE
FDSTRT, FDST-FDBASE
FDWAIT, FDWT-FDBASE
FDUDFA, FDUDF-FDBASE
FDCMDA, FDCMD-FDBASE
FDBUFA, FDBUF-FDBASE
FDQUIT, FATAL-FDBASE
FDEREL= .-1 /END OF RELOCATION LIST
///
/
/SUBROUTINE TO OVERLAY PART OF THE BUFFER WITH A SECTOR.
FDOVLY, 0
DCA SECT
TAD I FDBUFA
DCA FDPTR2 /SET THE OVERLAY POINTER
TAD M200
DCA FDCNT2 / AND THE WORD COUNTER
TAD SECT
JMS FDST /START THE TRANSFER
10
SKER /ANY ERROR NOW?
SKP
JMS I FDQUIT /YES - TAKE FATAL ERROR EXIT
JMS I FDUDFA /CHANGE TO USER'S DATA FIELD
FDOV1, TAD I FDPTR2 /GET THE WORD
MQL / AND SAVE IT IN THE MQ
FDOV2, RTCA /NOW GET THE CURRENT ADDRESS
CIA
TAD FDPTR2
SMA CLA /PAST OUR WORD YET?
JMP FDOV2 /NO - WAIT FOR IT
TAD I FDPTR2 /YES - GET THE NEW VALUE
MQA / AND 'OR' IN THE ORIGINAL
DCA I FDPTR2 /THEN STORE THE FINAL RESULT
ISZ FDPTR2
ISZ FDCNT2 /DECREMENT THE COUNTER
JMP FDOV1 / AND CONTINUE
JMS FDWT /THEN WAIT FOR I/O COMPLETION
JMP I FDOVLY / AND RETURN
/
/SUBROUTINE TO START A DISC TRANSFER.
FDST, 0
DCA SECT /SAVE THE SECTOR NUMBER
CLA IAC
DCA TRK
TAD SECT
FDST1, TAD M26D /NOW DIVIDE THE SECTOR BY 26
SPA
JMP .+3
ISZ TRK / TO GET THE TRACK NUMBER
JMP FDST1
TAD K27D /SECTOR = REMAINDER + 1
DCA SECT
TAD M26D
DCA TKERR /SET ERROR LIMITS
TAD M200
DCA SCERR
TAD IDTRK /SAVE THE FIELD ZERO LOCATIONS
DCA SAVIDT
TAD IDSECT
DCA SAVIDS
FDST2, TAD I FDCMDA
LTCR /READ SECTOR I.D.
DKGO
SKRY /WAIT FOR 'READY'
JMP .-1
RTSR
AND FDSMSK
SZA CLA /ANY FATAL ERRORS?
JMS I FDQUIT /YES - DIE
SKCE /CRC ERROR?
JMP FDST3 /NO
ISZ TKERR /YES - COUNT AS TRACK ERROR
JMP FDST2 / AND TRY AGAIN
JMS I FDQUIT /OTHERWISE ERROR
FDST3, TAD IDTRK
CIA
TAD TRK
SNA /RIGHT TRACK?
JMP FDST4 /YES - CHECK SECTOR NUMBER
LDTA /NO LOAD THE DIFFERENCE
TAD I FDCMDA
TAD FDSEEK
LTCR /SET THE MOVE HEAD FUNCTION
DKGO
JMS FDWT /WAIT FOR COMPLETION
ISZ TKERR /COUNT THIS AS A TRACK-ERROR
JMP FDST2 / AND CHECK AGAIN
JMS I FDQUIT
FDST4, TAD IDSECT
CIA
TAD SECT
SNA CLA /ARE WE AT THE RIGHT SECTOR?
JMP FDST5 /YES
ISZ SCERR /NO - COUNT OUR TRIES
JMP FDST2 / AND TRY AGAIN
JMS I FDQUIT /ERROR LIMIT REACHED
FDST5, TAD I FDBUFA
LCAR /SET THE BUFFER ADDRESS
TAD K373
LDTA /ASSUME SECTOR GOOD
TAD TRK
TAD M44D
SMA CLA /TRACK NUMBER .GE. 44?
TAD K40 /YES - SET FLAG TO USE LOWER WRITE CURRENT
TAD I FDST /GET THE FUNCTION CODE
ISZ FDST / AND INCREMENT THE RETURN
TAD I FDCMDA /GET THE REST OF THE COMMAND
LTCR
TAD SAVIDT /NOW RESTORE THE PAGE ZERO STUFF
DCA IDTRK
TAD SAVIDS
DCA IDSECT
DKGO /NOW START THE TRANSFER
JMP I FDST / AND RETURN
/
K40, 40
K373, 373
M26D, -32
M44D, -54
M200, -200
K27D, 33
FDSMSK, 2235
TRK, 0
SECT, 0
TKERR, 0
SCERR, 0
FDPTR2, 0
FDCNT2, 0
FDSEEK, 30 /MOVE HEAD
SAVIDS, 0
SAVIDT, 0
/
/SUBROUTINE TO WAIT FOR DISC COMPLETION.
FDWT, 0
SKRY
JMP .-1
SKER /ANY ERROR BITS?
JMP I FDWT /NO - JUST RETURN
JMS I FDQUIT /YES - TAKE FATAL ERROR EXIT
/
AAAFD= .-1
/// $$$
$$$

1
tss8.23/orig/FIP.CM Normal file
View File

@ -0,0 +1 @@
FIP<UWM,PARAM,FIP (WKE)

3199
tss8.23/orig/FIP.PA Normal file

File diff suppressed because it is too large Load Diff

1
tss8.23/orig/INIT.CM Normal file
View File

@ -0,0 +1 @@
INIT<UWM,PARAM,INIT (WKE)

2956
tss8.23/orig/INIT.PA Normal file

File diff suppressed because it is too large Load Diff

BIN
tss8.23/orig/INIT.XD Normal file

Binary file not shown.

583
tss8.23/orig/PARAM.PA Normal file
View File

@ -0,0 +1,583 @@
/PARAMETERS - UWM VERSION 23
/
/COPYRIGHT 1971 DIGITAL EQUIPMENT CORPORATION
/ MAYNARD, MASSACHUSETTS
/
/
VERNUM= 27 /SYSTEM VERSION NUMBER
/
STOMIN= 5 /MINIMUM # FREE STORAGE BLOCKS FOR NEW JOB
IFZERO RK8E <
IFZERO RF08-40 <
DSKSIZ= RS08^10
>
IFZERO RF08 <
DSKSIZ= RS08^100 /# OF 4K DISC TRACKS
>
>
IFNZRO RK8E <
DSKSIZ= 400 /# OF 4K DISC TRACKS
>
CLOCKR= 62 /50 MILLISECONDS
TICMIN= 2260 /1200
INCLK2= 0645 /1,728,000 TICKS PER DAY
INCLK1= 7000
TICSPS= 24 /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
WRDSEG= 400 /#WORDS PER DISC SEGMENT
/IOT DEFINITIONS
IFZERO D680-2 <
TTINCR= 6401 /INCREMENT LINE REGISTER
TTI= 6402 /TELETYPE INPUT COMMAND
TTO= 6404 /TELETYPE OUTPUT COMMAND
TTCL= 6411 /CLEAR LINE REGISTER
TTSL= 6412 /SET LINE REGISTER, CLEAR AC
TTRL= 6414 /READ LINE REGISTER
T8SKP= 6421 /SKIP ON CLOCK FLAG
T8OFF= 6422 /TURN CLOCK OFF
TT8ON= 6424 /TURN CLOCK ON
TTRINC= 6461 /INCREMENT THE R REG.
TT8CLR= 6473 /CLEAR AND LOAD THE R REG.
>
/EXTENDED MEMORY
CDF= 6201 /CHANGE TO DATA FIELD 0
CIF= 6202 /CHANGE TO INSTRUCTION FIELD 0
CIOT= 6204 /CLEAR USER IOT
RDF= 6214 /READ DATA FIELD
RIF= 6224 /READ INSTRUCTION FIELD
RIB= 6234 /READ INTERRUPT BUFFER
RMF= 6244 /RESTORE MEMORY FIELD
SKPIOT= 6254 /SKIP ON USER IOT
UFF= 6264 /USER FLAG OFF
UFN= 6274 /USER FLAG ON
/EAE
IFZERO EAE-20 <
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 <
SAM= 7453 /SUBTRACT AC FROM MQ
SKB= 7671 /SKIP IF MODE B (MESSES UP AC AND MQ)
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
/SOMEDAY FIX 'WHERE' COMMAND TO PRINT MODE & GT
/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
LPC= 6666 /TRANSMIT CHAR & CLEAR FLAG
LCP= 6667 /CLEAR PROGRAM INTERRUPT
/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 ADDRESS
/DISC (RF08)
DIML= 6615
DIMA= 6616
DXAL= 6643
IFNZRO RK8E <
DCLR= 6742 /CLEAR THE CONTROLLER
DLAG= 6743 /LOAD DISC ADDRESS & GO
DLDC= 6746 /LOAD THE COMMAND REGISTER
DRST= 6745 /READ THE STATUS
DSKP= 6741 /SKIP IF DONE OR ERROR
DLCA= 6744 /LOAD CURRENT CORE ADDRESS
>
/
/STANDARD DECTAPE CONTROLLER IOTS
DTRA= 6761 /READ A-REGISTER
DTCA= 6762 /CLEAR A-REGISTER
DTXA= 6764 /XOR INTO A-REGISTER
DTSF= 6771 /SKIP ON DECTAPE FLAG
DTRB= 6772 /READ STATUS-REGISTER (B)
DTLB= 6774 /LOAD STATUS-REGISTER (B)
IFZERO CPU-3 <
CLAB= 6133
CLLR= 6132
CLEN= 6134
CLSA= 6135
CLSK= 6131
MTPF= 6113
MINT= 6115
MTON= 6117
MKTF= 6123
MINS= 6125
MTRS= 6127
MKSF= 6111
MKCC= 6112
MKRS= 6114
MKRB= 6116
MTSF= 6121
MTCF= 6122
MTPC= 6124
MTLS= 6126
>
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
CAF= 6007 /CLEAR ALL FLAGS
>
IFZERO D689-4 <
/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
>
/TSS/8 IOTS
SEGS= 406 /RETURN NUMBER OF FREE SEGMENTS ON DISC
ASD= 440 /ASSIGN DEVICE
REL= 442 /RELEASE DEVICE
REN= 600 /RENAME FILE
OPEN= 6601 /OPEN FILE
CLOS= 602 /CLOSE
RFILE= 6603 /READ FILE
PROT= 604 /PROTECT
WFILE= 6605 /WRITE FILE
XOPEN= 6606 /OPEN FILE WITH EXCLUSIVE USE
CPASS= 607 /CHANGE A USER'S PASSWORD
CRF= 610 /CREATE
EXT= 611 /EXTEND
RED= 612 /REDUCE
FINF= 6613 /FILE INFORMATION
LIN= 614 /LOGIN
LOUT= 615 /LOGOUT
BCLR= 620 /CLEAR MFD BILLING INFORMATION
/DEVICE DATA BLOCK
DDBSTS= 0 /WORD 1. STATUS AND UNIT NUMBER
DXON= 2000 /XOFF SENT FLAG
DSI= 1000 /DESTINATION IS S.I. FLAG
DXOUT= 400 /BIT TO CAUSE 'XOFF' TO GO OUT
DUPL= 200 /CONSOLE IN DUPLEX MODE
SICOM= 100 /COMMAND WAITING
CTRLC= 40 /USER TYPED CTRL/C
/DEVICE UNIT NUMBER IS IN BITS 6-11
DDBJN= 1 /WORD 2. JOB NUMBER IN 7-11
DDBBRK= 2 /BREAK MASK
SIBRKM= 204 /SI BREAK MASK
DDBTIM= 3 /TIME THAT DEVICE WAS ASSIGNED
DDBINP= 4 /BUFFER FILL POINTER
DDBINC= 5 /BUFFER FILL COUNT
DDBOUP= 6 /BUFFER EMPTY POINTER
DDBOUC= 7 /BUFFER EMPTY COUNT
/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
JSHLT= 400 /PROGRAM EXECUTED 'HLT'
JSPRIV= 200 /LIBRARY PROGRAM (HAS PRIVILEGES)
JSIOT= 100 /NON-RESIDENT IOT
JSIOTC= 40 /COPY IOT RESULT TO USER
JSEXON= 20 /EXECUTE ONLY
/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 /DELIMITER SEEN
JSTEL= 20 /OUTPUT BUFFER NOT FULL
JSPTR= 10 /CHARACTER IN READER BUFFER
JSPTP= 4 /PUNCH BUFFER IS NOT FULL
JSERR= 2 /SYSTEM ERROR DETECTED
JSWAIT= 1 /JOB NOT IN WAIT STATE
STR2= 1 /TC01&1!PUNCH&1!PLOTTER&1!LPT&1!CDR&1
JSPLT= 1000 /PLOTTER DONE
JSCDR= 400 /CHARACTER IN CDR BUFFER
JSCRNR= 200 /CDR NOT READY
JSCREF= 100 /CDR END FILE
JSDTC= 4 /DECTAPE CONTROLLER FLAG
JSDTE= 2 /DT ERROR FLAG
JSDTF= 1 /DT DONE FLAG
JOBWMK= 2+STR2 /WAIT MASK
JOBSRA= JOBWMK+1+STR2 /JOB RESTART ADDRESS
JOBERR= JOBSRA+1 /JOB ERROR RESTART ADDRESS
JOBLNK= JOBERR+1 /IOT LINKAGE
JOBSWR= JOBLNK+1 /SWITCH REGISTER
JOBREG= JOBSWR+1 /PC, AC, & LINK (W/MODE, GT, & SC)
JOBEAE= JOBREG+3 /MQ REGISTER
JOBACT= JOBEAE+1 /USER'S ACCOUNT #
JOBRTM= JOBACT+1 /LOW ORDER RUN TIME
JOBRTH= JOBRTM+1 /HIGH ORDER RUN TIME
JOBF0= JOBRTH+1 /POINTER TO FILE 0 CONTROL
JOBF1= JOBF0+1 /POINTER TO FILE 1 CONTROL
JOBF2= JOBF1+1 /POINTER TO FILE 2 CONTROL
JOBF3= JOBF2+1 /POINTER TO FILE 3 CONTROL
JOBSTB= JOBF3+1 /DECTAPE STATUS REGISTER B
/TUNING PARAMETERS
MAXBUF= 10 /MAXIMUM PERMITTED # OF OUTPUT BUFFERS
MINBUF= 3 /RESTART JOB WHEN ONLY MINBUF BUFFERS ARE STILL FULL
/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
FSWP= 4000 /SWAP REQUEST
LOCK= 2000 /LOCK IN CORE
NOTRUN= 1000 /HAS NOT BEEN SCHEDULED TO RUN
FIP= 400 /FILE PHANTOM (NOTE: FIP HAS BEEN ASSUMED EQUAL TO SEGISZ)
SI= 200 /SYSTEM COMMAND INTERPRETER PHANTOM
FIX= 100 /JUST FINISHED DISC TRANSFER
/BITS 7-11 CONTAIN THE JOB #
/FIP TABLE DEFINITIONS
SATSIZ= 530
ENTABL= 5600
UTABLE= ENTABL+JOBMAX+JOBMAX+JOBMAX+JOBMAX+JOBMAX+JOBMAX+JOBMAX+JOBMAX
RTABLE= UTABLE+JOBMAX+JOBMAX+JOBMAX+JOBMAX
SIDATA=20 /SYSTEM INTERPRETER DATA
*SIDATA
COMPTR, . /POINTER TO LAST DEVTBL ENTRY SCANNED. INITIALIZE TO DEVTBL-1
SIBUF, . /BUFFER STATE
SICNT, .
COMDSP, . /FIP RETURN DISPATCH
SIFLG, . /COMMAND FLAGS
SICHAR, . /SAVE LAST CHAR FROM COMMAND SCAN
SIREG, . /USER AC, LINK, PC
.
.
TTCHAR, . /TTY CHARACTER
CONSTANTS=SIDATA+12
*CONSTANTS
C0002, 2
C0003, 3
C0004, 4
C0007, 7
C0037, 37
C0100, 100
C1000, 1000
C7770, 7770
JOBCON=CONSTANTS+11 /JOB CONTROL
*JOBCON
JOBTIM, . /-#TICKS REMAINING TO RUN
JOBTBA, JOBTBL /JOB TABLE ADDRESS
FRSTOR=JOBCON+3
*FRSTOR
FREE, . /POINTER TO HEAD OF FREE STORAGE
FRECNT, . /# FREE BLOCKS AVAILABLE
TIMDAT= FRSTOR+2 /CLOCK AND DATE
*TIMDAT
/CLOCK
CLK2, .
CLK1, .
SCHDAT=TIMDAT+2
*SCHDAT /SCHEDULING DATA
COMCNT, . /NUMBER OF COMMANDS WAITING EXECUTION
SQREQ, . /SWAP REQUEST FLAG
FINISH, . /+(I)-(O) FIELD OF JOB BEING SWAPPED
FIT, . /JOB # TO BE SWAPPED IN
FORCE, . /FIELD TO BE SWAPPED OUT
DATEND= 60 /END OF FIELD 0 PAGE 0 DATA
FIPDAT=156 /DATA REFERENCED BY FIP
*FIPDAT
C0400, 400
IFNZRO WRDSEG-400 <GLITCH>
SEGSIZ= C0400 /WRDSEG
FIBASE, SWDEX+JOBMAX /BASE ADDRESS OF ALLOCATABLE DISC STORAGE
JOB, . /# OF CURRENT JOB
JOBDAT, . /ADDRESS OF CURRENT JOB DATA LIST. MUST RESIDE IN DATA FIELD.
CORTBA, CORTBL-1 /CORE ALLOCATION TABLE
DEVTBA, DEVTBL /DEVICE TABLE
DSUTBA, DSUTBL /USER DISC REQUEST QUEUE
DSBUSY, . /DISC BUSY COUNT
/THE DATE IS KEPT AS A 12 BIT NUMBER IN THE FORMAT
/DATE=((YEAR-1974)*12+(MONTH-1))*31+DAY-1
DATE, .
FISUBR=FIPDAT+11 /INST FIELD INDEPENDENT SUBROUTINES
*FISUBR
FISUBL=400
BLT0= FISUBL+1200
BLTA, BLT0 /BLOCK TRANSFER
BLT= JMS I Z BLTA
CORSRA, CORSRC
CORE= JMS I CORSRA
GETBA, GETB
GETBLK= JMS I GETBA
GETDBA, GETDB0 /GET A DATA BLOCK
GETDDB= JMS I GETDBA
TOFA, TOF /FETCH CHARACTER
FETCH= JMS I Z TOFA
GETJT0, GETJTB /GET JOB DATA TABLE ADDRESS
GETJTA= JMS I Z GETJT0
GIRSCA, GIRSC /STORE CHARACTER IN BUFFER
STORE= JMS I Z GIRSCA
RETBA, RETB /RETURN BLOCK TO FREE STORAGE
RETBLK= JMS I Z RETBA
WAITA, WSCHED
WAIT= JMP I WAITA
/TABLES
IFNZRO CPU-3 <
DATA= 7100 /START OF FIELD 0 TABLES AND BUFFERS
>
IFZERO CPU-3 <
DATA= 7200 /IF DC02 THERE LEAVE ROOM FOR THE CODE
>
CORTBL= DATA /CORE ASSIGNMENT TABLE
L2QTB= CORTBL+7
IFZERO D680-2 <
T8OBF= L2QTB+20 /TTY CHAR OUT BUFFER 1. # LINES
T8OBF2= T8OBF+NULINE /TTY CHAR OUT BUFFER 2. # LINES
T8IBF= T8OBF2+NULINE /TTY CHAR IN BUFFER. 2*# LINES
T8IN= T8IBF+NULINE+NULINE /TTI LIST. 4*#LINES+1
TYBEND= T8IN+NULINE+NULINE+NULINE+NULINE+1
>
IFZERO D680 <
TIBUFF= L2QTB+20 /TTY INPUT BUFFER. # LINES
TOBUFF= TIBUFF+NULINE+1 /TTY OUTPUT BUFFER. # LINES
TIDEV= TOBUFF+NULINE+1 /DEVICE CODES (INPUT)
IFNZRO CPU-3 <
TODEV= TIDEV+NULINE+1 /DEVICE CODES (OUTPUT)
TYBEND= TODEV+NULINE+1
>
IFZERO CPU-3 <
TODEV= TIDEV+1
TYBEND= TODEV+1
>
>
IFZERO TC01 <DTASIZ=0> /SIZE OF DTA CODE+BUFFERS
IFZERO TC01-1 <DTASIZ=1400>
IFZERO D689 <D689SIZ=0> /SIZE OF 689AG CODE
IFZERO D689-4 <D689SIZ=200>
PTRSIZ= 200
PTPSIZ= 200
PTPBUF= 200 /START OF DEVICE BUFFERS
PTRBUF= PTPBUF+PTPSIZ
DTBUF1= PTRBUF+PTRSIZ
DTBUF2= DTBUF1+201
DATFLD=6211 /MONITOR DATA FIELD SELECT
IFZERO EAE-20 <MQREG=1>
IFZERO EAE <IFZERO CPU-2 <MQREG=1>
IFNZRO CPU-2 <MQREG=0>>
/SUPER CRITICAL LOCATIONS
/THESE LOCATIONS ARE USED TO LINK TS8 AND TS8II
/IT MAY BE NECESSARY TO ADJUST THEM ACCORDINGLY
/DEFINED IN TS8:
BLT0= 1600
CORSRC= 1302 /SEARCH CORE TABLE
DATE= 166
DISMI0= 300 /DISMIS
DTINT= 273 /DECTAPE SLOT IN INTERRUPT CHAIN
IFNZRO CPU-3 <DTL20= 2375>
IFZERO CPU-3 <DTL20= 6575>
GETB= 1400 /GET A BLOCK OF FREE CORE
GETDB0= 1451 /GET A DDB
GETJTB= 6600 /GETJTA
GIRSC= 404 /STORE A CHARACTER
GIR00= 6013 /ENTRY TO GIR (GENERAL INPUT ROUTINE)
INTCOM= 5770 /COMPLETION OF INTERRUPT CODE
L2EXIT= 354 /LEAVE LEVEL 2
L2SV0= 104 /LEVEL 2 SAVED PC
OVERLA= 2175 /FILE STUFF
OVRLA1= 0576
NFSEGS= 5333 /NUMBER OF FREE DISC SEGMENTS
PTPEMP= 7420 /PTP BUFFER EMPTY PTR
PTPFIL= 7457 /PTP BUFFER FILL PTR
IFZERO D680 <PTP1= 211> /IOTS TO BE OVERLAYED
IFZERO D680-2 <PTP1= 234>
PTP2= 7477
PTP3= 7531
PTP4= 7533
PTP5= 7537
READFI= 3604 /MORE FILE STUFF
RELOAD= 3400 /AUTOMATIC SYSTEM RESTART
RETB= 600 /RETURN A BLOCK TO FREE CORE
SOURCE= 112 /CHARACTER SOURCE FOR GIR
T8K9= 6402
T8LC= 6401
T8MNC= 6400 /DC08 COMMON STORAGE LOCATIONS
UUDF= 151 /USER DATA FIELD SELECT
UUOERR= 5172
UUOEX1= 326 /UUO (RESIDENT IOT HANDLERS) EXIT
WSCHED= 2455 /ADDRESS FOR WAIT
/DEFINED IN TS8II
DTBST1= 32 /DT BUFFER 1 STATUS
DTL21= PTRSIZ+PTPSIZ+DTASIZ /DT LEVEL 2 DISPATCH
FIPBLK= 7720 /FIXED BLOCK FOR FIP I/O
F1OFFJ= 151 /FOR OFF /ON COMMANDS USED BY SI
UDTXA= DTL21-400 /DT UUO SERVICE
UPTIM1= 174 /UPTIME COUNTER IN FIELD 1
UPTIM2= 173
WINBAS= 7730 /ADDRESS OF THE BASIC WINDOW
IFNZRO CPU-3 <
DTL11= DTL21+1 /DT LEVEL 1 DISPATCH
>
IFZERO CPU-3 <
DTL11= DTL21+1+1 /DT LEVEL 1 DISPATCH; TO ALLOW FOR DISPLAY CHARACTERS
>
TOF= DTL21+200 /FETCH A CHARACTER
BUFTST= TOF+116
CRASH= TOF+200
CNTRLC= CRASH+1 /DECTAPE CTRL/C HANDLER
BRKTST= CRASH+105
TIMER0= CRASH+200
UPEEK1= TIMER0+100
DFINT1= UPEEK1+34
SWK1= UPEEK1+D689SIZ+100
IFNZRO CPU-3 <DATA1= SWK1+200>
IFZERO CPU-3 <
PDPBAS= SWK1
DATA1= PDPBAS+1000
PDPEXT= PDPBAS
PDPIDE= PDPEXT+2
DSCX= PDPBAS&6000+1
>
DEVCHK= DATA1-200
KSFPRA= DATA1-100
DEVTBL= DATA1
DEVTBE= DEVTBL+NULINE+NULINE+2
JOBTBL= DEVTBE+16
CLKTBL= JOBTBL+JOBMAX+1
TTYTBL= CLKTBL+JOBMAX+1
PRGTBL= TTYTBL+JOBMAX+1
DSUTBL= PRGTBL+JOBMAX+JOBMAX+JOBMAX
AUTOST= 4201 /SYSTEM RESTART ADDRESS IN INIT
/// END OF PARAMETERS & COMMON DATA

95
tss8.23/orig/PHAM.PA Normal file
View File

@ -0,0 +1,95 @@
/TSS/8 CONFIGURATION FOR UWM
/CONFIGURATION PARAMETERS FOR THE TSS/8 MONITOR
/COPYRIGHT 1971
/DIGITAL EQUIPMENT CORP. -MAYNARD, MASS
/
/TSS/8 PDP-8/E HARDWARE OPTIONS
/THIS SECTION DEFINES THE HARDWARE CONFIGURATION ON
/WHICH THIS TSS/8 MONITOR WILL BE RUN
/FOR EACH STATEMENT THE COMMENT INDICATES THE
/POSSIBLE RESPONSES
CPU= 2 /0 IF CPU IS PDP-8/I; 1 IF PDP-8
/ 2 IF PDP-8/E; 3 IF PDP-12
EAE= 0 /20 IF CPU INCLUDES EAE; 0 IF NOT
CORMEM= 30 /HIGHEST DATA FIELD SELECT; FOR 12K SYS,
/ RESPOND 20; FOR 16K, RESPOND 30; FOR 32K, 70
D680= 0 /2 IF TTY INTERFACING IS 680 OR DC08;
/ 0 IF TTY INTERFACING IS PT08'S
D689= 0 /4 IF 680 OR DC08 INCLUDES 689 OR DC08F;
/ 0 IF IT DOESN'T OR TTY INTERFACING IS PT08'S
RF08= 0 /40 IF SYSTEM DISC IS DF32; 0 IF RF08
RS08= 1 /# OF DISCS IN SYSTEM, WHETHER RF08 OR DF32
RK8E= 0 /# OF RK8E DRIVES; ONLY FIRST IS USED FOR SYSTEM
/ THE REMAINDER ARE TREATED AS PERIPHERALS
READER= 0 /1 IF SYSTEM INCLUDES HIGH-SPEED READER; 0 IF NOT
PUNCH= 0 /1 IF SYS HAS HSP, 0 IF NOT
TC01= 1 /1 IF SYS HAS DECTAPES; 0 IF NOT
TU55= 0 /1 IF SYSTEM INCLUDES MORE THAN TWO DECTAPES
/ 0 IF 0, 1, OR 2 DRIVES
TD8E= 0 /1 IF TD8E DECTAPES AVAILABLE FOR LOADING & DUMPING
/ 0 IF NOT; NOTE THAT TD8E TAPES CANNOT BE USED UNDER
/ TSS/8, THEY REQUIRE CONTINUOUS CPU ATTENTION
PLOTTER=0 /NO SYSTEMS CAN HAVE PLOTTER
LPT= 2 /0 IF NO PRINTER ON SYS; 1 IF LP08; 2 IF LS8E
CDR= 0 /NO SYS CAN HAVE CARD READER
/
/MONITOR OPTIONS
/FILL IN THE FOLLOWING LINES TO INDICATE THE
/MONITOR CAPACITY FOR THIS SYSTEM
DECIMAL
JOBMAX= 6 /NUMBER OF SIMULTANEOUS USERS (.LE. 20)
NULINE= 15 /NUMBER OF TTYS TO BE ATTACHED TO SYS.
/ SIMULTANEOUSLY, NOT COUNTING CONSOLE (.LE. 19)
/ GENERALLY .GE. JOBMAX; IF SYS. USES 680 OR DC08,
/ NULINE MUST BE A MULTIPLE OF 5 (FIVE); IF CPU IS
/ A PDP-12, NULINE MUST BE MULTIPLE OF 8 (EIGHT)
TRUKBD= 5 /NUMBER OF ACTUAL KEYBOARDS ON SYSTEM (NOT COUNTING
/ CONSOLE TTY). THIS MUST BE .LE. NULINE; NULINE
/ MAY INCLUDE DUMMY TERMINALS, THIS MAY NOT.
FRCMAX= TRUKBD /THE HIGHEST KEYBOARD # A '00XX' ACCT # MAY FORCE
/ NOTE THAT A '000X' ACCOUNT MAY FORCE UP TO 'NULINE'
TLKMAX= TRUKBD /THE HIGHEST KEYBOARD # WHICH MAY BE 'TALK'ED TO
BRDMAX= TRUKBD /THE HIGHEST KEYBOARD WHICH WILL RECEIVE BROADCASTS
OCTAL
DTAMIN= 0 /THE FIRST DECTAPE DRIVE WHICH WILL BE ASSIGNED
/ FOR 'ASSIGN D' COMMAND; NORMALLY =0, BUT MAY
/ VARY FOR SLIGHTLY RESTRICTED DRIVE USE.
BILLNG= 7 /THE ACCOUNT NUMBER OF THE BILLING SYSTEM
/ 0, IF NO BILLING SYSTEM USED
/
/SYSTEM CONSTANTS
QUANT= -2 /NUMBER OF SYSTEM TICKS PER TIME SLICE (-)
SWDEX= 5 /DISC TRACK OF FIRST SWAP AREA
TTYEVEN=1 /1 INDICATES PARITY TTY MAY BE USED WITH SYS
/ 0 ALLOWS ONLY DEC MODIFIED TTYS
INFLD= 20 /FIELD SELECT THAT 'INIT' SHOULD BE BOOTED INTO
/ MAKING IT 20 AVOIDS PROBLEMS SHOULD A
/ FIELD NEED REPAIR & SYSTEM IS RUN ON 12K
/// END OF SYSTEM CONFIGURATION PARAMETERS

95
tss8.23/orig/PHAM20.PA Normal file
View File

@ -0,0 +1,95 @@
/TSS/8 CONFIGURATION FOR UWM
/CONFIGURATION PARAMETERS FOR THE TSS/8 MONITOR
/COPYRIGHT 1971
/DIGITAL EQUIPMENT CORP. -MAYNARD, MASS
/
/TSS/8 PDP-8/E HARDWARE OPTIONS
/THIS SECTION DEFINES THE HARDWARE CONFIGURATION ON
/WHICH THIS TSS/8 MONITOR WILL BE RUN
/FOR EACH STATEMENT THE COMMENT INDICATES THE
/POSSIBLE RESPONSES
CPU= 2 /0 IF CPU IS PDP-8/I; 1 IF PDP-8
/ 2 IF PDP-8/E; 3 IF PDP-12
EAE= 0 /20 IF CPU INCLUDES EAE; 0 IF NOT
CORMEM= 30 /HIGHEST DATA FIELD SELECT; FOR 12K SYS,
/ RESPOND 20; FOR 16K, RESPOND 30; FOR 32K, 70
D680= 0 /2 IF TTY INTERFACING IS 680 OR DC08;
/ 0 IF TTY INTERFACING IS PT08'S
D689= 0 /4 IF 680 OR DC08 INCLUDES 689 OR DC08F;
/ 0 IF IT DOESN'T OR TTY INTERFACING IS PT08'S
RF08= 0 /40 IF SYSTEM DISC IS DF32; 0 IF RF08
RS08= 1 /# OF DISCS IN SYSTEM, WHETHER RF08 OR DF32
RK8E= 0 /# OF RK8E DRIVES; ONLY FIRST IS USED FOR SYSTEM
/ THE REMAINDER ARE TREATED AS PERIPHERALS
READER= 0 /1 IF SYSTEM INCLUDES HIGH-SPEED READER; 0 IF NOT
PUNCH= 0 /1 IF SYS HAS HSP, 0 IF NOT
TC01= 1 /1 IF SYS HAS DECTAPES; 0 IF NOT
TU55= 0 /1 IF SYSTEM INCLUDES MORE THAN TWO DECTAPES
/ 0 IF 0, 1, OR 2 DRIVES
TD8E= 0 /1 IF TD8E DECTAPES AVAILABLE FOR LOADING & DUMPING
/ 0 IF NOT; NOTE THAT TD8E TAPES CANNOT BE USED UNDER
/ TSS/8, THEY REQUIRE CONTINUOUS CPU ATTENTION
PLOTTER=0 /NO SYSTEMS CAN HAVE PLOTTER
LPT= 0 /0 IF NO PRINTER ON SYS; 1 IF LP08; 2 IF LS8E
CDR= 0 /NO SYS CAN HAVE CARD READER
/
/MONITOR OPTIONS
/FILL IN THE FOLLOWING LINES TO INDICATE THE
/MONITOR CAPACITY FOR THIS SYSTEM
DECIMAL
JOBMAX= 20 /NUMBER OF SIMULTANEOUS USERS (.LE. 20)
NULINE= 19 /NUMBER OF TTYS TO BE ATTACHED TO SYS.
/ SIMULTANEOUSLY, NOT COUNTING CONSOLE (.LE. 19)
/ GENERALLY .GE. JOBMAX; IF SYS. USES 680 OR DC08,
/ NULINE MUST BE A MULTIPLE OF 5 (FIVE); IF CPU IS
/ A PDP-12, NULINE MUST BE MULTIPLE OF 8 (EIGHT)
TRUKBD= 4 /NUMBER OF ACTUAL KEYBOARDS ON SYSTEM (NOT COUNTING
/ CONSOLE TTY). THIS MUST BE .LE. NULINE; NULINE
/ MAY INCLUDE DUMMY TERMINALS, THIS MAY NOT.
FRCMAX= TRUKBD /THE HIGHEST KEYBOARD # A '00XX' ACCT # MAY FORCE
/ NOTE THAT A '000X' ACCOUNT MAY FORCE UP TO 'NULINE'
TLKMAX= TRUKBD /THE HIGHEST KEYBOARD # WHICH MAY BE 'TALK'ED TO
BRDMAX= TRUKBD /THE HIGHEST KEYBOARD WHICH WILL RECEIVE BROADCASTS
OCTAL
DTAMIN= 0 /THE FIRST DECTAPE DRIVE WHICH WILL BE ASSIGNED
/ FOR 'ASSIGN D' COMMAND; NORMALLY =0, BUT MAY
/ VARY FOR SLIGHTLY RESTRICTED DRIVE USE.
BILLNG= 7 /THE ACCOUNT NUMBER OF THE BILLING SYSTEM
/ 0, IF NO BILLING SYSTEM USED
/
/SYSTEM CONSTANTS
QUANT= -2 /NUMBER OF SYSTEM TICKS PER TIME SLICE (-)
SWDEX= 5 /DISC TRACK OF FIRST SWAP AREA
TTYEVEN=1 /1 INDICATES PARITY TTY MAY BE USED WITH SYS
/ 0 ALLOWS ONLY DEC MODIFIED TTYS
INFLD= 20 /FIELD SELECT THAT 'INIT' SHOULD BE BOOTED INTO
/ MAKING IT 20 AVOIDS PROBLEMS SHOULD A
/ FIELD NEED REPAIR & SYSTEM IS RUN ON 12K
/// END OF SYSTEM CONFIGURATION PARAMETERS

BIN
tss8.23/orig/PIP2.SV Normal file

Binary file not shown.

4
tss8.23/orig/SCAN.TE Normal file
View File

@ -0,0 +1,4 @@
!LOOP!1J :<GLITCH><GLITCH; *.-1> "L OLOOP'
:N Z"N OLOOP' EF

1
tss8.23/orig/SI.CM Normal file
View File

@ -0,0 +1 @@
SI<UWM,PARAM,SI (WKE)

4263
tss8.23/orig/SI.PA Normal file

File diff suppressed because it is too large Load Diff

74
tss8.23/orig/TEST.BI Normal file
View File

@ -0,0 +1,74 @@
$JOB TEST TSS/8 CONFIGURATIONS
$MSG MT TSS/8 #1 & #2 ON D1 & D2
.R PIP
*DSK:<DSK: (OS)
.R FOTP
*DSK:<DTA2:TEST.0?,DTA1:PARAM.PA,SI.PA
$MSG
$MSG MAX PDP-8/E SYSTEM -- SI.01
.PAL SI.01<TEST.01,PARAM,SI (WKE)
$MSG MAX PDP-8/I SYSTEM, W/D680 & D689 -- SI.02
.PAL SI.02<TEST.02,PARAM,SI (WKE)
$MSG MAX PDP-12 SYSTEM -- SI.03
.PAL SI.03<TEST.03,PARAM,SI (WKE)
$MSG MAX PDP-8 SYSTEM, W/PT08 -- SI.04
.PAL SI.04<TEST.04,PARAM,SI (WKE)
.R PIP
*SI.PA/D<
*DSK:<DSK: (OS)
*FIP.PA<DTA1:FIP.PA
$MSG
$MSG -- FIP.01
.PAL FIP.01<TEST.01,PARAM,FIP (WKE)
$MSG -- FIP.02
.PAL FIP.02<TEST.02,PARAM,FIP (WKE)
$MSG -- FIP.03
.PAL FIP.03<TEST.03,PARAM,FIP (WKE)
$MSG -- FIP.04
.PAL FIP.04<TEST.04,PARAM,FIP (WKE)
.R PIP
*FIP.PA/D<
*DSK:<DSK: (OS)
*INIT.PA<DTA1:INIT.PA
$MSG TSS/8 #1 (D1) FREE
$MSG
$MSG -- INIT.01
.PAL INIT.01<TEST.01,PARAM,INIT (WKE)
$MSG -- INIT.02
.PAL INIT.02<TEST.02,PARAM,INIT (WKE)
$MSG -- INIT.03
.PAL INIT.03<TEST.03,PARAM,INIT (WKE)
$MSG -- INIT.04
.PAL INIT.04<TEST.04,PARAM,INIT (WKE)
.R PIP
*INIT.PA/D<
*DSK:<DSK: (OS)
*TS8.PA<DTA2:TS8.PA
$MSG
$MSG -- TS8.01
.PAL TS8.01<TEST.01,PARAM,TS8 (WKE)
$MSG -- TS8.02
.PAL TS8.02<TEST.02,PARAM,TS8 (WKE)
$MSG -- TS8.03
.PAL TS8.03<TEST.03,PARAM,TS8 (WKE)
$MSG -- TS8.04
.PAL TS8.04<TEST.04,PARAM,TS8 (WKE)
.R PIP
*TS8.PA/D<
*DSK:<DSK: (OS)
*TS8II.PA<DTA2:TS8II.PA
$MSG
$MSG -- TS8II.01
.PAL TS8II.01<TEST.01,PARAM,TS8II (WKE)
$MSG -- TS8II.02
.PAL TS8II.02<TEST.02,PARAM,TS8II (WKE)
$MSG -- TS8II.03
.PAL TS8II.03<TEST.03,PARAM,TS8II (WKE)
$MSG -- TS8II.04
.PAL TS8II.04<TEST.04,PARAM,TS8II (WKE)
.R FOTP
*TEST.0?,PARAM.PA,TS8II.PA /D
.R PIP
*DSK:<DSK: (OS)
$END

1
tss8.23/orig/TS8.CM Normal file
View File

@ -0,0 +1 @@
TS8<UWM,PARAM,TS8 (WKE)

5837
tss8.23/orig/TS8.PA Normal file

File diff suppressed because it is too large Load Diff

1
tss8.23/orig/TS8II.CM Normal file
View File

@ -0,0 +1 @@
TS8II<UWM,PARAM,TS8II (WKE)

2421
tss8.23/orig/TS8II.PA Normal file

File diff suppressed because it is too large Load Diff

95
tss8.23/orig/UWM.PA Normal file
View File

@ -0,0 +1,95 @@
/TSS/8 CONFIGURATION FOR UWM
/CONFIGURATION PARAMETERS FOR THE TSS/8 MONITOR
/COPYRIGHT 1971
/DIGITAL EQUIPMENT CORP. -MAYNARD, MASS
/
/TSS/8 PDP-8/E HARDWARE OPTIONS
/THIS SECTION DEFINES THE HARDWARE CONFIGURATION ON
/WHICH THIS TSS/8 MONITOR WILL BE RUN
/FOR EACH STATEMENT THE COMMENT INDICATES THE
/POSSIBLE RESPONSES
CPU= 2 /0 IF CPU IS PDP-8/I; 1 IF PDP-8
/ 2 IF PDP-8/E; 3 IF PDP-12
EAE= 0 /20 IF CPU INCLUDES EAE; 0 IF NOT
CORMEM= 30 /HIGHEST DATA FIELD SELECT; FOR 12K SYS,
/ RESPOND 20; FOR 16K, RESPOND 30; FOR 32K, 70
D680= 0 /2 IF TTY INTERFACING IS 680 OR DC08;
/ 0 IF TTY INTERFACING IS PT08'S
D689= 0 /4 IF 680 OR DC08 INCLUDES 689 OR DC08F;
/ 0 IF IT DOESN'T OR TTY INTERFACING IS PT08'S
RF08= 0 /40 IF SYSTEM DISC IS DF32; 0 IF RF08
RS08= 1 /# OF DISCS IN SYSTEM, WHETHER RF08 OR DF32
RK8E= 0 /# OF RK8E DRIVES; ONLY FIRST IS USED FOR SYSTEM
/ THE REMAINDER ARE TREATED AS PERIPHERALS
READER= 1 /1 IF SYSTEM INCLUDES HIGH-SPEED READER; 0 IF NOT
PUNCH= 1 /1 IF SYS HAS HSP, 0 IF NOT
TC01= 1 /1 IF SYS HAS DECTAPES; 0 IF NOT
TU55= 0 /1 IF SYSTEM INCLUDES MORE THAN TWO DECTAPES
/ 0 IF 0, 1, OR 2 DRIVES
TD8E= 0 /1 IF TD8E DECTAPES AVAILABLE FOR LOADING & DUMPING
/ 0 IF NOT; NOTE THAT TD8E TAPES CANNOT BE USED UNDER
/ TSS/8, THEY REQUIRE CONTINUOUS CPU ATTENTION
PLOTTER=0 /NO SYSTEMS CAN HAVE PLOTTER
LPT= 2 /0 IF NO PRINTER ON SYS; 1 IF LP08; 2 IF LS8E
CDR= 0 /NO SYS CAN HAVE CARD READER
/
/MONITOR OPTIONS
/FILL IN THE FOLLOWING LINES TO INDICATE THE
/MONITOR CAPACITY FOR THIS SYSTEM
DECIMAL
JOBMAX= 10 /NUMBER OF SIMULTANEOUS USERS (.LE. 20)
NULINE= 15 /NUMBER OF TTYS TO BE ATTACHED TO SYS.
/ SIMULTANEOUSLY, NOT COUNTING CONSOLE (.LE. 19)
/ GENERALLY .GE. JOBMAX; IF SYS. USES 680 OR DC08,
/ NULINE MUST BE A MULTIPLE OF 5 (FIVE); IF CPU IS
/ A PDP-12, NULINE MUST BE MULTIPLE OF 8 (EIGHT)
TRUKBD= 9 /NUMBER OF ACTUAL KEYBOARDS ON SYSTEM (NOT COUNTING
/ CONSOLE TTY). THIS MUST BE .LE. NULINE; NULINE
/ MAY INCLUDE DUMMY TERMINALS, THIS MAY NOT.
FRCMAX= TRUKBD /THE HIGHEST KEYBOARD # A '00XX' ACCT # MAY FORCE
/ NOTE THAT A '000X' ACCOUNT MAY FORCE UP TO 'NULINE'
TLKMAX= TRUKBD /THE HIGHEST KEYBOARD # WHICH MAY BE 'TALK'ED TO
BRDMAX= TRUKBD /THE HIGHEST KEYBOARD WHICH WILL RECEIVE BROADCASTS
OCTAL
DTAMIN= 2 /THE FIRST DECTAPE DRIVE WHICH WILL BE ASSIGNED
/ FOR 'ASSIGN D' COMMAND; NORMALLY =0, BUT MAY
/ VARY FOR SLIGHTLY RESTRICTED DRIVE USE.
BILLNG= 7 /THE ACCOUNT NUMBER OF THE BILLING SYSTEM
/ 0, IF NO BILLING SYSTEM USED
/
/SYSTEM CONSTANTS
QUANT= -2 /NUMBER OF SYSTEM TICKS PER TIME SLICE (-)
SWDEX= 5 /DISC TRACK OF FIRST SWAP AREA
TTYEVEN=1 /1 INDICATES PARITY TTY MAY BE USED WITH SYS
/ 0 ALLOWS ONLY DEC MODIFIED TTYS
INFLD= 20 /FIELD SELECT THAT 'INIT' SHOULD BE BOOTED INTO
/ MAKING IT 20 AVOIDS PROBLEMS SHOULD A
/ FIELD NEED REPAIR & SYSTEM IS RUN ON 12K
/// END OF SYSTEM CONFIGURATION PARAMETERS

BIN
tss8.23/si.bin Normal file

Binary file not shown.

5871
tss8.23/si.lst Normal file

File diff suppressed because it is too large Load Diff

BIN
tss8.23/ts8.bin Normal file

Binary file not shown.

7254
tss8.23/ts8.lst Normal file

File diff suppressed because it is too large Load Diff

BIN
tss8.23/ts8ii.bin Normal file

Binary file not shown.

3527
tss8.23/ts8ii.lst Normal file

File diff suppressed because it is too large Load Diff

11
tss8_uwm/COPY.BN Normal file
View File

@ -0,0 +1,11 @@
B@,*@  ,$6 . : >%-= >?9,B: <6%?!?5$<$;$: $%?!?9$=%%9</?&
6> !
6 *"*+ ;%%?!?8$=0$>(/>0> /=0
'6 :> !
96> +
'6> !
% 8> -7 66 : 7:6 <6 < + 50 4?$%+$0+?!
%?#?7 37 <6
*0 ;>(+';5$0%*"2 16*C;/6<#D:* #:  >(!
0 ?*$ 8?*) /#*)#:  

2
tss8_uwm/FIP.CM Normal file
View File

@ -0,0 +1,2 @@
DSK:FIP<SYS:UWM,PARA,PARB,PARC,FIP (WKE)

3253
tss8_uwm/FIP.PA Normal file

File diff suppressed because it is too large Load Diff

2
tss8_uwm/INIT.CM Normal file
View File

@ -0,0 +1,2 @@
DSK:INIT<SYS:UWM,PARA,PARB,PARC,INIT (WKE)

2874
tss8_uwm/INIT.PA Normal file

File diff suppressed because it is too large Load Diff

1
tss8_uwm/INIT.XD Normal file
View File

@ -0,0 +1 @@
b < 2 2$ 22  22 < : 9 > 8! 0&0$0"0! 0 0 0

BIN
tss8_uwm/INIT.XD.bin Normal file

Binary file not shown.

43
tss8_uwm/Makefile Normal file
View File

@ -0,0 +1,43 @@
MACRO = ../utils/macro/macro8x
SHOWBIN = ../utils/showbin
all: init.bin fip.bin si.bin ts8.bin ts8ii.bin INIT.XD.bin
clean:
rm -f *.bin *.prm *.lst *.err *.mem *.dump
init.bin: INIT.PA
rm -f init.err init.lst
$(MACRO) -o init -d UWM.PA PARA.PA PARB.PA PARC.PA INIT.PA
fip.bin: FIP.PA
rm -f fip.err fip.lst
$(MACRO) -o fip -d UWM.PA PARA.PA PARB.PA PARC.PA FIP.PA
si.bin: SI.PA
rm -f si.err si.lst
$(MACRO) -o si -d UWM.PA PARA.PA PARB.PA PARC.PA SI.PA
ts8.bin: TS8.PA
rm -f ts8.err ts8.lst
$(MACRO) -o ts8 -d UWM.PA PARA.PA PARB.PA PARC.PA TS8.PA
ts8ii.bin: TS8II.PA
rm -f ts8ii.err ts8ii.lst
$(MACRO) -o ts8ii -d UWM.PA PARA.PA PARB.PA PARC.PA TS8II.PA
INIT.XD.bin: orig-dectapes/INIT.XD
#it's a bin format papertape encoded as ascii bytes
#but we dumped it as binary
../tapes/tools/asc <orig-dectapes/INIT.XD >INIT.XD.bin
xxx:
$(SHOWBIN) fip.bin >fip.src.mem
$(SHOWBIN) init.bin >init.src.mem
$(SHOWBIN) si.bin >si.src.mem
$(SHOWBIN) ts8.bin >ts8.src.mem
$(SHOWBIN) ts8ii.bin >ts8ii.src.mem
# sdiff fip.rf.mem fip.src.mem
# sdiff init.rf.mem init.src.mem
# sdiff si.rf.mem si.src.mem

446
tss8_uwm/PARA.PA Normal file
View File

@ -0,0 +1,446 @@
/PARAMETERS - UWM VERSION 25
/
/COPYRIGHT 1971 DIGITAL EQUIPMENT CORPORATION
/ MAYNARD, MASSACHUSETTS
/
/EXTENSIVELY MODIFIED AND CORRECTED BY
/ RICHARD BARTLEIN, 1974, 1976
/ UNIVERSITY OF WISCONSIN - MILWAUKEE
/
VERNUM= 31 /SYSTEM VERSION NUMBER
/
IFZERO DC08A <D689=0>
IFNZRO DC08A <
IFNZRO PHONES <D689=4>
IFZERO PHONES <D689=0>>
NULINE= DC08A+PT08+KL8 /NUMBER OF TERMINALS LESS CONSOLE
QUANT= -6 /NUMBER OF SYSTEM TICKS PER TIME SLICE
PLT= 0
STOMIN= 5 /MINIMUM # FREE STORAGE BLOCKS FOR NEW JOB
SWDEX= 5 /DISC TRACK OF FIRST SWAP AREA
TICSPS= 24 /NUMBER OF SYSTEM TICKS PER SECOND
IFZERO RK8E <
IFZERO RF08-40 <
DSKSIZ= RS08^10
>
IFZERO RF08 <
DSKSIZ= RS08^100 /# OF 4K DISC TRACKS
>>
IFNZRO RK8E <
DSKSIZ= 400 /# OF 4K DISC TRACKS
>
CLOCKR= TICSPS%2+1750%TICSPS /MILLISECONDS PER SYSTEM TICK
INCLK2= 0645 /1,728,000 TICKS PER DAY
INCLK1= 600^TICSPS / (LOW 12 BITS OF 86,400 SECS/DAY * TICKS/SEC)
TICMIN= 74^TICSPS /SYSTEM TICKS PER MINUTE
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
WRDSEG= 400 /#WORDS PER DISC SEGMENT
/IOT DEFINITIONS
IFZERO D680-2 <
TTINCR= 6401 /INCREMENT LINE REGISTER
TTI= 6402 /TELETYPE INPUT COMMAND
TTO= 6404 /TELETYPE OUTPUT COMMAND
TTCL= 6411 /CLEAR LINE REGISTER
TTSL= 6412 /SET LINE REGISTER, CLEAR AC
TTRL= 6414 /READ LINE REGISTER
T8SKP= 6421 /SKIP ON CLOCK FLAG
T8OFF= 6422 /TURN CLOCK OFF
TT8ON= 6424 /TURN CLOCK ON
TTRINC= 6461 /INCREMENT THE R REG.
TT8CLR= 6473 /CLEAR AND LOAD THE R REG.
>
/EXTENDED MEMORY
CDF= 6201 /CHANGE TO DATA FIELD 0
CIF= 6202 /CHANGE TO INSTRUCTION FIELD 0
CDI= 6203 /CHANGE DATA & INSTRUCTION FIELDS
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
IFZERO EAE-20 <
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 /SKIP IF AC=MQ=0 (MODE B ONLY)
SAM= 7453 /SUBTRACT AC FROM MQ
SKB= 7671 /SKIP IF MODE B (MESSES UP AC AND MQ)
SWBA= 7447 /CHANGE MODE TO A
SWAB= 7431 /CHANGE MODE TO B (ALSO DOES MQL)
ACS= 7403 /AC(7:11) TO SC; AC CLEARED
>>
IFZERO CPU-2 <
SRQ= 6003 /SKIP ON INTERRUPT REQUEST
GTF= 6004 /LINK TO AC0, GT FLAG TO AC1
RTF= 6005 /AC0 TO LINK, AC1 TO GT FLAG
SGT= 6006 /SKIP ON GT FLAG
CAF= 6007 /CLEAR ALL FLAGS
SPL= 6102 /SKIP ON POWER LOW
>
IFZERO CPU-4 <
SPL= 6102 /SKIP ON POWER LOW
CAL= 6133 /CLEAR POWER LOW 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
LIE= 6665 /AC11 TO INTERRUPT ENABLE (LS08/LS8E)
LSP= 6665 /SET PROGRAM INTERRUPT (LP08/LE8)
LPC= 6666 /TRANSMIT CHAR & CLEAR FLAG
LCP= 6667 /CLEAR PROGRAM INTERRUPT
/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 ADDRESS
/DISC (RF08)
DIML= 6615
DIMA= 6616
DXAL= 6643
/RK05 DISC IOTS
IFZERO PHONES <RKDV=6740>
IFNZRO PHONES <RKDV=6750>
DSKP= RKDV+1 /SKIP IF DONE OR ERROR
DCLR= RKDV+2 /CLEAR THE CONTROLLER
DLAG= RKDV+3 /LOAD DISC ADDRESS & GO
DLCA= RKDV+4 /LOAD CURRENT CORE ADDRESS
DRST= RKDV+5 /READ THE STATUS
DLDC= RKDV+6 /LOAD THE COMMAND REGISTER
DMAINT= RKDV+7 /MAINTENANCE ONLY
/
/TC08 DECTAPE CONTROLLER IOTS
DTRA= 6761 /READ A-REGISTER
DTCA= 6762 /CLEAR A-REGISTER
DTXA= 6764 /XOR INTO A-REGISTER
DTSF= 6771 /SKIP ON DECTAPE FLAG
DTRB= 6772 /READ STATUS-REGISTER (B)
DTLB= 6774 /LOAD STATUS-REGISTER (B)
/CARD READER IOTS
RCSF= 6631 /SKIP ON DATA READY
RCRA= 6632 /READ ALPHANUMERIC
RCRB= 6634 /READ BINARY
RCNO= 6635 /READ CONDITIONS OUT TO CARD READER (8/E ONLY)
RCRC= 6636 /READ COMPRESSED (8/E ONLY)
RCNI= 6637 /READ CONDITION IN FROM CARD READER (8/E ONLY)
RCSD= 6671 /SKIP ON CARD DONE FLAG
RCSE= 6672 /SELECT CARD READER AND SKIP IF READY
RCRD= 6674 /CLEAR CARD DONE FLAG
RCSI= 6675 /SKIP IF INTERRUPT BEING GENERATED (8/E ONLY)
RCTF= 6677 /CLEAR TRANSITION FLAGS (8/E ONLY)
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
>
IFZERO CPU-3 <
CLAB= 6133
CLLR= 6132
CLEN= 6134
CLSA= 6135
CLSK= 6131
MTPF= 6113
MINT= 6115
MTON= 6117
MKTF= 6123
MINS= 6125
MTRS= 6127
MKSF= 6111
MKCC= 6112
MKRS= 6114
MKRB= 6116
MTSF= 6121
MTCF= 6122
MTPC= 6124
MTLS= 6126
>
IFZERO CPU-4 <
CLLE= 6135 /AC11 TO CLOCK INTERRUPT ENABLE
CLCL= 6136 /CLEAR CLOCK FLAG
CLSK= 6137 /SKIP ON CLOCK 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 (AS USED INTERNALLY)
ASD= 0040 /ASSIGN DEVICE
REL= 0042 /RELEASE DEVICE
REN= 0200 /RENAME FILE
OPEN= 6601 /OPEN FILE
CLOS= 0202 /CLOSE
RFILE= 6603 /READ FILE
PROT= 0204 /PROTECT
WFILE= 6605 /WRITE FILE
XOPEN= 6606 /OPEN FILE WITH EXCLUSIVE USE
CPASS= 0207 /CHANGE A USER'S PASSWORD
CRF= 0210 /CREATE
EXT= 0211 /EXTEND
RED= 0212 /REDUCE
FINF= 6613 /FILE INFORMATION
LIN= 0214 /LOGIN
LOUT= 0215 /LOGOUT
BCLR= 0220 /CLEAR MFD BILLING INFORMATION
/DEVICE DATA BLOCK
DDBSTS= 0 /WORD 1. STATUS AND UNIT NUMBER
DXON= 2000 /XOFF SENT FLAG - SEND 'XON' WHEN NEEDED
DSI= 1000 /DESTINATION IS S.I. FLAG
DFULL= 400 /INDICATES BUFFER IS FULL
DUPL= 200 /CONSOLE IN DUPLEX MODE
SICOM= 100 /COMMAND WAITING
CTRLC= 40 /USER TYPED CTRL/C
DECHO= 20 /CAUSE 'SI' TO ECHO INPUT BUFFER
DHALF= 10 /KEYBOARD IS HALF-DUPLEX (HARDWARE)
DFORC= 4 /KEYBOARD WAS JUST FORCED
CTRLB= 2 /COMMAND PRECEDED BY EXPLICIT CTRL/B
/OUTPUT SIDE:
CTRLS= 4000 /CTRL-S ENTERED (OUTPUT FROZEN)
DXOFF= 3000 /JAM 'XOFF' INTO OUTPUT
DBELL= 1000 /JAM 'BELL' INTO OUTPUT
DTALK= 1 /LOCK KEYBOARD AGAINST TALKS
/OUTPUT REGISTER:
/ 4000 - BUFFER CHECKING REQUESTED
/ 2000 - DEVICE INTERRUPT EXPECTED
/ 1000 - 5-SECOND TIMEOUT FLAG
/ 400-2 - NEXT BUFFERED CHARACTER
/ 0001 - BUFFERED CHARACTER WAITING
DDBJN= 1 /WORD 2. JOB NUMBER IN 7-11; DEVICE NUMBER IN 0-6
DDBBRK= 2 /BREAK MASK
SIBRKM= 204 /SI BREAK MASK
DDBTIM= 3 /TIME THAT DEVICE WAS ASSIGNED
DDBINP= 4 /BUFFER FILL POINTER
DDBINC= 5 /BUFFER FILL COUNT
DDBOUC= 6 /BUFFER EMPTY COUNT
DDBOUP= 7 /BUFFER EMPTY POINTER
/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 READ-ONLY (BIT 9), FILE PRIVILEGED (BIT 11)
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
/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
JSPRIV= 400 /LIBRARY PROGRAM (HAS PRIVILEGES)
JSHLT= 200 /PROGRAM EXECUTED 'HLT'
JSIOT= 100 /NON-RESIDENT IOT
JSIOTC= 40 /COPY IOT RESULT TO USER
JSRSEN= 20 /PROGRAMMATIC CTRL/C ENABLE
JSINER= 10 /INHIBIT SI ERROR UNTIL NEXT COMMAND
JSACC= 200
JSBAT= 100 /BATCH-MODE
/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 /DELIMITER SEEN
JSLPT= 40 /LPT BUFFER IN USE BUT NOT FULL
JSTEL= 20 /OUTPUT BUFFER NOT FULL
JSPTR= 10 /CHARACTER IN READER BUFFER
JSPTP= 4 /PUNCH BUFFER IS NOT FULL
JSERR= 2 /SYSTEM ERROR DETECTED
JSWAIT= 1 /JOB NOT IN WAIT STATE
JOBSTB= 2 /DEVICE STATUS REGISTER (RK05, DECTAPE, & CARD READER)
JOBWMK= JOBSTB+1 /WAIT MASK
JOBDWT= JOBWMK+1 /JOB DEVICE-WAIT
JOBSRA= JOBDWT+1 /JOB RESTART ADDRESS
JOBERR= JOBSRA+1 /JOB ERROR RESTART ADDRESS
JOBLNK= JOBERR+1 /IOT LINKAGE
JOBSWR= JOBLNK+1 /SWITCH REGISTER
JOBREG= JOBSWR+1 /PC, AC, & LINK (W/MODE, GT, & SC)
JOBEAE= JOBREG+3 /MQ REGISTER
JOBACT= JOBEAE+1 /USER'S ACCOUNT #
JOBRTM= JOBACT+1 /LOW ORDER RUN TIME
JOBRTH= JOBRTM+1 /HIGH ORDER RUN TIME
JOBF0= JOBRTH+1 /POINTER TO FILE 0 CONTROL
JOBF1= JOBF0+1 /POINTER TO FILE 1 CONTROL
JOBF2= JOBF1+1 /POINTER TO FILE 2 CONTROL
JOBF3= JOBF2+1 /POINTER TO FILE 3 CONTROL
JOBSCH= JOBF3+1 /SCHEDULING CONTROL-WORD
/CORE TABLE CONTROL FLAGS
FSWP= 4000 /SWAP REQUEST
LOCK= 2000 /LOCK IN CORE
NOTRUN= 1000 /HAS NOT BEEN SCHEDULED TO RUN
FIP= 400 /FILE PHANTOM (NOTE: FIP HAS BEEN ASSUMED EQUAL TO WRDSEG)
SI= 200 /SYSTEM COMMAND INTERPRETER PHANTOM
NOHOLD= 140 /DISC COMPLETION PRIORITY (SKIPPED EVERY 4 TRANSFERS)
CJOB= 37 /MASK FOR JOB NUMBER
/FIP TABLE DEFINITIONS
SATSIZ= 530
ENTABL= 5600
UTABLE= JOBMAX^10+ENTABL
RTABLE= JOBMAX^4+UTABLE /*** CHANGE TO ^10 LATER ***
/TS8 TABLE DEFINITIONS
CORTBL= 7001
L2QTB= CORTBL+7
/TS8II TABLE DEFINITIONS
IFNZRO CDVIN <CDVGAP=3> /ROOM FOR HSR, ?, AND CDR
IFZERO CDVIN <CDVGAP=0>
IFZERO DC08A <DCSIZE=0>
IFNZRO DC08A <DCSIZE=400> /DC08A & 689AG CODE
OUTREG= 200 /ACTIVE OUTPUT REGISTERS
SKPTBL= OUTREG+NULINE+CONTTY+CDVOUT+2 /START OF IOT SKIP TABLE
SKPTP= SKPTBL+NULINE+NULINE+CONTTY+CONTTY+CDVIN+CDVGAP+1
RINGIN= SKPTP+CDVOUT+3 /INPUT RING BUFFER
ENDBUF= OUTREG+200 /END OF KEYBOARD INPUT BUFFER
INPUTS= ENDBUF-RINGIN%2 /NUMBER OF POSSIBLE RING-BUFFER ENTRIES
DATFLD= CDF 10 /DATA FIELD SELECT
DATA1= 2400+DCSIZE /START OF DATA AREA (ALMOST)
DEVTBL= DATA1+200 /ACTUAL START OF DATA AREA
DEVTBE= DEVTBL+NULINE+NULINE+2
JOBTBL= DEVTBE+35
CLKTBL= JOBTBL+JOBMAX+1
TTYTBL= CLKTBL+JOBMAX+1
PRGTBL= TTYTBL+JOBMAX+1
DSUTBL= PRGTBL+JOBMAX+JOBMAX+JOBMAX-7
OUTDIF= -OUTREG^2+DEVTBL /FOR LINKING BETWEEN OUTREG & DEVTBL
IFZERO EAE-20 <MQREG=1>
IFZERO EAE <IFZERO CPU-2 <MQREG=1>
IFNZRO CPU-2 <MQREG=0>>
/// END OF SELF-DEFINING PARAMETERS -- START OF MONITOR LINKAGES ///
/A VERY FEW SELDOM CHANGED POINTERS
AUTOST= 4201 /AUTOMATIC SYSTEM RESTART ENTRANCE TO 'INIT'
FIPBLK= 7720 /THE I/O TRANSFER BLOCK FOR 'FIP'
/FREQUENTLY CHANGED POINTERS IN TS8 & TS8II; THESE ARE UPDATED
/BY THE 'LINK.TE' TECO MACRO. IN THE SOURCE, THEY ARE FLAGGED
/FOR THE MACRO TO FIND BY '/*'.

51
tss8_uwm/PARB.PA Normal file
View File

@ -0,0 +1,51 @@
BLT0= 5200 /BLOCK TRANSFER
CLK1= 0033 /SYSTEM DAYCLOCK (LOW)
CLK2= 0034 / (HIGH)
CONDBA= 0030 /POINTER TO DEVTBL ENTRY IN USE
CONDDB= 0031 /POINTER TO DDB IN USE
CORSRC= 1317 /CORTBL SEARCH
CORTBL= 7001 /CORE ALLOCATION TABLE (FIXED)
DATE= 0035
DEVCHK= 7045 /CHECK DEVICE OWNERSHIP
DSBUSY= 0036 /DISC BUSY COUNT
DTDEF0= 0535 /DECTAPE ERROR REGISTRATION
DTDSF0= 0541 /DECTAPE BUFFER TO SWAP AREA
DTDSK= 0527 /DECTAPE DISC COMPLETION
DTL20= 0551 /DECTAPE LEVEL-2 DISPATCH
DTRKHG= 3671 /ERROR SETTING FROM FIELD 1
ENDIOT= 5333 /JMP TO EXIT HANDLER
F1RTN= 0277 /RETURN FROM FIELD 1 INTERRUPT HANDLERS
FIPJOB= 0057 /JOB REQUESTING 'FIP'
FRECNT= 0040 /AVAILABLE FREE-CORE BLOCKS
FREE= 0037 /LINK TO FIRST FREE-CORE BLOCK
GETB= 1400 /GET A FREE-BLOCK
GETDB0= 1440 /GET DDB BLOCK
GETJTB= 7200 /GET ADDRESS OF LINKED ENTRY
GIR00= 6200 /GENERAL INPUT ROUTINE
JOB= 0062 /CURRENTLY ACTIVE JOB
L2EXIT= 4051 /LEVEL-2 EXIT ROUTINE
L2SF= 0041 /LEVEL 2: SAVED FIELD AND MODE
L2SV0= 0042 /LEVEL 2: SAVED PC
L2TIM3= 2631 /RETURN FROM 'TIMER' ROUTINE
NFSEGS= 5533 /NUMBER OF FREE DISC SEGMENTS
OUTIOT= 2340 /INCREMENT 'ACFLG' TO SIGNAL OUTPUT
OVERL1= 5764
OVERLA= 2364 /DISC TERMINATION FOR OVERLAYS
OVRLA1= 0572 /SYSTEM OVERLAY COMPLETION DISPATCHER
PRINT0= 1203 /TYPE CHARACTER
QUEUE0= 1473 /REGISTER LEVEL-2 FOR FIELD 1
READFI= 3652 /SI FILE-LOADER
REDO0= 4172 /'REDO' AND IOT
RELOAD= 3600 /AUTO-RESTART STARTUP
RETB= 0600 /FREE A CORE-BLOCK
RKL20= 3676 /LEVEL-2 DISPATCH FOR RK05
SCHED0= 3640 /'RSCHED' ENTRY
SICLR= 4400 /BUFFER CLEAR ROUTINE
SIDATA= 0020 /SI CONTROL WORDS
SLEEP= 2357 /PUT THE JOB TO SLEEP
TIMCDR= 2621 /CARD READ TIMER
TTCHAR= 0032 /CHARACTER FOR FEED ROUTINES
UUDF= 0172 /USER FIELD SELECT
UUOERR= 4404 /USER IOT ERROR
UUOEX1= 0336 /IOT EXIT ROUTINE
WSCHED= 3006 /'WAIT' ENTRY

22
tss8_uwm/PARC.PA Normal file
View File

@ -0,0 +1,22 @@
CDL11= 1720 /LEVEL-1 INTERRUPT FOR CARD READER
CDL21= 1704 /LEVEL-2 HANDLER FOR CARD READER
CJOBDA= 0020 /CURRENT JOB DATA POINTER
DTJOB= 0027 /JOB HOLDING DECTAPE CONTROLLER
DTL11= 0601 /LEVEL-1 INTERRUPT FOR DECTAPE
DTL21= 1004 /DECTAPE LEVEL-2 COMPLETION
F1BUF= 0177 /DDB EMPTY BLOCK
F1DTST= 2512 /DECTAPE STOP ROUTINE
F1ECNT= 0176 /DDB EMPTY COUNT
F1OFFJ= 0036 /SYSTEM OFF/ON COMMAND FLAG
F1TCNT= 0175 /DDB CHARACTER COUNT
RKJOB= 0045 /JOB HOLDING RK05 CONTROLLER
RKL11= 2000 /LEVEL-1 INTERRUPT FOR RK05
RKL21= 1615 /LEVEL-2 HANDLER FOR RK05
TIMER0= 2200 /FIELD 1 TIMER ROUTINE
UPEEK1= 2445 /FIELD 1 PEEK IOT CODE
UPTIM1= 0174 /SYSTEM UPTIME
UPTIM2= 0173
UUCDR= 1735 /UUO ENTRY FOR CARD READER
UUDTRK= 1415 /UUO ENTRY FOR DECTAPE & RK05
WINBAS= 7730 /BASIC RETRIEVAL WINDOW

105
tss8_uwm/PHAM.PA Normal file
View File

@ -0,0 +1,105 @@
/TSS-8.25 CONFIGURATION FOR REMCO OF RACINE
/CONFIGURATION PARAMETERS FOR THE TSS/8 MONITOR
/COPYRIGHT 1971 - DIGITAL EQUIPMENT CORPORATION; MAYNARD, MASS.
/
/TSS-8 SYSTEM PARAMETERS AND OPTIONS. FOR EACH PARAMETER,
/THE COMMENT INIDCATES THE POSSIBLE RESPONSES.
DEBUG= 2 /SYSTEM DEBUGGING CONTROL:
/ =0, PRODUCTION SYSTEM (AUTO-RESTARTS & ERROR FIXUP)
/ =1, SYSTEM RELIABILITY (JUST AUTO-RESTARTS)
/ =2, SYSTEM DEBUGGING (SYSTEM HALTS ON ERROR)
/ =3, FULL CHECKING (THOROUGH 'RETB' CHECK)
/BITS 0-8, AVAILABLE FOR LOCAL SWITCHES:
/ 4000 - ENABLE MQ MEMORY DISPLAY (IN TIMER)
CPU= 2 /0 IF CPU IS PDP-8/I; 1 IF PDP-8
/ 2 IF PDP-8/E; 3 IF PDP-12; 4 IF PDP-8/A
EAE= 0 /20 IF CPU INCLUDES EAE; 0 IF NOT
CORMEM= 30 /HIGHEST DATA FIELD SELECT; FOR 12K SYS,
/ RESPOND 20; FOR 16K, RESPOND 30; FOR 32K, 70
D680= 0 /2 IF TTY INTERFACING IS 680 OR DC08;
/ 0 IF TTY INTERFACING IS PT08'S
PHONES= 0 /1 IF 680 OR DC08 INCLUDES 689 OR DC08F;
/ 0 IF IT DOESN'T OR TTY INTERFACING IS PT08'S
RF08= 0 /40 IF SYSTEM DISC IS DF32; 0 IF RF08
RS08= 1 /# OF DISCS IN SYSTEM, WHETHER RF08 OR DF32
RK05= 0 /# OF NONSYSTEM RK05 DRIVES
RK8E= 0 /# OF RK8E DRIVES; ONLY FIRST IS USED FOR SYSTEM
/ THE REMAINDER ARE TREATED AS PERIPHERALS
READER= 1 /1 IF SYSTEM INCLUDES HIGH-SPEED READER; 0 IF NOT
PUNCH= 0 /1 IF SYS HAS HSP, 0 IF NOT
TC01= 1 /1 IF SYS HAS DECTAPES; 0 IF NOT
TD8E= 0 /1 IF TD8E DECTAPES AVAILABLE FOR LOADING & DUMPING
/ 0 IF NOT; NOTE THAT TD8E TAPES CANNOT BE USED UNDER
/ TSS/8, THEY REQUIRE CONTINUOUS CPU ATTENTION
LPT= 3 /0 IF NO PRINTER ON SYS; 1 IF LP08; 2 IF LS8E; 3 IF NONSTANDARD
CDR= 0 / =1, IF CARD READER
/
/MONITOR OPTIONS
/FILL IN THE FOLLOWING LINES TO INDICATE THE
/MONITOR CAPACITY FOR THIS SYSTEM
DECIMAL
JOBMAX= 6 /NUMBER OF SIMULTANEOUS USERS (.LE. 20)
CONTTY= 1 / (ALWAYS HAVE A CONSOLE)
DC08A= 0 /NUMBER OF TERMINALS VIA DC08A (PDP-8/I ONLY, 19 MAX)
DC08LO= 0 /LOWEST LINE-NUMBER USED ON DC08A
PT08= 0 /NUMBER OF TERMINALS VIA PT08 (PDP-8 & PDP-8/I ONLY)
KL8= 15 /NUMBER OF TERMINALS VIA KL8E (PDP-8/E ONLY, 19 MAX)
CDVIN= 3 /NONSTANDARD INPUT CHARACTER DEVICES (HIGHEST USED)
/ 1 = R2; 2 = X0; 3 = X1; 4 = X2; 5 = X3
CDVOUT= 4 /NONSTANDARD OUTPUT CHARACTER DEVICES (HIGHEST USED)
/ 1 = P2; 2 = L2; 3 = Y0; 4 = Y1; 5 = Y2; 6 = Y3
TRUKBD= 3 /NUMBER OF ACTUAL KEYBOARDS ON SYSTEM (NOT COUNTING
/ CONSOLE TTY). THIS MUST BE .LE. NULINE; NULINE
/ MAY INCLUDE DUMMY TERMINALS, THIS MAY NOT.
FRCMAX= TRUKBD /THE HIGHEST KEYBOARD # A '00XX' ACCT # MAY FORCE
/ NOTE THAT A '000X' ACCOUNT MAY FORCE UP TO 'NULINE'
TLKMAX= TRUKBD /THE HIGHEST KEYBOARD # WHICH MAY BE 'TALK'ED TO
BRDMAX= TRUKBD /THE HIGHEST KEYBOARD WHICH WILL RECEIVE BROADCASTS
OCTAL
DTAMIN= 2 /THE FIRST DECTAPE DRIVE WHICH WILL BE ASSIGNED
/ FOR 'ASSIGN D' COMMAND; NORMALLY =0, BUT MAY
/ VARY FOR SLIGHTLY RESTRICTED DRIVE USE.
BILLNG= 7 /THE ACCOUNT NUMBER OF THE BILLING SYSTEM
/ 0, IF NO BILLING SYSTEM USED
/
/SYSTEM CONSTANTS
INFLD= 20 /FIELD SELECT THAT 'INIT' SHOULD BE BOOTED INTO
/ MAKING IT 20 AVOIDS PROBLEMS SHOULD A
/ FIELD NEED REPAIR & SYSTEM IS RUN ON 12K
TTYEVEN=1 /1 INDICATES PARITY TTY MAY BE USED WITH SYS
/ 0 ALLOWS ONLY DEC MODIFIED TTYS
/// END OF SYSTEM CONFIGURATION PARAMETERS

2
tss8_uwm/SI.CM Normal file
View File

@ -0,0 +1,2 @@
DSK:SI<SYS:UWM,PARA,PARB,PARC,SI (WKE)

4407
tss8_uwm/SI.PA Normal file

File diff suppressed because it is too large Load Diff

5553
tss8_uwm/TS8.PA Normal file

File diff suppressed because it is too large Load Diff

2195
tss8_uwm/TS8II.PA Normal file

File diff suppressed because it is too large Load Diff

2230
tss8_uwm/TS8II.PA.1 Normal file

File diff suppressed because it is too large Load Diff

105
tss8_uwm/UWM.PA Normal file
View File

@ -0,0 +1,105 @@
/TSS-8.25 CONFIGURATION FOR UWM
/CONFIGURATION PARAMETERS FOR THE TSS/8 MONITOR
/COPYRIGHT 1971 - DIGITAL EQUIPMENT CORPORATION; MAYNARD, MASS.
/
/TSS-8 SYSTEM PARAMETERS AND OPTIONS. FOR EACH PARAMETER,
/THE COMMENT INIDCATES THE POSSIBLE RESPONSES.
DEBUG= 0 /SYSTEM DEBUGGING CONTROL:
/ =0, PRODUCTION SYSTEM (AUTO-RESTARTS & ERROR FIXUP)
/ =1, SYSTEM RELIABILITY (JUST AUTO-RESTARTS)
/ =2, SYSTEM DEBUGGING (SYSTEM HALTS ON ERROR)
/ =3, FULL CHECKING (THOROUGH 'RETB' CHECK)
/BITS 0-8, AVAILABLE FOR LOCAL SWITCHES:
/ 4000 - ENABLE MQ MEMORY DISPLAY (IN TIMER)
CPU= 2 /0 IF CPU IS PDP-8/I; 1 IF PDP-8
/ 2 IF PDP-8/E; 3 IF PDP-12; 4 IF PDP-8/A
EAE= 0 /20 IF CPU INCLUDES EAE; 0 IF NOT
CORMEM= 70 /HIGHEST DATA FIELD SELECT; FOR 12K SYS,
/ RESPOND 20; FOR 16K, RESPOND 30; FOR 32K, 70
D680= 0 /2 IF TTY INTERFACING IS 680 OR DC08;
/ 0 IF TTY INTERFACING IS PT08'S
PHONES= 0 /1 IF 680 OR DC08 INCLUDES 689 OR DC08F;
/ 0 IF IT DOESN'T OR TTY INTERFACING IS PT08'S
RF08= 0 /40 IF SYSTEM DISC IS DF32; 0 IF RF08
RS08= 1 /# OF DISCS IN SYSTEM, WHETHER RF08 OR DF32
RK05= 1 /# OF NONSYSTEM RK05 DRIVES
RK8E= 0 /# OF RK8E DRIVES; ONLY FIRST IS USED FOR SYSTEM
/ THE REMAINDER ARE TREATED AS PERIPHERALS
READER= 1 /1 IF SYSTEM INCLUDES HIGH-SPEED READER; 0 IF NOT
PUNCH= 1 /1 IF SYS HAS HSP, 0 IF NOT
TC01= 1 /1 IF SYS HAS DECTAPES; 0 IF NOT
TD8E= 0 /1 IF TD8E DECTAPES AVAILABLE FOR LOADING & DUMPING
/ 0 IF NOT; NOTE THAT TD8E TAPES CANNOT BE USED UNDER
/ TSS/8, THEY REQUIRE CONTINUOUS CPU ATTENTION
LPT= 3 /0 IF NO PRINTER ON SYS; 1 IF LP08; 2 IF LS8E; 3 IF NONSTANDARD
CDR= 0 /NO SYS CAN HAVE CARD READER
/
/MONITOR OPTIONS
/FILL IN THE FOLLOWING LINES TO INDICATE THE
/MONITOR CAPACITY FOR THIS SYSTEM
DECIMAL
JOBMAX= 20 /NUMBER OF SIMULTANEOUS USERS (.LE. 20)
CONTTY= 1 / (ALWAYS HAVE A CONSOLE)
DC08A= 0 /NUMBER OF TERMINALS VIA DC08A (PDP-8/I ONLY, 19 MAX)
DC08LO= 0 /LOWEST LINE-NUMBER USED ON DC08A
PT08= 0 /NUMBER OF TERMINALS VIA PT08 (PDP-8 & PDP-8/I ONLY)
KL8= 15 /NUMBER OF TERMINALS VIA KL8E (PDP-8/E ONLY, 19 MAX)
CDVIN= 3 /NONSTANDARD INPUT CHARACTER DEVICES (HIGHEST USED)
/ 1 = R2; 2 = X0; 3 = X1; 4 = X2; 5 = X3
CDVOUT= 4 /NONSTANDARD OUTPUT CHARACTER DEVICES (HIGHEST USED)
/ 1 = P2; 2 = L2; 3 = Y0; 4 = Y1; 5 = Y2; 6 = Y3
TRUKBD= 10 /NUMBER OF ACTUAL KEYBOARDS ON SYSTEM (NOT COUNTING
/ CONSOLE TTY). THIS MUST BE .LE. NULINE; NULINE
/ MAY INCLUDE DUMMY TERMINALS, THIS MAY NOT.
FRCMAX= TRUKBD /THE HIGHEST KEYBOARD # A '00XX' ACCT # MAY FORCE
/ NOTE THAT A '000X' ACCOUNT MAY FORCE UP TO 'NULINE'
TLKMAX= TRUKBD /THE HIGHEST KEYBOARD # WHICH MAY BE 'TALK'ED TO
BRDMAX= TRUKBD /THE HIGHEST KEYBOARD WHICH WILL RECEIVE BROADCASTS
OCTAL
DTAMIN= 2 /THE FIRST DECTAPE DRIVE WHICH WILL BE ASSIGNED
/ FOR 'ASSIGN D' COMMAND; NORMALLY =0, BUT MAY
/ VARY FOR SLIGHTLY RESTRICTED DRIVE USE.
BILLNG= 7 /THE ACCOUNT NUMBER OF THE BILLING SYSTEM
/ 0, IF NO BILLING SYSTEM USED
/
/SYSTEM CONSTANTS
INFLD= 20 /FIELD SELECT THAT 'INIT' SHOULD BE BOOTED INTO
/ MAKING IT 20 AVOIDS PROBLEMS SHOULD A
/ FIELD NEED REPAIR & SYSTEM IS RUN ON 12K
TTYEVEN=1 /1 INDICATES PARITY TTY MAY BE USED WITH SYS
/ 0 ALLOWS ONLY DEC MODIFIED TTYS
/// END OF SYSTEM CONFIGURATION PARAMETERS

1903
tss8_uwm/diffs.txt Normal file

File diff suppressed because it is too large Load Diff

BIN
tss8_uwm/fip.bin Normal file

Binary file not shown.

4431
tss8_uwm/fip.lst Normal file

File diff suppressed because it is too large Load Diff

BIN
tss8_uwm/init.bin Normal file

Binary file not shown.

4189
tss8_uwm/init.lst Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,11 @@
B@,*@  ,$6 . : >%-= >?9,B: <6%?!?5$<$;$: $%?!?9$=%%9</?&
6> !
6 *"*+ ;%%?!?8$=0$>(/>0> /=0
'6 :> !
96> +
'6> !
% 8> -7 66 : 7:6 <6 < + 50 4?$%+$0+?!
%?#?7 37 <6
*0 ;>(+';5$0%*"2 16*C;/6<#D:* #:  >(!
0 ?*$ 8?*) /#*)#:  

View File

@ -0,0 +1,2 @@
DSK:FIP<SYS:UWM,PARA,PARB,PARC,FIP (WKE)

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
DSK:INIT<SYS:UWM,PARA,PARB,PARC,INIT (WKE)

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
b < 2 2$ 22  22 < : 9 > 8! 0&0$0"0! 0 0 0

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
BLT0= 5200 /BLOCK TRANSFER CLK1= 0033 /SYSTEM DAYCLOCK (LOW) CLK2= 0034 / (HIGH) CONDBA= 0030 /POINTER TO DEVTBL ENTRY IN USE CONDDB= 0031 /POINTER TO DDB IN USE CORSRC= 1317 /CORTBL SEARCH CORTBL= 7001 /CORE ALLOCATION TABLE (FIXED) DATE= 0035 DEVCHK= 7045 /CHECK DEVICE OWNERSHIP DSBUSY= 0036 /DISC BUSY COUNT DTDEF0= 0535 /DECTAPE ERROR REGISTRATION DTDSF0= 0541 /DECTAPE BUFFER TO SWAP AREA DTDSK= 0527 /DECTAPE DISC COMPLETION DTL20= 0551 /DECTAPE LEVEL-2 DISPATCH DTRKHG= 3671 /ERROR SETTING FROM FIELD 1 ENDIOT= 5333 /JMP TO EXIT HANDLER F1RTN= 0277 /RETURN FROM FIELD 1 INTERRUPT HANDLERS FIPJOB= 0057 /JOB REQUESTING 'FIP' FRECNT= 0040 /AVAILABLE FREE-CORE BLOCKS FREE= 0037 /LINK TO FIRST FREE-CORE BLOCK GETB= 1400 /GET A FREE-BLOCK GETDB0= 1440 /GET DDB BLOCK GETJTB= 7200 /GET ADDRESS OF LINKED ENTRY GIR00= 6200 /GENERAL INPUT ROUTINE JOB= 0062 /CURRENTLY ACTIVE JOB L2EXIT= 4051 /LEVEL-2 EXIT ROUTINE L2SF= 0041 /LEVEL 2: SAVED FIELD AND MODE L2SV0= 0042 /LEVEL 2: SAVED PC L2TIM3= 2631 /RETURN FROM 'TIMER' ROUTINE NFSEGS= 5533 /NUMBER OF FREE DISC SEGMENTS OUTIOT= 2340 /INCREMENT 'ACFLG' TO SIGNAL OUTPUT OVERL1= 5764 OVERLA= 2364 /DISC TERMINATION FOR OVERLAYS OVRLA1= 0572 /SYSTEM OVERLAY COMPLETION DISPATCHER PRINT0= 1203 /TYPE CHARACTER QUEUE0= 1473 /REGISTER LEVEL-2 FOR FIELD 1 READFI= 3652 /SI FILE-LOADER REDO0= 4172 /'REDO' AND IOT RELOAD= 3600 /AUTO-RESTART STARTUP RETB= 0600 /FREE A CORE-BLOCK RKL20= 3676 /LEVEL-2 DISPATCH FOR RK05 SCHED0= 3640 /'RSCHED' ENTRY SICLR= 4400 /BUFFER CLEAR ROUTINE SIDATA= 0020 /SI CONTROL WORDS SLEEP= 2357 /PUT THE JOB TO SLEEP TIMCDR= 2621 /CARD READ TIMER TTCHAR= 0032 /CHARACTER FOR FEED ROUTINES UUDF= 0172 /USER FIELD SELECT UUOERR= 4404 /USER IOT ERROR UUOEX1= 0336 /IOT EXIT ROUTINE WSCHED= 3006 /'WAIT' ENTRY

View File

@ -0,0 +1 @@
CDL11= 1720 /LEVEL-1 INTERRUPT FOR CARD READER CDL21= 1704 /LEVEL-2 HANDLER FOR CARD READER CJOBDA= 0020 /CURRENT JOB DATA POINTER DTJOB= 0027 /JOB HOLDING DECTAPE CONTROLLER DTL11= 0601 /LEVEL-1 INTERRUPT FOR DECTAPE DTL21= 1004 /DECTAPE LEVEL-2 COMPLETION F1BUF= 0177 /DDB EMPTY BLOCK F1DTST= 2512 /DECTAPE STOP ROUTINE F1ECNT= 0176 /DDB EMPTY COUNT F1OFFJ= 0036 /SYSTEM OFF/ON COMMAND FLAG F1TCNT= 0175 /DDB CHARACTER COUNT RKJOB= 0045 /JOB HOLDING RK05 CONTROLLER RKL11= 2000 /LEVEL-1 INTERRUPT FOR RK05 RKL21= 1615 /LEVEL-2 HANDLER FOR RK05 TIMER0= 2200 /FIELD 1 TIMER ROUTINE UPEEK1= 2445 /FIELD 1 PEEK IOT CODE UPTIM1= 0174 /SYSTEM UPTIME UPTIM2= 0173 UUCDR= 1735 /UUO ENTRY FOR CARD READER UUDTRK= 1415 /UUO ENTRY FOR DECTAPE & RK05 WINBAS= 7730 /BASIC RETRIEVAL WINDOW

View File

@ -0,0 +1 @@
/TSS-8.25 CONFIGURATION FOR REMCO OF RACINE /CONFIGURATION PARAMETERS FOR THE TSS/8 MONITOR /COPYRIGHT 1971 - DIGITAL EQUIPMENT CORPORATION; MAYNARD, MASS. / /TSS-8 SYSTEM PARAMETERS AND OPTIONS. FOR EACH PARAMETER, /THE COMMENT INIDCATES THE POSSIBLE RESPONSES. DEBUG= 2 /SYSTEM DEBUGGING CONTROL: / =0, PRODUCTION SYSTEM (AUTO-RESTARTS & ERROR FIXUP) / =1, SYSTEM RELIABILITY (JUST AUTO-RESTARTS) / =2, SYSTEM DEBUGGING (SYSTEM HALTS ON ERROR) / =3, FULL CHECKING (THOROUGH 'RETB' CHECK) /BITS 0-8, AVAILABLE FOR LOCAL SWITCHES: / 4000 - ENABLE MQ MEMORY DISPLAY (IN TIMER) CPU= 2 /0 IF CPU IS PDP-8/I; 1 IF PDP-8 / 2 IF PDP-8/E; 3 IF PDP-12; 4 IF PDP-8/A EAE= 0 /20 IF CPU INCLUDES EAE; 0 IF NOT CORMEM= 30 /HIGHEST DATA FIELD SELECT; FOR 12K SYS, / RESPOND 20; FOR 16K, RESPOND 30; FOR 32K, 70 D680= 0 /2 IF TTY INTERFACING IS 680 OR DC08; / 0 IF TTY INTERFACING IS PT08'S PHONES= 0 /1 IF 680 OR DC08 INCLUDES 689 OR DC08F; / 0 IF IT DOESN'T OR TTY INTERFACING IS PT08'S RF08= 0 /40 IF SYSTEM DISC IS DF32; 0 IF RF08 RS08= 1 /# OF DISCS IN SYSTEM, WHETHER RF08 OR DF32 RK05= 0 /# OF NONSYSTEM RK05 DRIVES RK8E= 0 /# OF RK8E DRIVES; ONLY FIRST IS USED FOR SYSTEM / THE REMAINDER ARE TREATED AS PERIPHERALS READER= 1 /1 IF SYSTEM INCLUDES HIGH-SPEED READER; 0 IF NOT PUNCH= 0 /1 IF SYS HAS HSP, 0 IF NOT TC01= 1 /1 IF SYS HAS DECTAPES; 0 IF NOT TD8E= 0 /1 IF TD8E DECTAPES AVAILABLE FOR LOADING & DUMPING / 0 IF NOT; NOTE THAT TD8E TAPES CANNOT BE USED UNDER / TSS/8, THEY REQUIRE CONTINUOUS CPU ATTENTION LPT= 3 /0 IF NO PRINTER ON SYS; 1 IF LP08; 2 IF LS8E; 3 IF NONSTANDARD CDR= 0 / =1, IF CARD READER / /MONITOR OPTIONS /FILL IN THE FOLLOWING LINES TO INDICATE THE /MONITOR CAPACITY FOR THIS SYSTEM DECIMAL JOBMAX= 6 /NUMBER OF SIMULTANEOUS USERS (.LE. 20) CONTTY= 1 / (ALWAYS HAVE A CONSOLE) DC08A= 0 /NUMBER OF TERMINALS VIA DC08A (PDP-8/I ONLY, 19 MAX) DC08LO= 0 /LOWEST LINE-NUMBER USED ON DC08A PT08= 0 /NUMBER OF TERMINALS VIA PT08 (PDP-8 & PDP-8/I ONLY) KL8= 15 /NUMBER OF TERMINALS VIA KL8E (PDP-8/E ONLY, 19 MAX) CDVIN= 3 /NONSTANDARD INPUT CHARACTER DEVICES (HIGHEST USED) / 1 = R2; 2 = X0; 3 = X1; 4 = X2; 5 = X3 CDVOUT= 4 /NONSTANDARD OUTPUT CHARACTER DEVICES (HIGHEST USED) / 1 = P2; 2 = L2; 3 = Y0; 4 = Y1; 5 = Y2; 6 = Y3 TRUKBD= 3 /NUMBER OF ACTUAL KEYBOARDS ON SYSTEM (NOT COUNTING / CONSOLE TTY). THIS MUST BE .LE. NULINE; NULINE / MAY INCLUDE DUMMY TERMINALS, THIS MAY NOT. FRCMAX= TRUKBD /THE HIGHEST KEYBOARD # A '00XX' ACCT # MAY FORCE / NOTE THAT A '000X' ACCOUNT MAY FORCE UP TO 'NULINE' TLKMAX= TRUKBD /THE HIGHEST KEYBOARD # WHICH MAY BE 'TALK'ED TO BRDMAX= TRUKBD /THE HIGHEST KEYBOARD WHICH WILL RECEIVE BROADCASTS OCTAL DTAMIN= 2 /THE FIRST DECTAPE DRIVE WHICH WILL BE ASSIGNED / FOR 'ASSIGN D' COMMAND; NORMALLY =0, BUT MAY / VARY FOR SLIGHTLY RESTRICTED DRIVE USE. BILLNG= 7 /THE ACCOUNT NUMBER OF THE BILLING SYSTEM / 0, IF NO BILLING SYSTEM USED / /SYSTEM CONSTANTS INFLD= 20 /FIELD SELECT THAT 'INIT' SHOULD BE BOOTED INTO / MAKING IT 20 AVOIDS PROBLEMS SHOULD A / FIELD NEED REPAIR & SYSTEM IS RUN ON 12K TTYEVEN=1 /1 INDICATES PARITY TTY MAY BE USED WITH SYS / 0 ALLOWS ONLY DEC MODIFIED TTYS /// END OF SYSTEM CONFIGURATION PARAMETERS

View File

@ -0,0 +1,2 @@
DSK:SI<SYS:UWM,PARA,PARB,PARC,SI (WKE)

Some files were not shown because too many files have changed in this diff Show More