From f55c5075f4a7bef51eb9f9d45edb70b4626b19e4 Mon Sep 17 00:00:00 2001 From: Lars Brinkhoff Date: Tue, 13 Feb 2018 08:51:41 +0100 Subject: [PATCH] Original MRC; TEN50 22. --- src/mrc/{ten50.1 => ten50.22} | 1615 +++++++++++++++++++++------------ 1 file changed, 1013 insertions(+), 602 deletions(-) rename src/mrc/{ten50.1 => ten50.22} (88%) diff --git a/src/mrc/ten50.1 b/src/mrc/ten50.22 similarity index 88% rename from src/mrc/ten50.1 rename to src/mrc/ten50.22 index 0ecf2885..b7551c08 100644 --- a/src/mrc/ten50.1 +++ b/src/mrc/ten50.22 @@ -1,5 +1,3 @@ -;** S.MAC ** SYSTEM PARAMETERS - TITLE TEN50 ;ACCUMULATOR ASSIGNMENTS @@ -11,7 +9,7 @@ PDP=3 ;PUSH DOWN POINTER ITEM=4 ;BUFFER ITEM COUNT DAT=5 ;TTY INPUT BUFFER POINTER JBUF==DAT ;ADDRESS OF 3 WORD BUFFER HEADER IN USER AREA -DEVDAT=6 ;RH = ADDRESS OF CURRENT DEVICE DATA BLOCK +DDB=6 ;RH = ADDRESS OF CURRENT DEVICE DATA BLOCK PROG=7 TEM=10 ;TEMPORARY DSER=11 @@ -35,7 +33,11 @@ ENTER==77000,, DEFINE POINT ?S,ADDR,B=-1 <<<<35.-.RADIX 10.,B>&77>_30.\<<.RADIX 10.,S>&77>_24.> ADDR>TERMIN - ;** S.MAC ** DEVICE DATA BLOCK NAMES + ;DEVNAM DEVCHR DEVIOS DEVSER DRL DCL DCLO CLSOUT CLSIN DOU DIN DEN DLK DDO DDI DSO DSI DRN DCLI DEVMOD ASSCON ASSPRG DVOUT DVIN DVDIR DVTTY DVAVAL DVLNG TTYUSE TTYATC DVLPT DVDSK DEVLOG DEVBUF DEVIAD DEVADR DEVOAD DEVPTR DEVCHN ITSNAM ITSIOF DEVCTR DEVFIL DEVEXT DEVPPN + +;** S.MAC ** + +;DEVICE DATA BLOCK NAMES DEVNAM==0 ;NAME IN SIXBIT ASCII ; C(LH)=DEVICE MNEMONIC @@ -109,7 +111,11 @@ DEVCTR==13 DEVFIL==13 DEVEXT==14 DEVPPN==15 - ;** S.MAC ** I/O STATUS WORD ASSIGNMENTS + ;A AL I IB B SD DR D IOWC IOCON IOACT IODEND IOBKTL IODTER IODERR IOIMPM IOW IOBEG IOFST IOEND + +;** S.MAC ** + +;I/O STATUS WORD ASSIGNMENTS ;DATA MODES: BITS 32-35 (BYTE POINTER=PIOMOD) A==0 ;ASCII @@ -141,7 +147,11 @@ IOFST==4 IOEND==40 ;SERVICE ROUTINE HAS TRANSMITTED LAST DATA ;REST OF BITS IN LH ARE DEVICE DEPENDENT EXCEPT BIT 14 (=10) - ;** S.MAC ** HARDWARE BITS + ;USRMOD INITB IBUFB OBUFB LOOKB ENTRB INPB OUTPB ICLOSB OCLOSB INBFB OUTBFB SYSDEV RENMB DSKRLB FNFERR IPPERR FBMERR AEFERR NLEERR NSFERR NECERR NSDERR JBFADR JBFPTR JBFCTR IOUSE RUN JERR + +;** S.MAC ** + +;HARDWARE BITS USRMOD==10000 ;LH PC WORD, MACHINE WAS IN USER MODE WHEN PC WAS STORED @@ -198,7 +208,11 @@ IOUSE==400000 ;1 IF BUFFER IS FULL RUN==400000 ;USER WANTS JOB TO RUN JERR==20000 ;A MONITOR DETECTED ERROR HAS OCCURRED ; JOB CANNOT CONTINUE - ;** DSKSER.MAC ** DSK DDB + ;DSDDB ITSNPT + +;** DSKSER.MAC ** + +;DSK DDB DSDDB: SIXBIT IDSKI XWD DSKCOR 201 ;BUFFER SIZE IN 24-35 @@ -213,7 +227,7 @@ DSDDB: SIXBIT IDSKI 0 ;DEVOAD 0 ;DEVCHN : 0-3 = ITS INPUT CHANNEL ; 4-7 = ITS OUTPUT CHANNEL - IBMDE,,(SIXBIT /DSK/) ;ITSNAM : 8-17 = MODE FOR .OPEN (=IMAGE, BLOCK) + IBMDE,,'DSK ;ITSNAM : 8-17 = MODE FOR .OPEN (=IMAGE, BLOCK) ; 18-35 = ITS DEVICE NAME FOR .OPEN DSLEN==.-DSDDB ;= LENGTH OF INITIAL NON-ZERO SEGMENT OF DSDDB @@ -231,8 +245,12 @@ PTR1==.-DSDDB LOC DSDDB+DSLEN ;RELOCATE OURSELVES BACKWARDS OVER TRAILING ; ZERO FRAGMENT OF DSDDB -ITSNPT: POINT 28,ITSNAM(DEVDAT),35, ;POINTER TO ITS NAME AND MODE - ;** DSKSER.MAC ** PARAMETERS ASSOCIATED WITH DISK SERVICE: +ITSNPT: POINT 28,ITSNAM(DDB),35, ;POINTER TO ITS NAME AND MODE + ;DSKDSP REASSI SETUWP REMAP UGTSEG DFDMPO DFDMPI DFSET + +;** DSKSER.MAC ** + +;PARAMETERS ASSOCIATED WITH DISK SERVICE: DRNAM==0 ;NAME IS IN FIRST WORD OF DIR. ENTRY DREXT==1 ;EXT. IS IN SECOND WORD OF DIR. ENTRY @@ -258,21 +276,21 @@ NOFIL.==5 ;TRIED TO RENAME WITH NO FILE SELECTED ;DISK DISPATCH TABLE -DSKDSP: JRST DFREL ;RELEASE - JRST DFCLSO ;CLOSE OUTPUT - JRST DFOUT ;OUTPUT - JRST DFIN ;INPUT - JRST DFENTR ;ENTER - JRST DFLOOK ;LOOKUP - JRST DFDMPO ;DUMP OUTPUT - JRST DFDMPI ;DUMP INPUT - JRST DFSET ;USETO - JRST DFSET ;USETI - POPJ PDP, ;UGETF - JRST DFREN ;RENAME - JRST DFCLSI ;CLOSE INPUT - POPJ PDP, ;UTPCLR - POPJ PDP, ;MTAPE +DSKDSP: JRST DFREL ;RELEASE + JRST DFCLSO ;CLOSE OUTPUT + JRST DFOUT ;OUTPUT + JRST DFIN ;INPUT + JRST DFENTR ;ENTER + JRST DFLOOK ;LOOKUP + JRST DFDMPO ;DUMP OUTPUT + JRST DFDMPI ;DUMP INPUT + JRST DFSET ;USETO + JRST DFSET ;USETI + POPJ PDP, ;UGETF + JRST DFREN ;RENAME + JRST DFCLSI ;CLOSE INPUT + POPJ PDP, ;UTPCLR + POPJ PDP, ;MTAPE REASSI: @@ -281,36 +299,39 @@ REMAP: UGTSEG: DFDMPO: DFDMPI: -DFSET: JSP TAC,ERRPTU +DFSET: JSP TAC,ERRPTU ASCIZ /Unimplemented UUO/ - MOVE TAC1,UUO0 - SOJA TAC1,PCPNT + MOVE TAC1,UUO0 + SOJA TAC1,PCPNT + ;DFENTR ENTCK DFERR6 DFERR5 - ;** DSKSER.MAC ** ENTER UUO +;** DSKSER.MAC ** + +;ENTER UUO DFENTR: PUSHJ PDP,GETWDU ;NULL FILENAME? JUMPE TAC,DFER12 ;IF SO, ERROR - TLNE DEVDAT,LOOKB ;NO, HAS LOOKUP BEEN DONE? + TLNE DDB,LOOKB ;NO, HAS LOOKUP BEEN DONE? JRST DFENT5 ;YES, ERROR FOR NOW - UPDATE MODE ;NOT IMPLEMENTED YET - MOVEM TAC,DEVFIL(DEVDAT) ;STORE FILENAME IN DDB + MOVEM TAC,DEVFIL(DDB) ;STORE FILENAME IN DDB PUSHJ PDP,GETWD1 ;GET EXT. TLNN TAC,-1 ; NULL EXTENSIONS BEING ILLEGAL ON ITS, JRST DFER12 ; WE COP OUT WITH ILLEGAL NAME - HLLZM TAC,DEVEXT(DEVDAT) ;STORE IN DDB + HLLZM TAC,DEVEXT(DDB) ;STORE IN DDB HRRI UUO,2(UUO) ;GET SPECIFIED PPN PUSHJ PDP,GETWDU PUSHJ PDP,PPTOSN ;CONVERT TO SNAME HRRI UUO,-3(UUO) ;RESET ACCUMULATOR "UUO" - TLNE DEVDAT,SYSDEV ;IS THIS SYSTEM DEVICE? + TLNE DDB,SYSDEV ;IS THIS SYSTEM DEVICE? MOVE TAC,SYSPP ;YES, THEN GET SNAME OF "SYS" CAME TAC,SNAME ;IS IT HIS SNAME? JRST DFERR5 ;NO, ERROR FOR TRYING TO WRITE INTO ;ANOTHER AREA - MOVEM TAC,DEVPPN(DEVDAT) ;YES, STORE IN DDB - MOVE TAC,DEVFIL(DEVDAT) ;GET FILENAME - MOVE TAC1,DEVEXT(DEVDAT) ;AND EXT. + MOVEM TAC,DEVPPN(DDB) ;YES, STORE IN DDB + MOVE TAC,DEVFIL(DDB) ;GET FILENAME + MOVE TAC1,DEVEXT(DDB) ;AND EXT. SKIPA AC1,USRHCU ;GET HGHEST CHAN. IN USE AND SEE IF THIS FILE ;IS BEING WRITTEN ON ANOTHER CHANNEL ENTCK: SOJL AC1,DFENT1 ;OK IF NOT BEING WRITTEN NOW @@ -324,7 +345,9 @@ DFERR6: MOVEI TAC1,NORITE ;ERROR - FILE BEING WRITTEN NOW!! JRST DFERRY DFERR5: MOVEI TAC1,PROTF ;TELL HIM PROTECTION ERROR JRST DFERRY - ;** DSKSER.MAC ** + ;DFENT1 DFENT2 MKFNNM DFENT5 NOCHNE SETENT + +;** DSKSER.MAC ** DFENT1: LDB TAC,PDEVO ;GET ITS O/P CHANNEL JUMPN TAC,.+4 ;MOVE ON IF ALREADY ONE @@ -333,16 +356,16 @@ DFENT1: LDB TAC,PDEVO ;GET ITS O/P CHANNEL DPB TAC,PDEVO ;OK, STORE IT PUSHJ PDP,GTTIME ;GET CURRENT TIME IDIVI TAC,JIFMIN ;FORM MINUTES PAST MIDNITE - DPB TAC,[POINT 11,DEVCHN(DEVDAT),23,] ;STORE IN DDB + DPB TAC,[POINT 11,DEVCHN(DDB),23,] ;STORE IN DDB PUSHJ PDP,GTDATE ;GET TODAY'S DATE - DPB TAC,[POINT 12,DEVCHN(DEVDAT),35,] ;STORE IN DDB + DPB TAC,[POINT 12,DEVCHN(DDB),35,] ;STORE IN DDB LDB AC2,PDEVO ;GET CHANNEL # PUSHJ PDP,SETENT ;SET UP A .OPEN FOR OUTPUT INSTR. XCT TAC ;DO THE .OPEN JRST DFERR6 ;FAILURE, ASSUME FILE BEING WRITTEN - SETZM DEVCNT(DEVDAT) ;INITIALIZE LENGTH + SETZM DEVCNT(DDB) ;INITIALIZE LENGTH DFENT2: MOVEI TAC,1 ;INITALIZE SETCNT - MOVEM TAC,SETCNT(DEVDAT) + MOVEM TAC,SETCNT(DDB) JRST CPOPJ1 ;SKIP RETURN ;THIS LITTLE ROUTINE TAKES THE CONTENTS OF AC2 AS AN I.T.S. @@ -357,7 +380,7 @@ MKFNNM: IDIVI AC2,10 POPJ PDP, ;RETURN WITH AC2 & AC3 SET UP DFENT5: JSP TAC,ERRPTU - ASCIZ *Update mode not available* + ASCIZ *Update mode not implemented* JRST EXCALP NOCHNE: JSP TAC,ERRPTU @@ -371,23 +394,27 @@ SETENT: MOVEI TAC,(AC2) ;MAKE COPY OF CHAN. # IORI TAC,<41>_4+_13. ;SET UP .OPEN INSTR. ROT TAC,-13. ;POSITION IT POPJ PDP, ;RETURN - ;** DSKSER.MAC ** LOOKUP UUO + ;DFLOOK + +;** DSKSER.MAC ** + +;LOOKUP UUO DFLOOK: PUSHJ PDP,GETWDU ;GET THE FILE NAME JUMPE TAC,DFER12 ;ERROR IF NULL - MOVEM TAC,DEVFIL(DEVDAT) ;NOT NULL, STORE IN DDB + MOVEM TAC,DEVFIL(DDB) ;NOT NULL, STORE IN DDB PUSHJ PDP,GETWD1 ;GET EXTENSION TLNN TAC,-1 ; NULL EXTENSIONS ARE ILLEGAL ON ITS JRST DFER12 ; SO COP OUT WITH ILLEGAL NAME - HLLZM TAC,DEVEXT(DEVDAT) ;STORE IN DDB + HLLZM TAC,DEVEXT(DDB) ;STORE IN DDB HRRI UUO,2(UUO) ;GET PPN PUSHJ PDP,GETWDU PUSHJ PDP,PPTOSN ;CONVERT TO SNAME - TLNE DEVDAT,SYSDEV ;IS THIS DEVICE SYS ? + TLNE DDB,SYSDEV ;IS THIS DEVICE SYS ? MOVE TAC,SYSPP ;YES, THEN GET SNAME OF "SYS" - MOVEM TAC,DEVPPN(DEVDAT) ;STORE IN DDB + MOVEM TAC,DEVPPN(DDB) ;STORE IN DDB HRRI UUO,-3(UUO) ;RESTORE UUO - HLRZ TAC1,DEVEXT(DEVDAT) ;GET EXT. INTO RH + HLRZ TAC1,DEVEXT(DDB) ;GET EXT. INTO RH CAIN TAC1,(SIXBIT /UFD/) ;IS IT "UFD" ? CAME TAC,SYSPP ;YES, IS THIS SYS PPN? JRST NOTUFD ;NO, ORDINARY FILE @@ -400,14 +427,14 @@ DFLOOK: PUSHJ PDP,GETWDU ;GET THE FILE NAME PUSHJ PDP,SETENT ;SET UP .OPEN FOR OUTPUT ON FUNNY NAME XCT TAC ;DO IT! JRST DFERR6 ;SHOULDN'T HAPPEN, BUT FILE IS BEING WRITTEN NOW - MOVE TAC,DEVFIL(DEVDAT) ;GET SPECIFIED PPN + MOVE TAC,DEVFIL(DDB) ;GET SPECIFIED PPN PUSHJ PDP,PPTOSN ;CONVERT TO SNAME MOVEI TAC1,RDUFD ;SET UP ADR. FOR RFD - SETZM DEVCNT(DEVDAT) ;INITIALIZE LENGTH OF FILE + SETZM DEVCNT(DDB) ;INITIALIZE LENGTH OF FILE PUSHJ PDP,RFD ;START READING THE UFD AND WRITING ;A 10/50 - LOOKING COPY FOR HIM TO READ JRST DFERR7 ;NO SUCH UFD - PASS IT ON TO HIM - MOVE TAC1,DEVCNT(DEVDAT) ;GET # OF WORDS IN UFD. + MOVE TAC1,DEVCNT(DDB) ;GET # OF WORDS IN UFD. ANDI TAC1,177 ;ISOLATE THE # LEFT TO BE WRITTEN OUT MOVNI TAC1,(TAC1) ;NEGATE IT MOVSI TAC1,(TAC1) ;PUT IN LH IN PREPARATION FOR .IOT @@ -421,7 +448,9 @@ DFLOOK: PUSHJ PDP,GETWDU ;GET THE FILE NAME XCT TAC ;OK, .OPEN IT FOR READING JRST DFERR6 ;BULL SHIT! - BUT COP OUT BY SAYING ;THAT FILE IS BEING WRITTEN - ;** DSKSER.MAC ** + ;ENDUFD RDUFD RDUFD1 + +;** DSKSER.MAC ** ENDUFD: PUSHJ PDP,GTDATE ;GET TODAY'S DATE AS ACCESS DATE HRLI TAC,(SIXBIT /UFD/) ;AND PROPER EXT. @@ -429,13 +458,13 @@ ENDUFD: PUSHJ PDP,GTDATE ;GET TODAY'S DATE AS ACCESS DATE MOVEI TAC,10000 ;CAUSE VERY EARLY DATE AND TIME OF CREATION MOVEM TAC,FILNM2 ;BECAUSE IT WOULD LOOK PRETTY SILLY ;IF THE UFD WAS NEWER THAN SOME OF ITS FILES!! - MOVNS TAC,DEVCNT(DEVDAT) ;NEGATE SIZE + MOVNS TAC,DEVCNT(DDB) ;NEGATE SIZE HRLZM TAC,FILNM3 ;AND STORE A COPY FOR USER JRST LEXIS1 ;GIVE IT ALL TO HIM AND RETURN RDUFD: MOVEI TAC1,2 ;INCREASE # OF WORDS IN UFD BY 2 - ADDB TAC1,DEVCNT(DEVDAT) ;AND GET A COPY OF RESULT + ADDB TAC1,DEVCNT(DDB) ;AND GET A COPY OF RESULT CAIE TAC1,200 ;DEFENSIVE!!! ANDI TAC1,177 ;ISOLATE BLOCK RESIDUE MOVE TAC,FILNAM ;STORE FILENAME AND EXT. IN BUFFER TO @@ -451,7 +480,9 @@ RDUFD1: HRRI TAC1,MONBUF ;PUT ADR. OF BUFFER INTO .IOT POINTER ROT TAC,-13. ;POSITION IT XCT TAC ;SEND THE BUFFER ( OR PART OF IT IF END ) POPJ PDP, ;RETURN - ;** DSKSER.MAC ** + ;NOTUFD DFERR4 DFERR7 DFER12 DFERRY DFER10 DFER11 LEXIST RHEQ1 LEXIS1 LEXIS2 + +;** DSKSER.MAC ** NOTUFD: MOVEI TAC1,LEXIST ;SET UP ADR. OF ROUTINE PUSHJ PDP,RFD ;READ FILE DIRECTORY ( SNAME IN TAC ) @@ -469,22 +500,22 @@ DFER11: MOVEI TAC1,5 ;ATTEMPT TO RENAME WITHOUT PREVIOUS LOOKUP OR ENTER LEXIST: MOVE TAC,FILNAM ;IS THIS THE FILE WE WANT? HLLZ TAC1,FILNM1 - CAMN TAC,DEVFIL(DEVDAT) - CAME TAC1,DEVEXT(DEVDAT) + CAMN TAC,DEVFIL(DDB) + CAME TAC1,DEVEXT(DDB) RHEQ1: POPJ PDP,1 ;NO, RETURN FOR ANOTHER SUB PDP,[XWD RFDSTK RFDSTK] ;YES, FIX PDP HLRZ TAC,FILNM3 ;GET FILE'S SIZE - MOVEM TAC,DEVCNT(DEVDAT) ;STORE IN DDB + MOVEM TAC,DEVCNT(DDB) ;STORE IN DDB LDB TAC,PDEVI ;GET ITS CHAN. # JUMPN TAC,.+4 ;IF WE ALREADY HAVE ONE, MOVE ON PUSHJ PDP,GTFCHN ;NO, GET ONE JRST NOCHNE ;ERROR - NONE AVAILABLE DPB TAC,PDEVI ;OK, STORE IN DDB MOVSI TAC1,ITSIOF ;SET UP FOR INPUT - ANDCAM TAC1,ITSNAM(DEVDAT) + ANDCAM TAC1,ITSNAM(DDB) ROT TAC,-13. ;POSITION CHAN. # - IOR TAC,[.OPEN 0,ITSNAM(DEVDAT)] ;SET UP .OPEN INSTR. - MOVE AC1,DEVPPN(DEVDAT) ;GET THE SNAME WE WANT THE FILE FROM + IOR TAC,[.OPEN 0,ITSNAM(DDB)] ;SET UP .OPEN INSTR. + MOVE AC1,DEVPPN(DDB) ;GET THE SNAME WE WANT THE FILE FROM CAME AC1,SNAME ;IS IT HIS OWN FILE WE WANT? .SUSET [.SSNAME,,AC1] ;NO, SET CURRENT SNAME TO THIS ONE ;TEMPORARILY - WE WILL CHANGE IT BACK @@ -506,43 +537,45 @@ LEXIS1: MOVE TAC,FILNM1 ;SEND THREE NEW WORDS TO USER LEXIS2: CAME AC1,SNAME ;DID WE CHANGE THE SNAME? .SUSET [.SSNAME,,SNAME] ;YES, CHANGE IT BACK JRST DFERR7 ;NOW GIVE ERROR RETURN - ;** DSKSER.MAC ** RENAME UUO + ;DFREN RHEQ4 DFRENX + +;** DSKSER.MAC ** RENAME UUO DFREN: PUSHJ PDP,DFRENX RHEQ4: POPJ PDP,4 JRST CPOPJ1 -DFRENX: SKIPN DEVFIL(DEVDAT) ;IS THERE AN OLD FILE? +DFRENX: SKIPN DEVFIL(DDB) ;IS THERE AN OLD FILE? JRST DFER11 ;NO, UNDEFINED FILE ERROR - MOVE TAC,DEVPPN(DEVDAT) ;YES, GET THE UFD + MOVE TAC,DEVPPN(DDB) ;YES, GET THE UFD CAME TAC,SNAME ;IS IT HIS? JRST DFERR5 ;NO, PROTECTION FAILURE! PUSHJ PDP,GETWDU ;GET SPECIFIED FILENAME JUMPE TAC,DFREN7 ;TRYING TO DELETE IF ZERO MOVE AC1,TAC ;NOT ZERO, SAVE IT IN AC1 PUSHJ PDP,GETWD1 ;GET EXT. - HRR TAC,DEVEXT(DEVDAT) ;CAUSE RIGHT HALVES TO MATCH AND GET FUNNY. - CAMN AC1,DEVFIL(DEVDAT) ;SAME FILENAME? - CAME TAC,DEVEXT(DEVDAT) ;YES, SAME EXT? + HRR TAC,DEVEXT(DDB) ;CAUSE RIGHT HALVES TO MATCH AND GET FUNNY. + CAMN AC1,DEVFIL(DDB) ;SAME FILENAME? + CAME TAC,DEVEXT(DDB) ;YES, SAME EXT? JRST .+2 ;NO, SEE ABOUT RENAMING JRST CPOPJ1 ;YES, GOOD RETURN BECAUSE ONLY TRYING ;TO CHANGE PROTECTION - EXCH AC1,DEVFIL(DEVDAT) ;SWAP NAMES TEMPORARILY - EXCH TAC,DEVEXT(DEVDAT) + EXCH AC1,DEVFIL(DDB) ;SWAP NAMES TEMPORARILY + EXCH TAC,DEVEXT(DDB) MOVEM AC1,FRENAM+1 ;STORE FOR POSSIBLE RENAME MOVEM TAC,FRENAM+2 PUSHJ PDP,FNDFIL ;SEE IF NEW FILE ALREADY EXISTS JUMPN AC1,DFRNX3 ;SWAP NAMES BACK & GIVE ERROR IF IT DOES - TLNE DEVDAT,ENTRB ;OK, ARE WE WRITING? + TLNE DDB,ENTRB ;OK, ARE WE WRITING? JRST DFRNX4 ;NO, HANDLE DIFFERENTLY - PUSH PDP,DEVDAT ;SAVE DEVDAT - MOVEI DEVDAT,FRENAM+1-DEVFIL ;MAKE DEVDAT POINT TO OLD NAMES + PUSH PDP,DDB ;SAVE DDB + MOVEI DDB,FRENAM+1-DEVFIL ;MAKE DDB POINT TO OLD NAMES PUSHJ PDP,FNDFIL ;FIND FILE - POP PDP,DEVDAT ;RESTORE DEVDAT + POP PDP,DDB ;RESTORE DDB JUMPE AC1,DFRNX5 ;IF NOT THERE, HE MUST HAVE DELETED ;IT ON ANOTHER CHANNEL. - MOVE TAC,DEVFIL(DEVDAT) ;GET NEW FILENAME - MOVE TAC1,DEVEXT(DEVDAT) ;AND EXT. + MOVE TAC,DEVFIL(DDB) ;GET NEW FILENAME + MOVE TAC1,DEVEXT(DDB) ;AND EXT. MOVEM TAC,FRENAM+3 ;STORE FOR RENAME MOVEM TAC1,FRENAM+4 .FDELE FRENAM ;CHANGE THE NAMES @@ -552,35 +585,41 @@ DFRENX: SKIPN DEVFIL(DEVDAT) ;IS THERE AN OLD FILE? MOVEM TAC,DRNAM(AC1) ;STORE IT IN DIR. ENTRY ALSO AOS (PDP) ;CAUSE THERE TO BE SKIP RETURN JRST DFCLSI ;FROM CLOSING INPUT - ;** DSKSER.MAC ** + ;DFRNX5 DFRNX3 DFRNX4 DFREN7 + +;** DSKSER.MAC ** DFRNX5: SKIPA AC1,[DFERR7] ;LOAD ADR. OF ERROR DFRNX3: MOVEI AC1,DFER10 ;LOAD ADR. OF ERROR MOVE TAC,FRENAM+1 ;GET ORIGINAL NAME BACK - MOVEM TAC,DEVFIL(DEVDAT) + MOVEM TAC,DEVFIL(DDB) HLLZ TAC,FRENAM+2 ;EXT. ALSO - MOVEM TAC,DEVEXT(DEVDAT) + MOVEM TAC,DEVEXT(DDB) JRST (AC1) ;AND GIVE CORRECT ERROR RETURN DFRNX4: AOS (PDP) ;CAUSE SUCCESSFUL RETURN JRST DFCLSO ;FROM CLOSING OUTPUT DFREN7: PUSHJ PDP,DEL.IT ;DELETE THE FILE HE WAS READING OR WRITING - TLZ DEVDAT,LOOKB+ENTRB ;CLEAR FACT THAT HE WAS READING OR WRITING + TLZ DDB,LOOKB+ENTRB ;CLEAR FACT THAT HE WAS READING OR WRITING ;SINCE HE JUST DELETED IT AOBJN PDP,UINIT5 ;GIVE SUCCESSFUL RETURN ;*** NOTE: THIS IS POTENTIALLY RISKY IF THIS OCCURS ;WHEN WE ARE NEAR END OF STACK!!!***** - ;** DSKSER.MAC ** CLOSE UUO + ;DFCLSO DFCL2 DFCL2A + +;** DSKSER.MAC ** + +;CLOSE UUO ;CLOSE AN OUTPUT FILE -DFCLSO: TLNN DEVDAT,ENTRB ;ENTER DONE YET? +DFCLSO: TLNN DDB,ENTRB ;ENTER DONE YET? POPJ PDP, ;NO, FORGET IT LDB TAC,PIOMOD ;IS IT DUMP MODE? CAIGE TAC,DR - TLNE DEVDAT,DSKRLB ;NO, IS RESET UUO IN PROGRESS? + TLNE DDB,DSKRLB ;NO, IS RESET UUO IN PROGRESS? JRST DFCL2 ;YES TO EITHER QUESTION - HLRZ TAC,DEVBUF(DEVDAT) ;NO, GET ADR. OF OUTPUT + HLRZ TAC,DEVBUF(DDB) ;NO, GET ADR. OF OUTPUT ;BUFFER HEADER BLOCK .UMOVE TAC1,(TAC) ;GET FIRST WORD - VIRGIN BUFFERS?? ; TAC1 POINTS TO CURRENT BUFFER @@ -600,42 +639,44 @@ DFCLSO: TLNN DEVDAT,ENTRB ;ENTER DONE YET? ;0-WORD FINAL BLOCK PUSHJ PDP,OUT ;GO WRITE LAST PARTIAL BLOCK -DFCL2: TLZ DEVDAT,ENTRB ;TURN THIS OFF NOW +DFCL2: TLZ DDB,ENTRB ;TURN THIS OFF NOW ;CHECK FOR UPDATE MODE HERE ******** - TLNE DEVDAT,DSKRLB ;IS RESET UUO IN PROGRESS? + TLNE DDB,DSKRLB ;IS RESET UUO IN PROGRESS? JRST DFC16A ;YES PUSHJ PDP,DEL.IT ;NO, DELETE FILE WITH THIS ;NAME AND EXT. - HRRE TAC,DEVCNT(DEVDAT) ;GET SIZE OF FILE + HRRE TAC,DEVCNT(DDB) ;GET SIZE OF FILE MOVN TAC,TAC - HLLZ TAC,DEVEXT(DEVDAT) ;FORM COMPLETE SECOND NAME + HLLZ TAC,DEVEXT(DDB) ;FORM COMPLETE SECOND NAME MOVEM TAC,FOPRNM+4 ;STORE FOR .FDELE (RENAME) - MOVEM TAC,DEVEXT(DEVDAT) ;ALSO STORE IN DDB SO THAT A SEQUENCE OF + MOVEM TAC,DEVEXT(DDB) ;ALSO STORE IN DDB SO THAT A SEQUENCE OF ; ENTER/CLOSE/RENAME WORKS. RENAME EXPECTS COMPLETE FILE NAME IN DEVFIL/ ; DEVEXT. LDB TAC,PDEVO ;GET CHANNEL # MOVEM TAC,FOPRNM+2 - MOVE TAC,DEVFIL(DEVDAT) ;GET FIRST NAME + MOVE TAC,DEVFIL(DDB) ;GET FIRST NAME MOVEM TAC,FOPRNM+3 DFCL2A: .FDELE FOPRNM ;DO A RENAME WHILE WRITING JRST CLSFAL ;FAILURE - COINCIDENTAL, BUT HE MUST HAVE ;SNUCK IN A FILE OF EXACTLY THE SAME NAME. ;WE WILL DELETE IT AND TRY AGAIN, BECAUSE ;WE ARE SUPPOSED TO SUPERCEDE - ;** DSKSER.MAC ** + ;ITSCLO ITSCL1 DFC16A + +;** DSKSER.MAC ** MOVEI AC1,1 ;OK, GET A CHUNK FOR NEW DIR. ENTRY PUSHJ PDP,GTF - HRRE TAC,DEVCNT(DEVDAT) ;GET SIZE OF FILE + HRRE TAC,DEVCNT(DDB) ;GET SIZE OF FILE MOVN TAC,TAC MOVSI TAC,(TAC) HRR TAC,DIRLST ;AND LINK NEW CHUNK INTO CHAIN HRRM AC1,DIRLST MOVEM TAC,DRSIZ(AC1) PUSHJ PDP,GTDATE ;GET TODAY'S DATE FOR ACCESS DATE - HLL TAC,DEVEXT(DEVDAT) ;ALSO EXT. + HLL TAC,DEVEXT(DDB) ;ALSO EXT. MOVEM TAC,DREXT(AC1) ;STORE IN DIR. ENTRY MOVEM TAC,DRPROT(AC1) ;STORE AS CREATION DATE ALSO - ;REST OF WORD GETS FILLED IN @@ -646,7 +687,7 @@ DFCL2A: .FDELE FOPRNM ;DO A RENAME WHILE WRITING LDB TAC,PIOMOD ;GET DATA MODE OF INIT IORI TAC,_4 ;PUT IN STD. PROTECTION KEY DPB TAC,[POINT 13,DRPROT(AC1),12,] ;STORE IN DIR. ENTRY - MOVE TAC,DEVFIL(DEVDAT) ;DON'T FORGET FILENAME + MOVE TAC,DEVFIL(DDB) ;DON'T FORGET FILENAME MOVEM TAC,DRNAM(AC1) ITSCLO: LDB TAC,PDEVO ;GET CHAN. # ITSCL1: ROT TAC,-13. ;POSITION IT @@ -664,7 +705,9 @@ DFC16A: PUSHJ PDP,ITSCLO ;CLOSE THE OUTPUT CHANNEL .FDELE FRENAM ;DO SO. POPJ PDP, ;RETURN ANYWAY POPJ PDP, ;RETURN - ;** DSKSER.MAC ** + ;CLSFAL FNDFIL FNDF.1 DEL.IT + +;** DSKSER.MAC ** CLSFAL: MOVEM TAC,FRENAM+1 ;STORE NAME1 TO BE DELETED MOVE TAC,FOPRNM+4 ;GET NAME2 FROM RENAME @@ -675,11 +718,11 @@ CLSFAL: MOVEM TAC,FRENAM+1 ;STORE NAME1 TO BE DELETED ;HERE TO DELETE ALL FILES WHOSE NAME & EXT. MATCH -;THOSE IN DDB POINTED TO IN DEVDAT. +;THOSE IN DDB POINTED TO IN DDB. FNDFIL: MOVEI AC1,DIRLST-FSIZ+1 ;INITIALIZE LOOP - MOVE TAC,DEVFIL(DEVDAT) ;GET NAME - HLRZ AC3,DEVEXT(DEVDAT) ;AND EXTENSION + MOVE TAC,DEVFIL(DDB) ;GET NAME + HLRZ AC3,DEVEXT(DDB) ;AND EXTENSION FNDF.1: MOVEI AC2,(AC1) ;COPY POINTER HRRZ AC1,DRSIZ(AC1) ;POINT TO NEXT ENTRY JUMPE AC1,CPOPJ ;ZERO DENOTES END - RETURN @@ -704,7 +747,11 @@ DEL.IT: PUSHJ PDP,FNDFIL ;FIND THE FILE .FDELE FRENAM ;DELETE FILE JFCL POPJ PDP, ;RETURN - ;** DSKSER.MAC ** CLOSE AN INPUT FILE + ;DFCLSI DFCL21 DFCL23 DFCL30 + +;** DSKSER.MAC ** + +;CLOSE AN INPUT FILE ;IF IT HAS BEEN BOTH "LOOKUP" AND "INPUT", THEN UPDATE THE ;ACCESS DATE. INITIALLY, BECAUSE WE DO .OPEN WHEN WE PERFORM @@ -716,14 +763,14 @@ DEL.IT: PUSHJ PDP,FNDFIL ;FIND THE FILE ;WE WOULD LIKE TO UPDATE THE ACCESS DATE IN THE UFD IN THE TOP 1K. -DFCLSI: TLZN DEVDAT,LOOKB ;ANY REASON TO BOTHER? +DFCLSI: TLZN DDB,LOOKB ;ANY REASON TO BOTHER? POPJ PDP, ;NO, RETURN DFCL21: DFCL23: -; TLZN DEVDAT,INPB ;HAS AN INPUT BEEN DONE? +; TLZN DDB,INPB ;HAS AN INPUT BEEN DONE? ; POPJ PDP, ;NO, RETURN - MOVE TAC,DEVPPN(DEVDAT) ;YES, GET PPN OF THIS FILE + MOVE TAC,DEVPPN(DDB) ;YES, GET PPN OF THIS FILE PUSHJ PDP,PPTOSN ;CONVERT TO SNAME CAME TAC,SNAME ;IS IT THIS USER'S? JRST DFCL30 ;NO, NOT IN GOOD FORM; FIX ANOTHER WAY. @@ -735,29 +782,37 @@ DFCL23: DFCL30: HRRZ AC1,HLADR ;GET ADR. OF BEGIN OF UFD JUMPE AC1,CPOPJ ;IF NONE, RETURN MOVE TAC,UDNAME(AC1) ;GET THE OWNER'S SNAME - CAMN TAC,DEVPPN(DEVDAT) ;IS IT HIS FILE BEING CLOSED? + CAMN TAC,DEVPPN(DDB) ;IS IT HIS FILE BEING CLOSED? SETZM UDNAME(AC1) ;YES, ERASE THE FACT THAT HE IS IN. POPJ PDP, ;RETURN - ;** DSKSER.MAC ** RELEASE UUO + ;DFREL -DFREL: TLO DEVDAT,DSKRLB ;NOTE THAT RELEASE (VIA RESET UUO) +;** DSKSER.MAC ** + +;RELEASE UUO + +DFREL: TLO DDB,DSKRLB ;NOTE THAT RELEASE (VIA RESET UUO) ;IS IN PROGRESS PUSHJ PDP,DFCLSI ;CLOSE INPUT FIRST PUSHJ PDP,DFCLSO ;THEN CLOSE OUTPUT - TLZ DEVDAT,DSKRLB ;CLEAR RELEASE MARKER + TLZ DDB,DSKRLB ;CLEAR RELEASE MARKER POPJ PDP, ;RETURN - ;** DSKSER.MAC ** INPUT UUO + ;DFIN DFIN1 DFIN1E DFERR2 -DFIN: TLNN DEVDAT,LOOKB ;FILE OPRN? +;** DSKSER.MAC ** + +;INPUT UUO + +DFIN: TLNN DDB,LOOKB ;FILE OPRN? JRST DFERR2 ;NO, UNDEFINED FILE DFIN1: TLNE IOS,IOEND ;ANY MORE INPUT? POPJ PDP, ;NO, LEAVE - HRRE AC1,DEVCNT(DEVDAT) ;GET SIZE OF FILE WE ARE READING + HRRE AC1,DEVCNT(DDB) ;GET SIZE OF FILE WE ARE READING JUMPLE AC1,.+2 ;IF # OF BLOCKS, LSH AC1,BLKP2 ;MAKE # OF WORDS MOVM AC1,AC1 ;MAKE POS. # WORDS REGARDLESS - MOVE AC2,SETCNT(DEVDAT) ;GET BLOCK # TO READ NEXT + MOVE AC2,SETCNT(DDB) ;GET BLOCK # TO READ NEXT SUBI AC2,1 ;FORM MINIMUM # WORDS NEEDED IN FILE TO BE LSH AC2,BLKP2 ;ABLE TO READ THIS BLOCK SUB AC2,AC1 ;IF PAST END OF FILE, @@ -776,7 +831,7 @@ DFIN1: TLNE IOS,IOEND ;ANY MORE INPUT? HLRE AC2,AC2 ;GET POST FACTO COUNT SUB AC2,TAC1 ;GET # WORDS TRANSFERRED IN JUMPE AC2,DFIN1E ;END IF NOTHING READ - HRRZ TAC1,DEVIAD(DEVDAT) ;GET ADR. OF CURRENT BUFFER + HRRZ TAC1,DEVIAD(DDB) ;GET ADR. OF CURRENT BUFFER .UMOVE AC1,1(TAC1) ;GET WORD WHICH HOLDS WORD COUNT HRRI AC1,(AC2) ;PUT THIS WORD COUNT IN IT MOVEM AC1,MONBUF ;STORE FOR TRANSFER INTO BUFFER @@ -784,29 +839,33 @@ DFIN1: TLNE IOS,IOEND ;ANY MORE INPUT? HRLI TAC1,MONBUF ;SET UP TO GIVE USER HIS BUFFER ADDI AC1,(TAC1) ;POINT TO LAST LOC. IN BUFFER TO BE FILLED .UBLTO TAC1,(AC1) ;OFF IT GOES! - AOS SETCNT(DEVDAT) ;NEXT BLOCK # + AOS SETCNT(DDB) ;NEXT BLOCK # CAIE AC2,BLKSIZ ;DID WE JUST READ A FULL 10/50 BLOCK? PUSHJ PDP,DFIN1E ;NO, SET END PUSHJ PDP,ADVBFF ;YES, ANY MORE EMPTY BUFFERS? POPJ PDP, ;NO, RETURN JRST DFIN1 ;YES, SEE ABOUT FILLING ANOTHER WHILE WE ARE HERE DFIN1E: TLO IOS,IOEND ;SET END - MOVEM IOS,DEVIOS(DEVDAT) + MOVEM IOS,DEVIOS(DDB) POPJ PDP, ;RETURN DFERR2: MOVEI IOS,IOIMPM - IORB IOS,DEVIOS(DEVDAT) + IORB IOS,DEVIOS(DDB) POPJ PDP, - ;** DSKSER.MAC ** OUTPUT UUO + ;DFOUT DFOUT1 -DFOUT: TLNN DEVDAT,ENTRB ;FILE OPEN? +;** DSKSER.MAC ** + +;OUTPUT UUO + +DFOUT: TLNN DDB,ENTRB ;FILE OPEN? JRST DFERR2 ;NO, UNDEFINED FILE -DFOUT1: HRLZ TAC1,DEVOAD(DEVDAT) ;GET ADR. OF BUFFER IN USER AREA +DFOUT1: HRLZ TAC1,DEVOAD(DDB) ;GET ADR. OF BUFFER IN USER AREA HRRI TAC1,MONBUF+1 ;SET UP DESTINATION ( +1 WHICH GOES AWAY BELOW ) ADDI TAC1,777777 ;DECREASE RH BY 1 AND INCREASE LH BY 1 .UBLTI TAC1,MONBUF+BLKSIZ ;GET THE ENTIRE BUFFER HRRZ TAC1,MONBUF ;GET WORD COUNT PUSHJ PDP,UPDEVC ;UPDATE DEVCNT - AOS SETCNT(DEVDAT) ;INCREMENT BLOCK # + AOS SETCNT(DDB) ;INCREMENT BLOCK # MOVE TAC1,[XWD -200 MONBUF+1] ;SET UP .IOT LDB TAC,PDEVO ;GET OUTPUT CHAN. # IORI TAC,<40_4>+ @@ -815,7 +874,9 @@ DFOUT1: HRLZ TAC1,DEVOAD(DEVDAT) ;GET ADR. OF BUFFER IN USER AREA PUSHJ PDP,ADVBFE ;ANY MORE OUTPUT TO DO? POPJ PDP, ;NO, RETURN JRST DFOUT1 ;YES, DO ANOTHER BUFFER - ;** DSKSER.MAC ** + ;CLRDDB CLDDB1 SETDDB SETDD0 + +;** DSKSER.MAC ** ;CLEAR OUT DDB AT RELEASE TIME ; COULD BE A TTY DDB OR A DSK DDB (SIZE IS INCLUDED IN LH OF DEVCHR) @@ -824,35 +885,37 @@ CLRDDB: MOVEI AC2,DSKDDB ;POINT TO PROTOTYPE CLDDB1: MOVEI AC1,(AC2) ;MAKE COPY OF POINTER HLRZ AC2,DEVSER(AC1) ;GET LINK TO NEXT DDB JUMPE AC2,CPOPJ ;0 MEANS END - CAIE AC2,(DEVDAT) ;IS THIS THE ONE? + CAIE AC2,(DDB) ;IS THIS THE ONE? JRST CLDDB1 ;NO, TRY NEXT MOVE TAC,DEVSER(AC2) ;YES, GET LINK OF NEXT DDB HLLM TAC,DEVSER(AC1) ;STORE IN PREVIOUS - HLRZ AC1,DEVCHR(DEVDAT) ;SET UP # CHUNKS TO RETURN + HLRZ AC1,DEVCHR(DDB) ;SET UP # CHUNKS TO RETURN JRST RTF ;RETURN THEM AND RETURN ;BUILD A DSK DDB SETDDB: PUSH PDP,TAC ;SAVE THIS AC - MOVE TAC,DEVMOD(DEVDAT) + MOVE TAC,DEVMOD(DDB) TRNE TAC,ASSPRG ;HAS INIT BEEN DONE YET? JRST SETDD0 ;YES, COPY PROTOTYPE - MOVEI TAC,(DEVDAT) ;NO, GET ADR. OF DDB + MOVEI TAC,(DDB) ;NO, GET ADR. OF DDB CAIE TAC,DSKDDB ;IS IT PROTOTYPE? JRST TPOPJ ;NO, THEN WE ALREADY HAVE A COPY OF IT - RETURN SETDD0: MOVEI AC1,DSKCOR ;GET FREE CORE FOR DSK DDB PUSHJ PDP,GTF - HRRI DEVDAT,(AC1) ;POINT DEVDAT AT NEW CORE (DDB) + HRRI DDB,(AC1) ;POINT DDB AT NEW CORE (DDB) HRLI AC1,DSKDDB ;XWD SOURCE DESTINATION - BLT AC1,DSLEN-1(DEVDAT) ;COPY PROTOTYPE UNTIL THAT POINT WHERE + BLT AC1,DSLEN-1(DDB) ;COPY PROTOTYPE UNTIL THAT POINT WHERE ; REST OF DDB IS ZERO - SETZM DSLEN(DEVDAT) ;THEN ZERO THE REST - HRLZI AC1,DSLEN(DEVDAT) - HRRI AC1,DSLEN+1(DEVDAT) - BLT AC1,PTR1-1(DEVDAT) - HRLM DEVDAT,DEVSER+DSKDDB ;LINK IN NEW DDB + SETZM DSLEN(DDB) ;THEN ZERO THE REST + HRLZI AC1,DSLEN(DDB) + HRRI AC1,DSLEN+1(DDB) + BLT AC1,PTR1-1(DDB) + HRLM DDB,DEVSER+DSKDDB ;LINK IN NEW DDB JRST TPOPJ ;RESTORE TAC AND RETURN - ;** DSKSER.MAC ** + ;UPDEVC UPDVC1 UPDVC2 + +;** DSKSER.MAC ** ;UPDATE DEVCNT IF NECESSARY. ;DEVCNT HAS SIZE OF FILE IN RH ( IN WORDS IF POSITIVE, BLOCK @@ -860,18 +923,18 @@ SETDD0: MOVEI AC1,DSKCOR ;GET FREE CORE FOR DSK DDB ;ENTER WITH SIZE OF CURRENT BLOCK IN TAC1 -UPDEVC: HRRZ TAC,SETCNT(DEVDAT) ;CONVERT CURRENT RELATIVE +UPDEVC: HRRZ TAC,SETCNT(DDB) ;CONVERT CURRENT RELATIVE SUBI TAC,1 ;BLOCK # TO WORDS LSH TAC,BLKP2 ADD TAC,TAC1 ;ADD IN THESE ADDITIONAL WORDS - HRRZ TAC1,DEVCNT(DEVDAT) ;PICK UP PREVIOUS MAXIMUM + HRRZ TAC1,DEVCNT(DDB) ;PICK UP PREVIOUS MAXIMUM TRNE TAC1,400000 ;FILE SIZE FOR COMPARISON JRST UPDVC2 ;IF > 2**17, COMPARE NEG. BLOCK COUNTS TLNN TAC,-1 ;NO, IS NEW SIZE > 2**17 WORDS? TRNE TAC,400000 JRST UPDVC1 ;YES, SAVE NEG. BLOCK COUNT CAILE TAC,(TAC1) ;NO, COMPARE POSITIVE WORD COUNTS - HRRM TAC,DEVCNT(DEVDAT) ;UPDATE MAX. FILE SIZE ONLY + HRRM TAC,DEVCNT(DDB) ;UPDATE MAX. FILE SIZE ONLY ;IF PREVIOUS MAX. EXCEEDED POPJ PDP, ;AND RETURN UPDVC1: IORI TAC1,-1 ;SET PREV. MAX. AS ONLY ONE BLOCK @@ -882,10 +945,12 @@ UPDVC2: ADDI TAC,BLKSIZ-1 ;CONVERT POS. WORD COUNT TRON TAC,400000 ;MORE THAN 2**17 BLOCKS IN FILE NOW? TROA IOS,IOBKTL ;YES, ABSURDITY!! STORE BLOCK COUNT MOD 2**17 CAILE TAC1,(TAC) ;NO, COMPARE PREVIOUS MAX. WITH PRESENT SIZE - HRRM TAC,DEVCNT(DEVDAT) ;STORE NEW MAX. FILE SIZE ONLY IF + HRRM TAC,DEVCNT(DDB) ;STORE NEW MAX. FILE SIZE ONLY IF ;PREV. MAX. EXCEEDED POPJ PDP, ;RETURN - ;** UUOCON.MAC ** + ;GTF GTF0 GTF1 GTF2 GTWIN + +;** UUOCON.MAC ** ;ENTER WITH # OF CONTIGUOUS "FSIZ"-WORD CHUNKS DESIRED IN AC1. ;RETURN WITH ADR. OF FIRST WORD OF BLOCK IN AC1. @@ -917,7 +982,11 @@ GTWIN: POP PDP,AC2 ;GET PTR. TO FIRST CHUNK HRRZ AC3,(AC3) ;UNLINK THIS BLOCK HRRM AC3,FSIZ-1(AC2) POPJ PDP, ;RETURN TO USER WITH ADR. OF BLK IN T. - ;HERE WHEN NOT ENOUGH CONTIGUOUS CHUNKS. + ;GTFAIL GTFAL0 GTFAL1 ADD1K ADD1K1 + +;** UUOCON.MAC ** + +;HERE WHEN NOT ENOUGH CONTIGUOUS CHUNKS. ;IF # DESIRED IS AVAILABLE BUT NOT CONTIGUOUS AT THE MOMENAC1, "GCOL" ;IS CALLED TO COMPACTIFY. ;IF NOT, "ADD1K" IS CALLED TO APPEND ONE MORE K OF CORE ABOVE @@ -965,7 +1034,11 @@ ADD1K1: HLRZ AC3,HLADR ;GET OLD TOP OF FREE CORE MOVEI AC2,1(AC3) ;SET UP ADR. OF FIRST NEW CHUNK JRST RTF0 ;PLACE NEW CHUNKS AT END OF LIST ;AND RETURN - ;CALL HERE TO RETURN # OF CONTIGUOUS FREE CHUNKS IN AC1 STARTING AT ADR. + ;RTF RTF9 + +;** UUOCON.MAC ** + +;CALL HERE TO RETURN # OF CONTIGUOUS FREE CHUNKS IN AC1 STARTING AT ADR. ;IN AC2. ;ATTEMPT WILL BE MADE TO GIVE 1K BACK TO ITS IF POSSIBLE. ALL EXCEPT ;"GCOL" SHOULD CALL HERE. ( "GCOL" CALLS RTF0. ) @@ -1002,9 +1075,13 @@ RTF9: ADDI AC1,2000 ;GIVE BACK 1K NOW JRST SYSERR ;NOT SUPPOSED TO BE UNGRATEFUL!! POP PDP,AC1 ;RESTORE AC1. POPJ PDP, ;AND RETURN - ;ENTER WITH # OF CHUNKS TO RETURN IN AC1, AND ADR. OF FIRST CHUNK IN AC2. + ;RTF0 RTF1 RTF2 RTF3 + +;** UUOCON.MAC ** + +;ENTER WITH # OF CHUNKS TO RETURN IN AC1, AND ADR. OF FIRST CHUNK IN AC2. ;RETURNS WITH # CHUNKS RETURNED STILL IN AC1, BUT AC2 IS CLOBBERED. -; *** AC1 MUST BE GREATER THAN 0!! *** +;*** AC1 MUST BE GREATER THAN 0!! *** RTF0: PUSH PDP,AC1 ;SAVE # CHUNKS BEING RETURNED PUSH PDP,AC1 ;SAVE ANOTHER COPY FOR COUNTER @@ -1027,7 +1104,11 @@ RTF3: POP PDP,AC1 ;GET ADR. OF NEXT CHUNK POP PDP,AC1 ;RESTORE # CHUNKS RETURNED ADDM AC1,FRENUM ;ADD TO TOTAL # FREE CHUNKS POPJ PDP, ;RETURN - ;CALL HERE TO COMPACTIFY ALL CHUNKS IN USE AND CAUSE ALL FREE CHUNKS + ;GCOL GCOL0 GCOL1 GCOL2 GCOL21 GCOL3 GCOL4 GCOL5 GCOL6 GCOL7 + +;** UUOCON.MAC ** + +;CALL HERE TO COMPACTIFY ALL CHUNKS IN USE AND CAUSE ALL FREE CHUNKS ;TO FLOAT TO TOP OF FREE CORE AREA. AC'S AC1, AC2, AND AC3 ARE CLOBBERED. GCOL: HLRZ AC1,HLADR ;GET ADR. OF TOP OF FREE CORE AREA @@ -1085,7 +1166,11 @@ GCOL7: EXCH AC1,FRENUM ;GET # FREE CHUNKS AND ZERO IN JRST RTF0 ;GIVE BACK THE FREE CHUNKS WHICH ARE NOW ;CONTIGUOUS AND JUST BELOW THE UFD ;(IF ANY) - ;HERE TO DO AN EXEC UUO + ;DOXUUO UUOUSR UUOSY1 ILEGAL DISP0 DISP2 USRXT1 USRXIT + +;** UUOCON.MAC ** + +;HERE TO DO AN EXEC UUO DOXUUO: ADDI UCHN,1 ;INCREMENT RETURN ADR. PAST UUO TLZ UCHN,USRMOD ;BE SURE USER MODE IS OFF @@ -1109,11 +1194,11 @@ ILEGAL: JRST UUOERR ;NO, 0-37 ILLEGAL! CAIL TAC1,100 ;GREATER OR EQUAL TO 100 ? JRST ILLINS ;YES, BAD INSTRUCTION LDB UCHN,PUUOAC ;GET AC FIELD - SKIPE DEVDAT,USRJDA(UCHN) ;ADR. OF DDB. + SKIPE DDB,USRJDA(UCHN) ;ADR. OF DDB. CAMLE UCHN,USRHCU ;IS CHAN. LESS OR EQUAL TO HIGHEST USED? JRST NOCHAN ;CHANNEL NOT ASSIGNED - CHECK IT OUT - MOVE IOS,DEVIOS(DEVDAT) ;GET DDB STATUS - MOVE DSER,DEVSER(DEVDAT) ;AND ADR. OF I/O SERVICE DISP. + MOVE IOS,DEVIOS(DDB) ;GET DDB STATUS + MOVE DSER,DEVSER(DDB) ;AND ADR. OF I/O SERVICE DISP. CAIL TAC1,LNGUUO ;IS THIS LONG DISP. TABLE UUO ? JRST DISP1 ;YES DISP0: ROT TAC1,-1 ;NO, GET DISPATCH TABLE ENTRY @@ -1136,7 +1221,11 @@ USRXIT: SKIPL JBTSTS ;HAS A "CALLI 1,12" OR A "HALT" .USET UPRGO,[.SUSTP,,[0]] ;AND ALLOW HIM TO RUN AGAIN JRST URETRN ;AND RETURN - NOCHAN: CAIGE TAC1,IOUUO ;IS THIS AN I/O UUO ? + ;NOCHAN DISP1 + +;** UUOCON.MAC ** + +NOCHAN: CAIGE TAC1,IOUUO ;IS THIS AN I/O UUO ? JRST DISP0 ;NO, GO DISPATCH CAIE TAC1,70 ;YES, BUT "CLOSE" AND CAIN TAC1,71 ;"RELEASE" ARE ALWAYS LEGAL @@ -1144,13 +1233,17 @@ USRXIT: SKIPL JBTSTS ;HAS A "CALLI 1,12" OR A "HALT" JRST IOIERR ;OTHERS ARE ILLEGAL - PRINT ;"I/O TO UNASSIGNED CHANNEL" -DISP1: MOVE TAC,DEVMOD(DEVDAT) ;DOES THIS DEVICE +DISP1: MOVE TAC,DEVMOD(DDB) ;DOES THIS DEVICE TLNE TAC,DVLNG ;HAVE A LONG DISPATCH TABLE? JRST DISP0 ;YES, DISPATCH CAIGE TAC1,76 ;NO, IS IT "LOOKUP" OR "ENTER" ? JRST USRXIT ;NO, NON-SKIP RETURN TO USER JRST USRXT1 ;YES, SKIP RETURN TO USER - ;TABLE OF UUO DISPATCH ADDRESSES + ;UUOTAB + +;** UUOCON.MAC ** + +;TABLE OF UUO DISPATCH ADDRESSES ;IN FORMAT: ; ; XWD 40,41 @@ -1164,7 +1257,7 @@ UUOTAB: XWD UCALL UINIT ;(40,41) CALL,INIT XWD UUOERR UUOERR ;(42,43) FOR FUTURE EXPANSION XWD UUOERR UUOERR ;(44,45) " XWD UUOERR UCALLI ;(46,47) CALLI - XWD UOPEN TTYUUO ;(50,51) OPEN,TTCALL + XWD UOPEN TTYUUO ;(50,51) OPEN,TTYUUO XWD ILEGAL ILEGAL ;(52,53) FOR DEC EXPANSION XWD ILEGAL URENAM ;(54,55) RENAME IOUUO==55 ;LOWEST I/O UUO (RENAME) @@ -1178,7 +1271,11 @@ LNGUUO==72 ;LOWEST LONG DISPATCH TABLE UUO XWD CPOPJ CPOPJ ;(72,73) MTAPE,GETF XWD UDSI UDSO ;(74,75) USETI,USETO XWD UDLK UDEN ;(76,77) LOOKUP,ENTER - ;CALL UUO DISPATCH TABLE + ;CNAMES NAMES + +;** UUOCON.MAC ** + +;CALL UUO DISPATCH TABLE ;NEW UUO'S MUST BE ADDED AT THE END SINCE CALLI DEPENDS ON ;POSITION IN TABLE. @@ -1208,7 +1305,7 @@ DEFINE NAMES X TIMER,TIMER ;( 22 ) RETURN JIFFY CLOCK TIME X MSTIME,MSTIME ;( 23 ) RETURN MILLISEC. CLOCK TIME X GETPPN,GETPPN ;( 24 ) RETURN PROJ.-PROG. # - X TRPSET,CPOPJ ;( 25 ) SET PI TRAP ** ERROR ** + X TRPSET,UUOERR ;( 25 ) SET PI TRAP ** ERROR ** X TRPJEN,UUOERR ;( 26 ) DISMISS TO EXEC. ** ERROR ** X RUNTIM,JOBTIM ;( 27 ) RETURN TOTAL JOB RUNNING TIME X PJOB,JOBNO ;( 30 ) RETURN JOB # @@ -1223,9 +1320,13 @@ DEFINE NAMES X GETTAB,GETTAB ;( 41 ) GET CONTENTS OF A MONITOR TABLE ENTRY X SPY,CPOPJ ;( 42 ) SPY ** ERROR ** X SETNAM,SETNAM ;( 43 ) SET NAME OF THIS PROGRAM - X UUOERR,UUOERR ;( 44 ) ILLEGAL UUO + X TMPCOR,CPOPJ ;( 44 ) TEMPORARY CORE STORAGE TERMIN - ;GENERATE SIXBIT TABLE OF UUO NAMES + ;UCLTAB CUSTAB UCLJMP + +;** UUOCON.MAC ** + +;GENERATE SIXBIT TABLE OF UUO NAMES DEFINE X A,B SIXBIT /A/ @@ -1243,7 +1344,7 @@ DEFINE X A,B TERMIN DEFINE XX C - UUOERR,,C + CPOPJ,,C TERMIN ZZ==0 @@ -1270,9 +1371,12 @@ ZZ==0 ;GENERATE D.E.C. TABLE UCLJMP: NAMES +IFN ZZ&1,XX CPOPJ + ;UCALL UCALLI -IFN ZZ&1,XX 0 ;GEN. LAST WORD IF ODD # - ; CALL D,[SIXBIT /NAME/] +;** UUOCON.MAC ** + +;CALL D,[SIXBIT /NAME/] ;WHERE NAME IS THE NAME OF A SYSTEM ROUTINE. ;IF NO SYSTEM ROUTINE WITH THE SPECIFIED NAME IS FOUND, ;THIS ROUTINE EXITS TO UUOERR. @@ -1306,7 +1410,11 @@ UCALLI: HRRE TAC1,UUO ;GET CALLI # ( POS. = D.E.C., NEG. = CUST. ) ROT TAC1,-1 ;DIVIDE BY 2, SAVING REMAINDER MOVE DAT,UCLJMP(TAC1) ;GET DISPATCH TABLE ENTRY JRST DISP2 ;GO DISPATCH - ;EXIT UUO ROUTINE + ;EXIT MONRET SETPOV ULOGIN LOGOUT RESET + +;** UUOCON.MAC ** + +;EXIT UUO ROUTINE ;IF AC FIELD = 0, PRINT ; Exit ; ^C @@ -1319,7 +1427,7 @@ UCALLI: HRRE TAC1,UUO ;GET CALLI # ( POS. = D.E.C., NEG. = CUST. ) EXIT: JUMPN UCHN,MONRET ;IS AC FIELD NON-ZERO ? PUSHJ PDP,IORELS ;NO, RELEASE ALL DEVICES PUSHJ PDP,TTYFUW ;FIND TTY FOR CURRENT JOB, SET ITEM TO JOB #, - ;DAT TO OUTPUT BYTE PTR., DEVDAT TO TTY DDB. + ;DAT TO OUTPUT BYTE PTR., DDB TO TTY DDB. JSP TAC,PHOLD ;MOVE "EXIT" TO OUTPUT BUFFER, STOP JOB, ;START TTY, AND PREVENT "CONTINUE" FROM WORKING ASCIZ / @@ -1344,21 +1452,20 @@ SETPOV: .UMOVM TAC,JOBAPR ;GIVE A COPY TO USER ;LOGOUT UUO ROUTINE -ULOGIN: .SUSET [.RUNAME,,TAC] ;GET USER NAME - HLLOS TAC - AOJN TAC,UUOERR ;ILLEGAL UUO IF LOGGED IN - .VALUE [ASCIZ/b:PROCED :ATTACH /] - .SUSET [.SSNAME,,TAC1] +ULOGIN: .SUSET [.RUNAME,,TAC] ;GET USER NAME + HLLOS TAC + AOJN TAC,UUOERR ;ILLEGAL UUO IF LOGGED IN + .VALUE [ASCIZ/:PROCED :ATTACH /] + .SUSET [.SSNAME,,TAC1] .UCLOSE UPRGO, ;FREE CURRENT INFERIOR - .CALL [SETZ ? SIXBIT/LOGIN/ ? MOVE TAC1 ? SETZ [SIXBIT/TEN50/]] - JRST UUOERR ;YOU LOSE - JRST GO ;SUCCESS RETURN + .CALL [SETZ ? SIXBIT/LOGIN/ ? SETZ TAC1] + JRST UUOERR ;YOU LOSE + JRST GO ;SUCCESS RETURN -LOGOUT: PUSHJ PDP,INLMES +LOGOUT: PUSHJ PDP,INLMES ASCII/Kjob ./ - .LOGOUT ;LOG OUT IF TOP LEVEL - .BREAK 16,164000 ;ASK DDT TO MERELY KILL THIS ONE + .LOGOUT 1, ;LOG OUT ;RESET UUO ROUTINE @@ -1369,7 +1476,11 @@ RESET: ANDCAM TAC,USRPD1 ;LEAVE USER MODE OFF ALSO, IF RESET FROM "SIM" ;FALL INTO APRENB WITH RH OF TAC=0 ;SO THAT ALL APR INTERRUPTS WILL BE DISABLED - ;ROUTINE TO SET UP APR FOR USER TRAPPING + ;APRENB + +;** UUOCON.MAC ** + +;ROUTINE TO SET UP APR FOR USER TRAPPING ; ; 1B18 REPETITIVE ENABLE ; 1B19 PUSHDOWN OVERFLOW @@ -1384,15 +1495,19 @@ APRENB: TRZ TAC,1_23.+1_26. ;THESE TWO BITS ARE ILLEGAL BECAUSE ;IS UNIMPLEMENTABLE HRRM TAC,ITSENB ;SET RH OF OUR LOC. JRST SETAPR ;FINISH UP - ;SHOW C(TAC) IN THE LIGHTS + ;LIGHTS SWITCH JOBNO DATE GTJBTM JOBTIM MSTIME SLEEP GETWD1 GETWDU LCPOPJ RMPERR GTWDU1 TIMER STOTC1 STOTAC STO1TC -LIGHTS: DATAO TAC ;DISPLAY TAC IN LIGHTS - POPJ PDP, ;RETURN +;** UUOCON.MAC ** + +;SHOW C(TAC) IN THE LIGHTS + +LIGHTS:;DATAO 4,TAC ;DISPLAY TAC IN LIGHTS + POPJ PDP, ;RETURN ;RETURN CONTENTS OF CONSOLE SWITCHES -SWITCH: DATAI TAC ;GET CONTENTS OF SWITCHES - JRST STOTAC ;GIVE IT TO USER +SWITCH: DATAI TAC ;GET CONTENTS OF SWITCHES + JRST STOTAC ;GIVE IT TO USER ;RETURN JOB # TO USER @@ -1472,11 +1587,15 @@ STOTAC: MOVE AC1,USRPD1 ;ARE WE IN USER MODE? POPJ PDP, ;RETURN STO1TC: MOVEM TAC,(UUO) ;STORE WORD IN OUR CORE POPJ PDP, ;AND RETURN - ;RETURN DEVICE CHARACTERISTICS + ;DVCHR GETPPN RTZER SETDDT GETLN SETNAM + +;** UUOCON.MAC ** + +;RETURN DEVICE CHARACTERISTICS DVCHR: PUSHJ PDP,DEVSRC ;SEARCH FOR DEVICE JRST RTZER ;NOT A DEVICE, RETURN ZERO - MOVE TAC,DEVMOD(DEVDAT) ;FOUND, GET DEVMOD + MOVE TAC,DEVMOD(DDB) ;FOUND, GET DEVMOD TLO TAC,DVAVAL ;AND TELL HIM DEVICE IS AVAILABLE TO HIM JRST STOTAC @@ -1493,14 +1612,18 @@ SETDDT: MOVEM TAC,USRDDT ;STORE IN OUR COPY POPJ PDP, ;RETURN GETLN: PUSHJ PDP,TTYFND ;FIND USER'S TTY - MOVE TAC,DEVNAM(DEVDAT) ;GET NAME + MOVE TAC,DEVNAM(DDB) ;GET NAME JRST STOTAC ;GIVE IT TO USER SETNAM: MOVEM TAC,JBTPRG ;STORE PROGRAM NAME PUSHJ PDP,SPRGNM ;CHANGE NAME OF CURRENT INFERIOR TO ; REFLECT RESULT OF UUO. POPJ PDP, ;RETURN - ;GETTAB UUO + ;GETTAB GTTBL + +;** UUOCON.MAC ** + +;GETTAB UUO ; ;UUO TO RETURN CONTENTS OF A MONITOR JOB TABLE ;CALL: HRROI AC,TABLE NUMBER @@ -1526,7 +1649,11 @@ GTTBL: MOVE TAC,JBTSTS ;GIVE HIM HIS JOB STATUS MOVE TAC,JBTPRG ;HIS PROGRAM NAME PUSHJ PDP,GTJBTM ;HIS JOB'S TOTAL RUNNING TIME MXGTB==.-GTTBL - ;OPEN UUO - PERFORMS SAME OPERATION AS INIT + ;UOPEN UINIT UINIT0 UINITA + +;** UUOCON.MAC ** + +;OPEN UUO - PERFORMS SAME OPERATION AS INIT ;CALLING SEQUENCE: ; OPEN D,ADR ; ERROR RETURN @@ -1556,7 +1683,7 @@ UINIT: MOVEI TAC,(UUO) ;SAVE STATUS BITS IN TAC AOS -1(PDP) UINIT0: PUSH PDP,UUO ;SAVE ADR+1 OF USER ARGS. PUSH PDP,TAC ;SAVE I/O STATUS BITS - SKIPE DEVDAT,USRJDA(UCHN) ;IS A DEVICE ALREADY ASSIGNED + SKIPE DDB,USRJDA(UCHN) ;IS A DEVICE ALREADY ASSIGNED ;TO THIS CHANNEL? CAMLE UCHN,USRHCU ;YES, IS CHAN. # <= HIGHEST IN USE? JRST UINITA ;NO, NO PREVIOUS DEVICE TO RELEASE @@ -1565,12 +1692,16 @@ UINITA: MOVE UUO,-1(PDP) ;RESTORE UUO PUSHJ PDP,GETWDU ;C(TAC) = DEVICE NAME ;IF NOT IN BOUNDS, ERROR PUSHJ PDP,DEVSRC ;SEARCH FOR DEVICE NAME (SET SYSDEV BIT - ;IN LH OF DEVDAT IF THIS IS "SYS") + ;IN LH OF DDB IF THIS IS "SYS") JRST UINITE ;NO SUCH DEVICE MOVE UUO,(PDP) ;RESTORE USER'S MODE SETTING PUSHJ PDP,CHKMOD ;CHECK FOR LEGAL MODE; IF ERROR, ;DON'T RETURN - UINIT1: + ;UINIT1 UINITB UINITL UINITC + +;** UUOCON.MAC ** + +UINIT1: ;CODE TO GO HERE IF DTA'S BECOME A REALITY IN "SIM" UINITB: MOVEI TAC1,ASSPRG ;ASSIGN DEVICE BY PROGRAM. @@ -1582,7 +1713,7 @@ UINITB: MOVEI TAC1,ASSPRG ;ASSIGN DEVICE BY PROGRAM. PUSHJ PDP,SETIOS ;SET DDB IOS STATUS WORD FROM ;RIGHT HALF OF UUO MOVSI IOS,IOBEG ;SET IOBEG - IORB IOS,DEVIOS(DEVDAT) + IORB IOS,DEVIOS(DDB) UINITL: CAMG UCHN,USRHCU ;IS THIS CHAN. > HIGHEST IN USE? JRST UINITC ;NO AOS TAC,USRHCU ;YES, BUMP HIGHEST SO FAR @@ -1590,26 +1721,30 @@ UINITL: CAMG UCHN,USRHCU ;IS THIS CHAN. > HIGHEST IN USE? SETZB UUO,USRJDA(TAC) ;AND CLEAR IT OUT .UMOVM UUO,JOBJDA(TAC) JRST UINITL ;AND KEEP LOOKING -UINITC: TLO DEVDAT,INITB+ICLOSB+OCLOSB ;SET INIT +UINITC: TLO DDB,INITB+ICLOSB+OCLOSB ;SET INIT ;UUO BIT AND PREVENT SUPERFLUOUS ;CALLS TO CLOSE AOS UUO,(PDP) ;ADVANCE TO THIRD ARG. PUSHJ PDP,GETWDU ;C(TAC) = BUFFER HEADER ADR. HLRZ TAC1,TAC ;GET OUTPUT BUFFER HEADER ADR. JUMPE TAC1,UINIT4 ;WAS ONE SPECIFIED? - HRLM TAC1,DEVBUF(DEVDAT) ;YES, SET DDB - TLO DEVDAT,OBUFB ;NOTE OUTPUT BUFFER SPECIFIED + HRLM TAC1,DEVBUF(DDB) ;YES, SET DDB + TLO DDB,OBUFB ;NOTE OUTPUT BUFFER SPECIFIED PUSHJ PDP,UINITZ ;INITIALIZE OUTPUT BUFFER HEADER - UINIT4: PUSHJ PDP,GETWDU ;GET THE CONTENTS OF ARG. 3 AGAIN + ;UINIT4 UINIT5 UINIT6 UINITE + +;** UUOCON.MAC ** + +UINIT4: PUSHJ PDP,GETWDU ;GET THE CONTENTS OF ARG. 3 AGAIN HRRZ TAC1,TAC ;GET INPUT BUFFER HEADER ADR. JUMPE TAC1,UINIT5 ;WAS ONE SPECIFIED? - HRRM TAC,DEVBUF(DEVDAT) ;YES, SET DDB - TLO DEVDAT,IBUFB ;NOTE INPUT BUFFER SPECIFIED + HRRM TAC,DEVBUF(DDB) ;YES, SET DDB + TLO DDB,IBUFB ;NOTE INPUT BUFFER SPECIFIED MOVSI IOS,IOEND ;CLEAR EOF FLAG - ANDCAB IOS,DEVIOS(DEVDAT) + ANDCAB IOS,DEVIOS(DDB) PUSHJ PDP,UINITZ ;INITIALIZE INPUT BUFFER HEADER -UINIT5: MOVEM DEVDAT,USRJDA(UCHN) ;STORE UUO BITS AND DDB ADR. - .UMOVM DEVDAT,JOBJDA(UCHN) +UINIT5: MOVEM DDB,USRJDA(UCHN) ;STORE UUO BITS AND DDB ADR. + .UMOVM DDB,JOBJDA(UCHN) JRST TPOPJ1 ;GIVE GOOD RETURN UINIT6: @@ -1617,7 +1752,11 @@ UINIT6: UINITE: POP PDP,TAC ;RESTORE STACK JRST TPOPJ ;AND GIVE ERROR RETURN - UINITZ: MOVEI AC1,2(TAC1) ;IS ADR. OF 3RD WORD IN BOUNDS? + ;UINITZ UINERR + +;** UUOCON.MAC ** + +UINITZ: MOVEI AC1,2(TAC1) ;IS ADR. OF 3RD WORD IN BOUNDS? PUSHJ PDP,UADRCK SETZ AC1, ;YES, ZAP 1ST & 3RD WORDS .UMOVM AC1,(TAC1) @@ -1632,44 +1771,48 @@ UINITE: POP PDP,TAC ;RESTORE STACK UINERR: PUSHJ PDP,RELEA0 ;RELEASE DEVICE JRST TPOPJ ;GIVE ERROR RETURN - ;ENTER UUO - HERE ONLY IF DEVICE HAS LONG DISPATCH TABLE + ;UDEN UDLK DLKDEN UDLKC + +;** UUOCON.MAC ** + +;ENTER UUO - HERE ONLY IF DEVICE HAS LONG DISPATCH TABLE UDEN: MOVEI TAC,CLSIN - TLNN DEVDAT,OCLOSB ;FILE OPEN? + TLNN DDB,OCLOSB ;FILE OPEN? PUSHJ PDP,UDLKC ;YES, CLOSE IT (OCLOSB_1) TLO IOS,IOBEG ANDCMI IOS,776000 - MOVEM IOS,DEVIOS(DEVDAT) - HLLM DEVDAT,USRJDA(UCHN) ;STORE UUO BITS + MOVEM IOS,DEVIOS(DDB) + HLLM DDB,USRJDA(UCHN) ;STORE UUO BITS .UMOVE TAC,JOBJDA(UCHN) ;AND GIVE HIM A COPY - HLL TAC,DEVDAT + HLL TAC,DDB .UMOVM TAC,JOBJDA(UCHN) PUSHJ PDP,DEN(DSER) ;ATTEMPT AN ENTER POPJ PDP, ;FAILURE, RETURN - TLZ DEVDAT,OCLOSB - TLO DEVDAT,ENTRB ;NOTE SUCCESSFUL ENTER + TLZ DDB,OCLOSB + TLO DDB,ENTRB ;NOTE SUCCESSFUL ENTER JRST DLKDEN ;STORE THE PROGRESS BITS ;LOOKUP UUO - LONG DISPATCH DEVICES ONLY UDLK: MOVEI TAC,CLSOUT ;INHIBIT OUTPUT CLOSE BIT - TLNN DEVDAT,ICLOSB ;FILE OPEN? + TLNN DDB,ICLOSB ;FILE OPEN? PUSHJ PDP,UDLKC ;YES, CLOSE IT (ICLOSB_1) TDZ IOS,[XWD IOEND 776000] - MOVEM IOS,DEVIOS(DEVDAT) - HLLM DEVDAT,USRJDA(UCHN) ;STORE UUO BITS + MOVEM IOS,DEVIOS(DDB) + HLLM DDB,USRJDA(UCHN) ;STORE UUO BITS .UMOVE TAC,JOBJDA(UCHN) ;STORE A COPY FOR HIM - HLL TAC,DEVDAT + HLL TAC,DDB .UMOVM TAC,JOBJDA(UCHN) PUSHJ PDP,DLK(DSER) ;DO THE LOOKUP POPJ PDP, ;FAILURE! - TLZ DEVDAT,ICLOSB - TLO DEVDAT,LOOKB ;NOTE SUCCESSFUL LOOKUP + TLZ DDB,ICLOSB + TLO DDB,LOOKB ;NOTE SUCCESSFUL LOOKUP DLKDEN: LDB TAC,PUUOAC ;GET CHANNEL # PUSH PDP,ITEM ;SAVE AN AC - HLLM DEVDAT,USRJDA(TAC) ;STORE UUO PROGRESS BITS + HLLM DDB,USRJDA(TAC) ;STORE UUO PROGRESS BITS .UMOVE ITEM,JOBJDA(TAC) ;COPY FOR OUR USER - HLL ITEM,DEVDAT + HLL ITEM,DDB .UMOVM TAC,JOBJDA(TAC) JRST IPOPJ1 ;RESTORE ITEM AND RETURN @@ -1678,31 +1821,39 @@ UDLKC: PUSH PDP,UUO PUSHJ PDP,CLOSE1 POP PDP,UUO POPJ PDP, - ;DO "INBUF" AND "OUTBUF" HERE + ;UOUTBF UOBF1 UINBF -UOUTBF: TLO DEVDAT,OUTBFB ;NOTE OUTBUF UUO +;** UUOCON.MAC ** + +;DO "INBUF" AND "OUTBUF" HERE + +UOUTBF: TLO DDB,OUTBFB ;NOTE OUTBUF UUO PUSH PDP,BUFPNT ;SAVE BUFPNT PUSHJ PDP,BUFCLC ;SET UP BUFFER RING - HLRZ TAC,DEVBUF(DEVDAT) ;GET ADR. OF OUTPUT BUFFER HEADER - HRRM BUFPNT,DEVOAD(DEVDAT) ;STORE ADR. OF FIRST BUFFER IN RING + HLRZ TAC,DEVBUF(DDB) ;GET ADR. OF OUTPUT BUFFER HEADER + HRRM BUFPNT,DEVOAD(DDB) ;STORE ADR. OF FIRST BUFFER IN RING UOBF1: .UMOVM BUFPNT,(TAC) ;POINT HEADER AT FIRST BUFFER IN RING LDB TAC,PUUOAC - MOVEM DEVDAT,USRJDA(TAC) - .UMOVM DEVDAT,JOBJDA(TAC) + MOVEM DDB,USRJDA(TAC) + .UMOVM DDB,JOBJDA(TAC) POP PDP,BUFPNT ;RESTORE BUFPNT POPJ PDP, ;RETURN FROM UUO -UINBF: TLO DEVDAT,INBFB ;NOTE INBUF UUO +UINBF: TLO DDB,INBFB ;NOTE INBUF UUO PUSH PDP,BUFPNT ;SAVE BUFPNT PUSHJ PDP,BUFCLC ;SET UP RING - HRRM BUFPNT,DEVIAD(DEVDAT) ;POINT TO FIRST BUFFER - HRRZ TAC,DEVBUF(DEVDAT) ;GET ADR. OF INPUT HEADER + HRRM BUFPNT,DEVIAD(DDB) ;POINT TO FIRST BUFFER + HRRZ TAC,DEVBUF(DDB) ;GET ADR. OF INPUT HEADER JRST UOBF1 ;FINISH UP - ;ROUTINE TO SET UP N-RING BUFFER IN USER AREA + ;BUFCLC + +;** UUOCON.MAC ** + +;ROUTINE TO SET UP N-RING BUFFER IN USER AREA BUFCLC: PUSH PDP,BUFWRD ;SAVE BUFWRD - LDB TAC,[XWD 1400+DEVDAT DEVCHR] ;GET THE BUFFER SIZE + LDB TAC,[XWD 1400+DDB DEVCHR] ;GET THE BUFFER SIZE .UMOVE BUFPNT,JOBFF ;GET FIRST FREE + 1 MOVEI BUFPNT,1(BUFPNT) MOVEI BUFWRD,(BUFPNT) @@ -1722,7 +1873,7 @@ BUFCLC: PUSH PDP,BUFWRD ;SAVE BUFWRD PUSH PDP,TAC1 ;** ALL MAY NOT NEED TO BE SAVED ** PUSH PDP,BUFPNT PUSH PDP,BUFWRD - PUSH PDP,DEVDAT + PUSH PDP,DDB PUSH PDP,DSER SETZ ITEM, ;SET JOB # MOVE TAC,AC1 ;ARGUMENT GOES IN AC(TAC) @@ -1730,13 +1881,17 @@ BUFCLC: PUSH PDP,BUFWRD ;SAVE BUFWRD PUSHJ PDP,CORUUO ;TRY TO GET THE CORE JFCL ;CAN'T GET IT - ADR. CHECK WILL CATCH IT POP PDP,DSER - POP PDP,DEVDAT + POP PDP,DDB POP PDP,BUFWRD POP PDP,BUFPNT POP PDP,TAC1 POP PDP,UUO POP PDP,TAC - BUFC1: ADDI BUFWRD,(TAC) + ;BUFC1 + +;** UUOCON.MAC ** + +BUFC1: ADDI BUFWRD,(TAC) MOVEI AC1,(BUFPNT) ;IS LAST ADR. IN BOUNDS? PUSHJ PDP,UADRCK .UMOVM BUFWRD,(BUFPNT) ;YES, SET UP THIS HEADER @@ -1756,7 +1911,11 @@ BUFCLC: PUSH PDP,BUFWRD ;SAVE BUFWRD HRLI BUFPNT,IOUSE POP PDP,BUFWRD ;RESTORE BUFWRD POPJ PDP, ;RETURN - ;ROUTINE TO CLEAR I/O BUFFER IN USER AREA + ;BUFCLR + +;** UUOCON.MAC ** + +;ROUTINE TO CLEAR I/O BUFFER IN USER AREA ;CALLED AT UUO LEVEL ;CALL: HRRZ TAC,REL. ADR. OF 2ND WORD OF USER BUFFER @@ -1783,7 +1942,11 @@ BUFCLR: PUSHJ PDP,IADRCK ;IN BOUNDS? ;FROM MONBUF .UBLTO TAC1,(TAC) ;CLEAR BUFFER JRST CPOPJ1 ;SUCCESSFUL RETURN - ;ROUTINE TO RETURN # OF ITEMS IN BUFFER + ;ITMSET ITMCNT ITMCT1 SETIOS CHKMOD + +;** UUOCON.MAC ** + +;ROUTINE TO RETURN # OF ITEMS IN BUFFER ;CALL: PUSHJ PDP,ITMSET ; EXIT ALWAYS RETURN HERE @@ -1800,10 +1963,10 @@ BUFCLR: PUSHJ PDP,IADRCK ;IN BOUNDS? ;SETS AC ITEM = C(ITEM)*[WORD LENGTH/C(TAC1)] -ITMSET: .UMOVE ITEM,@DEVADR(DEVDAT) ;GET HEADER WORD +ITMSET: .UMOVE ITEM,@DEVADR(DDB) ;GET HEADER WORD ASH ITEM,-18. ;GET BITS 1-17 INTO RH MOVEI ITEM,-1(ITEM) ;GET BUFFER SIZE - 1 -ITMCNT: LDB TAC1,[POINT 6,DEVPTR(DEVDAT),11,] ;TAC1 = BYTE SIZE +ITMCNT: LDB TAC1,[POINT 6,DEVPTR(DDB),11,] ;TAC1 = BYTE SIZE ITMCT1: MOVEI TAC,36. ;ITEM = C(ITEM)*[WORD LENGTH/C(TAC1)] IDIVI TAC,(TAC1) IMULI ITEM,(TAC) @@ -1816,7 +1979,7 @@ ITMCT1: MOVEI TAC,36. ;ITEM = C(ITEM)*[WORD LENGTH/C(TAC1)] SETIOS: PUSHJ PDP,CHKMOD ;CHECK FOR LEGAL MODE, IF NOT RIGHT, ;DON'T RETURN ANDCMI UUO,IOACT ;LET USER SET ALL EXCEPT IOACT - HRRM UUO,DEVIOS(DEVDAT) + HRRM UUO,DEVIOS(DDB) POPJ PDP, @@ -1825,10 +1988,15 @@ SETIOS: PUSHJ PDP,CHKMOD ;CHECK FOR LEGAL MODE, IF NOT RIGHT, CHKMOD: LDB TAC1,[POINT 4,UUO,35,] ;GET DEVICE DATA MODE MOVEI TAC,1 ;CHECK FOR LEGALITY LSH TAC,(TAC1) - TDNN TAC,DEVMOD(DEVDAT) + TDNN TAC,DEVMOD(DDB) JRST ILLMOD ;ILLEGAL DATA MODE POPJ PDP, ;OK - ;CALLING SEQUENCE: + ;IOSETC + +;** UUOCON.MAC ** + +;IOSETC +;CALLING SEQUENCE: ; PUSHJ PDP,IOSETC ; EXIT ;ALWAYS RETURN HERE @@ -1851,23 +2019,27 @@ IOSETC: ADDI JBUF,1 ;JBFPTR 12-18:=0 ;THE FOLLOWING INSTR. SHOULD BE: .UMOVM ITEM,1(JBUF) .UMOVM ITEM,(JBUF) ;STORE THE BYTE COUNT IN 3RD WORD POPJ PDP, ;RETURN - ;SET UP BYTE POINTER AND ITEM COUNT + ;NEWBF1 NEWBUF SETBYT + +;** UUOCON.MAC ** + +;SET UP BYTE POINTER AND ITEM COUNT ;CALL: PUSHJ PDP,NEWBUF ; ADR. CHECK WHEN SETTING UP BUFFER ; OK RETURN NEWBF1: -NEWBUF: HRRZ TAC,DEVADR(DEVDAT) ;TAC = INPUT BUF. HDR. ADR. +NEWBUF: HRRZ TAC,DEVADR(DDB) ;TAC = INPUT BUF. HDR. ADR. PUSHJ PDP,BUFCLR ;CLEAR INPUT BUFFER POPJ PDP, ;ADR. CHECK, PASS IT ON ;**********THE ENCLOSED CODE MAY NOT BE NEEDED!********** MOVSI TAC,7737 - AND TAC,DEVPTR(DEVDAT) ;DEVPTR 0-5 = 0, 12 = 0 - HRR TAC,DEVADR(DEVDAT) ;DEVPTR 18-35 = C(DEVADR 18-35) + AND TAC,DEVPTR(DDB) ;DEVPTR 0-5 = 0, 12 = 0 + HRR TAC,DEVADR(DDB) ;DEVPTR 18-35 = C(DEVADR 18-35) ADDI TAC,1 ; + 1 - MOVEM TAC,DEVPTR(DEVDAT) + MOVEM TAC,DEVPTR(DDB) PUSHJ PDP,ITMSET ;SET # ITEMS IN BUFFER - MOVEM ITEM,DEVCTR(DEVDAT) ;DEVCTR = ITEM COUNT + MOVEM ITEM,DEVCTR(DDB) ;DEVCTR = ITEM COUNT JRST CPOPJ1 ;SKIP RETURN (OK) @@ -1885,9 +2057,13 @@ SETBYT: HRLI TAC,700 ;ASSUME ASCII TO START TRNE IOS,14 ;CORRECT ASSUMPTION ? HRLI TAC,4400 ;NO, 10 OR GREATER ::= S=36. POPJ PDP, ;RETURN - ;RENAME UUO - HERE ON SHORT DISPATCH TABLE DEVICES TOO + ;URENAM UDSO UDSI -URENAM: MOVE TAC,DEVMOD(DEVDAT) ;DOES THIS DEVICE HAVE LONG +;** UUOCON.MAC ** + +;RENAME UUO - HERE ON SHORT DISPATCH TABLE DEVICES TOO + +URENAM: MOVE TAC,DEVMOD(DDB) ;DOES THIS DEVICE HAVE LONG ;DISPATCH TABLE? TLNN TAC,DVLNG JRST CPOPJ1 ;NO, GIVE SKIP RETURN TO USER @@ -1900,23 +2076,26 @@ UDSO: JRST DSO(DSER) ;SETI UUO - SET NEXT INPUT BLOCK NUMBER UDSI: JRST DSI(DSER) + ;IN IN1 INPT0C INPT2 INPT0A - ;HERE ON INPUT UUO +;** UUOCON.MAC ** -IN: TLO DEVDAT,INPB - TLZ DEVDAT,ICLOSB +;HERE ON INPUT UUO + +IN: TLO DDB,INPB + TLZ DDB,ICLOSB .UMOVE TAC,JOBJDA(UCHN) ;BIT SETTINGS INTO LH OF JDA LOC - HLL TAC,DEVDAT + HLL TAC,DDB .UMOVM TAC,JOBJDA(UCHN) - HLLM DEVDAT,USRJDA(UCHN) ;OUR COPY ALSO + HLLM DDB,USRJDA(UCHN) ;OUR COPY ALSO LDB TAC,PIOMOD ;GET I/O MODE CAIL TAC,SD ;IS IT DUMP? JRST INDMP ;YES -IN1: HRRZ JBUF,DEVBUF(DEVDAT) ;NO, GET ADR. OF BUFFER HDR. +IN1: HRRZ JBUF,DEVBUF(DDB) ;NO, GET ADR. OF BUFFER HDR. MOVSI TAC,IOUSE ;SET UP "USE BIT" MOVEI AC1,2(JBUF) ;CHECK BUFFER HDR. FOR IN BOUNDS PUSHJ PDP,UADRCK - MOVE IOS,DEVIOS(DEVDAT) ;SET UP I/O STATUS AGAIN BECAUSE + MOVE IOS,DEVIOS(DDB) ;SET UP I/O STATUS AGAIN BECAUSE ;IOS IS CLOBBERED BY AUTO. CORE ;EXPANSION ON IMPLICIT INBUF ON ;FIRST INPUT @@ -1925,7 +2104,7 @@ IN1: HRRZ JBUF,DEVBUF(DEVDAT) ;NO, GET ADR. OF BUFFER HDR. ;DO FIRST I/O MOVEI AC1,(TAC1) ;OTHERWISE, CHECK ADR. PUSHJ PDP,UADRCK - MOVE IOS,DEVIOS(DEVDAT) + MOVE IOS,DEVIOS(DDB) .UMOVE AC1,(TAC1) ;CURRENT BUFFER JUMPGE AC1,INPT1 ;MOVE ON IF FREE (IOUSE=0) ANDCAB TAC,AC1 ;NOT FREE - CLEAR USE BIT AND GET @@ -1935,7 +2114,7 @@ IN1: HRRZ JBUF,DEVBUF(DEVDAT) ;NO, GET ADR. OF BUFFER HDR. .UMOVM TAC,(JBUF) ;POINT TO NEXT BUFFER MOVEI AC1,(TAC) ;AND CHECK ITS ADR. PUSHJ PDP,UADRCK - MOVE AC1,DEVMOD(DEVDAT) ;GET DEVICE CHAR. WORD + MOVE AC1,DEVMOD(DDB) ;GET DEVICE CHAR. WORD TLNN AC1,DVTTY ;IS IT A TTY? .UMOVE TAC,(TAC) ;NO, GET POINTER 1 BUFFER AHEAD OF NEXT BUFFER MOVEI AC1,(TAC) ;SEE IF USER HAS CLOBBERED POINTER @@ -1947,7 +2126,11 @@ INPT0C: .UMOVE TAC1,(TAC1) ;GET USE BIT FOR NEXT BUFFER INPT2: INPT0A: .UMOVE AC1,(TAC1) JUMPGE AC1,INEOF ;IF NOT FILLED YET, MUST BE EOF OR ERROR - INPUT2: .UMOVE ITEM,1(TAC1) ;GET WORD COUNT + ;INPUT2 INEOF INPUTF INPT1 INPUT3 INDMP CALIN + +;** UUOCON.MAC ** + +INPUT2: .UMOVE ITEM,1(TAC1) ;GET WORD COUNT MOVEI ITEM,(ITEM) ;RIGHT HALF ONLY JRST IOSETC ;SET ITEM COUNT AND BYTE POINTER AND RETURN TO USER INEOF: TDNN IOS,[XWD IOEND IODERR+IOBKTL+IODTER+IOIMPM] @@ -1955,7 +2138,7 @@ INEOF: TDNN IOS,[XWD IOEND IODERR+IOBKTL+IODTER+IOIMPM] JSP DAT,UUOERR ;NO, MONITOR ERROR AT UUO LEVEL TLNE IOS,IOEND ;IS THIS EOF? IORI IOS,IODEND ;YES, SET EOF BIT FOR USER - IORM IOS,DEVIOS(DEVDAT) + IORM IOS,DEVIOS(DDB) POPJ PDP, ;RETURN ;HERE ON FIRST INPUT AFTER INIT, INIT & LOOKUP, OR INIT & LOOKUP & INPUT @@ -1971,7 +2154,7 @@ INPUTF: ANDCAB TAC,TAC1 ;MARK THAT BUFFERS HAVE BEEN REFERENCED ; A LINE AFTER INBUF BUT BEFORE FIRST INPUT UUO JUMPLE AC1,INPUT2 ;YES, DO NOT CALL SERVICE ROUTINE (SCNSRF) SINCE ;USER BUFFER ALREADY HAS DATA - HRRM TAC,DEVIAD(DEVDAT) ;NO, STORE ADR. OF 2ND WORD OF BUFFER + HRRM TAC,DEVIAD(DDB) ;NO, STORE ADR. OF 2ND WORD OF BUFFER ;FOR SERVICE ROUTINE INPT1: PUSHJ PDP,CALIN ;FILL BUFFER JRST INPT2 @@ -1985,7 +2168,7 @@ CALIN: TLNE IOS,IOEND POPJ PDP, PUSH PDP,TAC1 PUSH PDP,JBUF - HRRZ AC1,DEVIAD(DEVDAT) ;IS FIRST ADR. ABOVE JOB DATA AREA? + HRRZ AC1,DEVIAD(DDB) ;IS FIRST ADR. ABOVE JOB DATA AREA? CAIG AC1,JOBPFI JRST ADRERR ;NO, PRINT ERROR AND STOP JOB .UMOVE AC2,(AC1) ;GET LENGTH OF BUFFER @@ -1997,23 +2180,27 @@ CALIN: TLNE IOS,IOEND POP PDP,JBUF POP PDP,TAC1 POPJ PDP, - ;HERE ON OUTPUT UUO + ;UOUT OUT OUT2 OUTF OUTF1 OUTS OUTDMP -UOUT: TLO DEVDAT,OUTPB ;SET OUTPUT UUO BIT - TLZ DEVDAT,OCLOSB ;CLEAR CLOSE OUTPUT BIT +;** UUOCON.MAC ** + +;HERE ON OUTPUT UUO + +UOUT: TLO DDB,OUTPB ;SET OUTPUT UUO BIT + TLZ DDB,OCLOSB ;CLEAR CLOSE OUTPUT BIT ;HERE FROM SERVICE ROUTINES ON CLOSE UUO OUT: .UMOVE TAC,JOBJDA(UCHN) ;GET JDA WORD - HLL TAC,DEVDAT ;PUT IN LH BIT SETTINGS + HLL TAC,DDB ;PUT IN LH BIT SETTINGS .UMOVM TAC,JOBJDA(UCHN) ;STORE BACK - HLLM DEVDAT,USRJDA(UCHN) ;MAKE COPY FOR US ALSO + HLLM DDB,USRJDA(UCHN) ;MAKE COPY FOR US ALSO LDB TAC,PIOMOD ;GET DATA MODE CAIL TAC,SD ;DUMP MODE? JRST OUTDMP ;YES PUSHJ PDP,OUTA ;NO, CHECK FOR NON-ZERO ADR. ;(USER CHANGING RING) - HLRZ JBUF,DEVBUF(DEVDAT) ;REL. ADR. OF O/P BUFFER HEADER + HLRZ JBUF,DEVBUF(DDB) ;REL. ADR. OF O/P BUFFER HEADER MOVEI AC1,2(JBUF) ;CHECK END OF 3-WORD HEADER PUSHJ PDP,UADRCK .UMOVE TAC1,(JBUF) ;GET FIRST WORD OF BUFFER HEADER @@ -2040,9 +2227,9 @@ OUT2: .UMOVE TAC,(TAC1) ;GET 2ND WORD IN BUFFER ;(POINTER TO CURRENT BUFFER) HRRI IOS,(TAC) ;ADVANCE CURRENT BUFFER ADR. .UMOVM IOS,(JBUF) - MOVE IOS,DEVIOS(DEVDAT) ;GET STATUS WORD + MOVE IOS,DEVIOS(DDB) ;GET STATUS WORD PUSHJ PDP,DOU(DSER) ;DO OUTPUT - HLRZ JBUF,DEVBUF(DEVDAT) ;REL. ADR. OF BUFFER HEADER + HLRZ JBUF,DEVBUF(DDB) ;REL. ADR. OF BUFFER HEADER .UMOVE TAC1,(JBUF) ;REL. ADR. OF SECOND WORD OF BUFFER MOVEI AC1,(TAC1) PUSHJ PDP,UADRCK @@ -2053,11 +2240,11 @@ OUT2: .UMOVE TAC,(TAC1) ;GET 2ND WORD IN BUFFER OUTF: JUMPL TAC1,OUTF1 HRRI UUO,2 ;SET UP TWO-BUFFER RING PUSHJ PDP,UOUTBF ;IF NONE SET UP YET - HLRZ JBUF,DEVBUF(DEVDAT) ;RESET JBUF (GETS CLOBBERED) + HLRZ JBUF,DEVBUF(DDB) ;RESET JBUF (GETS CLOBBERED) OUTF1: .UMOVE TAC,(JBUF) ;CLEAR USE BIT TLZ TAC,IOUSE .UMOVM TAC,(JBUF) - HRRM TAC,DEVOAD(DEVDAT) + HRRM TAC,DEVOAD(DDB) OUTS: .UMOVE TAC,(JBUF) ;CLEAR NEXT OUTPUT BUFFER ANDI TAC,777777 @@ -2069,16 +2256,24 @@ OUTS: .UMOVE TAC,(JBUF) ;CLEAR NEXT OUTPUT BUFFER SOJA ITEM,IOSETC OUTDMP: JRST DDO(DSER) ;DO DUMP OUTPUT AND RETURN TO USER - OUTA: TRNN UUO,777774 ;IS BUFFER ADR.SPECIFIED? + ;OUTA + +;** UUOCON.MAC ** + +OUTA: TRNN UUO,777774 ;IS BUFFER ADR.SPECIFIED? POPJ PDP, ;NO - HLRZ JBUF,DEVBUF(DEVDAT) + HLRZ JBUF,DEVBUF(DDB) .UMOVE TAC,(JBUF) HRRI TAC,(UUO) - HRRM UUO,DEVOAD(DEVDAT) + HRRM UUO,DEVOAD(DDB) TLZ TAC,IOUSE .UMOVM TAC,(JBUF) POPJ PDP, - ;RELEASE A DEVICE + ;RELEA0 RELEA1 RELEA2 RELEA3 RELEA5 RELEA4 RELE4A RELEA9 RELEA7 RELEA6 + +;** UUOCON.MAC ** + +;RELEASE A DEVICE RELEA0: RELEA1: @@ -2088,7 +2283,7 @@ RELEA3: ANDCMI UUO,-1 ;CLOSE BOTH INPUT AND OUTPUT ; PUSHJ PDP,WAIT1 ;**** THIS PROBABLY ISN'T NEEDED *** RELEA5: PUSHJ PDP,DRL(DSER) ;DO DEVICE-DEPENDENT STUFF MOVEI IOS,IOACT ;CLEAR I/O ACTIVE BIT - ANDCAB IOS,DEVIOS(DEVDAT) ;AND SET IOS + ANDCAB IOS,DEVIOS(DDB) ;AND SET IOS ;*** CODE NEEDED IF WE IMPLEMENT DTA'S *** SETZB DAT,USRJDA(UCHN) ;CLEAR DEVICE ASSIGNMENT .UMOVM DAT,JOBJDA(UCHN) @@ -2100,14 +2295,14 @@ RELEA4: HRRZ TAC1,USRJDA(TAC) JUMPN DAT,RELE4A MOVEI DAT,(TAC1) MOVEM TAC,USRHCU -RELE4A: CAIE TAC1,(DEVDAT) +RELE4A: CAIE TAC1,(DDB) SOJGE TAC,RELEA4 MOVE TAC1,USRHCU .UMOVM TAC1,JOBHCU - JUMPGE TAC,CPOPJ ;JUMP IF WE FOUND A MATCH TO DEVDAT + JUMPGE TAC,CPOPJ ;JUMP IF WE FOUND A MATCH TO DDB ; IN ONE OF THE USER'S JDA ENTRIES - HLLZS DEVIAD(DEVDAT) ;CLEAR INPUT AND - HLLZS DEVOAD(DEVDAT) ;OUTPUT BUFFER ADDRESSES + HLLZS DEVIAD(DDB) ;CLEAR INPUT AND + HLLZS DEVOAD(DDB) ;OUTPUT BUFFER ADDRESSES ;CALLED HERE FROM "ESTOP" RELEA9: @@ -2122,7 +2317,7 @@ RELEA7: LDB TAC,PDEVI ;GET ITS CHANNEL # THIS ONE IS USING MOVEI TAC1,ASSPRG ;CLEAR "ASSIGNED BY PROG." BIT ;CALLED HERE FROM "DEASSIGN" -RELEA6: ANDCAB TAC1,DEVMOD(DEVDAT) +RELEA6: ANDCAB TAC1,DEVMOD(DDB) TRNE TAC1,ASSCON+ASSPRG ;YES, CAN WE RETURN THE DDB? POPJ PDP, ;NO, RETURN ;YES - WE WILL RETURN DDB IF IT'S FOUND AFTER DSKDDB IN THE @@ -2131,7 +2326,11 @@ RELEA6: ANDCAB TAC1,DEVMOD(DEVDAT) PUSH PDP,ITEM ;SAVE ITEM PUSHJ PDP,CLRDDB ;RETURN DISK OR TTYNM DDB TO FREE STORAGE JRST IPOPJ ;RESTORE ITEM AND RETURN - ;STATUS UUOS + ;USTATO USTATS USTATZ + +;** UUOCON.MAC ** + +;STATUS UUOS ;CALL: STATO D,MASK ; EXIT1 ALL SELECTED BITS ARE 0 @@ -2161,7 +2360,11 @@ USTATS: HRRZ TAC,IOS ;GET USER HALF OF IOS USTATZ: TRNN IOS,(UUO) ;SKIP RET. IF ALL INDICATED BITS ARE 0. AOS (PDP) POPJ PDP, - ;IN UUO - LIKE INPUT, BUT SKIPS IF EOF OR ERRORS + ;TIN TOUT + +;** UUOCON.MAC ** + +;IN UUO - LIKE INPUT, BUT SKIPS IF EOF OR ERRORS TIN: PUSHJ PDP,IN ;DO INPUT UUO TRNE IOS,IOBKTL+IODTER+IODERR+IOIMPM+IODEND @@ -2176,13 +2379,17 @@ TOUT: PUSHJ PDP,UOUT ;DO OUTPUT UUO TRNE IOS,IOBKTL+IODTER+IODERR+IOIMPM AOS (PDP) POPJ PDP, - ;ROUTINE TO ADVANCE OUTPUT BUFFER + ;ADVBFE ADVBE1 + +;** UUOCON.MAC ** + +;ROUTINE TO ADVANCE OUTPUT BUFFER ;CALL: PUSHJ PDP,ADVBFE ; EXIT1 NEXT BUFFER EMPTY ; EXIT2 NEXT BUFFER FULL -ADVBFE: HRRZ TAC1,DEVOAD(DEVDAT) ;ADR. OF 2ND WORD OF LAST BUF. +ADVBFE: HRRZ TAC1,DEVOAD(DDB) ;ADR. OF 2ND WORD OF LAST BUF. JUMPE TAC1,CPOPJ ;RETURN IF CLEARED BY RELEASE .UMOVM IOS,-1(TAC1) ;NO, STORE STATUS IN FIRST WORD .UMOVE TAC,(TAC1) ;GET 2ND WORD @@ -2193,19 +2400,23 @@ ADVBFE: HRRZ TAC1,DEVOAD(DEVDAT) ;ADR. OF 2ND WORD OF LAST BUF. CAML TAC,USRREL ;NO, IS IT ABOVE HIS AREA? POPJ PDP, ;YES, DON'T STORE NEXT ADR., BUT ;CATCH THE ERROR LATER - HRRM TAC,DEVOAD(DEVDAT) ;NOW, STORE NEXT BUFFER ADR. + HRRM TAC,DEVOAD(DDB) ;NOW, STORE NEXT BUFFER ADR. ;ENTER HERE FROM SCNSER TO CHECK IF NEXT BUFFER FULL OF DATA YET -ADVBE1: .UMOVE TAC,@DEVOAD(DEVDAT) ;IS IOUSE = 0? +ADVBE1: .UMOVE TAC,@DEVOAD(DDB) ;IS IOUSE = 0? JUMPGE TAC,CPOPJ ;IF SO, EXIT1, BUFFER IS EMPTY JRST ADVBF1 ;IF NOT, GO SEE IF USER TYPED ^C. - ;ROUTINE TO ADVANCE INPUT BUFFER + ;ADVBFF ADVBF1 + +;** UUOCON.MAC ** + +;ROUTINE TO ADVANCE INPUT BUFFER ;CALL: PUSHJ PDP,ADVBFF ; EXIT1 ;NEXT BUFFER FULL ; EXIT2 ;NEXT BUFFER EMPTY -ADVBFF: HRRZ TAC1,DEVIAD(DEVDAT) ;ADR. OF LAST INPUT BUFFER +ADVBFF: HRRZ TAC1,DEVIAD(DDB) ;ADR. OF LAST INPUT BUFFER JUMPE TAC1,CPOPJ ;RETURN IF CLEARED BY RELEASE .UMOVM IOS,-1(TAC1) ;NO, STORE IOS IN FIRST WORD .UMOVE TAC,(TAC1) ;GET 2ND WORD @@ -2215,7 +2426,7 @@ ADVBFF: HRRZ TAC1,DEVIAD(DEVDAT) ;ADR. OF LAST INPUT BUFFER CAILE TAC,JOBPFI ;IN PROTECTED PART OF JOBDAT? CAML TAC,USRREL ;NO, ABOVE HIS AREA? POPJ PDP, ;YES, GIVE STOP RETURN - HRRM TAC,DEVIAD(DEVDAT) ;YES, STORE ADR. OF NEXT BUFFER + HRRM TAC,DEVIAD(DDB) ;YES, STORE ADR. OF NEXT BUFFER .UMOVE TAC1,(TAC) ;GET 2ND WORD OF NEXT BUFFER JUMPL TAC1,CPOPJ ;GIVE STOP RETURN IF NEXT INPUT BUFFER ;IS STILL FULL @@ -2227,7 +2438,11 @@ ADVBF1: SKIPGE TAC,JBTSTS ;IS RUN BIT ON? TRNE IOS,IOCON ;YES, IS IT NON-DISCONTINUOUS MODE? POPJ PDP, ;NO, STOP RETURN JRST CPOPJ1 ;YES, GO RETURN - ;ROUTINE TO ADDRESS CHECK AT UUO LEVEL ONLY + ;UADCK1 UADRCK IADRCK + +;** UUOCON.MAC ** + +;ROUTINE TO ADDRESS CHECK AT UUO LEVEL ONLY ;CALL HRRZ AC1,REL. ADR. ; PUSHJ PDP,UADCK1 ; NEVER RETURNS IF ERROR, STOPS JOB AND PRINTS ERROR @@ -2254,7 +2469,11 @@ IADRCK: CAILE TAC,JOBPFI ;IN PROTECTED PART OF JOBDAT? CAMLE TAC,USRREL ;NO, ABOVE PROT.? POPJ PDP, ;YES, ERROR RETURN JRST CPOPJ1 ;NO, OK RETURN - ;ROUTINE TO CHECK VALIDITY OF A DUMP MODE COMMAND LIST + ;COMCHK COMCK0 COMCK1 COMCK2 COMCKE + +;** UUOCON.MAC ** + +;ROUTINE TO CHECK VALIDITY OF A DUMP MODE COMMAND LIST ;CALL: MOVE UUO,[XWD 0 REL.ADR. OF FIRST COMMAND] ; PUSHJ PDP,COMCHK @@ -2301,19 +2520,23 @@ COMCK2: JUMPE AC2,.+2 ;ANY IOWD'S WITH LH NEGATIVE? COMCKE: POP PDP,AC2 POP PDP,UUO ;RESTORE ORIGINAL UUO POPJ PDP, ;ERROR RETURN - CLOSE1: + ;CLOSE1 UCLS5 UCLSBI UCLS4 UCLS0 UCLS1 + +;** UUOCON.MAC ** + +CLOSE1: ; PUSHJ PDP,WAIT1 ;PROBABLY DON'T NEED THIS **** TRNN UUO,CLSIN ;SUPPRESS INPUT CLOSE? - TLOE DEVDAT,ICLOSB ;NO, HAS IT ALREADY BEEN CLOSED? + TLOE DDB,ICLOSB ;NO, HAS IT ALREADY BEEN CLOSED? JRST UCLS2 ;YES LDB TAC,PIOMOD ;NO, GET I/O MODE CAIGE TAC,SD ;DUMP MODE? JRST UCLSBI ;NO, CLOSE BUFFERED INPUT UCLS5: PUSHJ PDP,DCLI(DSER) ;YES, DO DEVICE-DEPENDENT STUFF - JRST UCLS2 ;WHICH BETTER NOT DESTROY UUO, DEVDAT, + JRST UCLS2 ;WHICH BETTER NOT DESTROY UUO, DDB, ;UCHN, OR DSER -UCLSBI: MOVE TAC,DEVMOD(DEVDAT) - TLNE DEVDAT,INPB+INBFB ;WAS AN INPUT BUFFER SET UP? +UCLSBI: MOVE TAC,DEVMOD(DDB) + TLNE DDB,INPB+INBFB ;WAS AN INPUT BUFFER SET UP? JRST UCLS4 ;YES TLNE TAC,DVDSK ;NO, ARE WE CLOSING A DISK FILE? JRST UCLS5 ;YES, DO DEVICE-DEPENDENT ANYWAY @@ -2321,7 +2544,7 @@ UCLSBI: MOVE TAC,DEVMOD(DEVDAT) UCLS4: TLNE TAC,DVLNG ;IS THIS A LONG DISPATCH TABLE? PUSHJ PDP,DCLI(DSER) ;YES, CLOSE INPUT - HRRZ TAC1,DEVBUF(DEVDAT) ;GET ADR. OF USER'S INPUT BUFFER + HRRZ TAC1,DEVBUF(DDB) ;GET ADR. OF USER'S INPUT BUFFER .UMOVE DAT,(TAC1) ;GET FIRST WORD OF 3-WORD HEADER ANDI DAT,-1 ;RH ONLY MOVEI TAC1,(DAT) ;SAVE A COPY @@ -2340,16 +2563,20 @@ UCLS0: .UMOVE DAT,(DAT) ;ADVANCE CURRENT INPUT BUFFER ADR. CAIE TAC1,(DAT) ;DONE? JRST UCLS0 ;NO -UCLS1: HRRZ DAT,DEVBUF(DEVDAT) +UCLS1: HRRZ DAT,DEVBUF(DDB) .UMOVE TAC,(DAT) TLO TAC,IOUSE ;FLAG AS VIRGIN BUFFER IN 3-WORD HEADER .UMOVM TAC,(DAT) SETZ TAC, .UMOVM TAC,2(DAT) ;CLEAR INPUT ITEM COUNT MOVE IOS,[XWD IOEND IODEND] - ANDCAB IOS,DEVIOS(DEVDAT) - UCLS2: TRNN UUO,CLSOUT ;SUPPRESS OUTPUT CLOSE? - TLOE DEVDAT,OCLOSB ;NO, OUTPUT ALREADY CLOSED? + ANDCAB IOS,DEVIOS(DDB) + ;UCLS2 UCLS7 UCLSBO UCLS2A UCLS2B UCLS3 UCLS6 + +;** UUOCON.MAC ** + +UCLS2: TRNN UUO,CLSOUT ;SUPPRESS OUTPUT CLOSE? + TLOE DDB,OCLOSB ;NO, OUTPUT ALREADY CLOSED? JRST UCLS3 ;YES LDB TAC,PIOMOD ;NO CAIGE TAC,SD ;IS IT DUMP MODE? @@ -2357,13 +2584,13 @@ UCLS1: HRRZ DAT,DEVBUF(DEVDAT) UCLS7: PUSHJ PDP,DCL(DSER) ;YES, DO DEVICE-DEPENDENT JRST UCLS3 -UCLSBO: TLNN DEVDAT,OUTBFB+OUTPB ;WAS AN OUTPUT BUFFER SET UP? +UCLSBO: TLNN DDB,OUTBFB+OUTPB ;WAS AN OUTPUT BUFFER SET UP? JRST UCLS6 ;NO - HLRZ DAT,DEVBUF(DEVDAT) ;VIRGIN OUTPUT BUFFER? + HLRZ DAT,DEVBUF(DDB) ;VIRGIN OUTPUT BUFFER? .UMOVE TAC,(DAT) JUMPLE TAC,UCLS6 ;YES, DON'T CLOSE UNLESS IT IS DISK -UCLS2A: MOVE DSER,DEVSER(DEVDAT) ;NO, HAS SERVICE ROUTINE - .UMOVE TAC,@DEVOAD(DEVDAT) ;WRITTEN NEXT BUFFER YET ? +UCLS2A: MOVE DSER,DEVSER(DDB) ;NO, HAS SERVICE ROUTINE + .UMOVE TAC,@DEVOAD(DDB) ;WRITTEN NEXT BUFFER YET ? JUMPGE TAC,UCLS2B ;YES ANDCMI IOS,760000 ;NO, CLEAR ERROR BITS AND START ;OUTPUT DEVICE @@ -2374,25 +2601,29 @@ UCLS2A: MOVE DSER,DEVSER(DEVDAT) ;NO, HAS SERVICE ROUTINE TRNN IOS,760000 ;ERROR? JRST UCLS2A ;NO, RETURN WHEN ALL EMPTIED -UCLS2B: MOVE DSER,DEVSER(DEVDAT) +UCLS2B: MOVE DSER,DEVSER(DDB) PUSHJ PDP,DCL(DSER) ;CLOSE OUTPUT BUFFER - HLRZ DAT,DEVBUF(DEVDAT) + HLRZ DAT,DEVBUF(DDB) .UMOVE TAC,(DAT) TLO TAC,IOUSE .UMOVM TAC,(DAT) SETZ TAC, .UMOVM TAC,2(DAT) ;JBFCTR = 0 ;** PUSHJ PDP,WAIT1 ;PROBABLY UNNECESSARY *** - TLO DEVDAT,OCLOSB ;SET OCLOSB AFTER OUTPUT IS COMPLETE -UCLS3: MOVEM DEVDAT,USRJDA(UCHN) - .UMOVM DEVDAT,JOBJDA(UCHN) + TLO DDB,OCLOSB ;SET OCLOSB AFTER OUTPUT IS COMPLETE +UCLS3: MOVEM DDB,USRJDA(UCHN) + .UMOVM DDB,JOBJDA(UCHN) POPJ PDP, UCLS6: MOVSI TAC,DVDSK ;CLOSING A DISK FILE? - TDNE TAC,DEVMOD(DEVDAT) + TDNE TAC,DEVMOD(DDB) JRST UCLS7 ;YES, DO DISK CLOSE ANYWAY JRST UCLS3 ;NO, FINISH UP - ;ROUTINE TO RELEASE ALL DEVICES ASSIGNED TO JOB + ;IORELS IOALL IOALL1 IOALL2 IOKILL SETUSR CLRUSR + +;** UUOCON.MAC ** + +;ROUTINE TO RELEASE ALL DEVICES ASSIGNED TO JOB IORELS: MOVEI TAC,RELEA3 ;RELEASE ALL I/O DEVICES ( DON'T CLOSE ) IOALL: PUSH PDP,TAC ;SAVE ADR. OF SUBROUTINE @@ -2403,12 +2634,12 @@ IOALL1: CAMLE UCHN,USRHCU ;IS IT GREATER THAN HIGHEST ;CHANNEL USED? JUMPN UCHN,IOALL2 ;YES, RETURN - BUT, IF USRHCU IS NEG., ASSUME ;SAVGET WHICH USES CHANNEL 0. - SKIPN DEVDAT,USRJDA(UCHN) ;GET DDB FOR THIS CHANNEL; + SKIPN DDB,USRJDA(UCHN) ;GET DDB FOR THIS CHANNEL; ;IS IT IN USE? AOJA UCHN,IOALL1 ;NO, KEEP GOING - MOVE IOS,DEVIOS(DEVDAT) ;YES, SET UP FOR SUB. CALL + MOVE IOS,DEVIOS(DDB) ;YES, SET UP FOR SUB. CALL DPB UCHN,PUUOAC - MOVE DSER,DEVSER(DEVDAT) + MOVE DSER,DEVSER(DDB) PUSHJ PDP,@-1(PDP) ;CALL THE SPECIFIED SUBROUTINE AOJA UCHN,IOALL1 ;CONTINIUE WITH NEXT CHANNEL IOALL2: POP PDP,UUO ;RESTORE UUO @@ -2440,30 +2671,38 @@ CLRUSR: SETZ TAC, ;INITIALIZE APR TRAPPING HRLI TAC,USRLO .UBLTO TAC,JOBHI POPJ PDP, - ;ASSIGN DEVICE IF UNASSIGNED -;CALL: MOVE DEVDAT,ADR. OF DDB + ;ASSASG ASSAS1 + +;** UUOCON.MAC ** + +;ASSIGN DEVICE IF UNASSIGNED +;CALL: MOVE DDB,ADR. OF DDB ; MOVEI TAC1, EITHER ASSPRG OR ASSCON ; PUSHJ PDP,ASSASG ; CAN'T ASSIGN RETURN ; ASSIGNED RETURN ASSASG: MOVSI TAC,DVDSK ;SET UP "I'M A DISK" BIT - TDNE TAC,DEVMOD(DEVDAT) ;IS THIS A DSK? + TDNE TAC,DEVMOD(DDB) ;IS THIS A DSK? PUSHJ PDP,SETDDB ;YES - GET A DSK DDB -ASSAS1: IORM TAC1,DEVMOD(DEVDAT) ;SET WHICHEVER ONE HE WANTS +ASSAS1: IORM TAC1,DEVMOD(DDB) ;SET WHICHEVER ONE HE WANTS JRST CPOPJ1 ;GIVE GOOD RETURN - ;SEARCH FOR DEVICE WHOSE NAME IS IN TAC + ;DEVSRC DEVLG DEVLP0 DEV0 DEVPHY DEVLP1 DEVPH1 + +;** UUOCON.MAC ** + +;SEARCH FOR DEVICE WHOSE NAME IS IN TAC ;SEARCH FOR LOGICAL NAME FIRST. DEVSRC: PUSHJ PDP,DEVLG ;SEARCH LOGICAL NAMES FIRST JRST DEVPHY ;NOT FOUND, SEARCH PHYSICAL NAMES JRST CPOPJ1 ;FOUND, GIVE SKIP RETURN -DEVLG: HLRZ DEVDAT,DEVLST ;BEGINNING OF DDB CHAIN -DEVLP0: CAMN TAC,DEVLOG(DEVDAT) ;EQUAL LOGICAL NAME? +DEVLG: HLRZ DDB,DEVLST ;BEGINNING OF DDB CHAIN +DEVLP0: CAMN TAC,DEVLOG(DDB) ;EQUAL LOGICAL NAME? JUMPN TAC,CPOPJ1 ;YES, BUT GOOD ONLY IF NON-ZERO -DEV0: HLRZ DEVDAT,DEVSER(DEVDAT) ;NO, KEEP LOOKING - JUMPN DEVDAT,DEVLP0 +DEV0: HLRZ DDB,DEVSER(DDB) ;NO, KEEP LOOKING + JUMPN DDB,DEVLP0 POPJ PDP, ;NOT FOUND @@ -2473,17 +2712,21 @@ DEVPHY: MOVEI TAC1,SYSDEV ;START OFF ASSUMING "SYS" CAME TAC,[SIXBIT /SYS/] ;IS THAT RIGHT? TRZA TAC1,SYSDEV ;NO, TURN OFF FLAG MOVSI TAC,(SIXBIT /DSK/) ;YES, USE DSK - HLRZ DEVDAT,DEVLST ;SEARCH DDB'S -DEVLP1: TLO DEVDAT,(TAC1) ;SET SYS. BIT IF ON - CAMN TAC,DEVNAM(DEVDAT) ;MATCH? + HLRZ DDB,DEVLST ;SEARCH DDB'S +DEVLP1: TLO DDB,(TAC1) ;SET SYS. BIT IF ON + CAMN TAC,DEVNAM(DDB) ;MATCH? JUMPN TAC,CPOPJ1 ;YES, IF NAME NON-ZERO -DEVPH1: HLRZ DEVDAT,DEVSER(DEVDAT) ;NO, GET NEXT IN CHAIN - JUMPN DEVDAT,DEVLP1 ;CONTINUE IF NOT END +DEVPH1: HLRZ DDB,DEVSER(DDB) ;NO, GET NEXT IN CHAIN + JUMPN DDB,DEVLP1 ;CONTINUE IF NOT END CAME TAC,[SIXBIT /TTY/] ;IS IT PUBLIC NAME "TTY"? JRST GETDDB ;NO, SEE IF IT IS A TTYNN PUSHJ PDP,TTYFND ;YES, FIND USER'S TTY DDB JRST CPOPJ1 ;AND GIVE SUCCESSFUL RETURN - SUBTTL LUUO HANDLER + ;UUOHAN UUDISP P40OP P40AC + +;** UUOCON.MAC ** + +;LUUO HANDLER .UMOVE=1_27. ;OPDEF FOR .UMOVE .UMOVM=2_27. ;OPDEF FOR .UMOVM @@ -2514,7 +2757,13 @@ HIUUO==.-UUDISP P40OP: POINT 9,40,8, ;BYTE POINTER TO OP-CODE FIELD OF UUO P40AC: POINT 4,40,12, ;BYTE POINTER TO AC FIELD OF UUO - UMOVE: .ACCES UPRGI,40 ;SET UP TO ACCESS INFERIOR LOC. + ;UMOVE T2POPJ UMOVM UUOSUB UBLTI UBLTO + +;** UUOCON.MAC ** + +;LUUO HANDLER + +UMOVE: .ACCES UPRGI,40 ;SET UP TO ACCESS INFERIOR LOC. .IOT UPRGI,(PDP) ;SUCK SPECIFIED WORD INTO RIGHT AC T2POPJ: POP PDP,TAC ;REMOVE ONE STACK LOC. JRST TPOPJ ;RESTORE TAC AND RETURN @@ -2551,7 +2800,9 @@ UBLTO: PUSHJ PDP,UUOSUB ;GET CONTENTS OF AC INTO TAC HLR TAC,1(PDP) ;RESTORE "FROM ADR." .IOT UPRGO,TAC ;MAKE TRANSFER JRST T2POPJ ;RESTORE AND RETURN - ;** CLOCK1.MAC ** PAGE 4 + ;APRER APRER5 APDSBL + +;** CLOCK1.MAC ** PAGE 4 ;APR INTERRUPTS COME HERE ; IF FROM USER'S PROGRAM, WE FIRST GENERATED CLASS-3 INTERRUPT TO SUPERIOR. @@ -2596,7 +2847,9 @@ APDSBL: SETZM ITSENB ;NOTHING ENABLED FOR USER .USET UPRGO,[.SMASK,,[BIOADC\BILLOP\200000]] ;VIRGIN STATUS OF MASK - THE SAME AS WHEN PROCEDURE WAS CREATED JRST APRER5 - ;** CLOCK1.MAC ** PAGES 5+7 + ;APRER2 WSCHED USCHED USCHD1 + +;** CLOCK1.MAC ** PAGES 5+7 APRER2: TRNE TAC1,BIOADC\200000 ;IS THIS A TRAP WE WISH TO SIGNAL ; AS AN ERROR ? @@ -2635,7 +2888,9 @@ USCHED: POP PDP,AC3 ;COLLECT RETURN ADDR INTO MONITOR USCHD1: MOVE AC3,USRPD1 .UMOVM AC3,JOBPD1 JRST RSCHED - ;** CLOCK1.MAC ** PAGES 8,9,+13 + ;SAVPC RSCHED SETREL SETHRD + +;** CLOCK1.MAC ** PAGES 8,9,+13 SAVPC: JSP TAC,.+1 ;GET A REASONNABLE PC TLZ TAC,USRMOD ;RESET USER MODE BIT @@ -2670,7 +2925,9 @@ SETREL: MOVE PROG,JBTADR MOVE PROG,JBTADR SETHRD: POPJ PDP, - ;** CLOCK1.MAC ** PAGES 14+16 + ;SETAPR PHOLD HOLD HOLD1 + +;** CLOCK1.MAC ** PAGES 14+16 ;ROUTINE TO ENABLE/DISABLE APR TRAPPING FROM INFERIOR ;CALL: MOVEI TAC,APR CONSO FLAGS, DEC STYLE @@ -2710,17 +2967,13 @@ HOLD: PUSHJ PDP,INLMES ./ HOLD1: PUSHJ PDP,TTYSTC ;MAKE SURE TTY STAYS IN MONITOR MODE ; FALL INTO ESTOP - ;** CLOCK1.MAC ** PAGES 17+18 + ;ESTOP STOP1 STOP1B STOP1C STOP1A + +;** CLOCK1.MAC ** PAGES 17+18 ;ROUTINE TO STOP USER AND FLAG AS ERROR STOP -ESTOP: - -;ESTOP1: ;ESTOP1 CALLED ONLY FROM CLRJOB: (IN CORE1). - ; CLRJOB: CALLED ONLY FROM SYSINI. I DON'T THINK WE NEED - ; ESTOP1. - - MOVSI TAC,JERR ;SET ERROR BIT +ESTOP: MOVSI TAC,JERR ;SET ERROR BIT IORM TAC,JBTSTS ;SO 'CONTINUE' WON'T WORK MOVE TAC,TTYOIP @@ -2776,7 +3029,9 @@ STOP1A: MOVEI TAC,NULPDL ;NOW TO TELL WHETHER WE ARRIVED HERE VIA A POPJ PDP, ;RETURN TO CALLER IF WE STOPPED W/O ; ERR'ING -- SPECIFICALLY BY "HALT" COMMAND OR VIA A SOFT ; EXIT OR VIA A PROGRAM HALT - ;** CLOCK1.MAC ** PAGES 20+21 + ;MONSTR USTART USTRT1 MSTART + +;** CLOCK1.MAC ** PAGES 20+21 ;ROUTINE TO SETUP AC'S FOR MONITOR JOB STARTING AT UUO LEVEL. ; SETS UP PROG W/PROTECTION AND PDP W/PUSHDOWN POINTER TO LIST WHICH @@ -2826,7 +3081,9 @@ MSTART: MOVSI TAC,JERR ;CLEAR ERROR BIT ANDCAM TAC,JBTSTS JRST TTYSET ;SET TTY TO INITIAL CONDITION - ;** CLOCK1.MAC ** PAGES 22+29 + ;SETRUN SETR3 WSYNC + +;** CLOCK1.MAC ** PAGES 22+29 ;SETS JOB TO RUN - ESSENTIALLY COMBINES AXN OF SETRUN AND ; CONTEXT SWITCHING AT CIP7: @@ -2857,7 +3114,9 @@ WSYNC: MOVSI IOS,IOW ;SETUP I/O WAIT PUSHJ PDP,WSCHED ANDCAB IOS,DEVIOS(DDB) ;RETURNS HERE POPJ PDP, - ;** COMCON.MAC ** + ;COMMAND COMLP COMNEQ + +;** COMCON.MAC ** ;TEMPORARY ACCUMULATORS @@ -2869,7 +3128,7 @@ T4==AC2 COMMAND: - MOVEI DAT,TTIBUF(DEVDAT) ;THIS ALLOWS US TO DO GETCHR'S + MOVEI DAT,TTIBUF(DDB) ;THIS ALLOWS US TO DO GETCHR'S ;NOTE: ACCUMULATORS ARE ALREADY SET UP HAVING BEEN ; STARTED UP BY OUR GENERAL CONSOLE INTERRUPT ROUTINE. ; WE FOUND THAT THE TTY IS IN MONITOR MODE AND THAT A BREAK @@ -2878,7 +3137,7 @@ COMMAND: MOVE LINE,TITCTR(DDB) DPB LINE,PCOMIC ;SAVE COMMAND INPUT COUNTER MOVEI ITEM,0 ;THAT'S THE JOB NUMBER WE SET OURSELVES TO BE - PUSH PDP,DEVDAT + PUSH PDP,DDB PUSHJ PDP,CTEXT ;SCAN COMMAND NAME, RETURN IT IN AC(TAC1) MOVE T,TAC1 ;COPY COMMAND MOVNI T1,1 ;SET MASK ALL ONES @@ -2901,7 +3160,9 @@ COMNEQ: AOBJN T,COMLP ;NO, KEEP LOOKING MOVE T,T3 ;YES, GET ITS INDEX ;IF NOT --- THEN WE LET DISPATCH ENTRY FALL THROUGH TIL LAST, ; LAST ENTRY IS THE ERROR DISPATCH - ;** COMCON.MAC ** PAGES 3,4,5+6 + ;COMFND CHKRUN CHKACT COMER COMGO COMDIS COMRET + +;** COMCON.MAC ** PAGES 3,4,5+6 COMFND: MOVE TAC1,DISP(T) ;GET DISPATCH TABLE ENTRY PUSH PDP,TAC1 ;SAVE RH(DISPATCH ADDR.+BITS) @@ -2911,7 +3172,7 @@ CHKRUN: TLNE T,RUN ;RUN BIT ON ? TLNN TAC1,NORUN ;AND IS THAT OK ? JRST CHKACT ;YES JSP TAC,COMER - ASCIZ /?Please type ^C first + ASCIZ /Please type ^C first / CHKACT: MOVE PROG,JBTADR ;XWD PROTECTION,RELOCATION @@ -2919,7 +3180,7 @@ CHKACT: MOVE PROG,JBTADR ;XWD PROTECTION,RELOCATION JRST COMGO ;NO - NO NEED TO CHECK ANY FURTHER JUMPN PROG,COMGO ;BETTER HAVE SOME JSP TAC,COMER - ASCIZ /?No core assigned + ASCIZ /No core assigned / COMER: MOVEI TAC1,CERR @@ -2932,13 +3193,15 @@ COMDIS: ;RETURN FROM COMMAND SETUP ROUTINE COMRET: POP PDP,T1 - POP PDP,DEVDAT - LDB TEM,TITAKR(DEVDAT) + POP PDP,DDB + LDB TEM,TITAKR(DDB) PUSHJ PDP,SKPBRK - SOS TISYNC(DEVDAT) + SOS TISYNC(DDB) JUMPGE ITEM,PCRLF MOVSI T1,ERRFLG - ;** COMCON.MAC ** PAGES 7+8 + ;PCRLF PCRLF1 SKPBRK SKPBR2 SKPBR1 + +;** COMCON.MAC ** PAGES 7+8 PCRLF: TLNN T1,NOCRLF ;SUPPRESS CRLF ? PUSHJ PDP,CRLF ;NO @@ -2962,7 +3225,7 @@ SKPBR2: PUSHJ PDP,SPCHEK SKPBR1: PUSHJ PDP,GETCHR ;GET ANOTHER JUMPN TEM,SKPBR2 ;IS IT IS ? MOVEI TEM,12 ;NO MORE - FORCE A BREAK - DPB TEM,TITAKR(DEVDAT) + DPB TEM,TITAKR(DDB) JRST TPOPJ ;AND RETURN ;TABLE OF CONSOLE COMMANDS @@ -2979,14 +3242,16 @@ NOPER==100 ;NO PRINTING OF PERIOD TTYRNU==40 ;SET TTY TO USER MODE AND START JOB TTYRNC==20 ;KEEP TTY IN COMMAND MODE AND START JOB ERRFLG==1 ;COMMAND ERROR - ;** COMCON.MAC ** PAGE 9 + ;COMTAB DISP + +;** COMCON.MAC ** PAGE 9 DEFINE NAMES C []CBLANK,NOCORE\NOCRLF C START,START,NOPER\TTYRNU\NORUN C HALT,STOP,NOCORE - C R,RCOM,NOCORE\NOPER\TTYRNU\NORUN - C RUN,RUNCOM,NOCORE\NOPER\TTYRNU\NORUN + C R,RCOM,NOCORE\NOPER\TTYRNU\NORUN\NOCRLF + C RUN,RUNCOM,NOCORE\NOPER\TTYRNU\NORUN\NOCRLF C CORE,CORE,NOCORE\NORUN C GET,GET,NOCRLF\NOPER\TTYRNC\NOCORE\NORUN C SAVE,SAVE,NOCRLF\NOPER\TTYRNC\NORUN @@ -3038,10 +3303,12 @@ DEFINE C A,B,D DISP: NAMES NOCORE,,NOCOM - ;** COMCON.MAC ** PAGES 12,13,14+15 + ;COR0 PJOB DECLF CERR START STARTC STRTC1 + +;** COMCON.MAC ** PAGES 12,13,14+15 ;CALLED FROM COMMAND DECODER -; DEVDAT=ADDR OF CTY DDB +; DDB=ADDR OF CTY DDB ; PROG=XWD PROT., (O IF NO CORE) COR0: JUMPE PROG,CPOPJ ;RETURN IF JOB DOES NOT HAVE CORE @@ -3061,7 +3328,7 @@ DECLF: PUSHJ PDP,RADX10 ;PRINT AS A DEC # ;ERROR IN COMMAND -CERR: JRST ERRMES +CERR: JRST ERRMES ; "START L" OR "START" @@ -3079,7 +3346,9 @@ STARTC: .UMOVE TAC1,JOBSA STRTC1: POP PDP,(PDP) ;ADJUST STACK JRST COMERA - ;** COMCON.MAC ** PAGES 16+17 + ;HELP HELP1 REENTER DDTGO CHKSTR STOP CCONT CONT + +;** COMCON.MAC ** PAGES 16+17 HELP: PUSHJ PDP,INLMES ASCIZ/The monitor has the following commands: @@ -3102,7 +3371,7 @@ DDTGO: MOVE TAC1,USRDDT CHKSTR: TLZ TAC1,-1 ;ZERO LEFT HALF JUMPN TAC1,USTART JSP TAC,ERRMES - ASCIZ /?No start adr + ASCIZ /No starting address / ; "HALT" OR "^C" @@ -3124,9 +3393,11 @@ CONT: MOVSI TAC1,JERR TDNN TAC1,JBTSTS ;IS JOB ERROR SET ? POPJ PDP, ;NO - COMMAND DECODER WILL DO THE REST JSP TAC,ERRMES ;YES - PRINT CAN'T CONTINUE - ASCIZ /?Can't continue + ASCIZ /Can't continue / - ;** COMCON.MAC ** PAGES 18+19 + ;CORE COR1 COR2 COR3 + +;** COMCON.MAC ** PAGES 18+19 ; "CORE NN" - ASSIGNS NN*1024. WORDS OF CORE TO JOB ; "CORE" WITH NO ARGUMENT WILL PRINT NO. OF FREE BLOCKS LEFT WITHOUT @@ -3148,7 +3419,7 @@ COR1: JRST COR0 ;GO RELEASE ALL DEVICES IF HE HAS CORE ;ERROR DURING ATTEMPT TO REASSIGN CORE ; COMES HERE UPON FAIL RETURN FROM CORE0:[CORE1] -COR2: MOVE DEVDAT,-2(PDP) ;RESTORE TTY DDB ADDR +COR2: MOVE DDB,-2(PDP) ;RESTORE TTY DDB ADDR PUSHJ PDP,COR3 PUSHJ PDP,INLMES ASCIZ "?" @@ -3166,7 +3437,9 @@ COR3: MOVEI ITEM,0 ASCIZ /K core / POPJ PDP, - ;** COMCON.MAC ** PAGES 20,22+23 + ;SAVE GET LOGIN CCLRUN ARCOM ARCOM1 RCOM RUNCOM RUNCO2 RUNCM + +;** COMCON.MAC ** PAGES 20,22+23 ; "SAVE FILE-NAME [PROJ.,PROG.] CORE" - SAVES JOB AREA ON RETRIEVABLE DEVICE. ; NO ATTEMPT IS MADE TO SAVE DEVICE ASSIGNMENTS, AC'S, OR PC. @@ -3218,30 +3491,32 @@ RUNCO2: MOVEI IOS,RUNJOB ;ROUTINE ADDR RUNCM: PUSHJ PDP,GETMIN JRST SGSET - ;** COMCON.MAC ** PAGES 24,25+26 + ;ASSIGN ASSG3 ASSG4 ASSG4A ASSG4B ASSG4C ASSG5 ASSER1 ASSER2 + +;** COMCON.MAC ** PAGES 24,25+26 ; "ASSIGN DEV:NAME" - ASSIGN DEVICE TO JOB AND GIVE IT A LOGICAL NAME ASSIGN: PUSHJ PDP,CTEXT1 ;GET FIRST ARG TO AC(TAC1)=DEV JUMPE TAC1,NOTENF ;NO ARGUMENT TYPED IF=0 MOVE T1,TAC1 ;SAVE DEVICE NAME - PUSH PDP,DEVDAT ;SAVE TTY DDB - WE WILL LIKELY LOSE CONTENTS OF DEVDAT + PUSH PDP,DDB ;SAVE TTY DDB - WE WILL LIKELY LOSE CONTENTS OF DDB ; WHEN WE GO THROUGH DDB'S ETC., BELOW. MOVE TAC,TAC1 ;DEV NAME -> AC(TAC) PUSHJ PDP,DEVPHY ;LOOK FOR MATCH OF PHYSICAL NAMES - TAKES NAME - ; IN AC(TAC). USES AC(DEVDAT) TO CHAIN THROUGH DDB'S. SUCCESS IF + ; IN AC(TAC). USES AC(DDB) TO CHAIN THROUGH DDB'S. SUCCESS IF ; EXACT MATCH - E.G. LPT. JRST ASSG3 ;FAIL JRST ASSG4 ;MATCH FOUND -ASSG3: POP PDP,DEVDAT ;RESTORE TTY DDB +ASSG3: POP PDP,DDB ;RESTORE TTY DDB JRST NOTDEV ;TYPE ERROR MXDDDB==16. ASSG4: CAME T1,[SIXBIT /DSK/] ;IS THIS "ASSIGN DSK" JRST ASSG5 ;NO - EXCH DEVDAT,0(PDP) ;COLLECT TTY DDB - SAVE CURRENT DDB + EXCH DDB,0(PDP) ;COLLECT TTY DDB - SAVE CURRENT DDB PUSHJ PDP,CTEXT1 ;GET LOGICAL NAME ARG. MOVE TAC,TAC1 ;COPY TO AC(TAC) FOR DEVLG ROUTINE JUMPE TAC,ASSF1 ;NO LOG. NAME SPECIFIED @@ -3251,7 +3526,7 @@ ASSG4: CAME T1,[SIXBIT /DSK/] ;IS THIS "ASSIGN DSK" PUSHJ PDP,DEVLG ;IS THERE A MATCH ? JRST .+2 ;NO - GOOD - WE MAY USE NAME JRST ASSF0 ;YES - ERROR, DO NOT ASSIGN - POP PDP,DEVDAT ;RETRIEVE DDB ADDR + POP PDP,DDB ;RETRIEVE DDB ADDR PUSH PDP,TAC ;SAVE LOG. NAME MOVEI AC1,MXDDDB ;MAX # OF ASSIGNED DSK DDB'S ALLOWED HLRZ AC2,DSKDDB+DEVSER ;BEGIN LOOKING THROUGH @@ -3281,37 +3556,41 @@ ASSG5: ;PHYSICAL NAMES MATCH - AND NAME .NE. "DSK" ASSER1: JRST SYSERR -ASSER2: POP PDP,DEVDAT ;ADJUST STACK - MOVE DEVDAT,-2(PDP) ;GET TTY DDB ADR. +ASSER2: POP PDP,DDB ;ADJUST STACK + MOVE DDB,-2(PDP) ;GET TTY DDB ADR. JSP TAC,ERRMES - ASCIZ /?Too many disk DDB's + ASCIZ /Too many disk DDB's / - ;** COMCON.MAC ** PAGE 27 + ;ASSFIN ASSF0 ASSF1 ASSF2 LOGERR + +;** COMCON.MAC ** PAGE 27 ;DEVICE ASSIGNED, GIVE IT A LOGICAL NAME -ASSFIN: SETZM DEVLOG(DEVDAT) ;CLEAR LOGICAL NAME - EXCH DEVDAT,0(PDP) ;GET TTY DDB, SAVE DEVICE DDB +ASSFIN: SETZM DEVLOG(DDB) ;CLEAR LOGICAL NAME + EXCH DDB,0(PDP) ;GET TTY DDB, SAVE DEVICE DDB PUSHJ PDP,CTEXT1 ;GET LOG. NAME ARG. - IF ANY SKIPE TAC,TAC1 ;WAS THERE ANY ? PUSHJ PDP,DEVLG ;YES - IS IT IN USE ALREADY ? JRST ASSF1 ;NO - OR NO LOG NAME SPECFIED ASSF0: MOVEI TAC,LOGERR ;YES - PRINT ERROR - MOVE DEVDAT,-3(PDP) ;RESTORE TTY DDB !! + MOVE DDB,-3(PDP) ;RESTORE TTY DDB !! PUSHJ PDP,ERRMES ;TYPE ERROR MESSAGE MOVEI TAC,0 -ASSF1: POP PDP,DEVDAT ;RESTORE DDB FOUND IN DEVPHY: -ASSF2: MOVEM TAC,DEVLOG(DEVDAT) ;STORE LOG. NAME IN DDB - MOVE TAC1,DEVNAM(DEVDAT) ;PHYSICAL NAME - MOVE DEVDAT,-2(PDP) ;RESTORE TTY DDB +ASSF1: POP PDP,DDB ;RESTORE DDB FOUND IN DEVPHY: +ASSF2: MOVEM TAC,DEVLOG(DDB) ;STORE LOG. NAME IN DDB + MOVE TAC1,DEVNAM(DDB) ;PHYSICAL NAME + MOVE DDB,-2(PDP) ;RESTORE TTY DDB PUSHJ PDP,PRNAME JSP TAC,CONMES ASCIZ / Assigned / -LOGERR: ASCIZ /%Logical name was in use, / - ;** COMCON.MAC ** PAGE 28 +LOGERR: ASCIZ /Logical name was in use, / + ;DEASSI NOTDEV DEAER1 DEAER2 + +;** COMCON.MAC ** PAGE 28 ; "DEASSIGN DEVICE" - DEASSIGNS DEVICE FROM CONSOLE @@ -3325,20 +3604,20 @@ DEASSI: PUSHJ PDP,CTEXT1 ;GET DEVICE NAME POPJ PDP, NOTDEV: -DEAER1: MOVE DEVDAT,-2(PDP) ;RESTORE TTY DDB +DEAER1: MOVE DDB,-2(PDP) ;RESTORE TTY DDB JSP TAC,ERRMES - ASCIZ /?No such device + ASCIZ /No such device / -DEAER2: MOVE TAC1,DEVNAM(DEVDAT) ;PRINT PHYSICAL DEV NAME - MOVE DEVDAT,-2(PDP) ;RESTORE TTY DDB - PUSHJ PDP,INLMES - ASCIZ "?" +DEAER2: MOVE TAC1,DEVNAM(DDB) ;PRINT PHYSICAL DEV NAME + MOVE DDB,-2(PDP) ;RESTORE TTY DDB PUSHJ PDP,PRNAME JSP TAC,ERRMES - ASCIZ / Wasn't assigned + ASCIZ / wasn't assigned / - ;** COMCON.MAC ** PAGES 37-39 + ;DAYTIM RUNTIM + +;** COMCON.MAC ** PAGES 37-39 ; "DAYTIME" - PRINT TIME OF DAY @@ -3398,7 +3677,9 @@ RUNTIM: PUSHJ PDP,DECIN ;GET SECOND ARG IF THERE ASCIZ /) / POPJ PDP, - ;** COMCON.MAC ** PAGE 41 + ;ECOM + +;** COMCON.MAC ** PAGE 41 ; "EXAMINE LOC" - LOOKS AT CONTENTS OF LOC AND PRINTS IN OCTAL. ;IF LOC IS MISSING, NEXT LOC IS PRINTED IF PREVIOUS WAS E COMMAND. @@ -3429,7 +3710,9 @@ ECOM: SKIPGE USREXM ;WAS PREVIOUS D OR E COMMAND. A D COMMAND ? PUSHJ PDP,INLMES ;PRINT FINAL TAB ASCIZ / / JRST TPOPJ ;READJUST STACK AND RETURN - ;** COMCON.MAC ** PAGES 42-44 + ;DCOM DCOMA ECOMA CBLANK NOCOM + +;** COMCON.MAC ** PAGES 42-44 ; "DEPOSIT LH RH LOC" - DEPOSITS XWD LH,RH->LOC. ;IF LOC ARG. IS MISSING, ASSUME NEXT LOC IF PREVIOUS D, SAME LOC IF @@ -3460,7 +3743,7 @@ DCOM: PUSHJ PDP,OCTIN ;GET LH DCOMA: ECOMA: JSP TAC,ERRMES - ASCIZ /?Out of bounds + ASCIZ /Out of bounds / ;"BLANK" OR NO ALPHANUMERIC BEFORE BREAK CHAR COMMAND @@ -3472,10 +3755,10 @@ CBLANK: CAIE TEM,12 ;WAS BREAK LF ? ;COMMAND NOT IN COMMAND DIRECTORY -NOCOM: PUSHJ PDP,INLMES - ASCIZ "?" - JRST COMERR ;NO, APPEND ? TO WHAT HE TYPED IN - ;** COMCON.MAC ** PAGE 45 +NOCOM: JRST COMERR ;NO, APPEND ? TO WHAT HE TYPED IN + ;CFINI FDV4 FDV5 FDV2 FDV1 FDV6 FDV3 + +;** COMCON.MAC ** PAGE 45 ; "FINISH DEVICE" - CLOSES, RELEASES, AND DEASSIGNS DEVICE. ; FINISHES LOGICAL "DEVICE" IF ONE EXISTS @@ -3493,25 +3776,25 @@ CFINI: PUSHJ PDP,CTEXT1 ;GET "DEVICE" ARG. FDV4: PUSHJ PDP,DEVPHY ;LOOK FOR MATCH OF PHYSICAL NAME JRST NOTDEV ;NO MATCH - CAIN DEVDAT,DSKDDB ;HAVE WE FOUND THE PROTOTYPE + CAIN DDB,DSKDDB ;HAVE WE FOUND THE PROTOTYPE ; DSK DDB IN LOOKING FOR A MATCH TO PHYSICAL "DSK" ? AOBJN PDP,DEVPH1 ;YES - RESTORE OLD PD POINTER W/RETURN + SEARCH ; FOR AN ACTIVE DDB - HLRZ TAC,DEVNAM(DEVDAT) ;LOOK AT PHYSICAL NAME OF MATCH + HLRZ TAC,DEVNAM(DDB) ;LOOK AT PHYSICAL NAME OF MATCH CAIN TAC,(SIXBIT /DSK/) ;="DSK" ? - TLO DEVDAT,-1 ;YES - FLAG DEVDAT -FDV5: MOVEM DEVDAT,USRFDV ;SAVE DDB ADDR - MOVE DEVDAT,-2(PDP) ;COLLECT TTY DDB ADDRESS - IT LIES BENEATH RETURN + TLO DDB,-1 ;YES - FLAG DDB +FDV5: MOVEM DDB,USRFDV ;SAVE DDB ADDR + MOVE DDB,-2(PDP) ;COLLECT TTY DDB ADDRESS - IT LIES BENEATH RETURN ; ADDR AND DISP FOR COMMAND. JSP TAC1,MSTART ;SET UP MONITOR JOB JSP TAC,MONSTR ;SET UP AC(PDP)+AC(PROG)(=AC(JDAT)) MOVE ITEM,USRFDV ;GET THAT SPECIAL DDB ADDR FDV2: MOVE UCHN,USRHCU -FDV1: HRRZ DEVDAT,USRJDA(UCHN) ;GET NEXT DEVICE +FDV1: HRRZ DDB,USRJDA(UCHN) ;GET NEXT DEVICE MOVSI UUO,071000 ;SET UP RELEASE UUO DPB UCHN,PUUOAC ;WITH CHANNEL NUMBER PUSH PDP,UCHN - CAIE DEVDAT,(ITEM) ;MATCH ? + CAIE DDB,(ITEM) ;MATCH ? JRST FDV6 ;NO - LOOK AT NEXT CHANNEL LOWER JSP UCHN,DOXUUO ;YES - EXECUTE THE RELEASE UUO FROM UUO ;THE MONITOR.. USES THIS LOCATION TO POINT TO @@ -3532,7 +3815,9 @@ FDV3: TRNN ITEM,-1 ;END OF CHAIN JRST FDV2 ;YES HLRO ITEM,DEVSER(ITEM) ;NO - KEEP CHAINING THROUGH DDB'S, STILL LOOKING JRST FDV3 - ;** COMCON.MAC ** PAGE 46 + ;FREDEV FREDV2 FREDV1 PPN SNA + +;** COMCON.MAC ** PAGE 46 ; "RESOURCES" - PRINT OUT # FREE DISK BLOCKS (= # FREE TRACKS * 8) @@ -3561,8 +3846,7 @@ FREDV1: ADD T,[1,,] ;INCREMENT ABSLOC POINTER IN .GETLOC ARGUMENTS LSH TAC,3 ;MULITPLY # FREE TRACKS BY 8 = # FREE 128.-WORD BLOCKS PUSHJ PDP,RADX10 PUSHJ PDP,INLMES - ASCIZ / -LPT:,TTY:/ + ASCIZ /,LPT:,TTY:/ JRST CRLF ;CONVERT SNAME TO PROJECT,PROGRAMMER NUMBER @@ -3590,7 +3874,9 @@ SNA: PUSHJ PDP,PJPGNO ;GET PROJ,PROG PUSHJ PDP,PPTOSN ;CONVERT IT TO A SNAME MOVE TAC1,TAC JRST PRNAME ;AND PRINT IT - ;** COMCON.MAC ** PAGES 49+50 + ;CTEXT CTEXT1 CTEX0 CTEX1 CTEX CTEXA CTXCNC + +;** COMCON.MAC ** PAGES 49+50 ;ROUTINE TO RETURN NEXT ALPHANUMERIC STRING ; IN COMMAND LINE (SIXBIT) @@ -3636,7 +3922,9 @@ CTEXA: CAIE TEM,": ;DEVICE NAME CTXCNC: MOVSI TAC1,(SIXBIT /HAL/) ;GET HERE VIA CTEX: OR SKIPS: MOVEI TEM,12 ; I.E. -- ALWAYS A LEVEL DOWN FROM CTEXT: JRST TPOPJ ;THAT'S WHY WE CAN TO THIS W/RELATIVE IMPUNITY - ;** COMCON.MAC ** PAGES 51+52 + ;SKIPS SKIPS1 SKIPSA SKIPS2 SKIPS3 COMERP COMERA COMERR COMERL COMER1 + +;** COMCON.MAC ** PAGES 51+52 ;ROUTINE TO IGNORE LEADING SPACES, TABS, AND NULLS ;ALSO CLEARS TAC1 @@ -3672,26 +3960,30 @@ COMERA: PUSHJ PDP,GETCHR ;MOVE UP A CHAR ; PUSHJ PDP,COMERR COMERR: - MOVE T,TITAKR(DEVDAT) + MOVE T,TITAKR(DDB) PUSHJ PDP,TRESCN COMERL: PUSHJ PDP,GETCHR - CAMN T,TITAKR(DEVDAT) + CAMN T,TITAKR(DDB) JRST COMER1 PUSHJ PDP,OUTCHS JUMPN TEM,COMERL COMER1: PUSHJ PDP,SETBFI - AOS TISYNC(DEVDAT) + AOS TISYNC(DDB) MOVEI TEM,"? PUSHJ PDP,OUTCHS JRST CRLF - ;** COMCON.MAC ** PAGES 53-55 + ;ERRMES CRLF CONMES CONMS1 CON0 CONOUT INLMES PRQM PRSPC NOTENF PRCRCC PRPER + +;** COMCON.MAC ** PAGES 53-55 ;ROUTINE TO PRINT A COMMAND ERROR MESSGE -ERRMES: MOVNI ITEM,1 - JRST CONMES +ERRMES: MOVNI ITEM,1 + PUSHJ PDP,CONMES + SKIPA TAC,[[ASCII/? +/]] ;ROUTINE TO PRINT CARRIAGE RETURN-LINEFEED ;CALL: PUSHJ PDP,CRLF @@ -3737,7 +4029,7 @@ PRSPC: MOVEI TAC,[ASCIZ / /] ;CALL: PUSHJ PDP,NOTENF NOTENF: JSP TAC,ERRMES - ASCIZ /?Too few arguments + ASCIZ /Too few arguments / ;ROUTINE TO PRINT CRLF ^C CRLF @@ -3755,7 +4047,9 @@ PRCRCC: JSP TAC,CONMES PRPER: JSP TAC,CONMES ASCIZ /./ - ;** COMCON.MAC ** PAGE 57 + ;DECIN1 DECIN OCTIN ANYRIN OCT0 + +;** COMCON.MAC ** PAGE 57 ;ROUTINE TO READ CONSOLE AND CONVERT ANY RADIX # ;CALL: MOVE TAC1,DESIRED RADIX @@ -3792,35 +4086,39 @@ OCT0: CAIGE TEM,175 ;ALTMODES (175 OR 176) ? ADD TAC1,TEM PUSHJ PDP,GETCHR ;GET NEXT CHAR JRST OCT0 - ;** COMCON.MAC ** PAGE 56 + ;DEASG DEASTY DEA1 + +;** COMCON.MAC ** PAGE 56 ;ROUTINE TO DEASSIGN A DEVICE -;CALL: MOVE DEVDAT,DEV DATA BLOCK +;CALL: MOVE DDB,DEV DATA BLOCK ; PUSHJ PDP,DEASG ; ERROR - NOT PREVIOUSLY ASSIGNED ; OK RETURN W/DEVICE DEASSIGNED -DEASG: SETZM DEVLOG(DEVDAT) ;CLEAR LOGICAL NAME - MOVE TAC1,DEVMOD(DEVDAT) ;GET DEVICE CHAR. +DEASG: SETZM DEVLOG(DDB) ;CLEAR LOGICAL NAME + MOVE TAC1,DEVMOD(DDB) ;GET DEVICE CHAR. TRNE TAC1,ASSCON ;IS DEV ASSIGNED-BY-CONSOLE AOS (PDP) MOVEI TAC1,ASSCON ;SET UP ASSIGNED-BY-CONSOLE BIT FOR RELEA6 JRST RELEA6 ;RELEASE DDB ;ROUTINE TO DEASSIGN ALL DEVICES EXCEPT LOGICAL TTY -;CALL: MOVE DEVDAT,ADR. OF DEVICE NO T BE DEASSIGNED +;CALL: MOVE DDB,ADR. OF DEVICE NO T BE DEASSIGNED ; PUSHJ PDP,DEASTY -DEASTY: PUSH PDP,DEVDAT ;SAVE TTYDDB ADDR - HLRZ DEVDAT,DEVLST ;SEARCH ALL DDB'S -DEA1: CAIE DEVDAT,@(PDP) ;IS THIS SPECIAL ? +DEASTY: PUSH PDP,DDB ;SAVE TTYDDB ADDR + HLRZ DDB,DEVLST ;SEARCH ALL DDB'S +DEA1: CAIE DDB,@(PDP) ;IS THIS SPECIAL ? PUSHJ PDP,DEASG ;NO - TRY TO DEASSIGN IT JFCL ;IF WE FAIL, WHO CARES ? - HLRZ DEVDAT,DEVSER(DEVDAT) - JUMPN DEVDAT,DEA1 - POP PDP,DEVDAT ;RESTORE TTY DDB ADDR + HLRZ DDB,DEVSER(DDB) + JUMPN DDB,DEA1 + POP PDP,DDB ;RESTORE TTY DDB ADDR POPJ PDP, ;AND RETURN - ;** COMCON.MAC ** PAGE 58 + ;PP0 PJPGNO PP1 + +;** COMCON.MAC ** PAGE 58 ;GET PROJECT-PROGRAMMER NUMBERS ;CALL: PUSHJ PDP,PJPGNO @@ -3855,7 +4153,9 @@ PP1: PUSHJ PDP,SKIPS CAIN TEM,"] ;IS USUAL ENDING "]" ? PUSHJ PDP,GETCHR ;YES, SKIP IT SO FINAL "]" IS OPTIONAL POPJ PDP, - ;** COMCON.MAC ** PAGES 59+60 + ;PRTIME PR0 PR1 PRTIM1 PRT2 + +;** COMCON.MAC ** PAGES 59+60 ;ROUTINE TO PRINT TIME AS HOURS, MINUTES, SECONDS, AND HUNDRETHS ; FORMAT IS HH:MM:SS.HH @@ -3906,7 +4206,9 @@ PRT2: MOVEI TEM,"0 ;PRINT DEC NO. IN 2 PLACES CAIGE TAC,10. XCT CONOUT ;PUT OUT LEADING 0 IF < 10 JRST RADX10 - ;** COMCON.MAC ** PAGES 61+62 + ;PRTSEG SEGSIZ GETMIN + +;** COMCON.MAC ** PAGES 61+62 ;ROUTINE TO PRINT SIZE OF LOGICAL SEGMENT (LOW OR HIGH) ;CALL: MOVE ITEM,(0=LOW SEG, 1=HIGH SEG) @@ -3927,7 +4229,7 @@ SEGSIZ: HLRZ TAC1,JBTADR(ITEM) LSH TAC1,-12 ;CONVERT TO #K-1 AOJA TAC1,CPOPJ ;NOW MAKE IT RIGHT -GETMIN: PUSH PDP,DEVDAT ;SAVE TTY DDB ADDR +GETMIN: PUSH PDP,DDB ;SAVE TTY DDB ADDR PUSH PDP,IOS ;DISPATCH ADDRESS MOVEI TAC,JOBDA ;LENGTH OF JOBDAT AREA PUSHJ PDP,CORE0 ;ASSIGN JOBDA WORD - AND WE HAD BETTER @@ -3935,9 +4237,11 @@ GETMIN: PUSH PDP,DEVDAT ;SAVE TTY DDB ADDR ; ONE ALREADY JFCL POP PDP,IOS - POP PDP,DEVDAT + POP PDP,DDB POPJ PDP, - ;** COMCON.MAC ** PAGE 63 + ;GETWRD + +;** COMCON.MAC ** PAGE 63 ;ROUTINE TO GET 1 WORD FROM USER AREA WHICH CAN BE IN LOW OR HIGH SEG ;CALL: HRR UUO,USER ADDRESS @@ -3950,7 +4254,9 @@ GETWRD: HLRZ TAC,JBTADR POPJ PDP, ;ERROR RETURN IF LOWSEG ONLY .UMOVE TAC,(UUO) JRST CPOPJ1 - ;** COMCON.MAC ** PAGE 65 + ;SGSET SGSET1 + +;** COMCON.MAC ** PAGE 65 SGSET: JUMPE TAC1,NOTENF ;GOT TO HAVE A DEVICE NAME MOVEM TAC1,SGADEV @@ -3979,7 +4285,9 @@ SGSET1: MOVEM TAC1,SGANEW ;SGANEW=15 ; GUARANTEE LH=0 - SINCE IT WILL BE ADDED ; TO STARTING ADDRESS (IF A RUN COMMAND) JRST MSTART - ;** COMCON.MAC ** PAGE 66 + ;GETARG + +;** COMCON.MAC ** PAGE 66 ;ROUTINE TO PICK UP ARGUMENTS FOR RUN UUO. ; THIS ROUTINE DOES THE SAME THING AS SGSET, EXCEPT THAT ARGUMENTS @@ -4011,7 +4319,9 @@ GETARG: HRR UUO,TAC ;MOVE ADR OF ARG LIST TO AC(UUO) PUSHJ PDP,GETWD1 ;CORE ARG OR 0 [HIGHEST LOC OR 0] HRRZM TAC,SGANEW JRST SG2A ;GO SET UP LOWER CORE AND RETURN - ;** COMCON.MAC ** PAGES 67-69 + ;SAVJOB SVLUP SVLP1 SVLP2 SVLP2A SVLP3 SVLP4 SVLP5 SVLP6 SVLP7 SAVFIN SAVERR + +;** COMCON.MAC ** PAGES 67-69 ;SAVE JOB AREA ON RETREIVABLE STORAGE ; NO ATTEMPT IS MADE TO SAVE STATUS OF IO DEVICES, JOBPDP, @@ -4069,7 +4379,7 @@ SVLP2: SKIPE (ITEM) ;IS THIS A DATA WORD? SUBI DAT,MONBUF ;ALL OF MONBUF CHECKED - FORM # WORDS ;IN MONBUF TO BE OUTPUT (SAVED) MOVNI DAT,(DAT) ;FORM .IOT POINTER -SVLP2A: ADDM DAT,DEVCNT(DEVDAT) ;UPDATE NEG. WORD COUNT OF FILE +SVLP2A: ADDM DAT,DEVCNT(DDB) ;UPDATE NEG. WORD COUNT OF FILE HRLI DAT,MONBUF MOVS DAT,DAT TLNE DAT,-1 ;IS THERE REALLY ANYTHING TO SEND? @@ -4104,8 +4414,8 @@ SVLP6: MOVSM AC1,(DAT) ;STORE IOWD SVLP7: HRLI TEM,254000 ;PUT JRST C(JOBSA) AT END OF FILE HRROI DAT,TEM ;FORM POINTER WORD FOR .IOT .IOT SGCHN,DAT ;OUT GOES LAST WORD - SOS DEVCNT(DEVDAT) ;ONE MORE WORD TO COUNT - MOVNS DEVCNT(DEVDAT) ;MAKE THAT WORD COUNT POSITIVE + SOS DEVCNT(DDB) ;ONE MORE WORD TO COUNT + MOVNS DEVCNT(DDB) ;MAKE THAT WORD COUNT POSITIVE ; DEVCNT CONTAINS EITHER A -BLOCK OR +WORD COUNT POP PDP,DAT ;RESTORE STACK @@ -4116,7 +4426,9 @@ SAVFIN: PUSHJ PDP,SGREL SAVERR: PUSHJ PDP,SGRLE1 ;RELEASE DEVICE, FIND TTY, AND PRINT ? JSP TAC,PHOLD ;PRINT MESSAGE AND STOP JOB ASCIZ /Protection failure/ - ;** COMCON.MAC ** PAGE 70 + ;GETJOB RUNJOB + +;** COMCON.MAC ** PAGE 70 GETJOB: JSP TAC1,SG1 PUSHJ PDP,GETJB ;GET OUR JOB - AND RETURN IF THERE ARE NO ERRORS @@ -4128,7 +4440,9 @@ GETJOB: JSP TAC1,SG1 RUNJOB: JSP TAC1,SG1 ;SETUP AC'S,SETUP LOWER CORE JRST URUN1 ;LH OF PC WORD=0 - ;** COMCON.MAC ** PAGE 71 + ;URUN URUN1 + +;** COMCON.MAC ** PAGE 71 ;RUN UUO ;CALL: MOVE AC,[XWD N,D] @@ -4160,14 +4474,16 @@ URUN1: PUSHJ PDP,GETJB ;GET BOTH LOW + HIGH SEGMENTS HRLI TAC1,USRMOD ;SET USER MODE BIT MOVEM TAC1,(PDP) JRST USRXIT - ;** COMCON.MAC ** PAGES 73-74 + ;SG1 SG2 SG2A SG3 SG4 SGERRA + +;** COMCON.MAC ** PAGES 73-74 ;ROUTINE TO SETUP ACS, RESET IO, AND SETUP LOWER CORE ; LOCATIONS FOR SAVE AND GET ; SGADMP SET TO IOWD FOR THIS CORE SIZE ;CALL: JSP TAC1,SG1 ; ALWAYS RETURN HERE, UNLESS DEVICE NOT FOUND -; DEVDAT SETUP TO DEVICE DATA BLOCK AND INIT'ED +; DDB SETUP TO DEVICE DATA BLOCK AND INIT'ED SG1: JSP TAC,MONSTR ;SETUP PROG,PDP ; PUT TAC1 ON END OF PD LIST (EXEC MODE PC, SO ERROR MESSAGES WILL @@ -4210,10 +4526,12 @@ SGERRA: MOVEI TAC,NSDERR ;ERROR CODE IN CASE RUN UUO (NO SUCH DEVICE) ; OR FIND TTY AND PRINT ? JSP TAC,PHOLD ASCIZ /No such device/ - ;** COMCON.MAC ** PAGES 75-80 + ;GETJB + +;** COMCON.MAC ** PAGES 75-80 ;ROUTINE TO GET FILE FROM DEVICE -;CALL: AC'S PROG, PDP,DEVDAT SETUP +;CALL: AC'S PROG, PDP,DDB SETUP ; PUSHJ PDP,GETJB ; RETURN ONLY IF EVERYTHING OK @@ -4241,12 +4559,13 @@ GETJB: ; A RUN UUO, SO ERRORS WILL NOT TRY TO RETURN TO USER MOVE TAC,USRPD1 ;TELL USER TOO ! .UMOVM TAC,JOBPD1 - ;** COMCON.MAC ** PAGES 75-80 + ;EXPAND + +;** COMCON.MAC ** PAGES 75-80 ;READ IN USER FILE PIECE BY PIECE USING MONBUF TO READ DATA -;EXPAND: - HLRE AC3,SGALEN ;COMPUTE HIGHEST LEGAL ADDRESS THAT WE WOULD HAVE +EXPAND: HLRE AC3,SGALEN ;COMPUTE HIGHEST LEGAL ADDRESS THAT WE WOULD HAVE ; HAVE TO REFERENCE WERE WE IN USER CORE DOING THE 10-50 ; XPAND. (NOTE: FOR SOME SAVE'ED FILES, THE FILE LENGTH ; WILL BE ROUNDED UP TO THE NEXT INTERVAL OF 8 128-WORD @@ -4264,7 +4583,9 @@ GETJB: CAILE TAC,JOBDDT ;JOBDDT=74 JRST EXPND1 JRST SYSERR ;???? - ;** COMCON.MAC ** PAGES 75-80 + ;EXPND1 EXPLP1 EXPLP2 + +;** COMCON.MAC ** PAGES 75-80 EXPND1: PUSHJ PDP,CHKADR ADDI TAC,1 ;SET UP A .ACCESS WORD @@ -4294,7 +4615,9 @@ EXPLP2: MOVNI AC2,MBFSIZ .IOT UPRGO,1(PDP) ;WRITE THESE WORDS OUT JUMPG AC1,EXPLP2 ;MORE TO READ ? - ;** COMCON.MAC ** PAGES 75-80 + ;EXPL3 + +;** COMCON.MAC ** PAGES 75-80 ;AS WE ARE MERRILY GOING ALONG HERE, WE MAY WELL BE EXPANDING THE ; AMOUNT OF CORE ASSIGNED TO OUR SOLICITOUS LITTLE USER, SO THAT @@ -4331,7 +4654,9 @@ EXPL3: MOVNI AC2,MBFSIZ JUMPG AC1,EXPL3 POP PDP,MONBUF ;RESTORE MONBUF JRST EXPLP1 - ;** COMCON.MAC ** PAGES 75-80 + ;EXPLP4 TOOLOW SGDO2 LOWFIN SGDOER SGREL + +;** COMCON.MAC ** PAGES 75-80 EXPLP4: .UMOVE AC1,JOBSDD ;=114 @@ -4384,7 +4709,9 @@ SGREL: SKIPN USRJDA ;HAS CHANNEL BEEN RELEASED ALREADY ? .IOPOP SGCHN, POP PDP,IOS JRST TTYFUW ;FIND TTY - ;** COMCON.MAC ** PAGE 81 + ;CKIOWD CKSARG NROOM1 NOROOM + +;** COMCON.MAC ** PAGE 81 ;ROUTINE TO CHECK USER SUPPLIED CORE ARG AND ; CHECK TO SEE IF 0 OR >= IOWD USED TO SAVE OR GET FILE @@ -4423,7 +4750,9 @@ NOROOM: MOVEI TAC,NECERR ;ERROR CODE IN CASE THIS IS RUN UUO (NOT ENOUGH CORE) PUSHJ PDP,DECP1 ;ADD 1 PRINT PRINT DECIMAL JSP TAC,PHOLD ;STOP JOB ASCIZ /K of core needed/ - ;** COMCON.MAC ** PAGES 82+83 + ;GETCOR NOFILE + +;** COMCON.MAC ** PAGES 82+83 GETCOR: PUSH PDP,TAC ;SAVE CORE ARG IN CASE OF ERROR HRRZ ITEM,TAC @@ -4445,8 +4774,10 @@ NOFILE: HLLZ TAC1,SGAEXT ;PRINT X10N PUSHJ PDP,PRNAME JSP TAC,PHOLD ;STOP JOB - ASCIZ / Not found/ - ;** COMCON.MAC ** PAGE 84 + ASCIZ / not found/ + ;SGRELL SGRELE SGRLE2 SGRLE1 + +;** COMCON.MAC ** PAGE 84 ;ROUTINE TO RELEASE DEVICE ON AN ERROR AND CHECK TO SEE IF WE ; ERRED IN MONITOR OR USER UUO @@ -4487,8 +4818,13 @@ SGRLE2: PUSH PDP,USRPD1 ;PUT RETURN AT END OF PDLIST -- THEN RETURN THERE SGRLE1: PUSHJ PDP,SGREL ;RELEASE S/G-DEVICE AND FIND TTY JSP TAC,CONMES - ASCIZ /?/ - ;** COMCON.MAC ** MISC ROUTINES -- CHKADR AND SPRGNM AND TNAME + ASCIZ /? +/ + ;CHKADR SPRGNM TNAME TNAME2 TNAME1 + +;** COMCON.MAC ** + +;MISC ROUTINES -- CHKADR AND SPRGNM AND TNAME ;ROUTINE TO MAKE SURE THAT THE REST OF OUR SYSTEM ; KNOWS WHETHER CORE IS EXPANDING OR NOT AS WE BUSILY EXPAND @@ -4555,7 +4891,11 @@ TNAME2: .OPEN UPRGO,FILNAM ;WE WANT A SUCCESS RETURN TNAME1: .GENSYM TAC, ;COLLECT A SYSTEM GENERATED NAME MOVEM TAC,FILNM2 ;AND TRY AGAIN JRST TNAME2 - ;** COMCON.MAC ** MISC ROUTINES -- PRTIM. + ;PRTIM. + +;** COMCON.MAC ** + +;MISC ROUTINES -- PRTIM. ;ROUTINE TO INTERFACE "TIME" ROUTINE AND DEC ROUTINE, PRTIME: (PRINTS TIME ; IN HH:MM:SS.DD FOR ARG IN JIFSECS). @@ -4574,7 +4914,9 @@ PRTIM.: FSC TAC,233 ;FLOAT # 4.069 MICROSECOND UNITS LDB TAC,[POINT 27,TAC1,35,] ; AND COLLECT BOTTOM 27 BITS PUSHJ PDP,PRTIME JRST INLMES ;PRINT TRAILING MESSAGE AFTER CALL - ;** COMMON.MAC ** + ;CORMAX MONTAB CPOPJ2 CPOPJ1 CPOPJ TPOPJ1 TPOPJ IPOPJ1 IPOPJ SYSPP PUUOAC PIOMOD PDEVI PDEVO + +;** COMMON.MAC ** ;** PAGE 2 ** @@ -4630,13 +4972,15 @@ SYSPP: SIXBIT /DECSYS/ PUUOAC: POINT 4,UUO,12, ;UUO AC FIELD PIOMOD: POINT 4,IOS,35, ;MODE BITS -PDEVI: POINT 4,DEVCHN(DEVDAT),3, -PDEVO: POINT 4,DEVCHN(DEVDAT),7, +PDEVI: POINT 4,DEVCHN(DDB),3, +PDEVO: POINT 4,DEVCHN(DDB),7, ;** PAGE 48 ** SAVDMP=='SAV - ;** CORE1 .MAC ** PAGE 2 + ;CORUUO CORU1 CORERR ZERCOR + +;** CORE1.MAC ** PAGE 2 ;CORE UUO ;CALL: MOVEI AC,HIGHEST REL. ADR. DESIRED IN LOW SEG @@ -4666,7 +5010,9 @@ CORERR: POP PDP,TAC ZERCOR: MOVE TAC,CORMAX ;# BLOCKS AVAILABLE LSH TAC,-12 JRST STOTAC - ;** CORE1 .MAC ** PAGES 8-18 + ;CORE0 CORE1 + +;** CORE1.MAC ** PAGES 8-18 ;CALL: MOVE TAC,HIGHEST LEGAL ADDRESSABLE LOC. DESIRED ; MOVEI ITEM,(0=LOWCORE, 1=HIGH CORE) @@ -4690,10 +5036,12 @@ CORE1: ; YES PUSHJ PDP,RTV ;RESET "TIME" VARIABLES .UCLOSE UPRGO, ;DESTROY INFERIOR - ; THEN CODE AT CORE1I SETS JBTbDR ENTRY TO 0 SINCE + ; THEN CODE AT CORE1I SETS JBTDR ENTRY TO 0 SINCE ; WE ALREADY KNOW THAT AC(TAC)=0 JRST CORE1I - ;** CORE1 .MAC ** PAGE 8-18 + ;CORE1B CORE1I CORE1L + +;** CORE1.MAC ** PAGE 8-18 ;COMES HERE IF OLD ASSIGNMENT .EQ. 0 AND NEW ASSIGNMENT .NE. 0 @@ -4708,7 +5056,9 @@ CORE1I: MOVSI PROG,(TAC) MOVEM PROG,JBTADR(ITEM) CORE1L: PUSHJ PDP,SETREL JRST CPOPJ1 - ;** CORE1 .MAC ** PAGES 8-18 + ;CORGET + +;** CORE1.MAC ** PAGES 8-18 CORGET: JUMPE TAC,CPOPJ1 ;IS REQUESTED CORE=0, IF SO, DON'T BOTHER @@ -4733,7 +5083,9 @@ CORGET: JRST SYSERR MOVSI PROG,1777 MOVEM PROG,JBTADR ;WE KNOW WE HAVE 1K OF LOW CORE AT THIS POINT - ;** CORE1 .MAC ** PAGES 8-18 + ;CORE1F + +;** CORE1.MAC ** PAGES 8-18 ;WE ARRIVE HERE HAVING MADE THE DECISION THAT THE CURRENT ASSIGNMENT OF CORE ; WILL NEEDS CHANGE THE FIRST ILLEGAL ADDRESS OF OUR INFERIOR. @@ -4747,7 +5099,9 @@ CORE1F: IORI TAC,1777 .USET UPRGO,[.SMEMT,,TAC] SUBI TAC,1 JRST CORE1I - ;** CORE1. MAC ** MISC + ;RTV + +;** CORE1.MAC ** MISC ;ROUTINE TO RESET "TIME" VAIABLE FOR PROCEDURE ON CHANNEL UPRGO, THIS ; ROUTINE CALLED JUST BEFORE PROCEDURE TO BE DESTROYED (AT "CORE 0" TIME). @@ -4766,7 +5120,9 @@ RTV: ADDM PROG,TRTPIT ;TO BE DESTROYED. THUS TRTPIT MUST BE DECREMENTED BY THE RUN TIME SETZM TRTIT ; FOUND AT THAT MOMENT. POPJ PDP, - ;** ERRCON.MAC ** PAGES 1+2 + ;APRILM APRIL1 APRILR APRPDL APRSCD ADRERR + +;** ERRCON.MAC ** PAGES 1+2 ;APR-DETECTED ERRORS ; PUSHDOWN OVERFLOW AND ILLEGAL MEMORY @@ -4796,20 +5152,22 @@ APRILR: JSP TAC,ERRPTU JRST APRSCD APRPDL: JSP TAC,ERRPTU - ASCIZ /PDL ov/ + ASCIZ /Pdl ov/ APRSCD: MOVE TAC1,APRPC JRST PCPNT ;ADDRESS CHECK ERROR -;DEVDAT MUST BE SET UP TO POINT TO OFFENDING DEVICE +;DDB MUST BE SET UP TO POINT TO OFFENDING DEVICE ADRERR: JSP TAC,ERRPTU ASCIZ /Address check for / JRST DEVEXC ;PRINT "DEVICE XXX; UUO AT USER/EXEC YYY" ; THEN STOP JOB AND FLAG AS AN ERROR STOP. - ;** ERRCON.MAC ** PAGES 3+4 + ;ILLINP ILLMOD IOIERR + +;** ERRCON.MAC ** PAGES 3+4 ;INPUT UUO FOR OUTPUT DEVICE @@ -4828,9 +5186,11 @@ ILLMOD: JSP TAC,ERRPTU ;IO UUO TO USER CHANNEL W/NO PREVIOUS INIT OR OPEN IOIERR: JSP TAC,ERRPTU - ASCIZ /IO to unassigned channel/ + ASCIZ \I/O to unassigned channel\ JRST UUOPCP - ;** ERRCON.MAC ** PAGES 5+6 + ;SYSERR UUOERR ILLINS HALTI DEVEXC + +;** ERRCON.MAC ** PAGES 5+6 ;SYSTEM ERROR @@ -4854,16 +5214,16 @@ ILLINS: HLRZ TAC,UUO CAIN TAC,254200 ;A JRST 4, ? JRST HALTI ;YES JSP TAC,ERRPTU ;NO - ASCIZ /Ill inst./ + ASCIZ /Illegal instruction/ JRST UUOPCP -HALTI: JSP TAC,ERRPTU - ASCIZ /Halt/ - SOS TAC1,USRPD1 ;UUO PC = LOC OF HALT+1 - PUSHJ PDP,PCP ;PRINT "AT USER XXX" - PUSHJ PDP,INLMES +HALTI: PUSHJ PDP,INLMES + ASCIZ /Halt at user / + SOS TAC,USRPD1 ;UUO PC = LOC OF HALT+1 + PUSHJ PDP,OCTPNT ;PRINT PC + PUSHJ PDP,INLMES ASCIZ / - +^C ./ HRRM UUO,USRPD1 ;SAVE EFFECTIVE ADDR PUSHJ PDP,TTYSTC @@ -4877,24 +5237,26 @@ HALTI: JSP TAC,ERRPTU DEVEXC: PUSHJ PDP,ERNAM JRST EXCALP - ;** ERRCON.MAC ** PAGES 8+9 + ;ERRPTU ERRDEV UUOMES UUOPCP PCPNT EXCALP PCSTOP + +;** ERRCON.MAC ** PAGES 8+9 ;COMMON ERROR MESSAGE SETUP ROUTINE ;CALL: JSP TAC,ERRPTU ; ASCIZ /MESSAGE/ -; AC(DEVDAT) SAVED IN 0(PDP) +; AC(DDB) SAVED IN 0(PDP) ; AC(DAT) SAVED IN -1(PDP) ERRPTU: -ERRDEV: PUSH PDP,DAT - PUSH PDP,DEVDAT - PUSH PDP,TAC - MOVE PROG,JBTADR - PUSHJ PDP,TTYFNU - PUSHJ PDP,INLMES - ASCIZ /? -?/ - JRST INLMES ;PRINT CALLER REQUESTED MESSAGE AND RETURN +ERRDEV: PUSH PDP,DAT + PUSH PDP,DDB + PUSH PDP,TAC + MOVE PROG,JBTADR + PUSHJ PDP,TTYFNU + PUSHJ PDP,INLMES + ASCIZ /?Error in job / + PUSHJ PDP,PJOB + JRST INLMES ;PRINT CALLER REQUESTED MESSAGE AND RETURN ;ROUTINE TO PRINT UUO PC AND STOP JOB ; IF IN USER MODE PC WILL PRINT AS "AT USER XXX" @@ -4926,16 +5288,18 @@ EXCALP: PUSHJ PDP,INLMES SUBI TAC1,1 PUSHJ PDP,PCP PCSTOP: PUSHJ PDP,HOLD ;STOP JOB - POP PDP,DEVDAT ;RETURNS ONLY IF AT "INTERRUPT LEVEL"; + POP PDP,DDB ;RETURNS ONLY IF AT "INTERRUPT LEVEL" ; I.E. FROM COMMAND SCANNER OR FROM APR INTERRUPT JRST TPOPJ ;RETURN AFTER REMOVING STACKED INFO STORED AT ERRPTU: - ;** ERRCON.MAC ** PAGE 10 + ;XMODE UMODE PCP OCTPNT OCTP1 DECP1 RADX10 EIGHT PRTOCT PRTDIG PRTDG1 PRTNUM + +;** ERRCON.MAC ** PAGE 10 ;ROUTINE TO PRINT PC AS "EXEC XXX" OR "USER XXX" ;CALL: MOVE TAC1,PC TO PRINT(LH(FLAGS) ; PUSHJ PDP,PCP -XMODE: ASCIZ / at exec PC / +XMODE: ASCIZ / at Exec PC / UMODE: ASCIZ / at user PC / @@ -4989,10 +5353,12 @@ PRTDG1: IDIVI TAC,(TEM) ;DIVIDE BY 10 HLRZ TAC,(PDP) ;GET LAST # PRTNUM: MOVEI TEM,60(TAC) ;PUT CHAR IN CHAR AC (TEM=CHREC) JRST OUTCHS ;OUTPUT CHAR - ;** ERRCON.MAC ** PAGE 11 + ;ERNAM PRNAME + +;** ERRCON.MAC ** PAGE 11 ;ROUTINE TO PRINT "DEVICE XXX" -;CALL: PUSH PDP,DEVDAT +;CALL: PUSH PDP,DDB ; PUSHJ PDP,ERNAM ERNAM: PUSHJ PDP,INLMES @@ -5011,7 +5377,9 @@ PRNAME: ;PRINT SIXBIT NAME IN AC(TAC1) MOVEI TEM,40(TAC) ;MAKE IT ASCII PUSHJ PDP,OUTCHS JRST PRNAME - ;** ERRCON.MAC ** MISC + ;TTYNA TPLNA ERRAVL + +;** ERRCON.MAC ** MISC ;TNM DEVICE FAILED DURING ATTEMPTED .OPEN ; MUST BE ILLEGAL OR IN USE AS A CONSOLE TTY @@ -5038,7 +5406,9 @@ ERRAVL: LDB TAC,PDEVO ;FREE UP CHANNEL DPB TAC,PDEVO MOVEI TAC,(TAC1) JRST ERRPTU - ;** JOBDAT.MAC ** + ;JOBDAC JOBDPD JOBD16 JOB41 JOBREL JOBPD1 JOBPRT JOBHCU JOBPC JOBDDT JOBSAV JOBJDA JOBLO JOBSV JOBSVM JOBSDD JOBPFI JOBHI JOBHRL JOBSA JOBFF JOBS41 JOBREN JOBAPR JOBCNI JOBTPC JOBOPC JOBCOR JOBVER JOBDA JOBHSA JOBH41 JOBHCR JOBHRN JOBHVR JOBHNM JOBHSM JOBHDA + +;** JOBDAT.MAC ** JOBDAC==20 JOBDPD==JOBDAC+PDP @@ -5112,7 +5482,9 @@ JOBHVR==400004 ;A COPY OF JOBVER JOBHNM==400005 ;HIGH SEGMENT NAME JOBHSM==400006 ;HIGH SEGMENT SYMBOLS JOBHDA==400010 ;FIRST LOCATION NOT USED - ;** LPTSER.MAC ** + ;LP0DDB + +;** LPTSER.MAC ** LPTSIZ==201 @@ -5135,7 +5507,9 @@ LP0DDS==.-LP0DDB LOC LP0DDB+LP0LEN ;RELOCATE OURSELVES OVER ZERO SEGMENT OF ; LP0DDB - ;** LPTSER.MAC ** + ;LPTDSP LPTCLS + +;** LPTSER.MAC ** ;LINE PRINTER SERVICE DISPATCH TABLE @@ -5155,11 +5529,13 @@ LPTCLS: PUSHJ PDP,OUT ;WRITE OUT LAST BUFFER IF THERE IS SOMETHING THERE SETZ TAC, DPB TAC,PDEVO ;AND SIGNAL NO ACTIVE FILE IN LPTDDB POPJ PDP, - ;** LPTSER.MAC ** + ;LPTOUT LPTOU1 LPTOU2 + +;** LPTSER.MAC ** ;LINE PRINTER OUTPUT UUO ROUTINE -LPTOUT: HRRZ TAC,DEVOAD(DEVDAT) ;GET ADDR IN USER CORE OF CURRENT BUFFER +LPTOUT: HRRZ TAC,DEVOAD(DDB) ;GET ADDR IN USER CORE OF CURRENT BUFFER HRLZI TAC,1(TAC) ;WE WANT TO BEGIN READING FROM 3RD WORD OF BUFFER HRRI TAC,MONBUF ;AND WE WILL PUT IT INTO MONBUF .UBLTI TAC,MONBUF+LPTSIZ-1 ;READ IN LPTSIZ WORDS @@ -5199,7 +5575,9 @@ LPTOU1: IMULI TAC1,5 ;-> # OF CHARACTERS TO PROCESS LPTOU2: PUSHJ PDP,ADVBFE ;ADVANCE OUTPUT BUFFER POPJ PDP, JRST OUT ;MORE TO OUTPUT, FIRST GO COMPUTE PROPER WORD COUNT - ;** SCNSRF.MAC ** + ;IOSUPR TPMON DDTM SYNC TTYIOW FCS NOECHO DLRSUP BUF PUTR PCTR TAKR TCTR FCTR + +;** SCNSRF.MAC ** ;DATA STRUCTURES AND PARAMETERS @@ -5227,7 +5605,7 @@ LPTOU2: PUSHJ PDP,ADVBFE ;ADVANCE OUTPUT BUFFER ; DEVIAD: BITS 6-12 = HORIZONTAL POSITION ; (BYTE POINTER = PHPOS) -;THE FOLLOWING ARE DIFINITIONS OF THE RELATIVE LOCATIONS OF THE +;THE FOLLOWING ARE DEFINITIONS OF THE RELATIVE LOCATIONS OF THE ;BUFFER PARAMETER WORDS OF THE DEVICE DATA BLOCK BUF==0 ;BUF(DAT) CONTAINS POINTER TO BEG. OF CURRENT BUFFER @@ -5243,7 +5621,9 @@ FCTR==5 ;COUNT OF FREE CHARACTERS LEFT IN BUFFER, I.E. ; HOW MANY TIMES THE PUTR MAY BE INCREMENTED BEFORE IT WOULD ; COME AROUND AND "STEP ON" THE TAKR. WHEN =0, NO MORE CHARS ; MAY BE PLACED IN THE BUFFER. - ;** SCNSRF.MAC ** + ;PHPOS PCOMIC PLSTLC + +;** SCNSRF.MAC ** ;DEFINITION OF LINE CHARACTERISTCS (SEE TTYLIN OF SCNDDB) @@ -5257,13 +5637,12 @@ LGLSET==T35+T37+FULTWX ;THESE CAN BE SET OR RESET BY PROGRAM ;ACCUMULATOR ASSIGNMENTS CHREC==TEM ;AC FOR CHARACTER -DDB==DEVDAT ;ADDRESS OF DEVICE DATA BLOCK LINE==TAC1 ;SCANNER LINE NUMBER HPOS==ITEM ;HORIZONTAL POSITION OF TTY (0-71) ;BYTE POINTERS -PHPOS: POINT 7,DEVIAD(DEVDAT),12, ;HORIZONTAL POSITION +PHPOS: POINT 7,DEVIAD(DDB),12, ;HORIZONTAL POSITION PCOMIC: POINT 9,TTYPTR(DDB),19, ;FOR RESCANNING COMMAND INPUT LINE PLSTLC: POINT 9,TTYPTR(DDB),28, ;FOR ^U DELETION @@ -5271,11 +5650,15 @@ PLSTLC: POINT 9,TTYPTR(DDB),28, ;FOR ^U DELETION ; ; 11-19 PCOMIC, FOR COMMAND RESCAN ; 20-28 PLSTLC, FOR ^U - ;** SCNSRF.MAC ** PAGE 8 + ;SETBFI TSETBF SETBF2 PUTCHI PUTCI1 + +;** SCNSRF.MAC ** PAGE 8 SETBFI: MOVEI DAT,1 DPB DAT,PCOMIC ;FOR RESCAN DPB DAT,PLSTLC ;FOR ^U + MOVSI TAC,T37 + IORM TAC,TTYLIN(DDB) ;DEFAULT TO T37 MOVEI DAT,TTIBUF(DDB) SETZM TISYNC(DDB) ;ZERO BREAK COUNT MOVE TAC,BUF(DAT) @@ -5312,8 +5695,9 @@ PUTCHI: SOSGE FCTR(DAT) POP PDP,TAC ;RESTORE TAC PUTCI1: IDPB CHREC,PUTR(DAT) JRST CPOPJ1 + ;GETCHR GETCH2 GETCH1 PUTCI0 PUTCHO PUTCH SPCHEK SPCHK1 - ;** SCNSRF.MAC ** PAGES 9+10 +;** SCNSRF.MAC ** PAGES 9+10 ;ROUTINE TO PICK UP A CHARACTER FROM ANY BUFFER ;CALL MOVEI DAT,TTXBUF(DDB) ;SPECIFIES BUFFER @@ -5361,7 +5745,9 @@ SPCHEK: MOVEI TAC,0 SKIPA TAC,SPCTAB-135(CHREC) SPCHK1: MOVE TAC,SPCTAB(CHREC) JRST CPOPJ1 ;SKIP RETURN - ;** SCNSRF.MAC ** PAGE 11 + ;SPCTAB + +;** SCNSRF.MAC ** PAGE 11 ;SPECIAL CHARACTER TABLE ;FORMAT XWD BITS,ADDRESS OF ROUTINE @@ -5413,7 +5799,9 @@ SPCTAB: ECHSUP,,0 ;NULL SPACTN+BREAKB+ECHSUP,,ALTMOD ;ASCII 175 SPACTN+BREAKB+ECHSUP,,ALTMOD ;ASCII 176 SPACTN+ECHSUP+FCSBRK,,RUBOUT ;177 - ;** SCNSRF.MAC ** PAGE 12 + ;DDTIN + +;** SCNSRF.MAC ** PAGE 12 ;INPUT TO DDT ;CALL AC,[SIXBIT /DDTIN/] @@ -5429,7 +5817,7 @@ DDTIN: PUSHJ PDP,TTYFNU MOVSI IOS,TTYIOW ANDCAB IOS,DEVIOS(DDB) MOVSI TAC,IOFST+DDTM - IORM TAC,DEVIOS(DEVDAT) + IORM TAC,DEVIOS(DDB) .UMOVE TAC,(UUO) ;CONTENTS OF USER AC HRRZ TAC,TAC ADDI TAC,21 @@ -5443,7 +5831,9 @@ DDTIN: PUSHJ PDP,TTYFNU ; TO USER W/A .UBLTO MOVEI DAT,TTIBUF(DDB) MOVEI AC1,<21*5>-1 ;= # CHARS ALLOWED - ;** SCNSRF.MAC ** PAGE 13 + ;XFRIN XFRIN1 XFRIN2 DDTCNC TWSYNC + +;** SCNSRF.MAC ** PAGE 13 XFRIN: PUSHJ PDP,GETCHR JUMPE CHREC,XFRIN2 @@ -5458,7 +5848,7 @@ XFRIN1: CAIN CHREC,3 ;A PRESTORED ^C ? XFRIN2: MOVEI CHREC,0 ;TERMINATE STRING IDPB CHREC,AC2 MOVSI TAC,IOSUPR - ANDCAM TAC,DEVIOS(DEVDAT) + ANDCAM TAC,DEVIOS(DDB) HRRZI AC2,-MONBUF(AC2) ;= WORD # WHERE FINAL STRING STORED POP PDP,TAC ;TAC HAS ADR IN USER AREA ADDI AC2,(TAC) ;COMPUTE FINAL ADDR IN USER AREA @@ -5485,7 +5875,9 @@ TWSYNC: JRST WSYNC ; CORRESPONDING TO THAT USED BY THE SCANNER SERVICE AND THE INITIAL PART ; OF THE COMMAND DECODER (IN NULL JOB) AND THAT OF UUOCON AND COMCON ; AFTER MONSTR HAS BEEN CALLED. - ;** SCNSRF.MAC ** PAGES 14+15 + ;DDTOUT DDT5 DDT2 DDT3 TYUUO TTYUU1 + +;** SCNSRF.MAC ** PAGES 14+15 ;OUTPUT FROM DDT ;CALL AC,[SIXBIT /DDTOUT/] @@ -5514,7 +5906,9 @@ TTYUU1: JRST CPOPJ ;NO CAIN CHREC,3 SETOM CNCLAS ;YES, SET FLAG .DISMIS TTYUU1 ;AND NOW LEAVE INTERRUPT LEVEL !!! - ;** SCNSRF.MAC ** PAGE 15 + ;OUTCHR OUTCHS OUTCH3 + +;** SCNSRF.MAC ** PAGE 15 ;OUTCHR: CALLED TO OUTPUT A CHARACTER ; AC(DAT) AND AC(DDB) MUST BE SET UP @@ -5546,7 +5940,9 @@ OUTCH3: DPB HPOS,PHPOS ;UPDATE HPOS POP PDP,HPOS JRST TPOPJ ;AREN'T WE GLAD THAT WE PUSH'ED TAC FIRST, FOR WE ;MAY USE THE TPOPJ EXIT - ;** SCNSRF.MAC ** PAGE 16 + ;OUTCH1 OUTC1B OUTC1A ADJHP + +;** SCNSRF.MAC ** PAGE 16 ;HERE ON UUO OUTPUT OF HT,FF,VT @@ -5585,7 +5981,9 @@ ADJHP: CAILE CHREC,174 ;HIGH SPECIALS JRST SPCHEK ;NO TRO HPOS,7 ;ROUND UP 8 IN 2 INSTRS AOJA HPOS,SPCHEK - ;** SCNSRF.MAC ** PAGE 20 + ;SCNDDB + +;** SCNSRF.MAC ** PAGE 20 ZZ==. @@ -5629,7 +6027,9 @@ TTYCHR==STTYBF*5 SCNDDS==.-ZZ ;LENGTH OF PROTOTYPE DDB LOC SCNDDB+SCNLEN ;FROM TIPUTR TO THE END OF SCNDDB THERE ARE ONLY ZEROES - ;** SCNSRF.MAC ** PAGE 23 + ;SCNDSP TTYIN TENDIN T0POPJ + +;** SCNSRF.MAC ** PAGE 23 ;DEVICE DEPENDENT PART OF IO UUOS @@ -5652,7 +6052,9 @@ TTYIN: ;INPUT TENDIN: MOVSI IOS,TTYIOW+DDTM+IOSUPR T0POPJ: ANDCAB IOS,DEVIOS(DDB) POPJ PDP, - ;** SCNSRF.MAC ** PAGE 24 + ;MONUSR MONUS1 MONUS2 MONUS3 MONUS5 + +;** SCNSRF.MAC ** PAGE 24 ;ROUTINE TO MOVE LINE OR STRING FROM TTY INPUT BUFFER TO USER'S I.BUFFER. ; CALLED FROM INPUT UUO ONLY. THE ROUTINE CONSTRUCTS AN IMAGE OF THE @@ -5705,7 +6107,9 @@ MONUS3: HRRZ AC2,DEVIAD(DDB) MONUS5: MOVSI IOS,IOFST IORB IOS,DEVIOS(DDB) POPJ PDP, - ;** SCNSRF.MAC ** PAGE 25 + ;MONUS6 MONUS7 MONUS8 + +;** SCNSRF.MAC ** PAGE 25 MONUS6: PUSHJ PDP,CNCMOD ;^C MODE MOVSI TAC,70000 ;DECREMENT TAKR @@ -5730,7 +6134,9 @@ MONUS7: MOVSI IOS,TTYIOW MONUS8: TLNN IOS,IOEND ;ROOM FOR ANOTHER BUFFER, BUT HAVE WE SEEN A ^Z ? JRST MONUSR ;NO POPJ PDP, - ;** SCNSRF.MAC ** PAGES 26+27 + ;TTYOUT TYOUT1 USRMON USRMN2 USRMN5 + +;** SCNSRF.MAC ** PAGES 26+27 ;OUTPUT UUO @@ -5789,9 +6195,11 @@ USRMN2: ILDB CHREC,AC1 ;PICK UP CHARACTER PUSHJ PDP,OUTCHR ;PLACE IN OUTBUF USRMN5: SOJG AC2,USRMN2 POPJ PDP, - ;** SCNSRF.MAC ** PAGE 28 + ;TTYUUO TTUUOT -;TTCALL - QUANTITY IN AC FIELD DETERMINES AXN OF UUO +;** SCNSRF.MAC ** PAGE 28 + +;TTYUUO - QUANTITY IN AC FIELD DETERMINES AXN OF UUO TTYUUO: PUSHJ PDP,TTYFNU ;FIND OUR TTY DDB ADDR + PICK UP RANDOM INFO CAIL UCHN,TTUUOL ;TOO HIGH AC FIELD ? @@ -5819,7 +6227,9 @@ TTUUOT: INCHRW ;(0) INPUT CHAR, WAIT TILL TYPED IONEOU ;(15) OUTPUT AN IMAGE CHARACTER TTUUOL==.-TTUUOT - ;** SCNSRF.MAC ** PAGE 29 + ;INCHSL INCHRS INCHWL OUTSTR SKPINL SKPINC NOCTRO + +;** SCNSRF.MAC ** PAGE 29 ;INPUT A CHARACTER + SKIP ; IF NONE TYPED, THEN DON'T SKIP @@ -5865,7 +6275,9 @@ SKPINC: HLRZ TAC,TTIBUF(DDB) ;SIZE OF BUFFER AOS 0(PDP) ;YES - SKIP NOCTRO: MOVSI IOS,IOSUPR ;^O BIT JRST T0POPJ - ;** SCNSRF.MAC ** PAGE 30 + ;INCHRW ONEOUT IONEOU GETLIN SETLIN + +;** SCNSRF.MAC ** PAGE 30 ;MORE ROUTINES CALLED BY TTYUUO DISPATCHER @@ -5908,7 +6320,9 @@ SETLIN: MOVSI TAC,LGLSET AND TAC,[LGLSET,,] IORM TAC,TTYLIN(DDB) ;SET ONLY THOSE BITS THAT USER WANTS TO SET POPJ PDP, - ;** SCNSRF.MAC ** PAGES 34+35 + ;TRESCN TRESC1 TRESCU TRESCL TLHBYT TBYTEP + +;** SCNSRF.MAC ** PAGES 34+35 TRESCN: LDB TAC,PCOMIC MOVEM TAC,TITCTR(DDB) @@ -5947,7 +6361,9 @@ TBYTEP: PUSH PDP,TAC1 HLL TAC,TLHBYT(TAC1) POP PDP,TAC1 POPJ PDP, - ;** SCNSRF.MAC ** PAGES 36-40 + ;TTYFNU TTYFUW TTYFND TTYREL TTYSET TTYSRC STLNAC TTYSTC TTYSTR + +;** SCNSRF.MAC ** PAGES 36-40 ;ROUTINE TO FIND USER'S CONSOLE TTY @@ -5962,7 +6378,7 @@ TTYREL: MOVEI IOS,-1 ;CLEAR INITED STUFF IN IOS JRST T0POPJ ;GO CLEAR OUT IOS BITS ;ROUTINE TO SET TTY INTO USER MODE -;CALL: MOVE DEVDAT,ADDRESS OF DEVICE DATA BLOCK +;CALL: MOVE DDB,ADDRESS OF DEVICE DATA BLOCK ; PUSHJ PDP,TTYSET TTYSET: MOVSI IOS,DDTM+IOSUPR+TTYIOW+IOW @@ -5984,10 +6400,12 @@ TTYSTR: MOVSI IOS,DDTM+IOSUPR+IOBEG SKIPLE TISYNC ;DID USER TYPE AHEAD PUSHJ PDP,COMSET ;YES (COMSET WILL RETURN IMMEDIATELY IF NOT IN MONITOR MODE) POPJ PDP, - ;** SCNSRF.MAC ** PAGES 42+47 + ;TTYUSR COMSET + +;** SCNSRF.MAC ** PAGES 42+47 ;ROUTINE TO START UP JOB -;CALL: MOVE DEVDAT,TTY DDB ADR. +;CALL: MOVE DDB,TTY DDB ADR. ; PUSHJ PDP,TTYUSR ; TTY WILL GO INTO USER MODE @@ -6003,7 +6421,9 @@ COMSET: TLNN IOS,TPMON ;MONITOR MODE ? IORB IOS,DEVIOS(DDB) POPJ PDP, ;AND RETURN - COMMAND AXN TAKEN AUTOMATICALLY AT ; END OF CHAR INT PROCESSING AND UUO INT PROCESSING - ;** SCNSRF.MAC ** PAGE 50 + ;TTEDIT TIPACK TTIPUT TTIPT1 DUPLX1 SPCECO UPRCTL + +;** SCNSRF.MAC ** PAGE 50 ;KEYBOARD EDITOR ROUTINE ;UPON RECEIPT OF A CHARACTER, THIS ROUTINE DETERMINES WHAT TO DO @@ -6069,7 +6489,9 @@ UPRCTL: PUSH PDP,CHREC PUSHJ PDP,PUTCHO POP PDP,CHREC POPJ PDP, - ;** SCNSRF.MAC ** PAGES 51+52 + ;INBFUL CONTC CONTZ CONTO CONTU CONTU1 ALTMOD + +;** SCNSRF.MAC ** PAGES 51+52 INBFUL: MOVSI IOS,SYNC ;DON'T REGISTER THIS AS SYNC ANDCAB IOS,DEVIOS(DDB) ;SINCE CHAR NOT STORED @@ -6106,7 +6528,9 @@ ALTMOD: HRRI TAC,(CHREC) ;SAVE WHICH KIND OF ALTMODE TRNN IOS,FCS ;IF NOT FCS MODE -> CONVERT TO 33 MOVEI CHREC,33 JRST TTIPUT ;AND STORE - ;** SCNSRF.MAC ** PAGE 53 + ;CONTHR CONTH RUBOUT RUBOU2 AOJDPX RUBOU1 CONTK CONTL + +;** SCNSRF.MAC ** PAGE 53 CONTHR: SOJ HPOS, ;COMES HERE IF RUBBING OUT A ^H CONTH: TLNE LINE,T37 ; @@ -6144,7 +6568,9 @@ CONTL: HRRI TAC,10 ;HERE ON FF TLNE LINE,T35 ;DOES TTY HAVE VERT MECHANICS ? JRST TTIPUT ;YES ;NO - FALL INTO SIMFF - ;** SCNSRF.MAC ** PAGE 54 + ;SIMFF CONTIR CONTI CONTI2 CONTI1 + +;** SCNSRF.MAC ** PAGE 54 ;ROUTINE TO SIMULATE VT OF FF WITH LINEFEEDS ; IF THIS IS NOT A MODEL 35 TTY @@ -6177,7 +6603,9 @@ CONTI1: TLNN LINE,T35 ;A MODEL 35 ? ; HPOS VALUE (WE COULD HAVE JUST TYPED OUR INITIAL "\") TRO HPOS,7 ;INDICATE THAT WE ARE AT A TAB STOP AOJA HPOS,DUPLX1 ;IN TWO INSTRUCTIONS (C.F. ADJHP:) - ;** SCNSRF.MAC ** PAGES 55-56 + ;CRLFEC CHPOPJ CNTLEC CR CNCTST CNCTS1 CNCMOD + +;** SCNSRF.MAC ** PAGES 55-56 CRLFEC: MOVEI HPOS,1 ;ECHO A CR, LF, SAVING CHREC PUSH PDP,CHREC @@ -6220,7 +6648,9 @@ CNCMOD: MOVSI IOS,DDTM+IOSUPR MOVSI IOS,TPMON+IOFST IORB IOS,DEVIOS(DDB) POPJ PDP, - ;** SCNSRF.MAC ** PAGES 57+60 + ;BSECHO DCPUTR DELETL GETDDB GETDB3 + +;** SCNSRF.MAC ** PAGES 57+60 ;ROUTINE TO ECHO BACKSLASH @@ -6285,7 +6715,7 @@ GETDB3: ROT TAC,6 ;GET NEXT DIG POP PDP,DAT POP PDP,DEVNAM(DDB) ;AND PLACE TTYNM INTO DEVNAM JRST CPOPJ1 ;SUCCESS RETURN - ;** RFD ** + ;UFDBYT UFDBPW UDNAMP UDNAME UDDESC UDTKMX UDWPH NXLBYT LUNBLK UNFN1 UNFN2 UNRNDM UNLINK UNWRIT UNCDEL UNPDEL DELBTS UNIGFL UNDSCP UNDATE UNTIM UNREFT UNMON UNDAY UNYRD ;I.T.S. FILE DIRECTORY PARAMETERS ; C.F. P 285, I.T.S. SYSTEM LISTING @@ -6332,7 +6762,7 @@ UNDATE==3 ; DATE, ETC. ; --/--/--/--/--/--/ --/--/--/--/--/--/ ; 0......78.......17 ; LAST REF YR MO DAY COMPACTED TIME OF CREATION IN 1/2 SECS. - ;** RFD ** + ;RFD ;READ FILE DIRECTORY ; TAC/SNAME OF DESIRED DIRECTORY @@ -6346,11 +6776,6 @@ UNDATE==3 ; DATE, ETC. ; (A PART OF LIST STORAGE), OR THE FILENAME WOULD BE ; SENT OUT TO A PSEUDO U.F.D. FILE. -;NOTE - ONLY THOSE FILES WHOSE 2ND FILE NAME BEGINS WITH -; THE CHARACTERS "DEC" (C.F. SNFID -- AN ASSEMBLY PARAMETER) AND WITH 4TH CHAR OF 2ND NAME=0 -; PLUS HIGH ORDER BIT OF 5TH CHAR SET ARE VISIBLE TO US. OTHERS -; ARE TREATED AS SPURIOUS. - ;DEFINE ACCUMULATORS T==BUFPNT @@ -6378,7 +6803,7 @@ RFD: PUSH PDP,T ;SAVE ALL ACCUMULATORS WE USE ; (INITIALLY WE WON'T, AND IF USER USES "REFRESH" COMMAND, IT WILL BE ; BE RESET.) JRST RICUFD ;YES- READ IN-CORE UFD - ;** RFD ** + ;RFD4 RFD1 RFD2 RFD2A PASS1 PASS1B PASS1C PASS1A RFD4: HRRZ T,HLADR ;DO WE HAVE A DIRECTORY IN CORE ? JUMPN T,RFD1 ;YES @@ -6417,7 +6842,6 @@ RFD2A: AOS -RFDSTK+4(PDP) .IOT UFD,T ;READ IN THE DIRECTORY .IOPOP UFD, ;RESTORE CHANNEL - ;** RFD ** HRRZ T,HLADR ;ADDRESS OF UFD MOVE T1,T @@ -6438,7 +6862,7 @@ PASS1A: MOVE T2,UNRNDM(T1) ;IS THIS A LINK OR A FILE TO BE IGNORED ? HRRZ T2,UNFN2(T1) ;GET LAST 3 CHARS IN EXT JUMPE T2,PASS1C ;IS IT GOOD? JRST PASS1B ;NO GOOD, DEC SYSTEM ONLY ALLOWS 3 - ;** RFD ** + ;OPNERR OPNER3 OPNER1 OPNER2 ;.OPEN FAILURE WHILE TRYING TO READ UFD ; IF IT WAS DUE TO A "DIRECTORY NOT AVAILABLE" ERROR WE PATIENTLY @@ -6465,7 +6889,7 @@ OPNER2: MOVEI T2,90. JRST RFD2A ;WIN SOJG T3,OPNER2 ;TRY AGAIN ? JRST OPNER3 ;NO - THAT'S ENOUGH OF THIS - LET'S LOSE - ;** RFD ** + ;PASS2 PASS2B PASS2C PASS2A PASS2D PASS2: MOVE T1,T ADD T1,UDNAMP(T1) @@ -6483,7 +6907,7 @@ PASS2D: ADDI T5,LUNBLK CAIL T5,1024.(T) ;HAVE WE PASSED TESTING FOR CURRENT BASE ? JRST PASS2C ;YES - TRY NEXT BASE JRST PASS2D ;NO - ADVANCE - ;** RFD ** + ;RFD3 UQL4C UQL4D UQL4B RFD3: HRRZ T1,HLADR ADD T1,UDNAMP(T1) ;ADD VALUE OF NAME AREA POINTER @@ -6523,7 +6947,7 @@ UQL4B: MOVE T2,UNFN1(T1) ;GET + STASH FIRST NAME ADDI T3,(T2) ;GET DATE LAST REFERENCED DPB T3,[POINT 15,FILNM1,35,] ;-> E+1(21-35) - ;** RFD ** + ;UQL5 UQL5B UQL5A ILNGTH ;NOW DETERMINE CREATION TIME OF DAY @@ -6581,7 +7005,7 @@ ILNGTH: HRLZM T4,FILNM3 HRRZ T,HLADR ;SET UP AC(T) IN CASE HLADR CHANGES ADDI T1,(T) ;AND MAKE AC(T1) RIGHT JRST UQL4D - ;** RFD ** + ;GT2.17 UFDFIN GT2.17: MOVE T3,T4 IDIVI T3,128. @@ -6597,9 +7021,9 @@ UFDFIN: POP PDP,T5 ;RESTORE ALL THOSE AC'S POP PDP,T1 POP PDP,T POPJ PDP, ;AND THEN GO AWAY - ;** RFD ** + ;RICUFD RICUF1 GT1UF QBTBLI -;READ RHROUGH IN-CORE SIMULATOR UFD + PASS IT ALONG TO USER, ENTRY-BY-ENTRY. +;READ THROUGH IN-CORE SIMULATOR UFD + PASS IT ALONG TO USER, ENTRY-BY-ENTRY. RICUFD: AOS -RFDSTK+4(PDP) @@ -6639,7 +7063,7 @@ QBTBLI: 440600,, 220600,, 140600,, 060600,, - ;** CLRMBF ** + ;CLRMBF CLRMBF: PUSH PDP,TAC HRRZI TAC,MONBUF+1 @@ -6647,7 +7071,7 @@ CLRMBF: PUSH PDP,TAC SETZM MONBUF BLT TAC,MONBUF+MBFSIZ-1 JRST TPOPJ ;RESTORE AC(TAC) AND RETURN - ;** RANDOM SIMULATOR ROUTINES ** + ;PPTOSN GTFCHN GTFCH1 GTFCH2 RTFCHN ;ENTER WITH PPN IN TAC; RETURN WITH SNAME IN TAC. ;TAC1 GETS CLOBBERED. @@ -6689,7 +7113,7 @@ RTFCHN: MOVNI TAC,(TAC) ;NEGATE CHANNEL # ANDCAB TAC,CHNSAT ;TURN IT OFF IN CHNSAT AND GUARANTEE ;THAT RH OF TAC IS CLEAR POPJ PDP, ;RETURN - ;** RANDOM SIMULATOR ROUTINES ** + ;GTTIME T1POPJ GTTIM1 CNVDEC GTDATE ;RETURN THE CURRENT TIME OF DAY IN JIFFIES (1/60 SECOND) ;PAST MIDNIGHT IN TAC. @@ -6741,15 +7165,7 @@ GTDATE: PUSH PDP,TAC1 ;SAVE TAC1 POP PDP,TAC1 ;RESTORE PARTIAL # DAYS ADDI TAC,-1(TAC1) ;FORM FINAL RESULT IN TAC JRST T1POPJ ;RESTORE TAC1 AND RETURN - ;** SIM ** - -;ACCUMULATOR ASSIGNMENTS - -CHREC==TEM -DDB==DEVDAT -LINE==TAC1 -HPOS==ITEM -T4==AC2 + ;UPRGI UPRGO CTYI CTYO FFITSC UFD SGCHN BPIPI AROIF BILLOP BIOADC BUTRAP ARFOIF FSIZ DSKCOR SCNCOR MINFRE ;I.T.S. FIXED CHANNEL ASSIGNMENTS @@ -6787,7 +7203,7 @@ MINFRE==DSKCOR ;MINIMUM NUMBER OF FREE CHUNKS IN ORDER TO ; ENOUGH ROOM FOR ONE DSK DDB, SINCE THE REPETITIVE ASSIGNMENT ; AND RELEASE OF A DSK DDB MIGHT CAUSE CORE TO THRASH) IFG SCNCOR-DSKCOR,[MINFRE==SCNCOR] - ;** SIM ** + ;NULNAM UPDP NPDP ;COMMON I/O MODE DEFINITIONS @@ -6824,14 +7240,12 @@ NPDP: NJOBPD,,NULPDL ; (MUST BE >= 17) FSAC==17 - ;** SIM -- STARTUP AND INITIALIZATION ** - -GO: + ;GO DSLEEP ;ALLOCATE MEMORY - .CORE _-10. - .VALUE +GO: .CORE _-10. + .LOSE %LSSYS MOVE PDP,NPDP ;COLLECT A PUSH DOWN POINTER @@ -6890,7 +7304,6 @@ GO: HLLM TAC,DEVSER+CTYDDB MOVSI TAC,DSKDDB ;PROTOTYPE DSK DDB ALWAYS LAST OF NON-EXPANDING HLLM TAC,DEVSER+LPTDDB ;DDB'S - ;** SIM -- INITIALIZATION ** ;INITIALIZE FILE DIRECTORY @@ -6910,19 +7323,19 @@ GO: MOVE TAC,[SQUOZE 0,NQS] ;COLLECT SYSTEM VALUES FOR VARIABLES .EVAL TAC, ;USED BY "RESOURCES" COMMAND - .VALUE + .LOSE %LSSYS HRRZM TAC,NQSV MOVE TAC,[SQUOZE 0,QACT] .EVAL TAC, - .VALUE + .LOSE %LSSYS HRLM TAC,QACTV MOVE TAC,[SQUOZE 0,QTUTO] .EVAL TAC, - .VALUE + .LOSE %LSSYS HRRZM TAC,QTUTOV MOVE TAC,[SQUOZE 0,QSFT] .EVAL TAC, - .VALUE + .LOSE %LSSYS HRLM TAC,QSFTV .RYEAR TAC, @@ -6943,7 +7356,6 @@ GO: MOVEM T2,YSET MOVEM T1,YRESET POP PDP,TAC1 ;RESTORE AC(TAC1)=YEARPH - ;** SIM -- INITIALIZATION ** ;NOW TO FOOL AROUND FINDING WHETHER OR NOT THE YEAR BIT ; IN A DATE (LAST 28. BITS OF UNDATE ENTRY=DATE) SHOULD BE XOR'ED TO MAKE A @@ -6974,7 +7386,7 @@ GO: MOVE TAC,[JRST UUOHAN] MOVEM TAC,UUOH2 -;INITIAIZATION OF CONSOLE TTY +;INITIALIZATION OF CONSOLE TTY ; INCLUDED IN THE DDB OF EVERY DEVICE ARE THE I.T.S. ; CHANNEL #'S ASSOCIATED WITH INPUT AND OUTPUT OF ; EVERY CHANNEL. FOR TTY (OR, MORE GENERALLY, FOR ANY @@ -6993,11 +7405,11 @@ GO: ; CONTROL OF CONSOLE) .OPEN CTYI,FILNAM ;AND GRAB IT - .VALUE ;OPEN CTYI, FAILURE + .LOSE %LSSYS ;OPEN CTYI, FAILURE HRLZI TEM,CTYOMD ;CTY OUTPUT MODE HLLM TEM,FILNAM .OPEN CTYO,FILNAM - .VALUE ;OPEN CTYO, FAILURE + .LOSE %LSSYS ;OPEN CTYO, FAILURE ;RESET THE OLD TTY CHANNELS .RESET CTYI, @@ -7007,7 +7419,6 @@ GO: ;THIS SHOULD HELP US OUT ESPECIALLY IF WE HAPPENED TO ; RESTART THE PROGRAM NEVER HAVING .DISMISS'ED ; OURSELVES FROM OUR INTERRUPT ROUTINE. - ;** SIM ** MOVE TAC,SNAME ;NOW'S THE TIME TO READ IN OUR UFD MOVEI TAC1,INITFD ;HERE'S WHERE WE GO EACH TIME AN ENTRY IS FOUND @@ -7019,7 +7430,7 @@ GO: HRRZ TAC,HLADR ;COLLECT ADDRESS OF FIRST WORD IN TOP K LSH TAC,-12 ;CONVERT IT TO A CORE SIZE .CORE (TAC) ;REDUCE CORE TO THAT AMOUNT - .VALUE + .LOSE %LSSYS HLLZS HLADR ;AND INFORM THE WORLD THAT IT IS NO LONGER THERE .IOT CTYO,.CR .IOT CTYO,.LF @@ -7040,9 +7451,7 @@ GO: DSLEEP: JFCL .HANG - ;** SIM ** - -;DESCRIPTION OF INTERRUPT TIMING AND PROCESSING. + ;DESCRIPTION OF INTERRUPT TIMING AND PROCESSING. ; WE ORDINARILY WILL BE EXPECTED TO HANDLE 2 TYPES OF INTERRUPTS: ; (1) CHARACTER-TYPED-ON-USER'S-TTY INTERRUPTS, AND (2) INFERIOR @@ -7082,7 +7491,7 @@ DSLEEP: JFCL ; SHOULD THE USER RETURN FROM UUO PROCESSING IN MONITOR MODE (WHICH WOULD HAPPEN ; AS THE RESULT OF A CALLI 12, FOR EXAMPLE), WE CHECK TO SEE IF COMMAND LINES ; ARE PENDING. - ;** SIM ** + ;PRCINT PW2IZ PW2IY PW2IX PW2IW PW2IA PW2II PW2IJ ;PROCESS WORD1 INTERRUPTS @@ -7133,7 +7542,7 @@ PW2II: MOVEI CHREC,CTYI .ITYIC CHREC, ;READ NEXT CHAR JRST PW2IB ;NO MORE LEFT TO PROCESS PW2IJ: .IOT CTYI,CHREC ;.IOT THE CHARACTER - ;** SIM ** + ;RECIN2 ;CODE HERE BASED ON SCNSRF, COMMON RECEIVER INTERRUPT ROUTINE ; FOR ALL KEYBOARD DEVICES. CODE AT RECINT:, FF. (PP 44-45) @@ -7142,8 +7551,7 @@ PW2IJ: .IOT CTYI,CHREC ;.IOT THE CHARACTER JRST PW2IA HLLZ LINE,TTYLIN(DDB) MOVE IOS,DEVIOS(DDB) -;RECIN2: - ANDI CHREC,177 ;7-BIT ASCII ONLY +RECIN2: ANDI CHREC,177 ;7-BIT ASCII ONLY CAIN CHREC,3 ;^C ? PUSHJ PDP,CNCTST ;YES - SEE IF 2ND IN A ROW LDB HPOS,PHPOS ;PICK UP HORIZONTAL POSITION OF OUTPUT CHAR @@ -7169,7 +7577,7 @@ PW2IJ: .IOT CTYI,CHREC ;.IOT THE CHARACTER JRST PW2IA ;NO MOVEM IOS,DEVIOS(DDB) ;CLEAR "STILL WAITING BIT" JRST PW2IA ;ALL DONE W/THIS CHAR, LOOK FOR NEXT - ;** SIM ** + ;PW2IB PW2IF ;TTY CHARS HAVE BEEN SEEN, BUT NOW THEY HAVE BEEN EXHAUSTED. ; CALL COMMAND DECODER IF IN MONITOR MODE. UPON RETURN FROM COMMAND, @@ -7201,7 +7609,7 @@ PW2IF: TLNE IOS,IOW ;ARE WE IN IOWAIT ? MOVSI AC3,USRDAC ;NO - PREPARE TO GO BACK INTO MIDDLE OR USER UUO PROCESSING BLT AC3,16 ;RESTORE AC'S JRST @USRPC ;GO BACK INTO OUR CODING - ;** SIM ** + ;PW2IC URETRN ;NOW CHECK TO SEE IF INFERIOR INTERRUPT TO BE PROCESSED. ; IT MAY HAVE BEEN CAUSED BY AN ILLEGAL INSTRUCTION, A SYSTEM UUO @@ -7232,7 +7640,7 @@ URETRN: ;RETURNS HERE ; COMMANDS MAY BE READY TO PROCESS ; (NOTE THAT WE START USING NPDP AGAIN) JRST PW2IW - ;** SIM ** + ;PW2ID ENDINT PW2ID: PUSH PDP,TAC TDZN TAC,[BIOADC\200000\AROIF\ARFOIF\BPIPI] ;DID WE GET SOME COMBINATION OF @@ -7257,7 +7665,9 @@ PW2ID: PUSH PDP,TAC ENDINT: MOVE 17,SAV17 .DISMIS INTR1 ;SEE I.T.S.R.M. P 96 - ;** SIM -- A COUPLE OF MISC ROUTINES USED DURING INITIALIZATION ** + ;MNTDDB INITFD PERIOD .CR .LF PATCH + +;A COUPLE OF MISC ROUTINES USED DURING INITIALIZATION MNTDDB: ;MAKE A NEW TTY DDB STARTING AT LOCATION ; AS ADDRESSED BY AC(DDB). ESSENTIALLY COPIES OUT @@ -7266,13 +7676,13 @@ MNTDDB: ;MAKE A NEW TTY DDB STARTING AT LOCATION ; THE NEW DDB AT THEIR PROPER PLACES. SEE TTYINI:, ; SCNSRF, P 7. HRLZI AC1,SCNDDB ;GET ADDR OF THAT PROTOTYPE - HRRI AC1,(DEVDAT) - BLT AC1,SCNLEN-1(DEVDAT) ;WRITE OUT INITIAL SCNLEN WORDS FROM + HRRI AC1,(DDB) + BLT AC1,SCNLEN-1(DDB) ;WRITE OUT INITIAL SCNLEN WORDS FROM ; PROTOTYPE - SETZM SCNLEN(DEVDAT) ;THEN ZERO OUT THE REST - HRLZI AC1,SCNLEN(DEVDAT) - HRRI AC1,SCNLEN+1(DEVDAT) - BLT AC1,SCNDDS-1(DEVDAT) + SETZM SCNLEN(DDB) ;THEN ZERO OUT THE REST + HRLZI AC1,SCNLEN(DDB) + HRRI AC1,SCNLEN+1(DDB) + BLT AC1,SCNDDS-1(DDB) HRRZI TEM,TIBF(DDB) HRRM TEM,TTIBUF(DDB) JRST TSETBF @@ -7293,8 +7703,8 @@ INITFD: PERIOD: ". -.CR: 15 -.LF: 12 +.CR: ^M +.LF: ^J ;LITERALS GO HERE @@ -7303,7 +7713,9 @@ PERIOD: ". ;PATCH SPACE HERE PATCH: BLOCK 100. - ;** SIM -- WRITABLE CORE ** + ;INTR INTR1 INTR2 FRENAM FOPRNM FILNAM FILNM1 FILNM2 FILNM3 FILNM4 DIRLST DEVLST HLADR FRENUM FREEPT CHNSAT TTYOIP CNCLAS SAV17 SNAME JOB NQSV QACTV QTUTOV QSFTV DAMESS YSET YRESET XRYRBT TRTPI TRTPIT TRTST TRTIT APRCHL APRERR ITSENB + +;WRITABLE CORE FRSTWR==. ;FIRST LOCATION OF WRITABLE CORE @@ -7394,6 +7806,7 @@ USRPD3=USRPDL+3 NULPDL=.-1 BLOCK -NJOBPD + ;USRREL USRHCU USRPC USRDDT USRJDA USRFDV USREXM JBTSTS JBTADR JBTNAM JBTPRG PRJPRG FORTY UUO0 UUOH UUOH1 UUOH2 MONBUF SGANAM SGAEXT SGADAT SGALEN SGAPPN SGAMOD SGADEV SGAHED SGADMP SGANEW SGAHGH SGALOW SDVNMF CTYDDB LPTDDB DSKDDB ;C.F. COMMON.MAC PAGE 6 @@ -7446,8 +7859,6 @@ UUOH2: JRST UUOHAN ;THEN CALL THE UUO HANDLER MBFSIZ==200 MONBUF: BLOCK MBFSIZ - - ;C.F. COMCON.MAC PAGE 64 ;SAVGET CORE LOCATION USED FOR UUOS TO MONITOR. @@ -7476,4 +7887,4 @@ DSKDDB: BLOCK PTR1 ;PROTOTYPE DSK DDB FRSTFR=. - END GO +END GO