mirror of
https://github.com/retro-software/B5500-software.git
synced 2026-01-19 09:07:48 +00:00
Commit B6500 MCP Mark 0.0 source, additional transcription by James Fehlinger, as of 2014-07-25.
This commit is contained in:
parent
fa97b1a827
commit
97b830cb8c
@ -3124,7 +3124,7 @@ COMMENT THE FOLLOWING ARE VALUES FOR PROCESSCLASS; 21409000
|
||||
, LIBRARYNGOJOB = 6# 21415100
|
||||
, COMPILENSYNTAXOBJECT = 7# 21415200
|
||||
; 21416000
|
||||
DEFINE FIRSTCOMPILEEOPTION = COMPILENGOJOB # 21416200
|
||||
DEFINE FIRSTCOMPILEROPTION = COMPILENGOJOB # 21416200
|
||||
, LASTCOMPILEROPTION = COMPILETOLIBRARYJOB # 21416300
|
||||
; 21416400
|
||||
FIELD INITIATESTACKF = 21:1 21416500
|
||||
@ -3350,8 +3350,8 @@ DEFINE 24255000
|
||||
LBLEQTN = FIBW[8]#, % LABEL EQUATION BLOCK 24265000
|
||||
%%%%% REGULAR I/O 24266000
|
||||
BUFDESC = FIBW[9]#, % BUFFER DESCRIPTOR 24267000
|
||||
UNITSLEFT = FIB[10]#, % WORDS OR CHARACTERS LEFT 24268000
|
||||
BLOCKCOUNT = FIB[11]#, % BLOCK COUNT OR PAGE COUNT 24269000
|
||||
UNITSLEFT = FIB[10]#, % WORDS OR CHARACTERS LEFT 24268000
|
||||
BLOCKCOUNT = FIB[11]#, % BLOCK COUNT OR PAGE COUNT 24269000
|
||||
RECORDCOUNT = FIB[12]#, % RECORD COUNT OR LINE COUNT24270000
|
||||
LABELATT = FIB[13]#; % LABEL ATTRIBUTES 24272000
|
||||
LAYOUT 24273000
|
||||
@ -5273,7 +5273,7 @@ COMMENT HANDLES DIVIDE BY ZERO,EXPONENT OVERFLOW,EXPONENT UNDERFLOW, 33116000
|
||||
GO LOOKFORJOB END 33153000
|
||||
ELSE IF MYACTION =FAULTROUTINE THEN 33154000
|
||||
MYFAULT(P2) 33155000
|
||||
ELSE 33155100
|
||||
ELSE 33156000
|
||||
CASE WHICH OF 33157000
|
||||
BEGIN 33158000
|
||||
MYDIVIDEBYZERO(P2); 33159000
|
||||
@ -5869,5 +5869,788 @@ LOOKFORANOTHER: IFTHEREISASOFTWAREINTERRUPT 33709000
|
||||
INSERTINQUEUE(WAITI,EVENTWAITQ); 33724000
|
||||
UNLOCK(READYQ); 33725000
|
||||
END ; %%%%%%%%%% %%%MCS 833726000
|
||||
IF INTERRUPTQCOUNT ~ EVENTWORD1.COUNTF!0 33727000
|
||||
THEN 33728000
|
||||
BEGIN%%%%%%%%%%%%%%% %%%MCS 933729000
|
||||
NEXTSTACK~INTERRUPTPOINTER 33730000
|
||||
~SECONDWORD(THISEVENT) ;33731000
|
||||
DO 33732000
|
||||
BEGIN%%%%%%%%%%%%%%% %%%MCS9A33733000
|
||||
BUZZ(SOFTWAREINTERRUPTLOCK); 33734000
|
||||
IF BOOLEAN(NEXTINTERRUPTPCW). 33735000
|
||||
ENABLEBITF 33736000
|
||||
THEN 33737000
|
||||
BEGIN%%%%%%%%%%%%%%% %%%MCS1033738000
|
||||
INTERRUPTPOINTER~INTERRUPTPOINTER&STUFFEDIRW(,,*,*,*); 33739000
|
||||
INSERT(SOFTWAREINTERRUPTQ,REFERENCEINTERRUPTPOINTER); 33740000
|
||||
IF WORDSTACK[NEXTSNR,0].TAG = SINGL 33741000
|
||||
THEN HEYOU 33742000
|
||||
ELSE IF STACK[NEXTSNR,READYQLINK].FULLINDICATORF=0 33743000
|
||||
THEN 33744000
|
||||
BEGIN%%%%%%%%%%%%%%% %%%MCS5033745000
|
||||
BUZZ(READYQ); 33746000
|
||||
INSERTINQ(READYQ,DUMMYREF,MYSNR); 33747000
|
||||
33748000
|
||||
UNLOCK(READYQ); 33749000
|
||||
END ;%%%%%%%%%%%%%%% %%%MCS5033750000
|
||||
END ;%%%%%%%%%%%%%%% %%%MCS1033751000
|
||||
NEXTSTACK~INTERRUPTPOINTER 33752000
|
||||
~STACK[NEXTSNR,DISPPCW-1]; 33753000
|
||||
UNLOCK(SOFTWAREINTERRUPTLOCK); 33754000
|
||||
END %%%%%%%%%%%%%%% %%%MCS9A33755000
|
||||
UNTIL INTERRUPTQCOUNT~INTERRUPTQCOUNT-1=0; 33756000
|
||||
END ;%%%%%%%%%%%%%%% %%%MCS 933757000
|
||||
THEEVENT~EVENTWORD1&FIRSTEVENTWORD(,*,0,0,*,1,0); 33758000
|
||||
GO LOOKFORANOTHER; 33759000
|
||||
END ;%%%%%%%%%%%%%%% %%%MCS 733760000
|
||||
FINI: 33761000
|
||||
END EVENTHANDLER; 33762000
|
||||
SAVE PROCEDURE GAOLER(EVENTT, UNLOCK); 33762100
|
||||
VALUE UNLOCK; 33762120
|
||||
EVENT EVENTT; 33762140
|
||||
BOOLEAN UNLOCK; 33762160
|
||||
COMMENT THE GAOLER KEEPS THE KEYS TO THE INTERLOCKS; 33762180
|
||||
BEGIN 33762200
|
||||
LABEL LOCKUP; 33762220
|
||||
IF UNLOCK THEN 33762240
|
||||
BEGIN 33762260
|
||||
FREE(EVENTT); 33762280
|
||||
CAUSE(EVENTT); 33762300
|
||||
END 33762320
|
||||
ELSE 33762340
|
||||
LOCKUP: IF FIX(EVENTT) THEN 33762360
|
||||
BEGIN 33762400
|
||||
WAIT(EVENTT); 33762420
|
||||
GO LOCKUP; 33762440
|
||||
END 33762460
|
||||
ELSE 33762465
|
||||
RESET(EVENTT); 33762470
|
||||
END GAOLER; 33762480
|
||||
SAVE WORD PROCEDURE SOFTWAREINTERRUPTDEC(THEEVENT,EVENTWORD1,EVENTWORD2,33763000
|
||||
KLUDGE,PCWPOINTER); 33764000
|
||||
VALUE EVENTWORD1,EVENTWORD2,PCWPOINTER,KLUDGE; 33765000
|
||||
WORD THEEVENT, % IRW OR INDEXED DD POINTING TO 33766000
|
||||
% INTERRUPT EVENT 33767000
|
||||
EVENTWORD1, % FIRST WORD OF EVENT 33768000
|
||||
EVENTWORD2, % ZERO USED TO FIX UP SECOND WORD OF 33769000
|
||||
% EVENT AT FIRST ENTRY 33770000
|
||||
PCWPOINTER % POINTER TO INTERRUPT PCW (SIRW) 33771000
|
||||
,KLUDGE % HORRIBLE KLUDGE FOR COMPILER 33772000
|
||||
; 33773000
|
||||
COMMENT 33774000
|
||||
THE ESPOL INTERRUPT DECLARATION PLACES ZERO IN THE FIRST WORD OF 33775000
|
||||
INTERRUPT AND A PCW REFERENCING THE STATEMENT IN THE SECOND WORD. IT33776000
|
||||
GENERATES A CALL ON THIS PROCEDURE. 33777000
|
||||
THIS PROCEDURE LINKS THIS STACK INTO THE INTERRUPT QUEUE BEHIND33778000
|
||||
THE EVENT AFTER FIRST CHECKING THAT THE STACK IS NOT ALREADY SO 33779000
|
||||
LINKED (A RUN TIME ERROR IS NOTED IF THIS CHECK FAILS) 33780000
|
||||
THE INTERRUPT QUEUE IS DERIVED AS FOLLOWS: 33781000
|
||||
(1) THE EVENT DECLARATION HAS PRODUCED A DOUBLE-LENGTH REAL 33782000
|
||||
(2) THE FIRST (ENCOUNTERED) INTERRUPT DECLARATION REFERENCING 33783000
|
||||
THE EVENT CAUSES THE SECOND WORD OF THE EVENT TO POINT TO 33784000
|
||||
THE INTERRUPT PCW.THE SECOND WORD OF THE EVENT IS NOW 33785000
|
||||
ESSENTIALLY A STUFFED IRW EXCEPT FOR ITS TAG FIELD. 33786000
|
||||
(3) THE SECOND AND SUBSEQUENT INTERRUPT DECLARATIONS CAUSE THE33787000
|
||||
FIRST WORD OF INTERRUPT IN THE STACK AT THE END OF THE 33788000
|
||||
INTERRUPT QUEUE TO BE CHANGED FROM ZERO TO A STUFFED IRW 33789000
|
||||
THIS STUFFED IRW POINTS TO THE PCW OF THE NEW 33790000
|
||||
INTERRUPT DECLARATION. 33791000
|
||||
; 33792000
|
||||
BEGIN 33793000
|
||||
DOUBLE EVENTVALUE=EVENTWORD1 %TWO WORDS OF EVENT STARTING WITH33794000
|
||||
%EVENTWORD1 33795000
|
||||
, EVENTPLACE=THEEVENT %THEEVENT INVOKES OVRD.EVENTPLACE33796000
|
||||
% INVOKES STOD.NOTE NO EVAL FOR 33797000
|
||||
% EVENTPLACE, HOWEVER STOD CHASES33798000
|
||||
% IRWS. 33799000
|
||||
; 33800000
|
||||
BOOLEAN FIRST % TRUE WHEN FIRST DECLARATION 33801000
|
||||
; 33802000
|
||||
INTEGER COUNT % NUMBER OF STACKS IN QUEUE (INC THIS ONE) 33803000
|
||||
; 33804000
|
||||
WORD NEXTSTACK % POINTS TO NEXT STACK IN QUEUE 33805000
|
||||
; 33806000
|
||||
REAL NEXTSTACKNO 33807000
|
||||
, DISPSIRW 33808000
|
||||
, MYSNR 33809000
|
||||
; 33810000
|
||||
DEFINE NEXTINTERRUPTSIRW = STACK 33811000
|
||||
[NEXTSTACKNO 33812000
|
||||
~NEXTSTACK.STKNRF,33813000
|
||||
DISPSIRW~NEXTSTACK.DISPF-1 33814000
|
||||
+ NEXTSTACK.SIRWDELTAF]# 33815000
|
||||
; 33816000
|
||||
MYSNR ~ SNR; 33817000
|
||||
SOFTWAREINTERRUPTDEC~KLUDGE; 33818000
|
||||
EVENTWORD1.COUNTF ~ COUNT ~ EVENTWORD1.COUNTF+1; 33819000
|
||||
IF COUNT=1 33820000
|
||||
THEN 33821000
|
||||
BEGIN%%%%%%%%%%%%%%% %%%MCS 133822000
|
||||
% FIRST DECLARATION 33823000
|
||||
FIRST~TRUE; 33824000
|
||||
COMMENT *** THIS CODE SLOPPY-OPTIMISE LATER; 33825000
|
||||
END %%%%%%%%%%%%%%% %%%MCS 133826000
|
||||
ELSE 33827000
|
||||
33828000
|
||||
BEGIN%%%%%%%%%%%%%%% %%%MCS 233829000
|
||||
% SECOND AND SUBSEQUENT DECS. 33830000
|
||||
NEXTSTACK~SECONDWORD(EVENTVALUE); 33831000
|
||||
DO 33832000
|
||||
BEGIN%%%%%%%%%%%%%%% %%%MCS 333833000
|
||||
NEXTSTACK ~ NEXTINTERRUPTSIRW; 33834000
|
||||
33835000
|
||||
IF MYSNR=NEXTSTACKNO THEN KILLME(INTERRUPTDEC); 33836000
|
||||
END %%%%%%%%%%%%%%% %%%MCS 333837000
|
||||
UNTIL (COUNT~COUNT-1)=1; 33838000
|
||||
STACK[NEXTSTACKNO,DISPSIRW-1] ~ PCWPOINTER; 33839000
|
||||
END; %%%%%%%%%%%%%%% %%%MCS 233840000
|
||||
%%%%%%%%%%%%%%% CLEAN UP 33841000
|
||||
EVENTWORD1.EVENTLOCKBITF~0; 33842000
|
||||
EVENTWORD1.TAG~DOUBL; 33843000
|
||||
IF FIRST 33844000
|
||||
THEN BEGIN 33845000
|
||||
COMMENT *** (NO GOOD) EVENTWORD2~PCWPOINTER&STUFFEDIRW(DOUBL,*,*,*,*);33846000
|
||||
PCWPOINTER.TAG~DOUBL;EVENTWORD2~PCWPOINTER; 33847000
|
||||
THEEVENT~EVENTWORD1; 33848000
|
||||
COMMENT THIS IS TERRIBLE,DOUBLE TAG SCREWS EVERYTHING; 33849000
|
||||
EVENTPLACE~EVENTVALUE; 33850000
|
||||
COMMENT *** OPTIMISE LATER; 33851000
|
||||
END 33852000
|
||||
ELSE THEEVENT ~ EVENTWORD1; % INVOKES OVRD 33853000
|
||||
END SOFTWAREINTERRUPTDEC; 33854000
|
||||
SAVE PROCEDURE HOLD; 33855000
|
||||
COMMENT SENDS A PROCESS TO SLEEP. THE PROCESS WILL NOT WAKE UP UNTIL 33856000
|
||||
A SOFTWARE INTERRUPT IS DIRECTED TO IT 33857000
|
||||
IF THERE IS NOTHING IN THE READYQ, THE PROCESS ENTERS A 33858000
|
||||
NOTHING TO DO LOOP (WITH INTERRUPTS ALLOWED). SHOULD A SOFTWARE33859000
|
||||
INTERRUPTED BE DIRECTED AT IT IN THIS CONDITION, IT WILL BE 33860000
|
||||
INTERRUPTED BY A HEYOU (HARDWARE) INTERRUPT 33861000
|
||||
THE HEYOU INTERRUPT WILL TURN ON THE HEYOUINTERRUPT FIELD 33862000
|
||||
TO INDICATE THE PROCESSING OF THE SOFTWARE INTERRUPT 33863000
|
||||
33864000
|
||||
PART OF THE NOTHING TO DO LOOP TESTS THE READYQLINK AND 33865000
|
||||
THE PROCESS EXITS IF IT IS NON ZERO 33866000
|
||||
; 33867000
|
||||
BEGIN 33868000
|
||||
REAL MYSNR 33869000
|
||||
; 33870000
|
||||
LABEL LOOKFORNEWPROCESS 33871000
|
||||
,FINI 33872000
|
||||
; 33873000
|
||||
SETINTERVALTIMER; 33874000
|
||||
MYSNR~SNR; 33875000
|
||||
BUZZCONTROL(READYQ); % *** BUZZ 33876000
|
||||
LOOKFORNEWPROCESS: 33877000
|
||||
IF NOTHINGTODO 33878000
|
||||
THEN IF WORDSTACK[MYSNR,LINKPLACE].HEYOUINTERRUPTF!0 33879000
|
||||
THEN 33880000
|
||||
BEGIN%%%%%%%%%%%%%%% %%%MCS 133881000
|
||||
WORDSTACK[MYSNR,LINKPLACE].HEYOUINTERRUPTF~0; 33882000
|
||||
UNLOCK(READYQ); 33883000
|
||||
GO FINI; 33884000
|
||||
END %%%%%%%%%%%%%%% %%%MCS 133885000
|
||||
ELSE LOOKFORSOMETHING 33886000
|
||||
ELSE MOVETONEXTONEINREADYQ; 33887000
|
||||
FINI: 33888000
|
||||
END HOLD; 33889000
|
||||
SAVE PROCEDURE HOLDINITIALISE; 33890000
|
||||
COMMENT THIS PROCEDURE IS ENTERED FROM INITIALISE AND PERFORMS THE 33891000
|
||||
FOLLOWING FUNCTIONS: 33892000
|
||||
A.FORGETS SPACE ASSOCIATED WITH INITIALISE 33893000
|
||||
B.FIXES UP STACK SO THAT RUN WILL BE ENTERED WHEN IT IS 33894000
|
||||
MOVED TO LATER ON (I.E. IT IS AN INDEPENDENTRUNNER STACK) 33895000
|
||||
C.ENTERS A NOTHING-TO-DO LOOP 33896000
|
||||
; 33897000
|
||||
BEGIN 33898000
|
||||
INTEGER I 33899000
|
||||
, STACKNO 33899200
|
||||
; 33900000
|
||||
MONITOR JACKMONITOR(IRSTACKS) 33901000
|
||||
; 33902000
|
||||
REAL STAKADRES 33903000
|
||||
, MYSNR 33904000
|
||||
; 33905000
|
||||
ARRAY MYSTACK[*]; 33906000
|
||||
WORD ARRAY MYWORDSTACK = MYSTACK[*]; 33907000
|
||||
33908000
|
||||
LABEL FIXUPPROCESSOR 33909000
|
||||
; 33910000
|
||||
INTEGER HI % *** FOR MONITOR ONLY 33911000
|
||||
; 33912000
|
||||
MONITOR JACKMONITOR(HI) 33913000
|
||||
; 33914000
|
||||
HI~HI; % *** FOR MONITOR ONLY 33915000
|
||||
MYSNR ~ SNR; 33916000
|
||||
PIRSTACKS~IRSTACKS~SET(IRSTACKS,MYSNR); 33917000
|
||||
WORDSTACK[MYSNR,PROCESSNATUREPLACE].DEDICATEDSTACKF ~ 1; 33918000
|
||||
IF NOT LOCK(FIRSTLOK) 33919000
|
||||
THEN BEGIN %%%MCS000010033920000
|
||||
PERIPHERALINITIALIZE; 33921000
|
||||
FORGETSPACE(SAVE1ADDRESS); 33922000
|
||||
33922500
|
||||
IF INDEPENDENTRUNNERSTACKS > NUMBEROFPROCESSORS 33923000
|
||||
THEN 33924000
|
||||
BEGIN %%%MCS000012533925000
|
||||
COMMENT WE HAVE TO BUILD SOME MORE INDEPENDENT RUNNER STACKS; 33926000
|
||||
DISABLEOVERLAY; 33927000
|
||||
FOR I~NUMBEROFPROCESSORS+1 STEP 1 UNTIL INDEPENDENTRUNNERSTACKS DO 33928000
|
||||
BEGIN %%%MCS000015033929000
|
||||
IRSTACKS~SET(IRSTACKS,(STACKNO~GETINDEPENDENTRUNNERSTACK( 33930000
|
||||
STAKADRES)));33931000
|
||||
WORDSTACK[STACKNO,LINKPLACE ].DEDICATEDSTACKF ~ 1; 33932000
|
||||
COMMENT *** 33933000
|
||||
CHANGESPACE(STAKADRES); 33934000
|
||||
END; %%%MCS000015033935000
|
||||
ENABLEOVERLAY; 33936000
|
||||
END %%%MCS000012533937000
|
||||
ELSE INDEPENDENTRUNNERSTACKS~I~ 33938000
|
||||
NUMBEROFPROCESSORS ; 33939000
|
||||
PIRSTACKS~IRSTACKS~RESET(IRSTACKS,TERMINATESTACK~MYSNR); 33946000
|
||||
NOTFIRSTWAIT~TRUE; COMMENT *** IS THIS A KLUDGE; 33947000
|
||||
33948000
|
||||
END; %%%MCS000010033949000
|
||||
33950000
|
||||
MYSTACK~STACK[MYSNR ,*]; 33951000
|
||||
MYSTACK[COREPLACE]~IRCORE; 33952000
|
||||
MYSTACK[PROCTIMEPLACE]~IRPROCTIME; 33953000
|
||||
MYSTACK[IOTIMEPLACE]~IRIOTIME; 33954000
|
||||
MYWORDSTACK[FIRSTPLACE]~IRTOSCW; 33954100
|
||||
MYWORDSTACK[FIRSTMSCWPLACE]~IRMSCW1; 33955000
|
||||
MYWORDSTACK[FIRSTRCWPLACE]~IRRCW1; 33956000
|
||||
MYWORDSTACK[SECNDMSCWPLACE]~IRMSCW2&MARKSTACKWD(*,*,*,MYSNR 33957000
|
||||
,*,*,*,*); 33958000
|
||||
MYWORDSTACK[RETURNCONTROLWORDPLACE]~RUNRETURNCONTROLWORD; 33959000
|
||||
LASTNOTAVAILABLEINVECTOR~(FIRSTAVAILABLEINVECTOR~FIRSTONE 33959020
|
||||
(IRSTACKS))-1; 33959040
|
||||
FORK(DIRECTORYCOMPLEMENT, SYSTEMDIRECTORY); 33959060
|
||||
HOLD; 33959200
|
||||
END HOLDINITIALISE; 33960000
|
||||
SAVE 33960100
|
||||
INTEGER PROCEDURE GETINDEPENDENTRUNNERSTACK(STAKADRES); 33961000
|
||||
REAL STAKADRES 33962000
|
||||
; 33963000
|
||||
BEGIN 33964000
|
||||
INTEGER NEWSTACK 33965000
|
||||
; 33967000
|
||||
INTEGER GIR ; % ***FOR MONITOR ONLY 33970000
|
||||
MONITOR JACKMONITOR(GIR); 33971000
|
||||
STAKADRES~GETSPACE ( INDEPENDENTRUNNERCORE 33973000
|
||||
, 0 33974000
|
||||
, 0&SPACETYPE(1,1,1,0) 33975000
|
||||
, 0 33976000
|
||||
) 33977000
|
||||
; 33978000
|
||||
GIR~STAKADRES; %*** FOR MONITOR ONLY 33979000
|
||||
M[STAKADRES-LINKSIZE].INUSEID~NEWSTACK~ 33980000
|
||||
GETINDEPENDENTRUNNERSTACK ~ 33981000
|
||||
VECTORINSERT ( GETIRS 33982000
|
||||
, DUMMYAREA & DATADESCRIPTOR 33983000
|
||||
(*,1,0,0,0,0,0,0 33984000
|
||||
,INDEPENDENTRUNNERCORE 33985000
|
||||
,STAKADRES 33986000
|
||||
) 33987000
|
||||
) ; 33988000
|
||||
M[STAKADRES-LINKSIZE+1].ADDRMOM ~ STACKVECTOR.ADDRESSF 33989000
|
||||
+ NEWSTACK; 33990000
|
||||
INITIALIZETOZERO(STAKADRES,INDEPENDENTRUNNERCORE); 33991000
|
||||
LOADFIXEDIRSTACK(NEWSTACK); 33992000
|
||||
UNLOCK(READYQ); 33993000
|
||||
UNLOCK(VECTORLOK[1]); 33993100
|
||||
END GETINDEPENDENTRUNNERSTACK; 33994000
|
||||
33995000
|
||||
SAVE PROCEDURE INDEPENDENTRUNNER(INDEX,PAR); 33996000
|
||||
VALUE INDEX,PAR; 33997000
|
||||
REAL INDEX; 33998000
|
||||
WORD PAR; 33999000
|
||||
BEGIN 34000000
|
||||
INTEGER STACKNO 34001000
|
||||
; 34002000
|
||||
WORD ARRAY IRWORDSTACK [*]; 34002020
|
||||
ARRAY IRSTACK=IRWORDSTACK[*] ; 34002040
|
||||
BOOLEAN NEWSTACK 34002100
|
||||
; 34002200
|
||||
DEFINE MYSNR = SNR # 34002300
|
||||
; 34002400
|
||||
INTEGER IR; % ***FOR MONITOR ONLY 34003000
|
||||
MONITOR JACKMONITOR(IR); 34004000
|
||||
IR~INDEX; %*** FOR MONITOR ONLY 34005000
|
||||
IR~PAR; %*** FOR MONITOR ONLY 34006000
|
||||
BUZZCONTROL(INDEPENDENTRUNNERLOK); 34007000
|
||||
IF INDEX=TERMINATEINDICATOR AND STACK[SNR,PROCESSNATUREPLACE] 34007200
|
||||
.PROCESSHISTORYF =TERMINATEIR 34007400
|
||||
THEN BEGIN %%%MCS000050034007600
|
||||
UNLOCK(INDEPENDENTRUNNERLOK); 34007620
|
||||
STACKINUSE[INDEX]~0 ; 34007700
|
||||
IR~STACKINUSE[TERMINATEINDICATOR]; %*** FOR MONITOR ONLY 34007710
|
||||
GO FINI; 34007800
|
||||
END; %%%MCS000050034007900
|
||||
BUZZCONTROL(IRPARAMETERLOK[INDEX]); 34007910
|
||||
IF(NEWSTACK~(INDEX<ONEONLYINDEX OR((STACKNO~STACKINUSE[INDEX]) 34008000
|
||||
=0))) 34009000
|
||||
34010000
|
||||
THEN 34011000
|
||||
BEGIN %%%MCS000100034012000
|
||||
COMMENT WE HAVE TO GET A NEW STACK; 34013000
|
||||
UNLOCK(IRPARAMETERLOK[INDEX]); 34013100
|
||||
IF INDEX=TERMINATEINDICATOR 34014000
|
||||
THEN BEGIN %%%MCS000080034015000
|
||||
STACKNO ~ TERMINATESTACK; 34015200
|
||||
GO TO FIXEDSTACKS; 34015400
|
||||
END %%%MCS000080034015600
|
||||
ELSE 34016000
|
||||
IF STACKNO~FIRSTONE(IRSTACKS)=0 34017000
|
||||
THEN 34018000
|
||||
34019000
|
||||
COMMENT WE HAVE TO BUILD A NEW STACK; 34020000
|
||||
BEGIN %%%MCS000200034021000
|
||||
STACKNO~GETINDEPENDENTRUNNERSTACK(STACKNO);34022000
|
||||
34023000
|
||||
34024000
|
||||
34025000
|
||||
END %%%MCS000200034026000
|
||||
ELSE 34027000
|
||||
BEGIN %%%MCS000300034028000
|
||||
IRSTACKS~RESET(IRSTACKS,STACKNO~STACKNO-1); 34029000
|
||||
FIXEDSTACKS: REPLACE POINTER(STACK 34029200
|
||||
[STACKNO,RETURNCONTROLWORDPLACE+1] 34029400
|
||||
) BY 0 FOR INDEPENDENTRUNNERCORE 34029600
|
||||
- RETURNCONTROLWORDPLACE -1 34029800
|
||||
OVERWRITE; 34030000
|
||||
END ; %%%MCS000300034030200
|
||||
IRSTACK ~ STACKVECTOR[STACKNO]; 34031000
|
||||
IRWORDSTACK[ FIRSTPLACE]~IRTOSCW; 34031200
|
||||
IRWORDSTACK [IRPARAMETERPLACE]~PAR; 34031500
|
||||
IRWORDSTACK [IRPCWPLACE]~0&NORMALIRW(,,IRPCWSTARTPLACE+INDEX); 34032000
|
||||
PUTINJOBIDANDTIME(IRWORDSTACK ,STACKNO); 34032500
|
||||
IRWORDSTACK [SECNDMSCWPLACE]~IRMSCW2&MARKSTACKWD(*,*,*,STACKNO,34033000
|
||||
*,*,*,*); 34033500
|
||||
IRWORDSTACK [RETURNCONTROLWORDPLACE]~ RUNRETURNCONTROLWORD; 34034000
|
||||
IRSTACK [PRIORITYPLACE]~ IRPRIORITIES[INDEX]; 34034500
|
||||
IRSTACK [PROCESSNATUREPLACE]~*&NATUREOFPROCESS(IF INDEX = 34035000
|
||||
TERMINATEINDICATOR THEN TERMINATEIR ELSE INDEPENDENT, 34035500
|
||||
INDEX);34035800
|
||||
IRSTACK [STACKSIZEPLACE]~INDEPENDENTRUNNERCORE; 34036000
|
||||
COMMENT *** WE SHOULD USE DIFFERENT STACK SIZES FOR DIFFERENT IR S; 34036200
|
||||
END ELSE UNLOCK(IRPARAMETERLOK[INDEX]); %%%MCS000100034036500
|
||||
IF INDEX } ONEONLYINDEX THEN 34037000
|
||||
BEGIN %%%MCS000400034038000
|
||||
BUZZCONTROL(IRPARAMETERLOK[INDEX]); 34039000
|
||||
STACK[STACKNO,IRPARAMETERPLACE]~*+1; 34040000
|
||||
UNLOCK(IRPARAMETERLOK[INDEX ]); 34041000
|
||||
34042000
|
||||
END ; %%%MCS000400034043000
|
||||
STACKINUSE[INDEX ]~STACKNO; 34043100
|
||||
IF INDEX = TERMINATEINDICATOR THEN 34043200
|
||||
BEGIN %%%MCS000500034043300
|
||||
BUZZCONTROL(IRPARAMETERLOK[TERMINATEINDICATOR]); 34043400
|
||||
INSERTINQ(TERMINATEQ,DUMMYREF,MYSNR ); 34043500
|
||||
UNLOCK(IRPARAMETERLOK[TERMINATEINDICATOR]); 34043600
|
||||
END ; %%%MCS000500034043700
|
||||
UNLOCK(INDEPENDENTRUNNERLOK); 34044000
|
||||
BUZZCONTROL(READYQ); 34045200
|
||||
IF NEWSTACK THEN 34046000
|
||||
INSERTINQUEUE(OTHERREDY,STACKNO); 34047000
|
||||
FINI: 34047200
|
||||
UNLOCK(READYQ); 34048000
|
||||
EXIT; 34048100
|
||||
END INDEPENDENTRUNNER; 34049000
|
||||
SAVE 34050000
|
||||
PROCEDURE RUN (PARAMETER,PROCEEDURE); 34051000
|
||||
VALUE PARAMETER 34052000
|
||||
; 34053000
|
||||
WORD PARAMETER 34054000
|
||||
; 34055000
|
||||
PROCEDURE PROCEEDURE 34056000
|
||||
; 34057000
|
||||
COMMENT INDEPENDENT RUNNER STACKS, INITIATE STACKS AND JOB (D2) STACKS 34058000
|
||||
ALL EXIT TO RUN AFTER A MVST TAKES THEM OUT OF THE READYQ FOR 34058020
|
||||
THE FIRST TIME 34058040
|
||||
RUN DETERMINES (FROM "NATURE OF PROCESS" IN THE PROCESS 34058060
|
||||
STACK) WHETHER INITIATE, AN INDEPENDENT RUNNER OR A NORMAL 34058080
|
||||
STATE PROGRAM (WHICH MAY BE A TYPED OR UNTYPED PROCEDURE 34058100
|
||||
REQUIRING OR NOT REQUIRING PARAMETERS) IS TO BE ENTERED 34058120
|
||||
UPON RETURN TO RUN (AT EXIT OR RETURN FROM THE CALLED 34058140
|
||||
PROCEDURE), RUN TAKES APPROPRIATE ACTION AS REQUIRED BY 34058160
|
||||
COMPILERS, DIFFERENT INDEPENDENT RUNNERS ETC. AND THEN CALLS 34058180
|
||||
TERMINATE 34058200
|
||||
; 34059000
|
||||
BEGIN 34059200
|
||||
REAL PROCESSNATUR 34059300
|
||||
, RESULT 34059400
|
||||
, TEMPORARY = RESULT 34059500
|
||||
, MYSNR 34059600
|
||||
; 34060000
|
||||
DEFINE COMPILER = PROCESSNATUR 34060200
|
||||
.PROCESSHISTORYF!INDEPENDENT AND 34060220
|
||||
(TEMPORARY~PROCESSNATUR.PROCESSCLASSF)34060240
|
||||
}FIRSTCOMPILEROPTION AND 34060260
|
||||
TEMPORARY{LASTCOMPILEROPTION# 34060400
|
||||
, IFINDEPENDENTRUNNER 34060600
|
||||
= IF (PROCESSNATUR~MYSTACK[PROCESSNATUREPLACE]) 34060800
|
||||
.PROCESSHISTORYF=INDEPENDENT 34060802
|
||||
OR PROCESSNATUR.PROCESSHISTORYF=TERMINATEIR34060805
|
||||
OR PROCESSNATUR.INITIATESTACKF=1# 34060810
|
||||
, SYNTAXTOG = PROCESSNATUR.PROCESSCLASSF= 34060820
|
||||
COMPILENSYNTAXJOB# 34060830
|
||||
; 34061000
|
||||
ARRAY MYSTACK[*] 34061200
|
||||
; 34062000
|
||||
REAL PROCEDURE REALPROCEEDURE=PROCEEDURE;NULL; 34062010
|
||||
INTEGER GALLOP ; % *** FOR MONITOR ONLY 34064740
|
||||
MONITOR JACKMONITOR(GALLOP); 34064760
|
||||
GALLOP~TRACE(0); 34064800
|
||||
MYSTACK~STACKVECTOR[MYSNR~SNR]; 34065000
|
||||
LOSR~MYSTACK[STACKSIZEPLACE]-STACKOFLOWSIZE; 34065200
|
||||
IFINDEPENDENTRUNNER 34066000
|
||||
THEN 34066020
|
||||
BEGIN %%%MCS000100034066040
|
||||
PROCEEDURE(PARAMETER); 34066200
|
||||
END %%%MCS000100034066800
|
||||
ELSE 34066900
|
||||
BEGIN %%%MCS000150034067000
|
||||
BOJMESSER(MYSNR); 34067200
|
||||
IF COMPILER 34067400
|
||||
THEN 34067600
|
||||
BEGIN %%%MCS000200034067800
|
||||
RESULT~REALPROCEEDURE(SYNTAXTOG);34068000
|
||||
END %%%MCS000200034070600
|
||||
ELSE 34070800
|
||||
BEGIN %%%MCS000300034071000
|
||||
COMMENT WE HAVE A PROGRAM WITH NO PARAMETERS; 34071200
|
||||
PROCEEDURE; 34071400
|
||||
END; %%%MCS000300034072800
|
||||
EOJMESSER(MYSNR); 34073000
|
||||
END; %%%MCS000150034074000
|
||||
COMMENT *** 5 MARCH 1969, THE ABOVE CODE WILL HAVE TO BE EXPANDED TO 34074010
|
||||
CATER FOR MORE EXTENSIVE TREATMENT OF COMPILERS AND PROGRAMS AS34074020
|
||||
(TYPED OR UNTYPED) PROCEDURES. ALSO THE FOLLOWING TERMINATE 34074040
|
||||
CODE MAY REQUIRE ALTERING 34074060
|
||||
; 34074080
|
||||
FORK(TERMINATE,0); 34075000
|
||||
IF SIMULATING THEN 34075010
|
||||
GALLOP~GALLOP; %*** FOR MONITOR ONLY 34075100
|
||||
TRACE(GALLOP); 34075200
|
||||
HOLD; 34076000
|
||||
END RUN ; 34077000
|
||||
SAVE PROCEDURE IRTEST(IND); INTEGER IND; 34077200
|
||||
BEGIN 34078000
|
||||
MONITOR JACKMONITOR(IND); 34079000
|
||||
REAL MYSNR; 34080000
|
||||
REAL OLDTIME; 34080100
|
||||
MONITOR JACKMONITOR(MYSNR); 34081000
|
||||
IND~IND; %*** FOR MONITOR ONLY 34082000
|
||||
MYSNR~SNR; %*** FOR MONITOR ONLY 34083000
|
||||
DO BEGIN 34083100
|
||||
IF(OLDTIME~OLDTIME+1) MOD 10 = 0 THEN 34083200
|
||||
FORK(STATUS,0); 34083300
|
||||
WAIT(TIMERINTERRUPTEVENT); 34083400
|
||||
END UNTIL FALSE; 34083500
|
||||
HOLD; 34084000
|
||||
END IRTEST; 34085000
|
||||
SAVE 34085300
|
||||
34085310
|
||||
PROCEDURE LOADFIXEDIRSTACK(STACKNO); 34086000
|
||||
VALUE STACKNO ; 34087000
|
||||
INTEGER STACKNO 34088000
|
||||
; 34089000
|
||||
COMMENT PUTS THE FIRST (TOSCW),SECOND (SELF IDENTIFYING MSCW) WORDS 34090000
|
||||
IN AN INDEPENDENT RUNNER STACK.PUTS THE RUN RETURN CONTROL 34091000
|
||||
WORD AND THE PROCESS INFORMATION WHICH IS FIXED FOR ALL 34092000
|
||||
INDEPENDENT RUNNERS I.E. CORE ESTIMATE,PROCESSOR TIME 34093000
|
||||
ESTIMATE,I/O TIME ESTIMATE.PUTS IN SOME OTHER CONTROL WORDS 34094000
|
||||
; 34095000
|
||||
BEGIN 34096000
|
||||
INTEGER LFI = STACKNO % *** FOR MONITOR ONLY 34097000
|
||||
; 34098000
|
||||
MONITOR JACKMONITOR(LFI) 34099000
|
||||
; 34100000
|
||||
ARRAY MYSTACK[*]; 34101000
|
||||
WORD ARRAY MYWORDSTACK =MYSTACK[*] 34102000
|
||||
; 34103000
|
||||
LFI~LFI; % *** FOR MONITOR ONLY 34104000
|
||||
MYSTACK~STACK[STACKNO,*]; 34105000
|
||||
MYWORDSTACK[FIRSTPLACE]~IRTOSCW; 34106000
|
||||
MYWORDSTACK[LINKPLACE]~0&MARKSTACKWD(,*,1,STACKNO,*,*,*,*); 34107000
|
||||
34110100
|
||||
MYWORDSTACK[FIRSTMSCWPLACE]~IRMSCW1; 34111000
|
||||
MYWORDSTACK[FIRSTRCWPLACE]~IRRCW1; 34112000
|
||||
EXIT; 34115100
|
||||
END LOADFIXEDIRSTACK; 34116000
|
||||
PROCEDURE CONTROLCARD (PARAMETER); 38000000
|
||||
WORD PARAMETER; 38001000
|
||||
BEGIN COMMENT CONTROL CARD PROCESSES THE EBCDIC RECORD AS 38002000
|
||||
DESCRIBED BY THE AREA DESCRIPTOR OF THE IOCB AND38003000
|
||||
READS ADDITIONAL RECORDS UNTIL A "LABEL", "DATA"38004000
|
||||
OR "END" IS ENCOUNTERED. WHILE A CONTROL DECK 38005000
|
||||
IS BEING PROCESSED, THE UNIT OF THE IOCB IS 38006000
|
||||
ASSIGNED TO THE CONTROL CARD PROCEDURE. THE 38007000
|
||||
FINAL OUTPUT OF CONTROLCARD IS ONE OR MORE SHEET38008000
|
||||
ENTRIES OR AN ASSIGNMENT OF A LABEL TO A UNIT. 38009000
|
||||
;38010000
|
||||
REFERENCE IOCB =PARAMETER; 38011000
|
||||
INTEGER UNITNO = PARAMETER; 38012000
|
||||
VALUE ARRAY RESERVED ~ (0,0,0,0,0,0,0,0,0,0,0,0,0,0, 8"UNKNOWNID", 0 38013000
|
||||
, 8"# " , 114800 % CLASS 148 38014000
|
||||
, 8". " , 114600 % CLASS 146 38015000
|
||||
, 8"~ " , 114100 % CLASS 141 38016000
|
||||
, 8"- " , 114500 % CLASS 145 38017000
|
||||
, 8"; " , 114300 % CLASS 143 38018000
|
||||
, 8"/ " , 114700 % CLASS 147 38019000
|
||||
, 8", " , 114200 % CLASS 142 38020000
|
||||
,40"7F4040404040", 114400 % QUOTE MARK CLASS 144 38021000
|
||||
,40"6F4040404040", 114100 % QUEST MARK CLASS 141 38022000
|
||||
, 8"ALGOL " , 505202 % CLASS 52 CASE 2 38023000
|
||||
, 8"ALPHA " , 513600 % CLASS 136 38024000
|
||||
, 8"BACKUP" , 608900 % CLASS 89 38025000
|
||||
, 8"CC " , 214000 % CLASS 140 38026000
|
||||
, 8"CHANGE" , 600701 % CLASS 7 CASE 1 38027000
|
||||
, 8"COBOL " , 506502 % CLASS 65 CASE 2 38028000
|
||||
, 8"COMMON" , 603902 % CLASS 39 CASE 2 38029000
|
||||
, 8"COMPILE" , 700301 % CLASS 3 CASE 1 38030000
|
||||
, 8"CORE " , 404002 % CLASS 40 CASE 2 38031000
|
||||
, 8"DATA " , 400801 % CLASS 8 CASE 1 38032000
|
||||
, 8"DATAB " , 501401 % CLASS 14 CASE 1 38033000
|
||||
, 8"DISK " , 407900 % CLASS 79 38034000
|
||||
, 8"DISPLAY" , 708300 % CLASS 83 38035000
|
||||
, 8"DUMP " , 400601 % CLASS 6 CASE 1 38036000
|
||||
, 8"END " , 302401 % CLASS 24 CASE 1 38037000
|
||||
, 8"ESPOL " , 505402 % CLASS 54 CASE 2 38038000
|
||||
, 8"EXECUTE" , 700201 % CLASS 2 CASE 1 38039000
|
||||
, 8"EXTERNAL" , 806600 % CLASS 66 38040000
|
||||
, 8"FILE " , 403502 % CLASS 35 CASE 2 38041000
|
||||
, 8"FORM " , 413700 % CLASS 137 38042000
|
||||
, 8"FORTRAN" , 705302 % CLASS 53 CASE 2 38043000
|
||||
, 8"FREE " , 401201 % CLASS 12 CASE 1 38044000
|
||||
, 8"GO ", 206900 % CLASS 69 38045000
|
||||
, 8"IO " , 203702 % CLASS 37 CASE 2 38046000
|
||||
, 8"LIBRARY" , 706700 % CLASS 67 38047000
|
||||
, 8"LOAD " , 400501 % CLASS 5 CASE 1 38048000
|
||||
, 8"PAPER " , 508600 % CLASS 86 38049000
|
||||
, 8"PRINT " , 508700 % CLASS 87 38050000
|
||||
, 8"PRIORITY" , 803802 % CLASS 38 CASE 2 38051000
|
||||
, 8"PROCESS" , 703602 % CLASS 36 CASE 2 38052000
|
||||
, 8"PROTECT" , 711200 % CLASS 112 38053000
|
||||
, 8"PUBLIC" , 601301 % CLASS 13 CASE 1 38054000
|
||||
, 8"PUNCH " , 508500 % CLASS 85 38055000
|
||||
, 8"RANDOM" , 612500 % CLASS 125 38056000
|
||||
, 8"READER" , 608800 % CLASS 88 38057000
|
||||
, 8"RELEASE" , 701101 % CLASS 11 CASE 1 38058000
|
||||
, 8"REMOTE" , 608400 % CLASS 84 38059000
|
||||
, 8"REMOVE" , 600401 % CLASS 4 CASE 1 38060000
|
||||
, 8"RUN " , 300101 % CLASS 1 CASE 1 38061000
|
||||
, 8"SAVE " , 411100 % CLASS 111 38062000
|
||||
, 8"SERIAL" , 612300 % CLASS 123 38063000
|
||||
, 8"SPECIAL" , 710000 % CLASS 100 38064000
|
||||
, 8"STACK " , 504102 % CLASS 41 CASE 2 38065000
|
||||
, 8"SYNTAX" , 606800 % CLASS 68 38066000
|
||||
, 8"TAPE7 " , 508100 % CLASS 81 38067000
|
||||
, 8"TAPE9 " , 508200 % CLASS 82 38068000
|
||||
, 8"TAPE " , 408000 % CLASS 80 38069000
|
||||
, 8"UNIT " , 413800 % CLASS 138 38070000
|
||||
, 8"UNLABELED" , 913900 % CLASS 139 38071000
|
||||
, 8"UPDATE" , 612400 % CLASS 124 38072000
|
||||
, 8"USER " , 401001 % CLASS 10 CASE 1 38073000
|
||||
, 8"USE " , 300901 % CLASS 9 CASE 1 38074000
|
||||
); 38075000
|
||||
DEFINE 38076000
|
||||
RUNCLS = 1#, 38077000
|
||||
EXECUTECLS = 2#, 38078000
|
||||
COMPILECLS = 3#, 38079000
|
||||
REMOVECLS = 4#, 38080000
|
||||
LOADCLS = 5#, 38081000
|
||||
DUMPCLS = 6#, 38082000
|
||||
CHANGECLS = 7#, 38083000
|
||||
DATACLS = 8#, 38084000
|
||||
USECLS = 9#, 38085000
|
||||
USERCLS = 10#, 38086000
|
||||
RELEASECLS = 11#, 38087000
|
||||
FREECLS = 12#, 38088000
|
||||
PUBLICCLS = 13#, 38089000
|
||||
DATABCLS =14#, 38090000
|
||||
ENDCLS = 24#, 38091000
|
||||
FILECLS = 35#, 38092000
|
||||
PROCESSCLS = 36#, 38093000
|
||||
IOCLS = 37#, 38094000
|
||||
PRIORITYCLS = 38#, 38095000
|
||||
COMMONCLS = 39#, 38096000
|
||||
CORECLS = 40#, 38097000
|
||||
STACKCLS = 41#, 38098000
|
||||
ALGOLCLS = 52#, 38099000
|
||||
FORTRANCLS = 53#, 38100000
|
||||
ESPOLCLS = 54#, 38101000
|
||||
COBOLCLS = 65#, 38102000
|
||||
EXTERNALCLS = 66#, 38103000
|
||||
LIBRARYCLS = 67#, 38104000
|
||||
SYNTAXCLS = 68#, 38105000
|
||||
GOCLS = 69#, 38106000
|
||||
DISKCLS = 79#, 38107000
|
||||
TAPECLS = 80#, 38108000
|
||||
TAPE7CLS = 81#, 38109000
|
||||
TAPE9CLS = 82#, 38110000
|
||||
DISPLAYCLS = 83#, 38111000
|
||||
REMOTECLS = 84#, 38112000
|
||||
PUNCHCLS = 85#, 38113000
|
||||
PAPERCLS = 86#, 38114000
|
||||
PRINTCLS = 87#, 38115000
|
||||
READERCLS = 88#, 38116000
|
||||
BACKUPCLS = 89#, 38117000
|
||||
SPECIALCLS = 100#, 38118000
|
||||
SAVECLS = 111#, 38119000
|
||||
PROTECTCLS = 112#, 38120000
|
||||
SERIALCLS = 123#, 38121000
|
||||
UPDATECLS = 124#, 38122000
|
||||
RANDOMCLS = 125#, 38123000
|
||||
ALPHACLS = 1346, 38124000
|
||||
FORMCLS = 137#, 38125000
|
||||
UNITCLS = 138#, 38126000
|
||||
UNLABELEDCLS = 139#, 38127000
|
||||
CCCLS = 140#, 38128000
|
||||
QUESTIONCLS = 141#,% ~ 38129000
|
||||
COMMACLS = 142#,% , 38130000
|
||||
SEMICOLONCLS = 143#,% ; 38131000
|
||||
QUOTECLS = 144#,% " 38132000
|
||||
HYPHENCLS = 145#,% - 38133000
|
||||
PERIODCLS = 146#,% . 38134000
|
||||
SLASHCLS = 147#,% / 38135000
|
||||
CROSSHATCHCLS = 148#,% # 38136000
|
||||
UNKNOWNIDCLS = 0#; 38137000
|
||||
INTEGER MYCOMMON; %%%%% 38138000
|
||||
ARRAY SEGZERO [SIZE(SHEETQ)]; 38139000
|
||||
COMMENT SEGMENT ZERO WILL BE READ INTO THIS ARRAY AND 38140000
|
||||
THE SHEET WILL BE BUILT IN THE ARRAY AND A REF- 38141000
|
||||
ERENCE TO THE ARRAY WILL BE ENTERED IN THE 38142000
|
||||
SHEET.; 38143000
|
||||
ARRAY SEGZEROSKELETON [SIZE(SHEETQ)]; 38144000
|
||||
ARRAY SEGZEROTEMP [*] ; %%%%%% 38145000
|
||||
COMMENT PRESERVE FOR LOOPING; 38146000
|
||||
WORD SEGZEROWORD = SEGZEROSKELETON; 38147000
|
||||
WORD ARRAY HEADERW [*]; COMMENT THE DISK HEADER RETURNED BY 38148000
|
||||
DIRECTORYSEARCH BASED ON NAME POINTER;38149000
|
||||
ARRAY SOURCEAREA [15], 38150000
|
||||
COMMENT THE AREA DESCRIPTOR OF THE IOCB.; 38151000
|
||||
ACCUMULATOR [13]; 38152000
|
||||
COMMENT THE FIRST 14 WORDS OF THE RESERVED ARRAY. USED 38153000
|
||||
AS A TEMPORARY HOLDING AREA FOR CONTROL CARD 38154000
|
||||
SYNTACTICAL UNITS AND THE RESERVED SEARCH 38155000
|
||||
ARGUMENT (AND STOPPER).; 38156000
|
||||
REAL RESULT COMMENT AN I/O RESULT DESCRIPTOR; 38157000
|
||||
, FILEID COMMENT WAITIO CALLS IT "USER"; 38158000
|
||||
,ACTION COMMENT WAITIO CALLS IT " IOERRORMASK"; 38159000
|
||||
,CONTROLWORD 38160000
|
||||
; 38161000
|
||||
INTEGER COUNT, COMMENT A UTILITY CHARACTER COUNTER.; 38162000
|
||||
LIMIT, COMMENT THE CHARACTERS OF A RECORD THAT ARE38163000
|
||||
TO BE SCANNED.; 38164000
|
||||
WORDDIVCHARSIZE, COMMENT THE NUMBER OF CHARACTERS IN 38165000
|
||||
A WORD.; 38166000
|
||||
T, COMMENT TEMPORARY; 38167000
|
||||
LABELTYPE, 38168000
|
||||
ORIGINALLIMIT, COMMENT THE NUMBER OF CHARACTERS IN A 38169000
|
||||
RECORD.; 38170000
|
||||
RESERVECASE, 38171000
|
||||
CLASS, 38172000
|
||||
WORDCOUNT; COMMENT THE NUMBER OF WORDS REQUIRED TO 38173000
|
||||
CONTAIN AN IDENTIFIER.; 38174000
|
||||
WORD WORDMON; %%%%%%%%%%%%% 38175000
|
||||
REFERENCE SOURCEREFERENCE = SOURCEAREA, 38176000
|
||||
SUCCESSORSHEET, PREDECESSORSHEET; 38177000
|
||||
COMMENT REFERENCES TO THE SHEET ENTRIES FOR THE 38178000
|
||||
PROCESSES THAT ARE DIRECTLY RELATED TO THE 38179000
|
||||
PROCESS REFERENCED BY SEGZERO.; 38180000
|
||||
ARRAY SUCCESSOR = SUCCESSORSHEET [*], 38181000
|
||||
PREDECESSOR = PREDECESSORSHEET [*]; 38182000
|
||||
POINTER ACCUMPOINTER, COMMENT A POINTER TO THE ACCUMULATOR.; 38183000
|
||||
SOURCE, COMMENT THE SOURCE AREA - MAY BE UPDATED.; 38184000
|
||||
ORIGINALSOURCE, COMMENT SOURCE-MAY NOT BE UPDATED; 38185000
|
||||
DESTINATION, COMMENT - DITTO FOR ACCUMULATOR.; 38186000
|
||||
TSOURCE, COMMENT - USUALLY POINTS AT BEGINNING OF 38187000
|
||||
LAST ENTITY SCANNED.; 38188000
|
||||
NAMEPOINTER; COMMENT POINTS TO COMPLETE NAME 38189000
|
||||
CHARACTER STRING.; 38190000
|
||||
BOOLEAN SPECIAL, COMMENT TRUE WHILE A SPECIAL CHARACTER IS38191000
|
||||
TO BE SCANNED.; 38192000
|
||||
ALFA, COMMENT TRUE IF IDENTIFIER TYPE STUFF IS 38193000
|
||||
BEING SCANNED.; 38194000
|
||||
ENDOFRECORD, COMMENT TRUE IF LIMIT HAS BEEN REACHED 38195000
|
||||
OR "." HAS BEEN SEEN.; 38196000
|
||||
CONVERT, COMMENT WHEN TRUE THE SCANNER ATTEMPTS TO 38197000
|
||||
LEAVE A CONVERTED INTEGER IN ACCUMULATOR[0].; 38198000
|
||||
COMPILER, COMMENT TRUE WHEN "COMPILE" HAS BEE SEEN;38199000
|
||||
EXECUTESHEET, COMMENT TRUE WHEN EXECUTE SHEET ENTRY 38200000
|
||||
(IMPLICIT OR EXPLICIT) IS TO BE 38201000
|
||||
ENTERED IN THE SHEET QUEUE.; 38202000
|
||||
SHEETENTERED; COMMENT TRUE WHEN SEGZERO HAS BEEN 38203000
|
||||
ENTERED IN THE SHEETQ.; 38204000
|
||||
LABEL CCERROR, 38205000
|
||||
NATURALDEATH, 38206000
|
||||
NEWLIFE, 38207000
|
||||
EXECUTE, 38208000
|
||||
DATA, 38209000
|
||||
SUICIDE; 38210000
|
||||
DEFINE CONTROLCARDID = 38211000
|
||||
BEGIN 38212000
|
||||
SOURCEAREA [0] ~ CONTROLWORD; 38213000
|
||||
RESULT ~ WAITIO (SOURCEAREA. FILEID, ACTION); 38214000
|
||||
LIMIT ~ORIGINALLIMIT; 38215000
|
||||
SOURCE ~ ORIGINALSOURCE; 38216000
|
||||
CONTROLCARDCHECK; 38217000
|
||||
END #, 38218000
|
||||
CONTROLCARDCHECK = 38219000
|
||||
IF BOOLEAN (RESULT.RDNOTREADY) THEN GO SUICIDE; %STATUS VECTOR KLUDGE 38220000
|
||||
COMMENT - WAIT ON MPX 38220100
|
||||
IF NOT BOOLEAN (RESULT.RDCNTRLCARD) 38221000
|
||||
THEN CONTROLCARDERROR (2); 38222000
|
||||
#, 38223000
|
||||
CONVERTEDINTEGER = 999#, 38224000
|
||||
CHARSIZE = 8#, 38225000
|
||||
QUOTE = 8 """#, 38226000
|
||||
BLANK = 8 " "#, 38227000
|
||||
A =8"A"#, 38228000
|
||||
ZERO = 8"0"#, 38229000
|
||||
DEBLANK (P) = 38230000
|
||||
BEGIN 38231000
|
||||
SCAN P:P FOR T:LIMIT WHILE = BLANK; 38232000
|
||||
ENDOFRECORD ~ LIMIT ~ T =0; 38233000
|
||||
END #, 38234000
|
||||
BLANKIT (PTR, CHARS) = 38235000
|
||||
REPLACE PTR BY BLANK FOR CHARS#, 38236000
|
||||
CONTROLCARDERROR (WHICH) = 38237000
|
||||
BEGIN 38238000
|
||||
GO TO CCERROR; 38239000
|
||||
END #, 38240000
|
||||
LEQACTION = 0#, 38241000
|
||||
CARDACTION =1#, 38242000
|
||||
CODEACTION =2#, 38243000
|
||||
NATUREOFPROCESS(A, V) = 38244000
|
||||
A[PROCESSNATUREPLACE].PROCESSCLASSF ~ V #, 38245000
|
||||
CURRENTTIME = TIMEOFDAY#, %%%%%%%%% 38246000
|
||||
FIXEDFPBSIZE = 4#, 38247000
|
||||
COMPARE (SOURCE, DESTINATION, COUNT) = 38248000
|
||||
IF SOURCE = DESTINATION FOR COUNT 38249000
|
||||
THEN TRUE ELSE FALSE#, 38250000
|
||||
MOVE (SOURCE , DESTINATION , CONDITION) = 38251000
|
||||
REPLACE DESTINATION BY SOURCE CONDITION #, 38252000
|
||||
MOVEUPDATE (SOURCE , DESTINATION , COND) = 38253000
|
||||
REPLACE DESTINATION:DESTINATION BY 38254000
|
||||
SOURCE:SOURCE COND #, 38255000
|
||||
RESERVEINFOWRD = 38256000
|
||||
RESERVED [RESERVEI+((COUNT+WORDDIVCHARSIZE) DIV 38257000
|
||||
WORDDIVCHARSIZE - 38258000
|
||||
(IF COUNT MOD WORDDIVCHARSIZE=0 THEN 1 ELSE 0))]#38259000
|
||||
, 38260000
|
||||
RANGE (LOW, HIGH) = 38261000
|
||||
(CLASS } LOW AND CLASS { HIGH)#, 38262000
|
||||
COUNTDIV = 100000#, 38263000
|
||||
CLASSDIV = 100#, 38264000
|
||||
RESERVECOUNT = RESERVEINFOWRD DIV COUNTDIV#; 38265000
|
||||
FIELD VECTOR = 7:3, 38266000
|
||||
WHICHUNIT = (UNITNO MOD 32+1):1; 38267000
|
||||
MONITOR DONMONITOR ( 38268000
|
||||
SHEETENTERED, 38269000
|
||||
RESULT, 38270000
|
||||
CLASS); 38271000
|
||||
SAVE INTEGER PROCEDURE SCANNER; 38272000
|
||||
BEGIN 38273000
|
||||
INTEGER RESERVEI 38274000
|
||||
end. end. end. end. end. end. end. end. end. end. end. end. end. end. 99999998140723PK
|
||||
?END 99999999
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user