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 / wrtadm.mac < prev    next >
Text File  |  1990-04-02  |  2KB  |  88 lines

  1.     .ENABL    LC
  2.     .TITLE    WRITE
  3.     .IDENT    /MTREK/
  4. ;        *** Lear Siegler ADM3-A ***
  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.     OFFSET=37        ; OFFSET FOR CURSOR ADDRESSING
  22.  
  23. WRITE:    MOV    @2(R5),R0    ; GET LINE POSITION
  24.     ADD    #OFFSET,R0    ; ADD OFFSET
  25.     MOVB    R0,LINE        ; AND STORE IN BUFFER
  26.     MOV    @4(R5),R0    ; NOW COLUMN POSITION
  27.     ADD    #OFFSET,R0    ; ADD OFFSET
  28.     MOVB    R0,COL        ; AND PUT IN BUFFER
  29.  
  30.     MOV    6(R5),BUFADR    ; MOVE STRING ADDRESS TO LIST
  31.     CMPB    #4,(R5)        ; CHARACTER COUNT INPUT?
  32.     BEQ    10$        ; BRANCH IF COUNT INPUT
  33.     MOV    #1,BUFARG    ; ONLY ONE ARGUMENT TO FILL
  34.     BR    20$        ; GO DO IT
  35. 10$:    MOV    #2,BUFARG    ; TWO ARGUMENTS TO FILL
  36.     MOV    10(R5),BUFCNT    ; COPY ADDRESS OF COUNT TO LIST
  37. 20$:    MOV    #WRTARG,R5    ; SET UP ARGUMENTS FOR CURSOR
  38.     CALL    FILL        ; AND SEND CURSOR
  39.     MOV    #BUFARG,R5    ; SET UP ARGUMENTS FOR STRING
  40.     TSTB    @2(R5)        ; CHECK FOR ZERO LENGTH STRING
  41.     BEQ    30$        ; BAIL OUT IF ZERO LENGTH
  42.     CALL    FILL        ; AND SEND STRING
  43. 30$:    RETURN            ; AND RETURN
  44. ;
  45. ;    Here is the entry for clear screen
  46. ;
  47. CLEAR:    MOV    #CLRARG,R5    ; SET UP THE ARGUMENTS FOR FILL
  48.     CALL    FILL        ; AND CALL FILL
  49.     RETURN            ; AND RETURN
  50. ;
  51. ;    Here are the argument lists
  52. ;
  53. WRTARG:    .WORD    2        ; NUMBER OF ARGUMENTS TO FILL
  54.     .WORD    WRTSEQ        ; ADDRESS OF CURSOR SEQUENCE
  55.     .WORD    100$        ; CHAR COUNT
  56.     .WORD    0
  57. 100$:    .WORD    WRTNUM
  58.  
  59. BUFARG:    .WORD    0        ; NUMBER OF ARGUMENTS TO FILL
  60. BUFADR:    .WORD    0        ; ADDRESS OF STRING
  61. BUFCNT:    .WORD    0        ; CHAR COUNT
  62.     .WORD    0
  63.  
  64. CLRARG:    .WORD    2        ; NUMBER OF ARGUMENTS TO FILL
  65.     .WORD    CLRSEQ        ; ADDRESS OF CLEAR SCREEN SEQUENCE
  66.     .WORD    200$        ; CHAR COUNT
  67.     .WORD    0
  68. 200$:    .WORD    CLRNUM
  69. ;
  70. ;    Here are the escape sequences
  71. ;
  72.     .NLIST    BIN
  73. CLRSEQ:    .BYTE    32        ; ESCAPE SEQUENCE TO CLEAR SCREEN
  74. CLRNUM=.-CLRSEQ
  75.  
  76. WRTSEQ:    .BYTE    33,'=        ; ESCAPE SEQUENCE FOR CURSOR POSITION
  77. LINE:    .BYTE    0        ; LINE POSITION
  78. COL:    .BYTE    0        ; COLUMN POSITION
  79. WRTNUM=.-WRTSEQ
  80.     .EVEN
  81.     .END
  82.