home *** CD-ROM | disk | FTP | other *** search
/ ftp.ee.lbl.gov / 2014.05.ftp.ee.lbl.gov.tar / ftp.ee.lbl.gov / mtrek.shar.Z / mtrek.shar / wrtv10.mac < prev    next >
Text File  |  1990-04-02  |  2KB  |  91 lines

  1.     .ENABL    LC
  2.     .TITLE    WRITE
  3.     .IDENT    /MTREK/
  4. ;    *** Digital Equiptment VT-100 ***
  5. ;
  6. ;    FORTRAN callable routine to postion the cursor on a crt
  7. ;    terminal and write a string. There is also a routine to
  8. ;    clear the screen.
  9. ;    Calling sequence:
  10. ;        CALL WRITE(LINE,ICOL,STRING[,ICNT])
  11. ;    LINE    Line to position cursor on
  12. ;    ICOL    Column to position cursor on
  13. ;    STRING    String of text to output
  14. ;    ICNT    Optional character count
  15. ;
  16. ;    Calling sequence:
  17. ;        CALL CLEAR
  18.     .GLOBL    WRITE,CLEAR
  19.  
  20.     LUN=1            ; LUN FOR QIOS
  21.  
  22. WRITE:    MOV    @2(R5),R1    ; GET LINE POSITION
  23.     MOV    #LINE,R0    ; LOC OF BUFFER
  24.     MOV    #11012,R2    ; UNSIGNED BASE 10 TWO CHARS WIDE
  25.     CALL    $CBTA        ; GO DO IT
  26.     MOV    @4(R5),R1    ; AND COLUMN POSITION
  27.     MOV    #COL,R0        ; LOC OF COL BUFFER
  28.     MOV    #11012,R2    ; UNSIGNED BASE 10 TWO CHARS WIDE
  29.     CALL    $CBTA        ; GO DO IT
  30.  
  31.     MOV    6(R5),BUFADR    ; MOVE STRING ADDRESS TO LIST
  32.     CMPB    #4,(R5)        ; CHARACTER COUNT INPUT?
  33.     BEQ    10$        ; BRANCH IF COUNT INPUT
  34.     MOV    #1,BUFARG    ; ONLY ONE ARGUMENT TO FILL
  35.     BR    20$        ; GO DO IT
  36. 10$:    MOV    #2,BUFARG    ; TWO ARGUMENTS TO FILL
  37.     MOV    10(R5),BUFCNT    ; COPY ADDRESS OF COUNT TO LIST
  38. 20$:    MOV    #WRTARG,R5    ; SET UP ARGUMENTS FOR CURSOR
  39.     CALL    FILL        ; AND SEND CURSOR
  40.     MOV    #BUFARG,R5    ; SET UP ARGUMENTS FOR STRING
  41.     TSTB    @2(R5)        ; CHECK FOR ZERO LENGTH STRING
  42.     BEQ    30$        ; BAIL OUT IF ZERO LENGTH
  43.     CALL    FILL        ; AND SEND STRING
  44. 30$:    RETURN            ; AND RETURN
  45. ;
  46. ;    Here is the entry for clear screen
  47. ;
  48. CLEAR:    MOV    #CLRARG,R5    ; SET UP THE ARGUMENTS FOR FILL
  49.     CALL    FILL        ; AND CALL FILL
  50.     RETURN            ; AND RETURN
  51. ;
  52. ;    Here are the argument lists
  53. ;
  54. WRTARG:    .WORD    2        ; NUMBER OF ARGUMENTS TO FILL
  55.     .WORD    WRTSEQ        ; ADDRESS OF CURSOR SEQUENCE
  56.     .WORD    100$        ; CHAR COUNT
  57.     .WORD    0
  58. 100$:    .WORD    WRTNUM
  59.  
  60. BUFARG:    .WORD    0        ; NUMBER OF ARGUMENTS TO FILL
  61. BUFADR:    .WORD    0        ; ADDRESS OF STRING
  62. BUFCNT:    .WORD    0        ; CHAR COUNT
  63.     .WORD    0
  64.  
  65. CLRARG:    .WORD    2        ; NUMBER OF ARGUMENTS TO FILL
  66.     .WORD    CLRSEQ        ; ADDRESS OF CLEAR SCREEN SEQUENCE
  67.     .WORD    200$        ; CHAR COUNT
  68.     .WORD    0
  69. 200$:    .WORD    CLRNUM
  70. ;
  71. ;    Here are the escape sequences
  72. ;
  73.     .NLIST    BIN
  74. CLRSEQ:    .ASCII    <33>/[H/<33>/[J/    ; ESCAPE SEQUENCE TO CLEAR SCREEN
  75. CLRNUM=.-CLRSEQ
  76.  
  77. WRTSEQ:    .BYTE    33,'[        ; ESCAPE SEQUENCE FOR CURSOR POSITION
  78. LINE:    .BLKB    2        ; LINE POSITION
  79.     .BYTE    ';        ;
  80. COL:    .BLKB    2        ; COLUMN POSITION
  81.     .BYTE    'H        ;
  82. WRTNUM=.-WRTSEQ
  83.     .EVEN
  84.     .END
  85.