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

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