IMD 1.16: 28/05/2007 16:13:03 -FOG/UTL001   åååååååååå  åååååååååå  åååååååååå  -FOG/UTL001CONFIGURDOC CRCK4 ASMVCRCK4 COM DISK DOC MDM7OS COM: MDMOS ASM$MODEM DOC7åMODEM7 DOCyOSFIG COM OSMODN COM& !MODEM714COM&"#$MODEM714DOC%&CK-FIX COM'CK-FIX DOC(UMPIRE COM )åINDEX DOC*WASH COM+,UMPIRE DOC -åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå Modem 7 and the Osborne 01 Tï uså thå Modeí · prograí witè youò Osbornå 0± pleaså firsô � reaä  alì thå fileó markeä [filename].DOC....theså fileó  contaiî � the pertinent commands and data for the Modem 7 program. Thåå ideá herå ió tï uså thå printeò porô aó youò modeí port® � Thå  prograí  haó  beeî  testeä oî thå 0± usinç  á  Novatioî  Caô � acoustiã  coupleò  anä thå D-Caô  direcô  connecô  modem®  Therå � shoulä  bå  nï probleí runninç eitheò thå Microconnectioî   oò  thå � Auto-Caô  modeí aó well®  Thió fiø ió temporarù untiì thå  modeí � porô ió finished!!¡  Thió prograí wilì not..repeaô not.® worë oî � the existing modem port without lots of modification!!! Thå  sourcå  fileó anä alì necessarù documentaåtioî  wilì  bå � discussed in a file called INDEX.DOC read this file next!! Iî  ordeò tï hooë iî thå cablå foò mosô modemó yoõ wilì  ruî � thå cablå iî sucè á manneò thaô piî ± goeó tï piî 1¬ piî ² oî thå � 0± goeó tï piî ³ oî thå modem¬  piî ³ oî; ; CRCK.ASM version 4.2B ; by Keith Petersen, W8SDZ ; (REVISED 4/27/ BY BRK) ; ;----> NOTE: MUST BE ASSEMBLED BY MAC <---- ; ;CRCK is a program to read any CP/M file and print ;a CYCLIC-REDUNDANCY-CHECK number based on the ;CCITT standard thå 0± goeó tï piî ²  oî � thå modeí anä piî · goeó tï piî 7® Theså piî configurationó worë � witè alì thå Novatioî Modems® Handshakinç ió noô implementeä duå � to the slow baud rates used. Speakinç  oæ bauä rates...Modeí · wilì automaticallù se polynominal: ; X^16 + X^15 + X^13 + X^7 + X^4 + X^2 + X + 1 ; ;Useful for checking accuracy of file transfers. ;More accurate than a simple checksum. ; ;Optionally will write an output file to the default ;drive, listing the CRC's of all files chô thå � baud rate for your Osborne. Happy Modeming!!! Byron McKay Digital Deli Computer Store ecked in a ;single session. ; ;COMMANDS: CRCK [drive:] [F] ; ;Examples: ; CRCK MYFILE.ASM ;CHECK ONLY MYFILE.ASM ; CRCK *.ASM ;CHECK ALL .ASM FILES ; CRCK *.* F ;CHECK ALL FILES, MAKE FILE OF RESULTS ; ;Program updates/fixes å(these are written in reverse ;order to minimize reading time to find latest update): ; ;4/27/81 ADDED SUM OF CRC PRINTOUT AT END OF EXECUTION (BRK) ; ;10/06/80 FIX TO ERASE TEMPORARY FILE WHEN OUTPUT FILE IS ; REQUESTED AND NAME NOT FOUND IN DIRE  CTORY. (KBP) ; ;10/05/80 FIX ABORT ROUTINE TO CHECK FOR FILE REQUEST ; AND TO CLOSE INCOMPLETE FILE BEFORE ERASING ; IT. ADDED TESTS FOR NO FILE NAME AND FILE ; READ ERROR. (KBP) ; ;10/04/80 ADD ROUTINE TO GIVE OPTION TO MAKE ; DISK FILE OBEXT EQU FCB+12 FCBRNO EQU FCB+32 FCB2 EQU BASE+6CH ; ;Program starts here ; ORG BASE+100H ; MACLIB SEQIO ;DEFINE MACRO LIBRARY USED ; CRCK: JMP BEGIN ;JUMP AROUND IDENTIFICATION DB 'CRCK.COM 4.2B 4/27/81' ; BEGIN: LXI H,0 ;GET STACK... SF CRC's. FIXED MFA ROUTINE ; SO FIRST-TIME FLAG NOW SHOWS IF NO FILE ; FOUND. (KBP) ; ;04/21/80 ADD MULTIPLE FILENAME FEATURE, PRINT ; NAME OF CURRENT FILE BEING READ, AND ; ALLOW OPERATOR ABORT. (KBP) ; ;08/20/79 FIX BUG IN READIT ROUTINEHLD SUM ; INIT CRC SUM COUNTER DAD SP ;POINTER SO WE CAN... SHLD STACK ;SAVE IT LXI SP,STACK ;INITIALIZE LOCAL STACK CALL CRLF ;TURN UP A NEW LINE LDA FCB+1 CPI ' ' ;SEE IF NAME THERE JNZ BEGIN2 ;YES, CONTINUE CALL ERXIT ;PRINT MSG, THEN EX WHICH ; SHOWED UP ONLY ON ALTCPM OPTION. (KBP) ; ;08/19/79 ADD CONDITIONAL ASSEMBLY FOR CP/M ; ON H8 OR TRS-80. (KBP) ; ;06/27/79 FIRST WRITTEN BY KEITH PETERSEN, W8SDZ ; ;Define true and false ; FALSE EQU 0 TRUE EQU NOT FALSE ; ;ConditiIT DB '++NO FILE NAME SPECIFIED++',CR,LF,'$' ; BEGIN2: CALL ILPRT ;PRINT: DB 'CRCK ver 4.2B',CR,LF DB 'CTL-S pauses, CTL-C aborts',CR,LF,0 LDA FCB2+1 ;GET OPTION STA FFLAG ;SAVE IT FOR LATER CPI 'F' ;FILE WANTED? JNZ AGAIN ;NO, SKIP FILE INonal assembly switches ; STDCPM EQU TRUE ;TRUE IS STANDARD CP/M ALTCPM EQU FALSE ;TRUE IS H8 OR TRS-80 NOSYS EQU FALSE ;TRUE IF SYS FILES NOT WANTED ; ;System equates ; BASE SET 0 IF ALTCPM BASE SET 4200H ENDIF ;ALTCPM ; ;Define write buffeIT ; ;'Declare' FCB for output file ;(temporarily named CRCKLIST.$$$) ; FILE OUTFILE,CRCFILE,,CRCKLIST,$$$,BSIZE ; AGAIN: LXI SP,STACK ;RE-INIT STACK POINTER CALL MFNAME ;SEARCH FOR NAMES JNC NAMTST ;ANOTHER FOUND, PRINT NAME LDA MFFLG1 ;NOTHr size (presently set for 8k) ; BSIZE EQU 8*1024 ;DISK WRITE BUFFER SIZE ; ;BDOS equates ; RDCON EQU 1 WRCON EQU 2 PRINT EQU 9 CSTAT EQU 11 OPEN EQU 15 SRCHF EQU 17 SRCHN EQU 18 READ EQU 20 STDMA EQU 26 BDOS EQU BASE+5 FCB EQU BASE+5CH FCING FOUND, CHECK... ORA A ;... FIRST TIME FLAG JZ DONE ;AT LEAST ONE WAS FOUND CALL ABEXIT ;PRINT MSG, THEN EXIT DB '++FILE NOT FOUND++$' ; DONE: CALL ILPRT ;PRINT "SUM OF CRC:" DB CR,LF,' ---------------------> SUM OF CRCS = ',0 LDA SUM+1   ; GET MSB CALL HEXO MVI A,' ' CALL TYPE LDA SUM ; GET LSB CALL HEXO CALL CRLF LDA FFLAG ;SEE IF WE'RE MAKING FILE CPI 'F' JNZ DONE2 ;NO, SKIP THE FILE STUFF ; ;Close CRCKLIST.$$$ FINIS CRCFILE ; ;Build FCB for final name of CRCKLISTLL BDOS INR A JNZ RDINIT CALL ABEXIT DB '++OPEN FAILED++$' ; ;Initialize CRC to zero and set BUFAD to cause initial read RDINIT: LXI H,0 SHLD REM ;INIT REMAINDER TO ZERO LXI H,BASE+100H SHLD BUFAD ;INIT BUFFER ADRS ; ;This is the read lo.CRC FILE SETFILE,FINAL,,CRCKLIST,CRC ; ;Erase any existing old file ERASE FINAL ; ;Rename CRCKLIST.$$$ to CRCKLIST.CRC RENAME FINAL,CRCFILE ; ;Now exit to CP/M DONE2: CALL MSGEXIT ;PRINT DONE, THEN EXIT DB CR,LF,'DONE$' ; ;Test for names op READIT: LHLD BUFAD MOV A,H ;TIME TO READ? CPI BASE SHR 8 JZ NORD ;NO READ MVI C,CSTAT CALL BDOS ;CHECK FOR OPERATOR ABORT ORA A JZ READ2 ;NOTHING FROM OPERATOR MVI C,RDCON CALL BDOS ;GET CHARACTER INPUTTED CPI 'C'-40H ;CONTROL C? to ignore ; NAMTST: IF NOSYS LDA FCB+10 ;GET SYS ATTRIBUTE ANI 80H ;IS IT SYS? JNZ AGAIN ;YES, IGNORE THIS FILE ENDIF ;NOSYS ; ;Ignore files with .$$$ filetype (they are usually ;zero-length and clutter up our display. We also ;want to ignoJZ ABEXT2 ;YES EXIT ; READ2: LXI D,FCB MVI C,READ ;READ ANOTHER SECTOR OF FILE CALL BDOS ORA A ;CHECK RETURN CODE JNZ FINISH ;ERROR OR EOF LXI H,BASE+80H ;BUFFER LOCATION ; NORD: MOV A,M ;GET FILE CHARACTER STA MESS ;SAVE FOR DIVP INX H re our own CRCKLIST.$$$ temporary file). ; LXI H,FCB+9 ;POINT TO FILETYPE IN FCB CALL TSTBAD ;CHECK FOR .$$$ FILES JZ AGAIN ;IF ZERO FLAG, IGNORE THEM ; ;Move 8 characters from FCB+1 to FNAME LXI H,FCB+1 LXI D,FNAME LXI B,8 CALL MOVER ;Mo SHLD BUFAD ;UPDATE BUFFER ADR CALL DIVP ;CALCULATE NEW CRC JMP READIT ;GO READ MORE CHARACTERS ; FINISH: CPI 1 ;NORMAL END-OF-FILE? JNZ FILERR ;NO, IT WAS A READ ERROR LDA REM+1 ;GET MSP OF CRC CALL HEXO ;PRINT IT MVI A,' ' CALL TYPE ;TYPEve 3 characters from FCB+9 to FNAME+9 LXI H,FCB+9 LXI D,FNAME+9 LXI B,3 CALL MOVER ;Now print filename.type CALL ILPRT ;PRINT: DB CR,LF,'--> FILE: ' FNAME: DB 'XXXXXXXX.XXX',TAB,TAB,'CRC = ',0 ; ;Open the file LXI D,FCB MVI C,OPEN CA A SPACE LDA REM ;GET LSP OF CRC CALL HEXO ;PRINT IT CALL CRLF ;TURN UP NEW LINE LHLD REM ; GET PRESENT CRC XCHG LHLD SUM ; GET RUNNING SUM DAD D ; ADD THEM SHLD SUM ; SAVE BACK IN BUFFER JMP AGAIN ;SEE IF MORE FILES TO DO ; FILERR: CAL  L ABEXIT ;ABORT BECAUSE OF FILE READ ERROR DB '++FILE READ ERROR++$' ; ;--------------------------------------------- ;An 8080 routine for generating a CYCLIC- ;REDUNDANCY-CHECK. Character leaves that ;character in location REM. By Fred Gutman. ;Send carriage return, line feed to output ; CRLF: MVI A,CR ;CARRIAGE RETURN CALL TYPE MVI A,LF ;LINE FEED, FALL INTO 'TYPE' ; ;Send character in A register to output ; TYPE: PUSH B PUSH D PUSH H ANI 7FH ;STRIP PARITY BIT MOV E,A PUSH D From 'EDN' magazine, June 5, 1979 issue, page 84. ; DIVP: LHLD REM ;GET REMAINDER MOV A,H ANI 128 ;Q-BIT MASK PUSH PSW ;SAVE STATUS DAD H ;2 X R(X) LDA MESS ;MESSAGE BIT IN LSB ADD L MOV L,A POP PSW JZ QB2 ;IF Q-BIT IS ZERO ; QB: MOV  CALL WRFILE ;WRITE TO FILE IF REQUESTED POP D MVI C,WRCON ;SEND CHARACTER TO CONSOLE CALL BDOS POP H POP D POP B RET ; ;Write character in E register to output file ; WRFILE: LDA FFLAG ;GET FILE TRIGGER CPI 'F' ;IS IT SET? RNZ ;NO,A,H XRI 0A0H ;MS HALF OF GEN. POLY MOV H,A MOV A,L XRI 97H ;LS HALF OF GEN. POLY MOV L,A ; QB2: SHLD REM RET ;-------------------------------------------- ; ;Hex output ; HEXO: PUSH PSW ;SAVE FOR RIGHT DIGIT RAR ;RIGHT.. RAR ;..JUS RETURN MOV A,E ;GET CHARACTER BACK PUT CRCFILE ;SEND IT TO THE FILE RET ; ;Multi-file access subroutine. Allows processing ;of multiple files (i.e. *.ASM) from disk. This ;routine builds the proper name in the FCB each ;time it is called. CarTIFY.. RAR ;..LEFT.. RAR ;..DIGIT.. CALL NIBBL ;PRINT LEFT DIGIT POP PSW ;RESTORE RIGHT ; NIBBL: ANI 0FH ;ISOLATE DIGIT CPI 10 ;IS IS <10? JC ISNUM ;YES, NOT ALPHA ADI 7 ;ADD ALPHA BIAS ; ISNUM: ADI '0' ;MAKE PRINTABLE JMP TYPE ;PRINTry is set if no more names ;can be found. The routine is commented in Pseudo ;code, each Pseudo code statement is in <<...>> ; MFNAME: ;<> MVI C,STDMA LXI D,BASE+80H CALL BDOS XRA A STA FCBEXT STA FCBRNO ;<> LDA MFFLG1 ORA A JZ MFN01 ;<> ;Save orig request LXI H,FCB LXI D,MFREQ LXI B,12 CALL MOVER LDA FCB STA MFCUR ;SAVE DISK IN CURR FCB ;<> LXI H,MFREQ LXI D,FCB LXI B,12 CALL M  OVER MVI C,SRCHF LXI D,FCB CALL BDOS ;<> JMP MFN02 ; MFN01: ;<> LXI H,MFCUR LXI D,FCB LXI B,12 CALL MOVER MVI C,SRCHF LXI D,FCB CALL BDOS ;<> LXI H,MFREQ LXI D,FCB LXI B,12 Cte file to update CP/M's bit map, ;then erase it. ; ABEXIT: POP D ;GET MSG ADRS MVI C,PRINT CALL BDOS ;PRINT MSG ; ABEXT2: LDA FFLAG ;SEE IF WE ARE MAKING FILE CPI 'F' JNZ ABEXT3 ;NO FILE, SKIP FILE STUFF FINIS CRCFILE ;CLOSE INCOMPLETE FILEALL MOVER MVI C,SRCHN LXI D,FCB CALL BDOS ;<> MFN02: ;<> INR A STC RZ ;<> DCR A ANI 3 ADD A ADD A ADD A ADD A ADD A ADI 81H MOV L,A MVI H,BASE SHR 8 PUS ERASE CRCFILE ;ERASE INCOMPLETE FILE ; ABEXT3: CALL ERXIT ;PRINT MSG, EXIT DB CR,LF,CR,LF,'++ABORTED++$' ; ;Exit with message ; MSGEXIT:EQU $ ;EXIT W/"INFORMATIONAL" MSG ERXIT: POP D ;GET MSG MVI C,PRINT CALL BDOS ; ;Exit, restoring stackH H ;SAVE NAME POINTER LXI D,MFCUR+1 LXI B,11 CALL MOVER ;<> POP H LXI D,FCB+1 LXI B,11 CALL MOVER ;<> XRA A STA FCBEXT STA FCBRNO STA MFFLG1 ;TURN OFF 1ST TIME SW ;<> RET ;------------ and return to CCP ; EXIT: LHLD STACK SPHL RET ;TO CCP ; ;Program storage area ; SUM: DW 0 ;BUFFER FOR SUM OF CRC'S FFLAG: DB 0 ;FILE WRITE REQUEST FLAG REM: DW 0 ;CRC REMAINDER STORAGE MESS: DB 0 ;CRC MESSAGE CHAR GOES HERE MFFLG1: DB 1 ;1S------------------------------------ ; ;Check for .$$$ files ; TSTBAD: CALL TESTIT ;CHECK FIRST ONE FOR '$' RNZ ;NO, RETURN CALL TESTIT ;CHECK SECOND ONE RNZ ;NO, RETURN ;FALL INTO TESTIT TO CHECK THIRD ; TESTIT: MOV A,M ANI 7FH ;STRIP T TIME SWITCH MFREQ: DS 12 ;REQUESTED NAME MFCUR: DS 12 ;CURRENT NAME BUFAD: DS 2 ;READ BUFFER ADDRESS DS 60 ;STACK AREA STACK: EQU $ OLDSTK: DS 2 ;OLD STACK POINTER SAVED HERE ; ;Define location of file write buffer BUFFERS:EQU $ ; END CRCK ATTRIBUTE CPI '$' ;CHECK FOR $ FILETYPE INX H RET ; ;Move (BC) bytes from (HL) to (DE) ; MOVER: MOV A,M STAX D INX H INX D DCX B MOV A,B ORA C JNZ MOVER RET ; ;Aborted - print reason. If making output file, ;close the incompleå  åñÃ\ DISK FULL: CRCFILE$€Í!"²ë*®ëñ*²#"²ɯ2™2­! "°!"²�Í�Í<ƒ kÍÃ\ NO DIR SPACE: CRCFILE$1_ÍÚÒ‹:·Ê©ÍŠ++FILE NOT FOUND++$ͧ ---------------------> SUM OF CRCS = :Í�> Í»:Í�Í´:þFÂ�*²}æÂý"°>õåÍ·ñÂñ�Í<Â5 ÍÃ5 CANNOT CLOSE CRCFILE$ÃYCRCKLISTCRC!"²�Í�8ÍÃxå w# ÂiÑÍÉ!�8ÍdÍ÷ DONE$!eÍpʃ!]¼Í!eÅÍͧ --> FILE: XXXXXXXX.XXX CRC = \Í<ÂðÍŠ++OPEN FAILED++$!"!"!*!|åþÊ' Í·ÊÍþÊ�\Í·Â5!€~2#"!ÍsÃüþÂ\:Í�> Í»:Í�Í´*ë*"ÃÍŠ++FILE READ ERROR++$*|æ€õ):…oñÊŒ|î g}î—o"ÉõÍ™ñæþ 򢮮0ûã~Í»#~·Â¨ãÉ> Í»> ÅÕåæ_ÕÍÏÑÍáÑÁÉ:þFÀ{ͷɀͯ2h2|:·Ê!\  Í:\2å! \ Í\ÍÃA!\ Í\Í! \ Í\Í<7È=懇‡‡‡Æ�o&å Íá] ͯ2h2|2ÉÍxÀÍxÀ~æþ$#É~# x±ÂÉÑ Í:þFÂä*²}æ¤"°>õÍ·ñ˜�Í<ÂÜ ÅÍÃÜ CANNOT CLOSE CRCFILE$�ÍÍ÷ ++ABORTED++$Ñ Í*_ÃCRCK.COM 4.2B 4/27/81!"9"_1_Í´:]þ ÂPÍ÷++NO FILE NAME SPECIFIED++ $ͧCRCK ver 4.2B CTL-S pauses, CTL-C aborts :m2þFƒôCRCKLIST$$$Ãø Í– æÄ‚yæ0°Ãø Í–a ÍÃ9õ*°ë*²}“|šÚ)!"²ë*°{•zœÒ*®ëÍ�Í·Âú€*²"²ÃÌ ÍùÉ# x±ÂÉÑ Í:þFÂä*²}æ¤"°>õÍ·ñ˜�Í<ÂÜ ÅÍÃÜ CANNOT CLOSE CRCFILE$�ÍÍ÷ ++ABORTED++$Ñ Í*_  åand examples are available. Place MODEM714.COM in drive A. At the A> prompt, type MODEM714 When reading the documentation, substitute the command MODEM714 in place of MODEM. OSMODN appears to be the same as MODEM714; however, its .COM fåile is not identical. Since a complete test of the differences between each program was not possible, I decided to include both. Run OSMODN in the same manner as MODEM714. OSMODN and OSFIG were obtained from the Osborne Users Group (OUG) of th DISK.DOC -FOG/UTL.001 First Osborne Group (FOG) Utilities Disk This disk contains the MODEM7 terminal program and related files previously found on -FOG.001. The .DOC files CONFIGUR, INDEX, MODEe Washington D.C. area. OSFIG configures RS232 transmission speed and protocol for the current operating session. Place OSFIG.COM in drive A. At the A> prompt, type OSFIG The program is self-prompting. CRCK4, previously found on -FOG.003M, & MODEM7 describe use of MODEM7. They should be read in the order listed. When reading the documentation, substitute MDM7OS (MODEM7-Osborne) where the command MODEM or MODEM7 is used. To run MODEM7, place MDM7OS.COM in drive A. At the A> p, and CK-FIX, from -CPMUG.040, permit verification of file transfer activities. Refer to their .DOC files. UMPIRE, previously found on -FOG.016, provides hardware diagnostics for the Osborne. Refer to its .DOC file. WASH (version 1.0) is a rompt, type (for example) MDM7OS T.300 MODEM714 is another version of MODEM7. Its origin is unclear to me, but D. Slaughter has provided good documentation in MODEM714.DOC. I suspect he also configured the program. Built-in documentation versatile file maintenance utility previously found on -FOG.016. It is self- prompting. Place WASH.COM in drive A. At the A> prompt, type WASH Also, refer to -FOG/UTL.005. Jim Woolley FOG Disk Librari  an August, 1982 A> prompt, type WASH Also, refer to -FOG/UTL.005. Jim Woolley FOG Disk LibrariååååååÃÿÃ5ÃÃ!Ã%Ã-âáÍÉÍÉÍæþÉÍæþÉu Í*ÿåÊ#ëí°*ÑÕës#rá"" "" "&".É SETUP FOR RS232 PORT ON OSBORN O-1 $ÉÅU~þ1ʺþ3ʸþ ʸÁ7ÉVåÕÍÄÑáÁ¯É*.<éÃóÓ:*ÓûÉóÓ2*ÓûÉóÓ:*ÓûÉå  !9"t1tÍË MODEM7 as of 12/18/80 Originally Written by Ward Christensen Revisions by Mark M. Zeiger, Jim Mills THIS VERSION OF 8/15/81 HAS BEEN CUT UP TO SIMPLIFY INTERFACE TO SIMPLE MODEMS $Ñ ÍÍÍq͸>ÿ2 /2Í Í„: þXÂù>ÿ2ÃÞ: Gþ ÊÍ ÍÍeÃÖ:·Â2>ÿ2í:E·Ä– ÍíÒ:>B2>Íñ:]þ ÊþÍZPÍ2ÍÑÚaÍ¡¯2'ÍvͤÍ»ÍÀÚOÃB>ÍÍÀÚañ:·Â‰>2íͪ Ò”>B2ñ:]þ ÊþÚÍl Íì Í©Í:·ÂÏ:·ÊÏÍ FILE OPEN, READY TO RECEIVE ÍÕ ÚáÍOÍ¡ÍpÃÏÍgÍpͳñ:·Ê Í AWAITING ÞþMÊÞÍ͸Í>2 Í Í : þEÊÖþTÊ:þSÊ þRÊoþDÊ*ÃÞ: þÿÊz:]þ ÂY>ÿ2 /2Í ÃzÍ©ÍÈvÍvÍ!'"ê>2 ÍrʾÍ}þÊÞþÊ*þÌÚÊzGþõåÌ áñþʾþ»: þÿʾ:/2þÍÍÂzÍ þÊzæÍeõ:þÊñw#"êG:·xÊð/Í Ãúþ Âú>:Íe:=¼ÌNAME NAK PÍZ>Í!ò5ú/ *î\ Í«"îÍ6 ·É>Í7Éå !]~æÍ:·~ÄeÅ;ÁÚv þÂL #Â> >Í:·ÄXQ;ºÊ£ >uÍ:·Ê– Í CHECKSUM ERROR PÍZ>ÍÃ7 >ÍáÉ!\Í:·ÊÏ Í AWAITING FILE NAME Í ÚÏ Íá þÊß ·É7Éå!];Ò :·Ê Í TIME OUÃzñÃzõ:·ÊñÓÿÉñÉ>ÍÍW2ÍW2Õ̀͒Ñ!'ÊQ:w#ÍeÊQ:w#Íe>ÍÉ:·ÊdÄ ÃgâÍÊt x±ÂgÉÍ É6#Ù}·l&õ)ñ>�oÉ'ͼÕvͼÑëÕ€Ñë+|µÂ•ÉvÍÉÅÕåõÍñáÑÁÉ!vÍ!\v Í«ÉåÕÅõ!µÍ!lÍÍ):Hþ ÊÍkÍuþÿÂuT RECEIVING FILENAME ÃS þÊ} þÊ> w:·~ÄeÅ>ÍÁ#}þÊS Ãç :·ÄXyÍ;þÊ} !\Í:·Êt Í CHECKSUM ERROR Í Út Ãâ áÉ>ÍÍN;þÊdþÈ7É>2E2òÍñ !¦&"îÍH !\—ÍøÍþ ÚØ :fæ€Â³ *î\ë Í«ë"î!ò4ó !ó5§ !¦&"î:òþAØ>@2òÉå!ó6!GN!HÍ  ++FILE DOES NOT EXIST++ Í TYPE "R" TO RETURN TO MODEM TYPE "A" TO RE-ENTER NAME: Í}͇ÍeÍXþAÊêþRÊÀÍÍ~þÊšþÊÁ͇þÊšþÊëÃ}Í  ++FILE TRANSFER COMPLETED++ ÃÍ  ++FILE TRANSFER UNSUCCESSFUL++ ÃÍ  ++ TRANSFER CA 6 !GF#ÊD ~þ  #ÊD ~þ Ê "ð+#ÊD ~þ Â$ :ó<2ó#ÊD ~þ Ê6 Ã$ 6 áÉ*ð™~þ Ê] #ÃP #~þ Ê] "ð!˜pÉ Í·È€Í\Íþÿȇ‡‡‡‡!€…o ~æ€Â  #~æ€È+øÿ] Í«!e~æw#~æw\Í!\l Í«!u6B#6A#6KlÍ!l6\ÍÉ:·È\Í<ÈÃÀ ÅÕNCELLED ++ ñÁÑáÉ6# 6 #Â6#Â!ÉÍ  ENTER FILE NAME TO BE TRANSFERRED - C/R TO QUIT: FÍÁÍXÉF!µÍøÉµÍɵÍÉ€!€~ͦþÈÍr·Ê Í}þÈ#ÂŒÉõͧñÍÍeÉÍÊÍrÊÖÍ}þÊÞGþõÌ ñþÊÖÍÍeÃÖå€ÍáÑÁ¯2h:± ·ÂK >2± !\²  ÍÊ :\2¾ !² \ ÍÊ ÅÕå\ÍáÑÁà !¾ \ ÍÊ ÅÕå\ÍáÑÁ!² \ ÍÊ ÅÕå\ÍáÑÁ<7ˆ 2± É=懇‡‡‡Æ�o&å¿  ÍÊ á] ÍÊ ¯2h2|É~# x±ÂÊ É¯2':·Êø Í AWAITING #:&<Í�ÍX;Úš   þÊdþÊÇ ·Êø þ7ÈG:·Ê! :·Ê9 xÍ�Í H RCD, NOT SOH ;Ò9 >Í:'<2'þ ÚÙ :·Ê` :·Êf ͧÊÕ Í³Í++ UNABLE TO RECEIVE BLOCK -- ABORTING ++ $:·Ê¨ :·Ê9 Í ++ TIMEOUT ++ :'Í�ÍXÃ9 ;Úš W;Úš /ºÊ :·Êë :·Ê9 Í ++ BAD SECTOR # IñõÍ#ñ·Éõ:·Ê:·Â#:,·Ê#ñõÍ#ñõ�OÍÂ'ñÍÉ:·Ê@:·ÊZÍ AWAITING INITIAL NAK ÍN;þÈþÊdÊdÃZ*"v"�"kÉ]2 þ ʨ!  ¾Â 6Ë#—Ã-:·À2É:·Â:·Êñ!]ÓÍ«Í«Í  TRANSFERRED :\2ì!\Í:ìN HDR Ã9 z2%>2,!€;Úš w,ÂQ¯2,;Úš ºÂH:%G:&¸Êj<¸ÂdÉ:·ÊV:·Ê9 Í ++ CKSUM ++ û ÍpÃÕ >ÍÉ:·Ê‘Í SEND # :&Í�ÍX>Í:&Í:&/ÍÉ>2,!€~Í,®¯2,ÉyÍÉ͸Ú0þÈþÊdG:·ÊðxÍ�Í H RCD, NOT ACK :'<2'þ Ø:·Ê2\!%Í«:í·Â Ão>ÿ2E2 /Í 2:·Ê5:·ÊUÍ  ALL TRANSFERS COMPLETED : ·Â«Í  ++PRESS RETURN TO DISCONNECT++ Íþ Â\Í  ++DISCONNECTED++ Í´Ã5:·ÂÞÍXÃz!寶6ÂÈÍæÃÞ:eþÊÖþ ÈÃÛ> 2eÍæÍÚêÉ!eÉÍ  ++ INVALID BAUD :·Ê ͧ7ÈÍCAN'T SEND SECTOR -- ABORTING $:·ÊðÍ TIMEOUT ON ACK Ãð:·ÊZ:·ÈÍrÈÍ}þÀ1t;Òg>Í;Òt> ÍÍ ROUTINE CANCELLED >B2ë:&<2&É:·Êõ\Í<ÈÍ FILES EXISTS -- TYPE 'Y' TO ERASE: Í}õÍeñ͇þYÂÞÍX\ÍÉÍ RATE ++ 1tÃÞ!l\Í«¯2|2hÉþ ÊKþ ÊKþ ÊKþ Ú<þÚKõ>(ÍKñÍ�>)ÃKÅÕå_ÍáÑÁÉõ> Íe> ÍeñÉõÅÕåOÍáÑÁñÉÅÕåÍáÑÁ·ÉÅÕåÍáÑÁÉþaØþ{Ðæ_ÉõÍ™ñæþ 򢮮0Ãe:·Â°<ɯ2'Í MULTIPLE ERRORS ENCOUNTERED. TYPE Q TO QUIT, R TO RETRY: Í}õÍXñ͇þ No file specified ÃÞ\Í<ÀÍERROR - CAN'T MAKE FILE DIRECTORY MUST BE FULL $\Í<ÂyÍCAN'T OPEN FILE$:·Â…:·ÈÍ FILE OPEN - EXTENT LENGTH: :kÍ�>HÍeÍXÉ\Í<ÀÍCAN'T CLOSE FILE$:+=2+úè*)€Í©")É:(þ7ȦÅÕÍ\RÈþQ§·Éã~·ÊÍK#à ãÉ ÃÑÍÍ :·Â«>Q2Ãd: þÿÊ‚:wþ Ê‚Í  OUTPUT FILE IS STILL OPEN, WRITE IT OUT (Y/N) ?Í�ÊX€ÍÃÍ}͇OþYÊŸþNÂ�<õyÍKÍXñÉ€~#«ɯÉÍ´ÃÞÍ  Connection established - Select options: Ír·ÂÆ>ÍeÃìF!\ÍÑÁ·Ê&=Ê5Í++ FILE READ ERROR ++$!€ë yþÊ;Ãô>2(y2+!¦")€ÍÃÑ*)ë!€Í©ë"):+<2+þÀ:+·ÈO¦åÕÅÍ\ÍÁÑá·Â›!€ë Âp¯2+!¦")ÉÍÍERROR WRITING FILE $Í Í Õ:·ÊÉx‡G˜:ÍNÍÊäÂÏÂÏÂÉÑ7ÉÍ Ñõ�O:·Ê:·Â:,·ÊÍøÍ„:]þEÈþMÈGþTʃþSÊAþRÂ(:·ÈÃAÍ  ++Bad Option++ ÃG:mþ ÀÍ  Re-enter PRIMARY option and file name only: FÍÁÃû:mþ š>2>ÿ2 /Í É>2 ÉÍ Enter New Baudrate: !e6Í}þ ÂËÍXøþ0Ú½þ:Ò½wOÍe#ý!%Í«!  Í«>2± /2E:  ·Â”Í  WRT - Write file to disk (from terminal mode) DEL - Erase present file (from terminal mode) RET - Return to terminal mode with no loss of data Í XPR - Toggle expert mode (Menu on/off) DIR - List directory (may specify drive) CPMl2ç:mþ õ̘ñĦÍÁ€Í¯2çÍþÿʇͲ~·Êwûÿ~æ€Âwöÿ#ZÍ«Í«Í  | :<2æ·ÌXçÍþÿÊ”Ã.Í NOT FOUNDÍXÉ>? !èw#ŸÉ!mè Í«Éæ‡‡‡‡‡_!€É:ç·ÊÍÆ@ÃÔÍÆA2âÍ  DRIVE É - Exit to CP/M S - Send CP/M file R - Receive CP/M file T - Terminal mode (optional file name) E - Terminal mode with echo Í  DEFAULT DRIVE: ÍÆAÍeÍ  Command: FÍÁÍXHͤCPMÒ5ͤDIRÒ-ͤRETÚö*êÃzͤWRTÒXADOQRSVTADOQRSVTB¦¦Í INVALID OPTION ÃÞÿ€ ++BAD LIBRARY NUMBER CALLED++ $ͤXPRÒ‰ͤDELÒ3å:H!ŸÍ“áÚýåÍûáÃùÃÞÍðÔ:wþ Êývͼ>ÿ2 /2Í !vÍÃý: þÿÊý:wþ Êý*êÍyÍ’ͳ>ÿ2 /2Í !vÍÃý:/2ÃýF#¾Êž”7ÉSRTEãÕ~·Ê½¾Âµ#æ>#¾Â·7Ñ#ãÉõåÅÕÍœÑÕ¯ëͬþ Ê�þÊ þÊ þÊ?þÊQþÊ€þ ÚÏGëáå#4+~#¾ÚåvëpxÍã#ÃÏëáå#G~ÖwÚ*ë+xF6 þÊ/xÍãÃÏ4ëÃÏÍã> Íã>ÍãÃÏ>#Íã> Íã> ÍãÃÅÑÕG>#Íã> Íã> Íãx·ÊÏÍãÂjÃÏ>Íã5ëÃÏ> Íã> ÍãÃÏ> Íã> ÍãÑÁáñÉÑáåÕF##> w#Â¥ÉåÕÅÍѷʯÍÉþaÚÅþ{ÒÅæ_ÁÑáÉ*éåÕÅÍÛÁÑáÉ*éåÕÅõÍïñÁÑáÉ* OéõÅÕåÍrëå#^#6 áÑÕåÍ�ͯþ Ê^þ Ê0áå ͯþ Ê^þ Â@Ã0þ Ê^áå Í�ͯþ Ê^áå ͯáå#ÍÃáå ÍÃáÑÁñÉåÅ6# > Í–>Í– > Í–>Í–ÁáÉw#–Éþ:­æ_Ö@w#Éþ Èþ.Èþ È ú¯w#ï~þ*ÊÓ#ÂÅÃÖÍè~þ*Êä#ÈÃØÍèÉ6?#ÂèÉF!\Íø!çÍ:å  ; --- THIS IS AN OVERLAY TO THE FRONT TO THE MODEM --- ; PROGRAM TO ALLOW EASY CHANGING THE MODEM ; INTERFACE SECTION. ; ; --- THIS VERSION FOR RS232C PORT ON OSBORN O-1 COMPUTER --- ; THIS VERSION WILL ALLOW SELECTION OF 300 OR 1200 BAUD ; WITH THEOF THE MODEM ROUTINES MAY ONLY CHANGE --- ; THE A-REGISTER AND THE FLAGS. NO OTHER ; REGISTERS MAY BE CHANGED. ; ; --- INPUT DATA FROM MODEM --- ; MXIN CALL 0 ; PATCHED TO CALL INPUT ROUTINE RET ; ; --- OUTPUT DATA TO MODEM --- ; MXOUT CALL 0  USUAL BAUDRATE COMMAND STRING ; ;THESE ROUTINES ARE AT THE BEGINNING OF THE PROGRAM SO ;THEY CAN BE PATCHED BY A MONITER WITHOUT RE-ASSEMBLING ;THE PROGRAM. FALSE EQU 0 TRUE EQU 0FFH ; ORG 104H ; IMSAIBYTE DB FALSE ;true=imsai front panel ; PATCHED TO CALL OUTPUT ROUTINE RET ; ; --- TEST IF DATA IS AVAILABLE FROM MODEM --- ; MXISTAT CALL 0 ; PATCHED TO CALL STATUS ROUTINE ANI MODRCVB CPI MODRCVR RET ; RETURN WITH Z SET IF DATA IS READY ; ; --- TEST MODEM IS READY TO BE SENT  FASTCLK DB FALSE ;4 MHz or greater BAKUPBYTE DB TRUE ;true=make .BAK file XPRFLG DB FALSE ;true=no menu, false=print menu ; ; --- CUSTOM MODEM DRIVER --- ; JMP MXINIT ; INIT MODEM ROUTINES (NOT HARDWARE) IN$MODDATP JMP MXIN ; GET DATA FROM NEXT CHAR. --- ; MXOSTAT CALL 0 ; PATCHED TO CALL STATUS ROUTINE ANI MODSNDB CPI MODSNDR RET ; RETURN WITH Z SET IF MODEM IS READY ; ; --- INIT MODEM ROUTINES (NOT HARDWARE) --- ; THIS ROUTINE NEED NOT PRESERVE ANY ; OF THE REGISTERS. ; MXINMODEM OUT$MODDATP JMP MXOUT ; OUTPUT DATA TO MODEM IN$STAT JMP MXISTAT ; TEST FOR INPUT DATA OUT$STAT JMP MXOSTAT ; TEST IF OK TO OUTPUT DATA SET$BAUD JMP MXSETBAUD ; SETUP BAUDRATE JMP$INITMOD JMP MXINITH ; INIT MODEM HARDWARE ; MODCTLP EQU 2A00H IT LXI D,MSG ; POINT TO MESSAGE MVI C,9 CALL 05H ; USE BDOS CALL TO PRINT STRING ; LHLD 6 ; FIND TOP OF USER RAM LXI D,-100H ; STEP DOWN A LITTLE DAD D PUSH H ; SAVE IT LXI D,BDJ ; POINT TO SOURCE OF CODE LXI B,CDLEN+2 ; SET LENGTH OF CODE;ALTERNATE PAGE DATA PORT MODSNDB EQU 02H ;YOUR BIT TO TEST FOR SEND MODSNDR EQU 02H ;YOUR VALUE WHEN READY MODRCVB EQU 01H ;YOUR BIT TO TEST FOR RECEIVE MODRCVR EQU 01H ;YOUR VALUE WHEN READY MODDATP EQU 2A01H ;ALTERNATE PAGE DATA PORT ; ; --- ALL  XCHG DB 0EDH,0B0H ; --- FAKE LDIR ; LHLD 6 ; GET BDOS ADDRESS BACK POP D PUSH D INX D ; POINT TO ADDRESS POSITION XCHG MOV M,E ; PATCH IN ADDRESS INX H MOV M,D ; POP H SHLD 6 ; TRANSFER BDOS JUMP ; LXI D,OSIN-BDJ DAD D ; COM  PUTE ADDRESS OF OSIN ROUTINE SHLD MXIN+1 ; PATCH CALL LXI D,OSOUT-OSIN DAD D SHLD MXOUT+1 ; PATCH CALL LXI D,OSTAT-OSOUT DAD D SHLD MXISTAT+1 SHLD MXOSTAT+1 RET ; CR EQU 0DH LF EQU 0AH MSG: DB CR,LF,CR,LF DB ' SETUP FOR RS232 PORT O BDOS ; BDJ JMP 0 ; THIS GETS PATCHED TO JUMP TO BDOS ENTRY ; OSIN DI ; DISABLE INTERRUPTS OUT 0 ; SWITCH TO ALTERNATE PAGE LDA MODDATP ; GET DATA BYTE OUT 1 ; SWITCH BACK PAGES EI ; RE-ENABLE INTERRUPTS RET ; OSOUT DI ; DISABLE INTERRUPN OSBORN O-1' DB CR,LF,CR,LF,'$' ; ; --- INIT MODEM HARDWARE IF NECESSARY --- ; THIS ROUTINE MAY BE CALLED SEVERAL TIMES, SO BE ; SURE THAT THIS WILL NOT HANG UP THE HARDWARE. ; MXINITH RET ; ; --- SET HARDWARE BAUDRATE FROM STRING POINTED TO BY-TS OUT 0 ; SWITCH TO ALTERNATE PAGE STA MODDATP ; SEND DATA BYTE OUT 1 ; SWITCH BACK PAGES EI ; RE-ENABLE INTERRUPTS RET ; OSTAT DI ; DISABLE INTERRUPTS OUT 0 ; SWITCH TO ALTERNATE PAGE LDA MODCTLP ; GET STATUS BYTE OUT 1 ; SWITCH BACK -- ; (H,L). IF THE STRING STARTS WITH AN ASCII SPACE, ; SET THE BAUDRATE TO THE DEFAULT VALUE. IF THE ; REQUEST IS NOT VALID, RETURN WITH CARRY SET. ; ; --- THIS WILL EITHER SETUP FOR 300 OR 1200 BAUD, 300 IF ERROR MXSETBAUD: PUSH B MVI C,55H ;PAGES EI ; RE-ENABLE INTERRUPTS RET CDLEN EQU $-BDJ ; LENGTH OF CODE TO COPY ; ; ORG 300H ; START OF PROGRAM ; ----------------------------------------------------  FOR 1200 BAUD MOV A,M ; GET FIRST STRING CHAR. CPI '1' ; IF 1200 BAUD JZ STBAUD CPI '3' ; TEST IF 300 JZ SET300 CPI ' ' ; IF SPACE (SET TO DEFAULT) JZ SET300 POP B STC ; OTHERWISE ERROR RET SET300: MVI C,56H ; FOR 300 BAUD STBAUD PUåSH H PUSH D CALL OSET POP D POP H POP B XRA A ; CLEAR CARRY RET ; OSET: LHLD 1 ; GET BIOS+3 ADDRESS MVI L,3CH ; SPECIAL OSBORN ROUTINE PCHL ; BRANCH TO IT ; ; ; --- ROUTINES THAT GET COPIED UP TO TOP OF MEMORY --- ; JUST UNDER THEå  å accomplished via a block mode, with headers and checksums to ensure data validity. Automatic retry, up to 10 times, is attempted for every sector transmitted. The user is given an option to quit, or retry after 10 consecutive errors occur. Also såupported is a terminal mode which allows the computer to function as a terminal to a time sharing system, CBBS, etc, and a similar program, but which echos all received characters, such that two people running MODEM can com- municate keyboard-to-keyboaård, one running in terminal mode, and one running in echo mode. This is frequently done to "test the line" or to see how high a baud rate can be supported before beginning file transfers. Planned future enhancements include the ability to place datåa received (while in terminal mode) into memory, and write it out to a disk file. As "delivered" the program supports a PMMI S-100 modem at primary address 0C0H, and will run unmodified if this is what you have. Keith Peterson added equates for the DOCUMENTATION ON THE MODEM PROGRAM AS OF 01/12/80 V4 ---------------- MODEM.ASM is a multi-function communications program for use with the CP/M operating system. Its primary function is the transfer of files between CP/M systems. The transfer is Hayes, and a serial modem. ---------------- The program is named MODEM4.ASM (or COM) on the disk, to indicate that it is an extension of the MODEM.ASM which was distributed on the CP/M user's group disk 25, and the MODEM2 which is/was distribut  ed by PMMI itself. It is expected that the user will rename it back to MODEM once any earlier versions of this program are erased. COMMAND FORMAT: MODEM option or MODEM option.baudrate or MODEM option fn.ft or MODEM option.baudrate fn.ft  T, C, (or Q) may be followed by the following if your MODEM is capable of supporting these: (the program currently supports the PMMI). If anyone adds the IDS or HAYES, please send me a list of equates and changes. (address in MODEM.asm file)  "option" consists of a single character PRIMARY OPTION, and 0, 1, or more characters of SECONDARY OPTIONS. fn.ft is the filename to be received or sent PRIMARY OPTIONS: S: To send a file R: To receive a file T: Terminal - i.e. the system beO: go to originate mode A: go to answer mode D: disconnect (otherwise, keeps the line) note 'O' and 'A' are n-o-t defaulted (i.e. send to originate), etc. When using MODEM to send files under a remote console program, use the Q option, but O-M-ing communicated with must echo E: Terminal mode but with echo - this would be used when 2 people using the MODEM program are talking keyboard to keyboard - one uses MODEM t, the other, MODEM E. D: Disconnect the phone (if your MODEM supports this)I-T the O or A - this will leave the modem (if PMMI) in the same mode as before. Otherwise, the ability of the modem to hang up on loss of carrier will be lost, since the MODEM program grabs the line and doesn't leave it able to hang up on loss  H: Help (prints usage documentation) X: Prints usage examples SUB-OPTIONS: Q: A 'Q' may be appended to either 'S' or 'R' to transfer 'quietly' i.e. w/ no console I/O. This is for several purposes: 1) if you have a slow terminal (such of carrier. This is because MODEM was written as an ATTENDED program, and only by proper use will work adequately under a remote console program (such as BYE). Ex: MODEM sq.600 b:foo.asm Note the baud rate defaults to 300, so if you want tas a tty), you must use the q option; 2) if you are using this program on a "remote" CP/M system, in which the "remote console" is the same as the line for sending a file, then you must use MODEM sq or rq to suppress the console msgs. S, R,o transfer at another rate, don't forget the .600 or whatever. R: Show characters as received S: Show characters as sent V: View the file (suppresses non-error status messages) T: Go to terminal mode after file transfer E: Go to echo mode aft  er file transfer D: Disconnect after program execution EXAMPLES: send 'test.fil' in originate mode, 'quietly', disconnect after transfer MODEM SOQD test.fil receive 'test.fil' in answer mode at 450 baud, and don't disconnect after. MOnd wait for ack time to 8 sec. for slower disk systems. Add control-X abort so receiving station can stop send. Add abort test to send and receive for local cancel. By Keith Petersen, W8SDZ 12/03/78 Add 16-sector buffer for less disk activity. DEM RA.450 test.fil Suppose you have sent 1 or more files already, did not 'D' (disconnect) and want to send or receive another, just: MODEM S test.fil (note this defaults to 300, so s.450 or whatever if that is the rate you were going at) This version typed by keith petersen, from information supplied by Jim Bell, K4FUP 01/05/79 Correct error in receive file routine which did 'ACK' when sector number was wrong. Add wait routine to hold sending of file until receive end is ready. After transferring the last file, use the D sub-option (MODEM sod.450 name) or re-type the MODEM command with the D primary option MODEM D to disconnect the phone. ------------------------------------------------ In the process of re-writin by Keith Petersen, W8SDZ 02/19/79 Change receive wait time to 8 seconds to allow for slower disk systems. Climinate multiple cancel on aborting. Add conditional assembly for clock frequency > 2.0 mhz. by Keith Petersen 04/11/79 Change send,g the MODEM program for the variable-baud-rate PMMI (and adding the functions for answer, orig, disconnect, view, etc), the following "historical" prolog was deleted. (..and the file was > 32K). It is reproduced here to give credit where credit due:  receive, and eof ack wait times to 10 seconds to allow for slower disk systems. Change send wait time to 80 seconds to allow receiving end more time to come up. By Keith Petersen, W8SDZ. 04/23/79 By Ward Christensen: put in PMMI variable baud  09/23/77 First written by Ward Christensen 09/26/77 Add error$limit equ (WLC) 10/01/77 Change exit$char from ctl-c to ctl-e for use w/timesharing computers (WLC) 10/10/77 Correct to send any length file (WLC) 11/20/78 Change serate select, originate, answer, quiet, disconnect; delete sense sw codes; add view, help, examples, etc. Change garbage char collection to "in" instr. not "recv". Add quit/retry from 12/78 vers which Keith didn't have. Un-do the 1/5/79 correction,    allowing the receiver to ack if a duplicate block is sent, such as might happen if the receiver's original ack was garbaged. 04/25/79 From Keith Petersen W8SDZ: add technique of de- leting garbage characters to avoid problems with line glitches. å 04/28/79 Re-write program, making it more structured, and better commented. Ward C.  04/25/79 From Keith Petersen W8SDZ: add technique of de- leting garbage characters to avoid problems with line glitches.  CP/M MODEM PROGRAM DOCUMENTATION by Mark M. Zeiger and James K. Mills 11/04/80 This program uses the file transfer routines written by Ward Christensen in his CP/M file transfer program (V2.0 as of 8/6/79) and is å compatable with his program in single file transfer mode. Multi-file transfers are only possible between two systems running the program described below. This program has three functions: 1. Communication 2. Program transferå 3. Modem control (for PMMI Modem) COMMUNICATIONS The program may emulate a terminal or echo data back to sender (act as a computer). Terminal Mode - 'T' Option The terminal mode may be called with or without a file namåe. If a file is specified (it should be a new file), then anything received by the modem may be saved in memory and later written on disk. The save feature is toggled ON/OFF by Control-Y. On an IMSAI   the front panel LEDs will indicated that memory save is toggled on by showing the binary value of the ASCII character received. For those with no front panel, a colon (:) will be printed at the beginning of each line wheautomatically since there will be times when you leave terminal mode and then decide to re-enter. This may be done while in the Menu by using the 'RET' command. You may re-enter Terminal mode and save in the same file as mn memory save is active. The colon will not be transmitted over the modem nor will it be saved in memory. If a file is not specified, then memory save can not be activated. If the memory buffer iany times as you wish as long as you have not closed the file with the 'WRT' command. While in Terminal mode, Control-T will put you in File Transfer mode. This will allow you to send the contents of an s full (the buffer is from the top of the program to the bottom of BDOS), the contents are automatically written to disk (but the file is not yet closed). Communications may then continue with the buff ASCII file over the modem. This routine does no error checking and there are no protocols specified between this program and the receiving computer other than that it should be ready to receive data via the moder reinitialized. The computer with which you are communicating must accept the X-ON and X-OFF (Control-Q and Control-S) conventions or data will be lost. When communications are over, use Control-E to exiem. Control-X will cancel the transfer. Computer mode - 'E' Option This mode echos data received by other computer. Only one computer may be in this mode at one time. There is no save feature in t from the Terminal mode and enter the Menu. The file to which you are writing must then be closed by using the 'WRT' command. If this is not done, all data will be lost. I decided not to close the file this mode. Useful if you wish to communicate with somebody running the terminal portion of the program. File transfer - 'S' and 'R' Options These features are the same as in the CP/M Modem program written by Ward Ch  ristensen except that upon completion of the transfer, control returns to the Menu unless the secondary 'T' option has been selected. In the latter case, control returns to Terminal mode. Remember that if you are operating acreate a backup file if a file on the disk has the same name as the file being received in multi-file transfer (see MODEM.SET). If this byte is set to 0FFH, a backup file will be created. If it is zero the file on the di remote computer using a timesharing program (such as Ward Christensen's "BYE"), the remote should be instructed to send or receive in the quiet (Q) mode as a secondary option. Examples of commask will be deleted before the new file is received. If you are running CP/M 2 and a file on the disk is designated R/O or SYS, a backup will be created whether the byte at 106H is set or not. Be careful - if you nds for sending and receiving are listed below. Multi-file transfers Using the B (batch) secondary option, more than one file and ambiguous filenames may be transferred. To send files, use the primary optioare running CP/M 1 and the drive on which you are receiving has an R/O file with the same name created by CP/M 2, the R/O file can not be accessed (found, changed, erased, etc.) by CP/M 1. You will therefore have two fn "S" and the secondary option "B" (along with any other secondary options and baudrate). To receive the files being sent, use the "R" primary option and the "B" secondary option. Files may not be named since fiiles with the same name when you are running CP/M 2. To fix this problem, use CP/M 1 to change the name of the file that is not R/O. Then use CP/M 2 to do what you want with the R/O file. Examples: Thelenames are sent by the sending program, but a disk drive may be specified (or else the files are written to the default drive). Backup option There is a byte at the beginning of the program (106H) that will  sender enters SBOT.600 B:*.COM to send all the COM files on disk B. Also specified were originate mode 600 baud (PMMI modem) and return to terminal mode when done. The receiver enters RBA.600 to receive all   the files being sent on the default drive (also answer mode at 600 baud for PMMI). The sender enters the command SB.600 ASM.COM *.HEX B:M*.* which will send ASM.COM from the default drive, all the HEX  (but NOT the secondary options). If you want multi-file transfers, then the "R" option does not need a filename. RET - You may also enter terminal mode using the 'RET' command, but no data will be saved since  files from the default drive, and all the files starting with "M" from the B drive. [note that neither 'A' or 'O' were specified: default is to whatever mode the PMMI is in currently] Multifile transfers may only be donea file may not be named with 'RET'. Use the 'RET' command to RE-ENTER Terminal mode after it has first been entered with the 'T' option. If this is done, you will still be able to save the communications if you  from the menu. It may not be specified when the MODEM program is called. In other words A>MODEM SAB *.COM will result in an INVALID OPTION error message. Return to Menu - 'M' option When asked to sel were doing so before you exitted the terminal mode. WRT - The 'WRT' command must be used after leaving Terminal mode. This writes the last buffer to disk and closes the file. Failure to use the 'WRT' command results ect an option, 'M' returns to Menu. The MENU If the Modem program is entered with no option, the Menu is called. The Menu gives the choice of selecting the standard options as defined by Ward Christensen (T, E, R, in loss of all data and a file of length zero. DEL - The 'DEL' command erases the most recent file accessed in Terminal mode. Useful if you decide after communications that you don't want to save information just gand S). The Terminal mode has been greatly expanded as described above. The "R" and "S" commands must be called with a filename or you will be required to enter the primary command (S or R) and the filename againathered. CPM - The 'CPM' command reboots and returns to CP/M. XPR - The 'XPR' command is a toggle which causes the menu to be printed or not printed. Initially the menu is on unless the program is called with the "X" o  ption (ie. A>MODEM X ). DIR - The 'DIR' command lists the directory of a CP/M disk. A drive may be specified (ie. DIR B:) or the default drive will be listed. After the directory is listed, the menu will not be pf number. If a connection to a computer is established, you will be able to select options (usually TO.xxx). If no connection is made after 15 seconds, [changed to 25 seconds in distributed version] then you will rinted whether XPR mode is on or off. If XPR mode is on and you wish to see the menu, hit return. FOR THE PMMI MODEM DSC - To disconnect you must use the 'DSC' command in the Menu. The original secondary options for the PMMI  be informed and be given the option of redialing or returning to the menu. The dial routine may also be specified when the Modem program is called by entering A>MODEM C. No secondary options will be accepted whModem (as defined by Ward Christensen) are "A" (answer mode), "O" (originate mode), and baudrate selection. See examples below. Once answer or originate and a baudrate have been selected (ie. SO.450 NAME.en the "C" option is used. [Note: you cannot type: CAL 312-545-8086 -- well, you can, but the number will be ignored and you will have to retype it when the program asks for it -- in the latest version (11/4/80) there is a 'library' feTYP), any subsequent options will use the same mode and buadrate. If you want to change the baudrate, it may be done without changing the mode. For instance, if you are in originate mode at 450 baud, then the command ature such as in DIAL.ASM. To use the CAL function, type CAL and a return at the menu. You will see a message 'WAITING FOR DIAL TONE' then a lot of stuff about entering the number. At this point you may type in a number, or you may type 'R.600 NAME.TYP' will allow you to receive a file at 600 baud in ORIGINATE mode. If you want to change the ans/orig mode, then you MUST select the baudrate again or it will default to 300. CAL - Allows dialing o a letter which will designate one of the library numbers (which you must insert at assembly time). ^B - Control-B while in Terminal (or Echo) mode allows change of baudrate "on-the-fly." A carriage return gives 300 baud; all    other rates (110-600) must be explicitely stated. LISTING OF COMMANDS AND OPTIONS Primary options S - send a CP/M file (must specify file/s) R - receive a CP/M file (must name file unless B sec opt used) T - tbaud, ans mode, view what is being received, return to terminal mode RART.600 B:fn.ft Send all COM files, no messages on console, same baud and mode as last transfer erminal mode (specify file if memory save wanted) E - terminal mode with echo M - return to menu X - used only when program is called to initially toggle menu off Secondary options B - multi-file mo SBQ *.COM Send two files from two different drives SB A:fn1.ft1 B:fn2.ft2 Receive files being sent by above on drive A (baudrate must be same and modes opposite) de for sending and receiving files T - return to terminal mode after transfer (memory save off) R - view what is received in file transfer S - view what is being sent in file transfer V - view what is being sent or recei RB A: Terminal mode, save communication in file, 300 baud (default rate), originate mode (in terminal must type CTRL-Y to start save, in menu must type "WRT" to close file) ved in file transfer T - Terminal mode (used with remotely controlled computer) O - originate mode (PMMI modem) A - answer mode (PMMI modem) .xxx - baud rate xxx (xxx = 110-600 PMMI modem) EXAMPLES (fn = filen TO fn.ft ASSEMBLING THE PROGRAM You must use Digital Researches' MAC to assemble the program. The files required are MODEM.ASM and MODEM.LIB. MACROS.LIB does not actually contain any macros in the trueame, ft = filetype) Send file, originate mode, 300 baud SO fn.ft Send another file, same mode and baudrate S fn.ft Receive file on B drive, 600  sense, but it does contain routines that are necessary for the program to run (MFACCESS however does use nested macros as real macros). If you have a PMMI and an IMSAI, you may assemble the file as is. If you do not   have an IMSAI with a front panel, change IMSAIBYTE to 'FALSE' (near the beginning of the program). If you wish another character instead of the colon to indicate when memory save is active, change "MVI A,':' " to  You should also note the comment in the INBUFF routine near the end of the program. Any problems or bugs, please call me: Or latest revisor: Mark M. Zeiger James K. Mills 198-01B 67th Ave. 824 Jo "MVI A,'char' " in the "TERM" routine where 'char' is the printing character you would like at the beginning of each line when memory save is active. If you do not have a PMMI, change the byte to 'FALSE' and prdan Place Flushing, N.Y. 11365 Rockford, IL 61108 (212) 454-6985 (815) 398-0579 ems or bugs, please call me: Or latest revisor: Mark M. Zeiger James K. Mills 198-01B 67th Ave. 824 Jout your modem status and data ports in the appropriate equates. The labels 'MODRCVR' and 'MODSNDR' should be the same as MODRCVB and MODSNDB (the bits tested) if your UART uses positive logic (JZ) aånd should be zero if your UART uses negative logic. If you have a Z-80 (or maybe a fast 8085), change the 'FASTCLK' byte to 'TRUE'. If any port or modem initialization must be done, put the initialization routine iån the area labeled INITMOD (replacing the PMMI initialization routine). See MODEM.SET for more details. If you have a D.C. Hayes Modem, you may incorporate the routines from MODEM.ASM V2.0 (as of 8/6/79). å  à óÓ2*ÓûÉís‹!@í°ÍÍ .ÍÍ FÍ>Í[ͤͩÍ>͸ÍÍ ÒÍäÍöÍÍ ÍÍÖ1æ2…>Í%ÍÍ SÍzÍ ÍÅÍêÍÍ4ÍYÍÍ Í ÍÍÖ1Ë'Ë'G:…€ö@2…>Í~ÍÍæ_þYÊ>Í@:…Íå@í{‹É Í Í ÍÉ2€Í :€=2€þÂÉ Osborne-1 Users Group $ Washington DC Area$ Serial Port Configuration$and Intelligent Terminal Program Version 1.0$ by $ Jack Bicer$ Baud Rate Selection Menu$ 1. 19,200 Baud$ 2. 1,200 Baud$ 3. 3å00 Baud$*** ENTER YOUR SELECTION ***$ Word Length, Parity, Stop Bit Selection Menu$ 1. 7 bits + Even Parity + 2 Stop Bits$ 2. 7 " + Odd " + 2 " " $ 3. 7 " + Even " + 1 " "$ 4. 7 " + Odd " + 1 " "$ 5. 8 " + No " å + 2 " "$ 6. 8 " + No " + 1 " "$ 7. 8 " + Even " + 1 " "$ 8. 8 " + Odd " + 1 " "$*** DO YOU WISH TO MAKE ANY CHANGES ? ***$*** TERMINAL MODE ? ***$You are in the Intelligent Terminal Mode$ ^L Load !9"ü 1ü ÍMODEM ver 2.16 $Ñ Í!#@ÍK Í :]þHÊbþ Êþ þXÊŒÍ& Íå Í Í@Í@:¥ þCÊþEÊþTÊÑþDÊÎ þSÊüþRÊüÃþ Íê In terminal mode, Ctl-E to start SEND ÃÑÍê In terminal mode, Ctl-E to start RECEIVE Íb ÊçÍm þÊüþÊÎ Í @Í@æþÂÑÍ@æÍU ÃÑ:± <Memory Switch$ For a later SAVE command$ < Up to 39K of Data >$ ^C Return to CP/M$*** DO YOU WISH LOCAL ECHO ? ***$Í$ For a later SAVE command$ < Up to 39K of Data >$ ^C Return to CP/M$*** DO YOU WISH LOCAL ECHO ?2± ™ :¥ þSÊJþRÊÙ Í@æþÊ<Íb ÊÍm þÊ™ þÊÎ Í @ÍU ÃÍ@Í @æÍU ÃÍZÍŒÍdPÍ© Í Ú~ÍÆ¯2¹ Í­Íá:° ·ÌÄûÍ ÚeÃX>Íx Í Ú~Ãb >?2h>ÿ2³ \Í<ÂÛÍ9 ++File not found++$\Í<ÂÛ:³ o&T:´ _)))))))"´ É=懇‡‡‡!€…ÆoF+++:³ ·úù¾Ò¸x2´ ~2³   øÍZÍØÍ!Íê File open, ready to receive :° ·>Â9>CÍx ͶÚN͉ ÍÆͧÃ<Í¡ ͧÍïÃb !]~þ ƒÍ9 ++No file name specified++ $ ~þ?Ê‘#Â…ÉÍ9 ++Can't use wild card options++ $¯2¹ ¯2º :« ·ÊõÍê Awaiting #:¸ þÿÂå:· <Íy Ãë:· Íy :¸ <Íy ÍN :² ·Ê@¯2² ase: Ím õÍU ÍN ñæ_þY™ \ÍÉ\Í<ÀÍ9 ++ERROR - Can't make file ++Directory must be full $¯2h2|\Í<ŠÍ9 Can't open file$Íê File open - Size: *´ ÍÀÍê (ÍâÍê H) sectors ÉÅÕåöÿÿÿ ÚÉ ë|µÄÀ{Æ0ÍA áÑÁÉåõ|Íy }Íy ñáÉ\Í<ÀÍ9 Can:° ·Â@Í ÒHÍê ++Switching to CHECKSUM MODE++ >C2° >Íx ö Í ÚâÍ ÚþÊ�·Êõþ7ÈG:¯ ·Êj:« ·ÊƒxÍy Íê H rcvd, not SOH Í Òƒ:¹ <2¹ þ Ú«:¯ ·Ê¥:« ·Ê³Í� ³>Íx úÍïÍ9 ++Unable to receive block ++ABORTING++$:¯ ·Êð:« ·ÊƒÍê ++Timeout++ 't close file$:¿ =2¿ ú% *½ €ÍK "½ É:¼ þ7Èþ ÅÕÍ\ÍÑÁ·Ê` =Êo Í9 ++File read error$!€ë yþÊu Ã1 >2¼ y2¿ !þ "½ €Íà *½ ë!€ÍK ë"½ :¿ <2¿ þÀ:¿ ·ÈOþ åÕÅÍ\ÍÁÑá·ÂÝ !€ë ª ¯2¿ !þ "½ €ÍÉÍÔ Íê ++Error writing file ÖÍ:¹ Íy ÍN Ãõ:º §Êñ7Éñ·É:¯ ·Ê(:« ·Êƒ:º æþÂKÍê ++Framing error++ Í“:º æ þ ÂnÍê ++Overrun error++ Í“:º æ@þ@Â�Íê ++Parity error++ Í“Ã:¹ Íy ÍN ÉÍ ÚâÍ ÚWÍ ÚâÍ Ú/ºÊë:¯ ·ÊÍ:« ·ÊƒÍê ++Bad sector # in HDR Ãz2¶ >2¦ ÍV !€Í@Í@Õx‡GPÃÍ@æþÊ$   Â Ñ7ÉÍ@WæÊ5 :º ö2º zæ ÊC :º ö 2º zæ@ÊQ :º ö@2º Í@ÑõÍ_ �O:¬ ·Êp :¯ ·Âu :¦ ·Êu ñõÍ ñ·ÉÕW:­ ·Ê� :¯ ·Â“ :¦ ·Ê“ zÍ zÍ_ �OÍ@æþ™ zÑÍ @É:¯ ·Ê· :« ·Êà Íê Awaiting initial NAK or CRC request Í þÈþCÊô Ê–Ãà Íê CRC reque ÚâÍ Úw,Âü:° ·Ê>Q¯2¦ Í ÚâÍ ÚºÂ|:¶ G:¸ ¸Ê¡<¸Â–ÉÍ ÚâÍ ÚÂ@͘ ·Ê-:¯ ·Êg:« ·ÊƒÍê ++CRC error++ Ã:¯ ·ÊŠ:« ·ÊƒÍê ++CKSUM error++ Ãͧö>Íx É:« ·ÊÎÍê Send # :· Íy :¸ Íy ÍN >Íx :¸ Íx :¸ /Íx É>2¦ ÍV !€~Íx ,Âî¯2¦ ÉyÍx Ést received ¯2° É*"f "q "[ É]2¥ þ ÊJ !§  ¾ÂB 6Ã- #Â9 Ãþ :° ·ÂY :¥ þRÂþ :¯ ·À2« É:¯ ·Êp :« ·Ê‹ Íê  Transfer complete :® ·ÊÑ:© ·Ê:¨ ·Â@ Íê Press RETURN to disconnect:Ím õÍN ñþ ™ Íê ++Disconnected++Ã@ ͇ zÍx {Íx ¯É Íþ ÚxþÈG:« ·Ê9xÍy Íê H rcvd, not ACK :¹ <2¹ þ Ø:¯ ·ÊQ:« ·ÊVÍ� 7ÈÍ9 Can't send sector - ABORTING $:« ·Ê9Íê Timeout on ACK Ã91ü Í Ò™>Íx Íê MODEM program cancelled Ù :¸ <2¸ þÀ:· <2· É\Í<ÈÍê ++File exists, type Y to erÉ!l\ÍM ¯2|2hÉþ ÊA þ ÊA þ ÊA þ Ú2 þÚA õ>(ÍA ñÍy >)ÃA ÅÕå_ÍáÑÁÉ> ÍU > õÅÕåOÍáÑÁñÉÅÕåÍáÑÁ·ÉÅÕåÍáÑÁæÉõÍ‚ ñæþ Ú‹ ÆÆ0ÃU ¯2¹ Íê Multiple errors encountered. Type Q to quit, R to retry: Ím õÍU ÍN ñæ_þRÈþQÂ� ·Éã~·Ê2 þÊ þÊ! ÍA #Ãë   Íê Press RETURN to continue: Ím þÊ@ Íê Ãý ãÉ ÃÑÍ4 Í™ Íê *ü ùÉ€~#ÂM Éå!"£ áÉõÅåO*£ yO}o|gÒ| |îg}î!oÂh "£ áÁñÉõ¯Í_ Í_ å*£ T]áñÉå*£ |µáÈ>ÿÉADEOQRSTVCÿÿ†þ quit, R to retry: Ím õÍU ÍN ñæ_þRÈþQÂ� ·Éã~·Ê2 þÊ þÊ! ÍA #õÍ at 450 baud and disconnect: MODEM SD.450 fn.ft Act as a terminal, originate mode, at 110 baud: MODEM TO.110 (Use ctl-D to disconnect) Receive file, answer mode, view it, 600 baud: MODEM RAV.600 fn.ft Receive file, use cyclic redundancy check, 6N Íê ++'ñÍU Íê ' is an invalid MODEM command option++ Press RETURN for help, Ctl-C to exit: Íê (T)erminal and (E)cho mode commands: Ctl-E = Exit to CP/M Ctl-D = Disconnect Phone Format for command is: MODEM # Filename Where # is a 1 00 baud: MODEM RC.600 fn,ft Ã@ óÓG:*ÓûÉóÓG2*ÓxûÉóÓ:*ÓûÉóÓ2*ÓûÉʲ#^#Vå:D!·Ê«*ö!{½Â«z¼Â«áá"!!å~62 !òá#wë6ÿá Â}1¶!ýáÝáÙáÑÁÙñ1ì!ÑÁñáù*ö!å*ô!ûÉõÅ!V!~4·Êö#~#F#»ÂöxºÂö~#s#r#w>ÿcharacter primary option, which may be followed by sub-options, and by ".xxx" to set baud rate to xxx Primary Options: S to send a file R to receive a file T to act as a terminal E to act as a computer (echo data) D to disconnect the phåone H to print this help file Secondary options: A answer mode O originate mode D disconnect after execution T go to terminal mode after file xfer E go to echo mode after file xfer Q quiet mode - no status msgs R show chars received Så show chars sent V view file sent/received (no status) C use cyclic redundancy check for file xfers For examples, type: MODEM X Ã@ Íê Send file, originate mode, 300 baud: MODEM SO fn.ft Send another file: MODEM S fn/ft Then send a third fileå  å:° ·Â@Í ÒHÍê ++Switching to CHECKSUM MODE++ >C2° >Íx ö Í ÚâÍ ÚþÊ�·Êõþ7ÈG:¯ ·Êj:« ·ÊƒxÍy Íê H rcvd, not SOH Í Òƒ:¹ <2¹ þ Ú«:¯ ·Ê¥:« ·Ê³Í� ³>Íx úÍïÍ9 ++Unable to receive block ++ABORTING++$:¯ ·Êð:« ·ÊƒÍê ++Timeout++ å:¹ Íy ÍN Ãõ:º §Êñ7Éñ·É:¯ ·Ê(:« ·Êƒ:º æþÂKÍê ++Framing error++ Í“:º æ þ ÂnÍê ++Overrun error++ Í“:º æ@þ@Â�Íê ++Parity error++ Í“Ã:¹ Íy ÍN ÉÍ ÚâÍ ÚWÍ ÚâÍ Ú/ºÊë:¯ ·ÊÍ:« ·ÊƒÍê ++Bad sector # in HDR Ãz2¶ >2¦ ÍV !€Í!9"ü 1ü ÍMODEM ver 2.16 $Ñ Í!#@ÍK Í :]þHÊbþ Êþ þXÊŒÍ& Í Í@Í@:¥ þCÊþEÊþTÊÑþDÊÎ þSÊüþRÊüÃþ Íê In terminal mode, Ctl-E to start SEND ÃÑÍê In terminal mode, Ctl-E to start RECEIVE Íb ÊçÍm þÊüþÊÎ Í @Í@æþÂÑÍ@æÍU ÃÑ:± < ÚâÍ Úw,Âü:° ·Ê>Q¯2¦ Í ÚâÍ ÚºÂ|:¶ G:¸ ¸Ê¡<¸Â–ÉÍ ÚâÍ ÚÂ@͘ ·Ê-:¯ ·Êg:« ·ÊƒÍê ++CRC error++ Ã:¯ ·ÊŠ:« ·ÊƒÍê ++CKSUM error++ Ãͧö>Íx É:« ·ÊÎÍê Send # :· Íy :¸ Íy ÍN >Íx :¸ Íx :¸ /Íx É>2¦ ÍV !€~Íx ,Âî¯2¦ ÉyÍx É2± ™ :¥ þSÊJþRÊÙ Í@æþÊ<Íb ÊÍm þÊ™ þÊÎ Í @ÍU ÃÍ@Í @æÍU ÃÍZÍŒÍdPÍ© Í Ú~ÍÆ¯2¹ Í­Íá:° ·ÌÄûÍ ÚeÃX>Íx Í Ú~Ãb >?2h>ÿ2³ \Í<ÂÛÍ9 ++File not found++$\Í<ÂÛ:³ o&T:´ _)))))))"´ É=懇‡‡‡!€…ÆoF+++:³ ·úù¾Ò¸x2´ ~2³͇ zÍx {Íx ¯É Íþ ÚxþÈG:« ·Ê9xÍy Íê H rcvd, not ACK :¹ <2¹ þ Ø:¯ ·ÊQ:« ·ÊVÍ� 7ÈÍ9 Can't send sector - ABORTING $:« ·Ê9Íê Timeout on ACK Ã91ü Í Ò™>Íx Íê MODEM program cancelled Ù :¸ <2¸ þÀ:· <2· É\Í<ÈÍê ++File exists, type Y to er øÍZÍØÍ!Íê File open, ready to receive :° ·>Â9>CÍx ͶÚN͉ ÍÆͧÃ<Í¡ ͧÍïÃb !]~þ ƒÍ9 ++No file name specified++ $ ~þ?Ê‘#Â…ÉÍ9 ++Can't use wild card options++ $¯2¹ ¯2º :« ·ÊõÍê Awaiting #:¸ þÿÂå:· <Íy Ãë:· Íy :¸ <Íy ÍN :² ·Ê@¯2² ase: Ím õÍU ÍN ñæ_þY™ \ÍÉ\Í<ÀÍ9 ++ERROR - Can't make file ++Directory must be full $¯2h2|\Í<ŠÍ9 Can't open file$Íê File open - Size: *´ ÍÀÍê (ÍâÍê H) sectors ÉÅÕåöÿÿÿ ÚÉ ë|µÄÀ{Æ0ÍA áÑÁÉåõ|Íy }Íy ñáÉ\Í<ÀÍ9 Can  't close file$:¿ =2¿ ú% *½ €ÍK "½ É:¼ þ7Èþ ÅÕÍ\ÍÑÁ·Ê` =Êo Í9 ++File read error$!€ë yþÊu Ã1 >2¼ y2¿ !þ "½ €Íà *½ ë!€ÍK ë"½ :¿ <2¿ þÀ:¿ ·ÈOþ åÕÅÍ\ÍÁÑá·ÂÝ !€ë ª ¯2¿ !þ "½ €ÍÉÍÔ Íê ++Error writing file ÖÍN Íê ++'ñÍU Íê ' is an invalid MODEM command option++ Press RETURN for help, Ctl-C to exit: Íê (T)erminal and (E)cho mode commands: Ctl-E = Exit to CP/M Ctl-D = Disconnect Phone Format for command is: MODEM # Filename Where # is a 1 @Í@Õx‡GPÃÍ@æþÊ$   Â Ñ7ÉÍ@WæÊ5 :º ö2º zæ ÊC :º ö 2º zæ@ÊQ :º ö@2º Í@ÑõÍ_ �O:¬ ·Êp :¯ ·Âu :¦ ·Êu ñõÍ ñ·ÉÕW:­ ·Ê� :¯ ·Â“ :¦ ·Ê“ zÍ zÍ_ �OÍ@æþ™ zÑÍ @É:¯ ·Ê· :« ·Êà Íê Awaiting initial NAK or CRC request Í þÈþCÊô Ê–Ãà Íê CRC requecharacter primary option, which may be followed by sub-options, and by ".xxx" to set baud rate to xxx Primary Options: S to send a file R to receive a file T to act as a terminal E to act as a computer (echo data) D to disconnect the phst received ¯2° É*"f "q "[ É]2¥ þ ÊJ !§  ¾ÂB 6Ã- #Â9 Ãþ :° ·ÂY :¥ þRÂþ :¯ ·À2« É:¯ ·Êp :« ·Ê‹ Íê  Transfer complete :® ·ÊÑ:© ·Ê:¨ ·Â@ Íê Press RETURN to disconnect:Ím õÍN ñþ ™ Íê ++Disconnected++Ã@ >Í!@>VÍ!@>Í!@one H to print this help file Secondary options: A answer mode O originate mode D disconnect after execution T go to terminal mode after file xfer E go to echo mode after file xfer Q quiet mode - no status msgs R show chars received S>VÍ!@É!l\ÍM ¯2|2hÉþ ÊA þ ÊA þ ÊA þ Ú2 þÚA õ>(ÍA ñÍy >)ÃA ÅÕå_ÍáÑÁÉ> ÍU > õÅÕåOÍáÑÁñÉÅÕåÍáÑÁ·ÉÅÕåÍáÑÁæÉõÍ‚ ñæþ Ú‹ ÆÆ0ÃU ¯2¹ Íê Multiple errors encountered. Type Q to quit, R to retry: Ím õÍU ÍN ñæ_þRÈþQÂ� ·Éã~·Ê2 þÊ þÊ! ÍA #Ãë show chars sent V view file sent/received (no status) C use cyclic redundancy check for file xfers For examples, type: MODEM X Ã@ Íê Send file, originate mode, 300 baud: MODEM SO fn.ft Send another file: MODEM S fn/ft Then send a third file Íê Press RETURN to continue: Ím þÊ@ Íê Ãý ãÉ ÃÑÍ4 Í™ Íê *ü ùÉ€~#ÂM Éå!"£ áÉõÅåO*£ yO}o|gÒ| |îg}î!oÂh "£ áÁñÉõ¯Í_ Í_ å*£ T]áñÉå*£ |µáÈ>ÿÉADEOQRSTVCÿÿ†þ quit, R to retry: Ím õÍU ÍN ñæ_þRÈþQÂ� ·Éã~·Ê2 þÊ þÊ! ÍA #õÍ at 450 baud and disconnect: MODEM SD.450 fn.ft Act as a terminal, originate mode, at 110 baud: MODEM TO.110 (Use ctl-D to disconnect) Receive file, answer mode, view it, 600 baud: MODEM RAV.600 fn.ft Receive file, use cyclic redundancy check, 6  00 baud: MODEM RC.600 fn,ft Ã@ óÓG:*ÓûÉóÓG2*ÓxûÉóÓ:*ÓûÉóÓ2*ÓûÉåå.OP DOCUMENTATION ON MODEM 714, A CP/M USERS TERMINAL AND FILE TRANSFER PROGRAM RE-WRITTEN FOR OSBORNE OWNERS BY D. SLAUGHTER Commanä  Formatº  (Whaô yoõ typå oî á CP/Í  commanä � linå afteò aî A prompt or a B prompt to invokeå MODEM 7) --type "MODEM (option)" or --type "MODEM (option).(baudrate)" or --type "MODEM (option) (filename).(ext)" or --type "MODEM (option).(baudrate) (filename).(ext)" Yoõ musô givå á singlå "primary¢ oò maiî option¬ anä �å yoõ  maù theî givå secondarù optionó aó yoõ choose®  Thå � primary options are as follows: PRIMARY OPTIONS: S: To send a file; R: To recieve a file; Tº   Tï  acô  aó  á  fulì  dupleø  terminaì  whicè � å suppresseó  youò typinç froí appearinç oî  youò � screeî  unlesó  iô ió echoeä bacë froí  á  timå � sharing computer; Eº  Tï acô aó á halæ dupleø terminal¬  wherå  wheî � yoõ  typå  oî youò computeò iô appearó oî  yo!  uò � screeî  withouô  echoeó froí  anotheò  computeò � beinç necessary®  Thió ió useä foò talkinç  tï � otheò  computeró beinç manneä bù personó ratheò than by sophisticated time sharing programs; D: Discoif your modem can support them: O: Go to originate mode; A: Go to answer mode; (NOTEº  Ï  anä Á arå noô defaulô values»  iô  yoõ  don'ô � specifù  them¬  yoõ won'ô geô theiò  functions»  however¬ � oncå specified¬  iæ therå ió nï breaë iî thå cnnects the phone if the modem allows it H: Help (gives you help on commands) X: Prints examples of using MODEM SUBOPTIONS Qº Á 'Q§ maù bå useä tï modifù eitheò aî 'S§ oò aî � 'R§  foò "quiet¢ ommanä linå � they remain in effect until a disconnect) Dº  Disconnecô (iæ iô doesn'ô work¬ you'rå stilì oî thå � line) R: Show characters as received S: Show characters as sent V: View the file (suppresses non-error status messages) T: transferó whicè dï  noô  causå � consolå  inpuô anä output®  Thió ió usefuì foò � slo÷ terminaló likå ttys¬  anä ió necessarù  oî � remotå CP/Í systemó iî whicè thå remotå consolå �  Go to terminal mode (full duplex) after file transfer E: Go to echo mode (half duplex) after file transfer D: Disconnect after program execution EXAMPLES: Objectivå 1º  Tï senä á tesô filå iî originatå modå � quietly ió  thå  samå  aó thå "line¢  foò  purposeó  oæ � sendinç  files¬  tï suppresó thå  consolå  mes- � sages¬ e.g® MODEÍ SÑ or MODEM RÑ. -1- ŠNOTEº  Somå  remotå CBBÓ oò C, and to disconnect after your transfer. --type "MODEM SOQD (filename.ext)" Objectivå 2º Tï receivå á tesô filå iî answeò modå � at 450 baud, and not disconnect after reception: --type "MODEM RA.450 (filename.ext)" P/Í systmeó makå uså oæ thå � "FUNNY¢  conditionaì  equatå patcè ouô foò  anù  possiblå � outputó  tï modemó viá CBIOSs®  Foò theså systemó thå  Ñ � option is not necessary. S¬  R¬ T¬ C¬ (oò Q© maù bå followeä bù thå followinç � further modifiers Objectivå  3º  Tï senä á filå wheî oî linå anä  noô � disconnected automatically: --type "MODEM S filename.ext" NOTEº  Thå  prograí defaultó tï 30° bauä iæ anotheò bauä � ratå isn'ô specified®  However¬  checë tï makå surå youò � systeí track"  ó iî youò setuð prograí arå consistenô oî thå � bauä  rate¬  oò  yoõ  maù havå  troublå  (especiallù  yoõ � Osborne users! DBS) Afteò  you'rå  finished¬  uså  thå  Ä  sub-optioî  (MODEÍ � D) to disconnect the phone. åååÍCK AS OF 10/29/78 $Ñ Í!9"–1–:m2m]þ Ê�Í<Â_ÍT++FILE NOT FOUND$Ñ Í*–ùÉÅÍb·Âè!€¯†,ÂmõÍ.ñ*k…o|Îg"kÁÂa:mþ Ê_> ÍU> ÍUÃ_·Â»ÍT++MUST CK A: OR CK B:$=‡‡‡‡G*0"Ñ!€ÍxæþÂÐÍT++DONE++$=ÊÍT *++DISK READ ERåROR$> ÍU> ÍU:lÍ8:kÍ8ÍT= FILE CKSUM $ñÉõ:mþ Ê,ñõÍJñÍJ> ÍUÉæþ ÚSÆÆ0ÅÕå_ÍáÑÁÉ\ÍÉ=ÂëN#FyÉÍ}ÂÉæ8Éæ0Éë*zë{¾Â¯#z¾È+++ Â¥ ÉÕz¾ÂÊ#½ÑÉ#ÂÊøÿÑ · ÉÅÍ9Ê!`Í Â yÁÉÅÍ9Ê!rÍ·ååå#  Documentation of various original programs written by Ward Christensen ----CK-FIX.COM---- OVERVIEW: Program to print a checksum of a file - used to tell if two files are the same. N-O-T-E the previous version distributed with the CP/M UG had a åBUG whereby it didn't really work. Something like an ADD M instead of an ADD L (??). USAGE: Suggest renaming this back to just CK.COM after you have properly disposed of any earlier versions. CK fn.ft to produce a total file cksum. CK fnå.ft d to see a detailed (sector-by- sector) cksum and the total. to just CK.COM after you have properly disposed of any earlier versions. CK fn.ft to produce a total file cksum. CK fnååó1ÿÍ®ÄÍ&Í6Â`i"*Í-Í­Í[Í¢ÍÃÍ®c>2C!‰"@*@N#F#"@!C5È> ÄÌ> ÌOÊ=~¹Äc> Âsy/w> Âsq> Ê{++#{²Â^ÍÊ=Éÿÿÿ ÿ   ÿÿÿ ÿÿ Í®y!"@ÍL>!3åáN#F#å=õÍ> Âñ:@¥Âë:A¤Âë> ÂñÃÿ> Âÿ~¹Äc> Âÿy/w#å{²ÂÎÍñ·ÂÃáÍ®�*@Í‘;*@)"@ë*!}«Â¸¬ªÂ¸Éÿ ÿ ÿ ÿ ÿÿ ÿ ÿÿ ÿ Í®œÍL!C6@*%åÁÅÍ.~,{²ÂsÍ Á>7�`oåÍ. ¾ÄX,{²Â�Í ÂnÁÉÍ®±ÍL**|þ¹}þÐ!C6@*%åÁÅÍ=~,~,,y«ÂǨªÂÇÍ Á>7�`oåÍ= ¾ÄX,¾ÄX,,y«Âꨪ$  ÂêÍ ÂÂáÉÍîÈ!C5É*#à *+ë**ëÉ*ë*#ÉÍåÅáÁÉ#}«À¬ªÉÍ&Í1y«æÈÉÍq#{²ÂOÉåÕÅVÍ1JÃfåÕÅõ©õåÍ®Ká͑ͮVñÍ–;͉ÍÍËÉåÍ®ÄáÉ|Í–}OÍŸyæÆ0þ:ÚªÆ_ÃíÍ·å> ÃÑáã^#V#ÉÍ®ÁÉ User Maintenance Problem Identifåication & Reliability Enhancement COPYRIGHT (C) 1979, 1980 by Mel Cruts $ADDRESS: $ BAD BITS: $ROUTINE 1-BOOMERANG $ROUTINE 2-HALF SLOW $ADDRESS BIT $ROUTINE 4-SCRAMBLE $ROUTINE 8-SPIRAL $$ãÕÅõéáñÁÑãÉãåÕÅOÍÁÑáãÉ:%<2%> ÍÑæÉõ>ÍÑñÉÍæþÌþ 1. MDM7OS.COM THIS VERSION IS SETUP TO USE THE RS232 PORT ON THE OSBORN O-1 COMPUTER. IT WILL ALSO SETUP THE BAUDRATE AT EITHER 300 OR 1200 BAUD WITH THE USUAL BAUDRATE SYNTAX (IE THE COMMAND: MDM7OS T.1200 WILL SELECT T ÊÉÍÞÊ>ÍÑþÀ*üùÃÍÞÄõÉ ' 2-HALF SLOW $ADDRESS BIT $ROUTINE 4-SCRAMBLE $ROUTINE 8-SPIRAL $$ãÕÅõéáñÁÑãÉãåÕÅOÍÁÑáãÉ:%<2%> ÍÑæÉõ>ÍÑñÉÍæþÌþERMINAL MODE AT 1200 BAUD). NOTE: SOME OF THE COMPUTERS SHIPPED WERE SHIPPED WITHOUT A JUMPER INSTALLED ON THE JUMPER PINS (ON THE CPU BOARD NEAR THE RS232 PLUG). WITHOUT THESE PINS BEING JUMPERED, THE BAUDRATES WILL BE 600 AND 2å400 BAUD. 2. MDMOS.ASM THIS IS THE I/O OVERLAY FOR THE MODEM PROGRAM THAT ALLOWS IT TO RESPOND TO THE OSBORN I/O PORTS. THIS IS CONFIGURED INTO THE PROGRAM BY OVERLAYING ITS .HEX FILE ONTO THE PROGRAM WITH DDT. NOTE: THE BAåUDRATE SETTING ROUTINE IS QUITE PRIMITIVE (BUT ADEQUATE). IT ONLY LOOKS AT THE FIRST CHARACTER OF THE BAUDRATE STRING AND LOOKS FOR A 1 ( FOR 1200 BAUD) OR 3 ( FOR 300 BAUD). 3. MODEM7.DOC THIS IS THE ORIGINAL DOCUMENTATION FIL%  E THE CAME WITH THE ORIGINAL VERSION OF THE MODEM7 PROGRAM ( ON CP/M USER'S GROUP DISC # 47). 4. MODEM.DOC THIS IS THE ORIGINAL DOCUMEMTATION FILE FOR AN EARLYIER VERSION OF THE MODEM PROGRAM (MODEM4) WHICH EXPLAINS SOME OF TH Print file to List Device P Send file to Punch Device C Copy file to another Disk R Rename file D Delete file X Exit to CP/M B Backup oE COMMAND SYNTAX AND USAGE SOMEWHAT BETTER THAN MODEM7.DOC. 5. CRCK4.COM THIS IS A USEFUL PROGRAM THAT CAN CHECKSUM ONE OR MORE PROGRAMS ON A DISC. IT IS OCCASIONALLY USEFUL TO VERIFY THAT A FILE SENT OVER THE PHONE WAS CORRECTLY ne file in List S Restart on another Drive sp or cr Forward to next file in List :]þ Ÿ:eþ Ÿ!”] Íà ß???????????€Í¯2h2|\ÍþÿÂÔÍÎ ++ Not Found ++À! " 懇‡‡‡Æ€o&:\·Âñ:CRCK4 NAME WHERE NAME IS THE NAME OF A FILE. THIS MAY I\ÍþÿÂÚ* " " ( Ͷ Êm! "  " * ë* åÕ Í Ñá Ü *  " ë* Ͷ Â,*  " " ë* Ͷ Â,! " * œÍà ŸÍà ¨Íà " :œÆ@2œÍÎ X: XXXXXXXX.XXX : ÍÍã þ ÊIþ ÊIþBÊúþXÊ€þRʃþDÊÜþVÊsþLÊxþPÊ}þCÊþSÊ� ÍÎ ? Ù* ( NCLUDE A DRIVE DESIGNATOR SUCH AS B: (FOR DRIVE B) AS WELL AS THE WILD CARD CHARACTERS: '*' AND '?'.  CORRECT TRANSMISSION). THE COMMAND SYNTAX IS: A>CRCK4 NAME WHERE NAME IS THE NAME OF A FILE. THIS MAY IͶ Â1ÍÎ Beginning of List *  " ÍÎ < * ͼ " ÃsÍÎ * ë* Ͷ ÂsÍÎ End of List ! " ÃsÃ*  ͼ Ë  Íà ÍÎ New Name ?  ì Í!í F¯°ÊI#~Íã w¶!Û 6#å 6 #ÂÉáë!í N#ëþ Âæ ÊðÃØåi&6 áÍë Úðþ Ê@þ.Êó1¨ ÍÎ MICRO RESOURCES DIRECTORY "WASH UTILITY" Ver 1.0 FROM THE DIGITAL DELI COMPUTER STORE Command Function ------- ---------------------------- V View file at Console Lw#ÂðÍë Ú@þ Ê@þ.ÊÃ!ä Íë Ú4þ Ê4þ.Ê4w#Â!ç 6#Â9Ì !Ü  æ€G>¦°w# ÂH:Ë 2ª  !Ü « Íà !¶ 6#Âmª ÍþÿʦÍÎ ++ Name Already Exists ++ Ù*  ͼ ë!Ü  Íà Ë ÍþÿÂIÍÎ ++ Not Found ++ÃI*  ͼ Ë  Íà Ë ÍþÿÂÍÎ ++&   Not Found ++ÃIÍÎ Deleted* å ͼ " ëáëå* Ͷ áëÊB Íà Ã-ë"  Ͷ ÂI* Ͷ ÂIÍÎ List EmptyÀ>Ã>Ã>2 *  ͼ ª  Íà €Í!¶ 6# ª ÍþÿÂ×ÍÎ ++ File Cannot Be Opened ++ÃI¯2Ê ª Í·ÊêÃI!€€~þÊI_Åå: OÍå ÍáÁ·ÂI#ÂïÃÛ*  ͼ ª  Íà !¶ 6#Â(¯2Ê !!ª Ë Íà ª ÍþÿÂwÍÎ ++ Source File Cannot Be Opened ++ÃIÍÎ Destination Drive ? ÍÍã ÖAþÒð<2Ë G:ª ¸ÂßÍÎ ++ Cannot Select Same Disk as Source ++ ÙË ÍþÿÊ ÍÎ Replace ? ÍåÍã þYÂIË ÍË ÍþÿÂH ÍÎ ++ Destination Directory Full ++ÃI*+ë* Õ€ÑͶ ÒS x±Â™ ÍÎ ++ No Memory Available for Copy Buffer ++ÃIi`" ¯2 !" * " * ëͪ Í·Âá * €" * #" ë* Ͷ ® Ãæ >ÿ2 * " * |µÊF +" * åëÍåá€" Ë ÍþÿÂì ÍÎ ++ Disk or Directory Full on Write ++ÃI: ·Ê¢ Ë ÍþÿÂIÍÎ ++ Destination Close Error ++ÃIÍÎ New Drive ? ÍÍã þ ÊIÖAþÒð<2\> 2]2eÃz¼À{½É}“o|šgÉ~æ#Âà Éã~æ_#Êá åÍáÃÏ ãÉæþ`Øæ_Éþ Øþ_Ò þ=Ê þ:Ê þå;Ê þ<Ê þ>Ê ·É7ɾÀÈ#à Nwy# ÉDirectory Full on Write ++ÃI: ·Ê¢ Ë ÍþÿÂIÍÎ ++ Destination Close Error ++ÃIÍÎ New Drive ? ÍÍã þ ÊIÖAþÒð<2\> 2]2eÃz¼À{½É}“o|šgÉ~æ#Âà Éã~æ_#Êá åÍáÃÏ ãÉæþ`Øæ_Éå'  UMPIRÅ  ió  á comprehensivå memorù tesô prograí implementinç  twï � tesô  algorithmó developeä aô thå Universitù  oæ  Illinois®  Thå � algorithmó  werå  publisheä  iî Junå 197¸ 'IEEÅ  TRANSACTIONÓ  OÎ � COMPUTERS'®  Thå  Universitù oæ Illinoió tesô algoråithmó arå thå � 'BOOMERANG§ anä thå 'HALÆ SLOW§ tesô routines® Alsï includeä arå � two test routines I devised. Thå  tesô wilì automaticallù sizå thå TPÁ anä tesô alì oæ  memorù � uð thå starô oæ BDOS®  Therå arå onlù threå controì codes® Á ^Ë � wilìå causå thå tesô tï restart¬ á ^à wilì causå á jumð tï addresó � zerï (i.e® warí boot)¬ anä á ^Ó wilì causå thå prograí tï stoð oò � start® Thå ^Ó functioî ió particularllù usefuì iî thå 'SCRAMBLE§ � anä 'SPIRAL§ routinå tï stoð tï tesô causinç refresè veråificatioî � oî dynamiã memories®  Anotheò ^Ó wilì causå thå tesô tï starô uð � again® Botè thå 'SCRAMBLE§ anä 'SPIRAL§ tesô routineó uså randoí � datá  sï  thió  ió  á faiò tesô oæ á  memorù  arraù  foò  patterî � sensitivity. Send any comments or sugågestions to: Mel Cruts DIGITAL DELI COMPUTER STORE 80 WEST EL CAMINO REAL MOUNTAIN VIEW, CA. 94040utineó uså randoí � datá  sï  thió  ió  á faiò tesô oæ á  memorù  arraù  foò  patterî � sensitivity. Send any comments or sugå