home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / pub / trs80model1+3 / trsmit.src < prev    next >
Text File  |  2020-01-01  |  5KB  |  235 lines

  1. ;kermit-trs80
  2. ;started 10/10/83
  3. ;updated 04/01/84
  4. ;by Stan Barber
  5. ;based on CP/M-80 Kermit
  6.     ORG    7000H    ;GET OUT OF WAY OF DOS OVERLAYS
  7. ; Symbolic Definitions for some ASCII characters
  8. ;
  9. BELL    EQU    07O    ;ASCII BEL (Control-G)
  10. CTRLC    EQU    03O    ;ASCII ETX (Control-C)
  11. TAB    EQU    11O    ;ASCII Tab (Control-I)
  12. LF    EQU    12O    ;ASCII Line Feed (CTRL-J)
  13. FF    EQU    14O    ;ASCII Form Feed (CTRL-L)
  14. CR    EQU    15O    ;ASCII Carriage Return (CTRL-M)
  15. XON    EQU    21O    ;The the ASCII character used for XON
  16. XOFF    EQU    23O    ;The the ASCII character used for XOFF
  17. ESC    EQU    33O    ;ASCII ESCape
  18. SUBT    EQU    32O    ;ASCII SUB (CTRL-Z)
  19. DEL    EQU    177O    ;ASCII DELete (rubout)
  20. RESET    EQU    0E8H        ;reset uart
  21. BAUDST    EQU    0E9H        ;set baud rate
  22. MNPORT    EQU    0EBH        ;RS232 data port
  23. MNPRTS    EQU    0EAH        ;RS232 STATUS PORT
  24. OUTPUT    EQU    40H
  25. INPUT    EQU    80H
  26. DEFESC    EQU    31        ;<CLEAR> key on key board
  27. DBAUD    EQU    55H        ;Default baud rate (300)
  28. MAXPKT  EQU    '~'-' '+2O    ; Maximum size of a packet.
  29. MAXTRY    EQU    05O        ; Default number of retries on a packet.
  30. IMXTRY    EQU    20O        ; Default number of retries send initiate.
  31. DRPSIZ    EQU    5EH        ; Default receive packet size.
  32. DSPSIZ    EQU    20H        ; Default send packet size.
  33. DSTIME    EQU    08H        ; Default send time out interval.
  34. DRTIME    EQU    05H        ; Default receive time out interval.
  35. DSPAD    EQU    00H        ; Default send padding.
  36. DRPAD    EQU    00H        ; Default receive padding.
  37. DSPADC    EQU    00H        ; Default send padding char.
  38. DRPADC    EQU    00H        ; Default receive padding char.
  39. DSEOL    EQU    CR        ; Default send EOL char.
  40. DREOL    EQU    CR        ; Default receive EOL char.
  41. DSQUOT    EQU    '#'        ; Default send quote char.
  42. DRQUOT    EQU    '#'        ; Default receive quote char.
  43. DSCHKT    EQU    '1'        ; Default checksum type
  44. PAREVN    EQU    00H        ; Even parity.
  45. PARMRK    EQU    03H        ; Mark parity.
  46. PARNON    EQU    06H        ; No parity.
  47. PARODD    EQU    09H        ; Odd parity.
  48. PARSPC    EQU    0CH        ; Space parity.
  49. DEFPAR    EQU    PARNON        ; Default parity.
  50. IBMPAR    EQU    PARMRK        ; IBM COMTEN's parity.
  51. SOH    EQU    01H        ; Start of header char.
  52. BUFSIZ    EQU    0
  53. DIASW    EQU    01H        ; Default is diagnostics on.
  54. CMKEY    EQU    01H        ; Parse a keyword.
  55. CMIFI    EQU    02H        ; Parse an input file spec (can be wild).
  56. CMOFI    EQU    03H        ; Parse an output file spec.
  57. CMCFM    EQU    04H        ; Parse a confirm.
  58. CMTXT    EQU    05H        ; Parse text.
  59. CMIFIN    EQU    10H        ; Parse an input file spec (but no
  60. ;dos calls (all preceeded by @)
  61. @GET    EQU    13H    ;get a byte from a file
  62. @PUT    EQU    1BH    ;put a byte in a file
  63. @KBD    EQU    2BH    ;scan keyboard and return
  64. @DSP    EQU    33H    ;put a character on screen
  65. @PRT    EQU    3BH    ;put a character on the printer
  66. @KEYIN    EQU    40H    ;get a line from keyboard
  67. @KEY    EQU    49H    ;wait for key from keyboard
  68. @EXIT    EQU    402DH    ;normal exit to dos
  69. @ABORT    EQU    4030H    ;abnormal exit to dos
  70. @CMNDI    EQU    4405H    ;execute command =>HL
  71. @ERROR    EQU    4409H    ;print dos error
  72. @FSPEC    EQU    441CH    ;process filespec
  73. @INIT    EQU    4420H    ;initialize a file
  74. @OPEN    EQU    4424H    ;open existing file
  75. @CLOSE    EQU    4428H    ;close open file
  76. @KILL    EQU    442CH    ;kill open file
  77. @VER    EQU    443CH    ;write a sector with verify
  78. START    LD    (OLDSP),SP
  79.     LD    SP,STACK
  80.     CALL    MDMRST
  81.     XOR    A        ;ZERO A
  82.     LD    (FCB),A        ;SET FILE CLOSED FLAG
  83.     LD    DE,VERSIO
  84.     CALL    PRTSTR
  85.     CALL    KERMIT
  86.     JP    EXIT1
  87. MDMRST    LD    A,(SPEED)
  88.     OUT    (RESET),A
  89.     OUT    (BAUDST),A
  90.     LD    A,108
  91.     OUT    (MNPRTS),A
  92.     RET
  93. CMBLNK    PUSH    DE
  94.     LD    DE,CLRTOP
  95.     CALL    PRTSTR
  96.     POP    DE
  97. QUIT:    RET
  98. CONOUT    PUSH    DE
  99.     PUSH    HL
  100.     PUSH    BC
  101.     PUSH    AF
  102.     CALL     @DSP
  103.     POP    AF
  104.     POP    BC
  105.     POP    HL
  106.     POP    DE
  107.     RET
  108. PRTSTR    LD    A,(DE)
  109.     CP    '$'
  110.     RET    Z
  111.     CALL    CONOUT
  112.     INC    DE
  113.     JR    PRTSTR
  114. CONIN    PUSH    DE
  115.     CALL    @KBD
  116.     POP    DE
  117.     RET
  118. KERMIT    LD    DE,FCB
  119.     LD    A,(DE)
  120.     BIT    7,A    ;WAS FILE OPEN?
  121.     CALL    NZ,@CLOSE    ;CLOSE IT IF IT WAS
  122.     LD    DE,KERM
  123.     CALL    PROMPT
  124.     LD    DE,COMTAB
  125.     LD    HL,TOPHLP
  126.     LD    A,CMKEY
  127.     CALL    COMND
  128.     JP    KERMT2
  129.     LD    HL,KERMTB
  130.     LD    C,A
  131.     LD    B,0
  132.     ADD    HL,BC
  133.     JP    (HL)
  134. KERMTB    JP    TELNET
  135.     JP    EXIT
  136.     JP    HELP
  137.     JP    LOG
  138.     JP    READ
  139.     JP    SEND
  140.     JP    SETCOM
  141.     JP    SHOW
  142.     JP    STATUS
  143.     JP    FINISH
  144.     JP    LOGOUT
  145.     JP    BYE
  146.     JP    DIR
  147.     JP    ERA
  148. KERMT2    LD    DE,ERMES1
  149.     CALL    PRTSTR
  150.     JP    KERMIT
  151. KERMT3    LD    DE,ERMES3
  152.     CALL    PRTSTR
  153.     JP    KERMIT
  154. SETPAR    PUSH    HL
  155.     PUSH    BC
  156.     LD    HL,PARITY
  157.     LD    C,(HL)
  158.     LD    B,0
  159.     LD    HL,PARJMP
  160.     ADD    HL,BC
  161.     JP    (HL)
  162. PARJMP    JP    EVEN
  163.     JP    MARK
  164.     JP    NONE
  165.     JP    ODD
  166.     JP    SPACE
  167. NONE    JP    PARRET
  168. EVEN    AND    7FH
  169.     JP    PE,PARRET
  170.     OR    80H
  171.     JP    PARRET
  172. MARK    OR    80H
  173.     JP    PARRET
  174. ODD    AND    7FH
  175.     JP    PO,PARRET
  176.     OR     80H
  177.     JP    PARRET
  178. SPACE    AND    7FH
  179. PARRET    POP    BC
  180.     POP    HL
  181.     RET
  182. OUTCHR    PUSH    DE
  183. OUTCHR1    IN    A,(MNPRTS)
  184.     AND    OUTPUT
  185.     JR    Z,OUTCHR1
  186.     LD    A,E
  187.     CALL    SETPAR
  188.     OUT    (MNPORT),A
  189.     POP    DE
  190.     RET
  191. INCHR    IN    A,(MNPRTS)
  192.     AND    INPUT
  193.     JR    NZ,INCHR2
  194.     CALL    CONIN
  195.     OR    A
  196.     JR    Z,INCHR
  197.     CP    CR
  198.     JR    NZ,INCHR4
  199.     RET
  200. INCHR4    CP    1AH    ;CONTROL-Z?
  201.     JR    Z,INCHR5
  202.     CP    18H    ;CONTROL-X?
  203.     JR    NZ,INCHR
  204. INCHR5    ADD    A,20H
  205.     LD    (CZSEEN),A
  206.     RET
  207. INCHR2    IN    A,(MNPORT)
  208.     LD    B,A
  209.     LD    A,(PARITY)
  210.     CP    PARNON
  211.     LD    A,B
  212.     JP    Z,RSKP
  213.     AND    7FH
  214.     JP    RSKP
  215. EXIT    LD    A,CMCFM
  216.     CALL    COMND
  217.     JP    KERMT3
  218. EXIT1    LD    DE,FCB
  219.     LD    A,(FCB)
  220.     BIT    7,A
  221.     CALL    NZ,@CLOSE    ;JUST IN CASE
  222.     LD    SP,(OLDSP)
  223.     JP    @EXIT
  224. HELP    LD    DE,TOPHLP
  225.     CALL    PRTSTR
  226.     JP    KERMIT
  227. *GET     COMND/SRC    ;COMMAND PARSER
  228. *GET    KILLDIR/SRC    ;KILL AND DIR COMMANDS
  229. *GET    MORE/SRC    ;MOST OF THE NON PROTOCOL RELATED COMMANDS
  230. *GET    GET/SRC        ;RECEIVE PROTOCOL
  231. *GET    SEND/SRC    ;SEND PROTOCOL
  232. *GET    XFER/SRC    ;PROTOCOL COMMON CODE
  233. *GET     KERSTR/SRC    ;STRINGS
  234.     END    START
  235.