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 / BEEHIVE / BBS / KMD23.LBR / KMD23OVL.AZM / KMD23OVL.ASM
Assembly Source File  |  2000-06-30  |  13KB  |  327 lines

  1.  
  2. ; KMD23OVL.ASM    -  KMD CP/M FILE TRANSFER PROGRAM OVERLAY  -  01/11/88
  3. ;
  4. ;                  by
  5. ;                Irvin M. Hoff
  6. ;        copyrighted (c) 1985, 1986, 1987, 1988
  7. ;
  8. ;
  9. ;    This program assembles with ASM, LASM, M80, MAC, RMAC or SLRMAC.
  10. ;    If using M80, remove the ";;" at the beginning of the ASEG line.
  11. ;
  12. ;;    ASEG        ; Needed for M80, ignore for other assemblers
  13. ;
  14. ;=======================================================================
  15. ;
  16. ;    This is an universal CP/M-80 file transfer program that gets
  17. ;    its I/O (and time clock, if used) information from the BYE5
  18. ;    program itself - thus no hardware specific or time clock over-
  19. ;    lays are needed, and no overlay libraries need to be retained.
  20. ;    It uses the XMODEM protocol with either CRC or checksum.  It
  21. ;    supports automatic (or manual) 1k protocol.  It has KMD batch
  22. ;    mode that is compatible with YMODEM batch other than does not
  23. ;    use date in Julian or time in octal.  It is based on a 1979
  24. ;    program called XMODEM by Keith Petersen, which was adapted from
  25. ;    Ward Christensen's 1978 MODEM2 program.  Many of the routines
  26. ;    in the version used had been added by the the authors of this
  27. ;    program.
  28. ;                    - Irv Hoff, W6FFC
  29. ;                      (415) 948-2166  (voice)
  30. ;                      (415) 948-2513  PRACSA RCPM
  31. ;
  32. ;=======================================================================
  33. ;
  34. ; Read the KMD23.UPD file to see what this and past versions have added.
  35. ; It provides you with valuable data on understanding and using the many
  36. ; support files that are available, such as FOR, NEW, KFOR, KNEW, KMDEL,
  37. ; etc.
  38. ;
  39. ;=======================================================================
  40. ;
  41. ; TO USE:
  42. ; ------
  43. ; 1) Edit the KMD23OVL.ASM overlay for desired options.  (The ones most-
  44. ;    changed are marked with an asterisk '*' in the comment field).
  45. ; 2) Assemble to a .HEX file.
  46. ; 3) Use MLOAD.COM to merge KMD23.COM with your new KMD23OVL.HEX file:
  47. ;    B>MLOAD KMD.COM=KMD23.COM,KMD23OVL.HEX.
  48. ; 4) Finished, ready to use, requires BYE5 (uses its I/O and time clock)
  49. ;    or a slightly modified XMODEM overlay if not using BYE5.
  50. ;
  51. ;
  52. ; Selecting options:
  53. ; -----------------
  54. ; Options that are most often changed are marked with ';*' at the start
  55. ; of the comment line for that option.    Simple systems not using time
  56. ; clocks, user logs, etc. will keep most of those 'NO'.  RCPM systems
  57. ; running the usual bulletin board systems, etc., will change most of
  58. ; those to 'YES'.
  59. ;
  60. ; When finished changing whatever options are desired, use your normal
  61. ; assembler to get a .HEX file of this overlay.  Then use MLOAD.COM to
  62. ; merge into the KMD.COM file with your new changes:
  63. ;
  64. ;        A>MLOAD KMD.COM=KMD23.COM,KMD23OVL.HEX
  65. ;
  66. ; MLOAD.COM is included with this overlay file, but SID.COM or DDT.COM
  67. ; may also be used to merge the KMD23OVL.HEX file with KMD23.COM if you
  68. ; then save the correct number of memory pages as the new KMDA.COM file.
  69. ;
  70. ;                    - Notes by Irv Hoff W6FFC
  71. ;
  72. ;======================================================================
  73. ;
  74. YES    EQU    0FFH
  75. NO    EQU    0
  76. ;
  77. CR    EQU    0DH
  78. LF    EQU    0AH
  79. ;
  80. ;
  81.     ORG    0100H
  82. ;
  83.     DS    3
  84. ;
  85. ;
  86. ;-----------------------------------------------------------------------
  87. ;
  88. ; Options - change to suit your system, then assemble to get a .HEX file
  89. ;
  90. ;-----------------------------------------------------------------------
  91. ;
  92. MHZ:    DB    4    ;*Clock speed, use integer (2,4,5,8, etc.)
  93. MSPEED:    DW    003CH    ; Location of BYE5's modem speed indicator
  94. ;
  95. ;-----------------------------------------------------------------------
  96. ;
  97. ; Normal disk systems can transfer 16k from computer to disk in 2-3-4
  98. ; seconds and less.  Some very slow 5-1/4" floppy systems (such as North
  99. ; Star) may take up to 20-30 seconds to transfer 16k.  This would cause
  100. ; several timeouts at 10 seconds each.    If you experience any timeouts,
  101. ; change the BUFSIZ to somethng smaller, perhaps 8k or even 4k.
  102. ;
  103. BUFSIZ:    DB    16    ; File transfer buffer size in Kbytes
  104. ;
  105. ;-----------------------------------------------------------------------
  106. ;
  107. DESCRIB:DB    yes    ;*Yes, asks for a description of uploaded file
  108. DRIVE:    DB    'A'    ; Drive area for description of upload
  109. USER:    DB    14    ; User area for description of upload
  110. ;
  111. ;-----------------------------------------------------------------------
  112. ;
  113. DRIVMAX:DW    003DH    ; Location of MAXDRIV byte
  114. USRMAX:    DW    003FH    ; Location of MAXUSER byte
  115. WHEEL:    DW    003EH    ;*Location of ZCMD or ZCPR2 wheel byte.  If
  116.             ;   using if ZCPR3, run SHOW.COM to find correct
  117.             ;   address for the WHEEL byte.
  118. ;-----------------------------------------------------------------------
  119. ;
  120. ; The following will all be available for the SYSOP's personal use when
  121. ; the wheel byte is set in local non-zero (0FFH) mode.    If not using a
  122. ; wheel byte, select manually with a YES.
  123. ;
  124. NOCOMR:    DB    NO    ; NO = change .COM to .OBJ and .PRL to .OBP
  125. NOCOMS:    DB    no    ;*Permit sending .COM files?
  126. NOLBS:    DB    NO    ; Permit sending .??# files?
  127. NOSYS:    DB    NO    ; Permit sending .SYS files?
  128. ;
  129. ;-----------------------------------------------------------------------
  130. ;
  131. ZCPR:    DB    yes    ;*Yes, if using ZCMDR or ZCPR with WHEEL byte
  132.             ;   implemented.  If Yes, .NDR, .RCP and .SYS
  133.             ;   files not received.
  134. ;-----------------------------------------------------------------------
  135. ;
  136. ; Allows drive/user area to be specified for downloading.  If using ZCMD
  137. ; or ZCPR, set USEMAX 'YES'.  Then the answers to MAXDRV and MAXUSR are
  138. ; ignored.
  139. ;
  140. USEMAX:    DB    YES    ;*Yes ZCMD or ZCPR for DRIVMAX & USRMAX values
  141.             ; No to use MAXDRV and MAXUSR specified next
  142. ;
  143. ; If USEMAX above is set YES for automatic operation the following two
  144. ; are ignored.    If set NO, the following will be used.
  145. ;
  146. MAXDRV:    DB    4    ; Number of disk drives used
  147. MAXUSR:    DB    12    ; Maximum user area allowed
  148. ;
  149. ;-----------------------------------------------------------------------
  150. ;
  151. ; Selects the drive/user area for uploading private files for the SYSOP.
  152. ; This permits experimental files, replacement files and proprietary
  153. ; programs to be sent to the SYSOP.
  154. ;
  155. PRDRV:    DB    'B'    ; Private drive for SYSOP to receive file
  156. PRUSR:    DB    15    ; Private user area for SYSOP to receive file
  157. ;
  158. ;-----------------------------------------------------------------------
  159. ;
  160. ; Selects the drive/user area for downloading private files from the
  161. ; SYSOP. This permits him to put a special file in this area, then leave
  162. ; a private note to that person mentioning the name of the file and to
  163. ; use "SP".  Although anybody could download that program, they don't
  164. ; know what (if any) files are there.  A high degree of security exists,
  165. ; while the SYSOP still has the ability to make special files available.
  166. ; Thus any person can be a temporary "privileged user".  (Wildcards and
  167. ; batch are not allowed, for what should be obvious reasons.)
  168. ;
  169. SPLDRV:    DB    'B'    ; Special drive area for downloading SYSOP files
  170. SPLUSR:    DB    15    ; Special user area for downloading SYSOP files
  171. ;
  172. ;-----------------------------------------------------------------------
  173. ;
  174. ; Allows uploading to be done on a specified driver and user area so all
  175. ; viewers (including the SYSOP) can readily find the latest entries.
  176. ;
  177. SETAREA:DB    YES    ; Yes, if using designated area to receive files
  178. DRV:    DB    'B'    ;*Drive to receive file on
  179. USR:    DB    0    ; User area to receive file in
  180. ;
  181. ;-----------------------------------------------------------------------
  182. ;
  183. ; Allows separate area for another type of file, such as MS-DOS.  NEWLST
  184. ; permits putting the descriptions in with the main files, if desired.
  185. ; If YES, makes separate listing.  NIBMDR and NIBMUS will then put those
  186. ; files wherever you request - prevents overcrowding if somebody fills
  187. ; the upload area.
  188. ;
  189. MSDOS:    DB    yes    ;*Yes if using separate area for MS-DOS files
  190. IBMDRV:    DB    'D'    ; Drive to upload MS-DOS, NEW and FOR files
  191. IBMUSR:    DB    0    ; User area for IBM files
  192. NEWLST:    DB    YES    ; Yes to put MSDOS "NEW" and "FOR" lists on new
  193.             ;    new drive, NO to keep them on CP/M lists
  194. NIBMDR:    DB    'A'    ; Drive for the IBM KDM.LOG and FOR files
  195. NIBMUS:    DB    13    ; User area for the IBM KMD.LOG and FOR files
  196. ;
  197. ;-----------------------------------------------------------------------
  198. ;
  199. MSGFIL:    DB    NO    ; Yes if supporting message files, No if not
  200.             ; (Not supported by most BBS systems)
  201. ;
  202. ;-----------------------------------------------------------------------
  203. ;
  204. ; Set the following equate YES, if your BBS software sets BYE5's LCPTR
  205. ; bit-mapped flag register to restrict user's ability to download files.
  206. ; This is used on systems that require at least an occassional upload to
  207. ; allow the user to continue numerous downloads.  See BYE5.DOC for a de-
  208. ; scription of how to implement the LCPTR byte.
  209. ;
  210. ;    Bit-5  KMD downloads allowed?      (0 = NO, 1 = YES)
  211. ;
  212. RESUSR:    DB    yes    ;*YES, if restricting downloads
  213. ;
  214. ;-----------------------------------------------------------------------
  215. ;
  216. XCANCL:    DB    YES    ; Cancel file transfer with 3 or more CTL-X's
  217. ;
  218. ;-----------------------------------------------------------------------
  219. ;
  220. ; A few spares for possible future additions so this overlay will not be
  221. ; obsolete at that time.
  222. ;
  223. SPARES1:DB    0,0
  224. ;
  225. ;-----------------------------------------------------------------------
  226. ;            logging options
  227. ;
  228. ; File transfer logging options
  229. ;
  230. LOGCAL:    DB    yes    ;*Yes, logs KMD transfers
  231. LOGDRV:    DB    'A'    ; Drive to place 'KMD.LOG' file
  232. LOGUSR:    DB    14    ; User area to put 'KMD.LOG' file
  233. LASTDRV:DB    'A'    ; Drive 'LASTCALR???'file is on
  234. LASTUSR:DB    14    ; User area of 'LASTCALR???' file
  235. LCNAME:    DB    1    ; Column # where the caller's name starts in
  236.             ;   LASTCALR, normally column one.  Some BBS
  237.             ;   systems start in col. 12 if CLOCK is YES.
  238. NAMELEN:DB    2    ;*Number of names in LASTCALR for a user, some
  239.             ;   BBS systems allow 3 names.    (John H. Smith)
  240.             ;   Select 2 or 3, accordingly - you can use a
  241.             ;   larger number (like 50) if you want to use
  242.             ;   up to the first CR or LF in LASTCALR.
  243. CPM3:    DB    NO    ; Yes if using CP/M 3.0 and LOGCAL is Yes
  244. ;
  245. ;        end of logging options
  246. ;-----------------------------------------------------------------------
  247. ;         start of TIMEON area
  248. ;
  249. CLOCK:    DB    yes    ;*If YES, you must have clock code installed in
  250.             ;   BYE5 that sets RTCBUF with time/date and
  251.             ;   time-on-system.  Status and MXTIME are also
  252.             ;   picked up from BYE5.
  253. DTOS:    DB    yes    ;*Yes to display "time on system" messages
  254. EDATE:    DB    NO    ; Yes to show dd/mm/yy vice mm/dd/yy in KMD.LOG
  255. TIMEON:    DB    yes    ;*Yes to police time-on-system with BYE5
  256. ;
  257. ; NOTE: If ZCPR = YES and WHEEL byte is set, send time is unlimited.  If
  258. ;    TIMEON is YES, unlimited time is allowed if MAXMIN in BYE5 is 0.
  259. ;    Set CLOCK and TIMEON the same way in BYE5 and KMD.  Select your
  260. ;    preference and set MAXMIN in BYE5.  Suggest using 60 if CLOCK
  261. ;    and TIMEON are YES, and 45 if CLOCK is NO.  See examples below.
  262. ;
  263. ;         TIME    300 BPS  1200 BPS 1k    2400 BPS 1k
  264. ;        ------    -------  ------------    ------------
  265. ;        30 min     48.7k      180k     200k     320k    380k
  266. ;        45 min     73.1k      270k     300k     480k    570k
  267. ;        60 min     97.5k      360k     400k     640k    760k
  268. ;
  269. CREDIT:    DB    yes    ;*Yes to credit upload time to BYE5's MXTIME
  270. ;
  271. LOGLDS:    DB    yes    ;*Count number of up/down loads since login.
  272.             ;   Your BBS program can check UPLDS and DNLDS
  273.             ;   when user logs out and update either the
  274.             ;   user's file or a file for this purpose.
  275.             ;   You can either modify your BBS entry program
  276.             ;   to check the LASTCALR file before updating
  277.             ;   it and then update (risky), or make a sepa-
  278.             ;   rate program that BYE calls when logging
  279.             ;   off a user (preferred).
  280. ;
  281. UPLDS:    DW    0054H    ; Clear these values to Zero from your BBS pro-
  282. DNLDS:    DW    0055H    ;   gram when somebody logs in.  NOTE:    Clear
  283.             ;   ONLY when a user logs in.  Not when he re-
  284.             ;   enters the BBS program from CP/M.
  285. ;
  286. ;         end of TIMEON area
  287. ;-----------------------------------------------------------------------
  288. ;
  289. ; File descriptors, change as desired if this list is not suitable.
  290. ; Move the line with the terminating '$' up, if fewer descriptors are
  291. ; desired.  There are 129 extra bytes available.  Be sure to terminate
  292. ; before address 0250h.  (Can check with a .PRN file if getting close.)
  293. ;
  294. FILDES:    DB    CR,LF,'  0) - ''C'' '    ; (Extra space needed for M80)
  295.     DB    CR,LF,'  1) - CP/M'
  296.     DB    CR,LF,'  2) - dBASE'
  297.     DB    CR,LF,'  3) - MS/DOS'
  298.     DB    CR,LF,'  4) - PASCAL'
  299.     DB    CR,LF,'  5) - RCPM/BBS'
  300.     DB    CR,LF,'  6) - ZCPR3'
  301.     DB    CR,LF,'  7) - Other'
  302.     DB    CR,LF,'  8) - (spare)'
  303.     DB    CR,LF,'  9) - (spare)'
  304.     DB    CR,LF,'$'
  305. ;
  306. GUIDE:    DS    0        ; MUST QUIT PRIOR TO 0250H
  307. ;.....
  308. ;
  309.     ORG    0250H
  310. ;
  311. ; This section selects the text used when sending files to different
  312. ; portions of the disk.  Not used unless the MSDOS option is set YES.
  313. ; There are 175 byes available (including those shown.)  Must terminate
  314. ; before address 0300h.  (Can check with a .PRN file if getting close.)
  315. ;
  316. SELECT:    DB    CR,LF,'        1 for  8-bit (CP/M, Apple, general)'
  317.     DB    CR,LF,'        2 for 16-bit (IBM, Macintosh, Atari, '
  318.     DB    'Amiga)'
  319.     DB    CR,LF,'$'
  320. ;
  321. GUIDE1:    DS    0
  322. ;
  323. ;            end of overlay
  324. ;-----------------------------------------------------------------------
  325. ;
  326.     END
  327.