1
0
mirror of https://github.com/moshix/mvs.git synced 2026-02-18 04:53:54 +00:00
Files
moshix.mvs/PC370_orig/Diskette/full/DEMO/CLOCK.ALC

122 lines
3.4 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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