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

  1.     .ENABL    LC
  2.     .TITLE    WRITE
  3.     .IDENT    /MTREK/
  4. ;    ***  Hewlett Packard 2645A  ***
  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.     DEC    R1        ; ADJUST 1,1 POSTION
  24.     MOV    #LINE,R0    ; LOC OF BUFFER
  25.     MOV    #11012,R2    ; UNSIGNED BASE 10 TWO CHARS WIDE
  26.     CALL    $CBTA        ; GO DO IT
  27.     MOV    @4(R5),R1    ; AND COLUMN POSITION
  28.     DEC    R1        ; ADJUST 1,1 POSTION
  29.     MOV    #COL,R0        ; LOC OF COL BUFFER
  30.     MOV    #11012,R2    ; UNSIGNED BASE 10 TWO CHARS WIDE
  31.     CALL    $CBTA        ; GO DO IT
  32.  
  33.     MOV    6(R5),BUFADR    ; MOVE STRING ADDRESS TO LIST
  34.     CMPB    #4,(R5)        ; CHARACTER COUNT INPUT?
  35.     BEQ    10$        ; BRANCH IF COUNT INPUT
  36.     MOV    #1,BUFARG    ; ONLY ONE ARGUMENT TO FILL
  37.     BR    20$        ; GO DO IT
  38. 10$:    MOV    #2,BUFARG    ; TWO ARGUMENTS TO FILL
  39.     MOV    10(R5),BUFCNT    ; COPY ADDRESS OF COUNT TO LIST
  40. 20$:    MOV    #WRTARG,R5    ; SET UP ARGUMENTS FOR CURSOR
  41.     CALL    FILL        ; AND SEND CURSOR
  42.     MOV    #BUFARG,R5    ; SET UP ARGUMENTS FOR STRING
  43.     TSTB    @2(R5)        ; CHECK FOR ZERO LENGTH STRING
  44.     BEQ    30$        ; BAIL OUT IF ZERO LENGTH
  45.     CALL    FILL        ; AND SEND STRING
  46. 30$:    RETURN            ; AND RETURN
  47. ;
  48. ;    Here is the entry for clear screen
  49. ;
  50. CLEAR:    MOV    #CLRARG,R5    ; SET UP THE ARGUMENTS FOR FILL
  51.     CALL    FILL        ; AND CALL FILL
  52.     RETURN            ; AND RETURN
  53. ;
  54. ;    Here are the argument lists
  55. ;
  56. WRTARG:    .WORD    2        ; NUMBER OF ARGUMENTS TO FILL
  57.     .WORD    WRTSEQ        ; ADDRESS OF CURSOR SEQUENCE
  58.     .WORD    100$        ; CHAR COUNT
  59.     .WORD    0
  60. 100$:    .WORD    WRTNUM
  61.  
  62. BUFARG:    .WORD    0        ; NUMBER OF ARGUMENTS TO FILL
  63. BUFADR:    .WORD    0        ; ADDRESS OF STRING
  64. BUFCNT:    .WORD    0        ; CHAR COUNT
  65.     .WORD    0
  66.  
  67. CLRARG:    .WORD    2        ; NUMBER OF ARGUMENTS TO FILL
  68.     .WORD    CLRSEQ        ; ADDRESS OF CLEAR SCREEN SEQUENCE
  69.     .WORD    200$        ; CHAR COUNT
  70.     .WORD    0
  71. 200$:    .WORD    CLRNUM
  72. ;
  73. ;    Here are the escape sequences
  74. ;
  75.     .NLIST    BIN
  76. CLRSEQ:    .BYTE    33,110,33,'J    ; ESCAPE SEQUENCE TO CLEAR SCREEN
  77. CLRNUM=.-CLRSEQ
  78.  
  79. WRTSEQ:    .BYTE    33,'&,'a    ; ESCAPE SEQUENCE FOR CURSOR POSITION
  80. LINE:    .BLKB    2        ; LINE POSITION
  81.     .BYTE    'r        ; LOWER CASE "R"
  82. COL:    .BLKB    2        ; COLUMN POSITION
  83.     .BYTE    'C        ; UPPERCASE "C"
  84. WRTNUM=.-WRTSEQ
  85.     .EVEN
  86.     .END
  87.