home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / CROSSASM / ASM370.ZIP / DEMOSVC.ALC < prev    next >
Encoding:
Text File  |  1985-06-15  |  6.2 KB  |  228 lines

  1.          TITLE 'DEMOSVC  -  TEST E370 SVCS'
  2. *
  3. * AUTHOR.   DON HIGGINS.
  4. * DATE.     04/01/85.
  5. * REMARKS.  PC/370 DEMO OF SVC FUNCTIONS:
  6. *
  7. *             1.  ALLOCATE AND VERIFY PRIMARY AND SECONDARY MEMORY
  8. *             2.  SET SPIE AND VERIFY RECOVERY FROM INVALID INSTRUCTION.
  9. *             3.  CALL LINKED SUBROUTINES.
  10. *             4.  DYNAMICALLY LOAD AND CALL EXTERNAL SUBROUTINE (Z86SUB.EXE).
  11. *             5.  VERIFY CONSOLE INPUT/OUTPUT.
  12. *             6.  VERIFY PORT INPUT/OUTPUT TO DISPLAY CURSOR POSITION.
  13. *
  14. *
  15. DEMOSVC  CSECT
  16.          LR    R12,R15
  17.          USING  DEMOSVC,R12
  18.          LA    R2,=C'START DEMOSVC$'
  19.          SVC   WTO
  20.          L     R15,=V(PET)
  21.          BALR  R14,R15
  22.          L     R2,=A(1000000)
  23.          SVC   ASMEM
  24.          CLM   R0,1,=X'08'  MEMORY NOT AVAIL. ERR - R2 = AVAILABLE
  25.          BNZ   GMAINERR
  26.          SVC   ASMEM        ALLOCATE AVAILABLE
  27.          CLM   R0,1,=X'00'
  28.          BNZ   GMAINERR
  29.          SVC   DSMEM        FREE ALLOCATED SECONDARY MEMORY
  30.          CLM   R0,1,=X'00'
  31.          BNZ   FMAINERR
  32.          CVD   R1,PWORK
  33.          MVC   DSMEMS,DSMASK
  34.          ED    DSMEMS,PWORK+4  START
  35.          CVD   R2,PWORK
  36.          MVC   DSMEML,DSMASK
  37.          ED    DSMEML,PWORK+4  LENGTH
  38.          LA    R2,DSMMSG
  39.          SVC   WTO
  40.          L     R1,=A(65000)
  41.          SVC   GMAIN
  42.          CLM   R0,1,=X'01'
  43.          BNE   GMAINERR    A=1 MEMORY NOT AVAIL
  44.          LR    R5,R1     SVE R1 FOR CHECK AFTER 2G+2F
  45.          CVD   R1,PWORK
  46.          ED    DMEM,PWORK+5
  47.          LA    R2,DMEMMSG
  48.          SVC   WTO
  49.          LA    R1,2000
  50.          SVC   GMAIN
  51.          CLM   R0,1,=X'00'
  52.          BNZ   GMAINERR
  53.          LR    R4,R2     R4 = FIRST AREA
  54.          LA    R1,2000
  55.          SVC   GMAIN
  56.          CLM   R0,1,=X'00'
  57.          BNZ   GMAINERR
  58.          LR    R6,R2    R6  = SECOND AREA
  59.          LR    R0,R4
  60.          AH    R0,=H'2000'
  61.          CLR   R0,R6
  62.          BNE   GMAINERR
  63.          LA    R1,2000
  64.          LR    R2,R4
  65.          SVC   FMAIN
  66.          CLM   R0,1,=X'00'
  67.          BNE   FMAINERR
  68.          LA    R1,2000
  69.          LR    R2,R6
  70.          SVC   FMAIN
  71.          CLM   R0,1,=X'00'
  72.          BNE   FMAINERR
  73.          L     R1,=A(65000)
  74.          SVC   GMAIN
  75.          CLR   R1,R5
  76.          BNE   FMAINERR VERIFY MEMORY BACK TO ORIG.
  77.          LA    R1,USERSPIE
  78.          SVC   SPIE
  79. INVOP    DC    X'0000'  INVALID OP 0C1
  80. SPIEOK   EQU   *
  81.          L     R15,=V(USER370A)
  82.          BALR  R14,R15
  83.          L     R15,=V(USER370B)
  84.          BALR  R14,R15
  85.          L     R0,=A(LOADADDR)  ABSOLUTE LOAD ADDR (MUST MATCH LINK)
  86.          LA    R1,LOADFILE
  87.          SVC   LOADSVC          LOAD Z86SUB.EXE
  88.          CLM   R0,1,=X'00'
  89.          BNE   LOADERR
  90.          L     R15,=A(LOADADDR)
  91.          SVC   CALLZ86          CALL Z86SUB.EXE
  92.          LA    R2,=C'CONSOLE ECHO TEST UNTIL <CR>$'
  93.          SVC   WTO
  94. ECHO     EQU   *
  95.          SVC   READCON
  96.          CLM   R0,1,=AL1(CR)
  97.          BE    ECHODONE
  98.          LR    R2,R0
  99.          SVC   WRITECON
  100.          B     ECHO
  101. ECHODONE EQU   *
  102.          LA    R2,=C'CONSOLE ECHO DONE$'
  103.          SVC   WTO
  104.          SR    R1,R1
  105.          SVC   SPIE     REMOVE SPIE
  106.          LA    R2,=C'START CURSOR ADDRESS ROUTINE$'
  107.          SVC   WTO
  108.          LA    R0,X'0E'
  109.          LA    R1,X'3D4'
  110.          SVC   PORTOUT   SET CURSOR HIGH BYTE INDEX POINTER
  111.          LA    R1,X'3D5'
  112.          SVC   PORTIN    READ HIGH BYTE
  113.          LR    R3,R0     SAVE IN R3
  114.          LA    R0,X'0F'
  115.          LA    R1,X'3D4'
  116.          SVC   PORTOUT   SET CURSOR LOW BYTE INDEX POINTER
  117.          LA    R1,X'3D5'
  118.          SVC   PORTIN    READ  LOW BYTE
  119.          SLL   R3,8
  120.          OR    R0,R3
  121.          CVD   R0,PWORK
  122.          ED    DCUR,PWORK+5
  123.          LA    R2,DCURMSG
  124.          SVC   WTO
  125.          L     R15,=V(PET)
  126.          BALR  R14,R15
  127.          LA    R2,=C'DEMOSVC ENDED$'
  128.          SVC   WTO
  129.          SVC   EXIT
  130. LOADERR  EQU   *
  131.          LA    R2,=C' LOAD ERROR ON Z86SUB.EXE$'
  132.          SVC   WTO
  133.          SVC   TRACE
  134.          DC    C'BUG'
  135.          SVC   EXIT
  136. GMAINERR EQU   *
  137.          LR    R3,R0
  138.          LA    R2,=C'GMAIN ERROR$'
  139.          SVC   WTO
  140.          SVC   TRACE
  141.          DC    C'BUG'
  142.          SVC   EXIT
  143. FMAINERR EQU   *
  144.          LR    R3,R0
  145.          LA    R2,=C'FMAIN ERROR$'
  146.          SVC   WTO
  147.          SVC   TRACE
  148.          DC    C'BUG'
  149.          SVC   EXIT
  150. USERSPIE EQU   *
  151.          MVC   SAVEPSW,0(R1)
  152.          LA    R2,=C'USER SPIE EXIT TAKEN$'
  153.          SVC   WTO
  154.          LH    R1,SAVEPSW+6
  155.          CLC   0(2,R1),=X'0000'
  156.          BE    2(R1)
  157.          LA    R2,=C'SPIE PSW ADDR BAD$'
  158.          SVC   WTO
  159.          SVC   TRACE
  160.          DC    C'BUG'
  161.          SVC   EXIT
  162.          DC    C'*** SAVE PSW ***'
  163. SAVEPSW  DC    D'0'
  164. R0       EQU   0
  165. R1       EQU   1
  166. R2       EQU   2
  167. R3       EQU   3
  168. R4       EQU   4
  169. R5       EQU   5
  170. R6       EQU   6
  171. R12      EQU   12
  172. R14      EQU   14
  173. R15      EQU   15
  174. WTO      EQU   209
  175. TRACE    EQU   9
  176. EXIT     EQU   0
  177. PORTIN   EQU   21
  178. PORTOUT  EQU   22
  179. READCON  EQU   201
  180. WRITECON EQU   202
  181. CALLZ86  EQU   15
  182. LOADSVC  EQU   17
  183. LOADFILE DC    C'Z86SUB.EXE',X'00'
  184. LOADADDR EQU   X'6000'              ***ABS. ADDR MUST MATCH Z86SUB LINK***
  185. SPIE     EQU   14
  186. GMAIN    EQU   10
  187. FMAIN    EQU   11
  188. CR       EQU   X'0D'
  189. PWORK    DC    D'0'
  190. DMEMMSG  DC    C'FREE MEMORY ='
  191. DMEM     DC    X'402020202020',C'$'
  192. ASMEM    EQU   19
  193. DSMEM    EQU   20
  194. DSMASK   DC    X'4020',C',',X'202020',C',',X'202020'
  195. DSMMSG   DC    C' SECONDARY MEMORY START ='
  196. DSMEMS   DC    CL10' Z,ZZZ,ZZZ',C'  LENGTH ='
  197. DSMEML   DC    CL10' Z,ZZZ,ZZZ',C'$'
  198. DCURMSG  DC    C' CURSOR ADDRESS ='
  199. DCUR     DC    X'402020202020',C'$'
  200.          LTORG
  201. USER370A CSECT
  202.          DROP
  203.          USING *,R15
  204.          LA    R2,MSGA1
  205.          SVC   WTO
  206. USER370B CSECT
  207.          DROP
  208.          USING *,R15
  209.          LA    R2,MSGB1
  210.          SVC   WTO
  211. USER370A CSECT
  212.          DROP
  213.          USING USER370A,R15
  214.          LA    R2,=C'USER 370 A MSG 2$'
  215.          SVC   WTO
  216.          BR    R14
  217. MSGA1    DC    C'USER 370 A MSG 1$'
  218.          LTORG
  219. USER370B CSECT
  220.          DROP
  221.          USING USER370B,R15
  222.          LA    R2,=C'USER 370 B MSG 2$'
  223.          SVC   WTO
  224.          BR    R14
  225. MSGB1    DC    C'USER 370 B MSG 1$'
  226.          LTORG
  227.          END   DEMOSVC
  228.