Osborne 01 / BYE510 / Smart Modem The insert for the Osborne, B5OS-2.INS, describes a hardware modification to the computer which I was able to avoid. Since I am using a smart modem it is possible to let it control BYE as well as the phone connection. Pin four of the serial connector of the Osborne is checked by BYE.COM to determine if the modem is on line. When this pin is at plus 5 volts or greater, the on-line condition is indicated. (my modem pulls pin four to plus 12 volts when it answers) When the caller hangs up or the line is lost, the modem grounds pin four. BYE detects the ground at pin four and recycles, making itself ready for the next call. If your modem has a suitable signal which you can connect to pin four you are in business. It looks like DATA SET READY, pin six on the modem, might work. I had previously modified my modem to bring the off-hook led voltage to the connector. This provided the needed signal and I was able to get BYE running with no modification to my Osborne. When a disconnect is caused by a time-out, or when the caller types the command BYE, it is necessary to run a program which commands the modem to disconnect. When the modem disconnects, pin four will go to ground and BYE will recycle. BYE provides the option of running a program upon exit by setting the EXFILE equate to YES. My exit program sends a ^T to the modem, delays one second to allow the modem time to abort, and returns to BYE. The program is named PEXIT.COM and is on the same disk as BYE.COM in user area 14. These options are selected by the equates EXFILE, EXDRV, and EXUSR. In addition the following two equates must be set to NO: PRNTGB BYHANG Using a program to abort the modem solves two other problems. I keep BYE.COM on drive A. What if the caller decides to terminate the call and types BYE when logged on drive B? I have a copy of the exit program on drive B which I have named BYE.COM. If the caller types BYE while on drive B, the exit program will send the abort character to the modem and BYE will recycle just as before. The second problem involved getting BYE to recycle if the caller was unable to enter the correct password. BYE has an option for a user password but I decided not to use it. I wanted more options so I wrote a password program that is run when the phone line is first picked up.(See equates COMFILE, COMDRV and COMUSR) If the caller is unable to give the password the program sends a ^T to the modem. If the password is correct the program sets the wheel byte to the value assigned that password. After inserting B5OS-2.INS into BYE510C.ASM, be sure to check all the equates to insure that they are set correctly for your system. After setting EXFILE to yes you will also have to select the user area and a file name. The file name will have to match the exit-file file name of the BBS equate you set to YES. File names appear in file control blocks toward the end of the BYE asm file. I am not using a BBS program but I had to set the equate for one of them to YES to avoid assembler errors. My exit file name and my entrance file name match the names used by that BBS system. ;PEXIT.ASM for use with BYE510 ;for OSBORNE 01 bios 1.4 ;Causes modem to abort by sending a ^T via the serial port TURNOFF EQU 14H ;^T to abort modem - put your abort char here SHADOW EQU 4000H ;must be above 4000h MEMREG EQU 0EF08H CONT EQU 2A00H ;serial status/control CNT1 EQU 0FFH ;for delay loop CNT2 EQU 0FFFFH ;for delay loop CNT3 EQU 04H ;for delay loop ORG 100H LXI D,BYBY MVI C,9 CALL 5 JMP DOBLK BYBY: DB 0DH,0AH,'GOOD BYE.....',0DH,0AH,24H DOBLK: LXI H,BLKSTART LXI D,SHADOW LXI B,BLKEND-BLKSTART DB 0EDH,0B0H JMP SHADOW BLKSTART: EQU $ ;ends up at 4000h DI OUT 0 MVI A,0 STA MEMREG MVI A,TURNOFF STA CONT+1 OUT 1 MVI A,1 STA MEMREG EI MVI D,CNT3 LONG: MVI E,CNT1 ;one second delay to allow SHORT: LXI B,CNT2 ;modem time to abort LP1: MOV A,C DCR A MOV C,A JNZ LP1 LP2: MOV A,B DCR A MOV B,A JNZ LP2 MOV A,E DCR A MOV E,A JNZ SHORT MOV A,D DCR A MOV D,A JNZ LONG RET BLKEND EQU $ END ;