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 / ENTERPRS / CPM / SIGM / SIGMV800.ARK / MXO-C128.ASM < prev    next >
Assembly Source File  |  1986-02-01  |  14KB  |  624 lines

  1.  
  2.  
  3.  
  4.     title    'MXO-C128.ASM -- Commodore 128 overlay for MEX   19 Nov 85'
  5.  
  6. $*MACRO        ; only show code produced by MAC not MACRO expansion
  7.  
  8. ;
  9. ; You will want to look this file over carefully. There are a number of
  10. ; options that you can use to configure the program to suit your taste.
  11. ;
  12. ; Edit this file for your preferences then follow the "TO USE:" example
  13. ; shown below.
  14. ;
  15. ; Use the "SET" command to change the baudrate when desired.  It starts
  16. ; out at 1200 baud when the program is first called up.
  17. ;
  18. ; =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =
  19. ; 11/13/85 - MEXified overlay - Von Ertwine
  20. ; =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =
  21. ;
  22. ;
  23. eom        equ    00h        ; end of message
  24. bell        equ    07h        ; bell
  25. lf        equ    0Ah        ; linefeed
  26. cr        equ    0Dh        ; carriage return
  27. esc        equ    1Bh        ; escape
  28.  
  29. no        equ    0
  30. yes        equ    not(no)
  31.  
  32.     page
  33. ;
  34. ;    C128 info
  35. ;
  36. dev$no:        equ    6
  37. XxD$config:    equ    0fd4Eh
  38. ;        bit 7    0=no parity    1=parity
  39. ;        bit 6    0=mark/space    1=odd/even
  40. ;        bit 5    0=space/even    1=mark/odd
  41. ;        bit 1    0=1 stop bit    1=2 stop bits
  42. ;        bit 0    0=7 data bits    1=8 data bits
  43. RS232$status:    equ    XxD$config+1
  44. ;        bit 7    1=send data, 0=no data
  45. ;        bit 6    1=sending data now
  46. ;        bit 5    1=recv que active
  47. ;        bit 4    1=parity error
  48. ;        bit 3    1=framing error
  49. ;        bit 2    not used
  50. ;        bit 1    receiving data now
  51. ;        bit 0    data byte ready
  52. xmit$data:    equ    RS232$status+1
  53. recv$data:    equ    xmit$data+1
  54. MODRCVB:    equ    01H        ; bit to test for receive
  55. MODRCVR:    equ    01H        ; value when receive ready
  56. MODSNDB:    equ    80H        ; bit to test for send
  57. MODSNDR:    equ    00H        ; value when send ready        
  58.  
  59. data$port$a    equ    0DD00h
  60. ;        bit 2    TxD Data (output)
  61.  
  62. data$port$b    equ    data$port$a+1
  63. data$port$b$dir    equ    data$port$b+2
  64. ;        bit 7    Data Set Ready (input)
  65. ;        bit 6    Clear to Send (input)
  66. ;        bit 5    Place Phone On Hook (active low output)
  67. ;        bit 4    Carrier Detect (active low input)
  68. ;        bit 3    Ring Indicator (active low input)
  69. ;        bit 2    Data Terminal Ready (active hi output)
  70. ;        bit 1    Request to Send (active hi output)
  71. ;        bit 0    Received Data (input)
  72.  
  73.     page
  74. ;
  75. ; MEX service processor stuff
  76. ;
  77. MEX    EQU    0D00h        ;address of the service processor
  78. ESCCHR    EQU    0D1Fh        ;Terminal Mode escape char (1Bh=ESC)
  79. XSIZE    EQU    0D23h        ;transfer buffer size
  80. QUEUE    EQU    0D51h        ;enable/disable queueing (1/0)
  81. INMDM    EQU    255        ;get char from port to A, CY=no more in 100 ms
  82. TIMER    EQU    254        ;delay 100ms * reg B
  83. TMDINP    EQU    253        ;B=# secs to wait for char, cy=no char
  84. CHEKCC    EQU    252        ;check for ^C from KBD, Z=present
  85. SNDRDY    EQU    251        ;test for modem-send ready
  86. RCVRDY    EQU    250        ;test for modem-receive ready
  87. SNDCHR    EQU    249        ;send a character to the modem (after sndrdy)
  88. RCVCHR    EQU    248        ;recv a char from modem (after rcvrdy)
  89. LOOKUP    EQU    247        ;table search: see CMDTBL comments for info
  90. PARSFN    EQU    246        ;parse filename from input stream
  91. BDPARS    EQU    245        ;parse baud-rate from input stream
  92. SBLANK    EQU    244        ;scan input stream to next non-blank
  93. EVALA    EQU    243        ;evaluate numeric from input stream
  94. LKAHED    EQU    242        ;get nxt char w/o removing from input
  95. GNC    EQU    241        ;get char from input, cy=1 if none
  96. ILP    EQU    240        ;inline print
  97. DECOUT    EQU    239        ;decimal output
  98. PRBAUD    EQU    238        ;print baud rate
  99. ;
  100. PRINT    EQU    9        ;MEX/BDOS print-string function call
  101.  
  102.     page
  103. ;
  104. bit    macro    ?N,?R
  105.     db    0cbh,?N*8+?R+040h
  106.     endm
  107.  
  108. setb    macro    ?N,?R
  109.     db    0cbh,?N*8+?R+0C0h
  110.     endm
  111.  
  112. res    macro    ?N,?R
  113.     db    0cbh,?N*8+?R+80h
  114.     endm
  115.  
  116. @chk    macro    ?DD
  117.     if (?DD GT 7Fh) and (?DD LT 0FF80h)
  118.     'Displacement Error'
  119.     endif
  120.     endm
  121.  
  122. jr    macro    ?N
  123.     db    18h,?N-$-1
  124.     @chk    ?N-$
  125.     endm
  126.  
  127. jrz    macro    ?N
  128.     db    28h,?N-$-1
  129.     @chk    ?N-$
  130.     endm
  131.  
  132. jrnz    macro    ?N
  133.     db    20h,?N-$-1
  134.     @chk    ?N-$
  135.     endm
  136.  
  137. jrc    macro    ?N
  138.     db    38h,?N-$-1
  139.     @chk    ?N-$
  140.     endm
  141.  
  142. jrnc    macro    ?N
  143.     db    30h,?N-$-1
  144.     @chk    ?N-$
  145.     endm
  146.  
  147. inp    macro    ?R
  148.     db    0EDh,?R*8+40h
  149.     endm
  150.  
  151. outp    macro    ?R
  152.     db    0EDh,?R*8+41h
  153.     endm
  154.  
  155.     page
  156.  
  157.     org    100h
  158. ;
  159. ;
  160. ; Change the clock speed to suit your system
  161. ;
  162.         DS    3    ;(for  "JMP   START" instruction)
  163. ;
  164. local$config:    db    01h    ; default to 8 bit no parity 1 stop    103H
  165. mdm$tp:        db    8Ah    ; bit    (default 1670 with 1200 or 300) 104H
  166.                 ; 7    (1670 if set)
  167.                 ; 6    (1650 or 1660 if set)
  168.                 ; 5    (1660 if set)
  169.                 ; 4    (supports CD if clear {1650,1660})
  170.                 ; 3    (set if 1200 baud is supported)
  171.                 ; 2    (set if  600 baud is supported)
  172.                 ; 1    (set if  300 baud is supported)
  173.                 ; 0    (set if  110 baud is supported)
  174.  
  175. TPULSE:        DB    'T'    ;T=touch, P=pulse (Smartmodem-only)    105H
  176. CLOCK:        DB    13    ;clock speed in MHz x10, 25.5 MHz max.    106H
  177.                 ;20=2 MHh, 37=3.68 MHz, 40=4 MHz, etc.
  178. MSPEED:        DB    5    ;0=110 1=300 2=450 3=600 4=710 5=1200    107H
  179.                 ;6=2400 7=4800 8=9600 9=19200 default
  180. BYTDLY:        DB    5    ;0=0 delay  1=10ms  5=50 ms - 9=90 ms    108H
  181.                 ;default time to send character in ter-
  182.                 ;minal mode file transfer for slow BBS.
  183. CRDLY:        DB    5    ;0=0 delay 1=100 ms 5=500 ms - 9=900 ms 109H
  184.                 ;default time for extra wait after CRLF
  185.                 ;in terminal mode file transfer
  186. COLUMS:        DB    5    ;number of DIR columns shown        10AH
  187. SETFLG:        DB    YES    ;yes=user-added Setup routine        10BH
  188. SCRTST:        DB    YES    ;Cursor control routine         10CH
  189.         DB    YES    ;yes=resend a record after any non-ACK    10DH
  190.                 ;no=resend a record after a valid NAK
  191. BAKFLG:        DB    NO    ;yes=change any file same name to .BAK    10EH
  192. CRCDFL:        DB    YES    ;yes=default to CRC checking        10FH
  193. TOGCRC:        DB    YES    ;yes=allow toggling of CRC to Checksum    110H
  194. CVTBS:        DB    no    ;yes=convert backspace to rub        111H
  195. TOGLBK:        DB    yes    ;yes=allow toggling of bksp to rub    112H
  196. ADDLF:        DB    yes    ;no=no LF after CR to send file in    113H
  197.                 ;terminal mode (added by remote echo)
  198. TOGLF:        DB    YES    ;yes=allow toggling of LF after CR    114H
  199.         DB    NO    ;yes=allow transmission of logon    115H
  200.                 ;write logon sequence at location LOGON
  201. SAVCCP:        DB    YES    ;yes=do not overwrite CCP        116H
  202.         DB    NO    ;yes=local command if EXTCHR precedes    117H
  203.                 ;no=external command if EXTCHR precedes
  204.         DB    YES    ;yes=allow toggling of LOCONEXTCHR    118H
  205. LSTTST:        DB    no    ;yes=allow toggling of printer on/off    119H
  206. XOFTST:        DB    YES    ;yes=chcks for XOFF from remote while    11AH
  207.                 ;sending a file in terminal mode
  208. XONWT:        DB    NO    ;yes=wait for XON after CR while    11BH
  209.                 ;sending a file in terminal mode
  210. TOGXOF:        DB    YES    ;yes=allow toggling of XOFF checking    11CH
  211. IGNCTL:        DB    no    ;yes=CTL-chars above ^M not displayed    11DH
  212. EXTRA1:        DB    0    ;for future expansion            11EH
  213. EXITCHR:    DB    'E'-40H    ;^E = Exit to main menu            11FH
  214. BRKCHR:        DB    '@'-40H    ;^@ = Send a 300 ms. break tone        120H
  215. NOCONN:        DB    'N'-40H    ;^N = Disconnect from the phone line    121H
  216. LOGCHR:        DB    'L'-40H    ;^L = Send logon            122H
  217. LSTCHR:        DB    'P'-40H    ;^P = Toggle printer            123H
  218. UNSAVE:        DB    'R'-40H    ;^R = Close input text buffer        124H
  219. TRNCHR:        DB    'T'-40H ;^T = Transmit file to remote        125H
  220. SAVCHR:        DB    'Y'-40H    ;^Y = Open input text buffer        126H
  221. EXTCHR:        DB    '^'-40H    ;^^ = Send next character        127H
  222. ;
  223. ;
  224.         DS    2        ;                128H
  225. INCTL1:
  226.     lda    RS232$status    ;get the status bits            12Ah
  227.     ret
  228. show$baud:            ;                    12Eh
  229.     jmp    disp$rate    ;display current baud rate
  230.     ds    3
  231. ;
  232. OTDATA:                ;out modem data port            134H
  233.     sta    xmit$data
  234.     push    h
  235.     lxi    h,RS232$status
  236.     jmp    out$c128$cont
  237.  
  238. INPORT:                ;in modem data port            13EH
  239.     lda    recv$data
  240.     push    h
  241.     lxi    h,RS232$status
  242.     jmp    in$c128$cont
  243.  
  244. MASKR:    ani    modrcvb        ;bit to test for receive ready        148H
  245.     ret
  246. TESTR:    cpi    modrcvr        ;value of receive bit when rdy        14BH
  247.     ret
  248. MASKS:    ani    modsndb        ;bit to test for send ready        14EH
  249.     ret
  250. TESTS:    cpi    modsndr        ;value of send bit when ready        151H
  251.     ret
  252.  
  253.     ds    6        ;                    154H
  254. OUTMODCT1:
  255.     ret ! nop ! nop        ;out modem control port         15AH
  256. OUTMODCT2:
  257.     ret ! nop ! nop        ;out modem status port            15DH
  258. ;
  259. ;
  260.     DS    2        ;Not used by MEX            160H
  261.     DS    6        ;                    162H
  262. GOODBV:    JMP    GOODBY        ;                    168H
  263. INMODV:    JMP    NITMOD        ;go to user written routine        16BH
  264. NEWBDV:    JMP    NEWBAUD        ;Change baudrate            16EH
  265.     RET  !    NOP  !    NOP    ;(by-passes PMMI routine)        171H
  266.     RET  !    NOP  !    NOP    ;(by-passes PMMI routine)        174H
  267. SETUPV:    JMP    SETCMD        ;                    177H
  268.     DS    3        ;                    17AH
  269. VERSNV:    JMP    SYSVER        ;                    17DH
  270. BREAKV:    JMP    SBREAK        ;                    180H
  271. ;
  272. ;
  273. ; Do not change the following six lines.
  274. ;
  275. ILPRTV:    DS    3        ;                    183H
  276. INBUFV:    DS    3        ;                    186H
  277. ILCMPV:    DS    3        ;                    189H
  278. INMDMV:    DS    3        ;                    18CH
  279.     DS    3        ;                    18FH
  280. TIMERV:    DS    3        ;                    192H
  281. ;
  282. ; Clear sequences -- CLREOS is clear to end of screen, CLRSCRN is clear
  283. ; entire screen.  
  284. ;
  285. CLREOS:
  286.     mvi    c,ILP
  287.     call    mex
  288.     db    esc,'Y',eom
  289.     RET            
  290. ;
  291. CLS:
  292.     mvi    c,ILP
  293.     call    mex
  294.     db    'Z'-40h,eom
  295.     ret            
  296.     nop
  297. ;
  298. ;
  299. SYSVER:
  300.     mvi    c,ILP        ;                1A7H
  301.     call    mex
  302.     db    'Version for Commodore 128'
  303.     db    cr,lf,eom
  304.     ret
  305. ;
  306. ;
  307. out$c128$cont:
  308.     setb    7,m
  309.     pop    h
  310.     ret
  311. ;
  312. ;
  313. in$c128$cont:
  314.     res    0,m
  315.     pop    h
  316.     ret
  317.  
  318.     page
  319. ;
  320. ;
  321. ; This routine allows a 300 ms. break tone to be sent to reset some
  322. ; time-shar computers.
  323. ;
  324. SBREAK:
  325.     lda    rs232$status
  326.     ani    01000010b        ; any RS232 activity now?
  327.     jrnz    SBREAK            ; yes, wait until done.
  328.     di                ; prevent intterupts from
  329.     push    b            ; ..resetting break
  330.     lxi    b,data$port$a
  331.     inp    a
  332.     ani    0FBh            ; send a break tone will be cleared
  333.     outp    a            ; ..when interrupts turned on
  334.     mvi    b,8            ; time flies with-out intterrupts on
  335.     mvi    c,TIMER
  336.     call    mex
  337.     pop    b
  338.     ei
  339.     ret
  340. ;
  341. ; This routine sends a 300 ms. break tone and sets DTR low for the same
  342. ; length of time to disconnect some modems such as the Bell 212A, etc.    
  343. ;
  344. GOODBY:                  ; TURN OFF DTR
  345.     push    b
  346.     lxi    b,data$port$b
  347.     inp    a
  348.     ani    not(6)            ; clear DTR and CTS bits
  349.     outp    a
  350.     call    sbreak            ; send 300ms break
  351.     inp    a
  352.     ori    6            ; set DTR and CTS bits
  353.     outp    a
  354.     pop    b
  355.     mvi    a,6            ; set back to 300 baud
  356.     jmp    reset$baud        ; ..so system does not run slow
  357.     ; call/ret
  358.  
  359.     page
  360. ;
  361. ; C128 initialization -- set baudrate.
  362. ;
  363. NITMOD:
  364.     lda    local$config        ; set default to 8 bits no parity
  365.     sta    XxD$config
  366.     lda    mspeed
  367.     call    new$baud        ; set default BAUD rate
  368.     lxi    b,data$port$b$dir
  369.     mvi    a,6
  370.     outp    a
  371.     mvi    c,low(data$port$b)
  372.     inp    a
  373.     ori    6            ; set DTR and CTS bits (active hi)
  374.     outp    a
  375.     ret
  376.  
  377.     page
  378. ;
  379. ; Setup routine to allow changing modem speed with the SET command.
  380. ;
  381. SETCMD:
  382.     mvi    c,SBLANK        ; Any arguments?
  383.     call    mex
  384.     jrc    tell            ; If not, go display baud
  385.     lxi    d,cmdtbl
  386.     mvi    c,LOOKUP
  387.     call    mex            ; Parse argument
  388.     cnc    ipchl            ; If we have one, go set it
  389. ;
  390. tell:
  391.     push    psw            ; save carry flag
  392.     call    disp$rate
  393.     pop    psw            ; recover carry flag 
  394.     jrnc    skip$tell$baud        ; ..(prt following if Cy=1)
  395.     mvi    c,ILP
  396.     call    mex            ; Print current baud rate
  397.     db    cr,lf,'The following '
  398.     db    'Baud rate(s) are legal: ',eom
  399.  
  400.     mvi    b,1
  401.     call    prt$rate
  402.     db    '110 ',eom
  403.     mvi    b,2
  404.     call    prt$rate
  405.     db    '300 ',eom
  406.     mvi    b,4
  407.     call    prt$rate
  408.     db    '600 ',eom
  409.     mvi    b,8
  410.     call    prt$rate
  411.     db    '1200 ',eom
  412. skip$tell$baud:
  413.     mvi    c,ILP
  414.     call    mex
  415.     db    cr,lf,eom
  416.     ret
  417. ;
  418. ;
  419. ;
  420. disp$rate:
  421.     mvi    c,ILP
  422.     call    mex            ; Print current baud rate
  423.     db    cr,lf,'Baud rate is'
  424.     db    ' now: ',eom
  425.     lda    mspeed
  426.     mvi    c,prbaud
  427.     call    mex
  428.  
  429.     lda    XxD$config
  430.     lxi    b,'7'*256+'1'        ; B='7'  C='1'
  431.     bit    0,a            ; bit 0=1 if 8 bits
  432.     jrz    dsp$7
  433.     inr    b
  434. dsp$7:
  435.     bit    1,a            ; bit 1=1 if 2 stop bits
  436.     jrz    dsp$1
  437.     inr    c
  438. dsp$1:
  439.     lxi    h,byte$type$tbl+1-3
  440.     ani    11100000b        ; only test the parity
  441. tst$nxt:
  442.     inx    h
  443.     inx    h
  444.     inx    h
  445.     cmp    m
  446.     jrnz    tst$nxt
  447.     dcx    h            ; byte before is the type
  448.     mov    a,m
  449.     lxi    h,msg$ptr
  450.     mov    m,b            ; save the word length
  451.     inx    h
  452.     mov    m,a            ; save the parity
  453.     inx    h
  454.     mov    m,c            ; save the stop bits
  455.  
  456.     mvi    c,ilp
  457.     call    mex
  458.     db    '   ('
  459. msg$ptr:
  460.     db    '8'
  461.     db    'N'
  462.     db    '1)',cr,lf,eom
  463.     ret
  464. ;
  465. ;
  466. ;
  467. prt$rate:
  468.     lda    mdm$tp
  469.     ana    b
  470.     mvi    c,ilp
  471.     jnz    mex
  472.     pop    h
  473. scan$prt$rate:
  474.     mov    a,m
  475.     inx    h
  476.     ora    a
  477.     jrnz    scan$prt$rate
  478. ipchl:
  479.     pchl
  480. ;
  481. ;
  482. cmdtbl:
  483.     db    '11','0'+80h
  484.     dw    ok110
  485.     db    '30','0'+80H
  486.     dw    ok300
  487.     db    '60','0'+80h
  488.     dw    ok600
  489.     db    '120','0'+80H
  490.     dw    ok1200
  491.     db    0
  492.  
  493. ok110:
  494.     xra    a
  495.     db    21h            ; lxi h,mvi a,1
  496. ok300:
  497.     mvi    a,1
  498.     db    21h            ; lxi h,mvi a,3
  499. ok600:
  500.     mvi    a,3
  501.     db    21h            ; lxi h,mvi a,5
  502. ok1200:
  503.     mvi    a,5
  504.  
  505.     push    psw
  506.     call    set$nxt$parm
  507.     pop    psw
  508.  
  509. NEW$BAUD:
  510.     cpi    5+1            ; make sure not greater
  511.     cmc                ; ..then 1200 baud (5)
  512.     rc                ; return with carry set
  513.     mov    b,a            ; ..if bad baud rate
  514.     add    b            ; 2X
  515.     add    b            ; 3X
  516.     mov    e,a
  517.     mvi    d,0            ; three bytes per table entry
  518.     lxi    h,baud$table
  519.     dad    d
  520.     lda    mdm$tp            ; 4 lsb's tell baud supported
  521.     ana    m            ; mask with desired rate
  522.     cmc
  523.     rz                ; exit if bad baud rate (with Cy set)
  524.     mov    a,b
  525.     sta    mspeed            ; set Modem Speed
  526.     inx    h
  527.     mov    a,m            ; get speed byte
  528.     sta    clock
  529.     inx    h
  530.     mov    a,m            ; get baud rate byte
  531. reset$baud:
  532.     push    psw
  533.     mvi    e,3ch            ; offset to jmp devtbl
  534.     call    vector$1        ; returns HL=char device table start
  535.     lxi    d,dev$no*8+7        ; offset to RS232 baud rate
  536.     dad    d            ; point to RS232 baud rate byte
  537.     pop    psw
  538.     mov    m,a            ; change baud rate
  539.  
  540.     mvi    c,dev$no        ; init RS232 baud rate
  541.     mvi    e,3fh            ; offset to jmp ?cinit
  542.     call    vector$1
  543.     ana    a            ; Cy cleared, baud rate set OK
  544.     ret
  545.  
  546. vector$1:
  547.     lhld    01
  548.     mov    l,e
  549.     pchl
  550. ;
  551. ;
  552. ;
  553. set$nxt$parm:
  554.     mvi    c,gnc
  555.     call    mex            ; any arguments?
  556.     rc
  557.     ori    20h            ; make lower case
  558.     lxi    h,byte$type$tbl
  559. chk$next:
  560.     cmp    m            ; match table entry?
  561.     inx    h            ;   point to the mask
  562.     mov    b,m            ;   get OR value (new data)
  563.     inx    h            ;   point to the new value (to add in)
  564.     jrz    change$type        ; yes, go change type
  565.     inx    h            ; no, scan to next entry
  566.     mov    b,m
  567.     inr    b            ; next entry a -1?
  568.     jrnz    chk$next        ; no, check next table entry
  569.     jr    set$nxt$parm        ; yes, skip this entry get the next one.
  570.  
  571. change$type:
  572.     mov    a,m            ; get mask value
  573.     lxi    h,XxD$config        ; point to system (RS232) config byte
  574.     ana    m            ; mask out old value
  575.     ora    b            ; OR in new value
  576.     mov    m,a            ; update config byte
  577.     sta    local$config        ; update boot value
  578.     jr    set$nxt$parm        ; see if any other parameters have changed
  579. ;
  580. ;
  581. ;
  582. byte$type$tbl:                 ; or'ed value , MASK
  583.     db    'n',00000000b,00011111b
  584.     db    'o',11100000b,00011111b
  585.     db    'e',11000000b,00011111b
  586.     db    'm',10100000b,00011111b
  587.     db    's',10000000b,00011111b
  588.     db    '7',00000000b,11111110b
  589.     db    '8',00000001b,11111110b
  590.     db    '1',00000000b,11111101b
  591.     db    '2',00000010b,11111101b
  592.     db    -1
  593. ;
  594. ;
  595. ; TABLE OF BAUDRATE PARAMETERS
  596. ;
  597. baud$table:
  598.     db    1,20,3            ; 0    110
  599.     db    2,19,6            ; 1    300
  600.     db    0,0,0            ; 2    450    (not used)
  601.     db    4,17,7            ; 3    600
  602.     db    0,0,0            ; 4    710    (not used)
  603.     db    8,13,8            ; 5    1200
  604. ;
  605. ;
  606. baudbuf:
  607.     db    10,0
  608.     ds    10
  609. ;
  610. ; NOTE:  MUST TERMINATE PRIOR TO 0B00H (with Smartmodem)
  611. ;                 0D00H (without Smartmodem)
  612. ;
  613.     org    escchr            ; change the ESC character to ESC
  614.     db    esc
  615.  
  616.     org    xsize            ; reduce buffer size (slow disk drives)
  617.     db    4
  618.  
  619.     org    queue            ; turn off queueing (system
  620.     db    0            ; ..has 48 byte buff)
  621.  
  622.     end
  623.  
  624.