28-DISK DOCKM1200 COM!KM300 COMYKPOV ASMK[qKPOV HEXjM7BELL MSGjIM7FNK COMM7FNK DOCM7FNK NOTKM7LIB COM!mM7LIB DOC0&M7NM-6 ASMC0KM7RUB MSGs F^MDM730 COM|MDM730 DOC5iMDM730 MSGC .MDM730 NOTc<MKP4-10 ASMzPMLOAD21 COM Kaypro Disk #28 Micro Cornucopia Magazine PO Box 223 Bend, OR 97709 The purpose of this disk is to gather in one place all the files, overlays, etc necessary for a Kaypro computer owner to assemble a usable version of MDM730.COM. The following gives a brief overview of the files on this disk. For complete instructions, etc read all of the files ending in DOC, MSG, NOT, UPD, and the notations contained in the .ASM files. Start with the MDM730.DOC file to get a good understanding of the programs capabilities, then read the notations included with the MKP4-10.ASM file if you are mainly interested in using this program for KAYPRO II,4 or 10's. MDM730.COM This is the main program developed by Irv Hoff and is one of the most versatile modem programs available bar none, including any commercial programs I've seen. This file has not been set up for Kaypro and is included for archival purposes only. KM1200.COM A ready to run version of MDM730.COM set up for the 4 or 5 Mhz Kaypros ( KAYPRO -84 series & KAYPRO 10. (or speed up mod units ). As presently set up, has phone directory autodial and redial, Touchtone dialing and 1200 baud, 8 bit, 1 stop bit, no parity check. SET command allows you to reset baud rate and bits, parity. Also has function keys implemented. Read MKP4-10.ASM for more information on how to change defaults and reassemble. KM300.COM Same as KM1200.COM except defaults to 300 baud rate. MDM730.DOC A very comprehensive explanation of the features of MDM730 and KM1200 MDM730.MSG, MDM730.NOT, MDM730.UPD, M7BELL.MSG, M7RUB.MSG Short memos giving updated information MKP4-10.ASM Overlay file containing assembly instructions to set MDM730.COM up to operate properly on Kaypro II,4 & 10. As presently written, it sets up for Kaypro 4 & 10 as outlined above under KM1200.COM. Instructions at head of file explain how to set up for Kaypro II and also how to change from Touchtone to Pulse dialing, from 1200 baud default value to 300 baud, etc. M7NM-6.ASM Overlay file containing assembly instructions to set MDM730.COM up to include the autodial telephone directory. Instructions are at head of file. Also additional instructions in MKP4-10.ASM. M7FNK.COM, M7FNK.DOC, M7FNK.NOT Program and documentation to allow you to change the 10 function keys in MDM730.COM or KM1200.COM to whatever you like. M7LIB.COM, M7LIB.DOC Program and documentation to allow you to change the phone numbers in the MDM730.COM or KM1200.COM autodial telephone directory. MLOAD21.COM This is a public domain version of CPM's Load.Com. Works a lot better and can be used instead of DDT to assemble your program. See instructions on how to use at head of MKP4-10.ASM file. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: To Verify the files on this disk enter CRC . ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: T( >&ç,>/0Ð 2Hû ̓̓̓ Version For Kaypro 4-10 LOGON >>>>͒>:>>>>>>>>@>>>r̓Baud Rate (300, 1200): ͆!i~d2Y#~2Z#t͉m##ESv ~2#~2r̓Word Length (7, 8): ͆t͉8>Ҹ͉7>AҸSҿv2x2r̓Stop Bits (1, 2): ͆t͉1>͉2> Sÿ2r̓Parity (None, Even, Odd): ͆t͉N>L͉E>L͉O>LSO2 ͉ ̓ Wrong! 7312 :IZ::w2I2I!"I!I~6Ow#!I0!OH"͛,HB"͛,H C>$bH O, Enter library code or phone number, Hit RET to abort this function now or CTL-X quits while dialing or ringing: I>/!I~ʜ2O ͯڙ:O i!I~A+ 0 + q!"{@~q 6"Ip͛,:Ģ!I^#~͝+#ʙ.uX:Ģ!I^#~q͈+ʪ͓+ª:ʙͤ, ” ͤ,> ͝+Ù#u, - try #*I#"Iͽ+> ͝+: ͤ,͌>]ͻ >]Z ү&:I‰:N B, Busy(, No answer, Redial? (Y)es, (N)o, (C)ontinuous, (Q)uiet continuous: ͪ+{+N2YʉCʄQ`>2I:˜2ͻ Ýͻ , :I2I:IW, CONNECTED - hit any key to stop the bellͻ ͈+͓+~ ͻ >͝+͝+R{P Gx,+0:0+> O:¤,:(WT9TA>ZTN>ZT[ I>Zû , ++ Bad library number called ++ &{+2I͌ңh2:->Z2 , ++ NO DIAL TONE ++ &7::Tx<! >! ~$Gͤ,#͈+͓+ʙ> ͝+:<Z] ͻ ͻ !ͻͻ > ͝+!ͻ(W:!ͻͻ 2:!ͻͻ 2ATM0 $ATM1 $+++$ATH $:2!ͻ͌ҮATDT $J~$~4͝+#û8͈+͓+ ͤ,Ü>GBB 01ʵCʵ3B NB 4,E,5ʵ  ͈+< ͓+<  ͤ,Ü͌ 2N ͌E :‰ :I2I=2I# ڷ ͻ Tͽ 2ͻ ʹS, ++ No ringback for autodial modem ++Ü{+x >?]Zͻ T͈+ ͓+ 7+:͏, Additional Subcommands for PMMI Modems Modem control: A - Answer tone for send or receive O - Originate tone for send or receive Parity option: 1 - Set and check for odd parity 0 - Set and check for even parity Both ends must be capable of these options which are available only in R and S modes. The parity checking will be part of the file transfer protocol. Speed Options: After entering your primary and secondary options, you can set the modem speed by placing a "." after the options followed by the speed e.g., 300, 600. EXAMPLE: SBO.600 will set the modem for 600 baud ͌ҽ ¼ {+ }0_.!~w+ *.xxxxxxx,,,,,,xxxxxxxx,,$xxxxxxx,,,,,,xxxxxxxx,,$ A=Bob Robesky.......1-209-227-2083B=Byron McKay.......1-415-965-4097C=Bruce Jorgens.....1-509-255-6324D=Phil Cary.........1-505-522-8856E=Bill Earnest......1-215-398-3937F=Chuck Forsberg....1-503-621-3193G=Ron Fowler........1-414-563-9932H=Charlie Hoffman...1-813-831-7276I=Jack Kinn.........1-817-547-8890J=Walt Jung.........1-301-661-2175K=Sigi Kluger.......1-915-598-1668L=Thomas Loker......1-301-863-7165M=Wayne Masters.....1-408-378-7474N=Dick Mead.........1-213-799-1632O=Al Mehr...........1-408-238-9621P=Pasadena RBBS.....1-213-577-9947Q=Mark Pulver.......1-312-789-0499R=Bruce Ratoff......1-201-272-1874S=Ken Stritzel......1-201-584-9227T=TCBBS, Dearborn...1-313-846-6127U=AnaHUG RCPM.......1-714-774-7860V=Dave Austin.......1-707-257-6502W=Paul Bagdonovich..1-201-747-7301X=Kirk De Haan......1-408-296-5078Y=Byron Kantor......1-619-273-4354Z=Chuck Metz........1-408-354-59340=Bill Parrott......1-913-682-33281=Larry Snyder......1-305-671-23302=Alex Soya.........1-305-676-35733=Tony Stanley......1-912-929-87284=Ed Svoboda........1-408-732-91905=Tampa Bay Bandit..1-813-937-36086=Thousand Oaks.....1-805-492-54727=Bill Wood.........1-619-256-39148=Spare.............x-xxx-xxx-xxxx9=Spare.............x-xxx-xxx-xxxx^DIR DIR *.* $U0AD XMODEM S XMODEM R BYE RBBS  (vacant)(vacant) Nice chatting, see you again soon... =!9"K1K!pʹ,".J!'ʹ,"0J, MDM730 - (type M for Menu) }]2͏ʹ:I!21Kͫ:3:B:ICb:O3+:ID+M3RSTk2I2IõEz2I2IõL‰2I2Iõ~?2*"+"+"+!"J ͟A2;J̀ k:2h> @2i3>^2h32i3]2I  !OI OG>xA>2I6#~?2:XI2UI:IDEMLTG:9:=xC:IHæ2xSXR’:PI:m ,++ Enter primary option plus file name ++ 2, ++ Bad option ++ 8>ë:PI>B2PIx?2I:I:] 2I2IͲ&!>J͐!!\>J ͛,>J>J!O"I>2I :I ͈+͓+G::::IQx0^:^ù:^2I2I:I>2I::'Õ:'Ž>2I:́:!+:%ʪ:ʴ:"T::#:I/2I{+{+͉{+: ʮ ::)n:$ :&:I 2I2Iͫ:PIt,Ready to send in batch mode t>2 ͝+|>B2PI><)):] <'ͪ'Ϳ'xh)F&'ڴͧ&>2zIF&%Q%:In%r%́%ژÇ><)́%ڴ):2It:PI>2B2PI):] <'#> ͝+͏!"{+͙"Ͳ&]':PI5&,File open, ready to receive :IT&,CRC in effect >Cn&,Checksum in effect >,Waiting.....<)ͫ"ژ:r(ͧ&ͤÃ͌(ͤ')><)!_J͐!!l͐!, File name to send? (CR to abort): I>/:I ~I!_J,_J::,Want to include time delays? (Y/N): ͪ+N:2I{+I_Jq=ʧ?,++ DISK READ ERROR ++$ʧH, (in Terminal-mode now) Jͫ, [Transfer completed]~, ++ FILE NAME ERROR ++ ö!IF~ ͈+͓+# :͝+:đA͝+4 :  L<:O: O:I_ W!:~!:I~:I~!ʹ,:đ{ƒ8>̠8®>͈+ʠ͓+ :PIU&>2zI, Multiple errors encountered. Type Q to quit, R to retry: ͓+{+ʹ+Rʫ"QU&:UI!]26J p# 1:UI*xI#, Received # ͽ+, : ,(+,H) :6J<26J ʃ~ ĝ+~ >.͝+|(͝+ҏ&,Awaiting name NAK xͅ)ͤ!5J5*9J\ ͛,"9J><)7( !]~<)(0#><)Q(   a> a> a>u<), ++ ERROR sending name ++ xͅ)ͤ><)!\͒!&,Awaiting file name Q͕ʓ7>2,J!](>2+J(2+J&,Time out receiving filename Iͤw#}à2,JyQ<)(I  !\͒!&, ** Checksum error ** 2,JQÖ2,J2,JF&><)(WU&>2I25Jͦ!!"9J!!\J,,0ڱ:fŒ*9J\ ͛,"9J!5J4Ì!8J5€!"9J:5JA>@25J, ** Memory buffer :I,open ** ;,closed ** , ** Memory buffer available ** {+͕æ2*HK*NQyAJ*`]J~4m#]͌܌Ý+͈+͓+G>/,Printer buffer is :Iʯ,ON ,OFF !#½]2Iͤ,:I:Ix͝+U> :I: 8>G:,x ,x͝+U:I@ͤ,> :IJ ,:I*Ip#"I> p> ͝+́!|!yJ>4!N>2I*I !ON w͝+G ́!#¢"IJ>4͌ w#:I*Ip#"I:7JJ>4!Nz24J:4JW!8 N w͝+GU ́!# "I!"IJ>4s ^#"I:7J s !"I"I*I*I|}::ʌ 27J!?ʹ,DM8¦ > xš 7: :I]ͻ :I]̀*I6}l&)>oO :IN!͆!>J͆!ѷ!+| <)'?,++ DISK FULL, SAVING PARTIAL FILE ++$'',++ Nothing to save, erasing file ++ ÷*>;Ý+6# 6 #•!6#ž!!8J6!IN!I 6 !IF#!~ ¾!#!~ !")J+#!~ !:8J<28J#!~ !!6 *)JJ~ "#"#~ "")J!Jp \. ~N"#~+] ͛,!e~w#~w\!\l ͛,!u6B#6A#6Kl!l6\:\2zI (ڥ#O7>2-J2+J{y"(G"G2-Jx2+J$z":-Jʥ#:UI #{+x+,H received not SOH - $F&:I>:#:I>:#>C<):zI<2zI ڰ": U&ý1K'', ++ RECEIVED FILE CANCELLED ++ ++ UNFINISHED FILE DELETED ++ ÷*:UI#, ++ Timeout $# #:zI:I:I/2I2&,** Switching to Checksum mode **  >2I(ڥ#W(ڥ#/J$:UI #, ++ Bad record # in header #z2wI>2I!"I!(ڥ#w,^$2I:I”$Q(ڥ#$:wIG:xI$%,(+,H) ><):xI<):xI/<)>2I!"I!~<),a%2Iy<)*I|<)}<)>2-J2+J(GҘ%2-J2+Jxʰ%ƒ%:-J%&:I%:UI%,++ x%+,H%,NAK, received not ACK - $2I:zI<2zI ?, ++ SEND-FILE CANCELLED ++$, ++ TIMEOUT - no ACK - $%:UI͈+͓+1K(X&><)(e&> <)>B2PI2I2I:IRS#, ++ FILE CANCELLED ++ ÷**xI#"xI}!\ #~?'·&:PI'\<,File exists - erase? (Y/N): ͪ+Y2{+\,++ NO WILDCARDS ALLOWED FOR TEXT FILES ++ 2,++ NO FILE SPECIFIED ++ 2\2|Iy2I!O"}I'*}I!͙,"}I:I<2IO(:IOO\!! •(2I!O"}I:Iy(y: ͫ!+J^*0J(*.J8(z((F&7> ).)!,J^(͈2O:VI1):XI6):I6)F+F&:WIR):XIW):IW)F+͈2OA^)4,Waiting ready signal {+F&(U&Cʣ))…)U&&,CRC request received >2I:PI&,Got checksum request &,Name NAK received :PI—*:UIj* !I*>w#* !]I*>6*~ ,*#xD**~ D*>.*, , Transferred :\22J!\͐!:2J2\!iIwI͛,Jͫ:> h:e:eæ2!l\͛,2|2h n+ n+ n+ _+n+>(n++>)n+_> ͝+> ͝+O͓+ʹ+͝+a{_ + |Ľ+{0n+|+}++ ,0n+,CTL-@͝+,~$,n+#,~8,:UI~n+#', :,>͝+{+>2I:PI*U&:;J_͡A xl,͉,:IcG:*K É,~#›,Jx4I!\,:=º,5-#^#6 ^-p- !- , p- !- -, ^-p- !- p-#̈́- ̈́-6# > W-W- > W-W-w#W-:n-_@w# . p-w#p-~*ʔ-#†-×-ͩ-~*ʥ-#™-ͩ-6?#©-ͦAA2/25/- I!\,!_J͐!:l2_J:m ...: 28J_J<.,++ FILE NOT FOUND ++u..#5.00, . _J? !`Jw#.!m`J 0=ƀo&:_J/=_@2/25/,Drive : k bytes free on drive : $0կ͓+ʹ+ /ʉ/ʉ/ʿ//G#4+~#/px/ ԝ+#L/#G~wڨ/+xF6 ʯ/ʭ/L/4L/>͝+> ͝+>͝+L/>#͝+{+B/G>#͝+{+xL/͝+/L/>͝+5L/{+L/{+F##> w# 0~(0!0#0#"07#2h:Iy0>2I!\J 0:\2J!J\ 0\í0!J\ 0\!J\ 0\<7¶02I=Ɓo&J 0] 02h2|><0~# x0,File open: *Iͽ+: 1, (+,H), records Send time: :_!1^#V*I&2i`ͽ+, mins, !1:_~:2E2E2E2E2&ͽ+, secs at 1&,To cancel: use CTL-X  0`@J0(  !1:__ , bps 110$300$450$600$710$1200$2400$4800$9600$19200${/_z/W12 !<=?2}o|g>o*I|>!L!yg)x2>g>!ol2r$s%# b2*IO!L ~W$^"I:I2, ** File still open, use DEL, DIR, WRT, E, L or T ** 22I!iIwI͛,!\IOI ͛,2I2+J2,J2I=bH, Single Letter Commands ? - Display current settings ^ - Function key intercept character, then (0-9) M - Display the menu E - Terminal mode with echo L - Terminal mode with local echo T - Terminal mode For copying text to disk use T (E or L) FILENAME.TYP Start or Stop toggles described on subsequent screen. R - Receive CP/M file using Christensen Protocol S - Send CP/M file using Christensen Protocol COMMAND: R (or S) FILENAME.TYP R and S can use the following subcommands: B - Bulk transfer using wildcards (e.g., *.*) D - Disconnect when done Q - Quiet mode (no messages to console) V - View or bytes on console X - When done, disconnect, go to CP/M The single letter commands may also be used on the command line when the program is initially executed. ͏, Three Letter Commands CPM - Exit from this program to CP/M DIR - List directory and space free (may specify drive) ERA - Erase file (may specify drive) LOG - Change default drive/user no. (specify drive/user) and reset disks. e.g. LOG A0: or LOG B: (user # unchanged) SPD - Set file output speed in terminal mode vDb8,TIM - Select Baud rate for "time-to-send" msg. :ʘ8,TCC - Toggle CRC/Checksum mode on receive :8,TLC - Toggle local command immediate or after :', :"9,TLF - Toggle LF after CR in "L" or "T" mode for a disk file :Z9,TRB - Toggle rubout to backspace conversion :ʝ9,TXO - Toggle XOFF testing in terminal mode file output :9:9,NUM - List remote systems : 9,SET - Set modem baud rate ,BYE - Disconnect, then return to CP/M :)::@:,CAL - Dial number ,DSC - Disconnect from the phone line The following are terminal text buffer commands: ,DEL - Delete memory buffer and file WRT - Write memory buffer to disk file 2H, Local Commands while in Terminal Mode : , - Send a break tone for 300 ms. :;:), - Change baud rate >, - Exit to command mode :;:", - Send log-on message :!, - Disconnect from the phone line :<:#, - Toggle printer > ͝+:&, - Start copy into buffer :$, - Stop copy into buffer Start & Stop may be toggled as often as desired. A ";" at start of line indicates buffer is copying. XOFF automatically used to stop input when writing full buffer to disk, XON sent to resume. :%, - Transfer ASCII file to remote ::'=, - Send local control character to remote =, - Next character will be used for local control z{+:I'>7I, Bytes of buffer free A͝+͟A>>&oͽ+>>͝+>>͝+,COMMAND: 2II>/:I'>^ʛ??zH >:I:#CI0CPMZ,{+0LOGA0DIRҤ@0ERAһ@0SPDB0TIM]C0TCC҄D0TRBD0TLCE0TLFnE0TXOE: ?: ?0NUMҕG: ?0SETF0WRTDG0DELG0BYEM@0DSC+:Q?:c?0CALc?> 2Io?:I!HI&Hx?ͫ,~?=,++ Invalid command ++ :bH, SPECIAL FUNCTION KEY TABLE ?,CTL-@͝+, current function key intercept character ! #~0͝+> ͝+#~@@ :@,$@͝+$@{+@{+=:h:{@h, << Exit to CP/M >> Z,ͻ !ͻͻ > ͝+!@ͻ(Җ@ATZ $23Jͱ-:3J_=I!\,3+:] x?\<@,++ File not found ++ =\,File erased =:I«A:I )AͦAAAx?23J͟AG:IdApA:IdArAA :3J_:=J_͡A= lA:IA͕AOxGxx?2=JI>/:I 0 x? ,++ Terminal mode file open ++ ++ Use WRT or DEL before LOG command ++ =,Delay between chars. (0-9): ͈+(B͓+͝+C0 x?2,Delay at end of line (0-9): ͈+aB͓+͝+C0 x?2 , Char. delay (terminal file mode) is: :Gxo&ͽ+,0 ms. per character Line delay (terminal file mode) is: : Go&ͽ+,00 ms. per character =, :IAx?_:I =0LC:I0XC&x?_͡A=>LCvDx?,Use 0-8 to give baud rate for 'S' mode time-to-send message, where 0=110, 1=300, 2=450, 3=600, 4=710, 5=1200, 6=2400, 7=4800 8=9600 and 9=19200 Baud. Enter value: ͉A x?2 D=vD`D,Rate for the S mode time-to-send message is set to sD,Modem speed is 1: G:::x?:/2͘D=,Mode: :ʳD,CRC ,CHECKSUM :x?:/2D=:D,Rub is backspace ,Rub is rub :x?:/2E=,Use ::'GE, before local command , to send local command to remote :x?:/2͂E=,LF :˜E,NOT ,sent after CR in "L" or "T" for a disk file :x?,Use XOFF testing? (Y/N): MFE2jF, Use XON waiting after (Y/N): MF+F2ͶF:=/2,Therefore jF=I>/:I ?GN>xY>x?,XOFF testing :ŠF,NOT ,used, in terminal mode file output ,XON :F,NOT ,automatically tested after CRÒF: x?Iw:=Aͤ,Tͤ, ͤ,=:IyG:?J yG>J2I2I!>J͐!!O"I=:IyGcG2I2I!>J͐!!O"I=:?J >J2I,++ No File Open ++ =bH, Library of Phone Numbers of Remote Systems!OH## ͛,H##B ͛,H G>$ O{+{+=> > > F#1H'H7,HIT any KEY to CONTINUE͈+MH͓+bH{+=: ž> ͝+ > ͝+rHbH, Current Settings ͘DD:ʴH͉ D,Terminal mode file buffer is :IH,in,active Unused portion of buffer is 7I, bytes E͂EjFͶFzB{+{+{+=*I믓o|gͽ+SRTELMABDJLOQRSVX01ABDJLOQRSVX01OOO4T( >&"ç,>/0Ð 2Hû ̓̓̓>> Micro Cornucopia V730.1 <<hello >>>>͒>:>>>>>>>>@>>>u̓Baud Rate (300, 1200): ͆!l~g2\#~2]#w͉p##HVy#~2#~2u̓Word Length (7, 8): ͆w͉8>һ͉7>AһVy2x2u̓Stop Bits (1, 2): ͆w͉1>͉2> V2u̓Parity (None, Even, Odd): ͆w͉N>O͉E>O͉O>OVR2͉ ̓ Wrong! 7312 :IZ::w2I2I!"I!I~6Ow#!I0!OH"͛,HB"͛,H C>$bH O, Enter library code or phone number, Hit RET to abort this function now or CTL-X quits while dialing or ringing: I>/!I~ʜ2O ͯڙ:O i!I~A+ 0 + q!"{@~q 6"Ip͛,:Ģ!I^#~͝+#ʙ.uX:Ģ!I^#~q͈+ʪ͓+ª:ʙͤ, ” ͤ,> ͝+Ù#u, - try #*I#"Iͽ+> ͝+: ͤ,͌>]ͻ >]Z ү&:I‰:N B, Busy(, No answer, Redial? (Y)es, (N)o, (C)ontinuous, (Q)uiet continuous: ͪ+{+N2YʉCʄQ`>2I:˜2ͻ Ýͻ , :I2I:IW, CONNECTED - hit any key to stop the bellͻ ͈+͓+~ ͻ >͝+͝+R{P Gx,+0:0+> O:¤,:(WT9TA>ZTN>ZT[ I>Zû , ++ Bad library number called ++ &{+2I͌ңh2:->Z2 , ++ NO DIAL TONE ++ &7::Tx<! >! ~$Gͤ,#͈+͓+ʙ> ͝+:<Z] ͻ ͻ !ͻͻ > ͝+!ͻ(W:!ͻͻ 2:!ͻͻ 2ATM0 $ATM1 $+++$ATH $:2!ͻ͌ҮATDT $J~$~4͝+#û8͈+͓+ ͤ,Ü>GBB 01ʵCʵ3B NB 4,E,5ʵ  ͈+< ͓+<  ͤ,Ü͌ 2N ͌E :‰ :I2I=2I# ڷ ͻ Tͽ 2ͻ ʹS, ++ No ringback for autodial modem ++Ü{+x >?]Zͻ T͈+ ͓+ 7+:͏, Additional Subcommands for PMMI Modems Modem control: A - Answer tone for send or receive O - Originate tone for send or receive Parity option: 1 - Set and check for odd parity 0 - Set and check for even parity Both ends must be capable of these options which are available only in R and S modes. The parity checking will be part of the file transfer protocol. Speed Options: After entering your primary and secondary options, you can set the modem speed by placing a "." after the options followed by the speed e.g., 300, 600. EXAMPLE: SBO.600 will set the modem for 600 baud ͌ҽ ¼ {+ }0_.!~w+ *.xxxxxxx,,,,,,xxxxxxxx,,$xxxxxxx,,,,,,xxxxxxxx,,$ A=Bob Robesky.......1-209-227-2083B=Byron McKay.......1-415-965-4097C=Bruce Jorgens.....1-509-255-6324D=Phil Cary.........1-505-522-8856E=Bill Earnest......1-215-398-3937F=Chuck Forsberg....1-503-621-3193G=Ron Fowler........1-414-563-9932H=Charlie Hoffman...1-813-831-7276I=Jack Kinn.........1-817-547-8890J=Walt Jung.........1-301-661-2175K=Sigi Kluger.......1-915-598-1668L=Thomas Loker......1-301-863-7165M=Wayne Masters.....1-408-378-7474N=Dick Mead.........1-213-799-1632O=Al Mehr...........1-408-238-9621P=Pasadena RBBS.....1-213-577-9947Q=Mark Pulver.......1-312-789-0499R=Bruce Ratoff......1-201-272-1874S=Ken Stritzel......1-201-584-9227T=TCBBS, Dearborn...1-313-846-6127U=AnaHUG RCPM.......1-714-774-7860V=Dave Austin.......1-707-257-6502W=Paul Bagdonovich..1-201-747-7301X=Kirk De Haan......1-408-296-5078Y=Byron Kantor......1-619-273-4354Z=Chuck Metz........1-408-354-59340=Bill Parrott......1-913-682-33281=Larry Snyder......1-305-671-23302=Alex Soya.........1-305-676-35733=Tony Stanley......1-912-929-87284=Ed Svoboda........1-408-732-91905=Tampa Bay Bandit..1-813-937-36086=Thousand Oaks.....1-805-492-54727=Bill Wood.........1-619-256-39148=Spare.............x-xxx-xxx-xxxx9=Spare.............x-xxx-xxx-xxxx^DIR DIR *.* $U0AD XMODEM S XMODEM R BYE RBBS (vacant)(vacant)(vacant) Nice chatting, see you again soon... =!9"K1K!pʹ,".J!'ʹ,"0J, MDM730 - (type M for Menu) }]2͏ʹ:I!21Kͫ:3:B:ICb:O3+:ID+M3RSTk2I2IõEz2I2IõL‰2I2Iõ~?2*"+"+"+!"J ͟A2;J̀ k:2h> @2i3>^2h32i3]2I  !OI OG>xA>2I6#~?2:XI2UI:IDEMLTG:9:=xC:IHæ2xSXR’:PI:m ,++ Enter primary option plus file name ++ 2, ++ Bad option ++ 8>ë:PI>B2PIx?2I:I:] 2I2IͲ&!>J͐!!\>J ͛,>J>J!O"I>2I :I ͈+͓+G::::IQx0^:^ù:^2I2I:I>2I::'Õ:'Ž>2I:́:!+:%ʪ:ʴ:"T::#:I/2I{+{+͉{+: ʮ ::)n:$ :&:I 2I2Iͫ:PIt,Ready to send in batch mode t>2 ͝+|>B2PI><)):] <'ͪ'Ϳ'xh)F&'ڴͧ&>2zIF&%Q%:In%r%́%ژÇ><)́%ڴ):2It:PI>2B2PI):] <'#> ͝+͏!"{+͙"Ͳ&]':PI5&,File open, ready to receive :IT&,CRC in effect >Cn&,Checksum in effect >,Waiting.....<)ͫ"ژ:r(ͧ&ͤÃ͌(ͤ')><)!_J͐!!l͐!, File name to send? (CR to abort): I>/:I ~I!_J,_J::,Want to include time delays? (Y/N): ͪ+N:2I{+I_Jq=ʧ?,++ DISK READ ERROR ++$ʧH, (in Terminal-mode now) Jͫ, [Transfer completed]~, ++ FILE NAME ERROR ++ ö!IF~ ͈+͓+# :͝+:đA͝+4 :  L<:O: O:I_ W!:~!:I~:I~!ʹ,:đ{ƒ8>̠8®>͈+ʠ͓+ :PIU&>2zI, Multiple errors encountered. Type Q to quit, R to retry: ͓+{+ʹ+Rʫ"QU&:UI!]26J p# 1:UI*xI#, Received # ͽ+, : ,(+,H) :6J<26J ʃ~ ĝ+~ >.͝+|(͝+ҏ&,Awaiting name NAK xͅ)ͤ!5J5*9J\ ͛,"9J><)7( !]~<)(0#><)Q(   a> a> a>u<), ++ ERROR sending name ++ xͅ)ͤ><)!\͒!&,Awaiting file name Q͕ʓ7>2,J!](>2+J(2+J&,Time out receiving filename Iͤw#}à2,JyQ<)(I  !\͒!&, ** Checksum error ** 2,JQÖ2,J2,JF&><)(WU&>2I25Jͦ!!"9J!!\J,,0ڱ:fŒ*9J\ ͛,"9J!5J4Ì!8J5€!"9J:5JA>@25J, ** Memory buffer :I,open ** ;,closed ** , ** Memory buffer available ** {+͕æ2*HK*NQyAJ*`]J~4m#]͌܌Ý+͈+͓+G>/,Printer buffer is :Iʯ,ON ,OFF !#½]2Iͤ,:I:Ix͝+U> :I: 8>G:,x ,x͝+U:I@ͤ,> :IJ ,:I*Ip#"I> p> ͝+́!|!yJ>4!N>2I*I !ON w͝+G ́!#¢"IJ>4͌ w#:I*Ip#"I:7JJ>4!Nz24J:4JW!8 N w͝+GU ́!# "I!"IJ>4s ^#"I:7J s !"I"I*I*I|}::ʌ 27J!?ʹ,DM8¦ > xš 7: :I]ͻ :I]̀*I6}l&)>oO :IN!͆!>J͆!ѷ!+| <)'?,++ DISK FULL, SAVING PARTIAL FILE ++$'',++ Nothing to save, erasing file ++ ÷*>;Ý+6# 6 #•!6#ž!!8J6!IN!I 6 !IF#!~ ¾!#!~ !")J+#!~ !:8J<28J#!~ !!6 *)JJ~ "#"#~ "")J!Jp \. ~N"#~+] ͛,!e~w#~w\!\l ͛,!u6B#6A#6Kl!l6\:\2zI (ڥ#O7>2-J2+J{y"(G"G2-Jx2+J$z":-Jʥ#:UI #{+x+,H received not SOH - $F&:I>:#:I>:#>C<):zI<2zI ڰ": U&ý1K'', ++ RECEIVED FILE CANCELLED ++ ++ UNFINISHED FILE DELETED ++ ÷*:UI#, ++ Timeout $# #:zI:I:I/2I2&,** Switching to Checksum mode **  >2I(ڥ#W(ڥ#/J$:UI #, ++ Bad record # in header #z2wI>2I!"I!(ڥ#w,^$2I:I”$Q(ڥ#$:wIG:xI$%,(+,H) ><):xI<):xI/<)>2I!"I!~<),a%2Iy<)*I|<)}<)>2-J2+J(GҘ%2-J2+Jxʰ%ƒ%:-J%&:I%:UI%,++ x%+,H%,NAK, received not ACK - $2I:zI<2zI ?, ++ SEND-FILE CANCELLED ++$, ++ TIMEOUT - no ACK - $%:UI͈+͓+1K(X&><)(e&> <)>B2PI2I2I:IRS#, ++ FILE CANCELLED ++ ÷**xI#"xI}!\ #~?'·&:PI'\<,File exists - erase? (Y/N): ͪ+Y2{+\,++ NO WILDCARDS ALLOWED FOR TEXT FILES ++ 2,++ NO FILE SPECIFIED ++ 2\2|Iy2I!O"}I'*}I!͙,"}I:I<2IO(:IOO\!! •(2I!O"}I:Iy(y: ͫ!+J^*0J(*.J8(z((F&7> ).)!,J^(͈2O:VI1):XI6):I6)F+F&:WIR):XIW):IW)F+͈2OA^)4,Waiting ready signal {+F&(U&Cʣ))…)U&&,CRC request received >2I:PI&,Got checksum request &,Name NAK received :PI—*:UIj* !I*>w#* !]I*>6*~ ,*#xD**~ D*>.*, , Transferred :\22J!\͐!:2J2\!iIwI͛,Jͫ:> h:e:eæ2!l\͛,2|2h n+ n+ n+ _+n+>(n++>)n+_> ͝+> ͝+O͓+ʹ+͝+a{_ + |Ľ+{0n+|+}++ ,0n+,CTL-@͝+,~$,n+#,~8,:UI~n+#', :,>͝+{+>2I:PI*U&:;J_͡A xl,͉,:IcG:*K É,~#›,Jx4I!\,:=º,5-#^#6 ^-p- !- , p- !- -, ^-p- !- p-#̈́- ̈́-6# > W-W- > W-W-w#W-:n-_@w# . p-w#p-~*ʔ-#†-×-ͩ-~*ʥ-#™-ͩ-6?#©-ͦAA2/25/- I!\,!_J͐!:l2_J:m ...: 28J_J<.,++ FILE NOT FOUND ++u..#5.00, . _J? !`Jw#.!m`J 0=ƀo&:_J/=_@2/25/,Drive : k bytes free on drive : $0կ͓+ʹ+ /ʉ/ʉ/ʿ//G#4+~#/px/ ԝ+#L/#G~wڨ/+xF6 ʯ/ʭ/L/4L/>͝+> ͝+>͝+L/>#͝+{+B/G>#͝+{+xL/͝+/L/>͝+5L/{+L/{+F##> w# 0~(0!0#0#"07#2h:Iy0>2I!\J 0:\2J!J\ 0\í0!J\ 0\!J\ 0\<7¶02I=Ɓo&J 0] 02h2|><0~# x0,File open: *Iͽ+: 1, (+,H), records Send time: :_!1^#V*I&2i`ͽ+, mins, !1:_~:2E2E2E2E2&ͽ+, secs at 1&,To cancel: use CTL-X  0`@J0(  !1:__ , bps 110$300$450$600$710$1200$2400$4800$9600$19200${/_z/W12 !<=?2}o|g>o*I|>!L!yg)x2>g>!ol2r$s%# b2*IO!L ~W$^"I:I2, ** File still open, use DEL, DIR, WRT, E, L or T ** 22I!iIwI͛,!\IOI ͛,2I2+J2,J2I=bH, Single Letter Commands ? - Display current settings ^ - Function key intercept character, then (0-9) M - Display the menu E - Terminal mode with echo L - Terminal mode with local echo T - Terminal mode For copying text to disk use T (E or L) FILENAME.TYP Start or Stop toggles described on subsequent screen. R - Receive CP/M file using Christensen Protocol S - Send CP/M file using Christensen Protocol COMMAND: R (or S) FILENAME.TYP R and S can use the following subcommands: B - Bulk transfer using wildcards (e.g., *.*) D - Disconnect when done Q - Quiet mode (no messages to console) V - View or bytes on console X - When done, disconnect, go to CP/M The single letter commands may also be used on the command line when the program is initially executed. ͏, Three Letter Commands CPM - Exit from this program to CP/M DIR - List directory and space free (may specify drive) ERA - Erase file (may specify drive) LOG - Change default drive/user no. (specify drive/user) and reset disks. e.g. LOG A0: or LOG B: (user # unchanged) SPD - Set file output speed in terminal mode vDb8,TIM - Select Baud rate for "time-to-send" msg. :ʘ8,TCC - Toggle CRC/Checksum mode on receive :8,TLC - Toggle local command immediate or after :', :"9,TLF - Toggle LF after CR in "L" or "T" mode for a disk file :Z9,TRB - Toggle rubout to backspace conversion :ʝ9,TXO - Toggle XOFF testing in terminal mode file output :9:9,NUM - List remote systems : 9,SET - Set modem baud rate ,BYE - Disconnect, then return to CP/M :)::@:,CAL - Dial number ,DSC - Disconnect from the phone line The following are terminal text buffer commands: ,DEL - Delete memory buffer and file WRT - Write memory buffer to disk file 2H, Local Commands while in Terminal Mode : , - Send a break tone for 300 ms. :;:), - Change baud rate >, - Exit to command mode :;:", - Send log-on message :!, - Disconnect from the phone line :<:#, - Toggle printer > ͝+:&, - Start copy into buffer :$, - Stop copy into buffer Start & Stop may be toggled as often as desired. A ";" at start of line indicates buffer is copying. XOFF automatically used to stop input when writing full buffer to disk, XON sent to resume. :%, - Transfer ASCII file to remote ::'=, - Send local control character to remote =, - Next character will be used for local control z{+:I'>7I, Bytes of buffer free A͝+͟A>>&oͽ+>>͝+>>͝+,COMMAND: 2II>/:I'>^ʛ??zH >:I:#CI0CPMZ,{+0LOGA0DIRҤ@0ERAһ@0SPDB0TIM]C0TCC҄D0TRBD0TLCE0TLFnE0TXOE: ?: ?0NUMҕG: ?0SETF0WRTDG0DELG0BYEM@0DSC+:Q?:c?0CALc?> 2Io?:I!HI&Hx?ͫ,~?=,++ Invalid command ++ :bH, SPECIAL FUNCTION KEY TABLE ?,CTL-@͝+, current function key intercept character ! #~0͝+> ͝+#~@@ :@,$@͝+$@{+@{+=:h:{@h, << Exit to CP/M >> Z,ͻ !ͻͻ > ͝+!@ͻ(Җ@ATZ $23Jͱ-:3J_=I!\,3+:] x?\<@,++ File not found ++ =\,File erased =:I«A:I )AͦAAAx?23J͟AG:IdApA:IdArAA :3J_:=J_͡A= lA:IA͕AOxGxx?2=JI>/:I 0 x? ,++ Terminal mode file open ++ ++ Use WRT or DEL before LOG command ++ =,Delay between chars. (0-9): ͈+(B͓+͝+C0 x?2,Delay at end of line (0-9): ͈+aB͓+͝+C0 x?2 , Char. delay (terminal file mode) is: :Gxo&ͽ+,0 ms. per character Line delay (terminal file mode) is: : Go&ͽ+,00 ms. per character =, :IAx?_:I =0LC:I0XC&x?_͡A=>LCvDx?,Use 0-8 to give baud rate for 'S' mode time-to-send message, where 0=110, 1=300, 2=450, 3=600, 4=710, 5=1200, 6=2400, 7=4800 8=9600 and 9=19200 Baud. Enter value: ͉A x?2 D=vD`D,Rate for the S mode time-to-send message is set to sD,Modem speed is 1: G:::x?:/2͘D=,Mode: :ʳD,CRC ,CHECKSUM :x?:/2D=:D,Rub is backspace ,Rub is rub :x?:/2E=,Use ::'GE, before local command , to send local command to remote :x?:/2͂E=,LF :˜E,NOT ,sent after CR in "L" or "T" for a disk file :x?,Use XOFF testing? (Y/N): MFE2jF, Use XON waiting after (Y/N): MF+F2ͶF:=/2,Therefore jF=I>/:I ?GN>xY>x?,XOFF testing :ŠF,NOT ,used, in terminal mode file output ,XON :F,NOT ,automatically tested after CRÒF: x?Iw:=Aͤ,Tͤ, ͤ,=:IyG:?J yG>J2I2I!>J͐!!O"I=:IyGcG2I2I!>J͐!!O"I=:?J >J2I,++ No File Open ++ =bH, Library of Phone Numbers of Remote Systems!OH## ͛,H##B ͛,H G>$ O{+{+=> > > F#1H'H7,HIT any KEY to CONTINUE͈+MH͓+bH{+=: ž> ͝+ > ͝+rHbH, Current Settings ͘DD:ʴH͉ D,Terminal mode file buffer is :IH,in,active Unused portion of buffer is 7I, bytes E͂EjFͶFzB{+{+{+=*I믓o|gͽ+SRTELMABDJLOQRSVX01ABDJLOQRSVX01OOO4some baud rates have been commented out ; BAUDTB: EQU $ ;Valid baud rates ; ;BAUD MSPEED CTC ;BD110: DB '11',0,2 ; 110 0 02 BD300: DB '3',0,1,5 ; 300 1 05 ;BD600: DB '6',0,3,6 ; 600 3 06 BD1200: DB '12',5,7 ;1200 5 07 ;BD2400:DB '24',6,10 ;2400 6 0A ;BD4800:DB '48',7,12 ;4800 7 0C ;BD9600:DB '96',8,14 ;9600 8 0E ;BD192: DB '19',8,15 ;19.2 9 0F DB 0 ; BAUDBUF: DB 10,0 DS 10 ; ;--------------------------------------------------------------------- ; ; ; NOTE: MUST TERMINATE PRIOR TO 0380H (with Smartmodem) ; 0B80H (without Smartmodem) ; ;--------------------------------------------------------------------- END ; MKP4-10.ASM -- Kaypro 4/10 overlay file for MDM730. 5/24/84 ; ; This is a slightly modified version of M7KP-2.ASM and is set up to ; default to 1200 baud, 8bits, 1stopbit, no parity. Runs great on Kaypro ; 4 & 10 (Clock set for 4mz). Baud can be reset to 300 by SET Command. ; It has been written not to exceed 896 bytes, a constraint documented ; in M7KP-1.ASM. Because of this, some code was taken out. ; (Baudrate can be set only to 300 or 1200). Also set for Touchtone, which ; can also be changed. ; ; ; Edit this file for your preferences then follow the "TO USE:", example ; shown below. ; ; Edit Examples: ; CLOCK: 20 or 40 (20 will run at 2mz for Kaypro-2, 40 for 4&10) ; TOUCHPULSE: 'T' or 'P' (Touchtone or Pulse Dialing) ; MSPEED: 1 or 5 (1=300 baud, 5=1200 baud) ; SYSVER: 'Version For Kaypro 4-10' (Change to what you want) ; SETBD: A,05H or A,07H (This is to set initial baud rate) ; (05H=300 and 07H=1200 ) ; ; ; TO USE: First edit this file filling in answers for your own ; equipment. Then assemble with ASM.COM or equivalent ; assembler. Use MLOAD21 to overlay the results of this ; program to the original MDM730.COM file: ; ; A>MLOAD21 *YOUNAME.COM=MDM730.COM, MKP4-10 ; *Name the new file whatever you wish. ; ; If you don't want to change anything, just use the KM1200.COM file ; included in the library. It runs as described in the first paragraph. ; ; If you want to also use the autodial phone number directory feature, ; use ASM to assemble the M7NM-6.ASM file and include it on the MLOAD21 ; command line: ; ; A>MLOAD21 *YOUNAME.COM=MDM730.COM,MKP4-10,M7NM-6 ; ; = = = = = = = = = = = = = = = = = = = = = = ; Overlay code begins here- BELL: EQU 07H ;bell CR: EQU 0DH ;carriage return ESC: EQU 1BH ;escape LF: EQU 0AH ;linefeed ; YES: EQU 0FFH NO: EQU 0 ; PORT: EQU 04H ;Kaypro II,4,10 serial output port MODCTL1: EQU PORT+2 ;Modem control port MODDATP: EQU PORT ;Modem data port MODCTL2: EQU PORT+2 ;Modem control port ; MODRCVB:EQU 01H ;Your bit to test for receive .... ...1 MODRCVR:EQU 01H ;Your value when receive ready .... ...1 ; ;Int pending .... ..1. MODSNDB:EQU 04H ;Your bit to test for send .... .1.. MODSNDR:EQU 04H ;Your value when send ready .... .1.. ;DCT: EQU 80H ;data carier detect .... 1... ; ;sync hunt ...1 .... ; ;Clear to Send ..1. .... ; ;Tx underrun .1.. .... ; ;Break/Abort 1... .... ; ; The following are used in setting up the Z80 SIO. ; ; ;all sent .... ...1 ; ;parity error ...1 .... ; ;overrun error ..10 .... ; ;framing error .1.. .... ; ;end of frame (SDLC) 1... .... ;WRREG0 ; ;write to register .... .xxx ; ;reset flags ..xx x... RSTERR: EQU 30H ;reset parity and overrun flags ..11 0... RSTINS: EQU 18H ;reset SIO - register 0 ..01 1... WRREG1: EQU 0 ;no interrupts - register 1 ; ;ext int enable .... ...1 ; ;tx int enable .... ..1. ; ;rx int disable ...0 0... ; ;rx int on first character ...0 1... ; ;int on all rx char/parity eff ...1 0... ; ;int on all rx char ...1 1... ; ;wait/ready on r/t ..1. .... ; ;wait/ready function .1.. .... ; ;wait/ready enable 1... .... ; ; ;register 3 equates WRREG3: EQU 0C1H ;8 Rx bits, Rx enable RENABLE EQU 1 ;Rx enable - .... ...1 ; ;sync character load inhibit - .... ..1. ; ;address serch mode (SDLC) - .... .1.. ; ;Rx CRC enabel - .... 1... ; ;Enter hunt phase ...1 .... ; ;Auto enables ..1. .... MSKWD: EQU 0C0H ;word length mask - xx.. .... ; ;receive five bit work - 00.. .... RSEVEN: EQU 040H ;receive seven bit word - 01.. .... ; ;receive six bit word - 10.. .... REIGHT: EQU 0C0H ;receive eight bit word - 11.. .... ; ; ;register 4 equates WRREG4: EQU 44H ;16X baud rate, 1 stop bit, no parity MSKPA: EQU 03H ;mask for parity bits - .... ..xx NONE: EQU 00H ;no parity - .... ..00 ODD: EQU 01H ;odd parity - .... ..01 EVEN: EQU 03H ;even parity - .... ..11 MSKST: EQU 0CH ;stop bit mask - .... xx.. ; ;sync modes enable - .... 00.. ONE: EQU 04H ;one stop bit - .... 01.. ; ;1.5 STOP BITS - .... 10.. TWO: EQU 0CH ;two stop bits - .... 11.. ; ;sync modes - ..xx .... ;CLK01: EQU 00H ;1X clock mode - 00.. .... CLK16: EQU 40H ;16X clock mode - 01.. .... ;CLK32: EQU 80H ;32X clock mode - 10.. .... ;CLK64: EQU c0H ;64X clock mode - 11.. .... ; ;register 5 equates WRREG5: EQU 0EAH ;8 Tx bits, Tx enable, RTS, DTR ;TXCRC EQU 001H ;Tx CRC enable .... ...1 ;RTS EQU 002H ;Request to send .... ..1. ;SLDC EQU 004H ;SDLC/CRC-16 .... .1.. TENABLE:EQU 008H ;Tx enable .... 1... ;BREAK EQU 010H ;Send break ...1 .... ; ;Transmit five bit word - .00. .... TSEVEN: EQU 020H ;Transmit seven bit word - .01. .... ; ;Transmit six bit word - .10. .... TEIGHT: EQU 060H ;Transmit eight bit word - .11. .... ;DTR EQU 080H ;Data terminal ready 1... .... DTRON: EQU 08AH ;Tx enable, RTS, DTR - 1... 1.1. DTROFF: EQU 000H ;DTR off, RTS off - 0... ..0. ; ORG 100H ; ; Change the clock speed as needed for your system. ; DS 3 ;(for "JMP START" instruction) ; PMMIMODEM: DB NO ;yes=PMMI S-100 Modem 103H SMARTMODEM: DB YES ;yes=HAYES Smartmodem, no=non-PMMI 104H TOUCHPULSE: DB 'T' ;T=touch, P=pulse (Smartmodem-only) 105H CLOCK: DB 40 ;clock speed in MHz x10, 25.5 MHz max. 106H ;20=2 MHh, 37=3.68 MHz, 40=4 MHz, etc. 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 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. 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 NOOFCOL: DB 5 ;number of DIR columns shown 10AH SETUPTST: DB YES ;yes=user-added Setup routine 10BH SCRNTEST: DB YES ;Cursor control routine 10CH ACKNAK: DB YES ;yes=resend a record after any non-ACK 10DH ;no=resend a record after a valid NAK BAKUPBYTE: DB NO ;yes=change any file same name to .BAK 10EH CRCDFLT: DB YES ;yes=default to CRC checking 10FH TOGGLECRC: DB YES ;yes=allow toggling of CRC to Checksum 110H CONVBKSP: DB NO ;yes=convert backspace to rub 111H TOGGLEBK: DB NO ;yes=allow toggling of bksp to rub 112H ADDLF: DB NO ;no=no LF after CR to send file in 113H ;terminal mode (added by remote echo) TOGGLELF: DB YES ;yes=allow toggling of LF after CR 114H TRANLOGON: DB YES ;yes=allow transmission of logon 115H ;write logon sequence at location LOGON SAVCCP: DB YES ;yes=do not overwrite CCP 116H LOCONEXTCHR: DB NO ;yes=local command if EXTCHR precedes 117H ;no=external command if EXTCHR precedes TOGGLELOC: DB YES ;yes=allow toggling of LOCONEXTCHR 118H LSTTST: DB YES ;yes=printer available on printer port 119H XOFFTST: DB NO ;yes=chcks for XOFF from remote while 11AH ;sending a file in terminal mode XONWAIT: DB NO ;yes=wait for XON after CR while 11BH ;sending a file in terminal mode TOGXOFF: DB YES ;yes=allow toggling of XOFF checking 11CH IGNORCTL: DB NO ;yes=CTL-chars above ^M not displayed 11DH EXTRA1: DB 0 ;for future expansion 11EH EXTRA2: DB 0 ;for future expansion 11FH BRKCHR: DB '@'-40H ;^@ = Send a 300 ms. break tone 120H NOCXNNCT: DB 'N'-40H ;^N = Disconnect from the phone line 121H LOGCHR: DB 'L'-40H ;^L = Send logon 122H LSTCHR: DB 'P'-40H ;^P = Toggle printer 123H UNSAVE: DB 'R'-40H ;^R = Close input text buffer 124H TRANCHR: DB 'T'-40H ;^T = Transmit file to remote 125H SAVECHR: DB 'Y'-40H ;^Y = Open input text buffer 126H EXTCHR: DB '^'-40H ;^^ = Send next character 127H PULSERATE: DS 1 ; 128H CHGBAUD DS 1 ; 129H ; IN$MODCTL1: MVI A,10H ;channel 0, reset interrupts. 12AH OUT MODCTL1 IN MODCTL1 ;get the status bits RET DB 0,0,0 ; OUT$MODDATP: OUT MODDATP ! RET ;out modem data port 134H DB 0,0,0,0,0,0,0 IN$MODDATP: IN MODDATP ! RET ;in modem data port 13EH DB 0,0,0,0,0,0,0 ANI$MODRCVB: ANI MODRCVB ! RET ;bit to test for receive ready 148H CPI$MODRCVR: CPI MODRCVR ! RET ;value of receive bit when rdy 14BH ANI$MODSNDB: ANI MODSNDB ! RET ;bit to test for send ready 14EH CPI$MODSNDR: CPI MODSNDR ! RET ;value of send bit when ready 151H IN$BAUDRP: DS 3 ;IN baudrate port 154H OUT$BAUDRP: DS 3 ;OUT baudrate port 157H OUT$MODCTL1: OUT MODCTL1 ! RET ;out modem control port 15AH OUT$MODCTL2: OUT MODCTL2 ! RET ;out modem status port 15DH ; LOGONPTR: DW LOGON ;for user message. 160H JMP$DAIL: DS 3 ;Use routine in main program 162H JMP$DISCONNT: DS 3 ;Use routine in main program 165H JMP$GOODBYE: JMP GOODBYE ;Routine in this overlay 168H JMP$INITMOD: JMP INITMOD ;Initialization in this overlay 16BH JMP$NEWBAUD: RET ! NOP ! NOP ;Bypass PMMI routine 16EH JMP$NOPARITY: RET ! NOP ! NOP ;Bypass PMMI routine 171H JMP$PARITY: RET ! NOP ! NOP ;Bypass PMMI routine 174H JMP$SETUPR: JMP SETUPR ;Set command in this overlay 177H JMP$SPCLMENU: RET ! NOP ! NOP ;Bypass special menu routine 17AH JMP$SYSVER: JMP SYSVER ;Version message in this overlay17DH JMP$BREAK: JMP SENDBRK ;Break routine in this overlay 180H ; ; ; Do not change the following six lines, the routine are in main program. ; JMP$ILPRT: DS 3 ;Inline print routine 183H JMP$INBUF DS 3 ;Input buffer routine 186H JMP$INLNCOMP: DS 3 ;Inline compare routine 189H JMP$INMODEM DS 3 ; 18CH JMP$NXTSCRN: DS 3 ; 18FH JMP$TIMER: DS 3 ;Timer routine 192H ; ; Clear sequences -- CLREOS is clear to end of screen, CLRSCRN is clear ; entire screen. Last entry must be 0. Any other 0's act as NOP's. ; CLREOS: CALL JMP$ILPRT ; 195H DB 017H,0,0,0,0 ; 198H RET ; 19DH ; CLRSCRN: CALL JMP$ILPRT ; 19EH DB 01AH,0,0,0,0 ; 1A1H RET ; 1A6H ; ; SYSVER: CALL JMP$ILPRT ; 1A7H DB '>> Micro Cornucopia V730.1 <<',0 ; 1AAH RET ; ; NOTE: You can change the SYSVER message to be longer or shorter. The ; end of your last routine should terminate by 0380H (390 bytes ; available after start of SYSVER) if using the Hayes Smartmodem ; or by address 0B80H (2521 bytes) otherwise. ; ; You can put in a message at this location which can be called up with ; CTL-L if TRANLOGON has been set YES. You can put in several lines if ; desired. End with a 0. ; LOGON: DB 'hello',CR,LF,0 ; ; ; This routine allows a 300 ms. break tone to be sent to reset some ; time-share computers. ; SENDBRK: MVI A,5 ;select register 5 OUT MODCTL1 MVI A,0F8H ;send a break tone JMP GOODBYE1 ; ; This routine sends a 300 ms. break tone and sets DTR low for the same ; length of time to disconnect some modems such as the Bell 212A, etc. ; GOODBYE: MVI A,5 ;select register 5 OUT MODCTL1 ;send to the status port MVI A,DTROFF ;turn off dtr ; GOODBYE1: OUT MODCTL1 MVI B,3 ;delay 300 ms. CALL JMP$TIMER MVI A,5 ;select register 5 OUT MODCTL1 LDA REG5+1 ;has been set to word length, etc. OUT MODCTL1 RET ; ; Kaypro 4-10 initialization -- resets the SIO, sets the interrupt ; mode, the receive and transmit mode. ; Sets the baud rate to port 00. Hex 05=300 baud, 07=1200 ; INITMOD:MVI A,0 ;select register 0 OUT MODCTL1 MVI A,RSTINS ;reset SIO - 18h OUT MODCTL1 ; MVI A,1 ;select register 1 OUT MODCTL1 MVI A,WRREG1 ;no interrupts OUT MODCTL1 ; MVI A,3 ;select register 3 - receive OUT MODCTL1 REG3: MVI A,WRREG3 ;8 Rx bits, Rx enable OUT MODCTL1 ; MVI A,4 ;select register 4 OUT MODCTL1 MVI A,CLK16 ;16X baud rate PARIT: ORI NONE ;type of parity STPLN: ORI ONE ;number of stop bits OUT MODCTL1 ; MVI A,5 ;select register 5 - transmit OUT MODCTL1 REG5: MVI A,WRREG5 ;8 Tx bits, Tx enable, no RTS, no DTR OUT MODCTL1 ; SETBD: MVI A,07H ;set baudrate to 1200 bps (A,05H=300) OUT 00 RET ; ; The following routine changes the baud rate, word length, stop bits ; and parity on the Z80 SIO from the command level. Note the routine ; MUST modify the parameters used by the INITMOD routine. ; SETUPR: PUSH H AGAIN: LXI D,BAUDBUF ;point to input buffer for JMP$INLNCOMP CALL JMP$ILPRT DB 1AH,'Baud Rate (300, 1200): ',0 CALL JMP$INBUF LXI H,BAUDTB BAUDLP: MOV A,M ;first character to check ORA A ;is it null JZ NOTOK ;no matches found STA BAUDCP ;store in compare area INX H ;point to next character MOV A,M ;second character to check or null STA BAUDCP+1 ;store in comparea area INX H ;point to MSPEED constant LXI D,BAUDBUF+2 ;compare baudbuf and baudcp CALL JMP$INLNCOMP ;was valid baud specified BAUDCP: DB 0,0,0 ;baudrate from table gets stored here JNC OK ;match, go save it INX H ;skip MSPEED INX H ;and CTC constant JMP BAUDLP ;and check next entry NOTOK: CALL WRONG ;tell messed up JNC AGAIN2 ;null line entered bypass baud change JMP AGAIN ;try again ; OK: MOV A,M ;get MSPEED STA MSPEED ;change time-to-send to match baudrate INX H ;point to CTC constant MOV A,M ;and get it STA SETBD+1 ;store in INITMOD routine ; AGAIN2: LXI D,BAUDBUF ;point to input buffer CALL JMP$ILPRT DB 'Word Length (7, 8): ',0 CALL JMP$INBUF LXI D,BAUDBUF+2 CALL JMP$INLNCOMP ;was eight bits requested DB '8',0 MVI A,REIGHT+RENABLE;receive eight bits - C1h MVI B,TEIGHT+DTRON ;transmit eight bits - EAh JNC OK2 CALL JMP$INLNCOMP ;was seven bits requested DB '7',0 MVI A,RSEVEN+RENABLE;receive seven bits - 41h MVI B,TSEVEN+DTRON ;transmit seven bits - AAh JNC OK2 CALL WRONG JNC AGAIN3 ;bypass word length change JMP AGAIN2 ; OK2: STA REG3+1 ;store in MVI instruction MOV A,B ;get transmit word length STA REG5+1 ;store in MVI instruction ; AGAIN3: LXI D,BAUDBUF ;point to input buffer for JMP$INLNCOMP CALL JMP$ILPRT DB 'Stop Bits (1, 2): ',0 CALL JMP$INBUF LXI D,BAUDBUF+2 CALL JMP$INLNCOMP ;was 1 stop bit requested DB '1',0 MVI A,ONE ;1 stop bit - 04h JNC OK3 CALL JMP$INLNCOMP ;was 2 stop bits requested DB '2',0 MVI A,TWO ;2 stop bits - 0Ch JNC OK3 CALL WRONG JNC AGAIN4 ;bypass stop bit mod JMP AGAIN3 ;go ask again ; OK3: STA STPLN+1 ;save stop bits in MVI ; AGAIN4: LXI D,BAUDBUF ;point to input buffer for JMP$INLNCOMP CALL JMP$ILPRT DB 'Parity (None, Even, Odd): ',0 CALL JMP$INBUF LXI D,BAUDBUF+2 CALL JMP$INLNCOMP ;was no parity requested DB 'N',0 ;just check first character MVI A,NONE ;no parity - 00h JNC OK4 ;go if got match CALL JMP$INLNCOMP ;was even parity requested DB 'E',0 MVI A,EVEN ;even parity - 03h JNC OK4 CALL JMP$INLNCOMP ;was odd parity requested DB 'O',0 MVI A,ODD ;odd parity - 01h JNC OK4 CALL WRONG ;no matches JNC GOSET ;bypass parity changes JMP AGAIN4 ;try again ; OK4: STA PARIT+1 ;save in MVI ; ; now go modify the init routine to initialize the Kaypro to the values ; requested. ; GOSET: POP H ;restore HL register JMP INITMOD ;reset Z80 SIO (and return) ; WRONG: CALL JMP$INLNCOMP ;was null string entered DB ' ',0 RNC ;all is ok CALL JMP$ILPRT ;all matches failed - tell operator DB ' Wrong!',CR,LF,BELL,0 STC ;Set carry flag RET ; ; Due to space constraints some baud rates have been commented out ; BAUDTB: EQU $ ;Valid baud rates ; ;BAUD MSPEED CTC ;BD110: DB '11',0,2 ; 110 0 02 BD300: DB '3',0,1,5 ; 300 1 05 ;BD600: DB '6',0,3,6 ; 600 3 06 BD1200: DB '12',5,7 ;1200 5 07 ;BD2400:DB '24',6,10 ;2400 6 0A ;BD4800:DB '48',7,12 ;4800 7 0C ;BD9600:DB '96',8,14 ;9600 8 0E ;BD192: DB '19',8,15 ;19.2 9 0F DB 0 ; BAUDBUF: DB 10,0 DS 10 ; ;--------------------------------------------------------------------- ; ; ; NOTE: MUST TERMINATE PRIOR TO 0380H (with Smartmodem) ; 0B80H (without Smartmodem) ; ;--------------------------------------------------------------------- END :1001030000FF542801050505FFFFFF00FFFF000066 :1001130000FFFFFF00FFFF0000FF000000000E0CC8 :05012300101214191E6A :10012A003E10D306DB06C9000000D304C900000054 :10013A0000000000DB04C900000000000000E60126 :0A014A00C9FE01C9E604C9FE04C99C :08015A00D306C9D306C9C9018F :10016800C3DA01C3F101C90000C90000C90000C316 :0B0178002202C90000C3A701C3D1018F :10019500CD83011700000000C9CD83011A000000BE :1001A50000C9CD83013E3E204D6963726F20436FC8 :1001B500726E75636F70696120563733302E31204A :1001C5003C3C00C968656C6C6F0D0A003E05D306A2 :1001D5003EF8C3E0013E05D3063E00D3060603CD37 :1001E50092013E05D3063A1A02D306C93E00D3064C :1001F5003E18D3063E01D3063E00D3063E03D30682 :100205003EC1D3063E04D3063E40F600F604D306AF :100215003E05D3063EEAD3063E07D300C9E5117570 :1002250003CD83011A4261756420526174652028EB :100235003330302C2031323030293A2000CD860140 :10024500216C037EB7CA6702325C02237E325D02EF :1002550023117703CD8901000000D270022323C347 :100265004802CD5603D27902C323027E3207012309 :100275007E321E02117503CD8301576F7264204CC7 :10028500656E6774682028372C2038293A2000CD00 :100295008601117703CD890138003EC106EAD2BB3C :1002A50002CD890137003E4106AAD2BB02CD5603D5 :1002B500D2C202C3790232060278321A02117503DC :1002C500CD830153746F7020426974732028312CDB :1002D5002032293A2000CD8601117703CD890131DD :1002E500003E04D2FE02CD890132003E0CD2FE0250 :1002F500CD5603D20103C3C202321202117503CDDA :10030500830150617269747920284E6F6E652C20C7 :100315004576656E2C204F6464293A2000CD860110 :10032500117703CD89014E003E00D24F03CD8901DF :1003350045003E03D24F03CD89014F003E01D24F08 :1003450003CD5603D25203C30103321002E1C3F1B8 :1003550001CD89012000D0CD83012057726F6E67D2 :10036500210D0A070037C9330001053132050700A1 :020375000A007C :0000000000 TOPIC : KEEPING THE BELL FROM DINGING CONSTANTLY AFTER A MDM730 CONNECT FROM : IRV HOFF W6FFC DATE : 22 MAR 84 Some people have mentioned they are annoyed with the bell ringing constantly after a connect when auto-dialing with MDM730. The following two small changes will stop that: 1) WILL ONLY RING ONE TIME then go to terminal mode after announcing it has connected: Change 06EA from CD 88 23 to C3 7E 19 2) WILL NOT RING AT ALL, but go right to terminal mode after announcing it has connected. Change 06E3 from 07 00 06 05 to 00 CE 73 19 then SAVE 73 MDM730.COM to make the change permanent. - Irv Hoff!9"13 MDMFNK v1.10 (c) ESKAY 02-19-84 MDM7 installation program for function keys. NOTE: the version of MDM7 must be 24 or higher! Please enter the file name (and optional DU:) of the file to be installed/inspected : >ͷ3#PY  BK a{!2ͣA:<2 w# 7&!~A´#K"#v* You can now change the INTERCEPT CHARACTER (key prefix), any of the ten function keys, or you can exit to CP/M. A - INT CHAR: ~#{ B - FNK 0 : W C - FNK 1 : W D - FNK 2 : W E - FNK 3 : W F - FNK 4 : W G - FNK 5 : W H - FNK 6 : W I - FNK 7 : W J - FNK 8 : W K - FNK 9 : W*$ }2' characters free. Q - abort program S - save and quit YOUR CHOICE? >ͷ~QʮS*ABXLX==G > ͷ_ Keep trailing ? ͨ _Y‡6 #6*~#~# ʵy=“*w#«X~# ¶~#ß ERROR - new string won't fit!X Type the new INTERCEPT CHARACTER > ͨ *wXLa!~# 9ͭO:=26͓î#~ hq͹ W #n # ERROR - key definition table not found - aborting.  ERROR - NUMLIB not found at 0E00H - might not be a valid MDM7 file (MDM724 or higher). Aborting...  ERROR - drive/user spec invalid Ö DISK WRITE ERROR - FILE TRASHED  ERROR - file not found. Please restart.  *** END OF EXECUTION *** *>2%2&$կ@~#:\,ʷ!ڷH~, AuAp<2%#~:ʸ?2&#~:ʸmG~#:ʫ0m mOxGÏx m2&ø~:¿#~,! >?:%G:&O>~.#'*>?#'#> ~, !J=_.:;,<>ɾw 7 $ t>u$ t$ tn$ ʠ$ $ Æ 2  !~#o|g6: ʷ !~ʷ , w#ê !: ~#  {    y yG>GO> ͹  2B . >2B dC  C 0͹ M E yb :B b > ͹ ɯ2B y0͹ > ͹ > ͹ ҹ ʹ ʹ ʹ ʹ ʹ >^͹ @͹ *.  O*.  x2 y2 : _$ : _ $ Y $ X$ $  $ OGa{_H@ Wa HV Wa r# xa ́ H ͊ H͊ |ڪ › }ڪ ~# x› ~+ x° å {ozg 7}o|g }o|g}o}|g}o}o|g |g}o }o|g}o|g}o|g3 #}/o|/gկ2 !"  i * }o|g" h >2 M * : !" | › }  *  " }o|gھ " }oÿ  ! Documentation for M7FNK.COM v1.10 - by Sigi Kluger 02/19/84 NOTE: This program depends on NUMLIB being at 0E00H! --------------------------------------------------------------------------- M7FNK.COM is a program used to alter the function key assignments for MDM724 and later versions. M7MFNK takes no arguments on the command line. You will be prompted for the full file name to be installed. Drive/user spec is ok. If you make the changes and then save the file ( described later ) the new file will have the same name as the file you used for a source file (which erases the source file). Therefore it is a good idea to make a copy of the file with pip before running this program. Next, the intercept character, the function key assignments and free memory are displayed. Command options are prefixed with a character (A..K, Q and S). Enter an "A" to change the intercept character. It can be set to almost anything, but should be a rarely used character (such as ^). It can also be a rarely used control character, such as an 'escape' or CTL-A. Enter a "B", "C", etc to change the respective key definition. The key can be as long as free memory allows. After entering the key definition you have a chance to retain or delete the trailing RETURN, and then the key will be inserted into the table, provided it fits. To totally blank a key, enter a null string and answer "N" to the trailing CR question. When you are finished, you can use the "S" comamnd to save the file back to disk. As an alternative, you can also abort without update. NOTE: a ^C aborts to CP/M anywhere except when entering a new INTERCEPT CHARACTER. MDM7 update information 02/17/84 Sigi Kluger, El Paso TX 02-17-84 Being used to a great non-public modem program with a number of function keys, I decided to add ten function keys to MDM7. Great for things you do most, like DIR *.* $U0AD, or XMODEM S, or you could even save your name in a function key for logon. 1. HOW TO ACCESS (transmit) THE FUNCTION KEYS. You transmit the contents of a function key by typing first the INTERCEPT CHARACTER, then a digit 0..9. The INTERCEPT CHARACTER is an unique char- acter which tells MDM7 that a function key command follows. The INTERCEPT CHARACTER is set to ^ (circumflex). It could as easily be set to CTL-A or 'escape', for example. In the distribution version, the following keys are defined: ^A0 DIR ^A1 DIR *.* $U0AD ^A2 XMODEM S ^A3 XMODEM R ^A4 BYE ^A5 CBBS (Function keys 2 and 3 have no trailing CR). 2. HOW MUCH ROOM? A total of 256 bytes are reserved for the function key definition. Each definition takes up the number of bytes in the string, PLUS 2. Note that you must not enclose any control characters in the definitions (CR is allowed and is optional). 3. HOW TO CHANGE THE FUNCTION KEYS In order to not increase the size of MDM7 considerably, I have written the M7FNK utility. M7FNK.COM is virtually self-explanatory and it is covered by its own short DOC file. (M7FNK.COM v1.10 is current.) 4. WHAT WILL NOT WORK Do not attempt to use DDT to modify the function keys. Especially, do not force any control characters into the definitions. There can only be three non-printing characters in each definition, the start byte, an optional CR at the end, and the end byte. 5. DEFINITION FORMAT This is an example of the definition for function key 1: DB 1,'THIS IS A FUNCTION KEY',CR,0 | | | | | |__stop character | |________________key definition plus CR |________________________________start character Each key definition string starts with the key number in binary. The function key processor searches for that number. Those numbers must be unique throughout the key definitions. EMPTY key definitions are en- coded thusly: DB 9,0 ;empty function key #9 !9"12/\!Vd2vl!zd2!W~ =ï!{~ Xz ͶͶͶͶ!Bͣ €"~¬~Ͷ#¬_> Ͷ> Ͷ !5#6#  3!5` ))))0 o4͞## 6 #3>2/4 ʔ͞22x##o:2Ͷ>=Ͷ5:4ʔ ^5Gw#†:R70ڰ:_Aڰ[7*+|g}Ɛ'@'Ͷ:+A"!)*+"-> Ͷzz<*a7! "'zQzï*)*'|b}i-zï>2x>27:/ʲ_YN—ò* M7LIB program for changing MDM7xx phone library - 04/06/84$ M7LIB lets the user change the MDM7xx phone number library. EXAMPLES: M7LIB MDM7.COM (1) M7LIB MDM7.COM MDM77.COM (2) (1) changes the original file (named MDM7.COM) (2) changes the 2nd file, leaving original intact $ ++ UNABLE TO OPEN SOURCE FILE ++$ ++ OUTPUT FILE ALREADY EXISTS ++$ ++ NO DIRECTORY SPACE ++$ loading file...$ [Exiting program] $ ++ PHONE LIBRARY NOT FOUND ++$ PHONE LIBRARY LOCATED AT: $ DOES LIBRARY LOOK RIGHT? $ CTL-C abort, hange, elete,

rint lib, ead, rite : $ ABORTING...NO CHANGES MADE$ DESC..............1-XXX-XXX-XXXXhange, elete,

rint lib, ead, rite : To change or alter any line (such as the "F" line), you would then type: CTL-C abort, hange, elete,

rint lib, ead, rite : CF The "C" would select "Change" and the "F" selects the line you wish to change. This same technique would be used to delete any line that is no longer needed. Using "DH" for example leaves the "D=" but clears the rest of the line. Whenever you change any line, you must go completely to the last column prior to the < at which time the new line is then added automatically and the new listing displayed. This sets a flag so if you hit CTL-C to abort it will ask if you want to update the file or abort with no changes. You can also use "W" to write the file to disk when finished with any changes. USING THE PROGRAM: ----------------- This program works directly with the MDM7xx.COM file. It does not use or need the .ASM file at all. EXAMPLES: A>M7LIB MDM7.COM (1) A>M7LIB B:MDM7.COM (2) B>A:M7LIB MDM7.COM (3) A>M7LIB MDM7.COM ABC.COM (4) B>A:M7LIB B:MDM7.COM C:ABC.COM (5) 1) works only with the original file, altering it 2) the file can be on any selected disk 3) similar to (2) but M7LIB.COM is on another disk 4) if a 2nd file is named, it receives the changes 5) any of the files can be on any selected disk NOTE: Using M7LIB.COM to alter the telephone number library is surprisingly simple and fast. It does not however allow setting or resetting codes for SPRINT, MCI, etc. To do that you would need to use M7NM-x.ASM. (This also allows extensive changing with your editor, such as adding or removing the "1-" that is required in some areas for long distance dialing, etc. - Irv Hoff  ; M7NM-6.ASM Telephone number overlay file for MDM7xx - 02/11/84 ; ; NOTE: Not for use with MDM7xx programs prior to MDM722. ; ; This file can be edited to make a new library of telephone numbers. ; Each entry must be 34 bytes long. 36 (A-Z and 0-9) telephone numbers ; are allowed. Follow the format for the library entries already in the ; file. (Be sure to use spaces, not tabs.) ; ; At least 1 period (.) must precede each phone number in the table. ; ; Room has been left if your phone system requires extra characters such ; as: 1-313-846-6127 rather than the 313-846-6127 used in some areas. ; ; This number list is of value even to those not using the PMMI auto- ; dialing system. If "NUM" is typed while in the command mode, it will ; show the list of stored numbers you can manually dial. (If the PMMI ; board is used, type "CAL" to initiate an auto-dialed call. This also ; lists the telephone numbers but in a slightly different format.) "NUM" ; does not work for PMMI, and "CAL" does not work for non-PMMI. ; ; ; 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 MDM7xx.COM ; DDT VERS 2.2 ; NEXT PC ; 4800 0100 ; -IM7NM-6.HEX (note the "I" command) ; -R ("R" loads in the .HEX file) ; NEXT PC ; 4800 0000 ; -G0 (return to CP/M) ; A>SAVE 71 MDM7xx.COM (now have a modified .COM file) ; ; ; NOTE: For those revising the main program, check the location of ; NUMBLIB to see if the ORG value used here is correct. If ; not, change as needed. ; ;======================================================================= ; ; 02/04/84 - Updated for use with MDM722 - Bill Brehm ; 01/23/84 - Updated for use with MDM720 - Irv Hoff ; 01/22/84 - Updated for use with MDM719 - Keith Petersen ; 01/21/84 - Updated for use with MDM718 - Irv Hoff ; 01/12/84 - Updated for use with MDM717 - Steve Sanders ; 11/11/83 - Renamed to M7NM-1.ASM, no changes - Irv Hoff ; 07/27/83 - Updated for use with MDM712 - Irv Hoff ; Added 'MCI' and/or 'SPRINT' ; ;======================================================================= ; ; YES: EQU 0FFH NO: EQU 0 ; ; SHOWHEX:EQU NO ;YES shows both HEX and DECIMAL on record count ; ;NO shows decimal count only (normally adequate) XFRSIZ: EQU 4 ;file transfer buffer in Kbytes. Do not make ;any larger than BUFSIZ. 16k works fine on all ;but slower systems. ; ; ORG 0E00H-50 ;so 'NUMLIB' starts on even page ; ; ;======================================================================= ; ; Long distance alternate dialing such as MCI, SPRINT, etc. Must end ; with a '$', use as many commas (2 seconds delay, each) as needed to ; let the alternate dialing code return with a new dial tone. Fill in ; any character (periods are fine) after the $ to keep number of columns ; to 24, i.e., '1234567,,,,12345,,$.....' -- the first group is the ; MCI or SPRINT access number, the second group is the user number. A ; small delay is usually required after the billing number also. ; ALTDIAL1:DB 'xxxxxxx,,,,,,xxxxxxxx,,$' ;accessed by a < character ; ALTDIAL2:DB 'xxxxxxx,,,,,,xxxxxxxx,,$' ;accessed by a > character ; ;======================================================================= ; HEXSHOW:DB SHOWHEX ;can easily change SHOWHEX via DDT ; SAVSIZ: DB XFRSIZ*8 ;can easily change buffer size for file ;transfers with DDT for "NUMBLIB-1" ad- ;dress. Normally 4k (32 records or 4k). ; ;======================================================================= ; ; Phone number library table for auto-dialing. Each number must be as ; long as"LIBLEN" (EQU at start of program). Some areas require extra ; characters such as: 1-313-846-7127. Room is left for those. Use ; a (<) for alternate dialing system #1, and a (>) for alternate dialing ; System #2. Either would preceed the actual number, for example: ; ; DB 'A=Alan Alda..........<123-456-7890' ;'A' ; ; - - - - - - - - - - - - ; ; NOTE: At least one dot (.) MUST precede the actual phone number ; ; '----5---10---15---20---25---30--34' NUMBLIB:DB 'A=................................' ;'A' DB 'B=................................' ;'B' DB 'C=................................' ;'C' DB 'D=................................' ;'D' DB 'E=................................' ;'E' DB 'F=................................' ;'F' DB 'G=................................' ;'G' DB 'H=Home..............1-503-389-4463' ;'H' DB 'I=................................' ;'I' DB 'J=................................' ;'J' DB 'K=................................' ;'K' DB 'L=................................' ;'L' DB 'M=Micro C..RCP/M 0..1-503-382-7643' ;'M' DB 'N=................................' ;'N' DB 'O=................................' ;'O' DB 'P=................................' ;'P' DB 'Q=................................' ;'Q' DB 'R=................................' ;'R' DB 'S=................................' ;'S' DB 'T=................................' ;'T' DB 'U=AnaHUG RCPM.......1-714-774-7860' ;'U' DB 'V=................................' ;'V' DB 'W=................................' ;'W' DB 'X=................................' ;'X' DB 'Y=................................' ;'Y' DB 'Z=................................' ;'Z' DB '0=................................' ;'0' DB '1=................................' ;'1' DB '2=................................' ;'2' DB '3=................................' ;'3' DB '4=................................' ;'4' DB '5=................................' ;'5' DB '6=................................' ;'6' DB '7=................................' ;'7' DB '8=Spare.............x-xxx-xxx-xxxx' ;'8' DB '9=Spare.............x-xxx-xxx-xxxx' ;'9' DB 0 ;end ; '----5---10---15---20---25---30--34' ;..... ; END TOPIC : RUB TO BACKSPACE FROM : IRV HOFF W6FFC DATE : 22 MAR 84 Several people were having trouble getting normal backspace with their rub (delete) key. MDM730 offers the option of changing rub to backspace. 1) Can preset the default option so rub comes up as backspace (or preset the default to it comes up as normal rub) 2) At any time use the menu option to change it temporarily to the opposite configuration. Some mainframes will not accept a normal backspace and require a rub (delete) character to provide a type of "forward backspace". If you need this feature and your terminal does not have a rub (delete) key, or if inconvenient to use, change these two bytes on MDM730.COM: 1629 FE 7F CPI RUB .... 1635 06 08 MVI A,BCKSP change: 162A 7F to 08 RUB to BCKSP 1636 08 to 7F BCKSP to RUB (The menu will still indicate you are changing rub to backspace, ignore this statment and realize just the opposite is happening with this change.) - Irv Hoff T( &&L sMM çN,>/0Ð 2Hû ,y,::,Version for PMMI S-100 modem starting at port: :++,H ,Version for Non-PMMI modem :OI[:TI͊W4>_m>]2I!L-v%v:IZy2:e :I:e:Ie! ʡ0:0DM)) )o${h¡|/W}/_! =xy2I?,++ INVALID BAUDRATE ++$d (   :, Enter new Baudrate: !e6 ͓+ {+[00:0w͝+#0::[Ia:Im:ZI:I 2IZ::IZ::w2I2I!"I!I~6Ow#!I0!OH"͛,HB"͛,H C>$bH O, Enter library code or phone number, Hit RET to abort this function now or CTL-X quits while dialing or ringing: I>/!I~ʜ2O ͯڙ:O i!I~A+ 0 + q!"{@~q 6"Ip͛,:Ģ!I^#~͝+#ʙ.uX:Ģ!I^#~q͈+ʪ͓+ª:ʙͤ, ” ͤ,> ͝+Ù#u, - try #*I#"Iͽ+> ͝+: ͤ,͌>]ͻ >]Z ү&:I‰:N B, Busy(, No answer, Redial? (Y)es, (N)o, (C)ontinuous, (Q)uiet continuous: ͪ+{+N2YʉCʄQ`>2I:˜2ͻ Ýͻ , :I2I:IW, CONNECTED - hit any key to stop the bellͻ ͈+͓+~ ͻ >͝+͝+R{P Gx,+0:0+> O:¤,:(WT9TA>ZTN>ZT[ I>Zû , ++ Bad library number called ++ &{+2I͌ңh2:->Z2 , ++ NO DIAL TONE ++ &7::Tx<! >! ~$Gͤ,#͈+͓+ʙ> ͝+:<Z] ͻ ͻ !ͻͻ > ͝+!ͻ(W:!ͻͻ 2:!ͻͻ 2ATM0 $ATM1 $+++$ATH $:2!ͻ͌ҮATDT $J~$~4͝+#û8͈+͓+ ͤ,Ü>GBB 01ʵCʵ3B NB 4,E,5ʵ  ͈+< ͓+<  ͤ,Ü͌ 2N ͌E :‰ :I2I=2I# ڷ ͻ Tͽ 2ͻ ʹS, ++ No ringback for autodial modem ++Ü{+x >?]Zͻ T͈+ ͓+ 7+:͏, Additional Subcommands for PMMI Modems Modem control: A - Answer tone for send or receive O - Originate tone for send or receive Parity option: 1 - Set and check for odd parity 0 - Set and check for even parity Both ends must be capable of these options which are available only in R and S modes. The parity checking will be part of the file transfer protocol. Speed Options: After entering your primary and secondary options, you can set the modem speed by placing a "." after the options followed by the speed e.g., 300, 600. EXAMPLE: SBO.600 will set the modem for 600 baud ͌ҽ ¼ {+ }0_.!~w+ *.xxxxxxx,,,,,,xxxxxxxx,,$xxxxxxx,,,,,,xxxxxxxx,,$ A=Bob Robesky.......1-209-227-2083B=Byron McKay.......1-415-965-4097C=Bruce Jorgens.....1-509-255-6324D=Phil Cary.........1-505-522-8856E=Bill Earnest......1-215-398-3937F=Chuck Forsberg....1-503-621-3193G=Ron Fowler........1-414-563-9932H=Charlie Hoffman...1-813-831-7276I=Jack Kinn.........1-817-547-8890J=Walt Jung.........1-301-661-2175K=Sigi Kluger.......1-915-598-1668L=Keith Petersen....1-313-759-6569M=Wayne Masters.....1-408-378-7474N=Dick Mead.........1-213-799-1632O=Al Mehr...........1-408-238-9621P=Pasadena RBBS.....1-213-577-9947Q=Mark Pulver.......1-312-789-0499R=Bruce Ratoff......1-201-272-1874S=Ken Stritzel......1-201-584-9227T=TCBBS, Dearborn...1-313-846-6127U=AnaHUG RCPM.......1-714-774-7860V=Dave Austin.......1-707-257-6502W=Paul Bagdonovich..1-201-747-7301X=Kirk De Haan......1-408-296-5078Y=Byron Kantor......1-619-273-4354Z=Chuck Metz........1-408-354-59340=Bill Parrott......1-913-682-33281=Larry Snyder......1-305-671-23302=Alex Soya.........1-305-676-35733=Tony Stanley......1-912-929-87284=Ed Svoboda........1-408-732-91905=Tampa Bay Bandit..1-813-937-36086=Thousand Oaks.....1-805-492-54727=Bill Wood.........1-619-256-39148=Spare.............1-xxx-xxx-xxxx9=Spare.............1-xxx-xxx-xxxx^DIR DIR *.* $U0AD XMODEM S XMODEM R BYE RBBS (vacant)(vacant)(vacant) Nice chatting, see you again soon... !9"K1K!pʹ,".J!'ʹ,"0J, MDM730 - (type M for Menu) }]2͏ʹ:I!21Kͫ:3:B:ICb:O3+:ID+M3RSTk2I2IõEz2I2IõL‰2I2Iõ~?2*"+"+"+!"J ͟A2;J̀ k:2h> @2i3>^2h32i3]2I  !OI OG>xA>2I6#~?2:XI2UI:IDEMLTG:9:=xC:IHæ2xSXR’:PI:m ,++ Enter primary option plus file name ++ 2, ++ Bad option ++ 8>ë:PI>B2PIx?2I:I:] 2I2IͲ&!>J͐!!\>J ͛,>J>J!O"I>2I :I ͈+͓+G::::IQx0^:^ù:^2I2I:I>2I::'Õ:'Ž>2I:́:!+:%ʪ:ʴ:"T::#:I/2I{+{+͉{+: ʮ ::)n:$ :&:I 2I2Iͫ:PIt,Ready to send in batch mode t>2 ͝+|>B2PI><)):] <'ͪ'Ϳ'xh)F&'ڴͧ&>2zIF&%Q%:In%r%́%ژÇ><)́%ڴ):2It:PI>2B2PI):] <'#> ͝+͏!"{+͙"Ͳ&]':PI5&,File open, ready to receive :IT&,CRC in effect >Cn&,Checksum in effect >,Waiting.....<)ͫ"ژ:r(ͧ&ͤÃ͌(ͤ')><)!_J͐!!l͐!, File name to send? (CR to abort): I>/:I ~I!_J,_J::,Want to include time delays? (Y/N): ͪ+N:2I{+I_Jq=ʧ?,++ DISK READ ERROR ++$ʧH, (in Terminal-mode now) Jͫ, [Transfer completed]~, ++ FILE NAME ERROR ++ ö!IF~ ͈+͓+# :͝+:đA͝+4 :  L<:O: O:I_ W!:~!:I~:I~!ʹ,:đ{ƒ8>̠8®>͈+ʠ͓+ :PIU&>2zI, Multiple errors encountered. Type Q to quit, R to retry: ͓+{+ʹ+Rʫ"QU&:UI!]26J p# 1:UI*xI#, Received # ͽ+, : ,(+,H) :6J<26J ʃ~ ĝ+~ >.͝+|(͝+ҏ&,Awaiting name NAK xͅ)ͤ!5J5*9J\ ͛,"9J><)7( !]~<)(0#><)Q(   a> a> a>u<), ++ ERROR sending name ++ xͅ)ͤ><)!\͒!&,Awaiting file name Q͕ʓ7>2,J!](>2+J(2+J&,Time out receiving filename Iͤw#}à2,JyQ<)(I  !\͒!&, ** Checksum error ** 2,JQÖ2,J2,JF&><)(WU&>2I25Jͦ!!"9J!!\J,,0ڱ:fŒ*9J\ ͛,"9J!5J4Ì!8J5€!"9J:5JA>@25J, ** Memory buffer :I,open ** ;,closed ** , ** Memory buffer available ** {+͕æ2*HK*NQyAJ*`]J~4m#]͌܌Ý+͈+͓+G>/,Printer buffer is :Iʯ,ON ,OFF !#½]2Iͤ,:I:Ix͝+U> :I: 8>G:,x ,x͝+U:I@ͤ,> :IJ ,:I*Ip#"I> p> ͝+́!|!yJ>4!N>2I*I !ON w͝+G ́!#¢"IJ>4͌ w#:I*Ip#"I:7JJ>4!Nz24J:4JW!8 N w͝+GU ́!# "I!"IJ>4s ^#"I:7J s !"I"I*I*I|}::ʌ 27J!?ʹ,DM8¦ > xš 7: :I]ͻ :I]̀*I6}l&)>oO :IN!͆!>J͆!ѷ!+| <)'?,++ DISK FULL, SAVING PARTIAL FILE ++$'',++ Nothing to save, erasing file ++ ÷*>;Ý+6# 6 #•!6#ž!!8J6!IN!I 6 !IF#!~ ¾!#!~ !")J+#!~ !:8J<28J#!~ !!6 *)JJ~ "#"#~ "")J!Jp \. ~N"#~+] ͛,!e~w#~w\!\l ͛,!u6B#6A#6Kl!l6\:\2zI (ڥ#O7>2-J2+J{y"(G"G2-Jx2+J$z":-Jʥ#:UI #{+x+,H received not SOH - $F&:I>:#:I>:#>C<):zI<2zI ڰ": U&ý1K'', ++ RECEIVED FILE CANCELLED ++ ++ UNFINISHED FILE DELETED ++ ÷*:UI#, ++ Timeout $# #:zI:I:I/2I2&,** Switching to Checksum mode **  >2I(ڥ#W(ڥ#/J$:UI #, ++ Bad record # in header #z2wI>2I!"I!(ڥ#w,^$2I:I”$Q(ڥ#$:wIG:xI$%,(+,H) ><):xI<):xI/<)>2I!"I!~<),a%2Iy<)*I|<)}<)>2-J2+J(GҘ%2-J2+Jxʰ%ƒ%:-J%&:I%:UI%,++ x%+,H%,NAK, received not ACK - $2I:zI<2zI ?, ++ SEND-FILE CANCELLED ++$, ++ TIMEOUT - no ACK - $%:UI͈+͓+1K(X&><)(e&> <)>B2PI2I2I:IRS#, ++ FILE CANCELLED ++ ÷**xI#"xI}!\ #~?'·&:PI'\<,File exists - erase? (Y/N): ͪ+Y2{+\,++ NO WILDCARDS ALLOWED FOR TEXT FILES ++ 2,++ NO FILE SPECIFIED ++ 2\2|Iy2I!O"}I'*}I!͙,"}I:I<2IO(:IOO\!! •(2I!O"}I:Iy(y: ͫ!+J^*0J(*.J8(z((F&7> ).)!,J^(͈2O:VI1):XI6):I6)F+F&:WIR):XIW):IW)F+͈2OA^)4,Waiting ready signal {+F&(U&Cʣ))…)U&&,CRC request received >2I:PI&,Got checksum request &,Name NAK received :PI—*:UIj* !I*>w#* !]I*>6*~ ,*#xD**~ D*>.*, , Transferred :\22J!\͐!:2J2\!iIwI͛,Jͫ:> h:e:eæ2!l\͛,2|2h n+ n+ n+ _+n+>(n++>)n+_> ͝+> ͝+O͓+ʹ+͝+a{_ + |Ľ+{0n+|+}++ ,0n+,CTL-@͝+,~$,n+#,~8,:UI~n+#', :,>͝+{+>2I:PI*U&:;J_͡A xl,͉,:IcG:*K É,~#›,Jx4I!\,:=º,5-#^#6 ^-p- !- , p- !- -, ^-p- !- p-#̈́- ̈́-6# > W-W- > W-W-w#W-:n-_@w# . p-w#p-~*ʔ-#†-×-ͩ-~*ʥ-#™-ͩ-6?#©-ͦAA2/25/- I!\,!_J͐!:l2_J:m ...: 28J_J<.,++ FILE NOT FOUND ++u..#5.00, . _J? !`Jw#.!m`J 0=ƀo&:_J/=_@2/25/,Drive : k bytes free on drive : $0կ͓+ʹ+ /ʉ/ʉ/ʿ//G#4+~#/px/ ԝ+#L/#G~wڨ/+xF6 ʯ/ʭ/L/4L/>͝+> ͝+>͝+L/>#͝+{+B/G>#͝+{+xL/͝+/L/>͝+5L/{+L/{+F##> w# 0~(0!0#0#"07#2h:Iy0>2I!\J 0:\2J!J\ 0\í0!J\ 0\!J\ 0\<7¶02I=Ɓo&J 0] 02h2|><0~# x0,File open: *Iͽ+: 1, (+,H), records Send time: :_!1^#V*I&2i`ͽ+, mins, !1:_~:2E2E2E2E2&ͽ+, secs at 1&,To cancel: use CTL-X  0`@J0(  !1:__ , bps 110$300$450$600$710$1200$2400$4800$9600$19200${/_z/W12 !<=?2}o|g>o*I|>!L!yg)x2>g>!ol2r$s%# b2*IO!L ~W$^"I:I2, ** File still open, use DEL, DIR, WRT, E, L or T ** 22I!iIwI͛,!\IOI ͛,2I2+J2,J2I=bH, Single Letter Commands ? - Display current settings ^ - Function key intercept character, then (0-9) M - Display the menu E - Terminal mode with echo L - Terminal mode with local echo T - Terminal mode For copying text to disk use T (E or L) FILENAME.TYP Start or Stop toggles described on subsequent screen. R - Receive CP/M file using Christensen Protocol S - Send CP/M file using Christensen Protocol COMMAND: R (or S) FILENAME.TYP R and S can use the following subcommands: B - Bulk transfer using wildcards (e.g., *.*) D - Disconnect when done Q - Quiet mode (no messages to console) V - View or bytes on console X - When done, disconnect, go to CP/M The single letter commands may also be used on the command line when the program is initially executed. ͏, Three Letter Commands CPM - Exit from this program to CP/M DIR - List directory and space free (may specify drive) ERA - Erase file (may specify drive) LOG - Change default drive/user no. (specify drive/user) and reset disks. e.g. LOG A0: or LOG B: (user # unchanged) SPD - Set file output speed in terminal mode vDb8,TIM - Select Baud rate for "time-to-send" msg. :ʘ8,TCC - Toggle CRC/Checksum mode on receive :8,TLC - Toggle local command immediate or after :', :"9,TLF - Toggle LF after CR in "L" or "T" mode for a disk file :Z9,TRB - Toggle rubout to backspace conversion :ʝ9,TXO - Toggle XOFF testing in terminal mode file output :9:9,NUM - List remote systems : 9,SET - Set modem baud rate ,BYE - Disconnect, then return to CP/M :)::@:,CAL - Dial number ,DSC - Disconnect from the phone line The following are terminal text buffer commands: ,DEL - Delete memory buffer and file WRT - Write memory buffer to disk file 2H, Local Commands while in Terminal Mode : , - Send a break tone for 300 ms. :;:), - Change baud rate >, - Exit to command mode :;:", - Send log-on message :!, - Disconnect from the phone line :<:#, - Toggle printer > ͝+:&, - Start copy into buffer :$, - Stop copy into buffer Start & Stop may be toggled as often as desired. A ";" at start of line indicates buffer is copying. XOFF automatically used to stop input when writing full buffer to disk, XON sent to resume. :%, - Transfer ASCII file to remote ::'=, - Send local control character to remote =, - Next character will be used for local control z{+:I'>7I, Bytes of buffer free A͝+͟A>>&oͽ+>>͝+>>͝+,COMMAND: 2II>/:I'>^ʛ??zH >:I:#CI0CPMZ,{+0LOGA0DIRҤ@0ERAһ@0SPDB0TIM]C0TCC҄D0TRBD0TLCE0TLFnE0TXOE: ?: ?0NUMҕG: ?0SETF0WRTDG0DELG0BYEM@0DSC+:Q?:c?0CALc?> 2Io?:I!HI&Hx?ͫ,~?=,++ Invalid command ++ :bH, SPECIAL FUNCTION KEY TABLE ?,CTL-@͝+, current function key intercept character ! #~0͝+> ͝+#~@@ :@,$@͝+$@{+@{+=:h:{@h, << Exit to CP/M >> Z,ͻ !ͻͻ > ͝+!@ͻ(Җ@ATZ $23Jͱ-:3J_=I!\,3+:] x?\<@,++ File not found ++ =\,File erased =:I«A:I )AͦAAAx?23J͟AG:IdApA:IdArAA :3J_:=J_͡A= lA:IA͕AOxGxx?2=JI>/:I 0 x? ,++ Terminal mode file open ++ ++ Use WRT or DEL before LOG command ++ =,Delay between chars. (0-9): ͈+(B͓+͝+C0 x?2,Delay at end of line (0-9): ͈+aB͓+͝+C0 x?2 , Char. delay (terminal file mode) is: :Gxo&ͽ+,0 ms. per character Line delay (terminal file mode) is: : Go&ͽ+,00 ms. per character =, :IAx?_:I =0LC:I0XC&x?_͡A=>LCvDx?,Use 0-8 to give baud rate for 'S' mode time-to-send message, where 0=110, 1=300, 2=450, 3=600, 4=710, 5=1200, 6=2400, 7=4800 8=9600 and 9=19200 Baud. Enter value: ͉A x?2 D=vD`D,Rate for the S mode time-to-send message is set to sD,Modem speed is 1: G:::x?:/2͘D=,Mode: :ʳD,CRC ,CHECKSUM :x?:/2D=:D,Rub is backspace ,Rub is rub :x?:/2E=,Use ::'GE, before local command , to send local command to remote :x?:/2͂E=,LF :˜E,NOT ,sent after CR in "L" or "T" for a disk file :x?,Use XOFF testing? (Y/N): MFE2jF, Use XON waiting after (Y/N): MF+F2ͶF:=/2,Therefore jF=I>/:I ?GN>xY>x?,XOFF testing :ŠF,NOT ,used, in terminal mode file output ,XON :F,NOT ,automatically tested after CRÒF: x?Iw:=Aͤ,Tͤ, ͤ,=:IyG:?J yG>J2I2I!>J͐!!O"I=:IyGcG2I2I!>J͐!!O"I=:?J >J2I,++ No File Open ++ =bH, Library of Phone Numbers of Remote Systems!OH## ͛,H##B ͛,H G>$ O{+{+=> > > F#1H'H7,HIT any KEY to CONTINUE͈+MH͓+bH{+=: ž> ͝+ > ͝+rHbH, Current Settings ͘DD:ʴH͉ D,Terminal mode file buffer is :IH,in,active Unused portion of buffer is 7I, bytes E͂EjFͶFzB{+{+{+=*I믓o|gͽ+SRTELMABDJLOQRSVX01ABDJLOQRSVX01OOO4 MDM730 (NOTES ON HOW TO USE) Copyright 1983,1984 Irvin M. Hoff W6FFC 22 Mar 1984 NOTE: MDM730 SUPPORTS AUTO-DIALING AND AUTOMATIC CONTINUOUS REDIALING FOR THE FOLLOWING MODEMS: SIGNALMAN ANCHOR MARK XII HAYES SMARTMODEM 300 OR 1200 MODEMS U. S. ROBOTICS 300/1200 MODEM PMMI 103 S-100 PLUG-IN MODEM IT CAN STILL BE EASILY USED WITH OTHER EXTERNAL MODEMS ITH MANUAL DIALING SUCH AS THE BELL 212A, RACAL-VADIC, ETC. IT SUPPORTS UP TO TWO LONG-DISTANCE DIALING SYSTEMS (SUCH AS 'MCI', 'SPRINT', 'TYMNET', ETC. FOR TOUCH-TONE DIALING SYSTEMS. INTRODUCTION: ------------ MDM730 enables a computer to communicate with another computer. This is normally done by using standard telephone lines but with special audio tones sending serial data. Two common speeds are used, depending on the facilities available -- 300 Baud or 1200 Baud. A "modem" is used which provides these audio tones. This is an acronym for "modulator and demodulator". The one section (modulator) provides the audio tones for sending over the telephone line and the other section (demodulator) then converts those audio tones back to digital pulses the computer uses to receive the incoming data. The modem itself is a hardware utility, usually costing around $75 to $200 for a typical 300 Baud device and from $250 to $800 for a system offering 1200 Baud as well as 300 Baud. Some of these (such as the PMMI S-100 modem board) plug directly into the computer itself, while others are totally independent of the computer and use an interconnect cable (usually a RS-232 type) to control the external modem. A Bell 212A is an excellent example of this type modem. Other examples would include the Racal-Vadic, Hayes Smartmodem, U. S. Robotics, Signalman Anchor, etc. The program discussed in this guide allows each computer involved to directly control its own modem, converting DC pulses into audio tones which are sent to (or received from) the telephone line. (The standard 1200 baud transmissions use "DPSK" (dibit phase shift keying) instead of "AFSK" (audio frequency shift keying). For short distances, no modems are required as the computer can provide the necessary digital voltages. This discussion is centered around systems intended for use over distances ranging from several miles to literally around the world. FEATURES: -------- A program to communicate with another computer can range from very simple to very complex. MDM730 is one of the more complex such programs available today. It started in 1977 as a relatively simple program. It was called MODEM at that time. It was intended to be used primarily as a means of exchanging programs with other people in other cities. Since that time a number of other (very useful) features have been added, in addition to improved methods of program transfer. A list of some of the features offered by this particular program include: 1) Ability to talk with another computer via keyboard at each end. (Called the "terminal mode".) 2) Ability to operate a remote mainframe computer such as TYM-SHAR, or special data bank systems now commonplace. This includes "bulletin board" systems for receiving, sending or just read- ing messges or other types of information. 3) Ability to upload (send) or download (receive) programs from other computers whether TYM-SHAR, data banks, remote hobby systems or just another individual in another location. 4) Ability to copy incoming information on a printer. If the print- er is too slow to copy the data directly, the extra characters back into a large storage buffer until they can be printed. 5) Ability to copy incoming data into memory for automatic transfer to a disk file. 6) Accomodates any computer clock speed up to 25.5 MHz. in 0.1 Mhz. increments for uniform results. (The clock speed is actually of modest interest, it is only used for setting timing loops.) 7) Advanced type of error detection (CRC or Cyclic Redundancy Check) using automatically generated high-speed lookup tables. 8) Ability to send any of 11 different pre-programmed function keys. (These keys are very easy to reset, using a special external program.) 9) Automatic disconnect from the telephone line when using CTL-N, or "X" as an option during file transfer. Two other disconnect commands with the PMMI modem. 10) Additional features of special interest to those using the PMMI 103 S-100 plug-in modem, the U. S. Robotics 300/1200, the Anchor Signalman Mark XII, the Hayes Smartmodem 300 or 1200 or other "Hayes-compatible" modems. Those features basically include automatic dialing and redialing (if requested) until the other computer finally answers. a) Automatic selection of a particular phone number from a library of names and numbers. (These phone numbers can be very easily changed by using a special external program.) b) Automatic dialing for alternate long-distance systems (where auto-dialing touch-tone modems are used). c) Entry of a hand-typed number. Although it might be as simple to manually dial the number as hand-type it, it can then be automatically redialed indefinitely. USING THE PROGRAM THE FIRST TIME: -------------------------------- For now, we shall assume the program is ready to use on your equip- ment. (Normally the user must make some modest changes to the program before it can be used. This includes changing the port numbers and some other personal options. These will be covered later in the section that describes how to adapt it to your equipment.) When the program is brought up is shows this display (if using the PMMI modem): MDM730 - (type M for Menu) Version for PMMI S-100 modem starting at port: C0H B>>COMMAND: x The cursor stops at point "x:" waiting for some sort of command. Typing a "M" followed immediately by a RETURN, shows the first page of a 4-page help guide. If you do not have a PMMI modem, you would have seen this (or a customized heading for your particular equipment): MDM730 - (type M for Menu) Version for Non-Pmmi modem B>> COMMAND: In this case only a 3-page help guide is used, since the 4th page is used to assist those with the PMMI modem. It tells them a little about changing from originate to answer mode, how to change Baud rates, how to disconnect, etc. Several commands are similar to those already used for CP/M, such as 'ERA', 'DIR' and the ability to change disk drives and user areas. This adds tremendous flexibility while remaining in the modem command mode. To change disk drives, just say: B>>COMMAND: A: and you are in the same user area on the A: drive. You can also say: A>>COMMAND: A: 12 to change user areas. When finished (using this example), say: A12>>COMMAND: CPM and you will go back to CP/M with the original driver and user area. OPTIONS: ------- There are 6 primary options and 13 secondary options that may be typed on the command line. In additon there are over 35 commands ranging from single character to three characters that can be used (such as DIR, ERA, LOG, etc.) Those are listed on the menu. (The exact number varies depending on whether you have the PMMI modem, etc.) Primary Options: E, L, M, R, S, T E = Echo mode (special type of full duplex) L = Local modem (no remote echo, half duplex) M = Menu display showing features that are available R = Receive a file from remote facility S = Send a file to a remote facility T = Terminal mode (full duplex, echo provived remotely) Secondary Options: A, B, D, J, O, Q, R, S, V, X, 0, 1 A = Answer mode (used only by PMMI modems) B = Batch mode -- allows automatic multiple file transfer (This is normally only used from modem-to-modem as no RCP/M system supports batch mode file transfers.) D = Disconnect when done, stay in MDM730 J = Command mode when finished with a file transfer O = Originate mode (used only by PMMI modems) Q = Quiet mode, special purpose feature rarely used except if operating through a "BYE" program. R = Receive data shown on CRT during file transfer S = Send data shown on CRT during file transfer V = Visual inspection of an ASCII file being transferred. Not often used as most ASCII files are now "squeezed" for minimum transfer time and disk space. X = Exit to CP/M when finished, disconnect from phone line 0 = Odd parity (PMMI modem) 1 = Even parity (PMMI modem) Although you can get the following information from the help guide in MDM730 itself, showing it here will allow us to discuss the various features in somewhat better detail. (*) INDICATES PMMI, ANCHOR, HAYES AND US ROBOTICS ALL APPLY. - - - - - - - - - - - - - - - - - - THE HELP GUIDE, PAGE 1: ---------------------- Single Letter Commands ? - Display current settings ^ - Function key intercept character, then (0-9) M - Display the menu E - Terminal mode with echo L - Terminal mode with local echo T - Terminal mode For copying text to disk use T (or E or L) FILENAME.TYP Start or Stop toggles described on subsequent screen. R - Receive CP/M file using Christensen Protocol S - Send CP/M file using Christensen Protocol COMMAND: R (or S) FILENAME.TYP R and S can use the following subcommands: B - Bulk transfer using wildcards (e.g., *.*) D - Disconnect when done, return to command mode Q - Quiet mode (no messages to console) V - View or bytes on console X - When done, disconnect, go to CP/M The single letter commands may also be used on the command line when the program is initially executed. Hit any KEY to CONTINUE - - - - - - - - - - - - - - - - - - DISCUSSION OF HELP GUIDE PAGE 1: ------------------------------- There are basically three types of commands that may be used with this program: 1) Single-letter commands shown on page one. 2) Three-letter commands shown on page 2, and 3) Control- commands shown on page 3. Going down the list: ? - shows current parameters. As these are closely tied in with some of the other options, we shall show a typical example later in this discussion. ^ - shows the function key intercept character. This may be easily changed using an external program. (You may prefer 'escape' or some seldom used control-character.) NOTE: typing this character while in the command mode will display all the programmable function key definitions with the exception of the log-on string which uses CTL-L. M - shows the menu a page at a time. You may abort after any page is shown with a control-C. E - terminal mode with echo. When talking with another terminal also also using MDM730 (or a comparable program), one of you must send an "echo-back" so you can both see what the other person is typing. This is needed for full-duplex operation. Usually the person originating the call will type "E" instead of "T". However either may do this. If "both" use the echo mode, the program usually starts typing a string of feedback characters since both computers are re-sending the same character over and over. You can stop this by just returning to command mode (type control-E) and then retyping "T" rather than "E". L - terminal mode with local echo. Shows what you are typing but does not send an echo of the other person's typing back to him. Can be used at both ends, in place of one person using "E". Both "E" and "L" are useful at times for some types of modems that do not use full-duplex, or for some main frame units that run half-duplex. The combination of "T", "E" and "L" gives an excellent choice to use on various systems. Normally the "T" mode is sufficient except when talking with another person and then the "E" mode at one end or "L" mode at both ends will provide normal results. If the remote system does not supply a LF after a CR, you can get that from the 'TLF' command. T - puts the program directly into "terminal mode", allowing it to send from the keyboard to the other computer, and to copy any- thing coming from the other computer with the exception of file transfers (use "R" to receive those). R - used only for receiving files from the other computer. These are usually sent in binary form with either checksum verification or more commonly, CRC (Cyclic Redundancy Checking). If ready to receive another file, you have several choices, depending on the program used by the other computer. After notifying him you are ready (or will be very shortly), you can type: B>>COMMAND: R HELLO.DOC and when he starts to send, you will receive the program which then goes directly to the disk. You could also have said: B>>COMMAND: RB This is called the "Batch mode" and is an extremely useful way to receive programs automatically, from another computer using a similar program. He will use the batch mode for sending the programs and that automatically provides the file names at the receiving end. In this manner, large numbers of programs can be transferred completely automatically, including full disks. (Assuming you care to pay the toll calls for the time it will take!) NOTE: The ideal way to receive batch mode would be: B>>COMMAND: RB since you may not know in advance how many programs he will be sending. NOTE: While receiving a file, any errors will be shown on the console CRT, indicating that portion of the program is being repeated. If the file finishes transferring normally, it will have been received error-free. Those error notices are merely to let the user know a momentary problem caused a resend. The error messages indicate phone line quality. S - used only to end programs. Similar to "R" but sends instead of receives. If the other system is ready to receive, you could then type: B>>COMMAND: S HELLO.DOC It will tell you how many records are involved and how many minutes and seconds it will take to send the program. If the other system is ready to receive, it starts the transfer, showing how many records have been sent. If any errors occur during transmission, it shows what they are and counts them. It will resend any records not correctly received at the other computer. If too many consecutive errors occur (normally set at 10), the transfer is terminated. The 'batch mode' may also be used for sending: B>>COMMAND: SB HELLO.* (sending batch mode) will send all files starting with HELLO, or can send just one file, or can send several non-related files in this manner: B>>COMMAND: SB HELLO.DOC XDIR.COM TERM.* etc. Be sure to put a space between the various files. You can include the 'X' option: B>>COMMAND: SBX HELLO.* MDM730.LBR MDM730.AQM When the file transfer is completed it disconnects from the phone line and reverts to CP/M. This allows you to be absent when the file is finished, offering an advantage when sending lengthy files. - - - - - - - - - - - - - - - - - - THE HELP GUIDE, PAGE 2: ---------------------- Three Letter Commands CPM - Exit from this program to CP/M DIR - List directory and space free (may specify drive) ERA - Erase file (may specify drive) LOG - Change default drive/user no. (specify drive/user) and reset disks. e.g. LOG A0: or LOG B: (user # unchanged) SPD - Set speed of file output in terminal mode TIM - Select Baud rate for "time-to-send" message TCC - Toggle CRC/Checksum mode on receive TLC - Toggle local command immediate or after CTL- TLF - Toggle LF after CR in "L" or "T" mode for a disk file TRB - Toggle rubout to backspace conversion TXO - Toggle XOFF testing in terminal mode file output NUM - List remote systems SET - Set modem baud rate BYE - Disconnect, then return to CP/M CAL - Dial number DSC - Disconnect from the phone line The following are terminal text buffer commands: DEL - Delete memory buffer and file WRT - Write memory buffer to disk file Hit any KEY to CONTINUE - - - - - - - - - - - - - - - - - - DISCUSSION OF HELP GUIDE, PAGE 2: -------------------------------- CPM - This returns to normal CP/M use, abandoning MDM730. It does not do a warm reboot unless selected on your overlay, saving time. CAUTION: It does not disconnect the modem from the phone line, which allows intentional return to CP/M temporarily. DIR - Enables the user to see the library of any disk without needing to return to CP/M first. Can be adjusted when installing the program to show 3, 4, or 5 groups depending on the width of your CRT display. Normally set to 5 for 80-column displays. Shows the amount of disk spacing remaining on the logged-in default drive. (You must log in any drive you wish to write on, or to see the correct free disk space remaining.) See the LOG feature below. ERA - Enables the user to erase any files from any disk without the need to return to CP/M first. Wild cards (* and ?) accepted. LOG - When a new disk is inserted, you can see the directory and read files from it but cannot write to it without getting a "BDOS ERR". This command allows you to log in a new disk so you can immediately write on it without first returning to CP/M for a warm boot. You can select drive and user number. (This also enables DIR to show the correct free disk space remaining.) You can say: LOG for same drive, user area, new disk LOG A LOG A: LOG A14 (user areas are 0-15) LOG A11: SPD - Sets the delay between characters and/or delay between lines in the "T" mode when using control-T to upload a pre-typed file. Since most bulletin boards and TYM-SHAR systems normally use line editors that require a delay after they have received a line, you can add delay between characters (in increments of 10 ms.) and/or enter delay between lines (in increments of 100 ms.). This is preset for most systems at 50 and 500 ms. They can be changed at any time. Current values can be checked by using the " ? " command. TIM - This option lets you set the file transfer time from 110 Baud to 9600 Baud. You can preset it (when installing the program) to the value normally used, but at times it is nice to be able to conveniently change the time shown to a different rate. Some initialization routines (discussed in the install section) can make this change automatically. This command does not show if using the PMMI* board as the speed is automatically changed to agree with the current Baud rate selection. It also does not show if the custom overlay uses the SET command to choose var- ious Baud rates as the transfer time is changed automatically. TCC - Most modem programs originally used simple checksum verification of received sectors. Most now use Cyclic Redundancy Checking which finds certain transmission errors the simple checksum system might overlook. This toggle allows the user to select checksum for those systems known to not offer CRC. When set normally to CRC, the program automatically switches to check- sum after trying several times to use CRC. TLC - Nearly all computers use "control-characters" to do various tasks such as move the cursor around, clear the screen, reboot the system, etc. You might want to send a control-E character to the local computer and not have it go to the remote system at the same time. Say a moment later you would like to send a control-E only to the remote computer. You would do this: control-E (goes to local computer only) control-^ control-E (goes to the remote computer only) You can reverse the TLC toggle causing this response: control-E (goes to remote computer only) control-^ control-E (goes to the local computer only) All other control-chars. would operate in a similar manner. This gives extra flexibility in using this program for special systems like TYM-SHAR, etc. NOTE: If using control-^ is awkward, you can pick a different character when installing the program initially. TLF - If sending a file while in terminal mode (via CTL-T option) most mainframe computers will not want you to send a line feed. As all editors include the LF after CR, you have the option with this toggle of sending or not sending a line feed. If typing manually in the "T" mode, you can get a line feed with CTL-J. It is automatically included after CR with "L" or "E" modes. TRB - Allows the rubout char. to be changed to backspace if desired. TXO - Used when uploading pre-typed text files to other systems such as TYM-SHAR or bulletin boards, etc. Most of those have line editors that take a moment to move the line you just finished from their edit buffer into memory. The XOFF character halts your system from sending until it is ready for a new line. Used only in the terminal mode. NUM - Not shown if using PMMI*. This shows the non-PMMI* people the phone library numbers which can be used for manual dialing. SET - Not shown if using PMMI, or if SETUPR is set to "NO" (indicating no user routine in the overlay for choosing different speeds.) BYE - Disconnects the modem from the phone line, closes any file that may be open and returns to CP/M. CAL - PMMI* command, shows the phone library for auto-dialing. If not using a PMMI*, this will not be shown, instead NUM is shown. It displays the telephone library. (Non-PMMI users will find the NUM display beneficial as it can display useful phone num- bers for manual dialing.) NOTE: Use the phone number overlay to easily change the numbers that are stored. This overlay also accesses up to two alternate long distance dialing systems for the touch- tone auto-dialing modems. You can also use an external program called M7LIB to rapidly change any phone numbers. DSC - Disconnects the modem from the phone line whenever selected. DEL - If copying incoming information into memory, and you decide you do not want to bother saving it to disk after all, this closes (and then deletes) the disk file you had opened. WRT - saves what you have been copying to the disk file already opened for that purpose. When returning from the "T" mode to command mode, a warning is shown that you may lose what has been saved unless you use WRT (write to disk). - - - - - - - - - - - - - - - - - - THE HELP GUIDE, PAGE 3: ---------------------- Local Commands while in Terminal Mode CTL-@ - Send a break tone for 300 ms. CTL-B - Change Baud rate (PMMI only) CTL-E - Exit to command mode CTL-L - Send log-on message CTL-N - Disconnect from the phone line CTL-P - Toggle printer CTL-Y - Start copy into buffer CTL-R - Stop copy into buffer Start & Stop may be toggled as often as desired. A ":" at start of line indicates buffer is copying. XOFF automatically used to stop input when writing full buffer to disk, XON sent to resume. CTL-T - Transfer ASCII file to remote CTL-^ - Send local control character to remote - - - - - - - - - - - - - - - - - - DISCUSSION OF HELP GUIDE, PAGE 3: -------------------------------- CTL-@ - Sends a break character to the other computer. Used in some TYM-SHAR systems, etc. (Used only in PMMI mode) CTL-B - PMMI command, changes the Baud rate from 110-710, in addition changes the file transfer time accordingly. CTL-E - Returns to command modem from "T", "L", "E" modes. CTL-L - Will send the log-on message if TRANLOGON is set YES and a message has been included in the LOGON area. Can use this feature to sign on various bulletin board systems, although that would require an identical password on each. CTL-N - Disconnect the modem from the phone line. (CTL-D had been used for this command, but it was too easy to accidently type CTL-D when expecting to hit CTL-S or CTL-E or CTL-X. You can easily change this to whatever you like in the overlay you use for your equipment.) CTL-P - Toggles the printer on-off. Very useful feature. Similar to normal control-P but in this case if the modem is running faster than normal printer speed, the characters just back into a special buffer while the printer tries to catch up. Most dot matrix printers are considerably faster than most telephone modems, however. Can be toggled at any time you are in the "T", "L" or "E" modes. Often used to copy items from bulletin boards, etc. that are not worth permanently saving on disk. CTL-Y - Used only in terminal mode. If a file was opened prior to going to "T" (terminal) mode, nothing will be saved until control-Y is typed. This places a ";" (semicolon) at the start of each new line, indicating the memory is "hot" and is now copying for saving to a file. You can toggle this off by using control-R. NOTE: To open a file use: COMMAND: T FILENAME.EXT and then CTL-Y and CTL-R will control what is copied to be placed in that file. CTL-R - Stops the copy into memory, shuts off the ";" at start of each line. These two commands (CTL-Y to start, and CTL-R to stop) control what is being saved. When returning to command (via CTL-E), you will then be warned to save the information to disk via the WRT command or it will likely be lost. (You may never use CTL-R although CTL-Y is re- quired to commence saving to memory for the disk file you previously opened.) (These commands -- CTL-P, CTL-Y and CTL-R give MDM730 tremendous versatility. You can copy incoming data either to disk or to printer (or both). My own printer is a 300 Baud Teletype Corporation Model 43, yet it works great when I am using the Bell 212A at 1200 Baud. The printer falls behind, but misses nothing as it eventually catches up with the contents of the large buffer.) - - - - - - - - - - - - - - - - - - THE HELP GUIDE, SPECIAL PMMI PAGE: --------------------------------- Additional Subcommands for PMMI Modems Modem control: A - Answer tone for send or receive O - Originate tone for send or receive Parity options: 1 - Set and check for odd parity 0 - Set and check for even parity Both ends must be capable of these options which are available only in R and S modes. The parity checking will be part of the file transfer protocol. Speed Options: After entering your primary and secondary options, you can set the modem speed by placing a "." after the options followed by the speed e.g., 300, 1200. EXAMPLE: SBOT.600 will set the modem for 600 baud Hit any KEY to CONTINUE - - - - - - - - - - - - - - - - - - DISCUSSION OF HELP GUIDE, SPECIAL PMMI PAGE: ------------------------------------------- When using MDM730 with the PMMI board, you will either dial out or (far less likely) answer some incoming call. Since the unit will be in "originate mode" about 98% of the time, it is set to automatically come up in the originate mode at default speed (300 Baud) whenever a call has been completed. If you want to use answer mode, you need to use the "A" command. If a speed is not included, it will stay at the default speed. Until a connection has been made, there are no tones applied to the line. Originate tones at 300 Baud are automatically added at that time. In addition to telling the PMMI modem if it should use originate or answer tones, you can tell it what Baud rate to use. A typical command (once connection is made to another modem) would be: B>>COMMAND: O.600 This puts the tones on the phone line for originate and at the same time sets the PMMI board for 600 Baud. Another typical response might be: B>>COMMAND: RAB.450 This places the answer tones on the phone line, sets the program for receiving batch mode at 450 Baud. It returns to the terminal mode when the transfer is completed. Other optional PMMI commands seem self-explanatory, such as dis- connect, etc. - - - - - - - - - - - - - - - - - - PMMI, ANCHOR, HAYES AND ROBOTICS AUTO-DIALING AND AUTO-REDIALING: ---------------------------------------------------------------- There are several very useful and versatile features offered for the PMMI, Anchor, Hayes and Robotics users. These include alternate long distance dialing systems. There are several ways to auto-dial. 1) from the command line 2) from the phone number library line In addition you can auto-redial from either of these lines. Once the number has auto-dialed and there is no answer, it will ask you if you want it to continuously auto-redial until it does receive an answer (or you decide to abort). To get the phone library, type CAL on the command line. You then normally just type the alphabetic character at the start of the ap- propriate line. It will show the number being dialed. You can also do this from the main command line if you know in advance what alphabetic character is associated with that particular number: B>>COMMAND: CAL P This calls up the "P" line in the library and dials that number, then if busy asks if you want it to continue redialing. You can use: B>>COMMAND: CAL 313-749-6569 and it will dial the number specified. You can then do either of these on the library command line, as well. This gives a tremendous versatility. NOTE: To access the alternate long distance dialing systems (up to two are offered), use the phone number overlay and fill in the infor- mation regarding your access number, billing number, etc. It will then show how to enter a special character ahead of each phone number where alternate long distance system is desired. This only works where touch-tone systems are in use. - - - - - - - - - - - - - - - - - - CASCADING COMMANDS: ------------------ Several commands may be used on the same line. Ones normally used are: A, B, D, E, J, L, O, Q, R, S, T, V, X (and Baud rate if PMMI). A typical PMMI selection might be: RABQJ.300 The commands have been listed previously but will be listed here again: A) answer tones for PMMI S-100 modem, puts tones online. B) batch mode (must be used at both ends if used at all) (usually only available modem-to-modem with operators present at each end.) E) echo mode for conversing with a system not offering echo. J) will return you to the command mode after a file transfer. L) local echo shows what you are sending if no remote echo. O) originate tones for PMMI S-100 modem, puts tones online. Q) quiet mode, suppresses messages on local console. R) receive file transfers with CRC or checksum protocol. S) send file transfers, also shows transfer time. T) terminal mode - operates computer at other end like a remote terminal. Also stands for "text mode". When in "T" mode you can copy incoming to printer or to disk, and send pre- typed ASCII text files via CTL-T. V) visual -- lets you see incoming ASCII files while being sent to the disk system. NOTE: The Baud rate is only used for the PMMI S-100 modem. Many of the custom overlays allow use of the SET command to change Baud rate with non-PMMI modems. - - - - - - - - - - - - - - - - - - TYPICAL PARAMETERS SHOWN BY THE "?" COMMAND: ------------------------------------------- B>>COMMAND: ? Mode: CRC Rub is backspace Printer buffer is OFF Modem speed is 300 baud Terminal mode file buffer is inactive Unused portion of buffer is 16384 bytes Use CTL-^ to send local command to remote LF NOT sent after CR in "L" or "T" for a disk file XOFF testing NOT used in terminal mode file output XON NOT automatically tested after CR in terminal mode file output Char. delay (terminal file mode) is: 50 ms. per character Line delay (terminal file mode) is: 500 ms. per character - - - - - - - - - - - - - - - - - - DISCUSSION OF TYPICAL PARMETERS SHOWN BY THE "?" COMMAND: -------------------------------------------------------- By this time, most of these parameters are self-explanatory. They primarily show how the options and toggles have been set. The user can check on any of the major parameters at any time by: 1) Typing control-E to return to command mode and 2) Typing ? to see the list of current parameters. - - - - - - - - - - - - - - - - - - FUNCTION KEYS: ------------- There are 10 function keys which may be easily programmed with an external file called M7FNK.COM in just a few moments. It makes the changes directly to the MDM730.COM file. (There is an additional CTL-L log-on selection that is programmable in your overlay.) To view the contents of the function keys, type 'M' for menu while on the command line and it will show the character currently used for the function key intercept. (It will be '^' unless you select another.) You could then type that character (followed by ) on the command line and it will display the entire contents of the function keys. - - - - - - - - - - - - - - - - - - CHANGING THE PHONE NUMBER LIBRARY: --------------------------------- The phone numbers in the library may be easily changed using an external file called M7LIB.COM. This permits any of the 36 phone num- bers to be changed in only a few seconds. It works directly on the MDM730.COM file. If extensive changes are to be made, you may prefer to use an overlay file called M7NM-6.ASM. This permits using your editor to make quick and selective changes, or to substitute an entire new library. (You may need to add or remove things like '1-' for long distance dialing in your area.) That file also is used to set the alternate long-distance dialing routines for SPRINT, MCI, TYMNET, etc. - - - - - - - - - - - - - - - - - - RETRY OPTION: ------------ The consecutive error limit has been set to 10. When transferring files from RCPM systems their XMODEM program aborts should this limit be reached. Each overlay has an option previously called ACKNAK. This has bee renamed to RETRY. It should be set NO if working RCPM systems or other computers with a program similar to MDM7. If using large mainframe computers (such as ARPANET), they do get busy at times and will not accept additional information. This may give timeout errors at your end, but not at the mainframe. If RETRY is set YES, after 10 consecutive errors it then asks if you wish to reset the error counter and keep trying. It should take some 100 seconds to get 10 consecutive errors in this situation. - - - - - - - - - - - - - - - - - - INSTALLING THE PROGRAM: ---------------------- Although this is obviously the very first thing that needs to be done, it was saved until last for several reasons. The most important of these was the need to first explain what some of the options will do when selected. By this time the user should have a fairly good idea what options would work best for him. When looking at the beginning of the program where the these are selected, it should now be rather easy to pick the ones that are most useful. There are various ways to change the program to suit a specific user. You are offered several methods. The "easy way" is to get the MDM730.COM file plus the appropriate overlay for your computer. You then edit the overlay (if needed) to suit your local needs, assemble it to get a .HEX file then use the simple instruction and DDT.COM to com- bine the standard MDM730.COM file with your overlay. The front end of each overlay contains all the information in the front of the MDM730 source code itself. (Read the special message that gives the latest information and tells how many pages to SAVE, many of the illustrations say 66 pages, but the program has grown to 73 since that time.) Generally no changes need to be made in specific overlays unless you have some particular requirement different from others using the same equipment. (Such as the log-on message, for example.) You may also wish to say "YES" to the AUTODIAL question, which might be cur- rently set "NO". The "hard way" would be to get the 158k MDM730.ASM source code and then edit it to suit. This is likely to be quite unsatisfactory for most users as it will not contain the information peculiar to your computer (which is in the individual overlay you select otherwise.) Thus various methods are available, one of which should provide the easiest method for your system. NOTE: Although designed with special emphasis on the auto-dialing and redialing capability of the PMMI, Anchor, Hayes or Robotics, it works quite well on non-PMMI modems. In the author's system a stock Bell 212A Dataphone is used together with a normal serial I/O that can be programmed to easily switch from 300 to 1200 bps. A great variety of other computers and modems can use this same program quite easily. This is likely the most versatile phone modem programs currently available for CP/M users. OUR THANKS TO: ------------- A great number of people have contributed to the growth of this program since 1977. Two people have been particularly helpful to me in developing the MDM700 series modem programs: Keith Petersen (W8SDZ) and Frank Gaude' (ex-K6IBE). Their help and interest have been greatly appreciated. We hope this verstile program will give you hours of enjoyment and fulfill your modem needs. - Irv Hoff W6FFC TOPIC: MDM730.ASM MODEM PROGRAM DATE : 22 MAR 84 NOTE: This program when assembled is 73 sectors long. Use this figure when merging the appropriate overlay file for your computer via DDT, etc. (Most of the overlays were written when MDM7xx.COM was only 66 sectors and the example included in each says to store 66 sectors.) For MDM730 use: B>SAVE 73 MDM730.COM NOTE: Use M7FNK.COM to easily and quickly change any of the 10 function key assignments. You can read the M7FNK.DOC file for additional information. (by Sigi Kluger.) The log-on key (CTL-L can be changed in the overlay. NOTE: M7LIB.COM is a rapid and surprisingly easy way to quickly change any entries in the phone number library. See M7LIB.DOC if instructions are needed. M7NM-6.ASM is necessary for setting or altering numbers for 'SPRINT', 'MCI', etc. It would also be better if making a lot of changes such as adding or deleting '1-' required for long distance dialing in some areas. NOTE: If using the phone number overlay to change the phone library numbers, be sure to use: M7NM-6.ASM The phone number library contains 36 numbers (A-Z plus 0-9) Most users will not need the lengthy (158k) source code at all. Just get MDM730.COM and then check one of the associated over- lay programs to obtain the overlay for your particular computer. Merge that with MDM730.COM according to the instructions near the start of the overlay file, using DDT.COM, etc. (See above note relative to saving 73 sectors. STAT.COM would then show 146 records for 20k.) The following bytes can be changed easily with DDT, then SAVE 73 0DFEH - HEXSHOW 00 = do not show hex record count FF = show both hex and decimal count 0DFFH - SAVSIZ 20 = 4k file transfer buffer size (see table below for other options) 0E00H - NUMBLIB (start of telephone number library) To change the file transfer buffer size via DDT, change byte 0DFFH: 20 (hex) = 32 records = 4k 40 (hex) = 64 records = 8K 60 (hex) = 96 records = 12k 80 (hex) = 128 records = 16k (Use the largest value that does not give errors during file tranfers when the disk activates. You have about 10 seconds before a timeout error would occur. 8" systems can easily handle 16k per transfer in 3-4-5 seconds. 5-1/4" systems are usually much slower. In that case try 8k or 12k. Default is set for 4k as that is known to work satisfactorily on all disk systems.) - Irv Hoff RECENT CHANGES: -------------- MDM730 - After a file transfer, now automatically returns to the last terminal mode used (E, L or T). This makes it extremely easy to use modem-to-modem communications in addition to normal file transfers. Added a 'J' option in the event a return to command mode is desired. Example: COMMAND: RJ FILENAME.Ext Changed max. timing delays to optimize use with satellite al- ternate dialing systems. (Submitted by Bob Plouffe.) MDM728 - changed RCVRECD routine to move the test for EOT outside the SOH loop. MDM727 - function key character shown in menu. Typing that character on command line shows all function key definitions. MDM726 - 'T' no longer needed to return to terminal mode after a file transfer, i.e., 'RT' or 'ST' no longer used, just 'R' or 'S'. MDM724 - added 10 function keys for auto-typing preselected messages MDM722 - phone number library now has 36 entries rather than 26 (has A-Z as usual plus 0-9). MDM716 - Robust addition to minimize problems due to intermittent noise. Gives added protection against timeouts on mainframes. Batch mode transfer improved. CREDITS: ------- MDM730 - Irv Hoff MDM728 - Bob Plouffe MDM727 - Irv Hoff MDM726 - Irv Hoff MDM724 - Sigi Kluger MDM722 - Bill Brehm with routines developed by Fred Viles MDM716 - Bob Plouffe TOPIC : MDM730 LAST IN THE SERIES FROM : IRV HOFF W6FFC DATE : 22 MAR 84 NOTICE TO SYSOPS: PLEASE DO NOT ACCEPT ANY FURTHER UPDATES PAST MDM730. IT IS THE LAST AUTHORIZED VERSION OF THIS EX- CELLENT MODEM PROGAM. IT MUST BE GIVEN A CHANCE TO STABILIZE. - Irv Hoff NOTE1: I am trying to review all the overlays that are currently available, and change them to indicate "SAVE 73 sectors", etc. Those will all be dated 03/22/83, but the original names will be left intact. Several are quite ver- sion dependent and will require an update. NOTE2: (Since there are a significant number of changes to MDM730 from previous versions, and in the expectation it is the final version in this series, there will be no .DIF file offered. The full source code is available - 158k.) MDM730 is the last in the MDM7xx series. Although it is being released to the public domain, it is copyrighted in my name. No further updates or alterations are planned or are authorized. Only with this understanding do I release the source code to MDM730. A great many people have helped make this program what it is, and have assisted in the development and thorough testing. It now seems to be bug-free, although there are ALWAYS changes that can be made to any program to make it more useful for individual needs. Such changes sometimes ruin other features that person has no way to evaluate. This program has been updated an average of every two weeks since its inception. Since it is so hardware-dependent, it could be continually updated from "Here to Eternity". Several overlays are totally dependent on the version number, (for the Racal-Vadic, the Hayes Micromodem ][ and possibly 1-2 others.) Each new update totally obsoletes the previous update. Obviously this is an intolerable situation. I have spent more time promulgating this program than virtually anybody would imagine or anticipate. I am unable to continue de- voting the MANY hours of time it has taken to constantly modify and update new features. Therefore, I request all concerned to accept MDM730 as a final version in this series, and not update it further, or accept any updates from any source. I retain copyright benefits to the name MDM7xx. NOTE: IF YOU WISH TO MAKE ANY ALTERATIONS OR CHANGES YOU THINK SHOULD RECEIVE NATIONAL ATTENTION, PLEASE SELECT A DIFFERNT NAME AND START A "NEW THREAD". NEW MODEMS WILL ALWAYS BE MADE, REQUIRING DIFFERENT SOFT- WARE HANDLING. PERHAPS MDM100 OR MDM800, OR MODM100 OR MODM800, (ETC.) MIGHT MAKE GOOD SELECTIONS SHOULD SOMEBODY WANT TO START A NEW SERIES. - Irv Hoff ; MKP4-10.ASM -- Kaypro 4/10 overlay file for MDM730. 5/24/84 ; ; This is a slightly modified version of M7KP-2.ASM and is set up to ; default to 1200 baud, 8bits, 1stopbit, no parity. Runs great on Kaypro ; 4 & 10 (Clock set for 4mz). Baud can be reset to 300 by SET Command. ; It has been written not to exceed 896 bytes, a constraint documented ; in M7KP-1.ASM. Because of this, some code was taken out. ; (Baudrate can be set only to 300 or 1200). Also set for Touchtone, which ; can also be changed. ; ; ; Edit this file for your preferences then follow the "TO USE:", example ; shown below. ; ; Edit Examples: ; CLOCK: 20 or 40 (20 will run at 2mz for Kaypro-2, 40 for 4&10) ; TOUCHPULSE: 'T' or 'P' (Touchtone or Pulse Dialing) ; MSPEED: 1 or 5 (1=300 baud, 5=1200 baud) ; SYSVER: 'Version For Kaypro 4-10' (Change to what you want) ; SETBD: A,05H or A,07H (This is to set initial baud rate) ; (05H=300 and 07H=1200 ) ; ; ; TO USE: First edit this file filling in answers for your own ; equipment. Then assemble with ASM.COM or equivalent ; assembler. Use MLOAD21 to overlay the results of this ; program to the original MDM730.COM file: ; ; A>MLOAD21 *YOUNAME.COM=MDM730.COM, MKP4-10 ; *Name the new file whatever you wish. ; ; If you don't want to change anything, just use the KM1200.COM file ; included in the library. It runs as described in the first paragraph. ; ; If you want to also use the autodial phone number directory feature, ; use ASM to assemble the M7NM-6.ASM file and include it on the MLOAD21 ; command line: ; ; A>MLOAD21 *YOUNAME.COM=MDM730.COM,MKP4-10,M7NM-6 ; ; = = = = = = = = = = = = = = = = = = = = = = ; Overlay code begins here- BELL: EQU 07H ;bell CR: EQU 0DH ;carriage return ESC: EQU 1BH ;escape LF: EQU 0AH ;linefeed ; YES: EQU 0FFH NO: EQU 0 ; PORT: EQU 04H ;Kaypro II,4,10 serial output port MODCTL1: EQU PORT+2 ;Modem control port MODDATP: EQU PORT ;Modem data port MODCTL2: EQU PORT+2 ;Modem control port ; MODRCVB:EQU 01H ;Your bit to test for receive .... ...1 MODRCVR:EQU 01H ;Your value when receive ready .... ...1 ; ;Int pending .... ..1. MODSNDB:EQU 04H ;Your bit to test for send .... .1.. MODSNDR:EQU 04H ;Your value when send ready .... .1.. ;DCT: EQU 80H ;data carier detect .... 1... ; ;sync hunt ...1 .... ; ;Clear to Send ..1. .... ; ;Tx underrun .1.. .... ; ;Break/Abort 1... .... ; ; The following are used in setting up the Z80 SIO. ; ; ;all sent .... ...1 ; ;parity error ...1 .... ; ;overrun error ..10 .... ; ;framing error .1.. .... ; ;end of frame (SDLC) 1... .... ;WRREG0 ; ;write to register .... .xxx ; ;reset flags ..xx x... RSTERR: EQU 30H ;reset parity and overrun flags ..11 0... RSTINS: EQU 18H ;reset SIO - register 0 ..01 1... WRREG1: EQU 0 ;no interrupts - register 1 ; ;ext int enable .... ...1 ; ;tx int enable .... ..1. ; ;rx int disable ...0 0... ; ;rx int on first character ...0 1... ; ;int on all rx char/parity eff ...1 0... ; ;int on all rx char ...1 1... ; ;wait/ready on r/t ..1. .... ; ;wait/ready function .1.. .... ; ;wait/ready enable 1... .... ; ; ;register 3 equates WRREG3: EQU 0C1H ;8 Rx bits, Rx enable RENABLE EQU 1 ;Rx enable - .... ...1 ; ;sync character load inhibit - .... ..1. ; ;address serch mode (SDLC) - .... .1.. ; ;Rx CRC enabel - .... 1... ; ;Enter hunt phase ...1 .... ; ;Auto enables ..1. .... MSKWD: EQU 0C0H ;word length mask - xx.. .... ; ;receive five bit work - 00.. .... RSEVEN: EQU 040H ;receive seven bit word - 01.. .... ; ;receive six bit word - 10.. .... REIGHT: EQU 0C0H ;receive eight bit word - 11.. .... ; ; ;register 4 equates WRREG4: EQU 44H ;16X baud rate, 1 stop bit, no parity MSKPA: EQU 03H ;mask for parity bits - .... ..xx NONE: EQU 00H ;no parity - .... ..00 ODD: EQU 01H ;odd parity - .... ..01 EVEN: EQU 03H ;even parity - .... ..11 MSKST: EQU 0CH ;stop bit mask - .... xx.. ; ;sync modes enable - .... 00.. ONE: EQU 04H ;one stop bit - .... 01.. ; ;1.5 STOP BITS - .... 10.. TWO: EQU 0CH ;two stop bits - .... 11.. ; ;sync modes - ..xx .... ;CLK01: EQU 00H ;1X clock mode - 00.. .... CLK16: EQU 40H ;16X clock mode - 01.. .... ;CLK32: EQU 80H ;32X clock mode - 10.. .... ;CLK64: EQU c0H ;64X clock mode - 11.. .... ; ;register 5 equates WRREG5: EQU 0EAH ;8 Tx bits, Tx enable, RTS, DTR ;TXCRC EQU 001H ;Tx CRC enable .... ...1 ;RTS EQU 002H ;Request to send .... ..1. ;SLDC EQU 004H ;SDLC/CRC-16 .... .1.. TENABLE:EQU 008H ;Tx enable .... 1... ;BREAK EQU 010H ;Send break ...1 .... ; ;Transmit five bit word - .00. .... TSEVEN: EQU 020H ;Transmit seven bit word - .01. .... ; ;Transmit six bit word - .10. .... TEIGHT: EQU 060H ;Transmit eight bit word - .11. .... ;DTR EQU 080H ;Data terminal ready 1... .... DTRON: EQU 08AH ;Tx enable, RTS, DTR - 1... 1.1. DTROFF: EQU 000H ;DTR off, RTS off - 0... ..0. ; ORG 100H ; ; Change the clock speed as needed for your system. ; DS 3 ;(for "JMP START" instruction) ; PMMIMODEM: DB NO ;yes=PMMI S-100 Modem 103H SMARTMODEM: DB YES ;yes=HAYES Smartmodem, no=non-PMMI 104H TOUCHPULSE: DB 'T' ;T=touch, P=pulse (Smartmodem-only) 105H CLOCK: DB 40 ;clock speed in MHz x10, 25.5 MHz max. 106H ;20=2 MHh, 37=3.68 MHz, 40=4 MHz, etc. MSPEED: DB 5 ;0=110 1=300 2=450 3=600 4=710 5=1200 107H ;6=2400 7=4800 8=9600 9=19200 default 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. 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 NOOFCOL: DB 5 ;number of DIR columns shown 10AH SETUPTST: DB YES ;yes=user-added Setup routine 10BH SCRNTEST: DB YES ;Cursor control routine 10CH ACKNAK: DB YES ;yes=resend a record after any non-ACK 10DH ;no=resend a record after a valid NAK BAKUPBYTE: DB NO ;yes=change any file same name to .BAK 10EH CRCDFLT: DB YES ;yes=default to CRC checking 10FH TOGGLECRC: DB YES ;yes=allow toggling of CRC to Checksum 110H CONVBKSP: DB NO ;yes=convert backspace to rub 111H TOGGLEBK: DB NO ;yes=allow toggling of bksp to rub 112H ADDLF: DB NO ;no=no LF after CR to send file in 113H ;terminal mode (added by remote echo) TOGGLELF: DB YES ;yes=allow toggling of LF after CR 114H TRANLOGON: DB YES ;yes=allow transmission of logon 115H ;write logon sequence at location LOGON SAVCCP: DB YES ;yes=do not overwrite CCP 116H LOCONEXTCHR: DB NO ;yes=local command if EXTCHR precedes 117H ;no=external command if EXTCHR precedes TOGGLELOC: DB YES ;yes=allow toggling of LOCONEXTCHR 118H LSTTST: DB YES ;yes=printer available on printer port 119H XOFFTST: DB NO ;yes=chcks for XOFF from remote while 11AH ;sending a file in terminal mode XONWAIT: DB NO ;yes=wait for XON after CR while 11BH ;sending a file in terminal mode TOGXOFF: DB YES ;yes=allow toggling of XOFF checking 11CH IGNORCTL: DB NO ;yes=CTL-chars above ^M not displayed 11DH EXTRA1: DB 0 ;for future expansion 11EH EXTRA2: DB 0 ;for future expansion 11FH BRKCHR: DB '@'-40H ;^@ = Send a 300 ms. break tone 120H NOCXNNCT: DB 'N'-40H ;^N = Disconnect from the phone line 121H LOGCHR: DB 'L'-40H ;^L = Send logon 122H LSTCHR: DB 'P'-40H ;^P = Toggle printer 123H UNSAVE: DB 'R'-40H ;^R = Close input text buffer 124H TRANCHR: DB 'T'-40H ;^T = Transmit file to remote 125H SAVECHR: DB 'Y'-40H ;^Y = Open input text buffer 126H EXTCHR: DB '^'-40H ;^^ = Send next character 127H PULSERATE: DS 1 ; 128H CHGBAUD DS 1 ; 129H ; IN$MODCTL1: MVI A,10H ;channel 0, reset interrupts. 12AH OUT MODCTL1 IN MODCTL1 ;get the status bits RET DB 0,0,0 ; OUT$MODDATP: OUT MODDATP ! RET ;out modem data port 134H DB 0,0,0,0,0,0,0 IN$MODDATP: IN MODDATP ! RET ;in modem data port 13EH DB 0,0,0,0,0,0,0 ANI$MODRCVB: ANI MODRCVB ! RET ;bit to test for receive ready 148H CPI$MODRCVR: CPI MODRCVR ! RET ;value of receive bit when rdy 14BH ANI$MODSNDB: ANI MODSNDB ! RET ;bit to test for send ready 14EH CPI$MODSNDR: CPI MODSNDR ! RET ;value of send bit when ready 151H IN$BAUDRP: DS 3 ;IN baudrate port 154H OUT$BAUDRP: DS 3 ;OUT baudrate port 157H OUT$MODCTL1: OUT MODCTL1 ! RET ;out modem control port 15AH OUT$MODCTL2: OUT MODCTL2 ! RET ;out modem status port 15DH ; LOGONPTR: DW LOGON ;for user message. 160H JMP$DAIL: DS 3 ;Use routine in main program 162H JMP$DISCONNT: DS 3 ;Use routine in main program 165H JMP$GOODBYE: JMP GOODBYE ;Routine in this overlay 168H JMP$INITMOD: JMP INITMOD ;Initialization in this overlay 16BH JMP$NEWBAUD: RET ! NOP ! NOP ;Bypass PMMI routine 16EH JMP$NOPARITY: RET ! NOP ! NOP ;Bypass PMMI routine 171H JMP$PARITY: RET ! NOP ! NOP ;Bypass PMMI routine 174H JMP$SETUPR: JMP SETUPR ;Set command in this overlay 177H JMP$SPCLMENU: RET ! NOP ! NOP ;Bypass special menu routine 17AH JMP$SYSVER: JMP SYSVER ;Version message in this overlay17DH JMP$BREAK: JMP SENDBRK ;Break routine in this overlay 180H ; ; ; Do not change the following six lines, the routine are in main program. ; JMP$ILPRT: DS 3 ;Inline print routine 183H JMP$INBUF DS 3 ;Input buffer routine 186H JMP$INLNCOMP: DS 3 ;Inline compare routine 189H JMP$INMODEM DS 3 ; 18CH JMP$NXTSCRN: DS 3 ; 18FH JMP$TIMER: DS 3 ;Timer routine 192H ; ; Clear sequences -- CLREOS is clear to end of screen, CLRSCRN is clear ; entire screen. Last entry must be 0. Any other 0's act as NOP's. ; CLREOS: CALL JMP$ILPRT ; 195H DB 017H,0,0,0,0 ; 198H RET ; 19DH ; CLRSCRN: CALL JMP$ILPRT ; 19EH DB 01AH,0,0,0,0 ; 1A1H RET ; 1A6H ; ; SYSVER: CALL JMP$ILPRT ; 1A7H DB ' Version For Kaypro 4-10 ',0 ; 1AAH RET ; ; NOTE: You can change the SYSVER message to be longer or shorter. The ; end of your last routine should terminate by 0380H (390 bytes ; available after start of SYSVER) if using the Hayes Smartmodem ; or by address 0B80H (2521 bytes) otherwise. ; ; You can put in a message at this location which can be called up with ; CTL-L if TRANLOGON has been set YES. You can put in several lines if ; desired. End with a 0. ; LOGON: DB 'LOGON',CR,LF,0 ; ; ; This routine allows a 300 ms. break tone to be sent to reset some ; time-share computers. ; SENDBRK: MVI A,5 ;select register 5 OUT MODCTL1 MVI A,0F8H ;send a break tone JMP GOODBYE1 ; ; This routine sends a 300 ms. break tone and sets DTR low for the same ; length of time to disconnect some modems such as the Bell 212A, etc. ; GOODBYE: MVI A,5 ;select register 5 OUT MODCTL1 ;send to the status port MVI A,DTROFF ;turn off dtr ; GOODBYE1: OUT MODCTL1 MVI B,3 ;delay 300 ms. CALL JMP$TIMER MVI A,5 ;select register 5 OUT MODCTL1 LDA REG5+1 ;has been set to word length, etc. OUT MODCTL1 RET ; ; Kaypro 4-10 initialization -- resets the SIO, sets the interrupt ; mode, the receive and transmit mode. ; Sets the baud rate to port 00. Hex 05=300 baud, 07=1200 ; INITMOD:MVI A,0 ;select register 0 OUT MODCTL1 MVI A,RSTINS ;reset SIO - 18h OUT MODCTL1 ; MVI A,1 ;select register 1 OUT MODCTL1 MVI A,WRREG1 ;no interrupts OUT MODCTL1 ; MVI A,3 ;select register 3 - receive OUT MODCTL1 REG3: MVI A,WRREG3 ;8 Rx bits, Rx enable OUT MODCTL1 ; MVI A,4 ;select register 4 OUT MODCTL1 MVI A,CLK16 ;16X baud rate PARIT: ORI NONE ;type of parity STPLN: ORI ONE ;number of stop bits OUT MODCTL1 ; MVI A,5 ;select register 5 - transmit OUT MODCTL1 REG5: MVI A,WRREG5 ;8 Tx bits, Tx enable, no RTS, no DTR OUT MODCTL1 ; SETBD: MVI A,07H ;set baudrate to 1200 bps (A,05H=300) OUT 00 RET ; ; The following routine changes the baud rate, word length, stop bits ; and parity on the Z80 SIO from the command level. Note the routine ; MUST modify the parameters used by the INITMOD routine. ; SETUPR: PUSH H AGAIN: LXI D,BAUDBUF ;point to input buffer for JMP$INLNCOMP CALL JMP$ILPRT DB 1AH,'Baud Rate (300, 1200): ',0 CALL JMP$INBUF LXI H,BAUDTB BAUDLP: MOV A,M ;first character to check ORA A ;is it null JZ NOTOK ;no matches found STA BAUDCP ;store in compare area INX H ;point to next character MOV A,M ;second character to check or null STA BAUDCP+1 ;store in comparea area INX H ;point to MSPEED constant LXI D,BAUDBUF+2 ;compare baudbuf and baudcp CALL JMP$INLNCOMP ;was valid baud specified BAUDCP: DB 0,0,0 ;baudrate from table gets stored here JNC OK ;match, go save it INX H ;skip MSPEED INX H ;and CTC constant JMP BAUDLP ;and check next entry NOTOK: CALL WRONG ;tell messed up JNC AGAIN2 ;null line entered bypass baud change JMP AGAIN ;try again ; OK: MOV A,M ;get MSPEED STA MSPEED ;change time-to-send to match baudrate INX H ;point to CTC constant MOV A,M ;and get it STA SETBD+1 ;store in INITMOD routine ; AGAIN2: LXI D,BAUDBUF ;point to input buffer CALL JMP$ILPRT DB 'Word Length (7, 8): ',0 CALL JMP$INBUF LXI D,BAUDBUF+2 CALL JMP$INLNCOMP ;was eight bits requested DB '8',0 MVI A,REIGHT+RENABLE;receive eight bits - C1h MVI B,TEIGHT+DTRON ;transmit eight bits - EAh JNC OK2 CALL JMP$INLNCOMP ;was seven bits requested DB '7',0 MVI A,RSEVEN+RENABLE;receive seven bits - 41h MVI B,TSEVEN+DTRON ;transmit seven bits - AAh JNC OK2 CALL WRONG JNC AGAIN3 ;bypass word length change JMP AGAIN2 ; OK2: STA REG3+1 ;store in MVI instruction MOV A,B ;get transmit word length STA REG5+1 ;store in MVI instruction ; AGAIN3: LXI D,BAUDBUF ;point to input buffer for JMP$INLNCOMP CALL JMP$ILPRT DB 'Stop Bits (1, 2): ',0 CALL JMP$INBUF LXI D,BAUDBUF+2 CALL JMP$INLNCOMP ;was 1 stop bit requested DB '1',0 MVI A,ONE ;1 stop bit - 04h JNC OK3 CALL JMP$INLNCOMP ;was 2 stop bits requested DB '2',0 MVI A,TWO ;2 stop bits - 0Ch JNC OK3 CALL WRONG JNC AGAIN4 ;bypass stop bit mod JMP AGAIN3 ;go ask again ; OK3: STA STPLN+1 ;save stop bits in MVI ; AGAIN4: LXI D,BAUDBUF ;point to input buffer for JMP$INLNCOMP CALL JMP$ILPRT DB 'Parity (None, Even, Odd): ',0 CALL JMP$INBUF LXI D,BAUDBUF+2 CALL JMP$INLNCOMP ;was no parity requested DB 'N',0 ;just check first character MVI A,NONE ;no parity - 00h JNC OK4 ;go if got match CALL JMP$INLNCOMP ;was even parity requested DB 'E',0 MVI A,EVEN ;even parity - 03h JNC OK4 CALL JMP$INLNCOMP ;was odd parity requested DB 'O',0 MVI A,ODD ;odd parity - 01h JNC OK4 CALL WRONG ;no matches JNC GOSET ;bypass parity changes JMP AGAIN4 ;try again ; OK4: STA PARIT+1 ;save in MVI ; ; now go modify the init routine to initialize the Kaypro to the values ; requested. ; GOSET: POP H ;restore HL register JMP INITMOD ;reset Z80 SIO (and return) ; WRONG: CALL JMP$INLNCOMP ;was null string entered DB ' ',0 RNC ;all is ok CALL JMP$ILPRT ;all matches failed - tell operator DB ' Wrong!',CR,LF,BELL,0 STC ;Set carry flag RET ; ; Due to space constraints some baud rates have been commented out ; BAUDTB: EQU $ ;Valid baud rates ; ;BAUD MSPEED CTC ;BD110: DB '11',0,2 ; 110 0 02 BD300: DB '3',0,1,5 ; 300 1 05 ;BD600: DB '6',0,3,6 ; 600 3 06 BD1200: DB '12',5,7 ;1200 5 07 ;BD2400:DB '24',6,10 ;2400 6 0A ;BD4800:DB '48',7,12 ;4800 7 0C ;BD9600:DB '96',8,14 ;9600 8 0E ;BD192: DB '19',8,15 ;19.2 9 0F DB 0 ; BAUDBUF: DB 10,0 DS 10 ; ;--------------------------------------------------------------------- ; ; ; NOTE: MUST TERMINATE PRIOR TO 0380H (with Smartmodem) ; 0B80H (without Smartmodem) ; ;--------------------------------------------------------------------- END COM!9" 1: xMLOAD ver. 2.1 Copyright (C) 1983,1984 by Ronald G. Fowler ̀d|kUͰͮ : ! * !  &-* !~#ʀG-6#" *}O| G6# x°* +7ʀ#~ 7FZ~#FZ" ))))_* \ =2: Z: Z<2 ‡#![  -,<6=#" x‡2 ] 7ͮ : !]>. ~~ # #  |{0 > > |}Ɛ'@'_ͮ ~#.#~ 7FI0:WAG?x Command line syntax error Àz Ambiguous file name: % not allowed.z File % not found.z Disk full.z Directory full.z Premature end-of-file in %z Checksum error in %z Can't close %z Memory full while loading %z Format error in file %z Writing %, nothing loadedz MLOAD syntax: MLOAD [=] [,...] [] (brackets denote optional items) is the optional output filename are input file(s) is a hex load offset within the output file may be an optional non-HEX file to be patched by subsequently named HEX files (specifying The filetype enables this function). Note that ZCPR2-style drive/user notation may be used in all file specifications (e.g., "B3:MYFILE.COM, "A14:MDM7.HEX"). ~g>2 " " * }o|g"   !]-: ! n w#| 2  x P n 6# 6 # 6# ͙ # ͙ # :~F A4 @#~#:+xG~0G#~:< #l ~.#yf  \ l ͙ #*ʈ ?| F  l Ñ >? Š ͙ #Ñ ~/., :=ȷ " 2 = go : * y "    go\ ] y!"#$a{ e!k #g Z HEX ͮ ͮ : :