/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 > IFNZRO 24-JOBMAX&4000 IFNZRO 23-KL8-PT08&4000 IFNZRO 24-DC08A&4000 IFZERO DC08A IFNZRO DC08A < IFNZRO PHONES IFZERO PHONES > 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 IFZERO RS08-2 IFZERO RS08-3 IFZERO RS08-4 DSKEXT= DSKSIZ-1> IFZERO RF08 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 IFNZRO DC08A /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 IFZERO EAE IFZERO CPU&7776 > IFNZRO OUTREG&1 /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 /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 6615 /DIML; FIELD , NO INTERRUPTS IFZERO RF08 CLA /DEAL DOESN'T CLEAR AC TAD I PDISCLO /PICK UP LOW ADDRESS DISCIOT, 0 /DMAR OR DMAW 6621 /DFSE -- ANY ERRORS? IFZERO RF08 IFZERO RF08-40 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 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