home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / zsys / simtel20 / zcpr3 / shctrl.mac < prev    next >
Encoding:
Text File  |  1994-07-13  |  2.6 KB  |  148 lines

  1. ;
  2. ; Program: SHCTRL
  3. ; Author: Richard Conn
  4. ; Version: 1.0
  5. ; Date: 29 Mar 84
  6. ;
  7. version    equ    10
  8. z3env    SET    0f400h
  9.  
  10. ;
  11. ;    SHCTRL is used to provide simple control of the ZCPR3 shell
  12. ; stack from the command line.  This program accepts one of two parameters:
  13. ;
  14. ;        SHCTRL CLR or SHCTRL C        <-- Clear the Shell Stack
  15. ;        SHCTRL DIS or SHCTRL D        <-- Display Shell Stack
  16. ;        SHCTRL POP or SHCTRL P        <-- Pop the Shell Stack
  17. ;
  18.  
  19. ;
  20. ; Equates
  21. ;
  22. fcb    equ    5ch
  23. cr    equ    0dh
  24. lf    equ    0ah
  25.  
  26. ;
  27. ; SYSLIB and Z3LIB Routines
  28. ;
  29.     ext    z3init,shpop,getsh2,qprint,print,pafdc,pstr
  30.  
  31. ;
  32. ; Environment Definition
  33. ;
  34.     if    z3env ne 0
  35. ;
  36. ; External ZCPR3 Environment Descriptor
  37. ;
  38.     jmp    start
  39.     db    'Z3ENV'    ;This is a ZCPR3 Utility
  40.     db    1    ;External Environment Descriptor
  41. z3eadr:
  42.     dw    z3env
  43. start:
  44.     lhld    z3eadr    ;pt to ZCPR3 environment
  45. ;
  46.     else
  47. ;
  48. ; Internal ZCPR3 Environment Descriptor
  49. ;
  50.     MACLIB    Z3BASE.LIB
  51.     MACLIB    SYSENV.LIB
  52. z3eadr:
  53.     jmp    start
  54.     SYSENV
  55. start:
  56.     lxi    h,z3eadr    ;pt to ZCPR3 environment
  57.     endif
  58.  
  59. ;
  60. ; Start of Program -- Initialize ZCPR3 Environment
  61. ;
  62.     call    z3init    ;initialize the ZCPR3 Env and the VLIB Env
  63.  
  64. ;
  65. ; Print Banner
  66. ;
  67.     call    qprint
  68.     db    'SHCTRL Version '
  69.     db    (version/10)+'0','.',(version mod 10)+'0',0
  70.  
  71. ;
  72. ; Check for Command
  73. ;
  74.     lda    fcb+1    ;get first char
  75.     cpi    'C'    ;clear?
  76.     jz    shclear
  77.     cpi    'D'    ;display?
  78.     jz    shdisplay
  79.     cpi    'P'    ;pop?
  80.     jz    shspop
  81.  
  82. ;
  83. ; Print help
  84. ;
  85.     call    print
  86.     db    cr,lf,'SHCTRL - Control Shell Stack'
  87.     db    cr,lf,'Syntax:'
  88.     db    cr,lf,'    SHCTRL C or SHCTRL CLR - Clear Shell Stack'
  89.     db    cr,lf,'    SHCTRL D or SHCTRL DIS - Display Shell Stack'
  90.     db    cr,lf,'    SHCTRL P or SHCTRL POP - Pop Shell Stack'
  91.     db    0
  92.     ret
  93.  
  94. ;
  95. ; Clear Shell Stack
  96. ;
  97. shclear:
  98.     call    getsh2    ;get address of shell stack
  99.     mvi    m,0    ;clear it
  100.     call    qprint
  101.     db    ' - Shell Stack Clear',0
  102.     ret
  103.  
  104. ;
  105. ; Pop Shell Stack
  106. ;
  107. shspop:
  108.     call    shpop    ;pop stack
  109.     call    qprint
  110.     db    ' - Shell Stack Popped',0
  111.     ret
  112.  
  113. ;
  114. ; Display Shell Stack
  115. ;
  116. shdisplay:
  117.     call    getsh2    ;get address of shell stack (HL), size of
  118.             ; shell stack entry (DE), and count (A,B)
  119.     call    print    ;print message
  120.     db    ' - Shell Stack Data'
  121.     db    cr,lf,' Size of Shell Stack: ',0
  122.     mov    a,b    ;get size
  123.     call    pafdc    ;print
  124.     call    print
  125.     db    ' Elements'
  126.     db    cr,lf,' Shell Stack Elements:',0
  127.     mov    a,m    ;check for empty
  128.     ora    a
  129.     jnz    shdisp1
  130.     call    print
  131.     db    cr,lf,'   Shell Stack Empty',0
  132.     ret
  133. shdisp1:
  134.     mov    a,m    ;check for done
  135.     ora    a
  136.     rz
  137.     call    print
  138.     db    cr,lf,' --> ',0
  139.     push    h    ;save ptr
  140.     call    pstr    ;print element
  141.     pop    h    ;get ptr
  142.     dad    d    ;count down
  143.     dcr    b    ;count down
  144.     jnz    shdisp1
  145.     ret
  146.  
  147.     end
  148.