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 / TRS-80 / TRS4OVL.LBR / XMTR4SM.AQM / XMTR4SM.ASM
Assembly Source File  |  2000-06-30  |  3KB  |  110 lines

  1. ; SMDMPAT.ASM
  2. ;
  3. ; XMODEMxx PATCH FILE FOR SMARTMODEM
  4. ;
  5. ; 07/17/84 - Modified to use with the TRS-4 and an Anchor
  6. ;            modem. Renamed to XMTR4SM.ASM  - Ed Richter
  7. ; 11/17/83 - Renamed to XMSM-1.ASM    - Irv Hoff
  8. ; 02/11/83 - Edited            - Sigi Kluger
  9. ;
  10. MODCTLP: EQU    0EAH        ;CONTROL/STATUS
  11. MODSNDB: EQU    40H        ;BIT TO TEST FOR SEND
  12. MODSNDR: EQU    40H        ;VALUE WHEN READY
  13. MODRCVB: EQU    80H        ;BIT TO TEST FOR RECEIVE
  14. MODRCVR: EQU    80H        ;VALUE WHEN READY
  15. MODDCDB: EQU    20H        ;CARRIER DETECT BIT
  16. MODDCDA: EQU    0        ;VALUE WHEN ACTIVE
  17. MODDATP: EQU    0E8H        ;PORT RESET/CARRIER DETECT
  18. MODDATO: EQU    0EBH        ;DATA IN/OUT PORT
  19. MSPEED:     EQU    03CH        ;MSPEED-LOADED AFTER BYE SPEED DETECT     
  20. ;
  21. BASE:     EQU    100H        ;start of TPA
  22. ;
  23. ;-------------------------------------------------------------------
  24. ;
  25. ; Jump table: The jump table must be in exactly the same sequence
  26. ; as the one in XMODEM. Note the ORG of 103H - This jump table has
  27. ; no jump to BEGIN.
  28. ;
  29. ;
  30.      ORG    BASE+3    ;start after JMP BEGIN
  31. ;
  32. ;
  33. CONOUT:     JMP    00000    ;CRT out vector (MUST BE JMP 0 IF NOT IMPLEM.)
  34. PMINIT:     JMP    MINIT    ;initialize whatever has to be (or do RET)
  35. PUNINIT: JMP    UNINIT    ;undo whatever MINIT did (or RET)
  36. PSENDR:     JMP    SENDR    ;send data byte on stack (POP PSW / OUT)
  37. PCAROK:     JMP    CAROK    ;test for carrier. RET Z=ok, NZ=no carrier
  38. PMDIN:     JMP    MDIN    ;receive data byte
  39. PGETCHR: JMP    GETCHR    ;IN from modem data only
  40. PRCVRDY: JMP    RCVRDY    ;check receive ready RET Z=ready
  41. PSNDRDY: JMP    SNDRDY    ;check send ready RET Z=ready
  42. PSPEED:     JMP    SPEED    ;get speed factor in ACC
  43. PSPARE1: JMP    SPARE    ;3 jumps for custom routines
  44. PSPARE2: JMP    SPARE
  45. PSPARE3: JMP    SPARE
  46. ;
  47. ;-----------------------------------------------------------------------
  48. ;
  49. SPARE:    RET            ;for later use
  50. MINIT:    RET            ;no initialization required
  51. UNINIT:    RET            ;not initialized, so no un-initialize.
  52. ;.....
  53. ;
  54. ;
  55. ; SNDRDY - check if ready to send
  56. ;
  57. SNDRDY:    IN    MODCTLP        ;get status byte
  58.     ANI    MODSNDB        ;mask off bit to be tested
  59.     XRI    MODSNDR        ;set status flag
  60.     RET
  61. ;.....
  62. ;
  63. ;
  64. ; SENDR - send character
  65. ;
  66. SENDR:    POP    PSW        ;get character from stack
  67.     OUT    MODDATO        ;send character
  68.     RET
  69. ;.....
  70. ;
  71. ;
  72. ; RCVRDY - check receive ready
  73. ;   RET with Z = character available.
  74. ;   RET error code in A
  75. ;
  76. RCVRDY:    IN    MODCTLP
  77.     ANI    MODRCVB        ;isolate ready bit
  78.     CPI    MODRCVR        ;test it
  79.     MVI    A,0
  80.     RET
  81. ;.....
  82. ;
  83. ;
  84. ; MDIN - receive a character (GETCHR is identical)
  85. ;
  86. GETCHR:
  87. MDIN:    IN    MODDATO        ;get character
  88.     RET            ;return it
  89. ;.....
  90. ;
  91. ;
  92. ; SPEED - This routine returns the speed code.
  93. ;   0=110, 1=300, 2=450, 3=600, 4=710, 5=1200
  94. ;   Load your speed byte from low memory, or
  95. ;   simply MVI A,n and RET for default speed only
  96. ;
  97. SPEED:  LDA    MSPEED        ;BYEII is being used with this system
  98.     RET            ;check with yours
  99. ;.....
  100. ;
  101. ;
  102. ; CAROK - check for presence of carrier.
  103. ;   RET with Z = carrier on
  104. ;
  105. CAROK:    IN    MODDATP        ;get status
  106.     ANI    MODDCDB        ;get cd bit
  107.     CPI    MODDCDA        ;test bit
  108.     RET
  109. ;.....
  110.