|
|
1.1 ! root 1: ; ! 2: ; _GSCI.EQU 5.20A June 8, 1995 ! 3: ; ! 4: ; The Greenleaf Comm Library ! 5: ; ! 6: ; Copyright (C) 1984-1994 Greenleaf Software Inc. All Rights Reserved. ! 7: ; ! 8: ; NOTES ! 9: ; ! 10: ; This file contains all the ASM equates needed for the Level 1 ! 11: ; ASM files. ! 12: ; ! 13: ; MODIFICATIONS ! 14: ; ! 15: ; December 12, 1992 4.00A : Initial release ! 16: ; ! 17: ! 18: if @DataSize NE 0 ! 19: ptrsize equ 2 ; Number of words in pointer ! 20: else ! 21: ptrsize equ 1 ! 22: endif ! 23: ! 24: MAX_PORT equ 35 ! 25: ; Some ASCII symbols ! 26: NUL equ 0 ! 27: SOH equ 1 ! 28: STX equ 2 ! 29: ETX equ 3 ! 30: EOT equ 4 ! 31: ACK equ 6 ! 32: DLE equ 10h ! 33: NAK equ 15h ! 34: ! 35: ; ! 36: ; Note: it would be good to get rid of all these definitions and ! 37: ; replace them with a single include of _8250.equ ! 38: ; ! 39: ; The 8250 port offsets, relative to base (com1, com2, etc.) ! 40: ! 41: BASE equ 0 ! 42: TXBUF equ 0 ; Tx Buffer ! 43: RXBUF equ 0 ; Rx Buffer ! 44: BRLSB equ 0 ; baud rate LSB divisor latch ! 45: BRMSB equ 1 ; baud rate MSB ! 46: INTER equ 1 ; interrupt enable register ! 47: INTID equ 2 ; interrupt ID register ! 48: FIFOCTL equ 2 ; 16550 FIFI control register ! 49: LCREG equ 3 ; line control register ! 50: MCREG equ 4 ; modem control reg ! 51: LSREG equ 5 ; line status reg ! 52: MSREG equ 6 ; modem status reg ! 53: ! 54: ; Equates for bits in the line control register ! 55: ! 56: WLS0 equ 00000001b ; word length select bit 0 ! 57: WLS1 equ 00000010b ; word length select bit 1 ! 58: NSB equ 00000100b ; number stop bits ! 59: PAREN equ 00001000b ; parity enable ! 60: PAREVN equ 00010000b ; parity even ! 61: PARSTK equ 00100000b ; stick parity ! 62: SBREAK equ 01000000b ; send break ! 63: DLAB equ 10000000b ; set DLAB ! 64: ! 65: ; Equates for bits in Line Status register ! 66: ! 67: DATARDY equ 00000001b ; data ready ! 68: OVERRN equ 00000010b ; overrun error ! 69: PARERR equ 00000100b ; parity error ! 70: FRAMERR equ 00001000b ; framing error ! 71: RBREAK equ 00010000b ; break interrupt (received break) ! 72: THRE equ 00100000b ; transmitter holding reg empty ! 73: TSRE equ 01000000b ; tx shift register empty ! 74: ! 75: ; Equates for bits in Modem Control register ! 76: ! 77: DTR equ 00000001b ; DTR ! 78: RTS equ 00000010b ; RTS ! 79: OUT1 equ 00000100b ; aux signal "out1" (not used) ! 80: OUT2 equ 00001000b ; ditto "out2" ! 81: LOOPIT equ 00010000b ; loop mode latch ! 82: ! 83: ; Equates for bits in Modem Status register ! 84: ! 85: DCTS equ 00000001b ; delta CTS ! 86: DDSR equ 00000010b ; delta DSR ! 87: TERI equ 00000100b ; trailing edge RI ! 88: DRLSD equ 00001000b ; delta Rx Line Signal Detect ! 89: CTS equ 00010000b ; CTS ! 90: DSR equ 00100000b ; DRS ! 91: RINGIN equ 01000000b ; RI ! 92: RLSD equ 10000000b ; Rx Line Signal Detect ! 93: ! 94: ; Equates for bits in Interrupt Enable register ! 95: ! 96: ENRX equ 00000001b ; enable Data Available int ! 97: ENTX equ 00000010b ; enable Tx Holding Reg Empty int ! 98: ENRXS equ 00000100b ; enable Rx Special Conditions int ! 99: ENMS equ 00001000b ; enable Modem Status Interrupt ! 100: ! 101: ; chst_bits -- Channel status bits ! 102: ; ! 103: ALERT equ 0000000000000001b ;any condition needing attention ! 104: RXEMPTY equ 0000000000000010b ;receive buffer empty ! 105: RXFULL equ 0000000000000100b ;receive buffer full ! 106: RXOVFLOW equ 0000000000001000b ;receive buffer overflow ! 107: TXEMPTY equ 0000000000010000b ;transmit buffer empty ! 108: TXFULL equ 0000000000100000b ;transmit buffer full ! 109: LINERRG equ 0000000001000000b ;line error ! 110: MODCHG equ 0000000010000000b ;modem status change ! 111: XCHRUN equ 0000000100000000b ;transmit interrupts are running ! 112: RCHRUN equ 0000001000000000b ;receive interrupts are running ! 113: TXWXON equ 0000010000000000b ;transmit side is waiting for xon ! 114: TXWCTS equ 0000100000000000b ;transmit side is waiting for cts ! 115: TXWALERT equ 0001000000000000b ;transmit side is waiting for alert ! 116: XOFFSENT equ 0010000000000000b ;xoff character has been sent ! 117: RTSACTIVE equ 0100000000000000b ;reflects current state of RTS ! 118: TXIFLAG equ 1000000000000000b ;psuedo interrupt enable bit ! 119: ! 120: ; chmode_bits (channel mode bits) ! 121: ; ! 122: IS_TXINT equ 0000000000000001b ;1 = tx interrupts enabled ! 123: IS_RXINT equ 0000000000000010b ;1 = rx interrupts enabled ! 124: IS_ASCII equ 0000000000000100b ;1 = ascii mode (strip msb) ! 125: IS_RXERROR equ 0000000000001000b ;1 = track errors on each rx char. ! 126: IS_RX_XOFFMODE equ 0000000000010000b ;1 = RX flow control enabled ! 127: IS_CTSMODE equ 0000000000100000b ;1 = cts flow control mode enabled ! 128: IS_IGALERT equ 0000000001000000b ;1 = ignore alert ! 129: IS_IGDSR equ 0000000010000000b ;1 = ignore DSR ! 130: IS_IGCD equ 0000000100000000b ;1 = ignore CD (carrier detect) ! 131: IS_IGMSTAT equ 0000001000000000b ;1 = ignore modem status changes ! 132: IS_IGRCVER equ 0000010000000000b ;1 = ignore receive error condition ! 133: IS_16550 equ 0000100000000000b ;1 = This is a 16550 UART ! 134: IS_BLOCKING equ 0001000000000000b ;1 = app wants to force handshake ! 135: IS_RCHKING equ 0010000000000000b ;1 = isrchk enabled ! 136: IS_RTSCONTROL equ 0100000000000000b ;1 = RTS flow control enabled ! 137: IS_TX_XOFFMODE equ 1000000000000000b ;1 = Transmitter XON/XOFF enabled ! 138: ; Bit definitions for chkflag (check character flag bits) ! 139: ; ! 140: RCHKENABLED equ 1000000000000000b ;1 = rchking enabled for character ! 141: RCHKFLAG equ 0100000000000000b ; set by interrupt routine ! 142: RCHKVAL equ 0000001100000000b ; determine checking mode ! 143: RCHKCHAR equ 0000000011111111b ; these bits hold character ! 144: ! 145: ; The following structure contains all the parameters used by a Tx or ! 146: ; Rx process for a given buffer. ! 147: ; ! 148: ; Note: Pointers pi & po are OFFSET ADDRESSES, NOT RELATIVE TO BOB. ! 149: ; ! 150: portst struc ! 151: intrpt_num dw ? ; 8250 Interrupt # (IRQ) ! 152: base_8250 dw ? ; base i/o address of 8250 ! 153: p_8250lcr dw ? ; previous 8250 line control register ! 154: p_8250mcr dw ? ; previous 8250 modem control register ! 155: p_8250ier dw ? ; previous 8250 interrupt enable register ! 156: p_8250ldl dw ? ; previous divisor least significant byte ! 157: p_8250mdl dw ? ; previous divisor most significant byte ! 158: p_vector dd ? ; previous value for interrupt vector ! 159: ! 160: line_stat dw ? ; line status register ! 161: modem_stat dw ? ; modem status register ! 162: wide_stat dw ? ; composite status for wide-track buffer ! 163: ! 164: irq_8259 dw ? ; interrupt # in 8259 (com0=4) ! 165: saved_8259_bits dw ? ; Previous value of irq_8259 bit ! 166: port_8259 dw ? ; I/O address of 8259 ! 167: ! 168: rx_cell dw ? ; Width of rx buffer ! 169: rx_size dw ? ; Size of rx buffer ! 170: rx_count dw ? ; Number of characters in receive buffer ! 171: rx_head dw ? ; Offset into receive buffer for head ! 172: rx_tail dw ? ; Offset into receive buffer for tail ! 173: IFDEF VGFD ! 174: rx_buffer dw 2 dup(?); This pointer *always* far under VGFD regime ! 175: ELSE ! 176: rx_buffer dw ptrsize dup(?) ! 177: ; Always points to base of receive buffer ! 178: ENDIF ! 179: tx_cell dw ? ; Width of tx buffer ! 180: tx_size dw ? ; Size of tx buffer ! 181: tx_count dw ? ; Number of characters in transmit buffer ! 182: tx_head dw ? ; Offset into transmit buffer for head ! 183: tx_tail dw ? ; Offset into transmit buffer for tail ! 184: ! 185: IFDEF VGFD ! 186: tx_buffer dw 2 dup(?); Always a far ptr under VGFD ! 187: ELSE ! 188: tx_buffer dw ptrsize dup(?) ! 189: ; Always points to base of transmit buffer ! 190: ENDIF ! 191: ! 192: chst_bits dw ? ; Port status bits ! 193: chmode_bits dw ? ; Port mode bits ! 194: rts_lowater dw ? ; When to assert RTS ! 195: rts_hiwater dw ? ; When to deassert RTS ! 196: rx_accum dw ? ; Counter for received characters ! 197: rx_lowater dw ? ; Low water mark, point at which xon get's ! 198: ; transmitted. ! 199: rx_hiwater dw ? ; High water mark, point at which xoff gets ! 200: ; transmitted. ! 201: stop_xmt dw ? ; If xon/xoff enabled character that stops ! 202: ; transmitter. ! 203: start_xmt dw ? ; If xon/xoff enabled character that starts ! 204: ; transmitter. ! 205: stop_rem_xmt dw ? ; Character sent when rx buffer almost full ! 206: start_rem_xmt dw ? ; Character sent when rx buffer almost empty ! 207: ! 208: break_delay dw ? ; Amount of delay for break signal ! 209: aswmodem dw ? ! 210: aswtime dw ? ; ! 211: asrtime dw ? ! 212: ! 213: chkchr_1 dw ? ; Check character #1 ! 214: chkchr_2 dw ? ; Check character #2 ! 215: chkchr_3 dw ? ; Check character #3 ! 216: mscount dw ? ! 217: lscount dw ? ! 218: txcount dw ? ! 219: rxcount dw ? ! 220: out12_mask dw ? ! 221: ls_ms_ier dw ? ! 222: if @DataSize NE 0 ! 223: generic_driver dd ? ! 224: else ! 225: generic_driver dw ? ! 226: endif ! 227: ! 228: ifndef VGFD ! 229: tx_16550_limit dw ? ; FIFO buffer limit for 16550 ! 230: endif ! 231: ! 232: IFDEF VGFD ! 233: reserved1 dw 2 dup(0); for VGFD ! 234: reserved2 dw 2 dup(0); for VGFD ! 235: ENDIF ! 236: ! 237: portst ends ! 238: ! 239: ! 240: PORTINFO STRUC ! 241: IFDEF VGFD ! 242: ptb DW 2 DUP(?) ;Vlad wants all large ptrs ! 243: ELSE ! 244: ptb DW ptrsize DUP(?) ! 245: ENDIF ! 246: as_shport DW ? ! 247: as_shbits DW ? ! 248: as_mask DW ? ! 249: as_xorv DW ? ! 250: handler_type DW ? ;0 = new greenleaf handler, via Hook...() ! 251: ;1 = old greenleaf handler, via asihsel() ! 252: ;2 = multiport hanlder, via Hook...() ! 253: IFDEF VGFD ! 254: task_handle_port dw 1 dup(0); for VGFD ! 255: vm_id_port dw 1 dup(0); for VGFD ! 256: reserved3 dw 2 dup(0); for VGFD ! 257: ENDIF ! 258: ! 259: PORTINFO ENDS ! 260: ! 261: ! 262: PORTINFO_SIZE EQU SIZE PORTINFO ! 263: ! 264: ;==>-- Error return codes for assembler functions. ! 265: ; ! 266: ASSUCCESS equ 0 ;/* No error */ ! 267: ASGENERALERROR equ -1 ;/* Catch-All */ ! 268: ASINVPORT equ -2 ;/* Requested port out of range */ ! 269: ASINUSE equ -3 ;/* port already setup */ ! 270: ASINVBUFSIZE equ -4 ;/* Invalid buffer size requested */ ! 271: ASNOMEMORY equ -5 ;/* No memory available for buffers */ ! 272: ASNOTSETUP equ -6 ;/* asifirst() not run on port */ ! 273: ASINVPAR equ -7 ;/* Invalid parameter */ ! 274: ASBUFREMPTY equ -8 ;/* Buffer is empty */ ! 275: ASBUFRFULL equ -9 ;/* Buffer is full */ ! 276: ASTIMEOUT equ -10 ;/* Function timed out */ ! 277: ASNOCTS equ -11 ;/* CTS was not active */ ! 278: ASNOCD equ -12 ;/* CD (Carrier detect) not active */ ! 279: ASNODSR equ -13 ;/* DSR (Data set ready) not active */ ! 280: ASNO8250 equ -14 ;/* No 8250 installed at i/o address */ ! 281: .list ! 282:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.