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 $' 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