home *** CD-ROM | disk | FTP | other *** search
- 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.
- *
- *********
- CLOCK CSECT
- USING *,R15
- 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
- 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
- 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
- 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
- *********
- *
- * 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
- 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
- END CLOCK