home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / ZSYS / SIMTEL20 / ZCPR3 / CD.MQC / CD.MAC
Text File  |  2000-06-30  |  3KB  |  152 lines

  1. ;
  2. ; Program:  CD
  3. ; Version:  3.0
  4. ; Author:  Richard Conn
  5. ; Date: 12 Apr 84
  6. ; Previous Versions: None
  7. ; Derivation: In Concept from CD 2.4 for ZCPR2
  8. ;
  9. version    equ    30
  10. z3env    set    0f400h
  11.  
  12. ;
  13. ;    CD is used to log into a new directory by name or DU (DIR or DU forms)
  14. ; and to automatically run ST once there if it is available.
  15. ;
  16. ;    Syntax:
  17. ;        CD or CD //    <-- Print Help
  18. ;        CD dir:        <-- Log In and Run ST.COM
  19. ;
  20.  
  21. ;
  22. ; OS Equates et al
  23. ;
  24. cpm    equ    0
  25. udbyte    equ    4
  26. bdos    equ    5
  27. fcb    equ    5ch
  28. tbuff    equ    80h
  29. tpa    equ    100h
  30. cr    equ    0dh
  31. lf    equ    0ah
  32.  
  33. ;
  34. ; SYSLIB and Z3LIB Functions
  35. ;
  36.     ext    z3init,z3log
  37.     ext    retud,moveb,initfcb,putcl,eprint,pafdc,cout,dutdir
  38.  
  39. ;
  40. ; Environment Definition
  41. ;
  42.     if    z3env ne 0
  43. ;
  44. ; External ZCPR3 Environment Descriptor
  45. ;
  46.     jmp    start
  47.     db    'Z3ENV'    ;This is a ZCPR3 Utility
  48.     db    1    ;External Environment Descriptor
  49. z3eadr:
  50.     dw    z3env
  51. start:
  52.     lhld    z3eadr    ;pt to ZCPR3 environment
  53. ;
  54.     else
  55. ;
  56. ; Internal ZCPR3 Environment Descriptor
  57. ;
  58.     MACLIB    Z3BASE.LIB
  59.     MACLIB    SYSENV.LIB
  60. z3eadr:
  61.     jmp    start
  62.     SYSENV
  63. start:
  64.     lxi    h,z3eadr    ;pt to ZCPR3 environment
  65.     endif
  66.  
  67. ;
  68. ; Start of Program -- Initialize ZCPR3 Environment
  69. ;
  70.     call    z3init    ;initialize the ZCPR3 Env and the VLIB Env
  71.     lda    fcb+1    ;check for help
  72.     cpi    '/'    ;help?
  73.     jnz    cd
  74.     call    eprint
  75.     db    'CD, Version '
  76.     db    (version/10)+'0','.',(version mod 10)+'0'
  77.     db    cr,lf,'Syntax:'
  78.     db    cr,lf,'  CD dir:  or  CD du:  <-- Change Directory'
  79.     db    0
  80.     ret
  81. ;
  82. ; Log into DU converted by ZCPR3
  83. ;
  84. cd:
  85.     lxi    d,fcb    ;pt to FCB
  86.     call    z3log    ;login to DU
  87.     call    retud    ;set DU in the UD byte
  88.     mov    a,c    ;set user
  89.     rlc        ;rotate right 4 bits
  90.     rlc
  91.     rlc
  92.     rlc
  93.     ani    0f0h    ;mask
  94.     mov    c,a    ;save for now
  95.     mov    a,b    ;get disk
  96.     ani    0fh    ;mask
  97.     ora    c    ;mask in user
  98.     sta    udbyte    ;save value in UD byte
  99. ;
  100. ; Print New Directory
  101. ;
  102.     call    eprint
  103.     db    ' Logging Into ',0
  104.     call    retud    ;get DU in BC
  105.     mov    a,b    ;get disk
  106.     adi    'A'
  107.     call    cout
  108.     mov    a,c    ;get user
  109.     call    pafdc    ;print number
  110.     mvi    a,':'    ;print colon
  111.     call    cout
  112.     call    dutdir    ;convert to name
  113.     jz    runfile    ;run file if no name
  114.     mvi    b,8    ;8 chars max to name (pted to by HL)
  115. prtname:
  116.     mov    a,m    ;get name char
  117.     cpi    ' '    ;done?
  118.     jz    runfile
  119.     inx    h    ;pt to next
  120.     call    cout
  121.     dcr    b    ;count down
  122.     jnz    prtname
  123. ;
  124. ; Look for File
  125. ;
  126. runfile:
  127.     lxi    h,stfile    ;pt to FCB
  128.     lxi    d,fcb        ;copy into FCB
  129.     mvi    b,12        ;12 bytes
  130.     call    moveb
  131.     call    initfcb        ;init FCB
  132.     mvi    c,15        ;try to open file
  133.     call    bdos        ;use BDOS
  134.     cpi    0ffh        ;not found?
  135.     jz    cpm        ;done - no ST.COM
  136.     lxi    h,stcl        ;pt to default command line
  137.     call    putcl        ;store it in ZCPR3 CL Buffer
  138.     jnz    cpm        ;abort to OS if done
  139.     call    eprint        ;print error message
  140.     db    ' Command Line Overflow',0
  141.     jmp    cpm
  142.  
  143. ;
  144. ; Buffers
  145. ;
  146. stfile:
  147.     db    0,'ST      COM'    ;default command
  148. stcl:
  149.     db    'ST',0        ;default command line
  150.  
  151.     end
  152.