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 / BSTAM / UPMMI2.ASM < prev    next >
Assembly Source File  |  2000-06-30  |  5KB  |  173 lines

  1. ;
  2. ;    UPMMI.ASM ver 2.0 as of 4/27/80
  3. ;       by Keith Petersen, W8SDZ
  4. ;
  5. ;This is the user area for BSTAM version 4.3 for use with
  6. ;a PMMI MM-103 modem.
  7. ;
  8. ;    IF YOU WISH TO USE OTHER REGISTERS SUCH AS HL,BC,DE
  9. ;    (NOT INCLUDING  SP  REGISTER)
  10. ;    BE SURE TO PUSH BSTAM'S REGISTERS ON TO STACK AND POP
  11. ;    THEM BACK OFF BEFORE RETURNING TO BSTAM.
  12. ;    THERE IS AMPLE ROOM TO PUSH ALL REGISTERS ONTO BSTAM'S
  13. ;    STACK, PLUS ROOM FOR 10 LEVELS OF CALL'S.
  14. ;
  15. ;    THERE ARE 300 BYTES OF USER SPACE AVAILABLE TO YOU.
  16. ;
  17. ;    THE JUMP'S CODED AT THE BEGINNING OF THIS PROGRAM
  18. ;    CANNOT BE MOVED IN ANY WAY.
  19. ;
  20. ;    DEFINE PORTS
  21. ;
  22. PMCTL1    EQU    0C0H    ;PMMI UART STATUS PORT
  23. PMDATA    EQU    PMCTL1+1 ;PMMI UART DATA PORT
  24. PMMDMS    EQU    PMCTL1+2 ;PMMI MODEM CHIP STATUS PORT
  25. PMCTL2    EQU    PMCTL1+3 ;PMMI MODEM CHIP CONTROL PORT
  26. ;
  27. ;    CONDITIONAL ASSEMBLY SWITCH
  28. ;
  29. FASTCLK    EQU    0    ;0 = 2 MHZ, 1 = 4 MHZ SYSTEM CLOCK
  30. ;
  31. ;    DEFINE ASCII CHARACTERS USED
  32. ;
  33. CR    EQU    0DH    ;CARRIAGE RETURN
  34. LF    EQU    0AH    ;LINE FEED
  35. ;
  36. BEGIN:    ORG    103H
  37. ;
  38. INITIL    JMP    INITIU    ;UART/USART INITIALIZATION ENTRY POINT
  39. INSPORT    JMP    INSPRU    ;STATUS PORT READ ENTRY POINT
  40. ERRSET    JMP    ERRSTU    ;UART/USART ERROR RESET ENTRY POINT
  41. INPORT    JMP    INPRTU    ;READ DATA PORT ENTRY POINT
  42. OUTPORT    JMP    OUTPRU    ;WRITE DATA PORT ENTRY POINT
  43. ;
  44. ;
  45. ;    THIS IS THE UART/USART INITIALIZATION ROUTINE.
  46. ;    TO BE COMPATIBLE WITH MOST BSTAM USERS USE FOLLOWING
  47. ;    INITIALIZATION GUIDE LINES:
  48. ;    1. USE 1 STOP BIT    (OPTIONAL - 2)
  49. ;    2. USE 8 DATA BITS    (MUST)
  50. ;    3. USE 1 START BIT    (MUST)
  51. ;    4. USE 16X FOR CLOCK RATE     (MUST)
  52. ;    5. USE ASYNCHRONOUS MODE ONLY    (MUST)
  53. ;
  54. ;
  55. INITIU:    CALL    SIGNON    ;TELL USER WHAT'S IMPLEMENTED
  56.     RET        ;RETURN TO BSTAM
  57. ;
  58. ;
  59. ;    THIS IS THE STATUS READ PORT ROUTINE.
  60. ;    WHEN EXITING THIS ROUTINE BSTAM EXPECTS IN REGISTER A
  61. ;    THE FOLLOWING BITS TO BE SET IF NEEDED:
  62. ;    1. 20 BIT SET IF FRAMING ERROR
  63. ;    2. 10 BIT SET IF OVERRUN ERROR
  64. ;    3. 08 BIT SET IF PARITY  ERROR
  65. ;    4. 04 BIT SET IF TRANSMITTER EMPTY (TEOC)
  66. ;    5. 02 BIT SET IF RECEIVER READY (DAV)
  67. ;    6. 01 BIT SET IF TRANSMITTER READY (TBMT)
  68. ;    7. DO NOT SET THE 80 BIT OR 40 BIT
  69. ;
  70. ;    BEFORE WE DO THE UART STATUS CHECK WE WILL CHECK TO
  71. ;    SEE IF CARRIER IS LOST.
  72. ;
  73. INSPRU:    PUSH    B    ;SAVE REGISTERS USED
  74.     PUSH    D
  75. ;
  76.     IF    NOT FASTCLK ;FOR 2MHZ SYSTEM CLOCK
  77.     MVI    B,15    ;WAIT UP TO 15 SECONDS
  78.     ENDIF
  79. ;
  80.     IF    FASTCLK    ;FOR 4MHZ SYSTEM CLOCK
  81.     MVI    B,30    ;WAIT UP TO 15 SECONDS
  82.     ENDIF
  83. ;
  84. ;    1 SECOND TIME DELAY ROUTINE. ENTER WITH DESIRED NUMBER OF
  85. ;    SECONDS IN B REGISTER.
  86. ;
  87. ONESEC:    LXI    D,50000 ;VALUE FOR 2 MHZ CLOCK
  88. ;
  89. TLOOP:    IN    PMMDMS    ;GET MODEM CHIP STATUS
  90.     ANI    04H    ;GET CTS (CARRIER DETECT) BIT
  91.     JZ    CARROK    ;CARRIER NOT LOST, EXIT AND RETURN
  92.     DCR    E    ;DECREMENT TIME DELAY VALUE
  93.     JNZ    TLOOP    ;NOT DONE, DO ANOTHER LOOP
  94.     DCR    D    ;DECREMENT TIME DELAY VALUE
  95.     JNZ    TLOOP    ;NOT DONE, DO ANOTHER LOOP
  96.     DCR    B    ;DECREMENT NUMBER OF SECONDS
  97.     JNZ    ONESEC    ;NOT DONE, DO ANOTHER ONE SEC DELAY
  98. ;
  99. ;    IF WE GET TO HERE, WE HAVE LOST CARRIER FOR 15 SECONDS
  100. ;
  101.     POP    D    ;RESTORE REGS
  102.     POP    B
  103.     XRA    A
  104.     OUT    PMCTL1    ;CAUSE MODEM TO...
  105.     OUT    PMCTL2    ;...HANG UP
  106.     LXI    D,LSTMSG ;POINT TO MESSAGE
  107.     MVI    C,9
  108.     CALL    5    ;PRINT IT
  109.     JMP    0    ;EXIT TO CP/M WARM BOOT
  110. ;
  111. LSTMSG:    DB    CR,LF,'    ++CARRIER LOST++'
  112.     DB    CR,LF,'The modem is now DISCONNECTED'
  113.     DB    CR,LF,'$'
  114. ;
  115. ;    CARRIER IS NOT LOST
  116. ;
  117. CARROK:    POP    D    ;RESTORE DE REGS
  118.     POP    B
  119. ;
  120. ;    NOW GET UART STATUS FOR BSTAM.
  121. ;    IN THIS CASE WE DISCARD ALL ERROR TEST BITS BECAUSE
  122. ;    THE PMMI MODEM HAS NO WAY TO RESET THE ERROR FLAGS
  123. ;    ONCE THEY ARE UP, CAUSING A CONTINUOUS DISPLAY OF
  124. ;    ERROR MESSAGES IN BSTAM.
  125. ;
  126.     IN    PMCTL1    ;GET PMMI UART STATUS
  127.     ANI    07H    ;STRIP ALL BUT TEOC, DAV AND TBMT BITS
  128.     RET
  129. ;
  130. ;    THIS IS THE ERROR RESET FOR UART/USART ROUTINE.
  131. ;    THE PMMI MODEM HAS NO WAY TO RESET THE ERROR FLAGS,
  132. ;    SO WE JUST DO A RETURN.
  133. ;
  134. ERRSTU:    RET        ;RETURN TO BSTAM
  135. ;
  136. ;
  137. ;    THIS IS THE READ DATA PORT ROUTINE.
  138. ;    BEFORE THIS ROUTINE IS ENTERED THE 02 BIT OF
  139. ;    STATUS READ ROUTINE MUST HAVE BEEN SET.
  140. ;    DO NOT CLEAR THE 80 BIT FROM THE DATA INPUT PORT.
  141. ;    RETURN WITH REGISTER A LOADED WITH INPUT DATA.
  142. ;
  143. INPRTU:    IN    PMDATA    ;GET DATA FROM PORT
  144.     RET        ;RETURN TO BSTAM
  145. ;
  146. ;
  147. ;    THIS IS THE WRITE DATA PORT ROUTINE.
  148. ;    BEFORE THIS ROUTINE IS ENTERED THE 04 BIT AND 01 BIT
  149. ;    OF STATUS READ MUST BE SET.
  150. ;    DO NOT CLEAR THE 80 BIT FROM THE DATA OUTPUT PORT.
  151. ;    REGISTER A CONTAINS THE OUTPUT DATA.
  152. ;
  153. OUTPRU:    OUT    PMDATA    ;SEND DATA TO REMOTE CPU
  154.     RET        ;RETURN TO BSTAM
  155. ;
  156. SIGNON:    PUSH    B
  157.     PUSH    D
  158.     PUSH    H
  159.     LXI    D,MESSGE
  160.     MVI    C,9
  161.     CALL    5        ;ANNOUNCE VERSION TO USER
  162.     POP    H
  163.     POP    D
  164.     POP    B
  165.     RET
  166. ;
  167. MESSGE:    DB    CR,LF,CR,LF
  168.     DB    'PMMI Modem ver 2.0 - no initialization done,'
  169.     DB    CR,LF,'tests for loss of carrier.'
  170.     DB    CR,LF,'$'
  171. ;
  172.     END    BEGIN
  173.