High Level Assembler question 
Author Message
 High Level Assembler question

Hello,

I have assembler program which is working fine as of today in os/390.
This assembler was compiled IEV90. Since our shop is no longer soing
to support the IEV90 we have to use hilgh level one.(LE compatible). I
have just changed the Amode and rmode in that  and compiled in
highlevel. But executing our job just hangs. On the onlie monitor main
program is in this subroutine. Please can some one help me in this.
Looks like saveare in R13 is having nulls.
         ICTL    1,71,18                                              
 00000010
SEQREAD  START                                                        
 00000130
SEQREAD  AMODE   ANY                                                  
 00000140
SEQREAD  RMODE   ANY                                                  
 00000150
*#RR1    ASMREGS                        SET UP REGISTER EQUIVILENCES  
 00000160
* REGISTER ASSIGNMENTS                                                
 00000170
*                                                                    
 00000180
R0       EQU   0                                                      
 00000190
R1       EQU   1                                                      
 00000200
R2       EQU   2                                                      
 00000210
R3       EQU   3                                                      
 00000220
R4       EQU   4                                                      
 00000230
R5       EQU   5                                                      
 00000240
R6       EQU   6                                                      
 00000250
R7       EQU   7                                                      
 00000260
R8       EQU   8                                                      
 00000270
R9       EQU   9                                                      
 00000280
R10      EQU   10                                                    
 00000290
R11      EQU   11                                                    
 00000300
R12      EQU   12                                                    
 00000310
R13      EQU   13                                                    
 00000320
R14      EQU   14                                                    
 00000330
R15      EQU   15                                                    
 00000340
*                                                                    
 00000350
         MACRO                                                        
 00000360
         CHECK   &DECBREG                                            
 00000370
         LR      R1,&DECBREG            GET DECB ADDRESS              
 00000380
         L       R15,52(R10)            LOAD CHECK ROUTINE ADDRESS    
 00000390
         BALR    R14,R15                EXECUTE CHECK ROUTINE        
 00000400
         MEND                                                        
 00000410
*                                                                    
 00000420
         MACRO                                                        
 00000430
         NOTE    &DCBREG                                              
 00000440
         LR      R1,&DCBREG             GET DCB ADDRESS              
 00000450
         L       R15,84(R10)            LOAD NOTE ROUTINE ADDRESS    
 00000460
         BALR    R14,R15                EXECUTE NOTE ROUTINE          
 00000470
         MEND                                                        
 00000480
*                                                                    
 00000490
         MACRO                                                        
 00000500
         READ    &DECBREG                                            
 00000510
         LR      R1,&DECBREG            GET DECB ADDRESS              
 00000520
         L       R15,48(R10)            LOAD READ ROUTINE ADDRESS    
 00000530
         BALR    R14,R15                EXECUTE READ ROUTINE          
 00000540
         MEND                                                        
 00000550
*                                                                    
 00000560
         MACRO                                                        
 00000570
         SET24                                                        
 00000580
         LA      R14,*+6                                              
 00000590
         BSM     0,R14                                                
 00000600
         MEND                                                        
 00000610
*                                                                    
 00000620
         MACRO                                                        
 00000630
         SET31                                                        
 00000640
         LA      R14,*+10                                            
 00000650
         O       R14,=X'80000000'                                    
 00000660
         BSM     0,R14                                                
 00000670
         MEND                                                        
 00000680
*                                                                    
 00000690
*#RR1****READER   DS      0F                                          
 00000700
*#RR1****ENTRY   READER                                              
 00000710
XBCX68S0 DS      0F                #RR1                              
 00000720
         ENTRY   XBCX68S0          #RR1                              
 00000730
         USING   FDAREA,R11             POINT TO FD DUMMY CONTROL SECT
 00000740
         USING   IHADCB,R10             POINT TO DUMMY DCB CONTROL
SECT 00000750
*                                                                    
 00000760
         STM     R14,R12,12(R13)        STORE CALLING ROUTINE
REGISTERS 00000770
         BASR    R12,0                  LOAD CURRENT LOCATION        
 00000780
         USING   *,R12                  ESTABLISH ADDRESSABILITY      
 00000790
         B       LINKUP                 BRANCH AROUND DATE/TIME/MODULE
 00000800
         DC      C'&SYSTIME &SYSDATE'                                
 00000810
         DC      C'XBCX68S0 VERSION 1.00'                            
 00000820
         DS      0F                                                  
 00000830
LINKUP   ST      R13,REGSAVE+4          SAVE CALLER'S SAVE AREA
ADDRESS 00000840
         LA      R14,REGSAVE            POINT TO OUR REGISTER SAVE
AREA 00000850
         ST      R14,8(R13)             SET FORWARD POINTER IN CALLER
 00000860
         LR      R13,R14                POINT TO OUR REGISTER SAVE
AREA 00000870
         L       R11,0(R1)              GET ADDRESS OF FD AREA        
 00000880
         L       R10,FD#DCB             GET ADDRESS OF FILE DCB AREA  
 00000890
         MVC     DCBEODA(3),EODADDR     PUT END OF DATA ADDRESS IN DCB
 00000900
         POST    FD#ECB1                INDICATE SUBTASK HAS STARTED  
 00000910
READ     EQU     *                                                    
 00000920
         WAIT    1,ECB=FD#ECB           WAIT FOR BUFFER READ REQUEST  
 00000930
         TM      FD#FLAGS,M1STAT        CHECK THE FILE STATUS        
 00000940
         BZ      EXIT                   FILE IS CLOSED - TERMINATE
PROG 00000950
         SR      R9,R9                  CLEAR REGISTER                
 00000960
         ST      R9,FD#ECB              RESET READ SUBTASK ECB        
 00000970
         TM      FD#FLAGS,M1BUFF        CHECK THE BUFFER SET IN USE  
 00000980
         BZ      READ1                  1ST BUFF SET IN USE - FILL 2ND
 00000990
READ0    EQU     *                                                    
 00001000
         L       R9,FD#DECB1            GET SECOND DECB BLOCK ADDRESS
 00001010
         L       R6,FD#DECB0            GET FIRST DECB ADDRESS        
 00001020
         LA      R5,FD#ECB0             GET 1ST BUFFER BLOCK ECB ADDR
 00001030
         LA      R3,FD#VOL0             LOAD VOLUME INTO BUFFER 1    
 00001040
         LA      R4,FD#NOTE0            GET 1ST BLOCK POSITION ADDRESS
 00001050
         B       READCOM                GO TO COMMON READ CODE        
 00001060
READ1    EQU     *                                                    
 00001070
         L       R9,FD#BUFF             GET BUFFER BLOCK ADDRESS      
 00001080
         L       R6,FD#DECB1            GET 1ST DECB ADDR IN 2ND BLOCK
 00001090
         LA      R5,FD#ECB1             GET 2ND BUFFER BLOCK ECB ADDR
 00001100
         LA      R3,FD#VOL1             LOAD VOLUME INTO BUFFER 2    
 00001110
         LA      R4,FD#NOTE1            GET 2ND BLOCK POSITION ADDRESS
 00001120
READCOM  EQU     *                                                    
 00001130
         LR      R7,R6                  COPY STARTING DECB ADDRESS    
 00001140
         LH      R8,=H'24'              GET THE DECB SIZE            
 00001150
         BCTR    R9,0                   POINT TO END OF DECB'S        
 00001160
         SET24                          SET 24 BIT ADDRESSING MODE    
 00001170
READNEXT EQU     *                                                    
 00001180
         READ    R7                     USE DECB ADDR FOR NEXT READ  
 00001190
         BXLE    R7,R8,READNEXT         ISSUE READS FOR ALL BUFFERS  
 00001200
         LR      R7,R6                  RESTORE STARTING DECB ADDRESS
 00001210
CHECKNXT EQU     *                                                    
 00001220
         CHECK   R7                     MAKE SURE I/O HAS COMPLETED  
 00001230
         L       R1,16(R7)              GET ADDRESS OF THE IOB        
 00001240
         LH      R1,14(R1)              GET SIZE OF THE BLOCK JUST
READ 00001250
         STH     R1,20(R7)              SAVE SIZE OF BLOCK JUST READ  
 00001260
         BXLE    R7,R8,CHECKNXT         ISSUE CHECKS FOR ALL BUFFERS  
 00001270
         SET31                          SET 31 BIT ADDRESSING MODE    
 00001280
         TM      FD#FLAGS,M1SYS         CHECK FOR SYSIN FILE
...

read more »



Sun, 13 Nov 2005 00:54:03 GMT  
 High Level Assembler question
Go back to your original source code and Assemble that.  Make sure it
assembles cleanly and executes correctly before you make any changes.
Quote:

> Hello,

> I have assembler program which is working fine as of today in os/390.
> This assembler was compiled IEV90. Since our shop is no longer soing
> to support the IEV90 we have to use hilgh level one.(LE compatible). I
> have just changed the Amode and rmode in that  and compiled in
> highlevel. But executing our job just hangs. On the onlie monitor main
> program is in this subroutine. Please can some one help me in this.
> Looks like saveare in R13 is having nulls.
>          ICTL    1,71,18
>  00000010
> SEQREAD  START
>  00000130
> SEQREAD  AMODE   ANY
>  00000140
> SEQREAD  RMODE   ANY
>  00000150
> *#RR1    ASMREGS                        SET UP REGISTER EQUIVILENCES
>  00000160
> * REGISTER ASSIGNMENTS
>  00000170
> *
>  00000180
> R0       EQU   0
>  00000190
> R1       EQU   1
>  00000200
> R2       EQU   2
>  00000210
> R3       EQU   3
>  00000220
> R4       EQU   4
>  00000230
> R5       EQU   5
>  00000240
> R6       EQU   6
>  00000250
> R7       EQU   7
>  00000260
> R8       EQU   8
>  00000270
> R9       EQU   9
>  00000280
> R10      EQU   10
>  00000290
> R11      EQU   11
>  00000300
> R12      EQU   12
>  00000310
> R13      EQU   13
>  00000320
> R14      EQU   14
>  00000330
> R15      EQU   15
>  00000340
> *
>  00000350
>          MACRO
>  00000360
>          CHECK   &DECBREG
>  00000370
>          LR      R1,&DECBREG            GET DECB ADDRESS
>  00000380
>          L       R15,52(R10)            LOAD CHECK ROUTINE ADDRESS
>  00000390
>          BALR    R14,R15                EXECUTE CHECK ROUTINE
>  00000400
>          MEND
>  00000410
> *
>  00000420
>          MACRO
>  00000430
>          NOTE    &DCBREG
>  00000440
>          LR      R1,&DCBREG             GET DCB ADDRESS
>  00000450
>          L       R15,84(R10)            LOAD NOTE ROUTINE ADDRESS
>  00000460
>          BALR    R14,R15                EXECUTE NOTE ROUTINE
>  00000470
>          MEND
>  00000480
> *
>  00000490
>          MACRO
>  00000500
>          READ    &DECBREG
>  00000510
>          LR      R1,&DECBREG            GET DECB ADDRESS
>  00000520
>          L       R15,48(R10)            LOAD READ ROUTINE ADDRESS
>  00000530
>          BALR    R14,R15                EXECUTE READ ROUTINE
>  00000540
>          MEND
>  00000550
> *
>  00000560
>          MACRO
>  00000570
>          SET24
>  00000580
>          LA      R14,*+6
>  00000590
>          BSM     0,R14
>  00000600
>          MEND
>  00000610
> *
>  00000620
>          MACRO
>  00000630
>          SET31
>  00000640
>          LA      R14,*+10
>  00000650
>          O       R14,=X'80000000'
>  00000660
>          BSM     0,R14
>  00000670
>          MEND
>  00000680
> *
>  00000690
> *#RR1****READER   DS      0F
>  00000700
> *#RR1****ENTRY   READER
>  00000710
> XBCX68S0 DS      0F                #RR1
>  00000720
>          ENTRY   XBCX68S0          #RR1
>  00000730
>          USING   FDAREA,R11             POINT TO FD DUMMY CONTROL SECT
>  00000740
>          USING   IHADCB,R10             POINT TO DUMMY DCB CONTROL
> SECT 00000750
> *
>  00000760
>          STM     R14,R12,12(R13)        STORE CALLING ROUTINE
> REGISTERS 00000770
>          BASR    R12,0                  LOAD CURRENT LOCATION
>  00000780
>          USING   *,R12                  ESTABLISH ADDRESSABILITY
>  00000790
>          B       LINKUP                 BRANCH AROUND DATE/TIME/MODULE
>  00000800
>          DC      C'&SYSTIME &SYSDATE'
>  00000810
>          DC      C'XBCX68S0 VERSION 1.00'
>  00000820
>          DS      0F
>  00000830
> LINKUP   ST      R13,REGSAVE+4          SAVE CALLER'S SAVE AREA
> ADDRESS 00000840
>          LA      R14,REGSAVE            POINT TO OUR REGISTER SAVE
> AREA 00000850
>          ST      R14,8(R13)             SET FORWARD POINTER IN CALLER
>  00000860
>          LR      R13,R14                POINT TO OUR REGISTER SAVE
> AREA 00000870
>          L       R11,0(R1)              GET ADDRESS OF FD AREA
>  00000880
>          L       R10,FD#DCB             GET ADDRESS OF FILE DCB AREA
>  00000890
>          MVC     DCBEODA(3),EODADDR     PUT END OF DATA ADDRESS IN DCB
>  00000900
>          POST    FD#ECB1                INDICATE SUBTASK HAS STARTED
>  00000910
> READ     EQU     *
>  00000920
>          WAIT    1,ECB=FD#ECB           WAIT FOR BUFFER READ REQUEST
>  00000930
>          TM      FD#FLAGS,M1STAT        CHECK THE FILE STATUS
>  00000940
>          BZ      EXIT                   FILE IS CLOSED - TERMINATE
> PROG 00000950
>          SR      R9,R9                  CLEAR REGISTER
>  00000960
>          ST      R9,FD#ECB              RESET READ SUBTASK ECB
>  00000970
>          TM      FD#FLAGS,M1BUFF        CHECK THE BUFFER SET IN USE
>  00000980
>          BZ      READ1                  1ST BUFF SET IN USE - FILL 2ND
>  00000990
> READ0    EQU     *
>  00001000
>          L       R9,FD#DECB1            GET SECOND DECB BLOCK ADDRESS
>  00001010
>          L       R6,FD#DECB0            GET FIRST DECB ADDRESS
>  00001020
>          LA      R5,FD#ECB0             GET 1ST BUFFER BLOCK ECB ADDR
>  00001030
>          LA      R3,FD#VOL0             LOAD VOLUME INTO BUFFER 1
>  00001040
>          LA      R4,FD#NOTE0            GET 1ST BLOCK POSITION ADDRESS
>  00001050
>          B       READCOM                GO TO COMMON READ CODE
>  00001060
> READ1    EQU     *
>  00001070
>          L       R9,FD#BUFF             GET BUFFER BLOCK ADDRESS
>  00001080
>          L       R6,FD#DECB1            GET 1ST DECB ADDR IN 2ND BLOCK
>  00001090
>          LA      R5,FD#ECB1             GET 2ND BUFFER BLOCK ECB ADDR
>  00001100
>          LA      R3,FD#VOL1             LOAD VOLUME INTO BUFFER 2
>  00001110
>          LA      R4,FD#NOTE1            GET 2ND BLOCK POSITION ADDRESS
>  00001120
> READCOM  EQU     *
>  00001130
>          LR      R7,R6                  COPY STARTING DECB ADDRESS
>  00001140
>          LH      R8,=H'24'              GET THE DECB SIZE
>  00001150
>          BCTR    R9,0                   POINT TO END OF DECB'S
>  00001160
>          SET24                          SET 24 BIT ADDRESSING MODE
>  00001170
> READNEXT EQU     *
>  00001180
>          READ    R7                     USE DECB ADDR FOR NEXT READ
>  00001190
>          BXLE    R7,R8,READNEXT         ISSUE READS FOR ALL BUFFERS
>  00001200
>          LR      R7,R6                  RESTORE STARTING DECB ADDRESS
>  00001210
> CHECKNXT EQU     *
>  00001220
>          CHECK   R7                     MAKE SURE I/O HAS COMPLETED
>  00001230
>          L       R1,16(R7)              GET ADDRESS OF THE IOB
>  00001240
>          LH      R1,14(R1)              GET SIZE OF THE BLOCK JUST
> READ 00001250
>          STH     R1,20(R7)              SAVE SIZE OF BLOCK JUST READ
>  00001260
>          BXLE    R7,R8,CHECKNXT         ISSUE CHECKS FOR ALL BUFFERS
>  00001270
>          SET31                          SET 31 BIT ADDRESSING MODE
>  00001280
>          TM      FD#FLAGS,M1SYS         CHECK FOR SYSIN FILE
>  00001290
>          BO      POSTECB                YES - SKIP NOTE OF LOCATION
>  00001300
>          SET24                          SET 24 BIT ADDRESSING MODE
>  00001310
>          NOTE    R10                    LOCATE THE FILE POSITION
>  00001320
>          SET31                          SET 31 BIT ADDRESSING MODE
>  00001330
>          ST      R1,0(R4)               PUT FILE POSITION IN PARM AREA
>  00001340
>          LH      R2,FD#VOLEV            LOAD CURRENT PHYSICAL VOLUME
>  00001350
>          STH     R2,0(R3)               STORE VOLUME POSITIONING
>  00001360
> POSTECB  EQU     *
>  00001370
>          POST    (R5)                   MARK BUFFER SET READY FOR USE
>  00001380
>          B       READ                   GO WAIT FOR NEXT READ REQUEST
>  00001390
> *
>  00001400
> READEOF  EQU     *
>  00001410
>          SET31                          SET 31 BIT ADDRESSING MODE
>  00001420
>          TM      FD#FLAGS,M1SYS         CHECK FOR SYSIN FILE
>  00001430
>          BO      POSTEOF                YES - SKIP NOTE OF LOCATION
>  00001440
>          SET24                          SET 24 BIT ADDRESSING MODE
>  00001450
>          NOTE    R10                    LOCATE THE FILE POSITION
>  00001460
>          SET31                          SET 31 BIT ADDRESSING MODE
>  00001470
>          ST      R1,0(R4)               PUT FILE POSITION IN PARM AREA
>  00001480
> POSTEOF  EQU     *
>  00001490
>          POST    (R5),(R7)              MARK BUFFERS READY - SET EOF
>  00001500
>          B       READ                   GO WAIT FOR SUBTASK DETACHMENT
>  00001510
> *
>  00001520
> EXIT     EQU     *
>  00001530
>          L       R13,REGSAVE+4          RESTORE REGISTER SAVE AREA
> ADDR 00001540
>          LM      R14,R12,12(R13)        RESTORE CALLING PROGRAM REGS
>  00001550
>          SR      R15,R15                SET SYSTEM RETURN CODE
>  00001560
>          BR      R14                    RETURN TO CALLER
>  00001570
>          EJECT
>  00001580
> *
>  00001590
> EODADDR  DC      AL3(READEOF)           ADDRESS OF END OF FILE ROUTINE
>  00001600
> M1BUFF   EQU     X'20'                  BUFFER SET 1
>  00001610
> M1STAT   EQU     X'80'                  FILE OPENED
>  00001620
> M1SYS    EQU     X'10'                  SYSIN/SYSOUT DATA SET
>  00001630
> REGSAVE  DS      18F                    REGISTER SAVE AREA
>  00001640
>          SPACE   3
>  00001650
> *
>  00001660
> FDAREA   DSECT
>  00001670
> FD#DDN   DS      CL8                    FILE DD NAME
>  00001680
> FD#DSN   DS      CL44                   DATA SET NAME
>  00001690
> FD#DCB   DS      F                      DATA CONTROL BLOCK ADDRESS
>  00001700
> FD#DECB0 DS      F                      FIRST DECB BLOCK ADDRESS
>  00001710
> FD#DECB1 DS      F                      SECOND DECB BLOCK ADDRESS
>  00001720
> FD#BUFF  DS      F                      BUFFER

...

read more »



Tue, 15 Nov 2005 05:34:02 GMT  
 High Level Assembler question
The problem with this is rather obvious to me, but I can see where you
might not catch what is going on.

You have specified RMODE ANY, indicating that the program may be loaded
in 31-bit storage (above 16 Mb).  However, please note the EODADDR is a
3-byte address.  If SEQREAD is loaded in 31-bit storage, EODADDR will be
pointing to an invalid location and the results will be unpredictable.

I have not looked at the expansion of the DCBD MACRO to see if a 4-byte
EODADDR is permitted.  However, I expect that such is the case.

This does not preclude the program from running AMODE ANY.  However, as
currently coded, the program MUST run RMODE 24.

John P Baker

Quote:

> Hello,

> I have assembler program which is working fine as of today in os/390.
> This assembler was compiled IEV90. Since our shop is no longer soing
> to support the IEV90 we have to use hilgh level one.(LE compatible). I
> have just changed the Amode and rmode in that  and compiled in
> highlevel. But executing our job just hangs. On the onlie monitor main
> program is in this subroutine. Please can some one help me in this.
> Looks like saveare in R13 is having nulls.
>          ICTL    1,71,18                                              
>  00000010
> SEQREAD  START                                                        
>  00000130
> SEQREAD  AMODE   ANY                                                  
>  00000140
> SEQREAD  RMODE   ANY                                                  
>  00000150
> *#RR1    ASMREGS                        SET UP REGISTER EQUIVILENCES  
>  00000160
> * REGISTER ASSIGNMENTS                                                
>  00000170
> *                                                                    
>  00000180
> R0       EQU   0                                                      
>  00000190
> R1       EQU   1                                                      
>  00000200
> R2       EQU   2                                                      
>  00000210
> R3       EQU   3                                                      
>  00000220
> R4       EQU   4                                                      
>  00000230
> R5       EQU   5                                                      
>  00000240
> R6       EQU   6                                                      
>  00000250
> R7       EQU   7                                                      
>  00000260
> R8       EQU   8                                                      
>  00000270
> R9       EQU   9                                                      
>  00000280
> R10      EQU   10                                                    
>  00000290
> R11      EQU   11                                                    
>  00000300
> R12      EQU   12                                                    
>  00000310
> R13      EQU   13                                                    
>  00000320
> R14      EQU   14                                                    
>  00000330
> R15      EQU   15                                                    
>  00000340
> *                                                                    
>  00000350
>          MACRO                                                        
>  00000360
>          CHECK   &DECBREG                                            
>  00000370
>          LR      R1,&DECBREG            GET DECB ADDRESS              
>  00000380
>          L       R15,52(R10)            LOAD CHECK ROUTINE ADDRESS    
>  00000390
>          BALR    R14,R15                EXECUTE CHECK ROUTINE        
>  00000400
>          MEND                                                        
>  00000410
> *                                                                    
>  00000420
>          MACRO                                                        
>  00000430
>          NOTE    &DCBREG                                              
>  00000440
>          LR      R1,&DCBREG             GET DCB ADDRESS              
>  00000450
>          L       R15,84(R10)            LOAD NOTE ROUTINE ADDRESS    
>  00000460
>          BALR    R14,R15                EXECUTE NOTE ROUTINE          
>  00000470
>          MEND                                                        
>  00000480
> *                                                                    
>  00000490
>          MACRO                                                        
>  00000500
>          READ    &DECBREG                                            
>  00000510
>          LR      R1,&DECBREG            GET DECB ADDRESS              
>  00000520
>          L       R15,48(R10)            LOAD READ ROUTINE ADDRESS    
>  00000530
>          BALR    R14,R15                EXECUTE READ ROUTINE          
>  00000540
>          MEND                                                        
>  00000550
> *                                                                    
>  00000560
>          MACRO                                                        
>  00000570
>          SET24                                                        
>  00000580
>          LA      R14,*+6                                              
>  00000590
>          BSM     0,R14                                                
>  00000600
>          MEND                                                        
>  00000610
> *                                                                    
>  00000620
>          MACRO                                                        
>  00000630
>          SET31                                                        
>  00000640
>          LA      R14,*+10                                            
>  00000650
>          O       R14,=X'80000000'                                    
>  00000660
>          BSM     0,R14                                                
>  00000670
>          MEND                                                        
>  00000680
> *                                                                    
>  00000690
> *#RR1****READER   DS      0F                                          
>  00000700
> *#RR1****ENTRY   READER                                              
>  00000710
> XBCX68S0 DS      0F                #RR1                              
>  00000720
>          ENTRY   XBCX68S0          #RR1                              
>  00000730
>          USING   FDAREA,R11             POINT TO FD DUMMY CONTROL SECT
>  00000740
>          USING   IHADCB,R10             POINT TO DUMMY DCB CONTROL
> SECT 00000750
> *                                                                    
>  00000760
>          STM     R14,R12,12(R13)        STORE CALLING ROUTINE
> REGISTERS 00000770
>          BASR    R12,0                  LOAD CURRENT LOCATION        
>  00000780
>          USING   *,R12                  ESTABLISH ADDRESSABILITY      
>  00000790
>          B       LINKUP                 BRANCH AROUND DATE/TIME/MODULE
>  00000800
>          DC      C'&SYSTIME &SYSDATE'                                
>  00000810
>          DC      C'XBCX68S0 VERSION 1.00'                            
>  00000820
>          DS      0F                                                  
>  00000830
> LINKUP   ST      R13,REGSAVE+4          SAVE CALLER'S SAVE AREA
> ADDRESS 00000840
>          LA      R14,REGSAVE            POINT TO OUR REGISTER SAVE
> AREA 00000850
>          ST      R14,8(R13)             SET FORWARD POINTER IN CALLER
>  00000860
>          LR      R13,R14                POINT TO OUR REGISTER SAVE
> AREA 00000870
>          L       R11,0(R1)              GET ADDRESS OF FD AREA        
>  00000880
>          L       R10,FD#DCB             GET ADDRESS OF FILE DCB AREA  
>  00000890
>          MVC     DCBEODA(3),EODADDR     PUT END OF DATA ADDRESS IN DCB
>  00000900
>          POST    FD#ECB1                INDICATE SUBTASK HAS STARTED  
>  00000910
> READ     EQU     *                                                    
>  00000920
>          WAIT    1,ECB=FD#ECB           WAIT FOR BUFFER READ REQUEST  
>  00000930
>          TM      FD#FLAGS,M1STAT        CHECK THE FILE STATUS        
>  00000940
>          BZ      EXIT                   FILE IS CLOSED - TERMINATE
> PROG 00000950
>          SR      R9,R9                  CLEAR REGISTER                
>  00000960
>          ST      R9,FD#ECB              RESET READ SUBTASK ECB        
>  00000970
>          TM      FD#FLAGS,M1BUFF        CHECK THE BUFFER SET IN USE  
>  00000980
>          BZ      READ1                  1ST BUFF SET IN USE - FILL 2ND
>  00000990
> READ0    EQU     *                                                    
>  00001000
>          L       R9,FD#DECB1            GET SECOND DECB BLOCK ADDRESS
>  00001010
>          L       R6,FD#DECB0            GET FIRST DECB ADDRESS        
>  00001020
>          LA      R5,FD#ECB0             GET 1ST BUFFER BLOCK ECB ADDR
>  00001030
>          LA      R3,FD#VOL0             LOAD VOLUME INTO BUFFER 1    
>  00001040
>          LA      R4,FD#NOTE0            GET 1ST BLOCK POSITION ADDRESS
>  00001050
>          B       READCOM                GO TO COMMON READ CODE        
>  00001060
> READ1    EQU     *                                                    
>  00001070
>          L       R9,FD#BUFF             GET BUFFER BLOCK ADDRESS      
>  00001080
>          L       R6,FD#DECB1            GET 1ST DECB ADDR IN 2ND BLOCK
>  00001090
>          LA      R5,FD#ECB1             GET 2ND BUFFER BLOCK ECB ADDR
>  00001100
>          LA      R3,FD#VOL1             LOAD VOLUME INTO BUFFER 2    
>  00001110
>          LA      R4,FD#NOTE1            GET 2ND BLOCK POSITION ADDRESS
>  00001120
> READCOM  EQU     *                                                    
>  00001130
>          LR      R7,R6                  COPY STARTING DECB ADDRESS    
>  00001140
>          LH      R8,=H'24'              GET THE DECB SIZE            
>  00001150

...

read more »



Thu, 17 Nov 2005 12:46:56 GMT  
 High Level Assembler question

:>The problem with this is rather obvious to me, but I can see where you
:>might not catch what is going on.

:>You have specified RMODE ANY, indicating that the program may be loaded
:>in 31-bit storage (above 16 Mb).  However, please note the EODADDR is a
:>3-byte address.  If SEQREAD is loaded in 31-bit storage, EODADDR will be
:>pointing to an invalid location and the results will be unpredictable.

Doesn't AMODE ANY + RMODE ANY force RMODE 24?

After all, even an RMODE ANY program can be loaded below the line. But an
AMODE ANY program must be below the line to support AMODE 24 callers.

   [ snipped ]

--

http://www.dissensoftware.com

Director, Dissen Software, Bar & Grill - Israel



Thu, 17 Nov 2005 16:31:56 GMT  
 High Level Assembler question
Not according to th HLASM manuals.  I think that the assumption is made
that the program will switch back and forth as required.

John P Baker

Quote:


> :>The problem with this is rather obvious to me, but I can see where you
> :>might not catch what is going on.

> :>You have specified RMODE ANY, indicating that the program may be loaded
> :>in 31-bit storage (above 16 Mb).  However, please note the EODADDR is a
> :>3-byte address.  If SEQREAD is loaded in 31-bit storage, EODADDR will be
> :>pointing to an invalid location and the results will be unpredictable.

> Doesn't AMODE ANY + RMODE ANY force RMODE 24?

> After all, even an RMODE ANY program can be loaded below the line. But an
> AMODE ANY program must be below the line to support AMODE 24 callers.

>    [ snipped ]

> --

> http://www.dissensoftware.com

> Director, Dissen Software, Bar & Grill - Israel



Thu, 17 Nov 2005 22:05:02 GMT  
 High Level Assembler question

:>Not according to th HLASM manuals.  I think that the assumption is made
:>that the program will switch back and forth as required.

But if the code is above the line it cannot run in AMODE 24.

Any AMODE ANY routine must be able to accept AMODE 24 callers.


:>> :>The problem with this is rather obvious to me, but I can see where you
:>> :>might not catch what is going on.

:>> :>You have specified RMODE ANY, indicating that the program may be loaded
:>> :>in 31-bit storage (above 16 Mb).  However, please note the EODADDR is a
:>> :>3-byte address.  If SEQREAD is loaded in 31-bit storage, EODADDR will be
:>> :>pointing to an invalid location and the results will be unpredictable.

:>> Doesn't AMODE ANY + RMODE ANY force RMODE 24?

:>> After all, even an RMODE ANY program can be loaded below the line. But an
:>> AMODE ANY program must be below the line to support AMODE 24 callers.

:>>    [ snipped ]

--

http://www.dissensoftware.com

Director, Dissen Software, Bar & Grill - Israel



Thu, 17 Nov 2005 22:14:19 GMT  
 
 [ 6 post ] 

 Relevant Pages 

1. FYI: IBM High Level Assembler parser available

2. High Level Assembler Option

3. Info please -- "High Level Assembler"

4. Info please - High Level Assembler - USING at top of page

5. Converting to High-Level Assembler

6. High Level Assembler experiences

7. Assembler vs. high-level languages

8. HLA v1.39 (High Level Assembler) is now available

9. Auto-converting assembler to a higher level language

10. A High level assembler

11. High Level Assembler (HLA)

12. High Level ASM and Low Level ASM

 

 
Powered by phpBB® Forum Software