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 / XMZS-1.ASM < prev   
Assembly Source File  |  2000-06-30  |  8KB  |  228 lines

  1. ;.............................................................
  2. ;.............................................................
  3. ; XMZS-1.ASM - XMODEM81 PATCH FILE FOR THE Z80-SIO.  11/27/83
  4. ;.............................................................
  5. ;.............................................................
  6. ;
  7. ; Assembly instructions
  8. ;
  9. ;
  10. ;    B>DDT XMODEM81.COM
  11. ;    DDT VERS 2.2
  12. ;    NEXT  PC
  13. ;    1100 0100
  14. ;    -IXMZS-1.HEX        (note the 'I' command)
  15. ;    -R            ('R' loads in the .HEX file)
  16. ;    NEXT  PC
  17. ;    1100 0000
  18. ;    -G0            (return to CP/M)
  19. ;    B>SAVE 17 XMODEM81.COM  (now have a modified .COM file)
  20. ;
  21. ; NOTE: Save 22 (rather than 17) if LOGCAL is TRUE and assembling with
  22. ;    MAC.COM and SEQIO22.LIB.
  23. ;.....................................................................
  24. ; This file along with XMODEMxx.ASM are the only two files necessary
  25. ; to set-up XMODEM for the Kaypro with a Hayes Smartmodem
  26. ;
  27. ; Set USECON equate to FALSE in XMODEMxx.ASM and insert appropriate
  28. ; CONOUT equate below.  See BYE-KPRO.INF for proper CONOUT for Kaypro
  29. ;
  30. ;                                           Steve Sanders
  31. ;                                    Tampa Bay Bandit Board RCP/M
  32. ;.....................................................................   
  33. ;.....................................................................
  34. ;
  35. ; 11/27/83  Updated to XMZS-1           - Steve Sanders
  36. ; 06/03/83  Created Z80SIO from EXT     - Al Krug
  37. ; 04/04/83  Updated to XMODEM74        - Irv Hoff
  38. ; 03/27/83  Updated to XMODEM73        - Irv Hoff
  39. ; 03/17/83  Updated to XMODEM72        - Irv Hoff
  40. ; 03/15/83  Updated to XMODEM71        - Irv Hoff
  41. ;
  42. ; 03/07/83  Added instructions on how to adapt this file to XMODEM70.COM.
  43. ;        Standardized the format.  Added automatic MSPEED from "BYE"
  44. ;        program.  Added CONOUT information.  Adapted from XM70PMMI.
  45. ;                    - Irv Hoff
  46. ;
  47. ;.....................................................................
  48. ;
  49. ; Define True and False
  50. ;
  51. TRUE:      EQU    0FFH
  52. FALSE:      EQU    0
  53. ;
  54. ;.....................................................................
  55. ;
  56. ; Modem & Data Equates
  57. ;
  58. MODDATP:  EQU    04H        ;DATA IN PORT (04H for KAYPRO)
  59. MODDATO:  EQU    MODDATP        ;DATA OUT PORT
  60. MODCTLP:  EQU    MODDATP+2    ;CONTROL/STATUS PORT
  61. MODSNDB:  EQU    4        ;BIT TO TEST FOR SEND
  62. MODSNDR:  EQU    4        ;VALUE WHEN READY
  63. MODRCVB:  EQU    1        ;BIT TO TEST FOR RECEIVE
  64. MODRCVR:  EQU    1        ;VALUE WHEN READY
  65. MODDCDB:  EQU    8        ;CARRIER DETECT BIT
  66. MODDCDA:  EQU    8        ;VALUE WHEN ACTIVE
  67. MODPARE:  EQU    10H        ;VALUE FOR PARITY ERROR
  68. MODOVRE:  EQU    20H        ;VALUE FOR OVERRUN ERROR
  69. MODFRME:  EQU    40H        ;VALUE FOR FRAMING ERROR
  70. MODRESI:  EQU   10H        ;RESET EXTERNAL STATUS/INTERRUPTS
  71. MODERES:  EQU   30H        ;ERROR RESET
  72. ;
  73. ;
  74. LSPEED:      EQU    TRUE        ;TRUE IF USING BY2-17KS OR ANY BYE2-xx
  75.                 ;FALSE IF USING 'SPEED' MANUAL SELECTION
  76. MSPEED:      EQU    3CH        ;LOCATION OF BAUD RATE FACTOR (SET BY
  77. ;                ;'BYE')  SET LOCATION IN 'BYE' TO AGREE.
  78. ;                ;3DH AND 3EH OFTEN USED BY NEWER VER-
  79. ;                ;SIONS OF 'ZCPR'.
  80. XSPEED:      EQU    1        ;SPEED FOR FILE TIME TRANSFER WITHOUT
  81. ;                ;AUTO-SET.  USE ONE OF THE FOLLOWING:
  82. ;                ;0=110 1=300 2=450 3=600 4=710 5=1200
  83. BASE:      EQU    100H        ;START OF CP/M NORMAL PROGRAM AREA
  84. ;
  85. ;.......................................................................
  86. ;
  87. ; Jump table: The jump table must be in exactly the same sequence as the
  88. ; one in XMODEM.  Note the ORG of 103H - This jump table has no jump to
  89. ; 'BEGIN'.
  90. ;
  91. ;
  92.       ORG    BASE+3        ;START AFTER 'JMP BEGIN'
  93. ;
  94. CONOUT:   JMP    0EBFDH        ;MUST BE 00000H IF NOT USED, SEE BELOW
  95.                 ;currently set for a Kaypro-10 with CP/M 2.2D
  96. PMINIT:      JMP    MINIT        ;INITIALIZATION ROUTINE (IF NEEDED)
  97. PUNINIT:  JMP    UNINIT        ;UNDO WHATEVER 'MINIT' DID (OR RETURN)
  98. PSENDR:      JMP    SENDR        ;SEND CHARACTER (VIA POP PSW)
  99. PCAROK:      JMP    CAROK        ;TEST FOR CARRIER
  100. PMDIN:      JMP    MDIN        ;RECEIVE DATA BYTE
  101. PGETCHR:  JMP    GETCHR        ;GET CHARACTER FROM MODEM
  102. PRCVRDY:  JMP    RCVRDY        ;CHECK RECEIVE READY
  103. PSNDRDY:  JMP    SNDRDY        ;CHECK SEND READY
  104. PSPEED:      JMP    SPEED        ;GET SPEED VALUE FOR FILE TRANSFER TIME
  105. PEXTRA1:  JMP    EXTRA1        ;EXTRA FOR CUSTOM ROUTINE
  106. PEXTRA2:  JMP    EXTRA2        ;EXTRA FOR CUSTOM ROUTINE
  107. PEXTRA3:  JMP    EXTRA3        ;EXTRA FOR CUSTOM ROUTINE
  108. ;
  109. ;......................................................................
  110. ;
  111. ; -- To Display the Record Count on the CRT During Program Transfers --
  112. ;    
  113. ;    This one addition requires some work on the part of the user.
  114. ; When "BYE" is added, CP/M is normally moved lower to accomodate the
  115. ; new program above CP/M.  Whenever BYE is called to enable the RCPM
  116. ; capability, it steals some of the addresses contained in the BIOS jump
  117. ; vector table.  In order to display on the CRT during program transfers
  118. ; you need to get into the BIOS console output routine directly, else
  119. ; what is being displayed also tries to go out the modem.  This is a big
  120. ; NO-NO at that time.  (This cannot be done automatically by XMODEM,
  121. ; since BYE has already taken the address we need to find, by the time
  122. ; XMODEM is automatically activated by the remote station.)
  123. ;......................................................................
  124. ;
  125. ; I was always impressed but lost when trying to follow the instructions
  126. ; that were previously here.  So to make this a simple process rather
  127. ; than a rediculous round and round affair, simply get a copy of TELL.COM
  128. ; and run it on your system.  Take the equate listed as  "CONSOLE OUT
  129. ; ROUTINE:"  and plug the value into CONOUT above.
  130. ;
  131. ;                                      Steve Sanders
  132. ;......................................................................
  133. ;
  134. ; ---> CAROK - check for presence of carrier.  RET with Z = carrier on
  135. ;
  136. CAROK:
  137.     MVI    A,MODRESI    ;RESET EXTERNAL STATUS/INTERRUPTS
  138.     OUT    MODCTLP
  139.     IN    MODCTLP        ;GET STATUS
  140.     ANI    MODDCDB        ;GET CARRIER DETECT BIT
  141.     CPI    MODDCDA        ;TEST BIT
  142.     RET
  143. ;
  144. ;..........................................................
  145. ;
  146. EXTRA1:    RET            ;FOR LATER USE
  147. EXTRA2:    RET            ;FOR LATER USE
  148. EXTRA3:    RET            ;FOR LATER USE
  149. ;
  150. ;...........................................................
  151. ;
  152. ; ---> GETCHR - get a character, same as MDIN
  153. ; ---> MDIN - - get a character, same as GETCHR
  154. ;
  155. GETCHR:
  156. MDIN:
  157.     IN    MODDATP        ;GET CHARACTER FROM DATA IN PORT
  158.     RET
  159. ;
  160. ;.......................................................................
  161. ;
  162. MINIT:    RET            ;NO INITIALIZATION REQUIRED
  163. ;
  164. ;.......................................................................
  165. ;
  166. ; ---> RCVRDY - check receive ready.  RET with Z = character available.
  167. ;            Return with error code in A-reg.
  168. ;
  169. RCVRDY:
  170.     IN    MODCTLP        ;GET MODEM STATUS
  171.     PUSH    B        ;SAVE SCRATCH REGISTER
  172.     PUSH    PSW
  173.     MVI    A,1+MODRESI    ;SELECT READ REGISTER 1
  174.     OUT    MODCTLP
  175.     IN    MODCTLP        ;READ THE ERROR STATUS
  176.     ANI    MODFRME+MODOVRE+MODPARE
  177.     MOV    B,A        ;SAVE IT FOR A MOMENT
  178.     MVI    A,MODERES
  179.     OUT    MODCTLP        ;DO AN ERROR RESET COMMAND
  180.     POP    PSW        ;NOW GET MODEM STATUS BACK
  181.     ANI    MODRCVB        ;ISOLATE READY BIT
  182.     CPI    MODRCVR        ;TEST IT
  183.     MOV    A,B        ;GET THE ERROR CODE CHAR. BACK
  184.     POP    B
  185.     RET
  186. ;
  187. ;....................................................................
  188. ;
  189. ; ---> SENDR - send character
  190. ;
  191. SENDR:
  192.     POP    PSW        ;GET THE CHARACTER BACK
  193.     OUT    MODDATO        ;SEND IT TO THE MODEM OUTPUT
  194.     RET
  195. ;
  196. ;....................................................................
  197. ;
  198. ; ---> SNDRDY - check if ready to send.
  199. ;
  200. SNDRDY:
  201.     IN    MODCTLP        ;GET STATUS BYTE
  202.     ANI    MODSNDB        ;ISOLATE READY BIT
  203.     CPI    MODSNDR        ;READY TO SEND?
  204.     RET
  205. ;
  206. ;....................................................................
  207. ;
  208. ; ---> SPEED - sets the time shown for program transfer.
  209. ;
  210. SPEED:
  211.      IF    LSPEED
  212.     LDA    MSPEED        ;GET INDEX FOR BAUD RATE FROM 'BYE'
  213.      ENDIF
  214. ;
  215.      IF     NOT LSPEED
  216.     MVI    A,XSPEED    ;GET INDEX FOR BAUD RATE FROM 'XSPEED'
  217.      ENDIF
  218. ;
  219.     RET
  220. ;
  221. ;....................................................................
  222. ;
  223. UNINIT:    RET            ;NOT INITIALIZED, SO NO 'UN-INITIALIZE'
  224. ;
  225. ;....................................................................
  226. ;
  227.     END
  228.