home *** CD-ROM | disk | FTP | other *** search
- *********
- *
- * PGMID. MVS.ALC (LINKED TO MVS.MOD FOR DYNMAIC LOAD AND EXEC)
- * AUTHOR. DON HIGGINS
- * DATE. 05/26/87
- * REMARKS.
- * THIS MODULE DEFINES MVS SVC HANDLER AND EXTERNAL
- * INTERRUPT HANDLER TO SUPPORT EXECUTION OF MODULES WITH
- * MVS SVC'S. RETRUN FROM THIS MODULE IS VIA LPSW WHICH
- * PLACES CALLING PROGRAM IN PROBLEM STATE WITH SUPERVISOR
- * AND NO EXTERNAL INTERRUPTS ENABLED (EXTERNAL CAN BE TURNED
- * ON LATER IF DESIRED). FOR MVS SVC EQU'S SEE MVS.DOC.
- *
- * MAINTENANCE.
- *
- * 05/30/87 CHANGE SVC 3 EXIT TO RETURN IN SUPR STATE, ADD SVC 10
- * 05/31/87 ADD IGC013 ABEND T1/T4
- * 06/01/87 USE SVCR15 TO SIMPLIFY RTN SAVE/RESTORE, CHANGE IGC NAMES
- * 06/04/87 SAVE R14,R1 ACROSS EXECRTN FOR SVC'S AND INS'S
- * 06/06/87 FIX WTOR TO CLEAR R15 AND USE EXTERNAL INTERRUPT TO POST
- *********
- *
- * MVS NUCLEUS INITIALIZATION PROGRAM (NIP)
- *
- *********
- MVS CSECT
- USING MVS,R15
- STM R14,R6,12(R13)
- LR R6,R15
- DROP R15
- USING MVS,R6
- SVC TRACE
- DC C'IOF' TURN OFF INTERRUPTS FOR WTOR FACILITY
- *
- * INIT CVT
- *
- LA R1,CVT
- USING IHACVT,R1
- ST R1,16 STORE CVT ADDRESS IN LOW MEMORY
- LA R0,TCB
- ST R0,CVTTCBP CVT TCB PTR
- LA R0,SMCA
- ST R0,CVTSMCA CVT SMCA PTR
- L R0,ASCASL
- ST R0,CVTMZ00 CVT END OF REAL MEMORY
- *
- * INIT SVC TABLE
- *
- LA R1,4*256
- SVC GMAIN
- LTR R0,R0
- BNZ ABEND80A NO MEMORY FOR SVC TABLE
- ST R2,ASVCTAB
- LR R0,R2
- LA R1,4*256
- SR R14,R14
- SR R15,R15
- MVCL R0,R14 CLEAR SVC TABLE
- LA R0,IGC0001
- ST R0,4*1(R2) INIT SVC 1 WAIT
- LA R0,IGC0002
- ST R0,4*2(R2) INIT SVC 2 POST
- LA R0,IGC0003
- ST R0,4*3(R2) INIT SVC 3 EXIT
- LA R0,IGC0010
- ST R0,4*10(R2) INIT SVC 10 GMAINR/FMAINR
- LA R0,IGC0013
- ST R0,4*13(R2) INIT SVC 13 ABEND T1
- LA R0,IGC0035
- ST R0,4*35(R2) INIT SVC 35 WTO/WTOR
- *
- * INIT INS TABLE
- *
- LA R1,4*256
- SVC GMAIN
- LTR R0,R0
- BNZ ABEND80A NO MEMORY FOR INS TABLE
- ST R2,AINSTAB
- LR R0,R2
- LA R1,4*256
- SR R14,R14
- SR R15,R15
- MVCL R0,R14 CLEAR SVC TABLE
- *
- * INIT SVC, PGM, AND EXT NEW PSW'S
- *
- LA R0,SVCRTN
- ST R0,SVCPSW+4 INIT NEW SVC PSW ADDR
- LA R0,PGMRTN
- ST R0,PGMPSW+4 INIT NEW PGM PSW ADDR
- LA R0,EXTRTN
- ST R0,EXTPSW+4 INIT NEW EXT PSW ADDR
- MVC NEWSVC(8),SVCPSW SET NEW SVC PSW
- MVC NEWPGM(8),PGMPSW SET NEW PGM PSW
- MVC NEWEXT(8),EXTPSW SET NEW EXT PSW
- LM R14,R6,12(R13) RESTORE CALLER'S REG'S
- DROP R6
- USING MVS,R15
- ST R14,PRBPSW+4 INIT PROBLEM STATE EXIT PSW ADDR
- *
- * EXIT TO CALLER IN PROBLEM STATE TO ACTIVATE MVS SHELL ENVIRONMENT
- *
- LPSW PRBPSW EXIT WITH NEW PROBLEM PSW
- DROP
- SVCPSW DS 0D
- DC X'060C0000',A(*-*) ENTER SVC HANDLER IN SUPR STATE
- PGMPSW DS 0D
- DC X'060C0000',A(*-*) ENTER PGM HANDLER IN SUPR STATE
- EXTPSW DS 0D
- DC X'060C0000',A(*-*) ENTER EXT HANDLER IN SUPR STATE
- PRBPSW DS 0D
- DC X'070D0000',A(*-*) RETURN WITH PROB. STATE AND EXT. INT.
- *********
- *
- * MVS SVC INTERRUPT HANDLER
- *
- *********
- SVCRTN EQU *
- SVC TRACE
- DC C'SVC'
- DROP
- ST R15,SVCR15
- L R15,NEWSVC+4
- USING SVCRTN,R15
- STM R0,R14,SVCSAV
- L R14,SVCR15
- ST R14,SVCSAV+15*4
- L R14,OLDSVC+4 R14 = ADDR SVC + 2
- BCTR R14,0
- SR R2,R2
- IC R2,0(R14) R2=SVC#
- L R3,ASVCTAB
- LA R4,IGC0NNN
- BAL R14,EXECRTN EXECUTE SVC
- USING *,R14
- LTR R15,R15 WAS EXEC OK
- BNZ ABEND106
- LM R2,R13,SVCSAV+2*4 RESTORE USER REGS (2-13 ONLY)
- LPSW OLDSVC EXIT TO INSTR AFTER ORIG SVC IN PROB STATE
- ABEND106 EQU *
- L R1,=X'80106000' NO, ABEND 106 WITH DUMP
- LA R2,13
- L R3,ASVCTAB
- LA R4,IGC0NNN
- BAL R14,EXECRTN EXECUTE ABEND SVC
- DROP
- USING *,R14
- OI OLDSVC+1,X'02' TURN ON WAIT BIT IN OLD SVC PSW
- LM R0,R15,SVCSAV RESTORE ALL REGS TO ORIG.
- LPSW OLDSVC IF IT RETURN'S, LOAD WAIT STATE OLD PSW
- DROP
- SVCSAV DC 16F'0'
- ********
- *
- * PROGRAM INTERRUPT ROUTINE
- *
- ********
- PGMRTN EQU *
- SVC TRACE
- DC C'PGM'
- DROP
- ST R15,PGMR15 TEMP SAVE R15 IN LOW MEMORY
- L R15,NEWPGM+4
- USING PGMRTN,R15
- STM R0,R14,PGMSAV SAVE REGS
- L R14,PGMR15
- ST R14,PGMSAV+4*15
- CLI OLDPGM+3,2 IS THIS PRIVILEGED OR OPERATION EXCEPTION
- BH ABEND0CX NO, ABEND 0CX WITH DUMP
- L R14,OLDPGM+4 YES, TRY TO LOAD INS0NNN MACRO INSTRUCTION
- SR R2,R2
- IC R2,0(R14) R2 = OPERATION CODE
- L R3,AINSTAB
- LA R4,INS0NNN
- BAL R14,EXECRTN EXECUTE INS RTN IF FOUND
- USING *,R14
- LTR R15,R15 WAS MACRO INSTR. EXEC OK
- BNZ ABEND0CX NO, ABEND 0CX WITH DUMP
- LM R0,R15,PGMSAV RESTORE ALL REGS
- LPSW OLDPGM EXIT TO NEXT INSTR IN PROB STATE
- DROP
- ABEND0CX EQU *
- BALR R15,0
- USING *,R15
- SR R1,R1
- IC R1,OLDPGM+3
- SLL R1,12
- O R1,=X'800C0000' R1=0CX SYSTEM ABEND WITH DUMP
- LA R2,13
- L R3,ASVCTAB
- LA R4,IGC0NNN
- BAL R14,EXECRTN EXECUTE ABEND SVC
- DROP
- USING *,R14
- OI OLDPGM+1,X'02' TURN ON WAIT BIT IN OLD PGM PSW
- LM R0,R15,PGMSAV
- LPSW OLDPGM IF IT RETURN'S, LOAD WAIT STATE OLD PSW
- DROP
- PGMSAV DC 16F'0' SAVE R0-R15
- ********
- *
- * EXTERNAL INTERRUPT ROUTINE
- *
- * 1. CURRENTLY ONLY FUNCTION IMPLEMENTED VIA EXTERNAL INTERRUPT IS
- * ENTRY OF WTOR REPLY WITH POST OF ECB WHEN DONE. ONLY ONE WTOR
- * ACTIVE AT A TIME IS SUPPORTED IN THIS SINGLE USER SHELL.
- * PC/370 RELEASE 2.0 EXECUTES EXTERNAL INTERRUPT ROUTINE EVERY
- * 256 INSTRUCTIONS IF ENABLED AND PROBLEM STATE. THIS WILL
- * CAUSE HESITATION ON SLOWER PC'S AND HAVING EXTERNAL INTERRUPT
- * ENABLED FOR THIS FACILITY INTRODUCES AROUND 10% OVERHEAD (25
- * EXTRA INSTRUCTIONS EVERY 256 INSTRUCTIONS).
- *
- ********
- EXTRTN EQU *
- SVC TRACE
- DC C'EXT'
- DROP
- ST R15,EXTR15 TEMP SAV R15
- L R15,NEWEXT+4
- USING EXTRTN,R15
- STM R0,R14,EXTSAV SAVE REGS
- L R14,EXTR15
- ST R14,EXTSAV+4*15
- CLI WTORPEND,TRUE EXIT IF NO WTOR PENDING
- BNE EXTEXT
- SVC KEYSTAT IS THERE KEYBOARD INPUT PENDING
- LTR R0,R0 EXIT IF NO KEY PENDING
- BZ EXTEXT
- L R3,WTORCCNT
- L R4,WTORCRPY
- WTORLOOP EQU *
- SVC KEYSTAT IS THERE KEYBOARD INPUT PENDING
- LTR R0,R0
- BZ WTORSAVE
- SVC KEYREAD
- CLM R0,1,=AL1(CR)
- BE WTORDONE STOP AT CARRIAGE RETURN
- STC R0,0(R4)
- LA R4,1(R4)
- BCT R3,WTORLOOP REPEAT UNTIL NO MORE CHAR OR FULL
- WTORDONE EQU *
- MVI WTORPEND,FALSE
- LA R2,LF
- SVC WRITECHR
- LA R2,CR
- SVC WRITECHR
- L R2,WTORTCNT
- SR R2,R3
- BZ WTORSKIP SKIP CONVERT IF NO CHAR.
- L R1,WTORARPY
- SVC ASCEBC CONVERT REPLY TO EBCDIC
- WTORSKIP EQU *
- L R1,WTORAECB
- LA R6,IGC0002
- BALR R14,R6 POST WTOR ECB VIA BRANCH ENTRY TO POST
- USING *,R14
- LM R0,R15,EXTSAV RESTORE ALL REGS
- LPSW OLDEXT EXIT TO NEXT INSTR. OR EXIT FROM WAIT
- DROP R14
- WTORSAVE EQU *
- ST R3,WTORCCNT
- ST R4,WTORCRPY
- EXTEXT EQU *
- LM R0,R15,EXTSAV RESTORE ALL REGS
- LPSW OLDEXT EXIT TO NEXT INSTR
- DROP
- EXTSAV DC 16F'0' SAVE R0-R15
- ********
- *
- * EXECUTE SVC/INS ROUTINE FROM SVC, PGM, OR EXT INTERRUPT HANDLER
- *
- * NOTE THIS ROUTINE ALONG WITH INTERRUPT HANDLERS IS CURRENTLY ONLY
- * SERIALLY REUSABLE SO NO SVC CAN ISSUE MVS SVC ETC. (PC/370 SVC'S OK).
- * THIS IS A SINGLE USER NON-MULTI-TASKING VERSION OF MVS.
- *
- * R2 = NUMBER OF SVC OR USER DEFINED INSTRUCTION OP CODE
- * R3 = SVC/INS TABLE
- * R4 = ADDRES OF MODULE NAME 'IGC0NNN' OR 'INS0NNN'
- * R14 = RETURN ADDRESS
- * R15 = NZ IF LOAD FAILED ELSE ZERO FOR SUCCESSFUL EXECUTION
- *
- EXECRTN EQU *
- BALR R7,0
- USING *,R7
- CLI LOCK,BUSY
- BE ABENDFXX ABEND FXX FOR INVALID RECURSIVE ENTRY
- MVI LOCK,BUSY
- ST R14,EXECEXT
- AR R2,R2
- AR R2,R2 R2=4*SVC#
- L R6,0(R2,R3) R6=A(SVC RTN ENTRY)
- LTR R6,R6
- BNZ CALLRTN
- BAL R14,LOADRTN LOAD SVC/INS IF NO ADDR IN TABLE
- BNZ EXITRTN
- CALLRTN EQU *
- LA R3,CVT
- LA R4,TCB
- LA R5,RB
- LA R7,ASCB
- BALR R14,R6 CALL SVC ROUTINE
- EXITRTN EQU *
- BALR R14,0
- USING *,R14
- MVI LOCK,FREE
- L R14,EXECEXT
- BR R14
- DROP R14
- LOCK DC AL1(FREE) PREVENT RECURSIVE CALLS
- FREE EQU 0
- BUSY EQU 1
- EXECEXT DC A(0)
- LOADRTN EQU *
- ST R14,LOADEXT
- STM R0,R1,LOADSAV SAVE R0-R1 ACROSS LOAD
- LA R3,0(R2,R3) SAVE TABLE ENTRY ADDR IN R3
- SRL R2,2
- CVD R2,PWORK
- MVC 3(4,R4),=X'F0202020'
- ED 3(4,R4),PWORK+6
- LR R1,R4
- SVC LOAD LOAD TYPE 3/4 DYNAMIC SVC ROUTINE
- L R14,LOADEXT
- LTR R15,R15
- BNZR R14
- ST R0,0(R3) SAVE SVC ENTRY IN SVC TABLE
- LR R6,R0
- LM R0,R1,LOADSAV
- BR R14 RETURN FROM LOAD SVC
- DROP
- LOADEXT DC A(0)
- LOADSAV DC 2F'0'
- IGC0NNN DC C'IGC0NNN.MOD' TYPE 3/4 SVC MODULE
- INS0NNN DC C'INS0NNN.MOD' TYPE 3/4 USER DEFINED OPCODE ROUTINE
- ASVCTAB DC A(*-*) ADDRESS OF SVC TABLE
- AINSTAB DC A(*-*) USER DEFINED INSTRUCTION RTN TABLE
- *********
- *
- * WAIT STATE ERRORS
- *
- *********
- ABEND80A EQU * MEMORY ERROR DURING NIP
- SVC TRACE
- DC C'80A'
- SVC TRACE
- DC C'BUG'
- ABENDFXX EQU * RECURSIVE CALL TO EXECRTN
- SVC TRACE
- DC C'FXX'
- SVC TRACE
- DC C'BUG'
- *********
- *
- * IGC0001 - WAIT
- *
- *********
- IGC0001 DS 0H
- USING *,R6
- SR R15,R15
- LTR R1,R1
- BZ IGC0001E EXIT WITH ERROR IF ECBLIST
- TM 0(R1),X'40'
- BOR R14 EXIT OK IF POSTED ALREADY
- OI 0(R1),X'80' TURN ON WAIT BIT FOR EXT. INT. POST
- LA R0,IGC0001L
- ST R0,WAITLOOP+4
- LPSW WAITLOOP ENTER ENABLED PROB. STATE AND LOOP
- IGC0001L B * LOOP UNTIL POST OCCURS VIA EXT. INT.
- IGC0001E EQU *
- LA R15,4
- BR R14
- WAITLOOP DC 0D'0',X'070D0000',A(*-*) PROB STATE LOOP
- *********
- *
- * IGC0002 - POST
- *
- *********
- IGC0002 DS 0H
- USING *,R6
- SR R15,R15
- LTR R1,R1
- BM IGC0002E EXIT WITH ERROR IF ECBLIST
- OI 0(R1),X'40' TURN ON ECB POST BIT
- TM 0(R1),X'80' IS WAIT BIT ON
- BZR R14 EXIT NOW IF TASK NOT WAITING
- NI OLDEXT+1,X'FE' TURN OFF PROB. STATE IF WAITING
- LA R0,IGC0002P FORCE EXIT FROM WAIT SVC LOOP
- ST R0,OLDEXT+4 RESET EXT RETURN ADDR. TO BR R14
- IGC0002P EQU *
- BR R14 EXIT IN SUPERVISOR STATE
- IGC0002E EQU *
- LA R15,4
- BR R14
- *********
- *
- * IGC0003 - EXIT
- *
- *********
- IGC0003 DS 0H
- USING *,R6
- NI OLDSVC+1,X'FE' TURN OFF PROBLEM STATE
- SR R15,R15
- BR R14 EXIT IN SUPERVISOR STATE
- *********
- *
- * IGC0010 - GMAINR/FMAINR R0=SPL,LENGTH, R1=NEG GMAIN/POS. FMAIN ADDR.
- *
- *********
- IGC0010 DS 0H
- USING *,R6
- LTR R1,R1
- BNM IGC0010F
- IGC0010G EQU *
- LR R1,R0
- SVC GMAIN
- LR R0,R1
- LR R1,R2
- SR R15,R15
- BR R14
- IGC0010F EQU *
- LR R2,R1
- LR R1,R0
- SVC FMAIN
- SR R15,R15
- BR R14
- *********
- *
- * IGC0013 - ABEND R1 = COMPLETION CODE
- *
- *********
- IGC0013 DS 0H
- USING *,R6
- STM R14,R2,IGC0013S
- ST R1,PWORK
- UNPK DWORK(9),PWORK(5)
- TR DWORK(8),HEXTAB-240
- MVC DCMP,DWORK
- UNPK DWORK(9),OLDSVC(5)
- TR DWORK(8),HEXTAB-240
- MVC DPSW(8),DWORK
- UNPK DWORK(9),OLDSVC+4(5)
- TR DWORK(8),HEXTAB-240
- MVC DPSW+8(8),DWORK
- LA R2,DABEND
- SVC WTO DISPLAY COMPLETION CODE AND PSW
- LTR R1,R1
- BP IGC0013N NO DUMP REQUESTED
- L R0,AIGC1013
- LTR R0,R0
- BNZ IGC0013D
- LA R1,=C'IGC1013.MOD'
- SVC LOAD
- LTR R15,R15
- BNZ IGC0013A EXIT WITH ERROR TO FORCE ABEND 106
- ST R0,AIGC1013 SAVE ADDRESS OF TYPE 4 ABEND FORMATTED DUMP
- IGC0013D EQU * TYPE 4 FOUND, GO PRINT FORMATTED DUMP
- LM R14,R2,IGC0013S
- L R6,AIGC1013
- BR R6 LINK TO TYPE 4 FORMATTED ABEND DUMP ROUTINE
- IGC0013N EQU * NO DUMP REQUESTED, EXIT NORMALLY
- LM R14,R2,IGC0013S
- SR R15,R15 CLEAR R15 TO PREVENT 106 ABEND FOR IGC1013 ONLY
- BR R14 EXIT NORMALLY
- IGC0013A EQU *
- LM R14,R2,IGC0013S
- LA R15,4 SET ERROR TO FORCE 106 ABEND FOR IGC1013 NOT FOUND
- BR R14 EXIT NORMALLY
- AIGC1013 DC A(0) ADDRESS OF TYPE 4 ABEND FORMATTED DUMP ROUTINE
- IGC0013S DC 5F'0' SAVE R14,R2 ACROSS LOAD
- DABEND DC C'IGC0013A ABEND = '
- DCMP DC CL8'XXSSSUUU',C' PSW = '
- DPSW DC CL16' ',C'$'
- *********
- *
- * IGC0035 - WTO/WTOR
- *
- *********
- IGC0035 DS 0H
- USING *,R6
- SR R2,R2
- CLI 0(R1),0
- BNE IGCWTOR
- IGCWTO EQU *
- IC R2,1(R1)
- SH R2,=H'4'
- EX R2,MVCWTO MOVE WTO TEXT
- LA R2,WTOMSG(R2)
- MVI 0(R2),C'$' ADD MS-DOS END OF TEXT
- LA R2,WTOMSG
- SVC WTO ISSUE MS-DOS WTO
- SR R15,R15
- BR R14
- IGCWTOR EQU *
- SR R15,R15
- IC R15,9(R1)
- EX R15,MVCWTORM
- LA R2,WTOMSG-4(R15)
- MVI 0(R2),C'$'
- LA R2,WTOMSG
- SVC WTO
- CLI WTORPEND,TRUE ONLY ONE AT A TIME ALLOWED
- BE WTORERR
- IC R15,0(R1) R15 = REPLY LENGTH
- ST R15,WTORTCNT SAVE COUNT FOR EXT. INT. RTN.
- ST R15,WTORCCNT
- L R0,0(R1)
- ST R0,WTORARPY SAVE REPLY ADDR.
- ST R0,WTORCRPY
- L R15,4(R1)
- ST R15,WTORAECB SAVE ECB ADDR.
- SR R0,R0
- ST R0,0(R15) CLEAR ECB
- MVI WTORPEND,TRUE ENABLE EXT. INT. REPLY ROUTINE
- SR R15,R15
- BR R14 EXIT WITH REPLY PENDING
- WTORERR EQU *
- LA R15,4
- BR R14
- WTOMSG DC CL256' ',C' '
- MVCWTO MVC WTOMSG(0),4(R1)
- MVCWTORM MVC WTOMSG(0),12(R1)
- WTORPEND DC AL1(FALSE)
- TRUE EQU 1
- FALSE EQU 0
- WTORTCNT DC A(*-*) TOTAL REPLY CHAR ALLOWED
- WTORCCNT DC A(*-*) CURRENT REPLY COUNTER DEC BY EXT. INT. RTN.
- WTORARPY DC A(*-*) ADDRESS OF REPLY FIELD
- WTORCRPY DC A(*-*) CURRENT REPLY CHAR. ADDR. INC BY EXT. INT. RTN.
- WTORAECB DC A(*-*) ADDRESS OF ECB
- ********
- *
- * COMMON DATA
- *
- ********
- *
- * PC/370 SVC'S
- *
- PWORK DC D'0'
- DWORK DC CL9' '
- HEXTAB DC C'0123456789ABCDEF'
- EXIT EQU 0
- TRACE EQU 9
- GMAIN EQU 10
- FMAIN EQU 11
- EBCASC EQU 12
- ASCEBC EQU 12
- LOAD EQU 25
- WTO EQU 200+9 MS-DOS PRINT TEXT
- WRITECHR EQU 200+2 MS-DOS PRINT CHAR
- KEYREAD EQU 200+1 MS-DOS READ CHAR WITH ECHO
- KEYSTAT EQU 200+11 MS-DOS TEST KEYBOARD
- CR EQU X'0D' ASCII CARRIAGE RETURN
- LF EQU X'0A' ASCII LINE FEED
- *
- * GENERAL REGISTERS
- *
- R0 EQU 0
- R1 EQU 1
- R2 EQU 2
- R3 EQU 3
- R4 EQU 4
- R5 EQU 5
- R6 EQU 6
- R7 EQU 7
- R8 EQU 8
- R9 EQU 9
- R10 EQU 10
- R11 EQU 11
- R12 EQU 12
- R13 EQU 13
- R14 EQU 14
- R15 EQU 15
- *********
- *
- * CVT - MVS COMMUNICATIONS VECTOR TABLE
- *
- *********
- DS 0F
- DC CL16'PC/370 MVS CVT'
- DC X'8386' MACHINE #
- DC C'2.0A' PC/370 RELEASE 2.0A
- CVT DS 0F
- DC A(*-*) CVTTCBP ACCRESS OF NEXT TCB
- ORG CVT+56
- DC PL4'87200' CVTDATE PACKED DECIMAL DATE
- ORG CVT+116
- DC X'93' MVS/XA OS OPTIONS
- ORG CVT+128
- DC A(X'200') CVTNUCB END OF NUCLEUS
- ORG CVT+164
- DC A(*-*) CVTMZ00 HIGHEST ADDRESS IN MACHINE
- ORG CVT+196
- DC A(*-*) CVTSMCA SMF COMMON AREA
- DC A(*-*) CVTUSER USER POINTER
- *********
- *
- * MISC. MVS CONTROL BLOCKS
- *
- *********
- TCB DS 0F TASK CONTROL BLOCK
- RB DS 0F
- ASCB DS 0F ADDRESS SPACE CONTROL BLOCK
- SMCA DS 0F SMF COMMON AREA
- *********
- *
- * PSW.DOC LOW MEMORY PSW EQUATES
- *
- *********
- OLDEXT EQU X'18' OLD EXTERNAL PSW
- OLDSVC EQU X'20' OLD SUPERVISOR CALL PSW
- OLDPGM EQU X'28' OLD PROGRAM CHECK PSW
- OLDMCK EQU X'30' OLD MACHINE CHECK PSW
- OLDIOS EQU X'38' OLD I/O INTERRUPT PSW
- CSW EQU X'40' CHANNEL STATUS WORD
- CAW EQU X'48' CHANNEL ADDRESS WORD
- ITIMER EQU X'50' INTERVAL TIMER
- NEWEXT EQU X'58' NEW EXTERNAL PSW
- NEWSVC EQU X'60' NEW SUPERVISOR CALL PSW
- NEWPGM EQU X'68' NEW PROGRAM CHECK PSW
- NEWMCK EQU X'70' NEW MACHINE CHECK PSW
- NEWIOS EQU X'78' NEW I/O INTERRUPT PSW
- SVCR15 EQU X'190' SVC TEMP SAV R15
- PGMR15 EQU X'194' PGM TEMP SAV R15
- EXTR15 EQU X'198' EXT TEMP SAV R15
- IHACVT DSECT
- CVTTCBP DS A NEXT TCB
- ORG IHACVT+56
- CVTDATE DS PL4 PACKED DATE
- ORG IHACVT+128
- CVTNUCB DS A END OF NUCLEUS
- ORG IHACVT+164
- CVTMZ00 DS A END OF REAL MEMORY
- ORG IHACVT+196
- CVTSMCA DS A SMF COMMON AREA
- CVTABEND DS A SECONDARY CVT
- CVTUSER DS A USER POINTER
- *********************************************************************
- *
- * ASCB - ADDRESS SPACE CONTROL BLOCK FOR PC/370 RELEASE 2.0+
- *
- *********************************************************************
- *
- * THIS CONTROL BLOCK IS INITIALIZED BY THE PC/370 EMULATOR AT EXECUTION
- * TIME FOR THE MAIN PROGRAM COM FILE AND IS LOCATED AT VIRTUAL MEMORY
- * ADDRESS X'104'. THIS CONTROL BLOCK IS ALSO CREATED FOR EACH ATTACHED
- * COM PROGRAM ADDRESS SPACE DURING ATTACH SVC 26 EXECUTION (SEE SVC.DOC).
- *
- *********************************************************************
- ASCB DSECT
- ASCIDR DS CL4 ASCB IDENTIFIER C'ASCB'
- ASCNXT DS A ABSOLUTE ADDRESS OF NEXT DAUGHTER TASK ASCB
- ASCPRV DS A ABSOLUTE ADDRESS OF PREVIOUS MOTHER TASK ASCB
- ASCASO DS A ABSOLUTE ADDRESS OF ADDRESS SPACE ORIGIN
- ASCASL DS F LENGTH OF ADDRESS SPACE (USED FOR ADDRESS PROTECTION)
- ASCASF DS A RELATIVE ADDRESS OF FIRST FREE QUEUE ELEMENT (FQE)
- ASCENT DS A RELATIVE ADDRESS OF ENTRY POINT (FROM COM PREFIX)
- ASCEXT DS A RELATIVE ADDRESS OF RETURN IN MOTHER TASK ASCB
- LASCB EQU *-ASCB
- END MVS