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 / MODEMS / MODEM / SENDOUT8.ASM < prev    next >
Assembly Source File  |  2000-06-30  |  8KB  |  271 lines

  1. ;
  2. ;TITLE 'SENDOUT UTILITY V.8 FOR CP/M AND MODEM AS OF 1/19/83 AAJ'
  3. ;
  4. ;THIS ROUTINE WRITTEN BY AL JEWER AND RELEASED IN PUBLIC
  5. ;DOMAIN 4/8/81. 
  6. ; THIS PROGRAM AND DOCUMENTATION COPYRIGHT 1981, 1982, 1983 
  7. ; BY AL JEWER. THIS SOFTWARE MUST NOT BE SOLD.
  8. ;
  9. ;THIS CP/M TRANSIENT COMMAND IS INVOKED IN THIS MANNER:
  10. ;
  11. ;A>SENDOUT XMODEM S FILENAME.TYP
  12. ;
  13. ;IN THIS EXAMPLE, THE STRING "XMODEM S FILENAME.TYP"
  14. ;WILL BE SENT OUT THE MODEM PORT TO A REMOTE SYSTEM.
  15. ;THIS IS FOR USE IN:
  16. ;
  17. ;        1) TRANSFERRING MULTIPLE PROGRAMS TO & FROM
  18. ;            REMOTE USING A SUBMIT FILE
  19. ;
  20. ;        2) SENDING COMMANDS WITHOUT HAVING TO
  21. ;            ENTER & EXIT THE "MODEM" PROGRAM
  22. ;
  23. ;THE STRING CAN BE UP TO 127 CHARACTERS LONG, AND IS 
  24. ;ECHOED TO THE LOCAL CONSOLE AS IT IS SENT.
  25. ;
  26. ;  DEFAULT MODE OF OPERATION
  27. ;
  28. ;THE PROGRAM WILL WAIT FOR A ">" CHARACTER BEFORE IT
  29. ;SENDS THE LINE, TO ALLOW THE REMOTE TO BE READY FOR
  30. ;THE COMMAND LINE. AS THE LINE IS SENT, THE PROGRAM 
  31. ;WILL CHECK THE CHARACTERS ECHOED BACK TO ASSURE THAT
  32. ;THE COMMAND LINE HAS BEEN TRANSMITTED PROPERLY.
  33. ;IF AN ERROR IS DETECTED, THE PROGRAM WILL SEND OUT
  34. ;A ^U FOLLOWED BY A CARRIAGE RETURN, THEN RETRY 
  35. ;SENDING THE LINE, UNTIL A PROPER TRANSMISSION IS MADE.
  36. ;
  37. ;  SPECIAL MODE OF OPERATION (FOR NON-CP/M SYSTEMS)
  38. ;
  39. ; TO ALLOW USE WITH OTHER SYSTEMS, PROVISION HAS BEEN 
  40. ; MADE TO CHANGE THE PROMPT CHARACTER IN THE COMMAND 
  41. ; LINE, USING AN ASTRISK TO INDICATE THIS MODE.
  42. ; THE COMMAND THEN TAKES THE FORM:
  43. ;
  44. ; SENDOUT *?COMMAND LINE
  45. ;
  46. ; THIS COMMAND LINE WILL CAUSE THE SENDOUT PROGRAM TO 
  47. ; WAIT FOR A '?' CHARACTER INSTEAD OF THE MORE USUAL '>'.
  48. ; ALSO, IN THE CASE WHERE A TRANSMISSION ERROR OCCURS,
  49. ; THE PROGRAM WILL SEND ASCII 'DELETE' CHARACTERS (07FH)
  50. ; TO CANCEL THE INPUT LINE. THIS IS USED INSTEAD OF THE 
  51. ; ^U USUALLY USED IN CP/M.
  52. ;
  53. ; OR,
  54. ;
  55. ; SENDOUT *^JCOMMAND LINE
  56. ;
  57. ; THIS MODE WORKS THE SAME AS ABOVE, EXCEPT IN THIS CASE,
  58. ; THE 'TRIGGER' CHARACTER WILL BE A CONTROL-J (LINE FEED).
  59. ; NOTE THAT YOU MUST TYPE THE UP-ARROW CHARACTER TO 
  60. ; INDICATE THAT THE ASCII CHARACTER FOLLOWING IS ACTUALLY
  61. ; A CONTROL CHARACTER. THIS ALLOWS USING ANY ASCII CHARACTER
  62. ; AS THE TRIGGER CHARACTER (EXCEPT, OF COURSE, FOR '^').
  63. ;
  64. ;UPDATES: (IN REVERSE ORDER TO MINIMIZE READING TIME)
  65. ;
  66. ;19-JAN-83 MODIFIED BY AL JEWER TO ALLOW USE WITH NON-CP/M
  67. ;          SYSTEMS BY ALLOWING USER-SPECIFIED 'TRIGGER'
  68. ;          CHARACTER. CHANGED APPLE MODS TO GENERAL 
  69. ;          PURPOSE MEMORY-MAPPED I/O ROUTINES. ELIMINATED
  70. ;          MULTIPLE NAMES FOR PORTS AND MASK BITS.
  71. ;
  72. ; 5-OCT-82 ADDED EQUATES TO ALLOW USE WITH AN INTEL
  73. ;          I8251 USART SERIAL PORT.
  74. ;                DAVE MABRY
  75. ;
  76. ;15-JAN-81 MODIFIED BY JOHN LIMPERT TO ADD MEMORY
  77. ;       MAPPED I/O FOR THE APPLE ][ WITH A D.C.
  78. ;       HAYES MICROMODEM IN SLOT #2. SET APPLE
  79. ;       TRUE FOR THIS CONFIGURATION.
  80. ;
  81. ;10-DEC-81 MODIFIED BY AL JEWER TO REMOVE REFERENCE TO
  82. ;       LOCAL CONSOLE PORT (FUNCTION NOW PERFORMED 
  83. ;       BY BIOS CALLS)
  84. ;       ALSO ADDED RETRY COUNTER TO GIVE UP IF PHONE
  85. ;       LINE GETS TOO HORRIBLE.
  86. ;
  87. ;23-NOV-81 MODIFIED BY JOHN LABOVITZ. ADDED SOME
  88. ;       SIGNON MESSAGES, AND ABILITY TO ABORT
  89. ;       BY A ^C.
  90. ;
  91. ;15-AUG-81 MODIFIED BY HOWARD BOOKER TO INCLUDE
  92. ;       CONDITIONAL EQUATES FOR THE DC HAYES
  93. ;       80-103A MODEM CARD.
  94. ;
  95. ;10-APR-81 REWRITTEN BY AL JEWER TO CHECK ECHOED
  96. ;       STRING FOR VALID TRANSFER.
  97. ;
  98. ;08-APR-81 MODIFIED BY TOM JORGENSON FOR SUPPORT
  99. ;       OF OTHER MODEM/PORT TYPES (ESP. H89)
  100. ;
  101. ;ANY QUESTIONS OR COMMENTS:
  102. ;
  103. ;    AL JEWER
  104. ;    PO BOX 123
  105. ;    WHITEWATER, WI. 53190
  106. ;
  107. ;    (414) 563-9932 (F4 RCPM SYSTEM)
  108. ;
  109. ;BASE DEFINITION, CHANGE THIS TO 4200H IF ALTERNATE CP/M
  110. ;(RELOCATED) VERSION SUCH AS HEATH/LIFEBOAT OR TRS-80
  111. ;
  112. BASE    EQU    0    ;BASE OF MEMORY SEGMENT
  113. ;
  114. ;THESE SHOULD BE O.K. AS IS
  115. ;
  116. CBOOT    EQU    BASE    ;JUMP HERE TO COLD BOOT CP/M
  117. BDOS    EQU    BASE+5    ;BDOS FUNCTION CALL ADDRESS
  118. BUFFER    EQU    BASE+80H ;INPUT LINE BUFFER
  119. CONOUT    EQU    2    ;CP/M CONSOLE OUTPUT FROM E
  120. PLINE    EQU    9    ;CP/M PRINT STRING AT (DE)
  121. CSTAT    EQU    11    ;CP/M CONSOLE STATUS
  122. CONIN    EQU    1    ;CP/M CONSOLE INPUT
  123. CR    EQU    0DH    ;ASCII CHARACTERS
  124. LF    EQU    0AH
  125. CTLU    EQU    'U'-40H ;CONTROL-U
  126. CTLC    EQU    'C'-40H ;CONTROL-C
  127. DELETE    EQU    07FH    ;ASCII DELETE CHARACTER (RUBOUT)
  128. ;
  129. ; IF YOU REQUIRE DEFAULTS FOR OTHER THAN CP/M SYSTEMS, CHANGE THE 
  130. ; EQUATES BELOW TO MATCH YOUR SYSTEM REQUIREMENTS.
  131. ;
  132. CANCEL    EQU    CTLU    ;THIS CHARACTER CANCELS INPUT LINE
  133. ;
  134. DEFAULT    EQU    '>'    ;DEFAULT TRIGGER CHARACTER (SYSTEM PROMPT)
  135. ;
  136. SPECIAL    EQU    '*'    ;THIS CHARACTER, WHEN USED AS THE 1ST 
  137. ;            ;CHARACTER OF THE CP/M COMMAND LINE TAIL,
  138. ;            ;INDICATES A REQUEST FOR THE NON-CP/M MODE.
  139. ;            ;(SEE DOCUMENTATION ABOVE)
  140. ;
  141. FALSE    EQU    0
  142. TRUE    EQU    NOT FALSE
  143. ;
  144. PMAPIO    SET    TRUE    ;*** DO NOT CHANGE THIS STATEMENT ***
  145.             ;THIS FLAG SETS PORT MAPPED OR MEMORY 
  146.             ;MAPPED I/O ROUTINES. IT IS ACTUALLY
  147.             ;SET UP IN EQUATES BELOW.
  148.             ;IF YOU ADD EQUATES FOR A DIFFERENT MODEM 
  149.             ;TYPE WHICH USES MEMORY MAPPED I/O, ADD
  150.             ;A 'PMAP SET FALSE' STATEMENT TO YOUR 
  151.             ;EQUATE BLOCK (EX: APPLE EQUATES)
  152. ;
  153. FASTCLK EQU    TRUE     ;TRUE IF 4MHZ OR GREATER
  154. ;
  155. RETRYS    EQU    32    ;RETRY THIS MANY TIMES BEFORE GIVING UP
  156. ;
  157. ;CHOOSE YOUR MODEM/PORT TYPE HERE:
  158. ;
  159. APPLE    EQU    FALSE    ;TRUE, IF APPLE WITH MMII
  160. H89    EQU    FALSE    ;TRUE, IF H89
  161. PMMI    EQU    TRUE     ;TRUE, IF PMMI
  162. DCH    EQU    FALSE    ;TRUE, IF DCH
  163. INTEL    EQU    FALSE    ;TRUE, IF INTEL MDS-225 OR EQUIVALENT
  164. ;
  165.     IF    PMMI
  166. ;
  167. ;CHANGE THE FOLLOWING IF YOUR PMMI IS NOT AT THE 
  168. ;STANDARD BASE ADDRESS OF 0C0H.
  169. ;
  170. TPORT    EQU    0C0H    ;THIS IS STATUS PORT
  171. DPORT    EQU    TPORT+1 ;DATA I/O PORT
  172. POTBMT    EQU    1    ;XMIT BUFFER EMPTY FLAG
  173. PODAV    EQU    2    ;DATA AVAILABLE FLAG
  174. ;
  175.     ENDIF        ;PMMI
  176. ;
  177.     IF    H89
  178. ;
  179. ;SHOULD USE THESE AS LONG AS YOU CONFORM
  180. ;TO STD PORT ADDRESS (330Q)
  181. ;
  182. TPORT    EQU    335Q    ;STATUS PORT (8250 UART)
  183. DPORT    EQU    330Q    ;DATA PORT
  184. POTBMT    EQU    040Q    ;THRE BIT (TX BUFFER EMPTY)
  185. PODAV    EQU    001Q    ;DATA AVAILABLE FLAG
  186. ;
  187.     ENDIF        ;H89
  188. ;
  189.     IF DCH
  190. ;
  191. ;STANDARD DC HAYES MODEL 80-103A PORTS
  192. ;
  193. TPORT    EQU    81H    ;STATUS PORT (TR1602 UART)
  194. DPORT    EQU    80H    ;DATA PORT
  195. POTBMT    EQU    02H    ;THRE BIT (TX BUFFER EMPTY)
  196. PODAV    EQU    01H    ;DATA AVAILABLE FLAG
  197. ;
  198.     ENDIF        ;DCH
  199. ;
  200.     IF APPLE
  201. ;
  202. PMAPIO    SET    FALSE    ;APPLE USES MEMORY MAPPED I/O
  203. ;
  204. ;APPLE ][ WITH MICROMODEM IN SLOT #2
  205. ;
  206. TPORT     EQU    0E0A6H    ;ACIA CSR
  207. DPORT     EQU    0E0A7H    ;ACIA DATA BUFFER
  208. POTBMT    EQU    02H    ;TRANSMIT REGISTER EMPTY BIT
  209. PODAV     EQU    01H    ;RECEIVER DATA AVAILABLE BIT
  210. ;
  211.     ENDIF        ;APPLE
  212. ;
  213. ;
  214.     IF    INTEL
  215. ;
  216. TPORT    EQU    0F7H    ; STATUS PORT (I8251 USART)
  217. DPORT    EQU    0F6H    ; DATA PORT
  218. POTBMT    EQU    1    ; TRANSMITTER READY
  219. PODAV    EQU    2    ; RECIEVER READY (IE CHAR AVAILABLE)
  220. ;
  221.     ENDIF        ;INTEL MDS-225
  222. ;
  223. ORG    BASE+100H    ;START OF TPA
  224. ;
  225. START:    JMP     START1    ;AROUND COPYRIGHT NOTICE
  226.     DB    'Copyright 1981, 1982, 1983 Al Jewer'
  227. START1:    LXI     H,0    ;GET THE SYSTEM STACK POINTER 
  228.     DAD    SP    ;TO THE HL
  229.     SHLD    OLDSTK    ;STORE FOR EXIT
  230.     LXI    SP,STACK ;SET SAFE STACK
  231.     CALL    ILPRT    ;SAY HELLO TO THE FOLKS
  232.     DB    'SENDOUT V. 8.0  --  Type ^C to ABORT',CR,LF,0
  233.     MVI    A,RETRYS ;SET RETRY COUNTER 
  234.     STA    TRYNUM    ;TO ITS INITIAL VALUE
  235.     LHLD    1    ;GET WARM BOOT ADDRESS
  236.     LXI    D,4    ;PLUS 1 TABLE POSITION & 1 JMP
  237.     DAD    D    ;GIVES CONSTAT VECTOR AT (HL)
  238.     MOV    E,M    ;LO BYTE OF CONSTAT
  239.     INX    H    ;POINT TO HI BYTE
  240.     MOV    D,M    ;CONSTAT VECTOR NOW IN DE
  241.     XCHG        ;CONSTAT VECTOR NOW IN HL
  242.     SHLD    CST+1    ;INIT THE CONSTAT CALL
  243.     LXI    H,2    ;DISTANCE TO NEXT VECTOR
  244.     DAD    D    ;THIS IS CONIN VECTOR AT (HL)
  245.     MOV    E,M    ;LO BYTE OF CONIN
  246.     INX    H    ;POINT TO HI BYTE
  247.     MOV    D,M    ;CONIN VECTOR NOW IN DE
  248.     XCHG        ;CONIN VECTOR NOW IN HL
  249.     SHLD    CIN+1    ;INIT THE CONIN CALL
  250.     LXI    H,BUFFER ;POINT TO COMMAND LINE BUFFER
  251.     MOV    A,M    ;GET THE CHARACTER COUNT
  252.     ORA    A    ;ZERO LENGTH?
  253.     JZ    ERROR    ;RETURN IF SO
  254.     DCR    A    ;LENGTH OF 1? (THIS WOULD BE SPACE ONLY)
  255.     JZ    ERROR    ;IGNORE THIS TOO
  256.     INR    A    ;RESTORE VALUE
  257.     INR    A    ;ADD 1 FOR FINAL CR
  258.     INX    H    ;SKIP THE LEADING SPACE
  259.     SHLD    STRING    ;STORE DEFAULT STRING ADDRESS
  260.     STA    SLEN    ;AND DEFAULT STRING LENGTH
  261.     MOV    B,A    ;STRING LENGTH IN B
  262.     INX    H    ;SKIP THE SPACE
  263.     MOV     A,M    ;GET THE 1ST CHARACTER ON THE LINE
  264.     CPI     SPECIAL    ;IS IT ALTERNATE PROMPT REQUEST?
  265.     JNZ    NOSPCL    ;JUMP IF EVERYTHING IS NORMAL
  266.     DCR    B    ;SOAK UP TRIGGER CHARACTER & NEW PROMPT.
  267.     DCR     B    ;
  268.     INX    H    ;POINT TO NEW TRIGGER CHARACTER
  269.     MOV     A,M    ;GET IT
  270.     CPI