diff --git a/SOS_OS/-Amdahl_Tech_Topics_STARTIO_Program.pdf b/SOS_OS/-Amdahl_Tech_Topics_STARTIO_Program.pdf deleted file mode 100644 index a6bb1cd..0000000 Binary files a/SOS_OS/-Amdahl_Tech_Topics_STARTIO_Program.pdf and /dev/null differ diff --git a/SOS_OS/-HELLOCOB.zip b/SOS_OS/-HELLOCOB.zip deleted file mode 100644 index 912d004..0000000 Binary files a/SOS_OS/-HELLOCOB.zip and /dev/null differ diff --git a/SOS_OS/-IBM 360-370-390 Dates.zip b/SOS_OS/-IBM 360-370-390 Dates.zip deleted file mode 100644 index 616473f..0000000 Binary files a/SOS_OS/-IBM 360-370-390 Dates.zip and /dev/null differ diff --git a/SOS_OS/-MVS370-cmds.zip b/SOS_OS/-MVS370-cmds.zip deleted file mode 100644 index 3e69bb2..0000000 Binary files a/SOS_OS/-MVS370-cmds.zip and /dev/null differ diff --git a/SOS_OS/-prim370.zip b/SOS_OS/-prim370.zip deleted file mode 100644 index 0b8c7ca..0000000 Binary files a/SOS_OS/-prim370.zip and /dev/null differ diff --git a/SOS_OS/-sub.c b/SOS_OS/-sub.c deleted file mode 100644 index 97c4e79..0000000 --- a/SOS_OS/-sub.c +++ /dev/null @@ -1,83 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include - -// ************************************************************************ -// * This is a free submit program for MVS users on Hercules, it allows * -// * one to "sub File.jcl hostname port". * -// * It is released to public under terms of GPL by Rahim Azizarab. * -// ************************************************************************ - -void error(const char *msg) -{ - perror(msg); - exit(0); -} - -int main(int argc, char **argv) -{ - int sockfd, portno, n; - struct sockaddr_in serv_addr; - struct hostent *server; - - if (argc < 2) { - fprintf(stderr,"usage %s filename hostname port\n", argv[0]); - exit(0); - } - char *buffer; - unsigned long fileLen; - FILE *p; - if((p=fopen(argv[1],"r"))==NULL){ - printf("\nUnable t open file string.txt"); - exit(1); - } - -//Get file length - fseek(p, 0, SEEK_END); - fileLen=ftell(p); - fseek(p, 0, SEEK_SET); - -//Allocate memory - buffer=(char *)malloc(fileLen+1); - if (!buffer) - { - fprintf(stderr, "Memory error!"); - fclose(p); - return; - } - -//Read file contents into buffer - fread(buffer, fileLen, 1, p); - fclose(p); -// - - portno = atoi(argv[3]); - sockfd = socket(AF_INET, SOCK_STREAM, 0); - if (sockfd < 0) - error("ERROR opening socket"); - server = gethostbyname(argv[2]); - if (server == NULL) { - fprintf(stderr,"ERROR, no such %s host\n", argv[2]); - exit(0); - } - bzero((char *) &serv_addr, sizeof(serv_addr)); - serv_addr.sin_family = AF_INET; - bcopy((char *)server->h_addr, - (char *)&serv_addr.sin_addr.s_addr, - server->h_length); - serv_addr.sin_port = htons(portno); - if (connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0) - error("ERROR connecting"); - n = write(sockfd,buffer,strlen(buffer)); - if (n < 0) - error("ERROR writing to socket"); - - printf("%s\n",buffer); - close(sockfd); - return 0; -} diff --git a/SOS_OS/Madnick_3270_Terminal_Demo.zip b/SOS_OS/Madnick_3270_Terminal_Demo.zip deleted file mode 100644 index 6682148..0000000 Binary files a/SOS_OS/Madnick_3270_Terminal_Demo.zip and /dev/null differ diff --git a/SOS_OS/Madnick_4_KB_RDR_for_Hercules.zip b/SOS_OS/Madnick_4_KB_RDR_for_Hercules.zip deleted file mode 100644 index 0601c27..0000000 Binary files a/SOS_OS/Madnick_4_KB_RDR_for_Hercules.zip and /dev/null differ diff --git a/SOS_OS/Madnick_4_KB_for_Hercules.zip b/SOS_OS/Madnick_4_KB_for_Hercules.zip deleted file mode 100644 index 5323345..0000000 Binary files a/SOS_OS/Madnick_4_KB_for_Hercules.zip and /dev/null differ diff --git a/SOS_OS/Madnick_Sieve_Primes.zip b/SOS_OS/Madnick_Sieve_Primes.zip deleted file mode 100644 index 313f54e..0000000 Binary files a/SOS_OS/Madnick_Sieve_Primes.zip and /dev/null differ diff --git a/SOS_OS/Madnick_with_Console.zip b/SOS_OS/Madnick_with_Console.zip deleted file mode 100644 index 82638ee..0000000 Binary files a/SOS_OS/Madnick_with_Console.zip and /dev/null differ diff --git a/SOS_OS/README.txt b/SOS_OS/README.txt deleted file mode 100644 index 953eb4b..0000000 --- a/SOS_OS/README.txt +++ /dev/null @@ -1,110 +0,0 @@ -Sample Operating System Version 2.00 -==================================== - -The book "Operating Systems" by Stuart E. Madnick and John J. Donovan -(McGraw-Hill 1974) describes a sample operating system suitable to run on -IBM S/360 and S/370 computers. It evolved from the thesis work of John -DeTreville and was further refined by Richard Swift. - -Peter Flass typed in the source from the assembly listing in the book and -made it available to the Hercules community in 2002. At one time Peter had -it running under VM/370, which he achieved by disabling the storage protection -key handling, i.e. running it without any storage protection. This still was -state of affairs when I stumbled across Peter's source in October 2015. - -As Hercules in S/370 mode defaults to emulating a system without having the -storage-key 4K-byte-block facility installed, storage protection works the -same way it did on the S/360 which was the original target of the sample -operating system. Thus I was able to reinstate storage protection and bring -the source back to the exact state as printed in the book. I didn't verify this -line by line, but I cross checked the program length and quite a few offsets -for being identical, which they are, so I think this assumption is robust. - -As expected the system assembled using this "original" source, works under -Hercules in S/370 mode exactly as documented in the book (there are some rough -edges in loading (IPLing) it, and in handling the card readers, though). From -a software conservation point of view it deemed important to me to publish this -unmodified version of the sample operating system in the hercules-390 Yahoo -group. - -At first, I didn't intend to do much more. However, there was quite a bit of -resonance in this group and the more I looked into it, the more its simple yet -versatile design fascinated me. This lead me to creating a few use cases -demonstrating some capabilities of the system. Additionally I introduced a few -enhancements to the system, from redesigning storage protection to 4K key -blocks, over smoothening IPL and card reader handling, up to introducing -new funtionality to the EXCP device handler. These enhancements were done -"minimally invasive", i.e. there was nothing changed that didn't _need_ to be -changed to achieve the desired outcome. - - -Packaging and Installation: ---------------------------- - -All of the above was published ad'hoc as it came to live during the November to -December 2015 timeframe. This lead to a somewhat chaotic chain of updates to the -sample operating system, each of which depending on its predecessor, while on -the other hand the use cases don't depend on each other and got in parts -overlaid by the later update packages. - -To bring packaging back into a defined state I'm now publishing the "3270 -Graphics Demo" (a 3270 PSS graphics based SOS logo) as a "final" use case, which -at the same time consolidates all the previous ones into a single ZIP archive, -making them accessible through Hercules scripts. - -The Madnick_3270_Graphics_Demo.zip package is the _only_ one needed to get -_all_ use cases that were discussed over the past two months. It is installed by -simply unzipping it into an arbitrary _empty_ folder. File README.txt in the -root folder of the unzipped archive contains information on the system's current -configuration and on how to run the use cases. - -For those interested in the complete update chain the previous "single use case" -packages remain available for download. Namely the first package -("Madnick_for_Hercules.zip") may be of particular interrest as it features the -original 1974 system, running out of the box under Hercules. - -It should be avoided to intermix both installation types, i.e. don't install -any of the previous packages into the same folder as the 3270 Graphics Demo -package and don't install the 3270 Graphics Demo package into the same folder -as any of the previous ones. - - -Files in Folder "Sample Operating System": ------------------------------------------- - -README.txt -- This file. - - / Consolidated package containing all single - / use case packages plus a 3270 graphics SOS - / logo and, as a bonus, three variants of the -Madnick_3270_Graphics_Demo.zip < "99 Bottles of Beer" song lyrics. Install - \ only this package, unless you particularly - \ want to look at one of the previous states - \ of the resurrection and refurbishment work. - -Madnick_3270_Terminal_Demo.zip \ Single use case packages retained to -Madnick_with_Console.zip \ document the sequence of steps taken during -Madnick_Sieve_Primes.zip \ the resurrection and refurbishment of the -Madnick_4_KB_RDR_for_Hercules.zip / Sample Operating System. None of these -Madnick_4_KB_for_Hercules.zip / packages is needed any more to install the -Madnick_for_Hercules.zip / system in its current state. - - -Credits: --------- - -Stuart E. Madnick \ authors of the book "Operating Systems" -John J. Donovan / (McGraw-Hill 1974) -John DeTreville \ authors of the Sample Operating System -Richard Swift / as listed in "Operating Systems" -Peter Flass -- made the source he typed in from the listing printed - in the book available electronically in 2002 -Harold Grovesteen \ various helpful comments in the hercules-390 Yahoo -Laddie Hanus > group, particularly for sorting out the state of affairs -Martin Zettel / of the storage protection logic in Peter's upload -James Francis Cray -- digged Peter's source out in October 2015 - - ----------- -2015/12/18, Juergen Winkelmann, ETH Zuerich -e-mail: winkelmann@id.ethz.ch diff --git a/SOS_OS/README_with_Console.txt b/SOS_OS/README_with_Console.txt deleted file mode 100644 index 4072425..0000000 --- a/SOS_OS/README_with_Console.txt +++ /dev/null @@ -1,102 +0,0 @@ -Sample Operating System Version 2.00 - Console I/O Via EXCP Device Handler Demo -=============================================================================== - -The book "Operating Systems" by Stuart E. Madnick and John J. Donovan -(McGraw-Hill 1974) describes a sample operating system suitable to run on -IBM S/360 and S/370 computers. - -While providing a programming interface for card readers and printers, the -sample operating system doesn't come with equivalent support for console -devices. It provides, however, an "EXCP Device Handler" allowing user programs -to execute channel programs addressing arbitrary devices, as long as UCBs for -these devices are defined in the UCB table. Thus, after adding a "console UCB" -to the UCB table and after adding a matching device to the hardware (Hercules), -user programs can perform "console I/O" using the EXCP device handler. - -As opposed to a system wide console task handling console I/O asynchronously -from requesting programs, allowing user programs to access the console device -directly requires serialization. The sample operating system serializes the I/O -using a wait semaphore defined in the UCB. That means all requests are queued -and user programs have to wait until it's their turn to access the device. - -Serialized console I/O shouldn't be a problem when messages are to be sent to -the console, as long as no message flooding occurs. However, when it comes to -reading from the console (replies, parameters, etc.) serialization can lead to a -complete halt of running jobs if a read request isn't answered in a timely -manner. This has to be kept in mind when using such a "poor man's" console. - -The Console I/O package contains an updated version of the demo user program -shown in figure 7-11 of the "Operating Systems" book. In addition to printing a -message confirming its successful entry into the system, it reads "parameters" -from the console and echoes them back to the printer. To support this program a -UCB to handle a "console" at 009 has been added to the sample operating system. - -This is meant as a proof of concept style example on using the EXCP device -handler only. In particular, I/O is not checked for completeness, success or -failure, which certainly would need to be done for real world usability. - - -Installation: -------------- - -Before installing the Console I/O package, please ensure you have the sample -operating system with the card reader handling enhancement installed, as found -and described in - -https://groups.yahoo.com/neo/groups/hercules-390/files/Madnick_4_KB_RDR_for_Hercules.zip - -It is recommended to install the Console I/O package on a separate copy of the -sample operating system, as it changes the Hercules configuration (hardware) -and the system configuration (device support). To install the package unzip the -archive found at - -https://groups.yahoo.com/neo/groups/hercules-390/files/Madnick_with_Console.zip - -into the folder containing the copy of the sample operating system to be used, -allowing the unzip program to merge folders and replace files already existing. - - -Contents: ---------- - -README_with_Console.txt - this file -conf/madnick.cnf - Hercules configuration file -source/sos4krdc.asm - sample OS source, updated to include console UCB -source/sosuserc.asm - demo user program source, updated for console I/O -rdr/sample_operating_system_version_2.00.ipldeck - card deck to IPL sample OS -rdr/demo_user_program.deck - card deck to submit the demo user program -sysgen/madnick_with_console.xmi - XMITted PDS containing source and - build information - -Note that rdr/sample_operating_system_version_2.00.ipldeck is identical to -member IPL4KRDC of the PDS contained in sysgen/madnick_with_console.xmi. -Follow the instructions in member $README of this PDS to rebuild the IPL -deck from source. - - -Usage: ------- - -The following steps provide minimal information to IPL the sample operating -system and to run the demo user program from four card readers simultaneously: - -o make sure to have Hercules in your path -o run start_herc (*i*x systems) or start_herc.bat (Windows systems) -o connect a telnet (_not_ tn3270) session to your local port 3215 -o enter "ipl c" at the Hercules console prompt -o The system will enter a wait state (PSW=FE0200008000056A) when it is ready - to process jobs -o enter "script scripts/load_card_decks" at the Hercules console prompt and - reply politely to the requests being issued at the telnet session -o the system will enter a wait state (PSW=FE0200008000056A) after completion - of the four jobs -o review the output of the four jobs in folder prt -o to rerun, enter "script scripts/load_card_decks" at the Hercules console prompt - - - -Have fun! - ----------- -13.11.2015, Juergen Winkelmann, ETH Zuerich -e-mail: winkelmann@id.ethz.ch diff --git a/SOS_OS/SOSMAKE.pdf b/SOS_OS/SOSMAKE.pdf deleted file mode 100644 index 20cfa4a..0000000 Binary files a/SOS_OS/SOSMAKE.pdf and /dev/null differ diff --git a/SOS_OS/SOS_logo.png b/SOS_OS/SOS_logo.png deleted file mode 100644 index d9135a2..0000000 Binary files a/SOS_OS/SOS_logo.png and /dev/null differ diff --git a/SOS_OS/conf/madnick.cnf b/SOS_OS/conf/madnick.cnf deleted file mode 100644 index 13204c9..0000000 --- a/SOS_OS/conf/madnick.cnf +++ /dev/null @@ -1,27 +0,0 @@ -#********************************************************************** -#*** *** -#*** File: madnick.cnf *** -#*** *** -#*** Purpose: Hercules configuration file for Madnick Sample OS *** -#*** with 3215 console at 009 listening at port 3215 *** -#*** *** -#*** Updated: 2015/11/13 *** -#*** *** -#********************************************************************** -CPUSERIAL 004711 -CPUMODEL 3145 -MAINSIZE 16 -XPNDSIZE 0 -CNSLPORT 3215 -NUMCPU 1 -MAXCPU 1 -ARCHMODE S/370 -0009 3215 noprompt -0012 3505 * eof -000C 3505 rdr/sample_operating_system_version_2.00.ipldeck eof -0112 3505 * eof -010C 3505 * eof -0010 1403 prt/stream-1_output.txt -000E 1403 prt/stream-2_output.txt -0110 1403 prt/stream-3_output.txt -010E 1403 prt/stream-4_output.txt diff --git a/SOS_OS/rdr/demo_user_program.deck b/SOS_OS/rdr/demo_user_program.deck deleted file mode 100644 index 425813b..0000000 Binary files a/SOS_OS/rdr/demo_user_program.deck and /dev/null differ diff --git a/SOS_OS/rdr/sample_operating_system_version_2.00.ipldeck b/SOS_OS/rdr/sample_operating_system_version_2.00.ipldeck deleted file mode 100644 index 6049f60..0000000 Binary files a/SOS_OS/rdr/sample_operating_system_version_2.00.ipldeck and /dev/null differ diff --git a/SOS_OS/source/sos4krdc.asm b/SOS_OS/source/sos4krdc.asm deleted file mode 100644 index 42d2cc5..0000000 --- a/SOS_OS/source/sos4krdc.asm +++ /dev/null @@ -1,2341 +0,0 @@ - TITLE 'Sample Operating System Version 2.00' 00010002 -*********************************************************************** 00020000 -* * 00030000 -* ***************************************************************** * 00040000 -* * * * 00050000 -* * Sample Operating System * * 00060002 -* * Version 2.00 * * 00067002 -* * Developed at MIT 1973 * * 00074002 -* * * * 00090000 -* ***************************************************************** * 00100000 -* * 00100602 -* Update 2015/10/31 Juergen Winkelmann, e-mail winkelmann@id.ethz.ch * 00101202 -* * 00101802 -* - change storage protection alignments to 4K \ * 00102402 -* - replace SSK/ISK instructions with SSKE/ISKE > 4K support * 00103002 -* - minor changes in storage protection logic / * 00103602 -* - change number of parallel processing streams to 4 * 00104202 -* - change core size to 16M * 00104802 -* - replace table of valid $JOB card core requests with general * 00105402 -* logic rounding up any none full page request entered to next * 00106002 -* full page * 00106602 -* - add IPL card and two card loader for one stop creation of an * 00107202 -* IPLable card deck * 00107802 -* - ignore external interrupts during initialization to avoid * 00108402 -* IPLRTN getting interrupted by the interval timer * 00109002 -* * 00109103 -* Update 2015/11/05 Juergen Winkelmann, e-mail winkelmann@id.ethz.ch * 00109203 -* * 00109303 -* - allow reloading card readers without needing to re-IPL the * 00109403 -* system. This functionality relies on Hercules' card reader * 00109503 -* behavior with the EOF initialization in place. It will not * 00109603 -* work in INTR mode. * 00109703 -* * 00109744 -* Update 2015/11/13 Juergen Winkelmann, e-mail winkelmann@id.ethz.ch * 00109784 -* * 00109824 -* - add UCB to support a console at 009 using the EXCP device * 00109864 -* handler. * 00109904 -* * 00110000 -*********************************************************************** 00120000 - SPACE 3 00130000 - PRINT ON,NODATA,GEN 00140000 -PROGRAM CSECT , sample operating system starts at zero 00150002 -CARDLDR CSECT , two card loader follows at the end 00150102 -*** 00150202 -*** IPL card 00150302 -*** 00150402 -IPLCARD CSECT , IPLable deck must begin with this card 00150502 -PSWD DC F'0',X'00' initial program status word, disabled 00150602 - DC AL3(LOADER) start execution at load address 00150702 -CCW1 DC X'02',AL3(LOADER) read 1st card to load address 00150802 - DC XL4'40000050' chain, read length = 80 00150902 -CCW2 DC X'02',AL3(LOADER+80) read 2nd card to load addr + 80 00151002 - DC XL4'00000050' read length = 80 00151102 - DC C'Sample Operating System Version 2.00' eye catcher 00151202 - DC 16X'00' pad to card length 00151302 -*** 00151402 -*** loader 00151502 -*** 00151602 -* 00151702 -* Initialize 00151802 -* 00151902 -CARDLDR CSECT , two card loader must follow IPL card 00152002 - BALR R12,0 establish .. 00152102 - LA R2,2 .. base .. 00152202 - SR R12,R2 .. register 00152302 - USING CARDLDR,R12 tell assembler 00152402 - LA R11,0 addressability of .. 00152502 - USING PROGRAM,R11 .. sample operating system 00152602 - LA R2,0 I/O .. 00152702 - LA R3,IOINTRPT .. new PSWD 00152802 - STM R2,R3,IONEW store I/O new PSWD 00152902 - SSM ENBLECH0 enable interrupts from channel 0 00153002 - LA R5,CCWCHAIN address of card reader CCW chain 00153102 - ST R5,CAW store address in CAW 00153202 - L R3,NUMCARDS number of cards to read 00153302 - L R4,LOADADDR target address of loaded code 00153402 -* 00153502 -* create CCW chain 00153602 -* 00153702 -NEXTCARD LR R2,R4 load next card here 00153802 - ICM R2,B'1000',READ insert write command 00153902 - ST R2,0(,R5) store CCW 00154002 - LA R2,80 length of card 00154102 - ST R2,4(,R5) store length in CCW, zero all flags 00154202 - OI 4(R5),X'40' indicate command chaining 00154302 - LA R4,80(,R4) increment target address 00154402 - LA R5,8(,R5) point to next CCW 00154502 - BCT R3,NEXTCARD read next card 00154602 - S R5,EIGHT point to previous CCW 00154702 - NI 4(R5),X'BF' clear command chaining flag 00154802 -* 00154902 -* read cards and wait for completion 00155002 -* 00155102 - SIO 12(0) read cards 00155202 - LA R2,*+12 continue here after I/O completion 00155302 - ST R2,CONTINUE store continue address in PSWD skeleton 00155402 - LPSW WAITPSWD wait for I/O completion 00155502 -* 00155602 -* "IPL" the Sample Operating System 00155702 -* 00155802 - LPSW 0 transfer control 00155902 -* 00156002 -* I/O interrupt handler 00156102 -* 00156202 -IOINTRPT EQU * 00156302 - TM CSW+4,X'04' device end received? 00156402 - BNO IOINTRTN -> no, keep waiting 00156502 - NI IOOLD+1,X'FD' -> yes, terminate wait state and .. 00156602 - NI IOOLD,X'7F' .. and disable channel 0 interrupts 00156702 -IOINTRTN LPSW IOOLD return to mainline 00156802 - DROP R11,R12 no longer needed 00156902 -* 00157002 -* Data area 00157102 -* 00157202 -ENBLECH0 DC C'80' mask to enable channel 0 interrupts 00157302 -READ DC X'02' read a card 00157402 - DS 0D align 00157502 -WAITPSWD DC X'80020000' wait with channel 0 interrupts enabled 00157602 -CONTINUE DS F continue here after wait 00157702 -LOADADDR DC F'0' code is to be loaded here 00157802 -NUMCARDS DC F'75' number of cards to read 00157904 -EIGHT DC F'8' CCW length 00158002 -CCWCHAIN DS 0D start of card reader CCW chain 00158102 -*** 00158202 -*** Sample Operating System code begins here 00158302 -*** 00158402 -PROGRAM CSECT , sample OS must follow loader cards 00158502 - SPACE 1 00160000 -CORESIZE EQU 16777216 bytes of core in object machine 00170002 - SPACE 1 00180000 - USING *,0 COMMUNICATIONS AREA 00190000 - SPACE 1 00200000 -IPLPSW DC B'00000000',B'00000000',X'0000',X'00',AL3(IPLRTN) 00210000 -IPLCCW1 DS D . IPL CCW #1 00220000 -IPLCCW2 DS D . IPL CCW #2 00230000 -EXTOLD DS D . EXTERNAL OLD PSW 00240000 -SVCOLD DS D . SVC OLD PSW 00250000 -PGMOLD DS D . PROGRAM INTERRUPT OLD PSW 00260000 -MCHKOLD DS D . MACHINE CHECK OLD PSW 00270000 -IOOLD DS D . I/O INTERRUPT OLD PSW 00280000 -CSW DS D . CHANNEL STATUS WORD 00290000 -CAW DS F . CHANNEL ADDRESS WORD 00300000 -UNUSED0 DS F . 00310000 -TIMER DC F'-1' . TIMER 00320000 -UNUSED1 DC F'0' . 00330000 -EXTNEW DC B'00000000',B'00000000',X'0000',X'00',AL3(EXTHANDL) 00340000 -SVCNEW DC B'00000000',B'00000000',X'0000',X'00',AL3(SVCHANDL) 00350000 -PGMNEW DC B'00000000',B'00000000',X'0000',X'00',AL3(PGMHANDL) 00360000 -MCHKNEW DC B'00000000',B'00000010',X'0000',X'00',AL3(0) 00370000 -IONEW DC B'00000000',B'00000000',X'0000',X'00',AL3(IOINTRPT) <-+ 00380002 -*** | 00382002 -*** IOINTRPT will be replaced with IOHANDL after IPL by IPLRTN -----+ 00384002 -*** 00386002 - ORG *+X'100' SPACE OVER STAND ALONE DUMP AREA 00390000 -FSBPTR DC A(VERYEND) . FSB POINTER 00400000 -FSBSEM DC F'1,0' . FSB SEMAPHORE 00410000 -MEMORY DC F'0,0' . MEMORY SEMAPHORE 00420000 -CAWSEM DC F'1,0' . CAW SEMAPHORE 00430000 - SPACE 1 00440000 -TRAPSAVE DS 16F . STORAGE FOR EXTERNAL INTERRUPTS 00450000 -IOHSAVE DS 16F . STORAGE FOR I/O INTERRUPTS 00460000 - SPACE 1 00470000 -SYSSEMSA DS CL84 . SYSTEM SEMAPHORE SAVE AREA 00480000 - SPACE 1 00490000 -RUNNING DS A . RUNNING 00500000 -NEXTTRY DS A . NEXTTRY 00510000 -NEXTTRYM DS C,0H . NEXTTRY MODIFIED 00520000 - EJECT 00530000 -*********************************************************************** 00540000 -* * 00550000 -* EXTERNAL, PROGRAM, AND SVC INTERRUPT HANDLERS * 00560000 -* * 00570000 -*********************************************************************** 00580000 - SPACE 1 00590000 -EXTHANDL EQU * . EXTERNAL INTERRUPT HANDLER 00600000 - STM 0,15,TRAPSAVE . SAVE REGISTERS 00610000 - BALR 1,0 . ESTABLISH ADDRESSING 00620000 - USING *,1 00630000 - CLI EXTOLD+3,X'80' . SEE IF TIMER TRAP 00640000 - BNE EXTHRET . IF NOT, IGNORE 00650000 - L 15,RUNNING . SET UP REGISTERS FOR TRAFFIC 00660000 - USING PCB,15 . CONTROLLER (XPER) 00670000 - CLI PCBBLOKT,X'FF' . IF BLOCKED, NO PROCESS IS 00680000 - BE EXTHRET . RUNNABLE, SO RETURN 00690000 - LA 14,PCBISA . GET SAVE AREA 00700000 - USING SA,14 00710000 - MVC SAPSW,EXTOLD . AND STORE OLD STUFF INTO IT 00720000 - MVC SAREGS,TRAPSAVE 00730000 - B XPER . THEN GO TO TRAFFIC SCHEDULER 00740000 - DROP 14,15 00750000 -EXTHRET LM 0,15,TRAPSAVE . TO IGNORE AN INTERRUPT, RELOAD 00760000 - LPSW EXTOLD . AND TRANSFER BACK 00770000 - SPACE 1 00780000 -PGMHANDL EQU * . PROGRAM INTERRUPT HANDLER 00790000 - SVC C'?' . IN ANY CASE, AN ERROR 00800000 - EJECT 00810000 -*********************************************************************** 00820000 -* * 00830000 -* SVC INTERRUPT HANDLER * 00840000 -* * 00850000 -* FOR ALL ROUTINES ENTERED BY SVC INTERRUPT, THE * 00860000 -* FOLLOWING REGISTERS CONTAIN THIS INFORMATION: * 00870000 -* * 00880000 -* REGISTER 1 - BASE REGISTER FOR ROUTINE * 00890000 -* REGISTER 2 - POINTER TO ARGUMENT LIST (IF ANY) * 00900000 -* REGISTER 14 - POINTER TO SAVEAREA USED FOR THIS SVC * 00910000 -* REGISTER 15 - POINTER TO PCB PRESENTLY RUNNING * 00920000 -* * 00930000 -*********************************************************************** 00940000 - SPACE 1 00950000 -SVCHANDL EQU * . SVC HANDLER 00960000 - STM 0,15,TRAPSAVE . SAVE REGISTERS 00970000 - BALR 9,0 . ESTABLISH ADDRESSING 00980000 - USING *,9 00990000 - LM 10,14,SVCCONST . INITIALIZE REGISTERS 01000000 - IC 10,SVCOLD+3 . GET SVC CODE 01010000 - IC 10,SVCHTABL(10) . TRANSLATE INTO TABLE OFFSET 01020000 - LA 10,SVCRTN(10) . REG 10 -> THE CORRECT PSW 01030000 - CLI 2(10),X'00' . IS THIS CALL PROTECTED? 01040000 - BE SVCHPROT . THEN SEE IF WE CAN CALL IT 01050000 -SVCOK L 15,RUNNING . GET PCB POINTER 01060000 - USING PCB,15 01070000 - CLI 3(10),X'00' . IS IT A SYSTEM SAVEAREA? 01080000 - BE SYSSEM . DON'T USE REG 14 AS PCB POINTER 01090000 - LR 14,15 . ELSE, SET UP PCB POINTER 01100000 -SYSSEM IC 11,3(10) . GET POINTER TO SAVE AREA OFFSET 01110000 - A 14,SVCSAVE(11) . REG 14 -> SAVE AREA 01120000 - CLI SVCOLD+3,C'.' . ARE WE CALLING XPER? 01130000 - BE SVCXPER . IF SO, DON'T SAVE RETURN STATUS 01140000 - USING SA,14 01150000 - MVC SAPSW,SVCOLD . SAVE PSW 01160000 - MVC SAREGS,TRAPSAVE . SAVE REGISTERS 01170000 -SVCXPER L 1,4(10) . MAKE ADDRESSING EASY WITHIN 01180000 - LPSW 0(10) . ROUTINE, AND GO THERE 01190000 -SVCHPROT L 12,SVCOLD . GET PROTECTION KEY 01200000 - NR 12,13 . IS IT A USER? 01210000 - BZ SVCOK . IF NO, THAT'S FINE 01220000 - LA 10,SVCRTN+136 . ELSE SET UP CALL TO XQUE 01230000 - B SVCOK . 01240000 - DROP 9 01250000 -SVCCONST DC 3F'0',X'00F00000',F'0' 01260000 - SPACE 1 01270000 -SVCHTABL DC 256X'84' . TABLE OF PSW OFFSETS 01280000 - ORG SVCHTABL+C'P' 01290000 - DC AL1(0) 01300000 - ORG SVCHTABL+C'V' 01310000 - DC AL1(8) 01320000 - ORG SVCHTABL+C'!' 01330000 - DC AL1(16) 01340000 - ORG SVCHTABL+C',' 01350000 - DC AL1(24) 01360000 - ORG SVCHTABL+C'B' 01370000 - DC AL1(32) 01380000 - ORG SVCHTABL+C'A' 01390000 - DC AL1(40) 01400000 - ORG SVCHTABL+C'F' 01410000 - DC AL1(48) 01420000 - ORG SVCHTABL+C'I' 01430000 - DC AL1(56) 01440000 - ORG SVCHTABL+C'J' 01450000 - DC AL1(64) 01460000 - ORG SVCHTABL+C'.' 01470000 - DC AL1(72) 01480000 - ORG SVCHTABL+C'R' 01490000 - DC AL1(80) 01500000 - ORG SVCHTABL+C'S' 01510000 - DC AL1(88) 01520000 - ORG SVCHTABL+C'C' 01530000 - DC AL1(96) 01540000 - ORG SVCHTABL+C'N' 01550000 - DC AL1(104) 01560000 - ORG SVCHTABL+C'Y' 01570000 - DC AL1(112) 01580000 - ORG SVCHTABL+C'Z' 01590000 - DC AL1(120) 01600000 - ORG SVCHTABL+C'D' 01610000 - DC AL1(128) 01620000 - ORG SVCHTABL+C'?' 01630000 - DC AL1(136) 01640000 - ORG SVCHTABL+C'H' 01650000 - DC AL1(144) 01660000 - ORG SVCHTABL+C'E' 01670000 - DC AL1(152) 01680000 - ORG SVCHTABL+256 01690000 - SPACE 1 01700000 -SVCRTN DS 0D . THE PSWS 01710000 -* IN THE FOLLOWING PSWS, THE THIRD BYTE INDICATES * 01720000 -* WHETHER THE SVC IS RESTRICTED: * 01730000 -* X'00' -> OPERATING SYSTEM ONLY * 01740000 -* X'FF' -> AVAILABLE TO USER ALSO * 01750000 -* * 01760000 -* THE FOURTH BYTE INDICATES WHICH SAVE AREA TO USE; * 01770000 -* SVCSAVE BELOW SHOWS THE CODE VALUES. * 01780000 - DC B'00000000',B'00000000',X'0000',X'00',AL3(XP) 01790000 - DC B'00000000',B'00000000',X'0000',X'00',AL3(XV) 01800000 - DC B'00000000',B'00000000',X'0004',X'00',AL3(XEXC) 01810000 - DC B'00000000',B'00000000',X'0004',X'00',AL3(XCOM) 01820000 - DC B'00000000',B'00000000',X'0004',X'00',AL3(XB) 01830000 - DC B'11111111',B'00000000',X'000C',X'00',AL3(XA) 01840000 - DC B'11111111',B'00000000',X'000C',X'00',AL3(XF) 01850000 - DC B'00000000',B'00000000',X'0004',X'00',AL3(XI) 01860000 - DC B'00000000',B'00000000',X'0004',X'00',AL3(XJ) 01870000 - DC B'00000000',B'00000000',X'0004',X'00',AL3(XPER) 01880000 - DC B'11111111',B'00000000',X'FF08',X'00',AL3(XR) 01890000 - DC B'11111111',B'00000000',X'FF08',X'00',AL3(XS) 01900000 - DC B'11111111',B'00000000',X'FF08',X'00',AL3(XC) 01910000 - DC B'00000000',B'00000000',X'FF04',X'00',AL3(XN) 01920000 - DC B'00000000',B'00000000',X'FF08',X'00',AL3(XY) 01930000 - DC B'11111111',B'00000000',X'FF08',X'00',AL3(XZ) 01940000 - DC B'11111111',B'00000000',X'FF08',X'00',AL3(XD) 01950000 - DC B'00000000',B'00000000',X'FF04',X'00',AL3(XQUE) 01960000 - DC B'11111111',B'00000000',X'FF08',X'00',AL3(XH) 01970000 - DC B'11111111',B'00000000',X'000C',X'00',AL3(XAUTO) 01980000 - SPACE 1 01990000 -SVCSAVE DS 0F . THE SAVE AREA OFFSETS 02000000 - DC A(SYSSEMSA) . CODE 00 -> SYSSEMSA 02010000 - DC A(PCBISA-PCB) . CODE 04 -> INTERRUPT SAVE AREA 02020000 - DC A(PCBFSA-PCB) . CODE 08 -> FAULT SAVE AREA 02030000 - DC A(PCBMSA-PCB) . CODE 0C -> MEMORY SAVE AREA 02040000 - SPACE 3 02050000 -*********************************************************************** 02060000 -* * 02070000 -* RETURN SEQUENCE FOR REQUEST DRIVEN ROUTINES AND TRAFFIC CONTROLLER * 02080000 -* * 02090000 -*********************************************************************** 02100000 - SPACE 1 02110000 - DS 0D 02120000 -RETURN DC B'00000000',B'00000000',X'0000',X'00',AL3(RETURNR) 02130000 - SPACE 1 02140000 -RETURNR EQU * . RETURN ROUTINE FOR SVC'S AND XPER 02150000 - MVC SVCOLD,SAPSW . SAVE PSW IN A SAFE PLACE 02160000 - LM 0,15,SAREGS . RELOAD REGISTERS 02170000 - LPSW SVCOLD . AND RETURN 02180000 - EJECT 02190000 -*********************************************************************** 02200000 -* * 02210000 -* REQUEST DRIVEN ROUTINES * 02220000 -* * 02230000 -*********************************************************************** 02240000 - SPACE 3 02250000 -*********************************************************************** 02260000 -* * 02270000 -* XP ROUTINE * 02280000 -* * 02290000 -* FUNCTION: TO IMPLEMENT "P" PRIMITIVE FOR SEMAPHORES * 02300000 -* DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS SM * 02310000 -* SM DS 0D SEMAPHORE DEFINITION * 02320000 -* SMVAL DS F VALUE * 02330000 -* SMPTR DS A POINTER TO FIRST WAITER * 02340000 -* ROUTINES USED: XPER * 02350000 -* PROCEDURE: SUBTRACT ONE FROM SMVAL; IF NON-NEGATIVE, RETURN. * 02360000 -* IF NEGATIVE, PLACE RUNNING PROCESS AT END OF LIST * 02370000 -* OF PRECESSES WAITING ON SM. BLOCK CALLING PROCESS; * 02380000 -* ENTER TRAFFIC CONTROLLER. * 02390000 -* ERROR CHECKS: NONE * 02400000 -* INTERRUPTS: OFF * 02410000 -* USER ACCESS: NO * 02420000 -* * 02430000 -*********************************************************************** 02440000 - SPACE 1 02450000 -XP EQU * . THE XP ROUTINE 02460000 - USING *,1 02470000 - USING SM,2 . ARGUMENT IS A SEMAPHORE 02480000 - L 3,SMVAL . GET THE VALUE 02490000 - BCTR 3,0 . SUBTRACT ONE 02500000 - ST 3,SMVAL . AND STORE IT BACK 02510000 - LTR 3,3 . SET CONDITION CODE 02520000 - BM XPWAIT . IF IT'S NEGATIVE, MUST WAIT 02530000 - LPSW RETURN . ELSE RETURN NOW 02540000 -XPWAIT LA 4,SMPTR . START GOING DOWN 02550000 - L 5,SMPTR . CHAIN OF POINTERS 02560000 - DROP 15 02570000 - USING PCB,5 02580000 -XPLOOP LTR 5,5 . IF REACHED END 02590000 - BZ XPTHEN . ADD OUR PCB ON. ELSE, 02600000 - LA 4,PCBNSW . INCREMENT POINTERS 02610000 - L 5,PCBNSW 02620000 - B XPLOOP . AND TRY AGAIN 02630000 - DROP 5 02640000 - USING PCB,15 02650000 -XPTHEN MVC 0(4,4),RUNNING . WE'RE AT THE END 02660000 - ST 5,PCBNSW . STORE NULL POINTER 02670000 - MVI PCBBLOKT,X'FF' . AND WE'RE BLOCKED 02680000 - MVC PCBISA,SYSSEMSA . SWITCH SAVE AREAS 02690000 - B XPER . SO RUN SOMEONE ELSE 02700000 - DROP 2 02710000 - EJECT 02720000 -*********************************************************************** 02730000 -* * 02740000 -* XV ROUTINE * 02750000 -* * 02760000 -* FUNCTION: TO IMPLEMENT "V" PRIMITIVE FOR SEMAPHORES * 02770000 -* DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS SM * 02780000 -* SM DS 0D SEMAPHORE DEFINITION * 02790000 -* SMVAL DS F VALUE * 02800000 -* SMPTR DS A POINTER TO FIRST WAITER * 02810000 -* ROUTINES USED: NONE * 02820000 -* PROCEDURE: ADD ONE TO SMVAL; IF > ZERO, RETURN. IF ZERO OR * 02830000 -* LESS, REMOVE FIRST PROCESS FROM WAITER CHAIN; * 02840000 -* UNBLOCK IT; IF NEXTTRYM NOT SET, SET IT AND SET * 02850000 -* NEXTTRY TO THAT PROCESS; RETURN; IF NEXTTRYM SET, * 02860000 -* RETURN. * 02870000 -* ERROR CHECKS: NONE * 02880000 -* INTERRUPTS: OFF * 02890000 -* USER ACCESS: NO * 02900000 -* * 02910000 -*********************************************************************** 02920000 - SPACE 1 02930000 -XV EQU * . THE XV ROUTINE 02940000 - USING *,1 02950000 - USING SM,2 . ARGUMENT IS A SEMAPHORE 02960000 - L 3,SMVAL . GET THE VALUE 02970000 - A 3,=F'1' . ADD ONE 02980000 - ST 3,SMVAL . AND STORE IT BACK 02990000 - BNP XVWAKEUP . IF <=0, SOMEONE'S WAITING 03000000 - LPSW RETURN . ELSE RETURN 03010000 -XVWAKEUP L 4,SMPTR . GET THE FIRST OF THE GUYS 03020000 - DROP 15 03030000 - USING PCB,4 03040000 - MVC SMPTR,PCBNSW . REMEMBER THE REST 03050000 - MVI PCBBLOKT,X'00' . WE'RE NO LONGER BLOCKING HIM 03060000 - CLI NEXTTRYM,X'FF' . IS NEXT TRY MODIFIED? 03070000 - BE XVRET . IF SO, WELL OK 03080000 - ST 4,NEXTTRY ELSE MODIFY NEXTTRY 03090000 - MVI NEXTTRYM,X'FF' . AND SAY SO 03100000 -XVRET LPSW RETURN . GET BACK 03110000 - DROP 2,4 03120000 - EJECT 03130000 -*********************************************************************** 03140000 -* * 03150000 -* XPER ROUTINE (TRAFFIC CONTROLLER) * 03160000 -* * 03170000 -* FUNCTION: TO IMPLEMENT MULTIPROGRAMMING * 03180000 -* DATABASES: NONE * 03190000 -* ROUTINES USED: NONE * 03200000 -* PROCEDURE: STARTING WITH NEXTTRY, SEARCH FOR PROCESS ON ALL * 03210000 -* PCB CHAIN NOT BLOCKED OR STOPPED; IF FOUND, USE AS * 03220000 -* NEW RUNNING, FOR 50 MS OF TIME AND RETURN. ELSE, * 03230000 -* ENTER WAIT STATE WITH INTERRUPTS ON, AND TRY TO * 03240000 -* SCHEDULE AGAIN AFTER INTERRUPT; RETURN. * 03250000 -* ERROR CHECKS: NONE * 03260000 -* INTERRUPTS: OFF * 03270000 -* USER ACCESS: NO * 03280000 -* * 03290000 -*********************************************************************** 03300000 - SPACE 1 03310000 -XPER EQU * . ROUTINE XPER: TRAFFIC SCHEDULER 03320000 - SSM IONEW . MASK OFF INTERRUPTS 03330000 - BALR 1,0 03340000 - USING *,1 03350000 - L 10,NEXTTRY . START LOOKING AT NEXTTRY 03360000 - LR 11,10 . REMEMBER WHICH THAT WAS 03370000 - USING PCB,10 03380000 -GWLOOP CLI PCBBLOKT,X'FF' . IF IT'S BLOCKED 03390000 - BE GWINC . IGNORE 03400000 - CLI PCBSTOPT,X'FF' . ELSE, IF IT'S NOT STOPPED 03410000 - BNE GWRUN . WE CAN RUN IT 03420000 -GWINC L 10,PCBNPALL . ELSE, GO TO THE NEXT 03430000 - CR 10,11 . IF WE'VE SEEN ALL, QUIT 03440000 - BNE GWLOOP . ELSE TRY AGAIN 03450000 - LPSW IDLE . SIT AND WAIT 03460000 - DS 0D 03470000 -IDLE DC B'11111110',B'00000010',X'0000',X'00',AL3(XPER) 03480000 - SPACE 1 03490000 -GWRUN MVC NEXTTRY,PCBNPALL . GET A NEW NEXTTRY 03500000 - MVI NEXTTRYM,X'00' . NOT MODIFIED 03510000 - ST 10,RUNNING . GET A NEW RUNNING 03520000 - LA 14,PCBISA 03530000 - MVC TIMER,QUANTUM . INTERRUPT AFTER 50 MS 03540000 - LPSW RETURN . AND GO TO RETURNR 03550000 -QUANTUM DC X'00000F00' . QUANTUM OF TIME 03560000 - DROP 10 03570000 - USING PCB,15 03580000 - EJECT 03590000 -*********************************************************************** 03600000 -* * 03610000 -* XEXC ROUTINE * 03620000 -* * 03630000 -* FUNCTION: TO ENTER SMC SECTION * 03640000 -* DATABASES: NONE * 03650000 -* ROUTINES USED: NONE * 03660000 -* PROCEDURE: INCREMENT SMC BYTE IN PCB BY ONE; RETURN. * 03670000 -* ERROR CHECKS: NONE * 03680000 -* INTERRUPTS: OFF * 03690000 -* USER ACCESS: NO * 03700000 -* * 03710000 -*********************************************************************** 03720000 - SPACE 1 03730000 -XEXC EQU * . ROUTINE XEXC: ENTER SMC SECTION 03740000 - USING *,1 03750000 - SR 8,8 03760000 - IC 8,PCBINSMC 03770000 - LA 8,1(8) . ADD ONE TO SMC BYTE 03780000 - STC 8,PCBINSMC 03790000 - LPSW RETURN . AND LEAVE 03800000 - SPACE 1 03810000 -*********************************************************************** 03820000 -* * 03830000 -* XCOM ROUTINE * 03840000 -* * 03850000 -* FUNCTION: TO LEAVE SMC SECTION * 03860000 -* DATABASES: NONE * 03870000 -* ROUTINES USED: XP, XV * 03880000 -* PROCEDURE: DECREMENT SMC BYTE IN PCB BY ONE; IF NOT ZERO, * 03890000 -* RETURN. ELSE, CHECK FOR STOP WAITING; IF STOP * 03900000 -* WAITING, ALLOW STOP AND BLOCK SELF; RETURN. IF NO * 03910000 -* STOP WAITING, RETURN. * 03920000 -* ERROR CHECKS: NONE * 03930000 -* INTERRUPTS: OFF * 03940000 -* USER ACCESS: NO * 03950000 -* * 03960000 -*********************************************************************** 03970000 - SPACE 1 03980000 -XCOM EQU * . ROUTINE XCOM: LEAVE SMC 03990000 - USING *,1 04000000 - SR 8,8 04010000 - IC 8,PCBINSMC 04020000 - BCTR 8,0 . SUBTRACT ONE FROM IN SMC BYTE 04030000 - STC 8,PCBINSMC 04040000 - LTR 8,8 . IS IT ZERO? 04050000 - BNZ XCOMRET . NO, THEN GET BACK, OTHERWISE 04060000 - CLI PCBSW,X'00' . IS STOP WAITING? 04070000 - BE XCOMRET . IF NOT, RETURN 04080000 - MVI PCBSW,X'00' . STOPS NOT WAITING AFTER THIS 04090000 - LA 2,PCBSRS . WE'LL "V" THE STOPPER, 04100000 - SVC C'V' 04110000 - LA 2,PCBSES . AND "P" THE STOPPEE. 04120000 - SVC C'P' 04130000 -XCOMRET LPSW RETURN . AND HERE (IF EVER) WE RETURN 04140000 - EJECT 04150000 -*********************************************************************** 04160000 -* * 04170000 -* XA ROUTINE * 04180000 -* XAUTO ROUTINE * 04190000 -* * 04200000 -* FUNCTION: TO ALLOCATE MEMORY * 04210000 -* DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XAX: * 04220000 -* XAX DS 0D * 04230000 -* XAXSIZE DS F SIZE OF BLOCK TO BE ALLOCATED * 04240000 -* XAXADDR DS A ADDRESS OF FIRST BYTE OF BLOCK* 04250000 -* XAXALGN DS F ALIGNMENT OF BLOCK * 04260000 -* ROUTINES USED: XEXC, XCOM, XP, XV, XB * 04270000 -* PROCEDURE: LOCK FSB SEMAPHORE; SEARCH FREE STORAGE FOR LARGE * 04280000 -* ENOUGH MEMORY BLOCK; ALIGN BOUNDARY; USE XB TO * 04290000 -* CHAIN ANY LEFTOVER BLOCKS TO FREE STORAGE LIST; * 04300000 -* PLACE ADDRESS OF ALLOCATED BLOCK IN XAXADDR; UNLOCK* 04310000 -* FSB SEMAPHORE; RETURN. IF CAN'T SATISFY REQUEST, * 04320000 -* UNLOCK FSB SEMAPHORE, APPLY XP ROUTINE TO MEMORY * 04330000 -* SEMAPHORE, BLOCKING PROCESS RUNNING UNTIL MEMORY * 04340000 -* FREED; THEN UNBLOCK; TRY TO SATISFY REQUEST AGAIN. * 04350000 -* ERROR CHECKS: NONE * 04360000 -* INTERRUPTS: ON * 04370000 -* USER ACCESS: NO * 04380000 -* * 04390000 -*********************************************************************** 04400000 - SPACE 1 04410000 -XA EQU * . THE XA ROUTINE, TO ALLOCATE 04420000 - USING *,1 04430000 - LA 0,1 . SET REGISTER ZERO TO ONE TO 04440000 - B XACOM . INDICATE C'A' CALL 04450000 -XAUTO EQU * . AUTO STORAGE ENTRY POINT 04460000 - USING *,1 04470000 - SR 0,0 . REG0=0 INDICATES C'E' CALL 04480000 - L 1,=A(XA) . RESET BASE REGISTER PROPERLY 04490000 - USING XA,1 04500000 -XACOM SVC C'!' . ENTER SMC 04510000 - LR 7,2 04520000 - USING XAX,7 . ARGUMENT LIST 04530000 - L 6,XAXSIZE . GET THE SIZE REQUESTED 04540000 -XATOP LA 2,FSBSEM . LOCK THE FSB SEMAPHORE 04550000 - SVC C'P' . 04560000 - LA 5,FSBPTR . START LOOKING DOWN 04570000 - L 4,FSBPTR . THE FREE STORAGE LIST 04580000 - L 8,XAXALGN . WE WOULD HAVE TO START AT WITH 04590000 - BCTR 8,0 . THIS CONSTANT TO FIND ALIGNMENT 04600000 - USING FSB,4 04610000 -XALOOP LTR 4,4 . IF AT THE END 04620000 - BZ XAWAIT . WAIT UNTIL A "FREE" OP 04630000 - LR 13,4 . FIND THE LOCATION 04640000 - BCTR 13,0 . IN THIS BLOCK WITH THIS 04650000 - OR 13,8 . ALIGNMENT 04660000 - LA 13,1(13) . THAT'S IT 04670000 - LR 9,13 . AND NOW GET IN REG 9 04680000 - SR 9,4 . WHAT IS WASTED AT THE FRONT 04690000 - L 3,FSBSIZE . GET SIZE MINUS WASTE AT 04700000 - SR 3,9 . FRONT, LEAVING EFFECTIVE SIZE 04710000 - CR 6,3 . IS IT ENOUGH? 04720000 - BNP XAFOUND . EUREKA! 04730000 - LA 5,FSBNEXT . OH WELL, GET THE NEXT FREE 04740000 - L 4,FSBNEXT . STORAGE BLOCK ON THE CHAIN 04750000 - B XALOOP . BETTER LUCK NEXT TIME 04760000 -XAWAIT SVC C'V' . NEED TO WAIT 04770000 - LA 2,MEMORY . SO WE LET OTHER PEOPLE GET IN 04780000 - SVC C'P' . SO THEY'LL WAKE US UP 04790000 - B XATOP . AND THEN WE'LL TRY AGAIN 04800000 -XAFOUND ST 13,XAXADDR . WE'VE NOW GOT THE ADDRESS 04810000 - MVC 0(4,5),FSBNEXT . UNLINK THE BLOCK OUT 04820000 - L 12,FSBSIZE . GET THE WHOLE BLOCK SIZE 04830000 - LA 2,SATEMP . START MAKING UP ARG LISTS 04840000 - USING XBX,2 . FOR THE XB ROUTINE 04850000 - LR 10,13 . THE STARTING LOCATION 04860000 - SR 10,4 . MINUS THE START OF THE BLOCK 04870000 - BZ XANF . IF NONE WASTED AT THE FRONT, SKIP 04880000 - ST 4,XBXADDR . ELSE FREE, STARTING THERE 04890000 - ST 10,XBXSIZE . UP TO THE BEGINNING OF THE 04900000 - SVC C'B' . ALLOCATION; INSERT IT IN THE CHAIN 04910000 -XANF LR 11,13 . THE STARTING ADDR PLUS THE SIZE 04920000 - AR 11,6 . GIVES THE FIRST UNUSED ADDR 04930000 - SR 12,10 . MINUS THE WASTE AT FRONT, 04940000 - SR 12,6 . MINUS THE PART ALLOCATED. IF 04950000 - BZ XARETURN . NONE LEFT OVER, GOOD 04960000 - ST 11,XBXADDR . ELSE STORE ADDRESS AND 04970000 - ST 12,XBXSIZE . SIZE, AND LINK ONTO 04980000 - SVC C'B' . FREE STORAGE LIST 04990000 - DROP 2 05000000 -XARETURN LA 2,FSBSEM . WE ARE DONE, SO NOW SOMEONE 05010000 - SVC C'V' . ELSE CAN COME IN 05020000 - LTR 0,0 . IS THIS FOR AUTOMATIC STORAGE? 05030000 - BNZ XABACK . IF NOT, RETURN NOW 05040000 - ST 6,PCBASIZE . OTHERWISE STORE SIZE AND 05050000 - ST 13,PCBAADDR . ADDRESS OF AUTOMATIC STORAGE 05060000 -XABACK SVC C',' . LEAVE SMC SECTION 05070000 - LPSW RETURN . GET BACK JOJO 05080000 - DROP 4,7 05090000 - EJECT 05100000 -*********************************************************************** 05110000 -* * 05120000 -* XF ROUTINE * 05130000 -* * 05140000 -* FUNCTION: TO FREE MEMORY * 05150000 -* DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XFX: * 05160000 -* XFX DS 0D * 05170000 -* XFXSIZE DS F SIZE OF BLOCK TO BE FREED * 05180000 -* XFXADDR DS A ADDRESS OF FIRST BYTE OF BLOCK* 05190000 -* ROUTINES USED: XEXC, XP, XV, XB, XCOM * 05200000 -* PROCEDURE: LOCK FSB SEMAPHORE; SEARCH FREE STORAGE LIST TO * 05210000 -* FIND IF ANY FREE BLOCK CONTIGUOUSLY FOLLOWS OR * 05220000 -* PRECEDES BLOCK TO BE FREED; IF THERE IS ANY, * 05230000 -* COMPACT THEM INTO A SINGLE BLOCK OF COMBINED SIZE; * 05240000 -* USE XB TO CHAIN COMPACTED BLOCK ONTO FREE STORAGE * 05250000 -* LIST; WAKEUP ALL PROCESSES WAITING ON MEMORY * 05260000 -* SEMAPHORE; UNLOCK FSB SEMAPHORE; RETURN * 05270000 -* ERROR CHECKS: NONE * 05280000 -* INTERRUPTS: ON * 05290000 -* USER ACCESS: NO * 05300000 -* * 05310000 -*********************************************************************** 05320000 - SPACE 1 05330000 -XF EQU * . THE XF ROUTINE, TO FREE STORAGE 05340000 - USING *,1 05350000 - SVC C'!' . ENTER SMC SECTION 05360000 - LR 7,2 05370000 - USING XFX,7 . THE ARGUMENT LIST 05380000 - L 3,XFXSIZE . GET THE SIZE 05390000 - L 4,XFXADDR . AND THE ADDRESS 05400000 - LR 5,3 . GET THE ADDRESS OF THE END OF THE 05410000 - AR 5,4 . BLOCK TO BE FREED 05420000 - LA 2,FSBSEM . LOCK FSBSEM 05430000 - SVC C'P' 05440000 - LA 8,FSBPTR . START LOOKING DOWN THE FREE 05450000 - L 6,FSBPTR . STORAGE LIST, FOR COMPACTION 05460000 - USING FSB,6 05470000 -XFLOOP LTR 6,6 . ARE WE THROUGH? 05480000 - BZ XFLINK . IF SO, JUST ADD IT ON 05490000 - L 9,FSBNEXT . IF NOT. GET THE NEXT PTR 05500000 - CR 6,5 . IS THIS BLOCK RIGHT AFTER OURS? 05510000 - BNE XFTHEN . IF NOT, OK. BUT IF IT IS, 05520000 - ST 9,0(8) . WE CAN COMPACT, SO UNCHAIN IT 05530000 - A 3,FSBSIZE . AND REMEMBER THE NEW SIZE 05540000 - B XFBACKUP . AND ON TO THE NEXT 05550000 -XFTHEN LR 10,6 . MAYBE IT'S RIGHT BEFORE OURS 05560000 - A 10,FSBSIZE . GET ENDING ADDRESS OF FREE BLOCK 05570000 - CR 10,4 . IS IT RIGHT BEFORE OURS? 05580000 - BNE XFINC . OH FUDGE! NO! 05590000 - ST 9,0(8) . IF SO, UNLINK IT 05600000 - LR 4,6 . GET THE NEW BEGINNING LOCATION 05610000 - A 3,FSBSIZE . AND NEW SIZE OF FREE BLOCK 05620000 -XFBACKUP LR 6,8 . BACK UP ONE FSB 05630000 -XFINC LA 8,FSBNEXT . ON TO THE NEXT FSB 05640000 - L 6,FSBNEXT 05650000 - B XFLOOP . TRY, TRY AGAIN 05660000 -XFLINK LA 2,SATEMP . START TO CALL XB 05670000 - USING XBX,2 05680000 - ST 3,XBXSIZE . STORE SIZE 05690000 - ST 4,XBXADDR . AND ADDRESS 05700000 - SVC C'B' . LINK IT ONTO THE FSB CHAIN 05710000 - USING SM,2 05720000 - LA 2,MEMORY . GET VALUE OF MEMORY SEMAPHORE 05730000 - LA 11,1(0,0) . SUBTRACT FROM ONE, IT'S A HANDLE 05740000 - S 11,SMVAL . ON THE # OF PEOPLE WAITING 05750000 - DROP 2 05760000 -XFVLOOP BCT 11,XFVDO . LOOP IF ANYONE ELSE IS WAITING 05770000 - LA 2,FSBSEM . WE'RE THROUGH, SO 05780000 - SVC C'V' . UNBLOCK FSBSEM 05790000 - SVC C',' . LEAVE SMC 05800000 - LPSW RETURN . RETURN 05810000 -XFVDO SVC C'V' . WAKE SOMEONE UP 05820000 - B XFVLOOP . TRY AGAIN FOR ANOTHER 05830000 - DROP 6,7 05840000 - EJECT 05850000 -*********************************************************************** 05860000 -* * 05870000 -* XB ROUTINE * 05880000 -* * 05890000 -* FUNCTION: TO CHAIN A STORAGE BLOCK ONTO FREE STORAGE LIST * 05900000 -* DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XBX: * 05910000 -* XBX DS 0D * 05920000 -* XBXSIZE DS F SIZE OF BLOCK * 05930000 -* XBXADDR DS A ADDRESS OF FIRST BYTE OF BLOCK* 05940000 -* ROUTINES USED: NONE * 05950000 -* PROCEDURE: SEARCH FREE STORAGE LIST TO FIND WHERE TO INSERT * 05960000 -* FREE BLOCK IN ORDER OF INCREASING SIZE; FORMAT * 05970000 -* BLOCK LIKE AN FSB; INSERT; RETURN. * 05980000 -* ERROR CHECKS: NONE * 05990000 -* INTERRUPTS: OFF * 06000000 -* USER ACCESS: NO * 06010000 -* COMMENTS: SINCE XB ROUTINE ONLY CALLED BY XA AND XF, FSB * 06020000 -* SEMAPHORE IS ALREADY LOCKED. * 06030000 -* * 06040000 -*********************************************************************** 06050000 - SPACE 1 06060000 -XB EQU * 06070000 - USING *,1 06080000 - USING XBX,2 . ARGUMENT LIST 06090000 - L 3,XBXSIZE . GET THE SIZE 06100000 - L 4,XBXADDR . AND THE ADDRESS 06110000 - LA 8,FSBPTR . START LOOKING DOWN THE CHAIN 06120000 - L 6,FSBPTR 06130000 - LTR 6,6 . IF ZERO POINTER, WE ARE AT 06140000 - BZ XBINSERT . END OF CHAIN ALREADY 06150000 - USING FSB,6 06160000 -XBLOOP C 3,FSBSIZE . IF THE SIZE OF OURS IS LESS, 06170000 - BNP XBINSERT . TIME TO INSERT 06180000 - LA 8,FSBNEXT . ELSE GO ON TO THE NEXT 06190000 - L 6,FSBNEXT 06200000 - LTR 6,6 . IF NOT ALREADY THROUGH 06210000 - BNZ XBLOOP . BRANCH BACK 06220000 -XBINSERT ST 4,0(8) . NOW, LINK OURS ON 06230000 - DROP 6 06240000 - USING FSB,4 06250000 - ST 6,FSBNEXT . MAKE OURS POINT TO THE NEXT 06260000 - ST 3,FSBSIZE . WITH THE RIGHT SIZE 06270000 - LPSW RETURN . AND RETURN 06280000 - DROP 2,4 06290000 - EJECT 06300000 -*********************************************************************** 06310000 -* * 06320000 -* XC ROUTINE * 06330000 -* * 06340000 -* FUNCTION: TO CREATE A PROCESS * 06350000 -* DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XCX: * 06360000 -* XCX DS 0D * 06370000 -* XCXNAME DS CL8 NAME OF PROCESS TO BE CREATED * 06380000 -* ROUTINES USED: XEXC, XCOM, XN, XA, XI, XQUE * 06390000 -* PROCEDURE: USE XA TO ALLOCATE NEW PCB; PLACE XCXNAME IN PCB; * 06400000 -* INITIALIZE SEMAPHORES; STOP; BLOCK; OUT OF SMC; * 06410000 -* CALL XI TO LINK PCB ONTO PCB CHAINS; RETURN. * 06420000 -* ERROR CHECKS: IF NAME ALREADY USED IN THIS GROUP, XQUE ENTERED. * 06430000 -* INTERRUPTS: ON * 06440000 -* USER ACCESS: YES * 06450000 -* * 06460000 -*********************************************************************** 06470000 - SPACE 1 06480000 -XC EQU * . THE XC ROUTINE: CREATE A PROCESS 06490000 - USING *,1 06500000 - LR 7,2 06510000 - USING XCX,7 . ARGUMENT LIST 06520000 - LA 2,SATEMP . READY TO MAKE CALLS OUT 06530000 - USING XNX,2 . A XN-LIKE ARGUMENT LIST 06540000 - MVC XNXNAME,XCXNAME . GET THE NAME 06550000 - SVC C'N' . AND CALL TO FIND THE PCB 06560000 - CLC XNXADDR,=A(0) . SEE IF THERE 06570000 - BNE XCERR . IF ALREADY EXISTS, BAD 06580000 - SVC C'!' . ENTER SMC SECTION 06590000 - DROP 2 06600000 - USING XAX,2 . READY TO CALL XA 06610000 - MVC XAXSIZE,=A(LENPCB) . WE KNOW THE SIZE 06620000 - MVC XAXALGN,=F'8' . AND THE ALIGNMENT 06630000 - SVC C'A' . SO CALL 06640000 - L 2,XAXADDR . FIND THE ADDRESS 06650000 - DROP 2,15 06660000 - USING PCB,2 . FILL IN THE PCB 06670000 - MVC PCBNAME,XCXNAME . GIVE IT A NAME 06680000 - MVI PCBSTOPT,X'FF' . IT'S STOPPED 06690000 - MVC PCBBLOKT(PCBISA-PCBBLOKT),TEMPLATE+1 INITIALIZE PCB 06700000 - SVC C'I' . THREAD IT ON 06710000 - SVC C',' . LEAVE SMC SECTION 06720000 - LPSW RETURN . AND RETURN 06730000 -XCERR SVC C'?' . IF ALREADY EXISTS,KERROR 06740000 - DROP 2,7 06750000 - EJECT 06760000 -*********************************************************************** 06770000 -* * 06780000 -* XD ROUTINE * 06790000 -* * 06800000 -* FUNCTION: TO DESTROY A PROCESS * 06810000 -* DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XDX: * 06820000 -* XDX DS 0D * 06830000 -* XDXNAME DS CL8 NAME OF PROCESS TO BE DESTROYED* 06840000 -* ROUTINES USED: XEXC, XJ, XS, XN, XF, XCOM, XQUE * 06850000 -* PROCEDURE: USE XN TO FIND PCB FOR PROCESS TO BE DESTROYED; * 06860000 -* USE XJ TO UNLOCK PCB FROM PROCESS CHAINS; IF ANY * 06870000 -* MESSAGES FOR THIS PROCESS, FREE STORAGE FOR THEM; * 06880000 -* IF THERE IS ANY AUTOMATIC STORAGE, FREE IT; * 06890000 -* FREE STORAGE FOR PCB; RETURN. * 06900000 -* ERROR CHECKS: IF NAME DOESN'T EXIST OR PROCESS NOT STOPPED, * 06910000 -* XQUE ENTERED. * 06920000 -* INTERRUPTS: ON * 06930000 -* USER ACCESS: YES * 06940000 -* * 06950000 -*********************************************************************** 06960000 - SPACE 1 06970000 -XD EQU * . XD ROUTINE: DESTROY A PROCESS 06980000 - USING *,1 06990000 - LR 7,2 07000000 - USING XDX,7 . ARG LIST 07010000 - LA 2,SATEMP . READY TO CALL OUT 07020000 - USING XNX,2 . WILL CALL XN 07030000 - MVC XNXNAME,XDXNAME . GET NAME 07040000 - SVC C'N' . AND CALL 07050000 - L 2,XNXADDR . GET ADDRESS 07060000 - DROP 2 07070000 - LTR 2,2 . IF ADDRESS IS NULL, 07080000 - BZ XDERR . IT'S AN ERROR 07090000 - USING PCB,2 07100000 - CLI PCBSTOPT,X'FF' . IF NOT STOPPED 07110000 - BNE XDERR . IT'S AN ERROR 07120000 - SVC C'!' . ENTER SMC SECTION 07130000 - DROP 2 07140000 - USING PCB,15 07150000 - SVC C'J' . ELSE UNTHREAD THE ENTRY 07160000 - LR 8,2 . REMEMBER THE PCB POINTER 07170000 - LA 2,SATEMP . READY TO CALL OUT AGAIN 07180000 - USING PCB,8 07190000 - DROP 15 07200000 - L 9,PCBFM . GET FIRST MESSAGE 07210000 -XDLOOP LTR 9,9 . ANY MORE MESSAGES? 07220000 - BZ XDCHECK . IF NOT, FINISH UP 07230000 - USING MSG,9 07240000 - L 10,MSGNEXT . ELSE REMEMBER NEXT 07250000 - L 11,MSGSIZE . GET THE SIZE 07260000 - LA 11,15(11) . AND MAKE IT SOME NUMBER 07270000 - N 11,=F'-8' . OF DOUBLEWORDS 07280000 - USING XFX,2 07290000 - ST 9,XFXADDR . FREE THE LOCATION 07300000 - ST 11,XFXSIZE . THE NUMBER OF WORDS 07310000 - SVC C'F' . DO IT 07320000 - LR 9,10 . ON TO THE NEXT 07330000 - B XDLOOP . GET THE NEXT MESSAGE 07340000 -XDCHECK CLC PCBAADDR(4),=A(0) . HAS AUTOMATIC STORAGE BEEN 07350000 - BE XDTHEN . ALLOCATED? IF NOT, GO FINISH UP 07360000 - LA 2,PCBASIZE . SET UP THE ARGUMENT LIST 07370000 - SVC C'F' . FREE IT 07380000 - LA 2,SATEMP . RESET REGISTER 2 07390000 -XDTHEN ST 8,XFXADDR . READY TO FREE THE PCB 07400000 - MVC XFXSIZE,=A(LENPCB) . THE SIZE 07410000 - SVC C'F' . FREE IT 07420000 - SVC C',' . LEAVE SMC 07430000 - LPSW RETURN . AND RETURN 07440000 -XDERR SVC C'?' . IF PROCESS DOES NOT EXIST 07450000 - DROP 2,7,8,9 07460000 - USING PCB,15 07470000 - SPACE 3 07480000 -*********************************************************************** 07490000 -* * 07500000 -* XH ROUTINE * 07510000 -* * 07520000 -* FUNCTION: TO HALT A JOB * 07530000 -* DATABASES: NONE * 07540000 -* ROUTINES USED: XS, XR * 07550000 -* PROCEDURE: SEND MESSAGE TO SUPERVISOR PROCESS FOR THIS JOB * 07560000 -* INDICATING NORMAL TERMINATION; TRIES TO READ * 07570000 -* MESSAGES FOREVER LOOPING; BLOCKS ITSELF, THEREBY * 07580000 -* NEVER RETURNING. * 07590000 -* ERROR CHECKS: NONE * 07600000 -* INTERRUPTS: ON * 07610000 -* USER ACCESS: YES * 07620000 -* COMMENTS: USER NORMALLY USES THIS ROUTINE TO END A JOB. * 07630000 -* * 07640000 -*********************************************************************** 07650000 - SPACE 1 07660000 -XH EQU * . THE XH ROUTINE: HALT A JOB 07670000 - USING *,1 07680000 - LA 2,XHMSG1 . SEND A MESSAGE TO *IBSUP 07690000 - SVC C'S' . SEND IT 07700000 -XHLOOP LA 2,XHMSG2 . READY TO READ A REPLY 07710000 - SVC C'R' . WHICH NEVER COMES 07720000 - B XHLOOP . BUT IF IT DOES WERE READY 07730000 - DS 0F 07740000 -XHMSG1 DC CL8'*IBSUP' . SAY TO *IBSUP 07750000 - DC F'12' . TWELVE CHARACTERS 07760000 - DC C'PROGRAM HALT' . SAYING WERE OK 07770000 -XHMSG2 DS CL8 . WHO SENDS US A MESSAGE 07780000 - DC F'1' . ONE CHARACTER 07790000 - DS CL1,0H . WHICH GOES HERE 07800000 - EJECT 07810000 -*********************************************************************** 07820000 -* * 07830000 -* XI ROUTINE * 07840000 -* * 07850000 -* FUNCTION: TO CHAIN A PCB ONTO PROCESS CHAINS * 07860000 -* DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS OF A PCB * 07870000 -* ROUTINES USED: NONE * 07880000 -* PROCEDURE: POINTER USED TO CHAIN PCB INTO ALL PCB CHAIN AND * 07890000 -* THIS GROUP CHAIN RIGHT AFTER RUNNING PCB; RETURN. * 07900000 -* ERROR CHECKS: NONE * 07910000 -* INTERRUPTS: OFF * 07920000 -* USER ACCESS: NO * 07930000 -* * 07940000 -*********************************************************************** 07950000 - SPACE 1 07960000 -XI EQU * . THE XI ROUTINE: THREAD IN A PCB 07970000 - USING *,1 07980000 - L 10,PCBNPALL . GET THE NEXT 'ALL' PCB 07990000 - ST 2,PCBNPALL . STORE THIS PCB RIGNT AFTER MINE 08000000 - DROP 15 08010000 - USING PCB,10 08020000 - ST 2,PCBLPALL . THE NEXT ONE DOWN POINTS BACK 08030000 - DROP 10 08040000 - USING PCB,2 08050000 - ST 15,PCBLPALL . THIS PCB POINTS BACK 08060000 - ST 10,PCBNPALL . AND FORWARD 08070000 - DROP 2 08080000 - USING PCB,15 08090000 - L 10,PCBNPTG . GET NEXT "THIS GROUP" PCB 08100000 - ST 2,PCBNPTG . RUNNING PCB POINTS TO NEW MEMBER 08110000 - DROP 15 . OF PROCESS GROUP 08120000 - USING PCB,10 08130000 - ST 2,PCBLPTG . NEXT PCB DOWN POINTS BACK 08140000 - DROP 10 08150000 - USING PCB,2 08160000 - ST 15,PCBLPTG . AND WE POINT BACKWARD 08170000 - ST 10,PCBNPTG . AND FORWARD 08180000 - DROP 2 08190000 - LPSW RETURN . RETURN 08200000 - USING PCB,15 08210000 - EJECT 08220000 -*********************************************************************** 08230000 -* * 08240000 -* XJ ROUTINE * 08250000 -* * 08260000 -* FUNCTION: TO UNCHAIN A PCB FROM PROCESS CHAINS * 08270000 -* DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS OF A PCB * 08280000 -* ROUTINES USED: NONE * 08290000 -* PROCEDURE: POINTERS TO PCB IN ALL PCB CHAIN AND THIS GROUP * 08300000 -* CHAIN MODIFIED WITHOUT FREEING STORAGE; RETURN. * 08310000 -* ERROR CHECKS: NONE * 08320000 -* INTERRUPTS: OFF * 08330000 -* USER ACCESS: NO * 08340000 -* * 08350000 -*********************************************************************** 08360000 - SPACE 1 08370000 -XJ EQU * . THE XJ ROUTINE: UNTHREAD A PCB 08380000 - USING *,1 08390000 - DROP 15 08400000 - USING PCB,2 08410000 - L 11,PCBLPALL . GET PRECEDING PCB 08420000 - L 10,PCBNPALL . AND FOLLOWING ONE IN "ALL" 08430000 - DROP 2 . CHAIN 08440000 - USING PCB,11 08450000 - ST 10,PCBNPALL . LAST POINTS TO NEXT 08460000 - DROP 11 08470000 - USING PCB,10 08480000 - ST 11,PCBLPALL . NEXT POINTS TO LAST 08490000 - DROP 10 08500000 - USING PCB,2 08510000 - L 11,PCBLPTG . REDO FOR THIS GROUP PCB CHAIN 08520000 - L 10,PCBNPTG 08530000 - DROP 2 08540000 - USING PCB,11 08550000 - ST 10,PCBNPTG . LAST POINTS TO NEXT 08560000 - DROP 11 08570000 - USING PCB,10 08580000 - ST 11,PCBLPTG . NEXT POINTS TO LAST 08590000 - DROP 10 08600000 - LPSW RETURN . AND RETURN 08610000 - USING PCB,15 08620000 - EJECT 08630000 -*********************************************************************** 08640000 -* * 08650000 -* XN ROUTINE * 08660000 -* * 08670000 -* FUNCTION: TO FIND THE PCB FOR A PROCESS GIVEN ITS NAME ONLY * 08680000 -* DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XNX * 08690000 -* XNX DS 0D * 08700000 -* XNXNAME DS CL8 NAME OF PROCESS * 08710000 -* XNXADDR DS A ADDRESS OF PCB * 08720000 -* ROUTINES USED: NONE * 08730000 -* PROCEDURE: SEARCH THIS GROUP PCB CHAIN FOR NAME; IF FOUND, * 08740000 -* STORE POINTER IN XNXADDR. IF NOT FOUND, STORE * 08750000 -* ZERO IN XNXADDR; RETURN. * 08760000 -* ERROR CHECKS: NONE * 08770000 -* INTERRUPTS: OFF * 08780000 -* USER ACCESS: YES * 08790000 -* * 08800000 -*********************************************************************** 08810000 - SPACE 1 08820000 -XN EQU * . THE XN ROUTINE: FIND A NAMED PCB 08830000 - USING *,1 08840000 - USING XNX,2 . THE ARG LIST 08850000 - LR 10,15 . FIRST PCB TO LOOK AT IS OURS 08860000 - DROP 15 08870000 - USING PCB,10 08880000 -XNXLOOP L 10,PCBNPTG . LOOK AT NEXT PCB 08890000 - CLC PCBNAME,XNXNAME . HAS IT THE RIGHT NAME? 08900000 - BE XNXFOUND . IF YES, OH JOY. 08910000 - CR 10,15 . IF NOT, ARE WE THROUGH? 08920000 - BNE XNXLOOP . IF NOT, TRY THE NEXT PCB 08930000 - LA 10,0 . ELSE, IT'S NOT HERE 08940000 -XNXFOUND ST 10,XNXADDR . FOUND IT. SAY WHERE. 08950000 - LPSW RETURN . AND RETURN 08960000 - DROP 2,10 08970000 - USING PCB,15 08980000 - EJECT 08990000 -*********************************************************************** 09000000 -* * 09010000 -* XR ROUTINE * 09020000 -* * 09030000 -* FUNCTION: TO READ A MESSAGE * 09040000 -* DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XRX * 09050000 -* XRX DS 0D * 09060000 -* XRXNAME DS CL8 NAME OF SENDER PROCESS * 09070000 -* XRXSIZE DS F SIZE OF MESSAGE TEXT * 09080000 -* XRXTEXT DS C TEXT OF MESSAGE * 09090000 -* ROUTINES USED: XP, XEXC, XN, XCOM, XF * 09100000 -* PROCEDURE: USE XP ON MESSAGE SEMAPHORE RECEIVER TO SEE IF ANY * 09110000 -* MESSAGES WAITING; IF NONE, PROCESS BLOCKED UNTIL * 09120000 -* THERE IS ONE; LOCK MESSAGE CHAIN; REMOVE A MESSAGE * 09130000 -* FROM CHAIN AND UNLOCK IT; MOVE TEXT OF MESSAGE, * 09140000 -* PADDING WITH BLANKS OR TRUNCATING AS NECESSARY; * 09150000 -* INDICATE CORRECT MESSAGE LENGTH AND NAME OF * 09160000 -* MESSAGE SENDER; FREE STORAGE USED TO HOLD MESSAGE, * 09170000 -* AND RETURN. * 09180000 -* ERROR CHECKS: NONE * 09190000 -* INTERRUPTS: ON * 09200000 -* USER ACCESS: YES * 09210000 -* * 09220000 -*********************************************************************** 09230000 - SPACE 1 09240000 -XR EQU * . THE XR ROUTINE: READ A MESSAGE 09250000 - USING *,1 09260000 - LR 7,2 09270000 - USING XRX,7 . ARG LIST 09280000 - LA 2,PCBMSR . SEE IF MESSAGES WAITING 09290000 - SVC C'P' 09300000 - SVC C'!' . ENTER SMC SECTION 09310000 - LA 2,PCBMSC . THEN LOCK THE MESSAGE CHAIN 09320000 - SVC C'P' 09330000 - L 5,PCBFM . GET THE FIRST MESSAGE 09340000 - USING MSG,5 09350000 - MVC PCBFM,MSGNEXT . REMEMBER THE NEXT 09360000 - SVC C'V' . UNLOCK THE MESSAGE CHAIN 09370000 - L 6,XRXSIZE . GET THE BUFFER CAPACITY 09380000 - S 6,=F'2' . MINUS 1, MINUS 1 09390000 - MVI XRXTEXT,C' ' . MOVE IN A BLANK 09400000 - BM XRNOB 09410000 - EX 6,XRFILL . THEN FILL THE REST WITH BLANKS 09420000 -XRNOB LA 6,1(6) . THEN GET PROPER BUFFER COUNT 09430000 - C 6,MSGSIZE . COMPARE WITH MESSAGE LENGTH 09440000 - BL XRTHEN . IF LESS, HANDLE ACCORDINGLY 09450000 - L 6,MSGSIZE . ELSE COUNT FOR MVC IS MESSAGE 09460000 - BCTR 6,0 . SIZE MINUS ONE 09470000 -XRTHEN LTR 6,6 . ANY CHARACTERS TO MOVE? 09480000 - BM XRAFT . IF NOT, DON'T 09490000 - EX 6,XRMOVE . ELSE MOVE THEM 09500000 -XRAFT LA 6,1(6) . THEN GET LENGTH 09510000 - ST 6,XRXSIZE . STORE IT 09520000 - L 10,MSGSENDR . GET SENDER'S PCB 09530000 - DROP 15 09540000 - USING PCB,10 09550000 - MVC XRXNAME,PCBNAME . AND STORE SENDER'S NAME 09560000 - L 6,MSGSIZE . GET SIZE OF MESSAGE TEXT 09570000 - LA 6,LENMSG(6) . ADD SIZE OF MESSAGE BLOCK 09580000 - LA 6,7(6) . AND TRUNCATE 09590000 - N 6,=F'-8' . UP 09600000 - LR 2,5 . SET UP POINTER TO XFX 09610000 - USING XFX,2 09620000 - ST 5,XFXADDR . STORE ADDRESS 09630000 - ST 6,XFXSIZE . STORE SIZE 09640000 - SVC C'F' . AND FREE THE MESSAGE BLOCK 09650000 - SVC C',' . LEAVE SMC 09660000 - LPSW RETURN . AND RETURN 09670000 -XRFILL MVC XRXTEXT+1,XRXTEXT . FILL WITH BLANKS 09680000 -XRMOVE MVC XRXTEXT,MSGTEXT . MOVE TEXT 09690000 - DROP 2,5,7,10 09700000 - USING PCB,15 09710000 - SPACE 3 09720000 -*********************************************************************** 09730000 -* * 09740000 -* XS ROUTINE * 09750000 -* * 09760000 -* FUNCTION: TO SEND A MESSAGE * 09770000 -* DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XSX * 09780000 -* XSX DS 0D * 09790000 -* XSXNAME DS CL8 NAME OF TARGET PROCESS * 09800000 -* XSXSIZE DS F SIZE OF TEXT * 09810000 -* XSXTEXT DS C TEXT OF MESSAGE * 09820000 -* ROUTINES USED: XP, XV, XEXC, XCOM, XA, XQUE * 09830000 -* PROCEDURE: USE XN TO GET POINTER TO PCB OF TARGET PROCESS; * 09840000 -* USE LENGTH OF MESSAGE AND XA TO ALLOCATE BLOCK FOR * 09850000 -* MESSAGE; LOCK MESSAGE CHAIN OF TARGET PROCESS; * 09860000 -* PUT MESSAGE BLOCK AT END OF CHAIN; STORE SENDER * 09870000 -* NAME, SIZE, AND TEXT OF MESSAGE; UNLOCK CHAIN; * 09880000 -* INDICATE MESSAGE CHAIN IS ONE LONGER; RETURN. * 09890000 -* ERROR CHECKS: IF NO PROCESS BY GIVEN NAME, ENTER XQUE. * 09900000 -* INTERRUPTS: ON * 09910000 -* USER ACCESS: YES * 09920000 -* * 09930000 -*********************************************************************** 09940000 - SPACE 1 09950000 -XS EQU * . THE XS ROUTINE: SEND MESSAGES 09960000 - USING *,1 09970000 - LR 7,2 09980000 - USING XSX,7 . ARG LIST 09990000 - LA 2,SATEMP . READY TO CALL OUT 10000000 - USING XNX,2 . ABOUT TO CALL XN 10010000 - MVC XNXNAME,XSXNAME . GIVE NAME OF TARGET PROCESS 10020000 - SVC C'N' . SEE WHERE IT IS 10030000 - L 4,XNXADDR . GET THE POINTER 10040000 - LTR 4,4 . IS THERE INDEED ONE? 10050000 - BZ XSERR . IF NOT, ERROR 10060000 - USING PCB,4 10070000 - DROP 2,15 10080000 - USING XAX,2 . READY TO CALL XA 10090000 - SVC C'!' . ENTERING SMC SECTION 10100000 - L 3,XSXSIZE . GET THE STATED SIZE 10110000 - LA 3,LENMSG(3) . PLUS THE AMOUNT OF OVERHEAD 10120000 - LA 3,7(3) . AND TRUNCATE 10130000 - N 3,=F'-8' . UP 10140000 - ST 3,XAXSIZE . THAT'S THE SIZE OF THE REGION TO 10150000 - MVC XAXALGN,=F'8' . ALLOCATE, ON A DOUBLEWORD BOUND 10160000 - SVC C'A' . SO ALLOCATE ALREADY 10170000 - L 5,XAXADDR . GET THE ADDRESS 10180000 - DROP 2 10190000 - LA 2,PCBMSC . GET THE MESSAGE CHAIN SEMAPHORE 10200000 - SVC C'P' . AND LOCK IT 10210000 - LA 8,PCBFM . THEN START DOWN THE MESSAGE 10220000 - L 9,PCBFM . CHAIN 10230000 - USING MSG,9 10240000 -XSLOOP LTR 9,9 . ARE WE THROUGH? 10250000 - BZ XSADD . IF SO ADD IT ON 10260000 - LA 8,MSGNEXT . IF NOT, ON TO THE NEXT 10270000 - L 9,MSGNEXT 10280000 - B XSLOOP . AND TRY AGAIN 10290000 -XSADD ST 5,0(8) . CHAIN OURS ON THE END 10300000 - DROP 9 10310000 - USING MSG,5 10320000 - MVC MSGNEXT,=A(0) . SET NEXT POINTER NULL 10330000 - ST 15,MSGSENDR . STORE THE SENDER 10340000 - L 6,XSXSIZE . GET THE TEXT LENGTH 10350000 - ST 6,MSGSIZE . AND STORE IT 10360000 - BCTR 6,0 . ONE LESS 10370000 - LTR 6,6 . TEST LENGTH 10380000 - BM XSAFT . IF ZERO, NOTHING TO MOVE 10390000 - EX 6,XSMOVE . ELSE, MOVE IT 10400000 -XSAFT SVC C'V' . UNLOCK THE MESSAGE CHAIN 10410000 - LA 2,PCBMSR . THEN SAY THERE'S 10420000 - SVC C'V' . ONE MORE MESSAGE 10430000 - SVC C',' . LEAVE SMC SECTION 10440000 - LPSW RETURN . AND RETURN 10450000 -XSERR SVC C'?' 10460000 -XSMOVE MVC MSGTEXT,XSXTEXT . THE MOVE FOR THE TEXT 10470000 - DROP 4,5,7 10480000 - USING PCB,15 10490000 - EJECT 10500000 -*********************************************************************** 10510000 -* * 10520000 -* XY ROUTINE * 10530000 -* * 10540000 -* FUNCTION: TO START A PROCESS * 10550000 -* DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XYX * 10560000 -* XYX DS 0D * 10570000 -* XYXNAME DS CL8 NAME OF PROCESS TO BE STARTED * 10580000 -* XYXADDR DS A STARTING ADDRESS OF PROCESS * 10590000 -* ROUTINES USED: XN, XEXC, XCOM, XQUE * 10600000 -* PROCEDURE: USE XN TO GET POINTER TO THE PCB OF PROCESS TO BE * 10610000 -* STARTED; STORE IN PCB INTERRUPT SAVE AREA REGISTERS* 10620000 -* AND PSW WITH STARTING ADDRESS AS SENT FROM STARTING* 10630000 -* PROCESS; STOPPED BIT TURNED OFF; RETURN. * 10640000 -* ERROR CHECKS: IF NO PROCESS BY GIVEN NAME, XQUE ENTERED. * 10650000 -* INTERRUPTS: OFF * 10660000 -* USER ACCESS: YES * 10670000 -* * 10680000 -*********************************************************************** 10690000 - SPACE 1 10700000 -XY EQU * . THE XY ROUTINE: START A PROCESS 10710000 - USING *,1 10720000 - LR 7,2 10730000 - USING XYX,7 . THE ARG LIST 10740000 - LA 2,SATEMP . READY TO CALL OUT 10750000 - USING XNX,2 10760000 - MVC XNXNAME,XYXNAME . GIVE XN A NAME 10770000 - SVC C'N' . CALL XN 10780000 - L 10,XNXADDR . WHERE IS THE PCB? 10790000 - LTR 10,10 . OR IS THERE ONE? 10800000 - BZ XYERR . IF NOT, OH HISS BOO 10810000 - DROP 2,14,15 10820000 - USING PCB,10 10830000 - LA 13,PCBISA . GET INTO THAT PCB'S ISA 10840000 - USING SA,13 10850000 - MVC SAPSW,(SAPSW-SA)(14) . GIVE IT THE CALLER'S PSW 10860000 - MVC SAPSW+5(3),XYXADDR+1 . BUT AT THE REQUESTED ADDRESS 10870000 - MVC SAREGS,(SAREGS-SA)(14) .GIVE IT HIS REGISTERS 10880000 - MVI PCBSTOPT,X'00' . IT'S NO LONGER STOPPED 10890000 - LPSW RETURN . AND RETURN 10900000 -XYERR SVC C'?' . WE DONE BAD 10910000 - DROP 7,10,13 10920000 - USING SA,14 10930000 - USING PCB,15 10940000 - EJECT 10950000 -*********************************************************************** 10960000 -* * 10970000 -* XZ ROUTINE * 10980000 -* * 10990000 -* FUNCTION: TO STOP A PROCESS * 11000000 -* DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XZX * 11010000 -* XZX DS 0D * 11020000 -* XZXNAME DS CL8 NAME OF PROCESS TO BE STOPPED * 11030000 -* ROUTINES USED: XN, XEXC, XCOM, XQUE, XP * 11040000 -* PROCEDURE: CHECK THAT USER PROCESS CAN'T STOP SYSTEM * 11050000 -* PROCESS; USE XN TO GET PCB POINTER; IF IN SMC, SET * 11060000 -* STOP WAITING BIT AND BLOCK SELF UNTIL STOP * 11070000 -* PERFORMED; ELSE SET STOPPED BIT, AND RETURN. * 11080000 -* ERROR CHECKS: IF NO PROCESS BY GIVEN NAME OR USER TRIES TO * 11090000 -* STOP A SYSTEM PROCESS, XQUE ENTERED. * 11100000 -* INTERRUPTS: ON * 11110000 -* USER ACCESS: YES * 11120000 -* * 11130000 -*********************************************************************** 11140000 - SPACE 1 11150000 -XZ EQU * . THE XZ ROUTINE: STOP A PROCESS 11160000 - USING *,1 11170000 - LR 7,2 11180000 - USING XZX,7 . ARG LIST 11190000 - CLI PCBNAME,C'*' . IS STOPPER A * PROCESS 11200000 - BE XZFINE . THAT'S OK 11210000 - CLI XZXNAME,C'*' . IF NOT, IS STOPPEE A * ? 11220000 - BE XZERR . CAN'T DO THAT 11230000 -XZFINE LA 2,SATEMP . READY TO CALL OUT 11240000 - USING XNX,2 . WILL CALL XN 11250000 - MVC XNXNAME,XZXNAME . GIVE IT THE NAME 11260000 - SVC C'N' . AND DO THE CALL 11270000 - L 10,XNXADDR . GET THE PCB'S ADDRESS 11280000 - LTR 10,10 . SEE IF NULL 11290000 - BZ XZERR . IF SO, ERROR 11300000 - SVC C'!' . ENTER SMC 11310000 - DROP 2,15 11320000 - USING PCB,10 11330000 -XZSTOP CLI PCBINSMC,X'00' . SEE IF IN SMC 11340000 - BNE XZINSMC . IF SO, BAD 11350000 - MVI PCBSTOPT,X'FF' . ELSE JUST STOP IT 11360000 - SVC C',' . LEAVE SMC 11370000 - LPSW RETURN . AND RETURN 11380000 -XZINSMC MVI PCBSW,X'FF' . IF IN SMC, SAY STOP WAITING 11390000 - LA 2,PCBSRS . AND STOP OURSELVES AGAINST 11400000 - SVC C'P' . A SEMAPHORE 11410000 - B XZSTOP . THEN WE CAN REALLY STOP IT 11420000 -XZERR SVC C'?' . AN ERROR 11430000 - DROP 10,7 11440000 - USING PCB,15 11450000 - EJECT 11460000 -*********************************************************************** 11470000 -* * 11480000 -* XQUE ROUTINE * 11490000 -* * 11500000 -* FUNCTION: TO SIGNAL ERROR CONDITION * 11510000 -* DATABASES: NONE * 11520000 -* ROUTINES USED: XR, XS * 11530000 -* PROCEDURE: SEND MESSAGE TO SUPERVISOR PROCESS FOR THIS JOB * 11540000 -* INDICATING ABNORMAL TERMINATION; TRY TO READ * 11550000 -* MESSAGES, FOREVER LOOPING; BLOCK ITSELF, THEREBY * 11560000 -* NEVER RETURNING. * 11570000 -* ERROR CHECKS: NONE * 11580000 -* INTERRUPTS: OFF * 11590000 -* USER ACCESS: YES * 11600000 -* * 11610000 -*********************************************************************** 11620000 - SPACE 1 11630000 -XQUE EQU * . THE XQUE ROUTINE: ERROR! 11640000 - USING *,1 11650000 - LA 2,XQUEM1 . SEND AN ERROR MESSAGE TO *IBSUP 11660000 - SVC C'S' 11670000 -XQUELOOP LA 2,XQUEM2 . WAIT FOR REPLY 11680000 - SVC C'R' 11690000 - B XQUELOOP . BUT IGNORE IT 11700000 - DS 0F 11710000 -XQUEM1 DC CL8'*IBSUP' 11720000 - DC F'12' 11730000 - DC CL12'PROGRAM FLOP' 11740000 -XQUEM2 DS CL8 11750000 - DC F'1' 11760000 - DS CL1,0H 11770000 - DROP 14,15 11780000 - EJECT 11790000 -*********************************************************************** 11800000 -* * 11810000 -* INPUT/OUTPUT ROUTINES * 11820000 -* * 11830000 -*********************************************************************** 11840000 - SPACE 1 11850000 -*********************************************************************** 11860000 -* * 11870000 -* SYSTEM SUPPLIED DEVICE HANDLER FOR READERS * 11880000 -* * 11890000 -*********************************************************************** 11900000 - SPACE 1 11910000 -RDRHANDL EQU * . THE READER HANDLER 11920000 - USING UCB,3 . STARTED WITH REG3 -> UCB 11930000 - BALR 1,0 11940000 - USING *,1 . ESTABLISH ADDRESSING 11950000 - LA 2,RDRHSEM . LOCK OURSELVES UNTIL WE SET UP 11960000 - SVC C'P' . AN AUTOMATIC STORAGE AREA 11970000 - LA 2,RDRHAAS . READY TO ALLOCATE 11980000 - USING XAX,2 11990000 - SVC C'E' . ALLOCATE 12000000 - L 12,XAXADDR . GET A PTR 12010000 - DROP 2 12020000 - LA 2,RDRHSEM . AND UNBLOCK OURSELVES 12030000 - SVC C'V' 12040000 - SRL 4,16 . SHIFT KEY 12050000 - SR 10,10 . CLEAR REG 10 12060000 - USING RDRHAS,12 . AUTOMATIC AREA 12070000 - MVI JOBBIT,X'00' . INITIALIZE 12080000 - LA 6,RDRHCCB . GET PTR TO CCB 12090000 -RDRHLOOP LA 2,RDRHMSG . TRY TO READ A MESSAGE 12100000 - USING XRX,2 12110000 - MVC XRXSIZE,=F'8' . WE CAN TAKE 8 CHARS 12120000 - SVC C'R' . READ IT 12130000 - CLC =C'READ',XRXTEXT . IF FIRST WORD IS READ, OK 12140000 - BNE RDRHLOOP . ELSE IGNORE 12150000 - L 5,XRXTEXT+4 . GET 2ND WORD OF TEXT 12160000 - DROP 2 12170000 - LA 2,UCBUS . LOCK THE UCB AND IT'S UNIT 12180000 - SVC C'P' 12190000 - LA 2,RDRHMSG . RESET ADDRESSING POINTER 12200000 - USING XRX,2 12210000 - CLI JOBBIT,X'FF' . HAVE WE JUST READ $JOB CARD? 12220000 - BNE RDRHMORE . IF NO, GO CHECK PROTECTION, ELSE 12230000 - CLI XRXNAME,C'*' . IS JSP CALLING US? 12240000 - BNE RDRHNO . IF NOT, TELL HIM NO. 12250000 - MVC 0(80,5),RDRHTEMP . IF IT IS, GIVE JSP THE $JOB CARD 12260000 - MVI JOBBIT,X'00' . SAY WE DON'T HAVE $JOB WAITING 12270000 - B RDRHSOK . AND SEND MESSAGE BACK 12280000 - DROP 2 12290000 -RDRHMORE CLI RDRHMSG,C'*' . IS SYSTEM CALLING? 12300000 - BE RDRHPOK . THEN PROTECTION OK, ELSE 12310000 - LR 11,5 . GET ADDRESS THAT'S TO HOLD CARD, 12320000 - N 11,PROTCON1 . get the page boundary 12330002 -* ISKE 10,11 . find storage key 12334002 - DC X'B22900AB' Assembler (XF) doesn't support ISKE 12338002 - N 10,PROTCON2 . ignore low order bits 12342002 - CR 10,4 . DOES IT MATCH OURS? 12350000 - BNE RDRHNO . IF NOT, TELL HIM NO 12360000 - LA 11,79(5) . CHECK LAST BYTE ADDR OF CARD 12370000 - N 11,PROTCON1 . get the page boundary 12380002 -* ISKE 10,11 . find storage key 12384002 - DC X'B22900AB' Assembler (XF) doesn't support ISKE 12388002 - N 10,PROTCON2 . ignore low order bits 12392002 - CR 10,4 . DOES IT MATCH OURS? 12400000 - BNE RDRHNO . IF NOT, TELL HIM NO 12410000 -RDRHPOK N 5,CCBCON1 . MAKE ADDRESS INTO 12420000 - ST 5,RDRHCCB . A CCW (OR CCB) 12430000 - OI RDRHCCB,X'02' 12440000 - MVC RDRHCCB+4,=F'80' . WE'LL READ EIGHTY CHARACTERS 12450000 - MVC UCBCSW(4),=A(0) . CLEAR THE LAST CSW THERE 12460000 - MVC UCBCSW+4(4),=A(0) 12470000 - LA 2,CAWSEM . LOCK THE CAW 12480000 - SVC C'P' 12490000 - ST 6,CAW . THAT'S THE CAW 12500000 - L 7,UCBADDR . GET THE UNIT ADDRESS 12510000 - SIO 0(7) . START THE I/O 12520000 - BNZ RDSTATUS . BRANCH IF SIO UNSUCCESSFUL 12530000 - SVC C'V' . THEN UNLOCK THE CAW 12540000 -RDRHWAIT LA 2,UCBWS . NOW WAIT FOR AN INTERRUPT 12550000 - SVC C'P' 12560000 - TM UCBCSW+4,X'85' . CHECK THE STATUS 12570003 - BZ RDRHWAIT . IF NOT FINISHED, WAIT 12580000 - TM UCBCSW+4,X'01' . CHECK FOR EXCEPTION 12590000 - BO RDRHEXC . if yes, ignore this interrupt 12600003 - TM UCBCSW+4,X'80' . if no, check for attention 12602003 - BO RDRHPOK . if yes, try to restart the I/O 12604003 - B RDRHOK . else, all is groovy 12606003 -RDRHEXC NI UCBCSW+4,X'FE' . clear exception .. 12608003 - B RDRHWAIT . .. and continue waiting 12610003 -RDRHNO MVC RDRHM+12(2),=C'NO' . message back is no 12612003 - B RDRHSEND . GET READY TO SEND 12620000 -RDRHOK CLI RDRHMSG,C'*' . IS THE SYSTEM CALLING? 12630000 - BE RDRHSOK . THAT'S FINE. OTHERWISE, 12640000 - CLC =C'$JOB,',0(5) . WAS IT A $JOB CARD? 12650000 - BE ENDADATA . OOPS! WE HIT END OF DATA STREAM 12660000 -RDRHSOK MVC RDRHM+12(2),=C'OK' .GROOVINESS MESSAGE 12670000 -RDRHSEND MVC RDRHM+8(4),=F'2' . SAY THERE ARE 2 CHARACTERS 12680000 - MVC RDRHM+0(8),RDRHMSG+0 . SEND BACK TO SAME GUY 12690000 - LA 2,UCBUS . NOW UNLOCK UCB AND UNIT 12700000 - SVC C'V' 12710000 - LA 2,RDRHM . SET UP MESSAGE 12720000 - SVC C'S' . AND SEND IT 12730000 - B RDRHLOOP 12740000 -ENDADATA MVC RDRHM+12(2),=C'NO' . TELL USER NO MORE CARDS 12750000 - MVC RDRHTEMP(80),0(5) . SAVE THE $JOB CARD 12760000 - MVI 0(5),C' ' . BLANK OUT THE USER'S COPY 12770000 - MVC 1(79,5),0(5) 12780000 - MVI JOBBIT,X'FF' . INDICATE WE HAVE A NEW $JOB CARD 12790000 - B RDRHSEND . AND SEND THE MESSAGE BACK 12800000 -RDSTATUS SVC C'V' . UNLOCK THE CAW 12810000 - LA 2,UCBWS . AND WAIT FOR AN INTERRUPT 12820000 - SVC C'P' 12830000 - B RDRHPOK . AND TRY TO RESTART THE I/O 12840000 - DROP 3,12 12850000 - SPACE 1 12860000 -RDRHSEM DC F'1,0' 12870000 -CCBCON1 DC X'00FFFFFF' MASK 12880000 -PROTCON1 DC X'00FFF000' page alignment 12890002 -PROTCON2 DC X'FFFFFFF0' ignore low order bits 12893002 -RDRHAAS DC A(LENRDRHA) ALLOCATE ARGLIST FOR STORAGE 12900000 - DC F'0' 12910000 - DC F'8' 12920000 - SPACE 3 12930000 -*********************************************************************** 12940000 -* * 12950000 -* SYSTEM SUPPLIED DEVICE HANDLER FOR PRINTERS * 12960000 -* * 12970000 -*********************************************************************** 12980000 - SPACE 1 12990000 -PRTHANDL EQU * . THE PRINTER HANDLER 13000000 - USING UCB,3 . ENTERED WITH REG3 -> THE UCB 13010000 - BALR 1,0 13020000 - USING *,1 . ESTABLISH ADDRESSING 13030000 - LA 2,PRTHSEM . LOCK UNTIL ALLOCATE STORAGE 13040000 - SVC C'P' . 13050000 - LA 2,PRTHAAS . READY TO ALLOCATE 13060000 - USING XAX,2 13070000 - SVC C'E' . ALLOCATE 13080000 - L 12,XAXADDR . GET THE ADDRESS 13090000 - DROP 2 13100000 - LA 2,PRTHSEM . 13110000 - SVC C'V' UNLOCK TO ROUTINE 13120000 - SRL 4,16 . SHIFT KEY 13130000 - SR 10,10 . CLEAR REG 10 13140000 - USING PRTHAS,12 . ADDRESSING IN THE AUTO AREA 13150000 - LA 6,PRTHCCB . MAKE A CAW 13160000 -PRTHLOOP LA 2,PRTHMSG . READY TO READ A MESSAGE 13170000 - USING XRX,2 13180000 - MVC XRXSIZE,=F'8' . WE CAN TAKE 8 CHARACTERS 13190000 - SVC C'R' . READ IT 13200000 - L 5,XRXTEXT+4 . LOAD THE ADDRESS 13210000 - CLC =C'PRIN',XRXTEXT . IS IT A PRIN REQUEST? 13220000 - BE PRTHPRIN 13230000 - CLC =C'STC1',XRXTEXT . OR A SKIP REQUEST? 13240000 - BE PRTHSTC1 13250000 - B PRTHLOOP . IF NEITHER, IGNORE 13260000 - DROP 2 13270000 -PRTHPRIN LA 2,UCBUS 13280000 - SVC C'P' . LOCK THE UCB AND UNIT 13290000 - CLI PRTHMSG,C'*' . IS SYSTEM CALLING? 13300000 - BE PRTHPOK . THEN PROTECTION OK. ELSE 13310000 - LR 11,5 . GET ADDRESS THAT'S TO HOLD MSG, 13320000 - N 11,PROTCON1 . get the page boundary 13330002 -* ISKE 10,11 . find storage key 13334002 - DC X'B22900AB' Assembler (XF) doesn't support ISKE 13338002 - N 10,PROTCON2 . ignore low order bits 13342002 - CR 10,4 . DOES IT MATCH OURS? 13350000 - BNE PRTHNO . IF NOT, TELL HIM NO 13360000 - LA 11,131(5) . CHECK LAST BYTE ADDRESS OF LINE 13370000 - N 11,PROTCON1 . get the page boundary 13380002 -* ISKE 10,11 . find storage key 13384002 - DC X'B22900AB' Assembler (XF) doesn't support ISKE 13388002 - N 10,PROTCON2 . ignore low order bits 13392002 - CR 10,4 . DOES IT MATCH OURS? 13400000 - BNE PRTHNO . IF NOT, TELL HIM NO 13410000 -PRTHPOK N 5,CCBCON1 . MAKE A WRITE REQUEST 13420000 - ST 5,PRTHCCB . FOR THE CCB 13430000 - OI PRTHCCB,X'09' . PRINT COMMAND CODE 13440000 - MVC PRTHCCB+4,=F'132' . WE'LL PRINT 132 CHARACTERS 13450000 - B PRTHCOMM . BRANCH TO COMMON SECTION 13460000 -PRTHSTC1 MVC PRTHCCB(8),=X'8900000020000001' SKIP TO TOP OF PAGE 13470000 - LA 2,UCBUS 13480000 - SVC C'P' . LOCK THE UCB AND UNIT 13490000 -PRTHCOMM LA 2,CAWSEM . LOCK THE CAW 13500000 - SVC C'P' 13510000 - ST 6,CAW . STORE OUR CAW 13520000 - MVC UCBCSW(4),=A(0) . CLEAR THE LAST CSW THERE 13530000 - MVC UCBCSW+4(4),=A(0) 13540000 - L 7,UCBADDR . GET THE ADDRESS 13550000 - SIO 0(7) . START THE I/O 13560000 - BNZ PTSTATUS . BRANCH IF SIO UNSUCCESSFUL 13570000 - SVC C'V' . AND UNLOCK THE CAW 13580000 -PRTHWAIT LA 2,UCBWS . START TO WAIT 13590000 - SVC C'P' 13600000 - TM UCBCSW+4,X'05' . IS THE UNIT READY? 13610000 - BZ PRTHWAIT . IF NOT, ITS STILL ON. WAIT 13620000 - TM UCBCSW+4,X'01' . WAS THERE AN EXCEPTION? 13630000 - BZ PRTHOK . IF NOT, GOOD 13640000 -PRTHNO MVC PRTHM+12(2),=C'NO' .THERE WAS, SO SAY SO 13650000 - B PRTHSEND 13660000 -PRTHOK MVC PRTHM+12(2),=C'OK' .NO ERRORS 13670000 -PRTHSEND MVC PRTHM+8(4),=F'2' . SENDING 2 CHARACTERS 13680000 - MVC PRTHM+0(8),PRTHMSG+0 . SEND TO OUR SENDER 13690000 - LA 2,UCBUS 13700000 - SVC C'V' . UNLOCK THE UCB 13710000 - LA 2,PRTHM 13720000 - SVC C'S' . SEND IT 13730000 - B PRTHLOOP . AND READ ANOTHER MESSAGE 13740000 -PTSTATUS SVC C'V' . UNLOCK THE CAW 13750000 - LA 2,UCBWS . AND WAIT FOR THE INTERRUPT 13760000 - SVC C'P' 13770000 - B PRTHCOMM . AND TRY TO RESTART THE I/O 13780000 - DROP 3,12 13790000 - SPACE 2 13800000 -PRTHSEM DC F'1,0' LOCK 13810000 -PRTHAAS DC A(LENPRTHA) XA ARG LIST FOR AUTO STORAGE 13820000 - DC F'0' 13830000 - DC F'8' 13840000 - EJECT 13850000 -*********************************************************************** 13860000 -* * 13870000 -* SYSTEM ROUTINE FOR USER SUPPLIED DEVICE HANDLER * 13880000 -* * 13890000 -*********************************************************************** 13900000 - SPACE 1 13910000 -EXCPHNDL EQU * . EXCP DEVICE HANDLER 13920000 - USING UCB,3 . WILL HAVE REG3 -> UCB 13930000 - BALR 1,0 13940000 - USING *,1 . ESTABLISH ADDRESSING 13950000 - LA 2,EXCPHSEM . LOCK OURSELVES UNTIL WE HAVE 13960000 - SVC C'P' . SET UP AUTOMATIC STORAGE 13970000 - LA 2,EXCPHAAS . READY TO ALLOCATE 13980000 - USING XAX,2 13990000 - SVC C'E' . ALLOCATE 14000000 - L 12,XAXADDR . GET POINTER TO AUTO STORAGE 14010000 - DROP 2 14020000 - LA 2,EXCPHSEM . AND UNLOCK OURSELVES 14030000 - SVC C'V' UNLOCK TO ROUTINE 14040000 - LR 4,11 14050000 - SLL 4,8 . SHIFT KEY FOR CAW 14060000 - USING EXCPHAS,12 . FOR ADDRESSING AUTO AREA 14070000 -EXCPLOOP LA 2,EXCPHMSG . TRY TO READ A MESSAGE 14080000 - USING XRX,2 14090000 - MVC XRXSIZE,=F'12' . WE'LL TAKE 12 CHARACTERS 14100000 - SVC C'R' 14110000 - CLC =C'EXCP',XRXTEXT . IS IT AN EXCP MESSAGE? 14120000 - BNE EXCPLOOP . IF NOT, IGNORE IT 14130000 - L 5,XRXTEXT+4 . REG 5 CONTAINS CHAN AND DEV 14140000 - L 6,XRXTEXT+8 . REG 6 CONTAINS ADDR OF CCWS 14150000 - DROP 2 14160000 - LA 7,UCBTABLE . GET PTR TO UCB TABLE 14170000 -EXCPCOMP C 5,0(7) . COMPARE UNIT ADDRESS 14180000 - BE EXCPFIND . THAT'S THE UCB WE WANT 14190000 - LA 7,UCBLENG(7) . GET PTR TO NEXT UCB 14200000 - C 7,=A(UCBTBEND) . ARE WE THROUGH WITH TABLE? 14210000 - BNE EXCPCOMP . IF NOT, LOOK SOME MORE 14220000 - SVC C'?' . ELSE ERROR 14230000 -EXCPFIND LR 3,7 . SET REG 3 TO UCB PTR 14240000 - LA 2,UCBUS 14250000 - SVC C'P' . LOCK THE UCB 14260000 - OR 6,4 . OR IN THE USER'S KEY 14270000 - MVC UCBCSW(4),=A(0) . CLEAR THE LAST CSW THERE 14280000 - MVC UCBCSW+4(4),=A(0) 14290000 - LA 2,CAWSEM 14300000 - SVC C'P' . LOCK CAW 14310000 - ST 6,CAW . STORE OUR CAW 14320000 - SIO 0(5) . START THE I/O 14330000 - SVC C'V' . UNLOCK THE CAW 14340000 -EXCPWAIT LA 2,UCBWS . NOW WAIT FOR AN INTERRUPT 14350000 - SVC C'P' 14360000 - MVC EXCPHM+12(8),UCBCSW . GIVE USER HIS CSW 14370000 - MVC EXCPHM+8(4),=F'12' 14380000 - MVC EXCPHM(8),EXCPHMSG 14390000 - LA 2,EXCPHM 14400000 - SVC C'S' . AND SENT THE MESSAGE 14410000 - LA 2,EXCPHMSG . AND WAIT FOR A REPLY 14420000 - USING XRX,2 14430000 - MVC XRXSIZE(4),=F'8' . FROM THE USER 14440000 - SVC C'R' 14450000 - CLC =C'OK',XRXTEXT . AM I DONE? 14460000 - BE EXCPDONE 14470000 - CLC =C'AGAIN',XRXTEXT . DOES HE WANT ANOTHER CSW? 14480000 - BE EXCPWAIT 14490000 - SVC C'?' . WRONG MESSAGE 14500000 - DROP 2 14510000 -EXCPDONE LA 2,UCBUS . UNLOCK UNIT 14520000 - SVC C'V' 14530000 - B EXCPLOOP . AND GET ANOTHER MESSAGE 14540000 - DROP 3,12 14550000 -EXCPHSEM DC F'1,0' 14560000 -EXCPHAAS DC A(LENEXCPA) . ALLOCATION OF AUTO STORAGE 14570000 - DC F'0' 14580000 - DC F'8' 14590000 - SPACE 3 14600000 - LTORG 14610000 - EJECT 14620000 -*********************************************************************** 14630000 -* * 14640000 -* UNIT CONTROL BLOCKS * 14650000 -* * 14660000 -*********************************************************************** 14670000 - SPACE 1 14680000 -UCBTABLE DS 0F . TABLE OF UNIT CONTROL BLOCKS 14690000 -* UCB FOR READER 1 14700000 -UCBRDR1 DC X'00000012' . DEVICE ADDRESS, 14710000 - DC F'1,0' . USER SEMAPHORE, 14720000 - DC F'0,0' . WAIT SEMAPHORE, 14730000 - DC F'0,0' . CHANNEL STATUS WORD 14740000 - DC X'00' 14750000 - DS 0F 14760000 -* UCB FOR PRINTER 1 14770000 -UCBPRT1 DC X'00000010' . DEVICE ADDRESS, 14780000 - DC F'1,0' . USER SEMAPHORE, 14790000 - DC F'0,0' . WAIT SEMAPHORE, 14800000 - DC F'0,0' . CHANNEL STATUS WORD 14810000 - DC X'00' 14820000 - DS 0F 14830000 -* UCB FOR READER 2 14840000 -UCBRDR2 DC X'0000000C' . DEVICE ADDRESS, 14850000 - DC F'1,0' . USER SEMAPHORE, 14860000 - DC F'0,0' . WAIT SEMAPHORE, 14870000 - DC F'0,0' . CHANNEL STATUS WORD 14880000 - DC X'00' 14890000 - DS 0F 14900000 -* UCB FOR PRINTER 2 14910000 -UCBPRT2 DC X'0000000E' . DEVICE ADDRESS, 14920000 - DC F'1,0' . USER SEMAPHORE, 14930000 - DC F'0,0' . WAIT SEMAPHORE, 14940000 - DC F'0,0' . CHANNEL STATUS WORD 14950000 - DC X'00' 14960000 - DS 0F 14970000 -* UCB for READER 3 14970302 -UCBRDR3 DC X'00000112' . device address, 14970602 - DC F'1,0' . user semaphore, 14970902 - DC F'0,0' . wait semaphore, 14971202 - DC F'0,0' . channel status word 14971502 - DC X'00' 14971802 - DS 0F 14972102 -* UCB for PRINTER 3 14972402 -UCBPRT3 DC X'00000110' . device address, 14972702 - DC F'1,0' . user semaphore, 14973002 - DC F'0,0' . wait semaphore, 14973302 - DC F'0,0' . channel status word 14973602 - DC X'00' 14973902 - DS 0F 14974202 -* UCB for READER 4 14974502 -UCBRDR4 DC X'0000010C' . device address, 14974802 - DC F'1,0' . user semaphore, 14975102 - DC F'0,0' . wait semaphore, 14975402 - DC F'0,0' . channel status word 14975702 - DC X'00' 14976002 - DS 0F 14976302 -* UCB for PRINTER 4 14976602 -UCBPRT4 DC X'0000010E' . device address, 14976902 - DC F'1,0' . user semaphore, 14977202 - DC F'0,0' . wait semaphore, 14977502 - DC F'0,0' . channel status word 14977802 - DC X'00' 14978102 - DS 0F 14978402 -* UCB for CONSOLE 1 14978504 -UCBCONS1 DC X'00000009' . device address, 14978604 - DC F'1,0' . user semaphore, 14978704 - DC F'0,0' . wait semaphore, 14978804 - DC F'0,0' . channel status word 14978904 - DC X'00' 14979004 - DS 0F 14979104 -UCBTBEND EQU * 14980000 - EJECT 14990000 -*********************************************************************** 15000000 -* * 15010000 -* I/O INTERRUPT HANDLER * 15020000 -* * 15030000 -*********************************************************************** 15040000 - SPACE 1 15050000 -IOHANDL EQU * . THE I/O INTERRUPT HANDLER 15060000 - STM 0,15,IOHSAVE . SAVE REGISTERS 15070000 - BALR 1,0 15080000 - USING *,1 . ESTABLISH ADRESSING 15090000 - NI IOOLD+1,X'FD' . TURN OFF WAIT BIT 15100000 - L 6,=A(UCBTABLE) . GET POINTER TO UCB TABLE 15110000 -IOCOMP CLC 2(2,6),IOOLD+2 . COMPARE DEVICE AND CHANNEL 15120000 - BE IODEVFND . IF EQUAL, REG 6 INDICATES PTR 15130000 - LA 6,UCBLENG(6) . INCREMENT TO NEXT ENTRY 15140000 - C 6,=A(UCBTBEND) . ARE WE AT END OF TABLE? 15150000 - BNE IOCOMP . IF NOT DONE, TRY NEXT UCB 15160000 - B IOBACK . ELSE, IGNORE IT 15170000 - USING UCB,6 . IT'S A UCB PTR 15180000 -IODEVFND MVC UCBCSW(4),CSW . MOVE IN THE NEW CSW 15190000 - L 7,CSW+4 . GET STATUS BYTE 15200000 - O 7,UCBCSW+4 . OR IN NEW STATUS INFORMATION 15210000 - ST 7,UCBCSW+4 . AND STORE IT BACK 15220000 - MVC UCBCSW+6(2),CSW+6 . MOVE IN BYTE COUNT 15230000 - LA 2,UCBWS 15240000 - CLI UCBFPR,X'00' . IS FAST PROCESSING 15250000 - BE IONOFPR . REQUIRED? IF NOT, RETURN 15260000 - L 15,RUNNING . IF SO, STOP GUY NOW RUNNING 15270000 - USING PCB,15 15280000 - CLI PCBBLOKT,X'FF' . IS ANYONE REALLY RUNNING? 15290000 - BE IOWAIT . IF NOT, START UP SLEEPER 15300000 - LA 13,PCBISA . IF SO, STOP RUNNING PROCESS 15310000 - USING SA,13 15320000 - MVC SAPSW,IOOLD . SAVE PROCESS WHICH WAS 15330000 - MVC SAREGS,IOHSAVE . INTERRUPTED 15340000 - DROP 13,15 15350000 -IOWAIT MVI NEXTTRYM,X'00' . MAKE NEXTTRY NOT MODIFIED 15360000 - SVC C'V' . SO CAN FAST PROCESS SLEEPER 15370000 - SVC C'.' . GO PROCESS IT RIGHT AWAY 15380000 -IONOFPR SVC C'V' . AND WAKE UP THE SLEEPER 15390000 -IOBACK LM 0,15,IOHSAVE . RELOAD OUR REGISTERS 15400000 - LPSW IOOLD . AND STEALTHILY RETURN 15410000 - DROP 1,6 15420000 - EJECT 15430000 -*********************************************************************** 15440000 -* * 15450000 -* IPL ENTERED ROUTINE * 15460000 -* * 15470000 -* FUNCTION: TO INITIALIZE SYSTEM PARAMETERS, SET STORAGE KEYS, * 15480000 -* AND CREATE MULTIPLE JOB STREAMS. * 15490000 -* * 15500000 -*********************************************************************** 15510000 - SPACE 1 15520000 -IPLRTN EQU * . THE IPL-ENTERED ROUTINE 15530000 - BALR 1,0 15540000 - USING *,1 . ESTABLISH ADDRESSING 15550000 - MVC IONEW+5(3),SOSIONEW activate IO handler 15553002 - MVC EXTNEW+5(3),IPLEXNEW ignore external interrupts for now 15556002 - LA 15,IPLPCB . I'M RUNNING 15560000 - ST 15,RUNNING . INITIALIZE 'RUNNING' 15570000 - ST 15,NEXTTRY . INITIALIZE 'NEXTTRY' 15580000 - MVC VERYEND,=A(0,CORESIZE-(VERYEND-PROGRAM)) FREE CORE 15590000 - LA 3,8 . SET ZERO KEY AND FETCH PROTECT 15600000 - L 2,CORESIZ . START PAST THE LAST BLOCK 15610000 -IPLCL S 2,PAGESIZE . get the previous block, page aligned 15620002 - BM IPLTH . IF NEGATIVE, WE'RE THROUGH HERE 15630000 -* SSKE 3,2 . else set the storage key to 15640002 - DC X'B22B0032' Assembler (XF) doesn't support SSKE 15643002 - B IPLCL . ZERO, AND WORK BACKWARDS 15650000 -IPLTH SR 4,4 . INDEX IN TABLES FOR INPUT STREAM 15660000 - L 5,STREAMS . HOW MANY STREAMS? 15670000 -IPLLOOP LA 2,IPLAPCBS . READY TO ALLOCATE A PCB 15680000 - USING XAX,2 15690000 - SVC C'A' . ALLOCATE 15700000 - L 2,XAXADDR . GET THE ADDRESS 15710000 - MVC 0(TYPLEN,2),TYPPCB .MAKE IT LOOK LIKE A PCB 15720000 - SVC C'I' . CHAIN IT ON 15730000 - USING PCB,2 15740000 - ST 2,PCBNPTG . BUT PUT IT IN A GROUP BY ITSELF 15750000 - ST 2,PCBLPTG 15760000 - DROP 2 15770000 - USING PCB,15 15780000 - ST 15,PCBLPTG . LIKEWISE FOR THE IPL PCB 15790000 - ST 15,PCBNPTG 15800000 - DROP 15 15810000 - USING PCB,2 15820000 - LA 8,PCBISA . GET THE NEW PCB'S ISA 15830000 - USING SA,8 15840000 - LA 9,SAREGS . ABOUT TO FIX INIT REGS 15850000 - USING REGS,9 15860000 - LA 10,UCBTAB 15870000 - AR 10,4 15880000 - MVC REG3,0(10) . REG3 -> (RDRUCB,PRTUCB) 15890000 - MVC REG4,KEYTAB-UCBTAB(10) . REG4 = KEY 15900000 - DROP 9 15910000 - LA 4,4(4) . GO TO NEXT JOB STREAM 15920000 - BCT 5,IPLLOOP . DO FOR EACH STREAM 15930000 - MVC EXTNEW+5(3),SOSEXNEW reactivate ext interrupt handler 15935002 - SVC C'.' . THEN ENTER TRAFFIC CONTROLLER 15940000 - SPACE 1 15950000 -STREAMS DC F'4' . NUMBER OF STREAMS 15960002 - SPACE 1 15970000 -UCBTAB EQU * . TABLE OF PTRS TO UCB BLOCKS 15980000 - DC A(UCBLP1) 15990000 - DC A(UCBLP2) 16000000 - DC A(UCBLP3) 16003002 - DC A(UCBLP4) 16006002 - SPACE 1 16010000 -KEYTAB EQU * . TABLE OF PROTECTION KEYS 16020000 - DC X'00100000' storage key for stream 1 region 16030002 - DC X'00200000' storage key for stream 2 region 16034002 - DC X'00300000' storage key for stream 3 region 16038002 - DC X'00400000' storage key for stream 4 region 16042002 - SPACE 1 16050000 -UCBLP1 DC A(UCBRDR1,UCBPRT1) 16060000 -UCBLP2 DC A(UCBRDR2,UCBPRT2) 16070000 -UCBLP3 DC A(UCBRDR3,UCBPRT3) 16073002 -UCBLP4 DC A(UCBRDR4,UCBPRT4) 16076002 - SPACE 1 16080000 - DS 0D 16090000 -IPLPCB DC CL8' ' . IPL ROUTINE PCB 16100000 - DC 4A(IPLPCB) 16110000 - DC X'FF000000' . INITIALIZED FLAGS 16120000 - DC F'1,0' 16130000 - DC 5F'0,0' 16140000 - DC X'0002000000000000' 16150000 - DS CL76 16160000 - DS CL84 16170000 - DS CL84 16180000 - SPACE 1 16190000 -IPLAPCBS DC A(LENPCB) . ALLOC LIST FOR PCB'S 16200000 - DC A(0) 16210000 - DC F'8' 16220000 -CORESIZ DC A(CORESIZE) . BYTES OF CORE IN OBJECT MACHINE 16230000 - SPACE 1 16240000 - DS 0D 16250000 -TYPPCB DC CL8'*IBSUP' . A TEMPLATE *IBSUP PCB 16260000 - DC 4A(0) 16270000 -TEMPLATE DC X'00000000' . INITIALIZED FLAGS 16280000 - DC F'1,0' 16290000 - DC 5F'0,0' 16300000 - DC X'FF00000000',AL3(JSP) 16310000 -TYPLEN EQU *-TYPPCB 16320000 -EXINTRPT LPSW EXTOLD ignore external interrupts 16321002 - DS 0F align 16322002 - DC X'00' filler 16323002 -SOSIONEW DC AL3(IOHANDL) sample OS IO new PSW instruction addr 16324002 - DC X'00' filler 16325002 -SOSEXNEW DC AL3(EXTHANDL) sample OS ext new PSW instruction addr 16326002 - DC X'00' filler 16327002 -IPLEXNEW DC AL3(EXINTRPT) IPLRTN ext new PSW instruction addr 16328002 - EJECT 16330000 -*********************************************************************** 16340000 -* * 16350000 -* JOB STREAM PROCESSOR * 16360000 -* * 16370000 -*********************************************************************** 16380000 - SPACE 1 16390000 -JSP EQU * . THE JOB STREAM PROCESSOR 16400000 - BALR 1,0 . (PROCESS *IBSUP) 16410000 - USING *,1 . ESTABLISH ADDRESSING 16420000 - LA 2,JSPSUSEM . LOCK OURSELVES UNTIL 16430000 - SVC C'P' . WE CAN ALLOCATE STORAGE 16440000 - LA 2,JSPAAS . READY TO ALLOCATE 16450000 - USING XAX,2 16460000 - SVC C'E' . ALLOCATE 16470000 - L 12,XAXADDR . PTR TO AUTO AREA 16480000 - DROP 2 16490000 - USING JSPAS,12 . USE FOR ADDRESSING 16500000 - LA 2,JSPSUSEM . UNLOCK OURSELVES 16510000 - SVC C'V' 16520000 - MVC TREAD+0(8),=CL8'*IN' . INITIALIZE VALUES IN AUTOMATIC 16530000 - MVC TREAD+8(4),=F'8' . STORAGE 16540000 - MVC TREAD+12(4),=C'READ' 16550000 - LA 2,CARD 16560000 - ST 2,ACARD 16570000 - MVC USERL+0(8),=CL8'USERPROG' 16580000 - MVC WRITE(12),SKIP 16590000 - MVC WRITE+12(4),=C'PRIN' 16600000 - LA 5,LINE 16610000 - ST 5,WRITE+16 16620000 - MVC CORE+8(4),PAGESIZE align to page boundary 16630002 - MVC TALK+0(8),=CL8'USERPROG' 16640000 - MVC TALK+8(4),=F'12' 16650000 - MVC ANYBACK+8(4),=F'1' 16660000 - MVC RLDTEMP,=A(0) 16670000 - ST 4,KEY . STORE KEY 16680000 - LR 5,3 . GET PTR TO UCB PTR BLOCK 16690000 - L 3,0(5) . GET READER POINTER 16700000 - LA 2,INSEQ . READY TO CREATE & START *IN 16710000 - SVC C'C' . CREATE 16720000 - SVC C'Y' . START 16730000 - L 3,4(5) . GET PTR TO PRINTER UCB 16740000 - LA 2,OUTSEQ . READY TO CREATE & START *OUT 16750000 - SVC C'C' . CREATE 16760000 - SVC C'Y' . START 16770000 - SPACE 1 16780000 -LOOP LA 2,TREAD . READT TO READ A CARD 16790000 - SVC C'S' . START TO READ 16800000 - MVC RREPLY1,=F'132' . 132 CHARS FOR REPLY 16810000 - LA 2,RREPLY 16820000 - SVC C'R' . LISTEN FOR REPLY 16830000 - CLC REPLY(2),=C'OK' . IS REPLY 'OK'? 16840000 - BNE STOP . IF NOT, STOP 16850000 - CLC =C'$JOB,',CARD . HAVE WE A JOB CARD? 16860000 - BE JOB . GOOD! 16870000 - B LOOP . ELSE LOOP 16880000 -STOP LA 2,JSPNEVER . WAIT FOR A "V" OPERATION 16890000 - SVC C'P' . THAT NEVER COMES 16900000 - SPACE 1 16910000 -JOB MVI LOADED,X'00' . REMEMBER NOT LOADED 16920000 - MVC LINE,=CL8' ' . CLEAR A LINE, PUT IN 16930000 - MVC LINE+8(124),LINE+7 .ALL BLANKS 16940000 - MVC LINE(80),CARD . GET READY TO SEND $JOB CARD 16950000 - LA 2,WRITE . TO PRINTER 16960000 - SVC C'S' . SEND IT 16970000 - LA 2,RREPLY 16980000 - SVC C'R' . AND WAIT FOR REPLY 16990000 - LA 2,USERL . CREATE USERPROG 17000000 - SVC C'C' 17010000 - LA 4,CARD+4 . START TO SCAN CARD 17020000 - BAL 3,SCAN . GET NEXT TOKEN 17030000 - BCTR 5,0 . less one to remove K 17040002 - O 5,COREPKLN . length of packed size for execute 17049002 - EX 5,COREPACK . pack core digits 17058002 - CVB 8,COREPCKD . convert core requested to binary 17067002 - SR 9,9 . is core .. 17076002 - SRDL 8,2 . .. modulo four .. 17085002 - LTR 9,9 . .. equal zero? 17094002 - BZ COREOK . -> yes, use it 17103002 - LA 8,1(,8) . -> no, up one page 17112002 -COREOK SLL 8,12 . core bytes, rounded up to full pages 17121002 - ST 8,CORE . remember core requirement 17130002 -ASGNUNIT BAL 3,SCAN . GET NEXT TOKEN 17150000 - CLI 0(4),C'=' . IS IT AN '='? 17160000 - BNE LOAD . IF NOT, LOAD IN THE OBJECT DECK 17170000 - CLI 0(9),C'*' . HAS USER NAMED IT STARTING 17180000 - BE EXPUNGE . WITH '*'? IF SO, THROW HIM OUT 17190000 - LA 2,SEQ . ELSE CREATE A PROCESS 17200000 - MVC SEQ,=CL8' ' . BLANK OUT THE NAME 17210000 - EX 5,UNAMMOV . THEN MOVE THE RELEVANT 17220000 - SVC C'C' . CHARACTERS AND CREATE 17230000 - LA 2,SEQ . WE'LL START IT IN A MOMENT 17240000 - BAL 3,SCAN . SCAN AGAIN 17250000 - EX 5,CMPIN . IS IT 'IN'? 17260000 - BE ASIN . IF SO, ASSIGN IT AS IN 17270000 - EX 5,CMPOUT . IF IT'S 'OUT' 17280000 - BE ASOUT . ASSIGN IT AS OUT 17290000 - EX 5,CMPEXCP . IS IT 'EXCP'? 17300000 - BE ASEXCP . IF SO, ASSIGN IT AS EXCP 17310000 - B EXPUNGE . ERROR: GO ON TO NEXT JOB 17320000 -UNAMMOV MVC SEQ(0),0(9) . MOVE THE UNIT'S PROCESS NAME 17330000 -CMPIN CLC 0(0,9),=C'IN ' . DOES IT SAY 'IN'? 17340000 -CMPOUT CLC 0(0,9),=C'OUT ' . DOES IT SAY 'OUT'? 17350000 -CMPEXCP CLC 0(0,9),=C'EXCP ' . DOES IT SAY 'EXCP'? 17360000 - SPACE 1 17370000 -ASIN LA 11,=CL8'*IN' . POINT TO NAME OF READER HANDLER 17380000 -SETDIM MVC UNITRTN,=A(DIM) . USE DIM AS THE INTERFACE 17390000 - SVC C'Y' 17400000 - B ASGNUNIT 17410000 -ASOUT LA 11,=CL8'*OUT' . POINT TO NAME OF PRINTER HANDLER 17420000 - B SETDIM 17430000 -ASEXCP MVC UNITRTN,=A(EXCPHNDL) . USE FOR USER SUPPLIED 17440000 - L 11,KEY 17450000 - SVC C'Y' . I/O ROUTINE 17460000 - B ASGNUNIT 17470000 - SPACE 1 17480000 -LOAD LA 2,CORE . READY TO ALLOCATE THE REGION 17490000 - SVC C'A' . AND ALLOCATE IT 17500000 - MVI LOADED,X'FF' . REMEMBER THAT WE'RE LOADED 17510000 - L 9,CORE+4 . GET THE FIRST ADDRESS 17520000 - L 4,KEY . GET THE KEY 17530000 - SRL 4,16 17540000 - O 4,FETCHPRT fetch protected 17545002 - LR 3,9 . GET THE BLOCK FOLLOWING OURS 17550000 - AR 3,8 17560000 -LOADSK S 3,PAGESIZE . get the previous block, page aligned 17570002 - CR 3,9 . HAVE WE PASSED THE START? 17580000 - BL LOADLOOP . IF SO, START LOADING 17590000 -* SSKE 4,3 . else set this block to the key 17600002 - DC X'B22B0043' Assembler (XF) doesn't support SSKE 17603002 - B LOADSK . AND BRANCH BACK 17610000 -LOADLOOP LA 2,TREAD . READ IN OBJECT DECK 17620000 - SVC C'S' . GET A CARD A'READING 17630000 - MVC RREPLY1,=F'132' 17640000 - LA 2,RREPLY 17650000 - SVC C'R' . WAIT FOR ANSWER 17660000 - CLC CARD+1(3),=C'TXT' . IS IT A TXT CARD? 17670000 - BE TXTCARD 17680000 - CLC CARD+1(3),=C'RLD' . IS IT A RLD CARD? 17690000 - BE RLDCARD 17700000 - CLC CARD+1(3),=C'END' . IS IT AN END CARD? 17710000 - BE ENDCARD 17720000 - B LOADLOOP . IF NONE, IGNORE. 17730000 - SPACE 1 17740000 -TXTCARD L 10,CARD+4 . GET THE RELATIVE ADDRESS 17750000 - AR 10,9 . PLUS THE ABSOLUTE ADDRESS 17760000 - LH 11,CARD+10 . GET THE COUNT, 17770000 - BCTR 11,0 . DECREMENTED 17780000 - EX 11,TXTMOV . AND MOVE THE TEXT 17790000 - B LOADLOOP . AND READ ANOTHER CARD! OH WOW! 17800000 -TXTMOV MVC 0(0,10),CARD+16 17810000 - SPACE 1 17820000 -RLDCARD LH 11,CARD+10 . GET THE BYTE COUNT 17830000 - LA 13,CARD+20 . AND AN INDEX INTO THE CARD 17840000 -RLDLOOP L 10,0(13) . GET THE LOCATION TO BE RLD'D 17850000 - AR 10,9 . GET THE ABSOLUTE ADDRESS 17860000 - TM 3(13),X'03' . IS IT A FULLWORD? 17870000 - BNZ NOTALGND . IF NO, HANDLE AS THREE BYTES 17880000 - L 7,0(10) . GET THAT WORD (HAD BETTER BE 17890000 - AR 7,9 . ONE); ADD THE RELOCATION 17900000 - ST 7,0(10) . ADDRESS, AND STORE IT BACK 17910000 -RLDCONT TM 0(13),X'01' . CHECK IF LONG OR SHORT FIELD 17920000 - BNZ SHORT . AND BRANCH ACCORDINGLY 17930000 - LA 4,8 . SKIP EIGHT BYTES 17940000 - B RLDFINI 17950000 -SHORT LA 4,4 . SKIP FOUR BYTES 17960000 -RLDFINI AR 13,4 . INCREMENT THE CARD INDEX 17970000 - SR 11,4 . DECREMENT THE BYTE COUNT 17980000 - BP RLDLOOP . AND TRY AGAIN 17990000 - B LOADLOOP . OR READ ANOTHER CARD 18000000 -NOTALGND MVC RLDTEMP+1(3),0(10) . PUT ADDRESS HERE 18010000 - L 7,RLDTEMP . RELOCATE IT 18020000 - AR 7,9 18030000 - ST 7,RLDTEMP . AND PUT IT BACK TO 18040000 - MVC 0(3,10),RLDTEMP+1 . WHERE IT BELONGS 18050000 - NI RLDTEMP,X'00' . CLEAR OUT TEMPORARY 18060000 - B RLDCONT . AND LOOP BACK 18070000 - SPACE 1 18080000 -ENDCARD LA 2,USERL . FIND THE PCB FOR USERPROG 18090000 - SVC C'N' 18100000 - L 4,USERL+8 . GET THE ADDRESS 18110000 - USING PCB,4 18120000 - MVI PCBBLOKT,X'FF' . TEMPORARILY BLOCK IT 18130000 - ST 9,USERL+8 . STORE THE BEGINNING ADDRESS 18140000 - SVC C'Y' . THEN START IT 18150000 - L 5,KEY . GET THE KEY 18160000 - O 5,PCBISA+0 . THEN OR THIS INTO THE 18170000 - ST 5,PCBISA+0 . FIRST WORD OF THE PCB 18180000 - OI PCBISA+1,X'01' . OR IN A 'PROGRAM STATE' BIT 18190000 - MVI PCBBLOKT,X'00' . AND THEN UNBLOCK IT 18200000 - DROP 4 18210000 - LA 2,TALK . LISTEN TO WHAT IT SAYS 18220000 - SVC C'R' 18230000 - SPACE 1 18240000 - MVC LINE(8),=CL8' ' . IF JOB FINISHED, CLEAR A LINE 18250000 - MVC LINE+8(124),LINE+7 18260000 - MVC LINE(12),TALK+12 . MOVE THE MESSAGE ONTO THE LINE 18270000 - LA 2,WRITE . AND SAY TO WRITE IT 18280000 - SVC C'S' 18290000 - LA 2,ANYBACK 18300000 - SVC C'R' 18310000 - LA 2,SKIP . SKIP TO THE TOP OF THE NEXT PAGE 18320000 - SVC C'S' 18330000 - LA 2,ANYBACK 18340000 - SVC C'R' 18350000 - SPACE 1 18360000 -EXPUNGE L 5,RUNNING . EXPUNGE A JOB: LOOK AT ALL PCBS 18370000 - LA 2,SEQ 18380000 - USING PCB,5 18390000 -EXPLOOP MVC SEQ(8),PCBNAME . GET THE PROCESS NAME 18400000 - L 4,PCBNPTG . GET THE NEXT PTR 18410000 - CLI SEQ+0,C'*' . IS IT A '*' PROCESS? 18420000 - BE EXPNXT . IF SO, SKIP OVER 18430000 - SVC C'Z' . ELSE STOP IT 18440000 - SVC C'D' . AND DESTROY IT 18450000 -EXPNXT LR 5,4 . GO TO THE NEXT PCB 18460000 - C 5,RUNNING . ARE WE THROUGH? 18470000 - BNE EXPLOOP . IF NOT, LOOP AGAIN 18480000 - CLI LOADED,X'00' . WAS CORE ALLOCATED? 18490000 - BE LOOP . IF NOT, GO READ THE NEXT $JOB CARD 18500000 - LA 4,8 . set zero key and fetch protect 18510002 - LR 3,9 . AND A POINTER TO THE NEXT 18520000 - AR 3,8 . BLOCK AFTER OURS 18530000 -LOADCL S 3,PAGESIZE . get the previous block, page aligned 18540002 - CR 3,9 . ARE WE THROUGH? 18550000 - BL LOADD . IF SO, GO FREE CORE 18560000 -* SSKE 4,3 . else clear storage key 18570002 - DC X'B22B0043' Assembler (XF) doesn't support SSKE 18573002 - B LOADCL . AND LOOP BACK 18580000 -LOADD LA 2,CORE 18590000 - SVC C'F' . FREE THE STORAGE 18600000 - B LOOP . READ ANOTHER $JOB CARD 18610000 - SPACE 1 18620000 -SCAN SR 5,5 . START THE TOKEN COUNT AT ZERO 18630000 -SCANLOOP LA 4,1(4) . GO TO NEXT CHARACTER 18640000 - CLI 0(4),C',' . DO WE HAVE A DELIMITER? IF SO, 18650000 - BE TOKSTART 18660000 - CLI 0(4),C'=' . DITTO 18670000 - BE TOKSTART 18680000 - CLI 0(4),C' ' . DITTO 18690000 - BE TOKSTART 18700000 - LA 5,1(5) . AND UP COUNT 18710000 - B SCANLOOP . AND LOOP 18720000 -TOKSTART LR 9,4 . SET REG9 TO START 18730000 - SR 9,5 . OF THIS TOKEN 18740000 - BCTR 5,0 . LESS ONE FOR EXECUTE INSTRUCTION 18750000 - BR 3 18760000 - SPACE 2 18770000 -JSPNEVER DC F'0,0' . A GOOD WAY TO DIE: P(JSPNEVER) 18780000 -SKIP DC CL8'*OUT' . MESSAGE BLOCK FOR A NEW PAGE 18790000 - DC F'8' 18800000 - DC CL4'STC1' 18810000 -INSEQ DC CL8'*IN' . SEQ TO CREATE & START *IN 18820000 - DC A(RDRHANDL) 18830000 -OUTSEQ DC CL8'*OUT' . SEQ TO CREATE & START *OUT 18840000 - DC A(PRTHANDL) 18850000 -COREPACK PACK COREPCKD(1),0(1,9) . executed to pack core size req'd 18860002 -COREPCKD DS D . packed core requirement goes here 18880002 -COREPKLN DC X'00000070' . length of packed size for execute 18900002 -PAGESIZE DC F'4096' . page size for core computation 18920002 -JSPSUSEM DC F'1,0' . SEMAPHORE TO LOCK ROUTINE 18990000 -JSPAAS DC A(LENJSPAS) . ALLOCATE LIST FOR AUTO STORAGE 19000000 - DS A 19010000 -FETCHPRT DC F'8' reused to or in fetch protection 19020002 - EJECT 19030000 -*********************************************************************** 19040000 -* * 19050000 -* DEVICE INTERFACE MODULE * 19060000 -* * 19070000 -* FUNCTION: TO INTERFACE BETWEEN USERPROG AND DEVICE HANDLER * 19080000 -* DATABASES: NONE * 19090000 -* ROUTINES USED: XA, XP, XV, XR, XS * 19100000 -* PROCEDURE: ALLOCATE AUTOMATIC STORAGE; START TO READ MESSAGE * 19110000 -* FROM USER; SEND MESSAGE TO DEVICE HANDLER; * 19120000 -* CONTINUE LOOPING, SENDING MESSAGES FROM USER TO * 19130000 -* DEVICE HANDLER AND BACK. * 19140000 -* ERROR CHECKS: NONE * 19150000 -* INTERRUPTS: ON * 19160000 -* USER ACCESS: YES * 19170000 -* * 19180000 -*********************************************************************** 19190000 - SPACE 1 19200000 -DIM EQU * . THE DEVICE INTERFACE MODULE 19210000 - BALR 1,0 19220000 - USING *,1 . ESTABLISH ADDRESSING 19230000 - LA 2,DIMSEM . LOCK UNTIL GET STORAGE 19240000 - SVC C'P' 19250000 - LA 2,DIMAAS . READY TO ALLOCATE STORAGE 19260000 - USING XAX,2 19270000 - SVC C'E' . DO IT 19280000 - L 12,XAXADDR . GET THE ADDRESS 19290000 - DROP 2 19300000 - LA 2,DIMSEM . UNLOCK OURSELVES 19310000 - SVC C'V' 19320000 - USING DIMAS,12 . USE 12 FOR AUTO STORAGE 19330000 - MVC DIMLMS,0(11) . MOVE NAME OF RECIEVER 19340000 - LA 8,132 . REG 8 = SIZE OF MESSAGE 19350000 -DIMLOOP ST 8,DIMMSG+8 . GET READY TO READ A MESSAGE 19360000 - LA 2,DIMMSG 19370000 - SVC C'R' . READ 19380000 - MVC DIMTEMP,DIMMSG . SAVE SENDER NAME 19390000 - MVC DIMMSG,DIMLMS . SEND IT BACK TO THE LAST GUY 19400000 - SVC C'S' . SEND IT 19410000 - MVC DIMLMS,DIMTEMP . AND REMEMBER WHO TO SEND TO NEXT 19420000 - B DIMLOOP . RELOOP 19430000 -DIMSEM DC F'1,0' . SEMAPHORE FOR ENTRY 19440000 -DIMAAS DC A(DIMLEN) . ALLOCATE SEQ FOR AUTO STORAGE 19450000 - DC A(0) 19460000 - DC F'8' 19470000 - DROP 12 19480000 - EJECT 19490000 - LTORG 19500000 -VERYEND DS 6D . beginning of free storage 19510004 -LOADER DS 0D IPL loader goes here 19521002 - EJECT 19521203 -R0 EQU 0 19521502 -R1 EQU 1 19522002 -R2 EQU 2 19522502 -R3 EQU 3 19523002 -R4 EQU 4 19523502 -R5 EQU 5 19524002 -R6 EQU 6 19524502 -R7 EQU 7 19525002 -R8 EQU 8 19525502 -R9 EQU 9 19526002 -R10 EQU 10 19526502 -R11 EQU 11 19527002 -R12 EQU 12 19527502 -R13 EQU 13 19528002 -R14 EQU 14 19528502 -R15 EQU 15 19529002 -*********************************************************************** 19530000 -* * 19540000 -* DATABASE DEFINITIONS * 19550000 -* * 19560000 -*********************************************************************** 19570000 - SPACE 1 19580000 -PCB DSECT . PROCESS CONTROL BLOCK DEFINITION 19590000 -PCBNAME DS CL8 . NAME 19600000 -PCBNPTG DS F . NEXT POINTER THIS GROUP 19610000 -PCBLPTG DS F . LAST POINTER THIS GROUP 19620000 -PCBNPALL DS F . NEXT POINTER ALL 19630000 -PCBLPALL DS F . LAST POINTER ALL 19640000 -PCBSTOPT DS C . STOPPED 19650000 -PCBBLOKT DS C . BLOCKED 19660000 -PCBINSMC DS C . IN SMC 19670000 -PCBSW DS C . STOP WAITING 19680000 -PCBMSC DS CL8 . MESSAGE SEMAPHORE COMMON 19690000 -PCBMSR DS CL8 . MESSAGE SEMAPHORE RECEIVER 19700000 -PCBFM DS F . FIRST MESSAGE 19710000 -PCBNSW DS F . NEXT SEMAPHORE WAITER 19720000 -PCBSRS DS CL8 . STOPPER SEMAPHORE 19730000 -PCBSES DS CL8 . STOPPEE SEMAPHORE 19740000 -PCBASIZE DS F . AUTOMATIC STORAGE SIZE 19750000 -PCBAADDR DS A . AUTOMATIC STORAGE ADDRESS 19760000 -PCBISA DS CL84 . INTERRUPT SAVE AREA 19770000 -PCBFSA DS CL84 . FAULT SAVE AREA 19780000 -PCBMSA DS CL84 . MEMORY SAVE AREA 19790000 - DS 0D . (ALIGN) 19800000 -LENPCB EQU *-PCB . (LENGTH) 19810000 - SPACE 1 19820000 -SA DSECT . SAVE AREA DEFINITION 19830000 -SAPSW DS D . PROGRAM STATUS WORD 19840000 -SAREGS DS CL64 . REGISTERS 19850000 -SATEMP DS CL12 . TEMPORARIES 19860000 - SPACE 1 19870000 -REGS DSECT . REGISTER DEFINITION 19880000 -REG0 DS F . REGISTER 0 19890000 -REG1 DS F . REGISTER 1 19900000 -REG2 DS F . REGISTER 2 19910000 -REG3 DS F . REGISTER 3 19920000 -REG4 DS F . REGISTER 4 19930000 -REG5 DS F . REGISTER 5 19940000 -REG6 DS F . REGISTER 6 19950000 -REG7 DS F . REGISTER 7 19960000 -REG8 DS F . REGISTER 8 19970000 -REG9 DS F . REGISTER 9 19980000 -REG10 DS F . REGISTER 10 19990000 -REG11 DS F . REGISTER 11 20000000 -REG12 DS F . REGISTER 12 20010000 -REG13 DS F . REGISTER 13 20020000 -REG14 DS F . REGISTER 14 20030000 -REG15 DS F . REGISTER 15 20040000 - SPACE 1 20050000 -FSB DSECT . FREE STORAGE BLOCK DEFINITIONS 20060000 -FSBNEXT DS A . NEXT 20070000 -FSBSIZE DS F . SIZE 20080000 - SPACE 1 20090000 -SM DSECT . SEMAPHORE DEFINITION 20100000 -SMVAL DS F . VALUE 20110000 -SMPTR DS F . PTR 20120000 - SPACE 1 20130000 -MSG DSECT . MESSAGE DEFINITION 20140000 -MSGSENDR DS A . POINTER TO SENDER'S PCB 20150000 -MSGNEXT DS A . NEXT 20160000 -MSGSIZE DS F . SIZE 20170000 -MSGTEXT DS 0C . TEXT 20180000 -LENMSG EQU *-MSG . (LENGTH) 20190000 - SPACE 1 20200000 -XAX DSECT . XA ARGUMENT LIST 20210000 -XAXSIZE DS F . SIZE 20220000 -XAXADDR DS F . ADDRESS 20230000 -XAXALGN DS F . ALIGNMENT 20240000 - SPACE 1 20250000 -XFX DSECT . XF ARGUMENT LIST 20260000 -XFXSIZE DS F . SIZE 20270000 -XFXADDR DS F . ADDRESS 20280000 - SPACE 1 20290000 -XBX DSECT . XB ARGUMENT LIST 20300000 -XBXSIZE DS F . SIZE 20310000 -XBXADDR DS F . ADDRESS 20320000 - SPACE 1 20330000 -XCX DSECT . XC ARGUMENT LIST 20340000 -XCXNAME DS CL8 . NAME 20350000 - SPACE 1 20360000 -XDX DSECT . AD ARGUMENT LIST 20370000 -XDXNAME DS CL8 . NAME 20380000 - SPACE 1 20390000 -XNX DSECT . XN ARGUMENT LIST 20400000 -XNXNAME DS CL8 . NAME 20410000 -XNXADDR DS A . ADDRESS 20420000 - SPACE 1 20430000 -XRX DSECT . XR ARGUMENT LIST 20440000 -XRXNAME DS CL8 . NAME 20450000 -XRXSIZE DS F . SIZE 20460000 -XRXTEXT DS 0C . TEXT 20470000 - SPACE 1 20480000 -XSX DSECT . XS ARGUMENT LIST 20490000 -XSXNAME DS CL8 . NAME 20500000 -XSXSIZE DS F . SIZE 20510000 -XSXTEXT DS 0C . TEXT 20520000 - SPACE 1 20530000 -XYX DSECT . XY ARGUMENT LIST 20540000 -XYXNAME DS CL8 . NAME 20550000 -XYXADDR DS A . ADDR 20560000 - SPACE 1 20570000 -XZX DSECT . XZ ARGUMENT LIST 20580000 -XZXNAME DS CL8 . NAME 20590000 - SPACE 1 20600000 -RDRHAS DSECT . READER HANDLER AUTOMATIC STORAGE 20610000 -RDRHCCB DS 2F . CCB 20620000 -RDRHMSG DS CL8 . MESSAGE BLOCK FOR REQUESTS 20630000 - DS F'8' 20640000 - DS CL8 20650000 -RDRHTEMP DS CL80 . AREA FOR $JOB IN DATA STREAM 20660000 -RDRHM DS CL8 . MESSAGE BLOCK FOR REPLY 20670000 - DS F'2' 20680000 - DS CL2 20690000 -JOBBIT DS 1C 20700000 - DS 0D 20710000 -LENRDRHA EQU *-RDRHAS . (LENGTH) 20720000 - SPACE 1 20730000 -PRTHAS DSECT . PRINTER HANDLER AUTOMATIC STORAGE 20740000 -PRTHCCB DS 2F . CCB 20750000 -PRTHMSG DS CL8 . MESSAGE BLOCK FOR REQUESTS 20760000 - DS F'2' 20770000 - DS CL8 20780000 -PRTHM DS CL8 . MESSAGE BLOCK FOR REPLY 20790000 - DS F'2' 20800000 - DS CL2 20810000 - DS 0D 20820000 -LENPRTHA EQU *-PRTHAS . (LENGTH) 20830000 - SPACE 1 20840000 -EXCPHAS DSECT . EXCP HANDLER AUTOMATIC STORAGE 20850000 -EXCPHMSG DS CL8 . MESSAGE BLOCK FOR REQUESTS 20860000 - DS F'12' 20870000 - DS CL12 20880000 -EXCPHM DS CL8 . MESSAGE BLOCK FOR REPLY 20890000 - DS F'12' 20900000 - DS CL12 20910000 - DS 0D 20920000 -LENEXCPA EQU *-EXCPHAS . (LENGTH) 20930000 - SPACE 1 20940000 -UCB DSECT . UNIT CONTROL BLOCK DEFINITION 20950000 -UCBADDR DS F . ADDRESS 20960000 -UCBUS DS FL8 . USER SEMAPHORE 20970000 -UCBWS DS FL8 . WAITER SEMAPHORE 20980000 -UCBCSW DS FL8 . CHANNEL STATUS WORD 20990000 -UCBFPR DS CL1 . FAST PROCESSING REQUIRED 21000000 - DS 0F 21010000 -UCBLENG EQU *-UCB 21020000 - SPACE 1 21030000 -JSPAS DSECT . JSP AUTOMATIC STORAGE 21040000 -LINE DS CL132 . PRINTED LINE 21050000 - DS 0F 21060000 -CARD DS CL80 . CARD READ 21070000 - DS 0F 21080000 -RREPLY DS CL8 . MESSAGE BLOCK FOR REPLIES 21090000 -RREPLY1 DS F 21100000 -REPLY DS CL132 21110000 -TREAD DS 0F . MESSAGE BLOCK FOR READING 21120000 - DS CL8'*IN' 21130000 - DS F'8' 21140000 - DS CL4'READ' 21150000 -ACARD DS A(0) 21160000 -WRITE DS CL8'*OUT' . MESSAGE BLOCK TO PRINT A LINE 21170000 - DS F'8' 21180000 - DS CL4'PRIN' 21190000 - DS A(LINE) 21200000 -KEY DS F 21210000 -USERL DS CL8'USERPROG' . LIST FOR MANIPULATING USERPROG 21220000 - DS F 21230000 -SEQ DS CL8' ' . COMMON ARG LIST FOR I/O PROCESS 21240000 -UNITRTN DS A 21250000 -CORE DS F . MEMORY ALLOCATED AND FREE 21260000 - DS F . SEQUENCE 21270000 - DS F'4096' align to page boundary 21280002 -RLDTEMP DS F 21290000 -TALK DS CL8'USERPROG' . MESSAGE BLOCK FOR MESSAGE FROM 21300000 - DS F'12' . USERPROG 21310000 - DS CL12 21320000 -ANYBACK DS CL8 . MESSAGE BLOCK FOR IGNORING MESS 21330000 - DS F'1' 21340000 - DS CL1 21350000 -LOADED DS C . IS CORE ALLOCATED 21360000 - DS 0D 21370000 -LENJSPAS EQU *-JSPAS . (LENGTH) 21380000 - SPACE 1 21390000 -DIMAS DSECT . DEVICE INTERFACE MODULE STORAGE 21400000 -DIMMSG DS CL8 . MESSAGE BLOCK 21410000 - DS F'132' 21420000 - DS CL132 21430000 -DIMLMS DS CL8 . LAST MESSAGE SENDER 21440000 -DIMTEMP DS CL8 . TEMPORARY 21450000 - DS 0D 21460000 -DIMLEN EQU *-DIMAS . (LENGTH) 21470000 - END 21480000 diff --git a/SOS_OS/source/sos_asma.txt b/SOS_OS/source/sos_asma.txt deleted file mode 100644 index ada89c3..0000000 --- a/SOS_OS/source/sos_asma.txt +++ /dev/null @@ -1,3473 +0,0 @@ -1 High Level Assembler Option Summary (PTF UK37157) Page 1 -- HLASM R6.0 2016/08/29 08.42 -0 No Overriding ASMAOPT Parameters - Overriding Parameters- OBJECT,ESD,RXREF,RLD,XREF(SHORT,UNREFS),DXREF,LIST,TERM,ASA - No Process Statements - - - Options for this Assembly -0 NOADATA - ALIGN - 3 ASA - BATCH - CODEPAGE(047C) - NOCOMPAT - NODBCS - NODECK - 3 DXREF - 3 ESD - NOEXIT - FLAG(0,ALIGN,CONT,EXLITW,NOIMPLEN,NOPAGE0,PUSH,RECORD,NOSUBSTR,USING0) - NOFOLD - NOGOFF - NOINFO - LANGUAGE(EN) - NOLIBMAC - LINECOUNT(60) - 3 LIST(121) - MACHINE(,NOLIST) - MXREF(SOURCE) - 3 OBJECT - OPTABLE(UNI,NOLIST) - NOPCONTROL - NOPESTOP - NOPROFILE - NORA2 - NORENT - 3 RLD - 3 RXREF - SECTALGN(8) - SIZE(MAX) - NOSUPRWARN - SYSPARM() - 3 TERM(WIDE) - NOTEST - THREAD - NOTRANSLATE - TYPECHECK(MAGNITUDE,REGISTER) - USING(NOLIMIT,MAP,WARN(15)) - NOWORKFILE - 3 XREF(SHORT,UNREFS) - - Standard DD Names- SYSLIN SYSLIB SYSIN SYSPRINT SYSPUNCH SYSUT1 SYSTERM SYSADATA ASMAOPT - Overriding DD Names- SYS00013 SYS00005 SYS00011 SYS00012 SYS00010 -1 External Symbol Dictionary Page 2 --Symbol Type Id Address Length Owner Id Flags Alias-of HLASM R6.0 2016/08/29 08.42 -0PROGRAM SD 00000001 00000000 00001770 00 - CARDLDR SD 00000002 00001770 000000A0 00 - IPLCARD SD 00000003 00001810 00000050 00 -1 Sample Operating System Version 2.00 Page 3 - Active Usings: None -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 2 *********************************************************************** 00020000 - 3 * * 00030000 - 4 * ***************************************************************** * 00040000 - 5 * * * * 00050000 - 6 * * Sample Operating System * * 00060002 - 7 * * Version 2.00 * * 00067002 - 8 * * Developed at MIT 1973 * * 00074002 - 9 * * * * 00090000 - 10 * ***************************************************************** * 00100000 - 11 * * 00100602 - 12 * Update 2015/10/31 Juergen Winkelmann, e-mail winkelmann@id.ethz.ch * 00101202 - 13 * * 00101802 - 14 * - change storage protection alignments to 4K \ * 00102402 - 15 * - replace SSK/ISK instructions with SSKE/ISKE > 4K support * 00103002 - 16 * - minor changes in storage protection logic / * 00103602 - 17 * - change number of parallel processing streams to 4 * 00104202 - 18 * - change core size to 16M * 00104802 - 19 * - replace table of valid $JOB card core requests with general * 00105402 - 20 * logic rounding up any none full page request entered to next * 00106002 - 21 * full page * 00106602 - 22 * - add IPL card and two card loader for one stop creation of an * 00107202 - 23 * IPLable card deck * 00107802 - 24 * - ignore external interrupts during initialization to avoid * 00108402 - 25 * IPLRTN getting interrupted by the interval timer * 00109002 - 26 * * 00109103 - 27 * Update 2015/11/05 Juergen Winkelmann, e-mail winkelmann@id.ethz.ch * 00109203 - 28 * * 00109303 - 29 * - allow reloading card readers without needing to re-IPL the * 00109403 - 30 * system. This functionality relies on Hercules' card reader * 00109503 - 31 * behavior with the EOF initialization in place. It will not * 00109603 - 32 * work in INTR mode. * 00109703 - 33 * * 00109744 - 34 * Update 2015/11/13 Juergen Winkelmann, e-mail winkelmann@id.ethz.ch * 00109784 - 35 * * 00109824 - 36 * - add UCB to support a console at 009 using the EXCP device * 00109864 - 37 * handler. * 00109904 - 38 * * 00110000 - 39 *********************************************************************** 00120000 -- - 41 PRINT ON,NODATA,GEN 00140000 - 000000 00000 01770 42 PROGRAM CSECT , sample operating system starts at zero 00150002 - 001770 01770 000A0 43 CARDLDR CSECT , two card loader follows at the end 00150102 - 44 *** 00150202 - 45 *** IPL card 00150302 - 46 *** 00150402 - 001810 01810 00050 47 IPLCARD CSECT , IPLable deck must begin with this card 00150502 - 001810 0000000000 48 PSWD DC F'0',X'00' initial program status word, disabled 00150602 - 001815 001770 49 DC AL3(LOADER) start execution at load address 00150702 - 001818 02001770 50 CCW1 DC X'02',AL3(LOADER) read 1st card to load address 00150802 - 00181C 40000050 51 DC XL4'40000050' chain, read length = 80 00150902 - 001820 020017C0 52 CCW2 DC X'02',AL3(LOADER+80) read 2nd card to load addr + 80 00151002 - 001824 00000050 53 DC XL4'00000050' read length = 80 00151102 - 001828 E2819497938540D6 54 DC C'Sample Operating System Version 2.00' eye catcher 00151202 -1 Sample Operating System Version 2.00 Page 4 - Active Usings: None -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0001850 0000000000000000 55 DC 16X'00' pad to card length 00151302 - 56 *** 00151402 - 57 *** loader 00151502 - 58 *** 00151602 - 59 * 00151702 - 60 * Initialize 00151802 - 61 * 00151902 - 001770 01770 000A0 62 CARDLDR CSECT , two card loader must follow IPL card 00152002 - 001770 05C0 63 BALR R12,0 establish .. 00152102 - 001772 4120 0002 00002 64 LA R2,2 .. base .. 00152202 - 001776 1BC2 65 SR R12,R2 .. register 00152302 - R:C 01770 66 USING CARDLDR,R12 tell assembler 00152402 - 001778 41B0 0000 00000 67 LA R11,0 addressability of .. 00152502 - R:B 00000 68 USING PROGRAM,R11 .. sample operating system 00152602 - 00177C 4120 0000 00000 69 LA R2,0 I/O .. 00152702 - 001780 4130 C06A 017DA 70 LA R3,IOINTRPT .. new PSWD 00152802 - 001784 9023 B078 00078 71 STM R2,R3,IONEW store I/O new PSWD 00152902 - 001788 8000 C07E 017EE 72 SSM ENBLECH0 enable interrupts from channel 0 00153002 - 00178C 4150 C0A0 01810 73 LA R5,CCWCHAIN address of card reader CCW chain 00153102 - 001790 5050 B048 00048 74 ST R5,CAW store address in CAW 00153202 - 001794 5830 C094 01804 75 L R3,NUMCARDS number of cards to read 00153302 - 001798 5840 C090 01800 76 L R4,LOADADDR target address of loaded code 00153402 - 77 * 00153502 - 78 * create CCW chain 00153602 - 79 * 00153702 - 00179C 1824 80 NEXTCARD LR R2,R4 load next card here 00153802 - 00179E BF28 C080 017F0 81 ICM R2,B'1000',READ insert write command 00153902 - 0017A2 5020 5000 00000 82 ST R2,0(,R5) store CCW 00154002 - 0017A6 4120 0050 00050 83 LA R2,80 length of card 00154102 - 0017AA 5020 5004 00004 84 ST R2,4(,R5) store length in CCW, zero all flags 00154202 - 0017AE 9640 5004 00004 85 OI 4(R5),X'40' indicate command chaining 00154302 - 0017B2 4140 4050 00050 86 LA R4,80(,R4) increment target address 00154402 - 0017B6 4150 5008 00008 87 LA R5,8(,R5) point to next CCW 00154502 - 0017BA 4630 C02C 0179C 88 BCT R3,NEXTCARD read next card 00154602 - 0017BE 5B50 C098 01808 89 S R5,EIGHT point to previous CCW 00154702 - 0017C2 94BF 5004 00004 90 NI 4(R5),X'BF' clear command chaining flag 00154802 - 91 * 00154902 - 92 * read cards and wait for completion 00155002 - 93 * 00155102 - 0017C6 9C00 000C 0000C 94 SIO 12(0) read cards 00155202 - 0017CA 4120 C066 017D6 95 LA R2,*+12 continue here after I/O completion 00155302 - 0017CE 5020 C08C 017FC 96 ST R2,CONTINUE store continue address in PSWD skeleton 00155402 - 0017D2 8200 C088 017F8 97 LPSW WAITPSWD wait for I/O completion 00155502 - 98 * 00155602 - 99 * "IPL" the Sample Operating System 00155702 - 100 * 00155802 - 0017D6 8200 0000 00000 101 LPSW 0 transfer control 00155902 - 102 * 00156002 - 103 * I/O interrupt handler 00156102 - 104 * 00156202 - 017DA 105 IOINTRPT EQU * 00156302 - 0017DA 9104 B044 00044 106 TM CSW+4,X'04' device end received? 00156402 - 0017DE 47E0 C07A 017EA 107 BNO IOINTRTN -> no, keep waiting 00156502 - 0017E2 94FD B039 00039 108 NI IOOLD+1,X'FD' -> yes, terminate wait state and .. 00156602 - 0017E6 947F B038 00038 109 NI IOOLD,X'7F' .. and disable channel 0 interrupts 00156702 -1 Sample Operating System Version 2.00 Page 5 - Active Usings: PROGRAM,R11 CARDLDR,R12 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -00017EA 8200 B038 00038 110 IOINTRTN LPSW IOOLD return to mainline 00156802 - 111 DROP R11,R12 no longer needed 00156902 - 112 * 00157002 - 113 * Data area 00157102 - 114 * 00157202 - 0017EE F8F0 115 ENBLECH0 DC C'80' mask to enable channel 0 interrupts 00157302 - 0017F0 02 116 READ DC X'02' read a card 00157402 - 0017F8 117 DS 0D align 00157502 - 0017F8 80020000 118 WAITPSWD DC X'80020000' wait with channel 0 interrupts enabled 00157602 - 0017FC 119 CONTINUE DS F continue here after wait 00157702 - 001800 00000000 120 LOADADDR DC F'0' code is to be loaded here 00157802 - 001804 0000004B 121 NUMCARDS DC F'75' number of cards to read 00157904 - 001808 00000008 122 EIGHT DC F'8' CCW length 00158002 - 001810 123 CCWCHAIN DS 0D start of card reader CCW chain 00158102 - 124 *** 00158202 - 125 *** Sample Operating System code begins here 00158302 - 126 *** 00158402 - 000000 00000 01770 127 PROGRAM CSECT , sample OS must follow loader cards 00158502 -0 000000 129 CORESIZE EQU 16777216 bytes of core in object machine 00170002 -0 R:0 00000 131 USING *,0 COMMUNICATIONS AREA 00190000 -0000000 000000000000103E 133 IPLPSW DC B'00000000',B'00000000',X'0000',X'00',AL3(IPLRTN) 00210000 - 000008 134 IPLCCW1 DS D . IPL CCW #1 00220000 - 000010 135 IPLCCW2 DS D . IPL CCW #2 00230000 - 000018 136 EXTOLD DS D . EXTERNAL OLD PSW 00240000 - 000020 137 SVCOLD DS D . SVC OLD PSW 00250000 - 000028 138 PGMOLD DS D . PROGRAM INTERRUPT OLD PSW 00260000 - 000030 139 MCHKOLD DS D . MACHINE CHECK OLD PSW 00270000 - 000038 140 IOOLD DS D . I/O INTERRUPT OLD PSW 00280000 - 000040 141 CSW DS D . CHANNEL STATUS WORD 00290000 - 000048 142 CAW DS F . CHANNEL ADDRESS WORD 00300000 - 00004C 143 UNUSED0 DS F . 00310000 - 000050 FFFFFFFF 144 TIMER DC F'-1' . TIMER 00320000 - 000054 00000000 145 UNUSED1 DC F'0' . 00330000 - 000058 000000000000027A 146 EXTNEW DC B'00000000',B'00000000',X'0000',X'00',AL3(EXTHANDL) 00340000 - 000060 00000000000002B2 147 SVCNEW DC B'00000000',B'00000000',X'0000',X'00',AL3(SVCHANDL) 00350000 - 000068 00000000000002B0 148 PGMNEW DC B'00000000',B'00000000',X'0000',X'00',AL3(PGMHANDL) 00360000 - 000070 0002000000000000 149 MCHKNEW DC B'00000000',B'00000010',X'0000',X'00',AL3(0) 00370000 - 000078 00000000000017DA 150 IONEW DC B'00000000',B'00000000',X'0000',X'00',AL3(IOINTRPT) <-+ 00380002 - 151 *** | 00382002 - 152 *** IOINTRPT will be replaced with IOHANDL after IPL by IPLRTN -----+ 00384002 - 153 *** 00386002 - 000080 00080 00180 154 ORG *+X'100' SPACE OVER STAND ALONE DUMP AREA 00390000 - 000180 00001740 155 FSBPTR DC A(VERYEND) . FSB POINTER 00400000 - 000184 0000000100000000 156 FSBSEM DC F'1,0' . FSB SEMAPHORE 00410000 - 00018C 0000000000000000 157 MEMORY DC F'0,0' . MEMORY SEMAPHORE 00420000 - 000194 0000000100000000 158 CAWSEM DC F'1,0' . CAW SEMAPHORE 00430000 -000019C 160 TRAPSAVE DS 16F . STORAGE FOR EXTERNAL INTERRUPTS 00450000 - 0001DC 161 IOHSAVE DS 16F . STORAGE FOR I/O INTERRUPTS 00460000 -000021C 163 SYSSEMSA DS CL84 . SYSTEM SEMAPHORE SAVE AREA 00480000 -1 Sample Operating System Version 2.00 Page 6 - Active Usings: PROGRAM,R0 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000270 165 RUNNING DS A . RUNNING 00500000 - 000274 166 NEXTTRY DS A . NEXTTRY 00510000 - 000278 167 NEXTTRYM DS C,0H . NEXTTRY MODIFIED 00520000 -1 Sample Operating System Version 2.00 Page 7 - Active Usings: PROGRAM,R0 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 169 *********************************************************************** 00540000 - 170 * * 00550000 - 171 * EXTERNAL, PROGRAM, AND SVC INTERRUPT HANDLERS * 00560000 - 172 * * 00570000 - 173 *********************************************************************** 00580000 -0 0027A 175 EXTHANDL EQU * . EXTERNAL INTERRUPT HANDLER 00600000 - 00027A 900F 019C 0019C 176 STM 0,15,TRAPSAVE . SAVE REGISTERS 00610000 - 00027E 0510 177 BALR 1,0 . ESTABLISH ADDRESSING 00620000 - R:1 00280 178 USING *,1 00630000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 178 in /mbhfs/sos4k.asm on volume: - 000280 9580 001B 0001B 179 CLI EXTOLD+3,X'80' . SEE IF TIMER TRAP 00640000 - 000284 4770 1028 002A8 180 BNE EXTHRET . IF NOT, IGNORE 00650000 - 000288 58F0 0270 00270 181 L 15,RUNNING . SET UP REGISTERS FOR TRAFFIC 00660000 - R:F 00000 182 USING PCB,15 . CONTROLLER (XPER) 00670000 - 00028C 95FF F019 00019 183 CLI PCBBLOKT,X'FF' . IF BLOCKED, NO PROCESS IS 00680000 - 000290 4780 1028 002A8 184 BE EXTHRET . RUNNABLE, SO RETURN 00690000 - 000294 41E0 F04C 0004C 185 LA 14,PCBISA . GET SAVE AREA 00700000 - R:E 00000 186 USING SA,14 00710000 - 000298 D207 E000 0018 00000 00018 187 MVC SAPSW,EXTOLD . AND STORE OLD STUFF INTO IT 00720000 - 00029E D23F E008 019C 00008 0019C 188 MVC SAREGS,TRAPSAVE 00730000 - 0002A4 47F0 12EA 0056A 189 B XPER . THEN GO TO TRAFFIC SCHEDULER 00740000 - 190 DROP 14,15 00750000 - 0002A8 980F 019C 0019C 191 EXTHRET LM 0,15,TRAPSAVE . TO IGNORE AN INTERRUPT, RELOAD 00760000 - 0002AC 8200 0018 00018 192 LPSW EXTOLD . AND TRANSFER BACK 00770000 -0 002B0 194 PGMHANDL EQU * . PROGRAM INTERRUPT HANDLER 00790000 - 0002B0 0A6F 195 SVC C'?' . IN ANY CASE, AN ERROR 00800000 -1 Sample Operating System Version 2.00 Page 8 - Active Usings: PROGRAM,R0 PROGRAM+X'280',R1 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 197 *********************************************************************** 00820000 - 198 * * 00830000 - 199 * SVC INTERRUPT HANDLER * 00840000 - 200 * * 00850000 - 201 * FOR ALL ROUTINES ENTERED BY SVC INTERRUPT, THE * 00860000 - 202 * FOLLOWING REGISTERS CONTAIN THIS INFORMATION: * 00870000 - 203 * * 00880000 - 204 * REGISTER 1 - BASE REGISTER FOR ROUTINE * 00890000 - 205 * REGISTER 2 - POINTER TO ARGUMENT LIST (IF ANY) * 00900000 - 206 * REGISTER 14 - POINTER TO SAVEAREA USED FOR THIS SVC * 00910000 - 207 * REGISTER 15 - POINTER TO PCB PRESENTLY RUNNING * 00920000 - 208 * * 00930000 - 209 *********************************************************************** 00940000 -0 002B2 211 SVCHANDL EQU * . SVC HANDLER 00960000 - 0002B2 900F 019C 0019C 212 STM 0,15,TRAPSAVE . SAVE REGISTERS 00970000 - 0002B6 0590 213 BALR 9,0 . ESTABLISH ADDRESSING 00980000 - R:9 002B8 214 USING *,9 00990000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 178 - ** ASMA435I Record 214 in /mbhfs/sos4k.asm on volume: - 0002B8 98AE 905C 00314 215 LM 10,14,SVCCONST . INITIALIZE REGISTERS 01000000 - 0002BC 43A0 0023 00023 216 IC 10,SVCOLD+3 . GET SVC CODE 01010000 - 0002C0 43AA 9070 00328 217 IC 10,SVCHTABL(10) . TRANSLATE INTO TABLE OFFSET 01020000 - 0002C4 41AA 9170 00428 218 LA 10,SVCRTN(10) . REG 10 -> THE CORRECT PSW 01030000 - 0002C8 9500 A002 00002 219 CLI 2(10),X'00' . IS THIS CALL PROTECTED? 01040000 - 0002CC 4780 904A 00302 220 BE SVCHPROT . THEN SEE IF WE CAN CALL IT 01050000 - 0002D0 58F0 0270 00270 221 SVCOK L 15,RUNNING . GET PCB POINTER 01060000 - R:F 00000 222 USING PCB,15 01070000 - 0002D4 9500 A003 00003 223 CLI 3(10),X'00' . IS IT A SYSTEM SAVEAREA? 01080000 - 0002D8 4780 9026 002DE 224 BE SYSSEM . DON'T USE REG 14 AS PCB POINTER 01090000 - 0002DC 18EF 225 LR 14,15 . ELSE, SET UP PCB POINTER 01100000 - 0002DE 43BA 0003 00003 226 SYSSEM IC 11,3(10) . GET POINTER TO SAVE AREA OFFSET 01110000 - 0002E2 5AEB 9210 004C8 227 A 14,SVCSAVE(11) . REG 14 -> SAVE AREA 01120000 - 0002E6 954B 0023 00023 228 CLI SVCOLD+3,C'.' . ARE WE CALLING XPER? 01130000 - 0002EA 4780 9042 002FA 229 BE SVCXPER . IF SO, DON'T SAVE RETURN STATUS 01140000 - R:E 00000 230 USING SA,14 01150000 - 0002EE D207 E000 0020 00000 00020 231 MVC SAPSW,SVCOLD . SAVE PSW 01160000 - 0002F4 D23F E008 019C 00008 0019C 232 MVC SAREGS,TRAPSAVE . SAVE REGISTERS 01170000 - 0002FA 581A 0004 00004 233 SVCXPER L 1,4(10) . MAKE ADDRESSING EASY WITHIN 01180000 - 0002FE 8200 A000 00000 234 LPSW 0(10) . ROUTINE, AND GO THERE 01190000 - 000302 58C0 0020 00020 235 SVCHPROT L 12,SVCOLD . GET PROTECTION KEY 01200000 - 000306 14CD 236 NR 12,13 . IS IT A USER? 01210000 - 000308 4780 9018 002D0 237 BZ SVCOK . IF NO, THAT'S FINE 01220000 - 00030C 41A0 91F8 004B0 238 LA 10,SVCRTN+136 . ELSE SET UP CALL TO XQUE 01230000 - 000310 47F0 9018 002D0 239 B SVCOK . 01240000 - 240 DROP 9 01250000 - 000314 0000000000000000 241 SVCCONST DC 3F'0',X'00F00000',F'0' 01260000 -0000328 8484848484848484 243 SVCHTABL DC 256X'84' . TABLE OF PSW OFFSETS 01280000 - 000428 00428 003FF 244 ORG SVCHTABL+C'P' 01290000 - 0003FF 00 245 DC AL1(0) 01300000 - 000400 00400 0040D 246 ORG SVCHTABL+C'V' 01310000 - 00040D 08 247 DC AL1(8) 01320000 - 00040E 0040E 00382 248 ORG SVCHTABL+C'!' 01330000 -1 Sample Operating System Version 2.00 Page 9 - Active Usings: PROGRAM,R0 PROGRAM+X'280',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000382 10 249 DC AL1(16) 01340000 - 000383 00383 00393 250 ORG SVCHTABL+C',' 01350000 - 000393 18 251 DC AL1(24) 01360000 - 000394 00394 003EA 252 ORG SVCHTABL+C'B' 01370000 - 0003EA 20 253 DC AL1(32) 01380000 - 0003EB 003EB 003E9 254 ORG SVCHTABL+C'A' 01390000 - 0003E9 28 255 DC AL1(40) 01400000 - 0003EA 003EA 003EE 256 ORG SVCHTABL+C'F' 01410000 - 0003EE 30 257 DC AL1(48) 01420000 - 0003EF 003EF 003F1 258 ORG SVCHTABL+C'I' 01430000 - 0003F1 38 259 DC AL1(56) 01440000 - 0003F2 003F2 003F9 260 ORG SVCHTABL+C'J' 01450000 - 0003F9 40 261 DC AL1(64) 01460000 - 0003FA 003FA 00373 262 ORG SVCHTABL+C'.' 01470000 - 000373 48 263 DC AL1(72) 01480000 - 000374 00374 00401 264 ORG SVCHTABL+C'R' 01490000 - 000401 50 265 DC AL1(80) 01500000 - 000402 00402 0040A 266 ORG SVCHTABL+C'S' 01510000 - 00040A 58 267 DC AL1(88) 01520000 - 00040B 0040B 003EB 268 ORG SVCHTABL+C'C' 01530000 - 0003EB 60 269 DC AL1(96) 01540000 - 0003EC 003EC 003FD 270 ORG SVCHTABL+C'N' 01550000 - 0003FD 68 271 DC AL1(104) 01560000 - 0003FE 003FE 00410 272 ORG SVCHTABL+C'Y' 01570000 - 000410 70 273 DC AL1(112) 01580000 - 000411 00411 00411 274 ORG SVCHTABL+C'Z' 01590000 - 000411 78 275 DC AL1(120) 01600000 - 000412 00412 003EC 276 ORG SVCHTABL+C'D' 01610000 - 0003EC 80 277 DC AL1(128) 01620000 - 0003ED 003ED 00397 278 ORG SVCHTABL+C'?' 01630000 - 000397 88 279 DC AL1(136) 01640000 - 000398 00398 003F0 280 ORG SVCHTABL+C'H' 01650000 - 0003F0 90 281 DC AL1(144) 01660000 - 0003F1 003F1 003ED 282 ORG SVCHTABL+C'E' 01670000 - 0003ED 98 283 DC AL1(152) 01680000 - 0003EE 003EE 00428 284 ORG SVCHTABL+256 01690000 -0000428 286 SVCRTN DS 0D . THE PSWS 01710000 - 287 * IN THE FOLLOWING PSWS, THE THIRD BYTE INDICATES * 01720000 - 288 * WHETHER THE SVC IS RESTRICTED: * 01730000 - 289 * X'00' -> OPERATING SYSTEM ONLY * 01740000 - 290 * X'FF' -> AVAILABLE TO USER ALSO * 01750000 - 291 * * 01760000 - 292 * THE FOURTH BYTE INDICATES WHICH SAVE AREA TO USE; * 01770000 - 293 * SVCSAVE BELOW SHOWS THE CODE VALUES. * 01780000 - 000428 00000000000004EE 294 DC B'00000000',B'00000000',X'0000',X'00',AL3(XP) 01790000 - 000430 0000000000000534 295 DC B'00000000',B'00000000',X'0000',X'00',AL3(XV) 01800000 - 000438 00000004000005C0 296 DC B'00000000',B'00000000',X'0004',X'00',AL3(XEXC) 01810000 - 000440 00000004000005D2 297 DC B'00000000',B'00000000',X'0004',X'00',AL3(XCOM) 01820000 - 000448 0000000400000744 298 DC B'00000000',B'00000000',X'0004',X'00',AL3(XB) 01830000 - 000450 FF00000C00000600 299 DC B'11111111',B'00000000',X'000C',X'00',AL3(XA) 01840000 - 000458 FF00000C000006B6 300 DC B'11111111',B'00000000',X'000C',X'00',AL3(XF) 01850000 - 000460 000000040000087A 301 DC B'00000000',B'00000000',X'0004',X'00',AL3(XI) 01860000 - 000468 00000004000008A6 302 DC B'00000000',B'00000000',X'0004',X'00',AL3(XJ) 01870000 - 000470 000000040000056A 303 DC B'00000000',B'00000000',X'0004',X'00',AL3(XPER) 01880000 -1 Sample Operating System Version 2.00 Page 10 - Active Usings: PROGRAM,R0 PROGRAM+X'280',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000478 FF00FF08000008EC 304 DC B'11111111',B'00000000',X'FF08',X'00',AL3(XR) 01890000 - 000480 FF00FF0800000978 305 DC B'11111111',B'00000000',X'FF08',X'00',AL3(XS) 01900000 - 000488 FF00FF0800000780 306 DC B'11111111',B'00000000',X'FF08',X'00',AL3(XC) 01910000 - 000490 0000FF04000008CA 307 DC B'00000000',B'00000000',X'FF04',X'00',AL3(XN) 01920000 - 000498 0000FF0800000A0A 308 DC B'00000000',B'00000000',X'FF08',X'00',AL3(XY) 01930000 - 0004A0 FF00FF0800000A42 309 DC B'11111111',B'00000000',X'FF08',X'00',AL3(XZ) 01940000 - 0004A8 FF00FF08000007C6 310 DC B'11111111',B'00000000',X'FF08',X'00',AL3(XD) 01950000 - 0004B0 0000FF0400000A8E 311 DC B'00000000',B'00000000',X'FF04',X'00',AL3(XQUE) 01960000 - 0004B8 FF00FF0800000842 312 DC B'11111111',B'00000000',X'FF08',X'00',AL3(XH) 01970000 - 0004C0 FF00000C00000608 313 DC B'11111111',B'00000000',X'000C',X'00',AL3(XAUTO) 01980000 -00004C8 315 SVCSAVE DS 0F . THE SAVE AREA OFFSETS 02000000 - 0004C8 0000021C 316 DC A(SYSSEMSA) . CODE 00 -> SYSSEMSA 02010000 - 0004CC 0000004C 317 DC A(PCBISA-PCB) . CODE 04 -> INTERRUPT SAVE AREA 02020000 - 0004D0 000000A0 318 DC A(PCBFSA-PCB) . CODE 08 -> FAULT SAVE AREA 02030000 - 0004D4 000000F4 319 DC A(PCBMSA-PCB) . CODE 0C -> MEMORY SAVE AREA 02040000 -- - 321 *********************************************************************** 02060000 - 322 * * 02070000 - 323 * RETURN SEQUENCE FOR REQUEST DRIVEN ROUTINES AND TRAFFIC CONTROLLER * 02080000 - 324 * * 02090000 - 325 *********************************************************************** 02100000 -00004D8 327 DS 0D 02120000 - 0004D8 00000000000004E0 328 RETURN DC B'00000000',B'00000000',X'0000',X'00',AL3(RETURNR) 02130000 -0 004E0 330 RETURNR EQU * . RETURN ROUTINE FOR SVC'S AND XPER 02150000 - 0004E0 D207 0020 E000 00020 00000 331 MVC SVCOLD,SAPSW . SAVE PSW IN A SAFE PLACE 02160000 - 0004E6 980F E008 00008 332 LM 0,15,SAREGS . RELOAD REGISTERS 02170000 - 0004EA 8200 0020 00020 333 LPSW SVCOLD . AND RETURN 02180000 -1 Sample Operating System Version 2.00 Page 11 - Active Usings: PROGRAM,R0 PROGRAM+X'280',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 335 *********************************************************************** 02200000 - 336 * * 02210000 - 337 * REQUEST DRIVEN ROUTINES * 02220000 - 338 * * 02230000 - 339 *********************************************************************** 02240000 -- - 341 *********************************************************************** 02260000 - 342 * * 02270000 - 343 * XP ROUTINE * 02280000 - 344 * * 02290000 - 345 * FUNCTION: TO IMPLEMENT "P" PRIMITIVE FOR SEMAPHORES * 02300000 - 346 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS SM * 02310000 - 347 * SM DS 0D SEMAPHORE DEFINITION * 02320000 - 348 * SMVAL DS F VALUE * 02330000 - 349 * SMPTR DS A POINTER TO FIRST WAITER * 02340000 - 350 * ROUTINES USED: XPER * 02350000 - 351 * PROCEDURE: SUBTRACT ONE FROM SMVAL; IF NON-NEGATIVE, RETURN. * 02360000 - 352 * IF NEGATIVE, PLACE RUNNING PROCESS AT END OF LIST * 02370000 - 353 * OF PRECESSES WAITING ON SM. BLOCK CALLING PROCESS; * 02380000 - 354 * ENTER TRAFFIC CONTROLLER. * 02390000 - 355 * ERROR CHECKS: NONE * 02400000 - 356 * INTERRUPTS: OFF * 02410000 - 357 * USER ACCESS: NO * 02420000 - 358 * * 02430000 - 359 *********************************************************************** 02440000 -0 004EE 361 XP EQU * . THE XP ROUTINE 02460000 - R:1 004EE 362 USING *,1 02470000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 362 in /mbhfs/sos4k.asm on volume: - R:2 00000 363 USING SM,2 . ARGUMENT IS A SEMAPHORE 02480000 - 0004EE 5830 2000 00000 364 L 3,SMVAL . GET THE VALUE 02490000 - 0004F2 0630 365 BCTR 3,0 . SUBTRACT ONE 02500000 - 0004F4 5030 2000 00000 366 ST 3,SMVAL . AND STORE IT BACK 02510000 - 0004F8 1233 367 LTR 3,3 . SET CONDITION CODE 02520000 - 0004FA 4740 1014 00502 368 BM XPWAIT . IF IT'S NEGATIVE, MUST WAIT 02530000 - 0004FE 8200 04D8 004D8 369 LPSW RETURN . ELSE RETURN NOW 02540000 - 000502 4140 2004 00004 370 XPWAIT LA 4,SMPTR . START GOING DOWN 02550000 - 000506 5850 2004 00004 371 L 5,SMPTR . CHAIN OF POINTERS 02560000 - 372 DROP 15 02570000 - R:5 00000 373 USING PCB,5 02580000 - 00050A 1255 374 XPLOOP LTR 5,5 . IF REACHED END 02590000 - 00050C 4780 102E 0051C 375 BZ XPTHEN . ADD OUR PCB ON. ELSE, 02600000 - 000510 4140 5030 00030 376 LA 4,PCBNSW . INCREMENT POINTERS 02610000 - 000514 5850 5030 00030 377 L 5,PCBNSW 02620000 - 000518 47F0 101C 0050A 378 B XPLOOP . AND TRY AGAIN 02630000 - 379 DROP 5 02640000 - R:F 00000 380 USING PCB,15 02650000 - 00051C D203 4000 0270 00000 00270 381 XPTHEN MVC 0(4,4),RUNNING . WE'RE AT THE END 02660000 - 000522 5050 F030 00030 382 ST 5,PCBNSW . STORE NULL POINTER 02670000 - 000526 92FF F019 00019 383 MVI PCBBLOKT,X'FF' . AND WE'RE BLOCKED 02680000 - 00052A D253 F04C 021C 0004C 0021C 384 MVC PCBISA,SYSSEMSA . SWITCH SAVE AREAS 02690000 - 000530 47F0 107C 0056A 385 B XPER . SO RUN SOMEONE ELSE 02700000 -1 Sample Operating System Version 2.00 Page 12 - Active Usings: PROGRAM,R0 PROGRAM+X'4EE',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 386 DROP 2 02710000 -1 Sample Operating System Version 2.00 Page 13 - Active Usings: PROGRAM,R0 PROGRAM+X'4EE',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 388 *********************************************************************** 02730000 - 389 * * 02740000 - 390 * XV ROUTINE * 02750000 - 391 * * 02760000 - 392 * FUNCTION: TO IMPLEMENT "V" PRIMITIVE FOR SEMAPHORES * 02770000 - 393 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS SM * 02780000 - 394 * SM DS 0D SEMAPHORE DEFINITION * 02790000 - 395 * SMVAL DS F VALUE * 02800000 - 396 * SMPTR DS A POINTER TO FIRST WAITER * 02810000 - 397 * ROUTINES USED: NONE * 02820000 - 398 * PROCEDURE: ADD ONE TO SMVAL; IF > ZERO, RETURN. IF ZERO OR * 02830000 - 399 * LESS, REMOVE FIRST PROCESS FROM WAITER CHAIN; * 02840000 - 400 * UNBLOCK IT; IF NEXTTRYM NOT SET, SET IT AND SET * 02850000 - 401 * NEXTTRY TO THAT PROCESS; RETURN; IF NEXTTRYM SET, * 02860000 - 402 * RETURN. * 02870000 - 403 * ERROR CHECKS: NONE * 02880000 - 404 * INTERRUPTS: OFF * 02890000 - 405 * USER ACCESS: NO * 02900000 - 406 * * 02910000 - 407 *********************************************************************** 02920000 -0 00534 409 XV EQU * . THE XV ROUTINE 02940000 - R:1 00534 410 USING *,1 02950000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 410 in /mbhfs/sos4k.asm on volume: - R:2 00000 411 USING SM,2 . ARGUMENT IS A SEMAPHORE 02960000 - 000534 5830 2000 00000 412 L 3,SMVAL . GET THE VALUE 02970000 - 000538 5A30 1924 00E58 413 A 3,=F'1' . ADD ONE 02980000 - 00053C 5030 2000 00000 414 ST 3,SMVAL . AND STORE IT BACK 02990000 - 000540 47D0 1014 00548 415 BNP XVWAKEUP . IF <=0, SOMEONE'S WAITING 03000000 - 000544 8200 04D8 004D8 416 LPSW RETURN . ELSE RETURN 03010000 - 000548 5840 2004 00004 417 XVWAKEUP L 4,SMPTR . GET THE FIRST OF THE GUYS 03020000 - 418 DROP 15 03030000 - R:4 00000 419 USING PCB,4 03040000 - 00054C D203 2004 4030 00004 00030 420 MVC SMPTR,PCBNSW . REMEMBER THE REST 03050000 - 000552 9200 4019 00019 421 MVI PCBBLOKT,X'00' . WE'RE NO LONGER BLOCKING HIM 03060000 - 000556 95FF 0278 00278 422 CLI NEXTTRYM,X'FF' . IS NEXT TRY MODIFIED? 03070000 - 00055A 4780 1032 00566 423 BE XVRET . IF SO, WELL OK 03080000 - 00055E 5040 0274 00274 424 ST 4,NEXTTRY ELSE MODIFY NEXTTRY 03090000 - 000562 92FF 0278 00278 425 MVI NEXTTRYM,X'FF' . AND SAY SO 03100000 - 000566 8200 04D8 004D8 426 XVRET LPSW RETURN . GET BACK 03110000 - 427 DROP 2,4 03120000 -1 Sample Operating System Version 2.00 Page 14 - Active Usings: PROGRAM,R0 PROGRAM+X'534',R1 SA,R14 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 429 *********************************************************************** 03140000 - 430 * * 03150000 - 431 * XPER ROUTINE (TRAFFIC CONTROLLER) * 03160000 - 432 * * 03170000 - 433 * FUNCTION: TO IMPLEMENT MULTIPROGRAMMING * 03180000 - 434 * DATABASES: NONE * 03190000 - 435 * ROUTINES USED: NONE * 03200000 - 436 * PROCEDURE: STARTING WITH NEXTTRY, SEARCH FOR PROCESS ON ALL * 03210000 - 437 * PCB CHAIN NOT BLOCKED OR STOPPED; IF FOUND, USE AS * 03220000 - 438 * NEW RUNNING, FOR 50 MS OF TIME AND RETURN. ELSE, * 03230000 - 439 * ENTER WAIT STATE WITH INTERRUPTS ON, AND TRY TO * 03240000 - 440 * SCHEDULE AGAIN AFTER INTERRUPT; RETURN. * 03250000 - 441 * ERROR CHECKS: NONE * 03260000 - 442 * INTERRUPTS: OFF * 03270000 - 443 * USER ACCESS: NO * 03280000 - 444 * * 03290000 - 445 *********************************************************************** 03300000 -0 0056A 447 XPER EQU * . ROUTINE XPER: TRAFFIC SCHEDULER 03320000 - 00056A 8000 0078 00078 448 SSM IONEW . MASK OFF INTERRUPTS 03330000 - 00056E 0510 449 BALR 1,0 03340000 - R:1 00570 450 USING *,1 03350000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 450 in /mbhfs/sos4k.asm on volume: - 000570 58A0 0274 00274 451 L 10,NEXTTRY . START LOOKING AT NEXTTRY 03360000 - 000574 18BA 452 LR 11,10 . REMEMBER WHICH THAT WAS 03370000 - R:A 00000 453 USING PCB,10 03380000 - 000576 95FF A019 00019 454 GWLOOP CLI PCBBLOKT,X'FF' . IF IT'S BLOCKED 03390000 - 00057A 4780 1016 00586 455 BE GWINC . IGNORE 03400000 - 00057E 95FF A018 00018 456 CLI PCBSTOPT,X'FF' . ELSE, IF IT'S NOT STOPPED 03410000 - 000582 4770 1030 005A0 457 BNE GWRUN . WE CAN RUN IT 03420000 - 000586 58A0 A010 00010 458 GWINC L 10,PCBNPALL . ELSE, GO TO THE NEXT 03430000 - 00058A 19AB 459 CR 10,11 . IF WE'VE SEEN ALL, QUIT 03440000 - 00058C 4770 1006 00576 460 BNE GWLOOP . ELSE TRY AGAIN 03450000 - 000590 8200 1028 00598 461 LPSW IDLE . SIT AND WAIT 03460000 - 000598 462 DS 0D 03470000 - 000598 FE0200000000056A 463 IDLE DC B'11111110',B'00000010',X'0000',X'00',AL3(XPER) 03480000 -00005A0 D203 0274 A010 00274 00010 465 GWRUN MVC NEXTTRY,PCBNPALL . GET A NEW NEXTTRY 03500000 - 0005A6 9200 0278 00278 466 MVI NEXTTRYM,X'00' . NOT MODIFIED 03510000 - 0005AA 50A0 0270 00270 467 ST 10,RUNNING . GET A NEW RUNNING 03520000 - 0005AE 41E0 A04C 0004C 468 LA 14,PCBISA 03530000 - 0005B2 D203 0050 104C 00050 005BC 469 MVC TIMER,QUANTUM . INTERRUPT AFTER 50 MS 03540000 - 0005B8 8200 04D8 004D8 470 LPSW RETURN . AND GO TO RETURNR 03550000 - 0005BC 00000F00 471 QUANTUM DC X'00000F00' . QUANTUM OF TIME 03560000 - 472 DROP 10 03570000 - R:F 00000 473 USING PCB,15 03580000 -1 Sample Operating System Version 2.00 Page 15 - Active Usings: PROGRAM,R0 PROGRAM+X'570',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 475 *********************************************************************** 03600000 - 476 * * 03610000 - 477 * XEXC ROUTINE * 03620000 - 478 * * 03630000 - 479 * FUNCTION: TO ENTER SMC SECTION * 03640000 - 480 * DATABASES: NONE * 03650000 - 481 * ROUTINES USED: NONE * 03660000 - 482 * PROCEDURE: INCREMENT SMC BYTE IN PCB BY ONE; RETURN. * 03670000 - 483 * ERROR CHECKS: NONE * 03680000 - 484 * INTERRUPTS: OFF * 03690000 - 485 * USER ACCESS: NO * 03700000 - 486 * * 03710000 - 487 *********************************************************************** 03720000 -0 005C0 489 XEXC EQU * . ROUTINE XEXC: ENTER SMC SECTION 03740000 - R:1 005C0 490 USING *,1 03750000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 490 in /mbhfs/sos4k.asm on volume: - 0005C0 1B88 491 SR 8,8 03760000 - 0005C2 4380 F01A 0001A 492 IC 8,PCBINSMC 03770000 - 0005C6 4188 0001 00001 493 LA 8,1(8) . ADD ONE TO SMC BYTE 03780000 - 0005CA 4280 F01A 0001A 494 STC 8,PCBINSMC 03790000 - 0005CE 8200 04D8 004D8 495 LPSW RETURN . AND LEAVE 03800000 -0 497 *********************************************************************** 03820000 - 498 * * 03830000 - 499 * XCOM ROUTINE * 03840000 - 500 * * 03850000 - 501 * FUNCTION: TO LEAVE SMC SECTION * 03860000 - 502 * DATABASES: NONE * 03870000 - 503 * ROUTINES USED: XP, XV * 03880000 - 504 * PROCEDURE: DECREMENT SMC BYTE IN PCB BY ONE; IF NOT ZERO, * 03890000 - 505 * RETURN. ELSE, CHECK FOR STOP WAITING; IF STOP * 03900000 - 506 * WAITING, ALLOW STOP AND BLOCK SELF; RETURN. IF NO * 03910000 - 507 * STOP WAITING, RETURN. * 03920000 - 508 * ERROR CHECKS: NONE * 03930000 - 509 * INTERRUPTS: OFF * 03940000 - 510 * USER ACCESS: NO * 03950000 - 511 * * 03960000 - 512 *********************************************************************** 03970000 -0 005D2 514 XCOM EQU * . ROUTINE XCOM: LEAVE SMC 03990000 - R:1 005D2 515 USING *,1 04000000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 515 in /mbhfs/sos4k.asm on volume: - 0005D2 1B88 516 SR 8,8 04010000 - 0005D4 4380 F01A 0001A 517 IC 8,PCBINSMC 04020000 - 0005D8 0680 518 BCTR 8,0 . SUBTRACT ONE FROM IN SMC BYTE 04030000 - 0005DA 4280 F01A 0001A 519 STC 8,PCBINSMC 04040000 - 0005DE 1288 520 LTR 8,8 . IS IT ZERO? 04050000 - 0005E0 4770 102A 005FC 521 BNZ XCOMRET . NO, THEN GET BACK, OTHERWISE 04060000 - 0005E4 9500 F01B 0001B 522 CLI PCBSW,X'00' . IS STOP WAITING? 04070000 - 0005E8 4780 102A 005FC 523 BE XCOMRET . IF NOT, RETURN 04080000 - 0005EC 9200 F01B 0001B 524 MVI PCBSW,X'00' . STOPS NOT WAITING AFTER THIS 04090000 - 0005F0 4120 F034 00034 525 LA 2,PCBSRS . WE'LL "V" THE STOPPER, 04100000 -1 Sample Operating System Version 2.00 Page 16 - Active Usings: PROGRAM,R0 PROGRAM+X'5D2',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -00005F4 0AE5 526 SVC C'V' 04110000 - 0005F6 4120 F03C 0003C 527 LA 2,PCBSES . AND "P" THE STOPPEE. 04120000 - 0005FA 0AD7 528 SVC C'P' 04130000 - 0005FC 8200 04D8 004D8 529 XCOMRET LPSW RETURN . AND HERE (IF EVER) WE RETURN 04140000 -1 Sample Operating System Version 2.00 Page 17 - Active Usings: PROGRAM,R0 PROGRAM+X'5D2',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 531 *********************************************************************** 04160000 - 532 * * 04170000 - 533 * XA ROUTINE * 04180000 - 534 * XAUTO ROUTINE * 04190000 - 535 * * 04200000 - 536 * FUNCTION: TO ALLOCATE MEMORY * 04210000 - 537 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XAX: * 04220000 - 538 * XAX DS 0D * 04230000 - 539 * XAXSIZE DS F SIZE OF BLOCK TO BE ALLOCATED * 04240000 - 540 * XAXADDR DS A ADDRESS OF FIRST BYTE OF BLOCK* 04250000 - 541 * XAXALGN DS F ALIGNMENT OF BLOCK * 04260000 - 542 * ROUTINES USED: XEXC, XCOM, XP, XV, XB * 04270000 - 543 * PROCEDURE: LOCK FSB SEMAPHORE; SEARCH FREE STORAGE FOR LARGE * 04280000 - 544 * ENOUGH MEMORY BLOCK; ALIGN BOUNDARY; USE XB TO * 04290000 - 545 * CHAIN ANY LEFTOVER BLOCKS TO FREE STORAGE LIST; * 04300000 - 546 * PLACE ADDRESS OF ALLOCATED BLOCK IN XAXADDR; UNLOCK* 04310000 - 547 * FSB SEMAPHORE; RETURN. IF CAN'T SATISFY REQUEST, * 04320000 - 548 * UNLOCK FSB SEMAPHORE, APPLY XP ROUTINE TO MEMORY * 04330000 - 549 * SEMAPHORE, BLOCKING PROCESS RUNNING UNTIL MEMORY * 04340000 - 550 * FREED; THEN UNBLOCK; TRY TO SATISFY REQUEST AGAIN. * 04350000 - 551 * ERROR CHECKS: NONE * 04360000 - 552 * INTERRUPTS: ON * 04370000 - 553 * USER ACCESS: NO * 04380000 - 554 * * 04390000 - 555 *********************************************************************** 04400000 -0 00600 557 XA EQU * . THE XA ROUTINE, TO ALLOCATE 04420000 - R:1 00600 558 USING *,1 04430000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 558 in /mbhfs/sos4k.asm on volume: - 000600 4100 0001 00001 559 LA 0,1 . SET REGISTER ZERO TO ONE TO 04440000 - 000604 47F0 100E 0060E 560 B XACOM . INDICATE C'A' CALL 04450000 - 00608 561 XAUTO EQU * . AUTO STORAGE ENTRY POINT 04460000 - R:1 00608 562 USING *,1 04470000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 562 in /mbhfs/sos4k.asm on volume: - 000608 1B00 563 SR 0,0 . REG0=0 INDICATES C'E' CALL 04480000 - 00060A 5810 1854 00E5C 564 L 1,=A(XA) . RESET BASE REGISTER PROPERLY 04490000 - R:1 00600 565 USING XA,1 04500000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 565 in /mbhfs/sos4k.asm on volume: - 00060E 0A5A 566 XACOM SVC C'!' . ENTER SMC 04510000 - 000610 1872 567 LR 7,2 04520000 - R:7 00000 568 USING XAX,7 . ARGUMENT LIST 04530000 - 000612 5860 7000 00000 569 L 6,XAXSIZE . GET THE SIZE REQUESTED 04540000 - 000616 4120 0184 00184 570 XATOP LA 2,FSBSEM . LOCK THE FSB SEMAPHORE 04550000 - 00061A 0AD7 571 SVC C'P' . 04560000 - 00061C 4150 0180 00180 572 LA 5,FSBPTR . START LOOKING DOWN 04570000 - 000620 5840 0180 00180 573 L 4,FSBPTR . THE FREE STORAGE LIST 04580000 - 000624 5880 7008 00008 574 L 8,XAXALGN . WE WOULD HAVE TO START AT WITH 04590000 - 000628 0680 575 BCTR 8,0 . THIS CONSTANT TO FIND ALIGNMENT 04600000 - R:4 00000 576 USING FSB,4 04610000 - 00062A 1244 577 XALOOP LTR 4,4 . IF AT THE END 04620000 - 00062C 4780 1056 00656 578 BZ XAWAIT . WAIT UNTIL A "FREE" OP 04630000 - 000630 18D4 579 LR 13,4 . FIND THE LOCATION 04640000 -1 Sample Operating System Version 2.00 Page 18 - Active Usings: PROGRAM,R0 XA,R1 FSB,R4 XAX,R7 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000632 06D0 580 BCTR 13,0 . IN THIS BLOCK WITH THIS 04650000 - 000634 16D8 581 OR 13,8 . ALIGNMENT 04660000 - 000636 41DD 0001 00001 582 LA 13,1(13) . THAT'S IT 04670000 - 00063A 189D 583 LR 9,13 . AND NOW GET IN REG 9 04680000 - 00063C 1B94 584 SR 9,4 . WHAT IS WASTED AT THE FRONT 04690000 - 00063E 5830 4004 00004 585 L 3,FSBSIZE . GET SIZE MINUS WASTE AT 04700000 - 000642 1B39 586 SR 3,9 . FRONT, LEAVING EFFECTIVE SIZE 04710000 - 000644 1963 587 CR 6,3 . IS IT ENOUGH? 04720000 - 000646 47D0 1062 00662 588 BNP XAFOUND . EUREKA! 04730000 - 00064A 4150 4000 00000 589 LA 5,FSBNEXT . OH WELL, GET THE NEXT FREE 04740000 - 00064E 5840 4000 00000 590 L 4,FSBNEXT . STORAGE BLOCK ON THE CHAIN 04750000 - 000652 47F0 102A 0062A 591 B XALOOP . BETTER LUCK NEXT TIME 04760000 - 000656 0AE5 592 XAWAIT SVC C'V' . NEED TO WAIT 04770000 - 000658 4120 018C 0018C 593 LA 2,MEMORY . SO WE LET OTHER PEOPLE GET IN 04780000 - 00065C 0AD7 594 SVC C'P' . SO THEY'LL WAKE US UP 04790000 - 00065E 47F0 1016 00616 595 B XATOP . AND THEN WE'LL TRY AGAIN 04800000 - 000662 50D0 7004 00004 596 XAFOUND ST 13,XAXADDR . WE'VE NOW GOT THE ADDRESS 04810000 - 000666 D203 5000 4000 00000 00000 597 MVC 0(4,5),FSBNEXT . UNLINK THE BLOCK OUT 04820000 - 00066C 58C0 4004 00004 598 L 12,FSBSIZE . GET THE WHOLE BLOCK SIZE 04830000 - 000670 4120 E048 00048 599 LA 2,SATEMP . START MAKING UP ARG LISTS 04840000 - R:2 00000 600 USING XBX,2 . FOR THE XB ROUTINE 04850000 - 000674 18AD 601 LR 10,13 . THE STARTING LOCATION 04860000 - 000676 1BA4 602 SR 10,4 . MINUS THE START OF THE BLOCK 04870000 - 000678 4780 1086 00686 603 BZ XANF . IF NONE WASTED AT THE FRONT, SKIP 04880000 - 00067C 5040 2004 00004 604 ST 4,XBXADDR . ELSE FREE, STARTING THERE 04890000 - 000680 50A0 2000 00000 605 ST 10,XBXSIZE . UP TO THE BEGINNING OF THE 04900000 - 000684 0AC2 606 SVC C'B' . ALLOCATION; INSERT IT IN THE CHAIN 04910000 - 000686 18BD 607 XANF LR 11,13 . THE STARTING ADDR PLUS THE SIZE 04920000 - 000688 1AB6 608 AR 11,6 . GIVES THE FIRST UNUSED ADDR 04930000 - 00068A 1BCA 609 SR 12,10 . MINUS THE WASTE AT FRONT, 04940000 - 00068C 1BC6 610 SR 12,6 . MINUS THE PART ALLOCATED. IF 04950000 - 00068E 4780 109C 0069C 611 BZ XARETURN . NONE LEFT OVER, GOOD 04960000 - 000692 50B0 2004 00004 612 ST 11,XBXADDR . ELSE STORE ADDRESS AND 04970000 - 000696 50C0 2000 00000 613 ST 12,XBXSIZE . SIZE, AND LINK ONTO 04980000 - 00069A 0AC2 614 SVC C'B' . FREE STORAGE LIST 04990000 - 615 DROP 2 05000000 - 00069C 4120 0184 00184 616 XARETURN LA 2,FSBSEM . WE ARE DONE, SO NOW SOMEONE 05010000 - 0006A0 0AE5 617 SVC C'V' . ELSE CAN COME IN 05020000 - 0006A2 1200 618 LTR 0,0 . IS THIS FOR AUTOMATIC STORAGE? 05030000 - 0006A4 4770 10B0 006B0 619 BNZ XABACK . IF NOT, RETURN NOW 05040000 - 0006A8 5060 F044 00044 620 ST 6,PCBASIZE . OTHERWISE STORE SIZE AND 05050000 - 0006AC 50D0 F048 00048 621 ST 13,PCBAADDR . ADDRESS OF AUTOMATIC STORAGE 05060000 - 0006B0 0A6B 622 XABACK SVC C',' . LEAVE SMC SECTION 05070000 - 0006B2 8200 04D8 004D8 623 LPSW RETURN . GET BACK JOJO 05080000 - 624 DROP 4,7 05090000 -1 Sample Operating System Version 2.00 Page 19 - Active Usings: PROGRAM,R0 XA,R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 626 *********************************************************************** 05110000 - 627 * * 05120000 - 628 * XF ROUTINE * 05130000 - 629 * * 05140000 - 630 * FUNCTION: TO FREE MEMORY * 05150000 - 631 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XFX: * 05160000 - 632 * XFX DS 0D * 05170000 - 633 * XFXSIZE DS F SIZE OF BLOCK TO BE FREED * 05180000 - 634 * XFXADDR DS A ADDRESS OF FIRST BYTE OF BLOCK* 05190000 - 635 * ROUTINES USED: XEXC, XP, XV, XB, XCOM * 05200000 - 636 * PROCEDURE: LOCK FSB SEMAPHORE; SEARCH FREE STORAGE LIST TO * 05210000 - 637 * FIND IF ANY FREE BLOCK CONTIGUOUSLY FOLLOWS OR * 05220000 - 638 * PRECEDES BLOCK TO BE FREED; IF THERE IS ANY, * 05230000 - 639 * COMPACT THEM INTO A SINGLE BLOCK OF COMBINED SIZE; * 05240000 - 640 * USE XB TO CHAIN COMPACTED BLOCK ONTO FREE STORAGE * 05250000 - 641 * LIST; WAKEUP ALL PROCESSES WAITING ON MEMORY * 05260000 - 642 * SEMAPHORE; UNLOCK FSB SEMAPHORE; RETURN * 05270000 - 643 * ERROR CHECKS: NONE * 05280000 - 644 * INTERRUPTS: ON * 05290000 - 645 * USER ACCESS: NO * 05300000 - 646 * * 05310000 - 647 *********************************************************************** 05320000 -0 006B6 649 XF EQU * . THE XF ROUTINE, TO FREE STORAGE 05340000 - R:1 006B6 650 USING *,1 05350000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 650 in /mbhfs/sos4k.asm on volume: - 0006B6 0A5A 651 SVC C'!' . ENTER SMC SECTION 05360000 - 0006B8 1872 652 LR 7,2 05370000 - R:7 00000 653 USING XFX,7 . THE ARGUMENT LIST 05380000 - 0006BA 5830 7000 00000 654 L 3,XFXSIZE . GET THE SIZE 05390000 - 0006BE 5840 7004 00004 655 L 4,XFXADDR . AND THE ADDRESS 05400000 - 0006C2 1853 656 LR 5,3 . GET THE ADDRESS OF THE END OF THE 05410000 - 0006C4 1A54 657 AR 5,4 . BLOCK TO BE FREED 05420000 - 0006C6 4120 0184 00184 658 LA 2,FSBSEM . LOCK FSBSEM 05430000 - 0006CA 0AD7 659 SVC C'P' 05440000 - 0006CC 4180 0180 00180 660 LA 8,FSBPTR . START LOOKING DOWN THE FREE 05450000 - 0006D0 5860 0180 00180 661 L 6,FSBPTR . STORAGE LIST, FOR COMPACTION 05460000 - R:6 00000 662 USING FSB,6 05470000 - 0006D4 1266 663 XFLOOP LTR 6,6 . ARE WE THROUGH? 05480000 - 0006D6 4780 105E 00714 664 BZ XFLINK . IF SO, JUST ADD IT ON 05490000 - 0006DA 5890 6000 00000 665 L 9,FSBNEXT . IF NOT. GET THE NEXT PTR 05500000 - 0006DE 1965 666 CR 6,5 . IS THIS BLOCK RIGHT AFTER OURS? 05510000 - 0006E0 4770 103A 006F0 667 BNE XFTHEN . IF NOT, OK. BUT IF IT IS, 05520000 - 0006E4 5098 0000 00000 668 ST 9,0(8) . WE CAN COMPACT, SO UNCHAIN IT 05530000 - 0006E8 5A30 6004 00004 669 A 3,FSBSIZE . AND REMEMBER THE NEW SIZE 05540000 - 0006EC 47F0 1050 00706 670 B XFBACKUP . AND ON TO THE NEXT 05550000 - 0006F0 18A6 671 XFTHEN LR 10,6 . MAYBE IT'S RIGHT BEFORE OURS 05560000 - 0006F2 5AA0 6004 00004 672 A 10,FSBSIZE . GET ENDING ADDRESS OF FREE BLOCK 05570000 - 0006F6 19A4 673 CR 10,4 . IS IT RIGHT BEFORE OURS? 05580000 - 0006F8 4770 1052 00708 674 BNE XFINC . OH FUDGE! NO! 05590000 - 0006FC 5098 0000 00000 675 ST 9,0(8) . IF SO, UNLINK IT 05600000 - 000700 1846 676 LR 4,6 . GET THE NEW BEGINNING LOCATION 05610000 - 000702 5A30 6004 00004 677 A 3,FSBSIZE . AND NEW SIZE OF FREE BLOCK 05620000 - 000706 1868 678 XFBACKUP LR 6,8 . BACK UP ONE FSB 05630000 -1 Sample Operating System Version 2.00 Page 20 - Active Usings: PROGRAM,R0 PROGRAM+X'6B6',R1 FSB,R6 XFX,R7 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000708 4180 6000 00000 679 XFINC LA 8,FSBNEXT . ON TO THE NEXT FSB 05640000 - 00070C 5860 6000 00000 680 L 6,FSBNEXT 05650000 - 000710 47F0 101E 006D4 681 B XFLOOP . TRY, TRY AGAIN 05660000 - 000714 4120 E048 00048 682 XFLINK LA 2,SATEMP . START TO CALL XB 05670000 - R:2 00000 683 USING XBX,2 05680000 - 000718 5030 2000 00000 684 ST 3,XBXSIZE . STORE SIZE 05690000 - 00071C 5040 2004 00004 685 ST 4,XBXADDR . AND ADDRESS 05700000 - 000720 0AC2 686 SVC C'B' . LINK IT ONTO THE FSB CHAIN 05710000 - R:2 00000 687 USING SM,2 05720000 - 000722 4120 018C 0018C 688 LA 2,MEMORY . GET VALUE OF MEMORY SEMAPHORE 05730000 - 000726 41B0 0001 00001 689 LA 11,1(0,0) . SUBTRACT FROM ONE, IT'S A HANDLE 05740000 - 00072A 5BB0 2000 00000 690 S 11,SMVAL . ON THE # OF PEOPLE WAITING 05750000 - 691 DROP 2 05760000 - 00072E 46B0 1088 0073E 692 XFVLOOP BCT 11,XFVDO . LOOP IF ANYONE ELSE IS WAITING 05770000 - 000732 4120 0184 00184 693 LA 2,FSBSEM . WE'RE THROUGH, SO 05780000 - 000736 0AE5 694 SVC C'V' . UNBLOCK FSBSEM 05790000 - 000738 0A6B 695 SVC C',' . LEAVE SMC 05800000 - 00073A 8200 04D8 004D8 696 LPSW RETURN . RETURN 05810000 - 00073E 0AE5 697 XFVDO SVC C'V' . WAKE SOMEONE UP 05820000 - 000740 47F0 1078 0072E 698 B XFVLOOP . TRY AGAIN FOR ANOTHER 05830000 - 699 DROP 6,7 05840000 -1 Sample Operating System Version 2.00 Page 21 - Active Usings: PROGRAM,R0 PROGRAM+X'6B6',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 701 *********************************************************************** 05860000 - 702 * * 05870000 - 703 * XB ROUTINE * 05880000 - 704 * * 05890000 - 705 * FUNCTION: TO CHAIN A STORAGE BLOCK ONTO FREE STORAGE LIST * 05900000 - 706 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XBX: * 05910000 - 707 * XBX DS 0D * 05920000 - 708 * XBXSIZE DS F SIZE OF BLOCK * 05930000 - 709 * XBXADDR DS A ADDRESS OF FIRST BYTE OF BLOCK* 05940000 - 710 * ROUTINES USED: NONE * 05950000 - 711 * PROCEDURE: SEARCH FREE STORAGE LIST TO FIND WHERE TO INSERT * 05960000 - 712 * FREE BLOCK IN ORDER OF INCREASING SIZE; FORMAT * 05970000 - 713 * BLOCK LIKE AN FSB; INSERT; RETURN. * 05980000 - 714 * ERROR CHECKS: NONE * 05990000 - 715 * INTERRUPTS: OFF * 06000000 - 716 * USER ACCESS: NO * 06010000 - 717 * COMMENTS: SINCE XB ROUTINE ONLY CALLED BY XA AND XF, FSB * 06020000 - 718 * SEMAPHORE IS ALREADY LOCKED. * 06030000 - 719 * * 06040000 - 720 *********************************************************************** 06050000 -0 00744 722 XB EQU * 06070000 - R:1 00744 723 USING *,1 06080000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 723 in /mbhfs/sos4k.asm on volume: - R:2 00000 724 USING XBX,2 . ARGUMENT LIST 06090000 - 000744 5830 2000 00000 725 L 3,XBXSIZE . GET THE SIZE 06100000 - 000748 5840 2004 00004 726 L 4,XBXADDR . AND THE ADDRESS 06110000 - 00074C 4180 0180 00180 727 LA 8,FSBPTR . START LOOKING DOWN THE CHAIN 06120000 - 000750 5860 0180 00180 728 L 6,FSBPTR 06130000 - 000754 1266 729 LTR 6,6 . IF ZERO POINTER, WE ARE AT 06140000 - 000756 4780 102C 00770 730 BZ XBINSERT . END OF CHAIN ALREADY 06150000 - R:6 00000 731 USING FSB,6 06160000 - 00075A 5930 6004 00004 732 XBLOOP C 3,FSBSIZE . IF THE SIZE OF OURS IS LESS, 06170000 - 00075E 47D0 102C 00770 733 BNP XBINSERT . TIME TO INSERT 06180000 - 000762 4180 6000 00000 734 LA 8,FSBNEXT . ELSE GO ON TO THE NEXT 06190000 - 000766 5860 6000 00000 735 L 6,FSBNEXT 06200000 - 00076A 1266 736 LTR 6,6 . IF NOT ALREADY THROUGH 06210000 - 00076C 4770 1016 0075A 737 BNZ XBLOOP . BRANCH BACK 06220000 - 000770 5048 0000 00000 738 XBINSERT ST 4,0(8) . NOW, LINK OURS ON 06230000 - 739 DROP 6 06240000 - R:4 00000 740 USING FSB,4 06250000 - 000774 5060 4000 00000 741 ST 6,FSBNEXT . MAKE OURS POINT TO THE NEXT 06260000 - 000778 5030 4004 00004 742 ST 3,FSBSIZE . WITH THE RIGHT SIZE 06270000 - 00077C 8200 04D8 004D8 743 LPSW RETURN . AND RETURN 06280000 - 744 DROP 2,4 06290000 -1 Sample Operating System Version 2.00 Page 22 - Active Usings: PROGRAM,R0 PROGRAM+X'744',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 746 *********************************************************************** 06310000 - 747 * * 06320000 - 748 * XC ROUTINE * 06330000 - 749 * * 06340000 - 750 * FUNCTION: TO CREATE A PROCESS * 06350000 - 751 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XCX: * 06360000 - 752 * XCX DS 0D * 06370000 - 753 * XCXNAME DS CL8 NAME OF PROCESS TO BE CREATED * 06380000 - 754 * ROUTINES USED: XEXC, XCOM, XN, XA, XI, XQUE * 06390000 - 755 * PROCEDURE: USE XA TO ALLOCATE NEW PCB; PLACE XCXNAME IN PCB; * 06400000 - 756 * INITIALIZE SEMAPHORES; STOP; BLOCK; OUT OF SMC; * 06410000 - 757 * CALL XI TO LINK PCB ONTO PCB CHAINS; RETURN. * 06420000 - 758 * ERROR CHECKS: IF NAME ALREADY USED IN THIS GROUP, XQUE ENTERED. * 06430000 - 759 * INTERRUPTS: ON * 06440000 - 760 * USER ACCESS: YES * 06450000 - 761 * * 06460000 - 762 *********************************************************************** 06470000 -0 00780 764 XC EQU * . THE XC ROUTINE: CREATE A PROCESS 06490000 - R:1 00780 765 USING *,1 06500000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 765 in /mbhfs/sos4k.asm on volume: - 000780 1872 766 LR 7,2 06510000 - R:7 00000 767 USING XCX,7 . ARGUMENT LIST 06520000 - 000782 4120 E048 00048 768 LA 2,SATEMP . READY TO MAKE CALLS OUT 06530000 - R:2 00000 769 USING XNX,2 . A XN-LIKE ARGUMENT LIST 06540000 - 000786 D207 2000 7000 00000 00000 770 MVC XNXNAME,XCXNAME . GET THE NAME 06550000 - 00078C 0AD5 771 SVC C'N' . AND CALL TO FIND THE PCB 06560000 - 00078E D503 2008 16E0 00008 00E60 772 CLC XNXADDR,=A(0) . SEE IF THERE 06570000 - 000794 4770 1044 007C4 773 BNE XCERR . IF ALREADY EXISTS, BAD 06580000 - 000798 0A5A 774 SVC C'!' . ENTER SMC SECTION 06590000 - 775 DROP 2 06600000 - R:2 00000 776 USING XAX,2 . READY TO CALL XA 06610000 - 00079A D203 2000 16E4 00000 00E64 777 MVC XAXSIZE,=A(LENPCB) . WE KNOW THE SIZE 06620000 - 0007A0 D203 2008 16E8 00008 00E68 778 MVC XAXALGN,=F'8' . AND THE ALIGNMENT 06630000 - 0007A6 0AC1 779 SVC C'A' . SO CALL 06640000 - 0007A8 5820 2004 00004 780 L 2,XAXADDR . FIND THE ADDRESS 06650000 - 781 DROP 2,15 06660000 - R:2 00000 782 USING PCB,2 . FILL IN THE PCB 06670000 - 0007AC D207 2000 7000 00000 00000 783 MVC PCBNAME,XCXNAME . GIVE IT A NAME 06680000 - 0007B2 92FF 2018 00018 784 MVI PCBSTOPT,X'FF' . IT'S STOPPED 06690000 - 0007B6 D232 2019 1B01 00019 01281 785 MVC PCBBLOKT(PCBISA-PCBBLOKT),TEMPLATE+1 INITIALIZE PCB 06700000 - 0007BC 0AC9 786 SVC C'I' . THREAD IT ON 06710000 - 0007BE 0A6B 787 SVC C',' . LEAVE SMC SECTION 06720000 - 0007C0 8200 04D8 004D8 788 LPSW RETURN . AND RETURN 06730000 - 0007C4 0A6F 789 XCERR SVC C'?' . IF ALREADY EXISTS,KERROR 06740000 - 790 DROP 2,7 06750000 -1 Sample Operating System Version 2.00 Page 23 - Active Usings: PROGRAM,R0 PROGRAM+X'780',R1 SA,R14 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 792 *********************************************************************** 06770000 - 793 * * 06780000 - 794 * XD ROUTINE * 06790000 - 795 * * 06800000 - 796 * FUNCTION: TO DESTROY A PROCESS * 06810000 - 797 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XDX: * 06820000 - 798 * XDX DS 0D * 06830000 - 799 * XDXNAME DS CL8 NAME OF PROCESS TO BE DESTROYED* 06840000 - 800 * ROUTINES USED: XEXC, XJ, XS, XN, XF, XCOM, XQUE * 06850000 - 801 * PROCEDURE: USE XN TO FIND PCB FOR PROCESS TO BE DESTROYED; * 06860000 - 802 * USE XJ TO UNLOCK PCB FROM PROCESS CHAINS; IF ANY * 06870000 - 803 * MESSAGES FOR THIS PROCESS, FREE STORAGE FOR THEM; * 06880000 - 804 * IF THERE IS ANY AUTOMATIC STORAGE, FREE IT; * 06890000 - 805 * FREE STORAGE FOR PCB; RETURN. * 06900000 - 806 * ERROR CHECKS: IF NAME DOESN'T EXIST OR PROCESS NOT STOPPED, * 06910000 - 807 * XQUE ENTERED. * 06920000 - 808 * INTERRUPTS: ON * 06930000 - 809 * USER ACCESS: YES * 06940000 - 810 * * 06950000 - 811 *********************************************************************** 06960000 -0 007C6 813 XD EQU * . XD ROUTINE: DESTROY A PROCESS 06980000 - R:1 007C6 814 USING *,1 06990000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 814 in /mbhfs/sos4k.asm on volume: - 0007C6 1872 815 LR 7,2 07000000 - R:7 00000 816 USING XDX,7 . ARG LIST 07010000 - 0007C8 4120 E048 00048 817 LA 2,SATEMP . READY TO CALL OUT 07020000 - R:2 00000 818 USING XNX,2 . WILL CALL XN 07030000 - 0007CC D207 2000 7000 00000 00000 819 MVC XNXNAME,XDXNAME . GET NAME 07040000 - 0007D2 0AD5 820 SVC C'N' . AND CALL 07050000 - 0007D4 5820 2008 00008 821 L 2,XNXADDR . GET ADDRESS 07060000 - 822 DROP 2 07070000 - 0007D8 1222 823 LTR 2,2 . IF ADDRESS IS NULL, 07080000 - 0007DA 4780 107A 00840 824 BZ XDERR . IT'S AN ERROR 07090000 - R:2 00000 825 USING PCB,2 07100000 - 0007DE 95FF 2018 00018 826 CLI PCBSTOPT,X'FF' . IF NOT STOPPED 07110000 - 0007E2 4770 107A 00840 827 BNE XDERR . IT'S AN ERROR 07120000 - 0007E6 0A5A 828 SVC C'!' . ENTER SMC SECTION 07130000 - 829 DROP 2 07140000 - R:F 00000 830 USING PCB,15 07150000 - 0007E8 0AD1 831 SVC C'J' . ELSE UNTHREAD THE ENTRY 07160000 - 0007EA 1882 832 LR 8,2 . REMEMBER THE PCB POINTER 07170000 - 0007EC 4120 E048 00048 833 LA 2,SATEMP . READY TO CALL OUT AGAIN 07180000 - R:8 00000 834 USING PCB,8 07190000 - ** ASMA300W USING overridden by a prior active USING on statement number 830 - ** ASMA435I Record 834 in /mbhfs/sos4k.asm on volume: - 835 DROP 15 07200000 - 0007F0 5890 802C 0002C 836 L 9,PCBFM . GET FIRST MESSAGE 07210000 - 0007F4 1299 837 XDLOOP LTR 9,9 . ANY MORE MESSAGES? 07220000 - 0007F6 4780 1054 0081A 838 BZ XDCHECK . IF NOT, FINISH UP 07230000 - R:9 00000 839 USING MSG,9 07240000 - 0007FA 58A0 9004 00004 840 L 10,MSGNEXT . ELSE REMEMBER NEXT 07250000 - 0007FE 58B0 9008 00008 841 L 11,MSGSIZE . GET THE SIZE 07260000 - 000802 41BB 000F 0000F 842 LA 11,15(11) . AND MAKE IT SOME NUMBER 07270000 -1 Sample Operating System Version 2.00 Page 24 - Active Usings: PROGRAM,R0 PROGRAM+X'7C6',R1 XDX,R7 PCB,R8 MSG,R9 SA,R14 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000806 54B0 16A6 00E6C 843 N 11,=F'-8' . OF DOUBLEWORDS 07280000 - R:2 00000 844 USING XFX,2 07290000 - 00080A 5090 2004 00004 845 ST 9,XFXADDR . FREE THE LOCATION 07300000 - 00080E 50B0 2000 00000 846 ST 11,XFXSIZE . THE NUMBER OF WORDS 07310000 - 000812 0AC6 847 SVC C'F' . DO IT 07320000 - 000814 189A 848 LR 9,10 . ON TO THE NEXT 07330000 - 000816 47F0 102E 007F4 849 B XDLOOP . GET THE NEXT MESSAGE 07340000 - 00081A D503 8048 169A 00048 00E60 850 XDCHECK CLC PCBAADDR(4),=A(0) . HAS AUTOMATIC STORAGE BEEN 07350000 - 000820 4780 1068 0082E 851 BE XDTHEN . ALLOCATED? IF NOT, GO FINISH UP 07360000 - 000824 4120 8044 00044 852 LA 2,PCBASIZE . SET UP THE ARGUMENT LIST 07370000 - 000828 0AC6 853 SVC C'F' . FREE IT 07380000 - 00082A 4120 E048 00048 854 LA 2,SATEMP . RESET REGISTER 2 07390000 - 00082E 5080 2004 00004 855 XDTHEN ST 8,XFXADDR . READY TO FREE THE PCB 07400000 - 000832 D203 2000 169E 00000 00E64 856 MVC XFXSIZE,=A(LENPCB) . THE SIZE 07410000 - 000838 0AC6 857 SVC C'F' . FREE IT 07420000 - 00083A 0A6B 858 SVC C',' . LEAVE SMC 07430000 - 00083C 8200 04D8 004D8 859 LPSW RETURN . AND RETURN 07440000 - 000840 0A6F 860 XDERR SVC C'?' . IF PROCESS DOES NOT EXIST 07450000 - 861 DROP 2,7,8,9 07460000 - R:F 00000 862 USING PCB,15 07470000 -- - 864 *********************************************************************** 07490000 - 865 * * 07500000 - 866 * XH ROUTINE * 07510000 - 867 * * 07520000 - 868 * FUNCTION: TO HALT A JOB * 07530000 - 869 * DATABASES: NONE * 07540000 - 870 * ROUTINES USED: XS, XR * 07550000 - 871 * PROCEDURE: SEND MESSAGE TO SUPERVISOR PROCESS FOR THIS JOB * 07560000 - 872 * INDICATING NORMAL TERMINATION; TRIES TO READ * 07570000 - 873 * MESSAGES FOREVER LOOPING; BLOCKS ITSELF, THEREBY * 07580000 - 874 * NEVER RETURNING. * 07590000 - 875 * ERROR CHECKS: NONE * 07600000 - 876 * INTERRUPTS: ON * 07610000 - 877 * USER ACCESS: YES * 07620000 - 878 * COMMENTS: USER NORMALLY USES THIS ROUTINE TO END A JOB. * 07630000 - 879 * * 07640000 - 880 *********************************************************************** 07650000 -0 00842 882 XH EQU * . THE XH ROUTINE: HALT A JOB 07670000 - R:1 00842 883 USING *,1 07680000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 883 in /mbhfs/sos4k.asm on volume: - 000842 4120 1012 00854 884 LA 2,XHMSG1 . SEND A MESSAGE TO *IBSUP 07690000 - 000846 0AE2 885 SVC C'S' . SEND IT 07700000 - 000848 4120 102A 0086C 886 XHLOOP LA 2,XHMSG2 . READY TO READ A REPLY 07710000 - 00084C 0AD9 887 SVC C'R' . WHICH NEVER COMES 07720000 - 00084E 47F0 1006 00848 888 B XHLOOP . BUT IF IT DOES WERE READY 07730000 - 000854 889 DS 0F 07740000 - 000854 5CC9C2E2E4D74040 890 XHMSG1 DC CL8'*IBSUP' . SAY TO *IBSUP 07750000 - 00085C 0000000C 891 DC F'12' . TWELVE CHARACTERS 07760000 - 000860 D7D9D6C7D9C1D440 892 DC C'PROGRAM HALT' . SAYING WERE OK 07770000 - 00086C 893 XHMSG2 DS CL8 . WHO SENDS US A MESSAGE 07780000 -1 Sample Operating System Version 2.00 Page 25 - Active Usings: PROGRAM,R0 PROGRAM+X'842',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000874 00000001 894 DC F'1' . ONE CHARACTER 07790000 - 000878 895 DS CL1,0H . WHICH GOES HERE 07800000 -1 Sample Operating System Version 2.00 Page 26 - Active Usings: PROGRAM,R0 PROGRAM+X'842',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 897 *********************************************************************** 07820000 - 898 * * 07830000 - 899 * XI ROUTINE * 07840000 - 900 * * 07850000 - 901 * FUNCTION: TO CHAIN A PCB ONTO PROCESS CHAINS * 07860000 - 902 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS OF A PCB * 07870000 - 903 * ROUTINES USED: NONE * 07880000 - 904 * PROCEDURE: POINTER USED TO CHAIN PCB INTO ALL PCB CHAIN AND * 07890000 - 905 * THIS GROUP CHAIN RIGHT AFTER RUNNING PCB; RETURN. * 07900000 - 906 * ERROR CHECKS: NONE * 07910000 - 907 * INTERRUPTS: OFF * 07920000 - 908 * USER ACCESS: NO * 07930000 - 909 * * 07940000 - 910 *********************************************************************** 07950000 -0 0087A 912 XI EQU * . THE XI ROUTINE: THREAD IN A PCB 07970000 - R:1 0087A 913 USING *,1 07980000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 913 in /mbhfs/sos4k.asm on volume: - 00087A 58A0 F010 00010 914 L 10,PCBNPALL . GET THE NEXT 'ALL' PCB 07990000 - 00087E 5020 F010 00010 915 ST 2,PCBNPALL . STORE THIS PCB RIGNT AFTER MINE 08000000 - 916 DROP 15 08010000 - R:A 00000 917 USING PCB,10 08020000 - 000882 5020 A014 00014 918 ST 2,PCBLPALL . THE NEXT ONE DOWN POINTS BACK 08030000 - 919 DROP 10 08040000 - R:2 00000 920 USING PCB,2 08050000 - 000886 50F0 2014 00014 921 ST 15,PCBLPALL . THIS PCB POINTS BACK 08060000 - 00088A 50A0 2010 00010 922 ST 10,PCBNPALL . AND FORWARD 08070000 - 923 DROP 2 08080000 - R:F 00000 924 USING PCB,15 08090000 - 00088E 58A0 F008 00008 925 L 10,PCBNPTG . GET NEXT "THIS GROUP" PCB 08100000 - 000892 5020 F008 00008 926 ST 2,PCBNPTG . RUNNING PCB POINTS TO NEW MEMBER 08110000 - 927 DROP 15 . OF PROCESS GROUP 08120000 - R:A 00000 928 USING PCB,10 08130000 - 000896 5020 A00C 0000C 929 ST 2,PCBLPTG . NEXT PCB DOWN POINTS BACK 08140000 - 930 DROP 10 08150000 - R:2 00000 931 USING PCB,2 08160000 - 00089A 50F0 200C 0000C 932 ST 15,PCBLPTG . AND WE POINT BACKWARD 08170000 - 00089E 50A0 2008 00008 933 ST 10,PCBNPTG . AND FORWARD 08180000 - 934 DROP 2 08190000 - 0008A2 8200 04D8 004D8 935 LPSW RETURN . RETURN 08200000 - R:F 00000 936 USING PCB,15 08210000 -1 Sample Operating System Version 2.00 Page 27 - Active Usings: PROGRAM,R0 PROGRAM+X'87A',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 938 *********************************************************************** 08230000 - 939 * * 08240000 - 940 * XJ ROUTINE * 08250000 - 941 * * 08260000 - 942 * FUNCTION: TO UNCHAIN A PCB FROM PROCESS CHAINS * 08270000 - 943 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS OF A PCB * 08280000 - 944 * ROUTINES USED: NONE * 08290000 - 945 * PROCEDURE: POINTERS TO PCB IN ALL PCB CHAIN AND THIS GROUP * 08300000 - 946 * CHAIN MODIFIED WITHOUT FREEING STORAGE; RETURN. * 08310000 - 947 * ERROR CHECKS: NONE * 08320000 - 948 * INTERRUPTS: OFF * 08330000 - 949 * USER ACCESS: NO * 08340000 - 950 * * 08350000 - 951 *********************************************************************** 08360000 -0 008A6 953 XJ EQU * . THE XJ ROUTINE: UNTHREAD A PCB 08380000 - R:1 008A6 954 USING *,1 08390000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 954 in /mbhfs/sos4k.asm on volume: - 955 DROP 15 08400000 - R:2 00000 956 USING PCB,2 08410000 - 0008A6 58B0 2014 00014 957 L 11,PCBLPALL . GET PRECEDING PCB 08420000 - 0008AA 58A0 2010 00010 958 L 10,PCBNPALL . AND FOLLOWING ONE IN "ALL" 08430000 - 959 DROP 2 . CHAIN 08440000 - R:B 00000 960 USING PCB,11 08450000 - 0008AE 50A0 B010 00010 961 ST 10,PCBNPALL . LAST POINTS TO NEXT 08460000 - 962 DROP 11 08470000 - R:A 00000 963 USING PCB,10 08480000 - 0008B2 50B0 A014 00014 964 ST 11,PCBLPALL . NEXT POINTS TO LAST 08490000 - 965 DROP 10 08500000 - R:2 00000 966 USING PCB,2 08510000 - 0008B6 58B0 200C 0000C 967 L 11,PCBLPTG . REDO FOR THIS GROUP PCB CHAIN 08520000 - 0008BA 58A0 2008 00008 968 L 10,PCBNPTG 08530000 - 969 DROP 2 08540000 - R:B 00000 970 USING PCB,11 08550000 - 0008BE 50A0 B008 00008 971 ST 10,PCBNPTG . LAST POINTS TO NEXT 08560000 - 972 DROP 11 08570000 - R:A 00000 973 USING PCB,10 08580000 - 0008C2 50B0 A00C 0000C 974 ST 11,PCBLPTG . NEXT POINTS TO LAST 08590000 - 975 DROP 10 08600000 - 0008C6 8200 04D8 004D8 976 LPSW RETURN . AND RETURN 08610000 - R:F 00000 977 USING PCB,15 08620000 -1 Sample Operating System Version 2.00 Page 28 - Active Usings: PROGRAM,R0 PROGRAM+X'8A6',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 979 *********************************************************************** 08640000 - 980 * * 08650000 - 981 * XN ROUTINE * 08660000 - 982 * * 08670000 - 983 * FUNCTION: TO FIND THE PCB FOR A PROCESS GIVEN ITS NAME ONLY * 08680000 - 984 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XNX * 08690000 - 985 * XNX DS 0D * 08700000 - 986 * XNXNAME DS CL8 NAME OF PROCESS * 08710000 - 987 * XNXADDR DS A ADDRESS OF PCB * 08720000 - 988 * ROUTINES USED: NONE * 08730000 - 989 * PROCEDURE: SEARCH THIS GROUP PCB CHAIN FOR NAME; IF FOUND, * 08740000 - 990 * STORE POINTER IN XNXADDR. IF NOT FOUND, STORE * 08750000 - 991 * ZERO IN XNXADDR; RETURN. * 08760000 - 992 * ERROR CHECKS: NONE * 08770000 - 993 * INTERRUPTS: OFF * 08780000 - 994 * USER ACCESS: YES * 08790000 - 995 * * 08800000 - 996 *********************************************************************** 08810000 -0 008CA 998 XN EQU * . THE XN ROUTINE: FIND A NAMED PCB 08830000 - R:1 008CA 999 USING *,1 08840000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 999 in /mbhfs/sos4k.asm on volume: - R:2 00000 1000 USING XNX,2 . THE ARG LIST 08850000 - 0008CA 18AF 1001 LR 10,15 . FIRST PCB TO LOOK AT IS OURS 08860000 - 1002 DROP 15 08870000 - R:A 00000 1003 USING PCB,10 08880000 - 0008CC 58A0 A008 00008 1004 XNXLOOP L 10,PCBNPTG . LOOK AT NEXT PCB 08890000 - 0008D0 D507 A000 2000 00000 00000 1005 CLC PCBNAME,XNXNAME . HAS IT THE RIGHT NAME? 08900000 - 0008D6 4780 101A 008E4 1006 BE XNXFOUND . IF YES, OH JOY. 08910000 - 0008DA 19AF 1007 CR 10,15 . IF NOT, ARE WE THROUGH? 08920000 - 0008DC 4770 1002 008CC 1008 BNE XNXLOOP . IF NOT, TRY THE NEXT PCB 08930000 - 0008E0 41A0 0000 00000 1009 LA 10,0 . ELSE, IT'S NOT HERE 08940000 - 0008E4 50A0 2008 00008 1010 XNXFOUND ST 10,XNXADDR . FOUND IT. SAY WHERE. 08950000 - 0008E8 8200 04D8 004D8 1011 LPSW RETURN . AND RETURN 08960000 - 1012 DROP 2,10 08970000 - R:F 00000 1013 USING PCB,15 08980000 -1 Sample Operating System Version 2.00 Page 29 - Active Usings: PROGRAM,R0 PROGRAM+X'8CA',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 1015 *********************************************************************** 09000000 - 1016 * * 09010000 - 1017 * XR ROUTINE * 09020000 - 1018 * * 09030000 - 1019 * FUNCTION: TO READ A MESSAGE * 09040000 - 1020 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XRX * 09050000 - 1021 * XRX DS 0D * 09060000 - 1022 * XRXNAME DS CL8 NAME OF SENDER PROCESS * 09070000 - 1023 * XRXSIZE DS F SIZE OF MESSAGE TEXT * 09080000 - 1024 * XRXTEXT DS C TEXT OF MESSAGE * 09090000 - 1025 * ROUTINES USED: XP, XEXC, XN, XCOM, XF * 09100000 - 1026 * PROCEDURE: USE XP ON MESSAGE SEMAPHORE RECEIVER TO SEE IF ANY * 09110000 - 1027 * MESSAGES WAITING; IF NONE, PROCESS BLOCKED UNTIL * 09120000 - 1028 * THERE IS ONE; LOCK MESSAGE CHAIN; REMOVE A MESSAGE * 09130000 - 1029 * FROM CHAIN AND UNLOCK IT; MOVE TEXT OF MESSAGE, * 09140000 - 1030 * PADDING WITH BLANKS OR TRUNCATING AS NECESSARY; * 09150000 - 1031 * INDICATE CORRECT MESSAGE LENGTH AND NAME OF * 09160000 - 1032 * MESSAGE SENDER; FREE STORAGE USED TO HOLD MESSAGE, * 09170000 - 1033 * AND RETURN. * 09180000 - 1034 * ERROR CHECKS: NONE * 09190000 - 1035 * INTERRUPTS: ON * 09200000 - 1036 * USER ACCESS: YES * 09210000 - 1037 * * 09220000 - 1038 *********************************************************************** 09230000 -0 008EC 1040 XR EQU * . THE XR ROUTINE: READ A MESSAGE 09250000 - R:1 008EC 1041 USING *,1 09260000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 1041 in /mbhfs/sos4k.asm on volume: - 0008EC 1872 1042 LR 7,2 09270000 - R:7 00000 1043 USING XRX,7 . ARG LIST 09280000 - 0008EE 4120 F024 00024 1044 LA 2,PCBMSR . SEE IF MESSAGES WAITING 09290000 - 0008F2 0AD7 1045 SVC C'P' 09300000 - 0008F4 0A5A 1046 SVC C'!' . ENTER SMC SECTION 09310000 - 0008F6 4120 F01C 0001C 1047 LA 2,PCBMSC . THEN LOCK THE MESSAGE CHAIN 09320000 - 0008FA 0AD7 1048 SVC C'P' 09330000 - 0008FC 5850 F02C 0002C 1049 L 5,PCBFM . GET THE FIRST MESSAGE 09340000 - R:5 00000 1050 USING MSG,5 09350000 - 000900 D203 F02C 5004 0002C 00004 1051 MVC PCBFM,MSGNEXT . REMEMBER THE NEXT 09360000 - 000906 0AE5 1052 SVC C'V' . UNLOCK THE MESSAGE CHAIN 09370000 - 000908 5860 7008 00008 1053 L 6,XRXSIZE . GET THE BUFFER CAPACITY 09380000 - 00090C 5B60 1584 00E70 1054 S 6,=F'2' . MINUS 1, MINUS 1 09390000 - 000910 9240 700C 0000C 1055 MVI XRXTEXT,C' ' . MOVE IN A BLANK 09400000 - 000914 4740 1030 0091C 1056 BM XRNOB 09410000 - 000918 4460 1080 0096C 1057 EX 6,XRFILL . THEN FILL THE REST WITH BLANKS 09420000 - 00091C 4166 0001 00001 1058 XRNOB LA 6,1(6) . THEN GET PROPER BUFFER COUNT 09430000 - 000920 5960 5008 00008 1059 C 6,MSGSIZE . COMPARE WITH MESSAGE LENGTH 09440000 - 000924 4740 1042 0092E 1060 BL XRTHEN . IF LESS, HANDLE ACCORDINGLY 09450000 - 000928 5860 5008 00008 1061 L 6,MSGSIZE . ELSE COUNT FOR MVC IS MESSAGE 09460000 - 00092C 0660 1062 BCTR 6,0 . SIZE MINUS ONE 09470000 - 00092E 1266 1063 XRTHEN LTR 6,6 . ANY CHARACTERS TO MOVE? 09480000 - 000930 4740 104C 00938 1064 BM XRAFT . IF NOT, DON'T 09490000 - 000934 4460 1086 00972 1065 EX 6,XRMOVE . ELSE MOVE THEM 09500000 - 000938 4166 0001 00001 1066 XRAFT LA 6,1(6) . THEN GET LENGTH 09510000 - 00093C 5060 7008 00008 1067 ST 6,XRXSIZE . STORE IT 09520000 -1 Sample Operating System Version 2.00 Page 30 - Active Usings: PROGRAM,R0 PROGRAM+X'8EC',R1 MSG,R5 XRX,R7 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000940 58A0 5000 00000 1068 L 10,MSGSENDR . GET SENDER'S PCB 09530000 - 1069 DROP 15 09540000 - R:A 00000 1070 USING PCB,10 09550000 - 000944 D207 7000 A000 00000 00000 1071 MVC XRXNAME,PCBNAME . AND STORE SENDER'S NAME 09560000 - 00094A 5860 5008 00008 1072 L 6,MSGSIZE . GET SIZE OF MESSAGE TEXT 09570000 - 00094E 4166 000C 0000C 1073 LA 6,LENMSG(6) . ADD SIZE OF MESSAGE BLOCK 09580000 - 000952 4166 0007 00007 1074 LA 6,7(6) . AND TRUNCATE 09590000 - 000956 5460 1580 00E6C 1075 N 6,=F'-8' . UP 09600000 - 00095A 1825 1076 LR 2,5 . SET UP POINTER TO XFX 09610000 - R:2 00000 1077 USING XFX,2 09620000 - 00095C 5050 2004 00004 1078 ST 5,XFXADDR . STORE ADDRESS 09630000 - 000960 5060 2000 00000 1079 ST 6,XFXSIZE . STORE SIZE 09640000 - 000964 0AC6 1080 SVC C'F' . AND FREE THE MESSAGE BLOCK 09650000 - 000966 0A6B 1081 SVC C',' . LEAVE SMC 09660000 - 000968 8200 04D8 004D8 1082 LPSW RETURN . AND RETURN 09670000 - 00096C D200 700D 700C 0000D 0000C 1083 XRFILL MVC XRXTEXT+1,XRXTEXT . FILL WITH BLANKS 09680000 - 000972 D200 700C 500C 0000C 0000C 1084 XRMOVE MVC XRXTEXT,MSGTEXT . MOVE TEXT 09690000 - 1085 DROP 2,5,7,10 09700000 - R:F 00000 1086 USING PCB,15 09710000 -- - 1088 *********************************************************************** 09730000 - 1089 * * 09740000 - 1090 * XS ROUTINE * 09750000 - 1091 * * 09760000 - 1092 * FUNCTION: TO SEND A MESSAGE * 09770000 - 1093 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XSX * 09780000 - 1094 * XSX DS 0D * 09790000 - 1095 * XSXNAME DS CL8 NAME OF TARGET PROCESS * 09800000 - 1096 * XSXSIZE DS F SIZE OF TEXT * 09810000 - 1097 * XSXTEXT DS C TEXT OF MESSAGE * 09820000 - 1098 * ROUTINES USED: XP, XV, XEXC, XCOM, XA, XQUE * 09830000 - 1099 * PROCEDURE: USE XN TO GET POINTER TO PCB OF TARGET PROCESS; * 09840000 - 1100 * USE LENGTH OF MESSAGE AND XA TO ALLOCATE BLOCK FOR * 09850000 - 1101 * MESSAGE; LOCK MESSAGE CHAIN OF TARGET PROCESS; * 09860000 - 1102 * PUT MESSAGE BLOCK AT END OF CHAIN; STORE SENDER * 09870000 - 1103 * NAME, SIZE, AND TEXT OF MESSAGE; UNLOCK CHAIN; * 09880000 - 1104 * INDICATE MESSAGE CHAIN IS ONE LONGER; RETURN. * 09890000 - 1105 * ERROR CHECKS: IF NO PROCESS BY GIVEN NAME, ENTER XQUE. * 09900000 - 1106 * INTERRUPTS: ON * 09910000 - 1107 * USER ACCESS: YES * 09920000 - 1108 * * 09930000 - 1109 *********************************************************************** 09940000 -0 00978 1111 XS EQU * . THE XS ROUTINE: SEND MESSAGES 09960000 - R:1 00978 1112 USING *,1 09970000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 1112 in /mbhfs/sos4k.asm on volume: - 000978 1872 1113 LR 7,2 09980000 - R:7 00000 1114 USING XSX,7 . ARG LIST 09990000 - 00097A 4120 E048 00048 1115 LA 2,SATEMP . READY TO CALL OUT 10000000 - R:2 00000 1116 USING XNX,2 . ABOUT TO CALL XN 10010000 - 00097E D207 2000 7000 00000 00000 1117 MVC XNXNAME,XSXNAME . GIVE NAME OF TARGET PROCESS 10020000 - 000984 0AD5 1118 SVC C'N' . SEE WHERE IT IS 10030000 -1 Sample Operating System Version 2.00 Page 31 - Active Usings: PROGRAM,R0 PROGRAM+X'978',R1 XNX,R2 XSX,R7 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000986 5840 2008 00008 1119 L 4,XNXADDR . GET THE POINTER 10040000 - 00098A 1244 1120 LTR 4,4 . IS THERE INDEED ONE? 10050000 - 00098C 4780 108A 00A02 1121 BZ XSERR . IF NOT, ERROR 10060000 - R:4 00000 1122 USING PCB,4 10070000 - ** ASMA300W USING overridden by a prior active USING on statement number 1086 - ** ASMA435I Record 1122 in /mbhfs/sos4k.asm on volume: - 1123 DROP 2,15 10080000 - R:2 00000 1124 USING XAX,2 . READY TO CALL XA 10090000 - 000990 0A5A 1125 SVC C'!' . ENTERING SMC SECTION 10100000 - 000992 5830 7008 00008 1126 L 3,XSXSIZE . GET THE STATED SIZE 10110000 - 000996 4133 000C 0000C 1127 LA 3,LENMSG(3) . PLUS THE AMOUNT OF OVERHEAD 10120000 - 00099A 4133 0007 00007 1128 LA 3,7(3) . AND TRUNCATE 10130000 - 00099E 5430 14F4 00E6C 1129 N 3,=F'-8' . UP 10140000 - 0009A2 5030 2000 00000 1130 ST 3,XAXSIZE . THAT'S THE SIZE OF THE REGION TO 10150000 - 0009A6 D203 2008 14F0 00008 00E68 1131 MVC XAXALGN,=F'8' . ALLOCATE, ON A DOUBLEWORD BOUND 10160000 - 0009AC 0AC1 1132 SVC C'A' . SO ALLOCATE ALREADY 10170000 - 0009AE 5850 2004 00004 1133 L 5,XAXADDR . GET THE ADDRESS 10180000 - 1134 DROP 2 10190000 - 0009B2 4120 401C 0001C 1135 LA 2,PCBMSC . GET THE MESSAGE CHAIN SEMAPHORE 10200000 - 0009B6 0AD7 1136 SVC C'P' . AND LOCK IT 10210000 - 0009B8 4180 402C 0002C 1137 LA 8,PCBFM . THEN START DOWN THE MESSAGE 10220000 - 0009BC 5890 402C 0002C 1138 L 9,PCBFM . CHAIN 10230000 - R:9 00000 1139 USING MSG,9 10240000 - 0009C0 1299 1140 XSLOOP LTR 9,9 . ARE WE THROUGH? 10250000 - 0009C2 4780 105A 009D2 1141 BZ XSADD . IF SO ADD IT ON 10260000 - 0009C6 4180 9004 00004 1142 LA 8,MSGNEXT . IF NOT, ON TO THE NEXT 10270000 - 0009CA 5890 9004 00004 1143 L 9,MSGNEXT 10280000 - 0009CE 47F0 1048 009C0 1144 B XSLOOP . AND TRY AGAIN 10290000 - 0009D2 5058 0000 00000 1145 XSADD ST 5,0(8) . CHAIN OURS ON THE END 10300000 - 1146 DROP 9 10310000 - R:5 00000 1147 USING MSG,5 10320000 - 0009D6 D203 5004 14E8 00004 00E60 1148 MVC MSGNEXT,=A(0) . SET NEXT POINTER NULL 10330000 - 0009DC 50F0 5000 00000 1149 ST 15,MSGSENDR . STORE THE SENDER 10340000 - 0009E0 5860 7008 00008 1150 L 6,XSXSIZE . GET THE TEXT LENGTH 10350000 - 0009E4 5060 5008 00008 1151 ST 6,MSGSIZE . AND STORE IT 10360000 - 0009E8 0660 1152 BCTR 6,0 . ONE LESS 10370000 - 0009EA 1266 1153 LTR 6,6 . TEST LENGTH 10380000 - 0009EC 4740 107C 009F4 1154 BM XSAFT . IF ZERO, NOTHING TO MOVE 10390000 - 0009F0 4460 108C 00A04 1155 EX 6,XSMOVE . ELSE, MOVE IT 10400000 - 0009F4 0AE5 1156 XSAFT SVC C'V' . UNLOCK THE MESSAGE CHAIN 10410000 - 0009F6 4120 4024 00024 1157 LA 2,PCBMSR . THEN SAY THERE'S 10420000 - 0009FA 0AE5 1158 SVC C'V' . ONE MORE MESSAGE 10430000 - 0009FC 0A6B 1159 SVC C',' . LEAVE SMC SECTION 10440000 - 0009FE 8200 04D8 004D8 1160 LPSW RETURN . AND RETURN 10450000 - 000A02 0A6F 1161 XSERR SVC C'?' 10460000 - 000A04 D200 500C 700C 0000C 0000C 1162 XSMOVE MVC MSGTEXT,XSXTEXT . THE MOVE FOR THE TEXT 10470000 - 1163 DROP 4,5,7 10480000 - R:F 00000 1164 USING PCB,15 10490000 -1 Sample Operating System Version 2.00 Page 32 - Active Usings: PROGRAM,R0 PROGRAM+X'978',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 1166 *********************************************************************** 10510000 - 1167 * * 10520000 - 1168 * XY ROUTINE * 10530000 - 1169 * * 10540000 - 1170 * FUNCTION: TO START A PROCESS * 10550000 - 1171 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XYX * 10560000 - 1172 * XYX DS 0D * 10570000 - 1173 * XYXNAME DS CL8 NAME OF PROCESS TO BE STARTED * 10580000 - 1174 * XYXADDR DS A STARTING ADDRESS OF PROCESS * 10590000 - 1175 * ROUTINES USED: XN, XEXC, XCOM, XQUE * 10600000 - 1176 * PROCEDURE: USE XN TO GET POINTER TO THE PCB OF PROCESS TO BE * 10610000 - 1177 * STARTED; STORE IN PCB INTERRUPT SAVE AREA REGISTERS* 10620000 - 1178 * AND PSW WITH STARTING ADDRESS AS SENT FROM STARTING* 10630000 - 1179 * PROCESS; STOPPED BIT TURNED OFF; RETURN. * 10640000 - 1180 * ERROR CHECKS: IF NO PROCESS BY GIVEN NAME, XQUE ENTERED. * 10650000 - 1181 * INTERRUPTS: OFF * 10660000 - 1182 * USER ACCESS: YES * 10670000 - 1183 * * 10680000 - 1184 *********************************************************************** 10690000 -0 00A0A 1186 XY EQU * . THE XY ROUTINE: START A PROCESS 10710000 - R:1 00A0A 1187 USING *,1 10720000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 1187 in /mbhfs/sos4k.asm on volume: - 000A0A 1872 1188 LR 7,2 10730000 - R:7 00000 1189 USING XYX,7 . THE ARG LIST 10740000 - 000A0C 4120 E048 00048 1190 LA 2,SATEMP . READY TO CALL OUT 10750000 - R:2 00000 1191 USING XNX,2 10760000 - 000A10 D207 2000 7000 00000 00000 1192 MVC XNXNAME,XYXNAME . GIVE XN A NAME 10770000 - 000A16 0AD5 1193 SVC C'N' . CALL XN 10780000 - 000A18 58A0 2008 00008 1194 L 10,XNXADDR . WHERE IS THE PCB? 10790000 - 000A1C 12AA 1195 LTR 10,10 . OR IS THERE ONE? 10800000 - 000A1E 4780 1036 00A40 1196 BZ XYERR . IF NOT, OH HISS BOO 10810000 - 1197 DROP 2,14,15 10820000 - R:A 00000 1198 USING PCB,10 10830000 - 000A22 41D0 A04C 0004C 1199 LA 13,PCBISA . GET INTO THAT PCB'S ISA 10840000 - R:D 00000 1200 USING SA,13 10850000 - 000A26 D207 D000 E000 00000 00000 1201 MVC SAPSW,(SAPSW-SA)(14) . GIVE IT THE CALLER'S PSW 10860000 - 000A2C D202 D005 7009 00005 00009 1202 MVC SAPSW+5(3),XYXADDR+1 . BUT AT THE REQUESTED ADDRESS 10870000 - 000A32 D23F D008 E008 00008 00008 1203 MVC SAREGS,(SAREGS-SA)(14) .GIVE IT HIS REGISTERS 10880000 - 000A38 9200 A018 00018 1204 MVI PCBSTOPT,X'00' . IT'S NO LONGER STOPPED 10890000 - 000A3C 8200 04D8 004D8 1205 LPSW RETURN . AND RETURN 10900000 - 000A40 0A6F 1206 XYERR SVC C'?' . WE DONE BAD 10910000 - 1207 DROP 7,10,13 10920000 - R:E 00000 1208 USING SA,14 10930000 - R:F 00000 1209 USING PCB,15 10940000 -1 Sample Operating System Version 2.00 Page 33 - Active Usings: PROGRAM,R0 PROGRAM+X'A0A',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 1211 *********************************************************************** 10960000 - 1212 * * 10970000 - 1213 * XZ ROUTINE * 10980000 - 1214 * * 10990000 - 1215 * FUNCTION: TO STOP A PROCESS * 11000000 - 1216 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XZX * 11010000 - 1217 * XZX DS 0D * 11020000 - 1218 * XZXNAME DS CL8 NAME OF PROCESS TO BE STOPPED * 11030000 - 1219 * ROUTINES USED: XN, XEXC, XCOM, XQUE, XP * 11040000 - 1220 * PROCEDURE: CHECK THAT USER PROCESS CAN'T STOP SYSTEM * 11050000 - 1221 * PROCESS; USE XN TO GET PCB POINTER; IF IN SMC, SET * 11060000 - 1222 * STOP WAITING BIT AND BLOCK SELF UNTIL STOP * 11070000 - 1223 * PERFORMED; ELSE SET STOPPED BIT, AND RETURN. * 11080000 - 1224 * ERROR CHECKS: IF NO PROCESS BY GIVEN NAME OR USER TRIES TO * 11090000 - 1225 * STOP A SYSTEM PROCESS, XQUE ENTERED. * 11100000 - 1226 * INTERRUPTS: ON * 11110000 - 1227 * USER ACCESS: YES * 11120000 - 1228 * * 11130000 - 1229 *********************************************************************** 11140000 -0 00A42 1231 XZ EQU * . THE XZ ROUTINE: STOP A PROCESS 11160000 - R:1 00A42 1232 USING *,1 11170000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 1232 in /mbhfs/sos4k.asm on volume: - 000A42 1872 1233 LR 7,2 11180000 - R:7 00000 1234 USING XZX,7 . ARG LIST 11190000 - 000A44 955C F000 00000 1235 CLI PCBNAME,C'*' . IS STOPPER A * PROCESS 11200000 - 000A48 4780 1012 00A54 1236 BE XZFINE . THAT'S OK 11210000 - 000A4C 955C 7000 00000 1237 CLI XZXNAME,C'*' . IF NOT, IS STOPPEE A * ? 11220000 - 000A50 4780 104A 00A8C 1238 BE XZERR . CAN'T DO THAT 11230000 - 000A54 4120 E048 00048 1239 XZFINE LA 2,SATEMP . READY TO CALL OUT 11240000 - R:2 00000 1240 USING XNX,2 . WILL CALL XN 11250000 - 000A58 D207 2000 7000 00000 00000 1241 MVC XNXNAME,XZXNAME . GIVE IT THE NAME 11260000 - 000A5E 0AD5 1242 SVC C'N' . AND DO THE CALL 11270000 - 000A60 58A0 2008 00008 1243 L 10,XNXADDR . GET THE PCB'S ADDRESS 11280000 - 000A64 12AA 1244 LTR 10,10 . SEE IF NULL 11290000 - 000A66 4780 104A 00A8C 1245 BZ XZERR . IF SO, ERROR 11300000 - 000A6A 0A5A 1246 SVC C'!' . ENTER SMC 11310000 - 1247 DROP 2,15 11320000 - R:A 00000 1248 USING PCB,10 11330000 - 000A6C 9500 A01A 0001A 1249 XZSTOP CLI PCBINSMC,X'00' . SEE IF IN SMC 11340000 - 000A70 4770 103C 00A7E 1250 BNE XZINSMC . IF SO, BAD 11350000 - 000A74 92FF A018 00018 1251 MVI PCBSTOPT,X'FF' . ELSE JUST STOP IT 11360000 - 000A78 0A6B 1252 SVC C',' . LEAVE SMC 11370000 - 000A7A 8200 04D8 004D8 1253 LPSW RETURN . AND RETURN 11380000 - 000A7E 92FF A01B 0001B 1254 XZINSMC MVI PCBSW,X'FF' . IF IN SMC, SAY STOP WAITING 11390000 - 000A82 4120 A034 00034 1255 LA 2,PCBSRS . AND STOP OURSELVES AGAINST 11400000 - 000A86 0AD7 1256 SVC C'P' . A SEMAPHORE 11410000 - 000A88 47F0 102A 00A6C 1257 B XZSTOP . THEN WE CAN REALLY STOP IT 11420000 - 000A8C 0A6F 1258 XZERR SVC C'?' . AN ERROR 11430000 - 1259 DROP 10,7 11440000 - R:F 00000 1260 USING PCB,15 11450000 -1 Sample Operating System Version 2.00 Page 34 - Active Usings: PROGRAM,R0 PROGRAM+X'A42',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 1262 *********************************************************************** 11470000 - 1263 * * 11480000 - 1264 * XQUE ROUTINE * 11490000 - 1265 * * 11500000 - 1266 * FUNCTION: TO SIGNAL ERROR CONDITION * 11510000 - 1267 * DATABASES: NONE * 11520000 - 1268 * ROUTINES USED: XR, XS * 11530000 - 1269 * PROCEDURE: SEND MESSAGE TO SUPERVISOR PROCESS FOR THIS JOB * 11540000 - 1270 * INDICATING ABNORMAL TERMINATION; TRY TO READ * 11550000 - 1271 * MESSAGES, FOREVER LOOPING; BLOCK ITSELF, THEREBY * 11560000 - 1272 * NEVER RETURNING. * 11570000 - 1273 * ERROR CHECKS: NONE * 11580000 - 1274 * INTERRUPTS: OFF * 11590000 - 1275 * USER ACCESS: YES * 11600000 - 1276 * * 11610000 - 1277 *********************************************************************** 11620000 -0 00A8E 1279 XQUE EQU * . THE XQUE ROUTINE: ERROR! 11640000 - R:1 00A8E 1280 USING *,1 11650000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 1280 in /mbhfs/sos4k.asm on volume: - 000A8E 4120 1012 00AA0 1281 LA 2,XQUEM1 . SEND AN ERROR MESSAGE TO *IBSUP 11660000 - 000A92 0AE2 1282 SVC C'S' 11670000 - 000A94 4120 102A 00AB8 1283 XQUELOOP LA 2,XQUEM2 . WAIT FOR REPLY 11680000 - 000A98 0AD9 1284 SVC C'R' 11690000 - 000A9A 47F0 1006 00A94 1285 B XQUELOOP . BUT IGNORE IT 11700000 - 000AA0 1286 DS 0F 11710000 - 000AA0 5CC9C2E2E4D74040 1287 XQUEM1 DC CL8'*IBSUP' 11720000 - 000AA8 0000000C 1288 DC F'12' 11730000 - 000AAC D7D9D6C7D9C1D440 1289 DC CL12'PROGRAM FLOP' 11740000 - 000AB8 1290 XQUEM2 DS CL8 11750000 - 000AC0 00000001 1291 DC F'1' 11760000 - 000AC4 1292 DS CL1,0H 11770000 - 1293 DROP 14,15 11780000 -1 Sample Operating System Version 2.00 Page 35 - Active Usings: PROGRAM,R0 PROGRAM+X'A8E',R1 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 1295 *********************************************************************** 11800000 - 1296 * * 11810000 - 1297 * INPUT/OUTPUT ROUTINES * 11820000 - 1298 * * 11830000 - 1299 *********************************************************************** 11840000 -0 1301 *********************************************************************** 11860000 - 1302 * * 11870000 - 1303 * SYSTEM SUPPLIED DEVICE HANDLER FOR READERS * 11880000 - 1304 * * 11890000 - 1305 *********************************************************************** 11900000 -0 00AC6 1307 RDRHANDL EQU * . THE READER HANDLER 11920000 - R:3 00000 1308 USING UCB,3 . STARTED WITH REG3 -> UCB 11930000 - 000AC6 0510 1309 BALR 1,0 11940000 - R:1 00AC8 1310 USING *,1 . ESTABLISH ADDRESSING 11950000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 1310 in /mbhfs/sos4k.asm on volume: - 000AC8 4120 1160 00C28 1311 LA 2,RDRHSEM . LOCK OURSELVES UNTIL WE SET UP 11960000 - 000ACC 0AD7 1312 SVC C'P' . AN AUTOMATIC STORAGE AREA 11970000 - 000ACE 4120 1174 00C3C 1313 LA 2,RDRHAAS . READY TO ALLOCATE 11980000 - R:2 00000 1314 USING XAX,2 11990000 - 000AD2 0AC5 1315 SVC C'E' . ALLOCATE 12000000 - 000AD4 58C0 2004 00004 1316 L 12,XAXADDR . GET A PTR 12010000 - 1317 DROP 2 12020000 - 000AD8 4120 1160 00C28 1318 LA 2,RDRHSEM . AND UNBLOCK OURSELVES 12030000 - 000ADC 0AE5 1319 SVC C'V' 12040000 - 000ADE 8840 0010 00010 1320 SRL 4,16 . SHIFT KEY 12050000 - 000AE2 1BAA 1321 SR 10,10 . CLEAR REG 10 12060000 - R:C 00000 1322 USING RDRHAS,12 . AUTOMATIC AREA 12070000 - 000AE4 9200 C07A 0007A 1323 MVI JOBBIT,X'00' . INITIALIZE 12080000 - 000AE8 4160 C000 00000 1324 LA 6,RDRHCCB . GET PTR TO CCB 12090000 - 000AEC 4120 C008 00008 1325 RDRHLOOP LA 2,RDRHMSG . TRY TO READ A MESSAGE 12100000 - R:2 00000 1326 USING XRX,2 12110000 - 000AF0 D203 2008 13A0 00008 00E68 1327 MVC XRXSIZE,=F'8' . WE CAN TAKE 8 CHARS 12120000 - 000AF6 0AD9 1328 SVC C'R' . READ IT 12130000 - 000AF8 D503 13AC 200C 00E74 0000C 1329 CLC =C'READ',XRXTEXT . IF FIRST WORD IS READ, OK 12140000 - 000AFE 4770 1024 00AEC 1330 BNE RDRHLOOP . ELSE IGNORE 12150000 - 000B02 5850 2010 00010 1331 L 5,XRXTEXT+4 . GET 2ND WORD OF TEXT 12160000 - 1332 DROP 2 12170000 - 000B06 4120 3004 00004 1333 LA 2,UCBUS . LOCK THE UCB AND IT'S UNIT 12180000 - 000B0A 0AD7 1334 SVC C'P' 12190000 - 000B0C 4120 C008 00008 1335 LA 2,RDRHMSG . RESET ADDRESSING POINTER 12200000 - R:2 00000 1336 USING XRX,2 12210000 - 000B10 95FF C07A 0007A 1337 CLI JOBBIT,X'FF' . HAVE WE JUST READ $JOB CARD? 12220000 - 000B14 4770 1066 00B2E 1338 BNE RDRHMORE . IF NO, GO CHECK PROTECTION, ELSE 12230000 - 000B18 955C 2000 00000 1339 CLI XRXNAME,C'*' . IS JSP CALLING US? 12240000 - 000B1C 4770 10F8 00BC0 1340 BNE RDRHNO . IF NOT, TELL HIM NO. 12250000 - 000B20 D24F 5000 C01C 00000 0001C 1341 MVC 0(80,5),RDRHTEMP . IF IT IS, GIVE JSP THE $JOB CARD 12260000 - 000B26 9200 C07A 0007A 1342 MVI JOBBIT,X'00' . SAY WE DON'T HAVE $JOB WAITING 12270000 - 000B2A 47F0 1114 00BDC 1343 B RDRHSOK . AND SEND MESSAGE BACK 12280000 - 1344 DROP 2 12290000 - 000B2E 955C C008 00008 1345 RDRHMORE CLI RDRHMSG,C'*' . IS SYSTEM CALLING? 12300000 - 000B32 4780 1098 00B60 1346 BE RDRHPOK . THEN PROTECTION OK, ELSE 12310000 - 000B36 18B5 1347 LR 11,5 . GET ADDRESS THAT'S TO HOLD CARD, 12320000 -1 Sample Operating System Version 2.00 Page 36 - Active Usings: PROGRAM,R0 PROGRAM+X'AC8',R1 UCB,R3 RDRHAS,R12 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000B38 54B0 116C 00C34 1348 N 11,PROTCON1 . get the page boundary 12330002 - 1349 * ISKE 10,11 . find storage key 12334002 - 000B3C B22900AB 1350 DC X'B22900AB' Assembler (XF) doesn't support ISKE 12338002 - 000B40 54A0 1170 00C38 1351 N 10,PROTCON2 . ignore low order bits 12342002 - 000B44 19A4 1352 CR 10,4 . DOES IT MATCH OURS? 12350000 - 000B46 4770 10F8 00BC0 1353 BNE RDRHNO . IF NOT, TELL HIM NO 12360000 - 000B4A 41B5 004F 0004F 1354 LA 11,79(5) . CHECK LAST BYTE ADDR OF CARD 12370000 - 000B4E 54B0 116C 00C34 1355 N 11,PROTCON1 . get the page boundary 12380002 - 1356 * ISKE 10,11 . find storage key 12384002 - 000B52 B22900AB 1357 DC X'B22900AB' Assembler (XF) doesn't support ISKE 12388002 - 000B56 54A0 1170 00C38 1358 N 10,PROTCON2 . ignore low order bits 12392002 - 000B5A 19A4 1359 CR 10,4 . DOES IT MATCH OURS? 12400000 - 000B5C 4770 10F8 00BC0 1360 BNE RDRHNO . IF NOT, TELL HIM NO 12410000 - 000B60 5450 1168 00C30 1361 RDRHPOK N 5,CCBCON1 . MAKE ADDRESS INTO 12420000 - 000B64 5050 C000 00000 1362 ST 5,RDRHCCB . A CCW (OR CCB) 12430000 - 000B68 9602 C000 00000 1363 OI RDRHCCB,X'02' 12440000 - 000B6C D203 C004 13B0 00004 00E78 1364 MVC RDRHCCB+4,=F'80' . WE'LL READ EIGHTY CHARACTERS 12450000 - 000B72 D203 3014 1398 00014 00E60 1365 MVC UCBCSW(4),=A(0) . CLEAR THE LAST CSW THERE 12460000 - 000B78 D203 3018 1398 00018 00E60 1366 MVC UCBCSW+4(4),=A(0) 12470000 - 000B7E 4120 0194 00194 1367 LA 2,CAWSEM . LOCK THE CAW 12480000 - 000B82 0AD7 1368 SVC C'P' 12490000 - 000B84 5060 0048 00048 1369 ST 6,CAW . THAT'S THE CAW 12500000 - 000B88 5870 3000 00000 1370 L 7,UCBADDR . GET THE UNIT ADDRESS 12510000 - 000B8C 9C00 7000 00000 1371 SIO 0(7) . START THE I/O 12520000 - 000B90 4770 1154 00C1C 1372 BNZ RDSTATUS . BRANCH IF SIO UNSUCCESSFUL 12530000 - 000B94 0AE5 1373 SVC C'V' . THEN UNLOCK THE CAW 12540000 - 000B96 4120 300C 0000C 1374 RDRHWAIT LA 2,UCBWS . NOW WAIT FOR AN INTERRUPT 12550000 - 000B9A 0AD7 1375 SVC C'P' 12560000 - 000B9C 9185 3018 00018 1376 TM UCBCSW+4,X'85' . CHECK THE STATUS 12570003 - 000BA0 4780 10CE 00B96 1377 BZ RDRHWAIT . IF NOT FINISHED, WAIT 12580000 - 000BA4 9101 3018 00018 1378 TM UCBCSW+4,X'01' . CHECK FOR EXCEPTION 12590000 - 000BA8 4710 10F0 00BB8 1379 BO RDRHEXC . if yes, ignore this interrupt 12600003 - 000BAC 9180 3018 00018 1380 TM UCBCSW+4,X'80' . if no, check for attention 12602003 - 000BB0 4710 1098 00B60 1381 BO RDRHPOK . if yes, try to restart the I/O 12604003 - 000BB4 47F0 1102 00BCA 1382 B RDRHOK . else, all is groovy 12606003 - 000BB8 94FE 3018 00018 1383 RDRHEXC NI UCBCSW+4,X'FE' . clear exception .. 12608003 - 000BBC 47F0 10CE 00B96 1384 B RDRHWAIT . .. and continue waiting 12610003 - 000BC0 D201 C078 13CC 00078 00E94 1385 RDRHNO MVC RDRHM+12(2),=C'NO' . message back is no 12612003 - 000BC6 47F0 111A 00BE2 1386 B RDRHSEND . GET READY TO SEND 12620000 - 000BCA 955C C008 00008 1387 RDRHOK CLI RDRHMSG,C'*' . IS THE SYSTEM CALLING? 12630000 - 000BCE 4780 1114 00BDC 1388 BE RDRHSOK . THAT'S FINE. OTHERWISE, 12640000 - 000BD2 D504 13D0 5000 00E98 00000 1389 CLC =C'$JOB,',0(5) . WAS IT A $JOB CARD? 12650000 - 000BD8 4780 1136 00BFE 1390 BE ENDADATA . OOPS! WE HIT END OF DATA STREAM 12660000 - 000BDC D201 C078 13CE 00078 00E96 1391 RDRHSOK MVC RDRHM+12(2),=C'OK' .GROOVINESS MESSAGE 12670000 - 000BE2 D203 C074 13A8 00074 00E70 1392 RDRHSEND MVC RDRHM+8(4),=F'2' . SAY THERE ARE 2 CHARACTERS 12680000 - 000BE8 D207 C06C C008 0006C 00008 1393 MVC RDRHM+0(8),RDRHMSG+0 . SEND BACK TO SAME GUY 12690000 - 000BEE 4120 3004 00004 1394 LA 2,UCBUS . NOW UNLOCK UCB AND UNIT 12700000 - 000BF2 0AE5 1395 SVC C'V' 12710000 - 000BF4 4120 C06C 0006C 1396 LA 2,RDRHM . SET UP MESSAGE 12720000 - 000BF8 0AE2 1397 SVC C'S' . AND SEND IT 12730000 - 000BFA 47F0 1024 00AEC 1398 B RDRHLOOP 12740000 - 000BFE D201 C078 13CC 00078 00E94 1399 ENDADATA MVC RDRHM+12(2),=C'NO' . TELL USER NO MORE CARDS 12750000 - 000C04 D24F C01C 5000 0001C 00000 1400 MVC RDRHTEMP(80),0(5) . SAVE THE $JOB CARD 12760000 - 000C0A 9240 5000 00000 1401 MVI 0(5),C' ' . BLANK OUT THE USER'S COPY 12770000 - 000C0E D24E 5001 5000 00001 00000 1402 MVC 1(79,5),0(5) 12780000 -1 Sample Operating System Version 2.00 Page 37 - Active Usings: PROGRAM,R0 PROGRAM+X'AC8',R1 UCB,R3 RDRHAS,R12 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000C14 92FF C07A 0007A 1403 MVI JOBBIT,X'FF' . INDICATE WE HAVE A NEW $JOB CARD 12790000 - 000C18 47F0 111A 00BE2 1404 B RDRHSEND . AND SEND THE MESSAGE BACK 12800000 - 000C1C 0AE5 1405 RDSTATUS SVC C'V' . UNLOCK THE CAW 12810000 - 000C1E 4120 300C 0000C 1406 LA 2,UCBWS . AND WAIT FOR AN INTERRUPT 12820000 - 000C22 0AD7 1407 SVC C'P' 12830000 - 000C24 47F0 1098 00B60 1408 B RDRHPOK . AND TRY TO RESTART THE I/O 12840000 - 1409 DROP 3,12 12850000 -0000C28 0000000100000000 1411 RDRHSEM DC F'1,0' 12870000 - 000C30 00FFFFFF 1412 CCBCON1 DC X'00FFFFFF' MASK 12880000 - 000C34 00FFF000 1413 PROTCON1 DC X'00FFF000' page alignment 12890002 - 000C38 FFFFFFF0 1414 PROTCON2 DC X'FFFFFFF0' ignore low order bits 12893002 - 000C3C 00000080 1415 RDRHAAS DC A(LENRDRHA) ALLOCATE ARGLIST FOR STORAGE 12900000 - 000C40 00000000 1416 DC F'0' 12910000 - 000C44 00000008 1417 DC F'8' 12920000 -- - 1419 *********************************************************************** 12940000 - 1420 * * 12950000 - 1421 * SYSTEM SUPPLIED DEVICE HANDLER FOR PRINTERS * 12960000 - 1422 * * 12970000 - 1423 *********************************************************************** 12980000 -0 00C48 1425 PRTHANDL EQU * . THE PRINTER HANDLER 13000000 - R:3 00000 1426 USING UCB,3 . ENTERED WITH REG3 -> THE UCB 13010000 - 000C48 0510 1427 BALR 1,0 13020000 - R:1 00C4A 1428 USING *,1 . ESTABLISH ADDRESSING 13030000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 1428 in /mbhfs/sos4k.asm on volume: - 000C4A 4120 1116 00D60 1429 LA 2,PRTHSEM . LOCK UNTIL ALLOCATE STORAGE 13040000 - 000C4E 0AD7 1430 SVC C'P' . 13050000 - 000C50 4120 111E 00D68 1431 LA 2,PRTHAAS . READY TO ALLOCATE 13060000 - R:2 00000 1432 USING XAX,2 13070000 - 000C54 0AC5 1433 SVC C'E' . ALLOCATE 13080000 - 000C56 58C0 2004 00004 1434 L 12,XAXADDR . GET THE ADDRESS 13090000 - 1435 DROP 2 13100000 - 000C5A 4120 1116 00D60 1436 LA 2,PRTHSEM . 13110000 - 000C5E 0AE5 1437 SVC C'V' UNLOCK TO ROUTINE 13120000 - 000C60 8840 0010 00010 1438 SRL 4,16 . SHIFT KEY 13130000 - 000C64 1BAA 1439 SR 10,10 . CLEAR REG 10 13140000 - R:C 00000 1440 USING PRTHAS,12 . ADDRESSING IN THE AUTO AREA 13150000 - 000C66 4160 C000 00000 1441 LA 6,PRTHCCB . MAKE A CAW 13160000 - 000C6A 4120 C008 00008 1442 PRTHLOOP LA 2,PRTHMSG . READY TO READ A MESSAGE 13170000 - R:2 00000 1443 USING XRX,2 13180000 - 000C6E D203 2008 121E 00008 00E68 1444 MVC XRXSIZE,=F'8' . WE CAN TAKE 8 CHARACTERS 13190000 - 000C74 0AD9 1445 SVC C'R' . READ IT 13200000 - 000C76 5850 2010 00010 1446 L 5,XRXTEXT+4 . LOAD THE ADDRESS 13210000 - 000C7A D503 1232 200C 00E7C 0000C 1447 CLC =C'PRIN',XRXTEXT . IS IT A PRIN REQUEST? 13220000 - 000C80 4780 1048 00C92 1448 BE PRTHPRIN 13230000 - 000C84 D503 1236 200C 00E80 0000C 1449 CLC =C'STC1',XRXTEXT . OR A SKIP REQUEST? 13240000 - 000C8A 4780 1096 00CE0 1450 BE PRTHSTC1 13250000 - 000C8E 47F0 1020 00C6A 1451 B PRTHLOOP . IF NEITHER, IGNORE 13260000 - 1452 DROP 2 13270000 - 000C92 4120 3004 00004 1453 PRTHPRIN LA 2,UCBUS 13280000 -1 Sample Operating System Version 2.00 Page 38 - Active Usings: PROGRAM,R0 PROGRAM+X'C4A',R1 UCB,R3 PRTHAS,R12 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000C96 0AD7 1454 SVC C'P' . LOCK THE UCB AND UNIT 13290000 - 000C98 955C C008 00008 1455 CLI PRTHMSG,C'*' . IS SYSTEM CALLING? 13300000 - 000C9C 4780 1080 00CCA 1456 BE PRTHPOK . THEN PROTECTION OK. ELSE 13310000 - 000CA0 18B5 1457 LR 11,5 . GET ADDRESS THAT'S TO HOLD MSG, 13320000 - 000CA2 54B0 0C34 00C34 1458 N 11,PROTCON1 . get the page boundary 13330002 - 1459 * ISKE 10,11 . find storage key 13334002 - 000CA6 B22900AB 1460 DC X'B22900AB' Assembler (XF) doesn't support ISKE 13338002 - 000CAA 54A0 0C38 00C38 1461 N 10,PROTCON2 . ignore low order bits 13342002 - 000CAE 19A4 1462 CR 10,4 . DOES IT MATCH OURS? 13350000 - 000CB0 4770 10DC 00D26 1463 BNE PRTHNO . IF NOT, TELL HIM NO 13360000 - 000CB4 41B5 0083 00083 1464 LA 11,131(5) . CHECK LAST BYTE ADDRESS OF LINE 13370000 - 000CB8 54B0 0C34 00C34 1465 N 11,PROTCON1 . get the page boundary 13380002 - 1466 * ISKE 10,11 . find storage key 13384002 - 000CBC B22900AB 1467 DC X'B22900AB' Assembler (XF) doesn't support ISKE 13388002 - 000CC0 54A0 0C38 00C38 1468 N 10,PROTCON2 . ignore low order bits 13392002 - 000CC4 19A4 1469 CR 10,4 . DOES IT MATCH OURS? 13400000 - 000CC6 4770 10DC 00D26 1470 BNE PRTHNO . IF NOT, TELL HIM NO 13410000 - 000CCA 5450 0C30 00C30 1471 PRTHPOK N 5,CCBCON1 . MAKE A WRITE REQUEST 13420000 - 000CCE 5050 C000 00000 1472 ST 5,PRTHCCB . FOR THE CCB 13430000 - 000CD2 9609 C000 00000 1473 OI PRTHCCB,X'09' . PRINT COMMAND CODE 13440000 - 000CD6 D203 C004 123A 00004 00E84 1474 MVC PRTHCCB+4,=F'132' . WE'LL PRINT 132 CHARACTERS 13450000 - 000CDC 47F0 10A2 00CEC 1475 B PRTHCOMM . BRANCH TO COMMON SECTION 13460000 - 000CE0 D207 C000 1206 00000 00E50 1476 PRTHSTC1 MVC PRTHCCB(8),=X'8900000020000001' SKIP TO TOP OF PAGE 13470000 - 000CE6 4120 3004 00004 1477 LA 2,UCBUS 13480000 - 000CEA 0AD7 1478 SVC C'P' . LOCK THE UCB AND UNIT 13490000 - 000CEC 4120 0194 00194 1479 PRTHCOMM LA 2,CAWSEM . LOCK THE CAW 13500000 - 000CF0 0AD7 1480 SVC C'P' 13510000 - 000CF2 5060 0048 00048 1481 ST 6,CAW . STORE OUR CAW 13520000 - 000CF6 D203 3014 1216 00014 00E60 1482 MVC UCBCSW(4),=A(0) . CLEAR THE LAST CSW THERE 13530000 - 000CFC D203 3018 1216 00018 00E60 1483 MVC UCBCSW+4(4),=A(0) 13540000 - 000D02 5870 3000 00000 1484 L 7,UCBADDR . GET THE ADDRESS 13550000 - 000D06 9C00 7000 00000 1485 SIO 0(7) . START THE I/O 13560000 - 000D0A 4770 1108 00D52 1486 BNZ PTSTATUS . BRANCH IF SIO UNSUCCESSFUL 13570000 - 000D0E 0AE5 1487 SVC C'V' . AND UNLOCK THE CAW 13580000 - 000D10 4120 300C 0000C 1488 PRTHWAIT LA 2,UCBWS . START TO WAIT 13590000 - 000D14 0AD7 1489 SVC C'P' 13600000 - 000D16 9105 3018 00018 1490 TM UCBCSW+4,X'05' . IS THE UNIT READY? 13610000 - 000D1A 4780 10C6 00D10 1491 BZ PRTHWAIT . IF NOT, ITS STILL ON. WAIT 13620000 - 000D1E 9101 3018 00018 1492 TM UCBCSW+4,X'01' . WAS THERE AN EXCEPTION? 13630000 - 000D22 4780 10E6 00D30 1493 BZ PRTHOK . IF NOT, GOOD 13640000 - 000D26 D201 C028 124A 00028 00E94 1494 PRTHNO MVC PRTHM+12(2),=C'NO' .THERE WAS, SO SAY SO 13650000 - 000D2C 47F0 10EC 00D36 1495 B PRTHSEND 13660000 - 000D30 D201 C028 124C 00028 00E96 1496 PRTHOK MVC PRTHM+12(2),=C'OK' .NO ERRORS 13670000 - 000D36 D203 C024 1226 00024 00E70 1497 PRTHSEND MVC PRTHM+8(4),=F'2' . SENDING 2 CHARACTERS 13680000 - 000D3C D207 C01C C008 0001C 00008 1498 MVC PRTHM+0(8),PRTHMSG+0 . SEND TO OUR SENDER 13690000 - 000D42 4120 3004 00004 1499 LA 2,UCBUS 13700000 - 000D46 0AE5 1500 SVC C'V' . UNLOCK THE UCB 13710000 - 000D48 4120 C01C 0001C 1501 LA 2,PRTHM 13720000 - 000D4C 0AE2 1502 SVC C'S' . SEND IT 13730000 - 000D4E 47F0 1020 00C6A 1503 B PRTHLOOP . AND READ ANOTHER MESSAGE 13740000 - 000D52 0AE5 1504 PTSTATUS SVC C'V' . UNLOCK THE CAW 13750000 - 000D54 4120 300C 0000C 1505 LA 2,UCBWS . AND WAIT FOR THE INTERRUPT 13760000 - 000D58 0AD7 1506 SVC C'P' 13770000 - 000D5A 47F0 10A2 00CEC 1507 B PRTHCOMM . AND TRY TO RESTART THE I/O 13780000 - 1508 DROP 3,12 13790000 -1 Sample Operating System Version 2.00 Page 39 - Active Usings: PROGRAM,R0 PROGRAM+X'C4A',R1 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000D5E 0000 - 000D60 0000000100000000 1510 PRTHSEM DC F'1,0' LOCK 13810000 - 000D68 00000030 1511 PRTHAAS DC A(LENPRTHA) XA ARG LIST FOR AUTO STORAGE 13820000 - 000D6C 00000000 1512 DC F'0' 13830000 - 000D70 00000008 1513 DC F'8' 13840000 -1 Sample Operating System Version 2.00 Page 40 - Active Usings: PROGRAM,R0 PROGRAM+X'C4A',R1 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 1515 *********************************************************************** 13860000 - 1516 * * 13870000 - 1517 * SYSTEM ROUTINE FOR USER SUPPLIED DEVICE HANDLER * 13880000 - 1518 * * 13890000 - 1519 *********************************************************************** 13900000 -0 00D74 1521 EXCPHNDL EQU * . EXCP DEVICE HANDLER 13920000 - R:3 00000 1522 USING UCB,3 . WILL HAVE REG3 -> UCB 13930000 - 000D74 0510 1523 BALR 1,0 13940000 - R:1 00D76 1524 USING *,1 . ESTABLISH ADDRESSING 13950000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 1524 in /mbhfs/sos4k.asm on volume: - 000D76 4120 10C6 00E3C 1525 LA 2,EXCPHSEM . LOCK OURSELVES UNTIL WE HAVE 13960000 - 000D7A 0AD7 1526 SVC C'P' . SET UP AUTOMATIC STORAGE 13970000 - 000D7C 4120 10CE 00E44 1527 LA 2,EXCPHAAS . READY TO ALLOCATE 13980000 - R:2 00000 1528 USING XAX,2 13990000 - 000D80 0AC5 1529 SVC C'E' . ALLOCATE 14000000 - 000D82 58C0 2004 00004 1530 L 12,XAXADDR . GET POINTER TO AUTO STORAGE 14010000 - 1531 DROP 2 14020000 - 000D86 4120 10C6 00E3C 1532 LA 2,EXCPHSEM . AND UNLOCK OURSELVES 14030000 - 000D8A 0AE5 1533 SVC C'V' UNLOCK TO ROUTINE 14040000 - 000D8C 184B 1534 LR 4,11 14050000 - 000D8E 8940 0008 00008 1535 SLL 4,8 . SHIFT KEY FOR CAW 14060000 - R:C 00000 1536 USING EXCPHAS,12 . FOR ADDRESSING AUTO AREA 14070000 - 000D92 4120 C000 00000 1537 EXCPLOOP LA 2,EXCPHMSG . TRY TO READ A MESSAGE 14080000 - R:2 00000 1538 USING XRX,2 14090000 - 000D96 D203 2008 1112 00008 00E88 1539 MVC XRXSIZE,=F'12' . WE'LL TAKE 12 CHARACTERS 14100000 - 000D9C 0AD9 1540 SVC C'R' 14110000 - 000D9E D503 1116 200C 00E8C 0000C 1541 CLC =C'EXCP',XRXTEXT . IS IT AN EXCP MESSAGE? 14120000 - 000DA4 4770 101C 00D92 1542 BNE EXCPLOOP . IF NOT, IGNORE IT 14130000 - 000DA8 5850 2010 00010 1543 L 5,XRXTEXT+4 . REG 5 CONTAINS CHAN AND DEV 14140000 - 000DAC 5860 2014 00014 1544 L 6,XRXTEXT+8 . REG 6 CONTAINS ADDR OF CCWS 14150000 - 1545 DROP 2 14160000 - 000DB0 4170 112E 00EA4 1546 LA 7,UCBTABLE . GET PTR TO UCB TABLE 14170000 - 000DB4 5957 0000 00000 1547 EXCPCOMP C 5,0(7) . COMPARE UNIT ADDRESS 14180000 - 000DB8 4780 1054 00DCA 1548 BE EXCPFIND . THAT'S THE UCB WE WANT 14190000 - 000DBC 4177 0020 00020 1549 LA 7,UCBLENG(7) . GET PTR TO NEXT UCB 14200000 - 000DC0 5970 111A 00E90 1550 C 7,=A(UCBTBEND) . ARE WE THROUGH WITH TABLE? 14210000 - 000DC4 4770 103E 00DB4 1551 BNE EXCPCOMP . IF NOT, LOOK SOME MORE 14220000 - 000DC8 0A6F 1552 SVC C'?' . ELSE ERROR 14230000 - 000DCA 1837 1553 EXCPFIND LR 3,7 . SET REG 3 TO UCB PTR 14240000 - 000DCC 4120 3004 00004 1554 LA 2,UCBUS 14250000 - 000DD0 0AD7 1555 SVC C'P' . LOCK THE UCB 14260000 - 000DD2 1664 1556 OR 6,4 . OR IN THE USER'S KEY 14270000 - 000DD4 D203 3014 10EA 00014 00E60 1557 MVC UCBCSW(4),=A(0) . CLEAR THE LAST CSW THERE 14280000 - 000DDA D203 3018 10EA 00018 00E60 1558 MVC UCBCSW+4(4),=A(0) 14290000 - 000DE0 4120 0194 00194 1559 LA 2,CAWSEM 14300000 - 000DE4 0AD7 1560 SVC C'P' . LOCK CAW 14310000 - 000DE6 5060 0048 00048 1561 ST 6,CAW . STORE OUR CAW 14320000 - 000DEA 9C00 5000 00000 1562 SIO 0(5) . START THE I/O 14330000 - 000DEE 0AE5 1563 SVC C'V' . UNLOCK THE CAW 14340000 - 000DF0 4120 300C 0000C 1564 EXCPWAIT LA 2,UCBWS . NOW WAIT FOR AN INTERRUPT 14350000 - 000DF4 0AD7 1565 SVC C'P' 14360000 - 000DF6 D207 C024 3014 00024 00014 1566 MVC EXCPHM+12(8),UCBCSW . GIVE USER HIS CSW 14370000 - 000DFC D203 C020 1112 00020 00E88 1567 MVC EXCPHM+8(4),=F'12' 14380000 -1 Sample Operating System Version 2.00 Page 41 - Active Usings: PROGRAM,R0 PROGRAM+X'D76',R1 UCB,R3 EXCPHAS,R12 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000E02 D207 C018 C000 00018 00000 1568 MVC EXCPHM(8),EXCPHMSG 14390000 - 000E08 4120 C018 00018 1569 LA 2,EXCPHM 14400000 - 000E0C 0AE2 1570 SVC C'S' . AND SENT THE MESSAGE 14410000 - 000E0E 4120 C000 00000 1571 LA 2,EXCPHMSG . AND WAIT FOR A REPLY 14420000 - R:2 00000 1572 USING XRX,2 14430000 - 000E12 D203 2008 10F2 00008 00E68 1573 MVC XRXSIZE(4),=F'8' . FROM THE USER 14440000 - 000E18 0AD9 1574 SVC C'R' 14450000 - 000E1A D501 1120 200C 00E96 0000C 1575 CLC =C'OK',XRXTEXT . AM I DONE? 14460000 - 000E20 4780 10BA 00E30 1576 BE EXCPDONE 14470000 - 000E24 D504 1127 200C 00E9D 0000C 1577 CLC =C'AGAIN',XRXTEXT . DOES HE WANT ANOTHER CSW? 14480000 - 000E2A 4780 107A 00DF0 1578 BE EXCPWAIT 14490000 - 000E2E 0A6F 1579 SVC C'?' . WRONG MESSAGE 14500000 - 1580 DROP 2 14510000 - 000E30 4120 3004 00004 1581 EXCPDONE LA 2,UCBUS . UNLOCK UNIT 14520000 - 000E34 0AE5 1582 SVC C'V' 14530000 - 000E36 47F0 101C 00D92 1583 B EXCPLOOP . AND GET ANOTHER MESSAGE 14540000 - 1584 DROP 3,12 14550000 - 000E3A 0000 - 000E3C 0000000100000000 1585 EXCPHSEM DC F'1,0' 14560000 - 000E44 00000030 1586 EXCPHAAS DC A(LENEXCPA) . ALLOCATION OF AUTO STORAGE 14570000 - 000E48 00000000 1587 DC F'0' 14580000 - 000E4C 00000008 1588 DC F'8' 14590000 -- - 000E50 1590 LTORG 14610000 - 000E50 8900000020000001 1591 =X'8900000020000001' - 000E58 00000001 1592 =F'1' - 000E5C 00000600 1593 =A(XA) - 000E60 00000000 1594 =A(0) - 000E64 00000148 1595 =A(LENPCB) - 000E68 00000008 1596 =F'8' - 000E6C FFFFFFF8 1597 =F'-8' - 000E70 00000002 1598 =F'2' - 000E74 D9C5C1C4 1599 =C'READ' - 000E78 00000050 1600 =F'80' - 000E7C D7D9C9D5 1601 =C'PRIN' - 000E80 E2E3C3F1 1602 =C'STC1' - 000E84 00000084 1603 =F'132' - 000E88 0000000C 1604 =F'12' - 000E8C C5E7C3D7 1605 =C'EXCP' - 000E90 00000FC4 1606 =A(UCBTBEND) - 000E94 D5D6 1607 =C'NO' - 000E96 D6D2 1608 =C'OK' - 000E98 5BD1D6C26B 1609 =C'$JOB,' - 000E9D C1C7C1C9D5 1610 =C'AGAIN' -1 Sample Operating System Version 2.00 Page 42 - Active Usings: PROGRAM,R0 PROGRAM+X'D76',R1 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 1612 *********************************************************************** 14630000 - 1613 * * 14640000 - 1614 * UNIT CONTROL BLOCKS * 14650000 - 1615 * * 14660000 - 1616 *********************************************************************** 14670000 -0000EA4 1618 UCBTABLE DS 0F . TABLE OF UNIT CONTROL BLOCKS 14690000 - 1619 * UCB FOR READER 1 14700000 - 000EA4 00000012 1620 UCBRDR1 DC X'00000012' . DEVICE ADDRESS, 14710000 - 000EA8 0000000100000000 1621 DC F'1,0' . USER SEMAPHORE, 14720000 - 000EB0 0000000000000000 1622 DC F'0,0' . WAIT SEMAPHORE, 14730000 - 000EB8 0000000000000000 1623 DC F'0,0' . CHANNEL STATUS WORD 14740000 - 000EC0 00 1624 DC X'00' 14750000 - 000EC4 1625 DS 0F 14760000 - 1626 * UCB FOR PRINTER 1 14770000 - 000EC4 00000010 1627 UCBPRT1 DC X'00000010' . DEVICE ADDRESS, 14780000 - 000EC8 0000000100000000 1628 DC F'1,0' . USER SEMAPHORE, 14790000 - 000ED0 0000000000000000 1629 DC F'0,0' . WAIT SEMAPHORE, 14800000 - 000ED8 0000000000000000 1630 DC F'0,0' . CHANNEL STATUS WORD 14810000 - 000EE0 00 1631 DC X'00' 14820000 - 000EE4 1632 DS 0F 14830000 - 1633 * UCB FOR READER 2 14840000 - 000EE4 0000000C 1634 UCBRDR2 DC X'0000000C' . DEVICE ADDRESS, 14850000 - 000EE8 0000000100000000 1635 DC F'1,0' . USER SEMAPHORE, 14860000 - 000EF0 0000000000000000 1636 DC F'0,0' . WAIT SEMAPHORE, 14870000 - 000EF8 0000000000000000 1637 DC F'0,0' . CHANNEL STATUS WORD 14880000 - 000F00 00 1638 DC X'00' 14890000 - 000F04 1639 DS 0F 14900000 - 1640 * UCB FOR PRINTER 2 14910000 - 000F04 0000000E 1641 UCBPRT2 DC X'0000000E' . DEVICE ADDRESS, 14920000 - 000F08 0000000100000000 1642 DC F'1,0' . USER SEMAPHORE, 14930000 - 000F10 0000000000000000 1643 DC F'0,0' . WAIT SEMAPHORE, 14940000 - 000F18 0000000000000000 1644 DC F'0,0' . CHANNEL STATUS WORD 14950000 - 000F20 00 1645 DC X'00' 14960000 - 000F24 1646 DS 0F 14970000 - 1647 * UCB for READER 3 14970302 - 000F24 00000112 1648 UCBRDR3 DC X'00000112' . device address, 14970602 - 000F28 0000000100000000 1649 DC F'1,0' . user semaphore, 14970902 - 000F30 0000000000000000 1650 DC F'0,0' . wait semaphore, 14971202 - 000F38 0000000000000000 1651 DC F'0,0' . channel status word 14971502 - 000F40 00 1652 DC X'00' 14971802 - 000F44 1653 DS 0F 14972102 - 1654 * UCB for PRINTER 3 14972402 - 000F44 00000110 1655 UCBPRT3 DC X'00000110' . device address, 14972702 - 000F48 0000000100000000 1656 DC F'1,0' . user semaphore, 14973002 - 000F50 0000000000000000 1657 DC F'0,0' . wait semaphore, 14973302 - 000F58 0000000000000000 1658 DC F'0,0' . channel status word 14973602 - 000F60 00 1659 DC X'00' 14973902 - 000F64 1660 DS 0F 14974202 - 1661 * UCB for READER 4 14974502 - 000F64 0000010C 1662 UCBRDR4 DC X'0000010C' . device address, 14974802 - 000F68 0000000100000000 1663 DC F'1,0' . user semaphore, 14975102 - 000F70 0000000000000000 1664 DC F'0,0' . wait semaphore, 14975402 - 000F78 0000000000000000 1665 DC F'0,0' . channel status word 14975702 - 000F80 00 1666 DC X'00' 14976002 -1 Sample Operating System Version 2.00 Page 43 - Active Usings: PROGRAM,R0 PROGRAM+X'D76',R1 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000F84 1667 DS 0F 14976302 - 1668 * UCB for PRINTER 4 14976602 - 000F84 0000010E 1669 UCBPRT4 DC X'0000010E' . device address, 14976902 - 000F88 0000000100000000 1670 DC F'1,0' . user semaphore, 14977202 - 000F90 0000000000000000 1671 DC F'0,0' . wait semaphore, 14977502 - 000F98 0000000000000000 1672 DC F'0,0' . channel status word 14977802 - 000FA0 00 1673 DC X'00' 14978102 - 000FA4 1674 DS 0F 14978402 - 1675 * UCB for CONSOLE 1 14978504 - 000FA4 00000009 1676 UCBCONS1 DC X'00000009' . device address, 14978604 - 000FA8 0000000100000000 1677 DC F'1,0' . user semaphore, 14978704 - 000FB0 0000000000000000 1678 DC F'0,0' . wait semaphore, 14978804 - 000FB8 0000000000000000 1679 DC F'0,0' . channel status word 14978904 - 000FC0 00 1680 DC X'00' 14979004 - 000FC4 1681 DS 0F 14979104 - 00FC4 1682 UCBTBEND EQU * 14980000 -1 Sample Operating System Version 2.00 Page 44 - Active Usings: PROGRAM,R0 PROGRAM+X'D76',R1 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 1684 *********************************************************************** 15000000 - 1685 * * 15010000 - 1686 * I/O INTERRUPT HANDLER * 15020000 - 1687 * * 15030000 - 1688 *********************************************************************** 15040000 -0 00FC4 1690 IOHANDL EQU * . THE I/O INTERRUPT HANDLER 15060000 - 000FC4 900F 01DC 001DC 1691 STM 0,15,IOHSAVE . SAVE REGISTERS 15070000 - 000FC8 0510 1692 BALR 1,0 15080000 - R:1 00FCA 1693 USING *,1 . ESTABLISH ADRESSING 15090000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 1673 in /mbhfs/sos4k.asm on volume: - 000FCA 94FD 0039 00039 1694 NI IOOLD+1,X'FD' . TURN OFF WAIT BIT 15100000 - 000FCE 5860 172E 016F8 1695 L 6,=A(UCBTABLE) . GET POINTER TO UCB TABLE 15110000 - 000FD2 D501 6002 003A 00002 0003A 1696 IOCOMP CLC 2(2,6),IOOLD+2 . COMPARE DEVICE AND CHANNEL 15120000 - 000FD8 4780 1022 00FEC 1697 BE IODEVFND . IF EQUAL, REG 6 INDICATES PTR 15130000 - 000FDC 4166 0020 00020 1698 LA 6,UCBLENG(6) . INCREMENT TO NEXT ENTRY 15140000 - 000FE0 5960 1732 016FC 1699 C 6,=A(UCBTBEND) . ARE WE AT END OF TABLE? 15150000 - 000FE4 4770 1008 00FD2 1700 BNE IOCOMP . IF NOT DONE, TRY NEXT UCB 15160000 - 000FE8 47F0 106C 01036 1701 B IOBACK . ELSE, IGNORE IT 15170000 - R:6 00000 1702 USING UCB,6 . IT'S A UCB PTR 15180000 - 000FEC D203 6014 0040 00014 00040 1703 IODEVFND MVC UCBCSW(4),CSW . MOVE IN THE NEW CSW 15190000 - 000FF2 5870 0044 00044 1704 L 7,CSW+4 . GET STATUS BYTE 15200000 - 000FF6 5670 6018 00018 1705 O 7,UCBCSW+4 . OR IN NEW STATUS INFORMATION 15210000 - 000FFA 5070 6018 00018 1706 ST 7,UCBCSW+4 . AND STORE IT BACK 15220000 - 000FFE D201 601A 0046 0001A 00046 1707 MVC UCBCSW+6(2),CSW+6 . MOVE IN BYTE COUNT 15230000 - 001004 4120 600C 0000C 1708 LA 2,UCBWS 15240000 - 001008 9500 601C 0001C 1709 CLI UCBFPR,X'00' . IS FAST PROCESSING 15250000 - 00100C 4780 106A 01034 1710 BE IONOFPR . REQUIRED? IF NOT, RETURN 15260000 - 001010 58F0 0270 00270 1711 L 15,RUNNING . IF SO, STOP GUY NOW RUNNING 15270000 - R:F 00000 1712 USING PCB,15 15280000 - 001014 95FF F019 00019 1713 CLI PCBBLOKT,X'FF' . IS ANYONE REALLY RUNNING? 15290000 - 001018 4780 1062 0102C 1714 BE IOWAIT . IF NOT, START UP SLEEPER 15300000 - 00101C 41D0 F04C 0004C 1715 LA 13,PCBISA . IF SO, STOP RUNNING PROCESS 15310000 - R:D 00000 1716 USING SA,13 15320000 - 001020 D207 D000 0038 00000 00038 1717 MVC SAPSW,IOOLD . SAVE PROCESS WHICH WAS 15330000 - 001026 D23F D008 01DC 00008 001DC 1718 MVC SAREGS,IOHSAVE . INTERRUPTED 15340000 - 1719 DROP 13,15 15350000 - 00102C 9200 0278 00278 1720 IOWAIT MVI NEXTTRYM,X'00' . MAKE NEXTTRY NOT MODIFIED 15360000 - 001030 0AE5 1721 SVC C'V' . SO CAN FAST PROCESS SLEEPER 15370000 - 001032 0A4B 1722 SVC C'.' . GO PROCESS IT RIGHT AWAY 15380000 - 001034 0AE5 1723 IONOFPR SVC C'V' . AND WAKE UP THE SLEEPER 15390000 - 001036 980F 01DC 001DC 1724 IOBACK LM 0,15,IOHSAVE . RELOAD OUR REGISTERS 15400000 - 00103A 8200 0038 00038 1725 LPSW IOOLD . AND STEALTHILY RETURN 15410000 - 1726 DROP 1,6 15420000 -1 Sample Operating System Version 2.00 Page 45 - Active Usings: PROGRAM,R0 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 1728 *********************************************************************** 15440000 - 1729 * * 15450000 - 1730 * IPL ENTERED ROUTINE * 15460000 - 1731 * * 15470000 - 1732 * FUNCTION: TO INITIALIZE SYSTEM PARAMETERS, SET STORAGE KEYS, * 15480000 - 1733 * AND CREATE MULTIPLE JOB STREAMS. * 15490000 - 1734 * * 15500000 - 1735 *********************************************************************** 15510000 -0 0103E 1737 IPLRTN EQU * . THE IPL-ENTERED ROUTINE 15530000 - 00103E 0510 1738 BALR 1,0 15540000 - R:1 01040 1739 USING *,1 . ESTABLISH ADDRESSING 15550000 - 001040 D202 007D 1281 0007D 012C1 1740 MVC IONEW+5(3),SOSIONEW activate IO handler 15553002 - 001046 D202 005D 1289 0005D 012C9 1741 MVC EXTNEW+5(3),IPLEXNEW ignore external interrupts for now 15556002 - 00104C 41F0 10D0 01110 1742 LA 15,IPLPCB . I'M RUNNING 15560000 - 001050 50F0 0270 00270 1743 ST 15,RUNNING . INITIALIZE 'RUNNING' 15570000 - 001054 50F0 0274 00274 1744 ST 15,NEXTTRY . INITIALIZE 'NEXTTRY' 15580000 - 001058 D207 1700 1690 01740 016D0 1745 MVC VERYEND,=A(0,CORESIZE-(VERYEND-PROGRAM)) FREE CORE 15590000 - 00105E 4130 0008 00008 1746 LA 3,8 . SET ZERO KEY AND FETCH PROTECT 15600000 - 001062 5820 1224 01264 1747 L 2,CORESIZ . START PAST THE LAST BLOCK 15610000 - 001066 5B20 161C 0165C 1748 IPLCL S 2,PAGESIZE . get the previous block, page aligned 15620002 - 00106A 4740 1036 01076 1749 BM IPLTH . IF NEGATIVE, WE'RE THROUGH HERE 15630000 - 1750 * SSKE 3,2 . else set the storage key to 15640002 - 00106E B22B0032 1751 DC X'B22B0032' Assembler (XF) doesn't support SSKE 15643002 - 001072 47F0 1026 01066 1752 B IPLCL . ZERO, AND WORK BACKWARDS 15650000 - 001076 1B44 1753 IPLTH SR 4,4 . INDEX IN TABLES FOR INPUT STREAM 15660000 - 001078 5850 1088 010C8 1754 L 5,STREAMS . HOW MANY STREAMS? 15670000 - 00107C 4120 1218 01258 1755 IPLLOOP LA 2,IPLAPCBS . READY TO ALLOCATE A PCB 15680000 - R:2 00000 1756 USING XAX,2 15690000 - 001080 0AC1 1757 SVC C'A' . ALLOCATE 15700000 - 001082 5820 2004 00004 1758 L 2,XAXADDR . GET THE ADDRESS 15710000 - 001086 D253 2000 1228 00000 01268 1759 MVC 0(TYPLEN,2),TYPPCB .MAKE IT LOOK LIKE A PCB 15720000 - 00108C 0AC9 1760 SVC C'I' . CHAIN IT ON 15730000 - R:2 00000 1761 USING PCB,2 15740000 - 00108E 5020 2008 00008 1762 ST 2,PCBNPTG . BUT PUT IT IN A GROUP BY ITSELF 15750000 - 001092 5020 200C 0000C 1763 ST 2,PCBLPTG 15760000 - 1764 DROP 2 15770000 - R:F 00000 1765 USING PCB,15 15780000 - 001096 50F0 F00C 0000C 1766 ST 15,PCBLPTG . LIKEWISE FOR THE IPL PCB 15790000 - 00109A 50F0 F008 00008 1767 ST 15,PCBNPTG 15800000 - 1768 DROP 15 15810000 - R:2 00000 1769 USING PCB,2 15820000 - 00109E 4180 204C 0004C 1770 LA 8,PCBISA . GET THE NEW PCB'S ISA 15830000 - R:8 00000 1771 USING SA,8 15840000 - 0010A2 4190 8008 00008 1772 LA 9,SAREGS . ABOUT TO FIX INIT REGS 15850000 - R:9 00000 1773 USING REGS,9 15860000 - 0010A6 41A0 108C 010CC 1774 LA 10,UCBTAB 15870000 - 0010AA 1AA4 1775 AR 10,4 15880000 - 0010AC D203 900C A000 0000C 00000 1776 MVC REG3,0(10) . REG3 -> (RDRUCB,PRTUCB) 15890000 - 0010B2 D203 9010 A010 00010 00010 1777 MVC REG4,KEYTAB-UCBTAB(10) . REG4 = KEY 15900000 - 1778 DROP 9 15910000 - 0010B8 4144 0004 00004 1779 LA 4,4(4) . GO TO NEXT JOB STREAM 15920000 - 0010BC 4650 103C 0107C 1780 BCT 5,IPLLOOP . DO FOR EACH STREAM 15930000 - 0010C0 D202 005D 1285 0005D 012C5 1781 MVC EXTNEW+5(3),SOSEXNEW reactivate ext interrupt handler 15935002 - 0010C6 0A4B 1782 SVC C'.' . THEN ENTER TRAFFIC CONTROLLER 15940000 -1 Sample Operating System Version 2.00 Page 46 - Active Usings: PROGRAM,R0 PROGRAM+X'1040',R1 PCB,R2 SA,R8 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -00010C8 00000004 1784 STREAMS DC F'4' . NUMBER OF STREAMS 15960002 -0 010CC 1786 UCBTAB EQU * . TABLE OF PTRS TO UCB BLOCKS 15980000 - 0010CC 000010EC 1787 DC A(UCBLP1) 15990000 - 0010D0 000010F4 1788 DC A(UCBLP2) 16000000 - 0010D4 000010FC 1789 DC A(UCBLP3) 16003002 - 0010D8 00001104 1790 DC A(UCBLP4) 16006002 -0 010DC 1792 KEYTAB EQU * . TABLE OF PROTECTION KEYS 16020000 - 0010DC 00100000 1793 DC X'00100000' storage key for stream 1 region 16030002 - 0010E0 00200000 1794 DC X'00200000' storage key for stream 2 region 16034002 - 0010E4 00300000 1795 DC X'00300000' storage key for stream 3 region 16038002 - 0010E8 00400000 1796 DC X'00400000' storage key for stream 4 region 16042002 -00010EC 00000EA400000EC4 1798 UCBLP1 DC A(UCBRDR1,UCBPRT1) 16060000 - 0010F4 00000EE400000F04 1799 UCBLP2 DC A(UCBRDR2,UCBPRT2) 16070000 - 0010FC 00000F2400000F44 1800 UCBLP3 DC A(UCBRDR3,UCBPRT3) 16073002 - 001104 00000F6400000F84 1801 UCBLP4 DC A(UCBRDR4,UCBPRT4) 16076002 -0001110 1803 DS 0D 16090000 - 001110 4040404040404040 1804 IPLPCB DC CL8' ' . IPL ROUTINE PCB 16100000 - 001118 0000111000001110 1805 DC 4A(IPLPCB) 16110000 - 001128 FF000000 1806 DC X'FF000000' . INITIALIZED FLAGS 16120000 - 00112C 0000000100000000 1807 DC F'1,0' 16130000 - 001134 0000000000000000 1808 DC 5F'0,0' 16140000 - 00115C 0002000000000000 1809 DC X'0002000000000000' 16150000 - 001164 1810 DS CL76 16160000 - 0011B0 1811 DS CL84 16170000 - 001204 1812 DS CL84 16180000 -0001258 00000148 1814 IPLAPCBS DC A(LENPCB) . ALLOC LIST FOR PCB'S 16200000 - 00125C 00000000 1815 DC A(0) 16210000 - 001260 00000008 1816 DC F'8' 16220000 - 001264 01000000 1817 CORESIZ DC A(CORESIZE) . BYTES OF CORE IN OBJECT MACHINE 16230000 -0001268 1819 DS 0D 16250000 - 001268 5CC9C2E2E4D74040 1820 TYPPCB DC CL8'*IBSUP' . A TEMPLATE *IBSUP PCB 16260000 - 001270 0000000000000000 1821 DC 4A(0) 16270000 - 001280 00000000 1822 TEMPLATE DC X'00000000' . INITIALIZED FLAGS 16280000 - 001284 0000000100000000 1823 DC F'1,0' 16290000 - 00128C 0000000000000000 1824 DC 5F'0,0' 16300000 - 0012B4 FF000000000012CC 1825 DC X'FF00000000',AL3(JSP) 16310000 - 00054 1826 TYPLEN EQU *-TYPPCB 16320000 - 0012BC 8200 0018 00018 1827 EXINTRPT LPSW EXTOLD ignore external interrupts 16321002 - 0012C0 1828 DS 0F align 16322002 - 0012C0 00 1829 DC X'00' filler 16323002 - 0012C1 000FC4 1830 SOSIONEW DC AL3(IOHANDL) sample OS IO new PSW instruction addr 16324002 - 0012C4 00 1831 DC X'00' filler 16325002 - 0012C5 00027A 1832 SOSEXNEW DC AL3(EXTHANDL) sample OS ext new PSW instruction addr 16326002 - 0012C8 00 1833 DC X'00' filler 16327002 - 0012C9 0012BC 1834 IPLEXNEW DC AL3(EXINTRPT) IPLRTN ext new PSW instruction addr 16328002 -1 Sample Operating System Version 2.00 Page 47 - Active Usings: PROGRAM,R0 PROGRAM+X'1040',R1 PCB,R2 SA,R8 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 1836 *********************************************************************** 16340000 - 1837 * * 16350000 - 1838 * JOB STREAM PROCESSOR * 16360000 - 1839 * * 16370000 - 1840 *********************************************************************** 16380000 -0 012CC 1842 JSP EQU * . THE JOB STREAM PROCESSOR 16400000 - 0012CC 0510 1843 BALR 1,0 . (PROCESS *IBSUP) 16410000 - R:1 012CE 1844 USING *,1 . ESTABLISH ADDRESSING 16420000 - 0012CE 4120 1392 01660 1845 LA 2,JSPSUSEM . LOCK OURSELVES UNTIL 16430000 - 0012D2 0AD7 1846 SVC C'P' . WE CAN ALLOCATE STORAGE 16440000 - 0012D4 4120 139A 01668 1847 LA 2,JSPAAS . READY TO ALLOCATE 16450000 - R:2 00000 1848 USING XAX,2 16460000 - 0012D8 0AC5 1849 SVC C'E' . ALLOCATE 16470000 - 0012DA 58C0 2004 00004 1850 L 12,XAXADDR . PTR TO AUTO AREA 16480000 - 1851 DROP 2 16490000 - R:C 00000 1852 USING JSPAS,12 . USE FOR ADDRESSING 16500000 - 0012DE 4120 1392 01660 1853 LA 2,JSPSUSEM . UNLOCK OURSELVES 16510000 - 0012E2 0AE5 1854 SVC C'V' 16520000 - 0012E4 D207 C164 140A 00164 016D8 1855 MVC TREAD+0(8),=CL8'*IN' . INITIALIZE VALUES IN AUTOMATIC 16530000 - 0012EA D203 C16C 1432 0016C 01700 1856 MVC TREAD+8(4),=F'8' . STORAGE 16540000 - 0012F0 D203 C170 1436 00170 01704 1857 MVC TREAD+12(4),=C'READ' 16550000 - 0012F6 4120 C084 00084 1858 LA 2,CARD 16560000 - 0012FA 5020 C174 00174 1859 ST 2,ACARD 16570000 - 0012FE D207 C190 1412 00190 016E0 1860 MVC USERL+0(8),=CL8'USERPROG' 16580000 - 001304 D20B C178 1352 00178 01620 1861 MVC WRITE(12),SKIP 16590000 - 00130A D203 C184 143A 00184 01708 1862 MVC WRITE+12(4),=C'PRIN' 16600000 - 001310 4150 C000 00000 1863 LA 5,LINE 16610000 - 001314 5050 C188 00188 1864 ST 5,WRITE+16 16620000 - 001318 D203 C1B0 138E 001B0 0165C 1865 MVC CORE+8(4),PAGESIZE align to page boundary 16630002 - 00131E D207 C1B8 1412 001B8 016E0 1866 MVC TALK+0(8),=CL8'USERPROG' 16640000 - 001324 D203 C1C0 143E 001C0 0170C 1867 MVC TALK+8(4),=F'12' 16650000 - 00132A D203 C1D8 1442 001D8 01710 1868 MVC ANYBACK+8(4),=F'1' 16660000 - 001330 D203 C1B4 1446 001B4 01714 1869 MVC RLDTEMP,=A(0) 16670000 - 001336 5040 C18C 0018C 1870 ST 4,KEY . STORE KEY 16680000 - 00133A 1853 1871 LR 5,3 . GET PTR TO UCB PTR BLOCK 16690000 - 00133C 5835 0000 00000 1872 L 3,0(5) . GET READER POINTER 16700000 - 001340 4120 1362 01630 1873 LA 2,INSEQ . READY TO CREATE & START *IN 16710000 - 001344 0AC3 1874 SVC C'C' . CREATE 16720000 - 001346 0AE8 1875 SVC C'Y' . START 16730000 - 001348 5835 0004 00004 1876 L 3,4(5) . GET PTR TO PRINTER UCB 16740000 - 00134C 4120 136E 0163C 1877 LA 2,OUTSEQ . READY TO CREATE & START *OUT 16750000 - 001350 0AC3 1878 SVC C'C' . CREATE 16760000 - 001352 0AE8 1879 SVC C'Y' . START 16770000 -0001354 4120 C164 00164 1881 LOOP LA 2,TREAD . READT TO READ A CARD 16790000 - 001358 0AE2 1882 SVC C'S' . START TO READ 16800000 - 00135A D203 C0DC 144A 000DC 01718 1883 MVC RREPLY1,=F'132' . 132 CHARS FOR REPLY 16810000 - 001360 4120 C0D4 000D4 1884 LA 2,RREPLY 16820000 - 001364 0AD9 1885 SVC C'R' . LISTEN FOR REPLY 16830000 - 001366 D501 C0E0 145A 000E0 01728 1886 CLC REPLY(2),=C'OK' . IS REPLY 'OK'? 16840000 - 00136C 4770 10B0 0137E 1887 BNE STOP . IF NOT, STOP 16850000 - 001370 D504 145C C084 0172A 00084 1888 CLC =C'$JOB,',CARD . HAVE WE A JOB CARD? 16860000 - 001376 4780 10B6 01384 1889 BE JOB . GOOD! 16870000 - 00137A 47F0 1086 01354 1890 B LOOP . ELSE LOOP 16880000 -1 Sample Operating System Version 2.00 Page 48 - Active Usings: PROGRAM,R0 PROGRAM+X'12CE',R1 SA,R8 JSPAS,R12 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -000137E 4120 134A 01618 1891 STOP LA 2,JSPNEVER . WAIT FOR A "V" OPERATION 16890000 - 001382 0AD7 1892 SVC C'P' . THAT NEVER COMES 16900000 -0001384 9200 C1DD 001DD 1894 JOB MVI LOADED,X'00' . REMEMBER NOT LOADED 16920000 - 001388 D283 C000 141A 00000 016E8 1895 MVC LINE,=CL8' ' . CLEAR A LINE, PUT IN 16930000 - 00138E D27B C008 C007 00008 00007 1896 MVC LINE+8(124),LINE+7 .ALL BLANKS 16940000 - 001394 D24F C000 C084 00000 00084 1897 MVC LINE(80),CARD . GET READY TO SEND $JOB CARD 16950000 - 00139A 4120 C178 00178 1898 LA 2,WRITE . TO PRINTER 16960000 - 00139E 0AE2 1899 SVC C'S' . SEND IT 16970000 - 0013A0 4120 C0D4 000D4 1900 LA 2,RREPLY 16980000 - 0013A4 0AD9 1901 SVC C'R' . AND WAIT FOR REPLY 16990000 - 0013A6 4120 C190 00190 1902 LA 2,USERL . CREATE USERPROG 17000000 - 0013AA 0AC3 1903 SVC C'C' 17010000 - 0013AC 4140 C088 00088 1904 LA 4,CARD+4 . START TO SCAN CARD 17020000 - 0013B0 4530 131C 015EA 1905 BAL 3,SCAN . GET NEXT TOKEN 17030000 - 0013B4 0650 1906 BCTR 5,0 . less one to remove K 17040002 - 0013B6 5650 138A 01658 1907 O 5,COREPKLN . length of packed size for execute 17049002 - 0013BA 4450 137A 01648 1908 EX 5,COREPACK . pack core digits 17058002 - 0013BE 4F80 1382 01650 1909 CVB 8,COREPCKD . convert core requested to binary 17067002 - 0013C2 1B99 1910 SR 9,9 . is core .. 17076002 - 0013C4 8C80 0002 00002 1911 SRDL 8,2 . .. modulo four .. 17085002 - 0013C8 1299 1912 LTR 9,9 . .. equal zero? 17094002 - 0013CA 4780 1104 013D2 1913 BZ COREOK . -> yes, use it 17103002 - 0013CE 4180 8001 00001 1914 LA 8,1(,8) . -> no, up one page 17112002 - 0013D2 8980 000C 0000C 1915 COREOK SLL 8,12 . core bytes, rounded up to full pages 17121002 - 0013D6 5080 C1A8 001A8 1916 ST 8,CORE . remember core requirement 17130002 - 0013DA 4530 131C 015EA 1917 ASGNUNIT BAL 3,SCAN . GET NEXT TOKEN 17150000 - 0013DE 957E 4000 00000 1918 CLI 0(4),C'=' . IS IT AN '='? 17160000 - 0013E2 4770 1194 01462 1919 BNE LOAD . IF NOT, LOAD IN THE OBJECT DECK 17170000 - 0013E6 955C 9000 00000 1920 CLI 0(9),C'*' . HAS USER NAMED IT STARTING 17180000 - 0013EA 4780 12C8 01596 1921 BE EXPUNGE . WITH '*'? IF SO, THROW HIM OUT 17190000 - 0013EE 4120 C19C 0019C 1922 LA 2,SEQ . ELSE CREATE A PROCESS 17200000 - 0013F2 D207 C19C 141A 0019C 016E8 1923 MVC SEQ,=CL8' ' . BLANK OUT THE NAME 17210000 - 0013F8 4450 1154 01422 1924 EX 5,UNAMMOV . THEN MOVE THE RELEVANT 17220000 - 0013FC 0AC3 1925 SVC C'C' . CHARACTERS AND CREATE 17230000 - 0013FE 4120 C19C 0019C 1926 LA 2,SEQ . WE'LL START IT IN A MOMENT 17240000 - 001402 4530 131C 015EA 1927 BAL 3,SCAN . SCAN AGAIN 17250000 - 001406 4450 115A 01428 1928 EX 5,CMPIN . IS IT 'IN'? 17260000 - 00140A 4780 116C 0143A 1929 BE ASIN . IF SO, ASSIGN IT AS IN 17270000 - 00140E 4450 1160 0142E 1930 EX 5,CMPOUT . IF IT'S 'OUT' 17280000 - 001412 4780 117C 0144A 1931 BE ASOUT . ASSIGN IT AS OUT 17290000 - 001416 4450 1166 01434 1932 EX 5,CMPEXCP . IS IT 'EXCP'? 17300000 - 00141A 4780 1184 01452 1933 BE ASEXCP . IF SO, ASSIGN IT AS EXCP 17310000 - 00141E 47F0 12C8 01596 1934 B EXPUNGE . ERROR: GO ON TO NEXT JOB 17320000 - 001422 D200 C19C 9000 0019C 00000 1935 UNAMMOV MVC SEQ(0),0(9) . MOVE THE UNIT'S PROCESS NAME 17330000 - 001428 D500 9000 1461 00000 0172F 1936 CMPIN CLC 0(0,9),=C'IN ' . DOES IT SAY 'IN'? 17340000 - 00142E D500 9000 144E 00000 0171C 1937 CMPOUT CLC 0(0,9),=C'OUT ' . DOES IT SAY 'OUT'? 17350000 - 001434 D500 9000 1464 00000 01732 1938 CMPEXCP CLC 0(0,9),=C'EXCP ' . DOES IT SAY 'EXCP'? 17360000 -000143A 41B0 140A 016D8 1940 ASIN LA 11,=CL8'*IN' . POINT TO NAME OF READER HANDLER 17380000 - 00143E D203 C1A4 1452 001A4 01720 1941 SETDIM MVC UNITRTN,=A(DIM) . USE DIM AS THE INTERFACE 17390000 - 001444 0AE8 1942 SVC C'Y' 17400000 - 001446 47F0 110C 013DA 1943 B ASGNUNIT 17410000 - 00144A 41B0 1422 016F0 1944 ASOUT LA 11,=CL8'*OUT' . POINT TO NAME OF PRINTER HANDLER 17420000 - 00144E 47F0 1170 0143E 1945 B SETDIM 17430000 -1 Sample Operating System Version 2.00 Page 49 - Active Usings: PROGRAM,R0 PROGRAM+X'12CE',R1 SA,R8 JSPAS,R12 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0001452 D203 C1A4 1456 001A4 01724 1946 ASEXCP MVC UNITRTN,=A(EXCPHNDL) . USE FOR USER SUPPLIED 17440000 - 001458 58B0 C18C 0018C 1947 L 11,KEY 17450000 - 00145C 0AE8 1948 SVC C'Y' . I/O ROUTINE 17460000 - 00145E 47F0 110C 013DA 1949 B ASGNUNIT 17470000 -0001462 4120 C1A8 001A8 1951 LOAD LA 2,CORE . READY TO ALLOCATE THE REGION 17490000 - 001466 0AC1 1952 SVC C'A' . AND ALLOCATE IT 17500000 - 001468 92FF C1DD 001DD 1953 MVI LOADED,X'FF' . REMEMBER THAT WE'RE LOADED 17510000 - 00146C 5890 C1AC 001AC 1954 L 9,CORE+4 . GET THE FIRST ADDRESS 17520000 - 001470 5840 C18C 0018C 1955 L 4,KEY . GET THE KEY 17530000 - 001474 8840 0010 00010 1956 SRL 4,16 17540000 - 001478 5640 13A2 01670 1957 O 4,FETCHPRT fetch protected 17545002 - 00147C 1839 1958 LR 3,9 . GET THE BLOCK FOLLOWING OURS 17550000 - 00147E 1A38 1959 AR 3,8 17560000 - 001480 5B30 138E 0165C 1960 LOADSK S 3,PAGESIZE . get the previous block, page aligned 17570002 - 001484 1939 1961 CR 3,9 . HAVE WE PASSED THE START? 17580000 - 001486 4740 11C4 01492 1962 BL LOADLOOP . IF SO, START LOADING 17590000 - 1963 * SSKE 4,3 . else set this block to the key 17600002 - 00148A B22B0043 1964 DC X'B22B0043' Assembler (XF) doesn't support SSKE 17603002 - 00148E 47F0 11B2 01480 1965 B LOADSK . AND BRANCH BACK 17610000 - 001492 4120 C164 00164 1966 LOADLOOP LA 2,TREAD . READ IN OBJECT DECK 17620000 - 001496 0AE2 1967 SVC C'S' . GET A CARD A'READING 17630000 - 001498 D203 C0DC 144A 000DC 01718 1968 MVC RREPLY1,=F'132' 17640000 - 00149E 4120 C0D4 000D4 1969 LA 2,RREPLY 17650000 - 0014A2 0AD9 1970 SVC C'R' . WAIT FOR ANSWER 17660000 - 0014A4 D502 C085 1469 00085 01737 1971 CLC CARD+1(3),=C'TXT' . IS IT A TXT CARD? 17670000 - 0014AA 4780 11F8 014C6 1972 BE TXTCARD 17680000 - 0014AE D502 C085 146C 00085 0173A 1973 CLC CARD+1(3),=C'RLD' . IS IT A RLD CARD? 17690000 - 0014B4 4780 1212 014E0 1974 BE RLDCARD 17700000 - 0014B8 D502 C085 146F 00085 0173D 1975 CLC CARD+1(3),=C'END' . IS IT AN END CARD? 17710000 - 0014BE 4780 1270 0153E 1976 BE ENDCARD 17720000 - 0014C2 47F0 11C4 01492 1977 B LOADLOOP . IF NONE, IGNORE. 17730000 -00014C6 58A0 C088 00088 1979 TXTCARD L 10,CARD+4 . GET THE RELATIVE ADDRESS 17750000 - 0014CA 1AA9 1980 AR 10,9 . PLUS THE ABSOLUTE ADDRESS 17760000 - 0014CC 48B0 C08E 0008E 1981 LH 11,CARD+10 . GET THE COUNT, 17770000 - 0014D0 06B0 1982 BCTR 11,0 . DECREMENTED 17780000 - 0014D2 44B0 120C 014DA 1983 EX 11,TXTMOV . AND MOVE THE TEXT 17790000 - 0014D6 47F0 11C4 01492 1984 B LOADLOOP . AND READ ANOTHER CARD! OH WOW! 17800000 - 0014DA D200 A000 C094 00000 00094 1985 TXTMOV MVC 0(0,10),CARD+16 17810000 -00014E0 48B0 C08E 0008E 1987 RLDCARD LH 11,CARD+10 . GET THE BYTE COUNT 17830000 - 0014E4 41D0 C098 00098 1988 LA 13,CARD+20 . AND AN INDEX INTO THE CARD 17840000 - 0014E8 58AD 0000 00000 1989 RLDLOOP L 10,0(13) . GET THE LOCATION TO BE RLD'D 17850000 - 0014EC 1AA9 1990 AR 10,9 . GET THE ABSOLUTE ADDRESS 17860000 - 0014EE 9103 D003 00003 1991 TM 3(13),X'03' . IS IT A FULLWORD? 17870000 - 0014F2 4770 1252 01520 1992 BNZ NOTALGND . IF NO, HANDLE AS THREE BYTES 17880000 - 0014F6 587A 0000 00000 1993 L 7,0(10) . GET THAT WORD (HAD BETTER BE 17890000 - 0014FA 1A79 1994 AR 7,9 . ONE); ADD THE RELOCATION 17900000 - 0014FC 507A 0000 00000 1995 ST 7,0(10) . ADDRESS, AND STORE IT BACK 17910000 - 001500 9101 D000 00000 1996 RLDCONT TM 0(13),X'01' . CHECK IF LONG OR SHORT FIELD 17920000 - 001504 4770 1242 01510 1997 BNZ SHORT . AND BRANCH ACCORDINGLY 17930000 - 001508 4140 0008 00008 1998 LA 4,8 . SKIP EIGHT BYTES 17940000 - 00150C 47F0 1246 01514 1999 B RLDFINI 17950000 - 001510 4140 0004 00004 2000 SHORT LA 4,4 . SKIP FOUR BYTES 17960000 -1 Sample Operating System Version 2.00 Page 50 - Active Usings: PROGRAM,R0 PROGRAM+X'12CE',R1 SA,R8 JSPAS,R12 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0001514 1AD4 2001 RLDFINI AR 13,4 . INCREMENT THE CARD INDEX 17970000 - 001516 1BB4 2002 SR 11,4 . DECREMENT THE BYTE COUNT 17980000 - 001518 4720 121A 014E8 2003 BP RLDLOOP . AND TRY AGAIN 17990000 - 00151C 47F0 11C4 01492 2004 B LOADLOOP . OR READ ANOTHER CARD 18000000 - 001520 D202 C1B5 A000 001B5 00000 2005 NOTALGND MVC RLDTEMP+1(3),0(10) . PUT ADDRESS HERE 18010000 - 001526 5870 C1B4 001B4 2006 L 7,RLDTEMP . RELOCATE IT 18020000 - 00152A 1A79 2007 AR 7,9 18030000 - 00152C 5070 C1B4 001B4 2008 ST 7,RLDTEMP . AND PUT IT BACK TO 18040000 - 001530 D202 A000 C1B5 00000 001B5 2009 MVC 0(3,10),RLDTEMP+1 . WHERE IT BELONGS 18050000 - 001536 9400 C1B4 001B4 2010 NI RLDTEMP,X'00' . CLEAR OUT TEMPORARY 18060000 - 00153A 47F0 1232 01500 2011 B RLDCONT . AND LOOP BACK 18070000 -000153E 4120 C190 00190 2013 ENDCARD LA 2,USERL . FIND THE PCB FOR USERPROG 18090000 - 001542 0AD5 2014 SVC C'N' 18100000 - 001544 5840 C198 00198 2015 L 4,USERL+8 . GET THE ADDRESS 18110000 - R:4 00000 2016 USING PCB,4 18120000 - 001548 92FF 4019 00019 2017 MVI PCBBLOKT,X'FF' . TEMPORARILY BLOCK IT 18130000 - 00154C 5090 C198 00198 2018 ST 9,USERL+8 . STORE THE BEGINNING ADDRESS 18140000 - 001550 0AE8 2019 SVC C'Y' . THEN START IT 18150000 - 001552 5850 C18C 0018C 2020 L 5,KEY . GET THE KEY 18160000 - 001556 5650 404C 0004C 2021 O 5,PCBISA+0 . THEN OR THIS INTO THE 18170000 - 00155A 5050 404C 0004C 2022 ST 5,PCBISA+0 . FIRST WORD OF THE PCB 18180000 - 00155E 9601 404D 0004D 2023 OI PCBISA+1,X'01' . OR IN A 'PROGRAM STATE' BIT 18190000 - 001562 9200 4019 00019 2024 MVI PCBBLOKT,X'00' . AND THEN UNBLOCK IT 18200000 - 2025 DROP 4 18210000 - 001566 4120 C1B8 001B8 2026 LA 2,TALK . LISTEN TO WHAT IT SAYS 18220000 - 00156A 0AD9 2027 SVC C'R' 18230000 -000156C D207 C000 141A 00000 016E8 2029 MVC LINE(8),=CL8' ' . IF JOB FINISHED, CLEAR A LINE 18250000 - 001572 D27B C008 C007 00008 00007 2030 MVC LINE+8(124),LINE+7 18260000 - 001578 D20B C000 C1C4 00000 001C4 2031 MVC LINE(12),TALK+12 . MOVE THE MESSAGE ONTO THE LINE 18270000 - 00157E 4120 C178 00178 2032 LA 2,WRITE . AND SAY TO WRITE IT 18280000 - 001582 0AE2 2033 SVC C'S' 18290000 - 001584 4120 C1D0 001D0 2034 LA 2,ANYBACK 18300000 - 001588 0AD9 2035 SVC C'R' 18310000 - 00158A 4120 1352 01620 2036 LA 2,SKIP . SKIP TO THE TOP OF THE NEXT PAGE 18320000 - 00158E 0AE2 2037 SVC C'S' 18330000 - 001590 4120 C1D0 001D0 2038 LA 2,ANYBACK 18340000 - 001594 0AD9 2039 SVC C'R' 18350000 -0001596 5850 0270 00270 2041 EXPUNGE L 5,RUNNING . EXPUNGE A JOB: LOOK AT ALL PCBS 18370000 - 00159A 4120 C19C 0019C 2042 LA 2,SEQ 18380000 - R:5 00000 2043 USING PCB,5 18390000 - 00159E D207 C19C 5000 0019C 00000 2044 EXPLOOP MVC SEQ(8),PCBNAME . GET THE PROCESS NAME 18400000 - 0015A4 5840 5008 00008 2045 L 4,PCBNPTG . GET THE NEXT PTR 18410000 - 0015A8 955C C19C 0019C 2046 CLI SEQ+0,C'*' . IS IT A '*' PROCESS? 18420000 - 0015AC 4780 12E6 015B4 2047 BE EXPNXT . IF SO, SKIP OVER 18430000 - 0015B0 0AE9 2048 SVC C'Z' . ELSE STOP IT 18440000 - 0015B2 0AC4 2049 SVC C'D' . AND DESTROY IT 18450000 - 0015B4 1854 2050 EXPNXT LR 5,4 . GO TO THE NEXT PCB 18460000 - 0015B6 5950 0270 00270 2051 C 5,RUNNING . ARE WE THROUGH? 18470000 - 0015BA 4770 12D0 0159E 2052 BNE EXPLOOP . IF NOT, LOOP AGAIN 18480000 - 0015BE 9500 C1DD 001DD 2053 CLI LOADED,X'00' . WAS CORE ALLOCATED? 18490000 - 0015C2 4780 1086 01354 2054 BE LOOP . IF NOT, GO READ THE NEXT $JOB CARD 18500000 - 0015C6 4140 0008 00008 2055 LA 4,8 . set zero key and fetch protect 18510002 -1 Sample Operating System Version 2.00 Page 51 - Active Usings: PROGRAM,R0 PROGRAM+X'12CE',R1 PCB,R5 SA,R8 JSPAS,R12 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -00015CA 1839 2056 LR 3,9 . AND A POINTER TO THE NEXT 18520000 - 0015CC 1A38 2057 AR 3,8 . BLOCK AFTER OURS 18530000 - 0015CE 5B30 138E 0165C 2058 LOADCL S 3,PAGESIZE . get the previous block, page aligned 18540002 - 0015D2 1939 2059 CR 3,9 . ARE WE THROUGH? 18550000 - 0015D4 4740 1312 015E0 2060 BL LOADD . IF SO, GO FREE CORE 18560000 - 2061 * SSKE 4,3 . else clear storage key 18570002 - 0015D8 B22B0043 2062 DC X'B22B0043' Assembler (XF) doesn't support SSKE 18573002 - 0015DC 47F0 1300 015CE 2063 B LOADCL . AND LOOP BACK 18580000 - 0015E0 4120 C1A8 001A8 2064 LOADD LA 2,CORE 18590000 - 0015E4 0AC6 2065 SVC C'F' . FREE THE STORAGE 18600000 - 0015E6 47F0 1086 01354 2066 B LOOP . READ ANOTHER $JOB CARD 18610000 -00015EA 1B55 2068 SCAN SR 5,5 . START THE TOKEN COUNT AT ZERO 18630000 - 0015EC 4144 0001 00001 2069 SCANLOOP LA 4,1(4) . GO TO NEXT CHARACTER 18640000 - 0015F0 956B 4000 00000 2070 CLI 0(4),C',' . DO WE HAVE A DELIMITER? IF SO, 18650000 - 0015F4 4780 1342 01610 2071 BE TOKSTART 18660000 - 0015F8 957E 4000 00000 2072 CLI 0(4),C'=' . DITTO 18670000 - 0015FC 4780 1342 01610 2073 BE TOKSTART 18680000 - 001600 9540 4000 00000 2074 CLI 0(4),C' ' . DITTO 18690000 - 001604 4780 1342 01610 2075 BE TOKSTART 18700000 - 001608 4155 0001 00001 2076 LA 5,1(5) . AND UP COUNT 18710000 - 00160C 47F0 131E 015EC 2077 B SCANLOOP . AND LOOP 18720000 - 001610 1894 2078 TOKSTART LR 9,4 . SET REG9 TO START 18730000 - 001612 1B95 2079 SR 9,5 . OF THIS TOKEN 18740000 - 001614 0650 2080 BCTR 5,0 . LESS ONE FOR EXECUTE INSTRUCTION 18750000 - 001616 07F3 2081 BR 3 18760000 --001618 0000000000000000 2083 JSPNEVER DC F'0,0' . A GOOD WAY TO DIE: P(JSPNEVER) 18780000 - 001620 5CD6E4E340404040 2084 SKIP DC CL8'*OUT' . MESSAGE BLOCK FOR A NEW PAGE 18790000 - 001628 00000008 2085 DC F'8' 18800000 - 00162C E2E3C3F1 2086 DC CL4'STC1' 18810000 - 001630 5CC9D54040404040 2087 INSEQ DC CL8'*IN' . SEQ TO CREATE & START *IN 18820000 - 001638 00000AC6 2088 DC A(RDRHANDL) 18830000 - 00163C 5CD6E4E340404040 2089 OUTSEQ DC CL8'*OUT' . SEQ TO CREATE & START *OUT 18840000 - 001644 00000C48 2090 DC A(PRTHANDL) 18850000 - 001648 F200 1382 9000 01650 00000 2091 COREPACK PACK COREPCKD(1),0(1,9) . executed to pack core size req'd 18860002 - 001650 2092 COREPCKD DS D . packed core requirement goes here 18880002 - 001658 00000070 2093 COREPKLN DC X'00000070' . length of packed size for execute 18900002 - 00165C 00001000 2094 PAGESIZE DC F'4096' . page size for core computation 18920002 - 001660 0000000100000000 2095 JSPSUSEM DC F'1,0' . SEMAPHORE TO LOCK ROUTINE 18990000 - 001668 000001E0 2096 JSPAAS DC A(LENJSPAS) . ALLOCATE LIST FOR AUTO STORAGE 19000000 - 00166C 2097 DS A 19010000 - 001670 00000008 2098 FETCHPRT DC F'8' reused to or in fetch protection 19020002 -1 Sample Operating System Version 2.00 Page 52 - Active Usings: PROGRAM,R0 PROGRAM+X'12CE',R1 PCB,R5 SA,R8 JSPAS,R12 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 2100 *********************************************************************** 19040000 - 2101 * * 19050000 - 2102 * DEVICE INTERFACE MODULE * 19060000 - 2103 * * 19070000 - 2104 * FUNCTION: TO INTERFACE BETWEEN USERPROG AND DEVICE HANDLER * 19080000 - 2105 * DATABASES: NONE * 19090000 - 2106 * ROUTINES USED: XA, XP, XV, XR, XS * 19100000 - 2107 * PROCEDURE: ALLOCATE AUTOMATIC STORAGE; START TO READ MESSAGE * 19110000 - 2108 * FROM USER; SEND MESSAGE TO DEVICE HANDLER; * 19120000 - 2109 * CONTINUE LOOPING, SENDING MESSAGES FROM USER TO * 19130000 - 2110 * DEVICE HANDLER AND BACK. * 19140000 - 2111 * ERROR CHECKS: NONE * 19150000 - 2112 * INTERRUPTS: ON * 19160000 - 2113 * USER ACCESS: YES * 19170000 - 2114 * * 19180000 - 2115 *********************************************************************** 19190000 -0 01674 2117 DIM EQU * . THE DEVICE INTERFACE MODULE 19210000 - 001674 0510 2118 BALR 1,0 19220000 - R:1 01676 2119 USING *,1 . ESTABLISH ADDRESSING 19230000 - 001676 4120 1042 016B8 2120 LA 2,DIMSEM . LOCK UNTIL GET STORAGE 19240000 - 00167A 0AD7 2121 SVC C'P' 19250000 - 00167C 4120 104A 016C0 2122 LA 2,DIMAAS . READY TO ALLOCATE STORAGE 19260000 - R:2 00000 2123 USING XAX,2 19270000 - 001680 0AC5 2124 SVC C'E' . DO IT 19280000 - 001682 58C0 2004 00004 2125 L 12,XAXADDR . GET THE ADDRESS 19290000 - 2126 DROP 2 19300000 - 001686 4120 1042 016B8 2127 LA 2,DIMSEM . UNLOCK OURSELVES 19310000 - 00168A 0AE5 2128 SVC C'V' 19320000 - R:C 00000 2129 USING DIMAS,12 . USE 12 FOR AUTO STORAGE 19330000 - 00168C D207 C090 B000 00090 00000 2130 MVC DIMLMS,0(11) . MOVE NAME OF RECIEVER 19340000 - 001692 4180 0084 00084 2131 LA 8,132 . REG 8 = SIZE OF MESSAGE 19350000 - 001696 5080 C008 00008 2132 DIMLOOP ST 8,DIMMSG+8 . GET READY TO READ A MESSAGE 19360000 - 00169A 4120 C000 00000 2133 LA 2,DIMMSG 19370000 - 00169E 0AD9 2134 SVC C'R' . READ 19380000 - 0016A0 D207 C098 C000 00098 00000 2135 MVC DIMTEMP,DIMMSG . SAVE SENDER NAME 19390000 - 0016A6 D207 C000 C090 00000 00090 2136 MVC DIMMSG,DIMLMS . SEND IT BACK TO THE LAST GUY 19400000 - 0016AC 0AE2 2137 SVC C'S' . SEND IT 19410000 - 0016AE D207 C090 C098 00090 00098 2138 MVC DIMLMS,DIMTEMP . AND REMEMBER WHO TO SEND TO NEXT 19420000 - 0016B4 47F0 1020 01696 2139 B DIMLOOP . RELOOP 19430000 - 0016B8 0000000100000000 2140 DIMSEM DC F'1,0' . SEMAPHORE FOR ENTRY 19440000 - 0016C0 000000A0 2141 DIMAAS DC A(DIMLEN) . ALLOCATE SEQ FOR AUTO STORAGE 19450000 - 0016C4 00000000 2142 DC A(0) 19460000 - 0016C8 00000008 2143 DC F'8' 19470000 - 2144 DROP 12 19480000 -1 Sample Operating System Version 2.00 Page 53 - Active Usings: PROGRAM,R0 PROGRAM+X'1676',R1 PCB,R5 SA,R8 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -00016D0 2146 LTORG 19500000 - 0016D0 0000000000FFE8C0 2147 =A(0,CORESIZE-(VERYEND-PROGRAM)) - 0016D8 5CC9D54040404040 2148 =CL8'*IN' - 0016E0 E4E2C5D9D7D9D6C7 2149 =CL8'USERPROG' - 0016E8 4040404040404040 2150 =CL8' ' - 0016F0 5CD6E4E340404040 2151 =CL8'*OUT' - 0016F8 00000EA4 2152 =A(UCBTABLE) - 0016FC 00000FC4 2153 =A(UCBTBEND) - 001700 00000008 2154 =F'8' - 001704 D9C5C1C4 2155 =C'READ' - 001708 D7D9C9D5 2156 =C'PRIN' - 00170C 0000000C 2157 =F'12' - 001710 00000001 2158 =F'1' - 001714 00000000 2159 =A(0) - 001718 00000084 2160 =F'132' - 00171C D6E4E340 2161 =C'OUT ' - 001720 00001674 2162 =A(DIM) - 001724 00000D74 2163 =A(EXCPHNDL) - 001728 D6D2 2164 =C'OK' - 00172A 5BD1D6C26B 2165 =C'$JOB,' - 00172F C9D540 2166 =C'IN ' - 001732 C5E7C3D740 2167 =C'EXCP ' - 001737 E3E7E3 2168 =C'TXT' - 00173A D9D3C4 2169 =C'RLD' - 00173D C5D5C4 2170 =C'END' - 001740 2171 VERYEND DS 6D . beginning of free storage 19510004 - 001770 2172 LOADER DS 0D IPL loader goes here 19521002 -1 Sample Operating System Version 2.00 Page 54 - Active Usings: PROGRAM,R0 PROGRAM+X'1676',R1 PCB,R5 SA,R8 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 00000 2174 R0 EQU 0 19521502 - 00001 2175 R1 EQU 1 19522002 - 00002 2176 R2 EQU 2 19522502 - 00003 2177 R3 EQU 3 19523002 - 00004 2178 R4 EQU 4 19523502 - 00005 2179 R5 EQU 5 19524002 - 00006 2180 R6 EQU 6 19524502 - 00007 2181 R7 EQU 7 19525002 - 00008 2182 R8 EQU 8 19525502 - 00009 2183 R9 EQU 9 19526002 - 0000A 2184 R10 EQU 10 19526502 - 0000B 2185 R11 EQU 11 19527002 - 0000C 2186 R12 EQU 12 19527502 - 0000D 2187 R13 EQU 13 19528002 - 0000E 2188 R14 EQU 14 19528502 - 0000F 2189 R15 EQU 15 19529002 - 2190 *********************************************************************** 19530000 - 2191 * * 19540000 - 2192 * DATABASE DEFINITIONS * 19550000 - 2193 * * 19560000 - 2194 *********************************************************************** 19570000 -0000000 00000 00148 2196 PCB DSECT . PROCESS CONTROL BLOCK DEFINITION 19590000 - 000000 2197 PCBNAME DS CL8 . NAME 19600000 - 000008 2198 PCBNPTG DS F . NEXT POINTER THIS GROUP 19610000 - 00000C 2199 PCBLPTG DS F . LAST POINTER THIS GROUP 19620000 - 000010 2200 PCBNPALL DS F . NEXT POINTER ALL 19630000 - 000014 2201 PCBLPALL DS F . LAST POINTER ALL 19640000 - 000018 2202 PCBSTOPT DS C . STOPPED 19650000 - 000019 2203 PCBBLOKT DS C . BLOCKED 19660000 - 00001A 2204 PCBINSMC DS C . IN SMC 19670000 - 00001B 2205 PCBSW DS C . STOP WAITING 19680000 - 00001C 2206 PCBMSC DS CL8 . MESSAGE SEMAPHORE COMMON 19690000 - 000024 2207 PCBMSR DS CL8 . MESSAGE SEMAPHORE RECEIVER 19700000 - 00002C 2208 PCBFM DS F . FIRST MESSAGE 19710000 - 000030 2209 PCBNSW DS F . NEXT SEMAPHORE WAITER 19720000 - 000034 2210 PCBSRS DS CL8 . STOPPER SEMAPHORE 19730000 - 00003C 2211 PCBSES DS CL8 . STOPPEE SEMAPHORE 19740000 - 000044 2212 PCBASIZE DS F . AUTOMATIC STORAGE SIZE 19750000 - 000048 2213 PCBAADDR DS A . AUTOMATIC STORAGE ADDRESS 19760000 - 00004C 2214 PCBISA DS CL84 . INTERRUPT SAVE AREA 19770000 - 0000A0 2215 PCBFSA DS CL84 . FAULT SAVE AREA 19780000 - 0000F4 2216 PCBMSA DS CL84 . MEMORY SAVE AREA 19790000 - 000148 2217 DS 0D . (ALIGN) 19800000 - 00148 2218 LENPCB EQU *-PCB . (LENGTH) 19810000 -0000000 00000 00054 2220 SA DSECT . SAVE AREA DEFINITION 19830000 - 000000 2221 SAPSW DS D . PROGRAM STATUS WORD 19840000 - 000008 2222 SAREGS DS CL64 . REGISTERS 19850000 - 000048 2223 SATEMP DS CL12 . TEMPORARIES 19860000 -0000000 00000 00040 2225 REGS DSECT . REGISTER DEFINITION 19880000 - 000000 2226 REG0 DS F . REGISTER 0 19890000 - 000004 2227 REG1 DS F . REGISTER 1 19900000 - 000008 2228 REG2 DS F . REGISTER 2 19910000 -1 Sample Operating System Version 2.00 Page 55 - Active Usings: PROGRAM,R0 PROGRAM+X'1676',R1 PCB,R5 SA,R8 -0D-Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -000000C 2229 REG3 DS F . REGISTER 3 19920000 - 000010 2230 REG4 DS F . REGISTER 4 19930000 - 000014 2231 REG5 DS F . REGISTER 5 19940000 - 000018 2232 REG6 DS F . REGISTER 6 19950000 - 00001C 2233 REG7 DS F . REGISTER 7 19960000 - 000020 2234 REG8 DS F . REGISTER 8 19970000 - 000024 2235 REG9 DS F . REGISTER 9 19980000 - 000028 2236 REG10 DS F . REGISTER 10 19990000 - 00002C 2237 REG11 DS F . REGISTER 11 20000000 - 000030 2238 REG12 DS F . REGISTER 12 20010000 - 000034 2239 REG13 DS F . REGISTER 13 20020000 - 000038 2240 REG14 DS F . REGISTER 14 20030000 - 00003C 2241 REG15 DS F . REGISTER 15 20040000 -0000000 00000 00008 2243 FSB DSECT . FREE STORAGE BLOCK DEFINITIONS 20060000 - 000000 2244 FSBNEXT DS A . NEXT 20070000 - 000004 2245 FSBSIZE DS F . SIZE 20080000 -0000000 00000 00008 2247 SM DSECT . SEMAPHORE DEFINITION 20100000 - 000000 2248 SMVAL DS F . VALUE 20110000 - 000004 2249 SMPTR DS F . PTR 20120000 -0000000 00000 0000C 2251 MSG DSECT . MESSAGE DEFINITION 20140000 - 000000 2252 MSGSENDR DS A . POINTER TO SENDER'S PCB 20150000 - 000004 2253 MSGNEXT DS A . NEXT 20160000 - 000008 2254 MSGSIZE DS F . SIZE 20170000 - 00000C 2255 MSGTEXT DS 0C . TEXT 20180000 - 0000C 2256 LENMSG EQU *-MSG . (LENGTH) 20190000 -0000000 00000 0000C 2258 XAX DSECT . XA ARGUMENT LIST 20210000 - 000000 2259 XAXSIZE DS F . SIZE 20220000 - 000004 2260 XAXADDR DS F . ADDRESS 20230000 - 000008 2261 XAXALGN DS F . ALIGNMENT 20240000 -0000000 00000 00008 2263 XFX DSECT . XF ARGUMENT LIST 20260000 - 000000 2264 XFXSIZE DS F . SIZE 20270000 - 000004 2265 XFXADDR DS F . ADDRESS 20280000 -0000000 00000 00008 2267 XBX DSECT . XB ARGUMENT LIST 20300000 - 000000 2268 XBXSIZE DS F . SIZE 20310000 - 000004 2269 XBXADDR DS F . ADDRESS 20320000 -0000000 00000 00008 2271 XCX DSECT . XC ARGUMENT LIST 20340000 - 000000 2272 XCXNAME DS CL8 . NAME 20350000 -0000000 00000 00008 2274 XDX DSECT . AD ARGUMENT LIST 20370000 - 000000 2275 XDXNAME DS CL8 . NAME 20380000 -0000000 00000 0000C 2277 XNX DSECT . XN ARGUMENT LIST 20400000 - 000000 2278 XNXNAME DS CL8 . NAME 20410000 - 000008 2279 XNXADDR DS A . ADDRESS 20420000 -0000000 00000 0000C 2281 XRX DSECT . XR ARGUMENT LIST 20440000 - 000000 2282 XRXNAME DS CL8 . NAME 20450000 - 000008 2283 XRXSIZE DS F . SIZE 20460000 -1 Sample Operating System Version 2.00 Page 56 - Active Usings: PROGRAM,R0 PROGRAM+X'1676',R1 PCB,R5 SA,R8 -0D-Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -000000C 2284 XRXTEXT DS 0C . TEXT 20470000 -0000000 00000 0000C 2286 XSX DSECT . XS ARGUMENT LIST 20490000 - 000000 2287 XSXNAME DS CL8 . NAME 20500000 - 000008 2288 XSXSIZE DS F . SIZE 20510000 - 00000C 2289 XSXTEXT DS 0C . TEXT 20520000 -0000000 00000 0000C 2291 XYX DSECT . XY ARGUMENT LIST 20540000 - 000000 2292 XYXNAME DS CL8 . NAME 20550000 - 000008 2293 XYXADDR DS A . ADDR 20560000 -0000000 00000 00008 2295 XZX DSECT . XZ ARGUMENT LIST 20580000 - 000000 2296 XZXNAME DS CL8 . NAME 20590000 -0000000 00000 00080 2298 RDRHAS DSECT . READER HANDLER AUTOMATIC STORAGE 20610000 - 000000 2299 RDRHCCB DS 2F . CCB 20620000 - 000008 2300 RDRHMSG DS CL8 . MESSAGE BLOCK FOR REQUESTS 20630000 - 000010 2301 DS F'8' 20640000 - 000014 2302 DS CL8 20650000 - 00001C 2303 RDRHTEMP DS CL80 . AREA FOR $JOB IN DATA STREAM 20660000 - 00006C 2304 RDRHM DS CL8 . MESSAGE BLOCK FOR REPLY 20670000 - 000074 2305 DS F'2' 20680000 - 000078 2306 DS CL2 20690000 - 00007A 2307 JOBBIT DS 1C 20700000 - 000080 2308 DS 0D 20710000 - 00080 2309 LENRDRHA EQU *-RDRHAS . (LENGTH) 20720000 -0000000 00000 00030 2311 PRTHAS DSECT . PRINTER HANDLER AUTOMATIC STORAGE 20740000 - 000000 2312 PRTHCCB DS 2F . CCB 20750000 - 000008 2313 PRTHMSG DS CL8 . MESSAGE BLOCK FOR REQUESTS 20760000 - 000010 2314 DS F'2' 20770000 - 000014 2315 DS CL8 20780000 - 00001C 2316 PRTHM DS CL8 . MESSAGE BLOCK FOR REPLY 20790000 - 000024 2317 DS F'2' 20800000 - 000028 2318 DS CL2 20810000 - 000030 2319 DS 0D 20820000 - 00030 2320 LENPRTHA EQU *-PRTHAS . (LENGTH) 20830000 -0000000 00000 00030 2322 EXCPHAS DSECT . EXCP HANDLER AUTOMATIC STORAGE 20850000 - 000000 2323 EXCPHMSG DS CL8 . MESSAGE BLOCK FOR REQUESTS 20860000 - 000008 2324 DS F'12' 20870000 - 00000C 2325 DS CL12 20880000 - 000018 2326 EXCPHM DS CL8 . MESSAGE BLOCK FOR REPLY 20890000 - 000020 2327 DS F'12' 20900000 - 000024 2328 DS CL12 20910000 - 000030 2329 DS 0D 20920000 - 00030 2330 LENEXCPA EQU *-EXCPHAS . (LENGTH) 20930000 -0000000 00000 00020 2332 UCB DSECT . UNIT CONTROL BLOCK DEFINITION 20950000 - 000000 2333 UCBADDR DS F . ADDRESS 20960000 - 000004 2334 UCBUS DS FL8 . USER SEMAPHORE 20970000 - 00000C 2335 UCBWS DS FL8 . WAITER SEMAPHORE 20980000 - 000014 2336 UCBCSW DS FL8 . CHANNEL STATUS WORD 20990000 - 00001C 2337 UCBFPR DS CL1 . FAST PROCESSING REQUIRED 21000000 - 000020 2338 DS 0F 21010000 -1 Sample Operating System Version 2.00 Page 57 - Active Usings: PROGRAM,R0 PROGRAM+X'1676',R1 PCB,R5 SA,R8 -0D-Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 00020 2339 UCBLENG EQU *-UCB 21020000 -0000000 00000 001E0 2341 JSPAS DSECT . JSP AUTOMATIC STORAGE 21040000 - 000000 2342 LINE DS CL132 . PRINTED LINE 21050000 - 000084 2343 DS 0F 21060000 - 000084 2344 CARD DS CL80 . CARD READ 21070000 - 0000D4 2345 DS 0F 21080000 - 0000D4 2346 RREPLY DS CL8 . MESSAGE BLOCK FOR REPLIES 21090000 - 0000DC 2347 RREPLY1 DS F 21100000 - 0000E0 2348 REPLY DS CL132 21110000 - 000164 2349 TREAD DS 0F . MESSAGE BLOCK FOR READING 21120000 - 000164 2350 DS CL8'*IN' 21130000 - 00016C 2351 DS F'8' 21140000 - 000170 2352 DS CL4'READ' 21150000 - 000174 2353 ACARD DS A(0) 21160000 - 000178 2354 WRITE DS CL8'*OUT' . MESSAGE BLOCK TO PRINT A LINE 21170000 - 000180 2355 DS F'8' 21180000 - 000184 2356 DS CL4'PRIN' 21190000 - 000188 2357 DS A(LINE) 21200000 - 00018C 2358 KEY DS F 21210000 - 000190 2359 USERL DS CL8'USERPROG' . LIST FOR MANIPULATING USERPROG 21220000 - 000198 2360 DS F 21230000 - 00019C 2361 SEQ DS CL8' ' . COMMON ARG LIST FOR I/O PROCESS 21240000 - 0001A4 2362 UNITRTN DS A 21250000 - 0001A8 2363 CORE DS F . MEMORY ALLOCATED AND FREE 21260000 - 0001AC 2364 DS F . SEQUENCE 21270000 - 0001B0 2365 DS F'4096' align to page boundary 21280002 - 0001B4 2366 RLDTEMP DS F 21290000 - 0001B8 2367 TALK DS CL8'USERPROG' . MESSAGE BLOCK FOR MESSAGE FROM 21300000 - 0001C0 2368 DS F'12' . USERPROG 21310000 - 0001C4 2369 DS CL12 21320000 - 0001D0 2370 ANYBACK DS CL8 . MESSAGE BLOCK FOR IGNORING MESS 21330000 - 0001D8 2371 DS F'1' 21340000 - 0001DC 2372 DS CL1 21350000 - 0001DD 2373 LOADED DS C . IS CORE ALLOCATED 21360000 - 0001E0 2374 DS 0D 21370000 - 001E0 2375 LENJSPAS EQU *-JSPAS . (LENGTH) 21380000 -0000000 00000 000A0 2377 DIMAS DSECT . DEVICE INTERFACE MODULE STORAGE 21400000 - 000000 2378 DIMMSG DS CL8 . MESSAGE BLOCK 21410000 - 000008 2379 DS F'132' 21420000 - 00000C 2380 DS CL132 21430000 - 000090 2381 DIMLMS DS CL8 . LAST MESSAGE SENDER 21440000 - 000098 2382 DIMTEMP DS CL8 . TEMPORARY 21450000 - 0000A0 2383 DS 0D 21460000 - 000A0 2384 DIMLEN EQU *-DIMAS . (LENGTH) 21470000 - 2385 END 21480000 -1 Relocation Dictionary Page 58 -- Pos.Id Rel.Id Address Type Action HLASM R6.0 2016/08/29 08.42 -0 00000001 00000001 00000005 A 3 + - 00000001 00000001 0000005D A 3 + - 00000001 00000001 00000065 A 3 + - 00000001 00000001 0000006D A 3 + - 00000001 00000001 00000180 A 4 + - 00000001 00000001 0000042D A 3 + - 00000001 00000001 00000435 A 3 + - 00000001 00000001 0000043D A 3 + - 00000001 00000001 00000445 A 3 + - 00000001 00000001 0000044D A 3 + - 00000001 00000001 00000455 A 3 + - 00000001 00000001 0000045D A 3 + - 00000001 00000001 00000465 A 3 + - 00000001 00000001 0000046D A 3 + - 00000001 00000001 00000475 A 3 + - 00000001 00000001 0000047D A 3 + - 00000001 00000001 00000485 A 3 + - 00000001 00000001 0000048D A 3 + - 00000001 00000001 00000495 A 3 + - 00000001 00000001 0000049D A 3 + - 00000001 00000001 000004A5 A 3 + - 00000001 00000001 000004AD A 3 + - 00000001 00000001 000004B5 A 3 + - 00000001 00000001 000004BD A 3 + - 00000001 00000001 000004C5 A 3 + - 00000001 00000001 000004C8 A 4 + - 00000001 00000001 000004DD A 3 + - 00000001 00000001 0000059D A 3 + - 00000001 00000001 00000E5C A 4 + - 00000001 00000001 00000E90 A 4 + - 00000001 00000001 000010CC A 4 + - 00000001 00000001 000010D0 A 4 + - 00000001 00000001 000010D4 A 4 + - 00000001 00000001 000010D8 A 4 + - 00000001 00000001 000010EC A 4 + - 00000001 00000001 000010F0 A 4 + - 00000001 00000001 000010F4 A 4 + - 00000001 00000001 000010F8 A 4 + - 00000001 00000001 000010FC A 4 + - 00000001 00000001 00001100 A 4 + - 00000001 00000001 00001104 A 4 + - 00000001 00000001 00001108 A 4 + - 00000001 00000001 00001118 A 4 + - 00000001 00000001 0000111C A 4 + - 00000001 00000001 00001120 A 4 + - 00000001 00000001 00001124 A 4 + - 00000001 00000001 000012B9 A 3 + - 00000001 00000001 000012C1 A 3 + - 00000001 00000001 000012C5 A 3 + - 00000001 00000001 000012C9 A 3 + - 00000001 00000001 00001638 A 4 + - 00000001 00000001 00001644 A 4 + - 00000001 00000001 000016F8 A 4 + - 00000001 00000001 000016FC A 4 + - 00000001 00000001 00001720 A 4 + -1 Relocation Dictionary Page 59 -- Pos.Id Rel.Id Address Type Action HLASM R6.0 2016/08/29 08.42 -0 00000001 00000001 00001724 A 4 + - 00000001 00000002 0000007D A 3 + - 00000003 00000001 00001815 A 3 + - 00000003 00000001 00001819 A 3 + - 00000003 00000001 00001821 A 3 + -1 Ordinary Symbol and Literal Cross Reference Page 60 --Symbol Length Value Id R Type Asm Program Defn References HLASM R6.0 2016/08/29 08.42 -0ACARD 4 00000174 FFFFFFEB A A 2353 1859M - ANYBACK 8 000001D0 FFFFFFEB C C 2370 1868M 2034 2038 - ASEXCP 6 00001452 00000001 I 1946 1933B - ASGNUNIT 4 000013DA 00000001 I 1917 1943B 1949B - ASIN 4 0000143A 00000001 I 1940 1929B - ASOUT 4 0000144A 00000001 I 1944 1931B - CARD 80 00000084 FFFFFFEB C C 2344 1858 1888 1897 1904 1971 1973 1975 1979 1981 1985 - 1987 1988 - CARDLDR 1 00001770 00000002 J 43 62 66U - CAW 4 00000048 00000001 F F 142 74M 1369M 1481M 1561M - CAWSEM 4 00000194 00000001 F F 158 1367 1479 1559 - CCBCON1 4 00000C30 00000001 X X 1412 1361 1471 - CCWCHAIN 8 00001810 00000002 D D 123 73 - CMPEXCP 6 00001434 00000001 I 1938 1932X - CMPIN 6 00001428 00000001 I 1936 1928X - CMPOUT 6 0000142E 00000001 I 1937 1930X - CONTINUE 4 000017FC 00000002 F F 119 96M - CORE 4 000001A8 FFFFFFEB F F 2363 1865M 1916M 1951 1954 2064 - COREOK 4 000013D2 00000001 I 1915 1913B - COREPACK 6 00001648 00000001 I 2091 1908X - COREPCKD 8 00001650 00000001 D D 2092 1909 2091M - COREPKLN 4 00001658 00000001 X X 2093 1907 - CORESIZ 4 00001264 00000001 A A 1817 1747 - CORESIZE 1 01000000 00000001 A U 129 1817 2147 - CSW 8 00000040 00000001 D D 141 106 1703 1704 1707 - DIM 1 00001674 00000001 U 2117 2162 - DIMAAS 4 000016C0 00000001 A A 2141 2122 - DIMAS 1 00000000 FFFFFFEA J 2377 2129U 2384 - DIMLEN 1 000000A0 FFFFFFEA A U 2384 2141 - DIMLMS 8 00000090 FFFFFFEA C C 2381 2130M 2136 2138M - DIMLOOP 4 00001696 00000001 I 2132 2139B - DIMMSG 8 00000000 FFFFFFEA C C 2378 2132M 2133 2135 2136M - DIMSEM 4 000016B8 00000001 F F 2140 2120 2127 - DIMTEMP 8 00000098 FFFFFFEA C C 2382 2135M 2138 - EIGHT 4 00001808 00000002 F F 122 89 - ENBLECH0 2 000017EE 00000002 C C 115 72 - ENDADATA 6 00000BFE 00000001 I 1399 1390B - ENDCARD 4 0000153E 00000001 I 2013 1976B - EXCPCOMP 4 00000DB4 00000001 I 1547 1551B - EXCPDONE 4 00000E30 00000001 I 1581 1576B - EXCPFIND 2 00000DCA 00000001 I 1553 1548B - EXCPHAAS 4 00000E44 00000001 A A 1586 1527 - EXCPHAS 1 00000000 FFFFFFED J 2322 1536U 2330 - EXCPHM 8 00000018 FFFFFFED C C 2326 1566M 1567M 1568M 1569 - EXCPHMSG 8 00000000 FFFFFFED C C 2323 1537 1568 1571 - EXCPHNDL 1 00000D74 00000001 U 1521 2163 - EXCPHSEM 4 00000E3C 00000001 F F 1585 1525 1532 - EXCPLOOP 4 00000D92 00000001 I 1537 1542B 1583B - EXCPWAIT 4 00000DF0 00000001 I 1564 1578B - EXINTRPT 4 000012BC 00000001 I 1827 1834 - EXPLOOP 6 0000159E 00000001 I 2044 2052B - EXPNXT 2 000015B4 00000001 I 2050 2047B - EXPUNGE 4 00001596 00000001 I 2041 1921B 1934B - EXTHANDL 1 0000027A 00000001 U 175 146 1832 - EXTHRET 4 000002A8 00000001 I 191 180B 184B -1 Ordinary Symbol and Literal Cross Reference Page 61 --Symbol Length Value Id R Type Asm Program Defn References HLASM R6.0 2016/08/29 08.42 -0EXTNEW 1 00000058 00000001 B B 146 1741M 1781M - EXTOLD 8 00000018 00000001 D D 136 179 187 192 1827 - FETCHPRT 4 00001670 00000001 F F 2098 1957 - FSB 1 00000000 FFFFFFFC J 2243 576U 662U 731U 740U - FSBNEXT 4 00000000 FFFFFFFC A A 2244 589 590 597 665 679 680 734 735 741M - FSBPTR 4 00000180 00000001 A A 155 572 573 660 661 727 728 - FSBSEM 4 00000184 00000001 F F 156 570 616 658 693 - FSBSIZE 4 00000004 FFFFFFFC F F 2245 585 598 669 672 677 732 742M - GWINC 4 00000586 00000001 I 458 455B - GWLOOP 4 00000576 00000001 I 454 460B - GWRUN 6 000005A0 00000001 I 465 457B - IDLE 1 00000598 00000001 B B 463 461 - INSEQ 8 00001630 00000001 C C 2087 1873 - IOBACK 4 00001036 00000001 I 1724 1701B - IOCOMP 6 00000FD2 00000001 I 1696 1700B - IODEVFND 6 00000FEC 00000001 I 1703 1697B - IOHANDL 1 00000FC4 00000001 U 1690 1830 - IOHSAVE 4 000001DC 00000001 F F 161 1691M 1718 1724 - IOINTRPT 1 000017DA 00000002 U 105 70 150 - IOINTRTN 4 000017EA 00000002 I 110 107B - IONEW 1 00000078 00000001 B B 150 71M 448 1740M - IONOFPR 2 00001034 00000001 I 1723 1710B - IOOLD 8 00000038 00000001 D D 140 108M 109M 110 1694M 1696 1717 1725 - IOWAIT 4 0000102C 00000001 I 1720 1714B - IPLAPCBS 4 00001258 00000001 A A 1814 1755 - IPLCL 4 00001066 00000001 I 1748 1752B - IPLEXNEW 3 000012C9 00000001 R A 1834 1741 - IPLLOOP 4 0000107C 00000001 I 1755 1780B - IPLPCB 8 00001110 00000001 C C 1804 1742 1805 - IPLRTN 1 0000103E 00000001 U 1737 133 - IPLTH 2 00001076 00000001 I 1753 1749B - JOB 4 00001384 00000001 I 1894 1889B - JOBBIT 1 0000007A FFFFFFEF C C 2307 1323M 1337 1342M 1403M - JSP 1 000012CC 00000001 U 1842 1825 - JSPAAS 4 00001668 00000001 A A 2096 1847 - JSPAS 1 00000000 FFFFFFEB J 2341 1852U 2375 - JSPNEVER 4 00001618 00000001 F F 2083 1891 - JSPSUSEM 4 00001660 00000001 F F 2095 1845 1853 - KEY 4 0000018C FFFFFFEB F F 2358 1870M 1947 1955 2020 - KEYTAB 1 000010DC 00000001 U 1792 1777 - LENEXCPA 1 00000030 FFFFFFED A U 2330 1586 - LENJSPAS 1 000001E0 FFFFFFEB A U 2375 2096 - LENMSG 1 0000000C FFFFFFFA A U 2256 1073 1127 - LENPCB 1 00000148 FFFFFFFF A U 2218 1595 1814 - LENPRTHA 1 00000030 FFFFFFEE A U 2320 1511 - LENRDRHA 1 00000080 FFFFFFEF A U 2309 1415 - LINE 132 00000000 FFFFFFEB C C 2342 1863 1895M 1896M 1896 1897M 2029M 2030M 2030 2031M 2357 - LOAD 4 00001462 00000001 I 1951 1919B - LOADADDR 4 00001800 00000002 F F 120 76 - LOADCL 4 000015CE 00000001 I 2058 2063B - LOADD 4 000015E0 00000001 I 2064 2060B - LOADED 1 000001DD FFFFFFEB C C 2373 1894M 1953M 2053 - LOADER 8 00001770 00000001 D D 2172 49 50 52 - LOADLOOP 4 00001492 00000001 I 1966 1962B 1977B 1984B 2004B - LOADSK 4 00001480 00000001 I 1960 1965B -1 Ordinary Symbol and Literal Cross Reference Page 62 --Symbol Length Value Id R Type Asm Program Defn References HLASM R6.0 2016/08/29 08.42 -0LOOP 4 00001354 00000001 I 1881 1890B 2054B 2066B - MEMORY 4 0000018C 00000001 F F 157 593 688 - MSG 1 00000000 FFFFFFFA J 2251 839U 1050U 1139U 1147U 2256 - MSGNEXT 4 00000004 FFFFFFFA A A 2253 840 1051 1142 1143 1148M - MSGSENDR 4 00000000 FFFFFFFA A A 2252 1068 1149M - MSGSIZE 4 00000008 FFFFFFFA F F 2254 841 1059 1061 1072 1151M - MSGTEXT 1 0000000C FFFFFFFA C C 2255 1084 1162M - NEXTCARD 2 0000179C 00000002 I 80 88B - NEXTTRY 4 00000274 00000001 A A 166 424M 451 465M 1744M - NEXTTRYM 1 00000278 00000001 C C 167 422 425M 466M 1720M - NOTALGND 6 00001520 00000001 I 2005 1992B - NUMCARDS 4 00001804 00000002 F F 121 75 - OUTSEQ 8 0000163C 00000001 C C 2089 1877 - PAGESIZE 4 0000165C 00000001 F F 2094 1748 1865 1960 2058 - PCB 1 00000000 FFFFFFFF J 2196 182U 222U 317 318 319 373U 380U 419U 453U 473U - 782U 825U 830U 834U 862U 917U 920U 924U 928U 931U - 936U 956U 960U 963U 966U 970U 973U 977U 1003U 1013U - 1070U 1086U 1122U 1164U 1198U 1209U 1248U 1260U 1712U 1761U - 1765U 1769U 2016U 2043U 2218 - PCBAADDR 4 00000048 FFFFFFFF A A 2213 621M 850 - PCBASIZE 4 00000044 FFFFFFFF F F 2212 620M 852 - PCBBLOKT 1 00000019 FFFFFFFF C C 2203 183 383M 421M 454 785 785M 1713 2017M 2024M - PCBFM 4 0000002C FFFFFFFF F F 2208 836 1049 1051M 1137 1138 - PCBFSA 84 000000A0 FFFFFFFF C C 2215 318 - PCBINSMC 1 0000001A FFFFFFFF C C 2204 492 494M 517 519M 1249 - PCBISA 84 0000004C FFFFFFFF C C 2214 185 317 384M 468 785 1199 1715 1770 2021 2022M - 2023M - PCBLPALL 4 00000014 FFFFFFFF F F 2201 918M 921M 957 964M - PCBLPTG 4 0000000C FFFFFFFF F F 2199 929M 932M 967 974M 1763M 1766M - PCBMSA 84 000000F4 FFFFFFFF C C 2216 319 - PCBMSC 8 0000001C FFFFFFFF C C 2206 1047 1135 - PCBMSR 8 00000024 FFFFFFFF C C 2207 1044 1157 - PCBNAME 8 00000000 FFFFFFFF C C 2197 783M 1005 1071 1235 2044 - PCBNPALL 4 00000010 FFFFFFFF F F 2200 458 465 914 915M 922M 958 961M - PCBNPTG 4 00000008 FFFFFFFF F F 2198 925 926M 933M 968 971M 1004 1762M 1767M 2045 - PCBNSW 4 00000030 FFFFFFFF F F 2209 376 377 382M 420 - PCBSES 8 0000003C FFFFFFFF C C 2211 527 - PCBSRS 8 00000034 FFFFFFFF C C 2210 525 1255 - PCBSTOPT 1 00000018 FFFFFFFF C C 2202 456 784M 826 1204M 1251M - PCBSW 1 0000001B FFFFFFFF C C 2205 522 524M 1254M - PGMHANDL 1 000002B0 00000001 U 194 148 - PROGRAM 1 00000000 00000001 J 42 68U 127 2147 - PROTCON1 4 00000C34 00000001 X X 1413 1348 1355 1458 1465 - PROTCON2 4 00000C38 00000001 X X 1414 1351 1358 1461 1468 - PRTHAAS 4 00000D68 00000001 A A 1511 1431 - PRTHANDL 1 00000C48 00000001 U 1425 2090 - PRTHAS 1 00000000 FFFFFFEE J 2311 1440U 2320 - PRTHCCB 4 00000000 FFFFFFEE F F 2312 1441 1472M 1473M 1474M 1476M - PRTHCOMM 4 00000CEC 00000001 I 1479 1475B 1507B - PRTHLOOP 4 00000C6A 00000001 I 1442 1451B 1503B - PRTHM 8 0000001C FFFFFFEE C C 2316 1494M 1496M 1497M 1498M 1501 - PRTHMSG 8 00000008 FFFFFFEE C C 2313 1442 1455 1498 - PRTHNO 6 00000D26 00000001 I 1494 1463B 1470B - PRTHOK 6 00000D30 00000001 I 1496 1493B - PRTHPOK 4 00000CCA 00000001 I 1471 1456B -1 Ordinary Symbol and Literal Cross Reference Page 63 --Symbol Length Value Id R Type Asm Program Defn References HLASM R6.0 2016/08/29 08.42 -0PRTHPRIN 4 00000C92 00000001 I 1453 1448B - PRTHSEM 4 00000D60 00000001 F F 1510 1429 1436 - PRTHSEND 6 00000D36 00000001 I 1497 1495B - PRTHSTC1 6 00000CE0 00000001 I 1476 1450B - PRTHWAIT 4 00000D10 00000001 I 1488 1491B - PTSTATUS 2 00000D52 00000001 I 1504 1486B - QUANTUM 4 000005BC 00000001 X X 471 469 - RDRHAAS 4 00000C3C 00000001 A A 1415 1313 - RDRHANDL 1 00000AC6 00000001 U 1307 2088 - RDRHAS 1 00000000 FFFFFFEF J 2298 1322U 2309 - RDRHCCB 4 00000000 FFFFFFEF F F 2299 1324 1362M 1363M 1364M - RDRHEXC 4 00000BB8 00000001 I 1383 1379B - RDRHLOOP 4 00000AEC 00000001 I 1325 1330B 1398B - RDRHM 8 0000006C FFFFFFEF C C 2304 1385M 1391M 1392M 1393M 1396 1399M - RDRHMORE 4 00000B2E 00000001 I 1345 1338B - RDRHMSG 8 00000008 FFFFFFEF C C 2300 1325 1335 1345 1387 1393 - RDRHNO 6 00000BC0 00000001 I 1385 1340B 1353B 1360B - RDRHOK 4 00000BCA 00000001 I 1387 1382B - RDRHPOK 4 00000B60 00000001 I 1361 1346B 1381B 1408B - RDRHSEM 4 00000C28 00000001 F F 1411 1311 1318 - RDRHSEND 6 00000BE2 00000001 I 1392 1386B 1404B - RDRHSOK 6 00000BDC 00000001 I 1391 1343B 1388B - RDRHTEMP 80 0000001C FFFFFFEF C C 2303 1341 1400M - RDRHWAIT 4 00000B96 00000001 I 1374 1377B 1384B - RDSTATUS 2 00000C1C 00000001 I 1405 1372B - READ 1 000017F0 00000002 X X 116 81 - REGS 1 00000000 FFFFFFFD J 2225 1773U - REG3 4 0000000C FFFFFFFD F F 2229 1776M - REG4 4 00000010 FFFFFFFD F F 2230 1777M - REPLY 132 000000E0 FFFFFFEB C C 2348 1886 - RETURN 1 000004D8 00000001 B B 328 369 416 426 470 495 529 623 696 743 788 - 859 935 976 1011 1082 1160 1205 1253 - RETURNR 1 000004E0 00000001 U 330 328 - RLDCARD 4 000014E0 00000001 I 1987 1974B - RLDCONT 4 00001500 00000001 I 1996 2011B - RLDFINI 2 00001514 00000001 I 2001 1999B - RLDLOOP 4 000014E8 00000001 I 1989 2003B - RLDTEMP 4 000001B4 FFFFFFEB F F 2366 1869M 2005M 2006 2008M 2009 2010M - RREPLY 8 000000D4 FFFFFFEB C C 2346 1884 1900 1969 - RREPLY1 4 000000DC FFFFFFEB F F 2347 1883M 1968M - RUNNING 4 00000270 00000001 A A 165 181 221 381 467M 1711 1743M 2041 2051 - R11 1 0000000B 00000001 A U 2185 67M 68U 111D - R12 1 0000000C 00000001 A U 2186 63M 65M 66U 111D - R2 1 00000002 00000001 A U 2176 64M 65 69M 71 80M 81M 82 83M 84 95M - 96 - R3 1 00000003 00000001 A U 2177 70M 71 75M 88M - R4 1 00000004 00000001 A U 2178 76M 80 86M 86 - R5 1 00000005 00000001 A U 2179 73M 74 82 84 85 87M 87 89M 90 - SA 1 00000000 FFFFFFFE J 2220 186U 230U 1200U 1201 1203 1208U 1716U 1771U - SAPSW 8 00000000 FFFFFFFE D D 2221 187M 231M 331 1201M 1201 1202M 1717M - SAREGS 64 00000008 FFFFFFFE C C 2222 188M 232M 332 1203M 1203 1718M 1772 - SATEMP 12 00000048 FFFFFFFE C C 2223 599 682 768 817 833 854 1115 1190 1239 - SCAN 2 000015EA 00000001 I 2068 1905B 1917B 1927B - SCANLOOP 4 000015EC 00000001 I 2069 2077B - SEQ 8 0000019C FFFFFFEB C C 2361 1922 1923M 1926 1935M 2042 2044M 2046 -1 Ordinary Symbol and Literal Cross Reference Page 64 --Symbol Length Value Id R Type Asm Program Defn References HLASM R6.0 2016/08/29 08.42 -0SETDIM 6 0000143E 00000001 I 1941 1945B - SHORT 4 00001510 00000001 I 2000 1997B - SKIP 8 00001620 00000001 C C 2084 1861 2036 - SM 1 00000000 FFFFFFFB J 2247 363U 411U 687U - SMPTR 4 00000004 FFFFFFFB F F 2249 370 371 417 420M - SMVAL 4 00000000 FFFFFFFB F F 2248 364 366M 412 414M 690 - SOSEXNEW 3 000012C5 00000001 R A 1832 1781 - SOSIONEW 3 000012C1 00000001 R A 1830 1740 - STOP 4 0000137E 00000001 I 1891 1887B - STREAMS 4 000010C8 00000001 F F 1784 1754 - SVCCONST 4 00000314 00000001 F F 241 215 - SVCHANDL 1 000002B2 00000001 U 211 147 - SVCHPROT 4 00000302 00000001 I 235 220B - SVCHTABL 1 00000328 00000001 X X 243 217 244 246 248 250 252 254 256 258 260 - 262 264 266 268 270 272 274 276 278 280 - 282 284 - SVCOK 4 000002D0 00000001 I 221 237B 239B - SVCOLD 8 00000020 00000001 D D 137 216 228 231 235 331M 333 - SVCRTN 8 00000428 00000001 D D 286 218 238 - SVCSAVE 4 000004C8 00000001 F F 315 227 - SVCXPER 4 000002FA 00000001 I 233 229B - SYSSEM 4 000002DE 00000001 I 226 224B - SYSSEMSA 84 0000021C 00000001 C C 163 316 384 - TALK 8 000001B8 FFFFFFEB C C 2367 1866M 1867M 2026 2031 - TEMPLATE 4 00001280 00000001 X X 1822 785 - TIMER 4 00000050 00000001 F F 144 469M - TOKSTART 2 00001610 00000001 I 2078 2071B 2073B 2075B - TRAPSAVE 4 0000019C 00000001 F F 160 176M 188 191 212M 232 - TREAD 4 00000164 FFFFFFEB F F 2349 1855M 1856M 1857M 1881 1966 - TXTCARD 4 000014C6 00000001 I 1979 1972B - TXTMOV 6 000014DA 00000001 I 1985 1983X - TYPLEN 1 00000054 00000001 A U 1826 1759 - TYPPCB 8 00001268 00000001 C C 1820 1759 1826 - UCB 1 00000000 FFFFFFEC J 2332 1308U 1426U 1522U 1702U 2339 - UCBADDR 4 00000000 FFFFFFEC F F 2333 1370 1484 - UCBCSW 8 00000014 FFFFFFEC G F 2336 1365M 1366M 1376 1378 1380 1383M 1482M 1483M 1490 1492 - 1557M 1558M 1566 1703M 1705 1706M 1707M - UCBFPR 1 0000001C FFFFFFEC C C 2337 1709 - UCBLENG 1 00000020 FFFFFFEC A U 2339 1549 1698 - UCBLP1 4 000010EC 00000001 A A 1798 1787 - UCBLP2 4 000010F4 00000001 A A 1799 1788 - UCBLP3 4 000010FC 00000001 A A 1800 1789 - UCBLP4 4 00001104 00000001 A A 1801 1790 - UCBPRT1 4 00000EC4 00000001 X X 1627 1798 - UCBPRT2 4 00000F04 00000001 X X 1641 1799 - UCBPRT3 4 00000F44 00000001 X X 1655 1800 - UCBPRT4 4 00000F84 00000001 X X 1669 1801 - UCBRDR1 4 00000EA4 00000001 X X 1620 1798 - UCBRDR2 4 00000EE4 00000001 X X 1634 1799 - UCBRDR3 4 00000F24 00000001 X X 1648 1800 - UCBRDR4 4 00000F64 00000001 X X 1662 1801 - UCBTAB 1 000010CC 00000001 U 1786 1774 1777 - UCBTABLE 4 00000EA4 00000001 F F 1618 1546 2152 - UCBTBEND 1 00000FC4 00000001 U 1682 1606 2153 - UCBUS 8 00000004 FFFFFFEC G F 2334 1333 1394 1453 1477 1499 1554 1581 -1 Ordinary Symbol and Literal Cross Reference Page 65 --Symbol Length Value Id R Type Asm Program Defn References HLASM R6.0 2016/08/29 08.42 -0UCBWS 8 0000000C FFFFFFEC G F 2335 1374 1406 1488 1505 1564 1708 - UNAMMOV 6 00001422 00000001 I 1935 1924X - UNITRTN 4 000001A4 FFFFFFEB A A 2362 1941M 1946M - USERL 8 00000190 FFFFFFEB C C 2359 1860M 1902 2013 2015 2018M - VERYEND 8 00001740 00000001 D D 2171 155 1745M 2147 - WAITPSWD 4 000017F8 00000002 X X 118 97 - WRITE 8 00000178 FFFFFFEB C C 2354 1861M 1862M 1864M 1898 2032 - XA 1 00000600 00000001 U 557 299 565U 1593 - XABACK 2 000006B0 00000001 I 622 619B - XACOM 2 0000060E 00000001 I 566 560B - XAFOUND 4 00000662 00000001 I 596 588B - XALOOP 2 0000062A 00000001 I 577 591B - XANF 2 00000686 00000001 I 607 603B - XARETURN 4 0000069C 00000001 I 616 611B - XATOP 4 00000616 00000001 I 570 595B - XAUTO 1 00000608 00000001 U 561 313 - XAWAIT 2 00000656 00000001 I 592 578B - XAX 1 00000000 FFFFFFF9 J 2258 568U 776U 1124U 1314U 1432U 1528U 1756U 1848U 2123U - XAXADDR 4 00000004 FFFFFFF9 F F 2260 596M 780 1133 1316 1434 1530 1758 1850 2125 - XAXALGN 4 00000008 FFFFFFF9 F F 2261 574 778M 1131M - XAXSIZE 4 00000000 FFFFFFF9 F F 2259 569 777M 1130M - XB 1 00000744 00000001 U 722 298 - XBINSERT 4 00000770 00000001 I 738 730B 733B - XBLOOP 4 0000075A 00000001 I 732 737B - XBX 1 00000000 FFFFFFF7 J 2267 600U 683U 724U - XBXADDR 4 00000004 FFFFFFF7 F F 2269 604M 612M 685M 726 - XBXSIZE 4 00000000 FFFFFFF7 F F 2268 605M 613M 684M 725 - XC 1 00000780 00000001 U 764 306 - XCERR 2 000007C4 00000001 I 789 773B - XCOM 1 000005D2 00000001 U 514 297 - XCOMRET 4 000005FC 00000001 I 529 521B 523B - XCX 1 00000000 FFFFFFF6 J 2271 767U - XCXNAME 8 00000000 FFFFFFF6 C C 2272 770 783 - XD 1 000007C6 00000001 U 813 310 - XDCHECK 6 0000081A 00000001 I 850 838B - XDERR 2 00000840 00000001 I 860 824B 827B - XDLOOP 2 000007F4 00000001 I 837 849B - XDTHEN 4 0000082E 00000001 I 855 851B - XDX 1 00000000 FFFFFFF5 J 2274 816U - XDXNAME 8 00000000 FFFFFFF5 C C 2275 819 - XEXC 1 000005C0 00000001 U 489 296 - XF 1 000006B6 00000001 U 649 300 - XFBACKUP 2 00000706 00000001 I 678 670B - XFINC 4 00000708 00000001 I 679 674B - XFLINK 4 00000714 00000001 I 682 664B - XFLOOP 2 000006D4 00000001 I 663 681B - XFTHEN 2 000006F0 00000001 I 671 667B - XFVDO 2 0000073E 00000001 I 697 692B - XFVLOOP 4 0000072E 00000001 I 692 698B - XFX 1 00000000 FFFFFFF8 J 2263 653U 844U 1077U - XFXADDR 4 00000004 FFFFFFF8 F F 2265 655 845M 855M 1078M - XFXSIZE 4 00000000 FFFFFFF8 F F 2264 654 846M 856M 1079M - XH 1 00000842 00000001 U 882 312 - XHLOOP 4 00000848 00000001 I 886 888B - XHMSG1 8 00000854 00000001 C C 890 884 -1 Ordinary Symbol and Literal Cross Reference Page 66 --Symbol Length Value Id R Type Asm Program Defn References HLASM R6.0 2016/08/29 08.42 -0XHMSG2 8 0000086C 00000001 C C 893 886 - XI 1 0000087A 00000001 U 912 301 - XJ 1 000008A6 00000001 U 953 302 - XN 1 000008CA 00000001 U 998 307 - XNX 1 00000000 FFFFFFF4 J 2277 769U 818U 1000U 1116U 1191U 1240U - XNXADDR 4 00000008 FFFFFFF4 A A 2279 772 821 1010M 1119 1194 1243 - XNXFOUND 4 000008E4 00000001 I 1010 1006B - XNXLOOP 4 000008CC 00000001 I 1004 1008B - XNXNAME 8 00000000 FFFFFFF4 C C 2278 770M 819M 1005 1117M 1192M 1241M - XP 1 000004EE 00000001 U 361 294 - XPER 1 0000056A 00000001 U 447 189B 303 385B 463 - XPLOOP 2 0000050A 00000001 I 374 378B - XPTHEN 6 0000051C 00000001 I 381 375B - XPWAIT 4 00000502 00000001 I 370 368B - XQUE 1 00000A8E 00000001 U 1279 311 - XQUELOOP 4 00000A94 00000001 I 1283 1285B - XQUEM1 8 00000AA0 00000001 C C 1287 1281 - XQUEM2 8 00000AB8 00000001 C C 1290 1283 - XR 1 000008EC 00000001 U 1040 304 - XRAFT 4 00000938 00000001 I 1066 1064B - XRFILL 6 0000096C 00000001 I 1083 1057X - XRMOVE 6 00000972 00000001 I 1084 1065X - XRNOB 4 0000091C 00000001 I 1058 1056B - XRTHEN 2 0000092E 00000001 I 1063 1060B - XRX 1 00000000 FFFFFFF3 J 2281 1043U 1326U 1336U 1443U 1538U 1572U - XRXNAME 8 00000000 FFFFFFF3 C C 2282 1071M 1339 - XRXSIZE 4 00000008 FFFFFFF3 F F 2283 1053 1067M 1327M 1444M 1539M 1573M - XRXTEXT 1 0000000C FFFFFFF3 C C 2284 1055M 1083M 1083 1084M 1329 1331 1446 1447 1449 1541 - 1543 1544 1575 1577 - XS 1 00000978 00000001 U 1111 305 - XSADD 4 000009D2 00000001 I 1145 1141B - XSAFT 2 000009F4 00000001 I 1156 1154B - XSERR 2 00000A02 00000001 I 1161 1121B - XSLOOP 2 000009C0 00000001 I 1140 1144B - XSMOVE 6 00000A04 00000001 I 1162 1155X - XSX 1 00000000 FFFFFFF2 J 2286 1114U - XSXNAME 8 00000000 FFFFFFF2 C C 2287 1117 - XSXSIZE 4 00000008 FFFFFFF2 F F 2288 1126 1150 - XSXTEXT 1 0000000C FFFFFFF2 C C 2289 1162 - XV 1 00000534 00000001 U 409 295 - XVRET 4 00000566 00000001 I 426 423B - XVWAKEUP 4 00000548 00000001 I 417 415B - XY 1 00000A0A 00000001 U 1186 308 - XYERR 2 00000A40 00000001 I 1206 1196B - XYX 1 00000000 FFFFFFF1 J 2291 1189U - XYXADDR 4 00000008 FFFFFFF1 A A 2293 1202 - XYXNAME 8 00000000 FFFFFFF1 C C 2292 1192 - XZ 1 00000A42 00000001 U 1231 309 - XZERR 2 00000A8C 00000001 I 1258 1238B 1245B - XZFINE 4 00000A54 00000001 I 1239 1236B - XZINSMC 4 00000A7E 00000001 I 1254 1250B - XZSTOP 4 00000A6C 00000001 I 1249 1257B - XZX 1 00000000 FFFFFFF0 J 2295 1234U - XZXNAME 8 00000000 FFFFFFF0 C C 2296 1237 1241 - =A(DIM) 4 00001720 00000001 A 2162 1941 -1 Ordinary Symbol and Literal Cross Reference Page 67 --Symbol Length Value Id R Type Asm Program Defn References HLASM R6.0 2016/08/29 08.42 -0=A(EXCPHNDL) - 4 00001724 00000001 A 2163 1946 - =A(LENPCB) - 4 00000E64 00000001 A 1595 777 856 - =A(UCBTABLE) - 4 000016F8 00000001 A 2152 1695 - =A(UCBTBEND) - 4 00000E90 00000001 A 1606 1550 - =A(UCBTBEND) - 4 000016FC 00000001 A 2153 1699 - =A(XA) 4 00000E5C 00000001 A 1593 564 - =A(0) 4 00000E60 00000001 A 1594 772 850 1148 1365 1366 1482 1483 1557 1558 - =A(0) 4 00001714 00000001 A 2159 1869 - =A(0,CORESIZE-(VERYEND-PROGRAM)) - 4 000016D0 00000001 A 2147 1745 - =C'$JOB,' - 5 00000E98 00000001 C 1609 1389 - =C'$JOB,' - 5 0000172A 00000001 C 2165 1888 - =C'AGAIN' - 5 00000E9D 00000001 C 1610 1577 - =C'END' 3 0000173D 00000001 C 2170 1975 - =C'EXCP ' - 5 00001732 00000001 C 2167 1938 - =C'EXCP' 4 00000E8C 00000001 C 1605 1541 - =C'IN ' 3 0000172F 00000001 C 2166 1936 - =C'NO' 2 00000E94 00000001 C 1607 1385 1399 1494 - =C'OK' 2 00000E96 00000001 C 1608 1391 1496 1575 - =C'OK' 2 00001728 00000001 C 2164 1886 - =C'OUT ' 4 0000171C 00000001 C 2161 1937 - =C'PRIN' 4 00000E7C 00000001 C 1601 1447 - =C'PRIN' 4 00001708 00000001 C 2156 1862 - =C'READ' 4 00000E74 00000001 C 1599 1329 - =C'READ' 4 00001704 00000001 C 2155 1857 - =C'RLD' 3 0000173A 00000001 C 2169 1973 - =C'STC1' 4 00000E80 00000001 C 1602 1449 - =C'TXT' 3 00001737 00000001 C 2168 1971 - =CL8' ' 8 000016E8 00000001 C 2150 1895 1923 2029 - =CL8'*IN' - 8 000016D8 00000001 C 2148 1855 1940 - =CL8'*OUT' - 8 000016F0 00000001 C 2151 1944 - =CL8'USERPROG' - 8 000016E0 00000001 C 2149 1860 1866 - =F'-8' 4 00000E6C 00000001 F 1597 843 1075 1129 - =F'1' 4 00000E58 00000001 F 1592 413 - =F'1' 4 00001710 00000001 F 2158 1868 - =F'12' 4 00000E88 00000001 F 1604 1539 1567 - =F'12' 4 0000170C 00000001 F 2157 1867 - =F'132' 4 00000E84 00000001 F 1603 1474 - =F'132' 4 00001718 00000001 F 2160 1883 1968 - =F'2' 4 00000E70 00000001 F 1598 1054 1392 1497 - =F'8' 4 00000E68 00000001 F 1596 778 1131 1327 1444 1573 - =F'8' 4 00001700 00000001 F 2154 1856 - =F'80' 4 00000E78 00000001 F 1600 1364 -1 Ordinary Symbol and Literal Cross Reference Page 68 --Symbol Length Value Id R Type Asm Program Defn References HLASM R6.0 2016/08/29 08.42 -0=X'8900000020000001' - 8 00000E50 00000001 X 1591 1476 -1 Unreferenced Symbols Defined in CSECTs Page 69 -- Defn Symbol HLASM R6.0 2016/08/29 08.42 -0 50 CCW1 - 52 CCW2 - 47 IPLCARD - 134 IPLCCW1 - 135 IPLCCW2 - 133 IPLPSW - 149 MCHKNEW - 139 MCHKOLD - 148 PGMNEW - 138 PGMOLD - 48 PSWD - 2174 R0 - 2175 R1 - 2184 R10 - 2187 R13 - 2188 R14 - 2189 R15 - 2180 R6 - 2181 R7 - 2182 R8 - 2183 R9 - 147 SVCNEW - 1676 UCBCONS1 - 143 UNUSED0 - 145 UNUSED1 -1 Dsect Cross Reference Page 70 --Dsect Length Id Defn HLASM R6.0 2016/08/29 08.42 -0DIMAS 000000A0 FFFFFFEA 2377 - EXCPHAS 00000030 FFFFFFED 2322 - FSB 00000008 FFFFFFFC 2243 - JSPAS 000001E0 FFFFFFEB 2341 - MSG 0000000C FFFFFFFA 2251 - PCB 00000148 FFFFFFFF 2196 - PRTHAS 00000030 FFFFFFEE 2311 - RDRHAS 00000080 FFFFFFEF 2298 - REGS 00000040 FFFFFFFD 2225 - SA 00000054 FFFFFFFE 2220 - SM 00000008 FFFFFFFB 2247 - UCB 00000020 FFFFFFEC 2332 - XAX 0000000C FFFFFFF9 2258 - XBX 00000008 FFFFFFF7 2267 - XCX 00000008 FFFFFFF6 2271 - XDX 00000008 FFFFFFF5 2274 - XFX 00000008 FFFFFFF8 2263 - XNX 0000000C FFFFFFF4 2277 - XRX 0000000C FFFFFFF3 2281 - XSX 0000000C FFFFFFF2 2286 - XYX 0000000C FFFFFFF1 2291 - XZX 00000008 FFFFFFF0 2295 -1 Using Map Page 71 -- HLASM R6.0 2016/08/29 08.42 - Stmt -----Location----- Action ----------------Using----------------- Reg Max Last Label and Using Text - Count Id Type Value Range Id Disp Stmt -0 66 00001778 00000002 USING ORDINARY 00001770 00001000 00000002 12 000A0 107 CARDLDR,R12 - 68 0000177C 00000002 USING ORDINARY 00000000 00001000 00000001 11 00078 110 PROGRAM,R11 - 111 000017EE 00000002 DROP 11 R11 - 111 000017EE 00000002 DROP 12 R12 - 131 00000000 00000001 USING ORDINARY 00000000 00001000 00000001 0 00C38 2051 *,0 - 178 00000280 00000001 USING ORDINARY 00000280 00001000 00000001 1 002EA 189 *,1 - 182 0000028C 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 0004C 185 PCB,15 - 186 00000298 00000001 USING ORDINARY 00000000 00001000 FFFFFFFE 14 00008 188 SA,14 - 190 000002A8 00000001 DROP 14 14 - 190 000002A8 00000001 DROP 15 15 - 214 000002B8 00000001 USING ORDINARY 000002B8 00001000 00000001 9 00210 239 *,9 - 222 000002D4 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 00000 PCB,15 - 230 000002EE 00000001 USING ORDINARY 00000000 00001000 FFFFFFFE 14 00048 1190 SA,14 - 240 00000314 00000001 DROP 9 9 - 362 000004EE 00000001 USING ORDINARY 000004EE 00001000 00000001 1 0007C 385 *,1 - 363 000004EE 00000001 USING ORDINARY 00000000 00001000 FFFFFFFB 2 00004 371 SM,2 - 372 0000050A 00000001 DROP 15 15 - 373 0000050A 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 5 00030 377 PCB,5 - 379 0000051C 00000001 DROP 5 5 - 380 0000051C 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 0004C 384 PCB,15 - 386 00000534 00000001 DROP 2 2 - 410 00000534 00000001 USING ORDINARY 00000534 00001000 00000001 1 00924 423 *,1 - 411 00000534 00000001 USING ORDINARY 00000000 00001000 FFFFFFFB 2 00004 420 SM,2 - 418 0000054C 00000001 DROP 15 15 - 419 0000054C 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 4 00030 421 PCB,4 - 427 0000056A 00000001 DROP 2 2 - 427 0000056A 00000001 DROP 4 4 - 450 00000570 00000001 USING ORDINARY 00000570 00001000 00000001 1 0004C 469 *,1 - 453 00000576 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 10 0004C 468 PCB,10 - 472 000005C0 00000001 DROP 10 10 - 473 000005C0 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 00048 621 PCB,15 - 490 000005C0 00000001 USING ORDINARY 000005C0 00001000 00000001 1 00000 *,1 - 515 000005D2 00000001 USING ORDINARY 000005D2 00001000 00000001 1 0002A 523 *,1 - 558 00000600 00000001 USING ORDINARY 00000600 00001000 00000001 1 0000E 560 *,1 - 562 00000608 00000001 USING ORDINARY 00000608 00001000 00000001 1 00854 564 *,1 - 565 0000060E 00000001 USING ORDINARY 00000600 00001000 00000001 1 000B0 619 XA,1 - 568 00000612 00000001 USING ORDINARY 00000000 00001000 FFFFFFF9 7 00008 596 XAX,7 - 576 0000062A 00000001 USING ORDINARY 00000000 00001000 FFFFFFFC 4 00004 598 FSB,4 - 600 00000674 00000001 USING ORDINARY 00000000 00001000 FFFFFFF7 2 00004 613 XBX,2 - 615 0000069C 00000001 DROP 2 2 - 624 000006B6 00000001 DROP 4 4 - 624 000006B6 00000001 DROP 7 7 - 650 000006B6 00000001 USING ORDINARY 000006B6 00001000 00000001 1 00088 698 *,1 - 653 000006BA 00000001 USING ORDINARY 00000000 00001000 FFFFFFF8 7 00004 655 XFX,7 - 662 000006D4 00000001 USING ORDINARY 00000000 00001000 FFFFFFFC 6 00004 680 FSB,6 - 683 00000718 00000001 USING ORDINARY 00000000 00001000 FFFFFFF7 2 00004 685 XBX,2 - 687 00000722 00000001 USING ORDINARY 00000000 00001000 FFFFFFFB 2 00000 690 SM,2 - 691 0000072E 00000001 DROP 2 2 - 699 00000744 00000001 DROP 6 6 - 699 00000744 00000001 DROP 7 7 - 723 00000744 00000001 USING ORDINARY 00000744 00001000 00000001 1 0002C 737 *,1 - 724 00000744 00000001 USING ORDINARY 00000000 00001000 FFFFFFF7 2 00004 726 XBX,2 - 731 0000075A 00000001 USING ORDINARY 00000000 00001000 FFFFFFFC 6 00004 735 FSB,6 -1 Using Map Page 72 -- HLASM R6.0 2016/08/29 08.42 - Stmt -----Location----- Action ----------------Using----------------- Reg Max Last Label and Using Text - Count Id Type Value Range Id Disp Stmt -0 739 00000774 00000001 DROP 6 6 - 740 00000774 00000001 USING ORDINARY 00000000 00001000 FFFFFFFC 4 00004 742 FSB,4 - 744 00000780 00000001 DROP 2 2 - 744 00000780 00000001 DROP 4 4 - 765 00000780 00000001 USING ORDINARY 00000780 00001000 00000001 1 00B01 785 *,1 - 767 00000782 00000001 USING ORDINARY 00000000 00001000 FFFFFFF6 7 00000 783 XCX,7 - 769 00000786 00000001 USING ORDINARY 00000000 00001000 FFFFFFF4 2 00008 772 XNX,2 - 775 0000079A 00000001 DROP 2 2 - 776 0000079A 00000001 USING ORDINARY 00000000 00001000 FFFFFFF9 2 00008 780 XAX,2 - 781 000007AC 00000001 DROP 2 2 - 781 000007AC 00000001 DROP 15 15 - 782 000007AC 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 2 00019 785 PCB,2 - 790 000007C6 00000001 DROP 2 2 - 790 000007C6 00000001 DROP 7 7 - 814 000007C6 00000001 USING ORDINARY 000007C6 00001000 00000001 1 006A6 856 *,1 - 816 000007C8 00000001 USING ORDINARY 00000000 00001000 FFFFFFF5 7 00000 819 XDX,7 - 818 000007CC 00000001 USING ORDINARY 00000000 00001000 FFFFFFF4 2 00008 821 XNX,2 - 822 000007D8 00000001 DROP 2 2 - 825 000007DE 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 2 00018 826 PCB,2 - 829 000007E8 00000001 DROP 2 2 - 830 000007E8 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 00000 PCB,15 - 834 000007F0 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 8 00048 852 PCB,8 - 835 000007F0 00000001 DROP 15 15 - 839 000007FA 00000001 USING ORDINARY 00000000 00001000 FFFFFFFA 9 00008 841 MSG,9 - 844 0000080A 00000001 USING ORDINARY 00000000 00001000 FFFFFFF8 2 00004 856 XFX,2 - 861 00000842 00000001 DROP 2 2 - 861 00000842 00000001 DROP 7 7 - 861 00000842 00000001 DROP 8 8 - 861 00000842 00000001 DROP 9 9 - 862 00000842 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 00010 915 PCB,15 - 883 00000842 00000001 USING ORDINARY 00000842 00001000 00000001 1 0002A 888 *,1 - 913 0000087A 00000001 USING ORDINARY 0000087A 00001000 00000001 1 00000 *,1 - 916 00000882 00000001 DROP 15 15 - 917 00000882 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 10 00014 918 PCB,10 - 919 00000886 00000001 DROP 10 10 - 920 00000886 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 2 00014 922 PCB,2 - 923 0000088E 00000001 DROP 2 2 - 924 0000088E 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 00008 926 PCB,15 - 927 00000896 00000001 DROP 15 15 - 928 00000896 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 10 0000C 929 PCB,10 - 930 0000089A 00000001 DROP 10 10 - 931 0000089A 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 2 0000C 933 PCB,2 - 934 000008A2 00000001 DROP 2 2 - 936 000008A6 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 00000 PCB,15 - 954 000008A6 00000001 USING ORDINARY 000008A6 00001000 00000001 1 00000 *,1 - 955 000008A6 00000001 DROP 15 15 - 956 000008A6 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 2 00014 958 PCB,2 - 959 000008AE 00000001 DROP 2 2 - 960 000008AE 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 11 00010 961 PCB,11 - 962 000008B2 00000001 DROP 11 11 - 963 000008B2 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 10 00014 964 PCB,10 - 965 000008B6 00000001 DROP 10 10 - 966 000008B6 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 2 0000C 968 PCB,2 -1 Using Map Page 73 -- HLASM R6.0 2016/08/29 08.42 - Stmt -----Location----- Action ----------------Using----------------- Reg Max Last Label and Using Text - Count Id Type Value Range Id Disp Stmt -0 969 000008BE 00000001 DROP 2 2 - 970 000008BE 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 11 00008 971 PCB,11 - 972 000008C2 00000001 DROP 11 11 - 973 000008C2 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 10 0000C 974 PCB,10 - 975 000008C6 00000001 DROP 10 10 - 977 000008CA 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 00000 PCB,15 - 999 000008CA 00000001 USING ORDINARY 000008CA 00001000 00000001 1 0001A 1008 *,1 - 1000 000008CA 00000001 USING ORDINARY 00000000 00001000 FFFFFFF4 2 00008 1010 XNX,2 - 1002 000008CC 00000001 DROP 15 15 - 1003 000008CC 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 10 00008 1005 PCB,10 - 1012 000008EC 00000001 DROP 2 2 - 1012 000008EC 00000001 DROP 10 10 - 1013 000008EC 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 0002C 1051 PCB,15 - 1041 000008EC 00000001 USING ORDINARY 000008EC 00001000 00000001 1 00584 1075 *,1 - 1043 000008EE 00000001 USING ORDINARY 00000000 00001000 FFFFFFF3 7 0000D 1084 XRX,7 - 1050 00000900 00000001 USING ORDINARY 00000000 00001000 FFFFFFFA 5 0000C 1084 MSG,5 - 1069 00000944 00000001 DROP 15 15 - 1070 00000944 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 10 00000 1071 PCB,10 - 1077 0000095C 00000001 USING ORDINARY 00000000 00001000 FFFFFFF8 2 00004 1079 XFX,2 - 1085 00000978 00000001 DROP 2 2 - 1085 00000978 00000001 DROP 5 5 - 1085 00000978 00000001 DROP 7 7 - 1085 00000978 00000001 DROP 10 10 - 1086 00000978 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 00000 PCB,15 - 1112 00000978 00000001 USING ORDINARY 00000978 00001000 00000001 1 004F4 1155 *,1 - 1114 0000097A 00000001 USING ORDINARY 00000000 00001000 FFFFFFF2 7 0000C 1162 XSX,7 - 1116 0000097E 00000001 USING ORDINARY 00000000 00001000 FFFFFFF4 2 00008 1119 XNX,2 - 1122 00000990 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 4 0002C 1157 PCB,4 - 1123 00000990 00000001 DROP 2 2 - 1123 00000990 00000001 DROP 15 15 - 1124 00000990 00000001 USING ORDINARY 00000000 00001000 FFFFFFF9 2 00008 1133 XAX,2 - 1134 000009B2 00000001 DROP 2 2 - 1139 000009C0 00000001 USING ORDINARY 00000000 00001000 FFFFFFFA 9 00004 1143 MSG,9 - 1146 000009D6 00000001 DROP 9 9 - 1147 000009D6 00000001 USING ORDINARY 00000000 00001000 FFFFFFFA 5 0000C 1162 MSG,5 - 1163 00000A0A 00000001 DROP 4 4 - 1163 00000A0A 00000001 DROP 5 5 - 1163 00000A0A 00000001 DROP 7 7 - 1164 00000A0A 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 00000 PCB,15 - 1187 00000A0A 00000001 USING ORDINARY 00000A0A 00001000 00000001 1 00036 1196 *,1 - 1189 00000A0C 00000001 USING ORDINARY 00000000 00001000 FFFFFFF1 7 00009 1202 XYX,7 - 1191 00000A10 00000001 USING ORDINARY 00000000 00001000 FFFFFFF4 2 00008 1194 XNX,2 - 1197 00000A22 00000001 DROP 2 2 - 1197 00000A22 00000001 DROP 14 14 - 1197 00000A22 00000001 DROP 15 15 - 1198 00000A22 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 10 0004C 1204 PCB,10 - 1200 00000A26 00000001 USING ORDINARY 00000000 00001000 FFFFFFFE 13 00008 1203 SA,13 - 1207 00000A42 00000001 DROP 7 7 - 1207 00000A42 00000001 DROP 10 10 - 1207 00000A42 00000001 DROP 13 13 - 1208 00000A42 00000001 USING ORDINARY 00000000 00001000 FFFFFFFE 14 00048 1239 SA,14 - 1209 00000A42 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 00000 1235 PCB,15 - 1232 00000A42 00000001 USING ORDINARY 00000A42 00001000 00000001 1 0004A 1257 *,1 -1 Using Map Page 74 -- HLASM R6.0 2016/08/29 08.42 - Stmt -----Location----- Action ----------------Using----------------- Reg Max Last Label and Using Text - Count Id Type Value Range Id Disp Stmt -0 1234 00000A44 00000001 USING ORDINARY 00000000 00001000 FFFFFFF0 7 00000 1241 XZX,7 - 1240 00000A58 00000001 USING ORDINARY 00000000 00001000 FFFFFFF4 2 00008 1243 XNX,2 - 1247 00000A6C 00000001 DROP 2 2 - 1247 00000A6C 00000001 DROP 15 15 - 1248 00000A6C 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 10 00034 1255 PCB,10 - 1259 00000A8E 00000001 DROP 10 10 - 1259 00000A8E 00000001 DROP 7 7 - 1260 00000A8E 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 00000 PCB,15 - 1280 00000A8E 00000001 USING ORDINARY 00000A8E 00001000 00000001 1 0002A 1285 *,1 - 1293 00000AC6 00000001 DROP 14 14 - 1293 00000AC6 00000001 DROP 15 15 - 1308 00000AC6 00000001 USING ORDINARY 00000000 00001000 FFFFFFEC 3 00018 1406 UCB,3 - 1310 00000AC8 00000001 USING ORDINARY 00000AC8 00001000 00000001 1 003D0 1408 *,1 - 1314 00000AD2 00000001 USING ORDINARY 00000000 00001000 FFFFFFF9 2 00004 1316 XAX,2 - 1317 00000AD8 00000001 DROP 2 2 - 1322 00000AE4 00000001 USING ORDINARY 00000000 00001000 FFFFFFEF 12 0007A 1403 RDRHAS,12 - 1326 00000AF0 00000001 USING ORDINARY 00000000 00001000 FFFFFFF3 2 00010 1331 XRX,2 - 1332 00000B06 00000001 DROP 2 2 - 1336 00000B10 00000001 USING ORDINARY 00000000 00001000 FFFFFFF3 2 00000 1339 XRX,2 - 1344 00000B2E 00000001 DROP 2 2 - 1409 00000C28 00000001 DROP 3 3 - 1409 00000C28 00000001 DROP 12 12 - 1426 00000C48 00000001 USING ORDINARY 00000000 00001000 FFFFFFEC 3 00018 1505 UCB,3 - 1428 00000C4A 00000001 USING ORDINARY 00000C4A 00001000 00000001 1 0024C 1507 *,1 - 1432 00000C54 00000001 USING ORDINARY 00000000 00001000 FFFFFFF9 2 00004 1434 XAX,2 - 1435 00000C5A 00000001 DROP 2 2 - 1440 00000C66 00000001 USING ORDINARY 00000000 00001000 FFFFFFEE 12 00028 1501 PRTHAS,12 - 1443 00000C6E 00000001 USING ORDINARY 00000000 00001000 FFFFFFF3 2 00010 1449 XRX,2 - 1452 00000C92 00000001 DROP 2 2 - 1508 00000D5E 00000001 DROP 3 3 - 1508 00000D5E 00000001 DROP 12 12 - 1522 00000D74 00000001 USING ORDINARY 00000000 00001000 FFFFFFEC 3 00018 1581 UCB,3 - 1524 00000D76 00000001 USING ORDINARY 00000D76 00001000 00000001 1 0012E 1583 *,1 - 1528 00000D80 00000001 USING ORDINARY 00000000 00001000 FFFFFFF9 2 00004 1530 XAX,2 - 1531 00000D86 00000001 DROP 2 2 - 1536 00000D92 00000001 USING ORDINARY 00000000 00001000 FFFFFFED 12 00024 1571 EXCPHAS,12 - 1538 00000D96 00000001 USING ORDINARY 00000000 00001000 FFFFFFF3 2 00014 1544 XRX,2 - 1545 00000DB0 00000001 DROP 2 2 - 1572 00000E12 00000001 USING ORDINARY 00000000 00001000 FFFFFFF3 2 0000C 1577 XRX,2 - 1580 00000E30 00000001 DROP 2 2 - 1584 00000E3A 00000001 DROP 3 3 - 1584 00000E3A 00000001 DROP 12 12 - 1693 00000FCA 00000001 USING ORDINARY 00000FCA 00001000 00000001 1 00732 1714 *,1 - 1702 00000FEC 00000001 USING ORDINARY 00000000 00001000 FFFFFFEC 6 0001C 1709 UCB,6 - 1712 00001014 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 0004C 1715 PCB,15 - 1716 00001020 00000001 USING ORDINARY 00000000 00001000 FFFFFFFE 13 00008 1718 SA,13 - 1719 0000102C 00000001 DROP 13 13 - 1719 0000102C 00000001 DROP 15 15 - 1726 0000103E 00000001 DROP 1 1 - 1726 0000103E 00000001 DROP 6 6 - 1739 00001040 00000001 USING ORDINARY 00001040 00001000 00000001 1 00700 1781 *,1 - 1756 00001080 00000001 USING ORDINARY 00000000 00001000 FFFFFFF9 2 00004 1758 XAX,2 - 1761 0000108E 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 2 0000C 1763 PCB,2 -1 Using Map Page 75 -- HLASM R6.0 2016/08/29 08.42 - Stmt -----Location----- Action ----------------Using----------------- Reg Max Last Label and Using Text - Count Id Type Value Range Id Disp Stmt -0 1764 00001096 00000001 DROP 2 2 - 1765 00001096 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 0000C 1767 PCB,15 - 1768 0000109E 00000001 DROP 15 15 - 1769 0000109E 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 2 0004C 1770 PCB,2 - 1771 000010A2 00000001 USING ORDINARY 00000000 00001000 FFFFFFFE 8 00008 1772 SA,8 - 1773 000010A6 00000001 USING ORDINARY 00000000 00001000 FFFFFFFD 9 00010 1777 REGS,9 - 1778 000010B8 00000001 DROP 9 9 - 1844 000012CE 00000001 USING ORDINARY 000012CE 00001000 00000001 1 0046F 2091 *,1 - 1848 000012D8 00000001 USING ORDINARY 00000000 00001000 FFFFFFF9 2 00004 1850 XAX,2 - 1851 000012DE 00000001 DROP 2 2 - 1852 000012DE 00000001 USING ORDINARY 00000000 00001000 FFFFFFEB 12 001DD 2064 JSPAS,12 - 2016 00001548 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 4 0004D 2024 PCB,4 - 2025 00001566 00000001 DROP 4 4 - 2043 0000159E 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 5 00008 2045 PCB,5 - 2119 00001676 00000001 USING ORDINARY 00001676 00001000 00000001 1 0004A 2139 *,1 - 2123 00001680 00000001 USING ORDINARY 00000000 00001000 FFFFFFF9 2 00004 2125 XAX,2 - 2126 00001686 00000001 DROP 2 2 - 2129 0000168C 00000001 USING ORDINARY 00000000 00001000 FFFFFFEA 12 00098 2138 DIMAS,12 - 2144 000016CC 00000001 DROP 12 12 -1 General Purpose Register Cross Reference Page 76 -- Register References (M=modified, B=branch, U=USING, D=DROP, N=index) HLASM R6.0 2016/08/29 08.42 -0 0(0) 131U 176 191M 212 332M 559M 563M 563 618M 618 1691 1724M - 1(1) 176 177M 178U 191M 212 233M 332M 362U 410U 449M 450U 490U 515U 558U 562U 564M 565U 650U - 723U 765U 814U 883U 913U 954U 999U 1041U 1112U 1187U 1232U 1280U 1309M 1310U 1427M 1428U 1523M 1524U - 1691 1692M 1693U 1724M 1726D 1738M 1739U 1843M 1844U 2118M 2119U - 2(2) 64M 65 69M 71 80M 81M 82 83M 84 95M 96 176 191M 212 332M 363U 386D 411U - 427D 525M 527M 567 570M 593M 599M 600U 615D 616M 652 658M 682M 683U 687U 688M 691D 693M - 724U 744D 766 768M 769U 775D 776U 780M 781D 782U 790D 815 817M 818U 821M 822D 823M 823 - 825U 829D 832 833M 844U 852M 854M 861D 884M 886M 915 918 920U 923D 926 929 931U 934D - 956U 959D 966U 969D 1000U 1012D 1042 1044M 1047M 1076M 1077U 1085D 1113 1115M 1116U 1123D 1124U 1134D - 1135M 1157M 1188 1190M 1191U 1197D 1233 1239M 1240U 1247D 1255M 1281M 1283M 1311M 1313M 1314U 1317D 1318M - 1325M 1326U 1332D 1333M 1335M 1336U 1344D 1367M 1374M 1394M 1396M 1406M 1429M 1431M 1432U 1435D 1436M 1442M - 1443U 1452D 1453M 1477M 1479M 1488M 1499M 1501M 1505M 1525M 1527M 1528U 1531D 1532M 1537M 1538U 1545D 1554M - 1559M 1564M 1569M 1571M 1572U 1580D 1581M 1691 1708M 1724M 1747M 1748M 1755M 1756U 1758M 1759 1761U 1762 - 1763 1764D 1769U 1845M 1847M 1848U 1851D 1853M 1858M 1859 1873M 1877M 1881M 1884M 1891M 1898M 1900M 1902M - 1922M 1926M 1951M 1966M 1969M 2013M 2026M 2032M 2034M 2036M 2038M 2042M 2064M 2120M 2122M 2123U 2126D 2127M - 2133M - 3(3) 70M 71 75M 88M 176 191M 212 332M 364M 365M 366 367M 367 412M 413M 414 585M 586M - 587 654M 656 669M 677M 684 725M 732 742 1126M 1127M 1127N 1128M 1128N 1129M 1130 1308U 1409D - 1426U 1508D 1522U 1553M 1584D 1691 1724M 1746M 1871 1872M 1876M 1905M 1917M 1927M 1958M 1959M 1960M 1961 - 2056M 2057M 2058M 2059 2081B - 4(4) 76M 80 86M 86 176 191M 212 332M 370M 376M 381 417M 419U 424 427D 573M 576U 577M - 577 579 584 590M 602 604 624D 655M 657 673 676M 685 726M 738 740U 744D 1119M 1120M - 1120 1122U 1163D 1320M 1352 1359 1438M 1462 1469 1534M 1535M 1556 1691 1724M 1753M 1753 1775 1779M - 1779N 1870 1904M 1918 1955M 1956M 1957M 1998M 2000M 2001 2002 2015M 2016U 2025D 2045M 2050 2055M 2069M - 2069N 2070 2072 2074 2078 - 5(5) 73M 74 82 84 85 87M 87 89M 90 176 191M 212 332M 371M 373U 374M 374 377M - 379D 382 572M 589M 597 656M 657M 666 1049M 1050U 1076 1078 1085D 1133M 1145 1147U 1163D 1331M - 1341 1347 1354N 1361M 1362 1389 1400 1401 1402 1402 1446M 1457 1464N 1471M 1472 1543M 1547 1562 - 1691 1724M 1754M 1780M 1863M 1864 1871M 1872N 1876N 1906M 1907M 1908 1924 1928 1930 1932 2020M 2021M - 2022 2041M 2043U 2050M 2051 2068M 2068 2076M 2076N 2079 2080M - 6(6) 176 191M 212 332M 569M 587 608 610 620 661M 662U 663M 663 666 671 676 678M 680M - 699D 728M 729M 729 731U 735M 736M 736 739D 741 1053M 1054M 1057 1058M 1058N 1059 1061M 1062M - 1063M 1063 1065 1066M 1066N 1067 1072M 1073M 1073N 1074M 1074N 1075M 1079 1150M 1151 1152M 1153M 1153 - 1155 1324M 1369 1441M 1481 1544M 1556M 1561 1691 1695M 1696 1698M 1698N 1699 1702U 1724M 1726D - 7(7) 176 191M 212 332M 567M 568U 624D 652M 653U 699D 766M 767U 790D 815M 816U 861D 1042M 1043U - 1085D 1113M 1114U 1163D 1188M 1189U 1207D 1233M 1234U 1259D 1370M 1371 1484M 1485 1546M 1547N 1549M 1549N - 1550 1553 1691 1704M 1705M 1706 1724M 1993M 1994M 1995 2006M 2007M 2008 - 8(8) 176 191M 212 332M 491M 491 492M 493M 493N 494 516M 516 517M 518M 519 520M 520 574M - 575M 581 660M 668N 675N 678 679M 727M 734M 738N 832M 834U 855 861D 1137M 1142M 1145N 1691 - 1724M 1770M 1771U 1909M 1911M 1914M 1914 1915M 1916 1959 2057 2131M 2132 - 9(9) 176 191M 212 213M 214U 240D 332M 583M 584M 586 665M 668 675 836M 837M 837 839U 845 - 848M 861D 1138M 1139U 1140M 1140 1143M 1146D 1691 1724M 1772M 1773U 1778D 1910M 1910 1911M 1912M 1912 - 1920 1935 1936 1937 1938 1954M 1958 1961 1980 1990 1994 2007 2018 2056 2059 2078M 2079M 2091 - 10(A) 176 191M 212 215M 216M 217M 217N 218M 218N 219 223 226N 233N 234 238M 332M 451M 452 - 453U 458M 459 467 472D 601M 602M 605 609 671M 672M 673 840M 848 914M 917U 919D 922 - 925M 928U 930D 933 958M 961 963U 965D 968M 971 973U 975D 1001M 1003U 1004M 1007 1009M 1010 - 1012D 1068M 1070U 1085D 1194M 1195M 1195 1198U 1207D 1243M 1244M 1244 1248U 1259D 1321M 1321 1351M 1352 - 1358M 1359 1439M 1439 1461M 1462 1468M 1469 1691 1724M 1774M 1775M 1776 1777 1979M 1980M 1985 1989M - 1990M 1993N 1995N 2005 2009 - 11(B) 67M 68U 111D 176 191M 212 215M 226M 227N 332M 452M 459 607M 608M 612 689M 690M 692M - 841M 842M 842N 843M 846 957M 960U 962D 964 967M 970U 972D 974 1347M 1348M 1354M 1355M 1457M - 1458M 1464M 1465M 1534 1691 1724M 1940M 1944M 1947M 1981M 1982M 1983 1987M 2002M 2130 - 12(C) 63M 65M 66U 111D 176 191M 212 215M 235M 236M 332M 598M 609M 610M 613 1316M 1322U 1409D - 1434M 1440U 1508D 1530M 1536U 1584D 1691 1724M 1850M 1852U 2125M 2129U 2144D - 13(D) 176 191M 212 215M 236 332M 579M 580M 581M 582M 582N 583 596 601 607 621 1199M 1200U -1 General Purpose Register Cross Reference Page 77 -- Register References (M=modified, B=branch, U=USING, D=DROP, N=index) HLASM R6.0 2016/08/29 08.42 -0 1207D 1691 1715M 1716U 1719D 1724M 1988M 1989N 1991 1996 2001M - 14(E) 176 185M 186U 190D 191M 212 215M 225M 227M 230U 332M 468M 1197D 1201 1203 1208U 1293D 1691 - 1724M - 15(F) 176 181M 182U 190D 191M 212 221M 222U 225 332M 372D 380U 418D 473U 781D 830U 835D 862U - 916D 921 924U 927D 932 936U 955D 977U 1001 1002D 1007 1013U 1069D 1086U 1123D 1149 1164U 1197D - 1209U 1247D 1260U 1293D 1691 1711M 1712U 1719D 1724M 1742M 1743 1744 1765U 1766 1767 1768D -1 Diagnostic Cross Reference and Assembler Summary Page 78 -- HLASM R6.0 2016/08/29 08.42 -0Statements Flagged -0 178(P1,178), 214(P1,214), 362(P1,362), 410(P1,410), 450(P1,450), 490(P1,490), 515(P1,515), 558(P1,558), - 562(P1,562), 565(P1,565), 650(P1,650), 723(P1,723), 765(P1,765), 814(P1,814), 834(P1,834), 883(P1,883), 913(P1,913), - 954(P1,954), 999(P1,999), 1041(P1,1041), 1112(P1,1112), 1122(P1,1122), 1187(P1,1187), 1232(P1,1232), 1280(P1,1280), - 1310(P1,1310), 1428(P1,1428), 1524(P1,1524), 1693(P1,1673) - - 29 Statements Flagged in this Assembly 4 was Highest Severity Code -0HIGH LEVEL ASSEMBLER, 5696-234, RELEASE 6.0, PTF UK37157 -0SYSTEM: z/OS 01.10.00 JOBNAME: IBMUSER7 STEPNAME: *OMVSEX PROCSTEP: (NOPROC) -0Data Sets Allocated for this Assembly - Con DDname Data Set Name Volume Member - P1 SYSIN /mbhfs/sos4k.asm - L1 SYSLIB CEE.SCEEMAC ZAPRD2 - L2 SYS1.MACLIB ZARES1 - L3 SYS1.MODGEN ZARES1 - SYSLIN /mbhfs/sos4k.o - SYSPRINT /dev/fd1 - SYSTERM /dev/fd2 - - 1028584K allocated to Buffer Pool Storage required 360K - 2341 Primary Input Records Read 0 Library Records Read 0 Work File Reads - 0 ASMAOPT Records Read 3473 Primary Print Records Written 0 Work File Writes - 137 Object Records Written 0 ADATA Records Written -0Assembly Start Time: 08.42.21 Stop Time: 08.42.22 Processor Time: 00.00.00.3254 - Return Code 004 diff --git a/SOS_OS/source/sosouput.txt b/SOS_OS/source/sosouput.txt deleted file mode 100644 index bd125de..0000000 --- a/SOS_OS/source/sosouput.txt +++ /dev/null @@ -1,3473 +0,0 @@ -1 High Level Assembler Option Summary (PTF UK37157) Page 1 -- HLASM R6.0 2016/08/29 08.42 -0 No Overriding ASMAOPT Parameters - Overriding Parameters- OBJECT,ESD,RXREF,RLD,XREF(SHORT,UNREFS),DXREF,LIST,TERM,ASA - No Process Statements - - - Options for this Assembly -0 NOADATA - ALIGN - 3 ASA - BATCH - CODEPAGE(047C) - NOCOMPAT - NODBCS - NODECK - 3 DXREF - 3 ESD - NOEXIT - FLAG(0,ALIGN,CONT,EXLITW,NOIMPLEN,NOPAGE0,PUSH,RECORD,NOSUBSTR,USING0) - NOFOLD - NOGOFF - NOINFO - LANGUAGE(EN) - NOLIBMAC - LINECOUNT(60) - 3 LIST(121) - MACHINE(,NOLIST) - MXREF(SOURCE) - 3 OBJECT - OPTABLE(UNI,NOLIST) - NOPCONTROL - NOPESTOP - NOPROFILE - NORA2 - NORENT - 3 RLD - 3 RXREF - SECTALGN(8) - SIZE(MAX) - NOSUPRWARN - SYSPARM() - 3 TERM(WIDE) - NOTEST - THREAD - NOTRANSLATE - TYPECHECK(MAGNITUDE,REGISTER) - USING(NOLIMIT,MAP,WARN(15)) - NOWORKFILE - 3 XREF(SHORT,UNREFS) - - Standard DD Names- SYSLIN SYSLIB SYSIN SYSPRINT SYSPUNCH SYSUT1 SYSTERM SYSADATA ASMAOPT - Overriding DD Names- SYS00013 SYS00005 SYS00011 SYS00012 SYS00010 -1 External Symbol Dictionary Page 2 --Symbol Type Id Address Length Owner Id Flags Alias-of HLASM R6.0 2016/08/29 08.42 -0PROGRAM SD 00000001 00000000 00001770 00 - CARDLDR SD 00000002 00001770 000000A0 00 - IPLCARD SD 00000003 00001810 00000050 00 -1 Sample Operating System Version 2.00 Page 3 - Active Usings: None -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 2 *********************************************************************** 00020000 - 3 * * 00030000 - 4 * ***************************************************************** * 00040000 - 5 * * * * 00050000 - 6 * * Sample Operating System * * 00060002 - 7 * * Version 2.00 * * 00067002 - 8 * * Developed at MIT 1973 * * 00074002 - 9 * * * * 00090000 - 10 * ***************************************************************** * 00100000 - 11 * * 00100602 - 12 * Update 2015/10/31 Juergen Winkelmann, e-mail winkelmann@id.ethz.ch * 00101202 - 13 * * 00101802 - 14 * - change storage protection alignments to 4K \ * 00102402 - 15 * - replace SSK/ISK instructions with SSKE/ISKE > 4K support * 00103002 - 16 * - minor changes in storage protection logic / * 00103602 - 17 * - change number of parallel processing streams to 4 * 00104202 - 18 * - change core size to 16M * 00104802 - 19 * - replace table of valid $JOB card core requests with general * 00105402 - 20 * logic rounding up any none full page request entered to next * 00106002 - 21 * full page * 00106602 - 22 * - add IPL card and two card loader for one stop creation of an * 00107202 - 23 * IPLable card deck * 00107802 - 24 * - ignore external interrupts during initialization to avoid * 00108402 - 25 * IPLRTN getting interrupted by the interval timer * 00109002 - 26 * * 00109103 - 27 * Update 2015/11/05 Juergen Winkelmann, e-mail winkelmann@id.ethz.ch * 00109203 - 28 * * 00109303 - 29 * - allow reloading card readers without needing to re-IPL the * 00109403 - 30 * system. This functionality relies on Hercules' card reader * 00109503 - 31 * behavior with the EOF initialization in place. It will not * 00109603 - 32 * work in INTR mode. * 00109703 - 33 * * 00109744 - 34 * Update 2015/11/13 Juergen Winkelmann, e-mail winkelmann@id.ethz.ch * 00109784 - 35 * * 00109824 - 36 * - add UCB to support a console at 009 using the EXCP device * 00109864 - 37 * handler. * 00109904 - 38 * * 00110000 - 39 *********************************************************************** 00120000 -- - 41 PRINT ON,NODATA,GEN 00140000 - 000000 00000 01770 42 PROGRAM CSECT , sample operating system starts at zero 00150002 - 001770 01770 000A0 43 CARDLDR CSECT , two card loader follows at the end 00150102 - 44 *** 00150202 - 45 *** IPL card 00150302 - 46 *** 00150402 - 001810 01810 00050 47 IPLCARD CSECT , IPLable deck must begin with this card 00150502 - 001810 0000000000 48 PSWD DC F'0',X'00' initial program status word, disabled 00150602 - 001815 001770 49 DC AL3(LOADER) start execution at load address 00150702 - 001818 02001770 50 CCW1 DC X'02',AL3(LOADER) read 1st card to load address 00150802 - 00181C 40000050 51 DC XL4'40000050' chain, read length = 80 00150902 - 001820 020017C0 52 CCW2 DC X'02',AL3(LOADER+80) read 2nd card to load addr + 80 00151002 - 001824 00000050 53 DC XL4'00000050' read length = 80 00151102 - 001828 E2819497938540D6 54 DC C'Sample Operating System Version 2.00' eye catcher 00151202 -1 Sample Operating System Version 2.00 Page 4 - Active Usings: None -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0001850 0000000000000000 55 DC 16X'00' pad to card length 00151302 - 56 *** 00151402 - 57 *** loader 00151502 - 58 *** 00151602 - 59 * 00151702 - 60 * Initialize 00151802 - 61 * 00151902 - 001770 01770 000A0 62 CARDLDR CSECT , two card loader must follow IPL card 00152002 - 001770 05C0 63 BALR R12,0 establish .. 00152102 - 001772 4120 0002 00002 64 LA R2,2 .. base .. 00152202 - 001776 1BC2 65 SR R12,R2 .. register 00152302 - R:C 01770 66 USING CARDLDR,R12 tell assembler 00152402 - 001778 41B0 0000 00000 67 LA R11,0 addressability of .. 00152502 - R:B 00000 68 USING PROGRAM,R11 .. sample operating system 00152602 - 00177C 4120 0000 00000 69 LA R2,0 I/O .. 00152702 - 001780 4130 C06A 017DA 70 LA R3,IOINTRPT .. new PSWD 00152802 - 001784 9023 B078 00078 71 STM R2,R3,IONEW store I/O new PSWD 00152902 - 001788 8000 C07E 017EE 72 SSM ENBLECH0 enable interrupts from channel 0 00153002 - 00178C 4150 C0A0 01810 73 LA R5,CCWCHAIN address of card reader CCW chain 00153102 - 001790 5050 B048 00048 74 ST R5,CAW store address in CAW 00153202 - 001794 5830 C094 01804 75 L R3,NUMCARDS number of cards to read 00153302 - 001798 5840 C090 01800 76 L R4,LOADADDR target address of loaded code 00153402 - 77 * 00153502 - 78 * create CCW chain 00153602 - 79 * 00153702 - 00179C 1824 80 NEXTCARD LR R2,R4 load next card here 00153802 - 00179E BF28 C080 017F0 81 ICM R2,B'1000',READ insert write command 00153902 - 0017A2 5020 5000 00000 82 ST R2,0(,R5) store CCW 00154002 - 0017A6 4120 0050 00050 83 LA R2,80 length of card 00154102 - 0017AA 5020 5004 00004 84 ST R2,4(,R5) store length in CCW, zero all flags 00154202 - 0017AE 9640 5004 00004 85 OI 4(R5),X'40' indicate command chaining 00154302 - 0017B2 4140 4050 00050 86 LA R4,80(,R4) increment target address 00154402 - 0017B6 4150 5008 00008 87 LA R5,8(,R5) point to next CCW 00154502 - 0017BA 4630 C02C 0179C 88 BCT R3,NEXTCARD read next card 00154602 - 0017BE 5B50 C098 01808 89 S R5,EIGHT point to previous CCW 00154702 - 0017C2 94BF 5004 00004 90 NI 4(R5),X'BF' clear command chaining flag 00154802 - 91 * 00154902 - 92 * read cards and wait for completion 00155002 - 93 * 00155102 - 0017C6 9C00 000C 0000C 94 SIO 12(0) read cards 00155202 - 0017CA 4120 C066 017D6 95 LA R2,*+12 continue here after I/O completion 00155302 - 0017CE 5020 C08C 017FC 96 ST R2,CONTINUE store continue address in PSWD skeleton 00155402 - 0017D2 8200 C088 017F8 97 LPSW WAITPSWD wait for I/O completion 00155502 - 98 * 00155602 - 99 * "IPL" the Sample Operating System 00155702 - 100 * 00155802 - 0017D6 8200 0000 00000 101 LPSW 0 transfer control 00155902 - 102 * 00156002 - 103 * I/O interrupt handler 00156102 - 104 * 00156202 - 017DA 105 IOINTRPT EQU * 00156302 - 0017DA 9104 B044 00044 106 TM CSW+4,X'04' device end received? 00156402 - 0017DE 47E0 C07A 017EA 107 BNO IOINTRTN -> no, keep waiting 00156502 - 0017E2 94FD B039 00039 108 NI IOOLD+1,X'FD' -> yes, terminate wait state and .. 00156602 - 0017E6 947F B038 00038 109 NI IOOLD,X'7F' .. and disable channel 0 interrupts 00156702 -1 Sample Operating System Version 2.00 Page 5 - Active Usings: PROGRAM,R11 CARDLDR,R12 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -00017EA 8200 B038 00038 110 IOINTRTN LPSW IOOLD return to mainline 00156802 - 111 DROP R11,R12 no longer needed 00156902 - 112 * 00157002 - 113 * Data area 00157102 - 114 * 00157202 - 0017EE F8F0 115 ENBLECH0 DC C'80' mask to enable channel 0 interrupts 00157302 - 0017F0 02 116 READ DC X'02' read a card 00157402 - 0017F8 117 DS 0D align 00157502 - 0017F8 80020000 118 WAITPSWD DC X'80020000' wait with channel 0 interrupts enabled 00157602 - 0017FC 119 CONTINUE DS F continue here after wait 00157702 - 001800 00000000 120 LOADADDR DC F'0' code is to be loaded here 00157802 - 001804 0000004B 121 NUMCARDS DC F'75' number of cards to read 00157904 - 001808 00000008 122 EIGHT DC F'8' CCW length 00158002 - 001810 123 CCWCHAIN DS 0D start of card reader CCW chain 00158102 - 124 *** 00158202 - 125 *** Sample Operating System code begins here 00158302 - 126 *** 00158402 - 000000 00000 01770 127 PROGRAM CSECT , sample OS must follow loader cards 00158502 -0 000000 129 CORESIZE EQU 16777216 bytes of core in object machine 00170002 -0 R:0 00000 131 USING *,0 COMMUNICATIONS AREA 00190000 -0000000 000000000000103E 133 IPLPSW DC B'00000000',B'00000000',X'0000',X'00',AL3(IPLRTN) 00210000 - 000008 134 IPLCCW1 DS D . IPL CCW #1 00220000 - 000010 135 IPLCCW2 DS D . IPL CCW #2 00230000 - 000018 136 EXTOLD DS D . EXTERNAL OLD PSW 00240000 - 000020 137 SVCOLD DS D . SVC OLD PSW 00250000 - 000028 138 PGMOLD DS D . PROGRAM INTERRUPT OLD PSW 00260000 - 000030 139 MCHKOLD DS D . MACHINE CHECK OLD PSW 00270000 - 000038 140 IOOLD DS D . I/O INTERRUPT OLD PSW 00280000 - 000040 141 CSW DS D . CHANNEL STATUS WORD 00290000 - 000048 142 CAW DS F . CHANNEL ADDRESS WORD 00300000 - 00004C 143 UNUSED0 DS F . 00310000 - 000050 FFFFFFFF 144 TIMER DC F'-1' . TIMER 00320000 - 000054 00000000 145 UNUSED1 DC F'0' . 00330000 - 000058 000000000000027A 146 EXTNEW DC B'00000000',B'00000000',X'0000',X'00',AL3(EXTHANDL) 00340000 - 000060 00000000000002B2 147 SVCNEW DC B'00000000',B'00000000',X'0000',X'00',AL3(SVCHANDL) 00350000 - 000068 00000000000002B0 148 PGMNEW DC B'00000000',B'00000000',X'0000',X'00',AL3(PGMHANDL) 00360000 - 000070 0002000000000000 149 MCHKNEW DC B'00000000',B'00000010',X'0000',X'00',AL3(0) 00370000 - 000078 00000000000017DA 150 IONEW DC B'00000000',B'00000000',X'0000',X'00',AL3(IOINTRPT) <-+ 00380002 - 151 *** | 00382002 - 152 *** IOINTRPT will be replaced with IOHANDL after IPL by IPLRTN -----+ 00384002 - 153 *** 00386002 - 000080 00080 00180 154 ORG *+X'100' SPACE OVER STAND ALONE DUMP AREA 00390000 - 000180 00001740 155 FSBPTR DC A(VERYEND) . FSB POINTER 00400000 - 000184 0000000100000000 156 FSBSEM DC F'1,0' . FSB SEMAPHORE 00410000 - 00018C 0000000000000000 157 MEMORY DC F'0,0' . MEMORY SEMAPHORE 00420000 - 000194 0000000100000000 158 CAWSEM DC F'1,0' . CAW SEMAPHORE 00430000 -000019C 160 TRAPSAVE DS 16F . STORAGE FOR EXTERNAL INTERRUPTS 00450000 - 0001DC 161 IOHSAVE DS 16F . STORAGE FOR I/O INTERRUPTS 00460000 -000021C 163 SYSSEMSA DS CL84 . SYSTEM SEMAPHORE SAVE AREA 00480000 -1 Sample Operating System Version 2.00 Page 6 - Active Usings: PROGRAM,R0 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000270 165 RUNNING DS A . RUNNING 00500000 - 000274 166 NEXTTRY DS A . NEXTTRY 00510000 - 000278 167 NEXTTRYM DS C,0H . NEXTTRY MODIFIED 00520000 -1 Sample Operating System Version 2.00 Page 7 - Active Usings: PROGRAM,R0 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 169 *********************************************************************** 00540000 - 170 * * 00550000 - 171 * EXTERNAL, PROGRAM, AND SVC INTERRUPT HANDLERS * 00560000 - 172 * * 00570000 - 173 *********************************************************************** 00580000 -0 0027A 175 EXTHANDL EQU * . EXTERNAL INTERRUPT HANDLER 00600000 - 00027A 900F 019C 0019C 176 STM 0,15,TRAPSAVE . SAVE REGISTERS 00610000 - 00027E 0510 177 BALR 1,0 . ESTABLISH ADDRESSING 00620000 - R:1 00280 178 USING *,1 00630000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 178 in /mbhfs/sos4k.asm on volume: - 000280 9580 001B 0001B 179 CLI EXTOLD+3,X'80' . SEE IF TIMER TRAP 00640000 - 000284 4770 1028 002A8 180 BNE EXTHRET . IF NOT, IGNORE 00650000 - 000288 58F0 0270 00270 181 L 15,RUNNING . SET UP REGISTERS FOR TRAFFIC 00660000 - R:F 00000 182 USING PCB,15 . CONTROLLER (XPER) 00670000 - 00028C 95FF F019 00019 183 CLI PCBBLOKT,X'FF' . IF BLOCKED, NO PROCESS IS 00680000 - 000290 4780 1028 002A8 184 BE EXTHRET . RUNNABLE, SO RETURN 00690000 - 000294 41E0 F04C 0004C 185 LA 14,PCBISA . GET SAVE AREA 00700000 - R:E 00000 186 USING SA,14 00710000 - 000298 D207 E000 0018 00000 00018 187 MVC SAPSW,EXTOLD . AND STORE OLD STUFF INTO IT 00720000 - 00029E D23F E008 019C 00008 0019C 188 MVC SAREGS,TRAPSAVE 00730000 - 0002A4 47F0 12EA 0056A 189 B XPER . THEN GO TO TRAFFIC SCHEDULER 00740000 - 190 DROP 14,15 00750000 - 0002A8 980F 019C 0019C 191 EXTHRET LM 0,15,TRAPSAVE . TO IGNORE AN INTERRUPT, RELOAD 00760000 - 0002AC 8200 0018 00018 192 LPSW EXTOLD . AND TRANSFER BACK 00770000 -0 002B0 194 PGMHANDL EQU * . PROGRAM INTERRUPT HANDLER 00790000 - 0002B0 0A6F 195 SVC C'?' . IN ANY CASE, AN ERROR 00800000 -1 Sample Operating System Version 2.00 Page 8 - Active Usings: PROGRAM,R0 PROGRAM+X'280',R1 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 197 *********************************************************************** 00820000 - 198 * * 00830000 - 199 * SVC INTERRUPT HANDLER * 00840000 - 200 * * 00850000 - 201 * FOR ALL ROUTINES ENTERED BY SVC INTERRUPT, THE * 00860000 - 202 * FOLLOWING REGISTERS CONTAIN THIS INFORMATION: * 00870000 - 203 * * 00880000 - 204 * REGISTER 1 - BASE REGISTER FOR ROUTINE * 00890000 - 205 * REGISTER 2 - POINTER TO ARGUMENT LIST (IF ANY) * 00900000 - 206 * REGISTER 14 - POINTER TO SAVEAREA USED FOR THIS SVC * 00910000 - 207 * REGISTER 15 - POINTER TO PCB PRESENTLY RUNNING * 00920000 - 208 * * 00930000 - 209 *********************************************************************** 00940000 -0 002B2 211 SVCHANDL EQU * . SVC HANDLER 00960000 - 0002B2 900F 019C 0019C 212 STM 0,15,TRAPSAVE . SAVE REGISTERS 00970000 - 0002B6 0590 213 BALR 9,0 . ESTABLISH ADDRESSING 00980000 - R:9 002B8 214 USING *,9 00990000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 178 - ** ASMA435I Record 214 in /mbhfs/sos4k.asm on volume: - 0002B8 98AE 905C 00314 215 LM 10,14,SVCCONST . INITIALIZE REGISTERS 01000000 - 0002BC 43A0 0023 00023 216 IC 10,SVCOLD+3 . GET SVC CODE 01010000 - 0002C0 43AA 9070 00328 217 IC 10,SVCHTABL(10) . TRANSLATE INTO TABLE OFFSET 01020000 - 0002C4 41AA 9170 00428 218 LA 10,SVCRTN(10) . REG 10 -> THE CORRECT PSW 01030000 - 0002C8 9500 A002 00002 219 CLI 2(10),X'00' . IS THIS CALL PROTECTED? 01040000 - 0002CC 4780 904A 00302 220 BE SVCHPROT . THEN SEE IF WE CAN CALL IT 01050000 - 0002D0 58F0 0270 00270 221 SVCOK L 15,RUNNING . GET PCB POINTER 01060000 - R:F 00000 222 USING PCB,15 01070000 - 0002D4 9500 A003 00003 223 CLI 3(10),X'00' . IS IT A SYSTEM SAVEAREA? 01080000 - 0002D8 4780 9026 002DE 224 BE SYSSEM . DON'T USE REG 14 AS PCB POINTER 01090000 - 0002DC 18EF 225 LR 14,15 . ELSE, SET UP PCB POINTER 01100000 - 0002DE 43BA 0003 00003 226 SYSSEM IC 11,3(10) . GET POINTER TO SAVE AREA OFFSET 01110000 - 0002E2 5AEB 9210 004C8 227 A 14,SVCSAVE(11) . REG 14 -> SAVE AREA 01120000 - 0002E6 954B 0023 00023 228 CLI SVCOLD+3,C'.' . ARE WE CALLING XPER? 01130000 - 0002EA 4780 9042 002FA 229 BE SVCXPER . IF SO, DON'T SAVE RETURN STATUS 01140000 - R:E 00000 230 USING SA,14 01150000 - 0002EE D207 E000 0020 00000 00020 231 MVC SAPSW,SVCOLD . SAVE PSW 01160000 - 0002F4 D23F E008 019C 00008 0019C 232 MVC SAREGS,TRAPSAVE . SAVE REGISTERS 01170000 - 0002FA 581A 0004 00004 233 SVCXPER L 1,4(10) . MAKE ADDRESSING EASY WITHIN 01180000 - 0002FE 8200 A000 00000 234 LPSW 0(10) . ROUTINE, AND GO THERE 01190000 - 000302 58C0 0020 00020 235 SVCHPROT L 12,SVCOLD . GET PROTECTION KEY 01200000 - 000306 14CD 236 NR 12,13 . IS IT A USER? 01210000 - 000308 4780 9018 002D0 237 BZ SVCOK . IF NO, THAT'S FINE 01220000 - 00030C 41A0 91F8 004B0 238 LA 10,SVCRTN+136 . ELSE SET UP CALL TO XQUE 01230000 - 000310 47F0 9018 002D0 239 B SVCOK . 01240000 - 240 DROP 9 01250000 - 000314 0000000000000000 241 SVCCONST DC 3F'0',X'00F00000',F'0' 01260000 -0000328 8484848484848484 243 SVCHTABL DC 256X'84' . TABLE OF PSW OFFSETS 01280000 - 000428 00428 003FF 244 ORG SVCHTABL+C'P' 01290000 - 0003FF 00 245 DC AL1(0) 01300000 - 000400 00400 0040D 246 ORG SVCHTABL+C'V' 01310000 - 00040D 08 247 DC AL1(8) 01320000 - 00040E 0040E 00382 248 ORG SVCHTABL+C'!' 01330000 -1 Sample Operating System Version 2.00 Page 9 - Active Usings: PROGRAM,R0 PROGRAM+X'280',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000382 10 249 DC AL1(16) 01340000 - 000383 00383 00393 250 ORG SVCHTABL+C',' 01350000 - 000393 18 251 DC AL1(24) 01360000 - 000394 00394 003EA 252 ORG SVCHTABL+C'B' 01370000 - 0003EA 20 253 DC AL1(32) 01380000 - 0003EB 003EB 003E9 254 ORG SVCHTABL+C'A' 01390000 - 0003E9 28 255 DC AL1(40) 01400000 - 0003EA 003EA 003EE 256 ORG SVCHTABL+C'F' 01410000 - 0003EE 30 257 DC AL1(48) 01420000 - 0003EF 003EF 003F1 258 ORG SVCHTABL+C'I' 01430000 - 0003F1 38 259 DC AL1(56) 01440000 - 0003F2 003F2 003F9 260 ORG SVCHTABL+C'J' 01450000 - 0003F9 40 261 DC AL1(64) 01460000 - 0003FA 003FA 00373 262 ORG SVCHTABL+C'.' 01470000 - 000373 48 263 DC AL1(72) 01480000 - 000374 00374 00401 264 ORG SVCHTABL+C'R' 01490000 - 000401 50 265 DC AL1(80) 01500000 - 000402 00402 0040A 266 ORG SVCHTABL+C'S' 01510000 - 00040A 58 267 DC AL1(88) 01520000 - 00040B 0040B 003EB 268 ORG SVCHTABL+C'C' 01530000 - 0003EB 60 269 DC AL1(96) 01540000 - 0003EC 003EC 003FD 270 ORG SVCHTABL+C'N' 01550000 - 0003FD 68 271 DC AL1(104) 01560000 - 0003FE 003FE 00410 272 ORG SVCHTABL+C'Y' 01570000 - 000410 70 273 DC AL1(112) 01580000 - 000411 00411 00411 274 ORG SVCHTABL+C'Z' 01590000 - 000411 78 275 DC AL1(120) 01600000 - 000412 00412 003EC 276 ORG SVCHTABL+C'D' 01610000 - 0003EC 80 277 DC AL1(128) 01620000 - 0003ED 003ED 00397 278 ORG SVCHTABL+C'?' 01630000 - 000397 88 279 DC AL1(136) 01640000 - 000398 00398 003F0 280 ORG SVCHTABL+C'H' 01650000 - 0003F0 90 281 DC AL1(144) 01660000 - 0003F1 003F1 003ED 282 ORG SVCHTABL+C'E' 01670000 - 0003ED 98 283 DC AL1(152) 01680000 - 0003EE 003EE 00428 284 ORG SVCHTABL+256 01690000 -0000428 286 SVCRTN DS 0D . THE PSWS 01710000 - 287 * IN THE FOLLOWING PSWS, THE THIRD BYTE INDICATES * 01720000 - 288 * WHETHER THE SVC IS RESTRICTED: * 01730000 - 289 * X'00' -> OPERATING SYSTEM ONLY * 01740000 - 290 * X'FF' -> AVAILABLE TO USER ALSO * 01750000 - 291 * * 01760000 - 292 * THE FOURTH BYTE INDICATES WHICH SAVE AREA TO USE; * 01770000 - 293 * SVCSAVE BELOW SHOWS THE CODE VALUES. * 01780000 - 000428 00000000000004EE 294 DC B'00000000',B'00000000',X'0000',X'00',AL3(XP) 01790000 - 000430 0000000000000534 295 DC B'00000000',B'00000000',X'0000',X'00',AL3(XV) 01800000 - 000438 00000004000005C0 296 DC B'00000000',B'00000000',X'0004',X'00',AL3(XEXC) 01810000 - 000440 00000004000005D2 297 DC B'00000000',B'00000000',X'0004',X'00',AL3(XCOM) 01820000 - 000448 0000000400000744 298 DC B'00000000',B'00000000',X'0004',X'00',AL3(XB) 01830000 - 000450 FF00000C00000600 299 DC B'11111111',B'00000000',X'000C',X'00',AL3(XA) 01840000 - 000458 FF00000C000006B6 300 DC B'11111111',B'00000000',X'000C',X'00',AL3(XF) 01850000 - 000460 000000040000087A 301 DC B'00000000',B'00000000',X'0004',X'00',AL3(XI) 01860000 - 000468 00000004000008A6 302 DC B'00000000',B'00000000',X'0004',X'00',AL3(XJ) 01870000 - 000470 000000040000056A 303 DC B'00000000',B'00000000',X'0004',X'00',AL3(XPER) 01880000 -1 Sample Operating System Version 2.00 Page 10 - Active Usings: PROGRAM,R0 PROGRAM+X'280',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000478 FF00FF08000008EC 304 DC B'11111111',B'00000000',X'FF08',X'00',AL3(XR) 01890000 - 000480 FF00FF0800000978 305 DC B'11111111',B'00000000',X'FF08',X'00',AL3(XS) 01900000 - 000488 FF00FF0800000780 306 DC B'11111111',B'00000000',X'FF08',X'00',AL3(XC) 01910000 - 000490 0000FF04000008CA 307 DC B'00000000',B'00000000',X'FF04',X'00',AL3(XN) 01920000 - 000498 0000FF0800000A0A 308 DC B'00000000',B'00000000',X'FF08',X'00',AL3(XY) 01930000 - 0004A0 FF00FF0800000A42 309 DC B'11111111',B'00000000',X'FF08',X'00',AL3(XZ) 01940000 - 0004A8 FF00FF08000007C6 310 DC B'11111111',B'00000000',X'FF08',X'00',AL3(XD) 01950000 - 0004B0 0000FF0400000A8E 311 DC B'00000000',B'00000000',X'FF04',X'00',AL3(XQUE) 01960000 - 0004B8 FF00FF0800000842 312 DC B'11111111',B'00000000',X'FF08',X'00',AL3(XH) 01970000 - 0004C0 FF00000C00000608 313 DC B'11111111',B'00000000',X'000C',X'00',AL3(XAUTO) 01980000 -00004C8 315 SVCSAVE DS 0F . THE SAVE AREA OFFSETS 02000000 - 0004C8 0000021C 316 DC A(SYSSEMSA) . CODE 00 -> SYSSEMSA 02010000 - 0004CC 0000004C 317 DC A(PCBISA-PCB) . CODE 04 -> INTERRUPT SAVE AREA 02020000 - 0004D0 000000A0 318 DC A(PCBFSA-PCB) . CODE 08 -> FAULT SAVE AREA 02030000 - 0004D4 000000F4 319 DC A(PCBMSA-PCB) . CODE 0C -> MEMORY SAVE AREA 02040000 -- - 321 *********************************************************************** 02060000 - 322 * * 02070000 - 323 * RETURN SEQUENCE FOR REQUEST DRIVEN ROUTINES AND TRAFFIC CONTROLLER * 02080000 - 324 * * 02090000 - 325 *********************************************************************** 02100000 -00004D8 327 DS 0D 02120000 - 0004D8 00000000000004E0 328 RETURN DC B'00000000',B'00000000',X'0000',X'00',AL3(RETURNR) 02130000 -0 004E0 330 RETURNR EQU * . RETURN ROUTINE FOR SVC'S AND XPER 02150000 - 0004E0 D207 0020 E000 00020 00000 331 MVC SVCOLD,SAPSW . SAVE PSW IN A SAFE PLACE 02160000 - 0004E6 980F E008 00008 332 LM 0,15,SAREGS . RELOAD REGISTERS 02170000 - 0004EA 8200 0020 00020 333 LPSW SVCOLD . AND RETURN 02180000 -1 Sample Operating System Version 2.00 Page 11 - Active Usings: PROGRAM,R0 PROGRAM+X'280',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 335 *********************************************************************** 02200000 - 336 * * 02210000 - 337 * REQUEST DRIVEN ROUTINES * 02220000 - 338 * * 02230000 - 339 *********************************************************************** 02240000 -- - 341 *********************************************************************** 02260000 - 342 * * 02270000 - 343 * XP ROUTINE * 02280000 - 344 * * 02290000 - 345 * FUNCTION: TO IMPLEMENT "P" PRIMITIVE FOR SEMAPHORES * 02300000 - 346 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS SM * 02310000 - 347 * SM DS 0D SEMAPHORE DEFINITION * 02320000 - 348 * SMVAL DS F VALUE * 02330000 - 349 * SMPTR DS A POINTER TO FIRST WAITER * 02340000 - 350 * ROUTINES USED: XPER * 02350000 - 351 * PROCEDURE: SUBTRACT ONE FROM SMVAL; IF NON-NEGATIVE, RETURN. * 02360000 - 352 * IF NEGATIVE, PLACE RUNNING PROCESS AT END OF LIST * 02370000 - 353 * OF PRECESSES WAITING ON SM. BLOCK CALLING PROCESS; * 02380000 - 354 * ENTER TRAFFIC CONTROLLER. * 02390000 - 355 * ERROR CHECKS: NONE * 02400000 - 356 * INTERRUPTS: OFF * 02410000 - 357 * USER ACCESS: NO * 02420000 - 358 * * 02430000 - 359 *********************************************************************** 02440000 -0 004EE 361 XP EQU * . THE XP ROUTINE 02460000 - R:1 004EE 362 USING *,1 02470000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 362 in /mbhfs/sos4k.asm on volume: - R:2 00000 363 USING SM,2 . ARGUMENT IS A SEMAPHORE 02480000 - 0004EE 5830 2000 00000 364 L 3,SMVAL . GET THE VALUE 02490000 - 0004F2 0630 365 BCTR 3,0 . SUBTRACT ONE 02500000 - 0004F4 5030 2000 00000 366 ST 3,SMVAL . AND STORE IT BACK 02510000 - 0004F8 1233 367 LTR 3,3 . SET CONDITION CODE 02520000 - 0004FA 4740 1014 00502 368 BM XPWAIT . IF IT'S NEGATIVE, MUST WAIT 02530000 - 0004FE 8200 04D8 004D8 369 LPSW RETURN . ELSE RETURN NOW 02540000 - 000502 4140 2004 00004 370 XPWAIT LA 4,SMPTR . START GOING DOWN 02550000 - 000506 5850 2004 00004 371 L 5,SMPTR . CHAIN OF POINTERS 02560000 - 372 DROP 15 02570000 - R:5 00000 373 USING PCB,5 02580000 - 00050A 1255 374 XPLOOP LTR 5,5 . IF REACHED END 02590000 - 00050C 4780 102E 0051C 375 BZ XPTHEN . ADD OUR PCB ON. ELSE, 02600000 - 000510 4140 5030 00030 376 LA 4,PCBNSW . INCREMENT POINTERS 02610000 - 000514 5850 5030 00030 377 L 5,PCBNSW 02620000 - 000518 47F0 101C 0050A 378 B XPLOOP . AND TRY AGAIN 02630000 - 379 DROP 5 02640000 - R:F 00000 380 USING PCB,15 02650000 - 00051C D203 4000 0270 00000 00270 381 XPTHEN MVC 0(4,4),RUNNING . WE'RE AT THE END 02660000 - 000522 5050 F030 00030 382 ST 5,PCBNSW . STORE NULL POINTER 02670000 - 000526 92FF F019 00019 383 MVI PCBBLOKT,X'FF' . AND WE'RE BLOCKED 02680000 - 00052A D253 F04C 021C 0004C 0021C 384 MVC PCBISA,SYSSEMSA . SWITCH SAVE AREAS 02690000 - 000530 47F0 107C 0056A 385 B XPER . SO RUN SOMEONE ELSE 02700000 -1 Sample Operating System Version 2.00 Page 12 - Active Usings: PROGRAM,R0 PROGRAM+X'4EE',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 386 DROP 2 02710000 -1 Sample Operating System Version 2.00 Page 13 - Active Usings: PROGRAM,R0 PROGRAM+X'4EE',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 388 *********************************************************************** 02730000 - 389 * * 02740000 - 390 * XV ROUTINE * 02750000 - 391 * * 02760000 - 392 * FUNCTION: TO IMPLEMENT "V" PRIMITIVE FOR SEMAPHORES * 02770000 - 393 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS SM * 02780000 - 394 * SM DS 0D SEMAPHORE DEFINITION * 02790000 - 395 * SMVAL DS F VALUE * 02800000 - 396 * SMPTR DS A POINTER TO FIRST WAITER * 02810000 - 397 * ROUTINES USED: NONE * 02820000 - 398 * PROCEDURE: ADD ONE TO SMVAL; IF > ZERO, RETURN. IF ZERO OR * 02830000 - 399 * LESS, REMOVE FIRST PROCESS FROM WAITER CHAIN; * 02840000 - 400 * UNBLOCK IT; IF NEXTTRYM NOT SET, SET IT AND SET * 02850000 - 401 * NEXTTRY TO THAT PROCESS; RETURN; IF NEXTTRYM SET, * 02860000 - 402 * RETURN. * 02870000 - 403 * ERROR CHECKS: NONE * 02880000 - 404 * INTERRUPTS: OFF * 02890000 - 405 * USER ACCESS: NO * 02900000 - 406 * * 02910000 - 407 *********************************************************************** 02920000 -0 00534 409 XV EQU * . THE XV ROUTINE 02940000 - R:1 00534 410 USING *,1 02950000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 410 in /mbhfs/sos4k.asm on volume: - R:2 00000 411 USING SM,2 . ARGUMENT IS A SEMAPHORE 02960000 - 000534 5830 2000 00000 412 L 3,SMVAL . GET THE VALUE 02970000 - 000538 5A30 1924 00E58 413 A 3,=F'1' . ADD ONE 02980000 - 00053C 5030 2000 00000 414 ST 3,SMVAL . AND STORE IT BACK 02990000 - 000540 47D0 1014 00548 415 BNP XVWAKEUP . IF <=0, SOMEONE'S WAITING 03000000 - 000544 8200 04D8 004D8 416 LPSW RETURN . ELSE RETURN 03010000 - 000548 5840 2004 00004 417 XVWAKEUP L 4,SMPTR . GET THE FIRST OF THE GUYS 03020000 - 418 DROP 15 03030000 - R:4 00000 419 USING PCB,4 03040000 - 00054C D203 2004 4030 00004 00030 420 MVC SMPTR,PCBNSW . REMEMBER THE REST 03050000 - 000552 9200 4019 00019 421 MVI PCBBLOKT,X'00' . WE'RE NO LONGER BLOCKING HIM 03060000 - 000556 95FF 0278 00278 422 CLI NEXTTRYM,X'FF' . IS NEXT TRY MODIFIED? 03070000 - 00055A 4780 1032 00566 423 BE XVRET . IF SO, WELL OK 03080000 - 00055E 5040 0274 00274 424 ST 4,NEXTTRY ELSE MODIFY NEXTTRY 03090000 - 000562 92FF 0278 00278 425 MVI NEXTTRYM,X'FF' . AND SAY SO 03100000 - 000566 8200 04D8 004D8 426 XVRET LPSW RETURN . GET BACK 03110000 - 427 DROP 2,4 03120000 -1 Sample Operating System Version 2.00 Page 14 - Active Usings: PROGRAM,R0 PROGRAM+X'534',R1 SA,R14 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 429 *********************************************************************** 03140000 - 430 * * 03150000 - 431 * XPER ROUTINE (TRAFFIC CONTROLLER) * 03160000 - 432 * * 03170000 - 433 * FUNCTION: TO IMPLEMENT MULTIPROGRAMMING * 03180000 - 434 * DATABASES: NONE * 03190000 - 435 * ROUTINES USED: NONE * 03200000 - 436 * PROCEDURE: STARTING WITH NEXTTRY, SEARCH FOR PROCESS ON ALL * 03210000 - 437 * PCB CHAIN NOT BLOCKED OR STOPPED; IF FOUND, USE AS * 03220000 - 438 * NEW RUNNING, FOR 50 MS OF TIME AND RETURN. ELSE, * 03230000 - 439 * ENTER WAIT STATE WITH INTERRUPTS ON, AND TRY TO * 03240000 - 440 * SCHEDULE AGAIN AFTER INTERRUPT; RETURN. * 03250000 - 441 * ERROR CHECKS: NONE * 03260000 - 442 * INTERRUPTS: OFF * 03270000 - 443 * USER ACCESS: NO * 03280000 - 444 * * 03290000 - 445 *********************************************************************** 03300000 -0 0056A 447 XPER EQU * . ROUTINE XPER: TRAFFIC SCHEDULER 03320000 - 00056A 8000 0078 00078 448 SSM IONEW . MASK OFF INTERRUPTS 03330000 - 00056E 0510 449 BALR 1,0 03340000 - R:1 00570 450 USING *,1 03350000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 450 in /mbhfs/sos4k.asm on volume: - 000570 58A0 0274 00274 451 L 10,NEXTTRY . START LOOKING AT NEXTTRY 03360000 - 000574 18BA 452 LR 11,10 . REMEMBER WHICH THAT WAS 03370000 - R:A 00000 453 USING PCB,10 03380000 - 000576 95FF A019 00019 454 GWLOOP CLI PCBBLOKT,X'FF' . IF IT'S BLOCKED 03390000 - 00057A 4780 1016 00586 455 BE GWINC . IGNORE 03400000 - 00057E 95FF A018 00018 456 CLI PCBSTOPT,X'FF' . ELSE, IF IT'S NOT STOPPED 03410000 - 000582 4770 1030 005A0 457 BNE GWRUN . WE CAN RUN IT 03420000 - 000586 58A0 A010 00010 458 GWINC L 10,PCBNPALL . ELSE, GO TO THE NEXT 03430000 - 00058A 19AB 459 CR 10,11 . IF WE'VE SEEN ALL, QUIT 03440000 - 00058C 4770 1006 00576 460 BNE GWLOOP . ELSE TRY AGAIN 03450000 - 000590 8200 1028 00598 461 LPSW IDLE . SIT AND WAIT 03460000 - 000598 462 DS 0D 03470000 - 000598 FE0200000000056A 463 IDLE DC B'11111110',B'00000010',X'0000',X'00',AL3(XPER) 03480000 -00005A0 D203 0274 A010 00274 00010 465 GWRUN MVC NEXTTRY,PCBNPALL . GET A NEW NEXTTRY 03500000 - 0005A6 9200 0278 00278 466 MVI NEXTTRYM,X'00' . NOT MODIFIED 03510000 - 0005AA 50A0 0270 00270 467 ST 10,RUNNING . GET A NEW RUNNING 03520000 - 0005AE 41E0 A04C 0004C 468 LA 14,PCBISA 03530000 - 0005B2 D203 0050 104C 00050 005BC 469 MVC TIMER,QUANTUM . INTERRUPT AFTER 50 MS 03540000 - 0005B8 8200 04D8 004D8 470 LPSW RETURN . AND GO TO RETURNR 03550000 - 0005BC 00000F00 471 QUANTUM DC X'00000F00' . QUANTUM OF TIME 03560000 - 472 DROP 10 03570000 - R:F 00000 473 USING PCB,15 03580000 -1 Sample Operating System Version 2.00 Page 15 - Active Usings: PROGRAM,R0 PROGRAM+X'570',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 475 *********************************************************************** 03600000 - 476 * * 03610000 - 477 * XEXC ROUTINE * 03620000 - 478 * * 03630000 - 479 * FUNCTION: TO ENTER SMC SECTION * 03640000 - 480 * DATABASES: NONE * 03650000 - 481 * ROUTINES USED: NONE * 03660000 - 482 * PROCEDURE: INCREMENT SMC BYTE IN PCB BY ONE; RETURN. * 03670000 - 483 * ERROR CHECKS: NONE * 03680000 - 484 * INTERRUPTS: OFF * 03690000 - 485 * USER ACCESS: NO * 03700000 - 486 * * 03710000 - 487 *********************************************************************** 03720000 -0 005C0 489 XEXC EQU * . ROUTINE XEXC: ENTER SMC SECTION 03740000 - R:1 005C0 490 USING *,1 03750000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 490 in /mbhfs/sos4k.asm on volume: - 0005C0 1B88 491 SR 8,8 03760000 - 0005C2 4380 F01A 0001A 492 IC 8,PCBINSMC 03770000 - 0005C6 4188 0001 00001 493 LA 8,1(8) . ADD ONE TO SMC BYTE 03780000 - 0005CA 4280 F01A 0001A 494 STC 8,PCBINSMC 03790000 - 0005CE 8200 04D8 004D8 495 LPSW RETURN . AND LEAVE 03800000 -0 497 *********************************************************************** 03820000 - 498 * * 03830000 - 499 * XCOM ROUTINE * 03840000 - 500 * * 03850000 - 501 * FUNCTION: TO LEAVE SMC SECTION * 03860000 - 502 * DATABASES: NONE * 03870000 - 503 * ROUTINES USED: XP, XV * 03880000 - 504 * PROCEDURE: DECREMENT SMC BYTE IN PCB BY ONE; IF NOT ZERO, * 03890000 - 505 * RETURN. ELSE, CHECK FOR STOP WAITING; IF STOP * 03900000 - 506 * WAITING, ALLOW STOP AND BLOCK SELF; RETURN. IF NO * 03910000 - 507 * STOP WAITING, RETURN. * 03920000 - 508 * ERROR CHECKS: NONE * 03930000 - 509 * INTERRUPTS: OFF * 03940000 - 510 * USER ACCESS: NO * 03950000 - 511 * * 03960000 - 512 *********************************************************************** 03970000 -0 005D2 514 XCOM EQU * . ROUTINE XCOM: LEAVE SMC 03990000 - R:1 005D2 515 USING *,1 04000000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 515 in /mbhfs/sos4k.asm on volume: - 0005D2 1B88 516 SR 8,8 04010000 - 0005D4 4380 F01A 0001A 517 IC 8,PCBINSMC 04020000 - 0005D8 0680 518 BCTR 8,0 . SUBTRACT ONE FROM IN SMC BYTE 04030000 - 0005DA 4280 F01A 0001A 519 STC 8,PCBINSMC 04040000 - 0005DE 1288 520 LTR 8,8 . IS IT ZERO? 04050000 - 0005E0 4770 102A 005FC 521 BNZ XCOMRET . NO, THEN GET BACK, OTHERWISE 04060000 - 0005E4 9500 F01B 0001B 522 CLI PCBSW,X'00' . IS STOP WAITING? 04070000 - 0005E8 4780 102A 005FC 523 BE XCOMRET . IF NOT, RETURN 04080000 - 0005EC 9200 F01B 0001B 524 MVI PCBSW,X'00' . STOPS NOT WAITING AFTER THIS 04090000 - 0005F0 4120 F034 00034 525 LA 2,PCBSRS . WE'LL "V" THE STOPPER, 04100000 -1 Sample Operating System Version 2.00 Page 16 - Active Usings: PROGRAM,R0 PROGRAM+X'5D2',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -00005F4 0AE5 526 SVC C'V' 04110000 - 0005F6 4120 F03C 0003C 527 LA 2,PCBSES . AND "P" THE STOPPEE. 04120000 - 0005FA 0AD7 528 SVC C'P' 04130000 - 0005FC 8200 04D8 004D8 529 XCOMRET LPSW RETURN . AND HERE (IF EVER) WE RETURN 04140000 -1 Sample Operating System Version 2.00 Page 17 - Active Usings: PROGRAM,R0 PROGRAM+X'5D2',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 531 *********************************************************************** 04160000 - 532 * * 04170000 - 533 * XA ROUTINE * 04180000 - 534 * XAUTO ROUTINE * 04190000 - 535 * * 04200000 - 536 * FUNCTION: TO ALLOCATE MEMORY * 04210000 - 537 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XAX: * 04220000 - 538 * XAX DS 0D * 04230000 - 539 * XAXSIZE DS F SIZE OF BLOCK TO BE ALLOCATED * 04240000 - 540 * XAXADDR DS A ADDRESS OF FIRST BYTE OF BLOCK* 04250000 - 541 * XAXALGN DS F ALIGNMENT OF BLOCK * 04260000 - 542 * ROUTINES USED: XEXC, XCOM, XP, XV, XB * 04270000 - 543 * PROCEDURE: LOCK FSB SEMAPHORE; SEARCH FREE STORAGE FOR LARGE * 04280000 - 544 * ENOUGH MEMORY BLOCK; ALIGN BOUNDARY; USE XB TO * 04290000 - 545 * CHAIN ANY LEFTOVER BLOCKS TO FREE STORAGE LIST; * 04300000 - 546 * PLACE ADDRESS OF ALLOCATED BLOCK IN XAXADDR; UNLOCK* 04310000 - 547 * FSB SEMAPHORE; RETURN. IF CAN'T SATISFY REQUEST, * 04320000 - 548 * UNLOCK FSB SEMAPHORE, APPLY XP ROUTINE TO MEMORY * 04330000 - 549 * SEMAPHORE, BLOCKING PROCESS RUNNING UNTIL MEMORY * 04340000 - 550 * FREED; THEN UNBLOCK; TRY TO SATISFY REQUEST AGAIN. * 04350000 - 551 * ERROR CHECKS: NONE * 04360000 - 552 * INTERRUPTS: ON * 04370000 - 553 * USER ACCESS: NO * 04380000 - 554 * * 04390000 - 555 *********************************************************************** 04400000 -0 00600 557 XA EQU * . THE XA ROUTINE, TO ALLOCATE 04420000 - R:1 00600 558 USING *,1 04430000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 558 in /mbhfs/sos4k.asm on volume: - 000600 4100 0001 00001 559 LA 0,1 . SET REGISTER ZERO TO ONE TO 04440000 - 000604 47F0 100E 0060E 560 B XACOM . INDICATE C'A' CALL 04450000 - 00608 561 XAUTO EQU * . AUTO STORAGE ENTRY POINT 04460000 - R:1 00608 562 USING *,1 04470000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 562 in /mbhfs/sos4k.asm on volume: - 000608 1B00 563 SR 0,0 . REG0=0 INDICATES C'E' CALL 04480000 - 00060A 5810 1854 00E5C 564 L 1,=A(XA) . RESET BASE REGISTER PROPERLY 04490000 - R:1 00600 565 USING XA,1 04500000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 565 in /mbhfs/sos4k.asm on volume: - 00060E 0A5A 566 XACOM SVC C'!' . ENTER SMC 04510000 - 000610 1872 567 LR 7,2 04520000 - R:7 00000 568 USING XAX,7 . ARGUMENT LIST 04530000 - 000612 5860 7000 00000 569 L 6,XAXSIZE . GET THE SIZE REQUESTED 04540000 - 000616 4120 0184 00184 570 XATOP LA 2,FSBSEM . LOCK THE FSB SEMAPHORE 04550000 - 00061A 0AD7 571 SVC C'P' . 04560000 - 00061C 4150 0180 00180 572 LA 5,FSBPTR . START LOOKING DOWN 04570000 - 000620 5840 0180 00180 573 L 4,FSBPTR . THE FREE STORAGE LIST 04580000 - 000624 5880 7008 00008 574 L 8,XAXALGN . WE WOULD HAVE TO START AT WITH 04590000 - 000628 0680 575 BCTR 8,0 . THIS CONSTANT TO FIND ALIGNMENT 04600000 - R:4 00000 576 USING FSB,4 04610000 - 00062A 1244 577 XALOOP LTR 4,4 . IF AT THE END 04620000 - 00062C 4780 1056 00656 578 BZ XAWAIT . WAIT UNTIL A "FREE" OP 04630000 - 000630 18D4 579 LR 13,4 . FIND THE LOCATION 04640000 -1 Sample Operating System Version 2.00 Page 18 - Active Usings: PROGRAM,R0 XA,R1 FSB,R4 XAX,R7 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000632 06D0 580 BCTR 13,0 . IN THIS BLOCK WITH THIS 04650000 - 000634 16D8 581 OR 13,8 . ALIGNMENT 04660000 - 000636 41DD 0001 00001 582 LA 13,1(13) . THAT'S IT 04670000 - 00063A 189D 583 LR 9,13 . AND NOW GET IN REG 9 04680000 - 00063C 1B94 584 SR 9,4 . WHAT IS WASTED AT THE FRONT 04690000 - 00063E 5830 4004 00004 585 L 3,FSBSIZE . GET SIZE MINUS WASTE AT 04700000 - 000642 1B39 586 SR 3,9 . FRONT, LEAVING EFFECTIVE SIZE 04710000 - 000644 1963 587 CR 6,3 . IS IT ENOUGH? 04720000 - 000646 47D0 1062 00662 588 BNP XAFOUND . EUREKA! 04730000 - 00064A 4150 4000 00000 589 LA 5,FSBNEXT . OH WELL, GET THE NEXT FREE 04740000 - 00064E 5840 4000 00000 590 L 4,FSBNEXT . STORAGE BLOCK ON THE CHAIN 04750000 - 000652 47F0 102A 0062A 591 B XALOOP . BETTER LUCK NEXT TIME 04760000 - 000656 0AE5 592 XAWAIT SVC C'V' . NEED TO WAIT 04770000 - 000658 4120 018C 0018C 593 LA 2,MEMORY . SO WE LET OTHER PEOPLE GET IN 04780000 - 00065C 0AD7 594 SVC C'P' . SO THEY'LL WAKE US UP 04790000 - 00065E 47F0 1016 00616 595 B XATOP . AND THEN WE'LL TRY AGAIN 04800000 - 000662 50D0 7004 00004 596 XAFOUND ST 13,XAXADDR . WE'VE NOW GOT THE ADDRESS 04810000 - 000666 D203 5000 4000 00000 00000 597 MVC 0(4,5),FSBNEXT . UNLINK THE BLOCK OUT 04820000 - 00066C 58C0 4004 00004 598 L 12,FSBSIZE . GET THE WHOLE BLOCK SIZE 04830000 - 000670 4120 E048 00048 599 LA 2,SATEMP . START MAKING UP ARG LISTS 04840000 - R:2 00000 600 USING XBX,2 . FOR THE XB ROUTINE 04850000 - 000674 18AD 601 LR 10,13 . THE STARTING LOCATION 04860000 - 000676 1BA4 602 SR 10,4 . MINUS THE START OF THE BLOCK 04870000 - 000678 4780 1086 00686 603 BZ XANF . IF NONE WASTED AT THE FRONT, SKIP 04880000 - 00067C 5040 2004 00004 604 ST 4,XBXADDR . ELSE FREE, STARTING THERE 04890000 - 000680 50A0 2000 00000 605 ST 10,XBXSIZE . UP TO THE BEGINNING OF THE 04900000 - 000684 0AC2 606 SVC C'B' . ALLOCATION; INSERT IT IN THE CHAIN 04910000 - 000686 18BD 607 XANF LR 11,13 . THE STARTING ADDR PLUS THE SIZE 04920000 - 000688 1AB6 608 AR 11,6 . GIVES THE FIRST UNUSED ADDR 04930000 - 00068A 1BCA 609 SR 12,10 . MINUS THE WASTE AT FRONT, 04940000 - 00068C 1BC6 610 SR 12,6 . MINUS THE PART ALLOCATED. IF 04950000 - 00068E 4780 109C 0069C 611 BZ XARETURN . NONE LEFT OVER, GOOD 04960000 - 000692 50B0 2004 00004 612 ST 11,XBXADDR . ELSE STORE ADDRESS AND 04970000 - 000696 50C0 2000 00000 613 ST 12,XBXSIZE . SIZE, AND LINK ONTO 04980000 - 00069A 0AC2 614 SVC C'B' . FREE STORAGE LIST 04990000 - 615 DROP 2 05000000 - 00069C 4120 0184 00184 616 XARETURN LA 2,FSBSEM . WE ARE DONE, SO NOW SOMEONE 05010000 - 0006A0 0AE5 617 SVC C'V' . ELSE CAN COME IN 05020000 - 0006A2 1200 618 LTR 0,0 . IS THIS FOR AUTOMATIC STORAGE? 05030000 - 0006A4 4770 10B0 006B0 619 BNZ XABACK . IF NOT, RETURN NOW 05040000 - 0006A8 5060 F044 00044 620 ST 6,PCBASIZE . OTHERWISE STORE SIZE AND 05050000 - 0006AC 50D0 F048 00048 621 ST 13,PCBAADDR . ADDRESS OF AUTOMATIC STORAGE 05060000 - 0006B0 0A6B 622 XABACK SVC C',' . LEAVE SMC SECTION 05070000 - 0006B2 8200 04D8 004D8 623 LPSW RETURN . GET BACK JOJO 05080000 - 624 DROP 4,7 05090000 -1 Sample Operating System Version 2.00 Page 19 - Active Usings: PROGRAM,R0 XA,R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 626 *********************************************************************** 05110000 - 627 * * 05120000 - 628 * XF ROUTINE * 05130000 - 629 * * 05140000 - 630 * FUNCTION: TO FREE MEMORY * 05150000 - 631 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XFX: * 05160000 - 632 * XFX DS 0D * 05170000 - 633 * XFXSIZE DS F SIZE OF BLOCK TO BE FREED * 05180000 - 634 * XFXADDR DS A ADDRESS OF FIRST BYTE OF BLOCK* 05190000 - 635 * ROUTINES USED: XEXC, XP, XV, XB, XCOM * 05200000 - 636 * PROCEDURE: LOCK FSB SEMAPHORE; SEARCH FREE STORAGE LIST TO * 05210000 - 637 * FIND IF ANY FREE BLOCK CONTIGUOUSLY FOLLOWS OR * 05220000 - 638 * PRECEDES BLOCK TO BE FREED; IF THERE IS ANY, * 05230000 - 639 * COMPACT THEM INTO A SINGLE BLOCK OF COMBINED SIZE; * 05240000 - 640 * USE XB TO CHAIN COMPACTED BLOCK ONTO FREE STORAGE * 05250000 - 641 * LIST; WAKEUP ALL PROCESSES WAITING ON MEMORY * 05260000 - 642 * SEMAPHORE; UNLOCK FSB SEMAPHORE; RETURN * 05270000 - 643 * ERROR CHECKS: NONE * 05280000 - 644 * INTERRUPTS: ON * 05290000 - 645 * USER ACCESS: NO * 05300000 - 646 * * 05310000 - 647 *********************************************************************** 05320000 -0 006B6 649 XF EQU * . THE XF ROUTINE, TO FREE STORAGE 05340000 - R:1 006B6 650 USING *,1 05350000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 650 in /mbhfs/sos4k.asm on volume: - 0006B6 0A5A 651 SVC C'!' . ENTER SMC SECTION 05360000 - 0006B8 1872 652 LR 7,2 05370000 - R:7 00000 653 USING XFX,7 . THE ARGUMENT LIST 05380000 - 0006BA 5830 7000 00000 654 L 3,XFXSIZE . GET THE SIZE 05390000 - 0006BE 5840 7004 00004 655 L 4,XFXADDR . AND THE ADDRESS 05400000 - 0006C2 1853 656 LR 5,3 . GET THE ADDRESS OF THE END OF THE 05410000 - 0006C4 1A54 657 AR 5,4 . BLOCK TO BE FREED 05420000 - 0006C6 4120 0184 00184 658 LA 2,FSBSEM . LOCK FSBSEM 05430000 - 0006CA 0AD7 659 SVC C'P' 05440000 - 0006CC 4180 0180 00180 660 LA 8,FSBPTR . START LOOKING DOWN THE FREE 05450000 - 0006D0 5860 0180 00180 661 L 6,FSBPTR . STORAGE LIST, FOR COMPACTION 05460000 - R:6 00000 662 USING FSB,6 05470000 - 0006D4 1266 663 XFLOOP LTR 6,6 . ARE WE THROUGH? 05480000 - 0006D6 4780 105E 00714 664 BZ XFLINK . IF SO, JUST ADD IT ON 05490000 - 0006DA 5890 6000 00000 665 L 9,FSBNEXT . IF NOT. GET THE NEXT PTR 05500000 - 0006DE 1965 666 CR 6,5 . IS THIS BLOCK RIGHT AFTER OURS? 05510000 - 0006E0 4770 103A 006F0 667 BNE XFTHEN . IF NOT, OK. BUT IF IT IS, 05520000 - 0006E4 5098 0000 00000 668 ST 9,0(8) . WE CAN COMPACT, SO UNCHAIN IT 05530000 - 0006E8 5A30 6004 00004 669 A 3,FSBSIZE . AND REMEMBER THE NEW SIZE 05540000 - 0006EC 47F0 1050 00706 670 B XFBACKUP . AND ON TO THE NEXT 05550000 - 0006F0 18A6 671 XFTHEN LR 10,6 . MAYBE IT'S RIGHT BEFORE OURS 05560000 - 0006F2 5AA0 6004 00004 672 A 10,FSBSIZE . GET ENDING ADDRESS OF FREE BLOCK 05570000 - 0006F6 19A4 673 CR 10,4 . IS IT RIGHT BEFORE OURS? 05580000 - 0006F8 4770 1052 00708 674 BNE XFINC . OH FUDGE! NO! 05590000 - 0006FC 5098 0000 00000 675 ST 9,0(8) . IF SO, UNLINK IT 05600000 - 000700 1846 676 LR 4,6 . GET THE NEW BEGINNING LOCATION 05610000 - 000702 5A30 6004 00004 677 A 3,FSBSIZE . AND NEW SIZE OF FREE BLOCK 05620000 - 000706 1868 678 XFBACKUP LR 6,8 . BACK UP ONE FSB 05630000 -1 Sample Operating System Version 2.00 Page 20 - Active Usings: PROGRAM,R0 PROGRAM+X'6B6',R1 FSB,R6 XFX,R7 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000708 4180 6000 00000 679 XFINC LA 8,FSBNEXT . ON TO THE NEXT FSB 05640000 - 00070C 5860 6000 00000 680 L 6,FSBNEXT 05650000 - 000710 47F0 101E 006D4 681 B XFLOOP . TRY, TRY AGAIN 05660000 - 000714 4120 E048 00048 682 XFLINK LA 2,SATEMP . START TO CALL XB 05670000 - R:2 00000 683 USING XBX,2 05680000 - 000718 5030 2000 00000 684 ST 3,XBXSIZE . STORE SIZE 05690000 - 00071C 5040 2004 00004 685 ST 4,XBXADDR . AND ADDRESS 05700000 - 000720 0AC2 686 SVC C'B' . LINK IT ONTO THE FSB CHAIN 05710000 - R:2 00000 687 USING SM,2 05720000 - 000722 4120 018C 0018C 688 LA 2,MEMORY . GET VALUE OF MEMORY SEMAPHORE 05730000 - 000726 41B0 0001 00001 689 LA 11,1(0,0) . SUBTRACT FROM ONE, IT'S A HANDLE 05740000 - 00072A 5BB0 2000 00000 690 S 11,SMVAL . ON THE # OF PEOPLE WAITING 05750000 - 691 DROP 2 05760000 - 00072E 46B0 1088 0073E 692 XFVLOOP BCT 11,XFVDO . LOOP IF ANYONE ELSE IS WAITING 05770000 - 000732 4120 0184 00184 693 LA 2,FSBSEM . WE'RE THROUGH, SO 05780000 - 000736 0AE5 694 SVC C'V' . UNBLOCK FSBSEM 05790000 - 000738 0A6B 695 SVC C',' . LEAVE SMC 05800000 - 00073A 8200 04D8 004D8 696 LPSW RETURN . RETURN 05810000 - 00073E 0AE5 697 XFVDO SVC C'V' . WAKE SOMEONE UP 05820000 - 000740 47F0 1078 0072E 698 B XFVLOOP . TRY AGAIN FOR ANOTHER 05830000 - 699 DROP 6,7 05840000 -1 Sample Operating System Version 2.00 Page 21 - Active Usings: PROGRAM,R0 PROGRAM+X'6B6',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 701 *********************************************************************** 05860000 - 702 * * 05870000 - 703 * XB ROUTINE * 05880000 - 704 * * 05890000 - 705 * FUNCTION: TO CHAIN A STORAGE BLOCK ONTO FREE STORAGE LIST * 05900000 - 706 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XBX: * 05910000 - 707 * XBX DS 0D * 05920000 - 708 * XBXSIZE DS F SIZE OF BLOCK * 05930000 - 709 * XBXADDR DS A ADDRESS OF FIRST BYTE OF BLOCK* 05940000 - 710 * ROUTINES USED: NONE * 05950000 - 711 * PROCEDURE: SEARCH FREE STORAGE LIST TO FIND WHERE TO INSERT * 05960000 - 712 * FREE BLOCK IN ORDER OF INCREASING SIZE; FORMAT * 05970000 - 713 * BLOCK LIKE AN FSB; INSERT; RETURN. * 05980000 - 714 * ERROR CHECKS: NONE * 05990000 - 715 * INTERRUPTS: OFF * 06000000 - 716 * USER ACCESS: NO * 06010000 - 717 * COMMENTS: SINCE XB ROUTINE ONLY CALLED BY XA AND XF, FSB * 06020000 - 718 * SEMAPHORE IS ALREADY LOCKED. * 06030000 - 719 * * 06040000 - 720 *********************************************************************** 06050000 -0 00744 722 XB EQU * 06070000 - R:1 00744 723 USING *,1 06080000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 723 in /mbhfs/sos4k.asm on volume: - R:2 00000 724 USING XBX,2 . ARGUMENT LIST 06090000 - 000744 5830 2000 00000 725 L 3,XBXSIZE . GET THE SIZE 06100000 - 000748 5840 2004 00004 726 L 4,XBXADDR . AND THE ADDRESS 06110000 - 00074C 4180 0180 00180 727 LA 8,FSBPTR . START LOOKING DOWN THE CHAIN 06120000 - 000750 5860 0180 00180 728 L 6,FSBPTR 06130000 - 000754 1266 729 LTR 6,6 . IF ZERO POINTER, WE ARE AT 06140000 - 000756 4780 102C 00770 730 BZ XBINSERT . END OF CHAIN ALREADY 06150000 - R:6 00000 731 USING FSB,6 06160000 - 00075A 5930 6004 00004 732 XBLOOP C 3,FSBSIZE . IF THE SIZE OF OURS IS LESS, 06170000 - 00075E 47D0 102C 00770 733 BNP XBINSERT . TIME TO INSERT 06180000 - 000762 4180 6000 00000 734 LA 8,FSBNEXT . ELSE GO ON TO THE NEXT 06190000 - 000766 5860 6000 00000 735 L 6,FSBNEXT 06200000 - 00076A 1266 736 LTR 6,6 . IF NOT ALREADY THROUGH 06210000 - 00076C 4770 1016 0075A 737 BNZ XBLOOP . BRANCH BACK 06220000 - 000770 5048 0000 00000 738 XBINSERT ST 4,0(8) . NOW, LINK OURS ON 06230000 - 739 DROP 6 06240000 - R:4 00000 740 USING FSB,4 06250000 - 000774 5060 4000 00000 741 ST 6,FSBNEXT . MAKE OURS POINT TO THE NEXT 06260000 - 000778 5030 4004 00004 742 ST 3,FSBSIZE . WITH THE RIGHT SIZE 06270000 - 00077C 8200 04D8 004D8 743 LPSW RETURN . AND RETURN 06280000 - 744 DROP 2,4 06290000 -1 Sample Operating System Version 2.00 Page 22 - Active Usings: PROGRAM,R0 PROGRAM+X'744',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 746 *********************************************************************** 06310000 - 747 * * 06320000 - 748 * XC ROUTINE * 06330000 - 749 * * 06340000 - 750 * FUNCTION: TO CREATE A PROCESS * 06350000 - 751 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XCX: * 06360000 - 752 * XCX DS 0D * 06370000 - 753 * XCXNAME DS CL8 NAME OF PROCESS TO BE CREATED * 06380000 - 754 * ROUTINES USED: XEXC, XCOM, XN, XA, XI, XQUE * 06390000 - 755 * PROCEDURE: USE XA TO ALLOCATE NEW PCB; PLACE XCXNAME IN PCB; * 06400000 - 756 * INITIALIZE SEMAPHORES; STOP; BLOCK; OUT OF SMC; * 06410000 - 757 * CALL XI TO LINK PCB ONTO PCB CHAINS; RETURN. * 06420000 - 758 * ERROR CHECKS: IF NAME ALREADY USED IN THIS GROUP, XQUE ENTERED. * 06430000 - 759 * INTERRUPTS: ON * 06440000 - 760 * USER ACCESS: YES * 06450000 - 761 * * 06460000 - 762 *********************************************************************** 06470000 -0 00780 764 XC EQU * . THE XC ROUTINE: CREATE A PROCESS 06490000 - R:1 00780 765 USING *,1 06500000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 765 in /mbhfs/sos4k.asm on volume: - 000780 1872 766 LR 7,2 06510000 - R:7 00000 767 USING XCX,7 . ARGUMENT LIST 06520000 - 000782 4120 E048 00048 768 LA 2,SATEMP . READY TO MAKE CALLS OUT 06530000 - R:2 00000 769 USING XNX,2 . A XN-LIKE ARGUMENT LIST 06540000 - 000786 D207 2000 7000 00000 00000 770 MVC XNXNAME,XCXNAME . GET THE NAME 06550000 - 00078C 0AD5 771 SVC C'N' . AND CALL TO FIND THE PCB 06560000 - 00078E D503 2008 16E0 00008 00E60 772 CLC XNXADDR,=A(0) . SEE IF THERE 06570000 - 000794 4770 1044 007C4 773 BNE XCERR . IF ALREADY EXISTS, BAD 06580000 - 000798 0A5A 774 SVC C'!' . ENTER SMC SECTION 06590000 - 775 DROP 2 06600000 - R:2 00000 776 USING XAX,2 . READY TO CALL XA 06610000 - 00079A D203 2000 16E4 00000 00E64 777 MVC XAXSIZE,=A(LENPCB) . WE KNOW THE SIZE 06620000 - 0007A0 D203 2008 16E8 00008 00E68 778 MVC XAXALGN,=F'8' . AND THE ALIGNMENT 06630000 - 0007A6 0AC1 779 SVC C'A' . SO CALL 06640000 - 0007A8 5820 2004 00004 780 L 2,XAXADDR . FIND THE ADDRESS 06650000 - 781 DROP 2,15 06660000 - R:2 00000 782 USING PCB,2 . FILL IN THE PCB 06670000 - 0007AC D207 2000 7000 00000 00000 783 MVC PCBNAME,XCXNAME . GIVE IT A NAME 06680000 - 0007B2 92FF 2018 00018 784 MVI PCBSTOPT,X'FF' . IT'S STOPPED 06690000 - 0007B6 D232 2019 1B01 00019 01281 785 MVC PCBBLOKT(PCBISA-PCBBLOKT),TEMPLATE+1 INITIALIZE PCB 06700000 - 0007BC 0AC9 786 SVC C'I' . THREAD IT ON 06710000 - 0007BE 0A6B 787 SVC C',' . LEAVE SMC SECTION 06720000 - 0007C0 8200 04D8 004D8 788 LPSW RETURN . AND RETURN 06730000 - 0007C4 0A6F 789 XCERR SVC C'?' . IF ALREADY EXISTS,KERROR 06740000 - 790 DROP 2,7 06750000 -1 Sample Operating System Version 2.00 Page 23 - Active Usings: PROGRAM,R0 PROGRAM+X'780',R1 SA,R14 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 792 *********************************************************************** 06770000 - 793 * * 06780000 - 794 * XD ROUTINE * 06790000 - 795 * * 06800000 - 796 * FUNCTION: TO DESTROY A PROCESS * 06810000 - 797 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XDX: * 06820000 - 798 * XDX DS 0D * 06830000 - 799 * XDXNAME DS CL8 NAME OF PROCESS TO BE DESTROYED* 06840000 - 800 * ROUTINES USED: XEXC, XJ, XS, XN, XF, XCOM, XQUE * 06850000 - 801 * PROCEDURE: USE XN TO FIND PCB FOR PROCESS TO BE DESTROYED; * 06860000 - 802 * USE XJ TO UNLOCK PCB FROM PROCESS CHAINS; IF ANY * 06870000 - 803 * MESSAGES FOR THIS PROCESS, FREE STORAGE FOR THEM; * 06880000 - 804 * IF THERE IS ANY AUTOMATIC STORAGE, FREE IT; * 06890000 - 805 * FREE STORAGE FOR PCB; RETURN. * 06900000 - 806 * ERROR CHECKS: IF NAME DOESN'T EXIST OR PROCESS NOT STOPPED, * 06910000 - 807 * XQUE ENTERED. * 06920000 - 808 * INTERRUPTS: ON * 06930000 - 809 * USER ACCESS: YES * 06940000 - 810 * * 06950000 - 811 *********************************************************************** 06960000 -0 007C6 813 XD EQU * . XD ROUTINE: DESTROY A PROCESS 06980000 - R:1 007C6 814 USING *,1 06990000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 814 in /mbhfs/sos4k.asm on volume: - 0007C6 1872 815 LR 7,2 07000000 - R:7 00000 816 USING XDX,7 . ARG LIST 07010000 - 0007C8 4120 E048 00048 817 LA 2,SATEMP . READY TO CALL OUT 07020000 - R:2 00000 818 USING XNX,2 . WILL CALL XN 07030000 - 0007CC D207 2000 7000 00000 00000 819 MVC XNXNAME,XDXNAME . GET NAME 07040000 - 0007D2 0AD5 820 SVC C'N' . AND CALL 07050000 - 0007D4 5820 2008 00008 821 L 2,XNXADDR . GET ADDRESS 07060000 - 822 DROP 2 07070000 - 0007D8 1222 823 LTR 2,2 . IF ADDRESS IS NULL, 07080000 - 0007DA 4780 107A 00840 824 BZ XDERR . IT'S AN ERROR 07090000 - R:2 00000 825 USING PCB,2 07100000 - 0007DE 95FF 2018 00018 826 CLI PCBSTOPT,X'FF' . IF NOT STOPPED 07110000 - 0007E2 4770 107A 00840 827 BNE XDERR . IT'S AN ERROR 07120000 - 0007E6 0A5A 828 SVC C'!' . ENTER SMC SECTION 07130000 - 829 DROP 2 07140000 - R:F 00000 830 USING PCB,15 07150000 - 0007E8 0AD1 831 SVC C'J' . ELSE UNTHREAD THE ENTRY 07160000 - 0007EA 1882 832 LR 8,2 . REMEMBER THE PCB POINTER 07170000 - 0007EC 4120 E048 00048 833 LA 2,SATEMP . READY TO CALL OUT AGAIN 07180000 - R:8 00000 834 USING PCB,8 07190000 - ** ASMA300W USING overridden by a prior active USING on statement number 830 - ** ASMA435I Record 834 in /mbhfs/sos4k.asm on volume: - 835 DROP 15 07200000 - 0007F0 5890 802C 0002C 836 L 9,PCBFM . GET FIRST MESSAGE 07210000 - 0007F4 1299 837 XDLOOP LTR 9,9 . ANY MORE MESSAGES? 07220000 - 0007F6 4780 1054 0081A 838 BZ XDCHECK . IF NOT, FINISH UP 07230000 - R:9 00000 839 USING MSG,9 07240000 - 0007FA 58A0 9004 00004 840 L 10,MSGNEXT . ELSE REMEMBER NEXT 07250000 - 0007FE 58B0 9008 00008 841 L 11,MSGSIZE . GET THE SIZE 07260000 - 000802 41BB 000F 0000F 842 LA 11,15(11) . AND MAKE IT SOME NUMBER 07270000 -1 Sample Operating System Version 2.00 Page 24 - Active Usings: PROGRAM,R0 PROGRAM+X'7C6',R1 XDX,R7 PCB,R8 MSG,R9 SA,R14 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000806 54B0 16A6 00E6C 843 N 11,=F'-8' . OF DOUBLEWORDS 07280000 - R:2 00000 844 USING XFX,2 07290000 - 00080A 5090 2004 00004 845 ST 9,XFXADDR . FREE THE LOCATION 07300000 - 00080E 50B0 2000 00000 846 ST 11,XFXSIZE . THE NUMBER OF WORDS 07310000 - 000812 0AC6 847 SVC C'F' . DO IT 07320000 - 000814 189A 848 LR 9,10 . ON TO THE NEXT 07330000 - 000816 47F0 102E 007F4 849 B XDLOOP . GET THE NEXT MESSAGE 07340000 - 00081A D503 8048 169A 00048 00E60 850 XDCHECK CLC PCBAADDR(4),=A(0) . HAS AUTOMATIC STORAGE BEEN 07350000 - 000820 4780 1068 0082E 851 BE XDTHEN . ALLOCATED? IF NOT, GO FINISH UP 07360000 - 000824 4120 8044 00044 852 LA 2,PCBASIZE . SET UP THE ARGUMENT LIST 07370000 - 000828 0AC6 853 SVC C'F' . FREE IT 07380000 - 00082A 4120 E048 00048 854 LA 2,SATEMP . RESET REGISTER 2 07390000 - 00082E 5080 2004 00004 855 XDTHEN ST 8,XFXADDR . READY TO FREE THE PCB 07400000 - 000832 D203 2000 169E 00000 00E64 856 MVC XFXSIZE,=A(LENPCB) . THE SIZE 07410000 - 000838 0AC6 857 SVC C'F' . FREE IT 07420000 - 00083A 0A6B 858 SVC C',' . LEAVE SMC 07430000 - 00083C 8200 04D8 004D8 859 LPSW RETURN . AND RETURN 07440000 - 000840 0A6F 860 XDERR SVC C'?' . IF PROCESS DOES NOT EXIST 07450000 - 861 DROP 2,7,8,9 07460000 - R:F 00000 862 USING PCB,15 07470000 -- - 864 *********************************************************************** 07490000 - 865 * * 07500000 - 866 * XH ROUTINE * 07510000 - 867 * * 07520000 - 868 * FUNCTION: TO HALT A JOB * 07530000 - 869 * DATABASES: NONE * 07540000 - 870 * ROUTINES USED: XS, XR * 07550000 - 871 * PROCEDURE: SEND MESSAGE TO SUPERVISOR PROCESS FOR THIS JOB * 07560000 - 872 * INDICATING NORMAL TERMINATION; TRIES TO READ * 07570000 - 873 * MESSAGES FOREVER LOOPING; BLOCKS ITSELF, THEREBY * 07580000 - 874 * NEVER RETURNING. * 07590000 - 875 * ERROR CHECKS: NONE * 07600000 - 876 * INTERRUPTS: ON * 07610000 - 877 * USER ACCESS: YES * 07620000 - 878 * COMMENTS: USER NORMALLY USES THIS ROUTINE TO END A JOB. * 07630000 - 879 * * 07640000 - 880 *********************************************************************** 07650000 -0 00842 882 XH EQU * . THE XH ROUTINE: HALT A JOB 07670000 - R:1 00842 883 USING *,1 07680000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 883 in /mbhfs/sos4k.asm on volume: - 000842 4120 1012 00854 884 LA 2,XHMSG1 . SEND A MESSAGE TO *IBSUP 07690000 - 000846 0AE2 885 SVC C'S' . SEND IT 07700000 - 000848 4120 102A 0086C 886 XHLOOP LA 2,XHMSG2 . READY TO READ A REPLY 07710000 - 00084C 0AD9 887 SVC C'R' . WHICH NEVER COMES 07720000 - 00084E 47F0 1006 00848 888 B XHLOOP . BUT IF IT DOES WERE READY 07730000 - 000854 889 DS 0F 07740000 - 000854 5CC9C2E2E4D74040 890 XHMSG1 DC CL8'*IBSUP' . SAY TO *IBSUP 07750000 - 00085C 0000000C 891 DC F'12' . TWELVE CHARACTERS 07760000 - 000860 D7D9D6C7D9C1D440 892 DC C'PROGRAM HALT' . SAYING WERE OK 07770000 - 00086C 893 XHMSG2 DS CL8 . WHO SENDS US A MESSAGE 07780000 -1 Sample Operating System Version 2.00 Page 25 - Active Usings: PROGRAM,R0 PROGRAM+X'842',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000874 00000001 894 DC F'1' . ONE CHARACTER 07790000 - 000878 895 DS CL1,0H . WHICH GOES HERE 07800000 -1 Sample Operating System Version 2.00 Page 26 - Active Usings: PROGRAM,R0 PROGRAM+X'842',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 897 *********************************************************************** 07820000 - 898 * * 07830000 - 899 * XI ROUTINE * 07840000 - 900 * * 07850000 - 901 * FUNCTION: TO CHAIN A PCB ONTO PROCESS CHAINS * 07860000 - 902 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS OF A PCB * 07870000 - 903 * ROUTINES USED: NONE * 07880000 - 904 * PROCEDURE: POINTER USED TO CHAIN PCB INTO ALL PCB CHAIN AND * 07890000 - 905 * THIS GROUP CHAIN RIGHT AFTER RUNNING PCB; RETURN. * 07900000 - 906 * ERROR CHECKS: NONE * 07910000 - 907 * INTERRUPTS: OFF * 07920000 - 908 * USER ACCESS: NO * 07930000 - 909 * * 07940000 - 910 *********************************************************************** 07950000 -0 0087A 912 XI EQU * . THE XI ROUTINE: THREAD IN A PCB 07970000 - R:1 0087A 913 USING *,1 07980000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 913 in /mbhfs/sos4k.asm on volume: - 00087A 58A0 F010 00010 914 L 10,PCBNPALL . GET THE NEXT 'ALL' PCB 07990000 - 00087E 5020 F010 00010 915 ST 2,PCBNPALL . STORE THIS PCB RIGNT AFTER MINE 08000000 - 916 DROP 15 08010000 - R:A 00000 917 USING PCB,10 08020000 - 000882 5020 A014 00014 918 ST 2,PCBLPALL . THE NEXT ONE DOWN POINTS BACK 08030000 - 919 DROP 10 08040000 - R:2 00000 920 USING PCB,2 08050000 - 000886 50F0 2014 00014 921 ST 15,PCBLPALL . THIS PCB POINTS BACK 08060000 - 00088A 50A0 2010 00010 922 ST 10,PCBNPALL . AND FORWARD 08070000 - 923 DROP 2 08080000 - R:F 00000 924 USING PCB,15 08090000 - 00088E 58A0 F008 00008 925 L 10,PCBNPTG . GET NEXT "THIS GROUP" PCB 08100000 - 000892 5020 F008 00008 926 ST 2,PCBNPTG . RUNNING PCB POINTS TO NEW MEMBER 08110000 - 927 DROP 15 . OF PROCESS GROUP 08120000 - R:A 00000 928 USING PCB,10 08130000 - 000896 5020 A00C 0000C 929 ST 2,PCBLPTG . NEXT PCB DOWN POINTS BACK 08140000 - 930 DROP 10 08150000 - R:2 00000 931 USING PCB,2 08160000 - 00089A 50F0 200C 0000C 932 ST 15,PCBLPTG . AND WE POINT BACKWARD 08170000 - 00089E 50A0 2008 00008 933 ST 10,PCBNPTG . AND FORWARD 08180000 - 934 DROP 2 08190000 - 0008A2 8200 04D8 004D8 935 LPSW RETURN . RETURN 08200000 - R:F 00000 936 USING PCB,15 08210000 -1 Sample Operating System Version 2.00 Page 27 - Active Usings: PROGRAM,R0 PROGRAM+X'87A',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 938 *********************************************************************** 08230000 - 939 * * 08240000 - 940 * XJ ROUTINE * 08250000 - 941 * * 08260000 - 942 * FUNCTION: TO UNCHAIN A PCB FROM PROCESS CHAINS * 08270000 - 943 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS OF A PCB * 08280000 - 944 * ROUTINES USED: NONE * 08290000 - 945 * PROCEDURE: POINTERS TO PCB IN ALL PCB CHAIN AND THIS GROUP * 08300000 - 946 * CHAIN MODIFIED WITHOUT FREEING STORAGE; RETURN. * 08310000 - 947 * ERROR CHECKS: NONE * 08320000 - 948 * INTERRUPTS: OFF * 08330000 - 949 * USER ACCESS: NO * 08340000 - 950 * * 08350000 - 951 *********************************************************************** 08360000 -0 008A6 953 XJ EQU * . THE XJ ROUTINE: UNTHREAD A PCB 08380000 - R:1 008A6 954 USING *,1 08390000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 954 in /mbhfs/sos4k.asm on volume: - 955 DROP 15 08400000 - R:2 00000 956 USING PCB,2 08410000 - 0008A6 58B0 2014 00014 957 L 11,PCBLPALL . GET PRECEDING PCB 08420000 - 0008AA 58A0 2010 00010 958 L 10,PCBNPALL . AND FOLLOWING ONE IN "ALL" 08430000 - 959 DROP 2 . CHAIN 08440000 - R:B 00000 960 USING PCB,11 08450000 - 0008AE 50A0 B010 00010 961 ST 10,PCBNPALL . LAST POINTS TO NEXT 08460000 - 962 DROP 11 08470000 - R:A 00000 963 USING PCB,10 08480000 - 0008B2 50B0 A014 00014 964 ST 11,PCBLPALL . NEXT POINTS TO LAST 08490000 - 965 DROP 10 08500000 - R:2 00000 966 USING PCB,2 08510000 - 0008B6 58B0 200C 0000C 967 L 11,PCBLPTG . REDO FOR THIS GROUP PCB CHAIN 08520000 - 0008BA 58A0 2008 00008 968 L 10,PCBNPTG 08530000 - 969 DROP 2 08540000 - R:B 00000 970 USING PCB,11 08550000 - 0008BE 50A0 B008 00008 971 ST 10,PCBNPTG . LAST POINTS TO NEXT 08560000 - 972 DROP 11 08570000 - R:A 00000 973 USING PCB,10 08580000 - 0008C2 50B0 A00C 0000C 974 ST 11,PCBLPTG . NEXT POINTS TO LAST 08590000 - 975 DROP 10 08600000 - 0008C6 8200 04D8 004D8 976 LPSW RETURN . AND RETURN 08610000 - R:F 00000 977 USING PCB,15 08620000 -1 Sample Operating System Version 2.00 Page 28 - Active Usings: PROGRAM,R0 PROGRAM+X'8A6',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 979 *********************************************************************** 08640000 - 980 * * 08650000 - 981 * XN ROUTINE * 08660000 - 982 * * 08670000 - 983 * FUNCTION: TO FIND THE PCB FOR A PROCESS GIVEN ITS NAME ONLY * 08680000 - 984 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XNX * 08690000 - 985 * XNX DS 0D * 08700000 - 986 * XNXNAME DS CL8 NAME OF PROCESS * 08710000 - 987 * XNXADDR DS A ADDRESS OF PCB * 08720000 - 988 * ROUTINES USED: NONE * 08730000 - 989 * PROCEDURE: SEARCH THIS GROUP PCB CHAIN FOR NAME; IF FOUND, * 08740000 - 990 * STORE POINTER IN XNXADDR. IF NOT FOUND, STORE * 08750000 - 991 * ZERO IN XNXADDR; RETURN. * 08760000 - 992 * ERROR CHECKS: NONE * 08770000 - 993 * INTERRUPTS: OFF * 08780000 - 994 * USER ACCESS: YES * 08790000 - 995 * * 08800000 - 996 *********************************************************************** 08810000 -0 008CA 998 XN EQU * . THE XN ROUTINE: FIND A NAMED PCB 08830000 - R:1 008CA 999 USING *,1 08840000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 999 in /mbhfs/sos4k.asm on volume: - R:2 00000 1000 USING XNX,2 . THE ARG LIST 08850000 - 0008CA 18AF 1001 LR 10,15 . FIRST PCB TO LOOK AT IS OURS 08860000 - 1002 DROP 15 08870000 - R:A 00000 1003 USING PCB,10 08880000 - 0008CC 58A0 A008 00008 1004 XNXLOOP L 10,PCBNPTG . LOOK AT NEXT PCB 08890000 - 0008D0 D507 A000 2000 00000 00000 1005 CLC PCBNAME,XNXNAME . HAS IT THE RIGHT NAME? 08900000 - 0008D6 4780 101A 008E4 1006 BE XNXFOUND . IF YES, OH JOY. 08910000 - 0008DA 19AF 1007 CR 10,15 . IF NOT, ARE WE THROUGH? 08920000 - 0008DC 4770 1002 008CC 1008 BNE XNXLOOP . IF NOT, TRY THE NEXT PCB 08930000 - 0008E0 41A0 0000 00000 1009 LA 10,0 . ELSE, IT'S NOT HERE 08940000 - 0008E4 50A0 2008 00008 1010 XNXFOUND ST 10,XNXADDR . FOUND IT. SAY WHERE. 08950000 - 0008E8 8200 04D8 004D8 1011 LPSW RETURN . AND RETURN 08960000 - 1012 DROP 2,10 08970000 - R:F 00000 1013 USING PCB,15 08980000 -1 Sample Operating System Version 2.00 Page 29 - Active Usings: PROGRAM,R0 PROGRAM+X'8CA',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 1015 *********************************************************************** 09000000 - 1016 * * 09010000 - 1017 * XR ROUTINE * 09020000 - 1018 * * 09030000 - 1019 * FUNCTION: TO READ A MESSAGE * 09040000 - 1020 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XRX * 09050000 - 1021 * XRX DS 0D * 09060000 - 1022 * XRXNAME DS CL8 NAME OF SENDER PROCESS * 09070000 - 1023 * XRXSIZE DS F SIZE OF MESSAGE TEXT * 09080000 - 1024 * XRXTEXT DS C TEXT OF MESSAGE * 09090000 - 1025 * ROUTINES USED: XP, XEXC, XN, XCOM, XF * 09100000 - 1026 * PROCEDURE: USE XP ON MESSAGE SEMAPHORE RECEIVER TO SEE IF ANY * 09110000 - 1027 * MESSAGES WAITING; IF NONE, PROCESS BLOCKED UNTIL * 09120000 - 1028 * THERE IS ONE; LOCK MESSAGE CHAIN; REMOVE A MESSAGE * 09130000 - 1029 * FROM CHAIN AND UNLOCK IT; MOVE TEXT OF MESSAGE, * 09140000 - 1030 * PADDING WITH BLANKS OR TRUNCATING AS NECESSARY; * 09150000 - 1031 * INDICATE CORRECT MESSAGE LENGTH AND NAME OF * 09160000 - 1032 * MESSAGE SENDER; FREE STORAGE USED TO HOLD MESSAGE, * 09170000 - 1033 * AND RETURN. * 09180000 - 1034 * ERROR CHECKS: NONE * 09190000 - 1035 * INTERRUPTS: ON * 09200000 - 1036 * USER ACCESS: YES * 09210000 - 1037 * * 09220000 - 1038 *********************************************************************** 09230000 -0 008EC 1040 XR EQU * . THE XR ROUTINE: READ A MESSAGE 09250000 - R:1 008EC 1041 USING *,1 09260000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 1041 in /mbhfs/sos4k.asm on volume: - 0008EC 1872 1042 LR 7,2 09270000 - R:7 00000 1043 USING XRX,7 . ARG LIST 09280000 - 0008EE 4120 F024 00024 1044 LA 2,PCBMSR . SEE IF MESSAGES WAITING 09290000 - 0008F2 0AD7 1045 SVC C'P' 09300000 - 0008F4 0A5A 1046 SVC C'!' . ENTER SMC SECTION 09310000 - 0008F6 4120 F01C 0001C 1047 LA 2,PCBMSC . THEN LOCK THE MESSAGE CHAIN 09320000 - 0008FA 0AD7 1048 SVC C'P' 09330000 - 0008FC 5850 F02C 0002C 1049 L 5,PCBFM . GET THE FIRST MESSAGE 09340000 - R:5 00000 1050 USING MSG,5 09350000 - 000900 D203 F02C 5004 0002C 00004 1051 MVC PCBFM,MSGNEXT . REMEMBER THE NEXT 09360000 - 000906 0AE5 1052 SVC C'V' . UNLOCK THE MESSAGE CHAIN 09370000 - 000908 5860 7008 00008 1053 L 6,XRXSIZE . GET THE BUFFER CAPACITY 09380000 - 00090C 5B60 1584 00E70 1054 S 6,=F'2' . MINUS 1, MINUS 1 09390000 - 000910 9240 700C 0000C 1055 MVI XRXTEXT,C' ' . MOVE IN A BLANK 09400000 - 000914 4740 1030 0091C 1056 BM XRNOB 09410000 - 000918 4460 1080 0096C 1057 EX 6,XRFILL . THEN FILL THE REST WITH BLANKS 09420000 - 00091C 4166 0001 00001 1058 XRNOB LA 6,1(6) . THEN GET PROPER BUFFER COUNT 09430000 - 000920 5960 5008 00008 1059 C 6,MSGSIZE . COMPARE WITH MESSAGE LENGTH 09440000 - 000924 4740 1042 0092E 1060 BL XRTHEN . IF LESS, HANDLE ACCORDINGLY 09450000 - 000928 5860 5008 00008 1061 L 6,MSGSIZE . ELSE COUNT FOR MVC IS MESSAGE 09460000 - 00092C 0660 1062 BCTR 6,0 . SIZE MINUS ONE 09470000 - 00092E 1266 1063 XRTHEN LTR 6,6 . ANY CHARACTERS TO MOVE? 09480000 - 000930 4740 104C 00938 1064 BM XRAFT . IF NOT, DON'T 09490000 - 000934 4460 1086 00972 1065 EX 6,XRMOVE . ELSE MOVE THEM 09500000 - 000938 4166 0001 00001 1066 XRAFT LA 6,1(6) . THEN GET LENGTH 09510000 - 00093C 5060 7008 00008 1067 ST 6,XRXSIZE . STORE IT 09520000 -1 Sample Operating System Version 2.00 Page 30 - Active Usings: PROGRAM,R0 PROGRAM+X'8EC',R1 MSG,R5 XRX,R7 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000940 58A0 5000 00000 1068 L 10,MSGSENDR . GET SENDER'S PCB 09530000 - 1069 DROP 15 09540000 - R:A 00000 1070 USING PCB,10 09550000 - 000944 D207 7000 A000 00000 00000 1071 MVC XRXNAME,PCBNAME . AND STORE SENDER'S NAME 09560000 - 00094A 5860 5008 00008 1072 L 6,MSGSIZE . GET SIZE OF MESSAGE TEXT 09570000 - 00094E 4166 000C 0000C 1073 LA 6,LENMSG(6) . ADD SIZE OF MESSAGE BLOCK 09580000 - 000952 4166 0007 00007 1074 LA 6,7(6) . AND TRUNCATE 09590000 - 000956 5460 1580 00E6C 1075 N 6,=F'-8' . UP 09600000 - 00095A 1825 1076 LR 2,5 . SET UP POINTER TO XFX 09610000 - R:2 00000 1077 USING XFX,2 09620000 - 00095C 5050 2004 00004 1078 ST 5,XFXADDR . STORE ADDRESS 09630000 - 000960 5060 2000 00000 1079 ST 6,XFXSIZE . STORE SIZE 09640000 - 000964 0AC6 1080 SVC C'F' . AND FREE THE MESSAGE BLOCK 09650000 - 000966 0A6B 1081 SVC C',' . LEAVE SMC 09660000 - 000968 8200 04D8 004D8 1082 LPSW RETURN . AND RETURN 09670000 - 00096C D200 700D 700C 0000D 0000C 1083 XRFILL MVC XRXTEXT+1,XRXTEXT . FILL WITH BLANKS 09680000 - 000972 D200 700C 500C 0000C 0000C 1084 XRMOVE MVC XRXTEXT,MSGTEXT . MOVE TEXT 09690000 - 1085 DROP 2,5,7,10 09700000 - R:F 00000 1086 USING PCB,15 09710000 -- - 1088 *********************************************************************** 09730000 - 1089 * * 09740000 - 1090 * XS ROUTINE * 09750000 - 1091 * * 09760000 - 1092 * FUNCTION: TO SEND A MESSAGE * 09770000 - 1093 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XSX * 09780000 - 1094 * XSX DS 0D * 09790000 - 1095 * XSXNAME DS CL8 NAME OF TARGET PROCESS * 09800000 - 1096 * XSXSIZE DS F SIZE OF TEXT * 09810000 - 1097 * XSXTEXT DS C TEXT OF MESSAGE * 09820000 - 1098 * ROUTINES USED: XP, XV, XEXC, XCOM, XA, XQUE * 09830000 - 1099 * PROCEDURE: USE XN TO GET POINTER TO PCB OF TARGET PROCESS; * 09840000 - 1100 * USE LENGTH OF MESSAGE AND XA TO ALLOCATE BLOCK FOR * 09850000 - 1101 * MESSAGE; LOCK MESSAGE CHAIN OF TARGET PROCESS; * 09860000 - 1102 * PUT MESSAGE BLOCK AT END OF CHAIN; STORE SENDER * 09870000 - 1103 * NAME, SIZE, AND TEXT OF MESSAGE; UNLOCK CHAIN; * 09880000 - 1104 * INDICATE MESSAGE CHAIN IS ONE LONGER; RETURN. * 09890000 - 1105 * ERROR CHECKS: IF NO PROCESS BY GIVEN NAME, ENTER XQUE. * 09900000 - 1106 * INTERRUPTS: ON * 09910000 - 1107 * USER ACCESS: YES * 09920000 - 1108 * * 09930000 - 1109 *********************************************************************** 09940000 -0 00978 1111 XS EQU * . THE XS ROUTINE: SEND MESSAGES 09960000 - R:1 00978 1112 USING *,1 09970000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 1112 in /mbhfs/sos4k.asm on volume: - 000978 1872 1113 LR 7,2 09980000 - R:7 00000 1114 USING XSX,7 . ARG LIST 09990000 - 00097A 4120 E048 00048 1115 LA 2,SATEMP . READY TO CALL OUT 10000000 - R:2 00000 1116 USING XNX,2 . ABOUT TO CALL XN 10010000 - 00097E D207 2000 7000 00000 00000 1117 MVC XNXNAME,XSXNAME . GIVE NAME OF TARGET PROCESS 10020000 - 000984 0AD5 1118 SVC C'N' . SEE WHERE IT IS 10030000 -1 Sample Operating System Version 2.00 Page 31 - Active Usings: PROGRAM,R0 PROGRAM+X'978',R1 XNX,R2 XSX,R7 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000986 5840 2008 00008 1119 L 4,XNXADDR . GET THE POINTER 10040000 - 00098A 1244 1120 LTR 4,4 . IS THERE INDEED ONE? 10050000 - 00098C 4780 108A 00A02 1121 BZ XSERR . IF NOT, ERROR 10060000 - R:4 00000 1122 USING PCB,4 10070000 - ** ASMA300W USING overridden by a prior active USING on statement number 1086 - ** ASMA435I Record 1122 in /mbhfs/sos4k.asm on volume: - 1123 DROP 2,15 10080000 - R:2 00000 1124 USING XAX,2 . READY TO CALL XA 10090000 - 000990 0A5A 1125 SVC C'!' . ENTERING SMC SECTION 10100000 - 000992 5830 7008 00008 1126 L 3,XSXSIZE . GET THE STATED SIZE 10110000 - 000996 4133 000C 0000C 1127 LA 3,LENMSG(3) . PLUS THE AMOUNT OF OVERHEAD 10120000 - 00099A 4133 0007 00007 1128 LA 3,7(3) . AND TRUNCATE 10130000 - 00099E 5430 14F4 00E6C 1129 N 3,=F'-8' . UP 10140000 - 0009A2 5030 2000 00000 1130 ST 3,XAXSIZE . THAT'S THE SIZE OF THE REGION TO 10150000 - 0009A6 D203 2008 14F0 00008 00E68 1131 MVC XAXALGN,=F'8' . ALLOCATE, ON A DOUBLEWORD BOUND 10160000 - 0009AC 0AC1 1132 SVC C'A' . SO ALLOCATE ALREADY 10170000 - 0009AE 5850 2004 00004 1133 L 5,XAXADDR . GET THE ADDRESS 10180000 - 1134 DROP 2 10190000 - 0009B2 4120 401C 0001C 1135 LA 2,PCBMSC . GET THE MESSAGE CHAIN SEMAPHORE 10200000 - 0009B6 0AD7 1136 SVC C'P' . AND LOCK IT 10210000 - 0009B8 4180 402C 0002C 1137 LA 8,PCBFM . THEN START DOWN THE MESSAGE 10220000 - 0009BC 5890 402C 0002C 1138 L 9,PCBFM . CHAIN 10230000 - R:9 00000 1139 USING MSG,9 10240000 - 0009C0 1299 1140 XSLOOP LTR 9,9 . ARE WE THROUGH? 10250000 - 0009C2 4780 105A 009D2 1141 BZ XSADD . IF SO ADD IT ON 10260000 - 0009C6 4180 9004 00004 1142 LA 8,MSGNEXT . IF NOT, ON TO THE NEXT 10270000 - 0009CA 5890 9004 00004 1143 L 9,MSGNEXT 10280000 - 0009CE 47F0 1048 009C0 1144 B XSLOOP . AND TRY AGAIN 10290000 - 0009D2 5058 0000 00000 1145 XSADD ST 5,0(8) . CHAIN OURS ON THE END 10300000 - 1146 DROP 9 10310000 - R:5 00000 1147 USING MSG,5 10320000 - 0009D6 D203 5004 14E8 00004 00E60 1148 MVC MSGNEXT,=A(0) . SET NEXT POINTER NULL 10330000 - 0009DC 50F0 5000 00000 1149 ST 15,MSGSENDR . STORE THE SENDER 10340000 - 0009E0 5860 7008 00008 1150 L 6,XSXSIZE . GET THE TEXT LENGTH 10350000 - 0009E4 5060 5008 00008 1151 ST 6,MSGSIZE . AND STORE IT 10360000 - 0009E8 0660 1152 BCTR 6,0 . ONE LESS 10370000 - 0009EA 1266 1153 LTR 6,6 . TEST LENGTH 10380000 - 0009EC 4740 107C 009F4 1154 BM XSAFT . IF ZERO, NOTHING TO MOVE 10390000 - 0009F0 4460 108C 00A04 1155 EX 6,XSMOVE . ELSE, MOVE IT 10400000 - 0009F4 0AE5 1156 XSAFT SVC C'V' . UNLOCK THE MESSAGE CHAIN 10410000 - 0009F6 4120 4024 00024 1157 LA 2,PCBMSR . THEN SAY THERE'S 10420000 - 0009FA 0AE5 1158 SVC C'V' . ONE MORE MESSAGE 10430000 - 0009FC 0A6B 1159 SVC C',' . LEAVE SMC SECTION 10440000 - 0009FE 8200 04D8 004D8 1160 LPSW RETURN . AND RETURN 10450000 - 000A02 0A6F 1161 XSERR SVC C'?' 10460000 - 000A04 D200 500C 700C 0000C 0000C 1162 XSMOVE MVC MSGTEXT,XSXTEXT . THE MOVE FOR THE TEXT 10470000 - 1163 DROP 4,5,7 10480000 - R:F 00000 1164 USING PCB,15 10490000 -1 Sample Operating System Version 2.00 Page 32 - Active Usings: PROGRAM,R0 PROGRAM+X'978',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 1166 *********************************************************************** 10510000 - 1167 * * 10520000 - 1168 * XY ROUTINE * 10530000 - 1169 * * 10540000 - 1170 * FUNCTION: TO START A PROCESS * 10550000 - 1171 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XYX * 10560000 - 1172 * XYX DS 0D * 10570000 - 1173 * XYXNAME DS CL8 NAME OF PROCESS TO BE STARTED * 10580000 - 1174 * XYXADDR DS A STARTING ADDRESS OF PROCESS * 10590000 - 1175 * ROUTINES USED: XN, XEXC, XCOM, XQUE * 10600000 - 1176 * PROCEDURE: USE XN TO GET POINTER TO THE PCB OF PROCESS TO BE * 10610000 - 1177 * STARTED; STORE IN PCB INTERRUPT SAVE AREA REGISTERS* 10620000 - 1178 * AND PSW WITH STARTING ADDRESS AS SENT FROM STARTING* 10630000 - 1179 * PROCESS; STOPPED BIT TURNED OFF; RETURN. * 10640000 - 1180 * ERROR CHECKS: IF NO PROCESS BY GIVEN NAME, XQUE ENTERED. * 10650000 - 1181 * INTERRUPTS: OFF * 10660000 - 1182 * USER ACCESS: YES * 10670000 - 1183 * * 10680000 - 1184 *********************************************************************** 10690000 -0 00A0A 1186 XY EQU * . THE XY ROUTINE: START A PROCESS 10710000 - R:1 00A0A 1187 USING *,1 10720000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 1187 in /mbhfs/sos4k.asm on volume: - 000A0A 1872 1188 LR 7,2 10730000 - R:7 00000 1189 USING XYX,7 . THE ARG LIST 10740000 - 000A0C 4120 E048 00048 1190 LA 2,SATEMP . READY TO CALL OUT 10750000 - R:2 00000 1191 USING XNX,2 10760000 - 000A10 D207 2000 7000 00000 00000 1192 MVC XNXNAME,XYXNAME . GIVE XN A NAME 10770000 - 000A16 0AD5 1193 SVC C'N' . CALL XN 10780000 - 000A18 58A0 2008 00008 1194 L 10,XNXADDR . WHERE IS THE PCB? 10790000 - 000A1C 12AA 1195 LTR 10,10 . OR IS THERE ONE? 10800000 - 000A1E 4780 1036 00A40 1196 BZ XYERR . IF NOT, OH HISS BOO 10810000 - 1197 DROP 2,14,15 10820000 - R:A 00000 1198 USING PCB,10 10830000 - 000A22 41D0 A04C 0004C 1199 LA 13,PCBISA . GET INTO THAT PCB'S ISA 10840000 - R:D 00000 1200 USING SA,13 10850000 - 000A26 D207 D000 E000 00000 00000 1201 MVC SAPSW,(SAPSW-SA)(14) . GIVE IT THE CALLER'S PSW 10860000 - 000A2C D202 D005 7009 00005 00009 1202 MVC SAPSW+5(3),XYXADDR+1 . BUT AT THE REQUESTED ADDRESS 10870000 - 000A32 D23F D008 E008 00008 00008 1203 MVC SAREGS,(SAREGS-SA)(14) .GIVE IT HIS REGISTERS 10880000 - 000A38 9200 A018 00018 1204 MVI PCBSTOPT,X'00' . IT'S NO LONGER STOPPED 10890000 - 000A3C 8200 04D8 004D8 1205 LPSW RETURN . AND RETURN 10900000 - 000A40 0A6F 1206 XYERR SVC C'?' . WE DONE BAD 10910000 - 1207 DROP 7,10,13 10920000 - R:E 00000 1208 USING SA,14 10930000 - R:F 00000 1209 USING PCB,15 10940000 -1 Sample Operating System Version 2.00 Page 33 - Active Usings: PROGRAM,R0 PROGRAM+X'A0A',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 1211 *********************************************************************** 10960000 - 1212 * * 10970000 - 1213 * XZ ROUTINE * 10980000 - 1214 * * 10990000 - 1215 * FUNCTION: TO STOP A PROCESS * 11000000 - 1216 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XZX * 11010000 - 1217 * XZX DS 0D * 11020000 - 1218 * XZXNAME DS CL8 NAME OF PROCESS TO BE STOPPED * 11030000 - 1219 * ROUTINES USED: XN, XEXC, XCOM, XQUE, XP * 11040000 - 1220 * PROCEDURE: CHECK THAT USER PROCESS CAN'T STOP SYSTEM * 11050000 - 1221 * PROCESS; USE XN TO GET PCB POINTER; IF IN SMC, SET * 11060000 - 1222 * STOP WAITING BIT AND BLOCK SELF UNTIL STOP * 11070000 - 1223 * PERFORMED; ELSE SET STOPPED BIT, AND RETURN. * 11080000 - 1224 * ERROR CHECKS: IF NO PROCESS BY GIVEN NAME OR USER TRIES TO * 11090000 - 1225 * STOP A SYSTEM PROCESS, XQUE ENTERED. * 11100000 - 1226 * INTERRUPTS: ON * 11110000 - 1227 * USER ACCESS: YES * 11120000 - 1228 * * 11130000 - 1229 *********************************************************************** 11140000 -0 00A42 1231 XZ EQU * . THE XZ ROUTINE: STOP A PROCESS 11160000 - R:1 00A42 1232 USING *,1 11170000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 1232 in /mbhfs/sos4k.asm on volume: - 000A42 1872 1233 LR 7,2 11180000 - R:7 00000 1234 USING XZX,7 . ARG LIST 11190000 - 000A44 955C F000 00000 1235 CLI PCBNAME,C'*' . IS STOPPER A * PROCESS 11200000 - 000A48 4780 1012 00A54 1236 BE XZFINE . THAT'S OK 11210000 - 000A4C 955C 7000 00000 1237 CLI XZXNAME,C'*' . IF NOT, IS STOPPEE A * ? 11220000 - 000A50 4780 104A 00A8C 1238 BE XZERR . CAN'T DO THAT 11230000 - 000A54 4120 E048 00048 1239 XZFINE LA 2,SATEMP . READY TO CALL OUT 11240000 - R:2 00000 1240 USING XNX,2 . WILL CALL XN 11250000 - 000A58 D207 2000 7000 00000 00000 1241 MVC XNXNAME,XZXNAME . GIVE IT THE NAME 11260000 - 000A5E 0AD5 1242 SVC C'N' . AND DO THE CALL 11270000 - 000A60 58A0 2008 00008 1243 L 10,XNXADDR . GET THE PCB'S ADDRESS 11280000 - 000A64 12AA 1244 LTR 10,10 . SEE IF NULL 11290000 - 000A66 4780 104A 00A8C 1245 BZ XZERR . IF SO, ERROR 11300000 - 000A6A 0A5A 1246 SVC C'!' . ENTER SMC 11310000 - 1247 DROP 2,15 11320000 - R:A 00000 1248 USING PCB,10 11330000 - 000A6C 9500 A01A 0001A 1249 XZSTOP CLI PCBINSMC,X'00' . SEE IF IN SMC 11340000 - 000A70 4770 103C 00A7E 1250 BNE XZINSMC . IF SO, BAD 11350000 - 000A74 92FF A018 00018 1251 MVI PCBSTOPT,X'FF' . ELSE JUST STOP IT 11360000 - 000A78 0A6B 1252 SVC C',' . LEAVE SMC 11370000 - 000A7A 8200 04D8 004D8 1253 LPSW RETURN . AND RETURN 11380000 - 000A7E 92FF A01B 0001B 1254 XZINSMC MVI PCBSW,X'FF' . IF IN SMC, SAY STOP WAITING 11390000 - 000A82 4120 A034 00034 1255 LA 2,PCBSRS . AND STOP OURSELVES AGAINST 11400000 - 000A86 0AD7 1256 SVC C'P' . A SEMAPHORE 11410000 - 000A88 47F0 102A 00A6C 1257 B XZSTOP . THEN WE CAN REALLY STOP IT 11420000 - 000A8C 0A6F 1258 XZERR SVC C'?' . AN ERROR 11430000 - 1259 DROP 10,7 11440000 - R:F 00000 1260 USING PCB,15 11450000 -1 Sample Operating System Version 2.00 Page 34 - Active Usings: PROGRAM,R0 PROGRAM+X'A42',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 1262 *********************************************************************** 11470000 - 1263 * * 11480000 - 1264 * XQUE ROUTINE * 11490000 - 1265 * * 11500000 - 1266 * FUNCTION: TO SIGNAL ERROR CONDITION * 11510000 - 1267 * DATABASES: NONE * 11520000 - 1268 * ROUTINES USED: XR, XS * 11530000 - 1269 * PROCEDURE: SEND MESSAGE TO SUPERVISOR PROCESS FOR THIS JOB * 11540000 - 1270 * INDICATING ABNORMAL TERMINATION; TRY TO READ * 11550000 - 1271 * MESSAGES, FOREVER LOOPING; BLOCK ITSELF, THEREBY * 11560000 - 1272 * NEVER RETURNING. * 11570000 - 1273 * ERROR CHECKS: NONE * 11580000 - 1274 * INTERRUPTS: OFF * 11590000 - 1275 * USER ACCESS: YES * 11600000 - 1276 * * 11610000 - 1277 *********************************************************************** 11620000 -0 00A8E 1279 XQUE EQU * . THE XQUE ROUTINE: ERROR! 11640000 - R:1 00A8E 1280 USING *,1 11650000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 1280 in /mbhfs/sos4k.asm on volume: - 000A8E 4120 1012 00AA0 1281 LA 2,XQUEM1 . SEND AN ERROR MESSAGE TO *IBSUP 11660000 - 000A92 0AE2 1282 SVC C'S' 11670000 - 000A94 4120 102A 00AB8 1283 XQUELOOP LA 2,XQUEM2 . WAIT FOR REPLY 11680000 - 000A98 0AD9 1284 SVC C'R' 11690000 - 000A9A 47F0 1006 00A94 1285 B XQUELOOP . BUT IGNORE IT 11700000 - 000AA0 1286 DS 0F 11710000 - 000AA0 5CC9C2E2E4D74040 1287 XQUEM1 DC CL8'*IBSUP' 11720000 - 000AA8 0000000C 1288 DC F'12' 11730000 - 000AAC D7D9D6C7D9C1D440 1289 DC CL12'PROGRAM FLOP' 11740000 - 000AB8 1290 XQUEM2 DS CL8 11750000 - 000AC0 00000001 1291 DC F'1' 11760000 - 000AC4 1292 DS CL1,0H 11770000 - 1293 DROP 14,15 11780000 -1 Sample Operating System Version 2.00 Page 35 - Active Usings: PROGRAM,R0 PROGRAM+X'A8E',R1 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 1295 *********************************************************************** 11800000 - 1296 * * 11810000 - 1297 * INPUT/OUTPUT ROUTINES * 11820000 - 1298 * * 11830000 - 1299 *********************************************************************** 11840000 -0 1301 *********************************************************************** 11860000 - 1302 * * 11870000 - 1303 * SYSTEM SUPPLIED DEVICE HANDLER FOR READERS * 11880000 - 1304 * * 11890000 - 1305 *********************************************************************** 11900000 -0 00AC6 1307 RDRHANDL EQU * . THE READER HANDLER 11920000 - R:3 00000 1308 USING UCB,3 . STARTED WITH REG3 -> UCB 11930000 - 000AC6 0510 1309 BALR 1,0 11940000 - R:1 00AC8 1310 USING *,1 . ESTABLISH ADDRESSING 11950000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 1310 in /mbhfs/sos4k.asm on volume: - 000AC8 4120 1160 00C28 1311 LA 2,RDRHSEM . LOCK OURSELVES UNTIL WE SET UP 11960000 - 000ACC 0AD7 1312 SVC C'P' . AN AUTOMATIC STORAGE AREA 11970000 - 000ACE 4120 1174 00C3C 1313 LA 2,RDRHAAS . READY TO ALLOCATE 11980000 - R:2 00000 1314 USING XAX,2 11990000 - 000AD2 0AC5 1315 SVC C'E' . ALLOCATE 12000000 - 000AD4 58C0 2004 00004 1316 L 12,XAXADDR . GET A PTR 12010000 - 1317 DROP 2 12020000 - 000AD8 4120 1160 00C28 1318 LA 2,RDRHSEM . AND UNBLOCK OURSELVES 12030000 - 000ADC 0AE5 1319 SVC C'V' 12040000 - 000ADE 8840 0010 00010 1320 SRL 4,16 . SHIFT KEY 12050000 - 000AE2 1BAA 1321 SR 10,10 . CLEAR REG 10 12060000 - R:C 00000 1322 USING RDRHAS,12 . AUTOMATIC AREA 12070000 - 000AE4 9200 C07A 0007A 1323 MVI JOBBIT,X'00' . INITIALIZE 12080000 - 000AE8 4160 C000 00000 1324 LA 6,RDRHCCB . GET PTR TO CCB 12090000 - 000AEC 4120 C008 00008 1325 RDRHLOOP LA 2,RDRHMSG . TRY TO READ A MESSAGE 12100000 - R:2 00000 1326 USING XRX,2 12110000 - 000AF0 D203 2008 13A0 00008 00E68 1327 MVC XRXSIZE,=F'8' . WE CAN TAKE 8 CHARS 12120000 - 000AF6 0AD9 1328 SVC C'R' . READ IT 12130000 - 000AF8 D503 13AC 200C 00E74 0000C 1329 CLC =C'READ',XRXTEXT . IF FIRST WORD IS READ, OK 12140000 - 000AFE 4770 1024 00AEC 1330 BNE RDRHLOOP . ELSE IGNORE 12150000 - 000B02 5850 2010 00010 1331 L 5,XRXTEXT+4 . GET 2ND WORD OF TEXT 12160000 - 1332 DROP 2 12170000 - 000B06 4120 3004 00004 1333 LA 2,UCBUS . LOCK THE UCB AND IT'S UNIT 12180000 - 000B0A 0AD7 1334 SVC C'P' 12190000 - 000B0C 4120 C008 00008 1335 LA 2,RDRHMSG . RESET ADDRESSING POINTER 12200000 - R:2 00000 1336 USING XRX,2 12210000 - 000B10 95FF C07A 0007A 1337 CLI JOBBIT,X'FF' . HAVE WE JUST READ $JOB CARD? 12220000 - 000B14 4770 1066 00B2E 1338 BNE RDRHMORE . IF NO, GO CHECK PROTECTION, ELSE 12230000 - 000B18 955C 2000 00000 1339 CLI XRXNAME,C'*' . IS JSP CALLING US? 12240000 - 000B1C 4770 10F8 00BC0 1340 BNE RDRHNO . IF NOT, TELL HIM NO. 12250000 - 000B20 D24F 5000 C01C 00000 0001C 1341 MVC 0(80,5),RDRHTEMP . IF IT IS, GIVE JSP THE $JOB CARD 12260000 - 000B26 9200 C07A 0007A 1342 MVI JOBBIT,X'00' . SAY WE DON'T HAVE $JOB WAITING 12270000 - 000B2A 47F0 1114 00BDC 1343 B RDRHSOK . AND SEND MESSAGE BACK 12280000 - 1344 DROP 2 12290000 - 000B2E 955C C008 00008 1345 RDRHMORE CLI RDRHMSG,C'*' . IS SYSTEM CALLING? 12300000 - 000B32 4780 1098 00B60 1346 BE RDRHPOK . THEN PROTECTION OK, ELSE 12310000 - 000B36 18B5 1347 LR 11,5 . GET ADDRESS THAT'S TO HOLD CARD, 12320000 -1 Sample Operating System Version 2.00 Page 36 - Active Usings: PROGRAM,R0 PROGRAM+X'AC8',R1 UCB,R3 RDRHAS,R12 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000B38 54B0 116C 00C34 1348 N 11,PROTCON1 . get the page boundary 12330002 - 1349 * ISKE 10,11 . find storage key 12334002 - 000B3C B22900AB 1350 DC X'B22900AB' Assembler (XF) doesn't support ISKE 12338002 - 000B40 54A0 1170 00C38 1351 N 10,PROTCON2 . ignore low order bits 12342002 - 000B44 19A4 1352 CR 10,4 . DOES IT MATCH OURS? 12350000 - 000B46 4770 10F8 00BC0 1353 BNE RDRHNO . IF NOT, TELL HIM NO 12360000 - 000B4A 41B5 004F 0004F 1354 LA 11,79(5) . CHECK LAST BYTE ADDR OF CARD 12370000 - 000B4E 54B0 116C 00C34 1355 N 11,PROTCON1 . get the page boundary 12380002 - 1356 * ISKE 10,11 . find storage key 12384002 - 000B52 B22900AB 1357 DC X'B22900AB' Assembler (XF) doesn't support ISKE 12388002 - 000B56 54A0 1170 00C38 1358 N 10,PROTCON2 . ignore low order bits 12392002 - 000B5A 19A4 1359 CR 10,4 . DOES IT MATCH OURS? 12400000 - 000B5C 4770 10F8 00BC0 1360 BNE RDRHNO . IF NOT, TELL HIM NO 12410000 - 000B60 5450 1168 00C30 1361 RDRHPOK N 5,CCBCON1 . MAKE ADDRESS INTO 12420000 - 000B64 5050 C000 00000 1362 ST 5,RDRHCCB . A CCW (OR CCB) 12430000 - 000B68 9602 C000 00000 1363 OI RDRHCCB,X'02' 12440000 - 000B6C D203 C004 13B0 00004 00E78 1364 MVC RDRHCCB+4,=F'80' . WE'LL READ EIGHTY CHARACTERS 12450000 - 000B72 D203 3014 1398 00014 00E60 1365 MVC UCBCSW(4),=A(0) . CLEAR THE LAST CSW THERE 12460000 - 000B78 D203 3018 1398 00018 00E60 1366 MVC UCBCSW+4(4),=A(0) 12470000 - 000B7E 4120 0194 00194 1367 LA 2,CAWSEM . LOCK THE CAW 12480000 - 000B82 0AD7 1368 SVC C'P' 12490000 - 000B84 5060 0048 00048 1369 ST 6,CAW . THAT'S THE CAW 12500000 - 000B88 5870 3000 00000 1370 L 7,UCBADDR . GET THE UNIT ADDRESS 12510000 - 000B8C 9C00 7000 00000 1371 SIO 0(7) . START THE I/O 12520000 - 000B90 4770 1154 00C1C 1372 BNZ RDSTATUS . BRANCH IF SIO UNSUCCESSFUL 12530000 - 000B94 0AE5 1373 SVC C'V' . THEN UNLOCK THE CAW 12540000 - 000B96 4120 300C 0000C 1374 RDRHWAIT LA 2,UCBWS . NOW WAIT FOR AN INTERRUPT 12550000 - 000B9A 0AD7 1375 SVC C'P' 12560000 - 000B9C 9185 3018 00018 1376 TM UCBCSW+4,X'85' . CHECK THE STATUS 12570003 - 000BA0 4780 10CE 00B96 1377 BZ RDRHWAIT . IF NOT FINISHED, WAIT 12580000 - 000BA4 9101 3018 00018 1378 TM UCBCSW+4,X'01' . CHECK FOR EXCEPTION 12590000 - 000BA8 4710 10F0 00BB8 1379 BO RDRHEXC . if yes, ignore this interrupt 12600003 - 000BAC 9180 3018 00018 1380 TM UCBCSW+4,X'80' . if no, check for attention 12602003 - 000BB0 4710 1098 00B60 1381 BO RDRHPOK . if yes, try to restart the I/O 12604003 - 000BB4 47F0 1102 00BCA 1382 B RDRHOK . else, all is groovy 12606003 - 000BB8 94FE 3018 00018 1383 RDRHEXC NI UCBCSW+4,X'FE' . clear exception .. 12608003 - 000BBC 47F0 10CE 00B96 1384 B RDRHWAIT . .. and continue waiting 12610003 - 000BC0 D201 C078 13CC 00078 00E94 1385 RDRHNO MVC RDRHM+12(2),=C'NO' . message back is no 12612003 - 000BC6 47F0 111A 00BE2 1386 B RDRHSEND . GET READY TO SEND 12620000 - 000BCA 955C C008 00008 1387 RDRHOK CLI RDRHMSG,C'*' . IS THE SYSTEM CALLING? 12630000 - 000BCE 4780 1114 00BDC 1388 BE RDRHSOK . THAT'S FINE. OTHERWISE, 12640000 - 000BD2 D504 13D0 5000 00E98 00000 1389 CLC =C'$JOB,',0(5) . WAS IT A $JOB CARD? 12650000 - 000BD8 4780 1136 00BFE 1390 BE ENDADATA . OOPS! WE HIT END OF DATA STREAM 12660000 - 000BDC D201 C078 13CE 00078 00E96 1391 RDRHSOK MVC RDRHM+12(2),=C'OK' .GROOVINESS MESSAGE 12670000 - 000BE2 D203 C074 13A8 00074 00E70 1392 RDRHSEND MVC RDRHM+8(4),=F'2' . SAY THERE ARE 2 CHARACTERS 12680000 - 000BE8 D207 C06C C008 0006C 00008 1393 MVC RDRHM+0(8),RDRHMSG+0 . SEND BACK TO SAME GUY 12690000 - 000BEE 4120 3004 00004 1394 LA 2,UCBUS . NOW UNLOCK UCB AND UNIT 12700000 - 000BF2 0AE5 1395 SVC C'V' 12710000 - 000BF4 4120 C06C 0006C 1396 LA 2,RDRHM . SET UP MESSAGE 12720000 - 000BF8 0AE2 1397 SVC C'S' . AND SEND IT 12730000 - 000BFA 47F0 1024 00AEC 1398 B RDRHLOOP 12740000 - 000BFE D201 C078 13CC 00078 00E94 1399 ENDADATA MVC RDRHM+12(2),=C'NO' . TELL USER NO MORE CARDS 12750000 - 000C04 D24F C01C 5000 0001C 00000 1400 MVC RDRHTEMP(80),0(5) . SAVE THE $JOB CARD 12760000 - 000C0A 9240 5000 00000 1401 MVI 0(5),C' ' . BLANK OUT THE USER'S COPY 12770000 - 000C0E D24E 5001 5000 00001 00000 1402 MVC 1(79,5),0(5) 12780000 -1 Sample Operating System Version 2.00 Page 37 - Active Usings: PROGRAM,R0 PROGRAM+X'AC8',R1 UCB,R3 RDRHAS,R12 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000C14 92FF C07A 0007A 1403 MVI JOBBIT,X'FF' . INDICATE WE HAVE A NEW $JOB CARD 12790000 - 000C18 47F0 111A 00BE2 1404 B RDRHSEND . AND SEND THE MESSAGE BACK 12800000 - 000C1C 0AE5 1405 RDSTATUS SVC C'V' . UNLOCK THE CAW 12810000 - 000C1E 4120 300C 0000C 1406 LA 2,UCBWS . AND WAIT FOR AN INTERRUPT 12820000 - 000C22 0AD7 1407 SVC C'P' 12830000 - 000C24 47F0 1098 00B60 1408 B RDRHPOK . AND TRY TO RESTART THE I/O 12840000 - 1409 DROP 3,12 12850000 -0000C28 0000000100000000 1411 RDRHSEM DC F'1,0' 12870000 - 000C30 00FFFFFF 1412 CCBCON1 DC X'00FFFFFF' MASK 12880000 - 000C34 00FFF000 1413 PROTCON1 DC X'00FFF000' page alignment 12890002 - 000C38 FFFFFFF0 1414 PROTCON2 DC X'FFFFFFF0' ignore low order bits 12893002 - 000C3C 00000080 1415 RDRHAAS DC A(LENRDRHA) ALLOCATE ARGLIST FOR STORAGE 12900000 - 000C40 00000000 1416 DC F'0' 12910000 - 000C44 00000008 1417 DC F'8' 12920000 -- - 1419 *********************************************************************** 12940000 - 1420 * * 12950000 - 1421 * SYSTEM SUPPLIED DEVICE HANDLER FOR PRINTERS * 12960000 - 1422 * * 12970000 - 1423 *********************************************************************** 12980000 -0 00C48 1425 PRTHANDL EQU * . THE PRINTER HANDLER 13000000 - R:3 00000 1426 USING UCB,3 . ENTERED WITH REG3 -> THE UCB 13010000 - 000C48 0510 1427 BALR 1,0 13020000 - R:1 00C4A 1428 USING *,1 . ESTABLISH ADDRESSING 13030000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 1428 in /mbhfs/sos4k.asm on volume: - 000C4A 4120 1116 00D60 1429 LA 2,PRTHSEM . LOCK UNTIL ALLOCATE STORAGE 13040000 - 000C4E 0AD7 1430 SVC C'P' . 13050000 - 000C50 4120 111E 00D68 1431 LA 2,PRTHAAS . READY TO ALLOCATE 13060000 - R:2 00000 1432 USING XAX,2 13070000 - 000C54 0AC5 1433 SVC C'E' . ALLOCATE 13080000 - 000C56 58C0 2004 00004 1434 L 12,XAXADDR . GET THE ADDRESS 13090000 - 1435 DROP 2 13100000 - 000C5A 4120 1116 00D60 1436 LA 2,PRTHSEM . 13110000 - 000C5E 0AE5 1437 SVC C'V' UNLOCK TO ROUTINE 13120000 - 000C60 8840 0010 00010 1438 SRL 4,16 . SHIFT KEY 13130000 - 000C64 1BAA 1439 SR 10,10 . CLEAR REG 10 13140000 - R:C 00000 1440 USING PRTHAS,12 . ADDRESSING IN THE AUTO AREA 13150000 - 000C66 4160 C000 00000 1441 LA 6,PRTHCCB . MAKE A CAW 13160000 - 000C6A 4120 C008 00008 1442 PRTHLOOP LA 2,PRTHMSG . READY TO READ A MESSAGE 13170000 - R:2 00000 1443 USING XRX,2 13180000 - 000C6E D203 2008 121E 00008 00E68 1444 MVC XRXSIZE,=F'8' . WE CAN TAKE 8 CHARACTERS 13190000 - 000C74 0AD9 1445 SVC C'R' . READ IT 13200000 - 000C76 5850 2010 00010 1446 L 5,XRXTEXT+4 . LOAD THE ADDRESS 13210000 - 000C7A D503 1232 200C 00E7C 0000C 1447 CLC =C'PRIN',XRXTEXT . IS IT A PRIN REQUEST? 13220000 - 000C80 4780 1048 00C92 1448 BE PRTHPRIN 13230000 - 000C84 D503 1236 200C 00E80 0000C 1449 CLC =C'STC1',XRXTEXT . OR A SKIP REQUEST? 13240000 - 000C8A 4780 1096 00CE0 1450 BE PRTHSTC1 13250000 - 000C8E 47F0 1020 00C6A 1451 B PRTHLOOP . IF NEITHER, IGNORE 13260000 - 1452 DROP 2 13270000 - 000C92 4120 3004 00004 1453 PRTHPRIN LA 2,UCBUS 13280000 -1 Sample Operating System Version 2.00 Page 38 - Active Usings: PROGRAM,R0 PROGRAM+X'C4A',R1 UCB,R3 PRTHAS,R12 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000C96 0AD7 1454 SVC C'P' . LOCK THE UCB AND UNIT 13290000 - 000C98 955C C008 00008 1455 CLI PRTHMSG,C'*' . IS SYSTEM CALLING? 13300000 - 000C9C 4780 1080 00CCA 1456 BE PRTHPOK . THEN PROTECTION OK. ELSE 13310000 - 000CA0 18B5 1457 LR 11,5 . GET ADDRESS THAT'S TO HOLD MSG, 13320000 - 000CA2 54B0 0C34 00C34 1458 N 11,PROTCON1 . get the page boundary 13330002 - 1459 * ISKE 10,11 . find storage key 13334002 - 000CA6 B22900AB 1460 DC X'B22900AB' Assembler (XF) doesn't support ISKE 13338002 - 000CAA 54A0 0C38 00C38 1461 N 10,PROTCON2 . ignore low order bits 13342002 - 000CAE 19A4 1462 CR 10,4 . DOES IT MATCH OURS? 13350000 - 000CB0 4770 10DC 00D26 1463 BNE PRTHNO . IF NOT, TELL HIM NO 13360000 - 000CB4 41B5 0083 00083 1464 LA 11,131(5) . CHECK LAST BYTE ADDRESS OF LINE 13370000 - 000CB8 54B0 0C34 00C34 1465 N 11,PROTCON1 . get the page boundary 13380002 - 1466 * ISKE 10,11 . find storage key 13384002 - 000CBC B22900AB 1467 DC X'B22900AB' Assembler (XF) doesn't support ISKE 13388002 - 000CC0 54A0 0C38 00C38 1468 N 10,PROTCON2 . ignore low order bits 13392002 - 000CC4 19A4 1469 CR 10,4 . DOES IT MATCH OURS? 13400000 - 000CC6 4770 10DC 00D26 1470 BNE PRTHNO . IF NOT, TELL HIM NO 13410000 - 000CCA 5450 0C30 00C30 1471 PRTHPOK N 5,CCBCON1 . MAKE A WRITE REQUEST 13420000 - 000CCE 5050 C000 00000 1472 ST 5,PRTHCCB . FOR THE CCB 13430000 - 000CD2 9609 C000 00000 1473 OI PRTHCCB,X'09' . PRINT COMMAND CODE 13440000 - 000CD6 D203 C004 123A 00004 00E84 1474 MVC PRTHCCB+4,=F'132' . WE'LL PRINT 132 CHARACTERS 13450000 - 000CDC 47F0 10A2 00CEC 1475 B PRTHCOMM . BRANCH TO COMMON SECTION 13460000 - 000CE0 D207 C000 1206 00000 00E50 1476 PRTHSTC1 MVC PRTHCCB(8),=X'8900000020000001' SKIP TO TOP OF PAGE 13470000 - 000CE6 4120 3004 00004 1477 LA 2,UCBUS 13480000 - 000CEA 0AD7 1478 SVC C'P' . LOCK THE UCB AND UNIT 13490000 - 000CEC 4120 0194 00194 1479 PRTHCOMM LA 2,CAWSEM . LOCK THE CAW 13500000 - 000CF0 0AD7 1480 SVC C'P' 13510000 - 000CF2 5060 0048 00048 1481 ST 6,CAW . STORE OUR CAW 13520000 - 000CF6 D203 3014 1216 00014 00E60 1482 MVC UCBCSW(4),=A(0) . CLEAR THE LAST CSW THERE 13530000 - 000CFC D203 3018 1216 00018 00E60 1483 MVC UCBCSW+4(4),=A(0) 13540000 - 000D02 5870 3000 00000 1484 L 7,UCBADDR . GET THE ADDRESS 13550000 - 000D06 9C00 7000 00000 1485 SIO 0(7) . START THE I/O 13560000 - 000D0A 4770 1108 00D52 1486 BNZ PTSTATUS . BRANCH IF SIO UNSUCCESSFUL 13570000 - 000D0E 0AE5 1487 SVC C'V' . AND UNLOCK THE CAW 13580000 - 000D10 4120 300C 0000C 1488 PRTHWAIT LA 2,UCBWS . START TO WAIT 13590000 - 000D14 0AD7 1489 SVC C'P' 13600000 - 000D16 9105 3018 00018 1490 TM UCBCSW+4,X'05' . IS THE UNIT READY? 13610000 - 000D1A 4780 10C6 00D10 1491 BZ PRTHWAIT . IF NOT, ITS STILL ON. WAIT 13620000 - 000D1E 9101 3018 00018 1492 TM UCBCSW+4,X'01' . WAS THERE AN EXCEPTION? 13630000 - 000D22 4780 10E6 00D30 1493 BZ PRTHOK . IF NOT, GOOD 13640000 - 000D26 D201 C028 124A 00028 00E94 1494 PRTHNO MVC PRTHM+12(2),=C'NO' .THERE WAS, SO SAY SO 13650000 - 000D2C 47F0 10EC 00D36 1495 B PRTHSEND 13660000 - 000D30 D201 C028 124C 00028 00E96 1496 PRTHOK MVC PRTHM+12(2),=C'OK' .NO ERRORS 13670000 - 000D36 D203 C024 1226 00024 00E70 1497 PRTHSEND MVC PRTHM+8(4),=F'2' . SENDING 2 CHARACTERS 13680000 - 000D3C D207 C01C C008 0001C 00008 1498 MVC PRTHM+0(8),PRTHMSG+0 . SEND TO OUR SENDER 13690000 - 000D42 4120 3004 00004 1499 LA 2,UCBUS 13700000 - 000D46 0AE5 1500 SVC C'V' . UNLOCK THE UCB 13710000 - 000D48 4120 C01C 0001C 1501 LA 2,PRTHM 13720000 - 000D4C 0AE2 1502 SVC C'S' . SEND IT 13730000 - 000D4E 47F0 1020 00C6A 1503 B PRTHLOOP . AND READ ANOTHER MESSAGE 13740000 - 000D52 0AE5 1504 PTSTATUS SVC C'V' . UNLOCK THE CAW 13750000 - 000D54 4120 300C 0000C 1505 LA 2,UCBWS . AND WAIT FOR THE INTERRUPT 13760000 - 000D58 0AD7 1506 SVC C'P' 13770000 - 000D5A 47F0 10A2 00CEC 1507 B PRTHCOMM . AND TRY TO RESTART THE I/O 13780000 - 1508 DROP 3,12 13790000 -1 Sample Operating System Version 2.00 Page 39 - Active Usings: PROGRAM,R0 PROGRAM+X'C4A',R1 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000D5E 0000 - 000D60 0000000100000000 1510 PRTHSEM DC F'1,0' LOCK 13810000 - 000D68 00000030 1511 PRTHAAS DC A(LENPRTHA) XA ARG LIST FOR AUTO STORAGE 13820000 - 000D6C 00000000 1512 DC F'0' 13830000 - 000D70 00000008 1513 DC F'8' 13840000 -1 Sample Operating System Version 2.00 Page 40 - Active Usings: PROGRAM,R0 PROGRAM+X'C4A',R1 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 1515 *********************************************************************** 13860000 - 1516 * * 13870000 - 1517 * SYSTEM ROUTINE FOR USER SUPPLIED DEVICE HANDLER * 13880000 - 1518 * * 13890000 - 1519 *********************************************************************** 13900000 -0 00D74 1521 EXCPHNDL EQU * . EXCP DEVICE HANDLER 13920000 - R:3 00000 1522 USING UCB,3 . WILL HAVE REG3 -> UCB 13930000 - 000D74 0510 1523 BALR 1,0 13940000 - R:1 00D76 1524 USING *,1 . ESTABLISH ADDRESSING 13950000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 1524 in /mbhfs/sos4k.asm on volume: - 000D76 4120 10C6 00E3C 1525 LA 2,EXCPHSEM . LOCK OURSELVES UNTIL WE HAVE 13960000 - 000D7A 0AD7 1526 SVC C'P' . SET UP AUTOMATIC STORAGE 13970000 - 000D7C 4120 10CE 00E44 1527 LA 2,EXCPHAAS . READY TO ALLOCATE 13980000 - R:2 00000 1528 USING XAX,2 13990000 - 000D80 0AC5 1529 SVC C'E' . ALLOCATE 14000000 - 000D82 58C0 2004 00004 1530 L 12,XAXADDR . GET POINTER TO AUTO STORAGE 14010000 - 1531 DROP 2 14020000 - 000D86 4120 10C6 00E3C 1532 LA 2,EXCPHSEM . AND UNLOCK OURSELVES 14030000 - 000D8A 0AE5 1533 SVC C'V' UNLOCK TO ROUTINE 14040000 - 000D8C 184B 1534 LR 4,11 14050000 - 000D8E 8940 0008 00008 1535 SLL 4,8 . SHIFT KEY FOR CAW 14060000 - R:C 00000 1536 USING EXCPHAS,12 . FOR ADDRESSING AUTO AREA 14070000 - 000D92 4120 C000 00000 1537 EXCPLOOP LA 2,EXCPHMSG . TRY TO READ A MESSAGE 14080000 - R:2 00000 1538 USING XRX,2 14090000 - 000D96 D203 2008 1112 00008 00E88 1539 MVC XRXSIZE,=F'12' . WE'LL TAKE 12 CHARACTERS 14100000 - 000D9C 0AD9 1540 SVC C'R' 14110000 - 000D9E D503 1116 200C 00E8C 0000C 1541 CLC =C'EXCP',XRXTEXT . IS IT AN EXCP MESSAGE? 14120000 - 000DA4 4770 101C 00D92 1542 BNE EXCPLOOP . IF NOT, IGNORE IT 14130000 - 000DA8 5850 2010 00010 1543 L 5,XRXTEXT+4 . REG 5 CONTAINS CHAN AND DEV 14140000 - 000DAC 5860 2014 00014 1544 L 6,XRXTEXT+8 . REG 6 CONTAINS ADDR OF CCWS 14150000 - 1545 DROP 2 14160000 - 000DB0 4170 112E 00EA4 1546 LA 7,UCBTABLE . GET PTR TO UCB TABLE 14170000 - 000DB4 5957 0000 00000 1547 EXCPCOMP C 5,0(7) . COMPARE UNIT ADDRESS 14180000 - 000DB8 4780 1054 00DCA 1548 BE EXCPFIND . THAT'S THE UCB WE WANT 14190000 - 000DBC 4177 0020 00020 1549 LA 7,UCBLENG(7) . GET PTR TO NEXT UCB 14200000 - 000DC0 5970 111A 00E90 1550 C 7,=A(UCBTBEND) . ARE WE THROUGH WITH TABLE? 14210000 - 000DC4 4770 103E 00DB4 1551 BNE EXCPCOMP . IF NOT, LOOK SOME MORE 14220000 - 000DC8 0A6F 1552 SVC C'?' . ELSE ERROR 14230000 - 000DCA 1837 1553 EXCPFIND LR 3,7 . SET REG 3 TO UCB PTR 14240000 - 000DCC 4120 3004 00004 1554 LA 2,UCBUS 14250000 - 000DD0 0AD7 1555 SVC C'P' . LOCK THE UCB 14260000 - 000DD2 1664 1556 OR 6,4 . OR IN THE USER'S KEY 14270000 - 000DD4 D203 3014 10EA 00014 00E60 1557 MVC UCBCSW(4),=A(0) . CLEAR THE LAST CSW THERE 14280000 - 000DDA D203 3018 10EA 00018 00E60 1558 MVC UCBCSW+4(4),=A(0) 14290000 - 000DE0 4120 0194 00194 1559 LA 2,CAWSEM 14300000 - 000DE4 0AD7 1560 SVC C'P' . LOCK CAW 14310000 - 000DE6 5060 0048 00048 1561 ST 6,CAW . STORE OUR CAW 14320000 - 000DEA 9C00 5000 00000 1562 SIO 0(5) . START THE I/O 14330000 - 000DEE 0AE5 1563 SVC C'V' . UNLOCK THE CAW 14340000 - 000DF0 4120 300C 0000C 1564 EXCPWAIT LA 2,UCBWS . NOW WAIT FOR AN INTERRUPT 14350000 - 000DF4 0AD7 1565 SVC C'P' 14360000 - 000DF6 D207 C024 3014 00024 00014 1566 MVC EXCPHM+12(8),UCBCSW . GIVE USER HIS CSW 14370000 - 000DFC D203 C020 1112 00020 00E88 1567 MVC EXCPHM+8(4),=F'12' 14380000 -1 Sample Operating System Version 2.00 Page 41 - Active Usings: PROGRAM,R0 PROGRAM+X'D76',R1 UCB,R3 EXCPHAS,R12 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000E02 D207 C018 C000 00018 00000 1568 MVC EXCPHM(8),EXCPHMSG 14390000 - 000E08 4120 C018 00018 1569 LA 2,EXCPHM 14400000 - 000E0C 0AE2 1570 SVC C'S' . AND SENT THE MESSAGE 14410000 - 000E0E 4120 C000 00000 1571 LA 2,EXCPHMSG . AND WAIT FOR A REPLY 14420000 - R:2 00000 1572 USING XRX,2 14430000 - 000E12 D203 2008 10F2 00008 00E68 1573 MVC XRXSIZE(4),=F'8' . FROM THE USER 14440000 - 000E18 0AD9 1574 SVC C'R' 14450000 - 000E1A D501 1120 200C 00E96 0000C 1575 CLC =C'OK',XRXTEXT . AM I DONE? 14460000 - 000E20 4780 10BA 00E30 1576 BE EXCPDONE 14470000 - 000E24 D504 1127 200C 00E9D 0000C 1577 CLC =C'AGAIN',XRXTEXT . DOES HE WANT ANOTHER CSW? 14480000 - 000E2A 4780 107A 00DF0 1578 BE EXCPWAIT 14490000 - 000E2E 0A6F 1579 SVC C'?' . WRONG MESSAGE 14500000 - 1580 DROP 2 14510000 - 000E30 4120 3004 00004 1581 EXCPDONE LA 2,UCBUS . UNLOCK UNIT 14520000 - 000E34 0AE5 1582 SVC C'V' 14530000 - 000E36 47F0 101C 00D92 1583 B EXCPLOOP . AND GET ANOTHER MESSAGE 14540000 - 1584 DROP 3,12 14550000 - 000E3A 0000 - 000E3C 0000000100000000 1585 EXCPHSEM DC F'1,0' 14560000 - 000E44 00000030 1586 EXCPHAAS DC A(LENEXCPA) . ALLOCATION OF AUTO STORAGE 14570000 - 000E48 00000000 1587 DC F'0' 14580000 - 000E4C 00000008 1588 DC F'8' 14590000 -- - 000E50 1590 LTORG 14610000 - 000E50 8900000020000001 1591 =X'8900000020000001' - 000E58 00000001 1592 =F'1' - 000E5C 00000600 1593 =A(XA) - 000E60 00000000 1594 =A(0) - 000E64 00000148 1595 =A(LENPCB) - 000E68 00000008 1596 =F'8' - 000E6C FFFFFFF8 1597 =F'-8' - 000E70 00000002 1598 =F'2' - 000E74 D9C5C1C4 1599 =C'READ' - 000E78 00000050 1600 =F'80' - 000E7C D7D9C9D5 1601 =C'PRIN' - 000E80 E2E3C3F1 1602 =C'STC1' - 000E84 00000084 1603 =F'132' - 000E88 0000000C 1604 =F'12' - 000E8C C5E7C3D7 1605 =C'EXCP' - 000E90 00000FC4 1606 =A(UCBTBEND) - 000E94 D5D6 1607 =C'NO' - 000E96 D6D2 1608 =C'OK' - 000E98 5BD1D6C26B 1609 =C'$JOB,' - 000E9D C1C7C1C9D5 1610 =C'AGAIN' -1 Sample Operating System Version 2.00 Page 42 - Active Usings: PROGRAM,R0 PROGRAM+X'D76',R1 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 1612 *********************************************************************** 14630000 - 1613 * * 14640000 - 1614 * UNIT CONTROL BLOCKS * 14650000 - 1615 * * 14660000 - 1616 *********************************************************************** 14670000 -0000EA4 1618 UCBTABLE DS 0F . TABLE OF UNIT CONTROL BLOCKS 14690000 - 1619 * UCB FOR READER 1 14700000 - 000EA4 00000012 1620 UCBRDR1 DC X'00000012' . DEVICE ADDRESS, 14710000 - 000EA8 0000000100000000 1621 DC F'1,0' . USER SEMAPHORE, 14720000 - 000EB0 0000000000000000 1622 DC F'0,0' . WAIT SEMAPHORE, 14730000 - 000EB8 0000000000000000 1623 DC F'0,0' . CHANNEL STATUS WORD 14740000 - 000EC0 00 1624 DC X'00' 14750000 - 000EC4 1625 DS 0F 14760000 - 1626 * UCB FOR PRINTER 1 14770000 - 000EC4 00000010 1627 UCBPRT1 DC X'00000010' . DEVICE ADDRESS, 14780000 - 000EC8 0000000100000000 1628 DC F'1,0' . USER SEMAPHORE, 14790000 - 000ED0 0000000000000000 1629 DC F'0,0' . WAIT SEMAPHORE, 14800000 - 000ED8 0000000000000000 1630 DC F'0,0' . CHANNEL STATUS WORD 14810000 - 000EE0 00 1631 DC X'00' 14820000 - 000EE4 1632 DS 0F 14830000 - 1633 * UCB FOR READER 2 14840000 - 000EE4 0000000C 1634 UCBRDR2 DC X'0000000C' . DEVICE ADDRESS, 14850000 - 000EE8 0000000100000000 1635 DC F'1,0' . USER SEMAPHORE, 14860000 - 000EF0 0000000000000000 1636 DC F'0,0' . WAIT SEMAPHORE, 14870000 - 000EF8 0000000000000000 1637 DC F'0,0' . CHANNEL STATUS WORD 14880000 - 000F00 00 1638 DC X'00' 14890000 - 000F04 1639 DS 0F 14900000 - 1640 * UCB FOR PRINTER 2 14910000 - 000F04 0000000E 1641 UCBPRT2 DC X'0000000E' . DEVICE ADDRESS, 14920000 - 000F08 0000000100000000 1642 DC F'1,0' . USER SEMAPHORE, 14930000 - 000F10 0000000000000000 1643 DC F'0,0' . WAIT SEMAPHORE, 14940000 - 000F18 0000000000000000 1644 DC F'0,0' . CHANNEL STATUS WORD 14950000 - 000F20 00 1645 DC X'00' 14960000 - 000F24 1646 DS 0F 14970000 - 1647 * UCB for READER 3 14970302 - 000F24 00000112 1648 UCBRDR3 DC X'00000112' . device address, 14970602 - 000F28 0000000100000000 1649 DC F'1,0' . user semaphore, 14970902 - 000F30 0000000000000000 1650 DC F'0,0' . wait semaphore, 14971202 - 000F38 0000000000000000 1651 DC F'0,0' . channel status word 14971502 - 000F40 00 1652 DC X'00' 14971802 - 000F44 1653 DS 0F 14972102 - 1654 * UCB for PRINTER 3 14972402 - 000F44 00000110 1655 UCBPRT3 DC X'00000110' . device address, 14972702 - 000F48 0000000100000000 1656 DC F'1,0' . user semaphore, 14973002 - 000F50 0000000000000000 1657 DC F'0,0' . wait semaphore, 14973302 - 000F58 0000000000000000 1658 DC F'0,0' . channel status word 14973602 - 000F60 00 1659 DC X'00' 14973902 - 000F64 1660 DS 0F 14974202 - 1661 * UCB for READER 4 14974502 - 000F64 0000010C 1662 UCBRDR4 DC X'0000010C' . device address, 14974802 - 000F68 0000000100000000 1663 DC F'1,0' . user semaphore, 14975102 - 000F70 0000000000000000 1664 DC F'0,0' . wait semaphore, 14975402 - 000F78 0000000000000000 1665 DC F'0,0' . channel status word 14975702 - 000F80 00 1666 DC X'00' 14976002 -1 Sample Operating System Version 2.00 Page 43 - Active Usings: PROGRAM,R0 PROGRAM+X'D76',R1 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000F84 1667 DS 0F 14976302 - 1668 * UCB for PRINTER 4 14976602 - 000F84 0000010E 1669 UCBPRT4 DC X'0000010E' . device address, 14976902 - 000F88 0000000100000000 1670 DC F'1,0' . user semaphore, 14977202 - 000F90 0000000000000000 1671 DC F'0,0' . wait semaphore, 14977502 - 000F98 0000000000000000 1672 DC F'0,0' . channel status word 14977802 - 000FA0 00 1673 DC X'00' 14978102 - 000FA4 1674 DS 0F 14978402 - 1675 * UCB for CONSOLE 1 14978504 - 000FA4 00000009 1676 UCBCONS1 DC X'00000009' . device address, 14978604 - 000FA8 0000000100000000 1677 DC F'1,0' . user semaphore, 14978704 - 000FB0 0000000000000000 1678 DC F'0,0' . wait semaphore, 14978804 - 000FB8 0000000000000000 1679 DC F'0,0' . channel status word 14978904 - 000FC0 00 1680 DC X'00' 14979004 - 000FC4 1681 DS 0F 14979104 - 00FC4 1682 UCBTBEND EQU * 14980000 -1 Sample Operating System Version 2.00 Page 44 - Active Usings: PROGRAM,R0 PROGRAM+X'D76',R1 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 1684 *********************************************************************** 15000000 - 1685 * * 15010000 - 1686 * I/O INTERRUPT HANDLER * 15020000 - 1687 * * 15030000 - 1688 *********************************************************************** 15040000 -0 00FC4 1690 IOHANDL EQU * . THE I/O INTERRUPT HANDLER 15060000 - 000FC4 900F 01DC 001DC 1691 STM 0,15,IOHSAVE . SAVE REGISTERS 15070000 - 000FC8 0510 1692 BALR 1,0 15080000 - R:1 00FCA 1693 USING *,1 . ESTABLISH ADRESSING 15090000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 1673 in /mbhfs/sos4k.asm on volume: - 000FCA 94FD 0039 00039 1694 NI IOOLD+1,X'FD' . TURN OFF WAIT BIT 15100000 - 000FCE 5860 172E 016F8 1695 L 6,=A(UCBTABLE) . GET POINTER TO UCB TABLE 15110000 - 000FD2 D501 6002 003A 00002 0003A 1696 IOCOMP CLC 2(2,6),IOOLD+2 . COMPARE DEVICE AND CHANNEL 15120000 - 000FD8 4780 1022 00FEC 1697 BE IODEVFND . IF EQUAL, REG 6 INDICATES PTR 15130000 - 000FDC 4166 0020 00020 1698 LA 6,UCBLENG(6) . INCREMENT TO NEXT ENTRY 15140000 - 000FE0 5960 1732 016FC 1699 C 6,=A(UCBTBEND) . ARE WE AT END OF TABLE? 15150000 - 000FE4 4770 1008 00FD2 1700 BNE IOCOMP . IF NOT DONE, TRY NEXT UCB 15160000 - 000FE8 47F0 106C 01036 1701 B IOBACK . ELSE, IGNORE IT 15170000 - R:6 00000 1702 USING UCB,6 . IT'S A UCB PTR 15180000 - 000FEC D203 6014 0040 00014 00040 1703 IODEVFND MVC UCBCSW(4),CSW . MOVE IN THE NEW CSW 15190000 - 000FF2 5870 0044 00044 1704 L 7,CSW+4 . GET STATUS BYTE 15200000 - 000FF6 5670 6018 00018 1705 O 7,UCBCSW+4 . OR IN NEW STATUS INFORMATION 15210000 - 000FFA 5070 6018 00018 1706 ST 7,UCBCSW+4 . AND STORE IT BACK 15220000 - 000FFE D201 601A 0046 0001A 00046 1707 MVC UCBCSW+6(2),CSW+6 . MOVE IN BYTE COUNT 15230000 - 001004 4120 600C 0000C 1708 LA 2,UCBWS 15240000 - 001008 9500 601C 0001C 1709 CLI UCBFPR,X'00' . IS FAST PROCESSING 15250000 - 00100C 4780 106A 01034 1710 BE IONOFPR . REQUIRED? IF NOT, RETURN 15260000 - 001010 58F0 0270 00270 1711 L 15,RUNNING . IF SO, STOP GUY NOW RUNNING 15270000 - R:F 00000 1712 USING PCB,15 15280000 - 001014 95FF F019 00019 1713 CLI PCBBLOKT,X'FF' . IS ANYONE REALLY RUNNING? 15290000 - 001018 4780 1062 0102C 1714 BE IOWAIT . IF NOT, START UP SLEEPER 15300000 - 00101C 41D0 F04C 0004C 1715 LA 13,PCBISA . IF SO, STOP RUNNING PROCESS 15310000 - R:D 00000 1716 USING SA,13 15320000 - 001020 D207 D000 0038 00000 00038 1717 MVC SAPSW,IOOLD . SAVE PROCESS WHICH WAS 15330000 - 001026 D23F D008 01DC 00008 001DC 1718 MVC SAREGS,IOHSAVE . INTERRUPTED 15340000 - 1719 DROP 13,15 15350000 - 00102C 9200 0278 00278 1720 IOWAIT MVI NEXTTRYM,X'00' . MAKE NEXTTRY NOT MODIFIED 15360000 - 001030 0AE5 1721 SVC C'V' . SO CAN FAST PROCESS SLEEPER 15370000 - 001032 0A4B 1722 SVC C'.' . GO PROCESS IT RIGHT AWAY 15380000 - 001034 0AE5 1723 IONOFPR SVC C'V' . AND WAKE UP THE SLEEPER 15390000 - 001036 980F 01DC 001DC 1724 IOBACK LM 0,15,IOHSAVE . RELOAD OUR REGISTERS 15400000 - 00103A 8200 0038 00038 1725 LPSW IOOLD . AND STEALTHILY RETURN 15410000 - 1726 DROP 1,6 15420000 -1 Sample Operating System Version 2.00 Page 45 - Active Usings: PROGRAM,R0 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 1728 *********************************************************************** 15440000 - 1729 * * 15450000 - 1730 * IPL ENTERED ROUTINE * 15460000 - 1731 * * 15470000 - 1732 * FUNCTION: TO INITIALIZE SYSTEM PARAMETERS, SET STORAGE KEYS, * 15480000 - 1733 * AND CREATE MULTIPLE JOB STREAMS. * 15490000 - 1734 * * 15500000 - 1735 *********************************************************************** 15510000 -0 0103E 1737 IPLRTN EQU * . THE IPL-ENTERED ROUTINE 15530000 - 00103E 0510 1738 BALR 1,0 15540000 - R:1 01040 1739 USING *,1 . ESTABLISH ADDRESSING 15550000 - 001040 D202 007D 1281 0007D 012C1 1740 MVC IONEW+5(3),SOSIONEW activate IO handler 15553002 - 001046 D202 005D 1289 0005D 012C9 1741 MVC EXTNEW+5(3),IPLEXNEW ignore external interrupts for now 15556002 - 00104C 41F0 10D0 01110 1742 LA 15,IPLPCB . I'M RUNNING 15560000 - 001050 50F0 0270 00270 1743 ST 15,RUNNING . INITIALIZE 'RUNNING' 15570000 - 001054 50F0 0274 00274 1744 ST 15,NEXTTRY . INITIALIZE 'NEXTTRY' 15580000 - 001058 D207 1700 1690 01740 016D0 1745 MVC VERYEND,=A(0,CORESIZE-(VERYEND-PROGRAM)) FREE CORE 15590000 - 00105E 4130 0008 00008 1746 LA 3,8 . SET ZERO KEY AND FETCH PROTECT 15600000 - 001062 5820 1224 01264 1747 L 2,CORESIZ . START PAST THE LAST BLOCK 15610000 - 001066 5B20 161C 0165C 1748 IPLCL S 2,PAGESIZE . get the previous block, page aligned 15620002 - 00106A 4740 1036 01076 1749 BM IPLTH . IF NEGATIVE, WE'RE THROUGH HERE 15630000 - 1750 * SSKE 3,2 . else set the storage key to 15640002 - 00106E B22B0032 1751 DC X'B22B0032' Assembler (XF) doesn't support SSKE 15643002 - 001072 47F0 1026 01066 1752 B IPLCL . ZERO, AND WORK BACKWARDS 15650000 - 001076 1B44 1753 IPLTH SR 4,4 . INDEX IN TABLES FOR INPUT STREAM 15660000 - 001078 5850 1088 010C8 1754 L 5,STREAMS . HOW MANY STREAMS? 15670000 - 00107C 4120 1218 01258 1755 IPLLOOP LA 2,IPLAPCBS . READY TO ALLOCATE A PCB 15680000 - R:2 00000 1756 USING XAX,2 15690000 - 001080 0AC1 1757 SVC C'A' . ALLOCATE 15700000 - 001082 5820 2004 00004 1758 L 2,XAXADDR . GET THE ADDRESS 15710000 - 001086 D253 2000 1228 00000 01268 1759 MVC 0(TYPLEN,2),TYPPCB .MAKE IT LOOK LIKE A PCB 15720000 - 00108C 0AC9 1760 SVC C'I' . CHAIN IT ON 15730000 - R:2 00000 1761 USING PCB,2 15740000 - 00108E 5020 2008 00008 1762 ST 2,PCBNPTG . BUT PUT IT IN A GROUP BY ITSELF 15750000 - 001092 5020 200C 0000C 1763 ST 2,PCBLPTG 15760000 - 1764 DROP 2 15770000 - R:F 00000 1765 USING PCB,15 15780000 - 001096 50F0 F00C 0000C 1766 ST 15,PCBLPTG . LIKEWISE FOR THE IPL PCB 15790000 - 00109A 50F0 F008 00008 1767 ST 15,PCBNPTG 15800000 - 1768 DROP 15 15810000 - R:2 00000 1769 USING PCB,2 15820000 - 00109E 4180 204C 0004C 1770 LA 8,PCBISA . GET THE NEW PCB'S ISA 15830000 - R:8 00000 1771 USING SA,8 15840000 - 0010A2 4190 8008 00008 1772 LA 9,SAREGS . ABOUT TO FIX INIT REGS 15850000 - R:9 00000 1773 USING REGS,9 15860000 - 0010A6 41A0 108C 010CC 1774 LA 10,UCBTAB 15870000 - 0010AA 1AA4 1775 AR 10,4 15880000 - 0010AC D203 900C A000 0000C 00000 1776 MVC REG3,0(10) . REG3 -> (RDRUCB,PRTUCB) 15890000 - 0010B2 D203 9010 A010 00010 00010 1777 MVC REG4,KEYTAB-UCBTAB(10) . REG4 = KEY 15900000 - 1778 DROP 9 15910000 - 0010B8 4144 0004 00004 1779 LA 4,4(4) . GO TO NEXT JOB STREAM 15920000 - 0010BC 4650 103C 0107C 1780 BCT 5,IPLLOOP . DO FOR EACH STREAM 15930000 - 0010C0 D202 005D 1285 0005D 012C5 1781 MVC EXTNEW+5(3),SOSEXNEW reactivate ext interrupt handler 15935002 - 0010C6 0A4B 1782 SVC C'.' . THEN ENTER TRAFFIC CONTROLLER 15940000 -1 Sample Operating System Version 2.00 Page 46 - Active Usings: PROGRAM,R0 PROGRAM+X'1040',R1 PCB,R2 SA,R8 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -00010C8 00000004 1784 STREAMS DC F'4' . NUMBER OF STREAMS 15960002 -0 010CC 1786 UCBTAB EQU * . TABLE OF PTRS TO UCB BLOCKS 15980000 - 0010CC 000010EC 1787 DC A(UCBLP1) 15990000 - 0010D0 000010F4 1788 DC A(UCBLP2) 16000000 - 0010D4 000010FC 1789 DC A(UCBLP3) 16003002 - 0010D8 00001104 1790 DC A(UCBLP4) 16006002 -0 010DC 1792 KEYTAB EQU * . TABLE OF PROTECTION KEYS 16020000 - 0010DC 00100000 1793 DC X'00100000' storage key for stream 1 region 16030002 - 0010E0 00200000 1794 DC X'00200000' storage key for stream 2 region 16034002 - 0010E4 00300000 1795 DC X'00300000' storage key for stream 3 region 16038002 - 0010E8 00400000 1796 DC X'00400000' storage key for stream 4 region 16042002 -00010EC 00000EA400000EC4 1798 UCBLP1 DC A(UCBRDR1,UCBPRT1) 16060000 - 0010F4 00000EE400000F04 1799 UCBLP2 DC A(UCBRDR2,UCBPRT2) 16070000 - 0010FC 00000F2400000F44 1800 UCBLP3 DC A(UCBRDR3,UCBPRT3) 16073002 - 001104 00000F6400000F84 1801 UCBLP4 DC A(UCBRDR4,UCBPRT4) 16076002 -0001110 1803 DS 0D 16090000 - 001110 4040404040404040 1804 IPLPCB DC CL8' ' . IPL ROUTINE PCB 16100000 - 001118 0000111000001110 1805 DC 4A(IPLPCB) 16110000 - 001128 FF000000 1806 DC X'FF000000' . INITIALIZED FLAGS 16120000 - 00112C 0000000100000000 1807 DC F'1,0' 16130000 - 001134 0000000000000000 1808 DC 5F'0,0' 16140000 - 00115C 0002000000000000 1809 DC X'0002000000000000' 16150000 - 001164 1810 DS CL76 16160000 - 0011B0 1811 DS CL84 16170000 - 001204 1812 DS CL84 16180000 -0001258 00000148 1814 IPLAPCBS DC A(LENPCB) . ALLOC LIST FOR PCB'S 16200000 - 00125C 00000000 1815 DC A(0) 16210000 - 001260 00000008 1816 DC F'8' 16220000 - 001264 01000000 1817 CORESIZ DC A(CORESIZE) . BYTES OF CORE IN OBJECT MACHINE 16230000 -0001268 1819 DS 0D 16250000 - 001268 5CC9C2E2E4D74040 1820 TYPPCB DC CL8'*IBSUP' . A TEMPLATE *IBSUP PCB 16260000 - 001270 0000000000000000 1821 DC 4A(0) 16270000 - 001280 00000000 1822 TEMPLATE DC X'00000000' . INITIALIZED FLAGS 16280000 - 001284 0000000100000000 1823 DC F'1,0' 16290000 - 00128C 0000000000000000 1824 DC 5F'0,0' 16300000 - 0012B4 FF000000000012CC 1825 DC X'FF00000000',AL3(JSP) 16310000 - 00054 1826 TYPLEN EQU *-TYPPCB 16320000 - 0012BC 8200 0018 00018 1827 EXINTRPT LPSW EXTOLD ignore external interrupts 16321002 - 0012C0 1828 DS 0F align 16322002 - 0012C0 00 1829 DC X'00' filler 16323002 - 0012C1 000FC4 1830 SOSIONEW DC AL3(IOHANDL) sample OS IO new PSW instruction addr 16324002 - 0012C4 00 1831 DC X'00' filler 16325002 - 0012C5 00027A 1832 SOSEXNEW DC AL3(EXTHANDL) sample OS ext new PSW instruction addr 16326002 - 0012C8 00 1833 DC X'00' filler 16327002 - 0012C9 0012BC 1834 IPLEXNEW DC AL3(EXINTRPT) IPLRTN ext new PSW instruction addr 16328002 -1 Sample Operating System Version 2.00 Page 47 - Active Usings: PROGRAM,R0 PROGRAM+X'1040',R1 PCB,R2 SA,R8 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 1836 *********************************************************************** 16340000 - 1837 * * 16350000 - 1838 * JOB STREAM PROCESSOR * 16360000 - 1839 * * 16370000 - 1840 *********************************************************************** 16380000 -0 012CC 1842 JSP EQU * . THE JOB STREAM PROCESSOR 16400000 - 0012CC 0510 1843 BALR 1,0 . (PROCESS *IBSUP) 16410000 - R:1 012CE 1844 USING *,1 . ESTABLISH ADDRESSING 16420000 - 0012CE 4120 1392 01660 1845 LA 2,JSPSUSEM . LOCK OURSELVES UNTIL 16430000 - 0012D2 0AD7 1846 SVC C'P' . WE CAN ALLOCATE STORAGE 16440000 - 0012D4 4120 139A 01668 1847 LA 2,JSPAAS . READY TO ALLOCATE 16450000 - R:2 00000 1848 USING XAX,2 16460000 - 0012D8 0AC5 1849 SVC C'E' . ALLOCATE 16470000 - 0012DA 58C0 2004 00004 1850 L 12,XAXADDR . PTR TO AUTO AREA 16480000 - 1851 DROP 2 16490000 - R:C 00000 1852 USING JSPAS,12 . USE FOR ADDRESSING 16500000 - 0012DE 4120 1392 01660 1853 LA 2,JSPSUSEM . UNLOCK OURSELVES 16510000 - 0012E2 0AE5 1854 SVC C'V' 16520000 - 0012E4 D207 C164 140A 00164 016D8 1855 MVC TREAD+0(8),=CL8'*IN' . INITIALIZE VALUES IN AUTOMATIC 16530000 - 0012EA D203 C16C 1432 0016C 01700 1856 MVC TREAD+8(4),=F'8' . STORAGE 16540000 - 0012F0 D203 C170 1436 00170 01704 1857 MVC TREAD+12(4),=C'READ' 16550000 - 0012F6 4120 C084 00084 1858 LA 2,CARD 16560000 - 0012FA 5020 C174 00174 1859 ST 2,ACARD 16570000 - 0012FE D207 C190 1412 00190 016E0 1860 MVC USERL+0(8),=CL8'USERPROG' 16580000 - 001304 D20B C178 1352 00178 01620 1861 MVC WRITE(12),SKIP 16590000 - 00130A D203 C184 143A 00184 01708 1862 MVC WRITE+12(4),=C'PRIN' 16600000 - 001310 4150 C000 00000 1863 LA 5,LINE 16610000 - 001314 5050 C188 00188 1864 ST 5,WRITE+16 16620000 - 001318 D203 C1B0 138E 001B0 0165C 1865 MVC CORE+8(4),PAGESIZE align to page boundary 16630002 - 00131E D207 C1B8 1412 001B8 016E0 1866 MVC TALK+0(8),=CL8'USERPROG' 16640000 - 001324 D203 C1C0 143E 001C0 0170C 1867 MVC TALK+8(4),=F'12' 16650000 - 00132A D203 C1D8 1442 001D8 01710 1868 MVC ANYBACK+8(4),=F'1' 16660000 - 001330 D203 C1B4 1446 001B4 01714 1869 MVC RLDTEMP,=A(0) 16670000 - 001336 5040 C18C 0018C 1870 ST 4,KEY . STORE KEY 16680000 - 00133A 1853 1871 LR 5,3 . GET PTR TO UCB PTR BLOCK 16690000 - 00133C 5835 0000 00000 1872 L 3,0(5) . GET READER POINTER 16700000 - 001340 4120 1362 01630 1873 LA 2,INSEQ . READY TO CREATE & START *IN 16710000 - 001344 0AC3 1874 SVC C'C' . CREATE 16720000 - 001346 0AE8 1875 SVC C'Y' . START 16730000 - 001348 5835 0004 00004 1876 L 3,4(5) . GET PTR TO PRINTER UCB 16740000 - 00134C 4120 136E 0163C 1877 LA 2,OUTSEQ . READY TO CREATE & START *OUT 16750000 - 001350 0AC3 1878 SVC C'C' . CREATE 16760000 - 001352 0AE8 1879 SVC C'Y' . START 16770000 -0001354 4120 C164 00164 1881 LOOP LA 2,TREAD . READT TO READ A CARD 16790000 - 001358 0AE2 1882 SVC C'S' . START TO READ 16800000 - 00135A D203 C0DC 144A 000DC 01718 1883 MVC RREPLY1,=F'132' . 132 CHARS FOR REPLY 16810000 - 001360 4120 C0D4 000D4 1884 LA 2,RREPLY 16820000 - 001364 0AD9 1885 SVC C'R' . LISTEN FOR REPLY 16830000 - 001366 D501 C0E0 145A 000E0 01728 1886 CLC REPLY(2),=C'OK' . IS REPLY 'OK'? 16840000 - 00136C 4770 10B0 0137E 1887 BNE STOP . IF NOT, STOP 16850000 - 001370 D504 145C C084 0172A 00084 1888 CLC =C'$JOB,',CARD . HAVE WE A JOB CARD? 16860000 - 001376 4780 10B6 01384 1889 BE JOB . GOOD! 16870000 - 00137A 47F0 1086 01354 1890 B LOOP . ELSE LOOP 16880000 -1 Sample Operating System Version 2.00 Page 48 - Active Usings: PROGRAM,R0 PROGRAM+X'12CE',R1 SA,R8 JSPAS,R12 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -000137E 4120 134A 01618 1891 STOP LA 2,JSPNEVER . WAIT FOR A "V" OPERATION 16890000 - 001382 0AD7 1892 SVC C'P' . THAT NEVER COMES 16900000 -0001384 9200 C1DD 001DD 1894 JOB MVI LOADED,X'00' . REMEMBER NOT LOADED 16920000 - 001388 D283 C000 141A 00000 016E8 1895 MVC LINE,=CL8' ' . CLEAR A LINE, PUT IN 16930000 - 00138E D27B C008 C007 00008 00007 1896 MVC LINE+8(124),LINE+7 .ALL BLANKS 16940000 - 001394 D24F C000 C084 00000 00084 1897 MVC LINE(80),CARD . GET READY TO SEND $JOB CARD 16950000 - 00139A 4120 C178 00178 1898 LA 2,WRITE . TO PRINTER 16960000 - 00139E 0AE2 1899 SVC C'S' . SEND IT 16970000 - 0013A0 4120 C0D4 000D4 1900 LA 2,RREPLY 16980000 - 0013A4 0AD9 1901 SVC C'R' . AND WAIT FOR REPLY 16990000 - 0013A6 4120 C190 00190 1902 LA 2,USERL . CREATE USERPROG 17000000 - 0013AA 0AC3 1903 SVC C'C' 17010000 - 0013AC 4140 C088 00088 1904 LA 4,CARD+4 . START TO SCAN CARD 17020000 - 0013B0 4530 131C 015EA 1905 BAL 3,SCAN . GET NEXT TOKEN 17030000 - 0013B4 0650 1906 BCTR 5,0 . less one to remove K 17040002 - 0013B6 5650 138A 01658 1907 O 5,COREPKLN . length of packed size for execute 17049002 - 0013BA 4450 137A 01648 1908 EX 5,COREPACK . pack core digits 17058002 - 0013BE 4F80 1382 01650 1909 CVB 8,COREPCKD . convert core requested to binary 17067002 - 0013C2 1B99 1910 SR 9,9 . is core .. 17076002 - 0013C4 8C80 0002 00002 1911 SRDL 8,2 . .. modulo four .. 17085002 - 0013C8 1299 1912 LTR 9,9 . .. equal zero? 17094002 - 0013CA 4780 1104 013D2 1913 BZ COREOK . -> yes, use it 17103002 - 0013CE 4180 8001 00001 1914 LA 8,1(,8) . -> no, up one page 17112002 - 0013D2 8980 000C 0000C 1915 COREOK SLL 8,12 . core bytes, rounded up to full pages 17121002 - 0013D6 5080 C1A8 001A8 1916 ST 8,CORE . remember core requirement 17130002 - 0013DA 4530 131C 015EA 1917 ASGNUNIT BAL 3,SCAN . GET NEXT TOKEN 17150000 - 0013DE 957E 4000 00000 1918 CLI 0(4),C'=' . IS IT AN '='? 17160000 - 0013E2 4770 1194 01462 1919 BNE LOAD . IF NOT, LOAD IN THE OBJECT DECK 17170000 - 0013E6 955C 9000 00000 1920 CLI 0(9),C'*' . HAS USER NAMED IT STARTING 17180000 - 0013EA 4780 12C8 01596 1921 BE EXPUNGE . WITH '*'? IF SO, THROW HIM OUT 17190000 - 0013EE 4120 C19C 0019C 1922 LA 2,SEQ . ELSE CREATE A PROCESS 17200000 - 0013F2 D207 C19C 141A 0019C 016E8 1923 MVC SEQ,=CL8' ' . BLANK OUT THE NAME 17210000 - 0013F8 4450 1154 01422 1924 EX 5,UNAMMOV . THEN MOVE THE RELEVANT 17220000 - 0013FC 0AC3 1925 SVC C'C' . CHARACTERS AND CREATE 17230000 - 0013FE 4120 C19C 0019C 1926 LA 2,SEQ . WE'LL START IT IN A MOMENT 17240000 - 001402 4530 131C 015EA 1927 BAL 3,SCAN . SCAN AGAIN 17250000 - 001406 4450 115A 01428 1928 EX 5,CMPIN . IS IT 'IN'? 17260000 - 00140A 4780 116C 0143A 1929 BE ASIN . IF SO, ASSIGN IT AS IN 17270000 - 00140E 4450 1160 0142E 1930 EX 5,CMPOUT . IF IT'S 'OUT' 17280000 - 001412 4780 117C 0144A 1931 BE ASOUT . ASSIGN IT AS OUT 17290000 - 001416 4450 1166 01434 1932 EX 5,CMPEXCP . IS IT 'EXCP'? 17300000 - 00141A 4780 1184 01452 1933 BE ASEXCP . IF SO, ASSIGN IT AS EXCP 17310000 - 00141E 47F0 12C8 01596 1934 B EXPUNGE . ERROR: GO ON TO NEXT JOB 17320000 - 001422 D200 C19C 9000 0019C 00000 1935 UNAMMOV MVC SEQ(0),0(9) . MOVE THE UNIT'S PROCESS NAME 17330000 - 001428 D500 9000 1461 00000 0172F 1936 CMPIN CLC 0(0,9),=C'IN ' . DOES IT SAY 'IN'? 17340000 - 00142E D500 9000 144E 00000 0171C 1937 CMPOUT CLC 0(0,9),=C'OUT ' . DOES IT SAY 'OUT'? 17350000 - 001434 D500 9000 1464 00000 01732 1938 CMPEXCP CLC 0(0,9),=C'EXCP ' . DOES IT SAY 'EXCP'? 17360000 -000143A 41B0 140A 016D8 1940 ASIN LA 11,=CL8'*IN' . POINT TO NAME OF READER HANDLER 17380000 - 00143E D203 C1A4 1452 001A4 01720 1941 SETDIM MVC UNITRTN,=A(DIM) . USE DIM AS THE INTERFACE 17390000 - 001444 0AE8 1942 SVC C'Y' 17400000 - 001446 47F0 110C 013DA 1943 B ASGNUNIT 17410000 - 00144A 41B0 1422 016F0 1944 ASOUT LA 11,=CL8'*OUT' . POINT TO NAME OF PRINTER HANDLER 17420000 - 00144E 47F0 1170 0143E 1945 B SETDIM 17430000 -1 Sample Operating System Version 2.00 Page 49 - Active Usings: PROGRAM,R0 PROGRAM+X'12CE',R1 SA,R8 JSPAS,R12 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0001452 D203 C1A4 1456 001A4 01724 1946 ASEXCP MVC UNITRTN,=A(EXCPHNDL) . USE FOR USER SUPPLIED 17440000 - 001458 58B0 C18C 0018C 1947 L 11,KEY 17450000 - 00145C 0AE8 1948 SVC C'Y' . I/O ROUTINE 17460000 - 00145E 47F0 110C 013DA 1949 B ASGNUNIT 17470000 -0001462 4120 C1A8 001A8 1951 LOAD LA 2,CORE . READY TO ALLOCATE THE REGION 17490000 - 001466 0AC1 1952 SVC C'A' . AND ALLOCATE IT 17500000 - 001468 92FF C1DD 001DD 1953 MVI LOADED,X'FF' . REMEMBER THAT WE'RE LOADED 17510000 - 00146C 5890 C1AC 001AC 1954 L 9,CORE+4 . GET THE FIRST ADDRESS 17520000 - 001470 5840 C18C 0018C 1955 L 4,KEY . GET THE KEY 17530000 - 001474 8840 0010 00010 1956 SRL 4,16 17540000 - 001478 5640 13A2 01670 1957 O 4,FETCHPRT fetch protected 17545002 - 00147C 1839 1958 LR 3,9 . GET THE BLOCK FOLLOWING OURS 17550000 - 00147E 1A38 1959 AR 3,8 17560000 - 001480 5B30 138E 0165C 1960 LOADSK S 3,PAGESIZE . get the previous block, page aligned 17570002 - 001484 1939 1961 CR 3,9 . HAVE WE PASSED THE START? 17580000 - 001486 4740 11C4 01492 1962 BL LOADLOOP . IF SO, START LOADING 17590000 - 1963 * SSKE 4,3 . else set this block to the key 17600002 - 00148A B22B0043 1964 DC X'B22B0043' Assembler (XF) doesn't support SSKE 17603002 - 00148E 47F0 11B2 01480 1965 B LOADSK . AND BRANCH BACK 17610000 - 001492 4120 C164 00164 1966 LOADLOOP LA 2,TREAD . READ IN OBJECT DECK 17620000 - 001496 0AE2 1967 SVC C'S' . GET A CARD A'READING 17630000 - 001498 D203 C0DC 144A 000DC 01718 1968 MVC RREPLY1,=F'132' 17640000 - 00149E 4120 C0D4 000D4 1969 LA 2,RREPLY 17650000 - 0014A2 0AD9 1970 SVC C'R' . WAIT FOR ANSWER 17660000 - 0014A4 D502 C085 1469 00085 01737 1971 CLC CARD+1(3),=C'TXT' . IS IT A TXT CARD? 17670000 - 0014AA 4780 11F8 014C6 1972 BE TXTCARD 17680000 - 0014AE D502 C085 146C 00085 0173A 1973 CLC CARD+1(3),=C'RLD' . IS IT A RLD CARD? 17690000 - 0014B4 4780 1212 014E0 1974 BE RLDCARD 17700000 - 0014B8 D502 C085 146F 00085 0173D 1975 CLC CARD+1(3),=C'END' . IS IT AN END CARD? 17710000 - 0014BE 4780 1270 0153E 1976 BE ENDCARD 17720000 - 0014C2 47F0 11C4 01492 1977 B LOADLOOP . IF NONE, IGNORE. 17730000 -00014C6 58A0 C088 00088 1979 TXTCARD L 10,CARD+4 . GET THE RELATIVE ADDRESS 17750000 - 0014CA 1AA9 1980 AR 10,9 . PLUS THE ABSOLUTE ADDRESS 17760000 - 0014CC 48B0 C08E 0008E 1981 LH 11,CARD+10 . GET THE COUNT, 17770000 - 0014D0 06B0 1982 BCTR 11,0 . DECREMENTED 17780000 - 0014D2 44B0 120C 014DA 1983 EX 11,TXTMOV . AND MOVE THE TEXT 17790000 - 0014D6 47F0 11C4 01492 1984 B LOADLOOP . AND READ ANOTHER CARD! OH WOW! 17800000 - 0014DA D200 A000 C094 00000 00094 1985 TXTMOV MVC 0(0,10),CARD+16 17810000 -00014E0 48B0 C08E 0008E 1987 RLDCARD LH 11,CARD+10 . GET THE BYTE COUNT 17830000 - 0014E4 41D0 C098 00098 1988 LA 13,CARD+20 . AND AN INDEX INTO THE CARD 17840000 - 0014E8 58AD 0000 00000 1989 RLDLOOP L 10,0(13) . GET THE LOCATION TO BE RLD'D 17850000 - 0014EC 1AA9 1990 AR 10,9 . GET THE ABSOLUTE ADDRESS 17860000 - 0014EE 9103 D003 00003 1991 TM 3(13),X'03' . IS IT A FULLWORD? 17870000 - 0014F2 4770 1252 01520 1992 BNZ NOTALGND . IF NO, HANDLE AS THREE BYTES 17880000 - 0014F6 587A 0000 00000 1993 L 7,0(10) . GET THAT WORD (HAD BETTER BE 17890000 - 0014FA 1A79 1994 AR 7,9 . ONE); ADD THE RELOCATION 17900000 - 0014FC 507A 0000 00000 1995 ST 7,0(10) . ADDRESS, AND STORE IT BACK 17910000 - 001500 9101 D000 00000 1996 RLDCONT TM 0(13),X'01' . CHECK IF LONG OR SHORT FIELD 17920000 - 001504 4770 1242 01510 1997 BNZ SHORT . AND BRANCH ACCORDINGLY 17930000 - 001508 4140 0008 00008 1998 LA 4,8 . SKIP EIGHT BYTES 17940000 - 00150C 47F0 1246 01514 1999 B RLDFINI 17950000 - 001510 4140 0004 00004 2000 SHORT LA 4,4 . SKIP FOUR BYTES 17960000 -1 Sample Operating System Version 2.00 Page 50 - Active Usings: PROGRAM,R0 PROGRAM+X'12CE',R1 SA,R8 JSPAS,R12 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0001514 1AD4 2001 RLDFINI AR 13,4 . INCREMENT THE CARD INDEX 17970000 - 001516 1BB4 2002 SR 11,4 . DECREMENT THE BYTE COUNT 17980000 - 001518 4720 121A 014E8 2003 BP RLDLOOP . AND TRY AGAIN 17990000 - 00151C 47F0 11C4 01492 2004 B LOADLOOP . OR READ ANOTHER CARD 18000000 - 001520 D202 C1B5 A000 001B5 00000 2005 NOTALGND MVC RLDTEMP+1(3),0(10) . PUT ADDRESS HERE 18010000 - 001526 5870 C1B4 001B4 2006 L 7,RLDTEMP . RELOCATE IT 18020000 - 00152A 1A79 2007 AR 7,9 18030000 - 00152C 5070 C1B4 001B4 2008 ST 7,RLDTEMP . AND PUT IT BACK TO 18040000 - 001530 D202 A000 C1B5 00000 001B5 2009 MVC 0(3,10),RLDTEMP+1 . WHERE IT BELONGS 18050000 - 001536 9400 C1B4 001B4 2010 NI RLDTEMP,X'00' . CLEAR OUT TEMPORARY 18060000 - 00153A 47F0 1232 01500 2011 B RLDCONT . AND LOOP BACK 18070000 -000153E 4120 C190 00190 2013 ENDCARD LA 2,USERL . FIND THE PCB FOR USERPROG 18090000 - 001542 0AD5 2014 SVC C'N' 18100000 - 001544 5840 C198 00198 2015 L 4,USERL+8 . GET THE ADDRESS 18110000 - R:4 00000 2016 USING PCB,4 18120000 - 001548 92FF 4019 00019 2017 MVI PCBBLOKT,X'FF' . TEMPORARILY BLOCK IT 18130000 - 00154C 5090 C198 00198 2018 ST 9,USERL+8 . STORE THE BEGINNING ADDRESS 18140000 - 001550 0AE8 2019 SVC C'Y' . THEN START IT 18150000 - 001552 5850 C18C 0018C 2020 L 5,KEY . GET THE KEY 18160000 - 001556 5650 404C 0004C 2021 O 5,PCBISA+0 . THEN OR THIS INTO THE 18170000 - 00155A 5050 404C 0004C 2022 ST 5,PCBISA+0 . FIRST WORD OF THE PCB 18180000 - 00155E 9601 404D 0004D 2023 OI PCBISA+1,X'01' . OR IN A 'PROGRAM STATE' BIT 18190000 - 001562 9200 4019 00019 2024 MVI PCBBLOKT,X'00' . AND THEN UNBLOCK IT 18200000 - 2025 DROP 4 18210000 - 001566 4120 C1B8 001B8 2026 LA 2,TALK . LISTEN TO WHAT IT SAYS 18220000 - 00156A 0AD9 2027 SVC C'R' 18230000 -000156C D207 C000 141A 00000 016E8 2029 MVC LINE(8),=CL8' ' . IF JOB FINISHED, CLEAR A LINE 18250000 - 001572 D27B C008 C007 00008 00007 2030 MVC LINE+8(124),LINE+7 18260000 - 001578 D20B C000 C1C4 00000 001C4 2031 MVC LINE(12),TALK+12 . MOVE THE MESSAGE ONTO THE LINE 18270000 - 00157E 4120 C178 00178 2032 LA 2,WRITE . AND SAY TO WRITE IT 18280000 - 001582 0AE2 2033 SVC C'S' 18290000 - 001584 4120 C1D0 001D0 2034 LA 2,ANYBACK 18300000 - 001588 0AD9 2035 SVC C'R' 18310000 - 00158A 4120 1352 01620 2036 LA 2,SKIP . SKIP TO THE TOP OF THE NEXT PAGE 18320000 - 00158E 0AE2 2037 SVC C'S' 18330000 - 001590 4120 C1D0 001D0 2038 LA 2,ANYBACK 18340000 - 001594 0AD9 2039 SVC C'R' 18350000 -0001596 5850 0270 00270 2041 EXPUNGE L 5,RUNNING . EXPUNGE A JOB: LOOK AT ALL PCBS 18370000 - 00159A 4120 C19C 0019C 2042 LA 2,SEQ 18380000 - R:5 00000 2043 USING PCB,5 18390000 - 00159E D207 C19C 5000 0019C 00000 2044 EXPLOOP MVC SEQ(8),PCBNAME . GET THE PROCESS NAME 18400000 - 0015A4 5840 5008 00008 2045 L 4,PCBNPTG . GET THE NEXT PTR 18410000 - 0015A8 955C C19C 0019C 2046 CLI SEQ+0,C'*' . IS IT A '*' PROCESS? 18420000 - 0015AC 4780 12E6 015B4 2047 BE EXPNXT . IF SO, SKIP OVER 18430000 - 0015B0 0AE9 2048 SVC C'Z' . ELSE STOP IT 18440000 - 0015B2 0AC4 2049 SVC C'D' . AND DESTROY IT 18450000 - 0015B4 1854 2050 EXPNXT LR 5,4 . GO TO THE NEXT PCB 18460000 - 0015B6 5950 0270 00270 2051 C 5,RUNNING . ARE WE THROUGH? 18470000 - 0015BA 4770 12D0 0159E 2052 BNE EXPLOOP . IF NOT, LOOP AGAIN 18480000 - 0015BE 9500 C1DD 001DD 2053 CLI LOADED,X'00' . WAS CORE ALLOCATED? 18490000 - 0015C2 4780 1086 01354 2054 BE LOOP . IF NOT, GO READ THE NEXT $JOB CARD 18500000 - 0015C6 4140 0008 00008 2055 LA 4,8 . set zero key and fetch protect 18510002 -1 Sample Operating System Version 2.00 Page 51 - Active Usings: PROGRAM,R0 PROGRAM+X'12CE',R1 PCB,R5 SA,R8 JSPAS,R12 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -00015CA 1839 2056 LR 3,9 . AND A POINTER TO THE NEXT 18520000 - 0015CC 1A38 2057 AR 3,8 . BLOCK AFTER OURS 18530000 - 0015CE 5B30 138E 0165C 2058 LOADCL S 3,PAGESIZE . get the previous block, page aligned 18540002 - 0015D2 1939 2059 CR 3,9 . ARE WE THROUGH? 18550000 - 0015D4 4740 1312 015E0 2060 BL LOADD . IF SO, GO FREE CORE 18560000 - 2061 * SSKE 4,3 . else clear storage key 18570002 - 0015D8 B22B0043 2062 DC X'B22B0043' Assembler (XF) doesn't support SSKE 18573002 - 0015DC 47F0 1300 015CE 2063 B LOADCL . AND LOOP BACK 18580000 - 0015E0 4120 C1A8 001A8 2064 LOADD LA 2,CORE 18590000 - 0015E4 0AC6 2065 SVC C'F' . FREE THE STORAGE 18600000 - 0015E6 47F0 1086 01354 2066 B LOOP . READ ANOTHER $JOB CARD 18610000 -00015EA 1B55 2068 SCAN SR 5,5 . START THE TOKEN COUNT AT ZERO 18630000 - 0015EC 4144 0001 00001 2069 SCANLOOP LA 4,1(4) . GO TO NEXT CHARACTER 18640000 - 0015F0 956B 4000 00000 2070 CLI 0(4),C',' . DO WE HAVE A DELIMITER? IF SO, 18650000 - 0015F4 4780 1342 01610 2071 BE TOKSTART 18660000 - 0015F8 957E 4000 00000 2072 CLI 0(4),C'=' . DITTO 18670000 - 0015FC 4780 1342 01610 2073 BE TOKSTART 18680000 - 001600 9540 4000 00000 2074 CLI 0(4),C' ' . DITTO 18690000 - 001604 4780 1342 01610 2075 BE TOKSTART 18700000 - 001608 4155 0001 00001 2076 LA 5,1(5) . AND UP COUNT 18710000 - 00160C 47F0 131E 015EC 2077 B SCANLOOP . AND LOOP 18720000 - 001610 1894 2078 TOKSTART LR 9,4 . SET REG9 TO START 18730000 - 001612 1B95 2079 SR 9,5 . OF THIS TOKEN 18740000 - 001614 0650 2080 BCTR 5,0 . LESS ONE FOR EXECUTE INSTRUCTION 18750000 - 001616 07F3 2081 BR 3 18760000 --001618 0000000000000000 2083 JSPNEVER DC F'0,0' . A GOOD WAY TO DIE: P(JSPNEVER) 18780000 - 001620 5CD6E4E340404040 2084 SKIP DC CL8'*OUT' . MESSAGE BLOCK FOR A NEW PAGE 18790000 - 001628 00000008 2085 DC F'8' 18800000 - 00162C E2E3C3F1 2086 DC CL4'STC1' 18810000 - 001630 5CC9D54040404040 2087 INSEQ DC CL8'*IN' . SEQ TO CREATE & START *IN 18820000 - 001638 00000AC6 2088 DC A(RDRHANDL) 18830000 - 00163C 5CD6E4E340404040 2089 OUTSEQ DC CL8'*OUT' . SEQ TO CREATE & START *OUT 18840000 - 001644 00000C48 2090 DC A(PRTHANDL) 18850000 - 001648 F200 1382 9000 01650 00000 2091 COREPACK PACK COREPCKD(1),0(1,9) . executed to pack core size req'd 18860002 - 001650 2092 COREPCKD DS D . packed core requirement goes here 18880002 - 001658 00000070 2093 COREPKLN DC X'00000070' . length of packed size for execute 18900002 - 00165C 00001000 2094 PAGESIZE DC F'4096' . page size for core computation 18920002 - 001660 0000000100000000 2095 JSPSUSEM DC F'1,0' . SEMAPHORE TO LOCK ROUTINE 18990000 - 001668 000001E0 2096 JSPAAS DC A(LENJSPAS) . ALLOCATE LIST FOR AUTO STORAGE 19000000 - 00166C 2097 DS A 19010000 - 001670 00000008 2098 FETCHPRT DC F'8' reused to or in fetch protection 19020002 -1 Sample Operating System Version 2.00 Page 52 - Active Usings: PROGRAM,R0 PROGRAM+X'12CE',R1 PCB,R5 SA,R8 JSPAS,R12 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 2100 *********************************************************************** 19040000 - 2101 * * 19050000 - 2102 * DEVICE INTERFACE MODULE * 19060000 - 2103 * * 19070000 - 2104 * FUNCTION: TO INTERFACE BETWEEN USERPROG AND DEVICE HANDLER * 19080000 - 2105 * DATABASES: NONE * 19090000 - 2106 * ROUTINES USED: XA, XP, XV, XR, XS * 19100000 - 2107 * PROCEDURE: ALLOCATE AUTOMATIC STORAGE; START TO READ MESSAGE * 19110000 - 2108 * FROM USER; SEND MESSAGE TO DEVICE HANDLER; * 19120000 - 2109 * CONTINUE LOOPING, SENDING MESSAGES FROM USER TO * 19130000 - 2110 * DEVICE HANDLER AND BACK. * 19140000 - 2111 * ERROR CHECKS: NONE * 19150000 - 2112 * INTERRUPTS: ON * 19160000 - 2113 * USER ACCESS: YES * 19170000 - 2114 * * 19180000 - 2115 *********************************************************************** 19190000 -0 01674 2117 DIM EQU * . THE DEVICE INTERFACE MODULE 19210000 - 001674 0510 2118 BALR 1,0 19220000 - R:1 01676 2119 USING *,1 . ESTABLISH ADDRESSING 19230000 - 001676 4120 1042 016B8 2120 LA 2,DIMSEM . LOCK UNTIL GET STORAGE 19240000 - 00167A 0AD7 2121 SVC C'P' 19250000 - 00167C 4120 104A 016C0 2122 LA 2,DIMAAS . READY TO ALLOCATE STORAGE 19260000 - R:2 00000 2123 USING XAX,2 19270000 - 001680 0AC5 2124 SVC C'E' . DO IT 19280000 - 001682 58C0 2004 00004 2125 L 12,XAXADDR . GET THE ADDRESS 19290000 - 2126 DROP 2 19300000 - 001686 4120 1042 016B8 2127 LA 2,DIMSEM . UNLOCK OURSELVES 19310000 - 00168A 0AE5 2128 SVC C'V' 19320000 - R:C 00000 2129 USING DIMAS,12 . USE 12 FOR AUTO STORAGE 19330000 - 00168C D207 C090 B000 00090 00000 2130 MVC DIMLMS,0(11) . MOVE NAME OF RECIEVER 19340000 - 001692 4180 0084 00084 2131 LA 8,132 . REG 8 = SIZE OF MESSAGE 19350000 - 001696 5080 C008 00008 2132 DIMLOOP ST 8,DIMMSG+8 . GET READY TO READ A MESSAGE 19360000 - 00169A 4120 C000 00000 2133 LA 2,DIMMSG 19370000 - 00169E 0AD9 2134 SVC C'R' . READ 19380000 - 0016A0 D207 C098 C000 00098 00000 2135 MVC DIMTEMP,DIMMSG . SAVE SENDER NAME 19390000 - 0016A6 D207 C000 C090 00000 00090 2136 MVC DIMMSG,DIMLMS . SEND IT BACK TO THE LAST GUY 19400000 - 0016AC 0AE2 2137 SVC C'S' . SEND IT 19410000 - 0016AE D207 C090 C098 00090 00098 2138 MVC DIMLMS,DIMTEMP . AND REMEMBER WHO TO SEND TO NEXT 19420000 - 0016B4 47F0 1020 01696 2139 B DIMLOOP . RELOOP 19430000 - 0016B8 0000000100000000 2140 DIMSEM DC F'1,0' . SEMAPHORE FOR ENTRY 19440000 - 0016C0 000000A0 2141 DIMAAS DC A(DIMLEN) . ALLOCATE SEQ FOR AUTO STORAGE 19450000 - 0016C4 00000000 2142 DC A(0) 19460000 - 0016C8 00000008 2143 DC F'8' 19470000 - 2144 DROP 12 19480000 -1 Sample Operating System Version 2.00 Page 53 - Active Usings: PROGRAM,R0 PROGRAM+X'1676',R1 PCB,R5 SA,R8 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -00016D0 2146 LTORG 19500000 - 0016D0 0000000000FFE8C0 2147 =A(0,CORESIZE-(VERYEND-PROGRAM)) - 0016D8 5CC9D54040404040 2148 =CL8'*IN' - 0016E0 E4E2C5D9D7D9D6C7 2149 =CL8'USERPROG' - 0016E8 4040404040404040 2150 =CL8' ' - 0016F0 5CD6E4E340404040 2151 =CL8'*OUT' - 0016F8 00000EA4 2152 =A(UCBTABLE) - 0016FC 00000FC4 2153 =A(UCBTBEND) - 001700 00000008 2154 =F'8' - 001704 D9C5C1C4 2155 =C'READ' - 001708 D7D9C9D5 2156 =C'PRIN' - 00170C 0000000C 2157 =F'12' - 001710 00000001 2158 =F'1' - 001714 00000000 2159 =A(0) - 001718 00000084 2160 =F'132' - 00171C D6E4E340 2161 =C'OUT ' - 001720 00001674 2162 =A(DIM) - 001724 00000D74 2163 =A(EXCPHNDL) - 001728 D6D2 2164 =C'OK' - 00172A 5BD1D6C26B 2165 =C'$JOB,' - 00172F C9D540 2166 =C'IN ' - 001732 C5E7C3D740 2167 =C'EXCP ' - 001737 E3E7E3 2168 =C'TXT' - 00173A D9D3C4 2169 =C'RLD' - 00173D C5D5C4 2170 =C'END' - 001740 2171 VERYEND DS 6D . beginning of free storage 19510004 - 001770 2172 LOADER DS 0D IPL loader goes here 19521002 -1 Sample Operating System Version 2.00 Page 54 - Active Usings: PROGRAM,R0 PROGRAM+X'1676',R1 PCB,R5 SA,R8 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 00000 2174 R0 EQU 0 19521502 - 00001 2175 R1 EQU 1 19522002 - 00002 2176 R2 EQU 2 19522502 - 00003 2177 R3 EQU 3 19523002 - 00004 2178 R4 EQU 4 19523502 - 00005 2179 R5 EQU 5 19524002 - 00006 2180 R6 EQU 6 19524502 - 00007 2181 R7 EQU 7 19525002 - 00008 2182 R8 EQU 8 19525502 - 00009 2183 R9 EQU 9 19526002 - 0000A 2184 R10 EQU 10 19526502 - 0000B 2185 R11 EQU 11 19527002 - 0000C 2186 R12 EQU 12 19527502 - 0000D 2187 R13 EQU 13 19528002 - 0000E 2188 R14 EQU 14 19528502 - 0000F 2189 R15 EQU 15 19529002 - 2190 *********************************************************************** 19530000 - 2191 * * 19540000 - 2192 * DATABASE DEFINITIONS * 19550000 - 2193 * * 19560000 - 2194 *********************************************************************** 19570000 -0000000 00000 00148 2196 PCB DSECT . PROCESS CONTROL BLOCK DEFINITION 19590000 - 000000 2197 PCBNAME DS CL8 . NAME 19600000 - 000008 2198 PCBNPTG DS F . NEXT POINTER THIS GROUP 19610000 - 00000C 2199 PCBLPTG DS F . LAST POINTER THIS GROUP 19620000 - 000010 2200 PCBNPALL DS F . NEXT POINTER ALL 19630000 - 000014 2201 PCBLPALL DS F . LAST POINTER ALL 19640000 - 000018 2202 PCBSTOPT DS C . STOPPED 19650000 - 000019 2203 PCBBLOKT DS C . BLOCKED 19660000 - 00001A 2204 PCBINSMC DS C . IN SMC 19670000 - 00001B 2205 PCBSW DS C . STOP WAITING 19680000 - 00001C 2206 PCBMSC DS CL8 . MESSAGE SEMAPHORE COMMON 19690000 - 000024 2207 PCBMSR DS CL8 . MESSAGE SEMAPHORE RECEIVER 19700000 - 00002C 2208 PCBFM DS F . FIRST MESSAGE 19710000 - 000030 2209 PCBNSW DS F . NEXT SEMAPHORE WAITER 19720000 - 000034 2210 PCBSRS DS CL8 . STOPPER SEMAPHORE 19730000 - 00003C 2211 PCBSES DS CL8 . STOPPEE SEMAPHORE 19740000 - 000044 2212 PCBASIZE DS F . AUTOMATIC STORAGE SIZE 19750000 - 000048 2213 PCBAADDR DS A . AUTOMATIC STORAGE ADDRESS 19760000 - 00004C 2214 PCBISA DS CL84 . INTERRUPT SAVE AREA 19770000 - 0000A0 2215 PCBFSA DS CL84 . FAULT SAVE AREA 19780000 - 0000F4 2216 PCBMSA DS CL84 . MEMORY SAVE AREA 19790000 - 000148 2217 DS 0D . (ALIGN) 19800000 - 00148 2218 LENPCB EQU *-PCB . (LENGTH) 19810000 -0000000 00000 00054 2220 SA DSECT . SAVE AREA DEFINITION 19830000 - 000000 2221 SAPSW DS D . PROGRAM STATUS WORD 19840000 - 000008 2222 SAREGS DS CL64 . REGISTERS 19850000 - 000048 2223 SATEMP DS CL12 . TEMPORARIES 19860000 -0000000 00000 00040 2225 REGS DSECT . REGISTER DEFINITION 19880000 - 000000 2226 REG0 DS F . REGISTER 0 19890000 - 000004 2227 REG1 DS F . REGISTER 1 19900000 - 000008 2228 REG2 DS F . REGISTER 2 19910000 -1 Sample Operating System Version 2.00 Page 55 - Active Usings: PROGRAM,R0 PROGRAM+X'1676',R1 PCB,R5 SA,R8 -0D-Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -000000C 2229 REG3 DS F . REGISTER 3 19920000 - 000010 2230 REG4 DS F . REGISTER 4 19930000 - 000014 2231 REG5 DS F . REGISTER 5 19940000 - 000018 2232 REG6 DS F . REGISTER 6 19950000 - 00001C 2233 REG7 DS F . REGISTER 7 19960000 - 000020 2234 REG8 DS F . REGISTER 8 19970000 - 000024 2235 REG9 DS F . REGISTER 9 19980000 - 000028 2236 REG10 DS F . REGISTER 10 19990000 - 00002C 2237 REG11 DS F . REGISTER 11 20000000 - 000030 2238 REG12 DS F . REGISTER 12 20010000 - 000034 2239 REG13 DS F . REGISTER 13 20020000 - 000038 2240 REG14 DS F . REGISTER 14 20030000 - 00003C 2241 REG15 DS F . REGISTER 15 20040000 -0000000 00000 00008 2243 FSB DSECT . FREE STORAGE BLOCK DEFINITIONS 20060000 - 000000 2244 FSBNEXT DS A . NEXT 20070000 - 000004 2245 FSBSIZE DS F . SIZE 20080000 -0000000 00000 00008 2247 SM DSECT . SEMAPHORE DEFINITION 20100000 - 000000 2248 SMVAL DS F . VALUE 20110000 - 000004 2249 SMPTR DS F . PTR 20120000 -0000000 00000 0000C 2251 MSG DSECT . MESSAGE DEFINITION 20140000 - 000000 2252 MSGSENDR DS A . POINTER TO SENDER'S PCB 20150000 - 000004 2253 MSGNEXT DS A . NEXT 20160000 - 000008 2254 MSGSIZE DS F . SIZE 20170000 - 00000C 2255 MSGTEXT DS 0C . TEXT 20180000 - 0000C 2256 LENMSG EQU *-MSG . (LENGTH) 20190000 -0000000 00000 0000C 2258 XAX DSECT . XA ARGUMENT LIST 20210000 - 000000 2259 XAXSIZE DS F . SIZE 20220000 - 000004 2260 XAXADDR DS F . ADDRESS 20230000 - 000008 2261 XAXALGN DS F . ALIGNMENT 20240000 -0000000 00000 00008 2263 XFX DSECT . XF ARGUMENT LIST 20260000 - 000000 2264 XFXSIZE DS F . SIZE 20270000 - 000004 2265 XFXADDR DS F . ADDRESS 20280000 -0000000 00000 00008 2267 XBX DSECT . XB ARGUMENT LIST 20300000 - 000000 2268 XBXSIZE DS F . SIZE 20310000 - 000004 2269 XBXADDR DS F . ADDRESS 20320000 -0000000 00000 00008 2271 XCX DSECT . XC ARGUMENT LIST 20340000 - 000000 2272 XCXNAME DS CL8 . NAME 20350000 -0000000 00000 00008 2274 XDX DSECT . AD ARGUMENT LIST 20370000 - 000000 2275 XDXNAME DS CL8 . NAME 20380000 -0000000 00000 0000C 2277 XNX DSECT . XN ARGUMENT LIST 20400000 - 000000 2278 XNXNAME DS CL8 . NAME 20410000 - 000008 2279 XNXADDR DS A . ADDRESS 20420000 -0000000 00000 0000C 2281 XRX DSECT . XR ARGUMENT LIST 20440000 - 000000 2282 XRXNAME DS CL8 . NAME 20450000 - 000008 2283 XRXSIZE DS F . SIZE 20460000 -1 Sample Operating System Version 2.00 Page 56 - Active Usings: PROGRAM,R0 PROGRAM+X'1676',R1 PCB,R5 SA,R8 -0D-Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -000000C 2284 XRXTEXT DS 0C . TEXT 20470000 -0000000 00000 0000C 2286 XSX DSECT . XS ARGUMENT LIST 20490000 - 000000 2287 XSXNAME DS CL8 . NAME 20500000 - 000008 2288 XSXSIZE DS F . SIZE 20510000 - 00000C 2289 XSXTEXT DS 0C . TEXT 20520000 -0000000 00000 0000C 2291 XYX DSECT . XY ARGUMENT LIST 20540000 - 000000 2292 XYXNAME DS CL8 . NAME 20550000 - 000008 2293 XYXADDR DS A . ADDR 20560000 -0000000 00000 00008 2295 XZX DSECT . XZ ARGUMENT LIST 20580000 - 000000 2296 XZXNAME DS CL8 . NAME 20590000 -0000000 00000 00080 2298 RDRHAS DSECT . READER HANDLER AUTOMATIC STORAGE 20610000 - 000000 2299 RDRHCCB DS 2F . CCB 20620000 - 000008 2300 RDRHMSG DS CL8 . MESSAGE BLOCK FOR REQUESTS 20630000 - 000010 2301 DS F'8' 20640000 - 000014 2302 DS CL8 20650000 - 00001C 2303 RDRHTEMP DS CL80 . AREA FOR $JOB IN DATA STREAM 20660000 - 00006C 2304 RDRHM DS CL8 . MESSAGE BLOCK FOR REPLY 20670000 - 000074 2305 DS F'2' 20680000 - 000078 2306 DS CL2 20690000 - 00007A 2307 JOBBIT DS 1C 20700000 - 000080 2308 DS 0D 20710000 - 00080 2309 LENRDRHA EQU *-RDRHAS . (LENGTH) 20720000 -0000000 00000 00030 2311 PRTHAS DSECT . PRINTER HANDLER AUTOMATIC STORAGE 20740000 - 000000 2312 PRTHCCB DS 2F . CCB 20750000 - 000008 2313 PRTHMSG DS CL8 . MESSAGE BLOCK FOR REQUESTS 20760000 - 000010 2314 DS F'2' 20770000 - 000014 2315 DS CL8 20780000 - 00001C 2316 PRTHM DS CL8 . MESSAGE BLOCK FOR REPLY 20790000 - 000024 2317 DS F'2' 20800000 - 000028 2318 DS CL2 20810000 - 000030 2319 DS 0D 20820000 - 00030 2320 LENPRTHA EQU *-PRTHAS . (LENGTH) 20830000 -0000000 00000 00030 2322 EXCPHAS DSECT . EXCP HANDLER AUTOMATIC STORAGE 20850000 - 000000 2323 EXCPHMSG DS CL8 . MESSAGE BLOCK FOR REQUESTS 20860000 - 000008 2324 DS F'12' 20870000 - 00000C 2325 DS CL12 20880000 - 000018 2326 EXCPHM DS CL8 . MESSAGE BLOCK FOR REPLY 20890000 - 000020 2327 DS F'12' 20900000 - 000024 2328 DS CL12 20910000 - 000030 2329 DS 0D 20920000 - 00030 2330 LENEXCPA EQU *-EXCPHAS . (LENGTH) 20930000 -0000000 00000 00020 2332 UCB DSECT . UNIT CONTROL BLOCK DEFINITION 20950000 - 000000 2333 UCBADDR DS F . ADDRESS 20960000 - 000004 2334 UCBUS DS FL8 . USER SEMAPHORE 20970000 - 00000C 2335 UCBWS DS FL8 . WAITER SEMAPHORE 20980000 - 000014 2336 UCBCSW DS FL8 . CHANNEL STATUS WORD 20990000 - 00001C 2337 UCBFPR DS CL1 . FAST PROCESSING REQUIRED 21000000 - 000020 2338 DS 0F 21010000 -1 Sample Operating System Version 2.00 Page 57 - Active Usings: PROGRAM,R0 PROGRAM+X'1676',R1 PCB,R5 SA,R8 -0D-Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 00020 2339 UCBLENG EQU *-UCB 21020000 -0000000 00000 001E0 2341 JSPAS DSECT . JSP AUTOMATIC STORAGE 21040000 - 000000 2342 LINE DS CL132 . PRINTED LINE 21050000 - 000084 2343 DS 0F 21060000 - 000084 2344 CARD DS CL80 . CARD READ 21070000 - 0000D4 2345 DS 0F 21080000 - 0000D4 2346 RREPLY DS CL8 . MESSAGE BLOCK FOR REPLIES 21090000 - 0000DC 2347 RREPLY1 DS F 21100000 - 0000E0 2348 REPLY DS CL132 21110000 - 000164 2349 TREAD DS 0F . MESSAGE BLOCK FOR READING 21120000 - 000164 2350 DS CL8'*IN' 21130000 - 00016C 2351 DS F'8' 21140000 - 000170 2352 DS CL4'READ' 21150000 - 000174 2353 ACARD DS A(0) 21160000 - 000178 2354 WRITE DS CL8'*OUT' . MESSAGE BLOCK TO PRINT A LINE 21170000 - 000180 2355 DS F'8' 21180000 - 000184 2356 DS CL4'PRIN' 21190000 - 000188 2357 DS A(LINE) 21200000 - 00018C 2358 KEY DS F 21210000 - 000190 2359 USERL DS CL8'USERPROG' . LIST FOR MANIPULATING USERPROG 21220000 - 000198 2360 DS F 21230000 - 00019C 2361 SEQ DS CL8' ' . COMMON ARG LIST FOR I/O PROCESS 21240000 - 0001A4 2362 UNITRTN DS A 21250000 - 0001A8 2363 CORE DS F . MEMORY ALLOCATED AND FREE 21260000 - 0001AC 2364 DS F . SEQUENCE 21270000 - 0001B0 2365 DS F'4096' align to page boundary 21280002 - 0001B4 2366 RLDTEMP DS F 21290000 - 0001B8 2367 TALK DS CL8'USERPROG' . MESSAGE BLOCK FOR MESSAGE FROM 21300000 - 0001C0 2368 DS F'12' . USERPROG 21310000 - 0001C4 2369 DS CL12 21320000 - 0001D0 2370 ANYBACK DS CL8 . MESSAGE BLOCK FOR IGNORING MESS 21330000 - 0001D8 2371 DS F'1' 21340000 - 0001DC 2372 DS CL1 21350000 - 0001DD 2373 LOADED DS C . IS CORE ALLOCATED 21360000 - 0001E0 2374 DS 0D 21370000 - 001E0 2375 LENJSPAS EQU *-JSPAS . (LENGTH) 21380000 -0000000 00000 000A0 2377 DIMAS DSECT . DEVICE INTERFACE MODULE STORAGE 21400000 - 000000 2378 DIMMSG DS CL8 . MESSAGE BLOCK 21410000 - 000008 2379 DS F'132' 21420000 - 00000C 2380 DS CL132 21430000 - 000090 2381 DIMLMS DS CL8 . LAST MESSAGE SENDER 21440000 - 000098 2382 DIMTEMP DS CL8 . TEMPORARY 21450000 - 0000A0 2383 DS 0D 21460000 - 000A0 2384 DIMLEN EQU *-DIMAS . (LENGTH) 21470000 - 2385 END 21480000 -1 Relocation Dictionary Page 58 -- Pos.Id Rel.Id Address Type Action HLASM R6.0 2016/08/29 08.42 -0 00000001 00000001 00000005 A 3 + - 00000001 00000001 0000005D A 3 + - 00000001 00000001 00000065 A 3 + - 00000001 00000001 0000006D A 3 + - 00000001 00000001 00000180 A 4 + - 00000001 00000001 0000042D A 3 + - 00000001 00000001 00000435 A 3 + - 00000001 00000001 0000043D A 3 + - 00000001 00000001 00000445 A 3 + - 00000001 00000001 0000044D A 3 + - 00000001 00000001 00000455 A 3 + - 00000001 00000001 0000045D A 3 + - 00000001 00000001 00000465 A 3 + - 00000001 00000001 0000046D A 3 + - 00000001 00000001 00000475 A 3 + - 00000001 00000001 0000047D A 3 + - 00000001 00000001 00000485 A 3 + - 00000001 00000001 0000048D A 3 + - 00000001 00000001 00000495 A 3 + - 00000001 00000001 0000049D A 3 + - 00000001 00000001 000004A5 A 3 + - 00000001 00000001 000004AD A 3 + - 00000001 00000001 000004B5 A 3 + - 00000001 00000001 000004BD A 3 + - 00000001 00000001 000004C5 A 3 + - 00000001 00000001 000004C8 A 4 + - 00000001 00000001 000004DD A 3 + - 00000001 00000001 0000059D A 3 + - 00000001 00000001 00000E5C A 4 + - 00000001 00000001 00000E90 A 4 + - 00000001 00000001 000010CC A 4 + - 00000001 00000001 000010D0 A 4 + - 00000001 00000001 000010D4 A 4 + - 00000001 00000001 000010D8 A 4 + - 00000001 00000001 000010EC A 4 + - 00000001 00000001 000010F0 A 4 + - 00000001 00000001 000010F4 A 4 + - 00000001 00000001 000010F8 A 4 + - 00000001 00000001 000010FC A 4 + - 00000001 00000001 00001100 A 4 + - 00000001 00000001 00001104 A 4 + - 00000001 00000001 00001108 A 4 + - 00000001 00000001 00001118 A 4 + - 00000001 00000001 0000111C A 4 + - 00000001 00000001 00001120 A 4 + - 00000001 00000001 00001124 A 4 + - 00000001 00000001 000012B9 A 3 + - 00000001 00000001 000012C1 A 3 + - 00000001 00000001 000012C5 A 3 + - 00000001 00000001 000012C9 A 3 + - 00000001 00000001 00001638 A 4 + - 00000001 00000001 00001644 A 4 + - 00000001 00000001 000016F8 A 4 + - 00000001 00000001 000016FC A 4 + - 00000001 00000001 00001720 A 4 + -1 Relocation Dictionary Page 59 -- Pos.Id Rel.Id Address Type Action HLASM R6.0 2016/08/29 08.42 -0 00000001 00000001 00001724 A 4 + - 00000001 00000002 0000007D A 3 + - 00000003 00000001 00001815 A 3 + - 00000003 00000001 00001819 A 3 + - 00000003 00000001 00001821 A 3 + -1 Ordinary Symbol and Literal Cross Reference Page 60 --Symbol Length Value Id R Type Asm Program Defn References HLASM R6.0 2016/08/29 08.42 -0ACARD 4 00000174 FFFFFFEB A A 2353 1859M - ANYBACK 8 000001D0 FFFFFFEB C C 2370 1868M 2034 2038 - ASEXCP 6 00001452 00000001 I 1946 1933B - ASGNUNIT 4 000013DA 00000001 I 1917 1943B 1949B - ASIN 4 0000143A 00000001 I 1940 1929B - ASOUT 4 0000144A 00000001 I 1944 1931B - CARD 80 00000084 FFFFFFEB C C 2344 1858 1888 1897 1904 1971 1973 1975 1979 1981 1985 - 1987 1988 - CARDLDR 1 00001770 00000002 J 43 62 66U - CAW 4 00000048 00000001 F F 142 74M 1369M 1481M 1561M - CAWSEM 4 00000194 00000001 F F 158 1367 1479 1559 - CCBCON1 4 00000C30 00000001 X X 1412 1361 1471 - CCWCHAIN 8 00001810 00000002 D D 123 73 - CMPEXCP 6 00001434 00000001 I 1938 1932X - CMPIN 6 00001428 00000001 I 1936 1928X - CMPOUT 6 0000142E 00000001 I 1937 1930X - CONTINUE 4 000017FC 00000002 F F 119 96M - CORE 4 000001A8 FFFFFFEB F F 2363 1865M 1916M 1951 1954 2064 - COREOK 4 000013D2 00000001 I 1915 1913B - COREPACK 6 00001648 00000001 I 2091 1908X - COREPCKD 8 00001650 00000001 D D 2092 1909 2091M - COREPKLN 4 00001658 00000001 X X 2093 1907 - CORESIZ 4 00001264 00000001 A A 1817 1747 - CORESIZE 1 01000000 00000001 A U 129 1817 2147 - CSW 8 00000040 00000001 D D 141 106 1703 1704 1707 - DIM 1 00001674 00000001 U 2117 2162 - DIMAAS 4 000016C0 00000001 A A 2141 2122 - DIMAS 1 00000000 FFFFFFEA J 2377 2129U 2384 - DIMLEN 1 000000A0 FFFFFFEA A U 2384 2141 - DIMLMS 8 00000090 FFFFFFEA C C 2381 2130M 2136 2138M - DIMLOOP 4 00001696 00000001 I 2132 2139B - DIMMSG 8 00000000 FFFFFFEA C C 2378 2132M 2133 2135 2136M - DIMSEM 4 000016B8 00000001 F F 2140 2120 2127 - DIMTEMP 8 00000098 FFFFFFEA C C 2382 2135M 2138 - EIGHT 4 00001808 00000002 F F 122 89 - ENBLECH0 2 000017EE 00000002 C C 115 72 - ENDADATA 6 00000BFE 00000001 I 1399 1390B - ENDCARD 4 0000153E 00000001 I 2013 1976B - EXCPCOMP 4 00000DB4 00000001 I 1547 1551B - EXCPDONE 4 00000E30 00000001 I 1581 1576B - EXCPFIND 2 00000DCA 00000001 I 1553 1548B - EXCPHAAS 4 00000E44 00000001 A A 1586 1527 - EXCPHAS 1 00000000 FFFFFFED J 2322 1536U 2330 - EXCPHM 8 00000018 FFFFFFED C C 2326 1566M 1567M 1568M 1569 - EXCPHMSG 8 00000000 FFFFFFED C C 2323 1537 1568 1571 - EXCPHNDL 1 00000D74 00000001 U 1521 2163 - EXCPHSEM 4 00000E3C 00000001 F F 1585 1525 1532 - EXCPLOOP 4 00000D92 00000001 I 1537 1542B 1583B - EXCPWAIT 4 00000DF0 00000001 I 1564 1578B - EXINTRPT 4 000012BC 00000001 I 1827 1834 - EXPLOOP 6 0000159E 00000001 I 2044 2052B - EXPNXT 2 000015B4 00000001 I 2050 2047B - EXPUNGE 4 00001596 00000001 I 2041 1921B 1934B - EXTHANDL 1 0000027A 00000001 U 175 146 1832 - EXTHRET 4 000002A8 00000001 I 191 180B 184B -1 Ordinary Symbol and Literal Cross Reference Page 61 --Symbol Length Value Id R Type Asm Program Defn References HLASM R6.0 2016/08/29 08.42 -0EXTNEW 1 00000058 00000001 B B 146 1741M 1781M - EXTOLD 8 00000018 00000001 D D 136 179 187 192 1827 - FETCHPRT 4 00001670 00000001 F F 2098 1957 - FSB 1 00000000 FFFFFFFC J 2243 576U 662U 731U 740U - FSBNEXT 4 00000000 FFFFFFFC A A 2244 589 590 597 665 679 680 734 735 741M - FSBPTR 4 00000180 00000001 A A 155 572 573 660 661 727 728 - FSBSEM 4 00000184 00000001 F F 156 570 616 658 693 - FSBSIZE 4 00000004 FFFFFFFC F F 2245 585 598 669 672 677 732 742M - GWINC 4 00000586 00000001 I 458 455B - GWLOOP 4 00000576 00000001 I 454 460B - GWRUN 6 000005A0 00000001 I 465 457B - IDLE 1 00000598 00000001 B B 463 461 - INSEQ 8 00001630 00000001 C C 2087 1873 - IOBACK 4 00001036 00000001 I 1724 1701B - IOCOMP 6 00000FD2 00000001 I 1696 1700B - IODEVFND 6 00000FEC 00000001 I 1703 1697B - IOHANDL 1 00000FC4 00000001 U 1690 1830 - IOHSAVE 4 000001DC 00000001 F F 161 1691M 1718 1724 - IOINTRPT 1 000017DA 00000002 U 105 70 150 - IOINTRTN 4 000017EA 00000002 I 110 107B - IONEW 1 00000078 00000001 B B 150 71M 448 1740M - IONOFPR 2 00001034 00000001 I 1723 1710B - IOOLD 8 00000038 00000001 D D 140 108M 109M 110 1694M 1696 1717 1725 - IOWAIT 4 0000102C 00000001 I 1720 1714B - IPLAPCBS 4 00001258 00000001 A A 1814 1755 - IPLCL 4 00001066 00000001 I 1748 1752B - IPLEXNEW 3 000012C9 00000001 R A 1834 1741 - IPLLOOP 4 0000107C 00000001 I 1755 1780B - IPLPCB 8 00001110 00000001 C C 1804 1742 1805 - IPLRTN 1 0000103E 00000001 U 1737 133 - IPLTH 2 00001076 00000001 I 1753 1749B - JOB 4 00001384 00000001 I 1894 1889B - JOBBIT 1 0000007A FFFFFFEF C C 2307 1323M 1337 1342M 1403M - JSP 1 000012CC 00000001 U 1842 1825 - JSPAAS 4 00001668 00000001 A A 2096 1847 - JSPAS 1 00000000 FFFFFFEB J 2341 1852U 2375 - JSPNEVER 4 00001618 00000001 F F 2083 1891 - JSPSUSEM 4 00001660 00000001 F F 2095 1845 1853 - KEY 4 0000018C FFFFFFEB F F 2358 1870M 1947 1955 2020 - KEYTAB 1 000010DC 00000001 U 1792 1777 - LENEXCPA 1 00000030 FFFFFFED A U 2330 1586 - LENJSPAS 1 000001E0 FFFFFFEB A U 2375 2096 - LENMSG 1 0000000C FFFFFFFA A U 2256 1073 1127 - LENPCB 1 00000148 FFFFFFFF A U 2218 1595 1814 - LENPRTHA 1 00000030 FFFFFFEE A U 2320 1511 - LENRDRHA 1 00000080 FFFFFFEF A U 2309 1415 - LINE 132 00000000 FFFFFFEB C C 2342 1863 1895M 1896M 1896 1897M 2029M 2030M 2030 2031M 2357 - LOAD 4 00001462 00000001 I 1951 1919B - LOADADDR 4 00001800 00000002 F F 120 76 - LOADCL 4 000015CE 00000001 I 2058 2063B - LOADD 4 000015E0 00000001 I 2064 2060B - LOADED 1 000001DD FFFFFFEB C C 2373 1894M 1953M 2053 - LOADER 8 00001770 00000001 D D 2172 49 50 52 - LOADLOOP 4 00001492 00000001 I 1966 1962B 1977B 1984B 2004B - LOADSK 4 00001480 00000001 I 1960 1965B -1 Ordinary Symbol and Literal Cross Reference Page 62 --Symbol Length Value Id R Type Asm Program Defn References HLASM R6.0 2016/08/29 08.42 -0LOOP 4 00001354 00000001 I 1881 1890B 2054B 2066B - MEMORY 4 0000018C 00000001 F F 157 593 688 - MSG 1 00000000 FFFFFFFA J 2251 839U 1050U 1139U 1147U 2256 - MSGNEXT 4 00000004 FFFFFFFA A A 2253 840 1051 1142 1143 1148M - MSGSENDR 4 00000000 FFFFFFFA A A 2252 1068 1149M - MSGSIZE 4 00000008 FFFFFFFA F F 2254 841 1059 1061 1072 1151M - MSGTEXT 1 0000000C FFFFFFFA C C 2255 1084 1162M - NEXTCARD 2 0000179C 00000002 I 80 88B - NEXTTRY 4 00000274 00000001 A A 166 424M 451 465M 1744M - NEXTTRYM 1 00000278 00000001 C C 167 422 425M 466M 1720M - NOTALGND 6 00001520 00000001 I 2005 1992B - NUMCARDS 4 00001804 00000002 F F 121 75 - OUTSEQ 8 0000163C 00000001 C C 2089 1877 - PAGESIZE 4 0000165C 00000001 F F 2094 1748 1865 1960 2058 - PCB 1 00000000 FFFFFFFF J 2196 182U 222U 317 318 319 373U 380U 419U 453U 473U - 782U 825U 830U 834U 862U 917U 920U 924U 928U 931U - 936U 956U 960U 963U 966U 970U 973U 977U 1003U 1013U - 1070U 1086U 1122U 1164U 1198U 1209U 1248U 1260U 1712U 1761U - 1765U 1769U 2016U 2043U 2218 - PCBAADDR 4 00000048 FFFFFFFF A A 2213 621M 850 - PCBASIZE 4 00000044 FFFFFFFF F F 2212 620M 852 - PCBBLOKT 1 00000019 FFFFFFFF C C 2203 183 383M 421M 454 785 785M 1713 2017M 2024M - PCBFM 4 0000002C FFFFFFFF F F 2208 836 1049 1051M 1137 1138 - PCBFSA 84 000000A0 FFFFFFFF C C 2215 318 - PCBINSMC 1 0000001A FFFFFFFF C C 2204 492 494M 517 519M 1249 - PCBISA 84 0000004C FFFFFFFF C C 2214 185 317 384M 468 785 1199 1715 1770 2021 2022M - 2023M - PCBLPALL 4 00000014 FFFFFFFF F F 2201 918M 921M 957 964M - PCBLPTG 4 0000000C FFFFFFFF F F 2199 929M 932M 967 974M 1763M 1766M - PCBMSA 84 000000F4 FFFFFFFF C C 2216 319 - PCBMSC 8 0000001C FFFFFFFF C C 2206 1047 1135 - PCBMSR 8 00000024 FFFFFFFF C C 2207 1044 1157 - PCBNAME 8 00000000 FFFFFFFF C C 2197 783M 1005 1071 1235 2044 - PCBNPALL 4 00000010 FFFFFFFF F F 2200 458 465 914 915M 922M 958 961M - PCBNPTG 4 00000008 FFFFFFFF F F 2198 925 926M 933M 968 971M 1004 1762M 1767M 2045 - PCBNSW 4 00000030 FFFFFFFF F F 2209 376 377 382M 420 - PCBSES 8 0000003C FFFFFFFF C C 2211 527 - PCBSRS 8 00000034 FFFFFFFF C C 2210 525 1255 - PCBSTOPT 1 00000018 FFFFFFFF C C 2202 456 784M 826 1204M 1251M - PCBSW 1 0000001B FFFFFFFF C C 2205 522 524M 1254M - PGMHANDL 1 000002B0 00000001 U 194 148 - PROGRAM 1 00000000 00000001 J 42 68U 127 2147 - PROTCON1 4 00000C34 00000001 X X 1413 1348 1355 1458 1465 - PROTCON2 4 00000C38 00000001 X X 1414 1351 1358 1461 1468 - PRTHAAS 4 00000D68 00000001 A A 1511 1431 - PRTHANDL 1 00000C48 00000001 U 1425 2090 - PRTHAS 1 00000000 FFFFFFEE J 2311 1440U 2320 - PRTHCCB 4 00000000 FFFFFFEE F F 2312 1441 1472M 1473M 1474M 1476M - PRTHCOMM 4 00000CEC 00000001 I 1479 1475B 1507B - PRTHLOOP 4 00000C6A 00000001 I 1442 1451B 1503B - PRTHM 8 0000001C FFFFFFEE C C 2316 1494M 1496M 1497M 1498M 1501 - PRTHMSG 8 00000008 FFFFFFEE C C 2313 1442 1455 1498 - PRTHNO 6 00000D26 00000001 I 1494 1463B 1470B - PRTHOK 6 00000D30 00000001 I 1496 1493B - PRTHPOK 4 00000CCA 00000001 I 1471 1456B -1 Ordinary Symbol and Literal Cross Reference Page 63 --Symbol Length Value Id R Type Asm Program Defn References HLASM R6.0 2016/08/29 08.42 -0PRTHPRIN 4 00000C92 00000001 I 1453 1448B - PRTHSEM 4 00000D60 00000001 F F 1510 1429 1436 - PRTHSEND 6 00000D36 00000001 I 1497 1495B - PRTHSTC1 6 00000CE0 00000001 I 1476 1450B - PRTHWAIT 4 00000D10 00000001 I 1488 1491B - PTSTATUS 2 00000D52 00000001 I 1504 1486B - QUANTUM 4 000005BC 00000001 X X 471 469 - RDRHAAS 4 00000C3C 00000001 A A 1415 1313 - RDRHANDL 1 00000AC6 00000001 U 1307 2088 - RDRHAS 1 00000000 FFFFFFEF J 2298 1322U 2309 - RDRHCCB 4 00000000 FFFFFFEF F F 2299 1324 1362M 1363M 1364M - RDRHEXC 4 00000BB8 00000001 I 1383 1379B - RDRHLOOP 4 00000AEC 00000001 I 1325 1330B 1398B - RDRHM 8 0000006C FFFFFFEF C C 2304 1385M 1391M 1392M 1393M 1396 1399M - RDRHMORE 4 00000B2E 00000001 I 1345 1338B - RDRHMSG 8 00000008 FFFFFFEF C C 2300 1325 1335 1345 1387 1393 - RDRHNO 6 00000BC0 00000001 I 1385 1340B 1353B 1360B - RDRHOK 4 00000BCA 00000001 I 1387 1382B - RDRHPOK 4 00000B60 00000001 I 1361 1346B 1381B 1408B - RDRHSEM 4 00000C28 00000001 F F 1411 1311 1318 - RDRHSEND 6 00000BE2 00000001 I 1392 1386B 1404B - RDRHSOK 6 00000BDC 00000001 I 1391 1343B 1388B - RDRHTEMP 80 0000001C FFFFFFEF C C 2303 1341 1400M - RDRHWAIT 4 00000B96 00000001 I 1374 1377B 1384B - RDSTATUS 2 00000C1C 00000001 I 1405 1372B - READ 1 000017F0 00000002 X X 116 81 - REGS 1 00000000 FFFFFFFD J 2225 1773U - REG3 4 0000000C FFFFFFFD F F 2229 1776M - REG4 4 00000010 FFFFFFFD F F 2230 1777M - REPLY 132 000000E0 FFFFFFEB C C 2348 1886 - RETURN 1 000004D8 00000001 B B 328 369 416 426 470 495 529 623 696 743 788 - 859 935 976 1011 1082 1160 1205 1253 - RETURNR 1 000004E0 00000001 U 330 328 - RLDCARD 4 000014E0 00000001 I 1987 1974B - RLDCONT 4 00001500 00000001 I 1996 2011B - RLDFINI 2 00001514 00000001 I 2001 1999B - RLDLOOP 4 000014E8 00000001 I 1989 2003B - RLDTEMP 4 000001B4 FFFFFFEB F F 2366 1869M 2005M 2006 2008M 2009 2010M - RREPLY 8 000000D4 FFFFFFEB C C 2346 1884 1900 1969 - RREPLY1 4 000000DC FFFFFFEB F F 2347 1883M 1968M - RUNNING 4 00000270 00000001 A A 165 181 221 381 467M 1711 1743M 2041 2051 - R11 1 0000000B 00000001 A U 2185 67M 68U 111D - R12 1 0000000C 00000001 A U 2186 63M 65M 66U 111D - R2 1 00000002 00000001 A U 2176 64M 65 69M 71 80M 81M 82 83M 84 95M - 96 - R3 1 00000003 00000001 A U 2177 70M 71 75M 88M - R4 1 00000004 00000001 A U 2178 76M 80 86M 86 - R5 1 00000005 00000001 A U 2179 73M 74 82 84 85 87M 87 89M 90 - SA 1 00000000 FFFFFFFE J 2220 186U 230U 1200U 1201 1203 1208U 1716U 1771U - SAPSW 8 00000000 FFFFFFFE D D 2221 187M 231M 331 1201M 1201 1202M 1717M - SAREGS 64 00000008 FFFFFFFE C C 2222 188M 232M 332 1203M 1203 1718M 1772 - SATEMP 12 00000048 FFFFFFFE C C 2223 599 682 768 817 833 854 1115 1190 1239 - SCAN 2 000015EA 00000001 I 2068 1905B 1917B 1927B - SCANLOOP 4 000015EC 00000001 I 2069 2077B - SEQ 8 0000019C FFFFFFEB C C 2361 1922 1923M 1926 1935M 2042 2044M 2046 -1 Ordinary Symbol and Literal Cross Reference Page 64 --Symbol Length Value Id R Type Asm Program Defn References HLASM R6.0 2016/08/29 08.42 -0SETDIM 6 0000143E 00000001 I 1941 1945B - SHORT 4 00001510 00000001 I 2000 1997B - SKIP 8 00001620 00000001 C C 2084 1861 2036 - SM 1 00000000 FFFFFFFB J 2247 363U 411U 687U - SMPTR 4 00000004 FFFFFFFB F F 2249 370 371 417 420M - SMVAL 4 00000000 FFFFFFFB F F 2248 364 366M 412 414M 690 - SOSEXNEW 3 000012C5 00000001 R A 1832 1781 - SOSIONEW 3 000012C1 00000001 R A 1830 1740 - STOP 4 0000137E 00000001 I 1891 1887B - STREAMS 4 000010C8 00000001 F F 1784 1754 - SVCCONST 4 00000314 00000001 F F 241 215 - SVCHANDL 1 000002B2 00000001 U 211 147 - SVCHPROT 4 00000302 00000001 I 235 220B - SVCHTABL 1 00000328 00000001 X X 243 217 244 246 248 250 252 254 256 258 260 - 262 264 266 268 270 272 274 276 278 280 - 282 284 - SVCOK 4 000002D0 00000001 I 221 237B 239B - SVCOLD 8 00000020 00000001 D D 137 216 228 231 235 331M 333 - SVCRTN 8 00000428 00000001 D D 286 218 238 - SVCSAVE 4 000004C8 00000001 F F 315 227 - SVCXPER 4 000002FA 00000001 I 233 229B - SYSSEM 4 000002DE 00000001 I 226 224B - SYSSEMSA 84 0000021C 00000001 C C 163 316 384 - TALK 8 000001B8 FFFFFFEB C C 2367 1866M 1867M 2026 2031 - TEMPLATE 4 00001280 00000001 X X 1822 785 - TIMER 4 00000050 00000001 F F 144 469M - TOKSTART 2 00001610 00000001 I 2078 2071B 2073B 2075B - TRAPSAVE 4 0000019C 00000001 F F 160 176M 188 191 212M 232 - TREAD 4 00000164 FFFFFFEB F F 2349 1855M 1856M 1857M 1881 1966 - TXTCARD 4 000014C6 00000001 I 1979 1972B - TXTMOV 6 000014DA 00000001 I 1985 1983X - TYPLEN 1 00000054 00000001 A U 1826 1759 - TYPPCB 8 00001268 00000001 C C 1820 1759 1826 - UCB 1 00000000 FFFFFFEC J 2332 1308U 1426U 1522U 1702U 2339 - UCBADDR 4 00000000 FFFFFFEC F F 2333 1370 1484 - UCBCSW 8 00000014 FFFFFFEC G F 2336 1365M 1366M 1376 1378 1380 1383M 1482M 1483M 1490 1492 - 1557M 1558M 1566 1703M 1705 1706M 1707M - UCBFPR 1 0000001C FFFFFFEC C C 2337 1709 - UCBLENG 1 00000020 FFFFFFEC A U 2339 1549 1698 - UCBLP1 4 000010EC 00000001 A A 1798 1787 - UCBLP2 4 000010F4 00000001 A A 1799 1788 - UCBLP3 4 000010FC 00000001 A A 1800 1789 - UCBLP4 4 00001104 00000001 A A 1801 1790 - UCBPRT1 4 00000EC4 00000001 X X 1627 1798 - UCBPRT2 4 00000F04 00000001 X X 1641 1799 - UCBPRT3 4 00000F44 00000001 X X 1655 1800 - UCBPRT4 4 00000F84 00000001 X X 1669 1801 - UCBRDR1 4 00000EA4 00000001 X X 1620 1798 - UCBRDR2 4 00000EE4 00000001 X X 1634 1799 - UCBRDR3 4 00000F24 00000001 X X 1648 1800 - UCBRDR4 4 00000F64 00000001 X X 1662 1801 - UCBTAB 1 000010CC 00000001 U 1786 1774 1777 - UCBTABLE 4 00000EA4 00000001 F F 1618 1546 2152 - UCBTBEND 1 00000FC4 00000001 U 1682 1606 2153 - UCBUS 8 00000004 FFFFFFEC G F 2334 1333 1394 1453 1477 1499 1554 1581 -1 Ordinary Symbol and Literal Cross Reference Page 65 --Symbol Length Value Id R Type Asm Program Defn References HLASM R6.0 2016/08/29 08.42 -0UCBWS 8 0000000C FFFFFFEC G F 2335 1374 1406 1488 1505 1564 1708 - UNAMMOV 6 00001422 00000001 I 1935 1924X - UNITRTN 4 000001A4 FFFFFFEB A A 2362 1941M 1946M - USERL 8 00000190 FFFFFFEB C C 2359 1860M 1902 2013 2015 2018M - VERYEND 8 00001740 00000001 D D 2171 155 1745M 2147 - WAITPSWD 4 000017F8 00000002 X X 118 97 - WRITE 8 00000178 FFFFFFEB C C 2354 1861M 1862M 1864M 1898 2032 - XA 1 00000600 00000001 U 557 299 565U 1593 - XABACK 2 000006B0 00000001 I 622 619B - XACOM 2 0000060E 00000001 I 566 560B - XAFOUND 4 00000662 00000001 I 596 588B - XALOOP 2 0000062A 00000001 I 577 591B - XANF 2 00000686 00000001 I 607 603B - XARETURN 4 0000069C 00000001 I 616 611B - XATOP 4 00000616 00000001 I 570 595B - XAUTO 1 00000608 00000001 U 561 313 - XAWAIT 2 00000656 00000001 I 592 578B - XAX 1 00000000 FFFFFFF9 J 2258 568U 776U 1124U 1314U 1432U 1528U 1756U 1848U 2123U - XAXADDR 4 00000004 FFFFFFF9 F F 2260 596M 780 1133 1316 1434 1530 1758 1850 2125 - XAXALGN 4 00000008 FFFFFFF9 F F 2261 574 778M 1131M - XAXSIZE 4 00000000 FFFFFFF9 F F 2259 569 777M 1130M - XB 1 00000744 00000001 U 722 298 - XBINSERT 4 00000770 00000001 I 738 730B 733B - XBLOOP 4 0000075A 00000001 I 732 737B - XBX 1 00000000 FFFFFFF7 J 2267 600U 683U 724U - XBXADDR 4 00000004 FFFFFFF7 F F 2269 604M 612M 685M 726 - XBXSIZE 4 00000000 FFFFFFF7 F F 2268 605M 613M 684M 725 - XC 1 00000780 00000001 U 764 306 - XCERR 2 000007C4 00000001 I 789 773B - XCOM 1 000005D2 00000001 U 514 297 - XCOMRET 4 000005FC 00000001 I 529 521B 523B - XCX 1 00000000 FFFFFFF6 J 2271 767U - XCXNAME 8 00000000 FFFFFFF6 C C 2272 770 783 - XD 1 000007C6 00000001 U 813 310 - XDCHECK 6 0000081A 00000001 I 850 838B - XDERR 2 00000840 00000001 I 860 824B 827B - XDLOOP 2 000007F4 00000001 I 837 849B - XDTHEN 4 0000082E 00000001 I 855 851B - XDX 1 00000000 FFFFFFF5 J 2274 816U - XDXNAME 8 00000000 FFFFFFF5 C C 2275 819 - XEXC 1 000005C0 00000001 U 489 296 - XF 1 000006B6 00000001 U 649 300 - XFBACKUP 2 00000706 00000001 I 678 670B - XFINC 4 00000708 00000001 I 679 674B - XFLINK 4 00000714 00000001 I 682 664B - XFLOOP 2 000006D4 00000001 I 663 681B - XFTHEN 2 000006F0 00000001 I 671 667B - XFVDO 2 0000073E 00000001 I 697 692B - XFVLOOP 4 0000072E 00000001 I 692 698B - XFX 1 00000000 FFFFFFF8 J 2263 653U 844U 1077U - XFXADDR 4 00000004 FFFFFFF8 F F 2265 655 845M 855M 1078M - XFXSIZE 4 00000000 FFFFFFF8 F F 2264 654 846M 856M 1079M - XH 1 00000842 00000001 U 882 312 - XHLOOP 4 00000848 00000001 I 886 888B - XHMSG1 8 00000854 00000001 C C 890 884 -1 Ordinary Symbol and Literal Cross Reference Page 66 --Symbol Length Value Id R Type Asm Program Defn References HLASM R6.0 2016/08/29 08.42 -0XHMSG2 8 0000086C 00000001 C C 893 886 - XI 1 0000087A 00000001 U 912 301 - XJ 1 000008A6 00000001 U 953 302 - XN 1 000008CA 00000001 U 998 307 - XNX 1 00000000 FFFFFFF4 J 2277 769U 818U 1000U 1116U 1191U 1240U - XNXADDR 4 00000008 FFFFFFF4 A A 2279 772 821 1010M 1119 1194 1243 - XNXFOUND 4 000008E4 00000001 I 1010 1006B - XNXLOOP 4 000008CC 00000001 I 1004 1008B - XNXNAME 8 00000000 FFFFFFF4 C C 2278 770M 819M 1005 1117M 1192M 1241M - XP 1 000004EE 00000001 U 361 294 - XPER 1 0000056A 00000001 U 447 189B 303 385B 463 - XPLOOP 2 0000050A 00000001 I 374 378B - XPTHEN 6 0000051C 00000001 I 381 375B - XPWAIT 4 00000502 00000001 I 370 368B - XQUE 1 00000A8E 00000001 U 1279 311 - XQUELOOP 4 00000A94 00000001 I 1283 1285B - XQUEM1 8 00000AA0 00000001 C C 1287 1281 - XQUEM2 8 00000AB8 00000001 C C 1290 1283 - XR 1 000008EC 00000001 U 1040 304 - XRAFT 4 00000938 00000001 I 1066 1064B - XRFILL 6 0000096C 00000001 I 1083 1057X - XRMOVE 6 00000972 00000001 I 1084 1065X - XRNOB 4 0000091C 00000001 I 1058 1056B - XRTHEN 2 0000092E 00000001 I 1063 1060B - XRX 1 00000000 FFFFFFF3 J 2281 1043U 1326U 1336U 1443U 1538U 1572U - XRXNAME 8 00000000 FFFFFFF3 C C 2282 1071M 1339 - XRXSIZE 4 00000008 FFFFFFF3 F F 2283 1053 1067M 1327M 1444M 1539M 1573M - XRXTEXT 1 0000000C FFFFFFF3 C C 2284 1055M 1083M 1083 1084M 1329 1331 1446 1447 1449 1541 - 1543 1544 1575 1577 - XS 1 00000978 00000001 U 1111 305 - XSADD 4 000009D2 00000001 I 1145 1141B - XSAFT 2 000009F4 00000001 I 1156 1154B - XSERR 2 00000A02 00000001 I 1161 1121B - XSLOOP 2 000009C0 00000001 I 1140 1144B - XSMOVE 6 00000A04 00000001 I 1162 1155X - XSX 1 00000000 FFFFFFF2 J 2286 1114U - XSXNAME 8 00000000 FFFFFFF2 C C 2287 1117 - XSXSIZE 4 00000008 FFFFFFF2 F F 2288 1126 1150 - XSXTEXT 1 0000000C FFFFFFF2 C C 2289 1162 - XV 1 00000534 00000001 U 409 295 - XVRET 4 00000566 00000001 I 426 423B - XVWAKEUP 4 00000548 00000001 I 417 415B - XY 1 00000A0A 00000001 U 1186 308 - XYERR 2 00000A40 00000001 I 1206 1196B - XYX 1 00000000 FFFFFFF1 J 2291 1189U - XYXADDR 4 00000008 FFFFFFF1 A A 2293 1202 - XYXNAME 8 00000000 FFFFFFF1 C C 2292 1192 - XZ 1 00000A42 00000001 U 1231 309 - XZERR 2 00000A8C 00000001 I 1258 1238B 1245B - XZFINE 4 00000A54 00000001 I 1239 1236B - XZINSMC 4 00000A7E 00000001 I 1254 1250B - XZSTOP 4 00000A6C 00000001 I 1249 1257B - XZX 1 00000000 FFFFFFF0 J 2295 1234U - XZXNAME 8 00000000 FFFFFFF0 C C 2296 1237 1241 - =A(DIM) 4 00001720 00000001 A 2162 1941 -1 Ordinary Symbol and Literal Cross Reference Page 67 --Symbol Length Value Id R Type Asm Program Defn References HLASM R6.0 2016/08/29 08.42 -0=A(EXCPHNDL) - 4 00001724 00000001 A 2163 1946 - =A(LENPCB) - 4 00000E64 00000001 A 1595 777 856 - =A(UCBTABLE) - 4 000016F8 00000001 A 2152 1695 - =A(UCBTBEND) - 4 00000E90 00000001 A 1606 1550 - =A(UCBTBEND) - 4 000016FC 00000001 A 2153 1699 - =A(XA) 4 00000E5C 00000001 A 1593 564 - =A(0) 4 00000E60 00000001 A 1594 772 850 1148 1365 1366 1482 1483 1557 1558 - =A(0) 4 00001714 00000001 A 2159 1869 - =A(0,CORESIZE-(VERYEND-PROGRAM)) - 4 000016D0 00000001 A 2147 1745 - =C'$JOB,' - 5 00000E98 00000001 C 1609 1389 - =C'$JOB,' - 5 0000172A 00000001 C 2165 1888 - =C'AGAIN' - 5 00000E9D 00000001 C 1610 1577 - =C'END' 3 0000173D 00000001 C 2170 1975 - =C'EXCP ' - 5 00001732 00000001 C 2167 1938 - =C'EXCP' 4 00000E8C 00000001 C 1605 1541 - =C'IN ' 3 0000172F 00000001 C 2166 1936 - =C'NO' 2 00000E94 00000001 C 1607 1385 1399 1494 - =C'OK' 2 00000E96 00000001 C 1608 1391 1496 1575 - =C'OK' 2 00001728 00000001 C 2164 1886 - =C'OUT ' 4 0000171C 00000001 C 2161 1937 - =C'PRIN' 4 00000E7C 00000001 C 1601 1447 - =C'PRIN' 4 00001708 00000001 C 2156 1862 - =C'READ' 4 00000E74 00000001 C 1599 1329 - =C'READ' 4 00001704 00000001 C 2155 1857 - =C'RLD' 3 0000173A 00000001 C 2169 1973 - =C'STC1' 4 00000E80 00000001 C 1602 1449 - =C'TXT' 3 00001737 00000001 C 2168 1971 - =CL8' ' 8 000016E8 00000001 C 2150 1895 1923 2029 - =CL8'*IN' - 8 000016D8 00000001 C 2148 1855 1940 - =CL8'*OUT' - 8 000016F0 00000001 C 2151 1944 - =CL8'USERPROG' - 8 000016E0 00000001 C 2149 1860 1866 - =F'-8' 4 00000E6C 00000001 F 1597 843 1075 1129 - =F'1' 4 00000E58 00000001 F 1592 413 - =F'1' 4 00001710 00000001 F 2158 1868 - =F'12' 4 00000E88 00000001 F 1604 1539 1567 - =F'12' 4 0000170C 00000001 F 2157 1867 - =F'132' 4 00000E84 00000001 F 1603 1474 - =F'132' 4 00001718 00000001 F 2160 1883 1968 - =F'2' 4 00000E70 00000001 F 1598 1054 1392 1497 - =F'8' 4 00000E68 00000001 F 1596 778 1131 1327 1444 1573 - =F'8' 4 00001700 00000001 F 2154 1856 - =F'80' 4 00000E78 00000001 F 1600 1364 -1 Ordinary Symbol and Literal Cross Reference Page 68 --Symbol Length Value Id R Type Asm Program Defn References HLASM R6.0 2016/08/29 08.42 -0=X'8900000020000001' - 8 00000E50 00000001 X 1591 1476 -1 Unreferenced Symbols Defined in CSECTs Page 69 -- Defn Symbol HLASM R6.0 2016/08/29 08.42 -0 50 CCW1 - 52 CCW2 - 47 IPLCARD - 134 IPLCCW1 - 135 IPLCCW2 - 133 IPLPSW - 149 MCHKNEW - 139 MCHKOLD - 148 PGMNEW - 138 PGMOLD - 48 PSWD - 2174 R0 - 2175 R1 - 2184 R10 - 2187 R13 - 2188 R14 - 2189 R15 - 2180 R6 - 2181 R7 - 2182 R8 - 2183 R9 - 147 SVCNEW - 1676 UCBCONS1 - 143 UNUSED0 - 145 UNUSED1 -1 Dsect Cross Reference Page 70 --Dsect Length Id Defn HLASM R6.0 2016/08/29 08.42 -0DIMAS 000000A0 FFFFFFEA 2377 - EXCPHAS 00000030 FFFFFFED 2322 - FSB 00000008 FFFFFFFC 2243 - JSPAS 000001E0 FFFFFFEB 2341 - MSG 0000000C FFFFFFFA 2251 - PCB 00000148 FFFFFFFF 2196 - PRTHAS 00000030 FFFFFFEE 2311 - RDRHAS 00000080 FFFFFFEF 2298 - REGS 00000040 FFFFFFFD 2225 - SA 00000054 FFFFFFFE 2220 - SM 00000008 FFFFFFFB 2247 - UCB 00000020 FFFFFFEC 2332 - XAX 0000000C FFFFFFF9 2258 - XBX 00000008 FFFFFFF7 2267 - XCX 00000008 FFFFFFF6 2271 - XDX 00000008 FFFFFFF5 2274 - XFX 00000008 FFFFFFF8 2263 - XNX 0000000C FFFFFFF4 2277 - XRX 0000000C FFFFFFF3 2281 - XSX 0000000C FFFFFFF2 2286 - XYX 0000000C FFFFFFF1 2291 - XZX 00000008 FFFFFFF0 2295 -1 Using Map Page 71 -- HLASM R6.0 2016/08/29 08.42 - Stmt -----Location----- Action ----------------Using----------------- Reg Max Last Label and Using Text - Count Id Type Value Range Id Disp Stmt -0 66 00001778 00000002 USING ORDINARY 00001770 00001000 00000002 12 000A0 107 CARDLDR,R12 - 68 0000177C 00000002 USING ORDINARY 00000000 00001000 00000001 11 00078 110 PROGRAM,R11 - 111 000017EE 00000002 DROP 11 R11 - 111 000017EE 00000002 DROP 12 R12 - 131 00000000 00000001 USING ORDINARY 00000000 00001000 00000001 0 00C38 2051 *,0 - 178 00000280 00000001 USING ORDINARY 00000280 00001000 00000001 1 002EA 189 *,1 - 182 0000028C 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 0004C 185 PCB,15 - 186 00000298 00000001 USING ORDINARY 00000000 00001000 FFFFFFFE 14 00008 188 SA,14 - 190 000002A8 00000001 DROP 14 14 - 190 000002A8 00000001 DROP 15 15 - 214 000002B8 00000001 USING ORDINARY 000002B8 00001000 00000001 9 00210 239 *,9 - 222 000002D4 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 00000 PCB,15 - 230 000002EE 00000001 USING ORDINARY 00000000 00001000 FFFFFFFE 14 00048 1190 SA,14 - 240 00000314 00000001 DROP 9 9 - 362 000004EE 00000001 USING ORDINARY 000004EE 00001000 00000001 1 0007C 385 *,1 - 363 000004EE 00000001 USING ORDINARY 00000000 00001000 FFFFFFFB 2 00004 371 SM,2 - 372 0000050A 00000001 DROP 15 15 - 373 0000050A 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 5 00030 377 PCB,5 - 379 0000051C 00000001 DROP 5 5 - 380 0000051C 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 0004C 384 PCB,15 - 386 00000534 00000001 DROP 2 2 - 410 00000534 00000001 USING ORDINARY 00000534 00001000 00000001 1 00924 423 *,1 - 411 00000534 00000001 USING ORDINARY 00000000 00001000 FFFFFFFB 2 00004 420 SM,2 - 418 0000054C 00000001 DROP 15 15 - 419 0000054C 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 4 00030 421 PCB,4 - 427 0000056A 00000001 DROP 2 2 - 427 0000056A 00000001 DROP 4 4 - 450 00000570 00000001 USING ORDINARY 00000570 00001000 00000001 1 0004C 469 *,1 - 453 00000576 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 10 0004C 468 PCB,10 - 472 000005C0 00000001 DROP 10 10 - 473 000005C0 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 00048 621 PCB,15 - 490 000005C0 00000001 USING ORDINARY 000005C0 00001000 00000001 1 00000 *,1 - 515 000005D2 00000001 USING ORDINARY 000005D2 00001000 00000001 1 0002A 523 *,1 - 558 00000600 00000001 USING ORDINARY 00000600 00001000 00000001 1 0000E 560 *,1 - 562 00000608 00000001 USING ORDINARY 00000608 00001000 00000001 1 00854 564 *,1 - 565 0000060E 00000001 USING ORDINARY 00000600 00001000 00000001 1 000B0 619 XA,1 - 568 00000612 00000001 USING ORDINARY 00000000 00001000 FFFFFFF9 7 00008 596 XAX,7 - 576 0000062A 00000001 USING ORDINARY 00000000 00001000 FFFFFFFC 4 00004 598 FSB,4 - 600 00000674 00000001 USING ORDINARY 00000000 00001000 FFFFFFF7 2 00004 613 XBX,2 - 615 0000069C 00000001 DROP 2 2 - 624 000006B6 00000001 DROP 4 4 - 624 000006B6 00000001 DROP 7 7 - 650 000006B6 00000001 USING ORDINARY 000006B6 00001000 00000001 1 00088 698 *,1 - 653 000006BA 00000001 USING ORDINARY 00000000 00001000 FFFFFFF8 7 00004 655 XFX,7 - 662 000006D4 00000001 USING ORDINARY 00000000 00001000 FFFFFFFC 6 00004 680 FSB,6 - 683 00000718 00000001 USING ORDINARY 00000000 00001000 FFFFFFF7 2 00004 685 XBX,2 - 687 00000722 00000001 USING ORDINARY 00000000 00001000 FFFFFFFB 2 00000 690 SM,2 - 691 0000072E 00000001 DROP 2 2 - 699 00000744 00000001 DROP 6 6 - 699 00000744 00000001 DROP 7 7 - 723 00000744 00000001 USING ORDINARY 00000744 00001000 00000001 1 0002C 737 *,1 - 724 00000744 00000001 USING ORDINARY 00000000 00001000 FFFFFFF7 2 00004 726 XBX,2 - 731 0000075A 00000001 USING ORDINARY 00000000 00001000 FFFFFFFC 6 00004 735 FSB,6 -1 Using Map Page 72 -- HLASM R6.0 2016/08/29 08.42 - Stmt -----Location----- Action ----------------Using----------------- Reg Max Last Label and Using Text - Count Id Type Value Range Id Disp Stmt -0 739 00000774 00000001 DROP 6 6 - 740 00000774 00000001 USING ORDINARY 00000000 00001000 FFFFFFFC 4 00004 742 FSB,4 - 744 00000780 00000001 DROP 2 2 - 744 00000780 00000001 DROP 4 4 - 765 00000780 00000001 USING ORDINARY 00000780 00001000 00000001 1 00B01 785 *,1 - 767 00000782 00000001 USING ORDINARY 00000000 00001000 FFFFFFF6 7 00000 783 XCX,7 - 769 00000786 00000001 USING ORDINARY 00000000 00001000 FFFFFFF4 2 00008 772 XNX,2 - 775 0000079A 00000001 DROP 2 2 - 776 0000079A 00000001 USING ORDINARY 00000000 00001000 FFFFFFF9 2 00008 780 XAX,2 - 781 000007AC 00000001 DROP 2 2 - 781 000007AC 00000001 DROP 15 15 - 782 000007AC 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 2 00019 785 PCB,2 - 790 000007C6 00000001 DROP 2 2 - 790 000007C6 00000001 DROP 7 7 - 814 000007C6 00000001 USING ORDINARY 000007C6 00001000 00000001 1 006A6 856 *,1 - 816 000007C8 00000001 USING ORDINARY 00000000 00001000 FFFFFFF5 7 00000 819 XDX,7 - 818 000007CC 00000001 USING ORDINARY 00000000 00001000 FFFFFFF4 2 00008 821 XNX,2 - 822 000007D8 00000001 DROP 2 2 - 825 000007DE 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 2 00018 826 PCB,2 - 829 000007E8 00000001 DROP 2 2 - 830 000007E8 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 00000 PCB,15 - 834 000007F0 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 8 00048 852 PCB,8 - 835 000007F0 00000001 DROP 15 15 - 839 000007FA 00000001 USING ORDINARY 00000000 00001000 FFFFFFFA 9 00008 841 MSG,9 - 844 0000080A 00000001 USING ORDINARY 00000000 00001000 FFFFFFF8 2 00004 856 XFX,2 - 861 00000842 00000001 DROP 2 2 - 861 00000842 00000001 DROP 7 7 - 861 00000842 00000001 DROP 8 8 - 861 00000842 00000001 DROP 9 9 - 862 00000842 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 00010 915 PCB,15 - 883 00000842 00000001 USING ORDINARY 00000842 00001000 00000001 1 0002A 888 *,1 - 913 0000087A 00000001 USING ORDINARY 0000087A 00001000 00000001 1 00000 *,1 - 916 00000882 00000001 DROP 15 15 - 917 00000882 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 10 00014 918 PCB,10 - 919 00000886 00000001 DROP 10 10 - 920 00000886 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 2 00014 922 PCB,2 - 923 0000088E 00000001 DROP 2 2 - 924 0000088E 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 00008 926 PCB,15 - 927 00000896 00000001 DROP 15 15 - 928 00000896 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 10 0000C 929 PCB,10 - 930 0000089A 00000001 DROP 10 10 - 931 0000089A 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 2 0000C 933 PCB,2 - 934 000008A2 00000001 DROP 2 2 - 936 000008A6 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 00000 PCB,15 - 954 000008A6 00000001 USING ORDINARY 000008A6 00001000 00000001 1 00000 *,1 - 955 000008A6 00000001 DROP 15 15 - 956 000008A6 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 2 00014 958 PCB,2 - 959 000008AE 00000001 DROP 2 2 - 960 000008AE 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 11 00010 961 PCB,11 - 962 000008B2 00000001 DROP 11 11 - 963 000008B2 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 10 00014 964 PCB,10 - 965 000008B6 00000001 DROP 10 10 - 966 000008B6 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 2 0000C 968 PCB,2 -1 Using Map Page 73 -- HLASM R6.0 2016/08/29 08.42 - Stmt -----Location----- Action ----------------Using----------------- Reg Max Last Label and Using Text - Count Id Type Value Range Id Disp Stmt -0 969 000008BE 00000001 DROP 2 2 - 970 000008BE 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 11 00008 971 PCB,11 - 972 000008C2 00000001 DROP 11 11 - 973 000008C2 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 10 0000C 974 PCB,10 - 975 000008C6 00000001 DROP 10 10 - 977 000008CA 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 00000 PCB,15 - 999 000008CA 00000001 USING ORDINARY 000008CA 00001000 00000001 1 0001A 1008 *,1 - 1000 000008CA 00000001 USING ORDINARY 00000000 00001000 FFFFFFF4 2 00008 1010 XNX,2 - 1002 000008CC 00000001 DROP 15 15 - 1003 000008CC 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 10 00008 1005 PCB,10 - 1012 000008EC 00000001 DROP 2 2 - 1012 000008EC 00000001 DROP 10 10 - 1013 000008EC 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 0002C 1051 PCB,15 - 1041 000008EC 00000001 USING ORDINARY 000008EC 00001000 00000001 1 00584 1075 *,1 - 1043 000008EE 00000001 USING ORDINARY 00000000 00001000 FFFFFFF3 7 0000D 1084 XRX,7 - 1050 00000900 00000001 USING ORDINARY 00000000 00001000 FFFFFFFA 5 0000C 1084 MSG,5 - 1069 00000944 00000001 DROP 15 15 - 1070 00000944 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 10 00000 1071 PCB,10 - 1077 0000095C 00000001 USING ORDINARY 00000000 00001000 FFFFFFF8 2 00004 1079 XFX,2 - 1085 00000978 00000001 DROP 2 2 - 1085 00000978 00000001 DROP 5 5 - 1085 00000978 00000001 DROP 7 7 - 1085 00000978 00000001 DROP 10 10 - 1086 00000978 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 00000 PCB,15 - 1112 00000978 00000001 USING ORDINARY 00000978 00001000 00000001 1 004F4 1155 *,1 - 1114 0000097A 00000001 USING ORDINARY 00000000 00001000 FFFFFFF2 7 0000C 1162 XSX,7 - 1116 0000097E 00000001 USING ORDINARY 00000000 00001000 FFFFFFF4 2 00008 1119 XNX,2 - 1122 00000990 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 4 0002C 1157 PCB,4 - 1123 00000990 00000001 DROP 2 2 - 1123 00000990 00000001 DROP 15 15 - 1124 00000990 00000001 USING ORDINARY 00000000 00001000 FFFFFFF9 2 00008 1133 XAX,2 - 1134 000009B2 00000001 DROP 2 2 - 1139 000009C0 00000001 USING ORDINARY 00000000 00001000 FFFFFFFA 9 00004 1143 MSG,9 - 1146 000009D6 00000001 DROP 9 9 - 1147 000009D6 00000001 USING ORDINARY 00000000 00001000 FFFFFFFA 5 0000C 1162 MSG,5 - 1163 00000A0A 00000001 DROP 4 4 - 1163 00000A0A 00000001 DROP 5 5 - 1163 00000A0A 00000001 DROP 7 7 - 1164 00000A0A 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 00000 PCB,15 - 1187 00000A0A 00000001 USING ORDINARY 00000A0A 00001000 00000001 1 00036 1196 *,1 - 1189 00000A0C 00000001 USING ORDINARY 00000000 00001000 FFFFFFF1 7 00009 1202 XYX,7 - 1191 00000A10 00000001 USING ORDINARY 00000000 00001000 FFFFFFF4 2 00008 1194 XNX,2 - 1197 00000A22 00000001 DROP 2 2 - 1197 00000A22 00000001 DROP 14 14 - 1197 00000A22 00000001 DROP 15 15 - 1198 00000A22 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 10 0004C 1204 PCB,10 - 1200 00000A26 00000001 USING ORDINARY 00000000 00001000 FFFFFFFE 13 00008 1203 SA,13 - 1207 00000A42 00000001 DROP 7 7 - 1207 00000A42 00000001 DROP 10 10 - 1207 00000A42 00000001 DROP 13 13 - 1208 00000A42 00000001 USING ORDINARY 00000000 00001000 FFFFFFFE 14 00048 1239 SA,14 - 1209 00000A42 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 00000 1235 PCB,15 - 1232 00000A42 00000001 USING ORDINARY 00000A42 00001000 00000001 1 0004A 1257 *,1 -1 Using Map Page 74 -- HLASM R6.0 2016/08/29 08.42 - Stmt -----Location----- Action ----------------Using----------------- Reg Max Last Label and Using Text - Count Id Type Value Range Id Disp Stmt -0 1234 00000A44 00000001 USING ORDINARY 00000000 00001000 FFFFFFF0 7 00000 1241 XZX,7 - 1240 00000A58 00000001 USING ORDINARY 00000000 00001000 FFFFFFF4 2 00008 1243 XNX,2 - 1247 00000A6C 00000001 DROP 2 2 - 1247 00000A6C 00000001 DROP 15 15 - 1248 00000A6C 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 10 00034 1255 PCB,10 - 1259 00000A8E 00000001 DROP 10 10 - 1259 00000A8E 00000001 DROP 7 7 - 1260 00000A8E 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 00000 PCB,15 - 1280 00000A8E 00000001 USING ORDINARY 00000A8E 00001000 00000001 1 0002A 1285 *,1 - 1293 00000AC6 00000001 DROP 14 14 - 1293 00000AC6 00000001 DROP 15 15 - 1308 00000AC6 00000001 USING ORDINARY 00000000 00001000 FFFFFFEC 3 00018 1406 UCB,3 - 1310 00000AC8 00000001 USING ORDINARY 00000AC8 00001000 00000001 1 003D0 1408 *,1 - 1314 00000AD2 00000001 USING ORDINARY 00000000 00001000 FFFFFFF9 2 00004 1316 XAX,2 - 1317 00000AD8 00000001 DROP 2 2 - 1322 00000AE4 00000001 USING ORDINARY 00000000 00001000 FFFFFFEF 12 0007A 1403 RDRHAS,12 - 1326 00000AF0 00000001 USING ORDINARY 00000000 00001000 FFFFFFF3 2 00010 1331 XRX,2 - 1332 00000B06 00000001 DROP 2 2 - 1336 00000B10 00000001 USING ORDINARY 00000000 00001000 FFFFFFF3 2 00000 1339 XRX,2 - 1344 00000B2E 00000001 DROP 2 2 - 1409 00000C28 00000001 DROP 3 3 - 1409 00000C28 00000001 DROP 12 12 - 1426 00000C48 00000001 USING ORDINARY 00000000 00001000 FFFFFFEC 3 00018 1505 UCB,3 - 1428 00000C4A 00000001 USING ORDINARY 00000C4A 00001000 00000001 1 0024C 1507 *,1 - 1432 00000C54 00000001 USING ORDINARY 00000000 00001000 FFFFFFF9 2 00004 1434 XAX,2 - 1435 00000C5A 00000001 DROP 2 2 - 1440 00000C66 00000001 USING ORDINARY 00000000 00001000 FFFFFFEE 12 00028 1501 PRTHAS,12 - 1443 00000C6E 00000001 USING ORDINARY 00000000 00001000 FFFFFFF3 2 00010 1449 XRX,2 - 1452 00000C92 00000001 DROP 2 2 - 1508 00000D5E 00000001 DROP 3 3 - 1508 00000D5E 00000001 DROP 12 12 - 1522 00000D74 00000001 USING ORDINARY 00000000 00001000 FFFFFFEC 3 00018 1581 UCB,3 - 1524 00000D76 00000001 USING ORDINARY 00000D76 00001000 00000001 1 0012E 1583 *,1 - 1528 00000D80 00000001 USING ORDINARY 00000000 00001000 FFFFFFF9 2 00004 1530 XAX,2 - 1531 00000D86 00000001 DROP 2 2 - 1536 00000D92 00000001 USING ORDINARY 00000000 00001000 FFFFFFED 12 00024 1571 EXCPHAS,12 - 1538 00000D96 00000001 USING ORDINARY 00000000 00001000 FFFFFFF3 2 00014 1544 XRX,2 - 1545 00000DB0 00000001 DROP 2 2 - 1572 00000E12 00000001 USING ORDINARY 00000000 00001000 FFFFFFF3 2 0000C 1577 XRX,2 - 1580 00000E30 00000001 DROP 2 2 - 1584 00000E3A 00000001 DROP 3 3 - 1584 00000E3A 00000001 DROP 12 12 - 1693 00000FCA 00000001 USING ORDINARY 00000FCA 00001000 00000001 1 00732 1714 *,1 - 1702 00000FEC 00000001 USING ORDINARY 00000000 00001000 FFFFFFEC 6 0001C 1709 UCB,6 - 1712 00001014 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 0004C 1715 PCB,15 - 1716 00001020 00000001 USING ORDINARY 00000000 00001000 FFFFFFFE 13 00008 1718 SA,13 - 1719 0000102C 00000001 DROP 13 13 - 1719 0000102C 00000001 DROP 15 15 - 1726 0000103E 00000001 DROP 1 1 - 1726 0000103E 00000001 DROP 6 6 - 1739 00001040 00000001 USING ORDINARY 00001040 00001000 00000001 1 00700 1781 *,1 - 1756 00001080 00000001 USING ORDINARY 00000000 00001000 FFFFFFF9 2 00004 1758 XAX,2 - 1761 0000108E 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 2 0000C 1763 PCB,2 -1 Using Map Page 75 -- HLASM R6.0 2016/08/29 08.42 - Stmt -----Location----- Action ----------------Using----------------- Reg Max Last Label and Using Text - Count Id Type Value Range Id Disp Stmt -0 1764 00001096 00000001 DROP 2 2 - 1765 00001096 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 0000C 1767 PCB,15 - 1768 0000109E 00000001 DROP 15 15 - 1769 0000109E 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 2 0004C 1770 PCB,2 - 1771 000010A2 00000001 USING ORDINARY 00000000 00001000 FFFFFFFE 8 00008 1772 SA,8 - 1773 000010A6 00000001 USING ORDINARY 00000000 00001000 FFFFFFFD 9 00010 1777 REGS,9 - 1778 000010B8 00000001 DROP 9 9 - 1844 000012CE 00000001 USING ORDINARY 000012CE 00001000 00000001 1 0046F 2091 *,1 - 1848 000012D8 00000001 USING ORDINARY 00000000 00001000 FFFFFFF9 2 00004 1850 XAX,2 - 1851 000012DE 00000001 DROP 2 2 - 1852 000012DE 00000001 USING ORDINARY 00000000 00001000 FFFFFFEB 12 001DD 2064 JSPAS,12 - 2016 00001548 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 4 0004D 2024 PCB,4 - 2025 00001566 00000001 DROP 4 4 - 2043 0000159E 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 5 00008 2045 PCB,5 - 2119 00001676 00000001 USING ORDINARY 00001676 00001000 00000001 1 0004A 2139 *,1 - 2123 00001680 00000001 USING ORDINARY 00000000 00001000 FFFFFFF9 2 00004 2125 XAX,2 - 2126 00001686 00000001 DROP 2 2 - 2129 0000168C 00000001 USING ORDINARY 00000000 00001000 FFFFFFEA 12 00098 2138 DIMAS,12 - 2144 000016CC 00000001 DROP 12 12 -1 General Purpose Register Cross Reference Page 76 -- Register References (M=modified, B=branch, U=USING, D=DROP, N=index) HLASM R6.0 2016/08/29 08.42 -0 0(0) 131U 176 191M 212 332M 559M 563M 563 618M 618 1691 1724M - 1(1) 176 177M 178U 191M 212 233M 332M 362U 410U 449M 450U 490U 515U 558U 562U 564M 565U 650U - 723U 765U 814U 883U 913U 954U 999U 1041U 1112U 1187U 1232U 1280U 1309M 1310U 1427M 1428U 1523M 1524U - 1691 1692M 1693U 1724M 1726D 1738M 1739U 1843M 1844U 2118M 2119U - 2(2) 64M 65 69M 71 80M 81M 82 83M 84 95M 96 176 191M 212 332M 363U 386D 411U - 427D 525M 527M 567 570M 593M 599M 600U 615D 616M 652 658M 682M 683U 687U 688M 691D 693M - 724U 744D 766 768M 769U 775D 776U 780M 781D 782U 790D 815 817M 818U 821M 822D 823M 823 - 825U 829D 832 833M 844U 852M 854M 861D 884M 886M 915 918 920U 923D 926 929 931U 934D - 956U 959D 966U 969D 1000U 1012D 1042 1044M 1047M 1076M 1077U 1085D 1113 1115M 1116U 1123D 1124U 1134D - 1135M 1157M 1188 1190M 1191U 1197D 1233 1239M 1240U 1247D 1255M 1281M 1283M 1311M 1313M 1314U 1317D 1318M - 1325M 1326U 1332D 1333M 1335M 1336U 1344D 1367M 1374M 1394M 1396M 1406M 1429M 1431M 1432U 1435D 1436M 1442M - 1443U 1452D 1453M 1477M 1479M 1488M 1499M 1501M 1505M 1525M 1527M 1528U 1531D 1532M 1537M 1538U 1545D 1554M - 1559M 1564M 1569M 1571M 1572U 1580D 1581M 1691 1708M 1724M 1747M 1748M 1755M 1756U 1758M 1759 1761U 1762 - 1763 1764D 1769U 1845M 1847M 1848U 1851D 1853M 1858M 1859 1873M 1877M 1881M 1884M 1891M 1898M 1900M 1902M - 1922M 1926M 1951M 1966M 1969M 2013M 2026M 2032M 2034M 2036M 2038M 2042M 2064M 2120M 2122M 2123U 2126D 2127M - 2133M - 3(3) 70M 71 75M 88M 176 191M 212 332M 364M 365M 366 367M 367 412M 413M 414 585M 586M - 587 654M 656 669M 677M 684 725M 732 742 1126M 1127M 1127N 1128M 1128N 1129M 1130 1308U 1409D - 1426U 1508D 1522U 1553M 1584D 1691 1724M 1746M 1871 1872M 1876M 1905M 1917M 1927M 1958M 1959M 1960M 1961 - 2056M 2057M 2058M 2059 2081B - 4(4) 76M 80 86M 86 176 191M 212 332M 370M 376M 381 417M 419U 424 427D 573M 576U 577M - 577 579 584 590M 602 604 624D 655M 657 673 676M 685 726M 738 740U 744D 1119M 1120M - 1120 1122U 1163D 1320M 1352 1359 1438M 1462 1469 1534M 1535M 1556 1691 1724M 1753M 1753 1775 1779M - 1779N 1870 1904M 1918 1955M 1956M 1957M 1998M 2000M 2001 2002 2015M 2016U 2025D 2045M 2050 2055M 2069M - 2069N 2070 2072 2074 2078 - 5(5) 73M 74 82 84 85 87M 87 89M 90 176 191M 212 332M 371M 373U 374M 374 377M - 379D 382 572M 589M 597 656M 657M 666 1049M 1050U 1076 1078 1085D 1133M 1145 1147U 1163D 1331M - 1341 1347 1354N 1361M 1362 1389 1400 1401 1402 1402 1446M 1457 1464N 1471M 1472 1543M 1547 1562 - 1691 1724M 1754M 1780M 1863M 1864 1871M 1872N 1876N 1906M 1907M 1908 1924 1928 1930 1932 2020M 2021M - 2022 2041M 2043U 2050M 2051 2068M 2068 2076M 2076N 2079 2080M - 6(6) 176 191M 212 332M 569M 587 608 610 620 661M 662U 663M 663 666 671 676 678M 680M - 699D 728M 729M 729 731U 735M 736M 736 739D 741 1053M 1054M 1057 1058M 1058N 1059 1061M 1062M - 1063M 1063 1065 1066M 1066N 1067 1072M 1073M 1073N 1074M 1074N 1075M 1079 1150M 1151 1152M 1153M 1153 - 1155 1324M 1369 1441M 1481 1544M 1556M 1561 1691 1695M 1696 1698M 1698N 1699 1702U 1724M 1726D - 7(7) 176 191M 212 332M 567M 568U 624D 652M 653U 699D 766M 767U 790D 815M 816U 861D 1042M 1043U - 1085D 1113M 1114U 1163D 1188M 1189U 1207D 1233M 1234U 1259D 1370M 1371 1484M 1485 1546M 1547N 1549M 1549N - 1550 1553 1691 1704M 1705M 1706 1724M 1993M 1994M 1995 2006M 2007M 2008 - 8(8) 176 191M 212 332M 491M 491 492M 493M 493N 494 516M 516 517M 518M 519 520M 520 574M - 575M 581 660M 668N 675N 678 679M 727M 734M 738N 832M 834U 855 861D 1137M 1142M 1145N 1691 - 1724M 1770M 1771U 1909M 1911M 1914M 1914 1915M 1916 1959 2057 2131M 2132 - 9(9) 176 191M 212 213M 214U 240D 332M 583M 584M 586 665M 668 675 836M 837M 837 839U 845 - 848M 861D 1138M 1139U 1140M 1140 1143M 1146D 1691 1724M 1772M 1773U 1778D 1910M 1910 1911M 1912M 1912 - 1920 1935 1936 1937 1938 1954M 1958 1961 1980 1990 1994 2007 2018 2056 2059 2078M 2079M 2091 - 10(A) 176 191M 212 215M 216M 217M 217N 218M 218N 219 223 226N 233N 234 238M 332M 451M 452 - 453U 458M 459 467 472D 601M 602M 605 609 671M 672M 673 840M 848 914M 917U 919D 922 - 925M 928U 930D 933 958M 961 963U 965D 968M 971 973U 975D 1001M 1003U 1004M 1007 1009M 1010 - 1012D 1068M 1070U 1085D 1194M 1195M 1195 1198U 1207D 1243M 1244M 1244 1248U 1259D 1321M 1321 1351M 1352 - 1358M 1359 1439M 1439 1461M 1462 1468M 1469 1691 1724M 1774M 1775M 1776 1777 1979M 1980M 1985 1989M - 1990M 1993N 1995N 2005 2009 - 11(B) 67M 68U 111D 176 191M 212 215M 226M 227N 332M 452M 459 607M 608M 612 689M 690M 692M - 841M 842M 842N 843M 846 957M 960U 962D 964 967M 970U 972D 974 1347M 1348M 1354M 1355M 1457M - 1458M 1464M 1465M 1534 1691 1724M 1940M 1944M 1947M 1981M 1982M 1983 1987M 2002M 2130 - 12(C) 63M 65M 66U 111D 176 191M 212 215M 235M 236M 332M 598M 609M 610M 613 1316M 1322U 1409D - 1434M 1440U 1508D 1530M 1536U 1584D 1691 1724M 1850M 1852U 2125M 2129U 2144D - 13(D) 176 191M 212 215M 236 332M 579M 580M 581M 582M 582N 583 596 601 607 621 1199M 1200U -1 General Purpose Register Cross Reference Page 77 -- Register References (M=modified, B=branch, U=USING, D=DROP, N=index) HLASM R6.0 2016/08/29 08.42 -0 1207D 1691 1715M 1716U 1719D 1724M 1988M 1989N 1991 1996 2001M - 14(E) 176 185M 186U 190D 191M 212 215M 225M 227M 230U 332M 468M 1197D 1201 1203 1208U 1293D 1691 - 1724M - 15(F) 176 181M 182U 190D 191M 212 221M 222U 225 332M 372D 380U 418D 473U 781D 830U 835D 862U - 916D 921 924U 927D 932 936U 955D 977U 1001 1002D 1007 1013U 1069D 1086U 1123D 1149 1164U 1197D - 1209U 1247D 1260U 1293D 1691 1711M 1712U 1719D 1724M 1742M 1743 1744 1765U 1766 1767 1768D -1 Diagnostic Cross Reference and Assembler Summary Page 78 -- HLASM R6.0 2016/08/29 08.42 -0Statements Flagged -0 178(P1,178), 214(P1,214), 362(P1,362), 410(P1,410), 450(P1,450), 490(P1,490), 515(P1,515), 558(P1,558), - 562(P1,562), 565(P1,565), 650(P1,650), 723(P1,723), 765(P1,765), 814(P1,814), 834(P1,834), 883(P1,883), 913(P1,913), - 954(P1,954), 999(P1,999), 1041(P1,1041), 1112(P1,1112), 1122(P1,1122), 1187(P1,1187), 1232(P1,1232), 1280(P1,1280), - 1310(P1,1310), 1428(P1,1428), 1524(P1,1524), 1693(P1,1673) - - 29 Statements Flagged in this Assembly 4 was Highest Severity Code -0HIGH LEVEL ASSEMBLER, 5696-234, RELEASE 6.0, PTF UK37157 -0SYSTEM: z/OS 01.10.00 JOBNAME: IBMUSER7 STEPNAME: *OMVSEX PROCSTEP: (NOPROC) -0Data Sets Allocated for this Assembly - Con DDname Data Set Name Volume Member - P1 SYSIN /mbhfs/sos4k.asm - L1 SYSLIB CEE.SCEEMAC ZAPRD2 - L2 SYS1.MACLIB ZARES1 - L3 SYS1.MODGEN ZARES1 - SYSLIN /mbhfs/sos4k.o - SYSPRINT /dev/fd1 - SYSTERM /dev/fd2 - - 1028584K allocated to Buffer Pool Storage required 360K - 2341 Primary Input Records Read 0 Library Records Read 0 Work File Reads - 0 ASMAOPT Records Read 3473 Primary Print Records Written 0 Work File Writes - 137 Object Records Written 0 ADATA Records Written -0Assembly Start Time: 08.42.21 Stop Time: 08.42.22 Processor Time: 00.00.00.3254 - Return Code 004 diff --git a/SOS_OS/source/sosoutwin.txt b/SOS_OS/source/sosoutwin.txt deleted file mode 100644 index e69de29..0000000 diff --git a/SOS_OS/source/sosuserc.asm b/SOS_OS/source/sosuserc.asm deleted file mode 100644 index da07fa2..0000000 --- a/SOS_OS/source/sosuserc.asm +++ /dev/null @@ -1,148 +0,0 @@ - TITLE 'Sample Operating System Version 2.00: Demo Program' 00010000 -*********************************************************************** 00020000 -* * 00030000 -* ***************************************************************** * 00040000 -* * * * 00050000 -* * Sample Operating System * * 00060000 -* * Version 2.00 * * 00070000 -* * Developed at MIT 1973 * * 00080000 -* * * * 00090000 -* ***************************************************************** * 00100000 -* * 00110000 -* Title: Demo user program for use with the Sample Operating System * 00120000 -* * 00130000 -* Function: * 00140000 -* * 00150000 -* - print logo * 00160000 -* - read card containing message to print * 00170000 -* - format entry point to six hex digits and place * 00180000 -* it in columnes 54-59 of the message read * 00190000 -* - print message * 00200000 -* - format start message and parameter prompt for console at 009 * 00201002 -* - setup console CCWs * 00202002 -* - display start message and parameter prompt on console * 00203002 -* - wait for parameter input * 00204002 -* - print parameters entered * 00205002 -* - format end message and display it on console * 00206002 -* - exit * 00210000 -* * 00220000 -*********************************************************************** 00230000 - PUNCH '$JOB,2K,READER=IN,PRINTER=OUT,CONSOLE=EXCP' job card 00240002 -SOSUSERC CSECT , begin of program 00248002 - BALR R15,0 establish addressability .. 00256002 - USING *,R15 .. and tell assembler 00264002 - LA R2,PRNTLOGO send logo .. 00272002 - SVC C'S' .. to printer 00290000 - MVC WAITMSG+8(4),WAITLNG initialize reply length 00300002 - LA R2,WAITMSG wait for reply indicating .. 00303002 - SVC C'R' .. printing is completed 00310000 - LA R2,READCARD read card .. 00320002 - SVC C'S' .. containing next message 00330000 - MVC WAITMSG+8(4),WAITLNG initialize reply length 00340002 - LA R2,WAITMSG wait for reply indicating .. 00343002 - SVC C'R' .. card has been read 00350000 - LR R2,R15 base address .. 00360002 - S R2,ENTRY .. minus two .. 00367002 - ST R2,ENTRY .. is entry address 00374002 - UNPK ENTRYU(7),ENTRY+1(4) unpack address 00390000 - TR ENTRYU(6),HEXTAB translate to hex 00400000 - MVC LINE+53(6),ENTRYU move address into message 00410000 - LA R2,PRINTMSG send message .. 00420002 - SVC C'S' .. to printer 00430000 - MVC WAITMSG+8(4),WAITLNG initialize reply length 00440002 - LA R2,WAITMSG wait for reply indicating .. 00443002 - SVC C'R' .. printing is completed 00450000 - MVC STREAMNO(1),LINE+25 move job info .. 00450202 - MVC CNSENTRY(6),LINE+53 .. into console prompt 00450402 - MVI LINE,C' ' blank .. 00450602 - MVC LINE+1(131),LINE .. print line 00450802 - LA R2,CNSPRMPT console prompt address 00451002 - ICM R2,B'1000',WRITE insert write command 00451202 - ST R2,CCW1 store CCW 00451402 - LA R2,LCNPRMPT length of console prompt 00451602 - ST R2,CCW1+4 store length in CCW, zero all flags 00451802 - OI CCW1+4,X'40' indicate command chaining 00452002 - LA R2,CNSINPUT address of console input area 00452202 - ICM R2,B'1000',READ insert read command 00452402 - ST R2,CCW2 store CCW 00452602 - LA R2,LCNSINPT length of console input area 00452802 - ST R2,CCW2+4 store length in CCW, zero all flags 00453002 - OI CCW2+4,X'20' suppress length indication 00453202 - LA 2,CONSOLIO send prompt .. 00453402 - SVC C'S' .. to console 00453602 - MVC WAITMSG+8(4),WAITLNG initialize reply length 00453802 - LA 2,WAITMSG wait for reply indicating .. 00454002 - SVC C'R' .. console I/O is completed 00454202 - LA 2,CONSOLOK release .. 00454402 - SVC C'S' .. console 00454602 - LA R2,LPE+LCNSINPT-1 total length of print message .. 00454802 - SH R2,WAITMSG+18 .. minus residual count minus one 00455002 - EX R2,GETINPUT move to print line 00455202 - LA R2,PRINTMSG send message .. 00455402 - SVC C'S' .. to printer 00455602 - MVC WAITMSG+8(4),WAITLNG initialize reply length 00455802 - LA R2,WAITMSG wait for reply indicating .. 00456002 - SVC C'R' .. printing is completed 00456202 - MVC CNSPRMPT+4(7),ENDED make it a termination message 00456402 - LA R2,CNSPRMPT console termination message address 00456602 - ICM R2,B'1000',WRITEACR insert write command 00456802 - ST R2,CCW1 store CCW 00457002 - LA R2,23 length of console prompt 00457202 - ST R2,CCW1+4 store length in CCW, zero all flags 00457402 - LA 2,CONSOLIO send prompt .. 00457602 - SVC C'S' .. to console 00457802 - MVC WAITMSG+8(4),WAITLNG initialize reply length 00458002 - LA 2,WAITMSG wait for reply indicating .. 00458202 - SVC C'R' .. console I/O is completed 00458402 - LA 2,CONSOLOK release .. 00458602 - SVC C'S' .. console 00458802 - SVC C'H' halt job 00460000 -GETINPUT MVC LINE(1),PE move output message to print line (EX'ed) 00460502 -READ DC X'0A' console read 00461002 -WRITE DC X'01' console write 00461502 -WRITEACR DC X'09' console write with auto CR 00462002 -CCW1 DS D console write CCW 00462502 -CCW2 DS D console read CCW 00463002 -PE DC C'Parameters entered on console: ' echo parameters 00463502 -LPE EQU *-PE length of echo message 00464002 -CNSINPUT DC 40C' ' input from console 00464502 -LCNSINPT EQU *-CNSINPUT length of console input area 00465002 -CNSPRMPT DC C'Job started on stream-' prompt to .. 00465502 -STREAMNO DC C' ' .. be .. 00466002 - DC C', user program entry point = ' .. issued .. 00466502 -CNSENTRY DC C' ' .. on .. 00467002 - DC C', enter parameters: ' .. console 00467502 -LCNPRMPT EQU *-CNSPRMPT length of console prompt 00468002 -ENDED DC CL7'ended' convert started to ended message 00468502 - DS 0F align parameter lists 00470000 -PRNTLOGO DC CL8'PRINTER' print a line: process name .. 00480002 - DC F'8' .. length of command .. 00486002 - DC C'PRIN',A(LOGO) .. command 00492002 -LOGO DC CL132'--- Sample Operating System Version 2.00 ---' logo 00498002 -PRINTMSG DC CL8'PRINTER' print a line: process name .. 00504002 - DC F'8' .. length of command .. 00510002 - DC C'PRIN',A(LINE) .. command 00516002 -LINE DC 132C' ' line to be printed or card read 00522002 -WAITLNG DC F'8' maximum length of reply to be received 00528002 -WAITMSG DS CL8 wait for msg: originator returned here 00534002 - DS F .. length of return area .. 00540002 - DS CL8 .. message received 00546002 -READCARD DC CL8'READER' read a card: process name .. 00552002 - DC F'8' .. length of command .. 00558002 - DC C'READ',A(LINE) .. command 00564002 -CONSOLIO DC CL8'CONSOLE' perform console I/O: process name .. 00570002 - DC F'12' .. length of command .. 00576002 - DC C'EXCP',X'00000009',A(CCW1) .. command 00582002 -CONSOLOK DC CL8'CONSOLE' release console: process name .. 00588002 - DC F'2' .. length of command .. 00594002 - DC C'OK' .. command 00600002 -ENTRY DC F'2' entry address will end up here 00620000 - DC X'00' food for UNPK 00630000 -ENTRYU DC 7X'00' unpacked entry point plus excess byte 00640000 - ORG *-240 first 240 bytes of HEXTAB are not needed 00650000 -HEXTAB DS 0X translation table for unpacked to hex 00660000 - ORG , restore current location 00670000 - DC C'0123456789ABCDEF' hex characters 00680000 -R2 EQU 2 register 2 00690002 -R15 EQU 15 register 15 00690502 - END , end of program 00691002 diff --git a/SOS_OS/source/sosuseroutput.txt b/SOS_OS/source/sosuseroutput.txt deleted file mode 100644 index e389d77..0000000 --- a/SOS_OS/source/sosuseroutput.txt +++ /dev/null @@ -1,301 +0,0 @@ -1 High Level Assembler Option Summary (PTF UK37157) Page 1 -- HLASM R6.0 2016/08/29 09.36 -0 No Overriding ASMAOPT Parameters - Overriding Parameters- OBJECT,ESD,RXREF,RLD,XREF(SHORT,UNREFS),DXREF,LIST,TERM,ASA - No Process Statements - - - Options for this Assembly -0 NOADATA - ALIGN - 3 ASA - BATCH - CODEPAGE(047C) - NOCOMPAT - NODBCS - NODECK - 3 DXREF - 3 ESD - NOEXIT - FLAG(0,ALIGN,CONT,EXLITW,NOIMPLEN,NOPAGE0,PUSH,RECORD,NOSUBSTR,USING0) - NOFOLD - NOGOFF - NOINFO - LANGUAGE(EN) - NOLIBMAC - LINECOUNT(60) - 3 LIST(121) - MACHINE(,NOLIST) - MXREF(SOURCE) - 3 OBJECT - OPTABLE(UNI,NOLIST) - NOPCONTROL - NOPESTOP - NOPROFILE - NORA2 - NORENT - 3 RLD - 3 RXREF - SECTALGN(8) - SIZE(MAX) - NOSUPRWARN - SYSPARM() - 3 TERM(WIDE) - NOTEST - THREAD - NOTRANSLATE - TYPECHECK(MAGNITUDE,REGISTER) - USING(NOLIMIT,MAP,WARN(15)) - NOWORKFILE - 3 XREF(SHORT,UNREFS) - - Standard DD Names- SYSLIN SYSLIB SYSIN SYSPRINT SYSPUNCH SYSUT1 SYSTERM SYSADATA ASMAOPT - Overriding DD Names- SYS00013 SYS00005 SYS00011 SYS00012 SYS00010 -1 External Symbol Dictionary Page 2 --Symbol Type Id Address Length Owner Id Flags Alias-of HLASM R6.0 2016/08/29 09.36 -0SOSUSERC SD 00000001 00000000 0000035C 00 -1 Sample Operating System Version 2.00: Demo Program Page 3 - Active Usings: None -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 09.36 -0 2 *********************************************************************** 00020000 - 3 * * 00030000 - 4 * ***************************************************************** * 00040000 - 5 * * * * 00050000 - 6 * * Sample Operating System * * 00060000 - 7 * * Version 2.00 * * 00070000 - 8 * * Developed at MIT 1973 * * 00080000 - 9 * * * * 00090000 - 10 * ***************************************************************** * 00100000 - 11 * * 00110000 - 12 * Title: Demo user program for use with the Sample Operating System * 00120000 - 13 * * 00130000 - 14 * Function: * 00140000 - 15 * * 00150000 - 16 * - print logo * 00160000 - 17 * - read card containing message to print * 00170000 - 18 * - format entry point to six hex digits and place * 00180000 - 19 * it in columnes 54-59 of the message read * 00190000 - 20 * - print message * 00200000 - 21 * - format start message and parameter prompt for console at 009 * 00201002 - 22 * - setup console CCWs * 00202002 - 23 * - display start message and parameter prompt on console * 00203002 - 24 * - wait for parameter input * 00204002 - 25 * - print parameters entered * 00205002 - 26 * - format end message and display it on console * 00206002 - 27 * - exit * 00210000 - 28 * * 00220000 - 29 *********************************************************************** 00230000 - 30 PUNCH '$JOB,2K,READER=IN,PRINTER=OUT,CONSOLE=EXCP' job card 00240002 - 000000 00000 0035C 31 SOSUSERC CSECT , begin of program 00248002 - 000000 05F0 32 BALR R15,0 establish addressability .. 00256002 - R:F 00002 33 USING *,R15 .. and tell assembler 00264002 - 000002 4120 F1BA 001BC 34 LA R2,PRNTLOGO send logo .. 00272002 - 000006 0AE2 35 SVC C'S' .. to printer 00290000 - 000008 D203 F2F6 F2EA 002F8 002EC 36 MVC WAITMSG+8(4),WAITLNG initialize reply length 00300002 - 00000E 4120 F2EE 002F0 37 LA R2,WAITMSG wait for reply indicating .. 00303002 - 000012 0AD9 38 SVC C'R' .. printing is completed 00310000 - 000014 4120 F302 00304 39 LA R2,READCARD read card .. 00320002 - 000018 0AE2 40 SVC C'S' .. containing next message 00330000 - 00001A D203 F2F6 F2EA 002F8 002EC 41 MVC WAITMSG+8(4),WAITLNG initialize reply length 00340002 - 000020 4120 F2EE 002F0 42 LA R2,WAITMSG wait for reply indicating .. 00343002 - 000024 0AD9 43 SVC C'R' .. card has been read 00350000 - 000026 182F 44 LR R2,R15 base address .. 00360002 - 000028 5B20 F33E 00340 45 S R2,ENTRY .. minus two .. 00367002 - 00002C 5020 F33E 00340 46 ST R2,ENTRY .. is entry address 00374002 - 000030 F363 F343 F33F 00345 00341 47 UNPK ENTRYU(7),ENTRY+1(4) unpack address 00390000 - 000036 DC05 F343 F25A 00345 0025C 48 TR ENTRYU(6),HEXTAB translate to hex 00400000 - 00003C D205 F29B F343 0029D 00345 49 MVC LINE+53(6),ENTRYU move address into message 00410000 - 000042 4120 F252 00254 50 LA R2,PRINTMSG send message .. 00420002 - 000046 0AE2 51 SVC C'S' .. to printer 00430000 - 000048 D203 F2F6 F2EA 002F8 002EC 52 MVC WAITMSG+8(4),WAITLNG initialize reply length 00440002 - 00004E 4120 F2EE 002F0 53 LA R2,WAITMSG wait for reply indicating .. 00443002 - 000052 0AD9 54 SVC C'R' .. printing is completed 00450000 - 000054 D200 F17B F27F 0017D 00281 55 MVC STREAMNO(1),LINE+25 move job info .. 00450202 - 00005A D205 F199 F29B 0019B 0029D 56 MVC CNSENTRY(6),LINE+53 .. into console prompt 00450402 -1 Sample Operating System Version 2.00: Demo Program Page 4 - Active Usings: SOSUSERC+X'2',R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 09.36 -0000060 9240 F266 00268 57 MVI LINE,C' ' blank .. 00450602 - 000064 D282 F267 F266 00269 00268 58 MVC LINE+1(131),LINE .. print line 00450802 - 00006A 4120 F165 00167 59 LA R2,CNSPRMPT console prompt address 00451002 - 00006E BF28 F109 0010B 60 ICM R2,B'1000',WRITE insert write command 00451202 - 000072 5020 F10E 00110 61 ST R2,CCW1 store CCW 00451402 - 000076 4120 004E 0004E 62 LA R2,LCNPRMPT length of console prompt 00451602 - 00007A 5020 F112 00114 63 ST R2,CCW1+4 store length in CCW, zero all flags 00451802 - 00007E 9640 F112 00114 64 OI CCW1+4,X'40' indicate command chaining 00452002 - 000082 4120 F13D 0013F 65 LA R2,CNSINPUT address of console input area 00452202 - 000086 BF28 F108 0010A 66 ICM R2,B'1000',READ insert read command 00452402 - 00008A 5020 F116 00118 67 ST R2,CCW2 store CCW 00452602 - 00008E 4120 0028 00028 68 LA R2,LCNSINPT length of console input area 00452802 - 000092 5020 F11A 0011C 69 ST R2,CCW2+4 store length in CCW, zero all flags 00453002 - 000096 9620 F11A 0011C 70 OI CCW2+4,X'20' suppress length indication 00453202 - 00009A 4120 F316 00318 71 LA 2,CONSOLIO send prompt .. 00453402 - 00009E 0AE2 72 SVC C'S' .. to console 00453602 - 0000A0 D203 F2F6 F2EA 002F8 002EC 73 MVC WAITMSG+8(4),WAITLNG initialize reply length 00453802 - 0000A6 4120 F2EE 002F0 74 LA 2,WAITMSG wait for reply indicating .. 00454002 - 0000AA 0AD9 75 SVC C'R' .. console I/O is completed 00454202 - 0000AC 4120 F32E 00330 76 LA 2,CONSOLOK release .. 00454402 - 0000B0 0AE2 77 SVC C'S' .. console 00454602 - 0000B2 4120 0046 00046 78 LA R2,LPE+LCNSINPT-1 total length of print message .. 00454802 - 0000B6 4B20 F300 00302 79 SH R2,WAITMSG+18 .. minus residual count minus one 00455002 - 0000BA 4420 F102 00104 80 EX R2,GETINPUT move to print line 00455202 - 0000BE 4120 F252 00254 81 LA R2,PRINTMSG send message .. 00455402 - 0000C2 0AE2 82 SVC C'S' .. to printer 00455602 - 0000C4 D203 F2F6 F2EA 002F8 002EC 83 MVC WAITMSG+8(4),WAITLNG initialize reply length 00455802 - 0000CA 4120 F2EE 002F0 84 LA R2,WAITMSG wait for reply indicating .. 00456002 - 0000CE 0AD9 85 SVC C'R' .. printing is completed 00456202 - 0000D0 D206 F169 F1B3 0016B 001B5 86 MVC CNSPRMPT+4(7),ENDED make it a termination message 00456402 - 0000D6 4120 F165 00167 87 LA R2,CNSPRMPT console termination message address 00456602 - 0000DA BF28 F10A 0010C 88 ICM R2,B'1000',WRITEACR insert write command 00456802 - 0000DE 5020 F10E 00110 89 ST R2,CCW1 store CCW 00457002 - 0000E2 4120 0017 00017 90 LA R2,23 length of console prompt 00457202 - 0000E6 5020 F112 00114 91 ST R2,CCW1+4 store length in CCW, zero all flags 00457402 - 0000EA 4120 F316 00318 92 LA 2,CONSOLIO send prompt .. 00457602 - 0000EE 0AE2 93 SVC C'S' .. to console 00457802 - 0000F0 D203 F2F6 F2EA 002F8 002EC 94 MVC WAITMSG+8(4),WAITLNG initialize reply length 00458002 - 0000F6 4120 F2EE 002F0 95 LA 2,WAITMSG wait for reply indicating .. 00458202 - 0000FA 0AD9 96 SVC C'R' .. console I/O is completed 00458402 - 0000FC 4120 F32E 00330 97 LA 2,CONSOLOK release .. 00458602 - 000100 0AE2 98 SVC C'S' .. console 00458802 - 000102 0AC8 99 SVC C'H' halt job 00460000 - 000104 D200 F266 F11E 00268 00120 100 GETINPUT MVC LINE(1),PE move output message to print line (EX'ed) 00460502 - 00010A 0A 101 READ DC X'0A' console read 00461002 - 00010B 01 102 WRITE DC X'01' console write 00461502 - 00010C 09 103 WRITEACR DC X'09' console write with auto CR 00462002 - 000110 104 CCW1 DS D console write CCW 00462502 - 000118 105 CCW2 DS D console read CCW 00463002 - 000120 D78199819485A385 106 PE DC C'Parameters entered on console: ' echo parameters 00463502 - 0001F 107 LPE EQU *-PE length of echo message 00464002 - 00013F 4040404040404040 108 CNSINPUT DC 40C' ' input from console 00464502 - 00028 109 LCNSINPT EQU *-CNSINPUT length of console input area 00465002 - 000167 D1968240A2A38199 110 CNSPRMPT DC C'Job started on stream-' prompt to .. 00465502 - 00017D 40 111 STREAMNO DC C' ' .. be .. 00466002 -1 Sample Operating System Version 2.00: Demo Program Page 5 - Active Usings: SOSUSERC+X'2',R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 09.36 -000017E 6B40A4A285994097 112 DC C', user program entry point = ' .. issued .. 00466502 - 00019B 404040404040 113 CNSENTRY DC C' ' .. on .. 00467002 - 0001A1 6B408595A3859940 114 DC C', enter parameters: ' .. console 00467502 - 0004E 115 LCNPRMPT EQU *-CNSPRMPT length of console prompt 00468002 - 0001B5 85958485844040 116 ENDED DC CL7'ended' convert started to ended message 00468502 - 0001BC 117 DS 0F align parameter lists 00470000 - 0001BC D7D9C9D5E3C5D940 118 PRNTLOGO DC CL8'PRINTER' print a line: process name .. 00480002 - 0001C4 00000008 119 DC F'8' .. length of command .. 00486002 - 0001C8 D7D9C9D5000001D0 120 DC C'PRIN',A(LOGO) .. command 00492002 - 0001D0 60606040E2819497 121 LOGO DC CL132'--- Sample Operating System Version 2.00 ---' logo 00498002 - 000254 D7D9C9D5E3C5D940 122 PRINTMSG DC CL8'PRINTER' print a line: process name .. 00504002 - 00025C 00000008 123 DC F'8' .. length of command .. 00510002 - 000260 D7D9C9D500000268 124 DC C'PRIN',A(LINE) .. command 00516002 - 000268 4040404040404040 125 LINE DC 132C' ' line to be printed or card read 00522002 - 0002EC 00000008 126 WAITLNG DC F'8' maximum length of reply to be received 00528002 - 0002F0 127 WAITMSG DS CL8 wait for msg: originator returned here 00534002 - 0002F8 128 DS F .. length of return area .. 00540002 - 0002FC 129 DS CL8 .. message received 00546002 - 000304 D9C5C1C4C5D94040 130 READCARD DC CL8'READER' read a card: process name .. 00552002 - 00030C 00000008 131 DC F'8' .. length of command .. 00558002 - 000310 D9C5C1C400000268 132 DC C'READ',A(LINE) .. command 00564002 - 000318 C3D6D5E2D6D3C540 133 CONSOLIO DC CL8'CONSOLE' perform console I/O: process name .. 00570002 - 000320 0000000C 134 DC F'12' .. length of command .. 00576002 - 000324 C5E7C3D700000009 135 DC C'EXCP',X'00000009',A(CCW1) .. command 00582002 - 000330 C3D6D5E2D6D3C540 136 CONSOLOK DC CL8'CONSOLE' release console: process name .. 00588002 - 000338 00000002 137 DC F'2' .. length of command .. 00594002 - 00033C D6D2 138 DC C'OK' .. command 00600002 - 00033E 0000 - 000340 00000002 139 ENTRY DC F'2' entry address will end up here 00620000 - 000344 00 140 DC X'00' food for UNPK 00630000 - 000345 00000000000000 141 ENTRYU DC 7X'00' unpacked entry point plus excess byte 00640000 - 00034C 0034C 0025C 142 ORG *-240 first 240 bytes of HEXTAB are not needed 00650000 - 00025C 143 HEXTAB DS 0X translation table for unpacked to hex 00660000 - 00025C 0025C 0034C 144 ORG , restore current location 00670000 - 00034C F0F1F2F3F4F5F6F7 145 DC C'0123456789ABCDEF' hex characters 00680000 - 00002 146 R2 EQU 2 register 2 00690002 - 0000F 147 R15 EQU 15 register 15 00690502 - 148 END , end of program 00691002 -1 Relocation Dictionary Page 6 -- Pos.Id Rel.Id Address Type Action HLASM R6.0 2016/08/29 09.36 -0 00000001 00000001 000001CC A 4 + - 00000001 00000001 00000264 A 4 + - 00000001 00000001 00000314 A 4 + - 00000001 00000001 0000032C A 4 + -1 Ordinary Symbol and Literal Cross Reference Page 7 --Symbol Length Value Id R Type Asm Program Defn References HLASM R6.0 2016/08/29 09.36 -0CCW1 8 00000110 00000001 D D 104 61M 63M 64M 89M 91M 135 - CCW2 8 00000118 00000001 D D 105 67M 69M 70M - CNSENTRY 6 0000019B 00000001 C C 113 56M - CNSINPUT 1 0000013F 00000001 C C 108 65 109 - CNSPRMPT 22 00000167 00000001 C C 110 59 86M 87 115 - CONSOLIO 8 00000318 00000001 C C 133 71 92 - CONSOLOK 8 00000330 00000001 C C 136 76 97 - ENDED 7 000001B5 00000001 C C 116 86 - ENTRY 4 00000340 00000001 F F 139 45 46M 47 - ENTRYU 1 00000345 00000001 X X 141 47M 48M 49 - GETINPUT 6 00000104 00000001 I 100 80X - HEXTAB 1 0000025C 00000001 X X 143 48 - LCNPRMPT 1 0000004E 00000001 A U 115 62 - LCNSINPT 1 00000028 00000001 A U 109 68 78 - LINE 1 00000268 00000001 C C 125 49M 55 56 57M 58M 58 100M 124 132 - LOGO 132 000001D0 00000001 C C 121 120 - LPE 1 0000001F 00000001 A U 107 78 - PE 31 00000120 00000001 C C 106 100 107 - PRINTMSG 8 00000254 00000001 C C 122 50 81 - PRNTLOGO 8 000001BC 00000001 C C 118 34 - READ 1 0000010A 00000001 X X 101 66 - READCARD 8 00000304 00000001 C C 130 39 - R15 1 0000000F 00000001 A U 147 32M 33U 44 - R2 1 00000002 00000001 A U 146 34M 37M 39M 42M 44M 45M 46 50M 53M 59M - 60M 61 62M 63 65M 66M 67 68M 69 78M - 79M 80 81M 84M 87M 88M 89 90M 91 - STREAMNO 1 0000017D 00000001 C C 111 55M - WAITLNG 4 000002EC 00000001 F F 126 36 41 52 73 83 94 - WAITMSG 8 000002F0 00000001 C C 127 36M 37 41M 42 52M 53 73M 74 79 83M - 84 94M 95 - WRITE 1 0000010B 00000001 X X 102 60 - WRITEACR 1 0000010C 00000001 X X 103 88 -1 Unreferenced Symbols Defined in CSECTs Page 8 -- Defn Symbol HLASM R6.0 2016/08/29 09.36 -0 31 SOSUSERC -1 Using Map Page 9 -- HLASM R6.0 2016/08/29 09.36 - Stmt -----Location----- Action ----------------Using----------------- Reg Max Last Label and Using Text - Count Id Type Value Range Id Disp Stmt -0 33 00000002 00000001 USING ORDINARY 00000002 00001000 00000001 15 00343 100 *,R15 -1 General Purpose Register Cross Reference Page 10 -- Register References (M=modified, B=branch, U=USING, D=DROP, N=index) HLASM R6.0 2016/08/29 09.36 -0 0(0) (no references identified) - 1(1) (no references identified) - 2(2) 34M 37M 39M 42M 44M 45M 46 50M 53M 59M 60M 61 62M 63 65M 66M 67 68M - 69 71M 74M 76M 78M 79M 80 81M 84M 87M 88M 89 90M 91 92M 95M 97M - 3(3) (no references identified) - 4(4) (no references identified) - 5(5) (no references identified) - 6(6) (no references identified) - 7(7) (no references identified) - 8(8) (no references identified) - 9(9) (no references identified) - 10(A) (no references identified) - 11(B) (no references identified) - 12(C) (no references identified) - 13(D) (no references identified) - 14(E) (no references identified) - 15(F) 32M 33U 44 -1 Diagnostic Cross Reference and Assembler Summary Page 11 -- HLASM R6.0 2016/08/29 09.36 -0 No Statements Flagged in this Assembly - HIGH LEVEL ASSEMBLER, 5696-234, RELEASE 6.0, PTF UK37157 -0SYSTEM: z/OS 01.10.00 JOBNAME: IBMUSER3 STEPNAME: *OMVSEX PROCSTEP: (NOPROC) -0Data Sets Allocated for this Assembly - Con DDname Data Set Name Volume Member - P1 SYSIN /mbhfs/sosuser.asm - L1 SYSLIB CEE.SCEEMAC ZAPRD2 - L2 SYS1.MACLIB ZARES1 - L3 SYS1.MODGEN ZARES1 - SYSLIN /mbhfs/sosuser.o - SYSPRINT /dev/fd1 - SYSTERM /dev/fd2 - - 1028584K allocated to Buffer Pool Storage required 200K - 148 Primary Input Records Read 0 Library Records Read 0 Work File Reads - 0 ASMAOPT Records Read 301 Primary Print Records Written 0 Work File Writes - 20 Object Records Written 0 ADATA Records Written -0Assembly Start Time: 09.36.55 Stop Time: 09.36.55 Processor Time: 00.00.00.0242 - Return Code 000 diff --git a/SOS_OS/sysgen/madnick_with_console.xmi b/SOS_OS/sysgen/madnick_with_console.xmi deleted file mode 100644 index bfe7f92..0000000 Binary files a/SOS_OS/sysgen/madnick_with_console.xmi and /dev/null differ diff --git a/SOS_assembler_output.txt b/SOS_assembler_output.txt deleted file mode 100644 index ada89c3..0000000 --- a/SOS_assembler_output.txt +++ /dev/null @@ -1,3473 +0,0 @@ -1 High Level Assembler Option Summary (PTF UK37157) Page 1 -- HLASM R6.0 2016/08/29 08.42 -0 No Overriding ASMAOPT Parameters - Overriding Parameters- OBJECT,ESD,RXREF,RLD,XREF(SHORT,UNREFS),DXREF,LIST,TERM,ASA - No Process Statements - - - Options for this Assembly -0 NOADATA - ALIGN - 3 ASA - BATCH - CODEPAGE(047C) - NOCOMPAT - NODBCS - NODECK - 3 DXREF - 3 ESD - NOEXIT - FLAG(0,ALIGN,CONT,EXLITW,NOIMPLEN,NOPAGE0,PUSH,RECORD,NOSUBSTR,USING0) - NOFOLD - NOGOFF - NOINFO - LANGUAGE(EN) - NOLIBMAC - LINECOUNT(60) - 3 LIST(121) - MACHINE(,NOLIST) - MXREF(SOURCE) - 3 OBJECT - OPTABLE(UNI,NOLIST) - NOPCONTROL - NOPESTOP - NOPROFILE - NORA2 - NORENT - 3 RLD - 3 RXREF - SECTALGN(8) - SIZE(MAX) - NOSUPRWARN - SYSPARM() - 3 TERM(WIDE) - NOTEST - THREAD - NOTRANSLATE - TYPECHECK(MAGNITUDE,REGISTER) - USING(NOLIMIT,MAP,WARN(15)) - NOWORKFILE - 3 XREF(SHORT,UNREFS) - - Standard DD Names- SYSLIN SYSLIB SYSIN SYSPRINT SYSPUNCH SYSUT1 SYSTERM SYSADATA ASMAOPT - Overriding DD Names- SYS00013 SYS00005 SYS00011 SYS00012 SYS00010 -1 External Symbol Dictionary Page 2 --Symbol Type Id Address Length Owner Id Flags Alias-of HLASM R6.0 2016/08/29 08.42 -0PROGRAM SD 00000001 00000000 00001770 00 - CARDLDR SD 00000002 00001770 000000A0 00 - IPLCARD SD 00000003 00001810 00000050 00 -1 Sample Operating System Version 2.00 Page 3 - Active Usings: None -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 2 *********************************************************************** 00020000 - 3 * * 00030000 - 4 * ***************************************************************** * 00040000 - 5 * * * * 00050000 - 6 * * Sample Operating System * * 00060002 - 7 * * Version 2.00 * * 00067002 - 8 * * Developed at MIT 1973 * * 00074002 - 9 * * * * 00090000 - 10 * ***************************************************************** * 00100000 - 11 * * 00100602 - 12 * Update 2015/10/31 Juergen Winkelmann, e-mail winkelmann@id.ethz.ch * 00101202 - 13 * * 00101802 - 14 * - change storage protection alignments to 4K \ * 00102402 - 15 * - replace SSK/ISK instructions with SSKE/ISKE > 4K support * 00103002 - 16 * - minor changes in storage protection logic / * 00103602 - 17 * - change number of parallel processing streams to 4 * 00104202 - 18 * - change core size to 16M * 00104802 - 19 * - replace table of valid $JOB card core requests with general * 00105402 - 20 * logic rounding up any none full page request entered to next * 00106002 - 21 * full page * 00106602 - 22 * - add IPL card and two card loader for one stop creation of an * 00107202 - 23 * IPLable card deck * 00107802 - 24 * - ignore external interrupts during initialization to avoid * 00108402 - 25 * IPLRTN getting interrupted by the interval timer * 00109002 - 26 * * 00109103 - 27 * Update 2015/11/05 Juergen Winkelmann, e-mail winkelmann@id.ethz.ch * 00109203 - 28 * * 00109303 - 29 * - allow reloading card readers without needing to re-IPL the * 00109403 - 30 * system. This functionality relies on Hercules' card reader * 00109503 - 31 * behavior with the EOF initialization in place. It will not * 00109603 - 32 * work in INTR mode. * 00109703 - 33 * * 00109744 - 34 * Update 2015/11/13 Juergen Winkelmann, e-mail winkelmann@id.ethz.ch * 00109784 - 35 * * 00109824 - 36 * - add UCB to support a console at 009 using the EXCP device * 00109864 - 37 * handler. * 00109904 - 38 * * 00110000 - 39 *********************************************************************** 00120000 -- - 41 PRINT ON,NODATA,GEN 00140000 - 000000 00000 01770 42 PROGRAM CSECT , sample operating system starts at zero 00150002 - 001770 01770 000A0 43 CARDLDR CSECT , two card loader follows at the end 00150102 - 44 *** 00150202 - 45 *** IPL card 00150302 - 46 *** 00150402 - 001810 01810 00050 47 IPLCARD CSECT , IPLable deck must begin with this card 00150502 - 001810 0000000000 48 PSWD DC F'0',X'00' initial program status word, disabled 00150602 - 001815 001770 49 DC AL3(LOADER) start execution at load address 00150702 - 001818 02001770 50 CCW1 DC X'02',AL3(LOADER) read 1st card to load address 00150802 - 00181C 40000050 51 DC XL4'40000050' chain, read length = 80 00150902 - 001820 020017C0 52 CCW2 DC X'02',AL3(LOADER+80) read 2nd card to load addr + 80 00151002 - 001824 00000050 53 DC XL4'00000050' read length = 80 00151102 - 001828 E2819497938540D6 54 DC C'Sample Operating System Version 2.00' eye catcher 00151202 -1 Sample Operating System Version 2.00 Page 4 - Active Usings: None -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0001850 0000000000000000 55 DC 16X'00' pad to card length 00151302 - 56 *** 00151402 - 57 *** loader 00151502 - 58 *** 00151602 - 59 * 00151702 - 60 * Initialize 00151802 - 61 * 00151902 - 001770 01770 000A0 62 CARDLDR CSECT , two card loader must follow IPL card 00152002 - 001770 05C0 63 BALR R12,0 establish .. 00152102 - 001772 4120 0002 00002 64 LA R2,2 .. base .. 00152202 - 001776 1BC2 65 SR R12,R2 .. register 00152302 - R:C 01770 66 USING CARDLDR,R12 tell assembler 00152402 - 001778 41B0 0000 00000 67 LA R11,0 addressability of .. 00152502 - R:B 00000 68 USING PROGRAM,R11 .. sample operating system 00152602 - 00177C 4120 0000 00000 69 LA R2,0 I/O .. 00152702 - 001780 4130 C06A 017DA 70 LA R3,IOINTRPT .. new PSWD 00152802 - 001784 9023 B078 00078 71 STM R2,R3,IONEW store I/O new PSWD 00152902 - 001788 8000 C07E 017EE 72 SSM ENBLECH0 enable interrupts from channel 0 00153002 - 00178C 4150 C0A0 01810 73 LA R5,CCWCHAIN address of card reader CCW chain 00153102 - 001790 5050 B048 00048 74 ST R5,CAW store address in CAW 00153202 - 001794 5830 C094 01804 75 L R3,NUMCARDS number of cards to read 00153302 - 001798 5840 C090 01800 76 L R4,LOADADDR target address of loaded code 00153402 - 77 * 00153502 - 78 * create CCW chain 00153602 - 79 * 00153702 - 00179C 1824 80 NEXTCARD LR R2,R4 load next card here 00153802 - 00179E BF28 C080 017F0 81 ICM R2,B'1000',READ insert write command 00153902 - 0017A2 5020 5000 00000 82 ST R2,0(,R5) store CCW 00154002 - 0017A6 4120 0050 00050 83 LA R2,80 length of card 00154102 - 0017AA 5020 5004 00004 84 ST R2,4(,R5) store length in CCW, zero all flags 00154202 - 0017AE 9640 5004 00004 85 OI 4(R5),X'40' indicate command chaining 00154302 - 0017B2 4140 4050 00050 86 LA R4,80(,R4) increment target address 00154402 - 0017B6 4150 5008 00008 87 LA R5,8(,R5) point to next CCW 00154502 - 0017BA 4630 C02C 0179C 88 BCT R3,NEXTCARD read next card 00154602 - 0017BE 5B50 C098 01808 89 S R5,EIGHT point to previous CCW 00154702 - 0017C2 94BF 5004 00004 90 NI 4(R5),X'BF' clear command chaining flag 00154802 - 91 * 00154902 - 92 * read cards and wait for completion 00155002 - 93 * 00155102 - 0017C6 9C00 000C 0000C 94 SIO 12(0) read cards 00155202 - 0017CA 4120 C066 017D6 95 LA R2,*+12 continue here after I/O completion 00155302 - 0017CE 5020 C08C 017FC 96 ST R2,CONTINUE store continue address in PSWD skeleton 00155402 - 0017D2 8200 C088 017F8 97 LPSW WAITPSWD wait for I/O completion 00155502 - 98 * 00155602 - 99 * "IPL" the Sample Operating System 00155702 - 100 * 00155802 - 0017D6 8200 0000 00000 101 LPSW 0 transfer control 00155902 - 102 * 00156002 - 103 * I/O interrupt handler 00156102 - 104 * 00156202 - 017DA 105 IOINTRPT EQU * 00156302 - 0017DA 9104 B044 00044 106 TM CSW+4,X'04' device end received? 00156402 - 0017DE 47E0 C07A 017EA 107 BNO IOINTRTN -> no, keep waiting 00156502 - 0017E2 94FD B039 00039 108 NI IOOLD+1,X'FD' -> yes, terminate wait state and .. 00156602 - 0017E6 947F B038 00038 109 NI IOOLD,X'7F' .. and disable channel 0 interrupts 00156702 -1 Sample Operating System Version 2.00 Page 5 - Active Usings: PROGRAM,R11 CARDLDR,R12 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -00017EA 8200 B038 00038 110 IOINTRTN LPSW IOOLD return to mainline 00156802 - 111 DROP R11,R12 no longer needed 00156902 - 112 * 00157002 - 113 * Data area 00157102 - 114 * 00157202 - 0017EE F8F0 115 ENBLECH0 DC C'80' mask to enable channel 0 interrupts 00157302 - 0017F0 02 116 READ DC X'02' read a card 00157402 - 0017F8 117 DS 0D align 00157502 - 0017F8 80020000 118 WAITPSWD DC X'80020000' wait with channel 0 interrupts enabled 00157602 - 0017FC 119 CONTINUE DS F continue here after wait 00157702 - 001800 00000000 120 LOADADDR DC F'0' code is to be loaded here 00157802 - 001804 0000004B 121 NUMCARDS DC F'75' number of cards to read 00157904 - 001808 00000008 122 EIGHT DC F'8' CCW length 00158002 - 001810 123 CCWCHAIN DS 0D start of card reader CCW chain 00158102 - 124 *** 00158202 - 125 *** Sample Operating System code begins here 00158302 - 126 *** 00158402 - 000000 00000 01770 127 PROGRAM CSECT , sample OS must follow loader cards 00158502 -0 000000 129 CORESIZE EQU 16777216 bytes of core in object machine 00170002 -0 R:0 00000 131 USING *,0 COMMUNICATIONS AREA 00190000 -0000000 000000000000103E 133 IPLPSW DC B'00000000',B'00000000',X'0000',X'00',AL3(IPLRTN) 00210000 - 000008 134 IPLCCW1 DS D . IPL CCW #1 00220000 - 000010 135 IPLCCW2 DS D . IPL CCW #2 00230000 - 000018 136 EXTOLD DS D . EXTERNAL OLD PSW 00240000 - 000020 137 SVCOLD DS D . SVC OLD PSW 00250000 - 000028 138 PGMOLD DS D . PROGRAM INTERRUPT OLD PSW 00260000 - 000030 139 MCHKOLD DS D . MACHINE CHECK OLD PSW 00270000 - 000038 140 IOOLD DS D . I/O INTERRUPT OLD PSW 00280000 - 000040 141 CSW DS D . CHANNEL STATUS WORD 00290000 - 000048 142 CAW DS F . CHANNEL ADDRESS WORD 00300000 - 00004C 143 UNUSED0 DS F . 00310000 - 000050 FFFFFFFF 144 TIMER DC F'-1' . TIMER 00320000 - 000054 00000000 145 UNUSED1 DC F'0' . 00330000 - 000058 000000000000027A 146 EXTNEW DC B'00000000',B'00000000',X'0000',X'00',AL3(EXTHANDL) 00340000 - 000060 00000000000002B2 147 SVCNEW DC B'00000000',B'00000000',X'0000',X'00',AL3(SVCHANDL) 00350000 - 000068 00000000000002B0 148 PGMNEW DC B'00000000',B'00000000',X'0000',X'00',AL3(PGMHANDL) 00360000 - 000070 0002000000000000 149 MCHKNEW DC B'00000000',B'00000010',X'0000',X'00',AL3(0) 00370000 - 000078 00000000000017DA 150 IONEW DC B'00000000',B'00000000',X'0000',X'00',AL3(IOINTRPT) <-+ 00380002 - 151 *** | 00382002 - 152 *** IOINTRPT will be replaced with IOHANDL after IPL by IPLRTN -----+ 00384002 - 153 *** 00386002 - 000080 00080 00180 154 ORG *+X'100' SPACE OVER STAND ALONE DUMP AREA 00390000 - 000180 00001740 155 FSBPTR DC A(VERYEND) . FSB POINTER 00400000 - 000184 0000000100000000 156 FSBSEM DC F'1,0' . FSB SEMAPHORE 00410000 - 00018C 0000000000000000 157 MEMORY DC F'0,0' . MEMORY SEMAPHORE 00420000 - 000194 0000000100000000 158 CAWSEM DC F'1,0' . CAW SEMAPHORE 00430000 -000019C 160 TRAPSAVE DS 16F . STORAGE FOR EXTERNAL INTERRUPTS 00450000 - 0001DC 161 IOHSAVE DS 16F . STORAGE FOR I/O INTERRUPTS 00460000 -000021C 163 SYSSEMSA DS CL84 . SYSTEM SEMAPHORE SAVE AREA 00480000 -1 Sample Operating System Version 2.00 Page 6 - Active Usings: PROGRAM,R0 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000270 165 RUNNING DS A . RUNNING 00500000 - 000274 166 NEXTTRY DS A . NEXTTRY 00510000 - 000278 167 NEXTTRYM DS C,0H . NEXTTRY MODIFIED 00520000 -1 Sample Operating System Version 2.00 Page 7 - Active Usings: PROGRAM,R0 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 169 *********************************************************************** 00540000 - 170 * * 00550000 - 171 * EXTERNAL, PROGRAM, AND SVC INTERRUPT HANDLERS * 00560000 - 172 * * 00570000 - 173 *********************************************************************** 00580000 -0 0027A 175 EXTHANDL EQU * . EXTERNAL INTERRUPT HANDLER 00600000 - 00027A 900F 019C 0019C 176 STM 0,15,TRAPSAVE . SAVE REGISTERS 00610000 - 00027E 0510 177 BALR 1,0 . ESTABLISH ADDRESSING 00620000 - R:1 00280 178 USING *,1 00630000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 178 in /mbhfs/sos4k.asm on volume: - 000280 9580 001B 0001B 179 CLI EXTOLD+3,X'80' . SEE IF TIMER TRAP 00640000 - 000284 4770 1028 002A8 180 BNE EXTHRET . IF NOT, IGNORE 00650000 - 000288 58F0 0270 00270 181 L 15,RUNNING . SET UP REGISTERS FOR TRAFFIC 00660000 - R:F 00000 182 USING PCB,15 . CONTROLLER (XPER) 00670000 - 00028C 95FF F019 00019 183 CLI PCBBLOKT,X'FF' . IF BLOCKED, NO PROCESS IS 00680000 - 000290 4780 1028 002A8 184 BE EXTHRET . RUNNABLE, SO RETURN 00690000 - 000294 41E0 F04C 0004C 185 LA 14,PCBISA . GET SAVE AREA 00700000 - R:E 00000 186 USING SA,14 00710000 - 000298 D207 E000 0018 00000 00018 187 MVC SAPSW,EXTOLD . AND STORE OLD STUFF INTO IT 00720000 - 00029E D23F E008 019C 00008 0019C 188 MVC SAREGS,TRAPSAVE 00730000 - 0002A4 47F0 12EA 0056A 189 B XPER . THEN GO TO TRAFFIC SCHEDULER 00740000 - 190 DROP 14,15 00750000 - 0002A8 980F 019C 0019C 191 EXTHRET LM 0,15,TRAPSAVE . TO IGNORE AN INTERRUPT, RELOAD 00760000 - 0002AC 8200 0018 00018 192 LPSW EXTOLD . AND TRANSFER BACK 00770000 -0 002B0 194 PGMHANDL EQU * . PROGRAM INTERRUPT HANDLER 00790000 - 0002B0 0A6F 195 SVC C'?' . IN ANY CASE, AN ERROR 00800000 -1 Sample Operating System Version 2.00 Page 8 - Active Usings: PROGRAM,R0 PROGRAM+X'280',R1 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 197 *********************************************************************** 00820000 - 198 * * 00830000 - 199 * SVC INTERRUPT HANDLER * 00840000 - 200 * * 00850000 - 201 * FOR ALL ROUTINES ENTERED BY SVC INTERRUPT, THE * 00860000 - 202 * FOLLOWING REGISTERS CONTAIN THIS INFORMATION: * 00870000 - 203 * * 00880000 - 204 * REGISTER 1 - BASE REGISTER FOR ROUTINE * 00890000 - 205 * REGISTER 2 - POINTER TO ARGUMENT LIST (IF ANY) * 00900000 - 206 * REGISTER 14 - POINTER TO SAVEAREA USED FOR THIS SVC * 00910000 - 207 * REGISTER 15 - POINTER TO PCB PRESENTLY RUNNING * 00920000 - 208 * * 00930000 - 209 *********************************************************************** 00940000 -0 002B2 211 SVCHANDL EQU * . SVC HANDLER 00960000 - 0002B2 900F 019C 0019C 212 STM 0,15,TRAPSAVE . SAVE REGISTERS 00970000 - 0002B6 0590 213 BALR 9,0 . ESTABLISH ADDRESSING 00980000 - R:9 002B8 214 USING *,9 00990000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 178 - ** ASMA435I Record 214 in /mbhfs/sos4k.asm on volume: - 0002B8 98AE 905C 00314 215 LM 10,14,SVCCONST . INITIALIZE REGISTERS 01000000 - 0002BC 43A0 0023 00023 216 IC 10,SVCOLD+3 . GET SVC CODE 01010000 - 0002C0 43AA 9070 00328 217 IC 10,SVCHTABL(10) . TRANSLATE INTO TABLE OFFSET 01020000 - 0002C4 41AA 9170 00428 218 LA 10,SVCRTN(10) . REG 10 -> THE CORRECT PSW 01030000 - 0002C8 9500 A002 00002 219 CLI 2(10),X'00' . IS THIS CALL PROTECTED? 01040000 - 0002CC 4780 904A 00302 220 BE SVCHPROT . THEN SEE IF WE CAN CALL IT 01050000 - 0002D0 58F0 0270 00270 221 SVCOK L 15,RUNNING . GET PCB POINTER 01060000 - R:F 00000 222 USING PCB,15 01070000 - 0002D4 9500 A003 00003 223 CLI 3(10),X'00' . IS IT A SYSTEM SAVEAREA? 01080000 - 0002D8 4780 9026 002DE 224 BE SYSSEM . DON'T USE REG 14 AS PCB POINTER 01090000 - 0002DC 18EF 225 LR 14,15 . ELSE, SET UP PCB POINTER 01100000 - 0002DE 43BA 0003 00003 226 SYSSEM IC 11,3(10) . GET POINTER TO SAVE AREA OFFSET 01110000 - 0002E2 5AEB 9210 004C8 227 A 14,SVCSAVE(11) . REG 14 -> SAVE AREA 01120000 - 0002E6 954B 0023 00023 228 CLI SVCOLD+3,C'.' . ARE WE CALLING XPER? 01130000 - 0002EA 4780 9042 002FA 229 BE SVCXPER . IF SO, DON'T SAVE RETURN STATUS 01140000 - R:E 00000 230 USING SA,14 01150000 - 0002EE D207 E000 0020 00000 00020 231 MVC SAPSW,SVCOLD . SAVE PSW 01160000 - 0002F4 D23F E008 019C 00008 0019C 232 MVC SAREGS,TRAPSAVE . SAVE REGISTERS 01170000 - 0002FA 581A 0004 00004 233 SVCXPER L 1,4(10) . MAKE ADDRESSING EASY WITHIN 01180000 - 0002FE 8200 A000 00000 234 LPSW 0(10) . ROUTINE, AND GO THERE 01190000 - 000302 58C0 0020 00020 235 SVCHPROT L 12,SVCOLD . GET PROTECTION KEY 01200000 - 000306 14CD 236 NR 12,13 . IS IT A USER? 01210000 - 000308 4780 9018 002D0 237 BZ SVCOK . IF NO, THAT'S FINE 01220000 - 00030C 41A0 91F8 004B0 238 LA 10,SVCRTN+136 . ELSE SET UP CALL TO XQUE 01230000 - 000310 47F0 9018 002D0 239 B SVCOK . 01240000 - 240 DROP 9 01250000 - 000314 0000000000000000 241 SVCCONST DC 3F'0',X'00F00000',F'0' 01260000 -0000328 8484848484848484 243 SVCHTABL DC 256X'84' . TABLE OF PSW OFFSETS 01280000 - 000428 00428 003FF 244 ORG SVCHTABL+C'P' 01290000 - 0003FF 00 245 DC AL1(0) 01300000 - 000400 00400 0040D 246 ORG SVCHTABL+C'V' 01310000 - 00040D 08 247 DC AL1(8) 01320000 - 00040E 0040E 00382 248 ORG SVCHTABL+C'!' 01330000 -1 Sample Operating System Version 2.00 Page 9 - Active Usings: PROGRAM,R0 PROGRAM+X'280',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000382 10 249 DC AL1(16) 01340000 - 000383 00383 00393 250 ORG SVCHTABL+C',' 01350000 - 000393 18 251 DC AL1(24) 01360000 - 000394 00394 003EA 252 ORG SVCHTABL+C'B' 01370000 - 0003EA 20 253 DC AL1(32) 01380000 - 0003EB 003EB 003E9 254 ORG SVCHTABL+C'A' 01390000 - 0003E9 28 255 DC AL1(40) 01400000 - 0003EA 003EA 003EE 256 ORG SVCHTABL+C'F' 01410000 - 0003EE 30 257 DC AL1(48) 01420000 - 0003EF 003EF 003F1 258 ORG SVCHTABL+C'I' 01430000 - 0003F1 38 259 DC AL1(56) 01440000 - 0003F2 003F2 003F9 260 ORG SVCHTABL+C'J' 01450000 - 0003F9 40 261 DC AL1(64) 01460000 - 0003FA 003FA 00373 262 ORG SVCHTABL+C'.' 01470000 - 000373 48 263 DC AL1(72) 01480000 - 000374 00374 00401 264 ORG SVCHTABL+C'R' 01490000 - 000401 50 265 DC AL1(80) 01500000 - 000402 00402 0040A 266 ORG SVCHTABL+C'S' 01510000 - 00040A 58 267 DC AL1(88) 01520000 - 00040B 0040B 003EB 268 ORG SVCHTABL+C'C' 01530000 - 0003EB 60 269 DC AL1(96) 01540000 - 0003EC 003EC 003FD 270 ORG SVCHTABL+C'N' 01550000 - 0003FD 68 271 DC AL1(104) 01560000 - 0003FE 003FE 00410 272 ORG SVCHTABL+C'Y' 01570000 - 000410 70 273 DC AL1(112) 01580000 - 000411 00411 00411 274 ORG SVCHTABL+C'Z' 01590000 - 000411 78 275 DC AL1(120) 01600000 - 000412 00412 003EC 276 ORG SVCHTABL+C'D' 01610000 - 0003EC 80 277 DC AL1(128) 01620000 - 0003ED 003ED 00397 278 ORG SVCHTABL+C'?' 01630000 - 000397 88 279 DC AL1(136) 01640000 - 000398 00398 003F0 280 ORG SVCHTABL+C'H' 01650000 - 0003F0 90 281 DC AL1(144) 01660000 - 0003F1 003F1 003ED 282 ORG SVCHTABL+C'E' 01670000 - 0003ED 98 283 DC AL1(152) 01680000 - 0003EE 003EE 00428 284 ORG SVCHTABL+256 01690000 -0000428 286 SVCRTN DS 0D . THE PSWS 01710000 - 287 * IN THE FOLLOWING PSWS, THE THIRD BYTE INDICATES * 01720000 - 288 * WHETHER THE SVC IS RESTRICTED: * 01730000 - 289 * X'00' -> OPERATING SYSTEM ONLY * 01740000 - 290 * X'FF' -> AVAILABLE TO USER ALSO * 01750000 - 291 * * 01760000 - 292 * THE FOURTH BYTE INDICATES WHICH SAVE AREA TO USE; * 01770000 - 293 * SVCSAVE BELOW SHOWS THE CODE VALUES. * 01780000 - 000428 00000000000004EE 294 DC B'00000000',B'00000000',X'0000',X'00',AL3(XP) 01790000 - 000430 0000000000000534 295 DC B'00000000',B'00000000',X'0000',X'00',AL3(XV) 01800000 - 000438 00000004000005C0 296 DC B'00000000',B'00000000',X'0004',X'00',AL3(XEXC) 01810000 - 000440 00000004000005D2 297 DC B'00000000',B'00000000',X'0004',X'00',AL3(XCOM) 01820000 - 000448 0000000400000744 298 DC B'00000000',B'00000000',X'0004',X'00',AL3(XB) 01830000 - 000450 FF00000C00000600 299 DC B'11111111',B'00000000',X'000C',X'00',AL3(XA) 01840000 - 000458 FF00000C000006B6 300 DC B'11111111',B'00000000',X'000C',X'00',AL3(XF) 01850000 - 000460 000000040000087A 301 DC B'00000000',B'00000000',X'0004',X'00',AL3(XI) 01860000 - 000468 00000004000008A6 302 DC B'00000000',B'00000000',X'0004',X'00',AL3(XJ) 01870000 - 000470 000000040000056A 303 DC B'00000000',B'00000000',X'0004',X'00',AL3(XPER) 01880000 -1 Sample Operating System Version 2.00 Page 10 - Active Usings: PROGRAM,R0 PROGRAM+X'280',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000478 FF00FF08000008EC 304 DC B'11111111',B'00000000',X'FF08',X'00',AL3(XR) 01890000 - 000480 FF00FF0800000978 305 DC B'11111111',B'00000000',X'FF08',X'00',AL3(XS) 01900000 - 000488 FF00FF0800000780 306 DC B'11111111',B'00000000',X'FF08',X'00',AL3(XC) 01910000 - 000490 0000FF04000008CA 307 DC B'00000000',B'00000000',X'FF04',X'00',AL3(XN) 01920000 - 000498 0000FF0800000A0A 308 DC B'00000000',B'00000000',X'FF08',X'00',AL3(XY) 01930000 - 0004A0 FF00FF0800000A42 309 DC B'11111111',B'00000000',X'FF08',X'00',AL3(XZ) 01940000 - 0004A8 FF00FF08000007C6 310 DC B'11111111',B'00000000',X'FF08',X'00',AL3(XD) 01950000 - 0004B0 0000FF0400000A8E 311 DC B'00000000',B'00000000',X'FF04',X'00',AL3(XQUE) 01960000 - 0004B8 FF00FF0800000842 312 DC B'11111111',B'00000000',X'FF08',X'00',AL3(XH) 01970000 - 0004C0 FF00000C00000608 313 DC B'11111111',B'00000000',X'000C',X'00',AL3(XAUTO) 01980000 -00004C8 315 SVCSAVE DS 0F . THE SAVE AREA OFFSETS 02000000 - 0004C8 0000021C 316 DC A(SYSSEMSA) . CODE 00 -> SYSSEMSA 02010000 - 0004CC 0000004C 317 DC A(PCBISA-PCB) . CODE 04 -> INTERRUPT SAVE AREA 02020000 - 0004D0 000000A0 318 DC A(PCBFSA-PCB) . CODE 08 -> FAULT SAVE AREA 02030000 - 0004D4 000000F4 319 DC A(PCBMSA-PCB) . CODE 0C -> MEMORY SAVE AREA 02040000 -- - 321 *********************************************************************** 02060000 - 322 * * 02070000 - 323 * RETURN SEQUENCE FOR REQUEST DRIVEN ROUTINES AND TRAFFIC CONTROLLER * 02080000 - 324 * * 02090000 - 325 *********************************************************************** 02100000 -00004D8 327 DS 0D 02120000 - 0004D8 00000000000004E0 328 RETURN DC B'00000000',B'00000000',X'0000',X'00',AL3(RETURNR) 02130000 -0 004E0 330 RETURNR EQU * . RETURN ROUTINE FOR SVC'S AND XPER 02150000 - 0004E0 D207 0020 E000 00020 00000 331 MVC SVCOLD,SAPSW . SAVE PSW IN A SAFE PLACE 02160000 - 0004E6 980F E008 00008 332 LM 0,15,SAREGS . RELOAD REGISTERS 02170000 - 0004EA 8200 0020 00020 333 LPSW SVCOLD . AND RETURN 02180000 -1 Sample Operating System Version 2.00 Page 11 - Active Usings: PROGRAM,R0 PROGRAM+X'280',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 335 *********************************************************************** 02200000 - 336 * * 02210000 - 337 * REQUEST DRIVEN ROUTINES * 02220000 - 338 * * 02230000 - 339 *********************************************************************** 02240000 -- - 341 *********************************************************************** 02260000 - 342 * * 02270000 - 343 * XP ROUTINE * 02280000 - 344 * * 02290000 - 345 * FUNCTION: TO IMPLEMENT "P" PRIMITIVE FOR SEMAPHORES * 02300000 - 346 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS SM * 02310000 - 347 * SM DS 0D SEMAPHORE DEFINITION * 02320000 - 348 * SMVAL DS F VALUE * 02330000 - 349 * SMPTR DS A POINTER TO FIRST WAITER * 02340000 - 350 * ROUTINES USED: XPER * 02350000 - 351 * PROCEDURE: SUBTRACT ONE FROM SMVAL; IF NON-NEGATIVE, RETURN. * 02360000 - 352 * IF NEGATIVE, PLACE RUNNING PROCESS AT END OF LIST * 02370000 - 353 * OF PRECESSES WAITING ON SM. BLOCK CALLING PROCESS; * 02380000 - 354 * ENTER TRAFFIC CONTROLLER. * 02390000 - 355 * ERROR CHECKS: NONE * 02400000 - 356 * INTERRUPTS: OFF * 02410000 - 357 * USER ACCESS: NO * 02420000 - 358 * * 02430000 - 359 *********************************************************************** 02440000 -0 004EE 361 XP EQU * . THE XP ROUTINE 02460000 - R:1 004EE 362 USING *,1 02470000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 362 in /mbhfs/sos4k.asm on volume: - R:2 00000 363 USING SM,2 . ARGUMENT IS A SEMAPHORE 02480000 - 0004EE 5830 2000 00000 364 L 3,SMVAL . GET THE VALUE 02490000 - 0004F2 0630 365 BCTR 3,0 . SUBTRACT ONE 02500000 - 0004F4 5030 2000 00000 366 ST 3,SMVAL . AND STORE IT BACK 02510000 - 0004F8 1233 367 LTR 3,3 . SET CONDITION CODE 02520000 - 0004FA 4740 1014 00502 368 BM XPWAIT . IF IT'S NEGATIVE, MUST WAIT 02530000 - 0004FE 8200 04D8 004D8 369 LPSW RETURN . ELSE RETURN NOW 02540000 - 000502 4140 2004 00004 370 XPWAIT LA 4,SMPTR . START GOING DOWN 02550000 - 000506 5850 2004 00004 371 L 5,SMPTR . CHAIN OF POINTERS 02560000 - 372 DROP 15 02570000 - R:5 00000 373 USING PCB,5 02580000 - 00050A 1255 374 XPLOOP LTR 5,5 . IF REACHED END 02590000 - 00050C 4780 102E 0051C 375 BZ XPTHEN . ADD OUR PCB ON. ELSE, 02600000 - 000510 4140 5030 00030 376 LA 4,PCBNSW . INCREMENT POINTERS 02610000 - 000514 5850 5030 00030 377 L 5,PCBNSW 02620000 - 000518 47F0 101C 0050A 378 B XPLOOP . AND TRY AGAIN 02630000 - 379 DROP 5 02640000 - R:F 00000 380 USING PCB,15 02650000 - 00051C D203 4000 0270 00000 00270 381 XPTHEN MVC 0(4,4),RUNNING . WE'RE AT THE END 02660000 - 000522 5050 F030 00030 382 ST 5,PCBNSW . STORE NULL POINTER 02670000 - 000526 92FF F019 00019 383 MVI PCBBLOKT,X'FF' . AND WE'RE BLOCKED 02680000 - 00052A D253 F04C 021C 0004C 0021C 384 MVC PCBISA,SYSSEMSA . SWITCH SAVE AREAS 02690000 - 000530 47F0 107C 0056A 385 B XPER . SO RUN SOMEONE ELSE 02700000 -1 Sample Operating System Version 2.00 Page 12 - Active Usings: PROGRAM,R0 PROGRAM+X'4EE',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 386 DROP 2 02710000 -1 Sample Operating System Version 2.00 Page 13 - Active Usings: PROGRAM,R0 PROGRAM+X'4EE',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 388 *********************************************************************** 02730000 - 389 * * 02740000 - 390 * XV ROUTINE * 02750000 - 391 * * 02760000 - 392 * FUNCTION: TO IMPLEMENT "V" PRIMITIVE FOR SEMAPHORES * 02770000 - 393 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS SM * 02780000 - 394 * SM DS 0D SEMAPHORE DEFINITION * 02790000 - 395 * SMVAL DS F VALUE * 02800000 - 396 * SMPTR DS A POINTER TO FIRST WAITER * 02810000 - 397 * ROUTINES USED: NONE * 02820000 - 398 * PROCEDURE: ADD ONE TO SMVAL; IF > ZERO, RETURN. IF ZERO OR * 02830000 - 399 * LESS, REMOVE FIRST PROCESS FROM WAITER CHAIN; * 02840000 - 400 * UNBLOCK IT; IF NEXTTRYM NOT SET, SET IT AND SET * 02850000 - 401 * NEXTTRY TO THAT PROCESS; RETURN; IF NEXTTRYM SET, * 02860000 - 402 * RETURN. * 02870000 - 403 * ERROR CHECKS: NONE * 02880000 - 404 * INTERRUPTS: OFF * 02890000 - 405 * USER ACCESS: NO * 02900000 - 406 * * 02910000 - 407 *********************************************************************** 02920000 -0 00534 409 XV EQU * . THE XV ROUTINE 02940000 - R:1 00534 410 USING *,1 02950000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 410 in /mbhfs/sos4k.asm on volume: - R:2 00000 411 USING SM,2 . ARGUMENT IS A SEMAPHORE 02960000 - 000534 5830 2000 00000 412 L 3,SMVAL . GET THE VALUE 02970000 - 000538 5A30 1924 00E58 413 A 3,=F'1' . ADD ONE 02980000 - 00053C 5030 2000 00000 414 ST 3,SMVAL . AND STORE IT BACK 02990000 - 000540 47D0 1014 00548 415 BNP XVWAKEUP . IF <=0, SOMEONE'S WAITING 03000000 - 000544 8200 04D8 004D8 416 LPSW RETURN . ELSE RETURN 03010000 - 000548 5840 2004 00004 417 XVWAKEUP L 4,SMPTR . GET THE FIRST OF THE GUYS 03020000 - 418 DROP 15 03030000 - R:4 00000 419 USING PCB,4 03040000 - 00054C D203 2004 4030 00004 00030 420 MVC SMPTR,PCBNSW . REMEMBER THE REST 03050000 - 000552 9200 4019 00019 421 MVI PCBBLOKT,X'00' . WE'RE NO LONGER BLOCKING HIM 03060000 - 000556 95FF 0278 00278 422 CLI NEXTTRYM,X'FF' . IS NEXT TRY MODIFIED? 03070000 - 00055A 4780 1032 00566 423 BE XVRET . IF SO, WELL OK 03080000 - 00055E 5040 0274 00274 424 ST 4,NEXTTRY ELSE MODIFY NEXTTRY 03090000 - 000562 92FF 0278 00278 425 MVI NEXTTRYM,X'FF' . AND SAY SO 03100000 - 000566 8200 04D8 004D8 426 XVRET LPSW RETURN . GET BACK 03110000 - 427 DROP 2,4 03120000 -1 Sample Operating System Version 2.00 Page 14 - Active Usings: PROGRAM,R0 PROGRAM+X'534',R1 SA,R14 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 429 *********************************************************************** 03140000 - 430 * * 03150000 - 431 * XPER ROUTINE (TRAFFIC CONTROLLER) * 03160000 - 432 * * 03170000 - 433 * FUNCTION: TO IMPLEMENT MULTIPROGRAMMING * 03180000 - 434 * DATABASES: NONE * 03190000 - 435 * ROUTINES USED: NONE * 03200000 - 436 * PROCEDURE: STARTING WITH NEXTTRY, SEARCH FOR PROCESS ON ALL * 03210000 - 437 * PCB CHAIN NOT BLOCKED OR STOPPED; IF FOUND, USE AS * 03220000 - 438 * NEW RUNNING, FOR 50 MS OF TIME AND RETURN. ELSE, * 03230000 - 439 * ENTER WAIT STATE WITH INTERRUPTS ON, AND TRY TO * 03240000 - 440 * SCHEDULE AGAIN AFTER INTERRUPT; RETURN. * 03250000 - 441 * ERROR CHECKS: NONE * 03260000 - 442 * INTERRUPTS: OFF * 03270000 - 443 * USER ACCESS: NO * 03280000 - 444 * * 03290000 - 445 *********************************************************************** 03300000 -0 0056A 447 XPER EQU * . ROUTINE XPER: TRAFFIC SCHEDULER 03320000 - 00056A 8000 0078 00078 448 SSM IONEW . MASK OFF INTERRUPTS 03330000 - 00056E 0510 449 BALR 1,0 03340000 - R:1 00570 450 USING *,1 03350000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 450 in /mbhfs/sos4k.asm on volume: - 000570 58A0 0274 00274 451 L 10,NEXTTRY . START LOOKING AT NEXTTRY 03360000 - 000574 18BA 452 LR 11,10 . REMEMBER WHICH THAT WAS 03370000 - R:A 00000 453 USING PCB,10 03380000 - 000576 95FF A019 00019 454 GWLOOP CLI PCBBLOKT,X'FF' . IF IT'S BLOCKED 03390000 - 00057A 4780 1016 00586 455 BE GWINC . IGNORE 03400000 - 00057E 95FF A018 00018 456 CLI PCBSTOPT,X'FF' . ELSE, IF IT'S NOT STOPPED 03410000 - 000582 4770 1030 005A0 457 BNE GWRUN . WE CAN RUN IT 03420000 - 000586 58A0 A010 00010 458 GWINC L 10,PCBNPALL . ELSE, GO TO THE NEXT 03430000 - 00058A 19AB 459 CR 10,11 . IF WE'VE SEEN ALL, QUIT 03440000 - 00058C 4770 1006 00576 460 BNE GWLOOP . ELSE TRY AGAIN 03450000 - 000590 8200 1028 00598 461 LPSW IDLE . SIT AND WAIT 03460000 - 000598 462 DS 0D 03470000 - 000598 FE0200000000056A 463 IDLE DC B'11111110',B'00000010',X'0000',X'00',AL3(XPER) 03480000 -00005A0 D203 0274 A010 00274 00010 465 GWRUN MVC NEXTTRY,PCBNPALL . GET A NEW NEXTTRY 03500000 - 0005A6 9200 0278 00278 466 MVI NEXTTRYM,X'00' . NOT MODIFIED 03510000 - 0005AA 50A0 0270 00270 467 ST 10,RUNNING . GET A NEW RUNNING 03520000 - 0005AE 41E0 A04C 0004C 468 LA 14,PCBISA 03530000 - 0005B2 D203 0050 104C 00050 005BC 469 MVC TIMER,QUANTUM . INTERRUPT AFTER 50 MS 03540000 - 0005B8 8200 04D8 004D8 470 LPSW RETURN . AND GO TO RETURNR 03550000 - 0005BC 00000F00 471 QUANTUM DC X'00000F00' . QUANTUM OF TIME 03560000 - 472 DROP 10 03570000 - R:F 00000 473 USING PCB,15 03580000 -1 Sample Operating System Version 2.00 Page 15 - Active Usings: PROGRAM,R0 PROGRAM+X'570',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 475 *********************************************************************** 03600000 - 476 * * 03610000 - 477 * XEXC ROUTINE * 03620000 - 478 * * 03630000 - 479 * FUNCTION: TO ENTER SMC SECTION * 03640000 - 480 * DATABASES: NONE * 03650000 - 481 * ROUTINES USED: NONE * 03660000 - 482 * PROCEDURE: INCREMENT SMC BYTE IN PCB BY ONE; RETURN. * 03670000 - 483 * ERROR CHECKS: NONE * 03680000 - 484 * INTERRUPTS: OFF * 03690000 - 485 * USER ACCESS: NO * 03700000 - 486 * * 03710000 - 487 *********************************************************************** 03720000 -0 005C0 489 XEXC EQU * . ROUTINE XEXC: ENTER SMC SECTION 03740000 - R:1 005C0 490 USING *,1 03750000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 490 in /mbhfs/sos4k.asm on volume: - 0005C0 1B88 491 SR 8,8 03760000 - 0005C2 4380 F01A 0001A 492 IC 8,PCBINSMC 03770000 - 0005C6 4188 0001 00001 493 LA 8,1(8) . ADD ONE TO SMC BYTE 03780000 - 0005CA 4280 F01A 0001A 494 STC 8,PCBINSMC 03790000 - 0005CE 8200 04D8 004D8 495 LPSW RETURN . AND LEAVE 03800000 -0 497 *********************************************************************** 03820000 - 498 * * 03830000 - 499 * XCOM ROUTINE * 03840000 - 500 * * 03850000 - 501 * FUNCTION: TO LEAVE SMC SECTION * 03860000 - 502 * DATABASES: NONE * 03870000 - 503 * ROUTINES USED: XP, XV * 03880000 - 504 * PROCEDURE: DECREMENT SMC BYTE IN PCB BY ONE; IF NOT ZERO, * 03890000 - 505 * RETURN. ELSE, CHECK FOR STOP WAITING; IF STOP * 03900000 - 506 * WAITING, ALLOW STOP AND BLOCK SELF; RETURN. IF NO * 03910000 - 507 * STOP WAITING, RETURN. * 03920000 - 508 * ERROR CHECKS: NONE * 03930000 - 509 * INTERRUPTS: OFF * 03940000 - 510 * USER ACCESS: NO * 03950000 - 511 * * 03960000 - 512 *********************************************************************** 03970000 -0 005D2 514 XCOM EQU * . ROUTINE XCOM: LEAVE SMC 03990000 - R:1 005D2 515 USING *,1 04000000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 515 in /mbhfs/sos4k.asm on volume: - 0005D2 1B88 516 SR 8,8 04010000 - 0005D4 4380 F01A 0001A 517 IC 8,PCBINSMC 04020000 - 0005D8 0680 518 BCTR 8,0 . SUBTRACT ONE FROM IN SMC BYTE 04030000 - 0005DA 4280 F01A 0001A 519 STC 8,PCBINSMC 04040000 - 0005DE 1288 520 LTR 8,8 . IS IT ZERO? 04050000 - 0005E0 4770 102A 005FC 521 BNZ XCOMRET . NO, THEN GET BACK, OTHERWISE 04060000 - 0005E4 9500 F01B 0001B 522 CLI PCBSW,X'00' . IS STOP WAITING? 04070000 - 0005E8 4780 102A 005FC 523 BE XCOMRET . IF NOT, RETURN 04080000 - 0005EC 9200 F01B 0001B 524 MVI PCBSW,X'00' . STOPS NOT WAITING AFTER THIS 04090000 - 0005F0 4120 F034 00034 525 LA 2,PCBSRS . WE'LL "V" THE STOPPER, 04100000 -1 Sample Operating System Version 2.00 Page 16 - Active Usings: PROGRAM,R0 PROGRAM+X'5D2',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -00005F4 0AE5 526 SVC C'V' 04110000 - 0005F6 4120 F03C 0003C 527 LA 2,PCBSES . AND "P" THE STOPPEE. 04120000 - 0005FA 0AD7 528 SVC C'P' 04130000 - 0005FC 8200 04D8 004D8 529 XCOMRET LPSW RETURN . AND HERE (IF EVER) WE RETURN 04140000 -1 Sample Operating System Version 2.00 Page 17 - Active Usings: PROGRAM,R0 PROGRAM+X'5D2',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 531 *********************************************************************** 04160000 - 532 * * 04170000 - 533 * XA ROUTINE * 04180000 - 534 * XAUTO ROUTINE * 04190000 - 535 * * 04200000 - 536 * FUNCTION: TO ALLOCATE MEMORY * 04210000 - 537 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XAX: * 04220000 - 538 * XAX DS 0D * 04230000 - 539 * XAXSIZE DS F SIZE OF BLOCK TO BE ALLOCATED * 04240000 - 540 * XAXADDR DS A ADDRESS OF FIRST BYTE OF BLOCK* 04250000 - 541 * XAXALGN DS F ALIGNMENT OF BLOCK * 04260000 - 542 * ROUTINES USED: XEXC, XCOM, XP, XV, XB * 04270000 - 543 * PROCEDURE: LOCK FSB SEMAPHORE; SEARCH FREE STORAGE FOR LARGE * 04280000 - 544 * ENOUGH MEMORY BLOCK; ALIGN BOUNDARY; USE XB TO * 04290000 - 545 * CHAIN ANY LEFTOVER BLOCKS TO FREE STORAGE LIST; * 04300000 - 546 * PLACE ADDRESS OF ALLOCATED BLOCK IN XAXADDR; UNLOCK* 04310000 - 547 * FSB SEMAPHORE; RETURN. IF CAN'T SATISFY REQUEST, * 04320000 - 548 * UNLOCK FSB SEMAPHORE, APPLY XP ROUTINE TO MEMORY * 04330000 - 549 * SEMAPHORE, BLOCKING PROCESS RUNNING UNTIL MEMORY * 04340000 - 550 * FREED; THEN UNBLOCK; TRY TO SATISFY REQUEST AGAIN. * 04350000 - 551 * ERROR CHECKS: NONE * 04360000 - 552 * INTERRUPTS: ON * 04370000 - 553 * USER ACCESS: NO * 04380000 - 554 * * 04390000 - 555 *********************************************************************** 04400000 -0 00600 557 XA EQU * . THE XA ROUTINE, TO ALLOCATE 04420000 - R:1 00600 558 USING *,1 04430000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 558 in /mbhfs/sos4k.asm on volume: - 000600 4100 0001 00001 559 LA 0,1 . SET REGISTER ZERO TO ONE TO 04440000 - 000604 47F0 100E 0060E 560 B XACOM . INDICATE C'A' CALL 04450000 - 00608 561 XAUTO EQU * . AUTO STORAGE ENTRY POINT 04460000 - R:1 00608 562 USING *,1 04470000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 562 in /mbhfs/sos4k.asm on volume: - 000608 1B00 563 SR 0,0 . REG0=0 INDICATES C'E' CALL 04480000 - 00060A 5810 1854 00E5C 564 L 1,=A(XA) . RESET BASE REGISTER PROPERLY 04490000 - R:1 00600 565 USING XA,1 04500000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 565 in /mbhfs/sos4k.asm on volume: - 00060E 0A5A 566 XACOM SVC C'!' . ENTER SMC 04510000 - 000610 1872 567 LR 7,2 04520000 - R:7 00000 568 USING XAX,7 . ARGUMENT LIST 04530000 - 000612 5860 7000 00000 569 L 6,XAXSIZE . GET THE SIZE REQUESTED 04540000 - 000616 4120 0184 00184 570 XATOP LA 2,FSBSEM . LOCK THE FSB SEMAPHORE 04550000 - 00061A 0AD7 571 SVC C'P' . 04560000 - 00061C 4150 0180 00180 572 LA 5,FSBPTR . START LOOKING DOWN 04570000 - 000620 5840 0180 00180 573 L 4,FSBPTR . THE FREE STORAGE LIST 04580000 - 000624 5880 7008 00008 574 L 8,XAXALGN . WE WOULD HAVE TO START AT WITH 04590000 - 000628 0680 575 BCTR 8,0 . THIS CONSTANT TO FIND ALIGNMENT 04600000 - R:4 00000 576 USING FSB,4 04610000 - 00062A 1244 577 XALOOP LTR 4,4 . IF AT THE END 04620000 - 00062C 4780 1056 00656 578 BZ XAWAIT . WAIT UNTIL A "FREE" OP 04630000 - 000630 18D4 579 LR 13,4 . FIND THE LOCATION 04640000 -1 Sample Operating System Version 2.00 Page 18 - Active Usings: PROGRAM,R0 XA,R1 FSB,R4 XAX,R7 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000632 06D0 580 BCTR 13,0 . IN THIS BLOCK WITH THIS 04650000 - 000634 16D8 581 OR 13,8 . ALIGNMENT 04660000 - 000636 41DD 0001 00001 582 LA 13,1(13) . THAT'S IT 04670000 - 00063A 189D 583 LR 9,13 . AND NOW GET IN REG 9 04680000 - 00063C 1B94 584 SR 9,4 . WHAT IS WASTED AT THE FRONT 04690000 - 00063E 5830 4004 00004 585 L 3,FSBSIZE . GET SIZE MINUS WASTE AT 04700000 - 000642 1B39 586 SR 3,9 . FRONT, LEAVING EFFECTIVE SIZE 04710000 - 000644 1963 587 CR 6,3 . IS IT ENOUGH? 04720000 - 000646 47D0 1062 00662 588 BNP XAFOUND . EUREKA! 04730000 - 00064A 4150 4000 00000 589 LA 5,FSBNEXT . OH WELL, GET THE NEXT FREE 04740000 - 00064E 5840 4000 00000 590 L 4,FSBNEXT . STORAGE BLOCK ON THE CHAIN 04750000 - 000652 47F0 102A 0062A 591 B XALOOP . BETTER LUCK NEXT TIME 04760000 - 000656 0AE5 592 XAWAIT SVC C'V' . NEED TO WAIT 04770000 - 000658 4120 018C 0018C 593 LA 2,MEMORY . SO WE LET OTHER PEOPLE GET IN 04780000 - 00065C 0AD7 594 SVC C'P' . SO THEY'LL WAKE US UP 04790000 - 00065E 47F0 1016 00616 595 B XATOP . AND THEN WE'LL TRY AGAIN 04800000 - 000662 50D0 7004 00004 596 XAFOUND ST 13,XAXADDR . WE'VE NOW GOT THE ADDRESS 04810000 - 000666 D203 5000 4000 00000 00000 597 MVC 0(4,5),FSBNEXT . UNLINK THE BLOCK OUT 04820000 - 00066C 58C0 4004 00004 598 L 12,FSBSIZE . GET THE WHOLE BLOCK SIZE 04830000 - 000670 4120 E048 00048 599 LA 2,SATEMP . START MAKING UP ARG LISTS 04840000 - R:2 00000 600 USING XBX,2 . FOR THE XB ROUTINE 04850000 - 000674 18AD 601 LR 10,13 . THE STARTING LOCATION 04860000 - 000676 1BA4 602 SR 10,4 . MINUS THE START OF THE BLOCK 04870000 - 000678 4780 1086 00686 603 BZ XANF . IF NONE WASTED AT THE FRONT, SKIP 04880000 - 00067C 5040 2004 00004 604 ST 4,XBXADDR . ELSE FREE, STARTING THERE 04890000 - 000680 50A0 2000 00000 605 ST 10,XBXSIZE . UP TO THE BEGINNING OF THE 04900000 - 000684 0AC2 606 SVC C'B' . ALLOCATION; INSERT IT IN THE CHAIN 04910000 - 000686 18BD 607 XANF LR 11,13 . THE STARTING ADDR PLUS THE SIZE 04920000 - 000688 1AB6 608 AR 11,6 . GIVES THE FIRST UNUSED ADDR 04930000 - 00068A 1BCA 609 SR 12,10 . MINUS THE WASTE AT FRONT, 04940000 - 00068C 1BC6 610 SR 12,6 . MINUS THE PART ALLOCATED. IF 04950000 - 00068E 4780 109C 0069C 611 BZ XARETURN . NONE LEFT OVER, GOOD 04960000 - 000692 50B0 2004 00004 612 ST 11,XBXADDR . ELSE STORE ADDRESS AND 04970000 - 000696 50C0 2000 00000 613 ST 12,XBXSIZE . SIZE, AND LINK ONTO 04980000 - 00069A 0AC2 614 SVC C'B' . FREE STORAGE LIST 04990000 - 615 DROP 2 05000000 - 00069C 4120 0184 00184 616 XARETURN LA 2,FSBSEM . WE ARE DONE, SO NOW SOMEONE 05010000 - 0006A0 0AE5 617 SVC C'V' . ELSE CAN COME IN 05020000 - 0006A2 1200 618 LTR 0,0 . IS THIS FOR AUTOMATIC STORAGE? 05030000 - 0006A4 4770 10B0 006B0 619 BNZ XABACK . IF NOT, RETURN NOW 05040000 - 0006A8 5060 F044 00044 620 ST 6,PCBASIZE . OTHERWISE STORE SIZE AND 05050000 - 0006AC 50D0 F048 00048 621 ST 13,PCBAADDR . ADDRESS OF AUTOMATIC STORAGE 05060000 - 0006B0 0A6B 622 XABACK SVC C',' . LEAVE SMC SECTION 05070000 - 0006B2 8200 04D8 004D8 623 LPSW RETURN . GET BACK JOJO 05080000 - 624 DROP 4,7 05090000 -1 Sample Operating System Version 2.00 Page 19 - Active Usings: PROGRAM,R0 XA,R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 626 *********************************************************************** 05110000 - 627 * * 05120000 - 628 * XF ROUTINE * 05130000 - 629 * * 05140000 - 630 * FUNCTION: TO FREE MEMORY * 05150000 - 631 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XFX: * 05160000 - 632 * XFX DS 0D * 05170000 - 633 * XFXSIZE DS F SIZE OF BLOCK TO BE FREED * 05180000 - 634 * XFXADDR DS A ADDRESS OF FIRST BYTE OF BLOCK* 05190000 - 635 * ROUTINES USED: XEXC, XP, XV, XB, XCOM * 05200000 - 636 * PROCEDURE: LOCK FSB SEMAPHORE; SEARCH FREE STORAGE LIST TO * 05210000 - 637 * FIND IF ANY FREE BLOCK CONTIGUOUSLY FOLLOWS OR * 05220000 - 638 * PRECEDES BLOCK TO BE FREED; IF THERE IS ANY, * 05230000 - 639 * COMPACT THEM INTO A SINGLE BLOCK OF COMBINED SIZE; * 05240000 - 640 * USE XB TO CHAIN COMPACTED BLOCK ONTO FREE STORAGE * 05250000 - 641 * LIST; WAKEUP ALL PROCESSES WAITING ON MEMORY * 05260000 - 642 * SEMAPHORE; UNLOCK FSB SEMAPHORE; RETURN * 05270000 - 643 * ERROR CHECKS: NONE * 05280000 - 644 * INTERRUPTS: ON * 05290000 - 645 * USER ACCESS: NO * 05300000 - 646 * * 05310000 - 647 *********************************************************************** 05320000 -0 006B6 649 XF EQU * . THE XF ROUTINE, TO FREE STORAGE 05340000 - R:1 006B6 650 USING *,1 05350000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 650 in /mbhfs/sos4k.asm on volume: - 0006B6 0A5A 651 SVC C'!' . ENTER SMC SECTION 05360000 - 0006B8 1872 652 LR 7,2 05370000 - R:7 00000 653 USING XFX,7 . THE ARGUMENT LIST 05380000 - 0006BA 5830 7000 00000 654 L 3,XFXSIZE . GET THE SIZE 05390000 - 0006BE 5840 7004 00004 655 L 4,XFXADDR . AND THE ADDRESS 05400000 - 0006C2 1853 656 LR 5,3 . GET THE ADDRESS OF THE END OF THE 05410000 - 0006C4 1A54 657 AR 5,4 . BLOCK TO BE FREED 05420000 - 0006C6 4120 0184 00184 658 LA 2,FSBSEM . LOCK FSBSEM 05430000 - 0006CA 0AD7 659 SVC C'P' 05440000 - 0006CC 4180 0180 00180 660 LA 8,FSBPTR . START LOOKING DOWN THE FREE 05450000 - 0006D0 5860 0180 00180 661 L 6,FSBPTR . STORAGE LIST, FOR COMPACTION 05460000 - R:6 00000 662 USING FSB,6 05470000 - 0006D4 1266 663 XFLOOP LTR 6,6 . ARE WE THROUGH? 05480000 - 0006D6 4780 105E 00714 664 BZ XFLINK . IF SO, JUST ADD IT ON 05490000 - 0006DA 5890 6000 00000 665 L 9,FSBNEXT . IF NOT. GET THE NEXT PTR 05500000 - 0006DE 1965 666 CR 6,5 . IS THIS BLOCK RIGHT AFTER OURS? 05510000 - 0006E0 4770 103A 006F0 667 BNE XFTHEN . IF NOT, OK. BUT IF IT IS, 05520000 - 0006E4 5098 0000 00000 668 ST 9,0(8) . WE CAN COMPACT, SO UNCHAIN IT 05530000 - 0006E8 5A30 6004 00004 669 A 3,FSBSIZE . AND REMEMBER THE NEW SIZE 05540000 - 0006EC 47F0 1050 00706 670 B XFBACKUP . AND ON TO THE NEXT 05550000 - 0006F0 18A6 671 XFTHEN LR 10,6 . MAYBE IT'S RIGHT BEFORE OURS 05560000 - 0006F2 5AA0 6004 00004 672 A 10,FSBSIZE . GET ENDING ADDRESS OF FREE BLOCK 05570000 - 0006F6 19A4 673 CR 10,4 . IS IT RIGHT BEFORE OURS? 05580000 - 0006F8 4770 1052 00708 674 BNE XFINC . OH FUDGE! NO! 05590000 - 0006FC 5098 0000 00000 675 ST 9,0(8) . IF SO, UNLINK IT 05600000 - 000700 1846 676 LR 4,6 . GET THE NEW BEGINNING LOCATION 05610000 - 000702 5A30 6004 00004 677 A 3,FSBSIZE . AND NEW SIZE OF FREE BLOCK 05620000 - 000706 1868 678 XFBACKUP LR 6,8 . BACK UP ONE FSB 05630000 -1 Sample Operating System Version 2.00 Page 20 - Active Usings: PROGRAM,R0 PROGRAM+X'6B6',R1 FSB,R6 XFX,R7 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000708 4180 6000 00000 679 XFINC LA 8,FSBNEXT . ON TO THE NEXT FSB 05640000 - 00070C 5860 6000 00000 680 L 6,FSBNEXT 05650000 - 000710 47F0 101E 006D4 681 B XFLOOP . TRY, TRY AGAIN 05660000 - 000714 4120 E048 00048 682 XFLINK LA 2,SATEMP . START TO CALL XB 05670000 - R:2 00000 683 USING XBX,2 05680000 - 000718 5030 2000 00000 684 ST 3,XBXSIZE . STORE SIZE 05690000 - 00071C 5040 2004 00004 685 ST 4,XBXADDR . AND ADDRESS 05700000 - 000720 0AC2 686 SVC C'B' . LINK IT ONTO THE FSB CHAIN 05710000 - R:2 00000 687 USING SM,2 05720000 - 000722 4120 018C 0018C 688 LA 2,MEMORY . GET VALUE OF MEMORY SEMAPHORE 05730000 - 000726 41B0 0001 00001 689 LA 11,1(0,0) . SUBTRACT FROM ONE, IT'S A HANDLE 05740000 - 00072A 5BB0 2000 00000 690 S 11,SMVAL . ON THE # OF PEOPLE WAITING 05750000 - 691 DROP 2 05760000 - 00072E 46B0 1088 0073E 692 XFVLOOP BCT 11,XFVDO . LOOP IF ANYONE ELSE IS WAITING 05770000 - 000732 4120 0184 00184 693 LA 2,FSBSEM . WE'RE THROUGH, SO 05780000 - 000736 0AE5 694 SVC C'V' . UNBLOCK FSBSEM 05790000 - 000738 0A6B 695 SVC C',' . LEAVE SMC 05800000 - 00073A 8200 04D8 004D8 696 LPSW RETURN . RETURN 05810000 - 00073E 0AE5 697 XFVDO SVC C'V' . WAKE SOMEONE UP 05820000 - 000740 47F0 1078 0072E 698 B XFVLOOP . TRY AGAIN FOR ANOTHER 05830000 - 699 DROP 6,7 05840000 -1 Sample Operating System Version 2.00 Page 21 - Active Usings: PROGRAM,R0 PROGRAM+X'6B6',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 701 *********************************************************************** 05860000 - 702 * * 05870000 - 703 * XB ROUTINE * 05880000 - 704 * * 05890000 - 705 * FUNCTION: TO CHAIN A STORAGE BLOCK ONTO FREE STORAGE LIST * 05900000 - 706 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XBX: * 05910000 - 707 * XBX DS 0D * 05920000 - 708 * XBXSIZE DS F SIZE OF BLOCK * 05930000 - 709 * XBXADDR DS A ADDRESS OF FIRST BYTE OF BLOCK* 05940000 - 710 * ROUTINES USED: NONE * 05950000 - 711 * PROCEDURE: SEARCH FREE STORAGE LIST TO FIND WHERE TO INSERT * 05960000 - 712 * FREE BLOCK IN ORDER OF INCREASING SIZE; FORMAT * 05970000 - 713 * BLOCK LIKE AN FSB; INSERT; RETURN. * 05980000 - 714 * ERROR CHECKS: NONE * 05990000 - 715 * INTERRUPTS: OFF * 06000000 - 716 * USER ACCESS: NO * 06010000 - 717 * COMMENTS: SINCE XB ROUTINE ONLY CALLED BY XA AND XF, FSB * 06020000 - 718 * SEMAPHORE IS ALREADY LOCKED. * 06030000 - 719 * * 06040000 - 720 *********************************************************************** 06050000 -0 00744 722 XB EQU * 06070000 - R:1 00744 723 USING *,1 06080000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 723 in /mbhfs/sos4k.asm on volume: - R:2 00000 724 USING XBX,2 . ARGUMENT LIST 06090000 - 000744 5830 2000 00000 725 L 3,XBXSIZE . GET THE SIZE 06100000 - 000748 5840 2004 00004 726 L 4,XBXADDR . AND THE ADDRESS 06110000 - 00074C 4180 0180 00180 727 LA 8,FSBPTR . START LOOKING DOWN THE CHAIN 06120000 - 000750 5860 0180 00180 728 L 6,FSBPTR 06130000 - 000754 1266 729 LTR 6,6 . IF ZERO POINTER, WE ARE AT 06140000 - 000756 4780 102C 00770 730 BZ XBINSERT . END OF CHAIN ALREADY 06150000 - R:6 00000 731 USING FSB,6 06160000 - 00075A 5930 6004 00004 732 XBLOOP C 3,FSBSIZE . IF THE SIZE OF OURS IS LESS, 06170000 - 00075E 47D0 102C 00770 733 BNP XBINSERT . TIME TO INSERT 06180000 - 000762 4180 6000 00000 734 LA 8,FSBNEXT . ELSE GO ON TO THE NEXT 06190000 - 000766 5860 6000 00000 735 L 6,FSBNEXT 06200000 - 00076A 1266 736 LTR 6,6 . IF NOT ALREADY THROUGH 06210000 - 00076C 4770 1016 0075A 737 BNZ XBLOOP . BRANCH BACK 06220000 - 000770 5048 0000 00000 738 XBINSERT ST 4,0(8) . NOW, LINK OURS ON 06230000 - 739 DROP 6 06240000 - R:4 00000 740 USING FSB,4 06250000 - 000774 5060 4000 00000 741 ST 6,FSBNEXT . MAKE OURS POINT TO THE NEXT 06260000 - 000778 5030 4004 00004 742 ST 3,FSBSIZE . WITH THE RIGHT SIZE 06270000 - 00077C 8200 04D8 004D8 743 LPSW RETURN . AND RETURN 06280000 - 744 DROP 2,4 06290000 -1 Sample Operating System Version 2.00 Page 22 - Active Usings: PROGRAM,R0 PROGRAM+X'744',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 746 *********************************************************************** 06310000 - 747 * * 06320000 - 748 * XC ROUTINE * 06330000 - 749 * * 06340000 - 750 * FUNCTION: TO CREATE A PROCESS * 06350000 - 751 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XCX: * 06360000 - 752 * XCX DS 0D * 06370000 - 753 * XCXNAME DS CL8 NAME OF PROCESS TO BE CREATED * 06380000 - 754 * ROUTINES USED: XEXC, XCOM, XN, XA, XI, XQUE * 06390000 - 755 * PROCEDURE: USE XA TO ALLOCATE NEW PCB; PLACE XCXNAME IN PCB; * 06400000 - 756 * INITIALIZE SEMAPHORES; STOP; BLOCK; OUT OF SMC; * 06410000 - 757 * CALL XI TO LINK PCB ONTO PCB CHAINS; RETURN. * 06420000 - 758 * ERROR CHECKS: IF NAME ALREADY USED IN THIS GROUP, XQUE ENTERED. * 06430000 - 759 * INTERRUPTS: ON * 06440000 - 760 * USER ACCESS: YES * 06450000 - 761 * * 06460000 - 762 *********************************************************************** 06470000 -0 00780 764 XC EQU * . THE XC ROUTINE: CREATE A PROCESS 06490000 - R:1 00780 765 USING *,1 06500000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 765 in /mbhfs/sos4k.asm on volume: - 000780 1872 766 LR 7,2 06510000 - R:7 00000 767 USING XCX,7 . ARGUMENT LIST 06520000 - 000782 4120 E048 00048 768 LA 2,SATEMP . READY TO MAKE CALLS OUT 06530000 - R:2 00000 769 USING XNX,2 . A XN-LIKE ARGUMENT LIST 06540000 - 000786 D207 2000 7000 00000 00000 770 MVC XNXNAME,XCXNAME . GET THE NAME 06550000 - 00078C 0AD5 771 SVC C'N' . AND CALL TO FIND THE PCB 06560000 - 00078E D503 2008 16E0 00008 00E60 772 CLC XNXADDR,=A(0) . SEE IF THERE 06570000 - 000794 4770 1044 007C4 773 BNE XCERR . IF ALREADY EXISTS, BAD 06580000 - 000798 0A5A 774 SVC C'!' . ENTER SMC SECTION 06590000 - 775 DROP 2 06600000 - R:2 00000 776 USING XAX,2 . READY TO CALL XA 06610000 - 00079A D203 2000 16E4 00000 00E64 777 MVC XAXSIZE,=A(LENPCB) . WE KNOW THE SIZE 06620000 - 0007A0 D203 2008 16E8 00008 00E68 778 MVC XAXALGN,=F'8' . AND THE ALIGNMENT 06630000 - 0007A6 0AC1 779 SVC C'A' . SO CALL 06640000 - 0007A8 5820 2004 00004 780 L 2,XAXADDR . FIND THE ADDRESS 06650000 - 781 DROP 2,15 06660000 - R:2 00000 782 USING PCB,2 . FILL IN THE PCB 06670000 - 0007AC D207 2000 7000 00000 00000 783 MVC PCBNAME,XCXNAME . GIVE IT A NAME 06680000 - 0007B2 92FF 2018 00018 784 MVI PCBSTOPT,X'FF' . IT'S STOPPED 06690000 - 0007B6 D232 2019 1B01 00019 01281 785 MVC PCBBLOKT(PCBISA-PCBBLOKT),TEMPLATE+1 INITIALIZE PCB 06700000 - 0007BC 0AC9 786 SVC C'I' . THREAD IT ON 06710000 - 0007BE 0A6B 787 SVC C',' . LEAVE SMC SECTION 06720000 - 0007C0 8200 04D8 004D8 788 LPSW RETURN . AND RETURN 06730000 - 0007C4 0A6F 789 XCERR SVC C'?' . IF ALREADY EXISTS,KERROR 06740000 - 790 DROP 2,7 06750000 -1 Sample Operating System Version 2.00 Page 23 - Active Usings: PROGRAM,R0 PROGRAM+X'780',R1 SA,R14 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 792 *********************************************************************** 06770000 - 793 * * 06780000 - 794 * XD ROUTINE * 06790000 - 795 * * 06800000 - 796 * FUNCTION: TO DESTROY A PROCESS * 06810000 - 797 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XDX: * 06820000 - 798 * XDX DS 0D * 06830000 - 799 * XDXNAME DS CL8 NAME OF PROCESS TO BE DESTROYED* 06840000 - 800 * ROUTINES USED: XEXC, XJ, XS, XN, XF, XCOM, XQUE * 06850000 - 801 * PROCEDURE: USE XN TO FIND PCB FOR PROCESS TO BE DESTROYED; * 06860000 - 802 * USE XJ TO UNLOCK PCB FROM PROCESS CHAINS; IF ANY * 06870000 - 803 * MESSAGES FOR THIS PROCESS, FREE STORAGE FOR THEM; * 06880000 - 804 * IF THERE IS ANY AUTOMATIC STORAGE, FREE IT; * 06890000 - 805 * FREE STORAGE FOR PCB; RETURN. * 06900000 - 806 * ERROR CHECKS: IF NAME DOESN'T EXIST OR PROCESS NOT STOPPED, * 06910000 - 807 * XQUE ENTERED. * 06920000 - 808 * INTERRUPTS: ON * 06930000 - 809 * USER ACCESS: YES * 06940000 - 810 * * 06950000 - 811 *********************************************************************** 06960000 -0 007C6 813 XD EQU * . XD ROUTINE: DESTROY A PROCESS 06980000 - R:1 007C6 814 USING *,1 06990000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 814 in /mbhfs/sos4k.asm on volume: - 0007C6 1872 815 LR 7,2 07000000 - R:7 00000 816 USING XDX,7 . ARG LIST 07010000 - 0007C8 4120 E048 00048 817 LA 2,SATEMP . READY TO CALL OUT 07020000 - R:2 00000 818 USING XNX,2 . WILL CALL XN 07030000 - 0007CC D207 2000 7000 00000 00000 819 MVC XNXNAME,XDXNAME . GET NAME 07040000 - 0007D2 0AD5 820 SVC C'N' . AND CALL 07050000 - 0007D4 5820 2008 00008 821 L 2,XNXADDR . GET ADDRESS 07060000 - 822 DROP 2 07070000 - 0007D8 1222 823 LTR 2,2 . IF ADDRESS IS NULL, 07080000 - 0007DA 4780 107A 00840 824 BZ XDERR . IT'S AN ERROR 07090000 - R:2 00000 825 USING PCB,2 07100000 - 0007DE 95FF 2018 00018 826 CLI PCBSTOPT,X'FF' . IF NOT STOPPED 07110000 - 0007E2 4770 107A 00840 827 BNE XDERR . IT'S AN ERROR 07120000 - 0007E6 0A5A 828 SVC C'!' . ENTER SMC SECTION 07130000 - 829 DROP 2 07140000 - R:F 00000 830 USING PCB,15 07150000 - 0007E8 0AD1 831 SVC C'J' . ELSE UNTHREAD THE ENTRY 07160000 - 0007EA 1882 832 LR 8,2 . REMEMBER THE PCB POINTER 07170000 - 0007EC 4120 E048 00048 833 LA 2,SATEMP . READY TO CALL OUT AGAIN 07180000 - R:8 00000 834 USING PCB,8 07190000 - ** ASMA300W USING overridden by a prior active USING on statement number 830 - ** ASMA435I Record 834 in /mbhfs/sos4k.asm on volume: - 835 DROP 15 07200000 - 0007F0 5890 802C 0002C 836 L 9,PCBFM . GET FIRST MESSAGE 07210000 - 0007F4 1299 837 XDLOOP LTR 9,9 . ANY MORE MESSAGES? 07220000 - 0007F6 4780 1054 0081A 838 BZ XDCHECK . IF NOT, FINISH UP 07230000 - R:9 00000 839 USING MSG,9 07240000 - 0007FA 58A0 9004 00004 840 L 10,MSGNEXT . ELSE REMEMBER NEXT 07250000 - 0007FE 58B0 9008 00008 841 L 11,MSGSIZE . GET THE SIZE 07260000 - 000802 41BB 000F 0000F 842 LA 11,15(11) . AND MAKE IT SOME NUMBER 07270000 -1 Sample Operating System Version 2.00 Page 24 - Active Usings: PROGRAM,R0 PROGRAM+X'7C6',R1 XDX,R7 PCB,R8 MSG,R9 SA,R14 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000806 54B0 16A6 00E6C 843 N 11,=F'-8' . OF DOUBLEWORDS 07280000 - R:2 00000 844 USING XFX,2 07290000 - 00080A 5090 2004 00004 845 ST 9,XFXADDR . FREE THE LOCATION 07300000 - 00080E 50B0 2000 00000 846 ST 11,XFXSIZE . THE NUMBER OF WORDS 07310000 - 000812 0AC6 847 SVC C'F' . DO IT 07320000 - 000814 189A 848 LR 9,10 . ON TO THE NEXT 07330000 - 000816 47F0 102E 007F4 849 B XDLOOP . GET THE NEXT MESSAGE 07340000 - 00081A D503 8048 169A 00048 00E60 850 XDCHECK CLC PCBAADDR(4),=A(0) . HAS AUTOMATIC STORAGE BEEN 07350000 - 000820 4780 1068 0082E 851 BE XDTHEN . ALLOCATED? IF NOT, GO FINISH UP 07360000 - 000824 4120 8044 00044 852 LA 2,PCBASIZE . SET UP THE ARGUMENT LIST 07370000 - 000828 0AC6 853 SVC C'F' . FREE IT 07380000 - 00082A 4120 E048 00048 854 LA 2,SATEMP . RESET REGISTER 2 07390000 - 00082E 5080 2004 00004 855 XDTHEN ST 8,XFXADDR . READY TO FREE THE PCB 07400000 - 000832 D203 2000 169E 00000 00E64 856 MVC XFXSIZE,=A(LENPCB) . THE SIZE 07410000 - 000838 0AC6 857 SVC C'F' . FREE IT 07420000 - 00083A 0A6B 858 SVC C',' . LEAVE SMC 07430000 - 00083C 8200 04D8 004D8 859 LPSW RETURN . AND RETURN 07440000 - 000840 0A6F 860 XDERR SVC C'?' . IF PROCESS DOES NOT EXIST 07450000 - 861 DROP 2,7,8,9 07460000 - R:F 00000 862 USING PCB,15 07470000 -- - 864 *********************************************************************** 07490000 - 865 * * 07500000 - 866 * XH ROUTINE * 07510000 - 867 * * 07520000 - 868 * FUNCTION: TO HALT A JOB * 07530000 - 869 * DATABASES: NONE * 07540000 - 870 * ROUTINES USED: XS, XR * 07550000 - 871 * PROCEDURE: SEND MESSAGE TO SUPERVISOR PROCESS FOR THIS JOB * 07560000 - 872 * INDICATING NORMAL TERMINATION; TRIES TO READ * 07570000 - 873 * MESSAGES FOREVER LOOPING; BLOCKS ITSELF, THEREBY * 07580000 - 874 * NEVER RETURNING. * 07590000 - 875 * ERROR CHECKS: NONE * 07600000 - 876 * INTERRUPTS: ON * 07610000 - 877 * USER ACCESS: YES * 07620000 - 878 * COMMENTS: USER NORMALLY USES THIS ROUTINE TO END A JOB. * 07630000 - 879 * * 07640000 - 880 *********************************************************************** 07650000 -0 00842 882 XH EQU * . THE XH ROUTINE: HALT A JOB 07670000 - R:1 00842 883 USING *,1 07680000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 883 in /mbhfs/sos4k.asm on volume: - 000842 4120 1012 00854 884 LA 2,XHMSG1 . SEND A MESSAGE TO *IBSUP 07690000 - 000846 0AE2 885 SVC C'S' . SEND IT 07700000 - 000848 4120 102A 0086C 886 XHLOOP LA 2,XHMSG2 . READY TO READ A REPLY 07710000 - 00084C 0AD9 887 SVC C'R' . WHICH NEVER COMES 07720000 - 00084E 47F0 1006 00848 888 B XHLOOP . BUT IF IT DOES WERE READY 07730000 - 000854 889 DS 0F 07740000 - 000854 5CC9C2E2E4D74040 890 XHMSG1 DC CL8'*IBSUP' . SAY TO *IBSUP 07750000 - 00085C 0000000C 891 DC F'12' . TWELVE CHARACTERS 07760000 - 000860 D7D9D6C7D9C1D440 892 DC C'PROGRAM HALT' . SAYING WERE OK 07770000 - 00086C 893 XHMSG2 DS CL8 . WHO SENDS US A MESSAGE 07780000 -1 Sample Operating System Version 2.00 Page 25 - Active Usings: PROGRAM,R0 PROGRAM+X'842',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000874 00000001 894 DC F'1' . ONE CHARACTER 07790000 - 000878 895 DS CL1,0H . WHICH GOES HERE 07800000 -1 Sample Operating System Version 2.00 Page 26 - Active Usings: PROGRAM,R0 PROGRAM+X'842',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 897 *********************************************************************** 07820000 - 898 * * 07830000 - 899 * XI ROUTINE * 07840000 - 900 * * 07850000 - 901 * FUNCTION: TO CHAIN A PCB ONTO PROCESS CHAINS * 07860000 - 902 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS OF A PCB * 07870000 - 903 * ROUTINES USED: NONE * 07880000 - 904 * PROCEDURE: POINTER USED TO CHAIN PCB INTO ALL PCB CHAIN AND * 07890000 - 905 * THIS GROUP CHAIN RIGHT AFTER RUNNING PCB; RETURN. * 07900000 - 906 * ERROR CHECKS: NONE * 07910000 - 907 * INTERRUPTS: OFF * 07920000 - 908 * USER ACCESS: NO * 07930000 - 909 * * 07940000 - 910 *********************************************************************** 07950000 -0 0087A 912 XI EQU * . THE XI ROUTINE: THREAD IN A PCB 07970000 - R:1 0087A 913 USING *,1 07980000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 913 in /mbhfs/sos4k.asm on volume: - 00087A 58A0 F010 00010 914 L 10,PCBNPALL . GET THE NEXT 'ALL' PCB 07990000 - 00087E 5020 F010 00010 915 ST 2,PCBNPALL . STORE THIS PCB RIGNT AFTER MINE 08000000 - 916 DROP 15 08010000 - R:A 00000 917 USING PCB,10 08020000 - 000882 5020 A014 00014 918 ST 2,PCBLPALL . THE NEXT ONE DOWN POINTS BACK 08030000 - 919 DROP 10 08040000 - R:2 00000 920 USING PCB,2 08050000 - 000886 50F0 2014 00014 921 ST 15,PCBLPALL . THIS PCB POINTS BACK 08060000 - 00088A 50A0 2010 00010 922 ST 10,PCBNPALL . AND FORWARD 08070000 - 923 DROP 2 08080000 - R:F 00000 924 USING PCB,15 08090000 - 00088E 58A0 F008 00008 925 L 10,PCBNPTG . GET NEXT "THIS GROUP" PCB 08100000 - 000892 5020 F008 00008 926 ST 2,PCBNPTG . RUNNING PCB POINTS TO NEW MEMBER 08110000 - 927 DROP 15 . OF PROCESS GROUP 08120000 - R:A 00000 928 USING PCB,10 08130000 - 000896 5020 A00C 0000C 929 ST 2,PCBLPTG . NEXT PCB DOWN POINTS BACK 08140000 - 930 DROP 10 08150000 - R:2 00000 931 USING PCB,2 08160000 - 00089A 50F0 200C 0000C 932 ST 15,PCBLPTG . AND WE POINT BACKWARD 08170000 - 00089E 50A0 2008 00008 933 ST 10,PCBNPTG . AND FORWARD 08180000 - 934 DROP 2 08190000 - 0008A2 8200 04D8 004D8 935 LPSW RETURN . RETURN 08200000 - R:F 00000 936 USING PCB,15 08210000 -1 Sample Operating System Version 2.00 Page 27 - Active Usings: PROGRAM,R0 PROGRAM+X'87A',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 938 *********************************************************************** 08230000 - 939 * * 08240000 - 940 * XJ ROUTINE * 08250000 - 941 * * 08260000 - 942 * FUNCTION: TO UNCHAIN A PCB FROM PROCESS CHAINS * 08270000 - 943 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS OF A PCB * 08280000 - 944 * ROUTINES USED: NONE * 08290000 - 945 * PROCEDURE: POINTERS TO PCB IN ALL PCB CHAIN AND THIS GROUP * 08300000 - 946 * CHAIN MODIFIED WITHOUT FREEING STORAGE; RETURN. * 08310000 - 947 * ERROR CHECKS: NONE * 08320000 - 948 * INTERRUPTS: OFF * 08330000 - 949 * USER ACCESS: NO * 08340000 - 950 * * 08350000 - 951 *********************************************************************** 08360000 -0 008A6 953 XJ EQU * . THE XJ ROUTINE: UNTHREAD A PCB 08380000 - R:1 008A6 954 USING *,1 08390000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 954 in /mbhfs/sos4k.asm on volume: - 955 DROP 15 08400000 - R:2 00000 956 USING PCB,2 08410000 - 0008A6 58B0 2014 00014 957 L 11,PCBLPALL . GET PRECEDING PCB 08420000 - 0008AA 58A0 2010 00010 958 L 10,PCBNPALL . AND FOLLOWING ONE IN "ALL" 08430000 - 959 DROP 2 . CHAIN 08440000 - R:B 00000 960 USING PCB,11 08450000 - 0008AE 50A0 B010 00010 961 ST 10,PCBNPALL . LAST POINTS TO NEXT 08460000 - 962 DROP 11 08470000 - R:A 00000 963 USING PCB,10 08480000 - 0008B2 50B0 A014 00014 964 ST 11,PCBLPALL . NEXT POINTS TO LAST 08490000 - 965 DROP 10 08500000 - R:2 00000 966 USING PCB,2 08510000 - 0008B6 58B0 200C 0000C 967 L 11,PCBLPTG . REDO FOR THIS GROUP PCB CHAIN 08520000 - 0008BA 58A0 2008 00008 968 L 10,PCBNPTG 08530000 - 969 DROP 2 08540000 - R:B 00000 970 USING PCB,11 08550000 - 0008BE 50A0 B008 00008 971 ST 10,PCBNPTG . LAST POINTS TO NEXT 08560000 - 972 DROP 11 08570000 - R:A 00000 973 USING PCB,10 08580000 - 0008C2 50B0 A00C 0000C 974 ST 11,PCBLPTG . NEXT POINTS TO LAST 08590000 - 975 DROP 10 08600000 - 0008C6 8200 04D8 004D8 976 LPSW RETURN . AND RETURN 08610000 - R:F 00000 977 USING PCB,15 08620000 -1 Sample Operating System Version 2.00 Page 28 - Active Usings: PROGRAM,R0 PROGRAM+X'8A6',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 979 *********************************************************************** 08640000 - 980 * * 08650000 - 981 * XN ROUTINE * 08660000 - 982 * * 08670000 - 983 * FUNCTION: TO FIND THE PCB FOR A PROCESS GIVEN ITS NAME ONLY * 08680000 - 984 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XNX * 08690000 - 985 * XNX DS 0D * 08700000 - 986 * XNXNAME DS CL8 NAME OF PROCESS * 08710000 - 987 * XNXADDR DS A ADDRESS OF PCB * 08720000 - 988 * ROUTINES USED: NONE * 08730000 - 989 * PROCEDURE: SEARCH THIS GROUP PCB CHAIN FOR NAME; IF FOUND, * 08740000 - 990 * STORE POINTER IN XNXADDR. IF NOT FOUND, STORE * 08750000 - 991 * ZERO IN XNXADDR; RETURN. * 08760000 - 992 * ERROR CHECKS: NONE * 08770000 - 993 * INTERRUPTS: OFF * 08780000 - 994 * USER ACCESS: YES * 08790000 - 995 * * 08800000 - 996 *********************************************************************** 08810000 -0 008CA 998 XN EQU * . THE XN ROUTINE: FIND A NAMED PCB 08830000 - R:1 008CA 999 USING *,1 08840000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 999 in /mbhfs/sos4k.asm on volume: - R:2 00000 1000 USING XNX,2 . THE ARG LIST 08850000 - 0008CA 18AF 1001 LR 10,15 . FIRST PCB TO LOOK AT IS OURS 08860000 - 1002 DROP 15 08870000 - R:A 00000 1003 USING PCB,10 08880000 - 0008CC 58A0 A008 00008 1004 XNXLOOP L 10,PCBNPTG . LOOK AT NEXT PCB 08890000 - 0008D0 D507 A000 2000 00000 00000 1005 CLC PCBNAME,XNXNAME . HAS IT THE RIGHT NAME? 08900000 - 0008D6 4780 101A 008E4 1006 BE XNXFOUND . IF YES, OH JOY. 08910000 - 0008DA 19AF 1007 CR 10,15 . IF NOT, ARE WE THROUGH? 08920000 - 0008DC 4770 1002 008CC 1008 BNE XNXLOOP . IF NOT, TRY THE NEXT PCB 08930000 - 0008E0 41A0 0000 00000 1009 LA 10,0 . ELSE, IT'S NOT HERE 08940000 - 0008E4 50A0 2008 00008 1010 XNXFOUND ST 10,XNXADDR . FOUND IT. SAY WHERE. 08950000 - 0008E8 8200 04D8 004D8 1011 LPSW RETURN . AND RETURN 08960000 - 1012 DROP 2,10 08970000 - R:F 00000 1013 USING PCB,15 08980000 -1 Sample Operating System Version 2.00 Page 29 - Active Usings: PROGRAM,R0 PROGRAM+X'8CA',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 1015 *********************************************************************** 09000000 - 1016 * * 09010000 - 1017 * XR ROUTINE * 09020000 - 1018 * * 09030000 - 1019 * FUNCTION: TO READ A MESSAGE * 09040000 - 1020 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XRX * 09050000 - 1021 * XRX DS 0D * 09060000 - 1022 * XRXNAME DS CL8 NAME OF SENDER PROCESS * 09070000 - 1023 * XRXSIZE DS F SIZE OF MESSAGE TEXT * 09080000 - 1024 * XRXTEXT DS C TEXT OF MESSAGE * 09090000 - 1025 * ROUTINES USED: XP, XEXC, XN, XCOM, XF * 09100000 - 1026 * PROCEDURE: USE XP ON MESSAGE SEMAPHORE RECEIVER TO SEE IF ANY * 09110000 - 1027 * MESSAGES WAITING; IF NONE, PROCESS BLOCKED UNTIL * 09120000 - 1028 * THERE IS ONE; LOCK MESSAGE CHAIN; REMOVE A MESSAGE * 09130000 - 1029 * FROM CHAIN AND UNLOCK IT; MOVE TEXT OF MESSAGE, * 09140000 - 1030 * PADDING WITH BLANKS OR TRUNCATING AS NECESSARY; * 09150000 - 1031 * INDICATE CORRECT MESSAGE LENGTH AND NAME OF * 09160000 - 1032 * MESSAGE SENDER; FREE STORAGE USED TO HOLD MESSAGE, * 09170000 - 1033 * AND RETURN. * 09180000 - 1034 * ERROR CHECKS: NONE * 09190000 - 1035 * INTERRUPTS: ON * 09200000 - 1036 * USER ACCESS: YES * 09210000 - 1037 * * 09220000 - 1038 *********************************************************************** 09230000 -0 008EC 1040 XR EQU * . THE XR ROUTINE: READ A MESSAGE 09250000 - R:1 008EC 1041 USING *,1 09260000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 1041 in /mbhfs/sos4k.asm on volume: - 0008EC 1872 1042 LR 7,2 09270000 - R:7 00000 1043 USING XRX,7 . ARG LIST 09280000 - 0008EE 4120 F024 00024 1044 LA 2,PCBMSR . SEE IF MESSAGES WAITING 09290000 - 0008F2 0AD7 1045 SVC C'P' 09300000 - 0008F4 0A5A 1046 SVC C'!' . ENTER SMC SECTION 09310000 - 0008F6 4120 F01C 0001C 1047 LA 2,PCBMSC . THEN LOCK THE MESSAGE CHAIN 09320000 - 0008FA 0AD7 1048 SVC C'P' 09330000 - 0008FC 5850 F02C 0002C 1049 L 5,PCBFM . GET THE FIRST MESSAGE 09340000 - R:5 00000 1050 USING MSG,5 09350000 - 000900 D203 F02C 5004 0002C 00004 1051 MVC PCBFM,MSGNEXT . REMEMBER THE NEXT 09360000 - 000906 0AE5 1052 SVC C'V' . UNLOCK THE MESSAGE CHAIN 09370000 - 000908 5860 7008 00008 1053 L 6,XRXSIZE . GET THE BUFFER CAPACITY 09380000 - 00090C 5B60 1584 00E70 1054 S 6,=F'2' . MINUS 1, MINUS 1 09390000 - 000910 9240 700C 0000C 1055 MVI XRXTEXT,C' ' . MOVE IN A BLANK 09400000 - 000914 4740 1030 0091C 1056 BM XRNOB 09410000 - 000918 4460 1080 0096C 1057 EX 6,XRFILL . THEN FILL THE REST WITH BLANKS 09420000 - 00091C 4166 0001 00001 1058 XRNOB LA 6,1(6) . THEN GET PROPER BUFFER COUNT 09430000 - 000920 5960 5008 00008 1059 C 6,MSGSIZE . COMPARE WITH MESSAGE LENGTH 09440000 - 000924 4740 1042 0092E 1060 BL XRTHEN . IF LESS, HANDLE ACCORDINGLY 09450000 - 000928 5860 5008 00008 1061 L 6,MSGSIZE . ELSE COUNT FOR MVC IS MESSAGE 09460000 - 00092C 0660 1062 BCTR 6,0 . SIZE MINUS ONE 09470000 - 00092E 1266 1063 XRTHEN LTR 6,6 . ANY CHARACTERS TO MOVE? 09480000 - 000930 4740 104C 00938 1064 BM XRAFT . IF NOT, DON'T 09490000 - 000934 4460 1086 00972 1065 EX 6,XRMOVE . ELSE MOVE THEM 09500000 - 000938 4166 0001 00001 1066 XRAFT LA 6,1(6) . THEN GET LENGTH 09510000 - 00093C 5060 7008 00008 1067 ST 6,XRXSIZE . STORE IT 09520000 -1 Sample Operating System Version 2.00 Page 30 - Active Usings: PROGRAM,R0 PROGRAM+X'8EC',R1 MSG,R5 XRX,R7 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000940 58A0 5000 00000 1068 L 10,MSGSENDR . GET SENDER'S PCB 09530000 - 1069 DROP 15 09540000 - R:A 00000 1070 USING PCB,10 09550000 - 000944 D207 7000 A000 00000 00000 1071 MVC XRXNAME,PCBNAME . AND STORE SENDER'S NAME 09560000 - 00094A 5860 5008 00008 1072 L 6,MSGSIZE . GET SIZE OF MESSAGE TEXT 09570000 - 00094E 4166 000C 0000C 1073 LA 6,LENMSG(6) . ADD SIZE OF MESSAGE BLOCK 09580000 - 000952 4166 0007 00007 1074 LA 6,7(6) . AND TRUNCATE 09590000 - 000956 5460 1580 00E6C 1075 N 6,=F'-8' . UP 09600000 - 00095A 1825 1076 LR 2,5 . SET UP POINTER TO XFX 09610000 - R:2 00000 1077 USING XFX,2 09620000 - 00095C 5050 2004 00004 1078 ST 5,XFXADDR . STORE ADDRESS 09630000 - 000960 5060 2000 00000 1079 ST 6,XFXSIZE . STORE SIZE 09640000 - 000964 0AC6 1080 SVC C'F' . AND FREE THE MESSAGE BLOCK 09650000 - 000966 0A6B 1081 SVC C',' . LEAVE SMC 09660000 - 000968 8200 04D8 004D8 1082 LPSW RETURN . AND RETURN 09670000 - 00096C D200 700D 700C 0000D 0000C 1083 XRFILL MVC XRXTEXT+1,XRXTEXT . FILL WITH BLANKS 09680000 - 000972 D200 700C 500C 0000C 0000C 1084 XRMOVE MVC XRXTEXT,MSGTEXT . MOVE TEXT 09690000 - 1085 DROP 2,5,7,10 09700000 - R:F 00000 1086 USING PCB,15 09710000 -- - 1088 *********************************************************************** 09730000 - 1089 * * 09740000 - 1090 * XS ROUTINE * 09750000 - 1091 * * 09760000 - 1092 * FUNCTION: TO SEND A MESSAGE * 09770000 - 1093 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XSX * 09780000 - 1094 * XSX DS 0D * 09790000 - 1095 * XSXNAME DS CL8 NAME OF TARGET PROCESS * 09800000 - 1096 * XSXSIZE DS F SIZE OF TEXT * 09810000 - 1097 * XSXTEXT DS C TEXT OF MESSAGE * 09820000 - 1098 * ROUTINES USED: XP, XV, XEXC, XCOM, XA, XQUE * 09830000 - 1099 * PROCEDURE: USE XN TO GET POINTER TO PCB OF TARGET PROCESS; * 09840000 - 1100 * USE LENGTH OF MESSAGE AND XA TO ALLOCATE BLOCK FOR * 09850000 - 1101 * MESSAGE; LOCK MESSAGE CHAIN OF TARGET PROCESS; * 09860000 - 1102 * PUT MESSAGE BLOCK AT END OF CHAIN; STORE SENDER * 09870000 - 1103 * NAME, SIZE, AND TEXT OF MESSAGE; UNLOCK CHAIN; * 09880000 - 1104 * INDICATE MESSAGE CHAIN IS ONE LONGER; RETURN. * 09890000 - 1105 * ERROR CHECKS: IF NO PROCESS BY GIVEN NAME, ENTER XQUE. * 09900000 - 1106 * INTERRUPTS: ON * 09910000 - 1107 * USER ACCESS: YES * 09920000 - 1108 * * 09930000 - 1109 *********************************************************************** 09940000 -0 00978 1111 XS EQU * . THE XS ROUTINE: SEND MESSAGES 09960000 - R:1 00978 1112 USING *,1 09970000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 1112 in /mbhfs/sos4k.asm on volume: - 000978 1872 1113 LR 7,2 09980000 - R:7 00000 1114 USING XSX,7 . ARG LIST 09990000 - 00097A 4120 E048 00048 1115 LA 2,SATEMP . READY TO CALL OUT 10000000 - R:2 00000 1116 USING XNX,2 . ABOUT TO CALL XN 10010000 - 00097E D207 2000 7000 00000 00000 1117 MVC XNXNAME,XSXNAME . GIVE NAME OF TARGET PROCESS 10020000 - 000984 0AD5 1118 SVC C'N' . SEE WHERE IT IS 10030000 -1 Sample Operating System Version 2.00 Page 31 - Active Usings: PROGRAM,R0 PROGRAM+X'978',R1 XNX,R2 XSX,R7 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000986 5840 2008 00008 1119 L 4,XNXADDR . GET THE POINTER 10040000 - 00098A 1244 1120 LTR 4,4 . IS THERE INDEED ONE? 10050000 - 00098C 4780 108A 00A02 1121 BZ XSERR . IF NOT, ERROR 10060000 - R:4 00000 1122 USING PCB,4 10070000 - ** ASMA300W USING overridden by a prior active USING on statement number 1086 - ** ASMA435I Record 1122 in /mbhfs/sos4k.asm on volume: - 1123 DROP 2,15 10080000 - R:2 00000 1124 USING XAX,2 . READY TO CALL XA 10090000 - 000990 0A5A 1125 SVC C'!' . ENTERING SMC SECTION 10100000 - 000992 5830 7008 00008 1126 L 3,XSXSIZE . GET THE STATED SIZE 10110000 - 000996 4133 000C 0000C 1127 LA 3,LENMSG(3) . PLUS THE AMOUNT OF OVERHEAD 10120000 - 00099A 4133 0007 00007 1128 LA 3,7(3) . AND TRUNCATE 10130000 - 00099E 5430 14F4 00E6C 1129 N 3,=F'-8' . UP 10140000 - 0009A2 5030 2000 00000 1130 ST 3,XAXSIZE . THAT'S THE SIZE OF THE REGION TO 10150000 - 0009A6 D203 2008 14F0 00008 00E68 1131 MVC XAXALGN,=F'8' . ALLOCATE, ON A DOUBLEWORD BOUND 10160000 - 0009AC 0AC1 1132 SVC C'A' . SO ALLOCATE ALREADY 10170000 - 0009AE 5850 2004 00004 1133 L 5,XAXADDR . GET THE ADDRESS 10180000 - 1134 DROP 2 10190000 - 0009B2 4120 401C 0001C 1135 LA 2,PCBMSC . GET THE MESSAGE CHAIN SEMAPHORE 10200000 - 0009B6 0AD7 1136 SVC C'P' . AND LOCK IT 10210000 - 0009B8 4180 402C 0002C 1137 LA 8,PCBFM . THEN START DOWN THE MESSAGE 10220000 - 0009BC 5890 402C 0002C 1138 L 9,PCBFM . CHAIN 10230000 - R:9 00000 1139 USING MSG,9 10240000 - 0009C0 1299 1140 XSLOOP LTR 9,9 . ARE WE THROUGH? 10250000 - 0009C2 4780 105A 009D2 1141 BZ XSADD . IF SO ADD IT ON 10260000 - 0009C6 4180 9004 00004 1142 LA 8,MSGNEXT . IF NOT, ON TO THE NEXT 10270000 - 0009CA 5890 9004 00004 1143 L 9,MSGNEXT 10280000 - 0009CE 47F0 1048 009C0 1144 B XSLOOP . AND TRY AGAIN 10290000 - 0009D2 5058 0000 00000 1145 XSADD ST 5,0(8) . CHAIN OURS ON THE END 10300000 - 1146 DROP 9 10310000 - R:5 00000 1147 USING MSG,5 10320000 - 0009D6 D203 5004 14E8 00004 00E60 1148 MVC MSGNEXT,=A(0) . SET NEXT POINTER NULL 10330000 - 0009DC 50F0 5000 00000 1149 ST 15,MSGSENDR . STORE THE SENDER 10340000 - 0009E0 5860 7008 00008 1150 L 6,XSXSIZE . GET THE TEXT LENGTH 10350000 - 0009E4 5060 5008 00008 1151 ST 6,MSGSIZE . AND STORE IT 10360000 - 0009E8 0660 1152 BCTR 6,0 . ONE LESS 10370000 - 0009EA 1266 1153 LTR 6,6 . TEST LENGTH 10380000 - 0009EC 4740 107C 009F4 1154 BM XSAFT . IF ZERO, NOTHING TO MOVE 10390000 - 0009F0 4460 108C 00A04 1155 EX 6,XSMOVE . ELSE, MOVE IT 10400000 - 0009F4 0AE5 1156 XSAFT SVC C'V' . UNLOCK THE MESSAGE CHAIN 10410000 - 0009F6 4120 4024 00024 1157 LA 2,PCBMSR . THEN SAY THERE'S 10420000 - 0009FA 0AE5 1158 SVC C'V' . ONE MORE MESSAGE 10430000 - 0009FC 0A6B 1159 SVC C',' . LEAVE SMC SECTION 10440000 - 0009FE 8200 04D8 004D8 1160 LPSW RETURN . AND RETURN 10450000 - 000A02 0A6F 1161 XSERR SVC C'?' 10460000 - 000A04 D200 500C 700C 0000C 0000C 1162 XSMOVE MVC MSGTEXT,XSXTEXT . THE MOVE FOR THE TEXT 10470000 - 1163 DROP 4,5,7 10480000 - R:F 00000 1164 USING PCB,15 10490000 -1 Sample Operating System Version 2.00 Page 32 - Active Usings: PROGRAM,R0 PROGRAM+X'978',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 1166 *********************************************************************** 10510000 - 1167 * * 10520000 - 1168 * XY ROUTINE * 10530000 - 1169 * * 10540000 - 1170 * FUNCTION: TO START A PROCESS * 10550000 - 1171 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XYX * 10560000 - 1172 * XYX DS 0D * 10570000 - 1173 * XYXNAME DS CL8 NAME OF PROCESS TO BE STARTED * 10580000 - 1174 * XYXADDR DS A STARTING ADDRESS OF PROCESS * 10590000 - 1175 * ROUTINES USED: XN, XEXC, XCOM, XQUE * 10600000 - 1176 * PROCEDURE: USE XN TO GET POINTER TO THE PCB OF PROCESS TO BE * 10610000 - 1177 * STARTED; STORE IN PCB INTERRUPT SAVE AREA REGISTERS* 10620000 - 1178 * AND PSW WITH STARTING ADDRESS AS SENT FROM STARTING* 10630000 - 1179 * PROCESS; STOPPED BIT TURNED OFF; RETURN. * 10640000 - 1180 * ERROR CHECKS: IF NO PROCESS BY GIVEN NAME, XQUE ENTERED. * 10650000 - 1181 * INTERRUPTS: OFF * 10660000 - 1182 * USER ACCESS: YES * 10670000 - 1183 * * 10680000 - 1184 *********************************************************************** 10690000 -0 00A0A 1186 XY EQU * . THE XY ROUTINE: START A PROCESS 10710000 - R:1 00A0A 1187 USING *,1 10720000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 1187 in /mbhfs/sos4k.asm on volume: - 000A0A 1872 1188 LR 7,2 10730000 - R:7 00000 1189 USING XYX,7 . THE ARG LIST 10740000 - 000A0C 4120 E048 00048 1190 LA 2,SATEMP . READY TO CALL OUT 10750000 - R:2 00000 1191 USING XNX,2 10760000 - 000A10 D207 2000 7000 00000 00000 1192 MVC XNXNAME,XYXNAME . GIVE XN A NAME 10770000 - 000A16 0AD5 1193 SVC C'N' . CALL XN 10780000 - 000A18 58A0 2008 00008 1194 L 10,XNXADDR . WHERE IS THE PCB? 10790000 - 000A1C 12AA 1195 LTR 10,10 . OR IS THERE ONE? 10800000 - 000A1E 4780 1036 00A40 1196 BZ XYERR . IF NOT, OH HISS BOO 10810000 - 1197 DROP 2,14,15 10820000 - R:A 00000 1198 USING PCB,10 10830000 - 000A22 41D0 A04C 0004C 1199 LA 13,PCBISA . GET INTO THAT PCB'S ISA 10840000 - R:D 00000 1200 USING SA,13 10850000 - 000A26 D207 D000 E000 00000 00000 1201 MVC SAPSW,(SAPSW-SA)(14) . GIVE IT THE CALLER'S PSW 10860000 - 000A2C D202 D005 7009 00005 00009 1202 MVC SAPSW+5(3),XYXADDR+1 . BUT AT THE REQUESTED ADDRESS 10870000 - 000A32 D23F D008 E008 00008 00008 1203 MVC SAREGS,(SAREGS-SA)(14) .GIVE IT HIS REGISTERS 10880000 - 000A38 9200 A018 00018 1204 MVI PCBSTOPT,X'00' . IT'S NO LONGER STOPPED 10890000 - 000A3C 8200 04D8 004D8 1205 LPSW RETURN . AND RETURN 10900000 - 000A40 0A6F 1206 XYERR SVC C'?' . WE DONE BAD 10910000 - 1207 DROP 7,10,13 10920000 - R:E 00000 1208 USING SA,14 10930000 - R:F 00000 1209 USING PCB,15 10940000 -1 Sample Operating System Version 2.00 Page 33 - Active Usings: PROGRAM,R0 PROGRAM+X'A0A',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 1211 *********************************************************************** 10960000 - 1212 * * 10970000 - 1213 * XZ ROUTINE * 10980000 - 1214 * * 10990000 - 1215 * FUNCTION: TO STOP A PROCESS * 11000000 - 1216 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XZX * 11010000 - 1217 * XZX DS 0D * 11020000 - 1218 * XZXNAME DS CL8 NAME OF PROCESS TO BE STOPPED * 11030000 - 1219 * ROUTINES USED: XN, XEXC, XCOM, XQUE, XP * 11040000 - 1220 * PROCEDURE: CHECK THAT USER PROCESS CAN'T STOP SYSTEM * 11050000 - 1221 * PROCESS; USE XN TO GET PCB POINTER; IF IN SMC, SET * 11060000 - 1222 * STOP WAITING BIT AND BLOCK SELF UNTIL STOP * 11070000 - 1223 * PERFORMED; ELSE SET STOPPED BIT, AND RETURN. * 11080000 - 1224 * ERROR CHECKS: IF NO PROCESS BY GIVEN NAME OR USER TRIES TO * 11090000 - 1225 * STOP A SYSTEM PROCESS, XQUE ENTERED. * 11100000 - 1226 * INTERRUPTS: ON * 11110000 - 1227 * USER ACCESS: YES * 11120000 - 1228 * * 11130000 - 1229 *********************************************************************** 11140000 -0 00A42 1231 XZ EQU * . THE XZ ROUTINE: STOP A PROCESS 11160000 - R:1 00A42 1232 USING *,1 11170000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 1232 in /mbhfs/sos4k.asm on volume: - 000A42 1872 1233 LR 7,2 11180000 - R:7 00000 1234 USING XZX,7 . ARG LIST 11190000 - 000A44 955C F000 00000 1235 CLI PCBNAME,C'*' . IS STOPPER A * PROCESS 11200000 - 000A48 4780 1012 00A54 1236 BE XZFINE . THAT'S OK 11210000 - 000A4C 955C 7000 00000 1237 CLI XZXNAME,C'*' . IF NOT, IS STOPPEE A * ? 11220000 - 000A50 4780 104A 00A8C 1238 BE XZERR . CAN'T DO THAT 11230000 - 000A54 4120 E048 00048 1239 XZFINE LA 2,SATEMP . READY TO CALL OUT 11240000 - R:2 00000 1240 USING XNX,2 . WILL CALL XN 11250000 - 000A58 D207 2000 7000 00000 00000 1241 MVC XNXNAME,XZXNAME . GIVE IT THE NAME 11260000 - 000A5E 0AD5 1242 SVC C'N' . AND DO THE CALL 11270000 - 000A60 58A0 2008 00008 1243 L 10,XNXADDR . GET THE PCB'S ADDRESS 11280000 - 000A64 12AA 1244 LTR 10,10 . SEE IF NULL 11290000 - 000A66 4780 104A 00A8C 1245 BZ XZERR . IF SO, ERROR 11300000 - 000A6A 0A5A 1246 SVC C'!' . ENTER SMC 11310000 - 1247 DROP 2,15 11320000 - R:A 00000 1248 USING PCB,10 11330000 - 000A6C 9500 A01A 0001A 1249 XZSTOP CLI PCBINSMC,X'00' . SEE IF IN SMC 11340000 - 000A70 4770 103C 00A7E 1250 BNE XZINSMC . IF SO, BAD 11350000 - 000A74 92FF A018 00018 1251 MVI PCBSTOPT,X'FF' . ELSE JUST STOP IT 11360000 - 000A78 0A6B 1252 SVC C',' . LEAVE SMC 11370000 - 000A7A 8200 04D8 004D8 1253 LPSW RETURN . AND RETURN 11380000 - 000A7E 92FF A01B 0001B 1254 XZINSMC MVI PCBSW,X'FF' . IF IN SMC, SAY STOP WAITING 11390000 - 000A82 4120 A034 00034 1255 LA 2,PCBSRS . AND STOP OURSELVES AGAINST 11400000 - 000A86 0AD7 1256 SVC C'P' . A SEMAPHORE 11410000 - 000A88 47F0 102A 00A6C 1257 B XZSTOP . THEN WE CAN REALLY STOP IT 11420000 - 000A8C 0A6F 1258 XZERR SVC C'?' . AN ERROR 11430000 - 1259 DROP 10,7 11440000 - R:F 00000 1260 USING PCB,15 11450000 -1 Sample Operating System Version 2.00 Page 34 - Active Usings: PROGRAM,R0 PROGRAM+X'A42',R1 SA,R14 PCB,R15 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 1262 *********************************************************************** 11470000 - 1263 * * 11480000 - 1264 * XQUE ROUTINE * 11490000 - 1265 * * 11500000 - 1266 * FUNCTION: TO SIGNAL ERROR CONDITION * 11510000 - 1267 * DATABASES: NONE * 11520000 - 1268 * ROUTINES USED: XR, XS * 11530000 - 1269 * PROCEDURE: SEND MESSAGE TO SUPERVISOR PROCESS FOR THIS JOB * 11540000 - 1270 * INDICATING ABNORMAL TERMINATION; TRY TO READ * 11550000 - 1271 * MESSAGES, FOREVER LOOPING; BLOCK ITSELF, THEREBY * 11560000 - 1272 * NEVER RETURNING. * 11570000 - 1273 * ERROR CHECKS: NONE * 11580000 - 1274 * INTERRUPTS: OFF * 11590000 - 1275 * USER ACCESS: YES * 11600000 - 1276 * * 11610000 - 1277 *********************************************************************** 11620000 -0 00A8E 1279 XQUE EQU * . THE XQUE ROUTINE: ERROR! 11640000 - R:1 00A8E 1280 USING *,1 11650000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 1280 in /mbhfs/sos4k.asm on volume: - 000A8E 4120 1012 00AA0 1281 LA 2,XQUEM1 . SEND AN ERROR MESSAGE TO *IBSUP 11660000 - 000A92 0AE2 1282 SVC C'S' 11670000 - 000A94 4120 102A 00AB8 1283 XQUELOOP LA 2,XQUEM2 . WAIT FOR REPLY 11680000 - 000A98 0AD9 1284 SVC C'R' 11690000 - 000A9A 47F0 1006 00A94 1285 B XQUELOOP . BUT IGNORE IT 11700000 - 000AA0 1286 DS 0F 11710000 - 000AA0 5CC9C2E2E4D74040 1287 XQUEM1 DC CL8'*IBSUP' 11720000 - 000AA8 0000000C 1288 DC F'12' 11730000 - 000AAC D7D9D6C7D9C1D440 1289 DC CL12'PROGRAM FLOP' 11740000 - 000AB8 1290 XQUEM2 DS CL8 11750000 - 000AC0 00000001 1291 DC F'1' 11760000 - 000AC4 1292 DS CL1,0H 11770000 - 1293 DROP 14,15 11780000 -1 Sample Operating System Version 2.00 Page 35 - Active Usings: PROGRAM,R0 PROGRAM+X'A8E',R1 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 1295 *********************************************************************** 11800000 - 1296 * * 11810000 - 1297 * INPUT/OUTPUT ROUTINES * 11820000 - 1298 * * 11830000 - 1299 *********************************************************************** 11840000 -0 1301 *********************************************************************** 11860000 - 1302 * * 11870000 - 1303 * SYSTEM SUPPLIED DEVICE HANDLER FOR READERS * 11880000 - 1304 * * 11890000 - 1305 *********************************************************************** 11900000 -0 00AC6 1307 RDRHANDL EQU * . THE READER HANDLER 11920000 - R:3 00000 1308 USING UCB,3 . STARTED WITH REG3 -> UCB 11930000 - 000AC6 0510 1309 BALR 1,0 11940000 - R:1 00AC8 1310 USING *,1 . ESTABLISH ADDRESSING 11950000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 1310 in /mbhfs/sos4k.asm on volume: - 000AC8 4120 1160 00C28 1311 LA 2,RDRHSEM . LOCK OURSELVES UNTIL WE SET UP 11960000 - 000ACC 0AD7 1312 SVC C'P' . AN AUTOMATIC STORAGE AREA 11970000 - 000ACE 4120 1174 00C3C 1313 LA 2,RDRHAAS . READY TO ALLOCATE 11980000 - R:2 00000 1314 USING XAX,2 11990000 - 000AD2 0AC5 1315 SVC C'E' . ALLOCATE 12000000 - 000AD4 58C0 2004 00004 1316 L 12,XAXADDR . GET A PTR 12010000 - 1317 DROP 2 12020000 - 000AD8 4120 1160 00C28 1318 LA 2,RDRHSEM . AND UNBLOCK OURSELVES 12030000 - 000ADC 0AE5 1319 SVC C'V' 12040000 - 000ADE 8840 0010 00010 1320 SRL 4,16 . SHIFT KEY 12050000 - 000AE2 1BAA 1321 SR 10,10 . CLEAR REG 10 12060000 - R:C 00000 1322 USING RDRHAS,12 . AUTOMATIC AREA 12070000 - 000AE4 9200 C07A 0007A 1323 MVI JOBBIT,X'00' . INITIALIZE 12080000 - 000AE8 4160 C000 00000 1324 LA 6,RDRHCCB . GET PTR TO CCB 12090000 - 000AEC 4120 C008 00008 1325 RDRHLOOP LA 2,RDRHMSG . TRY TO READ A MESSAGE 12100000 - R:2 00000 1326 USING XRX,2 12110000 - 000AF0 D203 2008 13A0 00008 00E68 1327 MVC XRXSIZE,=F'8' . WE CAN TAKE 8 CHARS 12120000 - 000AF6 0AD9 1328 SVC C'R' . READ IT 12130000 - 000AF8 D503 13AC 200C 00E74 0000C 1329 CLC =C'READ',XRXTEXT . IF FIRST WORD IS READ, OK 12140000 - 000AFE 4770 1024 00AEC 1330 BNE RDRHLOOP . ELSE IGNORE 12150000 - 000B02 5850 2010 00010 1331 L 5,XRXTEXT+4 . GET 2ND WORD OF TEXT 12160000 - 1332 DROP 2 12170000 - 000B06 4120 3004 00004 1333 LA 2,UCBUS . LOCK THE UCB AND IT'S UNIT 12180000 - 000B0A 0AD7 1334 SVC C'P' 12190000 - 000B0C 4120 C008 00008 1335 LA 2,RDRHMSG . RESET ADDRESSING POINTER 12200000 - R:2 00000 1336 USING XRX,2 12210000 - 000B10 95FF C07A 0007A 1337 CLI JOBBIT,X'FF' . HAVE WE JUST READ $JOB CARD? 12220000 - 000B14 4770 1066 00B2E 1338 BNE RDRHMORE . IF NO, GO CHECK PROTECTION, ELSE 12230000 - 000B18 955C 2000 00000 1339 CLI XRXNAME,C'*' . IS JSP CALLING US? 12240000 - 000B1C 4770 10F8 00BC0 1340 BNE RDRHNO . IF NOT, TELL HIM NO. 12250000 - 000B20 D24F 5000 C01C 00000 0001C 1341 MVC 0(80,5),RDRHTEMP . IF IT IS, GIVE JSP THE $JOB CARD 12260000 - 000B26 9200 C07A 0007A 1342 MVI JOBBIT,X'00' . SAY WE DON'T HAVE $JOB WAITING 12270000 - 000B2A 47F0 1114 00BDC 1343 B RDRHSOK . AND SEND MESSAGE BACK 12280000 - 1344 DROP 2 12290000 - 000B2E 955C C008 00008 1345 RDRHMORE CLI RDRHMSG,C'*' . IS SYSTEM CALLING? 12300000 - 000B32 4780 1098 00B60 1346 BE RDRHPOK . THEN PROTECTION OK, ELSE 12310000 - 000B36 18B5 1347 LR 11,5 . GET ADDRESS THAT'S TO HOLD CARD, 12320000 -1 Sample Operating System Version 2.00 Page 36 - Active Usings: PROGRAM,R0 PROGRAM+X'AC8',R1 UCB,R3 RDRHAS,R12 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000B38 54B0 116C 00C34 1348 N 11,PROTCON1 . get the page boundary 12330002 - 1349 * ISKE 10,11 . find storage key 12334002 - 000B3C B22900AB 1350 DC X'B22900AB' Assembler (XF) doesn't support ISKE 12338002 - 000B40 54A0 1170 00C38 1351 N 10,PROTCON2 . ignore low order bits 12342002 - 000B44 19A4 1352 CR 10,4 . DOES IT MATCH OURS? 12350000 - 000B46 4770 10F8 00BC0 1353 BNE RDRHNO . IF NOT, TELL HIM NO 12360000 - 000B4A 41B5 004F 0004F 1354 LA 11,79(5) . CHECK LAST BYTE ADDR OF CARD 12370000 - 000B4E 54B0 116C 00C34 1355 N 11,PROTCON1 . get the page boundary 12380002 - 1356 * ISKE 10,11 . find storage key 12384002 - 000B52 B22900AB 1357 DC X'B22900AB' Assembler (XF) doesn't support ISKE 12388002 - 000B56 54A0 1170 00C38 1358 N 10,PROTCON2 . ignore low order bits 12392002 - 000B5A 19A4 1359 CR 10,4 . DOES IT MATCH OURS? 12400000 - 000B5C 4770 10F8 00BC0 1360 BNE RDRHNO . IF NOT, TELL HIM NO 12410000 - 000B60 5450 1168 00C30 1361 RDRHPOK N 5,CCBCON1 . MAKE ADDRESS INTO 12420000 - 000B64 5050 C000 00000 1362 ST 5,RDRHCCB . A CCW (OR CCB) 12430000 - 000B68 9602 C000 00000 1363 OI RDRHCCB,X'02' 12440000 - 000B6C D203 C004 13B0 00004 00E78 1364 MVC RDRHCCB+4,=F'80' . WE'LL READ EIGHTY CHARACTERS 12450000 - 000B72 D203 3014 1398 00014 00E60 1365 MVC UCBCSW(4),=A(0) . CLEAR THE LAST CSW THERE 12460000 - 000B78 D203 3018 1398 00018 00E60 1366 MVC UCBCSW+4(4),=A(0) 12470000 - 000B7E 4120 0194 00194 1367 LA 2,CAWSEM . LOCK THE CAW 12480000 - 000B82 0AD7 1368 SVC C'P' 12490000 - 000B84 5060 0048 00048 1369 ST 6,CAW . THAT'S THE CAW 12500000 - 000B88 5870 3000 00000 1370 L 7,UCBADDR . GET THE UNIT ADDRESS 12510000 - 000B8C 9C00 7000 00000 1371 SIO 0(7) . START THE I/O 12520000 - 000B90 4770 1154 00C1C 1372 BNZ RDSTATUS . BRANCH IF SIO UNSUCCESSFUL 12530000 - 000B94 0AE5 1373 SVC C'V' . THEN UNLOCK THE CAW 12540000 - 000B96 4120 300C 0000C 1374 RDRHWAIT LA 2,UCBWS . NOW WAIT FOR AN INTERRUPT 12550000 - 000B9A 0AD7 1375 SVC C'P' 12560000 - 000B9C 9185 3018 00018 1376 TM UCBCSW+4,X'85' . CHECK THE STATUS 12570003 - 000BA0 4780 10CE 00B96 1377 BZ RDRHWAIT . IF NOT FINISHED, WAIT 12580000 - 000BA4 9101 3018 00018 1378 TM UCBCSW+4,X'01' . CHECK FOR EXCEPTION 12590000 - 000BA8 4710 10F0 00BB8 1379 BO RDRHEXC . if yes, ignore this interrupt 12600003 - 000BAC 9180 3018 00018 1380 TM UCBCSW+4,X'80' . if no, check for attention 12602003 - 000BB0 4710 1098 00B60 1381 BO RDRHPOK . if yes, try to restart the I/O 12604003 - 000BB4 47F0 1102 00BCA 1382 B RDRHOK . else, all is groovy 12606003 - 000BB8 94FE 3018 00018 1383 RDRHEXC NI UCBCSW+4,X'FE' . clear exception .. 12608003 - 000BBC 47F0 10CE 00B96 1384 B RDRHWAIT . .. and continue waiting 12610003 - 000BC0 D201 C078 13CC 00078 00E94 1385 RDRHNO MVC RDRHM+12(2),=C'NO' . message back is no 12612003 - 000BC6 47F0 111A 00BE2 1386 B RDRHSEND . GET READY TO SEND 12620000 - 000BCA 955C C008 00008 1387 RDRHOK CLI RDRHMSG,C'*' . IS THE SYSTEM CALLING? 12630000 - 000BCE 4780 1114 00BDC 1388 BE RDRHSOK . THAT'S FINE. OTHERWISE, 12640000 - 000BD2 D504 13D0 5000 00E98 00000 1389 CLC =C'$JOB,',0(5) . WAS IT A $JOB CARD? 12650000 - 000BD8 4780 1136 00BFE 1390 BE ENDADATA . OOPS! WE HIT END OF DATA STREAM 12660000 - 000BDC D201 C078 13CE 00078 00E96 1391 RDRHSOK MVC RDRHM+12(2),=C'OK' .GROOVINESS MESSAGE 12670000 - 000BE2 D203 C074 13A8 00074 00E70 1392 RDRHSEND MVC RDRHM+8(4),=F'2' . SAY THERE ARE 2 CHARACTERS 12680000 - 000BE8 D207 C06C C008 0006C 00008 1393 MVC RDRHM+0(8),RDRHMSG+0 . SEND BACK TO SAME GUY 12690000 - 000BEE 4120 3004 00004 1394 LA 2,UCBUS . NOW UNLOCK UCB AND UNIT 12700000 - 000BF2 0AE5 1395 SVC C'V' 12710000 - 000BF4 4120 C06C 0006C 1396 LA 2,RDRHM . SET UP MESSAGE 12720000 - 000BF8 0AE2 1397 SVC C'S' . AND SEND IT 12730000 - 000BFA 47F0 1024 00AEC 1398 B RDRHLOOP 12740000 - 000BFE D201 C078 13CC 00078 00E94 1399 ENDADATA MVC RDRHM+12(2),=C'NO' . TELL USER NO MORE CARDS 12750000 - 000C04 D24F C01C 5000 0001C 00000 1400 MVC RDRHTEMP(80),0(5) . SAVE THE $JOB CARD 12760000 - 000C0A 9240 5000 00000 1401 MVI 0(5),C' ' . BLANK OUT THE USER'S COPY 12770000 - 000C0E D24E 5001 5000 00001 00000 1402 MVC 1(79,5),0(5) 12780000 -1 Sample Operating System Version 2.00 Page 37 - Active Usings: PROGRAM,R0 PROGRAM+X'AC8',R1 UCB,R3 RDRHAS,R12 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000C14 92FF C07A 0007A 1403 MVI JOBBIT,X'FF' . INDICATE WE HAVE A NEW $JOB CARD 12790000 - 000C18 47F0 111A 00BE2 1404 B RDRHSEND . AND SEND THE MESSAGE BACK 12800000 - 000C1C 0AE5 1405 RDSTATUS SVC C'V' . UNLOCK THE CAW 12810000 - 000C1E 4120 300C 0000C 1406 LA 2,UCBWS . AND WAIT FOR AN INTERRUPT 12820000 - 000C22 0AD7 1407 SVC C'P' 12830000 - 000C24 47F0 1098 00B60 1408 B RDRHPOK . AND TRY TO RESTART THE I/O 12840000 - 1409 DROP 3,12 12850000 -0000C28 0000000100000000 1411 RDRHSEM DC F'1,0' 12870000 - 000C30 00FFFFFF 1412 CCBCON1 DC X'00FFFFFF' MASK 12880000 - 000C34 00FFF000 1413 PROTCON1 DC X'00FFF000' page alignment 12890002 - 000C38 FFFFFFF0 1414 PROTCON2 DC X'FFFFFFF0' ignore low order bits 12893002 - 000C3C 00000080 1415 RDRHAAS DC A(LENRDRHA) ALLOCATE ARGLIST FOR STORAGE 12900000 - 000C40 00000000 1416 DC F'0' 12910000 - 000C44 00000008 1417 DC F'8' 12920000 -- - 1419 *********************************************************************** 12940000 - 1420 * * 12950000 - 1421 * SYSTEM SUPPLIED DEVICE HANDLER FOR PRINTERS * 12960000 - 1422 * * 12970000 - 1423 *********************************************************************** 12980000 -0 00C48 1425 PRTHANDL EQU * . THE PRINTER HANDLER 13000000 - R:3 00000 1426 USING UCB,3 . ENTERED WITH REG3 -> THE UCB 13010000 - 000C48 0510 1427 BALR 1,0 13020000 - R:1 00C4A 1428 USING *,1 . ESTABLISH ADDRESSING 13030000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 1428 in /mbhfs/sos4k.asm on volume: - 000C4A 4120 1116 00D60 1429 LA 2,PRTHSEM . LOCK UNTIL ALLOCATE STORAGE 13040000 - 000C4E 0AD7 1430 SVC C'P' . 13050000 - 000C50 4120 111E 00D68 1431 LA 2,PRTHAAS . READY TO ALLOCATE 13060000 - R:2 00000 1432 USING XAX,2 13070000 - 000C54 0AC5 1433 SVC C'E' . ALLOCATE 13080000 - 000C56 58C0 2004 00004 1434 L 12,XAXADDR . GET THE ADDRESS 13090000 - 1435 DROP 2 13100000 - 000C5A 4120 1116 00D60 1436 LA 2,PRTHSEM . 13110000 - 000C5E 0AE5 1437 SVC C'V' UNLOCK TO ROUTINE 13120000 - 000C60 8840 0010 00010 1438 SRL 4,16 . SHIFT KEY 13130000 - 000C64 1BAA 1439 SR 10,10 . CLEAR REG 10 13140000 - R:C 00000 1440 USING PRTHAS,12 . ADDRESSING IN THE AUTO AREA 13150000 - 000C66 4160 C000 00000 1441 LA 6,PRTHCCB . MAKE A CAW 13160000 - 000C6A 4120 C008 00008 1442 PRTHLOOP LA 2,PRTHMSG . READY TO READ A MESSAGE 13170000 - R:2 00000 1443 USING XRX,2 13180000 - 000C6E D203 2008 121E 00008 00E68 1444 MVC XRXSIZE,=F'8' . WE CAN TAKE 8 CHARACTERS 13190000 - 000C74 0AD9 1445 SVC C'R' . READ IT 13200000 - 000C76 5850 2010 00010 1446 L 5,XRXTEXT+4 . LOAD THE ADDRESS 13210000 - 000C7A D503 1232 200C 00E7C 0000C 1447 CLC =C'PRIN',XRXTEXT . IS IT A PRIN REQUEST? 13220000 - 000C80 4780 1048 00C92 1448 BE PRTHPRIN 13230000 - 000C84 D503 1236 200C 00E80 0000C 1449 CLC =C'STC1',XRXTEXT . OR A SKIP REQUEST? 13240000 - 000C8A 4780 1096 00CE0 1450 BE PRTHSTC1 13250000 - 000C8E 47F0 1020 00C6A 1451 B PRTHLOOP . IF NEITHER, IGNORE 13260000 - 1452 DROP 2 13270000 - 000C92 4120 3004 00004 1453 PRTHPRIN LA 2,UCBUS 13280000 -1 Sample Operating System Version 2.00 Page 38 - Active Usings: PROGRAM,R0 PROGRAM+X'C4A',R1 UCB,R3 PRTHAS,R12 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000C96 0AD7 1454 SVC C'P' . LOCK THE UCB AND UNIT 13290000 - 000C98 955C C008 00008 1455 CLI PRTHMSG,C'*' . IS SYSTEM CALLING? 13300000 - 000C9C 4780 1080 00CCA 1456 BE PRTHPOK . THEN PROTECTION OK. ELSE 13310000 - 000CA0 18B5 1457 LR 11,5 . GET ADDRESS THAT'S TO HOLD MSG, 13320000 - 000CA2 54B0 0C34 00C34 1458 N 11,PROTCON1 . get the page boundary 13330002 - 1459 * ISKE 10,11 . find storage key 13334002 - 000CA6 B22900AB 1460 DC X'B22900AB' Assembler (XF) doesn't support ISKE 13338002 - 000CAA 54A0 0C38 00C38 1461 N 10,PROTCON2 . ignore low order bits 13342002 - 000CAE 19A4 1462 CR 10,4 . DOES IT MATCH OURS? 13350000 - 000CB0 4770 10DC 00D26 1463 BNE PRTHNO . IF NOT, TELL HIM NO 13360000 - 000CB4 41B5 0083 00083 1464 LA 11,131(5) . CHECK LAST BYTE ADDRESS OF LINE 13370000 - 000CB8 54B0 0C34 00C34 1465 N 11,PROTCON1 . get the page boundary 13380002 - 1466 * ISKE 10,11 . find storage key 13384002 - 000CBC B22900AB 1467 DC X'B22900AB' Assembler (XF) doesn't support ISKE 13388002 - 000CC0 54A0 0C38 00C38 1468 N 10,PROTCON2 . ignore low order bits 13392002 - 000CC4 19A4 1469 CR 10,4 . DOES IT MATCH OURS? 13400000 - 000CC6 4770 10DC 00D26 1470 BNE PRTHNO . IF NOT, TELL HIM NO 13410000 - 000CCA 5450 0C30 00C30 1471 PRTHPOK N 5,CCBCON1 . MAKE A WRITE REQUEST 13420000 - 000CCE 5050 C000 00000 1472 ST 5,PRTHCCB . FOR THE CCB 13430000 - 000CD2 9609 C000 00000 1473 OI PRTHCCB,X'09' . PRINT COMMAND CODE 13440000 - 000CD6 D203 C004 123A 00004 00E84 1474 MVC PRTHCCB+4,=F'132' . WE'LL PRINT 132 CHARACTERS 13450000 - 000CDC 47F0 10A2 00CEC 1475 B PRTHCOMM . BRANCH TO COMMON SECTION 13460000 - 000CE0 D207 C000 1206 00000 00E50 1476 PRTHSTC1 MVC PRTHCCB(8),=X'8900000020000001' SKIP TO TOP OF PAGE 13470000 - 000CE6 4120 3004 00004 1477 LA 2,UCBUS 13480000 - 000CEA 0AD7 1478 SVC C'P' . LOCK THE UCB AND UNIT 13490000 - 000CEC 4120 0194 00194 1479 PRTHCOMM LA 2,CAWSEM . LOCK THE CAW 13500000 - 000CF0 0AD7 1480 SVC C'P' 13510000 - 000CF2 5060 0048 00048 1481 ST 6,CAW . STORE OUR CAW 13520000 - 000CF6 D203 3014 1216 00014 00E60 1482 MVC UCBCSW(4),=A(0) . CLEAR THE LAST CSW THERE 13530000 - 000CFC D203 3018 1216 00018 00E60 1483 MVC UCBCSW+4(4),=A(0) 13540000 - 000D02 5870 3000 00000 1484 L 7,UCBADDR . GET THE ADDRESS 13550000 - 000D06 9C00 7000 00000 1485 SIO 0(7) . START THE I/O 13560000 - 000D0A 4770 1108 00D52 1486 BNZ PTSTATUS . BRANCH IF SIO UNSUCCESSFUL 13570000 - 000D0E 0AE5 1487 SVC C'V' . AND UNLOCK THE CAW 13580000 - 000D10 4120 300C 0000C 1488 PRTHWAIT LA 2,UCBWS . START TO WAIT 13590000 - 000D14 0AD7 1489 SVC C'P' 13600000 - 000D16 9105 3018 00018 1490 TM UCBCSW+4,X'05' . IS THE UNIT READY? 13610000 - 000D1A 4780 10C6 00D10 1491 BZ PRTHWAIT . IF NOT, ITS STILL ON. WAIT 13620000 - 000D1E 9101 3018 00018 1492 TM UCBCSW+4,X'01' . WAS THERE AN EXCEPTION? 13630000 - 000D22 4780 10E6 00D30 1493 BZ PRTHOK . IF NOT, GOOD 13640000 - 000D26 D201 C028 124A 00028 00E94 1494 PRTHNO MVC PRTHM+12(2),=C'NO' .THERE WAS, SO SAY SO 13650000 - 000D2C 47F0 10EC 00D36 1495 B PRTHSEND 13660000 - 000D30 D201 C028 124C 00028 00E96 1496 PRTHOK MVC PRTHM+12(2),=C'OK' .NO ERRORS 13670000 - 000D36 D203 C024 1226 00024 00E70 1497 PRTHSEND MVC PRTHM+8(4),=F'2' . SENDING 2 CHARACTERS 13680000 - 000D3C D207 C01C C008 0001C 00008 1498 MVC PRTHM+0(8),PRTHMSG+0 . SEND TO OUR SENDER 13690000 - 000D42 4120 3004 00004 1499 LA 2,UCBUS 13700000 - 000D46 0AE5 1500 SVC C'V' . UNLOCK THE UCB 13710000 - 000D48 4120 C01C 0001C 1501 LA 2,PRTHM 13720000 - 000D4C 0AE2 1502 SVC C'S' . SEND IT 13730000 - 000D4E 47F0 1020 00C6A 1503 B PRTHLOOP . AND READ ANOTHER MESSAGE 13740000 - 000D52 0AE5 1504 PTSTATUS SVC C'V' . UNLOCK THE CAW 13750000 - 000D54 4120 300C 0000C 1505 LA 2,UCBWS . AND WAIT FOR THE INTERRUPT 13760000 - 000D58 0AD7 1506 SVC C'P' 13770000 - 000D5A 47F0 10A2 00CEC 1507 B PRTHCOMM . AND TRY TO RESTART THE I/O 13780000 - 1508 DROP 3,12 13790000 -1 Sample Operating System Version 2.00 Page 39 - Active Usings: PROGRAM,R0 PROGRAM+X'C4A',R1 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000D5E 0000 - 000D60 0000000100000000 1510 PRTHSEM DC F'1,0' LOCK 13810000 - 000D68 00000030 1511 PRTHAAS DC A(LENPRTHA) XA ARG LIST FOR AUTO STORAGE 13820000 - 000D6C 00000000 1512 DC F'0' 13830000 - 000D70 00000008 1513 DC F'8' 13840000 -1 Sample Operating System Version 2.00 Page 40 - Active Usings: PROGRAM,R0 PROGRAM+X'C4A',R1 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 1515 *********************************************************************** 13860000 - 1516 * * 13870000 - 1517 * SYSTEM ROUTINE FOR USER SUPPLIED DEVICE HANDLER * 13880000 - 1518 * * 13890000 - 1519 *********************************************************************** 13900000 -0 00D74 1521 EXCPHNDL EQU * . EXCP DEVICE HANDLER 13920000 - R:3 00000 1522 USING UCB,3 . WILL HAVE REG3 -> UCB 13930000 - 000D74 0510 1523 BALR 1,0 13940000 - R:1 00D76 1524 USING *,1 . ESTABLISH ADDRESSING 13950000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 1524 in /mbhfs/sos4k.asm on volume: - 000D76 4120 10C6 00E3C 1525 LA 2,EXCPHSEM . LOCK OURSELVES UNTIL WE HAVE 13960000 - 000D7A 0AD7 1526 SVC C'P' . SET UP AUTOMATIC STORAGE 13970000 - 000D7C 4120 10CE 00E44 1527 LA 2,EXCPHAAS . READY TO ALLOCATE 13980000 - R:2 00000 1528 USING XAX,2 13990000 - 000D80 0AC5 1529 SVC C'E' . ALLOCATE 14000000 - 000D82 58C0 2004 00004 1530 L 12,XAXADDR . GET POINTER TO AUTO STORAGE 14010000 - 1531 DROP 2 14020000 - 000D86 4120 10C6 00E3C 1532 LA 2,EXCPHSEM . AND UNLOCK OURSELVES 14030000 - 000D8A 0AE5 1533 SVC C'V' UNLOCK TO ROUTINE 14040000 - 000D8C 184B 1534 LR 4,11 14050000 - 000D8E 8940 0008 00008 1535 SLL 4,8 . SHIFT KEY FOR CAW 14060000 - R:C 00000 1536 USING EXCPHAS,12 . FOR ADDRESSING AUTO AREA 14070000 - 000D92 4120 C000 00000 1537 EXCPLOOP LA 2,EXCPHMSG . TRY TO READ A MESSAGE 14080000 - R:2 00000 1538 USING XRX,2 14090000 - 000D96 D203 2008 1112 00008 00E88 1539 MVC XRXSIZE,=F'12' . WE'LL TAKE 12 CHARACTERS 14100000 - 000D9C 0AD9 1540 SVC C'R' 14110000 - 000D9E D503 1116 200C 00E8C 0000C 1541 CLC =C'EXCP',XRXTEXT . IS IT AN EXCP MESSAGE? 14120000 - 000DA4 4770 101C 00D92 1542 BNE EXCPLOOP . IF NOT, IGNORE IT 14130000 - 000DA8 5850 2010 00010 1543 L 5,XRXTEXT+4 . REG 5 CONTAINS CHAN AND DEV 14140000 - 000DAC 5860 2014 00014 1544 L 6,XRXTEXT+8 . REG 6 CONTAINS ADDR OF CCWS 14150000 - 1545 DROP 2 14160000 - 000DB0 4170 112E 00EA4 1546 LA 7,UCBTABLE . GET PTR TO UCB TABLE 14170000 - 000DB4 5957 0000 00000 1547 EXCPCOMP C 5,0(7) . COMPARE UNIT ADDRESS 14180000 - 000DB8 4780 1054 00DCA 1548 BE EXCPFIND . THAT'S THE UCB WE WANT 14190000 - 000DBC 4177 0020 00020 1549 LA 7,UCBLENG(7) . GET PTR TO NEXT UCB 14200000 - 000DC0 5970 111A 00E90 1550 C 7,=A(UCBTBEND) . ARE WE THROUGH WITH TABLE? 14210000 - 000DC4 4770 103E 00DB4 1551 BNE EXCPCOMP . IF NOT, LOOK SOME MORE 14220000 - 000DC8 0A6F 1552 SVC C'?' . ELSE ERROR 14230000 - 000DCA 1837 1553 EXCPFIND LR 3,7 . SET REG 3 TO UCB PTR 14240000 - 000DCC 4120 3004 00004 1554 LA 2,UCBUS 14250000 - 000DD0 0AD7 1555 SVC C'P' . LOCK THE UCB 14260000 - 000DD2 1664 1556 OR 6,4 . OR IN THE USER'S KEY 14270000 - 000DD4 D203 3014 10EA 00014 00E60 1557 MVC UCBCSW(4),=A(0) . CLEAR THE LAST CSW THERE 14280000 - 000DDA D203 3018 10EA 00018 00E60 1558 MVC UCBCSW+4(4),=A(0) 14290000 - 000DE0 4120 0194 00194 1559 LA 2,CAWSEM 14300000 - 000DE4 0AD7 1560 SVC C'P' . LOCK CAW 14310000 - 000DE6 5060 0048 00048 1561 ST 6,CAW . STORE OUR CAW 14320000 - 000DEA 9C00 5000 00000 1562 SIO 0(5) . START THE I/O 14330000 - 000DEE 0AE5 1563 SVC C'V' . UNLOCK THE CAW 14340000 - 000DF0 4120 300C 0000C 1564 EXCPWAIT LA 2,UCBWS . NOW WAIT FOR AN INTERRUPT 14350000 - 000DF4 0AD7 1565 SVC C'P' 14360000 - 000DF6 D207 C024 3014 00024 00014 1566 MVC EXCPHM+12(8),UCBCSW . GIVE USER HIS CSW 14370000 - 000DFC D203 C020 1112 00020 00E88 1567 MVC EXCPHM+8(4),=F'12' 14380000 -1 Sample Operating System Version 2.00 Page 41 - Active Usings: PROGRAM,R0 PROGRAM+X'D76',R1 UCB,R3 EXCPHAS,R12 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000E02 D207 C018 C000 00018 00000 1568 MVC EXCPHM(8),EXCPHMSG 14390000 - 000E08 4120 C018 00018 1569 LA 2,EXCPHM 14400000 - 000E0C 0AE2 1570 SVC C'S' . AND SENT THE MESSAGE 14410000 - 000E0E 4120 C000 00000 1571 LA 2,EXCPHMSG . AND WAIT FOR A REPLY 14420000 - R:2 00000 1572 USING XRX,2 14430000 - 000E12 D203 2008 10F2 00008 00E68 1573 MVC XRXSIZE(4),=F'8' . FROM THE USER 14440000 - 000E18 0AD9 1574 SVC C'R' 14450000 - 000E1A D501 1120 200C 00E96 0000C 1575 CLC =C'OK',XRXTEXT . AM I DONE? 14460000 - 000E20 4780 10BA 00E30 1576 BE EXCPDONE 14470000 - 000E24 D504 1127 200C 00E9D 0000C 1577 CLC =C'AGAIN',XRXTEXT . DOES HE WANT ANOTHER CSW? 14480000 - 000E2A 4780 107A 00DF0 1578 BE EXCPWAIT 14490000 - 000E2E 0A6F 1579 SVC C'?' . WRONG MESSAGE 14500000 - 1580 DROP 2 14510000 - 000E30 4120 3004 00004 1581 EXCPDONE LA 2,UCBUS . UNLOCK UNIT 14520000 - 000E34 0AE5 1582 SVC C'V' 14530000 - 000E36 47F0 101C 00D92 1583 B EXCPLOOP . AND GET ANOTHER MESSAGE 14540000 - 1584 DROP 3,12 14550000 - 000E3A 0000 - 000E3C 0000000100000000 1585 EXCPHSEM DC F'1,0' 14560000 - 000E44 00000030 1586 EXCPHAAS DC A(LENEXCPA) . ALLOCATION OF AUTO STORAGE 14570000 - 000E48 00000000 1587 DC F'0' 14580000 - 000E4C 00000008 1588 DC F'8' 14590000 -- - 000E50 1590 LTORG 14610000 - 000E50 8900000020000001 1591 =X'8900000020000001' - 000E58 00000001 1592 =F'1' - 000E5C 00000600 1593 =A(XA) - 000E60 00000000 1594 =A(0) - 000E64 00000148 1595 =A(LENPCB) - 000E68 00000008 1596 =F'8' - 000E6C FFFFFFF8 1597 =F'-8' - 000E70 00000002 1598 =F'2' - 000E74 D9C5C1C4 1599 =C'READ' - 000E78 00000050 1600 =F'80' - 000E7C D7D9C9D5 1601 =C'PRIN' - 000E80 E2E3C3F1 1602 =C'STC1' - 000E84 00000084 1603 =F'132' - 000E88 0000000C 1604 =F'12' - 000E8C C5E7C3D7 1605 =C'EXCP' - 000E90 00000FC4 1606 =A(UCBTBEND) - 000E94 D5D6 1607 =C'NO' - 000E96 D6D2 1608 =C'OK' - 000E98 5BD1D6C26B 1609 =C'$JOB,' - 000E9D C1C7C1C9D5 1610 =C'AGAIN' -1 Sample Operating System Version 2.00 Page 42 - Active Usings: PROGRAM,R0 PROGRAM+X'D76',R1 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 1612 *********************************************************************** 14630000 - 1613 * * 14640000 - 1614 * UNIT CONTROL BLOCKS * 14650000 - 1615 * * 14660000 - 1616 *********************************************************************** 14670000 -0000EA4 1618 UCBTABLE DS 0F . TABLE OF UNIT CONTROL BLOCKS 14690000 - 1619 * UCB FOR READER 1 14700000 - 000EA4 00000012 1620 UCBRDR1 DC X'00000012' . DEVICE ADDRESS, 14710000 - 000EA8 0000000100000000 1621 DC F'1,0' . USER SEMAPHORE, 14720000 - 000EB0 0000000000000000 1622 DC F'0,0' . WAIT SEMAPHORE, 14730000 - 000EB8 0000000000000000 1623 DC F'0,0' . CHANNEL STATUS WORD 14740000 - 000EC0 00 1624 DC X'00' 14750000 - 000EC4 1625 DS 0F 14760000 - 1626 * UCB FOR PRINTER 1 14770000 - 000EC4 00000010 1627 UCBPRT1 DC X'00000010' . DEVICE ADDRESS, 14780000 - 000EC8 0000000100000000 1628 DC F'1,0' . USER SEMAPHORE, 14790000 - 000ED0 0000000000000000 1629 DC F'0,0' . WAIT SEMAPHORE, 14800000 - 000ED8 0000000000000000 1630 DC F'0,0' . CHANNEL STATUS WORD 14810000 - 000EE0 00 1631 DC X'00' 14820000 - 000EE4 1632 DS 0F 14830000 - 1633 * UCB FOR READER 2 14840000 - 000EE4 0000000C 1634 UCBRDR2 DC X'0000000C' . DEVICE ADDRESS, 14850000 - 000EE8 0000000100000000 1635 DC F'1,0' . USER SEMAPHORE, 14860000 - 000EF0 0000000000000000 1636 DC F'0,0' . WAIT SEMAPHORE, 14870000 - 000EF8 0000000000000000 1637 DC F'0,0' . CHANNEL STATUS WORD 14880000 - 000F00 00 1638 DC X'00' 14890000 - 000F04 1639 DS 0F 14900000 - 1640 * UCB FOR PRINTER 2 14910000 - 000F04 0000000E 1641 UCBPRT2 DC X'0000000E' . DEVICE ADDRESS, 14920000 - 000F08 0000000100000000 1642 DC F'1,0' . USER SEMAPHORE, 14930000 - 000F10 0000000000000000 1643 DC F'0,0' . WAIT SEMAPHORE, 14940000 - 000F18 0000000000000000 1644 DC F'0,0' . CHANNEL STATUS WORD 14950000 - 000F20 00 1645 DC X'00' 14960000 - 000F24 1646 DS 0F 14970000 - 1647 * UCB for READER 3 14970302 - 000F24 00000112 1648 UCBRDR3 DC X'00000112' . device address, 14970602 - 000F28 0000000100000000 1649 DC F'1,0' . user semaphore, 14970902 - 000F30 0000000000000000 1650 DC F'0,0' . wait semaphore, 14971202 - 000F38 0000000000000000 1651 DC F'0,0' . channel status word 14971502 - 000F40 00 1652 DC X'00' 14971802 - 000F44 1653 DS 0F 14972102 - 1654 * UCB for PRINTER 3 14972402 - 000F44 00000110 1655 UCBPRT3 DC X'00000110' . device address, 14972702 - 000F48 0000000100000000 1656 DC F'1,0' . user semaphore, 14973002 - 000F50 0000000000000000 1657 DC F'0,0' . wait semaphore, 14973302 - 000F58 0000000000000000 1658 DC F'0,0' . channel status word 14973602 - 000F60 00 1659 DC X'00' 14973902 - 000F64 1660 DS 0F 14974202 - 1661 * UCB for READER 4 14974502 - 000F64 0000010C 1662 UCBRDR4 DC X'0000010C' . device address, 14974802 - 000F68 0000000100000000 1663 DC F'1,0' . user semaphore, 14975102 - 000F70 0000000000000000 1664 DC F'0,0' . wait semaphore, 14975402 - 000F78 0000000000000000 1665 DC F'0,0' . channel status word 14975702 - 000F80 00 1666 DC X'00' 14976002 -1 Sample Operating System Version 2.00 Page 43 - Active Usings: PROGRAM,R0 PROGRAM+X'D76',R1 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0000F84 1667 DS 0F 14976302 - 1668 * UCB for PRINTER 4 14976602 - 000F84 0000010E 1669 UCBPRT4 DC X'0000010E' . device address, 14976902 - 000F88 0000000100000000 1670 DC F'1,0' . user semaphore, 14977202 - 000F90 0000000000000000 1671 DC F'0,0' . wait semaphore, 14977502 - 000F98 0000000000000000 1672 DC F'0,0' . channel status word 14977802 - 000FA0 00 1673 DC X'00' 14978102 - 000FA4 1674 DS 0F 14978402 - 1675 * UCB for CONSOLE 1 14978504 - 000FA4 00000009 1676 UCBCONS1 DC X'00000009' . device address, 14978604 - 000FA8 0000000100000000 1677 DC F'1,0' . user semaphore, 14978704 - 000FB0 0000000000000000 1678 DC F'0,0' . wait semaphore, 14978804 - 000FB8 0000000000000000 1679 DC F'0,0' . channel status word 14978904 - 000FC0 00 1680 DC X'00' 14979004 - 000FC4 1681 DS 0F 14979104 - 00FC4 1682 UCBTBEND EQU * 14980000 -1 Sample Operating System Version 2.00 Page 44 - Active Usings: PROGRAM,R0 PROGRAM+X'D76',R1 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 1684 *********************************************************************** 15000000 - 1685 * * 15010000 - 1686 * I/O INTERRUPT HANDLER * 15020000 - 1687 * * 15030000 - 1688 *********************************************************************** 15040000 -0 00FC4 1690 IOHANDL EQU * . THE I/O INTERRUPT HANDLER 15060000 - 000FC4 900F 01DC 001DC 1691 STM 0,15,IOHSAVE . SAVE REGISTERS 15070000 - 000FC8 0510 1692 BALR 1,0 15080000 - R:1 00FCA 1693 USING *,1 . ESTABLISH ADRESSING 15090000 - ** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131 - ** ASMA435I Record 1673 in /mbhfs/sos4k.asm on volume: - 000FCA 94FD 0039 00039 1694 NI IOOLD+1,X'FD' . TURN OFF WAIT BIT 15100000 - 000FCE 5860 172E 016F8 1695 L 6,=A(UCBTABLE) . GET POINTER TO UCB TABLE 15110000 - 000FD2 D501 6002 003A 00002 0003A 1696 IOCOMP CLC 2(2,6),IOOLD+2 . COMPARE DEVICE AND CHANNEL 15120000 - 000FD8 4780 1022 00FEC 1697 BE IODEVFND . IF EQUAL, REG 6 INDICATES PTR 15130000 - 000FDC 4166 0020 00020 1698 LA 6,UCBLENG(6) . INCREMENT TO NEXT ENTRY 15140000 - 000FE0 5960 1732 016FC 1699 C 6,=A(UCBTBEND) . ARE WE AT END OF TABLE? 15150000 - 000FE4 4770 1008 00FD2 1700 BNE IOCOMP . IF NOT DONE, TRY NEXT UCB 15160000 - 000FE8 47F0 106C 01036 1701 B IOBACK . ELSE, IGNORE IT 15170000 - R:6 00000 1702 USING UCB,6 . IT'S A UCB PTR 15180000 - 000FEC D203 6014 0040 00014 00040 1703 IODEVFND MVC UCBCSW(4),CSW . MOVE IN THE NEW CSW 15190000 - 000FF2 5870 0044 00044 1704 L 7,CSW+4 . GET STATUS BYTE 15200000 - 000FF6 5670 6018 00018 1705 O 7,UCBCSW+4 . OR IN NEW STATUS INFORMATION 15210000 - 000FFA 5070 6018 00018 1706 ST 7,UCBCSW+4 . AND STORE IT BACK 15220000 - 000FFE D201 601A 0046 0001A 00046 1707 MVC UCBCSW+6(2),CSW+6 . MOVE IN BYTE COUNT 15230000 - 001004 4120 600C 0000C 1708 LA 2,UCBWS 15240000 - 001008 9500 601C 0001C 1709 CLI UCBFPR,X'00' . IS FAST PROCESSING 15250000 - 00100C 4780 106A 01034 1710 BE IONOFPR . REQUIRED? IF NOT, RETURN 15260000 - 001010 58F0 0270 00270 1711 L 15,RUNNING . IF SO, STOP GUY NOW RUNNING 15270000 - R:F 00000 1712 USING PCB,15 15280000 - 001014 95FF F019 00019 1713 CLI PCBBLOKT,X'FF' . IS ANYONE REALLY RUNNING? 15290000 - 001018 4780 1062 0102C 1714 BE IOWAIT . IF NOT, START UP SLEEPER 15300000 - 00101C 41D0 F04C 0004C 1715 LA 13,PCBISA . IF SO, STOP RUNNING PROCESS 15310000 - R:D 00000 1716 USING SA,13 15320000 - 001020 D207 D000 0038 00000 00038 1717 MVC SAPSW,IOOLD . SAVE PROCESS WHICH WAS 15330000 - 001026 D23F D008 01DC 00008 001DC 1718 MVC SAREGS,IOHSAVE . INTERRUPTED 15340000 - 1719 DROP 13,15 15350000 - 00102C 9200 0278 00278 1720 IOWAIT MVI NEXTTRYM,X'00' . MAKE NEXTTRY NOT MODIFIED 15360000 - 001030 0AE5 1721 SVC C'V' . SO CAN FAST PROCESS SLEEPER 15370000 - 001032 0A4B 1722 SVC C'.' . GO PROCESS IT RIGHT AWAY 15380000 - 001034 0AE5 1723 IONOFPR SVC C'V' . AND WAKE UP THE SLEEPER 15390000 - 001036 980F 01DC 001DC 1724 IOBACK LM 0,15,IOHSAVE . RELOAD OUR REGISTERS 15400000 - 00103A 8200 0038 00038 1725 LPSW IOOLD . AND STEALTHILY RETURN 15410000 - 1726 DROP 1,6 15420000 -1 Sample Operating System Version 2.00 Page 45 - Active Usings: PROGRAM,R0 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 1728 *********************************************************************** 15440000 - 1729 * * 15450000 - 1730 * IPL ENTERED ROUTINE * 15460000 - 1731 * * 15470000 - 1732 * FUNCTION: TO INITIALIZE SYSTEM PARAMETERS, SET STORAGE KEYS, * 15480000 - 1733 * AND CREATE MULTIPLE JOB STREAMS. * 15490000 - 1734 * * 15500000 - 1735 *********************************************************************** 15510000 -0 0103E 1737 IPLRTN EQU * . THE IPL-ENTERED ROUTINE 15530000 - 00103E 0510 1738 BALR 1,0 15540000 - R:1 01040 1739 USING *,1 . ESTABLISH ADDRESSING 15550000 - 001040 D202 007D 1281 0007D 012C1 1740 MVC IONEW+5(3),SOSIONEW activate IO handler 15553002 - 001046 D202 005D 1289 0005D 012C9 1741 MVC EXTNEW+5(3),IPLEXNEW ignore external interrupts for now 15556002 - 00104C 41F0 10D0 01110 1742 LA 15,IPLPCB . I'M RUNNING 15560000 - 001050 50F0 0270 00270 1743 ST 15,RUNNING . INITIALIZE 'RUNNING' 15570000 - 001054 50F0 0274 00274 1744 ST 15,NEXTTRY . INITIALIZE 'NEXTTRY' 15580000 - 001058 D207 1700 1690 01740 016D0 1745 MVC VERYEND,=A(0,CORESIZE-(VERYEND-PROGRAM)) FREE CORE 15590000 - 00105E 4130 0008 00008 1746 LA 3,8 . SET ZERO KEY AND FETCH PROTECT 15600000 - 001062 5820 1224 01264 1747 L 2,CORESIZ . START PAST THE LAST BLOCK 15610000 - 001066 5B20 161C 0165C 1748 IPLCL S 2,PAGESIZE . get the previous block, page aligned 15620002 - 00106A 4740 1036 01076 1749 BM IPLTH . IF NEGATIVE, WE'RE THROUGH HERE 15630000 - 1750 * SSKE 3,2 . else set the storage key to 15640002 - 00106E B22B0032 1751 DC X'B22B0032' Assembler (XF) doesn't support SSKE 15643002 - 001072 47F0 1026 01066 1752 B IPLCL . ZERO, AND WORK BACKWARDS 15650000 - 001076 1B44 1753 IPLTH SR 4,4 . INDEX IN TABLES FOR INPUT STREAM 15660000 - 001078 5850 1088 010C8 1754 L 5,STREAMS . HOW MANY STREAMS? 15670000 - 00107C 4120 1218 01258 1755 IPLLOOP LA 2,IPLAPCBS . READY TO ALLOCATE A PCB 15680000 - R:2 00000 1756 USING XAX,2 15690000 - 001080 0AC1 1757 SVC C'A' . ALLOCATE 15700000 - 001082 5820 2004 00004 1758 L 2,XAXADDR . GET THE ADDRESS 15710000 - 001086 D253 2000 1228 00000 01268 1759 MVC 0(TYPLEN,2),TYPPCB .MAKE IT LOOK LIKE A PCB 15720000 - 00108C 0AC9 1760 SVC C'I' . CHAIN IT ON 15730000 - R:2 00000 1761 USING PCB,2 15740000 - 00108E 5020 2008 00008 1762 ST 2,PCBNPTG . BUT PUT IT IN A GROUP BY ITSELF 15750000 - 001092 5020 200C 0000C 1763 ST 2,PCBLPTG 15760000 - 1764 DROP 2 15770000 - R:F 00000 1765 USING PCB,15 15780000 - 001096 50F0 F00C 0000C 1766 ST 15,PCBLPTG . LIKEWISE FOR THE IPL PCB 15790000 - 00109A 50F0 F008 00008 1767 ST 15,PCBNPTG 15800000 - 1768 DROP 15 15810000 - R:2 00000 1769 USING PCB,2 15820000 - 00109E 4180 204C 0004C 1770 LA 8,PCBISA . GET THE NEW PCB'S ISA 15830000 - R:8 00000 1771 USING SA,8 15840000 - 0010A2 4190 8008 00008 1772 LA 9,SAREGS . ABOUT TO FIX INIT REGS 15850000 - R:9 00000 1773 USING REGS,9 15860000 - 0010A6 41A0 108C 010CC 1774 LA 10,UCBTAB 15870000 - 0010AA 1AA4 1775 AR 10,4 15880000 - 0010AC D203 900C A000 0000C 00000 1776 MVC REG3,0(10) . REG3 -> (RDRUCB,PRTUCB) 15890000 - 0010B2 D203 9010 A010 00010 00010 1777 MVC REG4,KEYTAB-UCBTAB(10) . REG4 = KEY 15900000 - 1778 DROP 9 15910000 - 0010B8 4144 0004 00004 1779 LA 4,4(4) . GO TO NEXT JOB STREAM 15920000 - 0010BC 4650 103C 0107C 1780 BCT 5,IPLLOOP . DO FOR EACH STREAM 15930000 - 0010C0 D202 005D 1285 0005D 012C5 1781 MVC EXTNEW+5(3),SOSEXNEW reactivate ext interrupt handler 15935002 - 0010C6 0A4B 1782 SVC C'.' . THEN ENTER TRAFFIC CONTROLLER 15940000 -1 Sample Operating System Version 2.00 Page 46 - Active Usings: PROGRAM,R0 PROGRAM+X'1040',R1 PCB,R2 SA,R8 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -00010C8 00000004 1784 STREAMS DC F'4' . NUMBER OF STREAMS 15960002 -0 010CC 1786 UCBTAB EQU * . TABLE OF PTRS TO UCB BLOCKS 15980000 - 0010CC 000010EC 1787 DC A(UCBLP1) 15990000 - 0010D0 000010F4 1788 DC A(UCBLP2) 16000000 - 0010D4 000010FC 1789 DC A(UCBLP3) 16003002 - 0010D8 00001104 1790 DC A(UCBLP4) 16006002 -0 010DC 1792 KEYTAB EQU * . TABLE OF PROTECTION KEYS 16020000 - 0010DC 00100000 1793 DC X'00100000' storage key for stream 1 region 16030002 - 0010E0 00200000 1794 DC X'00200000' storage key for stream 2 region 16034002 - 0010E4 00300000 1795 DC X'00300000' storage key for stream 3 region 16038002 - 0010E8 00400000 1796 DC X'00400000' storage key for stream 4 region 16042002 -00010EC 00000EA400000EC4 1798 UCBLP1 DC A(UCBRDR1,UCBPRT1) 16060000 - 0010F4 00000EE400000F04 1799 UCBLP2 DC A(UCBRDR2,UCBPRT2) 16070000 - 0010FC 00000F2400000F44 1800 UCBLP3 DC A(UCBRDR3,UCBPRT3) 16073002 - 001104 00000F6400000F84 1801 UCBLP4 DC A(UCBRDR4,UCBPRT4) 16076002 -0001110 1803 DS 0D 16090000 - 001110 4040404040404040 1804 IPLPCB DC CL8' ' . IPL ROUTINE PCB 16100000 - 001118 0000111000001110 1805 DC 4A(IPLPCB) 16110000 - 001128 FF000000 1806 DC X'FF000000' . INITIALIZED FLAGS 16120000 - 00112C 0000000100000000 1807 DC F'1,0' 16130000 - 001134 0000000000000000 1808 DC 5F'0,0' 16140000 - 00115C 0002000000000000 1809 DC X'0002000000000000' 16150000 - 001164 1810 DS CL76 16160000 - 0011B0 1811 DS CL84 16170000 - 001204 1812 DS CL84 16180000 -0001258 00000148 1814 IPLAPCBS DC A(LENPCB) . ALLOC LIST FOR PCB'S 16200000 - 00125C 00000000 1815 DC A(0) 16210000 - 001260 00000008 1816 DC F'8' 16220000 - 001264 01000000 1817 CORESIZ DC A(CORESIZE) . BYTES OF CORE IN OBJECT MACHINE 16230000 -0001268 1819 DS 0D 16250000 - 001268 5CC9C2E2E4D74040 1820 TYPPCB DC CL8'*IBSUP' . A TEMPLATE *IBSUP PCB 16260000 - 001270 0000000000000000 1821 DC 4A(0) 16270000 - 001280 00000000 1822 TEMPLATE DC X'00000000' . INITIALIZED FLAGS 16280000 - 001284 0000000100000000 1823 DC F'1,0' 16290000 - 00128C 0000000000000000 1824 DC 5F'0,0' 16300000 - 0012B4 FF000000000012CC 1825 DC X'FF00000000',AL3(JSP) 16310000 - 00054 1826 TYPLEN EQU *-TYPPCB 16320000 - 0012BC 8200 0018 00018 1827 EXINTRPT LPSW EXTOLD ignore external interrupts 16321002 - 0012C0 1828 DS 0F align 16322002 - 0012C0 00 1829 DC X'00' filler 16323002 - 0012C1 000FC4 1830 SOSIONEW DC AL3(IOHANDL) sample OS IO new PSW instruction addr 16324002 - 0012C4 00 1831 DC X'00' filler 16325002 - 0012C5 00027A 1832 SOSEXNEW DC AL3(EXTHANDL) sample OS ext new PSW instruction addr 16326002 - 0012C8 00 1833 DC X'00' filler 16327002 - 0012C9 0012BC 1834 IPLEXNEW DC AL3(EXINTRPT) IPLRTN ext new PSW instruction addr 16328002 -1 Sample Operating System Version 2.00 Page 47 - Active Usings: PROGRAM,R0 PROGRAM+X'1040',R1 PCB,R2 SA,R8 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 1836 *********************************************************************** 16340000 - 1837 * * 16350000 - 1838 * JOB STREAM PROCESSOR * 16360000 - 1839 * * 16370000 - 1840 *********************************************************************** 16380000 -0 012CC 1842 JSP EQU * . THE JOB STREAM PROCESSOR 16400000 - 0012CC 0510 1843 BALR 1,0 . (PROCESS *IBSUP) 16410000 - R:1 012CE 1844 USING *,1 . ESTABLISH ADDRESSING 16420000 - 0012CE 4120 1392 01660 1845 LA 2,JSPSUSEM . LOCK OURSELVES UNTIL 16430000 - 0012D2 0AD7 1846 SVC C'P' . WE CAN ALLOCATE STORAGE 16440000 - 0012D4 4120 139A 01668 1847 LA 2,JSPAAS . READY TO ALLOCATE 16450000 - R:2 00000 1848 USING XAX,2 16460000 - 0012D8 0AC5 1849 SVC C'E' . ALLOCATE 16470000 - 0012DA 58C0 2004 00004 1850 L 12,XAXADDR . PTR TO AUTO AREA 16480000 - 1851 DROP 2 16490000 - R:C 00000 1852 USING JSPAS,12 . USE FOR ADDRESSING 16500000 - 0012DE 4120 1392 01660 1853 LA 2,JSPSUSEM . UNLOCK OURSELVES 16510000 - 0012E2 0AE5 1854 SVC C'V' 16520000 - 0012E4 D207 C164 140A 00164 016D8 1855 MVC TREAD+0(8),=CL8'*IN' . INITIALIZE VALUES IN AUTOMATIC 16530000 - 0012EA D203 C16C 1432 0016C 01700 1856 MVC TREAD+8(4),=F'8' . STORAGE 16540000 - 0012F0 D203 C170 1436 00170 01704 1857 MVC TREAD+12(4),=C'READ' 16550000 - 0012F6 4120 C084 00084 1858 LA 2,CARD 16560000 - 0012FA 5020 C174 00174 1859 ST 2,ACARD 16570000 - 0012FE D207 C190 1412 00190 016E0 1860 MVC USERL+0(8),=CL8'USERPROG' 16580000 - 001304 D20B C178 1352 00178 01620 1861 MVC WRITE(12),SKIP 16590000 - 00130A D203 C184 143A 00184 01708 1862 MVC WRITE+12(4),=C'PRIN' 16600000 - 001310 4150 C000 00000 1863 LA 5,LINE 16610000 - 001314 5050 C188 00188 1864 ST 5,WRITE+16 16620000 - 001318 D203 C1B0 138E 001B0 0165C 1865 MVC CORE+8(4),PAGESIZE align to page boundary 16630002 - 00131E D207 C1B8 1412 001B8 016E0 1866 MVC TALK+0(8),=CL8'USERPROG' 16640000 - 001324 D203 C1C0 143E 001C0 0170C 1867 MVC TALK+8(4),=F'12' 16650000 - 00132A D203 C1D8 1442 001D8 01710 1868 MVC ANYBACK+8(4),=F'1' 16660000 - 001330 D203 C1B4 1446 001B4 01714 1869 MVC RLDTEMP,=A(0) 16670000 - 001336 5040 C18C 0018C 1870 ST 4,KEY . STORE KEY 16680000 - 00133A 1853 1871 LR 5,3 . GET PTR TO UCB PTR BLOCK 16690000 - 00133C 5835 0000 00000 1872 L 3,0(5) . GET READER POINTER 16700000 - 001340 4120 1362 01630 1873 LA 2,INSEQ . READY TO CREATE & START *IN 16710000 - 001344 0AC3 1874 SVC C'C' . CREATE 16720000 - 001346 0AE8 1875 SVC C'Y' . START 16730000 - 001348 5835 0004 00004 1876 L 3,4(5) . GET PTR TO PRINTER UCB 16740000 - 00134C 4120 136E 0163C 1877 LA 2,OUTSEQ . READY TO CREATE & START *OUT 16750000 - 001350 0AC3 1878 SVC C'C' . CREATE 16760000 - 001352 0AE8 1879 SVC C'Y' . START 16770000 -0001354 4120 C164 00164 1881 LOOP LA 2,TREAD . READT TO READ A CARD 16790000 - 001358 0AE2 1882 SVC C'S' . START TO READ 16800000 - 00135A D203 C0DC 144A 000DC 01718 1883 MVC RREPLY1,=F'132' . 132 CHARS FOR REPLY 16810000 - 001360 4120 C0D4 000D4 1884 LA 2,RREPLY 16820000 - 001364 0AD9 1885 SVC C'R' . LISTEN FOR REPLY 16830000 - 001366 D501 C0E0 145A 000E0 01728 1886 CLC REPLY(2),=C'OK' . IS REPLY 'OK'? 16840000 - 00136C 4770 10B0 0137E 1887 BNE STOP . IF NOT, STOP 16850000 - 001370 D504 145C C084 0172A 00084 1888 CLC =C'$JOB,',CARD . HAVE WE A JOB CARD? 16860000 - 001376 4780 10B6 01384 1889 BE JOB . GOOD! 16870000 - 00137A 47F0 1086 01354 1890 B LOOP . ELSE LOOP 16880000 -1 Sample Operating System Version 2.00 Page 48 - Active Usings: PROGRAM,R0 PROGRAM+X'12CE',R1 SA,R8 JSPAS,R12 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -000137E 4120 134A 01618 1891 STOP LA 2,JSPNEVER . WAIT FOR A "V" OPERATION 16890000 - 001382 0AD7 1892 SVC C'P' . THAT NEVER COMES 16900000 -0001384 9200 C1DD 001DD 1894 JOB MVI LOADED,X'00' . REMEMBER NOT LOADED 16920000 - 001388 D283 C000 141A 00000 016E8 1895 MVC LINE,=CL8' ' . CLEAR A LINE, PUT IN 16930000 - 00138E D27B C008 C007 00008 00007 1896 MVC LINE+8(124),LINE+7 .ALL BLANKS 16940000 - 001394 D24F C000 C084 00000 00084 1897 MVC LINE(80),CARD . GET READY TO SEND $JOB CARD 16950000 - 00139A 4120 C178 00178 1898 LA 2,WRITE . TO PRINTER 16960000 - 00139E 0AE2 1899 SVC C'S' . SEND IT 16970000 - 0013A0 4120 C0D4 000D4 1900 LA 2,RREPLY 16980000 - 0013A4 0AD9 1901 SVC C'R' . AND WAIT FOR REPLY 16990000 - 0013A6 4120 C190 00190 1902 LA 2,USERL . CREATE USERPROG 17000000 - 0013AA 0AC3 1903 SVC C'C' 17010000 - 0013AC 4140 C088 00088 1904 LA 4,CARD+4 . START TO SCAN CARD 17020000 - 0013B0 4530 131C 015EA 1905 BAL 3,SCAN . GET NEXT TOKEN 17030000 - 0013B4 0650 1906 BCTR 5,0 . less one to remove K 17040002 - 0013B6 5650 138A 01658 1907 O 5,COREPKLN . length of packed size for execute 17049002 - 0013BA 4450 137A 01648 1908 EX 5,COREPACK . pack core digits 17058002 - 0013BE 4F80 1382 01650 1909 CVB 8,COREPCKD . convert core requested to binary 17067002 - 0013C2 1B99 1910 SR 9,9 . is core .. 17076002 - 0013C4 8C80 0002 00002 1911 SRDL 8,2 . .. modulo four .. 17085002 - 0013C8 1299 1912 LTR 9,9 . .. equal zero? 17094002 - 0013CA 4780 1104 013D2 1913 BZ COREOK . -> yes, use it 17103002 - 0013CE 4180 8001 00001 1914 LA 8,1(,8) . -> no, up one page 17112002 - 0013D2 8980 000C 0000C 1915 COREOK SLL 8,12 . core bytes, rounded up to full pages 17121002 - 0013D6 5080 C1A8 001A8 1916 ST 8,CORE . remember core requirement 17130002 - 0013DA 4530 131C 015EA 1917 ASGNUNIT BAL 3,SCAN . GET NEXT TOKEN 17150000 - 0013DE 957E 4000 00000 1918 CLI 0(4),C'=' . IS IT AN '='? 17160000 - 0013E2 4770 1194 01462 1919 BNE LOAD . IF NOT, LOAD IN THE OBJECT DECK 17170000 - 0013E6 955C 9000 00000 1920 CLI 0(9),C'*' . HAS USER NAMED IT STARTING 17180000 - 0013EA 4780 12C8 01596 1921 BE EXPUNGE . WITH '*'? IF SO, THROW HIM OUT 17190000 - 0013EE 4120 C19C 0019C 1922 LA 2,SEQ . ELSE CREATE A PROCESS 17200000 - 0013F2 D207 C19C 141A 0019C 016E8 1923 MVC SEQ,=CL8' ' . BLANK OUT THE NAME 17210000 - 0013F8 4450 1154 01422 1924 EX 5,UNAMMOV . THEN MOVE THE RELEVANT 17220000 - 0013FC 0AC3 1925 SVC C'C' . CHARACTERS AND CREATE 17230000 - 0013FE 4120 C19C 0019C 1926 LA 2,SEQ . WE'LL START IT IN A MOMENT 17240000 - 001402 4530 131C 015EA 1927 BAL 3,SCAN . SCAN AGAIN 17250000 - 001406 4450 115A 01428 1928 EX 5,CMPIN . IS IT 'IN'? 17260000 - 00140A 4780 116C 0143A 1929 BE ASIN . IF SO, ASSIGN IT AS IN 17270000 - 00140E 4450 1160 0142E 1930 EX 5,CMPOUT . IF IT'S 'OUT' 17280000 - 001412 4780 117C 0144A 1931 BE ASOUT . ASSIGN IT AS OUT 17290000 - 001416 4450 1166 01434 1932 EX 5,CMPEXCP . IS IT 'EXCP'? 17300000 - 00141A 4780 1184 01452 1933 BE ASEXCP . IF SO, ASSIGN IT AS EXCP 17310000 - 00141E 47F0 12C8 01596 1934 B EXPUNGE . ERROR: GO ON TO NEXT JOB 17320000 - 001422 D200 C19C 9000 0019C 00000 1935 UNAMMOV MVC SEQ(0),0(9) . MOVE THE UNIT'S PROCESS NAME 17330000 - 001428 D500 9000 1461 00000 0172F 1936 CMPIN CLC 0(0,9),=C'IN ' . DOES IT SAY 'IN'? 17340000 - 00142E D500 9000 144E 00000 0171C 1937 CMPOUT CLC 0(0,9),=C'OUT ' . DOES IT SAY 'OUT'? 17350000 - 001434 D500 9000 1464 00000 01732 1938 CMPEXCP CLC 0(0,9),=C'EXCP ' . DOES IT SAY 'EXCP'? 17360000 -000143A 41B0 140A 016D8 1940 ASIN LA 11,=CL8'*IN' . POINT TO NAME OF READER HANDLER 17380000 - 00143E D203 C1A4 1452 001A4 01720 1941 SETDIM MVC UNITRTN,=A(DIM) . USE DIM AS THE INTERFACE 17390000 - 001444 0AE8 1942 SVC C'Y' 17400000 - 001446 47F0 110C 013DA 1943 B ASGNUNIT 17410000 - 00144A 41B0 1422 016F0 1944 ASOUT LA 11,=CL8'*OUT' . POINT TO NAME OF PRINTER HANDLER 17420000 - 00144E 47F0 1170 0143E 1945 B SETDIM 17430000 -1 Sample Operating System Version 2.00 Page 49 - Active Usings: PROGRAM,R0 PROGRAM+X'12CE',R1 SA,R8 JSPAS,R12 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0001452 D203 C1A4 1456 001A4 01724 1946 ASEXCP MVC UNITRTN,=A(EXCPHNDL) . USE FOR USER SUPPLIED 17440000 - 001458 58B0 C18C 0018C 1947 L 11,KEY 17450000 - 00145C 0AE8 1948 SVC C'Y' . I/O ROUTINE 17460000 - 00145E 47F0 110C 013DA 1949 B ASGNUNIT 17470000 -0001462 4120 C1A8 001A8 1951 LOAD LA 2,CORE . READY TO ALLOCATE THE REGION 17490000 - 001466 0AC1 1952 SVC C'A' . AND ALLOCATE IT 17500000 - 001468 92FF C1DD 001DD 1953 MVI LOADED,X'FF' . REMEMBER THAT WE'RE LOADED 17510000 - 00146C 5890 C1AC 001AC 1954 L 9,CORE+4 . GET THE FIRST ADDRESS 17520000 - 001470 5840 C18C 0018C 1955 L 4,KEY . GET THE KEY 17530000 - 001474 8840 0010 00010 1956 SRL 4,16 17540000 - 001478 5640 13A2 01670 1957 O 4,FETCHPRT fetch protected 17545002 - 00147C 1839 1958 LR 3,9 . GET THE BLOCK FOLLOWING OURS 17550000 - 00147E 1A38 1959 AR 3,8 17560000 - 001480 5B30 138E 0165C 1960 LOADSK S 3,PAGESIZE . get the previous block, page aligned 17570002 - 001484 1939 1961 CR 3,9 . HAVE WE PASSED THE START? 17580000 - 001486 4740 11C4 01492 1962 BL LOADLOOP . IF SO, START LOADING 17590000 - 1963 * SSKE 4,3 . else set this block to the key 17600002 - 00148A B22B0043 1964 DC X'B22B0043' Assembler (XF) doesn't support SSKE 17603002 - 00148E 47F0 11B2 01480 1965 B LOADSK . AND BRANCH BACK 17610000 - 001492 4120 C164 00164 1966 LOADLOOP LA 2,TREAD . READ IN OBJECT DECK 17620000 - 001496 0AE2 1967 SVC C'S' . GET A CARD A'READING 17630000 - 001498 D203 C0DC 144A 000DC 01718 1968 MVC RREPLY1,=F'132' 17640000 - 00149E 4120 C0D4 000D4 1969 LA 2,RREPLY 17650000 - 0014A2 0AD9 1970 SVC C'R' . WAIT FOR ANSWER 17660000 - 0014A4 D502 C085 1469 00085 01737 1971 CLC CARD+1(3),=C'TXT' . IS IT A TXT CARD? 17670000 - 0014AA 4780 11F8 014C6 1972 BE TXTCARD 17680000 - 0014AE D502 C085 146C 00085 0173A 1973 CLC CARD+1(3),=C'RLD' . IS IT A RLD CARD? 17690000 - 0014B4 4780 1212 014E0 1974 BE RLDCARD 17700000 - 0014B8 D502 C085 146F 00085 0173D 1975 CLC CARD+1(3),=C'END' . IS IT AN END CARD? 17710000 - 0014BE 4780 1270 0153E 1976 BE ENDCARD 17720000 - 0014C2 47F0 11C4 01492 1977 B LOADLOOP . IF NONE, IGNORE. 17730000 -00014C6 58A0 C088 00088 1979 TXTCARD L 10,CARD+4 . GET THE RELATIVE ADDRESS 17750000 - 0014CA 1AA9 1980 AR 10,9 . PLUS THE ABSOLUTE ADDRESS 17760000 - 0014CC 48B0 C08E 0008E 1981 LH 11,CARD+10 . GET THE COUNT, 17770000 - 0014D0 06B0 1982 BCTR 11,0 . DECREMENTED 17780000 - 0014D2 44B0 120C 014DA 1983 EX 11,TXTMOV . AND MOVE THE TEXT 17790000 - 0014D6 47F0 11C4 01492 1984 B LOADLOOP . AND READ ANOTHER CARD! OH WOW! 17800000 - 0014DA D200 A000 C094 00000 00094 1985 TXTMOV MVC 0(0,10),CARD+16 17810000 -00014E0 48B0 C08E 0008E 1987 RLDCARD LH 11,CARD+10 . GET THE BYTE COUNT 17830000 - 0014E4 41D0 C098 00098 1988 LA 13,CARD+20 . AND AN INDEX INTO THE CARD 17840000 - 0014E8 58AD 0000 00000 1989 RLDLOOP L 10,0(13) . GET THE LOCATION TO BE RLD'D 17850000 - 0014EC 1AA9 1990 AR 10,9 . GET THE ABSOLUTE ADDRESS 17860000 - 0014EE 9103 D003 00003 1991 TM 3(13),X'03' . IS IT A FULLWORD? 17870000 - 0014F2 4770 1252 01520 1992 BNZ NOTALGND . IF NO, HANDLE AS THREE BYTES 17880000 - 0014F6 587A 0000 00000 1993 L 7,0(10) . GET THAT WORD (HAD BETTER BE 17890000 - 0014FA 1A79 1994 AR 7,9 . ONE); ADD THE RELOCATION 17900000 - 0014FC 507A 0000 00000 1995 ST 7,0(10) . ADDRESS, AND STORE IT BACK 17910000 - 001500 9101 D000 00000 1996 RLDCONT TM 0(13),X'01' . CHECK IF LONG OR SHORT FIELD 17920000 - 001504 4770 1242 01510 1997 BNZ SHORT . AND BRANCH ACCORDINGLY 17930000 - 001508 4140 0008 00008 1998 LA 4,8 . SKIP EIGHT BYTES 17940000 - 00150C 47F0 1246 01514 1999 B RLDFINI 17950000 - 001510 4140 0004 00004 2000 SHORT LA 4,4 . SKIP FOUR BYTES 17960000 -1 Sample Operating System Version 2.00 Page 50 - Active Usings: PROGRAM,R0 PROGRAM+X'12CE',R1 SA,R8 JSPAS,R12 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0001514 1AD4 2001 RLDFINI AR 13,4 . INCREMENT THE CARD INDEX 17970000 - 001516 1BB4 2002 SR 11,4 . DECREMENT THE BYTE COUNT 17980000 - 001518 4720 121A 014E8 2003 BP RLDLOOP . AND TRY AGAIN 17990000 - 00151C 47F0 11C4 01492 2004 B LOADLOOP . OR READ ANOTHER CARD 18000000 - 001520 D202 C1B5 A000 001B5 00000 2005 NOTALGND MVC RLDTEMP+1(3),0(10) . PUT ADDRESS HERE 18010000 - 001526 5870 C1B4 001B4 2006 L 7,RLDTEMP . RELOCATE IT 18020000 - 00152A 1A79 2007 AR 7,9 18030000 - 00152C 5070 C1B4 001B4 2008 ST 7,RLDTEMP . AND PUT IT BACK TO 18040000 - 001530 D202 A000 C1B5 00000 001B5 2009 MVC 0(3,10),RLDTEMP+1 . WHERE IT BELONGS 18050000 - 001536 9400 C1B4 001B4 2010 NI RLDTEMP,X'00' . CLEAR OUT TEMPORARY 18060000 - 00153A 47F0 1232 01500 2011 B RLDCONT . AND LOOP BACK 18070000 -000153E 4120 C190 00190 2013 ENDCARD LA 2,USERL . FIND THE PCB FOR USERPROG 18090000 - 001542 0AD5 2014 SVC C'N' 18100000 - 001544 5840 C198 00198 2015 L 4,USERL+8 . GET THE ADDRESS 18110000 - R:4 00000 2016 USING PCB,4 18120000 - 001548 92FF 4019 00019 2017 MVI PCBBLOKT,X'FF' . TEMPORARILY BLOCK IT 18130000 - 00154C 5090 C198 00198 2018 ST 9,USERL+8 . STORE THE BEGINNING ADDRESS 18140000 - 001550 0AE8 2019 SVC C'Y' . THEN START IT 18150000 - 001552 5850 C18C 0018C 2020 L 5,KEY . GET THE KEY 18160000 - 001556 5650 404C 0004C 2021 O 5,PCBISA+0 . THEN OR THIS INTO THE 18170000 - 00155A 5050 404C 0004C 2022 ST 5,PCBISA+0 . FIRST WORD OF THE PCB 18180000 - 00155E 9601 404D 0004D 2023 OI PCBISA+1,X'01' . OR IN A 'PROGRAM STATE' BIT 18190000 - 001562 9200 4019 00019 2024 MVI PCBBLOKT,X'00' . AND THEN UNBLOCK IT 18200000 - 2025 DROP 4 18210000 - 001566 4120 C1B8 001B8 2026 LA 2,TALK . LISTEN TO WHAT IT SAYS 18220000 - 00156A 0AD9 2027 SVC C'R' 18230000 -000156C D207 C000 141A 00000 016E8 2029 MVC LINE(8),=CL8' ' . IF JOB FINISHED, CLEAR A LINE 18250000 - 001572 D27B C008 C007 00008 00007 2030 MVC LINE+8(124),LINE+7 18260000 - 001578 D20B C000 C1C4 00000 001C4 2031 MVC LINE(12),TALK+12 . MOVE THE MESSAGE ONTO THE LINE 18270000 - 00157E 4120 C178 00178 2032 LA 2,WRITE . AND SAY TO WRITE IT 18280000 - 001582 0AE2 2033 SVC C'S' 18290000 - 001584 4120 C1D0 001D0 2034 LA 2,ANYBACK 18300000 - 001588 0AD9 2035 SVC C'R' 18310000 - 00158A 4120 1352 01620 2036 LA 2,SKIP . SKIP TO THE TOP OF THE NEXT PAGE 18320000 - 00158E 0AE2 2037 SVC C'S' 18330000 - 001590 4120 C1D0 001D0 2038 LA 2,ANYBACK 18340000 - 001594 0AD9 2039 SVC C'R' 18350000 -0001596 5850 0270 00270 2041 EXPUNGE L 5,RUNNING . EXPUNGE A JOB: LOOK AT ALL PCBS 18370000 - 00159A 4120 C19C 0019C 2042 LA 2,SEQ 18380000 - R:5 00000 2043 USING PCB,5 18390000 - 00159E D207 C19C 5000 0019C 00000 2044 EXPLOOP MVC SEQ(8),PCBNAME . GET THE PROCESS NAME 18400000 - 0015A4 5840 5008 00008 2045 L 4,PCBNPTG . GET THE NEXT PTR 18410000 - 0015A8 955C C19C 0019C 2046 CLI SEQ+0,C'*' . IS IT A '*' PROCESS? 18420000 - 0015AC 4780 12E6 015B4 2047 BE EXPNXT . IF SO, SKIP OVER 18430000 - 0015B0 0AE9 2048 SVC C'Z' . ELSE STOP IT 18440000 - 0015B2 0AC4 2049 SVC C'D' . AND DESTROY IT 18450000 - 0015B4 1854 2050 EXPNXT LR 5,4 . GO TO THE NEXT PCB 18460000 - 0015B6 5950 0270 00270 2051 C 5,RUNNING . ARE WE THROUGH? 18470000 - 0015BA 4770 12D0 0159E 2052 BNE EXPLOOP . IF NOT, LOOP AGAIN 18480000 - 0015BE 9500 C1DD 001DD 2053 CLI LOADED,X'00' . WAS CORE ALLOCATED? 18490000 - 0015C2 4780 1086 01354 2054 BE LOOP . IF NOT, GO READ THE NEXT $JOB CARD 18500000 - 0015C6 4140 0008 00008 2055 LA 4,8 . set zero key and fetch protect 18510002 -1 Sample Operating System Version 2.00 Page 51 - Active Usings: PROGRAM,R0 PROGRAM+X'12CE',R1 PCB,R5 SA,R8 JSPAS,R12 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -00015CA 1839 2056 LR 3,9 . AND A POINTER TO THE NEXT 18520000 - 0015CC 1A38 2057 AR 3,8 . BLOCK AFTER OURS 18530000 - 0015CE 5B30 138E 0165C 2058 LOADCL S 3,PAGESIZE . get the previous block, page aligned 18540002 - 0015D2 1939 2059 CR 3,9 . ARE WE THROUGH? 18550000 - 0015D4 4740 1312 015E0 2060 BL LOADD . IF SO, GO FREE CORE 18560000 - 2061 * SSKE 4,3 . else clear storage key 18570002 - 0015D8 B22B0043 2062 DC X'B22B0043' Assembler (XF) doesn't support SSKE 18573002 - 0015DC 47F0 1300 015CE 2063 B LOADCL . AND LOOP BACK 18580000 - 0015E0 4120 C1A8 001A8 2064 LOADD LA 2,CORE 18590000 - 0015E4 0AC6 2065 SVC C'F' . FREE THE STORAGE 18600000 - 0015E6 47F0 1086 01354 2066 B LOOP . READ ANOTHER $JOB CARD 18610000 -00015EA 1B55 2068 SCAN SR 5,5 . START THE TOKEN COUNT AT ZERO 18630000 - 0015EC 4144 0001 00001 2069 SCANLOOP LA 4,1(4) . GO TO NEXT CHARACTER 18640000 - 0015F0 956B 4000 00000 2070 CLI 0(4),C',' . DO WE HAVE A DELIMITER? IF SO, 18650000 - 0015F4 4780 1342 01610 2071 BE TOKSTART 18660000 - 0015F8 957E 4000 00000 2072 CLI 0(4),C'=' . DITTO 18670000 - 0015FC 4780 1342 01610 2073 BE TOKSTART 18680000 - 001600 9540 4000 00000 2074 CLI 0(4),C' ' . DITTO 18690000 - 001604 4780 1342 01610 2075 BE TOKSTART 18700000 - 001608 4155 0001 00001 2076 LA 5,1(5) . AND UP COUNT 18710000 - 00160C 47F0 131E 015EC 2077 B SCANLOOP . AND LOOP 18720000 - 001610 1894 2078 TOKSTART LR 9,4 . SET REG9 TO START 18730000 - 001612 1B95 2079 SR 9,5 . OF THIS TOKEN 18740000 - 001614 0650 2080 BCTR 5,0 . LESS ONE FOR EXECUTE INSTRUCTION 18750000 - 001616 07F3 2081 BR 3 18760000 --001618 0000000000000000 2083 JSPNEVER DC F'0,0' . A GOOD WAY TO DIE: P(JSPNEVER) 18780000 - 001620 5CD6E4E340404040 2084 SKIP DC CL8'*OUT' . MESSAGE BLOCK FOR A NEW PAGE 18790000 - 001628 00000008 2085 DC F'8' 18800000 - 00162C E2E3C3F1 2086 DC CL4'STC1' 18810000 - 001630 5CC9D54040404040 2087 INSEQ DC CL8'*IN' . SEQ TO CREATE & START *IN 18820000 - 001638 00000AC6 2088 DC A(RDRHANDL) 18830000 - 00163C 5CD6E4E340404040 2089 OUTSEQ DC CL8'*OUT' . SEQ TO CREATE & START *OUT 18840000 - 001644 00000C48 2090 DC A(PRTHANDL) 18850000 - 001648 F200 1382 9000 01650 00000 2091 COREPACK PACK COREPCKD(1),0(1,9) . executed to pack core size req'd 18860002 - 001650 2092 COREPCKD DS D . packed core requirement goes here 18880002 - 001658 00000070 2093 COREPKLN DC X'00000070' . length of packed size for execute 18900002 - 00165C 00001000 2094 PAGESIZE DC F'4096' . page size for core computation 18920002 - 001660 0000000100000000 2095 JSPSUSEM DC F'1,0' . SEMAPHORE TO LOCK ROUTINE 18990000 - 001668 000001E0 2096 JSPAAS DC A(LENJSPAS) . ALLOCATE LIST FOR AUTO STORAGE 19000000 - 00166C 2097 DS A 19010000 - 001670 00000008 2098 FETCHPRT DC F'8' reused to or in fetch protection 19020002 -1 Sample Operating System Version 2.00 Page 52 - Active Usings: PROGRAM,R0 PROGRAM+X'12CE',R1 PCB,R5 SA,R8 JSPAS,R12 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 2100 *********************************************************************** 19040000 - 2101 * * 19050000 - 2102 * DEVICE INTERFACE MODULE * 19060000 - 2103 * * 19070000 - 2104 * FUNCTION: TO INTERFACE BETWEEN USERPROG AND DEVICE HANDLER * 19080000 - 2105 * DATABASES: NONE * 19090000 - 2106 * ROUTINES USED: XA, XP, XV, XR, XS * 19100000 - 2107 * PROCEDURE: ALLOCATE AUTOMATIC STORAGE; START TO READ MESSAGE * 19110000 - 2108 * FROM USER; SEND MESSAGE TO DEVICE HANDLER; * 19120000 - 2109 * CONTINUE LOOPING, SENDING MESSAGES FROM USER TO * 19130000 - 2110 * DEVICE HANDLER AND BACK. * 19140000 - 2111 * ERROR CHECKS: NONE * 19150000 - 2112 * INTERRUPTS: ON * 19160000 - 2113 * USER ACCESS: YES * 19170000 - 2114 * * 19180000 - 2115 *********************************************************************** 19190000 -0 01674 2117 DIM EQU * . THE DEVICE INTERFACE MODULE 19210000 - 001674 0510 2118 BALR 1,0 19220000 - R:1 01676 2119 USING *,1 . ESTABLISH ADDRESSING 19230000 - 001676 4120 1042 016B8 2120 LA 2,DIMSEM . LOCK UNTIL GET STORAGE 19240000 - 00167A 0AD7 2121 SVC C'P' 19250000 - 00167C 4120 104A 016C0 2122 LA 2,DIMAAS . READY TO ALLOCATE STORAGE 19260000 - R:2 00000 2123 USING XAX,2 19270000 - 001680 0AC5 2124 SVC C'E' . DO IT 19280000 - 001682 58C0 2004 00004 2125 L 12,XAXADDR . GET THE ADDRESS 19290000 - 2126 DROP 2 19300000 - 001686 4120 1042 016B8 2127 LA 2,DIMSEM . UNLOCK OURSELVES 19310000 - 00168A 0AE5 2128 SVC C'V' 19320000 - R:C 00000 2129 USING DIMAS,12 . USE 12 FOR AUTO STORAGE 19330000 - 00168C D207 C090 B000 00090 00000 2130 MVC DIMLMS,0(11) . MOVE NAME OF RECIEVER 19340000 - 001692 4180 0084 00084 2131 LA 8,132 . REG 8 = SIZE OF MESSAGE 19350000 - 001696 5080 C008 00008 2132 DIMLOOP ST 8,DIMMSG+8 . GET READY TO READ A MESSAGE 19360000 - 00169A 4120 C000 00000 2133 LA 2,DIMMSG 19370000 - 00169E 0AD9 2134 SVC C'R' . READ 19380000 - 0016A0 D207 C098 C000 00098 00000 2135 MVC DIMTEMP,DIMMSG . SAVE SENDER NAME 19390000 - 0016A6 D207 C000 C090 00000 00090 2136 MVC DIMMSG,DIMLMS . SEND IT BACK TO THE LAST GUY 19400000 - 0016AC 0AE2 2137 SVC C'S' . SEND IT 19410000 - 0016AE D207 C090 C098 00090 00098 2138 MVC DIMLMS,DIMTEMP . AND REMEMBER WHO TO SEND TO NEXT 19420000 - 0016B4 47F0 1020 01696 2139 B DIMLOOP . RELOOP 19430000 - 0016B8 0000000100000000 2140 DIMSEM DC F'1,0' . SEMAPHORE FOR ENTRY 19440000 - 0016C0 000000A0 2141 DIMAAS DC A(DIMLEN) . ALLOCATE SEQ FOR AUTO STORAGE 19450000 - 0016C4 00000000 2142 DC A(0) 19460000 - 0016C8 00000008 2143 DC F'8' 19470000 - 2144 DROP 12 19480000 -1 Sample Operating System Version 2.00 Page 53 - Active Usings: PROGRAM,R0 PROGRAM+X'1676',R1 PCB,R5 SA,R8 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -00016D0 2146 LTORG 19500000 - 0016D0 0000000000FFE8C0 2147 =A(0,CORESIZE-(VERYEND-PROGRAM)) - 0016D8 5CC9D54040404040 2148 =CL8'*IN' - 0016E0 E4E2C5D9D7D9D6C7 2149 =CL8'USERPROG' - 0016E8 4040404040404040 2150 =CL8' ' - 0016F0 5CD6E4E340404040 2151 =CL8'*OUT' - 0016F8 00000EA4 2152 =A(UCBTABLE) - 0016FC 00000FC4 2153 =A(UCBTBEND) - 001700 00000008 2154 =F'8' - 001704 D9C5C1C4 2155 =C'READ' - 001708 D7D9C9D5 2156 =C'PRIN' - 00170C 0000000C 2157 =F'12' - 001710 00000001 2158 =F'1' - 001714 00000000 2159 =A(0) - 001718 00000084 2160 =F'132' - 00171C D6E4E340 2161 =C'OUT ' - 001720 00001674 2162 =A(DIM) - 001724 00000D74 2163 =A(EXCPHNDL) - 001728 D6D2 2164 =C'OK' - 00172A 5BD1D6C26B 2165 =C'$JOB,' - 00172F C9D540 2166 =C'IN ' - 001732 C5E7C3D740 2167 =C'EXCP ' - 001737 E3E7E3 2168 =C'TXT' - 00173A D9D3C4 2169 =C'RLD' - 00173D C5D5C4 2170 =C'END' - 001740 2171 VERYEND DS 6D . beginning of free storage 19510004 - 001770 2172 LOADER DS 0D IPL loader goes here 19521002 -1 Sample Operating System Version 2.00 Page 54 - Active Usings: PROGRAM,R0 PROGRAM+X'1676',R1 PCB,R5 SA,R8 -0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 00000 2174 R0 EQU 0 19521502 - 00001 2175 R1 EQU 1 19522002 - 00002 2176 R2 EQU 2 19522502 - 00003 2177 R3 EQU 3 19523002 - 00004 2178 R4 EQU 4 19523502 - 00005 2179 R5 EQU 5 19524002 - 00006 2180 R6 EQU 6 19524502 - 00007 2181 R7 EQU 7 19525002 - 00008 2182 R8 EQU 8 19525502 - 00009 2183 R9 EQU 9 19526002 - 0000A 2184 R10 EQU 10 19526502 - 0000B 2185 R11 EQU 11 19527002 - 0000C 2186 R12 EQU 12 19527502 - 0000D 2187 R13 EQU 13 19528002 - 0000E 2188 R14 EQU 14 19528502 - 0000F 2189 R15 EQU 15 19529002 - 2190 *********************************************************************** 19530000 - 2191 * * 19540000 - 2192 * DATABASE DEFINITIONS * 19550000 - 2193 * * 19560000 - 2194 *********************************************************************** 19570000 -0000000 00000 00148 2196 PCB DSECT . PROCESS CONTROL BLOCK DEFINITION 19590000 - 000000 2197 PCBNAME DS CL8 . NAME 19600000 - 000008 2198 PCBNPTG DS F . NEXT POINTER THIS GROUP 19610000 - 00000C 2199 PCBLPTG DS F . LAST POINTER THIS GROUP 19620000 - 000010 2200 PCBNPALL DS F . NEXT POINTER ALL 19630000 - 000014 2201 PCBLPALL DS F . LAST POINTER ALL 19640000 - 000018 2202 PCBSTOPT DS C . STOPPED 19650000 - 000019 2203 PCBBLOKT DS C . BLOCKED 19660000 - 00001A 2204 PCBINSMC DS C . IN SMC 19670000 - 00001B 2205 PCBSW DS C . STOP WAITING 19680000 - 00001C 2206 PCBMSC DS CL8 . MESSAGE SEMAPHORE COMMON 19690000 - 000024 2207 PCBMSR DS CL8 . MESSAGE SEMAPHORE RECEIVER 19700000 - 00002C 2208 PCBFM DS F . FIRST MESSAGE 19710000 - 000030 2209 PCBNSW DS F . NEXT SEMAPHORE WAITER 19720000 - 000034 2210 PCBSRS DS CL8 . STOPPER SEMAPHORE 19730000 - 00003C 2211 PCBSES DS CL8 . STOPPEE SEMAPHORE 19740000 - 000044 2212 PCBASIZE DS F . AUTOMATIC STORAGE SIZE 19750000 - 000048 2213 PCBAADDR DS A . AUTOMATIC STORAGE ADDRESS 19760000 - 00004C 2214 PCBISA DS CL84 . INTERRUPT SAVE AREA 19770000 - 0000A0 2215 PCBFSA DS CL84 . FAULT SAVE AREA 19780000 - 0000F4 2216 PCBMSA DS CL84 . MEMORY SAVE AREA 19790000 - 000148 2217 DS 0D . (ALIGN) 19800000 - 00148 2218 LENPCB EQU *-PCB . (LENGTH) 19810000 -0000000 00000 00054 2220 SA DSECT . SAVE AREA DEFINITION 19830000 - 000000 2221 SAPSW DS D . PROGRAM STATUS WORD 19840000 - 000008 2222 SAREGS DS CL64 . REGISTERS 19850000 - 000048 2223 SATEMP DS CL12 . TEMPORARIES 19860000 -0000000 00000 00040 2225 REGS DSECT . REGISTER DEFINITION 19880000 - 000000 2226 REG0 DS F . REGISTER 0 19890000 - 000004 2227 REG1 DS F . REGISTER 1 19900000 - 000008 2228 REG2 DS F . REGISTER 2 19910000 -1 Sample Operating System Version 2.00 Page 55 - Active Usings: PROGRAM,R0 PROGRAM+X'1676',R1 PCB,R5 SA,R8 -0D-Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -000000C 2229 REG3 DS F . REGISTER 3 19920000 - 000010 2230 REG4 DS F . REGISTER 4 19930000 - 000014 2231 REG5 DS F . REGISTER 5 19940000 - 000018 2232 REG6 DS F . REGISTER 6 19950000 - 00001C 2233 REG7 DS F . REGISTER 7 19960000 - 000020 2234 REG8 DS F . REGISTER 8 19970000 - 000024 2235 REG9 DS F . REGISTER 9 19980000 - 000028 2236 REG10 DS F . REGISTER 10 19990000 - 00002C 2237 REG11 DS F . REGISTER 11 20000000 - 000030 2238 REG12 DS F . REGISTER 12 20010000 - 000034 2239 REG13 DS F . REGISTER 13 20020000 - 000038 2240 REG14 DS F . REGISTER 14 20030000 - 00003C 2241 REG15 DS F . REGISTER 15 20040000 -0000000 00000 00008 2243 FSB DSECT . FREE STORAGE BLOCK DEFINITIONS 20060000 - 000000 2244 FSBNEXT DS A . NEXT 20070000 - 000004 2245 FSBSIZE DS F . SIZE 20080000 -0000000 00000 00008 2247 SM DSECT . SEMAPHORE DEFINITION 20100000 - 000000 2248 SMVAL DS F . VALUE 20110000 - 000004 2249 SMPTR DS F . PTR 20120000 -0000000 00000 0000C 2251 MSG DSECT . MESSAGE DEFINITION 20140000 - 000000 2252 MSGSENDR DS A . POINTER TO SENDER'S PCB 20150000 - 000004 2253 MSGNEXT DS A . NEXT 20160000 - 000008 2254 MSGSIZE DS F . SIZE 20170000 - 00000C 2255 MSGTEXT DS 0C . TEXT 20180000 - 0000C 2256 LENMSG EQU *-MSG . (LENGTH) 20190000 -0000000 00000 0000C 2258 XAX DSECT . XA ARGUMENT LIST 20210000 - 000000 2259 XAXSIZE DS F . SIZE 20220000 - 000004 2260 XAXADDR DS F . ADDRESS 20230000 - 000008 2261 XAXALGN DS F . ALIGNMENT 20240000 -0000000 00000 00008 2263 XFX DSECT . XF ARGUMENT LIST 20260000 - 000000 2264 XFXSIZE DS F . SIZE 20270000 - 000004 2265 XFXADDR DS F . ADDRESS 20280000 -0000000 00000 00008 2267 XBX DSECT . XB ARGUMENT LIST 20300000 - 000000 2268 XBXSIZE DS F . SIZE 20310000 - 000004 2269 XBXADDR DS F . ADDRESS 20320000 -0000000 00000 00008 2271 XCX DSECT . XC ARGUMENT LIST 20340000 - 000000 2272 XCXNAME DS CL8 . NAME 20350000 -0000000 00000 00008 2274 XDX DSECT . AD ARGUMENT LIST 20370000 - 000000 2275 XDXNAME DS CL8 . NAME 20380000 -0000000 00000 0000C 2277 XNX DSECT . XN ARGUMENT LIST 20400000 - 000000 2278 XNXNAME DS CL8 . NAME 20410000 - 000008 2279 XNXADDR DS A . ADDRESS 20420000 -0000000 00000 0000C 2281 XRX DSECT . XR ARGUMENT LIST 20440000 - 000000 2282 XRXNAME DS CL8 . NAME 20450000 - 000008 2283 XRXSIZE DS F . SIZE 20460000 -1 Sample Operating System Version 2.00 Page 56 - Active Usings: PROGRAM,R0 PROGRAM+X'1676',R1 PCB,R5 SA,R8 -0D-Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -000000C 2284 XRXTEXT DS 0C . TEXT 20470000 -0000000 00000 0000C 2286 XSX DSECT . XS ARGUMENT LIST 20490000 - 000000 2287 XSXNAME DS CL8 . NAME 20500000 - 000008 2288 XSXSIZE DS F . SIZE 20510000 - 00000C 2289 XSXTEXT DS 0C . TEXT 20520000 -0000000 00000 0000C 2291 XYX DSECT . XY ARGUMENT LIST 20540000 - 000000 2292 XYXNAME DS CL8 . NAME 20550000 - 000008 2293 XYXADDR DS A . ADDR 20560000 -0000000 00000 00008 2295 XZX DSECT . XZ ARGUMENT LIST 20580000 - 000000 2296 XZXNAME DS CL8 . NAME 20590000 -0000000 00000 00080 2298 RDRHAS DSECT . READER HANDLER AUTOMATIC STORAGE 20610000 - 000000 2299 RDRHCCB DS 2F . CCB 20620000 - 000008 2300 RDRHMSG DS CL8 . MESSAGE BLOCK FOR REQUESTS 20630000 - 000010 2301 DS F'8' 20640000 - 000014 2302 DS CL8 20650000 - 00001C 2303 RDRHTEMP DS CL80 . AREA FOR $JOB IN DATA STREAM 20660000 - 00006C 2304 RDRHM DS CL8 . MESSAGE BLOCK FOR REPLY 20670000 - 000074 2305 DS F'2' 20680000 - 000078 2306 DS CL2 20690000 - 00007A 2307 JOBBIT DS 1C 20700000 - 000080 2308 DS 0D 20710000 - 00080 2309 LENRDRHA EQU *-RDRHAS . (LENGTH) 20720000 -0000000 00000 00030 2311 PRTHAS DSECT . PRINTER HANDLER AUTOMATIC STORAGE 20740000 - 000000 2312 PRTHCCB DS 2F . CCB 20750000 - 000008 2313 PRTHMSG DS CL8 . MESSAGE BLOCK FOR REQUESTS 20760000 - 000010 2314 DS F'2' 20770000 - 000014 2315 DS CL8 20780000 - 00001C 2316 PRTHM DS CL8 . MESSAGE BLOCK FOR REPLY 20790000 - 000024 2317 DS F'2' 20800000 - 000028 2318 DS CL2 20810000 - 000030 2319 DS 0D 20820000 - 00030 2320 LENPRTHA EQU *-PRTHAS . (LENGTH) 20830000 -0000000 00000 00030 2322 EXCPHAS DSECT . EXCP HANDLER AUTOMATIC STORAGE 20850000 - 000000 2323 EXCPHMSG DS CL8 . MESSAGE BLOCK FOR REQUESTS 20860000 - 000008 2324 DS F'12' 20870000 - 00000C 2325 DS CL12 20880000 - 000018 2326 EXCPHM DS CL8 . MESSAGE BLOCK FOR REPLY 20890000 - 000020 2327 DS F'12' 20900000 - 000024 2328 DS CL12 20910000 - 000030 2329 DS 0D 20920000 - 00030 2330 LENEXCPA EQU *-EXCPHAS . (LENGTH) 20930000 -0000000 00000 00020 2332 UCB DSECT . UNIT CONTROL BLOCK DEFINITION 20950000 - 000000 2333 UCBADDR DS F . ADDRESS 20960000 - 000004 2334 UCBUS DS FL8 . USER SEMAPHORE 20970000 - 00000C 2335 UCBWS DS FL8 . WAITER SEMAPHORE 20980000 - 000014 2336 UCBCSW DS FL8 . CHANNEL STATUS WORD 20990000 - 00001C 2337 UCBFPR DS CL1 . FAST PROCESSING REQUIRED 21000000 - 000020 2338 DS 0F 21010000 -1 Sample Operating System Version 2.00 Page 57 - Active Usings: PROGRAM,R0 PROGRAM+X'1676',R1 PCB,R5 SA,R8 -0D-Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42 -0 00020 2339 UCBLENG EQU *-UCB 21020000 -0000000 00000 001E0 2341 JSPAS DSECT . JSP AUTOMATIC STORAGE 21040000 - 000000 2342 LINE DS CL132 . PRINTED LINE 21050000 - 000084 2343 DS 0F 21060000 - 000084 2344 CARD DS CL80 . CARD READ 21070000 - 0000D4 2345 DS 0F 21080000 - 0000D4 2346 RREPLY DS CL8 . MESSAGE BLOCK FOR REPLIES 21090000 - 0000DC 2347 RREPLY1 DS F 21100000 - 0000E0 2348 REPLY DS CL132 21110000 - 000164 2349 TREAD DS 0F . MESSAGE BLOCK FOR READING 21120000 - 000164 2350 DS CL8'*IN' 21130000 - 00016C 2351 DS F'8' 21140000 - 000170 2352 DS CL4'READ' 21150000 - 000174 2353 ACARD DS A(0) 21160000 - 000178 2354 WRITE DS CL8'*OUT' . MESSAGE BLOCK TO PRINT A LINE 21170000 - 000180 2355 DS F'8' 21180000 - 000184 2356 DS CL4'PRIN' 21190000 - 000188 2357 DS A(LINE) 21200000 - 00018C 2358 KEY DS F 21210000 - 000190 2359 USERL DS CL8'USERPROG' . LIST FOR MANIPULATING USERPROG 21220000 - 000198 2360 DS F 21230000 - 00019C 2361 SEQ DS CL8' ' . COMMON ARG LIST FOR I/O PROCESS 21240000 - 0001A4 2362 UNITRTN DS A 21250000 - 0001A8 2363 CORE DS F . MEMORY ALLOCATED AND FREE 21260000 - 0001AC 2364 DS F . SEQUENCE 21270000 - 0001B0 2365 DS F'4096' align to page boundary 21280002 - 0001B4 2366 RLDTEMP DS F 21290000 - 0001B8 2367 TALK DS CL8'USERPROG' . MESSAGE BLOCK FOR MESSAGE FROM 21300000 - 0001C0 2368 DS F'12' . USERPROG 21310000 - 0001C4 2369 DS CL12 21320000 - 0001D0 2370 ANYBACK DS CL8 . MESSAGE BLOCK FOR IGNORING MESS 21330000 - 0001D8 2371 DS F'1' 21340000 - 0001DC 2372 DS CL1 21350000 - 0001DD 2373 LOADED DS C . IS CORE ALLOCATED 21360000 - 0001E0 2374 DS 0D 21370000 - 001E0 2375 LENJSPAS EQU *-JSPAS . (LENGTH) 21380000 -0000000 00000 000A0 2377 DIMAS DSECT . DEVICE INTERFACE MODULE STORAGE 21400000 - 000000 2378 DIMMSG DS CL8 . MESSAGE BLOCK 21410000 - 000008 2379 DS F'132' 21420000 - 00000C 2380 DS CL132 21430000 - 000090 2381 DIMLMS DS CL8 . LAST MESSAGE SENDER 21440000 - 000098 2382 DIMTEMP DS CL8 . TEMPORARY 21450000 - 0000A0 2383 DS 0D 21460000 - 000A0 2384 DIMLEN EQU *-DIMAS . (LENGTH) 21470000 - 2385 END 21480000 -1 Relocation Dictionary Page 58 -- Pos.Id Rel.Id Address Type Action HLASM R6.0 2016/08/29 08.42 -0 00000001 00000001 00000005 A 3 + - 00000001 00000001 0000005D A 3 + - 00000001 00000001 00000065 A 3 + - 00000001 00000001 0000006D A 3 + - 00000001 00000001 00000180 A 4 + - 00000001 00000001 0000042D A 3 + - 00000001 00000001 00000435 A 3 + - 00000001 00000001 0000043D A 3 + - 00000001 00000001 00000445 A 3 + - 00000001 00000001 0000044D A 3 + - 00000001 00000001 00000455 A 3 + - 00000001 00000001 0000045D A 3 + - 00000001 00000001 00000465 A 3 + - 00000001 00000001 0000046D A 3 + - 00000001 00000001 00000475 A 3 + - 00000001 00000001 0000047D A 3 + - 00000001 00000001 00000485 A 3 + - 00000001 00000001 0000048D A 3 + - 00000001 00000001 00000495 A 3 + - 00000001 00000001 0000049D A 3 + - 00000001 00000001 000004A5 A 3 + - 00000001 00000001 000004AD A 3 + - 00000001 00000001 000004B5 A 3 + - 00000001 00000001 000004BD A 3 + - 00000001 00000001 000004C5 A 3 + - 00000001 00000001 000004C8 A 4 + - 00000001 00000001 000004DD A 3 + - 00000001 00000001 0000059D A 3 + - 00000001 00000001 00000E5C A 4 + - 00000001 00000001 00000E90 A 4 + - 00000001 00000001 000010CC A 4 + - 00000001 00000001 000010D0 A 4 + - 00000001 00000001 000010D4 A 4 + - 00000001 00000001 000010D8 A 4 + - 00000001 00000001 000010EC A 4 + - 00000001 00000001 000010F0 A 4 + - 00000001 00000001 000010F4 A 4 + - 00000001 00000001 000010F8 A 4 + - 00000001 00000001 000010FC A 4 + - 00000001 00000001 00001100 A 4 + - 00000001 00000001 00001104 A 4 + - 00000001 00000001 00001108 A 4 + - 00000001 00000001 00001118 A 4 + - 00000001 00000001 0000111C A 4 + - 00000001 00000001 00001120 A 4 + - 00000001 00000001 00001124 A 4 + - 00000001 00000001 000012B9 A 3 + - 00000001 00000001 000012C1 A 3 + - 00000001 00000001 000012C5 A 3 + - 00000001 00000001 000012C9 A 3 + - 00000001 00000001 00001638 A 4 + - 00000001 00000001 00001644 A 4 + - 00000001 00000001 000016F8 A 4 + - 00000001 00000001 000016FC A 4 + - 00000001 00000001 00001720 A 4 + -1 Relocation Dictionary Page 59 -- Pos.Id Rel.Id Address Type Action HLASM R6.0 2016/08/29 08.42 -0 00000001 00000001 00001724 A 4 + - 00000001 00000002 0000007D A 3 + - 00000003 00000001 00001815 A 3 + - 00000003 00000001 00001819 A 3 + - 00000003 00000001 00001821 A 3 + -1 Ordinary Symbol and Literal Cross Reference Page 60 --Symbol Length Value Id R Type Asm Program Defn References HLASM R6.0 2016/08/29 08.42 -0ACARD 4 00000174 FFFFFFEB A A 2353 1859M - ANYBACK 8 000001D0 FFFFFFEB C C 2370 1868M 2034 2038 - ASEXCP 6 00001452 00000001 I 1946 1933B - ASGNUNIT 4 000013DA 00000001 I 1917 1943B 1949B - ASIN 4 0000143A 00000001 I 1940 1929B - ASOUT 4 0000144A 00000001 I 1944 1931B - CARD 80 00000084 FFFFFFEB C C 2344 1858 1888 1897 1904 1971 1973 1975 1979 1981 1985 - 1987 1988 - CARDLDR 1 00001770 00000002 J 43 62 66U - CAW 4 00000048 00000001 F F 142 74M 1369M 1481M 1561M - CAWSEM 4 00000194 00000001 F F 158 1367 1479 1559 - CCBCON1 4 00000C30 00000001 X X 1412 1361 1471 - CCWCHAIN 8 00001810 00000002 D D 123 73 - CMPEXCP 6 00001434 00000001 I 1938 1932X - CMPIN 6 00001428 00000001 I 1936 1928X - CMPOUT 6 0000142E 00000001 I 1937 1930X - CONTINUE 4 000017FC 00000002 F F 119 96M - CORE 4 000001A8 FFFFFFEB F F 2363 1865M 1916M 1951 1954 2064 - COREOK 4 000013D2 00000001 I 1915 1913B - COREPACK 6 00001648 00000001 I 2091 1908X - COREPCKD 8 00001650 00000001 D D 2092 1909 2091M - COREPKLN 4 00001658 00000001 X X 2093 1907 - CORESIZ 4 00001264 00000001 A A 1817 1747 - CORESIZE 1 01000000 00000001 A U 129 1817 2147 - CSW 8 00000040 00000001 D D 141 106 1703 1704 1707 - DIM 1 00001674 00000001 U 2117 2162 - DIMAAS 4 000016C0 00000001 A A 2141 2122 - DIMAS 1 00000000 FFFFFFEA J 2377 2129U 2384 - DIMLEN 1 000000A0 FFFFFFEA A U 2384 2141 - DIMLMS 8 00000090 FFFFFFEA C C 2381 2130M 2136 2138M - DIMLOOP 4 00001696 00000001 I 2132 2139B - DIMMSG 8 00000000 FFFFFFEA C C 2378 2132M 2133 2135 2136M - DIMSEM 4 000016B8 00000001 F F 2140 2120 2127 - DIMTEMP 8 00000098 FFFFFFEA C C 2382 2135M 2138 - EIGHT 4 00001808 00000002 F F 122 89 - ENBLECH0 2 000017EE 00000002 C C 115 72 - ENDADATA 6 00000BFE 00000001 I 1399 1390B - ENDCARD 4 0000153E 00000001 I 2013 1976B - EXCPCOMP 4 00000DB4 00000001 I 1547 1551B - EXCPDONE 4 00000E30 00000001 I 1581 1576B - EXCPFIND 2 00000DCA 00000001 I 1553 1548B - EXCPHAAS 4 00000E44 00000001 A A 1586 1527 - EXCPHAS 1 00000000 FFFFFFED J 2322 1536U 2330 - EXCPHM 8 00000018 FFFFFFED C C 2326 1566M 1567M 1568M 1569 - EXCPHMSG 8 00000000 FFFFFFED C C 2323 1537 1568 1571 - EXCPHNDL 1 00000D74 00000001 U 1521 2163 - EXCPHSEM 4 00000E3C 00000001 F F 1585 1525 1532 - EXCPLOOP 4 00000D92 00000001 I 1537 1542B 1583B - EXCPWAIT 4 00000DF0 00000001 I 1564 1578B - EXINTRPT 4 000012BC 00000001 I 1827 1834 - EXPLOOP 6 0000159E 00000001 I 2044 2052B - EXPNXT 2 000015B4 00000001 I 2050 2047B - EXPUNGE 4 00001596 00000001 I 2041 1921B 1934B - EXTHANDL 1 0000027A 00000001 U 175 146 1832 - EXTHRET 4 000002A8 00000001 I 191 180B 184B -1 Ordinary Symbol and Literal Cross Reference Page 61 --Symbol Length Value Id R Type Asm Program Defn References HLASM R6.0 2016/08/29 08.42 -0EXTNEW 1 00000058 00000001 B B 146 1741M 1781M - EXTOLD 8 00000018 00000001 D D 136 179 187 192 1827 - FETCHPRT 4 00001670 00000001 F F 2098 1957 - FSB 1 00000000 FFFFFFFC J 2243 576U 662U 731U 740U - FSBNEXT 4 00000000 FFFFFFFC A A 2244 589 590 597 665 679 680 734 735 741M - FSBPTR 4 00000180 00000001 A A 155 572 573 660 661 727 728 - FSBSEM 4 00000184 00000001 F F 156 570 616 658 693 - FSBSIZE 4 00000004 FFFFFFFC F F 2245 585 598 669 672 677 732 742M - GWINC 4 00000586 00000001 I 458 455B - GWLOOP 4 00000576 00000001 I 454 460B - GWRUN 6 000005A0 00000001 I 465 457B - IDLE 1 00000598 00000001 B B 463 461 - INSEQ 8 00001630 00000001 C C 2087 1873 - IOBACK 4 00001036 00000001 I 1724 1701B - IOCOMP 6 00000FD2 00000001 I 1696 1700B - IODEVFND 6 00000FEC 00000001 I 1703 1697B - IOHANDL 1 00000FC4 00000001 U 1690 1830 - IOHSAVE 4 000001DC 00000001 F F 161 1691M 1718 1724 - IOINTRPT 1 000017DA 00000002 U 105 70 150 - IOINTRTN 4 000017EA 00000002 I 110 107B - IONEW 1 00000078 00000001 B B 150 71M 448 1740M - IONOFPR 2 00001034 00000001 I 1723 1710B - IOOLD 8 00000038 00000001 D D 140 108M 109M 110 1694M 1696 1717 1725 - IOWAIT 4 0000102C 00000001 I 1720 1714B - IPLAPCBS 4 00001258 00000001 A A 1814 1755 - IPLCL 4 00001066 00000001 I 1748 1752B - IPLEXNEW 3 000012C9 00000001 R A 1834 1741 - IPLLOOP 4 0000107C 00000001 I 1755 1780B - IPLPCB 8 00001110 00000001 C C 1804 1742 1805 - IPLRTN 1 0000103E 00000001 U 1737 133 - IPLTH 2 00001076 00000001 I 1753 1749B - JOB 4 00001384 00000001 I 1894 1889B - JOBBIT 1 0000007A FFFFFFEF C C 2307 1323M 1337 1342M 1403M - JSP 1 000012CC 00000001 U 1842 1825 - JSPAAS 4 00001668 00000001 A A 2096 1847 - JSPAS 1 00000000 FFFFFFEB J 2341 1852U 2375 - JSPNEVER 4 00001618 00000001 F F 2083 1891 - JSPSUSEM 4 00001660 00000001 F F 2095 1845 1853 - KEY 4 0000018C FFFFFFEB F F 2358 1870M 1947 1955 2020 - KEYTAB 1 000010DC 00000001 U 1792 1777 - LENEXCPA 1 00000030 FFFFFFED A U 2330 1586 - LENJSPAS 1 000001E0 FFFFFFEB A U 2375 2096 - LENMSG 1 0000000C FFFFFFFA A U 2256 1073 1127 - LENPCB 1 00000148 FFFFFFFF A U 2218 1595 1814 - LENPRTHA 1 00000030 FFFFFFEE A U 2320 1511 - LENRDRHA 1 00000080 FFFFFFEF A U 2309 1415 - LINE 132 00000000 FFFFFFEB C C 2342 1863 1895M 1896M 1896 1897M 2029M 2030M 2030 2031M 2357 - LOAD 4 00001462 00000001 I 1951 1919B - LOADADDR 4 00001800 00000002 F F 120 76 - LOADCL 4 000015CE 00000001 I 2058 2063B - LOADD 4 000015E0 00000001 I 2064 2060B - LOADED 1 000001DD FFFFFFEB C C 2373 1894M 1953M 2053 - LOADER 8 00001770 00000001 D D 2172 49 50 52 - LOADLOOP 4 00001492 00000001 I 1966 1962B 1977B 1984B 2004B - LOADSK 4 00001480 00000001 I 1960 1965B -1 Ordinary Symbol and Literal Cross Reference Page 62 --Symbol Length Value Id R Type Asm Program Defn References HLASM R6.0 2016/08/29 08.42 -0LOOP 4 00001354 00000001 I 1881 1890B 2054B 2066B - MEMORY 4 0000018C 00000001 F F 157 593 688 - MSG 1 00000000 FFFFFFFA J 2251 839U 1050U 1139U 1147U 2256 - MSGNEXT 4 00000004 FFFFFFFA A A 2253 840 1051 1142 1143 1148M - MSGSENDR 4 00000000 FFFFFFFA A A 2252 1068 1149M - MSGSIZE 4 00000008 FFFFFFFA F F 2254 841 1059 1061 1072 1151M - MSGTEXT 1 0000000C FFFFFFFA C C 2255 1084 1162M - NEXTCARD 2 0000179C 00000002 I 80 88B - NEXTTRY 4 00000274 00000001 A A 166 424M 451 465M 1744M - NEXTTRYM 1 00000278 00000001 C C 167 422 425M 466M 1720M - NOTALGND 6 00001520 00000001 I 2005 1992B - NUMCARDS 4 00001804 00000002 F F 121 75 - OUTSEQ 8 0000163C 00000001 C C 2089 1877 - PAGESIZE 4 0000165C 00000001 F F 2094 1748 1865 1960 2058 - PCB 1 00000000 FFFFFFFF J 2196 182U 222U 317 318 319 373U 380U 419U 453U 473U - 782U 825U 830U 834U 862U 917U 920U 924U 928U 931U - 936U 956U 960U 963U 966U 970U 973U 977U 1003U 1013U - 1070U 1086U 1122U 1164U 1198U 1209U 1248U 1260U 1712U 1761U - 1765U 1769U 2016U 2043U 2218 - PCBAADDR 4 00000048 FFFFFFFF A A 2213 621M 850 - PCBASIZE 4 00000044 FFFFFFFF F F 2212 620M 852 - PCBBLOKT 1 00000019 FFFFFFFF C C 2203 183 383M 421M 454 785 785M 1713 2017M 2024M - PCBFM 4 0000002C FFFFFFFF F F 2208 836 1049 1051M 1137 1138 - PCBFSA 84 000000A0 FFFFFFFF C C 2215 318 - PCBINSMC 1 0000001A FFFFFFFF C C 2204 492 494M 517 519M 1249 - PCBISA 84 0000004C FFFFFFFF C C 2214 185 317 384M 468 785 1199 1715 1770 2021 2022M - 2023M - PCBLPALL 4 00000014 FFFFFFFF F F 2201 918M 921M 957 964M - PCBLPTG 4 0000000C FFFFFFFF F F 2199 929M 932M 967 974M 1763M 1766M - PCBMSA 84 000000F4 FFFFFFFF C C 2216 319 - PCBMSC 8 0000001C FFFFFFFF C C 2206 1047 1135 - PCBMSR 8 00000024 FFFFFFFF C C 2207 1044 1157 - PCBNAME 8 00000000 FFFFFFFF C C 2197 783M 1005 1071 1235 2044 - PCBNPALL 4 00000010 FFFFFFFF F F 2200 458 465 914 915M 922M 958 961M - PCBNPTG 4 00000008 FFFFFFFF F F 2198 925 926M 933M 968 971M 1004 1762M 1767M 2045 - PCBNSW 4 00000030 FFFFFFFF F F 2209 376 377 382M 420 - PCBSES 8 0000003C FFFFFFFF C C 2211 527 - PCBSRS 8 00000034 FFFFFFFF C C 2210 525 1255 - PCBSTOPT 1 00000018 FFFFFFFF C C 2202 456 784M 826 1204M 1251M - PCBSW 1 0000001B FFFFFFFF C C 2205 522 524M 1254M - PGMHANDL 1 000002B0 00000001 U 194 148 - PROGRAM 1 00000000 00000001 J 42 68U 127 2147 - PROTCON1 4 00000C34 00000001 X X 1413 1348 1355 1458 1465 - PROTCON2 4 00000C38 00000001 X X 1414 1351 1358 1461 1468 - PRTHAAS 4 00000D68 00000001 A A 1511 1431 - PRTHANDL 1 00000C48 00000001 U 1425 2090 - PRTHAS 1 00000000 FFFFFFEE J 2311 1440U 2320 - PRTHCCB 4 00000000 FFFFFFEE F F 2312 1441 1472M 1473M 1474M 1476M - PRTHCOMM 4 00000CEC 00000001 I 1479 1475B 1507B - PRTHLOOP 4 00000C6A 00000001 I 1442 1451B 1503B - PRTHM 8 0000001C FFFFFFEE C C 2316 1494M 1496M 1497M 1498M 1501 - PRTHMSG 8 00000008 FFFFFFEE C C 2313 1442 1455 1498 - PRTHNO 6 00000D26 00000001 I 1494 1463B 1470B - PRTHOK 6 00000D30 00000001 I 1496 1493B - PRTHPOK 4 00000CCA 00000001 I 1471 1456B -1 Ordinary Symbol and Literal Cross Reference Page 63 --Symbol Length Value Id R Type Asm Program Defn References HLASM R6.0 2016/08/29 08.42 -0PRTHPRIN 4 00000C92 00000001 I 1453 1448B - PRTHSEM 4 00000D60 00000001 F F 1510 1429 1436 - PRTHSEND 6 00000D36 00000001 I 1497 1495B - PRTHSTC1 6 00000CE0 00000001 I 1476 1450B - PRTHWAIT 4 00000D10 00000001 I 1488 1491B - PTSTATUS 2 00000D52 00000001 I 1504 1486B - QUANTUM 4 000005BC 00000001 X X 471 469 - RDRHAAS 4 00000C3C 00000001 A A 1415 1313 - RDRHANDL 1 00000AC6 00000001 U 1307 2088 - RDRHAS 1 00000000 FFFFFFEF J 2298 1322U 2309 - RDRHCCB 4 00000000 FFFFFFEF F F 2299 1324 1362M 1363M 1364M - RDRHEXC 4 00000BB8 00000001 I 1383 1379B - RDRHLOOP 4 00000AEC 00000001 I 1325 1330B 1398B - RDRHM 8 0000006C FFFFFFEF C C 2304 1385M 1391M 1392M 1393M 1396 1399M - RDRHMORE 4 00000B2E 00000001 I 1345 1338B - RDRHMSG 8 00000008 FFFFFFEF C C 2300 1325 1335 1345 1387 1393 - RDRHNO 6 00000BC0 00000001 I 1385 1340B 1353B 1360B - RDRHOK 4 00000BCA 00000001 I 1387 1382B - RDRHPOK 4 00000B60 00000001 I 1361 1346B 1381B 1408B - RDRHSEM 4 00000C28 00000001 F F 1411 1311 1318 - RDRHSEND 6 00000BE2 00000001 I 1392 1386B 1404B - RDRHSOK 6 00000BDC 00000001 I 1391 1343B 1388B - RDRHTEMP 80 0000001C FFFFFFEF C C 2303 1341 1400M - RDRHWAIT 4 00000B96 00000001 I 1374 1377B 1384B - RDSTATUS 2 00000C1C 00000001 I 1405 1372B - READ 1 000017F0 00000002 X X 116 81 - REGS 1 00000000 FFFFFFFD J 2225 1773U - REG3 4 0000000C FFFFFFFD F F 2229 1776M - REG4 4 00000010 FFFFFFFD F F 2230 1777M - REPLY 132 000000E0 FFFFFFEB C C 2348 1886 - RETURN 1 000004D8 00000001 B B 328 369 416 426 470 495 529 623 696 743 788 - 859 935 976 1011 1082 1160 1205 1253 - RETURNR 1 000004E0 00000001 U 330 328 - RLDCARD 4 000014E0 00000001 I 1987 1974B - RLDCONT 4 00001500 00000001 I 1996 2011B - RLDFINI 2 00001514 00000001 I 2001 1999B - RLDLOOP 4 000014E8 00000001 I 1989 2003B - RLDTEMP 4 000001B4 FFFFFFEB F F 2366 1869M 2005M 2006 2008M 2009 2010M - RREPLY 8 000000D4 FFFFFFEB C C 2346 1884 1900 1969 - RREPLY1 4 000000DC FFFFFFEB F F 2347 1883M 1968M - RUNNING 4 00000270 00000001 A A 165 181 221 381 467M 1711 1743M 2041 2051 - R11 1 0000000B 00000001 A U 2185 67M 68U 111D - R12 1 0000000C 00000001 A U 2186 63M 65M 66U 111D - R2 1 00000002 00000001 A U 2176 64M 65 69M 71 80M 81M 82 83M 84 95M - 96 - R3 1 00000003 00000001 A U 2177 70M 71 75M 88M - R4 1 00000004 00000001 A U 2178 76M 80 86M 86 - R5 1 00000005 00000001 A U 2179 73M 74 82 84 85 87M 87 89M 90 - SA 1 00000000 FFFFFFFE J 2220 186U 230U 1200U 1201 1203 1208U 1716U 1771U - SAPSW 8 00000000 FFFFFFFE D D 2221 187M 231M 331 1201M 1201 1202M 1717M - SAREGS 64 00000008 FFFFFFFE C C 2222 188M 232M 332 1203M 1203 1718M 1772 - SATEMP 12 00000048 FFFFFFFE C C 2223 599 682 768 817 833 854 1115 1190 1239 - SCAN 2 000015EA 00000001 I 2068 1905B 1917B 1927B - SCANLOOP 4 000015EC 00000001 I 2069 2077B - SEQ 8 0000019C FFFFFFEB C C 2361 1922 1923M 1926 1935M 2042 2044M 2046 -1 Ordinary Symbol and Literal Cross Reference Page 64 --Symbol Length Value Id R Type Asm Program Defn References HLASM R6.0 2016/08/29 08.42 -0SETDIM 6 0000143E 00000001 I 1941 1945B - SHORT 4 00001510 00000001 I 2000 1997B - SKIP 8 00001620 00000001 C C 2084 1861 2036 - SM 1 00000000 FFFFFFFB J 2247 363U 411U 687U - SMPTR 4 00000004 FFFFFFFB F F 2249 370 371 417 420M - SMVAL 4 00000000 FFFFFFFB F F 2248 364 366M 412 414M 690 - SOSEXNEW 3 000012C5 00000001 R A 1832 1781 - SOSIONEW 3 000012C1 00000001 R A 1830 1740 - STOP 4 0000137E 00000001 I 1891 1887B - STREAMS 4 000010C8 00000001 F F 1784 1754 - SVCCONST 4 00000314 00000001 F F 241 215 - SVCHANDL 1 000002B2 00000001 U 211 147 - SVCHPROT 4 00000302 00000001 I 235 220B - SVCHTABL 1 00000328 00000001 X X 243 217 244 246 248 250 252 254 256 258 260 - 262 264 266 268 270 272 274 276 278 280 - 282 284 - SVCOK 4 000002D0 00000001 I 221 237B 239B - SVCOLD 8 00000020 00000001 D D 137 216 228 231 235 331M 333 - SVCRTN 8 00000428 00000001 D D 286 218 238 - SVCSAVE 4 000004C8 00000001 F F 315 227 - SVCXPER 4 000002FA 00000001 I 233 229B - SYSSEM 4 000002DE 00000001 I 226 224B - SYSSEMSA 84 0000021C 00000001 C C 163 316 384 - TALK 8 000001B8 FFFFFFEB C C 2367 1866M 1867M 2026 2031 - TEMPLATE 4 00001280 00000001 X X 1822 785 - TIMER 4 00000050 00000001 F F 144 469M - TOKSTART 2 00001610 00000001 I 2078 2071B 2073B 2075B - TRAPSAVE 4 0000019C 00000001 F F 160 176M 188 191 212M 232 - TREAD 4 00000164 FFFFFFEB F F 2349 1855M 1856M 1857M 1881 1966 - TXTCARD 4 000014C6 00000001 I 1979 1972B - TXTMOV 6 000014DA 00000001 I 1985 1983X - TYPLEN 1 00000054 00000001 A U 1826 1759 - TYPPCB 8 00001268 00000001 C C 1820 1759 1826 - UCB 1 00000000 FFFFFFEC J 2332 1308U 1426U 1522U 1702U 2339 - UCBADDR 4 00000000 FFFFFFEC F F 2333 1370 1484 - UCBCSW 8 00000014 FFFFFFEC G F 2336 1365M 1366M 1376 1378 1380 1383M 1482M 1483M 1490 1492 - 1557M 1558M 1566 1703M 1705 1706M 1707M - UCBFPR 1 0000001C FFFFFFEC C C 2337 1709 - UCBLENG 1 00000020 FFFFFFEC A U 2339 1549 1698 - UCBLP1 4 000010EC 00000001 A A 1798 1787 - UCBLP2 4 000010F4 00000001 A A 1799 1788 - UCBLP3 4 000010FC 00000001 A A 1800 1789 - UCBLP4 4 00001104 00000001 A A 1801 1790 - UCBPRT1 4 00000EC4 00000001 X X 1627 1798 - UCBPRT2 4 00000F04 00000001 X X 1641 1799 - UCBPRT3 4 00000F44 00000001 X X 1655 1800 - UCBPRT4 4 00000F84 00000001 X X 1669 1801 - UCBRDR1 4 00000EA4 00000001 X X 1620 1798 - UCBRDR2 4 00000EE4 00000001 X X 1634 1799 - UCBRDR3 4 00000F24 00000001 X X 1648 1800 - UCBRDR4 4 00000F64 00000001 X X 1662 1801 - UCBTAB 1 000010CC 00000001 U 1786 1774 1777 - UCBTABLE 4 00000EA4 00000001 F F 1618 1546 2152 - UCBTBEND 1 00000FC4 00000001 U 1682 1606 2153 - UCBUS 8 00000004 FFFFFFEC G F 2334 1333 1394 1453 1477 1499 1554 1581 -1 Ordinary Symbol and Literal Cross Reference Page 65 --Symbol Length Value Id R Type Asm Program Defn References HLASM R6.0 2016/08/29 08.42 -0UCBWS 8 0000000C FFFFFFEC G F 2335 1374 1406 1488 1505 1564 1708 - UNAMMOV 6 00001422 00000001 I 1935 1924X - UNITRTN 4 000001A4 FFFFFFEB A A 2362 1941M 1946M - USERL 8 00000190 FFFFFFEB C C 2359 1860M 1902 2013 2015 2018M - VERYEND 8 00001740 00000001 D D 2171 155 1745M 2147 - WAITPSWD 4 000017F8 00000002 X X 118 97 - WRITE 8 00000178 FFFFFFEB C C 2354 1861M 1862M 1864M 1898 2032 - XA 1 00000600 00000001 U 557 299 565U 1593 - XABACK 2 000006B0 00000001 I 622 619B - XACOM 2 0000060E 00000001 I 566 560B - XAFOUND 4 00000662 00000001 I 596 588B - XALOOP 2 0000062A 00000001 I 577 591B - XANF 2 00000686 00000001 I 607 603B - XARETURN 4 0000069C 00000001 I 616 611B - XATOP 4 00000616 00000001 I 570 595B - XAUTO 1 00000608 00000001 U 561 313 - XAWAIT 2 00000656 00000001 I 592 578B - XAX 1 00000000 FFFFFFF9 J 2258 568U 776U 1124U 1314U 1432U 1528U 1756U 1848U 2123U - XAXADDR 4 00000004 FFFFFFF9 F F 2260 596M 780 1133 1316 1434 1530 1758 1850 2125 - XAXALGN 4 00000008 FFFFFFF9 F F 2261 574 778M 1131M - XAXSIZE 4 00000000 FFFFFFF9 F F 2259 569 777M 1130M - XB 1 00000744 00000001 U 722 298 - XBINSERT 4 00000770 00000001 I 738 730B 733B - XBLOOP 4 0000075A 00000001 I 732 737B - XBX 1 00000000 FFFFFFF7 J 2267 600U 683U 724U - XBXADDR 4 00000004 FFFFFFF7 F F 2269 604M 612M 685M 726 - XBXSIZE 4 00000000 FFFFFFF7 F F 2268 605M 613M 684M 725 - XC 1 00000780 00000001 U 764 306 - XCERR 2 000007C4 00000001 I 789 773B - XCOM 1 000005D2 00000001 U 514 297 - XCOMRET 4 000005FC 00000001 I 529 521B 523B - XCX 1 00000000 FFFFFFF6 J 2271 767U - XCXNAME 8 00000000 FFFFFFF6 C C 2272 770 783 - XD 1 000007C6 00000001 U 813 310 - XDCHECK 6 0000081A 00000001 I 850 838B - XDERR 2 00000840 00000001 I 860 824B 827B - XDLOOP 2 000007F4 00000001 I 837 849B - XDTHEN 4 0000082E 00000001 I 855 851B - XDX 1 00000000 FFFFFFF5 J 2274 816U - XDXNAME 8 00000000 FFFFFFF5 C C 2275 819 - XEXC 1 000005C0 00000001 U 489 296 - XF 1 000006B6 00000001 U 649 300 - XFBACKUP 2 00000706 00000001 I 678 670B - XFINC 4 00000708 00000001 I 679 674B - XFLINK 4 00000714 00000001 I 682 664B - XFLOOP 2 000006D4 00000001 I 663 681B - XFTHEN 2 000006F0 00000001 I 671 667B - XFVDO 2 0000073E 00000001 I 697 692B - XFVLOOP 4 0000072E 00000001 I 692 698B - XFX 1 00000000 FFFFFFF8 J 2263 653U 844U 1077U - XFXADDR 4 00000004 FFFFFFF8 F F 2265 655 845M 855M 1078M - XFXSIZE 4 00000000 FFFFFFF8 F F 2264 654 846M 856M 1079M - XH 1 00000842 00000001 U 882 312 - XHLOOP 4 00000848 00000001 I 886 888B - XHMSG1 8 00000854 00000001 C C 890 884 -1 Ordinary Symbol and Literal Cross Reference Page 66 --Symbol Length Value Id R Type Asm Program Defn References HLASM R6.0 2016/08/29 08.42 -0XHMSG2 8 0000086C 00000001 C C 893 886 - XI 1 0000087A 00000001 U 912 301 - XJ 1 000008A6 00000001 U 953 302 - XN 1 000008CA 00000001 U 998 307 - XNX 1 00000000 FFFFFFF4 J 2277 769U 818U 1000U 1116U 1191U 1240U - XNXADDR 4 00000008 FFFFFFF4 A A 2279 772 821 1010M 1119 1194 1243 - XNXFOUND 4 000008E4 00000001 I 1010 1006B - XNXLOOP 4 000008CC 00000001 I 1004 1008B - XNXNAME 8 00000000 FFFFFFF4 C C 2278 770M 819M 1005 1117M 1192M 1241M - XP 1 000004EE 00000001 U 361 294 - XPER 1 0000056A 00000001 U 447 189B 303 385B 463 - XPLOOP 2 0000050A 00000001 I 374 378B - XPTHEN 6 0000051C 00000001 I 381 375B - XPWAIT 4 00000502 00000001 I 370 368B - XQUE 1 00000A8E 00000001 U 1279 311 - XQUELOOP 4 00000A94 00000001 I 1283 1285B - XQUEM1 8 00000AA0 00000001 C C 1287 1281 - XQUEM2 8 00000AB8 00000001 C C 1290 1283 - XR 1 000008EC 00000001 U 1040 304 - XRAFT 4 00000938 00000001 I 1066 1064B - XRFILL 6 0000096C 00000001 I 1083 1057X - XRMOVE 6 00000972 00000001 I 1084 1065X - XRNOB 4 0000091C 00000001 I 1058 1056B - XRTHEN 2 0000092E 00000001 I 1063 1060B - XRX 1 00000000 FFFFFFF3 J 2281 1043U 1326U 1336U 1443U 1538U 1572U - XRXNAME 8 00000000 FFFFFFF3 C C 2282 1071M 1339 - XRXSIZE 4 00000008 FFFFFFF3 F F 2283 1053 1067M 1327M 1444M 1539M 1573M - XRXTEXT 1 0000000C FFFFFFF3 C C 2284 1055M 1083M 1083 1084M 1329 1331 1446 1447 1449 1541 - 1543 1544 1575 1577 - XS 1 00000978 00000001 U 1111 305 - XSADD 4 000009D2 00000001 I 1145 1141B - XSAFT 2 000009F4 00000001 I 1156 1154B - XSERR 2 00000A02 00000001 I 1161 1121B - XSLOOP 2 000009C0 00000001 I 1140 1144B - XSMOVE 6 00000A04 00000001 I 1162 1155X - XSX 1 00000000 FFFFFFF2 J 2286 1114U - XSXNAME 8 00000000 FFFFFFF2 C C 2287 1117 - XSXSIZE 4 00000008 FFFFFFF2 F F 2288 1126 1150 - XSXTEXT 1 0000000C FFFFFFF2 C C 2289 1162 - XV 1 00000534 00000001 U 409 295 - XVRET 4 00000566 00000001 I 426 423B - XVWAKEUP 4 00000548 00000001 I 417 415B - XY 1 00000A0A 00000001 U 1186 308 - XYERR 2 00000A40 00000001 I 1206 1196B - XYX 1 00000000 FFFFFFF1 J 2291 1189U - XYXADDR 4 00000008 FFFFFFF1 A A 2293 1202 - XYXNAME 8 00000000 FFFFFFF1 C C 2292 1192 - XZ 1 00000A42 00000001 U 1231 309 - XZERR 2 00000A8C 00000001 I 1258 1238B 1245B - XZFINE 4 00000A54 00000001 I 1239 1236B - XZINSMC 4 00000A7E 00000001 I 1254 1250B - XZSTOP 4 00000A6C 00000001 I 1249 1257B - XZX 1 00000000 FFFFFFF0 J 2295 1234U - XZXNAME 8 00000000 FFFFFFF0 C C 2296 1237 1241 - =A(DIM) 4 00001720 00000001 A 2162 1941 -1 Ordinary Symbol and Literal Cross Reference Page 67 --Symbol Length Value Id R Type Asm Program Defn References HLASM R6.0 2016/08/29 08.42 -0=A(EXCPHNDL) - 4 00001724 00000001 A 2163 1946 - =A(LENPCB) - 4 00000E64 00000001 A 1595 777 856 - =A(UCBTABLE) - 4 000016F8 00000001 A 2152 1695 - =A(UCBTBEND) - 4 00000E90 00000001 A 1606 1550 - =A(UCBTBEND) - 4 000016FC 00000001 A 2153 1699 - =A(XA) 4 00000E5C 00000001 A 1593 564 - =A(0) 4 00000E60 00000001 A 1594 772 850 1148 1365 1366 1482 1483 1557 1558 - =A(0) 4 00001714 00000001 A 2159 1869 - =A(0,CORESIZE-(VERYEND-PROGRAM)) - 4 000016D0 00000001 A 2147 1745 - =C'$JOB,' - 5 00000E98 00000001 C 1609 1389 - =C'$JOB,' - 5 0000172A 00000001 C 2165 1888 - =C'AGAIN' - 5 00000E9D 00000001 C 1610 1577 - =C'END' 3 0000173D 00000001 C 2170 1975 - =C'EXCP ' - 5 00001732 00000001 C 2167 1938 - =C'EXCP' 4 00000E8C 00000001 C 1605 1541 - =C'IN ' 3 0000172F 00000001 C 2166 1936 - =C'NO' 2 00000E94 00000001 C 1607 1385 1399 1494 - =C'OK' 2 00000E96 00000001 C 1608 1391 1496 1575 - =C'OK' 2 00001728 00000001 C 2164 1886 - =C'OUT ' 4 0000171C 00000001 C 2161 1937 - =C'PRIN' 4 00000E7C 00000001 C 1601 1447 - =C'PRIN' 4 00001708 00000001 C 2156 1862 - =C'READ' 4 00000E74 00000001 C 1599 1329 - =C'READ' 4 00001704 00000001 C 2155 1857 - =C'RLD' 3 0000173A 00000001 C 2169 1973 - =C'STC1' 4 00000E80 00000001 C 1602 1449 - =C'TXT' 3 00001737 00000001 C 2168 1971 - =CL8' ' 8 000016E8 00000001 C 2150 1895 1923 2029 - =CL8'*IN' - 8 000016D8 00000001 C 2148 1855 1940 - =CL8'*OUT' - 8 000016F0 00000001 C 2151 1944 - =CL8'USERPROG' - 8 000016E0 00000001 C 2149 1860 1866 - =F'-8' 4 00000E6C 00000001 F 1597 843 1075 1129 - =F'1' 4 00000E58 00000001 F 1592 413 - =F'1' 4 00001710 00000001 F 2158 1868 - =F'12' 4 00000E88 00000001 F 1604 1539 1567 - =F'12' 4 0000170C 00000001 F 2157 1867 - =F'132' 4 00000E84 00000001 F 1603 1474 - =F'132' 4 00001718 00000001 F 2160 1883 1968 - =F'2' 4 00000E70 00000001 F 1598 1054 1392 1497 - =F'8' 4 00000E68 00000001 F 1596 778 1131 1327 1444 1573 - =F'8' 4 00001700 00000001 F 2154 1856 - =F'80' 4 00000E78 00000001 F 1600 1364 -1 Ordinary Symbol and Literal Cross Reference Page 68 --Symbol Length Value Id R Type Asm Program Defn References HLASM R6.0 2016/08/29 08.42 -0=X'8900000020000001' - 8 00000E50 00000001 X 1591 1476 -1 Unreferenced Symbols Defined in CSECTs Page 69 -- Defn Symbol HLASM R6.0 2016/08/29 08.42 -0 50 CCW1 - 52 CCW2 - 47 IPLCARD - 134 IPLCCW1 - 135 IPLCCW2 - 133 IPLPSW - 149 MCHKNEW - 139 MCHKOLD - 148 PGMNEW - 138 PGMOLD - 48 PSWD - 2174 R0 - 2175 R1 - 2184 R10 - 2187 R13 - 2188 R14 - 2189 R15 - 2180 R6 - 2181 R7 - 2182 R8 - 2183 R9 - 147 SVCNEW - 1676 UCBCONS1 - 143 UNUSED0 - 145 UNUSED1 -1 Dsect Cross Reference Page 70 --Dsect Length Id Defn HLASM R6.0 2016/08/29 08.42 -0DIMAS 000000A0 FFFFFFEA 2377 - EXCPHAS 00000030 FFFFFFED 2322 - FSB 00000008 FFFFFFFC 2243 - JSPAS 000001E0 FFFFFFEB 2341 - MSG 0000000C FFFFFFFA 2251 - PCB 00000148 FFFFFFFF 2196 - PRTHAS 00000030 FFFFFFEE 2311 - RDRHAS 00000080 FFFFFFEF 2298 - REGS 00000040 FFFFFFFD 2225 - SA 00000054 FFFFFFFE 2220 - SM 00000008 FFFFFFFB 2247 - UCB 00000020 FFFFFFEC 2332 - XAX 0000000C FFFFFFF9 2258 - XBX 00000008 FFFFFFF7 2267 - XCX 00000008 FFFFFFF6 2271 - XDX 00000008 FFFFFFF5 2274 - XFX 00000008 FFFFFFF8 2263 - XNX 0000000C FFFFFFF4 2277 - XRX 0000000C FFFFFFF3 2281 - XSX 0000000C FFFFFFF2 2286 - XYX 0000000C FFFFFFF1 2291 - XZX 00000008 FFFFFFF0 2295 -1 Using Map Page 71 -- HLASM R6.0 2016/08/29 08.42 - Stmt -----Location----- Action ----------------Using----------------- Reg Max Last Label and Using Text - Count Id Type Value Range Id Disp Stmt -0 66 00001778 00000002 USING ORDINARY 00001770 00001000 00000002 12 000A0 107 CARDLDR,R12 - 68 0000177C 00000002 USING ORDINARY 00000000 00001000 00000001 11 00078 110 PROGRAM,R11 - 111 000017EE 00000002 DROP 11 R11 - 111 000017EE 00000002 DROP 12 R12 - 131 00000000 00000001 USING ORDINARY 00000000 00001000 00000001 0 00C38 2051 *,0 - 178 00000280 00000001 USING ORDINARY 00000280 00001000 00000001 1 002EA 189 *,1 - 182 0000028C 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 0004C 185 PCB,15 - 186 00000298 00000001 USING ORDINARY 00000000 00001000 FFFFFFFE 14 00008 188 SA,14 - 190 000002A8 00000001 DROP 14 14 - 190 000002A8 00000001 DROP 15 15 - 214 000002B8 00000001 USING ORDINARY 000002B8 00001000 00000001 9 00210 239 *,9 - 222 000002D4 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 00000 PCB,15 - 230 000002EE 00000001 USING ORDINARY 00000000 00001000 FFFFFFFE 14 00048 1190 SA,14 - 240 00000314 00000001 DROP 9 9 - 362 000004EE 00000001 USING ORDINARY 000004EE 00001000 00000001 1 0007C 385 *,1 - 363 000004EE 00000001 USING ORDINARY 00000000 00001000 FFFFFFFB 2 00004 371 SM,2 - 372 0000050A 00000001 DROP 15 15 - 373 0000050A 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 5 00030 377 PCB,5 - 379 0000051C 00000001 DROP 5 5 - 380 0000051C 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 0004C 384 PCB,15 - 386 00000534 00000001 DROP 2 2 - 410 00000534 00000001 USING ORDINARY 00000534 00001000 00000001 1 00924 423 *,1 - 411 00000534 00000001 USING ORDINARY 00000000 00001000 FFFFFFFB 2 00004 420 SM,2 - 418 0000054C 00000001 DROP 15 15 - 419 0000054C 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 4 00030 421 PCB,4 - 427 0000056A 00000001 DROP 2 2 - 427 0000056A 00000001 DROP 4 4 - 450 00000570 00000001 USING ORDINARY 00000570 00001000 00000001 1 0004C 469 *,1 - 453 00000576 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 10 0004C 468 PCB,10 - 472 000005C0 00000001 DROP 10 10 - 473 000005C0 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 00048 621 PCB,15 - 490 000005C0 00000001 USING ORDINARY 000005C0 00001000 00000001 1 00000 *,1 - 515 000005D2 00000001 USING ORDINARY 000005D2 00001000 00000001 1 0002A 523 *,1 - 558 00000600 00000001 USING ORDINARY 00000600 00001000 00000001 1 0000E 560 *,1 - 562 00000608 00000001 USING ORDINARY 00000608 00001000 00000001 1 00854 564 *,1 - 565 0000060E 00000001 USING ORDINARY 00000600 00001000 00000001 1 000B0 619 XA,1 - 568 00000612 00000001 USING ORDINARY 00000000 00001000 FFFFFFF9 7 00008 596 XAX,7 - 576 0000062A 00000001 USING ORDINARY 00000000 00001000 FFFFFFFC 4 00004 598 FSB,4 - 600 00000674 00000001 USING ORDINARY 00000000 00001000 FFFFFFF7 2 00004 613 XBX,2 - 615 0000069C 00000001 DROP 2 2 - 624 000006B6 00000001 DROP 4 4 - 624 000006B6 00000001 DROP 7 7 - 650 000006B6 00000001 USING ORDINARY 000006B6 00001000 00000001 1 00088 698 *,1 - 653 000006BA 00000001 USING ORDINARY 00000000 00001000 FFFFFFF8 7 00004 655 XFX,7 - 662 000006D4 00000001 USING ORDINARY 00000000 00001000 FFFFFFFC 6 00004 680 FSB,6 - 683 00000718 00000001 USING ORDINARY 00000000 00001000 FFFFFFF7 2 00004 685 XBX,2 - 687 00000722 00000001 USING ORDINARY 00000000 00001000 FFFFFFFB 2 00000 690 SM,2 - 691 0000072E 00000001 DROP 2 2 - 699 00000744 00000001 DROP 6 6 - 699 00000744 00000001 DROP 7 7 - 723 00000744 00000001 USING ORDINARY 00000744 00001000 00000001 1 0002C 737 *,1 - 724 00000744 00000001 USING ORDINARY 00000000 00001000 FFFFFFF7 2 00004 726 XBX,2 - 731 0000075A 00000001 USING ORDINARY 00000000 00001000 FFFFFFFC 6 00004 735 FSB,6 -1 Using Map Page 72 -- HLASM R6.0 2016/08/29 08.42 - Stmt -----Location----- Action ----------------Using----------------- Reg Max Last Label and Using Text - Count Id Type Value Range Id Disp Stmt -0 739 00000774 00000001 DROP 6 6 - 740 00000774 00000001 USING ORDINARY 00000000 00001000 FFFFFFFC 4 00004 742 FSB,4 - 744 00000780 00000001 DROP 2 2 - 744 00000780 00000001 DROP 4 4 - 765 00000780 00000001 USING ORDINARY 00000780 00001000 00000001 1 00B01 785 *,1 - 767 00000782 00000001 USING ORDINARY 00000000 00001000 FFFFFFF6 7 00000 783 XCX,7 - 769 00000786 00000001 USING ORDINARY 00000000 00001000 FFFFFFF4 2 00008 772 XNX,2 - 775 0000079A 00000001 DROP 2 2 - 776 0000079A 00000001 USING ORDINARY 00000000 00001000 FFFFFFF9 2 00008 780 XAX,2 - 781 000007AC 00000001 DROP 2 2 - 781 000007AC 00000001 DROP 15 15 - 782 000007AC 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 2 00019 785 PCB,2 - 790 000007C6 00000001 DROP 2 2 - 790 000007C6 00000001 DROP 7 7 - 814 000007C6 00000001 USING ORDINARY 000007C6 00001000 00000001 1 006A6 856 *,1 - 816 000007C8 00000001 USING ORDINARY 00000000 00001000 FFFFFFF5 7 00000 819 XDX,7 - 818 000007CC 00000001 USING ORDINARY 00000000 00001000 FFFFFFF4 2 00008 821 XNX,2 - 822 000007D8 00000001 DROP 2 2 - 825 000007DE 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 2 00018 826 PCB,2 - 829 000007E8 00000001 DROP 2 2 - 830 000007E8 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 00000 PCB,15 - 834 000007F0 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 8 00048 852 PCB,8 - 835 000007F0 00000001 DROP 15 15 - 839 000007FA 00000001 USING ORDINARY 00000000 00001000 FFFFFFFA 9 00008 841 MSG,9 - 844 0000080A 00000001 USING ORDINARY 00000000 00001000 FFFFFFF8 2 00004 856 XFX,2 - 861 00000842 00000001 DROP 2 2 - 861 00000842 00000001 DROP 7 7 - 861 00000842 00000001 DROP 8 8 - 861 00000842 00000001 DROP 9 9 - 862 00000842 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 00010 915 PCB,15 - 883 00000842 00000001 USING ORDINARY 00000842 00001000 00000001 1 0002A 888 *,1 - 913 0000087A 00000001 USING ORDINARY 0000087A 00001000 00000001 1 00000 *,1 - 916 00000882 00000001 DROP 15 15 - 917 00000882 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 10 00014 918 PCB,10 - 919 00000886 00000001 DROP 10 10 - 920 00000886 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 2 00014 922 PCB,2 - 923 0000088E 00000001 DROP 2 2 - 924 0000088E 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 00008 926 PCB,15 - 927 00000896 00000001 DROP 15 15 - 928 00000896 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 10 0000C 929 PCB,10 - 930 0000089A 00000001 DROP 10 10 - 931 0000089A 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 2 0000C 933 PCB,2 - 934 000008A2 00000001 DROP 2 2 - 936 000008A6 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 00000 PCB,15 - 954 000008A6 00000001 USING ORDINARY 000008A6 00001000 00000001 1 00000 *,1 - 955 000008A6 00000001 DROP 15 15 - 956 000008A6 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 2 00014 958 PCB,2 - 959 000008AE 00000001 DROP 2 2 - 960 000008AE 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 11 00010 961 PCB,11 - 962 000008B2 00000001 DROP 11 11 - 963 000008B2 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 10 00014 964 PCB,10 - 965 000008B6 00000001 DROP 10 10 - 966 000008B6 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 2 0000C 968 PCB,2 -1 Using Map Page 73 -- HLASM R6.0 2016/08/29 08.42 - Stmt -----Location----- Action ----------------Using----------------- Reg Max Last Label and Using Text - Count Id Type Value Range Id Disp Stmt -0 969 000008BE 00000001 DROP 2 2 - 970 000008BE 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 11 00008 971 PCB,11 - 972 000008C2 00000001 DROP 11 11 - 973 000008C2 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 10 0000C 974 PCB,10 - 975 000008C6 00000001 DROP 10 10 - 977 000008CA 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 00000 PCB,15 - 999 000008CA 00000001 USING ORDINARY 000008CA 00001000 00000001 1 0001A 1008 *,1 - 1000 000008CA 00000001 USING ORDINARY 00000000 00001000 FFFFFFF4 2 00008 1010 XNX,2 - 1002 000008CC 00000001 DROP 15 15 - 1003 000008CC 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 10 00008 1005 PCB,10 - 1012 000008EC 00000001 DROP 2 2 - 1012 000008EC 00000001 DROP 10 10 - 1013 000008EC 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 0002C 1051 PCB,15 - 1041 000008EC 00000001 USING ORDINARY 000008EC 00001000 00000001 1 00584 1075 *,1 - 1043 000008EE 00000001 USING ORDINARY 00000000 00001000 FFFFFFF3 7 0000D 1084 XRX,7 - 1050 00000900 00000001 USING ORDINARY 00000000 00001000 FFFFFFFA 5 0000C 1084 MSG,5 - 1069 00000944 00000001 DROP 15 15 - 1070 00000944 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 10 00000 1071 PCB,10 - 1077 0000095C 00000001 USING ORDINARY 00000000 00001000 FFFFFFF8 2 00004 1079 XFX,2 - 1085 00000978 00000001 DROP 2 2 - 1085 00000978 00000001 DROP 5 5 - 1085 00000978 00000001 DROP 7 7 - 1085 00000978 00000001 DROP 10 10 - 1086 00000978 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 00000 PCB,15 - 1112 00000978 00000001 USING ORDINARY 00000978 00001000 00000001 1 004F4 1155 *,1 - 1114 0000097A 00000001 USING ORDINARY 00000000 00001000 FFFFFFF2 7 0000C 1162 XSX,7 - 1116 0000097E 00000001 USING ORDINARY 00000000 00001000 FFFFFFF4 2 00008 1119 XNX,2 - 1122 00000990 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 4 0002C 1157 PCB,4 - 1123 00000990 00000001 DROP 2 2 - 1123 00000990 00000001 DROP 15 15 - 1124 00000990 00000001 USING ORDINARY 00000000 00001000 FFFFFFF9 2 00008 1133 XAX,2 - 1134 000009B2 00000001 DROP 2 2 - 1139 000009C0 00000001 USING ORDINARY 00000000 00001000 FFFFFFFA 9 00004 1143 MSG,9 - 1146 000009D6 00000001 DROP 9 9 - 1147 000009D6 00000001 USING ORDINARY 00000000 00001000 FFFFFFFA 5 0000C 1162 MSG,5 - 1163 00000A0A 00000001 DROP 4 4 - 1163 00000A0A 00000001 DROP 5 5 - 1163 00000A0A 00000001 DROP 7 7 - 1164 00000A0A 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 00000 PCB,15 - 1187 00000A0A 00000001 USING ORDINARY 00000A0A 00001000 00000001 1 00036 1196 *,1 - 1189 00000A0C 00000001 USING ORDINARY 00000000 00001000 FFFFFFF1 7 00009 1202 XYX,7 - 1191 00000A10 00000001 USING ORDINARY 00000000 00001000 FFFFFFF4 2 00008 1194 XNX,2 - 1197 00000A22 00000001 DROP 2 2 - 1197 00000A22 00000001 DROP 14 14 - 1197 00000A22 00000001 DROP 15 15 - 1198 00000A22 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 10 0004C 1204 PCB,10 - 1200 00000A26 00000001 USING ORDINARY 00000000 00001000 FFFFFFFE 13 00008 1203 SA,13 - 1207 00000A42 00000001 DROP 7 7 - 1207 00000A42 00000001 DROP 10 10 - 1207 00000A42 00000001 DROP 13 13 - 1208 00000A42 00000001 USING ORDINARY 00000000 00001000 FFFFFFFE 14 00048 1239 SA,14 - 1209 00000A42 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 00000 1235 PCB,15 - 1232 00000A42 00000001 USING ORDINARY 00000A42 00001000 00000001 1 0004A 1257 *,1 -1 Using Map Page 74 -- HLASM R6.0 2016/08/29 08.42 - Stmt -----Location----- Action ----------------Using----------------- Reg Max Last Label and Using Text - Count Id Type Value Range Id Disp Stmt -0 1234 00000A44 00000001 USING ORDINARY 00000000 00001000 FFFFFFF0 7 00000 1241 XZX,7 - 1240 00000A58 00000001 USING ORDINARY 00000000 00001000 FFFFFFF4 2 00008 1243 XNX,2 - 1247 00000A6C 00000001 DROP 2 2 - 1247 00000A6C 00000001 DROP 15 15 - 1248 00000A6C 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 10 00034 1255 PCB,10 - 1259 00000A8E 00000001 DROP 10 10 - 1259 00000A8E 00000001 DROP 7 7 - 1260 00000A8E 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 00000 PCB,15 - 1280 00000A8E 00000001 USING ORDINARY 00000A8E 00001000 00000001 1 0002A 1285 *,1 - 1293 00000AC6 00000001 DROP 14 14 - 1293 00000AC6 00000001 DROP 15 15 - 1308 00000AC6 00000001 USING ORDINARY 00000000 00001000 FFFFFFEC 3 00018 1406 UCB,3 - 1310 00000AC8 00000001 USING ORDINARY 00000AC8 00001000 00000001 1 003D0 1408 *,1 - 1314 00000AD2 00000001 USING ORDINARY 00000000 00001000 FFFFFFF9 2 00004 1316 XAX,2 - 1317 00000AD8 00000001 DROP 2 2 - 1322 00000AE4 00000001 USING ORDINARY 00000000 00001000 FFFFFFEF 12 0007A 1403 RDRHAS,12 - 1326 00000AF0 00000001 USING ORDINARY 00000000 00001000 FFFFFFF3 2 00010 1331 XRX,2 - 1332 00000B06 00000001 DROP 2 2 - 1336 00000B10 00000001 USING ORDINARY 00000000 00001000 FFFFFFF3 2 00000 1339 XRX,2 - 1344 00000B2E 00000001 DROP 2 2 - 1409 00000C28 00000001 DROP 3 3 - 1409 00000C28 00000001 DROP 12 12 - 1426 00000C48 00000001 USING ORDINARY 00000000 00001000 FFFFFFEC 3 00018 1505 UCB,3 - 1428 00000C4A 00000001 USING ORDINARY 00000C4A 00001000 00000001 1 0024C 1507 *,1 - 1432 00000C54 00000001 USING ORDINARY 00000000 00001000 FFFFFFF9 2 00004 1434 XAX,2 - 1435 00000C5A 00000001 DROP 2 2 - 1440 00000C66 00000001 USING ORDINARY 00000000 00001000 FFFFFFEE 12 00028 1501 PRTHAS,12 - 1443 00000C6E 00000001 USING ORDINARY 00000000 00001000 FFFFFFF3 2 00010 1449 XRX,2 - 1452 00000C92 00000001 DROP 2 2 - 1508 00000D5E 00000001 DROP 3 3 - 1508 00000D5E 00000001 DROP 12 12 - 1522 00000D74 00000001 USING ORDINARY 00000000 00001000 FFFFFFEC 3 00018 1581 UCB,3 - 1524 00000D76 00000001 USING ORDINARY 00000D76 00001000 00000001 1 0012E 1583 *,1 - 1528 00000D80 00000001 USING ORDINARY 00000000 00001000 FFFFFFF9 2 00004 1530 XAX,2 - 1531 00000D86 00000001 DROP 2 2 - 1536 00000D92 00000001 USING ORDINARY 00000000 00001000 FFFFFFED 12 00024 1571 EXCPHAS,12 - 1538 00000D96 00000001 USING ORDINARY 00000000 00001000 FFFFFFF3 2 00014 1544 XRX,2 - 1545 00000DB0 00000001 DROP 2 2 - 1572 00000E12 00000001 USING ORDINARY 00000000 00001000 FFFFFFF3 2 0000C 1577 XRX,2 - 1580 00000E30 00000001 DROP 2 2 - 1584 00000E3A 00000001 DROP 3 3 - 1584 00000E3A 00000001 DROP 12 12 - 1693 00000FCA 00000001 USING ORDINARY 00000FCA 00001000 00000001 1 00732 1714 *,1 - 1702 00000FEC 00000001 USING ORDINARY 00000000 00001000 FFFFFFEC 6 0001C 1709 UCB,6 - 1712 00001014 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 0004C 1715 PCB,15 - 1716 00001020 00000001 USING ORDINARY 00000000 00001000 FFFFFFFE 13 00008 1718 SA,13 - 1719 0000102C 00000001 DROP 13 13 - 1719 0000102C 00000001 DROP 15 15 - 1726 0000103E 00000001 DROP 1 1 - 1726 0000103E 00000001 DROP 6 6 - 1739 00001040 00000001 USING ORDINARY 00001040 00001000 00000001 1 00700 1781 *,1 - 1756 00001080 00000001 USING ORDINARY 00000000 00001000 FFFFFFF9 2 00004 1758 XAX,2 - 1761 0000108E 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 2 0000C 1763 PCB,2 -1 Using Map Page 75 -- HLASM R6.0 2016/08/29 08.42 - Stmt -----Location----- Action ----------------Using----------------- Reg Max Last Label and Using Text - Count Id Type Value Range Id Disp Stmt -0 1764 00001096 00000001 DROP 2 2 - 1765 00001096 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 15 0000C 1767 PCB,15 - 1768 0000109E 00000001 DROP 15 15 - 1769 0000109E 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 2 0004C 1770 PCB,2 - 1771 000010A2 00000001 USING ORDINARY 00000000 00001000 FFFFFFFE 8 00008 1772 SA,8 - 1773 000010A6 00000001 USING ORDINARY 00000000 00001000 FFFFFFFD 9 00010 1777 REGS,9 - 1778 000010B8 00000001 DROP 9 9 - 1844 000012CE 00000001 USING ORDINARY 000012CE 00001000 00000001 1 0046F 2091 *,1 - 1848 000012D8 00000001 USING ORDINARY 00000000 00001000 FFFFFFF9 2 00004 1850 XAX,2 - 1851 000012DE 00000001 DROP 2 2 - 1852 000012DE 00000001 USING ORDINARY 00000000 00001000 FFFFFFEB 12 001DD 2064 JSPAS,12 - 2016 00001548 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 4 0004D 2024 PCB,4 - 2025 00001566 00000001 DROP 4 4 - 2043 0000159E 00000001 USING ORDINARY 00000000 00001000 FFFFFFFF 5 00008 2045 PCB,5 - 2119 00001676 00000001 USING ORDINARY 00001676 00001000 00000001 1 0004A 2139 *,1 - 2123 00001680 00000001 USING ORDINARY 00000000 00001000 FFFFFFF9 2 00004 2125 XAX,2 - 2126 00001686 00000001 DROP 2 2 - 2129 0000168C 00000001 USING ORDINARY 00000000 00001000 FFFFFFEA 12 00098 2138 DIMAS,12 - 2144 000016CC 00000001 DROP 12 12 -1 General Purpose Register Cross Reference Page 76 -- Register References (M=modified, B=branch, U=USING, D=DROP, N=index) HLASM R6.0 2016/08/29 08.42 -0 0(0) 131U 176 191M 212 332M 559M 563M 563 618M 618 1691 1724M - 1(1) 176 177M 178U 191M 212 233M 332M 362U 410U 449M 450U 490U 515U 558U 562U 564M 565U 650U - 723U 765U 814U 883U 913U 954U 999U 1041U 1112U 1187U 1232U 1280U 1309M 1310U 1427M 1428U 1523M 1524U - 1691 1692M 1693U 1724M 1726D 1738M 1739U 1843M 1844U 2118M 2119U - 2(2) 64M 65 69M 71 80M 81M 82 83M 84 95M 96 176 191M 212 332M 363U 386D 411U - 427D 525M 527M 567 570M 593M 599M 600U 615D 616M 652 658M 682M 683U 687U 688M 691D 693M - 724U 744D 766 768M 769U 775D 776U 780M 781D 782U 790D 815 817M 818U 821M 822D 823M 823 - 825U 829D 832 833M 844U 852M 854M 861D 884M 886M 915 918 920U 923D 926 929 931U 934D - 956U 959D 966U 969D 1000U 1012D 1042 1044M 1047M 1076M 1077U 1085D 1113 1115M 1116U 1123D 1124U 1134D - 1135M 1157M 1188 1190M 1191U 1197D 1233 1239M 1240U 1247D 1255M 1281M 1283M 1311M 1313M 1314U 1317D 1318M - 1325M 1326U 1332D 1333M 1335M 1336U 1344D 1367M 1374M 1394M 1396M 1406M 1429M 1431M 1432U 1435D 1436M 1442M - 1443U 1452D 1453M 1477M 1479M 1488M 1499M 1501M 1505M 1525M 1527M 1528U 1531D 1532M 1537M 1538U 1545D 1554M - 1559M 1564M 1569M 1571M 1572U 1580D 1581M 1691 1708M 1724M 1747M 1748M 1755M 1756U 1758M 1759 1761U 1762 - 1763 1764D 1769U 1845M 1847M 1848U 1851D 1853M 1858M 1859 1873M 1877M 1881M 1884M 1891M 1898M 1900M 1902M - 1922M 1926M 1951M 1966M 1969M 2013M 2026M 2032M 2034M 2036M 2038M 2042M 2064M 2120M 2122M 2123U 2126D 2127M - 2133M - 3(3) 70M 71 75M 88M 176 191M 212 332M 364M 365M 366 367M 367 412M 413M 414 585M 586M - 587 654M 656 669M 677M 684 725M 732 742 1126M 1127M 1127N 1128M 1128N 1129M 1130 1308U 1409D - 1426U 1508D 1522U 1553M 1584D 1691 1724M 1746M 1871 1872M 1876M 1905M 1917M 1927M 1958M 1959M 1960M 1961 - 2056M 2057M 2058M 2059 2081B - 4(4) 76M 80 86M 86 176 191M 212 332M 370M 376M 381 417M 419U 424 427D 573M 576U 577M - 577 579 584 590M 602 604 624D 655M 657 673 676M 685 726M 738 740U 744D 1119M 1120M - 1120 1122U 1163D 1320M 1352 1359 1438M 1462 1469 1534M 1535M 1556 1691 1724M 1753M 1753 1775 1779M - 1779N 1870 1904M 1918 1955M 1956M 1957M 1998M 2000M 2001 2002 2015M 2016U 2025D 2045M 2050 2055M 2069M - 2069N 2070 2072 2074 2078 - 5(5) 73M 74 82 84 85 87M 87 89M 90 176 191M 212 332M 371M 373U 374M 374 377M - 379D 382 572M 589M 597 656M 657M 666 1049M 1050U 1076 1078 1085D 1133M 1145 1147U 1163D 1331M - 1341 1347 1354N 1361M 1362 1389 1400 1401 1402 1402 1446M 1457 1464N 1471M 1472 1543M 1547 1562 - 1691 1724M 1754M 1780M 1863M 1864 1871M 1872N 1876N 1906M 1907M 1908 1924 1928 1930 1932 2020M 2021M - 2022 2041M 2043U 2050M 2051 2068M 2068 2076M 2076N 2079 2080M - 6(6) 176 191M 212 332M 569M 587 608 610 620 661M 662U 663M 663 666 671 676 678M 680M - 699D 728M 729M 729 731U 735M 736M 736 739D 741 1053M 1054M 1057 1058M 1058N 1059 1061M 1062M - 1063M 1063 1065 1066M 1066N 1067 1072M 1073M 1073N 1074M 1074N 1075M 1079 1150M 1151 1152M 1153M 1153 - 1155 1324M 1369 1441M 1481 1544M 1556M 1561 1691 1695M 1696 1698M 1698N 1699 1702U 1724M 1726D - 7(7) 176 191M 212 332M 567M 568U 624D 652M 653U 699D 766M 767U 790D 815M 816U 861D 1042M 1043U - 1085D 1113M 1114U 1163D 1188M 1189U 1207D 1233M 1234U 1259D 1370M 1371 1484M 1485 1546M 1547N 1549M 1549N - 1550 1553 1691 1704M 1705M 1706 1724M 1993M 1994M 1995 2006M 2007M 2008 - 8(8) 176 191M 212 332M 491M 491 492M 493M 493N 494 516M 516 517M 518M 519 520M 520 574M - 575M 581 660M 668N 675N 678 679M 727M 734M 738N 832M 834U 855 861D 1137M 1142M 1145N 1691 - 1724M 1770M 1771U 1909M 1911M 1914M 1914 1915M 1916 1959 2057 2131M 2132 - 9(9) 176 191M 212 213M 214U 240D 332M 583M 584M 586 665M 668 675 836M 837M 837 839U 845 - 848M 861D 1138M 1139U 1140M 1140 1143M 1146D 1691 1724M 1772M 1773U 1778D 1910M 1910 1911M 1912M 1912 - 1920 1935 1936 1937 1938 1954M 1958 1961 1980 1990 1994 2007 2018 2056 2059 2078M 2079M 2091 - 10(A) 176 191M 212 215M 216M 217M 217N 218M 218N 219 223 226N 233N 234 238M 332M 451M 452 - 453U 458M 459 467 472D 601M 602M 605 609 671M 672M 673 840M 848 914M 917U 919D 922 - 925M 928U 930D 933 958M 961 963U 965D 968M 971 973U 975D 1001M 1003U 1004M 1007 1009M 1010 - 1012D 1068M 1070U 1085D 1194M 1195M 1195 1198U 1207D 1243M 1244M 1244 1248U 1259D 1321M 1321 1351M 1352 - 1358M 1359 1439M 1439 1461M 1462 1468M 1469 1691 1724M 1774M 1775M 1776 1777 1979M 1980M 1985 1989M - 1990M 1993N 1995N 2005 2009 - 11(B) 67M 68U 111D 176 191M 212 215M 226M 227N 332M 452M 459 607M 608M 612 689M 690M 692M - 841M 842M 842N 843M 846 957M 960U 962D 964 967M 970U 972D 974 1347M 1348M 1354M 1355M 1457M - 1458M 1464M 1465M 1534 1691 1724M 1940M 1944M 1947M 1981M 1982M 1983 1987M 2002M 2130 - 12(C) 63M 65M 66U 111D 176 191M 212 215M 235M 236M 332M 598M 609M 610M 613 1316M 1322U 1409D - 1434M 1440U 1508D 1530M 1536U 1584D 1691 1724M 1850M 1852U 2125M 2129U 2144D - 13(D) 176 191M 212 215M 236 332M 579M 580M 581M 582M 582N 583 596 601 607 621 1199M 1200U -1 General Purpose Register Cross Reference Page 77 -- Register References (M=modified, B=branch, U=USING, D=DROP, N=index) HLASM R6.0 2016/08/29 08.42 -0 1207D 1691 1715M 1716U 1719D 1724M 1988M 1989N 1991 1996 2001M - 14(E) 176 185M 186U 190D 191M 212 215M 225M 227M 230U 332M 468M 1197D 1201 1203 1208U 1293D 1691 - 1724M - 15(F) 176 181M 182U 190D 191M 212 221M 222U 225 332M 372D 380U 418D 473U 781D 830U 835D 862U - 916D 921 924U 927D 932 936U 955D 977U 1001 1002D 1007 1013U 1069D 1086U 1123D 1149 1164U 1197D - 1209U 1247D 1260U 1293D 1691 1711M 1712U 1719D 1724M 1742M 1743 1744 1765U 1766 1767 1768D -1 Diagnostic Cross Reference and Assembler Summary Page 78 -- HLASM R6.0 2016/08/29 08.42 -0Statements Flagged -0 178(P1,178), 214(P1,214), 362(P1,362), 410(P1,410), 450(P1,450), 490(P1,490), 515(P1,515), 558(P1,558), - 562(P1,562), 565(P1,565), 650(P1,650), 723(P1,723), 765(P1,765), 814(P1,814), 834(P1,834), 883(P1,883), 913(P1,913), - 954(P1,954), 999(P1,999), 1041(P1,1041), 1112(P1,1112), 1122(P1,1122), 1187(P1,1187), 1232(P1,1232), 1280(P1,1280), - 1310(P1,1310), 1428(P1,1428), 1524(P1,1524), 1693(P1,1673) - - 29 Statements Flagged in this Assembly 4 was Highest Severity Code -0HIGH LEVEL ASSEMBLER, 5696-234, RELEASE 6.0, PTF UK37157 -0SYSTEM: z/OS 01.10.00 JOBNAME: IBMUSER7 STEPNAME: *OMVSEX PROCSTEP: (NOPROC) -0Data Sets Allocated for this Assembly - Con DDname Data Set Name Volume Member - P1 SYSIN /mbhfs/sos4k.asm - L1 SYSLIB CEE.SCEEMAC ZAPRD2 - L2 SYS1.MACLIB ZARES1 - L3 SYS1.MODGEN ZARES1 - SYSLIN /mbhfs/sos4k.o - SYSPRINT /dev/fd1 - SYSTERM /dev/fd2 - - 1028584K allocated to Buffer Pool Storage required 360K - 2341 Primary Input Records Read 0 Library Records Read 0 Work File Reads - 0 ASMAOPT Records Read 3473 Primary Print Records Written 0 Work File Writes - 137 Object Records Written 0 ADATA Records Written -0Assembly Start Time: 08.42.21 Stop Time: 08.42.22 Processor Time: 00.00.00.3254 - Return Code 004 diff --git a/compileSDLHyperion b/compileSDLHyperion deleted file mode 100644 index e166575..0000000 --- a/compileSDLHyperion +++ /dev/null @@ -1,36 +0,0 @@ - sudo apt update - sudo apt list --upgradable - - sudo apt install --yes build-essential - sudo apt install --yes cmake git autoconf flex gawk g++ zlib1g-dev libbz2-dev m4 - - which gcc - gcc --version - - mkdir /home/moshe/hercules - cd /home/moshe/hercules - - mkdir sdl42 - mkdir herc42 - mkdir extpkgs - - cd extpkgs - git clone https://github.com/SDL-Hercules-390/gists.git - - cp gists/extpkgs.sh . - cp gists/extpkgs.sh.ini . - - ./extpkgs.sh CLONE c d s t - - cd ../sdl42 - git clone https://github.com/SDL-Hercules-390/hyperion.git - - cd hyperion/ - - util/bldlvlck - ./autogen.sh - - ./configure --prefix=/home/moshe/hercules/herc42 --enable-extpkgs=/home/moshe/hercules/extpkgs - ./config.status --config - - make -j diff --git a/random.go b/random.go deleted file mode 100644 index 5429e8b..0000000 --- a/random.go +++ /dev/null @@ -1,83 +0,0 @@ -package main -/* copyright 2020 by moshix - crypto/rand number generator using /dev/random (depends on reliability of this Linux mechanism... - or connect to Java library for atmospheric noise random number generator as in second example -*/ - -import ( - crand "crypto/rand" - rand "math/rand" - - "encoding/binary" - "fmt" - "log" - "os" - "strconv" -) -// check the numbers.log file with dieharder entropy checker with -// dieharder -a -c ' ' -f numbers.log where -c ' ' is the seperator between numbers -func main() { - // check if numbers.log file is > 1MB delete it - var numsize int64 - fileStat, err := os.Stat("numbers.log") - if err != nil { - log.Fatal(err) - } - numsize = fileStat.Size() - if numsize > 1000000 { - e := os.Remove("numbers.log") - if e != nil { - log.Fatal(e) - } - } - - f, err := os.OpenFile("numbers.log", - os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0666) - if err != nil { - log.Println(err) - } - defer f.Close() - var number int - for i := 1; i < 14; i++ { - var src cryptoSource - rnd := rand.New(src) - number = rnd.Intn(899) + 100 - s := strconv.Itoa(number) - fmt.Print(number) - fmt.Print(" ") - if _, err := f.WriteString(s + " "); err != nil { - log.Println(err) - } - } - - fmt.Print(" ..... ") // seperator for block on web page - - for i := 1; i < 14; i++ { - var src cryptoSource - rnd := rand.New(src) - number = rnd.Intn(899) + 100 - s := strconv.Itoa(number) - fmt.Print(number) - fmt.Print(" ") - if _, err := f.WriteString(s + " "); err != nil { - log.Println(err) - } - } - -} - -type cryptoSource struct{} - -func (s cryptoSource) Seed(seed int64) {} - -func (s cryptoSource) Int63() int64 { - return int64(s.Uint64() & ^uint64(1<<63)) -} - -func (s cryptoSource) Uint64() (v uint64) { - err := binary.Read(crand.Reader, binary.BigEndian, &v) - if err != nil { - log.Fatal(err) - } - return v -}