home *** CD-ROM | disk | FTP | other *** search
- ;
- ;TITLE 'SENDOUT UTILITY V.8 FOR CP/M AND MODEM AS OF 1/19/83 AAJ'
- ;
- ;THIS ROUTINE WRITTEN BY AL JEWER AND RELEASED IN PUBLIC
- ;DOMAIN 4/8/81.
- ;
- ; THIS PROGRAM AND DOCUMENTATION COPYRIGHT 1981, 1982, 1983
- ; BY AL JEWER. THIS SOFTWARE MUST NOT BE SOLD.
- ;
- ;THIS CP/M TRANSIENT COMMAND IS INVOKED IN THIS MANNER:
- ;
- ;A>SENDOUT XMODEM S FILENAME.TYP
- ;
- ;IN THIS EXAMPLE, THE STRING "XMODEM S FILENAME.TYP"
- ;WILL BE SENT OUT THE MODEM PORT TO A REMOTE SYSTEM.
- ;THIS IS FOR USE IN:
- ;
- ; 1) TRANSFERRING MULTIPLE PROGRAMS TO & FROM
- ; REMOTE USING A SUBMIT FILE
- ;
- ; 2) SENDING COMMANDS WITHOUT HAVING TO
- ; ENTER & EXIT THE "MODEM" PROGRAM
- ;
- ;THE STRING CAN BE UP TO 127 CHARACTERS LONG, AND IS
- ;ECHOED TO THE LOCAL CONSOLE AS IT IS SENT.
- ;
- ; DEFAULT MODE OF OPERATION
- ;
- ;THE PROGRAM WILL WAIT FOR A ">" CHARACTER BEFORE IT
- ;SENDS THE LINE, TO ALLOW THE REMOTE TO BE READY FOR
- ;THE COMMAND LINE. AS THE LINE IS SENT, THE PROGRAM
- ;WILL CHECK THE CHARACTERS ECHOED BACK TO ASSURE THAT
- ;THE COMMAND LINE HAS BEEN TRANSMITTED PROPERLY.
- ;IF AN ERROR IS DETECTED, THE PROGRAM WILL SEND OUT
- ;A ^U FOLLOWED BY A CARRIAGE RETURN, THEN RETRY
- ;SENDING THE LINE, UNTIL A PROPER TRANSMISSION IS MADE.
- ;
- ; SPECIAL MODE OF OPERATION (FOR NON-CP/M SYSTEMS)
- ;
- ; TO ALLOW USE WITH OTHER SYSTEMS, PROVISION HAS BEEN
- ; MADE TO CHANGE THE PROMPT CHARACTER IN THE COMMAND
- ; LINE, USING AN ASTRISK TO INDICATE THIS MODE.
- ; THE COMMAND THEN TAKES THE FORM:
- ;
- ; SENDOUT *?COMMAND LINE
- ;
- ; THIS COMMAND LINE WILL CAUSE THE SENDOUT PROGRAM TO
- ; WAIT FOR A '?' CHARACTER INSTEAD OF THE MORE USUAL '>'.
- ; ALSO, IN THE CASE WHERE A TRANSMISSION ERROR OCCURS,
- ; THE PROGRAM WILL SEND ASCII 'DELETE' CHARACTERS (07FH)
- ; TO CANCEL THE INPUT LINE. THIS IS USED INSTEAD OF THE
- ; ^U USUALLY USED IN CP/M.
- ;
- ; OR,
- ;
- ; SENDOUT *^JCOMMAND LINE
- ;
- ; THIS MODE WORKS THE SAME AS ABOVE, EXCEPT IN THIS CASE,
- ; THE 'TRIGGER' CHARACTER WILL BE A CONTROL-J (LINE FEED).
- ; NOTE THAT YOU MUST TYPE THE UP-ARROW CHARACTER TO
- ; INDICATE THAT THE ASCII CHARACTER FOLLOWING IS ACTUALLY
- ; A CONTROL CHARACTER. THIS ALLOWS USING ANY ASCII CHARACTER
- ; AS THE TRIGGER CHARACTER (EXCEPT, OF COURSE, FOR '^').
- ;
- ;UPDATES: (IN REVERSE ORDER TO MINIMIZE READING TIME)
- ;
- ;19-JAN-83 MODIFIED BY AL JEWER TO ALLOW USE WITH NON-CP/M
- ; SYSTEMS BY ALLOWING USER-SPECIFIED 'TRIGGER'
- ; CHARACTER. CHANGED APPLE MODS TO GENERAL
- ; PURPOSE MEMORY-MAPPED I/O ROUTINES. ELIMINATED
- ; MULTIPLE NAMES FOR PORTS AND MASK BITS.
- ;
- ; 5-OCT-82 ADDED EQUATES TO ALLOW USE WITH AN INTEL
- ; I8251 USART SERIAL PORT.
- ; DAVE MABRY
- ;
- ;15-JAN-81 MODIFIED BY JOHN LIMPERT TO ADD MEMORY
- ; MAPPED I/O FOR THE APPLE ][ WITH A D.C.
- ; HAYES MICROMODEM IN SLOT #2. SET APPLE
- ; TRUE FOR THIS CONFIGURATION.
- ;
- ;10-DEC-81 MODIFIED BY AL JEWER TO REMOVE REFERENCE TO
- ; LOCAL CONSOLE PORT (FUNCTION NOW PERFORMED
- ; BY BIOS CALLS)
- ; ALSO ADDED RETRY COUNTER TO GIVE UP IF PHONE
- ; LINE GETS TOO HORRIBLE.
- ;
- ;23-NOV-81 MODIFIED BY JOHN LABOVITZ. ADDED SOME
- ; SIGNON MESSAGES, AND ABILITY TO ABORT
- ; BY A ^C.
- ;
- ;15-AUG-81 MODIFIED BY HOWARD BOOKER TO INCLUDE
- ; CONDITIONAL EQUATES FOR THE DC HAYES
- ; 80-103A MODEM CARD.
- ;
- ;10-APR-81 REWRITTEN BY AL JEWER TO CHECK ECHOED
- ; STRING FOR VALID TRANSFER.
- ;
- ;08-APR-81 MODIFIED BY TOM JORGENSON FOR SUPPORT
- ; OF OTHER MODEM/PORT TYPES (ESP. H89)
- ;
- ;ANY QUESTIONS OR COMMENTS:
- ;
- ; AL JEWER
- ; PO BOX 123
- ; WHITEWATER, WI. 53190
- ;
- ; (414) 563-9932 (F4 RCPM SYSTEM)
- ;
- ;BASE DEFINITION, CHANGE THIS TO 4200H IF ALTERNATE CP/M
- ;(RELOCATED) VERSION SUCH AS HEATH/LIFEBOAT OR TRS-80
- ;
- BASE EQU 0 ;BASE OF MEMORY SEGMENT
- ;
- ;THESE SHOULD BE O.K. AS IS
- ;
- CBOOT EQU BASE ;JUMP HERE TO COLD BOOT CP/M
- BDOS EQU BASE+5 ;BDOS FUNCTION CALL ADDRESS
- BUFFER EQU BASE+80H ;INPUT LINE BUFFER
- CONOUT EQU 2 ;CP/M CONSOLE OUTPUT FROM E
- PLINE EQU 9 ;CP/M PRINT STRING AT (DE)
- CSTAT EQU 11 ;CP/M CONSOLE STATUS
- CONIN EQU 1 ;CP/M CONSOLE INPUT
- CR EQU 0DH ;ASCII CHARACTERS
- LF EQU 0AH
- CTLU EQU 'U'-40H ;CONTROL-U
- CTLC EQU 'C'-40H ;CONTROL-C
- DELETE EQU 07FH ;ASCII DELETE CHARACTER (RUBOUT)
- ;
- ; IF YOU REQUIRE DEFAULTS FOR OTHER THAN CP/M SYSTEMS, CHANGE THE
- ; EQUATES BELOW TO MATCH YOUR SYSTEM REQUIREMENTS.
- ;
- CANCEL EQU CTLU ;THIS CHARACTER CANCELS INPUT LINE
- ;
- DEFAULT EQU '>' ;DEFAULT TRIGGER CHARACTER (SYSTEM PROMPT)
- ;
- SPECIAL EQU '*' ;THIS CHARACTER, WHEN USED AS THE 1ST
- ; ;CHARACTER OF THE CP/M COMMAND LINE TAIL,
- ; ;INDICATES A REQUEST FOR THE NON-CP/M MODE.
- ; ;(SEE DOCUMENTATION ABOVE)
- ;
- FALSE EQU 0
- TRUE EQU NOT FALSE
- ;
- PMAPIO SET TRUE ;*** DO NOT CHANGE THIS STATEMENT ***
- ;THIS FLAG SETS PORT MAPPED OR MEMORY
- ;MAPPED I/O ROUTINES. IT IS ACTUALLY
- ;SET UP IN EQUATES BELOW.
- ;IF YOU ADD EQUATES FOR A DIFFERENT MODEM
- ;TYPE WHICH USES MEMORY MAPPED I/O, ADD
- ;A 'PMAP SET FALSE' STATEMENT TO YOUR
- ;EQUATE BLOCK (EX: APPLE EQUATES)
- ;
- FASTCLK EQU TRUE ;TRUE IF 4MHZ OR GREATER
- ;
- RETRYS EQU 32 ;RETRY THIS MANY TIMES BEFORE GIVING UP
- ;
- ;CHOOSE YOUR MODEM/PORT TYPE HERE:
- ;
- APPLE EQU FALSE ;TRUE, IF APPLE WITH MMII
- H89 EQU FALSE ;TRUE, IF H89
- PMMI EQU TRUE ;TRUE, IF PMMI
- DCH EQU FALSE ;TRUE, IF DCH
- INTEL EQU FALSE ;TRUE, IF INTEL MDS-225 OR EQUIVALENT
- ;
- IF PMMI
- ;
- ;CHANGE THE FOLLOWING IF YOUR PMMI IS NOT AT THE
- ;STANDARD BASE ADDRESS OF 0C0H.
- ;
- TPORT EQU 0C0H ;THIS IS STATUS PORT
- DPORT EQU TPORT+1 ;DATA I/O PORT
- POTBMT EQU 1 ;XMIT BUFFER EMPTY FLAG
- PODAV EQU 2 ;DATA AVAILABLE FLAG
- ;
- ENDIF ;PMMI
- ;
- IF H89
- ;
- ;SHOULD USE THESE AS LONG AS YOU CONFORM
- ;TO STD PORT ADDRESS (330Q)
- ;
- TPORT EQU 335Q ;STATUS PORT (8250 UART)
- DPORT EQU 330Q ;DATA PORT
- POTBMT EQU 040Q ;THRE BIT (TX BUFFER EMPTY)
- PODAV EQU 001Q ;DATA AVAILABLE FLAG
- ;
- ENDIF ;H89
- ;
- IF DCH
- ;
- ;STANDARD DC HAYES MODEL 80-103A PORTS
- ;
- TPORT EQU 81H ;STATUS PORT (TR1602 UART)
- DPORT EQU 80H ;DATA PORT
- POTBMT EQU 02H ;THRE BIT (TX BUFFER EMPTY)
- PODAV EQU 01H ;DATA AVAILABLE FLAG
- ;
- ENDIF ;DCH
- ;
- IF APPLE
- ;
- PMAPIO SET FALSE ;APPLE USES MEMORY MAPPED I/O
- ;
- ;APPLE ][ WITH MICROMODEM IN SLOT #2
- ;
- TPORT EQU 0E0A6H ;ACIA CSR
- DPORT EQU 0E0A7H ;ACIA DATA BUFFER
- POTBMT EQU 02H ;TRANSMIT REGISTER EMPTY BIT
- PODAV EQU 01H ;RECEIVER DATA AVAILABLE BIT
- ;
- ENDIF ;APPLE
- ;
- ;
- IF INTEL
- ;
- TPORT EQU 0F7H ; STATUS PORT (I8251 USART)
- DPORT EQU 0F6H ; DATA PORT
- POTBMT EQU 1 ; TRANSMITTER READY
- PODAV EQU 2 ; RECIEVER READY (IE CHAR AVAILABLE)
- ;
- ENDIF ;INTEL MDS-225
- ;
- ORG BASE+100H ;START OF TPA
- ;
- START: JMP START1 ;AROUND COPYRIGHT NOTICE
- DB 'Copyright 1981, 1982, 1983 Al Jewer'
- START1: LXI H,0 ;GET THE SYSTEM STACK POINTER
- DAD SP ;TO THE HL
- SHLD OLDSTK ;STORE FOR EXIT
- LXI SP,STACK ;SET SAFE STACK
- CALL ILPRT ;SAY HELLO TO THE FOLKS
- DB 'SENDOUT V. 8.0 -- Type ^C to ABORT',CR,LF,0
- MVI A,RETRYS ;SET RETRY COUNTER
- STA TRYNUM ;TO ITS INITIAL VALUE
- LHLD 1 ;GET WARM BOOT ADDRESS
- LXI D,4 ;PLUS 1 TABLE POSITION & 1 JMP
- DAD D ;GIVES CONSTAT VECTOR AT (HL)
- MOV E,M ;LO BYTE OF CONSTAT
- INX H ;POINT TO HI BYTE
- MOV D,M ;CONSTAT VECTOR NOW IN DE
- XCHG ;CONSTAT VECTOR NOW IN HL
- SHLD CST+1 ;INIT THE CONSTAT CALL
- LXI H,2 ;DISTANCE TO NEXT VECTOR
- DAD D ;THIS IS CONIN VECTOR AT (HL)
- MOV E,M ;LO BYTE OF CONIN
- INX H ;POINT TO HI BYTE
- MOV D,M ;CONIN VECTOR NOW IN DE
- XCHG ;CONIN VECTOR NOW IN HL
- SHLD CIN+1 ;INIT THE CONIN CALL
- LXI H,BUFFER ;POINT TO COMMAND LINE BUFFER
- MOV A,M ;GET THE CHARACTER COUNT
- ORA A ;ZERO LENGTH?
- JZ ERROR ;RETURN IF SO
- DCR A ;LENGTH OF 1? (THIS WOULD BE SPACE ONLY)
- JZ ERROR ;IGNORE THIS TOO
- INR A ;RESTORE VALUE
- INR A ;ADD 1 FOR FINAL CR
- INX H ;SKIP THE LEADING SPACE
- SHLD STRING ;STORE DEFAULT STRING ADDRESS
- STA SLEN ;AND DEFAULT STRING LENGTH
- MOV B,A ;STRING LENGTH IN B
- INX H ;SKIP THE SPACE
- MOV A,M ;GET THE 1ST CHARACTER ON THE LINE
- CPI SPECIAL ;IS IT ALTERNATE PROMPT REQUEST?
- JNZ NOSPCL ;JUMP IF EVERYTHING IS NORMAL
- DCR B ;SOAK UP TRIGGER CHARACTER & NEW PROMPT.
- DCR B ;
- INX H ;POINT TO NEW TRIGGER CHARACTER
- MOV A,M ;GET IT
- CPI