Re: Re: Where do I start?
Ron Hudson <[email protected]> Thu, 27 May 2010 18:30:15 -0700
| Newsgroups | gmane.comp.emulators.turnkey-mvs |
|---|---|
| Message-ID | <[email protected]> |
On Thu, May 27, 2010 at 6:14 PM, Rick Fochtman <[email protected]> wrote: > > > ------------------------------------<snip>-------------------------------- > > This is from one of those documentation programs and it talks about > savign the length and using r1 to > do it. > > TGET (2),(3),R READ FROM THE TERMINAL > STH R1,0(R4) SAVE THE LENGTH FROM TGET > SPACE 2 > LR R1,R13 COPY MY SAVE AREA POINTER > > btw: What does the "SPACE" directive do above? > > > SPACE 2 tells the assembler to leave two blank lines, for a > prettier listing. Also that TGET doesn't really save much; > shorter would be: > LA 1,INBUFF > LA 0,L'INBUFF > ICM 1,8,=x'81' TGET ASIS > TGET 1,0,R > > > -------------------------------<unsnip>--------------------------------------- > Are you planning to store in location X'000001' for zero bytes? That's what > you're saying with " TGET 1,0,R ". The first TGET above tells the system > to store the answer in the location defined by register 2, for a maximum > length as defined in register 3. This is called "REGISTER NOTATION". :-) > Actually it's just someone's example code to me, All I was looking at here was that they seem to be getting the read byte count from R1. > > ------------------------------<snip>---------------------------------- > > The current assembler documentation is on the IBM web site, but > much of the HL stuff doesn't apply to XF. Macros are documented > in manuals specific to use (Using Data Sets; Assembler Services; > etc.). > > > > DEBUG01 TPUT STREAM,STREAMLN,FULLSCR 00490000 > LA 5,1(,5) ADVANCE OUTPUT POINTER 00500000 > > LA 6,1(,6) ADVANCE INPUT POINTER 00510000 > SH 1,=H'1' REDUCE BYTE COUNT 00520000 > > > The TPUT has just destroyed R1 (address of STREAM), so the loop > will never end. One way of handling is is to use, for instance: > TGET ... > LTR 4,1 check for input > BNP none nothing read > > and use register 4 instead of 1 in subsequent code. > > I followed Gerhard's suggestion here - Transfer the value from R1 to R4 to work with it, I was unaware what the TPUT macro did under the covers - and actually since it's working now I don't need to update the screen as DISPLY is loaded and I can retire the extra call to TPUT > -------------------------------<snip>------------------------------ > I think the point Gerhard is trying to make is this: awareness of register > conventions is a MANDATORY PART of Assembler programming. It's a lot more > complicated, in many ways, because you're working at the machine level; you > don't have a HLL compiler making those decisions for you "under the covers". > And in most HLL's, you don't have to be concerned about arithmetic modes, > because the conversions are done for you "under the covers". > > Rick > >