mirror of
https://github.com/moshix/mvs.git
synced 2026-02-18 04:53:54 +00:00
122 lines
3.4 KiB
Plaintext
122 lines
3.4 KiB
Plaintext
TITLE 'CLOCK.ALC - TRANSPARENT PC/370 OS TO DISPLAY CLOCK'
|
||
*********
|
||
*
|
||
* PGMID. CLOCK.ALC (LINKED TO CLOCK.MOD FOR DYNMAIC LOAD AND EXEC)
|
||
* AUTHOR. DON HIGGINS
|
||
* DATE. 04/26/87
|
||
* REMARKS.
|
||
* THIS MODULE DEFINES TRANSPARENT SVC HANDLER AND EXTERNAL
|
||
* INTERRUPT HANDLER TO ALLOW DISPLAYING TIME AND DATE IN
|
||
* UPPER LEFT CORNER OF SCREEN. RETURN FROM THIS MODULE IS
|
||
* VIA LPSW WHICH PLACES CALLING PROGRAM IN PROBLEM STATE WITH
|
||
* EXTERNAL INTERRUPTS ENABLED.
|
||
* MAINTENANCE.
|
||
*
|
||
* 07/20/87 USE PSA DSECT WITH REGISTER 0 FOR LOW MEMORY ACCESS
|
||
*
|
||
*
|
||
*
|
||
*
|
||
*********
|
||
CLOCK CSECT
|
||
USING *,R15
|
||
USING PSA,R0
|
||
L R0,=V(DTIME)
|
||
S R0,=A(CLOCK)
|
||
AR R0,R15 CALC DTIME ENTRY FOR COM OR MOD
|
||
ST R0,ADTIME SAVE DTIME RTN ENTRY
|
||
LA R0,SVCRTN
|
||
ST R0,SVCPSW+4 INIT NEW SVC PSW ADDR
|
||
LA R0,EXTRTN
|
||
ST R0,EXTPSW+4 INIT NEW EXT PSW ADDR
|
||
MVC NEWSVC(8),SVCPSW SET NEW SVC PSW
|
||
MVC NEWEXT(8),EXTPSW SET NEW EXT PSW
|
||
ST R14,PRBPSW+4 INIT PROBLEM STATE EXIT PSW ADDR
|
||
LPSW PRBPSW EXIT WITH NEW PROBLEM PSW
|
||
SVCPSW DS 0D
|
||
DC X'070C0000',A(*-*) ENTER SVC HANDLER IN SUPR STATE
|
||
EXTPSW DS 0D
|
||
DC X'070C0000',A(*-*) ENTER EXT HANDLER IN SUPR STATE
|
||
PRBPSW DS 0D
|
||
DC X'070D0000',A(*-*) RETRUN TO CALLER IN PROB. STATE
|
||
*********
|
||
*
|
||
* TRANSPARENT SVC INTERRUPT HANDLER
|
||
*
|
||
*********
|
||
SVCRTN EQU *
|
||
DROP R15
|
||
ST R15,NEWSVC+4 USE NEW SVC PSW AS TEMP STORGE FOR BASE
|
||
BALR R15,0 INIT BASE
|
||
USING *,R15
|
||
ST R14,SVCSAV
|
||
L R14,NEWSVC+4
|
||
ST R14,SVCSAV+4 SAVE R14-R15 FOR RESTORE
|
||
LR R14,R15
|
||
BCTR R14,0
|
||
BCTR R14,0
|
||
ST R14,NEWSVC+4 RESET NEW SVC PSW
|
||
L R14,OLDSVC+4 R14 = ADDR SVC + 2
|
||
BCTR R14,0
|
||
ICM R14,8,0(R14) GET SVC #
|
||
STCM R14,8,SVCXX+1 SETUP SVC TO ISSUE IN SUPR STATE
|
||
LM R14,R15,SVCSAV RESTORE ALL REGS
|
||
SVCXX SVC *-* REISSUE SVC
|
||
LPSW OLDSVC EXIT TO INSTR AFTER ORIG SVC IN PROB STATE
|
||
SVCSAV DC 2F'0' SAVE R14-R15
|
||
********
|
||
*
|
||
* EXTERNAL INTERRUPT RTN TO DISPLAY CLOCK IN UPPER LEFT OF SCREEN
|
||
*
|
||
********
|
||
EXTRTN EQU *
|
||
DROP R15
|
||
ST R15,NEWEXT+4 USE NEW EXT PSW AS TEMP SAVE
|
||
BALR R15,0
|
||
USING *,R15
|
||
ST R14,EXTSAV SAVE ORIG R14,R15,R0,R1
|
||
L R14,NEWEXT+4
|
||
ST R14,EXTSAV+4
|
||
STM R0,R1,EXTSAV+8
|
||
LR R14,R15
|
||
BCTR R14,0
|
||
BCTR R14,0
|
||
ST R14,NEWEXT+4 RESET NEWEXT PSW
|
||
L R15,ADTIME
|
||
DROP R15
|
||
BALR R14,R15 DISPLAY TIME
|
||
USING *,R14
|
||
LM R14,R0,EXTSAV RESTORE ALL REGS
|
||
LPSW OLDEXT EXIT TO NEXT INSTR IN PROB STATE
|
||
DROP R14
|
||
EXTSAV DC 4F'0' SAVE R14-R1
|
||
ADTIME DC A(8-8) ADDRESS OF DISPLAY TIME ROUTINE
|
||
********
|
||
*
|
||
* COMMON DATA
|
||
*
|
||
********
|
||
R0 EQU 0
|
||
R1 EQU 1
|
||
R14 EQU 14
|
||
R15 EQU 15
|
||
*********
|
||
*
|
||
* PSA - PREFIX STORAGE AREA DSECT (SEE PSW.DOC FOR MORE INFO.)
|
||
*
|
||
*********
|
||
PSA DSECT
|
||
ORG PSA+X'18'
|
||
OLDEXT DS D X'18' OLD EXTERNAL PSW
|
||
OLDSVC DS D X'20'OLD SUPERVISOR CALL PSW
|
||
OLDPGM DS D X'28' OLD PROGRAM CHECK PSW
|
||
OLDMCK DS D X'30' OLD MACHINE CHECK PSW
|
||
OLDIOS DS D X'38' OLD I/O INTERRUPT PSW
|
||
ORG PSA+X'58'
|
||
NEWEXT DS D X'58' NEW EXTERNAL PSW
|
||
NEWSVC DS D X'60' NEW SUPERVISOR CALL PSW
|
||
NEWPGM DS D X'68' NEW PROGRAM CHECK PSW
|
||
NEWMCK DS D X'70' NEW MACHINE CHECK PSW
|
||
NEWIOS DS D X'78' NEW I/O INTERRUPT PSW
|
||
END CLOCK
|
||
|