; M712GP.ASM -- GENERAL PURPOSE OVERLAY FILE FOR MDM712. 07/27/83 ; ; THIS OVERLAY ADAPTS THE MDM712 PROGRAM TO VARIOUS SERIAL I/O TYPES ; VERY EASILY - SUCH AS THE UART, 8251 USART, 8250 ACE, 2661 EPCI, ETC. ; ; YOU WILL WANT TO LOOK THIS FILE OVER CAREFULLY. THERE ARE A NUMBER OF ; OPTIONS THAT YOU CAN USE TO CONFIGURE THE PROGRAM TO SUIT YOUR TASTE. ; THIS FILE PLACES PARTICULAR EMPHASIS ON USING AN EXTERNAL MODEM THAT ; DOES NOT MATCH ONE OF THE OTHER SPECIAL OVERLAYS. YOU WOULD USE THE ; NORMAL CP/M "CONFIGURE" PROGRAM TO SET THE MODEM TO WHATEVER BAUD RATE ; YOU WOULD NORMALLY USE (SUCH AS 300 OR 1200, ETC.) THEN PERHAPS JUST ; MAKE A SECOND .COM FILE IF YOU NEED BOTH 300 AND 1200 AND DO NOT WISH ; TO WRITE YOUR OWN INITIALIZATION OR "SET BAUD" ROUTINE. ; ; YOU COULD LOOK AT OTHER OVERLAY FILES TO SEE HOW THE GOODBYE AND/OR ; SETUPR AREAS ARE HANDLED. YOU COULD THEN ADAPT ONE OF THOSE, IF AP- ; PROPRIATE FOR YOUR EQUIPMENT IN THIS OVERLAY. SOME EXAMPLES: ; ; "DP" DATAPOINT 1560 OVERLAY USING 8251 I/O AND CTC TIMERS FOR ; SETTING BAUD RATES ; "H8" HEATH H89 OVERLAY FOR 8250 I/O AND PROGRAMMABLE BAUD RATES ; "HZ" ZENITH 120 OVERLAY FOR 2661B INITIALIZATION AND BAUD RATES ; "XE" XEROX 820II OVERLAY FOR Z80-SIO INTIALIZATION, ETC. ; ; EDIT THIS FILE FOR YOUR PREFERENCES THEN FOLLOW THE "TO USE:" EXAMPLE ; SHOWN BELOW. ; ; TO USE: FIRST EDIT THIS FILE FILLING IN ANSWERS FOR YOUR OWN ; EQUIPMENT. THEN ASSEMBLE WITH ASM.COM OR EQUIVALENT ; ASSEMBLER. THEN USE DDT TO OVERLAY THE THE RESULTS ; OF THIS PROGRAM TO THE ORIGINAL .COM FILE: ; ; A>DDT MDM712.COM ; DDT VERS 2.2 ; NEXT PC ; 4300 0100 ; -IM712GP.HEX (NOTE THE "I" COMMAND) ; -R ("R" LOADS IN THE .HEX FILE) ; NEXT PC ; 4300 0000 ; -G0 (RETURN TO CP/M) ; A>SAVE 66 MDM712.COM (NOW HAVE A MODIFIED .COM FILE) ; ; = = = = = = = = = = = = = = = = = = ; ; 07/27/83 - RENAMED TO WORK WITH MDM712 - IRV HOFF ; 07/01/83 - REVISED TO WORK WITH MDM711 - IRV HOFF ; 07/01/83 - REVISED TO WORK WITH MDM710 - IRV HOFF ; 05/27/83 - UPDATED TO WORK WITH MDM709 - IRV HOFF ; 05/15/83 - REVISED TO WORK WITH MDM708 - IRV HOFF ; 04/11/83 - UPDATED TO WORK WITH MDM707 - IRV HOFF ; 04/04/83 - FIRST VERSION OF THIS FILE - IRV HOFF ; ; = = = = = = = = = = = = = = = = = ; 0007 = BELL: EQU 07H ;BELL 000D = CR: EQU 0DH ;CARRIAGE RETURN 001B = ESC: EQU 1BH ;ESCAPE 000A = LF: EQU 0AH ;LINEFEED ; 00FF = YES: EQU 0FFH 0000 = NO: EQU 0 ; ; ; CHANGE THE FOLLOWING INFORMATION TO MATCH YOUR EQUIPMENT ; 0001 = PORT: EQU 001H 0001 = MODCTL1: EQU PORT ;MODEM CONTROL PORT 0000 = MODDATP: EQU PORT-1 ;MODEM DATA IN PORT 0000 = MODDATO: EQU PORT-1 ;MODEM DATA OUT PORT 0002 = MODDCDB: EQU 2 ;CARRIER DETECT BIT 0000 = MODDCDA: EQU 0 ;VALUE WHEN ACTIVE 0003 = BAUDRP: EQU PORT+2 ;BAUD RATE PORT 0004 = MODCTL2: EQU PORT+3 ;2ND MODEM CONTROL PORT 0002 = MODRCVB: EQU 2 ;BIT TO TEST FOR RECEIVE 0002 = MODRCVR: EQU 2 ;VALUE WHEN READY 0001 = MODSNDB: EQU 1 ;BIT TO TEST FOR SEND 0001 = MODSNDR: EQU 1 ;VALUE WHEN READY ; 0100 ORG 100H ; ; ; CHANGE THE CLOCK SPEED TO SUIT YOUR SYSTEM ; 0100 DS 3 ;(FOR "JMP START" INSTRUCTION) ; 0103 00 PMMIMODEM: DB NO ;YES=PMMI S-100 MODEM 103H 0104 00 SMARTMODEM: DB NO ;YES=HAYES SMARTMODEM, NO=NON-PMMI 104H 0105 54 TOUCHPULSE: DB 'T' ;T=TOUCH, P=PULSE (SMARTMODEM-ONLY) 105H 0106 28 CLOCK: DB 40 ;CLOCK SPEED IN MHZ X10, 25.5 MHZ MAX. 106H ;20=2 MHH, 37=3.68 MHZ, 40=4 MHZ, ETC. 0107 01 MSPEED: DB 1 ;0=110 1=300 2=450 3=600 4=710 5=1200 107H ;6=2400 7=4800 8=9600 9=19200 DEFAULT 0108 05 BYTDLY: DB 5 ;0=0 DELAY 1=10MS 5=50 MS - 9=90 MS 108H ;DEFAULT TIME TO SEND CHARACTER IN TER- ;MINAL MODE FILE TRANSFER FOR SLOW BBS. 0109 05 CRDLY: DB 5 ;0=0 DELAY 1=100 MS 5=500 MS - 9=900 MS 109H ;DEFAULT TIME FOR EXTRA WAIT AFTER CRLF ;IN TERMINAL MODE FILE TRANSFER 010A 05 NOOFCOL: DB 5 ;NUMBER OF DIR COLUMNS SHOWN 10AH 010B 00 SETUPTST: DB NO ;YES=USER-ADDED SETUP ROUTINE 10BH 010C 00 SCRNTEST: DB NO ;CURSOR CONTROL ROUTINE 10CH 010D FF ACKNAK: DB YES ;YES=RESEND A RECORD AFTER ANY NON-ACK 10DH ;NO=RESEND A RECORD AFTER A VALID-NAK 010E 00 BAKUPBYTE: DB NO ;YES=CHANGE ANY FILE SAME NAME TO .BAK 10EH 010F FF CRCDFLT: DB YES ;YES=DEFAULT TO CRC CHECKING 10FH 0110 FF TOGGLECRC: DB YES ;YES=ALLOW TOGGLING OF CRC TO CHECKSUM 110H 0111 00 CONVBKSP: DB NO ;YES=CONVERT BACKSPACE TO RUB 111H 0112 FF TOGGLEBK: DB YES ;YES=ALLOW TOGGLING OF BKSP TO RUB 112H 0113 00 ADDLF: DB NO ;NO=NO LF AFTER CR TO SEND FILE IN 113H ;TERMINAL MODE (ADDED BY REMOTE ECHO) 0114 FF TOGGLELF: DB YES ;YES=ALLOW TOGGLING OF LF AFTER CR 114H 0115 FF TRANLOGON: DB YES ;YES=ALLOW TRANSMISSION OF LOGON 115H ;WRITE LOGON SEQUENCE AT LOCATION LOGON 0116 FF SAVCCP: DB YES ;YES=DO NOT OVERWRITE CCP 116H 0117 00 LOCONEXTCHR: DB NO ;YES=LOCAL COMMAND IF EXTCHR PRECEDES 117H ;NO=EXTERNAL COMMAND IF EXTCHR PRECEDES 0118 FF TOGGLELOC: DB YES ;YES=ALLOW TOGGLING OF LOCONEXTCHR 118H 0119 FF LSTTST: DB YES ;YES=PRINTER AVAILABLE ON PRINTER PORT 119H 011A 00 XOFFTST: DB NO ;YES=CHECKS FOR XOFF FROM REMOTE WHILE 11AH ;SENDING A FILE IN TERMINAL MODE 011B 00 XONWAIT: DB NO ;YES=WAIT FOR XON AFTER CR WHILE 11BH ;SENDING A FILE IN TERMINAL MODE 011C FF TOGXOFF: DB YES ;YES=ALLOW TOGGLING OF XOFF CHECKING 11CH 011D FF IGNORCTL: DB YES ;YES=CTL-CHARS ABOVE ^M NOT DISPLAYED 11DH 011E 00 EXTRA1: DB 0 ;FOR FUTURE EXPANSION 11EH 011F 00 EXTRA2: DB 0 ;FOR FUTURE EXPANSION 11FH 0120 00 BRKCHR: DB '@'-40H ;^@ = SEND 300 MS. BREAK TONE 120H 0121 0E NOCONNCT: DB 'N'-40H ;^N = DISCONNECT FROM THE PHONE LINE 121H 0122 0C LOGCHR: DB 'L'-40H ;^L = SEND LOGON 122H 0123 10 LSTCHR: DB 'P'-40H ;^P = TOGGLE PRINTER 123H 0124 12 UNSAVE: DB 'R'-40H ;^R = CLOSE INPUT TEXT BUFFER 124H 0125 14 TRANCHR: DB 'T'-40H ;^T = TRANSMIT FILE TO REMOTE 125H 0126 19 SAVECHR: DB 'Y'-40H ;^Y = OPEN INPUT TEXT BUFFER 126H 0127 1E EXTCHR: DB '^'-40H ;^^ = SEND NEXT CHARACTER 127H ; ; 0128 DS 2 ; 128H ; 012A DB01C9 IN$MODCTL1: IN MODCTL1 ! RET ;IN MODEM CONTROL PORT 12AH 012D DS 7 0134 D300C9 OUT$MODDATP: OUT MODDATP ! RET ;OUT MODEM DATA PORT 134H 0137 DS 7 013E DB00C9 IN$MODDATP: IN MODDATP ! RET ;IN MODEM DATA PORT 13EH 0141 DS 7 0148 E602C9 ANI$MODRCVB: ANI MODRCVB ! RET ;BIT TO TEST FOR RECEIVE READY 148H 014B FE02C9 CPI$MODRCVR: CPI MODRCVR ! RET ;VALUE OF RCV. BIT WHEN READY 14BH 014E E601C9 ANI$MODSNDB: ANI MODSNDB ! RET ;BIT TO TEST FOR SEND READY 14EH 0151 FE01C9 CPI$MODSNDR: CPI MODSNDR ! RET ;VALUE OF SEND BIT WHEN READY 151H 0154 DS 6 ; 156H ; 015A D301C9 OUT$MODCTL1: OUT MODCTL1 ! RET ;OUT MODEM CONTROL PORT #2 15AH 015D D304C9 OUT$MODCTL2: OUT MODCTL2 ! RET ;OUT MODEM CONTROL PORT #1 15DH ; 0160 C801 LOGONPTR: DW LOGON ;FOR USER MESSAGE. 160H 0162 DS 6 ; 162H 0168 C3DE01 JMP$GOODBYE: JMP GOODBYE ; 168H 016B C3DF01 JMP$INITMOD: JMP INITMOD ;GO TO USER WRITTEN ROUTINE 16BH 016E C90000 RET ! NOP ! NOP ;(BY-PASSES PMMI ROUTINE) 16EH 0171 C90000 RET ! NOP ! NOP ;(BY-PASSES PMMI ROUTINE) 171H 0174 C90000 RET ! NOP ! NOP ;(BY-PASSES PMMI ROUTINE) 174H 0177 C3E001 JMP$SETUPR: JMP SETUPR ; 177H 017A C3E101 JMP$SPCLMENU: JMP SPCLMENU ; 17AH 017D C3A701 JMP$SYSVER: JMP SYSVER ; 17DH 0180 C3DD01 JMP$BREAK: JMP SENDBRK ; 180H ; ; ; DO NOT CHANGE THE FOLLOWING SIX LINES. ; 0183 JMP$ILPRT: DS 3 ; 183H 0186 JMP$INBUF DS 3 ; 186H 0189 JMP$INLNCOMP: DS 3 ; 189H 018C JMP$INMODEM DS 3 ; 18CH 018F JMP$NXTSCRN: DS 3 ; 18FH 0192 JMP$TIMER DS 3 ; 192H ; ; ; ROUTINE TO CLEAR TO END OF SCREEN. IF USING CLREOS AND CLRSCRN, SET ; SCRNTEST TO YES AT 010AH (ABOVE). ; 0195 CD8301 CLREOS: CALL JMP$ILPRT ; 195H 0198 0000000000 DB 0,0,0,0,0 ; 198H 019D C9 RET ; 19DH ; 019E CD8301 CLRSCRN: CALL JMP$ILPRT ; 19EH 01A1 0000000000 DB 0,0,0,0,0 ; 1A1H 01A6 C9 RET ; 1A6H ; 01A7 CD8301 SYSVER: CALL JMP$ILPRT ; 1A7H 01AA 5665727369 DB 'Version for external modem' 01C4 0D0A00 DB CR,LF,0 01C7 C9 RET ;..... ; ; ;----------------------------------------------------------------------- ; ; NOTE: YOU CAN CHANGE THE SYSVER MESSAGE TO BE LONGER OR SHORTER. THE ; END OF YOUR LAST ROUTINE SHOULD TERMINATE BY 0400H (601 BYTES ; AVAILABLE AFTER START OF SYSVER) IF USING THE HAYES SMARTMODEM ; OR BY ADDRESS 0C00H (2659 BYTES) OTHERWISE. ; ;----------------------------------------------------------------------- ; ; YOU CAN PUT IN A MESSAGE AT THIS LOCATION WHICH CAN BE CALLED UP WITH ; CTL-O IF TRANLOGON HAS BEEN SET TRUE. YOU CAN USE SEVERAL LINES IF ; DESIRED. END WITH A 0. ; 01C8 486F772061LOGON: DB 'How are you today?',CR,LF,0 ;..... ; ; ; ADD YOUR OWN ROUTINE HERE TO SEND A BREAK TONE TO RESET SOME TIME-SHARE ; COMPUTERS, IF DESIRED. ; 01DD C9 SENDBRK: RET ;..... ; ; ; ADD YOUR OWN ROUTINE HERE TO PUT DTR LOW AND/OR SEND A BREAK TONE. ; CHECK OTHER ROUTINES SUCH AS MDM709DP.ASM WHICH IS USING THIS FEATURE. ; 01DE C9 GOODBYE: RET ;..... ; ; ; YOU CAN USE THIS AREA FOR ANY SPECIAL INITIALIZATION OR SETUP YOU MAY ; WISH TO INCLUDE. EACH MUST STOP WITH A RET. YOU CAN CHECK THE OTHER ; AVAILABLE OVERLAYS FOR IDEAS HOW TO WRITE YOUR OWN ROUTINES IF THAT ; MAY BE OF SOME HELP. ; 01DF C9 INITMOD: RET ; 01E0 C9 SETUPR: RET ; ; ; IF USING THE HAYES SMARTMODEM THIS IS UNAVAILABLE WITHOUT A SPECIAL ; CHANGE. ; 01E1 C9 SPCLMENU: RET ; ; ; NOTE: MUST TERMINATE PRIOR TO 0400H (WITH SMARTMODEM) ; 0C00H (WITHOUT SMARTMODEM) ;..... ; 01E2 END