From 8c710f238179391e2dd15702ab5e53ffe750e984 Mon Sep 17 00:00:00 2001 From: Paul Kimpel Date: Fri, 25 Jul 2014 23:31:19 +0000 Subject: [PATCH] Commit initial B6500 MCP Mark 0.0 source, transcribed by James Fehlinger, as of 2014-06-04. --- source/B65MCP/MARK00.esp_m | 175 +++++++++++++++++++++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 source/B65MCP/MARK00.esp_m diff --git a/source/B65MCP/MARK00.esp_m b/source/B65MCP/MARK00.esp_m new file mode 100644 index 0000000..0d08f3b --- /dev/null +++ b/source/B65MCP/MARK00.esp_m @@ -0,0 +1,175 @@ +BEGIN 00000000 +COMMENT MCP LISTING DIRECTORY 00001000 + 010000000 INDEPENDENT RUNNER FORWARD DECLARATION 00002000 + 020000000 FORWARD PROCEDURE DECLARATION 00003000 + 08000000 INITIAL VALUE TABLES 00004000 + 08000000 BCL TO EBCEDIC 00005000 + 08018000 EBCEDIC TO BCL 00006000 + 08084000 TRUTH SETS 00007000 + 08106000 POWER OF TEN TABLES 00007100 + 08247000 CONTROL CARD 00007200 + 09000000 STANDARD QUEUE DECLARATION 00008000 + 10000000 GLOBALS 00009000 + 10017000 INTERRUPT - EVENT HANDLING GLOBALS 00010000 + 10055000 TAG DEFINITION 00011000 + 10075000 CONTROL WORD LAYOUTS 00012000 + 10252000 REGISTERS DEFINITIONS 00013000 + 11000000 STORAGE ALLOCATION GLOBALS 00014000 + 12000000 INITIALIZE GLOBALS 00015000 + 13000000 INPUT - OUTPUT GLOBALS 00016000 + 13056500 VALUE ARRAYS - MCPID,KEYIN GLOSSARIES,ETC. 00016100 + 13276000 KEYIN - SPOUT GLOBALS 00017000 + 13318000 IOQUE QUEUE DECLARATION 00018000 + 13375000 WAITCHANNELQUE QUEUE DECLARATION 00019000 + 14000000 DISK MANAGEMENT 00020000 + 15000000 GETAREA - FORGET AREA GLOBALS 00021000 + 16000000 STANDARD INSERT 00022000 + 16016000 STANDARD DELINK 00023000 + 17000000 NAMEQUE QUEUE DECLARATION 00024000 + 17021000 BLOCKSOFAREAQUE QUEUE DECLARATION 00025000 + 17035000 KEYING QUEUE DECLARATION 00026000 + 18007000 FILE MANAGEMENT 00027000 + 19000000 REPLY MESSAGE 00028000 + 20000000 INDEPENDENT RUNNER GLOBALS 00029000 + 21140000 READYQ QUEUE DECLARATION 00030000 + 21263000 SHEETQ QUEUE DECLARATION 00031000 + 21357000 TERMINATEQ QUEUE DECLARATION 00032000 + 23000000 DIRECTORY MANAGEMENT 00034000 + 24000000 I/0 INTRINSIC DECLARATIONS 00034100 + 30000000 GETSPACE / FORGETSPACE 00035000 + 31000000 GETAREA / FORGETAREA 00036000 + 32000000 INITIALIZE 00037000 + 33000000 HARDWAREINTERRUPT 00038000 + 33167000 PRESENCEBIT 00039000 + 33538000 WHATDOIDO 00040000 + 33567000 EVENTHANDLER 00041000 + 33763000 SOFTWAREINTERRUPTDEC 00042000 + 33855000 HOLD 00043000 + 33890000 HOLDINITIALIZE 00044000 + 33961000 GETINDEPENDENTRUNNERSTACK 00045000 + 33960000 INDEPENDENTRUNNER 00046000 + 34051000 RUN 00047000 + 34086000 LOADFIXDIRSTACK 00048000 + 38000000 CONTROL CARD 00048600 + 40000000 INPUT - OUTPUT ROUNTINES 00049000 + 40005000 STARTIO 00050000 + 40037000 INITIATEIO 00051000 + 40075000 IOREQUEST 00052000 + 40089000 WAITIO 00053000 + 40131000 NEWIO 00054000 + 40154000 IOFINISH 00055000 + 40316000 STATUS 00056000 + 40565000 DISKIO 00057000 + 40597000 DISKWAIT 00058000 + 44022000 DISPLAY ROUTINES 00059000 + 44097000 KEYIN 00060000 + 44176000 SPOUT 00061000 + 50000000 ERROR ROUTINES 00062000 + 50000000 IOERROR 00063000 + 55000000 DISK MANAGEMENT 00064000 + 55018000 FORGETESPDISK 00066000 + 55039000 GETUSERDISK 00067000 + 55123000 FORGETUSERDISK 00068000 + 58000000 LIBRARY MAINTENANCE 00068900 + 59000000 PERIPHERALINITIALIZE 00069000 + 60000000 PROGRAM INTRINSICS 00070000 + 65000000 ARRAYDEC 00071000 + 65174000 BLOCKEXIT 00072000 + 65228000 GOTOSOLVER 00073000 + 70000000 PROGRAM INPUT- OUTPUT INTRINSICS 00074000 + 80000000 SELECTION - PROCESS HANDLING 00075000 + 80361000 INITIATE 00076000 + 80519000 SELECTION 00077000 + 80600000 TERMINATE 00077200 + 99000000 MONITOR 00078000 + 99970000 MCP OUTER BLOCK 00079000 + ; 00999999 +COMMENT FOLLOWING ARE FORWARD DECLARATIONS FOR PROCEDURES CAPABLE OF 01000000 + RUNNING AS INDEPENDENT RUNNERS. THE FORWARD DECLARATION FOR 01001000 + A NEW INDEPENDENT RUNNER MUST APPEAR BEFORE THAT FOR STATUS IF 01001500 + IT IS CAPAPABLE OF MULTIPLE REPRESENTATION. AN INDICATOR MAY. 01002000 + BE ASSOCIATED WITH AN INDEPENDENT RUNNER (SEE CROSS FEFERENCE 01002500 + FOR "TERMINATE" AND "TERMINATEINDICATOR" FOR HOW THIS IS 01003000 + EFFECTED). THIS INDICATOR ISNOT NECESSARY TO THE 01003500 + IMPLEMENTATION, HOWEVER IT IS NECESSARY IF INDEPENDENTRUNNER IS01004000 + 01004300 + TO RECOGNISE THE NEW RUNNER AS A SPECIAL CASE 01004500 + 01004600 + ; 01005000 +PROCEDURE CONTROLCARD (PARAMETER); 01006000 + WORD PARAMETER; FORWARD; 01007100 +PROCEDURE READALABEL(LINFO);VALUE LINFO;REAL LINFO;FORWARD; 01007105 +PROCEDURE PURGIT(U);VALUE U;REAL U;FORWARD; 01007107 +PROCEDURE DIRECTORYCOMPLEMENT(ROW); ARRAY ROW[*]; FORWARD; 01007200 + PROCEDURE IRTEST(IND); INTEGER IND; FORWARD; 01008000 + PROCEDURE INITIATE (DUMMY); REAL DUMMY; FORWARD; 01008200 + PROCEDURE IOERROR(RD); REAL RD; FORWARD; 01008500 + 01009000 + PROCEDURE STATUS (COUNT); INTEGER COUNT; FORWARD; 01009100 +PROCEDURE KEYIN(COUNT); REAL COUNT; FORWARD; 01009110 +PROCEDURE CONNSOUL(COUNT); REAL COUNT; FORWARD;% 01010000 + PROCEDURE TERMINATE (PARAMETER); REAL PARAMETER ; FORWARD; 01011000 +COMMENT: FOR THOSE OF YOU WHO DON"T KNOW SO, TERMINATE MUST BE THE 01011100 + LAST INDEPENDENTRUNNER DECLARED IN THIS FORWARD LIST. 01011200 + ONE WRITES "FORK(, )" TO START ONE OF 01011300 + THESE GUYS UP; 01011400 + PROCEDURE WHATDOIDO; FORWARD; 02000000 + PROCEDURE INDEPENDENTRUNNER(INDEX,PAR);VALUE INDEX,PAR;REAL INDEX; 02001000 + WORD PAR; FORWARD; 02002000 + PROCEDURE LOADFIXEDIRSTACK(STACKNO);VALUE STACKNO;INTEGER STACKNO; 02003000 + FORWARD; 02004000 +SAVE INTEGER PROCEDURE TRACE = (0,19) ( TRACTER ) ; 02005000 + VALUE TRACTER; INTEGER TRACTER; FORWARD; 02006000 +SAVE REAL PROCEDURE GETSPACE (SIZE, WHOFOR, TYPE, ADDRESS); 02007000 + VALUE SIZE, WHOFOR, TYPE, ADDRESS; 02008000 + INTEGER SIZE, WHOFOR, TYPE; 02009000 + REAL ADDRESS; FORWARD; 02010000 +SAVE INTEGER PROCEDURE FORGETSPACE (ADDRESS); 02011000 + VALUE ADDRESS; INTEGER ADDRESS; FORWARD; 02012000 +SAVE PROCEOURE OVERLAY (ADDRESS); VALUE ADDRESS;INTEGER ADDRESS;FORWARD;02013000 +REAL PROCEDURE DIRECTORYSEARCH(POINT, CODE, LLOCK); 02016100 + VALUE POINT, CODE, LLOCK; 02016200 + POINTER POINT; 02016300 + REAL CODE; 02016400 + BOOLEAN LLOCK; FORWARD; 02016500 +SAVE PROCEDURE IOFINISH(MPXINDEX); VALUE MPXINDEX; 02017000 + INTEGER MPXINDEX; FORWARD; 02018000 +PROCEDURE FINISHOFFIO(IOCB); VALUE IOCB; REFERENCE IOCB; FORWARD;02019000 +PROCEDURE FINISHOFFIO(IOCB); VALUE IOCB; REFERENCE IOCB; ; COMMENT * * ;02020000 +SAVE 02020998 + PROCEDURE SPOUT(IOCB,U);VALUE IOCB,U;REAL U;REFERERCE IOCB;FORWARD; 02021000 +PROCEDURE MESSER(W,INFO);VALUE W,INFO;REAL W;WORD INFO;FORWARD;% 02021100 + PROCEDURE MIXPRINT(BUF);ARRAY BUF[*]; FORWARD;% 02022000 +BOOLEAN PROCEDURE JULIT(P);POINTER P; FORWARD; 02022300 +PROCEDURE DATIT(P); POINTER P; FORWARD;% 02022400 + REAL PROCEDURE CURRENTTIME; FORWARD; 02022500 + PROCEDURE CHANLOUT(I,BUFF);VALUE I;REAL I;ARRAY BUFF[*];FORWARD; 02022600 +SAVE PROCEDURE CONNQUEST(UNIT); VALUE UNIT; REAL UNIT; FORWARD; 02023000 +SAVE PROCEDURE UNEXPIOERROR(IOCB,IOERRORMASK); 02024000 + VALUE IOCB,IOERRORMASK; 02025000 + REFERENCE IOCB; 02026000 +REAL IOERRORMASK; ; COMMENT * * * * * * * * ** ; 02027000 +SAVE REAL PROCEDURE WAITIO(AREA, USER, IOMASK); 02030000 + VALUE USER, IOMASK; 02031000 + ARRAY AREA[*]; 02032000 + REAL USER, IOMASK; 02033000 + FORWARD; 02034000 +SAVE PROCEDURE IOREQUEST(IOCB);VALUE IOCB;REFERENCE IOCB:FORWARD; 02034100 +SAVE REFERENCE PROCEDURE DISKIO(CORE,INDEX,SIZE,DISK,MASK,DISKIOEVNT); 02035000 + VALUE INDEX,SIZE,DISK,MASK; 02036000 + INTEGER INDEX,SIZE,DISK,MASK; 02037000 + ARRAY CORE [*]; 02038000 + EVENT DISKIOEVNT ; FORWARD; 02039000 +SAVE PROCEDURE DISKWAIT(CORE,INDEX,SIZE.DISK,MASK); 02040000 + VALUE INDEX,SIZE,DISK,MASK; 02041000 + INTEGER INDEX,SIZE,DISK,MASK; 02042000 + ARRAY CORE[*]; 02043000 + FORWARD; 02044000 + PROCEDURE HARDWAREINTERRUPT(P1,P2); VALUE P1,P2; 02045000 + INTEGER P1; WORD P2; FORWARD; 02046000 +WORD HARDWAREINTERRUPTPCW = HARDWAREINTERRUPT; 02046100 +WORD D03 = (O, 3); 02046200 +SAVE PROCEDURE HOLDINITIALISE; FORWARD; 02047000 +SAVE PROCEDURE PERIPHERALINITIALIZE; FORWARD; 02048000 +REAL MCPDISKBASE = PERIPHERALINITIALIZE; COMMENT ADDRESS OF MCP DISK; 02049000 +SAVE PROCEDURE INITIALIZE(P1, P2); 02050000