Discussion:
[hercules-390] SATK bare metal - Read 3270 (was zArch POP - Assigned Storage "grey areas" x200-x0FFF)
Mike Stramba mikestramba@gmail.com [hercules-390]
2018-08-03 10:36:57 UTC
Permalink
On 8/2/18, ''Fish' (David B. Trout)' ***@gmail.com
[hercules-390] <hercules-
I've been using Harold Grovesteen's most excellent SATK ASMA (SATK = Stand
Alone Tool Kit, ASMA = A Small Mainframe Assembler) for a while now and
simply cannot praise it enough. I use it for all of my Hercules integrity
test cases now (to verify proper functioning of instructions, devices, etc).
The macros he provides makes it trivially easy to perform I/O in either old
parallel channel S/370 mode or new s/390 z/Arch ESA I/O mode. His code
handles the details so you can concentrate on your test code.
I've "r'd" together :) a basic program to write / read one field from
a 3270 in ESAME / z/arch mode.

----------------------
The POP is not very helpful about PRIMARY STATUS / SECONDARY status,
the text is basically identical for both (aside from which bit is
set).

If you can post SATK source for writing one field to a 3270 and then
reading it, I'll run it through SATK, hercules, and see how it
compares to my program.

Mike

*** An example INPUT program for SATK would be a nice addtion ** :)
Mike Stramba mikestramba@gmail.com [hercules-390]
2018-08-05 01:06:04 UTC
Permalink
Well I've managed to modify the "hello.asm" program to OUTPUT to a 3270.

It was pretty simple, just add a new 3270 specific CCW (3270 data
stream orders), and comment out the old CCW (3215 specific).

As for INPUT .... that is proving to be more of a "challenge".

The requirement for multiple macros, dsects, and USING clauses / base
registers is VERY CONFUSING.

Mike
Post by Mike Stramba ***@gmail.com [hercules-390]
[hercules-390] <hercules-
I've been using Harold Grovesteen's most excellent SATK ASMA (SATK = Stand
Alone Tool Kit, ASMA = A Small Mainframe Assembler) for a while now and
simply cannot praise it enough. I use it for all of my Hercules integrity
test cases now (to verify proper functioning of instructions, devices, etc).
The macros he provides makes it trivially easy to perform I/O in either old
parallel channel S/370 mode or new s/390 z/Arch ESA I/O mode. His code
handles the details so you can concentrate on your test code.
I've "r'd" together :) a basic program to write / read one field from
a 3270 in ESAME / z/arch mode.
----------------------
The POP is not very helpful about PRIMARY STATUS / SECONDARY status,
the text is basically identical for both (aside from which bit is
set).
If you can post SATK source for writing one field to a 3270 and then
reading it, I'll run it through SATK, hercules, and see how it
compares to my program.
Mike
*** An example INPUT program for SATK would be a nice addtion ** :)
Gerhard Postpischil gerhardp@charter.net [hercules-390]
2018-08-05 11:52:56 UTC
Permalink
Post by Mike Stramba ***@gmail.com [hercules-390]
Well I've managed to modify the "hello.asm" program to OUTPUT to a 3270.
It was pretty simple, just add a new 3270 specific CCW (3270 data
stream orders), and comment out the old CCW (3215 specific).
As for INPUT .... that is proving to be more of a "challenge".
The requirement for multiple macros, dsects, and USING clauses / base
registers is VERY CONFUSING.
If you're already using CCWs for output, doing input shouldn't be that
hard. The gotcha is handling interrupts. If you use Read Modified or
similar, the I/O won't complete until there is input. An alternative is
using Read in a loop, essentially polling for a response.

You may also find some surprises handling multiple fields; blanks and
hex zero are treated differently. There are also minor differences in
how different 3270 "compatible" CRTs behave.

Gerhard Postpischil
Bradford, VT

---
This email has been checked for viruses by AVG.
https://www.avg.com
'\'Fish\' (David B. Trout)' david.b.trout@gmail.com [hercules-390]
2018-08-05 13:33:42 UTC
Permalink
Well I've managed to modify the "hello.asm" program to
OUTPUT to a 3270.
[...]
As for INPUT .... that is proving to be more of a "challenge".
[...]
An alternative is using Read in a loop, essentially polling
for a response.
Polling I/O is *very* poor form and *strongly* discouraged.

The way DOS/VS(E)'s BTAM does it makes infinitely more sense: intercept(*) all attention interrupts for the device in question and when one occurs, THEN and ONLY then issue the read I/O (because only then are you guaranteed to have something to read).

------
(*) DOS/VS(E) supports a "Channel Appendage" flag in its CCB (Channel Control Block, sort of like an ORB/IRB I guess) that causes a channel appendage routine (that you have to code yourself if not using BTAM) to be called whenever anything happens for your device (I/O started, I/O completed/interrupt, etc).

When your mainline code want to read from the 3270, the channel appendage routine gets called and it simply defers the actual read I/O until later (i.e. it doesn't do the read but rather just sets a flag). Only when the attention interrupt finally arrives for the device does the read I/O then actually occur. And only when THAT I/O (i.e. the actual read I/O) eventually completes is the original mainline's read I/O request posted as being complete.

So with BTAM you just write and read to/from your 3270 device like normal, just like you do for, say, a tape drive, and the BTAM Channel Appendage logic handles all the "unusualness" of 3270 I/O for you automatically (making it *much* easier to write 3270 programs).

DISCLAIMER: the above is from memory and might not be completely correct. It should be close though!
--
"Fish" (David B. Trout)
Software Development Laboratories
http://www.softdevlabs.com
mail: ***@softdevlabs.com
Gerhard Postpischil gerhardp@charter.net [hercules-390]
2018-08-05 16:51:22 UTC
Permalink
Post by '\'Fish\' (David B. Trout)' ***@gmail.com [hercules-390]
Polling I/O is *very* poor form and *strongly* discouraged.
The way DOS/VS(E)'s BTAM does it makes infinitely more sense: intercept(*) all attention interrupts for the device in question and when one occurs, THEN and ONLY then issue the read I/O (because only then are you guaranteed to have something to read
If he's writing for bare metal, then BTAM may not be an option. Also IBM
discontinued free BTAM in the eighties, and most installations started
using VTAM rather than pay for BTAM. Doing some function similar to BTAM
requires authorization (Under MVS, BTAM proper uses UCB flags).

While polling may be poor form, it can be done by unauthorized programs,
and for a single CRT and I/O every second or so is negligible overhead
on a modern system.

Gerhard Postpischil
Bradford, VT

---
This email has been checked for viruses by AVG.
https://www.avg.com
'\'Fish\' (David B. Trout)' david.b.trout@gmail.com [hercules-390]
2018-08-06 04:38:08 UTC
Permalink
Post by Gerhard Postpischil ***@charter.net [hercules-390]
Post by '\'Fish\' (David B. Trout)' ***@gmail.com [hercules-390]
Polling I/O is *very* poor form and *strongly* discouraged.
intercept(*) all attention interrupts for the device in question
and when one occurs, THEN and ONLY then issue the read I/O
(because only then are you guaranteed to have something to read
If he's writing for bare metal, then BTAM may not be an option.
Well DUH! :)

I wasn't suggesting he use BTAM, only that the same/similar technique should be used.
Post by Gerhard Postpischil ***@charter.net [hercules-390]
Also IBM discontinued free BTAM in the eighties, and most
installations started using VTAM rather than pay for BTAM.
Doing some function similar to BTAM requires authorization
(Under MVS, BTAM proper uses UCB flags).
Which, if he's writing for bare metal, is immaterial.


[...]
Post by Gerhard Postpischil ***@charter.net [hercules-390]
and for a single CRT and I/O every second or so is negligible
overhead on a modern system.
Quite true. And it's certainly the easiest to implement from a programmatic (code footprint) point of view.

But my point was that polling isn't the proper way to read from a device that only provides input "on occasion". You should instead wait for it to indicate there's input available, and only *then* try to read it. 3270 devices do that causing an attention interrupt whenever an "attention generating key" is pressed: enter, clear, pa1-3, pf1-24, etc. Until that occurs, reading from the device is premature and a waste of time and computing resources.

I mean, if he's writing for bare metal to learn how mainframes work, then he should learn how to do it right (correctly), yes? Then he might better understand and appreciate the code in BTAM and VTAM, etc, that does all of that for you.

Anyway, no big deal. Just putting in my 2 cents, that's all.
--
"Fish" (David B. Trout)
Software Development Laboratories
http://www.softdevlabs.com
mail: ***@softdevlabs.com
Mike Stramba mikestramba@gmail.com [hercules-390]
2018-08-06 04:46:58 UTC
Permalink
Fish,

I sure would like to see your "trivial" example of a 3270 write /
read / (write back input), code example.

I'm still trying to get the SATK "pieces" working together. :/

You can start with the following code, from which I'm getting a "could
not resolve implied base register for location: ABS:0x3259 .. error"

Mike

------------------------------
* Copyright (C) 2015 Harold Grovesteen

TITLE '3270-read-write-0.01a - 3270 Generic Mainframe
Bare-Metal Hello World Program'
* ----------------------------------------------------------------
* Aug 2 2018 - Mike Stramba ***@gmail.com
*
* modified from 'hello.asm' (satk samples)
* - added ccw for 3270
* - rest of program is unchanged from the original '3215'version
*
* see H32CCW, and H32MSG DC X'C3'
* --------------------------------------------------------------------
*
PRINT OFF
COPY 'satk.mac'
PRINT ON
* ----------------------------------------------------------
* Macro for conditionally including an architecture change or not
*
*** mike commented
* MACRO
*&LABEL SETARCH &BASE
* GBLA &ARCHLVL Current architecture level
* AIF ('&LABEL' EQ '').NOLBL
*&LABEL DS 0H
*.NOLBL ANOP
* AIF (&ARCHLVL LT 8).DONE
* AIF ('&BASE' EQ '').NOCLR
* ZEROLH &BASE,1 Make sure bit 32 in 64-bit register is
zero after change
*.NOCLR ANOP
* ZARCH 6,5,SUCCESS=INZMODE,FAIL=FAIL Change to 64-bit mode if capable
*INZMODE DS 0H
*.DONE MEND
*--------------------------------------------------
*
* ARCHLVL ZARCH=NO Mike commented
* mike ----
* ARCHIND Mike not needed ... ARCHLVL defaults to
running it ?
ARCHLVL ZARCH=YES,SET=9,MNOTE=YES MIKE
* ------
*
DSECTS NAME=(ASA,IO,IOCB)
*
* Initiate the LOWCORE CSECT in the LOAD region with location counter at 0
PRINT DATA
LOWCORE ASALOAD REGION=LOAD
* Create IPL PSW
ASAIPL IA=HELLO
*
* The Hello World program itself...
* Address Mode: 24
* Register Usage:
* R1 I/O device used by ENADEV and RAWIO macros
* R2 Program base register
* R3 IOCB pointer for ENADEV and RAWIO macros
* R4 IO work register used by ENADEV and RAWIO
* z/Architecture systems only:
* R5 Used for CPU register when signaling architecture change
* R6,R7 Signaling registers when changing architecture
*
*
HELLO START X'2000',PROGRAM Initiates the HELLO CSECT in the PROGRAM region
USING ASA,0 Allow the program to address assigned
storage directly
$BASR R2,0 Establish the program's base register
USING *,R2 ..and inform the assembler
MVC MIKJUNK3,MIKJUNK3 mike assembler addressing test
MVC MIKJUNK1,MIKJUNK2 mike assembler addressing test
B MIKSKIP
MIKJUNK3 DS X
MIKSKIP EQU *
*
* ARCHLVL ZARCH=YES,SET=9,MNOTE=YES MIKE zop
*
* SETARCH 2 Cleanly enter 64-bit mode if that makes
sense * mike commented
*
LA R3,HELLOIO Provide access to the IOCB
USING IOCB,R3 ..and inform the assembler
MVC MIKJUNK3,MIKJUNK3
MVC MIKJUNK1,MIKJUNK2 mike assembler addressing test
*
* Display the hello world message on the console.
* Step 1 - Initialize the CPU for I/O operations
IOINIT
*
* Step 2 - Enable the device, making it ready for use
ENADEV DISPLAY,FAIL,REG=4
*
* Step 3 - Output the hello world message on the console
*
DISPLAY RAWIO R4,FAIL=FAIL,CERR=FAIL,UERR=FAIL
*
* Mike
* LA R3,READ3270IOCB Provide access to the IOCB
* USING IOCB,R3 ..and inform the assembler
*
LA R8,READ3270IOCB Provide access to the IOCB
USING IOCB,R8 ..and inform the assembler
MVC MIKJUNK1,MIKJUNK2 mike assembler addressing test
* USING *,R2
RAWAIT R8,FAIL=RAWAITFAIL mike wait for
ATTENTION from 3270
RAWIO R4,FAIL=FAIL,CERR=FAIL,UERR=FAIL mike READ FROM 3270
MVC GOTAGE,INBUFF+6
* Now output the input
LA R8,HELLOIO Provide access to the IOCB
USING IOCB,R8 ..and inform the assembler
MVC MIKJUNK1,MIKJUNK2 mike assembler addressing test
RAWIO R4,FAIL=FAIL,CERR=FAIL,UERR=FAIL
*
* Step 4 - Terminate the bare-metal program
LPSW GOODPSW Terminate with indication of success
*
* Any error arrives here
*
*mike
RAWAITFAIL LPSW WAITFAILPSW
FAIL LPSW FAILPSW Terminate with indication of failure
*
* Data and structures used by the program
*
* Structure used by RAWIO identifying the device and operation being performed
* HELLOIO IOCB X'00F',CCW=HELLOCCW
*
HELLOIO IOCB X'00F',CCW=H32CCW
*
*
* mike
*
READ3270IOCB IOCB X'00F',CCW=READMOD,WAIT
READMOD CCW READMD,INBUFF,0,INBUFLEN
INBUFF DS (43*80)X
*FIELD1 DS 3
INBUFLEN EQU *-INBUFF
*
*
*HELLO32 IOCB X'00F',CCW=H32CCW
*
* Channel program that displays a message on a console with carriage return
WRITECR EQU X'09'
ERAWRALT EQU X'0D'
READMD EQU X'06'
*HELLOCCW CCW WRITECR,HELLOMSG,0,HELLOLEN
*
H32CCW CCW ERAWRALT,H32MSG,0,HELLO32LEN
*
* The actual Hello World message
* HELLOMSG DC C'Hello World from a bare-metal mainframe program'
* HELLOLEN EQU *-HELLOMSG
*
MIKJUNK1 DS X
MIKJUNK2 DS X
* mike 3270 Hello Screen
*
H32MSG DC X'C3'
*
DC X'11',X'0024'
DC X'1D',X'60',C'LSSM'
*
DC X'11',X'00AA'
DC X'1D',X'60',C'A test from the Satk assembler !'
*
DC X'11',X'019A'
DC X'1D',X'60',C'Age:'
*
DC X'1D',X'10',X'13',C'___'
*
DC X'11',X'0200'
DC X'1D',X'60',C'Got:'
GOTAGE DC C'XXX'
* DC X'11',X'0250'
DC X'1D',X'60'
YRB DC C'YYYY'
*
DC X'11',X'0D20',C'3270-read-write-0.01'
DC X'11',X'0D40',C'Mike Stramba 2018-Aug-4'
HELLO32LEN EQU *-H32MSG

* Termination PSWs
*
* mike
WAITFAILPSW DWAIT CODE=999
*
FAILPSW DWAIT I/O failed
GOODPSW DWAITEND Hello World succeeded
REGEQU
END HELLO

---------------------------------- err.txt ---------------------------
Gerhard Postpischil gerhardp@charter.net [hercules-390]
2018-08-06 12:18:28 UTC
Permalink
Post by Mike Stramba ***@gmail.com [hercules-390]
You can start with the following code, from which I'm getting a "could
not resolve implied base register for location: ABS:0x3259 .. error"
I'm not familiar with SATK, and an assembly listing should make it
easier to identify your problem. Presumably you have a reference or
expansion at x3259, and no base register for it, or the datum is in the
wrong place.

There are other problems I see:

Read type CCWs should have the "silly" bit (SLI) on, since you cannot
predict the exact input length. And for a 3270, the input buffer needs
to be long enough to hold the entire screen plus the prefix and control
data. For a 24*80 screen (1920 characters) I use 4K with longer than
required or expected.

Erase/Write Alternate is not available for model 2 CRTs. I'm not sure
how Hercules handles that. To use a larger size, you need to be able to
test the hardware options (usually done by Write Structured Field/Query
Reply), but you need to be able to field the error from an unacceptable
CCW unless SATK handles that.

The classical 3270 did not accept binary values below x'40', but
required all of them (except orders) to be recoded using translation.
Binary low values are required in some orders. I recommend reading the
3270 Data Stream manual.

ZONETR DC X'40C1C2C3C4C5C6C7C8C94A4B4C4D4E4F' 0 - 15
DC X'50D1D2D3D4D5D6D7D8D95A5B5C5D5E5F' 16 - 31
DC X'6061E2E3E4E5E6E7E8E96A6B6C6D6E6F' 32 - 47
DC X'F0F1F2F3F4F5F6F7F8F97A7B7C7D7E7F' 48 - 63
Post by Mike Stramba ***@gmail.com [hercules-390]
READ3270IOCB IOCB X'00F',CCW=READMOD,WAIT
READMOD CCW READMD,INBUFF,0,INBUFLEN
that should be CCW READMD,INBUFF,X'20',INBUFLEN

and you need the result CSW to calculate the input length
Post by Mike Stramba ***@gmail.com [hercules-390]
INBUFF DS (43*80)X
*FIELD1 DS 3
INBUFLEN EQU *-INBUFF
Note that 43*80 is too short for a model 4, at a minimum, there is a
3-byte prefix (Function key code[1], cursor address[2], and optional
fields (x'11',field address[2], and the data). Note that field data
handling is model dependent for handling of zeroes vs. blanks.
Post by Mike Stramba ***@gmail.com [hercules-390]
H32MSG DC X'C3'
*
DC X'11',X'0024'
should be '40D4'
Post by Mike Stramba ***@gmail.com [hercules-390]
DC X'11',X'0200'
should be 'C240'
Post by Mike Stramba ***@gmail.com [hercules-390]
* DC X'11',X'0250'
DC X'1D',X'60'
YRB DC C'YYYY'
Note that addresses are feature dependent. In 14 and 16-bit mode, they
are the binary halfword displacement, but for basic 3270, the low six
bits are placed in the right address byte, and the high bits in the
first, then both are convert to printable form.


Gerhard Postpischil
Bradford, VT

---
This email has been checked for viruses by AVG.
https://www.avg.com
Harold Grovesteen h.grovsteen@tx.rr.com [hercules-390]
2018-08-06 15:12:51 UTC
Permalink
On Mon, 2018-08-06 at 08:18 -0400, Gerhard Postpischil
390] 
Post by Mike Stramba ***@gmail.com [hercules-390]
You can start with the following code, from which I'm getting a "could
not resolve implied base register for location: ABS:0x3259 .. error"
I'm not familiar with SATK, and an assembly listing should make it 
easier to identify your problem. Presumably you have a reference or 
expansion at x3259, and no base register for it, or the datum is in
the 
wrong place.
 
Gerhard,

I have reviewed the assembly listing that Mike sent to me.  You are
correct.  He needs another base register.  The fields are beyond the
4096 bytes of a single base register.

Your other input is also very valid.  Mike would do well to review it.
 These are all considerations he will need to address if he pursues
this further.  Good advice!

Harold Grovesteen
Mike Stramba mikestramba@gmail.com [hercules-390]
2018-08-06 19:28:55 UTC
Permalink
Gerhard,

Thanks for all the great info !

Mike
Post by Gerhard Postpischil ***@charter.net [hercules-390]
Post by Mike Stramba ***@gmail.com [hercules-390]
You can start with the following code, from which I'm getting a "could
not resolve implied base register for location: ABS:0x3259 .. error"
I'm not familiar with SATK, and an assembly listing should make it
easier to identify your problem. Presumably you have a reference or
expansion at x3259, and no base register for it, or the datum is in the
wrong place.
Read type CCWs should have the "silly" bit (SLI) on, since you cannot
predict the exact input length. And for a 3270, the input buffer needs
to be long enough to hold the entire screen plus the prefix and control
data. For a 24*80 screen (1920 characters) I use 4K with longer than
required or expected.
Erase/Write Alternate is not available for model 2 CRTs. I'm not sure
how Hercules handles that. To use a larger size, you need to be able to
test the hardware options (usually done by Write Structured Field/Query
Reply), but you need to be able to field the error from an unacceptable
CCW unless SATK handles that.
The classical 3270 did not accept binary values below x'40', but
required all of them (except orders) to be recoded using translation.
Binary low values are required in some orders. I recommend reading the
3270 Data Stream manual.
ZONETR DC X'40C1C2C3C4C5C6C7C8C94A4B4C4D4E4F' 0 - 15
DC X'50D1D2D3D4D5D6D7D8D95A5B5C5D5E5F' 16 - 31
DC X'6061E2E3E4E5E6E7E8E96A6B6C6D6E6F' 32 - 47
DC X'F0F1F2F3F4F5F6F7F8F97A7B7C7D7E7F' 48 - 63
Post by Mike Stramba ***@gmail.com [hercules-390]
READ3270IOCB IOCB X'00F',CCW=READMOD,WAIT
READMOD CCW READMD,INBUFF,0,INBUFLEN
that should be CCW READMD,INBUFF,X'20',INBUFLEN
and you need the result CSW to calculate the input length
Post by Mike Stramba ***@gmail.com [hercules-390]
INBUFF DS (43*80)X
*FIELD1 DS 3
INBUFLEN EQU *-INBUFF
Note that 43*80 is too short for a model 4, at a minimum, there is a
3-byte prefix (Function key code[1], cursor address[2], and optional
fields (x'11',field address[2], and the data). Note that field data
handling is model dependent for handling of zeroes vs. blanks.
Post by Mike Stramba ***@gmail.com [hercules-390]
H32MSG DC X'C3'
*
DC X'11',X'0024'
should be '40D4'
Post by Mike Stramba ***@gmail.com [hercules-390]
DC X'11',X'0200'
should be 'C240'
Post by Mike Stramba ***@gmail.com [hercules-390]
* DC X'11',X'0250'
DC X'1D',X'60'
YRB DC C'YYYY'
Note that addresses are feature dependent. In 14 and 16-bit mode, they
are the binary halfword displacement, but for basic 3270, the low six
bits are placed in the right address byte, and the high bits in the
first, then both are convert to printable form.
Gerhard Postpischil
Bradford, VT
---
This email has been checked for viruses by AVG.
https://www.avg.com
Mike Stramba mikestramba@gmail.com [hercules-390]
2018-08-06 19:35:45 UTC
Permalink
Gerhard,

Thanks for all the great info !

Mike
Post by Gerhard Postpischil ***@charter.net [hercules-390]
Post by Mike Stramba ***@gmail.com [hercules-390]
You can start with the following code, from which I'm getting a "could
not resolve implied base register for location: ABS:0x3259 .. error"
I'm not familiar with SATK, and an assembly listing should make it
easier to identify your problem. Presumably you have a reference or
expansion at x3259, and no base register for it, or the datum is in the
wrong place.
Read type CCWs should have the "silly" bit (SLI) on, since you cannot
predict the exact input length. And for a 3270, the input buffer needs
to be long enough to hold the entire screen plus the prefix and control
data. For a 24*80 screen (1920 characters) I use 4K with longer than
required or expected.
Erase/Write Alternate is not available for model 2 CRTs. I'm not sure
how Hercules handles that. To use a larger size, you need to be able to
test the hardware options (usually done by Write Structured Field/Query
Reply), but you need to be able to field the error from an unacceptable
CCW unless SATK handles that.
The classical 3270 did not accept binary values below x'40', but
required all of them (except orders) to be recoded using translation.
Binary low values are required in some orders. I recommend reading the
3270 Data Stream manual.
ZONETR DC X'40C1C2C3C4C5C6C7C8C94A4B4C4D4E4F' 0 - 15
DC X'50D1D2D3D4D5D6D7D8D95A5B5C5D5E5F' 16 - 31
DC X'6061E2E3E4E5E6E7E8E96A6B6C6D6E6F' 32 - 47
DC X'F0F1F2F3F4F5F6F7F8F97A7B7C7D7E7F' 48 - 63
Post by Mike Stramba ***@gmail.com [hercules-390]
READ3270IOCB IOCB X'00F',CCW=READMOD,WAIT
READMOD CCW READMD,INBUFF,0,INBUFLEN
that should be CCW READMD,INBUFF,X'20',INBUFLEN
and you need the result CSW to calculate the input length
Post by Mike Stramba ***@gmail.com [hercules-390]
INBUFF DS (43*80)X
*FIELD1 DS 3
INBUFLEN EQU *-INBUFF
Note that 43*80 is too short for a model 4, at a minimum, there is a
3-byte prefix (Function key code[1], cursor address[2], and optional
fields (x'11',field address[2], and the data). Note that field data
handling is model dependent for handling of zeroes vs. blanks.
Post by Mike Stramba ***@gmail.com [hercules-390]
H32MSG DC X'C3'
*
DC X'11',X'0024'
should be '40D4'
Post by Mike Stramba ***@gmail.com [hercules-390]
DC X'11',X'0200'
should be 'C240'
Post by Mike Stramba ***@gmail.com [hercules-390]
* DC X'11',X'0250'
DC X'1D',X'60'
YRB DC C'YYYY'
Note that addresses are feature dependent. In 14 and 16-bit mode, they
are the binary halfword displacement, but for basic 3270, the low six
bits are placed in the right address byte, and the high bits in the
first, then both are convert to printable form.
Gerhard Postpischil
Bradford, VT
---
This email has been checked for viruses by AVG.
https://www.avg.com
kerravon86@yahoo.com.au [hercules-390]
2018-08-06 16:28:04 UTC
Permalink
I sure would like to see your "trivial" example of a 3270 write /
read / (write back input), code example.
Are you sure you wouldn't prefer to read/write
from a 3215 instead so that you can use the
Hercules integrated console and/or Telnet?
I think that should be simpler.

BFN. Paul.
Mike Stramba mikestramba@gmail.com [hercules-390]
2018-08-06 19:26:33 UTC
Permalink
Post by ***@yahoo.com.au [hercules-390]
I sure would like to see your "trivial" example of a 3270 write /
read / (write back input), code example.
Are you sure you wouldn't prefer to read/write
from a 3215 instead so that you can use the
Hercules integrated console and/or Telnet?
I think that should be simpler.
Not any simpler *up to the point of parsing the input* (yes 3270
stream input is much more complex than 3215 input)

Same ATT interrupt, set up ISR etc.

Only the returned data parsing is simpler with the 3215 ... for
"simple" expected data.

I haven't started coding my 3270 returned-data-parsing routine yet.

But thanks for reminding me, I just coded up a simple (370 version)
read from integrated-3215
program :)

Mike
Dave McGuire Mcguire@neurotica.com [hercules-390]
2018-08-06 19:30:21 UTC
Permalink
Post by Mike Stramba ***@gmail.com [hercules-390]
Post by ***@yahoo.com.au [hercules-390]
I sure would like to see your "trivial" example of a 3270 write /
read / (write back input), code example.
Are you sure you wouldn't prefer to read/write
from a 3215 instead so that you can use the
Hercules integrated console and/or Telnet?
I think that should be simpler.
Not any simpler *up to the point of parsing the input* (yes 3270
stream input is much more complex than 3215 input)
Same ATT interrupt, set up ISR etc.
Only the returned data parsing is simpler with the 3215 ... for
"simple" expected data.
I haven't started coding my 3270 returned-data-parsing routine yet.
But thanks for reminding me, I just coded up a simple (370 version)
read from integrated-3215
program :)
It also won't run on real hardware, at least none that we have here.
No 3215s have found there way to us yet. But we're swimming in 3174s,
and have several (but need more) terminals.

-Dave
--
Dave McGuire, AK4HZ
New Kensington, PA
'Dave Wade' dave.g4ugm@gmail.com [hercules-390]
2018-08-06 21:56:15 UTC
Permalink
I think this page might be helpful...

http://perso.wanadoo.es/rptv2005/saPROGS/en/index.html

it has standalone games

Dave
-----Original Message-----
Sent: 06 August 2018 20:30
Subject: Re: [hercules-390] Re: SATK bare metal - Read 3270 (was zArch POP -
Assigned Storage "grey areas" x200-x0FFF)
Post by Mike Stramba ***@gmail.com [hercules-390]
I sure would like to see your "trivial" example of a 3270 write /
read / (write back input), code example.
Are you sure you wouldn't prefer to read/write from a 3215 instead so
that you can use the Hercules integrated console and/or Telnet?
I think that should be simpler.
Not any simpler *up to the point of parsing the input* (yes 3270
stream input is much more complex than 3215 input)
Same ATT interrupt, set up ISR etc.
Only the returned data parsing is simpler with the 3215 ... for
"simple" expected data.
I haven't started coding my 3270 returned-data-parsing routine yet.
But thanks for reminding me, I just coded up a simple (370 version)
read from integrated-3215 program :)
It also won't run on real hardware, at least none that we have here.
No 3215s have found there way to us yet. But we're swimming in 3174s, and
have several (but need more) terminals.
-Dave
--
Dave McGuire, AK4HZ
New Kensington, PA
------------------------------------
------------------------------------
http://groups.yahoo.com/group/hercules-390
http://www.hercules-390.org
------------------------------------
Yahoo Groups Links
Mike Stramba mikestramba@gmail.com [hercules-390]
2018-08-07 13:51:52 UTC
Permalink
Post by 'Dave Wade' ***@gmail.com [hercules-390]
I think this page might be helpful...
http://perso.wanadoo.es/rptv2005/saPROGS/en/index.html
it has standalone games
Thanks for the "reminder" .... I had downloaded that awhile ago, and
forgot I had it :)

Terabyte sized drives are almost like your own private internet :)

Mike
Gregg Levine gregg.drwho8@gmail.com [hercules-390]
2018-08-08 05:05:44 UTC
Permalink
Hello!
Um no. These groups do not work that way. Should you really want to do
that, please select the appropriate line on the inevitable footer
found at the bottom of each of these messages.

I strongly suggest that you stay with us for a while longer, as you'll
be able to get your non-OS specific questions answered here more
readily then asking them inside the group for that OS.
-----
Gregg C Levine ***@gmail.com
"This signature fought the Time Wars, time and again."


On Tue, Aug 7, 2018 at 10:48 AM, '***@DonnaPaul.net'
***@donnapaul.net [hercules-390] <hercules-***@yahoogroups.com>
wrote:
(Previous message deleted!)
________________________________
'Bill Turner, WB4ALM' wb4alm@arrl.net [hercules-390]
2018-08-08 13:23:30 UTC
Permalink
No, there are worst --- google and the other search engines index the
internet.
You are on your own with terabyte drives.  (Especially when one of them
is on the shelf, and not currently pugged in...)
/s/ Bill Turner, wb4alm
Thanks for the "reminder" .... I had downloaded that awhile ago, and
forgot I had it :)
Terabyte sized drives are almost like your own private internet :)
Mike
kerravon86@yahoo.com.au [hercules-390]
2018-08-06 20:24:55 UTC
Permalink
Post by Mike Stramba ***@gmail.com [hercules-390]
Post by ***@yahoo.com.au [hercules-390]
Are you sure you wouldn't prefer to read/write
from a 3215 instead so that you can use the
Hercules integrated console and/or Telnet?
I think that should be simpler.
Not any simpler *up to the point of parsing the input* (yes 3270
stream input is much more complex than 3215 input)
Same ATT interrupt, set up ISR etc.
I'm not sure about the vocabulary, but the
code I am using is here:

https://sourceforge.net/p/pdos/gitcode/ci/master/tree/pdpclib/sapsupa.asm

@@CONSRD - read from console

And it is public domain so you are free to
do whatever you want with it.

BFN. Paul.
'\'Fish\' (David B. Trout)' david.b.trout@gmail.com [hercules-390]
2018-08-06 13:34:23 UTC
Permalink
Post by Mike Stramba ***@gmail.com [hercules-390]
Fish,
I sure would like to see your "trivial" example of a
3270 write / read / (write back input), code example.
It's on my TODO list.

At the bottom unfortunately, but it *is* on the list.

I'm just kind of busy with a zillion other things right now so it'll probably be a while before I can get to it. But is *is* on the list and I *will* try to get to it just as soon as I can. I just can't say when.
Post by Mike Stramba ***@gmail.com [hercules-390]
I'm still trying to get the SATK "pieces" working together. :/
It does take some getting used to, I'll admit. :/
Post by Mike Stramba ***@gmail.com [hercules-390]
You can start with the following code, from which I'm
getting a "could not resolve implied base register for
location: ABS:0x3259 .. error"
Could you send it to me in a .zip file instead? Yahoo has an annoying habit of removing (what *it* considers to be superfluous and redundant! (Have these people never done any programming before?! Don't bother answering. We all know the answer is NO)) blanks from the beginning of each line, thereby totally messing up any formatting the user may have performed and making it impossible to read properly aligned programming source code.

My email address is on my web site: http://www.softdevlabs.com/contact.

Thanks.
--
"Fish" (David B. Trout)
Software Development Laboratories
http://www.softdevlabs.com
mail: ***@softdevlabs.com
Loading...