Article View: comp.lang.asm370
Article #704Re: memo on my structure assembler macros
From: news
Date: Thu, 18 Apr 1991 18:52
Date: Thu, 18 Apr 1991 18:52
116 lines
5960 bytes
5960 bytes
icking@gmdzi.gmd.de (Werner Icking) writes:
[text deleted]
You have taken a simple example:
>R0 EQU 0
>HWORD DS H
> LH R0,HWORD
> $IF ZERO
> LTR R0,R0
> $THEN
And coded it using another method:
>R0 #EQUR 0
>HWORD DS H
> IF HWORD,EQ,0,THEN
Try THIS one, which is slightly more difficult:
$IF NOT-EQUAL if does not begin with
CLI 0(R2),X'40' a blank
$AND NOT-EQUAL nor
CLI 0(R2),X'05' a tab
$AND POS and
MVI PROCESS,0 (header start so clear flag)
BAL R14,TESTHDR this is a header we process
$THEN , then
MVI PROCESS,1 process this header
$END ,
Then this one which is more difficult yet:
$IF ON if
TM PROCESS,1 this header is being processed
$AND HIGH and
STM R2,R3,ORIGREC save original address and length
BAL R14,FIXIT processing causes
CL R3,=F'80' an overflow
$AND HIGH and
BAL R14,SQUEEZE squeezing will not fix
CL R3,=F'80' the overflow
$THEN , then
LM R2,R3,ORIGREC restore original
$END ,
And then this one which is starting to really get hard:
$IF POS if (the following test is positive)
SPACE
$IF ZERO if
TM 8(R5),B'10000000' upper-right value is positive
$THEN , then
LCDR FPR2,FPR4 test lower-left for negative
$ELSE , else
LTDR FPR2,FPR4 test lower-left for positive
$END ,
SPACE
$OR POS or (the following test is positive)
SPACE
$IF ZERO if
TM 0(R5),B'10000000' upper-left value is positive
$THEN , then
LCDR FPR2,FPR0 test lower-right for negative
$ELSE , else
LTDR FPR2,FPR0 test lower-right for positive
$END ,
SPACE
$THEN , then
EX *-*,PLOTOI(R7) OI 0(R6),B'one bit'
$END ,
And finally this one which also looks rather hard:
$IF EQUAL if
CLI 0(R10),X'FF' there are no arguments
$OR NOT-CC0 or
$IF EQUAL ( if )
CLI 8(R10),X'FF' ( there was just one argument )
$OR ZERO ( or )
LM R2,R3,8(R10) ( (get position argument) )
LTR R2,R2 ( the pos argument was omitted )
$OR NOT-CC0 ( or )
DECINT , ( >>> the number cannot convert)
$THEN , ( then )
LA R1,1 ( assume position to be 1 )
$END , ( endif )
LM R2,R3,0(R10) ( get address, length of list )
BAL R14,FINDELEM >>> the element cannot be found
$THEN , then
SLR R3,R3 use a null element
$END , endif
>We started this type of programming in the late 60-th -- and stopped it
>some years ago. If anybody is interested I will look for a description
>and the corresponding macro-library.
I'd like to see the description. I'd suggest posting it.
What is the difference between these methods? Well obviously a lot of
detail difference. I don't know for sure what Werner's method really is,
but it looks syntactically like one I read about in an assembler text.
Unfortunately the one in that text had limitations that restricted the
scope of what kinds of conditions could be tested, and had an even more
primitive looping macro setup that required things be expressed in terms
of BXH/BXLE conditions only. I did not include any loops in the examples
above, but I can include them. BTW, the "DECINT" in example 4 above is a
macro that calls a subroutine that is generated elsewhere by the same macro,
OR generates inline code in place, depending on the setting of a global
variable by one of yet other macros (INLINE, INTORG, EXTABS, etc.).
--
/***************************************************************************\
/ Phil Howard -- KA9WGN -- phil@ux1.cso.uiuc.edu | Guns don't aim guns at \
\ Lietuva laisva -- Brivu Latviju -- Eesti vabaks | people; CRIMINALS do!! /
\***************************************************************************/
Technical Details
Message-ID:
<9104190054.AA29724@ucbvax.Berkeley.EDU>Path:
arc1-ca.pugleaf.net!utzoo!utgpu!news-server.csri.toronto.edu!rpi!uwm.edu!bionet!agate!ucbvax!ucf1vm.BITNET!newsShow Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!news-server.csri.toronto.edu!rpi!uwm.edu!bionet!agate!ucbvax!ucf1vm.BITNET!news
From: news@ucf1vm.BITNET
Newsgroups: comp.lang.asm370
Subject: Re: memo on my structure assembler macros
Message-ID: <9104190054.AA29724@ucbvax.Berkeley.EDU>
Date: 18 Apr 91 18:52:03 GMT
Sender: daemon@ucbvax.BERKELEY.EDU
Reply-To: IBM 370 Assembly Programming Discussion List
<ASM370@OHSTVMA.BITNET>
Distribution: inet
Organization: The Internet
Lines: 116