mirror of
https://github.com/moshix/mvs.git
synced 2026-02-04 23:14:55 +00:00
272 lines
6.5 KiB
Plaintext
272 lines
6.5 KiB
Plaintext
TITLE 'DEMOSVC - TEST E370 SVCS'
|
||
*
|
||
* CONVERTED TO 8086 BY DON HIGGINS 03/30/85
|
||
*
|
||
* 04/06/85 CHANGE LINKED Z80SUB TO LOADED Z86SUB
|
||
* 04/07/85 ADD TEST FOR TIMER SVC AND LIBRARY SUBROUTINES
|
||
* 04/08/85 ADD TEST FOR ALLOC/DEALLOC SECONDARY MAIN MEMORY
|
||
* 04/14/85 ADD TEST FOR IN/OUT SVCS BY GETTING CURSOR ADDRESS
|
||
* 04/12/87 CONVERT FOR R2.0
|
||
* 1. DROP ALLOC/DEALLOC TESTS SINCE ALL OF DYNAMIC
|
||
* MEMORY IS ALLOCATED TO VIRTUAL FREE SPACE.
|
||
* 2. CHANGE Z86SUB.EXE TO Z86SUB.COM FORMAT WITH
|
||
* FAR RETURN AND USE NEW SVC 17 AND 15 LOGIC WHICH
|
||
* LOADS 8086 CODE FILE IN FREE MEMORY JUST LIKE 370
|
||
* LOAD DOES.
|
||
* 3. FIX SPIE ROUTINE TO RETURN PSW IN R0-R1 INSTEAD OF
|
||
* ADDDRESS OF PSW IN R1.
|
||
* 05/16/87 TEST SVC 8 FOR GANNON
|
||
* 11/11/87 EXPAND FREE MEMORY DISPLAY
|
||
* 12/26/87 ADD TEST OF ENHANCED SPIE WITH R2=A(PIE) PLUS
|
||
* CORRECT HANDLING OF PGM CHK ON EX'D INSTR.
|
||
* 01/07/88 USE COPY EQUS
|
||
*
|
||
* CONSOLE IO TEST REQUIRES ENTERING ANY CHARACTERS AND RETURN
|
||
* MEMORY TEST DISPLAYS AVAILABLE MEMORY FOR GMAIN'S
|
||
*
|
||
DEMOSVC CSECT
|
||
LR R12,R15
|
||
USING DEMOSVC,R12
|
||
LA R2,=C'TESTSVC START$'
|
||
SVC WTO
|
||
L R15,=V(PET)
|
||
BALR R14,R15
|
||
L R1,=A(1000000)
|
||
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+4
|
||
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(1000000)
|
||
SVC GMAIN
|
||
CLR R1,R5
|
||
BNE FMAINERR VERIFY MEMORY BACK TO ORIG.
|
||
LA R1,USERSPI1
|
||
SVC SPIE
|
||
LM R14,R2,=A(14,15,0,1,2)
|
||
INVOP1 DC X'0123' INVALID OP 0C1
|
||
LA R1,USERSPI2
|
||
SVC SPIE
|
||
LM R14,R2,=A(14,15,0,1,2)
|
||
INVOP2 CP =P'1',=X'00' INVALID DATA 0C7
|
||
LA R1,USERSPI3
|
||
SVC SPIE
|
||
LM R14,R2,=A(X'14ABCDEF',15,X'00ABCDEF',1,2)
|
||
INVOP3 EX 0,INVOPEX INVALID DATA 0C4
|
||
SR R1,R1
|
||
SVC SPIE
|
||
L R15,=V(USER370A)
|
||
BALR R14,R15
|
||
L R15,=V(USER370B)
|
||
BALR R14,R15
|
||
LA R1,=C'Z86SUB.COM'
|
||
SVC LOADSVC LOAD Z86SUB.COM IN FREE MEMORY
|
||
ST R0,LOADADDR
|
||
CLM R15,1,=X'00'
|
||
BNE LOADERR
|
||
L R15,LOADADDR
|
||
SVC CALLZ86 EXEC Z86SUB IN FREE MEMORY
|
||
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'TESTSVC 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
|
||
USERSPI1 EQU * 0C1 ON X'123'
|
||
LR R3,R0
|
||
LR R4,R1
|
||
LR R5,R2
|
||
USING IHAPIE,R5
|
||
LA R2,=C'USER SPIE EXIT 1 TAKEN$'
|
||
SVC WTO
|
||
CL R3,=AL2(4,1) R0 = INS LNG + INT. CODE
|
||
BNE SPIERR
|
||
CL R4,=A(INVOP1) R1 = INSTR. ADDR
|
||
BNE SPIERR
|
||
CLC PIEPSW+4(4),=A(INVOP1)
|
||
BNE SPIERR
|
||
LA R6,32(R5) R4 = PIE (SET R6 TO PICA)
|
||
CL R6,PIEPICA
|
||
BNE SPIERR
|
||
CLC PICEXT,=A(USERSPI1)
|
||
BNE SPIERR
|
||
CLC PIEGR14,=A(14)
|
||
BNE SPIERR
|
||
CLC PIEGR15,=A(15)
|
||
BNE SPIERR
|
||
CLC PIEGR0,=A(0)
|
||
BNE SPIERR
|
||
CLC PIEGR1,=A(1)
|
||
BNE SPIERR
|
||
CLC PIEGR2,=A(2)
|
||
BNE SPIERR
|
||
B 2(R4)
|
||
USERSPI2 EQU * 0C7 ON CP =P'1',=X'00'
|
||
LR R3,R0
|
||
LR R4,R1
|
||
LR R5,R2
|
||
LA R2,=C'USER SPIE EXIT 2 TAKEN$'
|
||
SVC WTO
|
||
CL R3,=AL2(6,7) R0 = INS LNG + INT. CODE
|
||
BNE SPIERR
|
||
CL R4,=A(INVOP2+6) R1 = INSTR. ADDR
|
||
BNE SPIERR
|
||
LA R6,32(R5) R4 = PIE (SET R6 TO PICA)
|
||
CL R6,0(R5) VERIFY PIE POINTS TO PICA
|
||
BNE SPIERR
|
||
CLC 12(20,R5),=A(14,15,0,1,2)
|
||
BNE SPIERR
|
||
B 0(R4)
|
||
USERSPI3 EQU * 0C5 ON EX 0,INVOPEX = MVCL 0,14
|
||
LR R3,R0
|
||
LR R4,R1
|
||
LR R5,R2
|
||
LA R2,=C'USER SPIE EXIT 3 TAKEN$'
|
||
SVC WTO
|
||
CL R3,=AL2(4,5) R0 = INS LNG + INT. CODE
|
||
BNE SPIERR
|
||
CL R4,=A(INVOP3+4) R1 = INSTR. ADDR
|
||
BNE SPIERR
|
||
LA R6,32(R5) R4 = PIE (SET R6 TO PICA)
|
||
CL R6,0(R5) VERIFY PIE POINTS TO PICA
|
||
BNE SPIERR
|
||
CLC 12(20,R5),=A(X'14ABCDEF',15,X'00ABCDEF',1,2)
|
||
BNE SPIERR
|
||
B 0(R4)
|
||
SPIERR EQU *
|
||
LA R2,=C'SPIE PSW / ADDR BAD$'
|
||
SVC WTO
|
||
SVC TRACE
|
||
DC C'BUG'
|
||
SVC EXIT
|
||
INVOPEX MVCL 0,14 FORCE 0C4 VIA EX
|
||
DC C'*** SAVE PSW ***'
|
||
SAVEPSW DC D'0'
|
||
COPY CPY/EQUREGS.CPY
|
||
COPY CPY/EQUSVCS.CPY
|
||
WRITECON EQU 202
|
||
READCON EQU 208
|
||
PORTIN EQU INBYTE
|
||
PORTOUT EQU OUTBYTE
|
||
CALLZ86 EQU USERSVC
|
||
LOADSVC EQU LOAD86
|
||
LOADADDR DC A(0) VIRTUAL LOAD ADDRESS SET BY SVC NOW
|
||
CR EQU X'0D'
|
||
PWORK DC D'0'
|
||
DMEMMSG DC C'FREE MEMORY ='
|
||
DMEM DC X'40206B2020206B202020',C'$'
|
||
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
|
||
COPY CPY/IHAPIE.CPY
|
||
END DEMOSVC
|
||
|