home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / MEX / MXO-OA1X.ASM < prev    next >
Assembly Source File  |  2000-06-30  |  16KB  |  507 lines

  1. ; MXO-OA11.ASM -- Otrona Attache overlay file for MEX10 -- 8/12/84
  2. ; MXO-OA10.ASM -- Otrona Attache overlay file for MEX10 -- 6/15/84
  3. ; M7OA-2.ASM -- Otrona Attache overlay file for CP/M 2.2.5
  4. ; M7OA-1.ASM -- Otrona Attache overlay file for MDM7xx - 11/11/83
  5. ;
  6. ; You will want to look this file over carefully. There are a number of
  7. ; options that you can use to configure the program to suit your taste.
  8. ; This file adapts the Otrona Attache computer to MEX10. 
  9. ;
  10. ;
  11. ; Edit this file for your preferences then follow the "TO USE:" example
  12. ; shown below.
  13. ;
  14. ; Use the SET command to change baud rate if needed.  This updates the
  15. ; CMOS RAM value.  When the program is first called used, the baud rate
  16. ; is the same as currently set by the Valet function.
  17. ;
  18. ;    TO USE: First edit this file filling in answers for your own
  19. ;        equipment.  Then assemble with ASM.COM or equivalent
  20. ;        assembler.  Then use MLOAD21.COM (or later) to combine
  21. ;        this overlay with the original MEX10.COM file.  You may
  22. ;               optionally combine files for Hayes Smartmodem (MXO-SM11.
  23. ;        HEX), Version 1.0C MEX update (MEXFIX.HEX), and buffer size
  24. ;        customization (MEXPAT10.HEX) on the same MLOAD command line
  25. ;        if you desire.  See MEX10.DOC or MEX-EASY.DOC for details.
  26. ;        For example, to prepare a working COM file for use with a
  27. ;        Hayes Smartmodem and to incorporate the version 1.0C from
  28. ;        MEXNEWS.003, enter the following:
  29. ;
  30. ;        A>MLOAD21 MEX-OA10.COM=MEX10.COM,MXO-OA,MXO-SM11,MEXFIX
  31. ;
  32. ;    >>>> report any bugs to marin rcpm 415-383-0473 (Attache Users <<<<
  33. ;    >>>> Newsletter source) or fortfone rcp/m 414-563-9932 <<<<<<<<<<<< 
  34. ;
  35. ; =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =
  36. ; 08/12/84 - Modified sign-on screen/patched
  37. ;            for no-hang-up with exit           - Phil Oyer
  38. ; 06/15/84 - MEXified overlay            - Rad Collins
  39. ; 01/16/84 - Modified for new BIOS in CP/M 2.2.5
  40. ;            and added 2400,4800 BPS options    - Donald Larson
  41. ; 11/11/83 - Renamed to M7OA-1.ASM, no changes    - Irv Hoff
  42. ; 09/01/83 - Updated to work with MDM712    - Irv Hoff
  43. ; 08/27/83 - Added optional BIOS patch        - Arley Dealey
  44. ; 06/30/83 - Revised to work with Otrona    - Arley Dealey
  45. ; 06/22/83 - Revised to work with MDM710    - Irv Hoff
  46. ; 05/27/83 - Updated to work with MDM709    - Irv Hoff
  47. ; 05/15/83 - Revised to work with MDM708    - Irv Hoff
  48. ; 04/11/83 - Updated to work with MDM707    - Irv Hoff
  49. ; 04/04/83 - Updated to work with MDM706    - Irv Hoff
  50. ; 03/03/83 - Modified MDM705KP for XEROX
  51. ;         820-II computers with external
  52. ;         modems                - David Wurz    
  53. ;
  54. ; =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =
  55. ;
  56. ;
  57. YES:        EQU    0FFH
  58. NO:        EQU    0
  59. ;
  60. ;
  61. BDOS        EQU    005H
  62. BELL:        EQU    07H        ;bell
  63. CR:        EQU    0DH        ;carriage return
  64. ESC:        EQU    1BH        ;escape
  65. LF:        EQU    0AH        ;linefeed
  66. WARMSTART:    EQU    0000H
  67. ;
  68. ; MEX service processor stuff
  69. ;
  70. INMDM    EQU    255        ;get char from port to A, CY=no more in 100 ms
  71. TIMER    EQU    254        ;delay 100ms * reg B
  72. TMDINP    EQU    253        ;B=# secs to wait for char, cy=no char
  73. CHEKCC    EQU    252        ;check for ^C from KBD, Z=present
  74. SNDRDY    EQU    251        ;test for modem-send ready
  75. RCVRDY    EQU    250        ;test for modem-receive ready
  76. SNDCHR    EQU    249        ;send a character to the modem (after sndrdy)
  77. RCVCHR    EQU    248        ;recv a char from modem (after rcvrdy)
  78. LOOKUP    EQU    247        ;table search: see CMDTBL comments for info
  79. PARSFN    EQU    246        ;parse filename from input stream
  80. BDPARS    EQU    245        ;parse baud-rate from input stream
  81. SBLANK    EQU    244        ;scan input stream to next non-blank
  82. EVALA    EQU    243        ;evaluate numeric from input stream
  83. LKAHED    EQU    242        ;get nxt char w/o removing from input
  84. GNC    EQU    241        ;get char from input, cy=1 if none
  85. ILP    EQU    240        ;inline print
  86. DECOUT    EQU    239        ;decimal output
  87. PRBAUD    EQU    238        ;print baud rate
  88. ;
  89. ;
  90. PORT:        EQU    0F0H        ;Otrona Attache modem port
  91. MODCTL1:    EQU    PORT+1        ;Modem control port
  92. MODDATP:    EQU    PORT        ;Modem data port
  93. MODCTL2:    EQU    PORT+1        ;Modem status port
  94. MODRCVB:    EQU    01H        ;Your bit to test for receive
  95. MODRCVR:    EQU    01H        ;Your value when receive ready
  96. MODSNDB:    EQU    04H        ;Your bit to test for send
  97. MODSNDR:    EQU    04H        ;Your value when send ready
  98. ;
  99. ;
  100.         ORG    100H
  101. ;
  102. ;
  103. ; Change the clock speed to suit your system
  104. ;
  105.         DS    3    ;(for  "JMP   START" instruction)
  106. ;
  107. PMMIMODEM:    DB    NO    ;yes=PMMI S-100 Modem            103H
  108. SMARTMODEM:    DB    YES    ;yes=HAYES Smartmodem, no=non-PMMI    104H
  109. TOUCHPULSE:    DB    'T'    ;T=touch, P=pulse (Smartmodem-only)    105H
  110. CLOCK:        DB    40    ;clock speed in MHz x10, 25.5 MHz max.    106H
  111.                 ;20=2 MHh, 37=3.68 MHz, 40=4 MHz, etc.
  112. MSPEED:        DB    5    ;0=110 1=300 2=450 3=600 4=710 5=1200    107H
  113.                 ;6=2400 7=4800 8=9600 9=19200 default
  114. BYTDLY:        DB    5    ;0=0 delay  1=10ms  5=50 ms - 9=90 ms    108H
  115.                 ;default time to send character in ter-
  116.                 ;minal mode file transfer for slow BBS.
  117. CRDLY:        DB    5    ;0=0 delay 1=100 ms 5=500 ms - 9=900 ms 109H
  118.                 ;default time for extra wait after CRLF
  119.                 ;in terminal mode file transfer
  120. NOOFCOL:    DB    5    ;number of DIR columns shown        10AH
  121. SETUPTST:    DB    YES    ;yes=user-added Setup routine        10BH
  122. SCRNTEST:    DB    YES    ;Cursor control routine         10CH
  123. ACKNAK:        DB    YES    ;yes=resend a record after any non-ACK    10DH
  124.                 ;no=resend a record after a valid NAK
  125. BAKUPBYTE:    DB    NO    ;yes=change any file same name to .BAK    10EH
  126. CRCDFLT:    DB    YES    ;yes=default to CRC checking        10FH
  127. TOGGLECRC:    DB    YES    ;yes=allow toggling of CRC to Checksum    110H
  128. CONVBKSP:    DB    NO    ;yes=convert backspace to rub        111H
  129. TOGGLEBK:    DB    YES    ;yes=allow toggling of bksp to rub    112H
  130. ADDLF:        DB    NO    ;no=no LF after CR to send file in    113H
  131.                 ;terminal mode (added by remote echo)
  132. TOGGLELF:    DB    YES    ;yes=allow toggling of LF after CR    114H
  133. TRANLOGON:    DB    YES    ;yes=allow transmission of LOGON    115H
  134.                 ;write logon sequence at location LOGON
  135. SAVCCP:        DB    YES    ;yes=do not overwrite CCP        116H
  136. LOCONEXTCHR:    DB    NO    ;yes=local command if EXTCHR precedes    117H
  137.                 ;no=external command if EXTCHR precedes
  138. TOGGLELOC:    DB    YES    ;yes=allow toggling of LOCONEXTCHR    118H
  139. LSTTST:        DB    YES    ;yes=allow toggling of printer on/off    119H
  140. XOFFTST:    DB    YES     ;yes=check for XOFF from remote    while    11AH
  141.                 ;sending a file in terminal mode
  142. XONWAIT:    DB    NO    ;yes=wait for XON after CR while    11BH
  143.                 ;sending a file in terminal mode
  144. TOGXOFF:    DB    YES    ;yes=allow toggling of XOFF checking    11CH
  145. IGNORCTL:    DB    YES    ;yes=CTL-chars above ^M not displayed    11DH
  146. EXTRA1:        DB    0    ;for future expansion            11EH
  147. EXTRA2:        DB    0    ;for future expansion            11FH
  148. BRKCHR:        DB    '\'-40H    ;\ = Send a 300 ms. break tone        120H
  149. NOCONNCT:    DB    'N'-40H    ;^N = Disconnect from the phone line    121H
  150. LOGCHR:        DB    'L'-40H    ;^J = Send logon        (LF)    122H
  151. LSTCHR:        DB    'P'-40H    ;^L = Toggle printer            123H
  152. UNSAVE:        DB    'R'-40H    ;^T = Close input text buffer    (DC4)    124H
  153. TRANCHR:    DB    'T'-40H ;^F = Transmit file to remote        125H
  154. SAVECHR:    DB    'Y'-40H    ;^R = Open input text buffer    (DC2)    126H
  155. EXTCHR:        DB    '^'-40H    ;^^ = Send next character        127H
  156. ;
  157. ;
  158.         DS    2        ;                128H
  159. IN$MODCTL1:    MVI    A,010H        ;                12AH
  160.         OUT    MODCTL1
  161.         IN    MODCTL1        ;get the status bits
  162.         RET
  163.         DS    3
  164. ;
  165. OUT$MODDATP:    OUT    MODDATP ! RET    ;out modem data port        134H
  166.         DS    7
  167. IN$MODDATP:    IN    MODDATP ! RET    ;in modem data port        13EH
  168.         DS    7
  169. ANI$MODRCVB:    ANI    MODRCVB    ! RET    ;bit to test for receive ready    148H
  170. CPI$MODRCVR:    CPI    MODRCVR ! RET    ;value of receive bit when rdy    14BH
  171. ANI$MODSNDB:    ANI    MODSNDB    ! RET    ;bit to test for send ready    14EH
  172. CPI$MODSNDR:    CPI    MODSNDR    ! RET    ;value of send bit when ready    151H
  173.         DS    6        ;                154H
  174. OUT$MODCTL1:    OUT    MODCTL1    ! RET    ;out modem control port     15AH
  175. OUT$MODCTL2:    OUT    MODCTL2    ! RET    ;out modem status port        15DH
  176. ;
  177. ;
  178. LOGONPTR:    DW    LOGON        ;for user message.        160H
  179.         DS    6        ;                162H
  180. JMP$GOODBYE:    JMP    GOODBYE        ;                168H
  181. JMP$INITMOD:    JMP    INITMOD        ;go to user written routine    16BH
  182.         RET  !    NOP  !    NOP    ;by-passes PMMI routine        16EH
  183.         RET  !    NOP  !    NOP    ;by-passes PMMI routine        171H
  184.         RET  !    NOP  !    NOP    ;by-passes PMMI routine        174H
  185. JMP$SETUPR:    JMP    SETUPR        ;                177H
  186. JMP$SPCLMENU:    JMP    SPCLMENU    ;                17AH
  187. JMP$SYSVER:    JMP    SYSVER        ;                17DH
  188. JMP$BREAK:    JMP    SENDBRK        ;                180H
  189. ;
  190. ;
  191. ; Do not change the following six lines.
  192. ;
  193. JMP$ILPRT:    DS    3        ;                183H
  194. JMP$INBUF    DS    3        ;                186H
  195. JMP$INLNCOMP:    DS    3        ;                189H
  196. JMP$INMODEM    DS    3        ;                18CH
  197. JMP$NXTSCRN:    DS    3        ;                18FH
  198. JMP$TIMER:    DS    3        ;                192H
  199. ;
  200. ;
  201. ; Clear sequences -- CLREOS is clear to end of screen, CLRSCRN is clear
  202. ; entire screen.  Last entry must be 0.  Any other 0's act as NOP's.
  203. ;
  204. CLREOS:        CALL    JMP$ILPRT    ;                195H
  205.         DB    ESC,'J',0,0,0    ;                198H
  206.         RET            ;                19DH
  207. ;
  208. CLRSCRN:    CALL    JMP$ILPRT    ;                19EH
  209.         DB    01AH,0,0,0,0    ;                1A1H
  210.         RET            ;                1A6H
  211. ;
  212. ;
  213. SYSVER:      CALL    JMP$ILPRT        ;                1A7H
  214.                 DB      26,LF,LF,LF,LF,LF,LF,32,32,32,32,32,32,32,32,32,32,32,32,32,32
  215.         DB    ESC,'U',33,' *********  O T R O N A    A T T A C H E  ********* ',ESC,'U',32
  216.         DB    CR,LF,32,32,32,32,32,32,32,32,32,32,32,32,32,32
  217.         DB    ESC,'U',33,' ** ',ESC,'U',38,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
  218.         DB    32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,ESC,'U',33,' ** ',ESC,'U',32
  219.         DB    CR,LF,32,32,32,32,32,32,32,32,32,32,32,32,32,32
  220.         DB    ESC,'U',33,' ** '
  221.         DB    ESC,'U',38,'   Modem Executive Communication Protocol   '
  222.         DB    ESC,'U',33,' ** ',ESC,'U',32
  223.         DB    CR,LF,32,32,32,32,32,32,32,32,32,32,32,32,32,32
  224.         DB    ESC,'U',33,' ** ',ESC,'U',46,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
  225.         DB    32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,ESC,'U',33,' ** ',ESC,'U',32
  226.         DB    CR,LF,LF,LF,LF,LF,LF,LF
  227.         DB    ESC,'U',38,' Type <?>, or <HELP>, or <HELP ?> for info: ',ESC,'U',32
  228.         DB    CR,LF,LF,0
  229.         RET
  230. ;.....
  231. ;
  232. ;
  233. ;-----------------------------------------------------------------------
  234. ;
  235. ; NOTE:  You can change the SYSVER message to be longer or shorter.  The
  236. ;     end of your last routine should terminate by 0400H if using the
  237. ;     Hayes Smartmodem or by address 0C00H otherwise.
  238. ;
  239. ;-----------------------------------------------------------------------
  240. ;
  241. ; You can put in a message at this location which can be called up with
  242. ; CTL-O if TRANLOGON has been set TRUE.  You can put in several lines if
  243. ; desired.  End with a 0.
  244. ;
  245. ;
  246. LOGON:      DB    'Otrona Attache // now online // please acknowledge',CR,LF
  247.       DB    0
  248. ;.....
  249. ;
  250. ;
  251. ; This routine allows a 300 ms. break tone to be sent to reset some
  252. ; time-shar computers.
  253. ;
  254. SENDBRK:  MVI    A,5
  255.       OUT    MODCTL1
  256.       MVI    A,0F8H        ;SEND A BREAK TONE
  257.       JMP    GOODBYE1
  258. ;.....
  259. ;
  260. ;
  261. ; This routine sends a 300 ms. break tone and sets DTR low for the same
  262. ; length of time to disconnect some modems such as the Bell 212A, etc.    
  263. ;
  264. GOODBYE:    RET
  265. ;GOODBYE:  MVI    A,5        ;***** COMMENT OUT TO PREVENT HANGUP ON EXIT
  266. ;      OUT    MODCTL1        ;SEND TO THE STATUS PORT
  267. ;      MVI    A,68H        ;TURN OFF DTR, SEND BREAK
  268. ;
  269. GOODBYE1: OUT    MODCTL1
  270.       MVI    B,3        ;WAIT FOR 300 MS.
  271.       CALL    JMP$TIMER
  272.       MVI    A,5
  273.       OUT    MODCTL1
  274.       MVI    A,0E8H        ;RESTORE TO NORMAL, 8 BITS, DTR ON, ETC.
  275.       OUT    MODCTL1
  276.       RET
  277. ;.....
  278. ;
  279. ;    
  280. ; Otrona Attache initialization
  281. ;
  282. ; The following is an Otrona BIOS patch written by Allen Edwards.  The
  283. ; LISTST routine in the standard BIOS has two errors which prevent it
  284. ; from it from working correctly.  This patch does not support printer
  285. ; redirection via the IOBYTE.  NOTE THAT IT HAS BEEN COMMENTED OUT DUE
  286. ; TO FIXES IN THE 2.2.5 RELEASE OF CP/M BY OTRONA.
  287. ;
  288. INITMOD:  
  289. ;      LHLD    00000H+1    ;get BIOS warm boot vector
  290. ;      LXI    D,02AH+1    ;offset to LISTST
  291. ;      DAD    D        ;add offset to vector
  292. ;      SHLD    HACK1+1        ;*** MODIFY THE CODE ***
  293. ;
  294. ;HACK1:      LHLD    0D000H        ;'HL' now has pointer to LISTST
  295. ;      XCHG            ;move it to 'DE'
  296. ;      LXI    B,NEWCODE    ;point to new code with 'BC'
  297. ;
  298. ;PTCHLP:      LDAX    B        ;get next byte of new code
  299. ;      ORA    A        ;done?
  300. ;      JZ    INITMOD1    ;yes, go finish init...
  301. ;      STAX    D        ;no, so put in the byte
  302. ;      INX    B        ;update the pointers
  303. ;      INX    D
  304. ;      JMP    PTCHLP        ;and go do next byte
  305. ;
  306. ;
  307. ; New code for LISTST
  308. ;
  309. ;NEWCODE:  MVI    A,010H
  310. ;      OUT    0F3H
  311. ;      IN    0F3H
  312. ;      ORI    0DBH        ;turn on all bits except CTS & TxRE
  313. ;      CPI    0FFH        ;check for both CTS & TxRE true
  314. ;      RZ            ;if so, printer ready, return A=0FFH
  315. ;      XRA    A        ;else not ready so return with A=0
  316. ;      RET
  317. ;
  318. ;      DB    0        ;sentinel for end of patch
  319. ;       ENDIF
  320. ;
  321. ;
  322. ; Read current communications baud & set MDM7xx variable
  323. ;
  324. INITMOD1: MVI    C,9        ;BDOS string output request
  325.       LXI    D,INITMSG0
  326.       CALL    BDOS
  327. ;
  328. BDRQST:      MVI    C,6        ;BDOS direct console i/o request
  329.       MVI    E,0FFH        ;direct console input request
  330.       CALL    BDOS        ;get communication port baud
  331.       ORA    A        ;anything in the buffer yet?
  332.       JZ    BDRQST        ;no, wait until there is...
  333.       ANI    00FH        ;mask off high nybble
  334.       CPI    0        ;75 baud?
  335.       JZ    BADBAUD        ;yes, its bogus...
  336.       CPI    2        ;134.5 baud?
  337.       JZ    BADBAUD        ;yes, thats bogus too...
  338.       CPI    3        ;150 baud?
  339.       JZ    BADBAUD        ;and so is this one...
  340.       CPI    4        ;300 baud?
  341.       JNZ    CHK600        ;no, skip ahead...
  342.       MVI    A,1        ;special case, set it for 300 baud
  343.       JMP    INITEXIT
  344. ;
  345. CHK600:      CPI    5        ;600 baud?
  346.       JNZ    ADJUST        ;no, skip ahead...
  347.       MVI    A,3        ;special case, set it
  348.       JMP    INITEXIT    ;and get out...
  349. ;
  350. ADJUST:      DCR    A        ;adjust it to MDM712 value
  351. ;
  352. INITEXIT: STA    MSPEED        ;save the baud value
  353.       RET
  354. ;.....
  355. ;
  356. ;
  357. INITMSG0: DB    018H        ;clear keyboard buffer
  358.       DB    ESC,'?',8    ;read communications baud
  359.       DB    '$'
  360. ;
  361. BADBAUD:  CALL    JMP$ILPRT
  362.       DB    CR,LF
  363.       DB    ESC,'U"'    ;set highlight attribute
  364.       DB    '++ Invalid baud ++'
  365.       DB    ESC,'U '    ;clear all attributes
  366.       DB    CR,LF,LF,BELL
  367.       DB    0
  368. ;
  369. ;
  370. ; Setup routine to allow changing modem speed with the SET command.
  371. ;
  372. SETUPR:      LXI    D,BAUDBUF    ;point to new input buffer
  373.       CALL    JMP$ILPRT
  374.       DB    'Input Baud Rate (300, 600, 1200, 2400, 4800, 9600, 19200): ',0
  375.       CALL    JMP$INBUF
  376.       LXI    D,BAUDBUF+2
  377.       CALL    JMP$INLNCOMP    ;compare BAUDBUF+2 with characters below
  378.       DB    '300',0
  379.       JNC    OK300        ;go if got match
  380.       CALL    JMP$INLNCOMP
  381.       DB    '600',0
  382.       JNC    OK600
  383.       CALL    JMP$INLNCOMP
  384.       DB    '1200',0
  385.       JNC    OK1200
  386.       CALL    JMP$INLNCOMP
  387.       DB    '2400',0
  388.       JNC     OK2400
  389.       CALL    JMP$INLNCOMP
  390.       DB    '4800',0
  391.       JNC    OK4800
  392.       CALL    JMP$INLNCOMP
  393.       DB    '9600',0
  394.       JNC    OK9600
  395.       CALL    JMP$INLNCOMP
  396.       DB    '19200',0
  397.       JNC    OK19200
  398.       CALL    JMP$ILPRT    ;all matches failed, tell operator
  399.       DB    ESC,'U"'    ;set highlight attribute
  400.       DB    '++ Incorrect entry ++'
  401.       DB    ESC,'U ',CR,LF,BELL,0    ;reset highlight
  402.       JMP    SETUPR        ;try again
  403. ;
  404. OK300:      MVI    A,1
  405.       CALL    PREAMBLE
  406.       LDA    BD300
  407.       JMP    SETBDEXIT
  408. ;
  409. OK600:      MVI    A,3
  410.       CALL    PREAMBLE
  411.       LDA    BD600
  412.       JMP    SETBDEXIT
  413. ;
  414. OK1200:      MVI    A,5
  415.       CALL    PREAMBLE
  416.       LDA    BD1200
  417.       JMP    SETBDEXIT
  418. ;
  419. OK2400:      MVI     A,6
  420.       CALL    PREAMBLE
  421.       LDA    BD2400
  422.       JMP    SETBDEXIT
  423. ;
  424. OK4800:      MVI    A,7
  425.       CALL    PREAMBLE
  426.       LDA     BD4800
  427.       JMP    SETBDEXIT
  428. ;
  429. OK9600:      MVI    A,8
  430.       CALL    PREAMBLE
  431.       LDA    BD9600
  432.       JMP    SETBDEXIT
  433. ;
  434. OK19200:  MVI    A,9
  435.       CALL    PREAMBLE
  436.       LDA    BD19200
  437. ;
  438. ;
  439. ; Fall into SETBDEXIT
  440. ;
  441. SETBDEXIT:MVI    C,6        ;BDOS direct console i/o request
  442.       MOV    E,A        ;move char to 'E' reg. for output
  443.       CALL    BDOS        ;direct I/O to prevent tab expansion
  444.       CALL    JMP$ILPRT    ;set new baud from COMOS RAM parameter
  445.       DB    ESC,'<'
  446.       DB    0
  447.       RET
  448. ;.....
  449. ;
  450. ;
  451. PREAMBLE: STA    MSPEED        ;set the appropriate file transfer speed
  452.       MVI    C,9        ;BDOS string output request
  453.       LXI    D,SETBDMSG
  454.       PUSH    B
  455.       CALL    BDOS
  456.       POP    B
  457.       RET
  458. ;.....
  459. ;
  460. ;
  461. ; Table of Otrona baud parameters
  462. ;
  463. BD110:      DB    001H
  464. BD300:      DB    004H
  465. BD600:      DB    005H    
  466. BD1200:      DB    006H
  467. BD2400:      DB    007H
  468. BD4800:      DB    008H
  469. BD9600:      DB    009H
  470. BD19200:  DB    00AH
  471. ;.....
  472. ;
  473. ;
  474. ; Control message to set new baud
  475. ;
  476. SETBDMSG: DB    ESC,'@',8    ;write communications baud
  477.       DB    '$'
  478. ;
  479. ;
  480. ; Control message to enable new baud
  481. ;
  482. NEWBDMSG: DB    ESC,'<'        ;set communications baud from CMOS RAM
  483.       DB    '$'
  484. ;
  485. ;
  486. ; Input buffer for baud specification
  487. ;
  488. BAUDBUF:  DB    10,0
  489.       DS    10
  490. ;
  491. ;-----------------------------------------------------------------------
  492. ;
  493. ; The following routine can be used as an auxiliary menu for notes of
  494. ; interest to a particular computer, etc.  If using the Hayes Smartmodem
  495. ; this is unavailable without a special address change.
  496. ;
  497. SPCLMENU: RET
  498. ;
  499. ;-----------------------------------------------------------------------
  500. ;
  501. ;
  502. ; NOTE:  MUST TERMINATE PRIOR TO 0400H (with Smartmodem)
  503. ;                 0C00H (without Smartmodem)
  504. ;
  505. ;
  506.       END
  507.