home *** CD-ROM | disk | FTP | other *** search
- TITLE 'DEMOSVC - TEST E370 SVCS'
- *
- * AUTHOR. DON HIGGINS.
- * DATE. 04/01/85.
- * REMARKS. PC/370 DEMO OF SVC FUNCTIONS:
- *
- * 1. ALLOCATE AND VERIFY PRIMARY AND SECONDARY MEMORY
- * 2. SET SPIE AND VERIFY RECOVERY FROM INVALID INSTRUCTION.
- * 3. CALL LINKED SUBROUTINES.
- * 4. DYNAMICALLY LOAD AND CALL EXTERNAL SUBROUTINE (Z86SUB.EXE).
- * 5. VERIFY CONSOLE INPUT/OUTPUT.
- * 6. VERIFY PORT INPUT/OUTPUT TO DISPLAY CURSOR POSITION.
- *
- *
- DEMOSVC CSECT
- LR R12,R15
- USING DEMOSVC,R12
- LA R2,=C'START DEMOSVC$'
- SVC WTO
- L R15,=V(PET)
- BALR R14,R15
- L R2,=A(1000000)
- SVC ASMEM
- CLM R0,1,=X'08' MEMORY NOT AVAIL. ERR - R2 = AVAILABLE
- BNZ GMAINERR
- SVC ASMEM ALLOCATE AVAILABLE
- CLM R0,1,=X'00'
- BNZ GMAINERR
- SVC DSMEM FREE ALLOCATED SECONDARY MEMORY
- CLM R0,1,=X'00'
- BNZ FMAINERR
- CVD R1,PWORK
- MVC DSMEMS,DSMASK
- ED DSMEMS,PWORK+4 START
- CVD R2,PWORK
- MVC DSMEML,DSMASK
- ED DSMEML,PWORK+4 LENGTH
- LA R2,DSMMSG
- SVC WTO
- L R1,=A(65000)
- SVC GMAIN
- CLM R0,1,=X'01'
- BNE GMAINERR A=1 MEMORY NOT AVAIL
- LR R5,R1 SVE R1 FOR CHECK AFTER 2G+2F
- CVD R1,PWORK
- ED DMEM,PWORK+5
- LA R2,DMEMMSG
- SVC WTO
- LA R1,2000
- SVC GMAIN
- CLM R0,1,=X'00'
- BNZ GMAINERR
- LR R4,R2 R4 = FIRST AREA
- LA R1,2000
- SVC GMAIN
- CLM R0,1,=X'00'
- BNZ GMAINERR
- LR R6,R2 R6 = SECOND AREA
- LR R0,R4
- AH R0,=H'2000'
- CLR R0,R6
- BNE GMAINERR
- LA R1,2000
- LR R2,R4
- SVC FMAIN
- CLM R0,1,=X'00'
- BNE FMAINERR
- LA R1,2000
- LR R2,R6
- SVC FMAIN
- CLM R0,1,=X'00'
- BNE FMAINERR
- L R1,=A(65000)
- SVC GMAIN
- CLR R1,R5
- BNE FMAINERR VERIFY MEMORY BACK TO ORIG.
- LA R1,USERSPIE
- SVC SPIE
- INVOP DC X'0000' INVALID OP 0C1
- SPIEOK EQU *
- L R15,=V(USER370A)
- BALR R14,R15
- L R15,=V(USER370B)
- BALR R14,R15
- L R0,=A(LOADADDR) ABSOLUTE LOAD ADDR (MUST MATCH LINK)
- LA R1,LOADFILE
- SVC LOADSVC LOAD Z86SUB.EXE
- CLM R0,1,=X'00'
- BNE LOADERR
- L R15,=A(LOADADDR)
- SVC CALLZ86 CALL Z86SUB.EXE
- LA R2,=C'CONSOLE ECHO TEST UNTIL <CR>$'
- SVC WTO
- ECHO EQU *
- SVC READCON
- CLM R0,1,=AL1(CR)
- BE ECHODONE
- LR R2,R0
- SVC WRITECON
- B ECHO
- ECHODONE EQU *
- LA R2,=C'CONSOLE ECHO DONE$'
- SVC WTO
- SR R1,R1
- SVC SPIE REMOVE SPIE
- LA R2,=C'START CURSOR ADDRESS ROUTINE$'
- SVC WTO
- LA R0,X'0E'
- LA R1,X'3D4'
- SVC PORTOUT SET CURSOR HIGH BYTE INDEX POINTER
- LA R1,X'3D5'
- SVC PORTIN READ HIGH BYTE
- LR R3,R0 SAVE IN R3
- LA R0,X'0F'
- LA R1,X'3D4'
- SVC PORTOUT SET CURSOR LOW BYTE INDEX POINTER
- LA R1,X'3D5'
- SVC PORTIN READ LOW BYTE
- SLL R3,8
- OR R0,R3
- CVD R0,PWORK
- ED DCUR,PWORK+5
- LA R2,DCURMSG
- SVC WTO
- L R15,=V(PET)
- BALR R14,R15
- LA R2,=C'DEMOSVC ENDED$'
- SVC WTO
- SVC EXIT
- LOADERR EQU *
- LA R2,=C' LOAD ERROR ON Z86SUB.EXE$'
- SVC WTO
- SVC TRACE
- DC C'BUG'
- SVC EXIT
- GMAINERR EQU *
- LR R3,R0
- LA R2,=C'GMAIN ERROR$'
- SVC WTO
- SVC TRACE
- DC C'BUG'
- SVC EXIT
- FMAINERR EQU *
- LR R3,R0
- LA R2,=C'FMAIN ERROR$'
- SVC WTO
- SVC TRACE
- DC C'BUG'
- SVC EXIT
- USERSPIE EQU *
- MVC SAVEPSW,0(R1)
- LA R2,=C'USER SPIE EXIT TAKEN$'
- SVC WTO
- LH R1,SAVEPSW+6
- CLC 0(2,R1),=X'0000'
- BE 2(R1)
- LA R2,=C'SPIE PSW ADDR BAD$'
- SVC WTO
- SVC TRACE
- DC C'BUG'
- SVC EXIT
- DC C'*** SAVE PSW ***'
- SAVEPSW DC D'0'
- R0 EQU 0
- R1 EQU 1
- R2 EQU 2
- R3 EQU 3
- R4 EQU 4
- R5 EQU 5
- R6 EQU 6
- R12 EQU 12
- R14 EQU 14
- R15 EQU 15
- WTO EQU 209
- TRACE EQU 9
- EXIT EQU 0
- PORTIN EQU 21
- PORTOUT EQU 22
- READCON EQU 201
- WRITECON EQU 202
- CALLZ86 EQU 15
- LOADSVC EQU 17
- LOADFILE DC C'Z86SUB.EXE',X'00'
- LOADADDR EQU X'6000' ***ABS. ADDR MUST MATCH Z86SUB LINK***
- SPIE EQU 14
- GMAIN EQU 10
- FMAIN EQU 11
- CR EQU X'0D'
- PWORK DC D'0'
- DMEMMSG DC C'FREE MEMORY ='
- DMEM DC X'402020202020',C'$'
- ASMEM EQU 19
- DSMEM EQU 20
- DSMASK DC X'4020',C',',X'202020',C',',X'202020'
- DSMMSG DC C' SECONDARY MEMORY START ='
- DSMEMS DC CL10' Z,ZZZ,ZZZ',C' LENGTH ='
- DSMEML DC CL10' Z,ZZZ,ZZZ',C'$'
- DCURMSG DC C' CURSOR ADDRESS ='
- DCUR DC X'402020202020',C'$'
- LTORG
- USER370A CSECT
- DROP
- USING *,R15
- LA R2,MSGA1
- SVC WTO
- USER370B CSECT
- DROP
- USING *,R15
- LA R2,MSGB1
- SVC WTO
- USER370A CSECT
- DROP
- USING USER370A,R15
- LA R2,=C'USER 370 A MSG 2$'
- SVC WTO
- BR R14
- MSGA1 DC C'USER 370 A MSG 1$'
- LTORG
- USER370B CSECT
- DROP
- USING USER370B,R15
- LA R2,=C'USER 370 B MSG 2$'
- SVC WTO
- BR R14
- MSGB1 DC C'USER 370 B MSG 1$'
- LTORG
- END DEMOSVC