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 / CPM / 22RSX / RXMD.ARK / RXMD06.MAC < prev    next >
Text File  |  1985-12-08  |  2KB  |  101 lines

  1. ;
  2. ; Check for special tags in FCB.  NZ if tagged
  3. ; a,f,h,l
  4. qtags:    lda    fcb+10;        .SYS file tag
  5.     lxi    h,fcb+1;    F1 tag
  6.     ora    m
  7.     inx    h
  8.     ora    m;        F2 tag
  9.     ani    80h
  10.     ret;            z flag if not tagged
  11. ;
  12. ; Loads the batch file names into the storage buffer
  13. ; a,f,b,c,d,e,h,l
  14. tnmbuf:    xra    a
  15.     sta    filcnt;        Reset file count
  16.     call    scan
  17.     lxi    h,nambuf
  18.     shld    nbsave;        Save adr of 1st name in NBSAVE
  19. tnlp1:    call    trtobuf;    Move a filename into FCBBUF
  20.     lxi    h,fcb
  21.     lxi    d,fcbbuf
  22.     call    cmdln;        Parse name to CP/M format
  23. tnlp2:    call    mfnam;        Search for names (wildcard format)
  24.     jc    nextnm
  25.     mvi    a,filsiz
  26.     call    fileop
  27.     lhld    random;        Get number of records in this file
  28.     mov    a,h
  29.     ora    l
  30.     jz    tnlp2;        eliminate empty files
  31.     push    h;        Save temporarily
  32.     call    qwheel
  33.     jnz    tnlp3;        wheel, no restrictions
  34.     call    qtags;        If not wheel, check for tags
  35.     jnz    tnlp4;        If tagged, do not send
  36.     call    qtyp
  37.     jc    tnlp4;        restricted type, do not send
  38. ;    "    "
  39. tnlp3:    lhld    nbsave;        Get the filename
  40.     lxi    d,fcb;        Move it to FCB
  41.     xchg
  42.     call    move12
  43.     xchg
  44.     shld    nbsave;        Address of next name
  45.     lxi    h,filcnt;    Count files found
  46.     inr    m
  47. ;    "    "
  48. ; Add up the total records for all files to be sent
  49.     pop    h;        Get number of records in this file
  50.     push    h;        Save for later
  51.     xchg
  52.     lhld    totrec;        Get record count up to this file
  53.     dad    d;        Add this file to previous total
  54.     shld    totrec;        New total record count
  55.     pop    h;        Get the length of this file
  56.     push    h
  57.     lxi    d,15;        Bring up to closest 2k size
  58.     dad    d
  59.     inx    d;        Divide result by 16
  60.     call    dvhlde
  61.     lhld    blokk;        Current number of 2k blocks needed
  62.     dad    b
  63.     shld    blokk
  64. tnlp4:    pop    h;        clear off current filesize
  65.     jmp    tnlp2
  66. ;
  67. ;
  68. nextnm:    lxi    h,namect;    Count names found
  69.     dcr    m
  70.     jnz    tnlp1
  71.     lxi    h,nambuf;    Save start of buffer
  72.     shld    nbsave
  73.     ret
  74. ;
  75. ; -------------------------------------------------------------------
  76. ;
  77. ; Places next name in buffer so 'CMDLINE' may parse it
  78. ;
  79. trtobuf:
  80.     lhld    bgnms
  81.     mvi    b,0
  82.     lxi    d,fcbbuf+2
  83. tblp:    mov    a,m
  84.     cpi    ' '
  85.     jz    trbfend
  86.     stax    d
  87.     inx    h
  88.     inx    d
  89.     inr    b;        Count chars in name
  90.     jmp    tblp
  91. ;
  92. trbfend:
  93.     inx    h
  94.     mov    a,m;        Eat extra spaces
  95.     cpi    ' '
  96.     jz    trbfend
  97.     shld    bgnms
  98.     lxi    h,fcbbuf+1;    Put # chars before name
  99.     mov    m,b
  100.     ret
  101. ⁿ