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 / XMODEM / XMSM-1.ASM < prev    next >
Assembly Source File  |  2000-06-30  |  3KB  |  112 lines

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