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 / MODEM / SSTERM20.LBR / VT100OVL.AZM / VT100OVL.ASM
Assembly Source File  |  2000-06-30  |  8KB  |  222 lines

  1. ;SSTERM VERSION 2.00 - SPLIT SCREEN TERMINAL PROGRAM  (3/22/87)
  2. ;
  3. ;OVERLAY FOR USE WITH VT100 TERMINAL IN THE VT52 MODE ON THE CONKEY-64
  4. ; NOTE:SHOULD ALSO WORK WITH VT100 COMPATABLE TERMINALS
  5. ;
  6. ;TERMINAL PROGRAM FOR USE WITH REAL TIME CONFERANCE,C.B. LIVEWIRE OR ANY OTHER
  7. ;FULL DUPLEX APPLICATIONS WHERE YOU WISH TO KEEP YOUR KEYBOARD TEXT SEPERATE
  8. ;FROM THE TEXT RECEIVED FROM THE MODEM.
  9. ;
  10. ;PROGRAM WRITTEN BY W.MUNSON.... IF YOU FIND ANY BUGS IN THE PROGRAM OR IF YOU
  11. ;NEED ASSISTANCE IN CUSTOMIZING IT FOR YOUR USE, CONTACT ME BY E-MAIL ON GENIE
  12. ;OR ON THE HEATH/ZENITH BBS. (716) 424-2576.
  13. ;
  14. ;NOTE:THIS PROGRAM IS BEING RELEASED AS PUBLIC DOMAIN AND MAY BE DISTRIBUTED
  15. ;TO ALL WHO WISH TO USE IT.
  16. ;
  17. ;TO CUSTOMIZE THIS OVERLAY JUST CHANGE THE FOLLOWING SECTIONS TO REFLECT YOUR
  18. ;SYSTEM'S AND TERMINAL'S NEEDS.  THEN ASSEMBLE THE OVERLAY AND LOAD THE
  19. ;OVERLAY ON TOP OF SSTERM.COM USING "MLOAD" OR ANOTHER PROGRAM.
  20. ;
  21. ;
  22. ;
  23. ;*****************************************************************************
  24. ;
  25. ;
  26. ;THIS SECTION CONTAINS ALL OF THE ADDRESSES AND CONTROL WORDS USED TO
  27. ;COMMAND THE UARTS... THESE ARE THE STANDARD COMMANDS USED WITH THE 8251A.
  28. MDMPRT    EQU    58H    ;this is the address of the modem communication port
  29. STAPRT    EQU    59H    ;this is the address of the modem status port
  30. CONDAT    EQU    40H    ;this is the address of the console data port
  31. CONSTA    EQU    41H    ;this is the address of the console status port
  32.             ;
  33. MODEMK    EQU    4EH    ;uart mode setup word
  34. MODEGO    EQU    37H    ;default modem initialization word
  35. DTROFF    EQU    05H    ;word to turn off dtr
  36. MDMRST    EQU    40H    ;modem reset word
  37. MDMATN    EQU    00H    ;gets the attention of the uart
  38. URTRCV    EQU    02H    ;mask for char ready in usart
  39. URTSND    EQU    01H    ;mask for usart ready for character
  40. START    EQU    1000H    ;start of actual program (dont change this line)
  41. ;
  42. ;*****************************************************************************
  43. ;
  44. YES    EQU    0FFH
  45. NO    EQU    0H
  46. CR    EQU    13    ;ascii code for carrage return
  47. LF    EQU    10    ;ascii code for line feed
  48.             ;
  49.             ;
  50.     ORG    100H    ;start assembly at beginning of the tpa
  51. ;THIS SECTION IS TO ALLOW YOU TO SET UP YOUR MODEM USART AND/OR TERMINAL USART.
  52. ;THIS IS ALSO THE SECTION TO SET UP YOUR TERMINAL (VT100 TO VT52 ETC.)
  53. ;ON THE CONKEY-64 THIS SETS UP THE MODEM USART. (TERM ALREADY SET UP).
  54. ;ROUTINE CANNOT BE LONGER THAN 40H BYTES
  55. INIT:    MVI    A,MDMATN    ;load word to get uart's attention
  56.     OUT    STAPRT
  57.     OUT    STAPRT
  58.     OUT    STAPRT
  59.     MVI    A,MDMRST    ;load reset command
  60.     OUT    STAPRT
  61.     MVI    A,MODEMK    ; mode mask
  62.     OUT    STAPRT
  63.     MVI    A,MODEGO    ;enable transmitter and receiver
  64.     OUT    STAPRT
  65.                 ;
  66. ;THIS SECTION SETS THE VT100 IN TO THE VT52 MODE
  67.     MVI    C,9
  68.     LXI    D,VT52
  69.     CALL    05H        ;call bios print string routine
  70.     JMP    START
  71.                 ;
  72. VT52:    DB    0,0,27,'[?21$'    ;string to send to terminal for vt52 mode
  73.                 ;
  74. ;HERE IS THE SECTION WHICH DEFINES THE TERMINAL CONTROL COMMANDS.
  75. ;
  76. ;YOU MUST BE ABLE TO ADDRESS THE CURSOR OF YOUR TERMINAL.
  77. ;THE FORMAT OF THE STRING IS - FIRST BYTE IS THE NUMBER OF CHARACTERS IN
  78. ;THE STRING THEN THE REMAINING BYTES ARE THE STRING ITSELF.
  79. ;THERE IS NO PROVISION FOR SENDING A CHARACTER BETWEEN THE COL AND ROW
  80. ;DURING CURSOR ADDRESSING (NO VT100 MODE - USE VT52 MODE)
  81.     ORG    140H
  82. CLRLNE:    EQU    $
  83.     DB    2
  84.     DB    27,'K'        ;string sent to clear to end of the
  85.                 ;line. this can be 80 spaces if not
  86.                 ;supported by your terminal
  87.                 ;
  88.     ORG    200H
  89. CURADR:    EQU    $
  90.     DB    2,27,'Y'    ;string sent before cursor address information
  91.                 ;
  92.     ORG    210H
  93. OFFSET:    DB    32        ;value of the offset added to cursor addresses
  94.                 ;
  95. COLROW:    DB    NO        ;send coloum before row for cursor address?
  96.                 ;
  97. NEEDLF:    DB    YES        ;does your terminal need line feeds?  if it
  98.                 ;does then set this bit to yes
  99.                 ;
  100.     ORG    220H
  101. CLRSCN:    EQU    $
  102.     DB    4,27,'H',27,'J'    ;string sent to clear screen-can be 24
  103.                 ;carrage returns
  104.                 ;
  105.     ORG    240H
  106. ALTON:    EQU    $
  107.     DB    2,0,0        ;string to turn on the alternate video mode
  108.                 ;can be 1,0 if not supported by your terminal
  109.     ORG    250H
  110. ALTOFF:    EQU    $
  111.     DB    2,0,0        ;string to turn off the alternate video mode
  112.                 ;can be 1,0 if not supported by your terminal
  113.                 ;
  114.     ORG    260H
  115. SCRLUP:    EQU    $
  116.     DB    2,CR,LF        ;scroll up string should cause one line to
  117.                 ;be inserted at the bottom of the screen
  118.                 ;when cursor is positioned at bottom of screen
  119.                 ;
  120.     ORG    270H
  121. NAME:    EQU    $
  122.     DB    43        ;string to describe the operating system
  123.     DB    'for "CONKEY-64" with VT100 type terminal.',CR,LF
  124.                 ;
  125.                 ;
  126. ;****************************************************************************
  127.                 ;
  128. ;THIS SECTION CONTAINS THE CALLS USED BY THE PROGRAM TO SERVICE THE CONSOLE
  129. ;AND THE MODEM.  DO NOT CHANGE THE STARTING ADDRESS OF THE CALLS.
  130. ;HERE IS A DEESCRIPTION OF THE PURPOSE OF EACH OF THE CALLS.
  131. ;
  132. ;INCDAT: - IS CALLED WHEN THE PROGRAM WANTS TO INPUT A CHARACTER FROM THE
  133. ; CONSOLE.  THIS ROUTINE ACTUALLY GETS THE CHAR AND RETURNS IT IN THE 'A'
  134. ; REGISTER.
  135. ;
  136. ;OUTCDT: - IS CALLED WHEN THE PROGRAM WANTS TO SEND A CHARACTER TO THE CONSOLE.
  137. ; THIS ROUTINE TAKES A CHAR FROM THE 'A' REGISTER AND SENDS IT TO THE CONSOLE.
  138. ;
  139. ;INCSTA: - IS CALLED WHEN THE PROGRAM WANTS TO KNOW IF THERE WAS A
  140. ; CHARACTER TYPED AT THE CONSOLE KEYBOARD. THE CALL RETURNS A NON-ZERO RESULT
  141. ; IF THERE IS A CHARACTER READY.
  142. ;
  143. ;OTCSTA: - IS CALLED WHEN THE PROGRAM WANTS TO KNOW IF THE CONSOLE IS READY
  144. ; TO ACCEPT ANOTHER CHARACTER. THE CALL RETURNS A NON-ZERO RESULT IF THE
  145. ; CONSOLE IS READY FOR ANOTHER CHARACTER.
  146. ;
  147. ;INMDAT: - IS CALLED WHEN THE PROGRAM WANTS TO INPUT A CHARACTER FROM THE
  148. ; MODEM. THIS ROUTINE ACTUALLY GETS THE CHAR AND RETRUNS IT IN THE 'A'
  149. ; REGISTER.
  150. ;
  151. ;OUTMDT: - IS CALLED WHEN THE PROGRAM WANTS TO SEND A CHARACTER TO THE MODEM.
  152. ; THIS ROUTINE ACTUALLY TAKES THE CHAR FROM THE 'A' REGISTER AND SENDS IT TO
  153. ; THE MODEM.
  154. ;
  155. ;INMSTA: - IS CALLED WHEN THE PROGRAM WANTS TO KNOW IF THERE IS A CHARACTER
  156. ; READY TO BE INPUTED FROM THE MODEM. THE ROUTINE RETURNS WITH A NON-ZERO
  157. ; RESULT IF THERE IS A CHARACTER.
  158. ;
  159. ;OTMSTA: - IS CALLED WHEN THE PROGRAM WANTS TO KNOW IF IT CAN SEND A CHAR TO
  160. ; THE MODEM. THE ROUTINE RETURNS WITH A NON-ZERO RESULT IF THE MODEM IS READY.
  161. ;
  162. ;OUTMST: - IS CALLED WHEN THE PROGRAM WANTS TO SEND INFO TO THE MODEM
  163. ; COMMAND PORT. THE INFO IS IN THE 'A' REGISTER. THIS CALL IS USED TO SET
  164. ; UP THE MODEM USART.
  165. ;******************************************************************************
  166.     ORG    370H
  167. INCDAT:    IN    CONDAT        ;get char from console usart
  168.     RET
  169. ;
  170.     ORG    380H
  171. OUTCDT:    OUT    CONDAT        ;send char to console usart
  172.     RET
  173. ;
  174.     ORG    390H
  175. INCSTA:    IN    CONSTA        ;get status from console usart
  176.     ANI    URTRCV        ;mask to give non-zero result if uart has a
  177.     RET            ;to char ready to be inputted
  178. ;
  179.     ORG    398H
  180. OTCSTA:    IN    CONSTA        ;get status from console uart
  181.     ANI    URTSND        ;mask to give non-zero result if console ready
  182.     RET            ;to send character
  183. ;                ;
  184.  
  185.     ORG    3A0H
  186. INMDAT:    IN    MDMPRT        ;get char from modem usart
  187.  
  188.     RET
  189. ;
  190.     ORG    3B0H
  191. OUTMDT:    OUT    MDMPRT        ;send char to modem usart
  192.     RET
  193. ;
  194.     ORG    3C0H
  195. INMSTA:    IN    STAPRT        ;get status from modem usart
  196.     ANI    URTRCV        ;mask for modem ready to input character
  197.     RET
  198. ;
  199.     ORG    3C8H
  200. OTMSTA:    IN    STAPRT        ;get status from modem usart
  201.     ANI    URTSND        ;mask for modem ready to send character
  202.     RET
  203.                 ;
  204.     ORG    3D0H
  205. OUTMST:    OUT    STAPRT        ;send command to modem status port
  206.     RET
  207. ;
  208. ;THIS ROUTINE IS HERE TO ALLOW YOU TO RESET YOUR TERMINAL TO IT'S NORMAL
  209. ;CONDITION BEFORE EXITING TO CP/M.
  210. ;THE ROUTINE SHOULD END WITH A JUMP TO THE WARM START ROUTINE (0000H)
  211. ;THE ROUTINE CANNOT BE MORE THAN 20H BYTES LONG
  212.     ORG    3E0H
  213. RESET:    MVI    C,9        ;
  214.     LXI    D,RSTNG        ;
  215.     CALL    05H        ;send string to reset terminal to vt100
  216.     JMP    0000H        ;
  217.                 ;
  218. RSTNG:    DB    0,0,27,'<$'    ;
  219.                 ;
  220.     ORG    1000H        ;this is the start of the main program.
  221.     END
  222.