TITLE 'FLIP - Toggle originate/answer mode under "bye"' ; ; Originally written by Bruce Ratoff. ; ; VERSION LIST: Most recent version first ; ;29/Feb/84 Ran through XLT86 to get CP/M-86 version. Bill Bolton ; ;18/Jan/84 Added code for bank select on Godbout Intefacer 3/4 ; I/O board and fiddled a little with the equates. ; Version 4.2 Bill Bolton, Software Tools RCPM ; ;17/Jun/82 Added short signon message with version number ; equate inserted into message. Changed prompts to be ; consistent with my "FLIP" option in BYE72D (or later) ; Bill Bolton, Software Tools RCPM, Australia ; ;12/Jun/82 Added timeout before flip OK message, to allow time ; remote modem to detect new carrier, seems to take ; about 5 seconds for CCITT V21 when going to ANSWER ; mode. Bill Bolton, Software Tools RCPM, Australia ; ;11/Jun/82 Added code to toggle mode rather than just change to ; answer as CCITT systems have less marked difference ; in performance than BELL 103A systems and switching ; to answer mode isn't always a good solution. Now the ; remote user can go back to originate. Removed ; PMMI/Hayes stuff (because CCITT users can't use them ; and it isn't really clear what some of the hardware ; specific stuff does when you've never seen one ; [and are never likely to]) and set up for Telecom ; Australia modem. Message rewritten to lower case and ; 63 char line. Bill Bolton, Software Tools RCPM ; ;08/Aug/80 Added conditional assembly for either ; PMMI or D C Hayes modem cards (BR) ; ;06/Jun/80 PMMI modem conditionals and to re-ask for ; input if invalid answer. Keith Petersen, W8SDZ. ; ;02/Jun/80 Uppercase message and require exactly ; control-c or return, ignoring all else. (BR) ; FALSE EQU 0 ;BASIC LOGIC DEFINITIONS TRUE EQU NOT FALSE ; SPEED EQU 7*4167 ;CPU speed in MHz x a constant SECONDS EQU 6*10 ;Number of seconds to pause x 10 ; INTER3 EQU TRUE ;True for CompuPro Interfacer 3/4 ; MODEM EQU 06H ;Modem USART bank number BASE EQU 10H ;Interfacer 3/4 base port number MODCTL EQU 13H ;2651 UART command port BANK EQU 17H ;Interfacer 3/4 bank select port RTS EQU 20H ;RTS bit in comand byte ; WBOOT EQU 0 ;CP/M warm boot entry point BDOS EQU 5 ;CP/M BDOS entry point DBUFF EQU 80H ; PMESSG EQU 9 CHRINP EQU 1 ALF EQU 0AH ;Ascii line feed ACR EQU 0DH ;Ascii carriage return ; VER EQU 4 ;Major version level REV EQU 4 ;Minor revision level ; M EQU Byte Ptr 0[BX] ; CSEG ; FLIP: MOV CL,PMESSG MOV DX,(Offset SIGNON) INT 224 if inter3 MOV AL,MODEM OUT BANK,AL ;Select modem USART endif ;inter3 IN AL,MODCTL AND AL,RTS ;In answer mode? JNZ FLIP0 CALL ORIGINATE ;Yes FLIP0: MOV CL,PMESSG MOV DX,(Offset SWITCHMSG) INT 224 ; FLIP1: MOV CL,PMESSG MOV DX,(Offset SELECTMSG) INT 224 MOV CL,CHRINP INT 224 AND AL,05FH ;Mask to upper case CMP AL,'N' JZ ABORT ;"No" answer, abort with a message CMP AL,'Y' ;"Yes" answer JNZ FLIP1 ;No match, ask for another input ; ;SET MODEM FOR DTR ON & ORIGINATE ; if inter3 MOV AL,MODEM OUT BANK,AL ;Select modem USART endif ;inter3 IN AL,MODCTL ;Get mode XOR AL,RTS OUT MODCTL,AL ;Flip the mode MOV CH,SECONDS ;Wait a few seconds PAUSE: CALL DELAY ;Wait 0.1 seconds DEC CH ;Done? JNZ PAUSE ;No MOV CL,PMESSG ;Yes, show message MOV DX,(Offset DONEMSG) INT 224 MOV CL,0 ;EXIT TO CP/M WARM BOOT MOV DL,0 INT 224 ; ABORT: POP AX ;Keep stack straight MOV CL,PMESSG MOV DX,(Offset ABORTMSG) INT 224 MOV CL,0 MOV DL,0 INT 224 ; ORIGINATE: LAHF XCHG AL,AH PUSH AX MOV BX,(Offset OMSG) ;Point to new message MOV DX,(Offset MODE) ;Point to message to overwrite MOV CH,(Offset MLEN)-(Offset MODE) ;Length of message OLOOP: MOV AL,M ;Get a byte MOV SI,DX ;Put a byte MOV [SI],AL INC BX ;Adjust pointers INC DX DEC CH ;Done? JNZ OLOOP ;No POP AX XCHG AL,AH SAHF RET ;Yes ; DELAY: PUSH CX ;Preserve outer loop count MOV CX,SPEED ;Initialise inner loop count ; ; For 0.1 sec delay ; DELAY1: DEC CX ;Adjust counter MOV AL,CH OR AL,CL ;Done ? JNZ DELAY1 ;No POP CX ;Yes, restore outer loop count RET DSEG ORG 100H ; SIGNON RS 0 DB 'FLIP Version ',VER+'0','.',REV+'0',ACR,ALF,'$' ; SWITCHMSG RS 0 DB ACR,ALF DB 'If you answer "Y" to the next question you have 20 seconds to' DB ACR,ALF,'switch your modem or acoustic coupler to the "' MODE RS 0 DB 'ANSWER" mode. ' MLEN RS 0 DB ACR,ALF,'$' ; SELECTMSG RS 0 DB ACR,ALF,'Do you want to FLIP the modem mode (Y/N) ? ','$' ; DONEMSG RS 0 DB ACR,ALF,ACR,ALF DB 'If you see this the mode change was successful.',ACR,ALF,'$' ; ABORTMSG RS 0 DB ACR,ALF,ACR,ALF DB 'OK no change in mode then.',ACR,ALF,'$' ; OMSG RS 0 DB 'ORIGINATE" mode.' ; END