1
0
mirror of synced 2026-05-05 07:23:24 +00:00
Files
lisper.cpus-pdp8/tss8/system/inita.pal
brad 0e9bfd9d85
2010-04-02 12:36:00 +00:00

1223 lines
25 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/EDUSYSTEM 50 MONITOR FOR MELROSE HIGH SCHOOL #495AB
/COPYRIGHT 1975
/DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
/
/THIS SECTION DEFINES THE HARDWARE CONFIGURATION ON WHICH INDIVIDUAL
/EDUSYSTEM 50 MONITORS ARE TO RUN.
/FOR EACH STATEMENT, THE COMMENT INDICATES THE POSSIBLE RESPONSES.
CPU= 2 /1 IF CPU IS PDP-8; 0 IF CPU IS PDP-8/I;
/2 IF CPU IS PDP-8/E
CORMEM= 70 /HIGHEST DATA FIELD SELECT. FOR 12K SYSTEM,
/RESPOND 20, FOR 16K SYSTEM, RESPOND 30, ETC. (70 MAX)
PHONES= 0 /1 IF DC08 INCLUDES 689AG;
/0 IF IT DOES NOT OR IF TTY INTERFACING IS OTHER THAN DC08
EAE= 0 /20 IF PROCESSOR INCLUDES EAE; 0 IF IT DOES NOT
RF08= 0 /40 IF SYSTEM DISC IS DF32; 0 IF SYSTEM DISK IS RF08
RS08= 1 /NUMBER OF DISCS ON THE SYSTEM, WHETHER DF/DS OR RF/RS.
/RESPOND WITH 1, 2, 3, OR 4.
PUNCH= 1 /1 IF SYSTEM INCLUDES PUNCH; 0 IF IT DOES NOT
TC01= 1 /1 IF SYSTEM INCLUDES DECTAPE(S); 0 IF IT DOES NOT
RK05= 1 /NUMBER OF RK05 CARTRIDGE DISK DRIVES ON THE SYSTEM; 0 TO 4
CDR= 1 /1 IF SYSTEM INCLUDES CARD READER; 0 IF IT DOES NOT
LPT= 1 /1 IF SYSTEM INCLUDES LINE PRINTER; 0 IF NO LINE PRINTER
DECIMAL /MONITOR CAPACITY FOR THIS SYSTEM
JOBMAX= 20 /NUMBER OF SIMULTANEOUS USERS (20 MAXIMUM)
/THE FOLLOWING ENTRIES DEFINE THE NUMBER OF TERMINALS
/ATTACHED TO THE SYSTEM, AND ALSO THE METHOD OF INTERFACING
CONTTY= 1 /WE ALWAYS HAVE A CONSOLE (K00)
DC08A= 0 /NUMBER OF TERMINALS INTERFACED VIA DC08A (PDP-8/I ONLY, 19 MAX.)
DC08LO= 0 /LOWEST HARDWARE LINE NUMBER UTILIZED ON DC08A; USUALLY 0
PT08= 0 /NUMBER OF TERMINALS INTERFACED VIA PT08 (PDP-8 & PDP-8/I ONLY)
KL8= 16 /NUMBER OF ADDITIONAL TERMINALS INTERFACED VIA KL8 (PDP-8/E ONLY, 19 MAX.)
/PARAMATERS VERSION 8.24 (01-JANUARY-75)
/
/
/
/
/COPYRIGHT (C) 1975
/DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
/
/
/THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY
/ON A SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH
/THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS
/SOFTWARE, OR ANY OTHER COPIES THEREOF, MAY NOT BE PRO-
/VIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON
/EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO AGREES TO
/THESE LICENSE TERMS. TITLE TO AND OWNERSHIP OF THE
/SOFTWARE SHALL REMAIN IN DEC.
/
/THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE
/WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED AS A COM-
/MITMENT BY DIGITAL EQUIPMENT CORPORATION.
/
/DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR
/RELIABILITY OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT
/SUPPLIED BY DEC.
OCTAL
PLT= 0
IFNZRO CPU < IFNZRO DC08A <ILLEGAL CONFIGURATION>>
IFNZRO 24-JOBMAX&4000 <ILLEGAL CONFIGURATION>
IFNZRO 23-KL8-PT08&4000 <ILLEGAL CONFIGURATION>
IFNZRO 24-DC08A&4000 <ILLEGAL CONFIGURATION>
IFZERO DC08A <D689=0>
IFNZRO DC08A < IFNZRO PHONES <D689=4>
IFZERO PHONES <D689=0>>
NULINE= DC08A+PT08+KL8 /EVERY TERMINAL EXCEPT THE CONSOLE
SWDEX= 5 /DISK TRACK OF THE FIRST USER SWAP TRACK
STOMIN= 5 /MINIMUM # FREE STORAGE BLOCK FOR NEW JOB
IFZERO RF08-40 <
IFZERO RS08-1 <DSKSIZ=10>
IFZERO RS08-2 <DSKSIZ=20>
IFZERO RS08-3 <DSKSIZ=30>
IFZERO RS08-4 <DSKSIZ=40>
DSKEXT= DSKSIZ-1>
IFZERO RF08 <DSKSIZ=RS08^100 /# 4K DISC TRACKS
DSKEXT= RS08^100+77>
CLOCKR= 144 /MILLISECONDS PER TICK
TICMIN= 1130 /600 TICKS PER MINUTE
INCLK2= 0322 /INITIAL CLOCK
INCLK1= 7400
TICSPS= 12 /NUMBER OF SYSTEM TICKS PER SECOND
INIDEX= 10 /INIT DISC EXTENSION
TS8DEX= 30 /FIELD 0 DISC EXTENSION*2^3
ERPDEX= 0 /ERP DISC EXTENSION*4
ERPWC= 0 /ERP WORD COUNT
FIPDEX= 4 /FIP DISC EXTENSION*4
FIPWC= 0 /FIP WORD COUNT
SIDEX= ERPDEX /SI DISC EXTENSION*4
SIWC= ERPWC /SI WORD COUNT
LIBACT= 2 /LIBRARY ACCOUNT #
BRKINI= 4000 /INITIAL USER BREAK MASK
/IOT DEFINITIONS
IFNZRO DC08A < /DC08A, DL8I IOTS
TTIL= 6401 /INCREMENT LINE REGISTER
TTI= 6402 /TELETYPE INPUT COMMAND
TTO= 6404 /TELETYPE OUTPUT COMMAND
TTCL= 6411 /CLEAR LINE REGISTER
TTLL= 6412 /LOAD LINE REGISTER, CLEAR AC
TTRL= 6414 /READ LINE REGISTER
T1SKP= 6421 /SKIP ON CLOCK FLAG
T1OFF= 6422 /TURN CLOCK OFF
T1ON= 6424 /TURN CLOCK ON
TTIR= 6461 /INCREMENT THE R REG.
TTCR= 6471 /CLEAR THE R REG.
TTLR= 6472 > /LOAD THE R REG.
/EXTEDED MEMORY
CDF= 6201 /CHANGE TO DATA FIELD 0
CIF= 6202 /CHANGE TO INSTRUCTION FIELD 0
CINT= 6204 /CLEAR USER IOT
RDF= 6214 /READ DATA FIELD
RIF= 6224 /READ INSTRUCTION FIELD
RIB= 6234 /READ INTERRUPT BUFFER
RMF= 6244 /RESTORE MEMORY FIELD
SINT= 6254 /SKIP ON USER IOT
CUF= 6264 /USER FLAG OFF
SUF= 6274 /USER FLAG ON
/EAE
MUY= 7405 /MULTIPLY
DVI= 7407 /DIVIDE
NMI= 7411 /NORMALIZE
SHL= 7413 /SHIFT ARITHMETIC LEFT
ASR= 7415 /ARITHMETIC SHIFT RIGHT
LSR= 7417 /LOGICAL SHIFT RIGHT
MQL= 7421 /LOAD MQ
SCL= 7403 /STEP COUNTER LOAD FROM MEMORY
SCA= 7441 /STEP COUNTER TO AC
MQA= 7501 /MQ TO AC
IFZERO CPU-2 <
DBSZ= 7451 /MODE B ONLY - SKIP IF AC&MQ ARE CLEAR
SWBA= 7447 /CHANGE MODE TO A
SWAB= 7431 /CHANGE MODE TO B (ALSO DOES MQL)
ACS= 7403 /AC(7:11) TO SC; AC CLEARED
SGT= 6006 /SKIP ON GT FLAG
>
/LINE PRINTER IOTS
LSF= 6661 /SKIP ON CHAR FLAG SET
LCF= 6662 /CLEAR CHAR FLAG
LSRP= 6663 /SKIP ON NOT READY OR ON ERROR
LLC= 6664 /TRANSMIT CHAR TO PRINTER
LSP= 6665 /SET PROGRAM INTERRUPT; LP08/LE8
LPC= 6666 /TRANSMIT CHAR & CLEAR FLAG
LCP= 6667 /CLEAR PROGRAM INTERRUPT
LIE= 6665 /AC11 TO INTERRUPT ENABLE; LS08/LS8E
/CTY
TPC= 6044 /LOAD TELEPRINTER AND PRINT
/DISC (DF32)
DCMA= 6601 /CLEAR
DMAR= 6603 /READ
DMAW= 6605 /WRITE
DCEA= 6611 /CLEAR DISC EXTENDED ADDRESS
DEAL= 6615 /LOAD EXTENDED ADDRESS
DFSE= 6621 /SKIP ON ERROR
DFSC= 6622 /SKIP ON COMPLETION
DEAC= 6616 /READ EXTENDED ADDRESS
/DISC (RF08)
DSAC= 6612
DORS= 6614
DIML= 6615
DIMA= 6616
DCXA= 6641
DXAL= 6643
/CARD READER IOT'S
RCSF= 6631
RCRA= 6632
RCRB= 6634
RCNO= 6635 /8E ONLY
RCRC= 6636 /8E ONLY
RCNI= 6637 /8E ONLY
RCSD= 6671
RCSE= 6672
RCRD= 6674
RCSI= 6675 /8E ONLY
RCTF= 6677 /8E ONLY
/RK05 IOT'S
IFZERO PHONES <
DSKP= 6741
DCLR= 6742
DLAG= 6743
DLCA= 6744
DRST= 6745
DLDC= 6746
DMAINT= 6747 >
IFNZRO PHONES <
DSKP= 6751
DCLR= 6752
DLAG= 6753
DLCA= 6754
DRST= 6755
DLDC= 6756
DMAINT= 6757 >
/DECTAPE
DTRA= 6761
DTCA= 6762
DTXA= 6764
DTSF= 6771
DTRB= 6772
DTLB= 6774
IFZERO CPU <
/KW8I REAL TIME CLOCK
CECI= 6137 /CLEAR AND ENABLE CLOCK AND INTERRUPT
CSCF= 6133 /SKIP AND CLEAR FLAG IF FLAG
>
IFZERO CPU-1 <
CECI= 6315 /CLOCK ENABLE
CSCF= 6301 /SKIP ON CLOCK FLAG
CCF= 6302 /CLEAR CLOCK FLAG, CLEAR ENABLE, AND CLEAR BUFFER
CLB= 6304 > /LOAD BUFFER FROM AC
IFZERO CPU-2 <
CECI= 6131 /CLOCK ENABLE
CSCF= 6133 /SKIP AND CLEAR FLAG IF FLAG
/POWER FAIL IOT
SPL= 6102 /SKIP IF POWER LOW
/ 8/E PROCESSOR IOT
SRQ= 6003 /SKIP ON INTERRUPT REQUEST
GTF= 6004 /LINK TO AC0, GT FLAG TO AC1
RTF= 6005 /AC0 TO LINK, AC1 TO GT FLAG
CAF= 6007 > /CLEAR ALL FLAGS
IFZERO CPU-4 <
CLLE= 6135 /AC11 TO INTERRUPT ENABLE FOR CLOCK
CLCL= 6136 /CLEAR CLOCK FLAG
CLSK= 6137 /SKIP ON CLOCK FLAG
SPL= 6102 /SKIP POWER LOW
CAL= 6133 > /CLEAR AC LOW FLAG
IFNZRO DC08A <
/689AG
SRF= 6701 /SKIP IF RING FLAG
SCF= 6711 /SKIP IF CARRIER FLAG
DFCRF= 6742 /CLEAR RING FLAG
CTG= 6721 /CLEAR GROUP COUNTER
RRS= 6702 /READ RING STATUS
ITG= 6731 /INCREMENT GROUP COUNTER
STR= 6722 /SET TERMINAL READY
EDF= 6704 /ENABLE DATAPHONE FEATURES
DDF= 6714 /DISABLE DATAPHONE FEATURES
CTR= 6724 /CLEAR TERMINAL FLAG
CCF= 6741 /CLEAR CARRIER FLAG
RCS= 6712 /READ CARRIER STATUS
>
/FIP IOTS (IN ABBREVIATED FORM)
SEGS= 0006 /RETURN NUMBER OF FREE SEGMENTS ON DISK
ASD= 0040 /ASSIGN
REL= 0042 /RELEASE
REN= 0200 /RENAME
OPEN= 0201 /OPEN
CLOS= 0202 /CLOSE
RFILE= 6603 /READ FILE
PROT= 0204 /PROTECT
WFILE= 6605 /WRITE FILE
CRF= 0210 /CREATE
EXT= 0211 /EXTEND
RED= 0212 /REDUCE
FINF= 6613 /FILE INFORMATION
LIN= 0214 /LOGIN
LOUT= 0215 /LOGOUT
WHO= 6616 /WHO
/DEVICE DATA BLOCK
DDBSTS= 0 /WORD 1, STATUS AND UNIT NUMBER
DXON= 2000 /XOFF SENT FLAG
DSI= 1000 /DESTINATION IS S.I. FLAG
DFULL= 400 /KEYBOARD BUFFER IS FULL
DUPL= 200 /CONSOLE IN DUPLEX MODE
SICOM= 100 /COMMAND WAITING
DECHO= 40 /CAUSE SI TO RE-ECHO CURRENT INPUT BUFFER
/DEVICE UNIT NUMBER IS IN BITS 6-11
DDBJN= 1 /WORD 2, JOB NUMBER IN 7-11
DDBBRK= 2 /BREAK MASK
DDBTIM= 3 /TIME THAT DEVICE WAS ASSIGNED
DDBINP= 4 /BUFFER FILL POINTER
DDBINC= 5 /BUFFER TOTAL COUNT
DDBOUC= 6 /BUFFER EMPTY COUNT
DDBOUP= 7 /BUFFER EMPTY POINTER
/JOB DATA AREA
JOBSTS= 0 /STATUS
/STR0
JSRUN= 4000 /RUN BIT
JSEREN= 2000 /USER ERROR ENABLE
JCOMBD= 1000 /LAST TIME THE JOB RAN AS COMPUTE BOUND
JSPEEK= 400 /ALLOW "PEEK" AND "LOGOUT" IOT'S
JSACC= 200 /JOB LOGGED IN UNDER PRIVILEGED ACCOUNT (1, 2, OR 3)
JSIOT= 100 /NON-RESIDENT IOT
JSIOTC= 40 /COPY IOT RESULT TO USER
JSEXON= 20 /EXECUTE ONLY
JSINER= 10 /INHIBIT ERROR REPORT FROM SI, (UNTIL NEXT COMMAND)
/BITS 9-11 ARE SYSTEM ERROR CODE
UUOERF= 1 /IOT ERROR
SWPRER= 2 /SWAP READ ERROR
SWPWER= 3 /SWAP WRITE ERROR
DSKERR= 5 /DISC ERROR
HUNGDV= 6 /HUNG DEVICE
/STR1
JSTIME= 4000 /TIME IS UP
JSF0= 2000 /FILE 0 IS NOT BUSY
JSF1= 1000 /FILE 1 IS NOT BUSY
JSF2= 400 /FILE 2 IS NOT BUSY
JSF3= 200 /FILE 3 IS NOT BUSY
JSDEL= 100 /KEYBOARD DELIMITER SEEN
JSLPT= 40 /LINE PRINTER BUFFER IN USE BUT NOT FULL
JSTEL= 20 /TELEPRINTER OUTPUT BUFFER IN USE BUT NOT FULL
JSPTR= 10 /CHARACTERS IN READER BUFFER
JSPTP= 4 /PUNCH BUFFER IN USE BUT IS NOT FULL
JSERR= 2 /SYSTEM ERROR DETECTED
JSWAIT= 1 /JOB NOT IN WAIT STATE
JOBSTB= 2 /DEVICE STATUS REGISTER (FOR RK05, DECTAPE, AND CARD READER)
JOBWMK= 3 /WAIT MASK
JOBSRA= 5 /JOB RESTART ADDRESS
JOBERR= 6 /JOB ERROR RESTART ADDRESS
JOBLNK= 7 /IOT LINKAGE
JOBSWR= 10 /SWITCH REGISTER
JOBREG= 11 /PC LINK AC
JOBEAE= 14 /MQ MODE GT SC
JOBACC= 16 /ACCOUNT NUMBER
JOBF0= 17 /POINTER TO FILE 0 CONTROL
JOBF1= 20 /POINTER TO FILE 1 CONTROL
JOBF2= 21 /POINTER TO FILE 2 CONTROL
JOBF3= 22 /POINTER TO FILE 3 CONTROL
JOBRTM= 23 /LOW ORDER RUN TIME
JOBRTH= 24 /HI ORDER RUN TIME
/FILE CONTROL BLOCK - POINTED TO BY JOBFX, X=0,1,2,3
FILWPT= 0 /POINTER TO FILE RETRIEVAL WINDOW
FILSCT= 1 /SEGMENT NUMBER OF FIRST WINDOW ENTRY
FILPRO= 2 /FILE PROTECTION - BIT 9
FILPAR= 3 /POINTER TO RFILE OR WFILE PARAMETER BLOCK
FILDA= 4 /DISC ADDRESS OF RFILE OR WFILE
FILWC= 6 /-WORD COUNT OF RFILE OR WFILE
FILRES= 7 /POINTER TO FILPIF IN USER AREA
/FILE RETRIEVAL WINDOW
/WORD 0: UFD LINK TO NEXT GROUP OF 7 SEGMENT POINTERS
/WORDS 1-7: SEVEN SEGMENT ADDRESSES
/RFILE OR WFILE PARAMETER BLOCK - POINTED AT BY FILPAR
FILPFN= 0 /FUNCTION: 0603 OR 0605
FILPDX= 1 /DISC EXTENSION
FILPIF= 2 /INTERNAL FILE # (BITS 10-11) AND FIELD # (BITS 7-9)
FILPWC= 3 /-WORD COUNT FOR THIS TRANSFER
FILPCA= 4 /CORE ADDRESS FOR THIS TRANSFER
FILPDA= 5 /DISC ADDRESS
FILPRA= 6 /EXEC RETURN ADDRESS FOR THIS TRANSFER
FILPCT= 7 /POINTER TO FILE CONTROL BLOCK
/CORE TABLE CONTROL FLAGS
SWAP= 4000 /SWAP REQUEST
LOCK= 2000 /LOCK IN CORE
NOTRUN= 1000 /HAS NOT BEEN SCHEDULED TO RUN
FIP= 400 /FILE PHANTOM
SI= 200 /SYSTEM INTERPRETOR
NOHOLD= 140 /INHIBIT "NOTRUN" STATUS AFTER FOUR CONSECUTIVE FILE TRANSFERS
CJOB= 37 /BITS 7-11 CONTAIN THE JOB #
/FIP TABLE DEFINITIONS
SATSIZ= 530
JTABLE= 6000
ENTABL= JTABLE+JOBMAX+1
UTABLE= ENTABL+JOBMAX+JOBMAX+JOBMAX+JOBMAX+JOBMAX+JOBMAX+JOBMAX+JOBMAX
RTABLE= UTABLE+JOBMAX+JOBMAX+JOBMAX+JOBMAX+JOBMAX+JOBMAX+JOBMAX+JOBMAX
/TABLES
CORTBL= 7001 /CORE ASSIGNMENT TABLE
L2QTB= CORTBL+7
IFZERO DC08A <DCSIZE=0>
IFNZRO DC08A <DCSIZE=400> /SIZE OF FIELD 1 DC08A CODE PLUS 689AG CODE
OUTREG= 200 /ACTIVE OUTPUT REGISTERS (TTY'S, LPT & PTP)
SKPTBL= OUTREG+NULINE+3 /START OF IOT SKIP TABLE
SKPTP= SKPTBL+NULINE+NULINE+3 /POSITION OF PUNCH SKIP IN SKIP TABLE
RINGIN= SKPTP+3 /KEYBOARD INPUT RING BUFFER
ENDBUF= OUTREG+200 /END OF KEYBOARD INPUT BUFFER
INPUTS= ENDBUF-RINGIN%2 /NUMBER OF POSSIBLE ENTRIES IN THE KEYBOARD RING BUFFER
DATFLD= CDF 10 /MONITOR DATA FIELD SELECT
IFZERO EAE-20 <MQREG=1>
IFZERO EAE <IFNZRO CPU&7776 <MQREG=1>
IFZERO CPU&7776 <MQREG=0>>
IFNZRO OUTREG&1 <YOU GOOFED>
/SUPER CRITICAL LOCATIONS
/THESE LOCATIONS ARE USED TO LINK TS8, TS8II, FIP, SI, AND INIT.
/IT MAY BE NECESSARY TO ADJUST THEM ACCORDINGLY
/DEFINED IN TS8:
WSCHED= 2573 /ADDRESS FOR WAIT
GETJTB= 401 /GETJTA
CORSRC= 1317 /SEARCH CORE TABLE
OVERLA= 5171 /FILE STUFF
READFI= 574 /MORE FILE STUFF
CONDBA= 132 /DEVTBL POINTER USED BY "PRINT" ETC.
RETB= 611 /RETURN A BLOCK TO FREE CORE
GETB= 1405 /GET A BLOCK OF FREE CORE
GETDB0= 1447 /GET A DDB
CLK1= 51 /LOW ORDER DAYTIME CLOCK
CLK2= 50 /HIGH ORDER DAYTIME CLOCK
DATE= 166 /12 BIT DATE WORD
TTCHAR= 31 /SAVE REG. FOR CONSOLE CHARACTERS
KBD00= 3201 /PROCESS KEYBOARD INPUT
PRINT0= 1205 /TYPE OUT A CHARACTER
OVRLA1= 562 /MORE FILE STUFF
RUNFI= 605 /SI FILE TRANSFER INITIALIZER
L2SF= 103 /LEVEL 2 SAVED MODE AND FIELD
SICLR= 6572 /SI CLEAR LINKED BUFFER
TIMSI= 2421 /TIMER FOR SI "COMWAT"
SIWAIT= 1702 /NUMBER OF SI COMMANDS BEING WAITED ON
TIMFIP= 2423 /TIMER FOR FIPLOCK
FIPLOK= 2724 /CORTBL STATUS CHECK FOR FORCE OUT
CLKINI= 322 /CONVERT HARDWARE CLOCK TO SYSTEM-TICKS (100MS)
BLT0= 1602 /BLOCK TRANSFER FROM CORE TO CORE
KBDSQ= 3213 /ADDRESS OF JMS TO ^S/^Q CODE
/DEFINED IN TS8II:
F1TCNT= 175 /SI DDB CHARACTER COUNT
F1ECNT= 176 /SI DDB EMPTY COUNT
F1BUF= 177 /SI DDB EMPTY BLOCK POINTER
DTJOB= 20 /JOB OWNING THE DECTAPE CONTROLLER
RKJOB= 54 /JOB OWNING RK05 CONTROLLER
DTSI= 1175 /SI TERMINATE A DECTAPE ON TIMER
DATA1= 2200+DCSIZE
DEVTBL= DATA1+140
DEVTBE= DEVTBL+NULINE+NULINE+2
JOBTBL= DEVTBE+22
CLKTBL= JOBTBL+JOBMAX+1
TTYTBL= CLKTBL+JOBMAX+1
PRGTBL= TTYTBL+JOBMAX+1
DSUTBL= PRGTBL+JOBMAX+JOBMAX+JOBMAX-7
FIPBLK= 7720 /FIXED BLOCK FOR FIP I/O
WINBAS= 7730 /ADDRESS OF THE BASIC WINDOW
OUTDIF= -OUTREG^2+DEVTBL /FOR LINKING BETWEEN OUTREG AND DEVTBL
F1OFFJ= 164 /FOR OFF/ON COMMANDS USED BY SI
IFNZRO DEVTBL&1 <YOU GOOFED>
/DEFINED IN SI:
DTSIDT= 7270 /RETURN FROM STOPPING A DECTAPE ON TIMER
VERBRK= 7600 /START OF INSTALLATION DEFINED LOGIN MESSAGE
/INIT VERSION 8.24 (01-JANUARY-75)
/
/
/
/
/COPYRIGHT (C) 1975
/DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
/
/
/THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY
/ON A SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH
/THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS
/SOFTWARE, OR ANY OTHER COPIES THEREOF, MAY NOT BE PRO-
/VIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON
/EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO AGREES TO
/THESE LICENSE TERMS. TITLE TO AND OWNERSHIP OF THE
/SOFTWARE SHALL REMAIN IN DEC.
/
/THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE
/WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED AS A COM-
/MITMENT BY DIGITAL EQUIPMENT CORPORATION.
/
/DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR
/RELIABILITY OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT
/SUPPLIED BY DEC.
/RIM AUTO-LOADER FOR TSS/8 INIT
RIM1= 7757
RIM2= 7760
*7400
FIX, DCA RD1 /SAVE SKIP IOT
*7401
TAD K5
*7402
TAD RD1
*7403
DCA RD2 /SAVE READ IOT
*7404
RIF /CURRENT FIELD
*7405
CMA
*7406
AND KCDF /CREATE CDF FOR FIELD 0 OR 2
*7407
DCA KCDF
*7410
KCDF, CDF 20
*7411
JMS FRM /READ NEXT FRAME; SKIP ON RETURN
*7412
LOOP, DCA SUM /SAVE NEW CHECKSUM
*7413
TAD CHAR0
*7414
DCA CHAR1 /SAVE LEFT BYTE
*7415
JMS READ
*7416
DCA CHAR2 /SAVE RIGHT BYTE
*7417
JMS FRM /LOOK AHEAD
*7420
JMP CHKSUM /WE HAVE THE CHECKSUM
*7421
JMS ASSMBL /ASSEMBLE BOTH BYTES
*7422
SNL /DATA OR ORIGIN?
*7423
JMP OSAVE /DATA
*7424
DCA ORG /SAVE NEW ORIGIN
*7425
ADD, TAD CHAR1
*7426
TAD CHAR2 /SUM BOTH BYTES
*7427
TAD SUM /WITH THE OLD SUM
*7430
JMP LOOP
*7431
OSAVE, DCA I ORG /SAVE DATA
*7432
ISZ ORG /INCREMENT ADDRESS
*7433
RM200, 7600 /COVER SKIP WITH CONSTANT
*7434
JMP ADD
*7435
CHKSUM, JMS ASSMBL /ASSEMBLE CHECKSUM BYTES
*7436
CIA
*7437
TAD SUM /SUBTRACT CALCULATED SUM
*7440
SZA /OK?
*7441
HLT /NO; ERROR
*7442
STL RTL /AC=2
*7443
TAD KCDF /PLUS CDF TO "INIT'S" FIELD
*7444
DCA K5 /SAVE
*7445
K5, 5 /CIF CDF TO FIELD 0 OR 2
*7446
JMP 0 /JUMP INTO INIT
*7447
READ, 0
*7450
RD1, HLT /SKIP IOT
*7451
JMP .-1
*7452
RD2, HLT /READ IOT
*7453
DCA CHAR0
*7454
TAD CHAR0
*7455
JMP I READ
*7456
FRM, 0
*7457
JMS READ /READ A FRAME
*7460
TAD RM200
*7461
SPA /IS IT DATA/ORIGIN?
*7462
ISZ FRM /YES; SKIP ON RETURN
*7463
SPA SNA CLA /FIELD SETTING?
*7464
JMP I FRM /NO
*7465
JMP FRM+1 /YES; IGNORE IT
*7466
ASSMBL, 0
*7467
TAD CHAR1 /LEFT BYTE
*7470
CLL RTL
*7471
RTL
*7472
RTL /SHIFTED INTO POSITION
*7473
TAD CHAR2 /PLUS RIGHT BYTE
*7474
JMP I ASSMBL
*7475
ORG, 0
*7476
CHAR0, 24 /CHECKSUM CORRECTION; RIGHT BYTE
*7477
CHAR1, 0
*7500
CHAR2, 0
*7501
SUM, 6000 /CHECKSUM CORRECTION; LEFT BYTE
*7601
RIMJMP, TAD RIMFIX
*7602
DCA RIM2 /RESTORE RIM LOADER
*7603
TAD RIM1 /GET SKIP IOT
*7604
JMP I FIXA
*7605
RIMFIX, JMP RIM1
*7606
FIXA, FIX
*RIM2
JMP RIMJMP /EXIT FROM RIM
/PAGE 0
FIELD 2 /INIT LOADS ONTO DISK TRACK 2
*0
JMP I SUPERA /JUST IN CASE!!
SUPERA, SUPER
*10
AXS1, .
AXS2, .
SIDATA= 20 /SYSTEM INTERPRETER DATA
CONSTANTS=SIDATA+12
*CONSTANTS
C0002, 2
C0003, 3
C0004, 4
C0007, 7
C0037, 37
C0100, 100
C1000, 1000
C7770, 7770
C7600, 7600
C7763, 7763
DM32,
C7740, 7740
JOBCON= CONSTANTS+11 /JOB CONTROL
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
DATEND= 60 /END OF FIELD 0 PAGE 0 DATA
FIPDAT= 155 /DATA REFERENCED BY FIP
*FIPDAT+1
C0400, 400
SEGSIZ= C0400 /# WORDS PER SEGMENT
CORTBA, CORTBL-1 /CORE ALLOCATION TABLE
DSUTBA, DSUTBL /USER DISC REQUEST QUEUE
/THE DATE IS KEPT AS A 12 BIT NUMBER IN THE FORMAT
/DATE=((YEAR-1974)*12+(MONTH-1))*31+DAY-1
*DATE
DATE, .
CORSRA, CORSRC
WAITA, WSCHED
WAIT= JMP I WAITA
/SUBROUTINE DISPATCHES
SUBDSP= DATEND
*SUBDSP
CHDFA, 0
INIF, HLT
JMP I CHDFA
CHDF= JMS CHDFA
CJOBMX, -JOBMAX
INBUF, INBUFA
NUMBIA, NUMBI0
CHAR, 0
NUMHO, 0
0
0
CORCNT, 0
C0010, 10
C6201, 6201
C0200, 0200
C0177, 0177
COMGEA, COMGE0
DISCA, DISC0
DISCHA, DISCH0
YESNO= JMS I .
YESNO0
MESSAG= JMS I .
MESSA0
OCTIN= JMS I .
OCTIN0
GETIN= JMS I .
GETIN0
OUTTLS= JMS I .
OUTA, OUT
INKRB= JMS I .
IN
ZERO1= JMS I .
ZERO
CHEKCC= JMS I .
CCCHEK
SWBASE, SWDEX /SWAP TRACK FOR JOB 1
C7777, -1
MC0377, -377
OSF, OSTRAP
OST, 7607
OSC, -16
OSA, 7607
OSTAB, .
RBOOT
7746
-7
7746
KBOOT
26
-4
26
KBOOT, DLCA
DLDC
DLAG
JMP 31
OSTRAP,
NOPUNCH
*7607
ENPUNCH
TAD KA
DCA 7754
TAD KA
DCA 7755
DTLB
TAD KB
DTLA
DTSF
JMP .-1
TAD KC
JMP .-4
KA, 7577
KB, 600
KC, 220
/PAGE ASSIGNMENTS
INIP= 1000
/PROGRAM TO OPEN AND MODIFY SINGLE DISC REGISTERS
*0200
DISCLK, TAD KCR /PUT OUT A CR, LF
OUTTLS
TAD KLF
OUTTLS
/ NOW GET AN ADDRESS FROM THE KEYBOARD
JMS OTIN
JMP DISCLK /: IS ONLY VALID TERMINATOR
JMP DISCLK / " "
/DISC ADDRESS FOLLOWED BY ":" HAS BEEN ENTERED
DISPLA, JMS SPACE /PROVIDE ELEGANT FORMAT
JMS I POPEN /GET REG FROM DISC
TAD OPNREG /GET THIS VALUE
JMS I PHACK /DISPLAY IT
JMS SPACE /CONTINUE POLICY OF ELEGANT FORMATING
JMS I PSAVE /SAVE VALUE, VALUE1
/REGISTER IS OPEN ---- WAIT FOR A MODIFY
JMS OTIN
JMP SHUT /TERMINATOR WAS CR
JMP CLSOPN /TERMINATOR WAS LF
/: WAS TYPED ---- MUST BE NEW DISC ADDRESS
JMP DISPLAY
/CARRIAGE RETURN MEANS CLOSE REGISTER
/FIRST, SEE IF IT WAS MODIFIED
SHUT, TAD INPUT
SPA CLA
JMP DISCLK /NO MODIFY
/OPEN REGISTER WAS MODIFIED, SO CHANGE ON THE DISC
TAD VALUE1
DCA OPNREG
JMS I PCLOSE /WRITE VALUE OUT
/NOW SEND OUT LF AND START AGAIN
JMP DISCLK
/LINE FEED MEANS CLOSE REGISTER AND OPEN THE NEXT ONE
CLSOPN, TAD INPUT
SPA CLA
JMP .+4 /NO MODIFY
/VALUE WAS MODIFIED, SO WRITE OUT NEW ONE
TAD VALUE1
DCA OPNREG
JMS I PCLOSE
/RESPOND TO LF WITH CR
TAD KCR
OUTTLS
TAD KCR
OUTTLS /FOR TIMING (??)
/NOW RESTORE ADDR WORD TO VALUE1
JMS I PRESTOR
/NOW INCREMENT ADDRESS IN VALUE, VALUE1
JMS I PNEXTAD
/NOW TYPE OUT THIS NEW ADDRESS
TAD VALUE
JMS I PHACK
TAD VALUE1
JMS I PHACK
TAD KCOLON
OUTTLS
JMP DISPLAY
/TYPE TWO SPACES
SPACE, 0
TAD KSPACE
OUTTLS
TAD KSPACE
OUTTLS
JMP I SPACE
KSPACE, 0240
KCOLON, 0272
KCR, 0215
KLF, 0212
POPEN, XOPEN
PCLOSE, CLOSE
PNEXTAD, NEXTAD
PSAVE, SAVE
PRESTOR, RESTOR
PHACK, HACK
/ROUTINE TO INPUT AN OCTAL NUMBER
/ECHOES INPUT IF IT WAS VALID
/CALL: JMS OTIN
/ CR TERMINATOR
/ LF TERMINATOR
/ : TERMINATOR
/
/RETURNS WITH "DOUBLE PRECISION" INPUT IN
/VALUE AND VALUE1
/INPUT=0 IF THERE WAS ANY, ELSE -1
OTIN, 0
CLA CMA
DCA INPUT /NO INPUT YET
DCA VALUE /SUBTOTAL
DCA VALUE1
SKP
OUTTLS
LISTEN, INKRB
DCA YCHAR
/IS THE INPUT A VALID TERMINATOR?
TAD YCHAR
TAD KMCOLON /COLON?
SNA
JMP COEXIT /YES
TAD KMLF /LF?
SNA
JMP LFEXIT /YES
TAD KMCR /CR?
SNA
JMP CREXIT /YES
/NOT A VALID TERMINATOR --- IS IT A VALID OCTAL DIGIT?
TAD KMEIGHT
STL
TAD C0010
SZL /IS IT A VALID OCTAL DIGIT?
JMP NOTOK /NO
/COMES HERE WITH A VALID OCTAL DIGIT
ISZ INPUT /REMEMBER THAT THERE IS INPUT
NOP
/NOW ADD THIS DIGIT TO THE DOUBLE PRECISION TOTAL
DCA XCHAR
/FIRST, SHIFT HIGH-ORDER WORD LEFT ONE PLACE
TAD VALUE
CLL RAL
CLL RAL
CLL RAL
DCA VALUE
/NOW GET LEFT-MOST LOW-ORDER DIGIT
TAD VALUE1
RTL
RTL
AND C0007
/MOVE THIS DIGIT INTO THE HIGH ORDER WORD
TAD VALUE
DCA VALUE
/NOW ADD NEW INPUT DIGIT
TAD VALUE1
CLL RAL
CLL RAL
CLL RAL
TAD XCHAR
DCA VALUE1
TAD YCHAR
JMP LISTEN-1 /NOW GO ECHO INPUT
COEXIT, ISZ OTIN
LFEXIT, ISZ OTIN
CREXIT, TAD YCHAR
OUTTLS /ECHO TERMINATOR
JMP I OTIN
NOTOK, CLA
MESSAG
NOTOK1
JMP OTIN+1
NOTOK1, TEXT " ?_"
VALUE, 0
VALUE1, 0
OPNREG, 0
YCHAR, 0
XCHAR, 0
INPUT, -1
KMCOLON, -0272
KMLF, -0212+":
KMCR, -0215+212
KMEIGHT, -0270+215
*0400
XOPEN, 0
JMS CONVERT /MAKE A DISC ADDRESS OUT OF VALUE, VALUE1
TAD READCOM /WE ARE READING
JMS DISK
JMP I XOPEN
READCOM, 6603 /DMAR
/ROUTINE TO CLOSE A DISC REGISTER
CLOSE, 0
TAD WRITECOM
JMS DISK
JMP I CLOSE
WRITECOM, 6605 /DMAW
/DISC TRANSFER ROUTINE
DISK, 0
DCA DISCIOT /READ IOT OR WRITE IOT
/NOW HAVE TO SET UP 7750,7751 IN FIELD 0
/REMEMBER WHAT FIELD WE'RE IN NOW
/SO WE CAN RESTORE
RIF
TAD .+2
DCA XFIELD
CDF /NOW GO TO DATA FIELD 0
CLA CMA
DCA I P7750 /LOOKING FOR ONE WORD
TAD POPNREG
DCA I P7751 /READ INTO OPNREG
/7750, 7751 ARE SET --- RESTORE DATA FIELD
/ALSO, SET DISC TO TRANSFER INTO THIS FIELD
XFIELD, 0
RIF
IFZERO RF08-40 <TAD I PDISCHI>
6615 /DIML; FIELD , NO INTERRUPTS
IFZERO RF08 <TAD I PDISCHI /PICK UP HIGH ADDRESS
6643 /DXAL>
CLA /DEAL DOESN'T CLEAR AC
TAD I PDISCLO /PICK UP LOW ADDRESS
DISCIOT, 0 /DMAR OR DMAW
6621 /DFSE -- ANY ERRORS?
IFZERO RF08 <SKP CLA /NO
HLT /YES
6622 /DFSC --- DONE?
JMP .-4 /NO>
IFZERO RF08-40 <HLT
6622
JMP .-3>
DCMA /DON'T LEAVE DISK FLAG UP
JMP I DISK /YES
P7750, 7750
P7751, 7751
PDISCHI, DISCHI
PDISCLO, DISCLO
POPNREG, OPNREG-1
/ROUTINE TO CONVERT THE DOUBLE PRECISION NUMBER
/IN VALUE, VALUE1 INTO AN RF08 DISC ADDRESS
/PUT IT IN DISCHI, DISCLO
CONVERT, 0
CLA
TAD I PVALUE
IFZERO RF08-40 <ANDN C0177
CLL RTL
RTL
RTL>
DCA I PDISCHI
TAD I PVALU1
DCA I PDISCLO
JMP I CONVERT
PVALUE, VALUE
PVALU1, VALUE1
/ROUTINE TO TYPE THE 4 OCTAL DIGITS IN THE AC
/ON THE TELEPRINTER
HACK, 0
CLL RAL
DCA XHACK
TAD KM4
DCA XCNT /4 DIGITS
YHACK, TAD XHACK
RTL
RAL
DCA XHACK
TAD XHACK
AND C0007
TAD K260
OUTTLS
ISZ XCNT
JMP YHACK
JMP I HACK
XCNT, 0
DISCHI, 0
DISCLO, 0
XHACK, 0
KM4, -4
K260, 260
/ROUTINE TO GET A CHAR FROM THE KEYBOARD
IN, 0
KSF
JMP .-1
JMS CCCHEK /IS IT A CONTROL-C?
KRB
AND C0177
TAD C0200 /IN CASE OF PARITY TERMINALS
JMP I IN /RETURN
CCCHEK, 0
KSR
JMP I CCCHEK
KRS /WHAT'S THE CHARACTER?
AND C0177 /PARITY TERMINAL?
TAD KCRC
SMA
CML
SNA CLA
JMP I SUPERA /[S]HE WANTS TO RESTART - ^C
JMP I CCCHEK /NO ^C
KCRC, -3 /- ^C, STRIPPED OF PARITY BIT
/ROUTINE TO TELEPRINT A CHAR
OUT, 0
NOP /CHANGE TO "KSF" IF DESIRED TO TERMINATE PRINT-OUT UPON TYPE-AHEAD
SKP /NO
JMP OUT0 /YES; DON'T WASTE TIME WITH FURTHER PRINTING
TLS
TSF
JMP .-1
OUT0, CLA
CHEKCC
JMP I OUT
/ROUTINE TO INCREMENT THE DOUBLE-PRECISION VALUE
/IN VALUE, VALUE1
NEXTAD, 0
CLA
ISZ I PVALU1
JMP I NEXTAD
ISZ I PVALUE
JMP I NEXTAD
/ROUTINE TO SAVE VALUE, VALUE1
SAVE, 0
TAD I PVALUE
DCA SAVE1
TAD I PVALU1
DCA SAVE2
JMP I SAVE
/ROUTINE TO RESTORE VALUE, VALUE1
RESTOR, 0
TAD SAVE1
DCA I PVALUE
TAD SAVE2
DCA I PVALU1
JMP I RESTOR
SAVE1, 0
SAVE2, 0
*600
LOGMES, 0 /PUT MESSAGE OF THE DAY IN SI
YESNO
LOGM1 /"PROMO?"
JMP I LOGMES /NO
DISC /YES, READ SI INTO FIELD 1
6603
SIDEX+1
DISCHK /SHECK FOR DISK OK
LOG2LG, MESSAG /MESSAGE TOO LONG
LOGM2 /"END WITH ALTMODE"
STA
TAD LOGST /VERBRK
DCA AXS1
TAD LOGST
DCA NUMHO /FOR GETCH
IAC
DCA NUMHO+1
DATFLD /LOGIN MESSAGE TO FIELD 1
LOGNEX, JMS I GETCHA /GET A CHARACTER INTO BUFFER
JMP LOG2LG /MESSAGE TOO LONG
TAD MC0377 /IS IT AN ESCAPE OR ALTMODE?
IAC /TEST FOR MODEL 35 ALTMODE
SZA
IAC /TEST FOR ALTMODE
SZA
TAD LOGESC /TEST FOR ESCAPE
SZA CLA
JMP LOGNEX /NOT ESCAPE OR ALTMODE, GET ANOTHER CHAR
TAD AXS1
DCA CHAR
DCA I CHAR /A 0 ENDS THE MESSAGE IN SI
CHDF
MESSAG /ECHO $CR-LF
LOGM3
DISC /WRITE OUT SI
6605
SIDEX+1
DISCHK /CHECK FOR DISK OK
JMP I LOGMES
LOGST, VERBRK /START OF INSTALLATION MESSAGE OF THE DAY
GETCHA, GETCH
LOGESC, 375-233 /ALT MODE MINUS ESCAPE