🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: bit.listserv.asm370
Article #1577

SVC Interface for HLL-Help Wanted

#1577
From: Paul Robinson, Contractor
Date: Fri, 04 Dec 1992 01:09
152 lines
6010 bytes
I am attempting to write a routine to allow a program in
AAEC (Australian Atomic Energy Commission) Pascal (for the
IBM-370 series computers) to be able to issue SVC instructions.
I haven't done any IBM 370 assembler in over five years, so
I'm a little rusty and having a little trouble in remembering
the concepts.  (I've always had trouble with Pointers vs.
values.)

This is what I want to do:

   TYPE REGLIST=RECORD
                 R14,R15,R0,R1,R2,R3,R4,R5,
                 R6,R7,R8,R9,R10,R11,R12:INTEGER;

   PROCEDURE SVC(Number:INTEGER; REGS:REGLIST); EXTERNAL;

Where REGLIST would be a record of 15 integers, or if it
was called from a FORTRAN program, it would be an array of
15 integers.

Where I am having trouble is in the use of the pointers
to an argument whether it's an address or a pointer to
an address.

Here is the code I have written to do what I want.  Note
that the Execute instruction is not supposed to modify
the instruction and should execute as stored, since the
instruction code will be inserted.

Note this code is obviously nonsharable, so I need to also
know if there's a way to do this using GETMAIN to allocate
an area for the executable area:
---
* THIS CODE IS WRITTEN TO ALLOW A HIGH LEVEL LANGUAGE
* WHICH CAN ACCESS THE ADDRESSES OF DATA TO BE ABLE TO
* ISSUE SUPERVISOR CALL INSTRUCTIONS, THUS GIVING A C,
* PASCAL, OR POSSIBLY FORTRAN PROGRAM, MUCH OF THE
* FUNCTIONALITY OF ASSEMBLY LANGUAGE, INCLUDING ACCESS
* TO FEATURES NOT AVAILABLE FROM THE RUN-TIME LIBRARY.
*
* USE CARE WHEN CALLING THIS PROCEDURE.  WRONG SVCS COULD
* KILL THE JOB OR DAMAGE YOUR ACCOUNT OR CAUSE THINGS YOU
* MIGHT NOT WANT TO HAPPEN.  USE AT YOUR OWN RISK, AND I'D
* APPRECIATE INFORMATION ABOUT ANY ERRORS THAT MAY APPEAR
* IN THIS CODE.
*
* PAUL ROBINSON - INTERNET: TDARCOS@MCIMAIL.COM
* NO COPYRIGHT IS CLAIMED UPON THIS CODE.
*

R0       EQU   0
R1       EQU   1
R2       EQU   2
R3       EQU   3
R4       EQU   4
R5       EQU   5
R6       EQU   6
R7       EQU   7
R8       EQU   8
R9       EQU   9
R10      EQU   10
R11      EQU   11
R12      EQU   12
R13      EQU   13
R14      EQU   14
R15      EQU   15
SVC      CSECT
         USING *,R15            HOUSEKEEPING
         STM   R14,R12,12(R13)
         LA    R5,SAVE          ADDRESS THE NEW SAVE AREA
         ST    R5,8(R13)        AND AT THE OLD ONE
         ST    R13,4(R5)        AND AT THE NEW ONE
         LR    R13,R15
*
* NOW I NEED TO GET THE VALUE OF THE FIRST ARG, THE
* SVC NUMBER TO EXECUTE.
*
         L     R5,0(R1)         GET ADDR OF ARG #1
         IC    R5,3(R5)         INTEGER HAS 0..256 IN LOW BYTE
         STC   R5,1(R13)        STORE THE SVC CODE
*                               AS BYTE 2 OF THE INSTRUCTION
         MVI   0(R13),X'0A'     0A IS THE CODE FOR 'SVC'
*
* YES, I KNOW THAT THERE IS ALREADY AN SVC AT THAT LOCATION
* BUT I'D PREFER TO BE SAFE.  ALSO, IF I CHANGE THIS CODE
* TO USE A GETMAINED AREA OF 20 WORDS, THIS WILL STILL WORK.
*
*
* NOW GET THE ADDRESS OF THE ARRAY OF 15 WORDS OR THE
* RECORD OF 15 INTEGERS.
*
         L     R5,4(R1)         GET ADDR OF ARG #2
         LA    R4,15            WE WILL PICK UP 15 WORDS
         LA    R3,12(R13)       STORE THEM AT 0@R3 AND ON
         BAL   R7,MOVE          MOVE THEM OUT
*
* NOW WE ARE GOING TO MAKE THE CALL.
*
         LM    R14,R12,12(R13)  GET THE NEW REGS VALUES
         EX    0,0(R13)         ISSUE THE SVC
*
* IF THE USER HASN'T ISSUED AN EXIT, OR A FATAL ERROR OR
* OTHERWISE KILLED THIS PROGRAM, THEN WE RETURN WHATEVER
* VALUES ARE IN THE REGISTERS AND GO BACK TO WHOEVER
* CALLED US.  (IF WE'RE STILL ALIVE....)
*
         STM   R14,R12,12(R13)  SAVE THE REG VALUES
*
* DO THE OPPOSITE OF THE EXTRACT; RELOAD THE VALUES
* THAT ARE IN THE REGISTERS TO THE 15 WORDS OF REGISTER
* VALUES.
*
         L     R3,4(R1)        GET ARG #2
         LA    R5,12(R13)      LIST OF REGISTERS
         LA    R4,15           MOVE 15 WORDS
         BAL   R7,MOVE         MOVE ARRAY BACK
*
         L     R13,SAVE+4      RETORE OLD SAVE AREA
         LM    R14,R12,12(R13)
         MVI   12(R13),X'FF'   PREVENT FORTRAN CRASH
         BR    R14             RETURN TO CALLER
*
MOVE     DC    0H'0'           EVEN ALIGNMENT
         MVC   0(4,R5),0(R3)   MOVE 4 CHARS
*
*  ANOTHER METHOD WOULD BE TO USE
*        L     R6,0(R5)
*        ST    R6,0(R3)
*  I DON'T KNOW IF THAT MIGHT BE FASTER OR WORK BETTER
* ON SOME MODELS, EXCEPT THAT THE ABOVE WILL WORK
* EVEN IF THE VALUES ARE NOT ON WORD BOUNDARIES.
*
         LA    R5,4(R5)        GET THE NEXT WORD
         LA    R3,4(R3)        AND WHERE TO STORE IT
         BCT   R4,MOVE         LOOP R4 TIMES
         BR    R7              RETURN FROM SUBROUTINE
*
         DC    0D'0'           DOUBLEWORD ALIGNMENT
*
SAVE     SVC   0               0 REPLACED BY ACTUAL NO.
         DC    H'0'
         DC    20F'0'          REST OF SAVE AREA
         END

---
I receive the IBM-MAIN list and have just started subscribing
to the IBM 370 Assembler list.  Please send any direct replies
to me at Internet address TDARCOS@MCIMAIL.COM, or at bitnet
address TDARCOS%MCIMAIL.COM@PUCC

Thank you,
Paul Robinson
Technical Details
Message-ID: <ASM370%92120320085949@UGA.CC.UGA.EDU>
Path: arc1-ca.pugleaf.net!sparky!uunet!paladin.american.edu!auvm!NIHCU.BITNET!FZC

Show Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit
X-Google-Thread: fcdcb,342f6f564b2854b9,start
X-Google-Attributes: gidfcdcb,public
X-Google-ArrivalTime: 1992-12-03 18:08:27 PST
Comments: Gated by NETNEWS@AUVM.AMERICAN.EDU
Path: arc1-ca.pugleaf.net!sparky!uunet!paladin.american.edu!auvm!NIHCU.BITNET!FZC
Message-ID: <ASM370%92120320085949@UGA.CC.UGA.EDU>
Newsgroups: bit.listserv.asm370
Date:         Thu, 3 Dec 1992 20:09:37 EST
Sender:       IBM 370 Assembly Programming Discussion List <ASM370@UGA.BITNET>
From:         "Paul Robinson, Contractor" <FZC@NIHCU.BITNET>
Subject:      SVC Interface for HLL-Help Wanted
Comments: To: ibm-main@dearn.BITNET, asm370@uga.BITNET, h198@hosp.med.umich.edu
Comments: cc: tdarcos@mcimail.com
Lines: 152