Keyboard Shortcuts
Likes
- H390-Vm
- Messages
Search
Re: TN3270 and various versions.
ZOC (commercial software for MS Windows and macOS) has a very generous evluation policy. It has 3279 132x27 wide screen and 3270 IND$FILE Transfer inside. Sample screenshot.
|
Re: Possible bug in BREXX parse instruction
I've been following this thread about possible bug in the Parse instruction, and thought I might weigh in.? While the desired behavior would be to break the parse target on literals first, my reading of the Rexx "bible" and my own experience in Rexx programming leads me to believe that such is not the case.? I learned to parse on literals first:
Arg parm_string '(' option_string Then apply blank-delimited token parsing Parse Upper Value parm_string with mode fn ft fm fx . FWIW, Jim |
¿ªÔÆÌåÓýOK. I get it. ?It isn't different C libraries. ?In modern terms there are two separate ABI (application binary interface) stacks that do not communicate between each other. Or, perhaps a better description is a way for either program to know how to call the other or how to share data with each other. Yes, a bit "yucky" to deal with to say the least. ?Some assembler somewhere will likely do the "trick". Thanks, for the explanation, Harold Grovesteen On Tue, 2022-11-08 at 14:04 -0500, Bob Bolch wrote:
|
Martin is exactly right. What I call "the C runtime environment" is the CMSCRAB control block which? is basically the R13 save area for the currently running C function, and other pointers for stack control followed by automatic?variables for the running function. One GCC program can call another, of course, but there are no read/write areas common to multiple C programs. EE can call BREXX, but only using CMSCALL (SVC 202 in VM/370). BREXX can't run a subroutine that is part of EE (without some tricks :-). Bob On Tue, Nov 8, 2022 at 11:19 AM Martin Scheffler <San-Lorenzo@...> wrote: On Tue, Nov 8, 2022 at 04:52 PM, Harold Grovesteen wrote: |
On Tue, Nov 8, 2022 at 04:52 PM, Harold Grovesteen wrote:
can you help me understand how we ended up with two distinct C runtime environments?It is the dynamic data, not the code.
IBM had to solve this problem when they made XEDIT, EXEC 2 did the job on VM/SP 1+2 |
¿ªÔÆÌåÓýOn Tue, 2022-11-08 at 08:39 -0500, Bob Bolch wrote:
As I am not in the weeds like some of you, can you help me understand how we ended up with two distinct C runtime environments? And how did you run into the same thing with BREXX? Just curious. Did we not use GCC to compile these programs? And also a little confused. Harold Grovesteen
|
Hi Martin, You are correct in that CMS calling sequences, program management structure, and interface to supervisor services know nothing about the GCC compiler runtime interface.? Enabling EE to use BREXX macros is further complicated by the fact that there are two separate and distinct C runtime environments in play (one in EE, and the other in BREXX). A similar?set of issues are present and solved in my implementation of EXECCOMM for BREXX. I do think BREXX macros for EE can be made to work, but it is going to require an in depth knowledge? of both GCC and CMS internals to make it happen. Bob Bolch On Tue, Nov 8, 2022 at 4:43 AM Martin Scheffler <San-Lorenzo@...> wrote: On Mon, Nov 7, 2022 at 02:15 AM, Martin Scheffler wrote: |
On Mon, Nov 7, 2022 at 02:15 AM, Martin Scheffler wrote:
There might be an incompatibilty of calling conventions.It is R13. AFAIK CMS does not know anything about GCCCRAB, therefore the SUBCOM entry handler does not know what R13 should point to.? @DSTAKIN expects specific things through R13, see file? DYNSTK ASSEMBLE H1???? on?? GCCCMS??? . File: DYNSTK?? ASSEMBLE H1?????????????????????????????????????????????? ? ===>???????????????????????????????????????????????????????????????????? ? ?? 11 * ? ?? 12 *??????????????????????????????????????????????????????????????? * ? ?? 13 * Assembler stubs for the dynamic stack implemetation??????????? * ? ?? 14 * These routines are called from PDPEPIL and PDPPRLG MACROs????? * ? ?? 15 * To maximise performance, as they have not got a save area they * ? ?? 16 * can use to save registers, and because Adrian's lack of??????? * ? ?? 17 * experience these use a register based linkage:???????????????? * ? ?? 18 *?? R5 for the base (called address)???????????????????????????? * ? ?? 19 *?? R15 is used by callers - should not be touched?????????????? * ? ?? 20 *?? R14 Return Address?????????????????????????????????????????? * ? ?? 21 *?? R13 Save Area / stack frame being manipulated??????????????? * ? ?? 22 *?? R12 is the callers base address - should not be touched????? * ? ?? 23 *??????????????????????????????????????????????????????????????? * ? ?? 24 * ? ?? 25 *??????????????????????????????????????????????????????????????? * ? ?? 26 DYNSTK?? CSECT???????????????????????????????????????????????????? ? ?? 27 *????????????????????????????????????????????????????????????????? ? ?? 28 * ? ?? 29 * @DSTAKIN - Into a new strack frame???????????????????????????? * ? ?? 30 * The point of this stub is to call MORESTAK when the current??? * ? ?? 31 * stack bin is used up?????????????????????????????????????????? * ? ?? 32 * ? ?? 33 * Parameters (see also this file's header)???????????????????????? ? ?? 34 *?? R9 - Stack Space requested???????????????????????????????????? ? ?? 35 * Register Usage:????????????????????????????????????????????????? ? ?? 36 *?? R11 - End of STACK BIN???????????????????????????????????????? ? ?? 37 *?? R8 - GCCCRAB?????????????????????????????????????????????????? ? ?? 38 *?? R7 - Next Available byte on the Stack (i.e. the new save area) ? ?? 39 *?? R6 - The end of the requested area in current bin (might be??? ? ?? 40 *??????? too big). The next free space after the new frame.??????? ? ?? 41 *?? R0 - Work Register???????????????????????????????????????????? ? ?? 42 *?? R1 - MORESTAK parameter pointer??????????????????????????????? ? ?? 43 *?? R2 - Saved R1 during MORESTAK Call???????????????????????????? ? ?? 44 *?? R3 - Saved R14 during MORESTAK call??????????????????????????? ? ?? 45 * Output?????????????????????????????????????????????????????????? ? ?? 46 *?? R13 - New Frame??????????????????????????????????????????????? ? ?? 47 * ? ?? 48????????? ENTRY @DSTAKIN??????????????????????????????????????????? ? ?? 49 @DSTAKIN DS??? 0H????????????????????????????????????????????????? ? ?? 50????????? USING @DSTAKIN,R5???????????????????????????????????????? ? ?? 51????????? USING CMSCRAB,R13???????????????????????????????????????? ? ?? 52????????? L???? R8,GCCCRABA????? get address of the GCCCRAB???????? ? ?? 53????????? USING GCCCRAB,R8????????????????????????????????????????? ? ?? 54 * Get the dynamic stack information pointer??????????????????????? ? ?? 55????????? L???? R11,DSTACK???? Get the dynamic stack control??????? ? ?? 56 *????????????????????????????? from R13 save area reserved word??? ? ?? 57????????? LA??? R11,0(,R11)??? Remove flag bits???????????????????? ? ?? 58 * Get new save area in R7????????????????????????????????????????? ? ?? 59????????? L???? R7,STACKNXT??? get next available byte in GCC stack ? ?? 60 *?????????????????????????????? from the CMSCRAB work area???????? ? ?? 61 * Get the address after the frame of the required size in R6?????? ? ?? 62????????? LA??? R6,0(R7,R9)??? point to end of R9 sized stack?????? ? ?? 63 * Have we enough space???????????????????????????????????????????? ? ?? 64????????? CR??? R6,R11???????? Request bigger than available??????? ? ?? 65????????? BNH?? OKSTACK???????????????????????????????????????????? ? ?? 66????????? CLI?? DSTACK,X'01'?? Check stack flags??????????????????? ? ?? 67????????? BL??? OKSTACK??????? If flag is zero, no check is done??? ? ?? 68 * Insufficient space in this stack segment, allocate some????????? ? ?? 69????????? BE??? OVERFLOW?????? If static, then overflow error?????? ? ?? 70 *????????????????????????????????????????????????????????????????? ? ?? 71 * Calling MORESTAK???????????????????????????????????????????????? ? ?? 72????????? LR??? R3,R14?????????? Return address to PDPPRLG????????? ? ?? 73????????? LR??? R2,R1??????????? Hold R1 (C function parms)???????? ? ?? 74 *????????????????????????????????????????????????????????????????? ? ?? 75 * MORESTAK needs a two word parameter list.??????????????????????? ? ?? 76 *????????? Word 1 is the address of the current stack frame??????? ? ?? 77 *????????? Word 2 is the frame size requested????????????????????? ? ?? 78????????? LR??? R6,R13?????????? Pointer to current stack frame???? ? ?? 79????????? LR??? R7,R9??????????? Frame size wanted????????????????? ? |
Re: Possible bug in BREXX parse instruction
On Sun, Nov 6, 2022 at 08:43 AM, Martin Scheffler wrote:
Remembering the rough times of EXEC 2 when there was no 'parse' instruction: I now have a real use case where I need to program around this bug. Here are some quick ideas.If you have VM/370 CE 1.1.2 up and running, look at the ASSIST EXEC on the Y minidisk, for a working example of how to get around the PARSE problem. If you don't have it, look at ASSIST_VM370_etc in the Files section for this discussion. All the files are there. ?... Mark S. |
Re: AP and/or MP support in VM/CE: Does it exist or no?
¿ªÔÆÌåÓýBertram, ? VM or rather Hercules will use more than one core, which is one reason it performs well. Remember that the 30xx boxes had, for their time high performance and sophisticated IO systems. Hercules will use an additional core to simulate the IO subsystem so if you can generate a workload that does asynchronous disk IO you are able to get at least two cores in your system running code. So whilst it might not run an AP or MP the channels, controllers and devices are emulated in a separate engine in a way that is close to real hardware. The result is that on a decent dual core PC it will blow a 308x out of the water. And don¡¯t let anyone tell you PC IO is slow. A modern SATA disk runs has intelligent buffering on the disk and does IO independently of the CPU. Then if you stick in an SSD it will just scream. If you want a genuine 308x experience you need to run it on a Raspberry PI 3 with some slow spinning disks on a USB interface. Even on this you may struggle to get things roaring along. You really need lots of users logged on¡¡. ? Dave ? Note:- there are some differences in the way IO is managed which can confuse some software. For example tapes unload instantly, and I don¡¯t believe Hercules ever returns ¡°channel busy¡± but its pretty good. ? From: [email protected] <[email protected]> On Behalf Of Bertram Moshier
Sent: 07 November 2022 03:59 To: [email protected] Subject: Re: [h390-vm] AP and/or MP support in VM/CE: Does it exist or no? ? Hi, ? Thank you for the information. I understand and agree why you didn't get the AP working. ? I have a Dell Precision 7910 with dual E5-2667 v3 and 128GB of RAM.? I just like the idea of a VM version able to use more than just a sole core. ? I wonder how VM/CE on my computer compares with past Iron (where they would match). ? What I need to do now is learn Hercules and VM/CE as well as I knew VM/SP on a 3031 in 1981-1983. ? On Sun, Nov 6, 2022, 21:20 Drew Derbyshire <swhobbit@...> wrote:
|
Re: AP and/or MP support in VM/CE: Does it exist or no?
Hi, Thank you for the information. I understand and agree why you didn't get the AP working. I have a Dell Precision 7910 with dual E5-2667 v3 and 128GB of RAM.? I just like the idea of a VM version able to use more than just a sole core. I wonder how VM/CE on my computer compares with past Iron (where they would match). What I need to do now is learn Hercules and VM/CE as well as I knew VM/SP on a 3031 in 1981-1983. On Sun, Nov 6, 2022, 21:20 Drew Derbyshire <swhobbit@...> wrote: On Sun, Oct 30, 2022 at 04:44 PM, Bertram Moshier wrote: |
Re: AP and/or MP support in VM/CE: Does it exist or no?
On Sun, Oct 30, 2022 at 04:44 PM, Bertram Moshier wrote:
The use case for an AP VM/370 servicing single CMS user is? CMS doesn't multitask; it doesn't even generally do asynchronous disk I/O.?? Also, running VM/SP in AP mode under Hercules resulted increased failed IPL instances. It wasn't worth the effort to chase it, especially since it didn't match the live 4361 UP hardware.
Working on functionality visible to user would be more rewarding to more people. -ahd- p.s. As I?dimly?recall from ~ 4 years ago,?I?tested VM/SP on the live LCM+L IBM 4361 versus the Hercules image used to develop for the 4361.? Hercules was on Raspberry Pi 3b (or 3b+, I don't know remember). The VM/SP running under Hercules had ~3 times the performance as the live hardware, and the Pi 3b is not build for speed. Using fast x86 box, a UP VM would be blazing. |
Re: How is BRexx different from Rexx?
Thank you for your information. On Sun, Nov 6, 2022, 20:18 Drew Derbyshire <swhobbit@...> wrote: If you want to test against REXX on IBM VM/SP 5, "x3270 24" and login as?guest using the instructions on the logo screen.? You can upload files using X3270/c3270's file transfer functionality. |
On Thu, Oct 27, 2022 at 05:45 PM, Martin Scheffler wrote:
What do I need for "EE goes XEDIT" ?I am stuck at the second step since several days. I have written a special debugging tool outside of EE and found problems with the C standard library. There might be an incompatibilty of calling conventions. Quote from ?? p. 347: When a program issues an SVC 202 call to a program that has become known toThe SUBCOM entry point has to be implemented in assembler because direct access to registers is needed (R0, R2 are the most important to do real work). When calling C functions from here, there are loops and crashes if using stdio functions like sprintf(). I have written some demo code where I have avoided using stdio. For further debugging I have to build (parts of) the library myself. The demo ouput below shows the recording of subcommands issued to the XTEST environment by a REXX program. No actual execution of subcommands is implemented here. EE$XTEST????????????????????????????????????????????????????????????????????????????? 00:47? ---? SUBCOM XTEST : RC from SVC202, flag 1 = 0???????????????????????????????? ? CMS bREXX 1.0.1 Jul? 5 2022?????????????????????????????????????????????????????????? ? CMS COMMAND demo demo???????????????????????????????????????????????????????????????? ? say 'Hello World :- ) '?????????????????????????????????????????????????????????????? ? address() =? CMS????????????????????????????????????????????????????????????????????? ? ?? ---? MACRO DEMO XTEST : RC from SVC202???????????????????????????????????????????? ? Macro executed -> RC = 196??????????????????????????????????????????????????????????? ? Starting macro : counter = 0 ????????????????????????????????????????????? ? A? set case m i?????????????????????????????????????????????????????????????????????? ? B? locate /mystring?????????????????????????????????????????????????????????????????? ? C? extract /curline/????????????????????????????????????????????????????????????????? ? D? input ' ) -: dlroW olleH' yas????????????????????????????????????????????????????? ? E? input 1 2 1 1????????????????????????????????????????????????????????????????????? ? F? input 2 4 4 4????????????????????????????????????????????????????????????????????? ? G? input 3 6 9 27???????????????????????????????????????????????????????????????????? ? H? input 4 8 16 256?????????????????????????????????????????????????????????????????? ? I? input 5 10 25 3125???????????????????????????????????????????????????????????????? ? J? input 6 12 36 46656??????????????????????????????????????????????????????????????? ? K? input 7 14 49 823543?????????????????????????????????????????????????????????????? ? L? input 8 16 64 16777216???????????????????????????????????????????????????????????? ? M? input 9 18 81 387420489??????????????????????????????????????????????????????????? ? N? input 10 20 100 1E+10????????????????????????????????????????????????????????????? ? ????????????????????????????????????????????????????????????????????????????????????? ? Memory dump at 000207e0:????????????????????????????????????????????????????????????? ? 000207e0 :? e7 e3 c5 e2? e3 40 40 40? 00 00 00 00? 00 00 00 00??? XTES T??? .... .... ? 000207f0 :? 00 e7 44 08? 00 e7 a6 78? 00 e7 a6 8d? 00 00 00 00??? .X¨¤. .Xw? .Xw? .... ? 00020800 :? 89 95 97 a4? a3 40 f1 f0? 40 f2 f0 40? f1 f0 f0 40??? inpu t 10? 20? 100? ? 00020810 :? f1 c5 4e f1? f0 00 f9 00? 00 00 00 00? 00 00 00 00??? 1E+1 0.9. .... .... ? 00020820 :? 00 00 00 00? 00 00 00 00? 00 00 00 00? 60 02 28 72??? .... .... .... -..? ? 00020830 :? 00 00 00 c4? 00 e7 44 18? 02 e7 44 08? 00 00 90 90??? ...D .X¨¤. .X¨¤. ..¡ã¡ã ? 00020840 :? 00 02 07 e0? 00 01 fc b0? 00 00 00 00? 00 e7 a6 78??? ...\ ..?? .... .Xw? ? 00020850 :? 00 00 32 60? 00 00 90 90? 00 01 fc b0? 00 f8 27 74??? ...- ..¡ã¡ã ..?? .8.? ? 00020860 :? 00 01 fc b0? 00 02 27 e0? 00 00 00 00? 00 00 00 00??? ..?? ...\ .... .... ? 00020870 :? 00 00 00 00? 00 00 00 00? 00 00 00 00? 00 00 00 00??? .... .... .... .... ? 00020880 :? 00 00 00 00? 00 00 00 00? 00 00 00 00? 00 00 00 00??? .... .... .... .... ? 00020890 :? 00 00 00 00? 00 00 00 00? 00 00 00 00? 00 00 00 00??? .... .... .... .... ? ????????????????????????????????????????????????????????????????????????????????????? ? sc_buff[4096] at X'000207e0': XTEST?????????????????????????????????????????????????? ? ????????????????????????????????????????????????????????????????????????????????????? ? ????????????????????????????????????????????????????????????????????????????????????? ? Hit ENTER to continue ...???????????????????????????????????????????????????????????? ? quit????????????????????????????????????????????????????????????????????????????????? ? 00:47? ---? SUBCOM XTEST : RC from SVC202, flag 0 = 0???????????????????????????????? ? counter = 14????????????????????????????????????????????????????????????????????????? ? Ready(00196); T=0.04/0.09 00:01:12??????????????????????????????????????????????????? ? ????????????????????????????????????????????????????????????????????????????????????? ? ????????????????????????????????????????????????????????????????????????????????????? ? ????????????????????????????????????????????????????????????????????????????????????? ? File: DEMO???? EXEC???? A1??????????????????????????????????????????????????????????? ? ====>???????????????????????????????????????????????????????????????????????????????? ? ??? 0 * * * Top of File * * *???????????????????????????????????????????????????????? ? ??? 1 /* REXX */????????????????????????????????????????????????????????????????????? ? ??? 2 trace n???????????????????????????????????????????????????????????????????????? ? ??? 3 parse version v???????????????????????????????????????????????????????????????? ? ??? 4 say v?????????????????????????????????????????????????????????????????????????? ? ??? 5 parse source s????????????????????????????????????????????????????????????????? ? ??? 6 say s?????????????????????????????????????????????????????????????????????????? ? ??? 7 parse arg a???????????????????????????????????????????????????????????????????? ? ??? 8 say a?????????????????????????????????????????????????????????????????????????? ? ??? 9 say "address() = " address()??????????????????????????????????????????????????? ? ?? 10???????????????????????????????????????????????????????????????????????????????? ? ?? 11 address "XTEST"???????????????????????????????????????????????????????????????? ? ?? 12 "set case m i"????????????????????????????????????????????????????????????????? ? ?? 13 "locate /mystring"????????????????????????????????????????????????????????????? ? ?? 14 "extract /curline/"???????????????????????????????????????????????????????????? ? ?? 15 "input" reverse(a)????????????????????????????????????????????????????????????? ? ?? 16???????????????????????????????????????????????????????????????????????????????? ? ?? 17 do i = 1 to 10????????????????????????????????????????????????????????????????? ? ?? 18?? "input" i i+i i*i i**i??????????????????????????????????????????????????????? ? ?? 19 end???????????????????????????????????????????????????????????????????????????? ? ?? 20 exit rc???????????????????????????????????????????????????????????????????????? ? ????????????????????????????????????????????????????????????????????????????????????? ? ????????????????????????????????????????????????????????????????????????????????????? ? ????????????????????????????????????????????????????????????????????????????????????? ? withtct 27, 2022 at 05: |
Re: Possible bug in BREXX parse instruction
Remembering the rough times of EXEC 2 when there was no 'parse' instruction: I now have a real use case where I need to program around this bug. Here are some quick ideas.
File: IND$FILE EXEC???? A1???????????????????????????????????????????????????????????????? ====>??????????????????????????????????????????????????????????????????????????????????? ? ??? 0 * * * Top of File * * *??????????????????????????????????????????????????????????? ? ??? 1 /* REXX */???????????????????????????????????????????????????????????????????????? ? ??? 2??????????????????????????????????????????????????????????????????????????????????? ? ??? 3 /*???????????????????????????????????????????????????????????????????????????????? ? ??? 4 parse upper arg mode fn ft fm fx '(' options?????????????????????????????????????? ? ??? 5 */???????????????????????????????????????????????????????????????????????????????? ? ??? 6??????????????????????????????????????????????????????????????????????????????????? ? ??? 7 /*???????????????????????????????????????????????????????????????????????????????? ? ??? 8?? Bug hurts: https://github.com/vlachoudis/brexx/issues/8????????????????????????? ? ??? 9????????????? /g/h390-vm/topic/possible_bug_in_brexx_parse/87676003 ?? 10 */???????????????????????????????????????????????????????????????????????????????? ? ?? 11??????????????????????????????????????????????????????????????????????????????????? ? ?? 12 parse upper arg argstring????????????????????????????????????????????????????????? ? ?? 13 pos_l_bracket = pos('(',argstring)???????????????????????????????????????????????? ? ?? 14 if pos_l_bracket = 0 then do?????????????????????????????????????????????????????? ? ?? 15?? options = ""???????????????????????????????????????????????????????????????????? ? ?? 16?? args??? = argstring????????????????????????????????????????????????????????????? ? ?? 17 end??????????????????????????????????????????????????????????????????????????????? ? ?? 18 else do??????????????????????????????????????????????????????????????????????????? ? ?? 19?? options = substr(argstring,??? pos_l_bracket+1)????????????????????????????????? ? ?? 20?? args??? = substr(argstring, 1, pos_l_bracket-1)????????????????????????????????? ? ?? 21 end??????????????????????????????????????????????????????????????????????????????? ? ?? 22??????????????????????????????????????????????????????????????????????????????????? ? ?? 23 parse var args mode fn ft fm fx??????????????????????????????????????????????????? ? |
Re: Not clear on tape with VM/CE
Hi Bob, Some said the nucleus extensions in VM/CE had tape parameters simiar to VMFPLC2.? I am wanting to know more on this and as the VM/CE nucleus extensions. Bert On Fri, Nov 4, 2022, 17:10 Bob Bolch <Bob@...> wrote:
|
Re: Not clear on tape with VM/CE
I have only ever called VMFPLC2 as a command from REXX programs. I never heard of any nucleus extensions for VMFPLC2. Bob Bolch On Fri, Nov 4, 2022, 5:28 PM Bertram Moshier <herc370390vm@...> wrote:
|