GDDM V3R2 Base Application Programming Guide
Previous topic | Next topic | Contents | Index | Contact z/OS | Library | PDF | BOOK


A System/370 Assembler programming example

GDDM V3R2 Base Application Programming Guide
SC33-0867-01



This program uses the nonreentrant interface to GDDM. It draws straight lines in response to cursor movement and user-generated attentions. PF3 or a GDDM error stops the program. You might want to check for the successful completion of all GDDM calls; most of these checks have been omitted here for clarity.


     ________________________________________________________________________
     ASMNR    CSECT ,
              STM   R14,R12,12(R13)     SAVE REGISTERS
              BALR  R12,0               BASE REGISTER FOR CODE
              USING *,R12               ... AND TELL THE ASSEMBLER
              ST    R13,SAVEAREA+4      SAVE CALLER'S SAVE AREA ADDRESS
              LA    R11,SAVEAREA        GET SAVE AREA ADDRESS
              ST    R11,8(,R13)         ... AND STORE IT
              LR    R13,R11             SAVE AREA FOR CALLED ROUTINES
              CALL  FSINIT,(0),VL       INITIALIZE GDDM
              LTR   R9,R15              ... AND CHECK FOR NORMAL RETURN
              BNZ   RETURN
              CALL  GSSEG,(SEGNO),VL    OPEN SEGMENT NUMBER 1
              LTR   R9,R15              ... AND CHECK FOR NORMAL RETURN
              BNZ   RETURN
              CALL  GSMOVE,(X,Y),VL     INITIALIZE CURRENT POSITION
     LOOP     DS    0H                  TOP OF LOOP
              CALL  ASREAD,(TYPE,VALUE,MODS),VL WAIT FOR OPERATOR ACTION
              CALL  GSQCUR,(PTYP,X,Y),VL FIND WHERE CURSOR IS
              CALL  GSLINE,(X,Y),VL     DRAW LINE THERE FROM PREVIOUS POINT
              CLC   TYPE(4),F1          CHECK FOR A PROGRAM FUNCTION KEY
              BNE   LOOP                ... CONTINUE IF NOT
              CLC   VALUE(4),F3         CHECK FOR PF3
              BNE   LOOP                ... CONTINUE IF NOT
              CALL  GSSCLS,(0),VL       CLOSE SEGMENT
              CALL  FSTERM,(0),VL       TERMINATE GDDM IF PF3 WAS USED
     RETURN   L     R13,4(,R13)         RECOVER SAVE AREA ADDRESS
              LR    R15,R9              SET RETURN CODE
              L     R14,12(,R13)        RESTORE REGISTERS
              LM    R0,R12,20(R13)      ... FOR CALLER
              BR    R14                 RETURN TO CALLING ROUTINE
     *                        PROGRAM CONSTANTS
     F1       DC    F'1'                INDICATES A PF KEY WAS USED
     F3       DC    F'3'                PF KEY NUMBER 3
     SEGNO    DC    F'1'                SEGMENT NUMBER 1
     SAVEAREA DS    18F                 REGISTER SAVE AREA
     TYPE     DS    F                   TYPE OF ATTENTION (FULLWORD INTEGER)
     VALUE    DS    F                   ATTENTION VALUE (FULLWORD INTEGER)
     MODS     DS    F                   MODIFIED FIELDS (FULLWORD INTEGER)
     PTYP     DS    F                   WINDOW INDICATION (FULLWORD INTEGER)
     X        DC    E'50'               X-COORDINATE (SHORT FLOATING POINT)
     *                                  ... INITIALIZED TO 50
     Y        DC    E'50'               Y-COORDINATE (SHORT FLOATING POINT)
     *                                  ... INITIALIZED TO 50

     ________________________________________________________________________


     ________________________________________________________________________
     *                        EQUATES FOR REGISTERS
     R0       EQU   0
     R1       EQU   1
     R9       EQU   9
     R10      EQU   10
     R11      EQU   11
     R12      EQU   12
     R13      EQU   13
     R14      EQU   14
     R15      EQU   15
              END   ASMNR

     ________________________________________________________________________

Go to the previous page Go to the next page



Copyright IBM Corporation 1990, 2012