home *** CD-ROM | disk | FTP | other *** search
/ The Unsorted BBS Collection / thegreatunsorted.tar / thegreatunsorted / programming / asm_programming / AS02.ZIP / SERCOM.ASM < prev    next >
Assembly Source File  |  1985-03-04  |  2KB  |  86 lines

  1. ;
  2. ;    Serial port driver called from basica AHA 8503.01 compiler version
  3. ;    call comport(func,byte,string)
  4. ;
  5. ; func=0 to set port, 1=send string, 2=send character, 3=receive character
  6. ; byte=character to send/receive, port setting
  7. ; string=characters to send
  8. ;
  9. progseg segment para public 'CODE'
  10.     assume    cs:progseg
  11.     public    comport
  12. sercom    equ    14h
  13. ;
  14. comport proc    far
  15.     push    bp
  16.     mov    bp,sp
  17.     push    ds
  18.     push    es
  19.     push    ax
  20.     push    bx
  21.     push    cx
  22.     push    dx
  23. ;
  24.     mov    bx,[bp+10]    ;get function
  25.     mov    ax,[bx]
  26.     cmp    ax,1        ;send string ?
  27.     jz    putstring
  28.     cmp    ax,2        ;send a character ?
  29.     jz    putchar
  30.     cmp    ax,3        ;get a character ?
  31.     jz    getchar
  32. setport:
  33.     mov    bx,[bp+8]    ;get byte value
  34.     mov    ax,[bx]     ;into al
  35.     mov    ah,0        ;set port command
  36.     mov    dx,0        ;com 1
  37.     int    sercom        ;serial communications vector
  38. ;    mov    bx,[bp+8]    ;return error byte value
  39. ;    mov    [bx],ah     ;only high byte of error status
  40.     jmp    exit        ;finish
  41. putchar:
  42.     mov    bx,[bp+8]    ;get byte value
  43.     mov    ax,[bx]     ;into al
  44.     mov    ah,1        ;put character command
  45.     mov    dx,0        ;com 1
  46.     int    sercom        ;serial communications vector
  47. ;    mov    bx,[bp+8]    ;return error byte value
  48. ;    mov    [bx],ah     ;only high byte of error status
  49.     jmp    exit        ;finish
  50. getchar:
  51.     mov    ah,2        ;get character command
  52.     mov    dx,0        ;com 1
  53.     int    sercom        ;serial communications vector
  54.     mov    bx,[bp+8]    ;no error byte value
  55.     mov    [bx],al     ;
  56.     jmp    exit        ;finish
  57. putstring:
  58.     mov    bx,[bp+6]    ;get string address
  59.     mov    cl,[bx]     ;get string length
  60.     mov    dx,[bx+2]    ;get string address
  61.     mov    bx,dx        ;put address in bx
  62.     mov    ch,0        ;zero high byte
  63. putst:
  64.     mov    al,[bx]
  65.     mov    ah,1        ;put character command
  66.     mov    dx,0        ;com 1
  67.     int    sercom        ;serial communications vector
  68.     CMP    AH,0
  69.     JNZ    PUTST
  70.     inc    bx        ;bump pointer
  71.     loop    putst        ;send entire string
  72. ;    mov    bx,[bp+8]    ;return error byte value
  73. ;    mov    [bx],ah     ;only high byte of error status
  74. exit:
  75.     pop    dx
  76.     pop    cx
  77.     pop    bx
  78.     pop    ax
  79.     pop    es
  80.     pop    ds
  81.     pop    bp
  82.     ret    6
  83. comport endp
  84. progseg ends
  85.     end
  86.