]> cloudbase.mooo.com Git - kermit-80.git/blobdiff - cpxsyo.asm
Convert line endings to CP/M format (cr/lf).
[kermit-80.git] / cpxsyo.asm
index 5b1cb0ef9264d1663b30f7ede03df8fd30b87f2a..aaba2bbac9011ce1c6c96f6893ef98a52659bfed 100644 (file)
-IF NOT lasm
-.printx * CPXSYO.ASM *
-ENDIF  ;NOT lasm
-;       KERMIT - (Celtic for "FREE")
-;
-;       This is the CP/M-80 implementation of the Columbia University
-;       KERMIT file transfer protocol.
-;
-;       Version 4.0
-;
-;       Copyright June 1981,1982,1983,1984,1985
-;       Columbia University
-;
-; Originally written by Bill Catchings of the Columbia University Center for
-; Computing Activities, 612 W. 115th St., New York, NY 10025.
-;
-; Contributions by Frank da Cruz, Daphne Tzoar, Bernie Eiben,
-; Bruce Tanner, Nick Bush, Greg Small, Kimmo Laaksonen, Jeff Damens, and many
-; others.
-;
-;       This file contains the system dependent part for Sanyo MBC 1100
-;      systems, and has been extracted from the CPMSYO.ASM code (kermit
-;      version 3.5)
-;
-; revision history:
-;
-; edit 1, 27 October, 1987, by OBSchou.  Extracted Sanyo code from CPMSYO.ASM
-;      and massaged fort CP/M kermit V4.09
-;
-; Keep module name, edit number, and last revision date in memory.
-family: db      'CPXSYO.ASM (1)  27-Oct-87 $'
-;\f
-
-; Assembly time message to let me know I'm building the right version.
-; LASM generates an 'S' error along with the message, which is messy, but
-; better than trying to put everything inside a IF m80 OR mac80 conditional,
-; because LASM doesn't like nested IF's, either.
-
-IF sanyo
-.printx * Assembling Kermit-80 for Sanyo MBC 1100 *
-ENDIF
-
-iobyte  EQU     03H     ;Location of I/O byte
-
-if sanyo
-baudrt EQU     0DAH    ;BAUD RATE MEMORY LOCATION
-MNPORT EQU     0DCH    ;COMMUNICATIONS PORT
-MNPRTS EQU     0DDH    ;COMMUNICATIONS PORT STATUS
-OUTPUT EQU     01H     ;OUTPUT READY BIT
-INPUT  EQU     02H     ;INPUT READY BIT
-ENDIF;SANYO
-
-defesc EQU     '\'-100O        ;The default escape character.
-
-; Select initial setting for VT-52 emulation flag.
-vtval   EQU    1
-
-
-sysxin:        ;system initialisation not covered by sysinit
-        ret                     ; return from system-dependent routine
-
-;\f
-
-;
-;       system-dependent termination processing
-;       If we've changed anything, this is our last chance to put it back.
-sysexit:
-        ret
-
-;
-;       system-dependent processing for start of CONNECT command
-;
-syscon:
-        ret
-
-;\f
-
-;
-;       syscls - system-dependent close routine
-;       called when exiting transparent session.
-;
-syscls:
-        ret
-;\f
-
-;
-;       sysinh - help for system-dependent special functions.
-;       called in response to <escape>?, after listing all the
-;       system-independent escape sequences.
-;
-sysinh:        
-       lxi     d,inhlps        ; we got options...
-       call    prtstr          ; print them.
-        ret
-inhlps:
-        db      '$'                     ;[hh] table terminator
-
-;
-;       sysint - system dependent special functions
-;       called when transparent escape character has been typed;
-;       the second character of the sequence is in A (and in B).
-;       returns:
-;       non-skip: sequence has been processed
-;       skip:   sequence was not recognized
-sysint:
-       ani     137O            ; convert lower case to upper, for testing...
-        ret
-
-;      sysflt - system-dependent filter.
-;      called with the character in E.
-;       preserves bc, de, hl.
-;       note: <xon>,<xoff>,<del>, and <nul> are always discarded.
-sysflt:
-        mov     a,e             ; get character for testing
-        ret
-
-;       mdmflt - modem filter [30]
-;       called with character to be sent to printer in E
-;       with parity set as appropriate.
-;       return with accumulator = 0 do do nothing,
-;                               <> 0 to send char in E.
-mdmflt:
-        mov     a,e             ;[30] get character to test
-        ret
-
-
-;       prtflt - printer filter [30]
-;       called with character to be sent to printer in E
-;       returns with a = 0 to do nothing
-;                    a <> 0 to print it.
-;
-;       this routine for those printer that automatically insert
-;       a lf on cr, or cr for lf.  Should this be shifted to 
-;       the system indep. stuff, in say 4.06?
-prtflt:
-        mov     a,e             ; [30] get character to test
-        ret
-
-
-;\f
-
-;
-; system-dependent processing for BYE command.
-;  for apmmdm, heath, and lobo, hang up the phone.
-sysbye:
-        ret
-;\f
-
-;       This is the system-dependent command to change the baud rate.
-;       DE contains the two-byte value from the baud rate table; this
-;       value is also stored in 'speed'.
-sysspd:
-        ret
-
-;\f
-
-;       Speed tables
-; (Note that speed tables MUST be in alphabetical order for later
-; lookup procedures, and must begin with a value showing the total
-; number of entries.  The speed help tables are just for us poor
-; humans.
-
-;       db      string length,string,divisor (2 identical bytes or 1 word)
-; [Toad Hall]
-
-IF sanyo       
-spdtbl EQU     0       ; No speed table for the Sanyo
-sphtbl EQU     0       ; ditto help for speed.
-
-; The following conditionals were once a huge if not statement.  There
-; wasn't enough room to add the lobo to the list, so it had to be broken
-; into 2, which you can't do with an if not.  I redid it as two ifs and
-; applied them to those that wouldn't set baud. [Hal Hostetler]
-;\f
-
-;       This is the system-dependent SET PORT command.
-;       HL contains the argument from the command table.
-sysprt:
-        ret
-;\f
-
-;
-;      Port table not applicable tot he Sanyo...
-prttbl   EQU     0
-prhtbl   EQU     0               ;
-
-;\f
-
-;
-;       selmdm - select modem port
-;       selcon - select console port
-;       selmdm is called before using inpmdm or outmdm;
-;       selcon is called before using inpcon or outcon.
-;       For iobyt systems, diddle the I/O byte to select console or comm port;
-;       For Decision I, switches Multi I/O board to console or modem serial
-;       port.  [Toad Hall]
-;       For the rest, does nothing.
-;       preserves bc, de, hl.
-selmdm:
-        ret
-
-selcon:
-        ret
-;\f
-
-;       Get character from console, or return zero.
-;       result is returned in A.  destroys bc, de, hl.
-;
-inpcon:
-        mvi     c,dconio        ;Direct console I/O BDOS call.
-        mvi     e,0FFH          ;Input.
-        call    BDOS
-        ret
-;\f
-
-;
-;       Output character in E to the console.
-;       destroys bc, de, hl
-;
-outcon:
-        mvi     c,dconio        ;Console output bdos call.
-        call    bdos            ;Output the char to the console.
-        ret
-;\f
-
-;
-;       outmdm - output a char from E to the modem.
-;               the parity bit has been set as necessary.
-;       returns nonskip; bc, de, hl preserved.
-outmdm:
-IF inout
-        in      mnprts          ;Get the output done flag.
-        ani     output          ;Is it set?
-        jz      outmdm          ;If not, loop until it is.
-        mov     a,e
-        out     mnport          ;Output it.
-        ret
-ENDIF;inout
-
-;\f
-
-;
-;       get character from modem; return zero if none available.
-;       for IOBYT systems, the modem port has already been selected.
-;       destroys bc, de, hl.
-inpmdm:
-IF inout
-;Note: modem port should already be selected for mdI.  [Toad Hall]
-        in      mnprts          ;Get the port status into A.
-        ani     input           ;See if the input ready bit is on.
-        rz                      ;If not then return.
-        in      mnport          ;If so, get the char.
-ENDIF;inout
-       ret                     ; return with character in A
-
-
-;
-;       flsmdm - flush comm line.
-;       Modem is selected.
-;       Currently, just gets characters until none are available.
-
-flsmdm: call    inpmdm          ; Try to get a character
-        ora     a               ; Got one?
-        jnz     flsmdm          ; If so, try for another
-        ret                     ; Receiver is drained.  Return.
-
-
-;\f
-
-;
-;       lptstat - get the printer status. Return a=0 if ok, or 0ffh if not.
-lptstat:
-        xra     a               ; assume it is ok.. this may not be necessary
-        ret
-;\f
-
-;
-;       outlpt - output character in E to printer
-;       console is selected.
-;       preserves de.
-outlpt:
-        push    d               ; save DE in either case
-        call    prtflt          ; go through printer filter [30]
-        ana     a               ; if A = 0 do nothing,
-        jz      outlp1          ; [30] if a=0 do nothing
-        mvi     c,lstout
-        call    bdos            ;Char to printer
-outlp1: pop     d               ; restore saved register pair
-        ret
-;\f
-
-;
-;       Screen manipulation routines
-;       csrpos - move to row B, column C
-;
-;       csrpos for terminals that use a leadin sequence followed
-;        by (row + 31.) and (column + 31.)
-;
-csrpos: push    b               ; save coordinates
-        lxi     d,curldn        ; get cursor leadin sequence
-        call    prtstr          ; print it
-        pop     h               ; restore coordinates
-        mov     a,h             ; get row
-        adi     (' '-1)         ; space is row one
-        mov     e,a
-        push    h
-        call    outcon          ; output row
-        pop     h
-        mov     a,l             ; get column
-        adi     (' '-1)         ; space is column one
-        mov     e,a
-        jmp     outcon          ; output it and return
-ENDIF;NOT (robin OR dmII OR osi OR vector OR termin)
-
-       ret             ; Can the Sany do cursor opsitioning??
-
-;
-;
-; delchr - make delete look like a backspace.  Unless delete is a printing
-;       character, we just need to print a backspace. (we'll output clrspc
-;       afterwards)
-;       For Kaypro and Vector General, delete puts a blotch on the screen.
-;       For Apple and Osborne 1, delete moves but doesn't print.
-delchr:
-       mvi     e,bs
-       call    outcon
-
-; erase the character at the current cursor position
-clrspc: mvi     e,' '
-        call    outcon
-        mvi     e,bs            ;get a backspace
-        jmp     outcon
-
-; erase the current line
-clrlin: lxi     d,eralin
-        jmp     prtstr
-
-; erase the whole screen, and go home. preserves b (but not c)
-clrtop: lxi     d,erascr
-        jmp     prtstr
-
-
-
-IF SANYO
-outlin:        DB      ESC,'E',ESC,'H',CR,LF,TAB       ;WHATEVER
-sysver:        DB      'KERMIT-80 V3.9 [SANYO MBC-1100]',CR,LF,'$' ;VERSION HEADING
-DELSTR:        DB      ESC,'K','$'                     ;WHATS A STRING?
-eralin:        DB      ESC,'P','$'                     ;CLEAR SPACE
-;CLRLIN:       DB      ESC,'K','$'                     ;CLEAR LINE
-erascr:        DB      ESC,'E',ESC,'H','$'             ;CLEAR SCREEN AND CURSOR HOME
-curldn:        db      esc,'=','$',0                   ;cursor lead in
-;SCRNP:                DB      ESC,'=',24H,25H,'$'             ;SPOT FOR SCREEN PACKETS
-;SCRNRT:       DB      ESC,'=',25H,25H,'$'             ;SPOT FOR # OF RETRIES
-;SCRFLN:       DB      ESC,'=',26H,25H,'$'             ;SPOT FOR FILE NAME
-;SCRST:                DB      ESC,'=',28H,25H,'$'             ;SPOT FOR STATUS
-;SCREND:       DB      ESC,'=',2AH,25H,'$'             ;SPOT FOR PROMPT
-;SCRERR:       DB      ESC,'=',2DH,25H,'$'             ;SPOT FOR ERRORS
-ttab:                                          ;NO TRANSLATION TABLE
-ta:    DB      ESC,'A',0,0                     ;CURSOR UP
-tb:    DB      ESC,'B',0,0                     ;CURSOR DOWN
-tc:    DB      ESC,'D',0,0                     ;CURSOR RIGHT
-td:    DB      ESC,'C',0,0                     ;CURSOR LEFT
-te:    DB      ESC,'E',0,0                     ;CLEAR SCREEN
-tf:    DB      0,0,0,0                         ;WHAT???
-tg:    DB      0,0,0,0                         ;WHAT???
-th:    DB      ESC,'H',0,0                     ;CURSOR HOME
-ti:    DB      ESC,'A',ESC,'C',0,0             ;REVERSE LINEFEED??
-tj:    DB      ESC,'J',0,0                     ;CLEAR TO END OF SCREEN
-tk:    DB      ESC,'K',0,0                     ;CLEAR TO END OF LINE
-ENDIF;SANYO
-
-ovlend equ     $       ; End of overlay
-
-       END
-\1a
-\1a
-\1a
-\1a
-\1a
-\1a
-\1a
-\1a
-\1a
-\1a
-\1a
-\1a
-\1a
-\1a
-
+IF NOT lasm\r
+.printx * CPXSYO.ASM *\r
+ENDIF  ;NOT lasm\r
+;       KERMIT - (Celtic for "FREE")\r
+;\r
+;       This is the CP/M-80 implementation of the Columbia University\r
+;       KERMIT file transfer protocol.\r
+;\r
+;       Version 4.0\r
+;\r
+;       Copyright June 1981,1982,1983,1984,1985\r
+;       Columbia University\r
+;\r
+; Originally written by Bill Catchings of the Columbia University Center for\r
+; Computing Activities, 612 W. 115th St., New York, NY 10025.\r
+;\r
+; Contributions by Frank da Cruz, Daphne Tzoar, Bernie Eiben,\r
+; Bruce Tanner, Nick Bush, Greg Small, Kimmo Laaksonen, Jeff Damens, and many\r
+; others.\r
+;\r
+;       This file contains the system dependent part for Sanyo MBC 1100\r
+;      systems, and has been extracted from the CPMSYO.ASM code (kermit\r
+;      version 3.5)\r
+;\r
+; revision history:\r
+;\r
+; edit 1, 27 October, 1987, by OBSchou.  Extracted Sanyo code from CPMSYO.ASM\r
+;      and massaged fort CP/M kermit V4.09\r
+;\r
+; Keep module name, edit number, and last revision date in memory.\r
+family: db      'CPXSYO.ASM (1)  27-Oct-87 $'\r
+;\f\r
+\r
+; Assembly time message to let me know I'm building the right version.\r
+; LASM generates an 'S' error along with the message, which is messy, but\r
+; better than trying to put everything inside a IF m80 OR mac80 conditional,\r
+; because LASM doesn't like nested IF's, either.\r
+\r
+IF sanyo\r
+.printx * Assembling Kermit-80 for Sanyo MBC 1100 *\r
+ENDIF\r
+\r
+iobyte  EQU     03H     ;Location of I/O byte\r
+\r
+if sanyo\r
+baudrt EQU     0DAH    ;BAUD RATE MEMORY LOCATION\r
+MNPORT EQU     0DCH    ;COMMUNICATIONS PORT\r
+MNPRTS EQU     0DDH    ;COMMUNICATIONS PORT STATUS\r
+OUTPUT EQU     01H     ;OUTPUT READY BIT\r
+INPUT  EQU     02H     ;INPUT READY BIT\r
+ENDIF;SANYO\r
+\r
+defesc EQU     '\'-100O        ;The default escape character.\r
+\r
+; Select initial setting for VT-52 emulation flag.\r
+vtval   EQU    1\r
+\r
+\r
+sysxin:        ;system initialisation not covered by sysinit\r
+        ret                     ; return from system-dependent routine\r
+\r
+;\f\r
+\r
+;\r
+;       system-dependent termination processing\r
+;       If we've changed anything, this is our last chance to put it back.\r
+sysexit:\r
+        ret\r
+\r
+;\r
+;       system-dependent processing for start of CONNECT command\r
+;\r
+syscon:\r
+        ret\r
+\r
+;\f\r
+\r
+;\r
+;       syscls - system-dependent close routine\r
+;       called when exiting transparent session.\r
+;\r
+syscls:\r
+        ret\r
+;\f\r
+\r
+;\r
+;       sysinh - help for system-dependent special functions.\r
+;       called in response to <escape>?, after listing all the\r
+;       system-independent escape sequences.\r
+;\r
+sysinh:        \r
+       lxi     d,inhlps        ; we got options...\r
+       call    prtstr          ; print them.\r
+        ret\r
+inhlps:\r
+        db      '$'                     ;[hh] table terminator\r
+\r
+;\r
+;       sysint - system dependent special functions\r
+;       called when transparent escape character has been typed;\r
+;       the second character of the sequence is in A (and in B).\r
+;       returns:\r
+;       non-skip: sequence has been processed\r
+;       skip:   sequence was not recognized\r
+sysint:\r
+       ani     137O            ; convert lower case to upper, for testing...\r
+        ret\r
+\r
+;      sysflt - system-dependent filter.\r
+;      called with the character in E.\r
+;       preserves bc, de, hl.\r
+;       note: <xon>,<xoff>,<del>, and <nul> are always discarded.\r
+sysflt:\r
+        mov     a,e             ; get character for testing\r
+        ret\r
+\r
+;       mdmflt - modem filter [30]\r
+;       called with character to be sent to printer in E\r
+;       with parity set as appropriate.\r
+;       return with accumulator = 0 do do nothing,\r
+;                               <> 0 to send char in E.\r
+mdmflt:\r
+        mov     a,e             ;[30] get character to test\r
+        ret\r
+\r
+\r
+;       prtflt - printer filter [30]\r
+;       called with character to be sent to printer in E\r
+;       returns with a = 0 to do nothing\r
+;                    a <> 0 to print it.\r
+;\r
+;       this routine for those printer that automatically insert\r
+;       a lf on cr, or cr for lf.  Should this be shifted to \r
+;       the system indep. stuff, in say 4.06?\r
+prtflt:\r
+        mov     a,e             ; [30] get character to test\r
+        ret\r
+\r
+\r
+;\f\r
+\r
+;\r
+; system-dependent processing for BYE command.\r
+;  for apmmdm, heath, and lobo, hang up the phone.\r
+sysbye:\r
+        ret\r
+;\f\r
+\r
+;       This is the system-dependent command to change the baud rate.\r
+;       DE contains the two-byte value from the baud rate table; this\r
+;       value is also stored in 'speed'.\r
+sysspd:\r
+        ret\r
+\r
+;\f\r
+\r
+;       Speed tables\r
+; (Note that speed tables MUST be in alphabetical order for later\r
+; lookup procedures, and must begin with a value showing the total\r
+; number of entries.  The speed help tables are just for us poor\r
+; humans.\r
+\r
+;       db      string length,string,divisor (2 identical bytes or 1 word)\r
+; [Toad Hall]\r
+\r
+IF sanyo       \r
+spdtbl EQU     0       ; No speed table for the Sanyo\r
+sphtbl EQU     0       ; ditto help for speed.\r
+\r
+; The following conditionals were once a huge if not statement.  There\r
+; wasn't enough room to add the lobo to the list, so it had to be broken\r
+; into 2, which you can't do with an if not.  I redid it as two ifs and\r
+; applied them to those that wouldn't set baud. [Hal Hostetler]\r
+;\f\r
+\r
+;       This is the system-dependent SET PORT command.\r
+;       HL contains the argument from the command table.\r
+sysprt:\r
+        ret\r
+;\f\r
+\r
+;\r
+;      Port table not applicable tot he Sanyo...\r
+prttbl   EQU     0\r
+prhtbl   EQU     0               ;\r
+\r
+;\f\r
+\r
+;\r
+;       selmdm - select modem port\r
+;       selcon - select console port\r
+;       selmdm is called before using inpmdm or outmdm;\r
+;       selcon is called before using inpcon or outcon.\r
+;       For iobyt systems, diddle the I/O byte to select console or comm port;\r
+;       For Decision I, switches Multi I/O board to console or modem serial\r
+;       port.  [Toad Hall]\r
+;       For the rest, does nothing.\r
+;       preserves bc, de, hl.\r
+selmdm:\r
+        ret\r
+\r
+selcon:\r
+        ret\r
+;\f\r
+\r
+;       Get character from console, or return zero.\r
+;       result is returned in A.  destroys bc, de, hl.\r
+;\r
+inpcon:\r
+        mvi     c,dconio        ;Direct console I/O BDOS call.\r
+        mvi     e,0FFH          ;Input.\r
+        call    BDOS\r
+        ret\r
+;\f\r
+\r
+;\r
+;       Output character in E to the console.\r
+;       destroys bc, de, hl\r
+;\r
+outcon:\r
+        mvi     c,dconio        ;Console output bdos call.\r
+        call    bdos            ;Output the char to the console.\r
+        ret\r
+;\f\r
+\r
+;\r
+;       outmdm - output a char from E to the modem.\r
+;               the parity bit has been set as necessary.\r
+;       returns nonskip; bc, de, hl preserved.\r
+outmdm:\r
+IF inout\r
+        in      mnprts          ;Get the output done flag.\r
+        ani     output          ;Is it set?\r
+        jz      outmdm          ;If not, loop until it is.\r
+        mov     a,e\r
+        out     mnport          ;Output it.\r
+        ret\r
+ENDIF;inout\r
+\r
+;\f\r
+\r
+;\r
+;       get character from modem; return zero if none available.\r
+;       for IOBYT systems, the modem port has already been selected.\r
+;       destroys bc, de, hl.\r
+inpmdm:\r
+IF inout\r
+;Note: modem port should already be selected for mdI.  [Toad Hall]\r
+        in      mnprts          ;Get the port status into A.\r
+        ani     input           ;See if the input ready bit is on.\r
+        rz                      ;If not then return.\r
+        in      mnport          ;If so, get the char.\r
+ENDIF;inout\r
+       ret                     ; return with character in A\r
+\r
+\r
+;\r
+;       flsmdm - flush comm line.\r
+;       Modem is selected.\r
+;       Currently, just gets characters until none are available.\r
+\r
+flsmdm: call    inpmdm          ; Try to get a character\r
+        ora     a               ; Got one?\r
+        jnz     flsmdm          ; If so, try for another\r
+        ret                     ; Receiver is drained.  Return.\r
+\r
+\r
+;\f\r
+\r
+;\r
+;       lptstat - get the printer status. Return a=0 if ok, or 0ffh if not.\r
+lptstat:\r
+        xra     a               ; assume it is ok.. this may not be necessary\r
+        ret\r
+;\f\r
+\r
+;\r
+;       outlpt - output character in E to printer\r
+;       console is selected.\r
+;       preserves de.\r
+outlpt:\r
+        push    d               ; save DE in either case\r
+        call    prtflt          ; go through printer filter [30]\r
+        ana     a               ; if A = 0 do nothing,\r
+        jz      outlp1          ; [30] if a=0 do nothing\r
+        mvi     c,lstout\r
+        call    bdos            ;Char to printer\r
+outlp1: pop     d               ; restore saved register pair\r
+        ret\r
+;\f\r
+\r
+;\r
+;       Screen manipulation routines\r
+;       csrpos - move to row B, column C\r
+;\r
+;       csrpos for terminals that use a leadin sequence followed\r
+;        by (row + 31.) and (column + 31.)\r
+;\r
+csrpos: push    b               ; save coordinates\r
+        lxi     d,curldn        ; get cursor leadin sequence\r
+        call    prtstr          ; print it\r
+        pop     h               ; restore coordinates\r
+        mov     a,h             ; get row\r
+        adi     (' '-1)         ; space is row one\r
+        mov     e,a\r
+        push    h\r
+        call    outcon          ; output row\r
+        pop     h\r
+        mov     a,l             ; get column\r
+        adi     (' '-1)         ; space is column one\r
+        mov     e,a\r
+        jmp     outcon          ; output it and return\r
+ENDIF;NOT (robin OR dmII OR osi OR vector OR termin)\r
+\r
+       ret             ; Can the Sany do cursor opsitioning??\r
+\r
+;\r
+;\r
+; delchr - make delete look like a backspace.  Unless delete is a printing\r
+;       character, we just need to print a backspace. (we'll output clrspc\r
+;       afterwards)\r
+;       For Kaypro and Vector General, delete puts a blotch on the screen.\r
+;       For Apple and Osborne 1, delete moves but doesn't print.\r
+delchr:\r
+       mvi     e,bs\r
+       call    outcon\r
+\r
+; erase the character at the current cursor position\r
+clrspc: mvi     e,' '\r
+        call    outcon\r
+        mvi     e,bs            ;get a backspace\r
+        jmp     outcon\r
+\r
+; erase the current line\r
+clrlin: lxi     d,eralin\r
+        jmp     prtstr\r
+\r
+; erase the whole screen, and go home. preserves b (but not c)\r
+clrtop: lxi     d,erascr\r
+        jmp     prtstr\r
+\r
+\r
+\r
+IF SANYO\r
+outlin:        DB      ESC,'E',ESC,'H',CR,LF,TAB       ;WHATEVER\r
+sysver:        DB      'KERMIT-80 V3.9 [SANYO MBC-1100]',CR,LF,'$' ;VERSION HEADING\r
+DELSTR:        DB      ESC,'K','$'                     ;WHATS A STRING?\r
+eralin:        DB      ESC,'P','$'                     ;CLEAR SPACE\r
+;CLRLIN:       DB      ESC,'K','$'                     ;CLEAR LINE\r
+erascr:        DB      ESC,'E',ESC,'H','$'             ;CLEAR SCREEN AND CURSOR HOME\r
+curldn:        db      esc,'=','$',0                   ;cursor lead in\r
+;SCRNP:                DB      ESC,'=',24H,25H,'$'             ;SPOT FOR SCREEN PACKETS\r
+;SCRNRT:       DB      ESC,'=',25H,25H,'$'             ;SPOT FOR # OF RETRIES\r
+;SCRFLN:       DB      ESC,'=',26H,25H,'$'             ;SPOT FOR FILE NAME\r
+;SCRST:                DB      ESC,'=',28H,25H,'$'             ;SPOT FOR STATUS\r
+;SCREND:       DB      ESC,'=',2AH,25H,'$'             ;SPOT FOR PROMPT\r
+;SCRERR:       DB      ESC,'=',2DH,25H,'$'             ;SPOT FOR ERRORS\r
+ttab:                                          ;NO TRANSLATION TABLE\r
+ta:    DB      ESC,'A',0,0                     ;CURSOR UP\r
+tb:    DB      ESC,'B',0,0                     ;CURSOR DOWN\r
+tc:    DB      ESC,'D',0,0                     ;CURSOR RIGHT\r
+td:    DB      ESC,'C',0,0                     ;CURSOR LEFT\r
+te:    DB      ESC,'E',0,0                     ;CLEAR SCREEN\r
+tf:    DB      0,0,0,0                         ;WHAT???\r
+tg:    DB      0,0,0,0                         ;WHAT???\r
+th:    DB      ESC,'H',0,0                     ;CURSOR HOME\r
+ti:    DB      ESC,'A',ESC,'C',0,0             ;REVERSE LINEFEED??\r
+tj:    DB      ESC,'J',0,0                     ;CLEAR TO END OF SCREEN\r
+tk:    DB      ESC,'K',0,0                     ;CLEAR TO END OF LINE\r
+ENDIF;SANYO\r
+\r
+ovlend equ     $       ; End of overlay\r
+\r
+       END\r
+\1a\r
+\1a\r
+\1a\r
+\1a\r
+\1a\r
+\1a\r
+\1a\r
+\1a\r
+\1a\r
+\1a\r
+\1a\r
+\1a\r
+\1a\r
+\1a\r
+\r