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
/
MODEMS
/
MODEM7
/
M7SY-3.ASM
< prev
next >
Wrap
Assembly Source File
|
2000-06-30
|
21KB
|
544 lines
; M7SY-3.ASM - SANYO MBC-1000 computer overlay file for MDM722+. 2/17/84
;
; You will want to look this file over carefully. There are a number of
; options that you can use to configure the program to suit your taste.
;
; This file adapts the Sanyo MBC-1000 computer to the modem program.
;
;
; THIS MODIFICATION MAKES USE OF TIMER 2 ON THE 8253 TIMER IC (IC4)
; OF THE SERIAL I/O BOARD OF THE SANYO MBC-1000.
;
; To use this program, the serial I/O board must be modified as follows:
;
; 1. Cut etch from IC18 Pin 1 to JP2 Pin 8.
; 2. Install jumper from IC18 Pin 1 to IC4 Pin 18.
; 3. Install jumper from IC4 Pin 17 to JP2 Pin 8.
; 4. Install jumper from IC4 Pin 16 to IC4 Pin 14.
; 5. Move jumper strap to JP2 Pin 8 for programmable baud rate, other
; pins (1-7) can still be used for standard baud rate selections.
; 6. Hardware modification is now complete.
;
; *** THIS VERSION SETS UP THE USART FOR 8 BITS, NO PARITY, 1 STOP BIT ***
;
; Edit this file for your preferences then follow the "TO USE:" example
; shown below.
;
; Use the "SET" command to change the baudrate when desired. It starts
; out at 1200 baud when the program is first called up. Because of tem-
; perature and component variations, you mave have to alter the timing
; parameters in OK300 and OK1200, plus or minus 1 or 2 numbers, if CRC
; errors occur to frequently during transmission and reception.
;
; = = = = = = = = = = = = = = = = = =
;
; 02/17/84 - Renamed M7SY-3.ASM with improvements on 3 bugs. (1) Use
; MDM722 or later to eliminate the problems with Contol X when
; dialing. (2) Altered the parameter for 300 baud set for 0240h
; to 0241h to eliminate overwhelming CRC errors during Send.
; (3) Irv Hoff et al take note. For some reason, the Sanyo's
; lock up after a connect. When the message "hit any key to
; stop the bell" occurs, there is a subsequent CALL STAT and
; CALL KEYIN that gets the Sanyo's in a tight loop. Change
; the CALL STAT to a JMP RETURN (goes directly to the Terminal
; mode without waiting for a keystroke) to avoid the problem
; while waiting for someone more astute than me to fix the bug.
; I even tried patching in my specific BIOS addresses in a num-
; ber of places, figuring the problem was in INITADR--but to no
; avail.
;
; Bob Sandel Canton, MI (leave msg with TCBBS 1-313-846-6127
; or Keith Peterson's Royal Oak CP/M 1-313-759-6569 )
;
;
; 02/01/84 - Blended MDM711SN w the top of MDM719.ASM
; - Made Default Baud Rate 1200; Added back LOADBD to update MSPEED
; - ^P back on at LSTTST;changed LOGON back to ^L;set TOUCHPULSE
; - back to P=Pulse;added cosmetic remarks;BUFSIZ=XFRSIZ=16K
; - Bob Sandel Canton, MI
;
; 08/01/83 - Altered MDM711NE for the Sanyo MBC-1000
; computer using an external modem - Dave Hardy
;
; 07/01/83 - Revised for use with MDM711 - Irv Hoff
; 06/22/83 - Revised for use with MDM710 - Irv Hoff
;
; = = = = = = = = = = = = = = = = = =
;
VERSION: EQU 719 ;MDM719 (01/22/84) -- CP/M MODEM PROGRAM
;
; COPYRIGHTED 1984 BY IRV HOFF (TO DETER COMMERCIAL USE)
;
; THIS TELEPHONE MODEM PROGRAM USES THE CHRISTENSEN PROTOCOL. IT HAS
; BOTH CHECKSUM AND 'CRC' CAPABILITY FOR ERROR-DETECTION. IT SUPPORTS
; DIALING AND AUTO-REDIALING FOR THE S-100 PMMI, HAYES SMARTMODEM 300
; AND 1200 AND U.S. ROBOTICS MODEMS. IT SUPPORTS UP TO TWO ALTERNATE
; DIALING SYSTEMS SUCH AS 'MCI', 'SPRINT', ETC. IT IS COPYRIGHTED TO
; DETER COMMERCIALISM. IT MAY BE USED FOR NON-PROFIT PURPOSES OR CAN
; BE ALTERED OR UPDATED IF AGAIN RELEASED TO THE PUBLIC DOMAIN.
;
; OTHER EXTERNAL MODEMS MAY BE READILY USED, ALTHOUGH MANUAL DIALING
; MAY BE NECESARY. OVERLAYS HAVE BEEN MADE ALLOWING RAPID ADAPTATION
; TO VARIOUS COMPUTERS. THE PROGRAM CONFORMS READILY TO NUMEROUS I/O
; DEVICES INCLUDING THE 2661, 8250, 8251, Z80-SIO, ETC.
;
; NOTE: Current version (722+)is 71 sectors long. Use this figure with
; DDT, etc. to merge the appropriate overlay, regardless of what
; the overlay may call for (such as 66 sectors for overlays made
; during MDM712 era or 69 sectors during the MDM 719 era. )
;
;NOTE: M7NM-6.ASM (or later if applicable) must be used with
; this version. That has the 'SAVSIZ' byte just prior
; to the 'NUMBLIB:' phone number library.
;
;***********************************************************************
; If you improve or modify this program please attempt to upload to TCBBS
; Dearborn, MI (313) 846-6127. If there is insufficient disk space,
; leave a message on MINICBBS there.
;
;
; 02/01/84 ******* WARNING Some Bugs remain TO USE ANCHOR XII *******
; Still having trouble with CAL (lockup after connect); Can receive
; at 300 & 1200 but can only send at 1200 baud. Control X does
; does not really terminate dial. ATDP, manual dial, works fine!!
; If you work it out (leave msg w TCBBS 1-313-846-6127) Bob Sandel
;
; 01/22/84 Fixed Irv's error in GETACK routine which prevented the
; MDM719 robust improvement (added by Bob Plouffe) from working.
; Changed ACKNAK to NO so default will require valid NAK
; rather than non-ACK. This is part of the robust improvements,
; NOT because of any special ArpaNet requirement. Changed
; SHOWHEX to true for distribution version so users would have
; HEX and DECIMAL reporting while transferring files (most users
; have told me they prefer to see both). Changed PMMI dialing
; pulse default to 10pps which most exchanges will accept.
; (This can be set to other pulse rates in the user overlay).
; - Keith Petersen, W8SDZ
;
;***********************************************************************
;
; GENERAL INTEREST: When transferring files modem-to-modem, the batch
; mode is extremely useful. It allows automatic transmission of nu-
; merous files while the operator at the receiving end does virtually
; nothing. It can be used for single files or with wildcards. With
; normal single program transfer, the receiving end switches from CRC
; to checksum in one minute and times out completely in 100 seconds.
; (In batch mode it times out in 3 minutes for receive.) This offers
; ample opportunity to transfer programs between individuals.
;
;***********************************************************************
;
; 01/21/84 NUMBLIB now automatically starts on even page. 0D00H for
; MDM718 this version. Made the buffer size for file transfer inde-
; pendent from the buffer size for ASCII capture to disk. It
; had been 16k both since MODEM770. The file transfer size is
; now set to 4k for default. Most systems can easily use 16k
; but some very slow ones may need 8k or 4k. Set via XFRSIZ.
; (May be set with DDT by changing byte just prior to start of
; NUMLIB, which is 0CFFH in this case.) Now recognizes single
; digit result codes for auto-dial modems. Added code for the
; new Anchor modems which recognize busy signals and can start
; a redial immediately. Thanks for ideas from Wayne Masters,
; Ron Fowler, Fred Viles and others. - Irv Hoff
;
; 07/27/83 Added two alternate dialing routines such as MCI and SPRINT.
; MDM712 Fixed "disk space remaining" to read correctly with CP/M+.
; - Irv Hoff
;
; 07/01/83 Changed TERM to allow use of the printer port for modem use.
; MDM711 - Irv Hoff
;
; 06/22/83 MAJOR CHANGE: Added autodialing and automatic continuous
; MDM710 redialing for Hayes Smartmodem 300 or 1200,
; U.S. Robotics in addition to the PMMI modem
; for S-100 computers. - Irv Hoff
;
; 01/01/83 First version. Can be assembled with ASM.COM. (Previously
; MDM700 it was necessary to have the MODEM7.LIB file and use MAC.COM
; to assemble the program.) Selected MDM700 as a new program
;
;***********************************************************************
;
PORT: EQU 0A4H ; Sanyo MBC-1000 Serial Port
;
MODCTL1: EQU PORT+1 ;modem STATUS port
MODCTL2: EQU PORT+1 ;CHANGED FOR SANYO CONTROL PORT
MODDATP: EQU PORT ;modem data port
CTIMER: EQU 0A3H ;8253 baud rate counter/timer
;
MODRCVB: EQU 02H ;modem receive bit (DAV)
MODRCVR: EQU 02H ;modem receive ready
MODSNDB: EQU 01H ;modem send bit
MODSNDR: EQU 01H ;modem send ready bit
;
;
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; SPECIAL EQUATES FOR PMMI
;
BAUDRP: EQU PORT+2 ;modem baud rate port
BRKMSK: EQU 0FBH ;mask to set break
EVPARMSK: EQU 20H ;mask to set even parity
NOPARMSK: EQU 10H ;mask to reset to no parity
ODPARMSK: EQU 0CFH ;mask to set odd parity
;
ANSWMOD: EQU 1EH ;answer mode
ORIGMOD: EQU 1DH ;originate mode
WAITCTS: EQU 150 ;number of seconds (x5) to wait for the
;computer to answer after PMMI auto-dial
;100=20 sec, 150=30 sec, 255=51 sec.
;any number 0-255 acceptable
;
; (END OF SPECIAL PMMI EQUATES)
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
;
YES: EQU 0FFH
NO: EQU 0
;
;
BUFSIZ: EQU 16 ;buffer size in Kbytes for ASCII capture to disk
;(16k is one file extent)
XFRSIZ: EQU 16 ;file transfer buffer in Kbytes. Do not make
;any larger than BUFSIZ. 16k works fine on all
;but very slowest systems
;
BDNMCH: EQU 75H ;bad name match
ERRLIM: EQU 10 ;maximum allowable consecutive errors
ERRCRC: EQU 6 ;CRC tries, then switches to CHECKSUM
LIBLEN: EQU 34 ;length of each phone library entry
;
SHOWHEX:EQU YES ;yes, show hex record count - no, do not show
;
RUB: EQU 7FH ;rub
CRC: EQU 'C' ;requests 'CRC' instead of 'CKSUM'
ESC: EQU '['-40H ;^[ = escape
SOH: EQU 'A'-40H ;^A = start of header
EOT: EQU 'D'-40H ;^D = end of text
EXITCHR:EQU 'E'-40H ;^E = exit character
ACK: EQU 'F'-40H ;^F = acknowledge
OKNMCH: EQU 'F'-40H ;^F = ok name match
BELL: EQU 'G'-40H ;^G = bell character
BKSP: EQU 'H'-40H ;^H = backspace
LF: EQU 'J'-40H ;^J = linefeed
CR: EQU 'M'-40H ;^M = carriage return
XON: EQU 'Q'-40H ;^Q = XON character
XOFF: EQU 'S'-40H ;^S = XOFF character
NAK: EQU 'U'-40H ;^U = not acknowledge
CANCEL EQU 'X'-40H ;^X = cancel send or receive
EOFCHAR:EQU 'Z'-40H ;^Z = end of file
;
;
ORG 0100H
;
;
DS 3 ; for JUMP START instruction
;
;
; THESE ROUTINES AND EQUATES ARE AT THE BEGINNING OF THE PROGRAM SO
; THEY CAN BE PATCHED BY A MONITOR OR OVERLAY FILE WITHOUT RE-ASSEMBLING
; THE PROGRAM.
;
PMMIMODEM: DB NO ;yes=PMMI modem, no=non-PMMI modem
SMARTMODEM: DB YES ;yes=HAYES Smartmodem or Anchor Automation Mark XII
TOUCHPULSE: DB 'P' ;T=touch, P=pulse (Smartmodem-only)
;
CLOCK: DB 40 ;clock speed x .1, up to 25.5 mhz.
;2 MHz=20, 3.68 MH=37, 4 MHz=40, etc.
MSPEED: DB 5 ;sets display time for sending a file
;0=110 1=300 2=450 3=600 4=710
;5=1200 6=2400 7=4800 8=9600 9=19200
BYTDLY: DB 5 ;default time to send character in
;terminal mode file transfer (0-9)
;0=0 delay, 1=10 ms, 5=50 ms, 9=90 ms
CRDLY: DB 5 ;end-of-line delay after CRLF in terminal
;mode file transfer for slow BBS systems
;0=0 delay, 1=100 ms, 5=500 ms, 9=900 ms
NOOFCOL: DB 4 ;number of directory columns was 5
SETUPTST: DB YES ;yes=non-PMMI setup routine
SCRNTEST: DB YES ;yes=if home cursor and clear screen
;routine at CLRSCRN
ACKNAK: DB YES ;yes=resend a record after any non-ACK
;no=resend a record after a valid NAK (robust)
BAKUPBYTE: DB NO ;yes=make .BAK file
CRCDFLT: DB YES ;yes=default to CRC checking
;no=default to Checksum checking
TOGGLECRC: DB YES ;yes=allow toggling of Checksum to CRC
CONVBKSP: DB NO ;yes=convert backspace to rub
TOGGLEBK: DB YES ;yes=allow toggling of bksp to rub
ADDLF: DB NO ;no=no LF after CR to send file in
;terminal mode (added by remote echo)
TOGGLELF: DB YES ;yes=allow toggling of LF after CR
TRANLOGON: DB YES ;yes=allow transmission of logon
;write logon sequence at location LOGON
SAVCCP: DB YES ;yes=do not overwrite CCP
LOCNXTCHR: DB NO ;yes=local cmd if EXTCHR precedes
;no=not local cmd if EXTCHR precedes
TOGGLELOC: DB YES ;yes=allow toggling of LOCNXTCHR
LSTTST: DB YES ;yes=allow toggling of printer on/off
;in terminal mode. Set to no if using
;the printer port for the modem
XOFFTST: DB YES ;yes=allow testing of XOFF from remote
;while sending a file in terminal mode
XONWAIT: DB NO ;yes=wait for XON after sending CR while
;transmitting a file in terminal mode
TOGXOFF: DB YES ;yes=allow toggling of XOFF testing
IGNORCTL: DB YES ;yes=do not send control characters
;above CTL-M to CRT in terminal mode
;no=send any incoming CTL-char to CRT
EXTRA1: DB 0 ;for future expansion
EXTRA2: DB 0 ;for future expansion
BRKCHR: DB '@'-40H ;^@ = Send a 300 ms. break tone
NOCONNCT: DB 'N'-40H ;^N = Disconnect from phone line
LOGCHR: DB 'L'-40H ;^L = Send logon
LSTCHR: DB 'P'-40H ;^P = Toggle printer
UNSAVECHR: DB 'R'-40H ;^R = Close input text buffer
TRANCHR: DB 'T'-40H ;^T = Transmit file to remote
SAVECHR: DB 'Y'-40H ;^Y = Open input text buffer
EXTCHR: DB '^'-40H ;^^ = Send next character
;
;
; Equates used only by PMMI routines grouped together here.
;
PULSERATE: DB 250 ;125=20pps dialing, 250=10pps
CHGBAUD: DB 'B'-40H ;^B = Used with PMMIMODEM in terminal
;mode to change baud rate on fly
;
;
; Handles in/out ports for data and status
;
IN$MODCTL1: IN MODCTL1 ! RET ;in modem control port
DS 7 ;spares if needed for non-PMMI
OUT$MODDATP: OUT MODDATP ! RET ;out modem data port
DS 7 ;spares if needed for non=PMMI
IN$MODDATP: IN MODDATP ! RET ;in modem data port
DS 7 ;spares if needed for non-PMMI
;
ANI$MODRCVB: ANI MODRCVB ! RET ;bit to test for receive ready
CPI$MODRCVR: CPI MODRCVR ! RET ;value of receive bit when ready
ANI$MODSNDB: ANI MODSNDB ! RET ;bit to test for send ready
CPI$MODSNDR: CPI MODSNDR ! RET ;value of send bit when ready
;
;
;====================== SPECIAL PMMI PORTS =============================
;
IN$BAUDRP: IN BAUDRP ! RET ;in baudrate port
OUT$BAUDRP: OUT BAUDRP ! RET ;out baudrate port
OUT$MODCTL1: OUT MODCTL1 ! RET ;out modem control port #1
OUT$MODCTL2: OUT MODCTL2 ! RET ;out modem control port #2
;
;================== END OF SPECIAL PMMI PORTS ==========================
;
;
LOGONPTR: DW LOGON
JMP$DIAL: DS 3
JMP$DISCONNT: DS 3
JMP$GOODBYE: JMP GOODBYE
JMP$INITMOD: JMP INITMOD
RET ! NOP ! NOP
RET ! NOP ! NOP
RET ! NOP ! NOP
JMP$SETUPR: JMP SETUPR
JMP$SPCLMENU: JMP SPCLMENU
JMP$SYSVER: JMP SYSVER
JMP$BREAK JMP SENDBRK
;
;
; NEXT SIX LINES SHOULD NOT BE CHANGED BY USER OVERLAY AS THESE GO TO
; SPECIFIC LOCATIONS IN THE MAIN PROGRAM, NOT IN THE OVERLAY.
;
JMP$ILPRT: DS 3
JMP$INBUF: DS 3
JMP$INLNCOMP: DS 3
JMP$INMODEM: DS 3
JMP$NXTSCRN: DS 3
JMP$TIMER: DS 3
;
;
; Clear sequences are for Televideo, Lear Siegler, etc. Change to match
; your terminal. (Heath uses ESC 4AH for clear to end of screen, ESC 45H
; to clear screen. Lear Siegler and others use ESC 79H for clear to end
; of screen and ESC 3AH to clear screen.) Room allowed for four bytes.
; (Last zero needed for stopping the string display. Any extra 0's just
; act as NOP's.)
;
CLREOS: CALL JMP$ILPRT ;was ILPRT
DB 0,0,0,0,0 ;dave hardy had 059h,0,0,0,0
RET
;.....
;
;
CLRSCRN:CALL JMP$ILPRT ; was ILPRT
DB 1AH,0,0,0,0 ; was 1eh,59h,59h,00 in dave hardy version
RET
;.....
;
;
;======================= SIGN-ON MESSAGE ==============================
;
; Send version number and date
;
SYSVER: CALL JMP$ILPRT ; was LDA
DB ' Sanyo MBC-1000 & Anchor Mark XII modem 1200 Baud'
DB CR,LF,cr,lf,cr,lf
db 'MDM722.COM--------M7SY-2.HEX-------M7NM-6RS.HEX'
db cr,lf,cr,lf ;I use above to track patches: customize at will
db 0 ;end of message flag
RET
;.....
;
SYSVER1:JMP SYSVER
;.....
;
;
;==================== LOGON MESSAGE (IF ANY) ===========================
;
; Insert your logon message here. End with a 0 (for"CALL ILPRT").
; PMMIusers have 59 bytes available, non-PMMI users have approximately
; 2K bytes available as they can overwrite all the following PMMI rou-
; tines if they wish. This method allows the external overlays to have
; plenty of room. It keeps the phone number library at a fixed location.
;
LOGON: DB 'Your Name?',CR,LF
DB 0 ;to terminate the logon message
;.....
;
;=========== ANCHOR MARK XII INITIALIZATION ADDED =====================
;
; Insert your initialization routine here if needed. Can replace the
; following special PMMI area to set speed and auto-dial. Over 950
; bytes are available for this purpose. (End your routine with a RET.)
;
;
;=======================================================================
;
; This routine allows a 300 ms. break tone to be send to reset some
; time-share computers.
;
SENDBRK: MVI A,1FH ;SEND A BREAK TONE
JMP GOODBYE1
;.....
;
;
; This routine sends a 300 ms. break tone and sets DTR low for the same
; length of time to disconnect some modesm such as the Bell 212A, etc.
;
GOODBYE: MVI A,08H ;SEND BREAK, TURN OFF DTR
;
GOODBYE1: OUT MODCTL1 ;SEND TO STATUS PORT
MVI B,3 ;WAIT 300 MS.
CALL JMP$TIMER
MVI A,37H ;NORMAL SEND/RECEIVE WITH DTR
OUT MODCTL1 ;SEND TO STATUS PORT
RET
;.....
;
;
; Sanyo MBC-1000 initialization -- sets the 8251A for 8 bits, 1 stop bit,
; no parity, 1200 Baud (was 300 baud)
;
INITMOD: MVI A,5 ;TRANSFER TIME FOR 1200 Baud (was 1=300 BAUD)
STA MSPEED
MVI A,96H ;Set up counter/timer to be baud rate clock
OUT CTIMER
LDA V1
OUT CTIMER-1
MVI A,087H ;INSURE OUT OF MODE state
OUT MODCTL1 ;MODEM STATUS PORT
out modctl1 ;slight extra delay
MVI A,40H ;INITIALIZE USART
OUT MODCTL1 ;MODEM STATUS PORT
LDA V2
ADI 4CH ;8 DATA BITS, 1 STOP, NO PARITY
OUT MODCTL1 ;MODEM STATUS PORT
MVI A,17H ;DTR, RCV, XMT, ERROR RST:hardy had 27h w RTS
OUT MODCTL1 ;MODEM STATUS PORT
IN PORT ;CLEAR DATA PORT
RET
;
V1 DB 010H ;COUNTER VALUE(dflt = 1200; was 040h=300 baud)
V2 DB 2 ;CLOCK DIVISOR 2 works from 150 to 1200 baud
;.....
;========== NON-PMMI SETUP (SPEED CHANGE, ETC.) IF ANY ==============
;
; Insert your speed change and/or auto-dialing routines here.
; Over 950 bytes are available (INCLUDING INITMOD, above).
; End your routine with a RET.
;
;
SETUPR: LXI D,BAUDBUF ;POINT TO NEW INPUT BUFFER
CALL JMP$ILPRT
DB 'Input Baud Rate (300, 1200): ',0 ;, 1800, 2400): ',0
CALL JMP$INBUF
LXI D,BAUDBUF+2
CALL JMP$INLNCOMP ;COMPARE BAUDBUF+2 WITH CHARACTERS BELOW
DB '300',0
JNC OK300 ;GO IF GOT MATCH
CALL JMP$INLNCOMP
DB '1200',0
JNC OK1200
; CALL JMP$INLNCOMP ;killed these lines so only 300/1200 plays
; DB '1800',0
; JNC OK1800
; CALL JMP$INLNCOMP
; DB '2400',0
; JNC OK2400
CALL JMP$ILPRT ;ALL MATCHES FAILED, TELL OPERATOR
DB '++ Incorrect entry ++',CR,LF,BELL,0
JMP SETUPR ;TRY AGAIN
;
OK300: LXI H,0241H ;V1=41h V2=02h ******* WARNING ******
;
;V1 was 40h minor adjustment of the value
;of V1 may be required because of individual
;crystal, component or temperature variations.
SHLD V1 ;SAVE PARAMETERS FOR 300 BAUD
MVI A,1 ;MSPEED 300 BAUD VALUE
JMP LOADBD ;jump to load: Dave you forgot this !!
;
OK1200: LXI H,0210H ;V1=10h V2=02h See Warning in OK300
SHLD V1
MVI A,5
JMP LOADBD
;
; killed the followings lines to restrict baud set to 300 & 1200
;
;OK1800: LXI H,01A0H ;V1=A0h V2=01h
; SHLD V1
; MVI A,6
; JMP loadbd
;
;OK2400: LXI H,0180H ;V1=80h V2=01h
; SHLD V1
; MVI A,6
; JMP loadbd
;
LOADBD: STA INITMOD+1 ;change time-to-send to match baudrate
JMP INITMOD ;reset MSPEED TO NEW BAUDRATE
;
;
;
BAUDBUF: DB 10,0
DS 10
;.....
;
;
; (END OF INITMOD AND SETUP ROUTINES)
;=======================================================================
;
;
; These routines can be used for your equipment. End with RET. If
; using the Hayes Smartmodem this is unavailable without a special ad-
; dress change.
;
SPCLMENU: RET
;
;=======================================================================
;
;
; NOTE: MUST TERMINATE PRIOR TO 0400H (with Smartmodem)
; 0C00H (without Smartmodem)
;
;
END ; ************************************************