]> git.sur5r.net Git - cc65/blobdiff - asminc/ser-kernel.inc
Fixed _textcolor definition.
[cc65] / asminc / ser-kernel.inc
index 66ce8aea7f8f2f40cbe09095c418584eca0397dd..546587515d1310968db74b08b2e8ac2cef4fde5b 100644 (file)
@@ -6,10 +6,10 @@
 ;*                                                                          *
 ;*                                                                          *
 ;*                                                                          *
-;*(C) 2003      Ullrich von Bassewitz                                       *
-;*              Römerstrasse 52                                             *
-;*              D-70794 Filderstadt                                         *
-;*EMail:        uz@cc65.org                                                 *
+;*(C) 2003-2006, Ullrich von Bassewitz                                      *
+;*               Römerstrasse 52                                            *
+;*               D-70794 Filderstadt                                        *
+;*EMail:         uz@cc65.org                                                *
 ;*                                                                          *
 ;*                                                                          *
 ;*This software is provided 'as-is', without any expressed or implied       *
 
 
 ;------------------------------------------------------------------------------
-; Offsets into the driver header
+; The driver header
+
+.struct SER_HDR
+        ID      .byte   3       ; Contains 0x73, 0x65, 0x72 ("ser")
+        VERSION .byte   1       ; Interface version
+        LIBREF  .addr           ; Library reference
+        JUMPTAB .struct
+            SER_INSTALL   .addr   ; SER_INSTALL routine
+            SER_UNINSTALL .addr   ; SER_UNINSTALL routine
+            SER_OPEN      .addr   ; SER_OPEN routine
+            SER_CLOSE     .addr   ; SER_CLOSE routine
+            SER_GET       .addr   ; SER_GET routine
+            SER_PUT       .addr   ; SER_PUT routine
+            SER_STATUS    .addr   ; SER_STATUS routine
+            SER_IOCTL     .addr   ; SER_IOCTL routine
+            SER_IRQ       .addr   ; SER_IRQ routine
+        .endstruct
+.endstruct
 
-SER_HDR_ID              = 0             ; Contains 0x73, 0x65, 0x72 ("ser")
-SER_HDR_VERSION         = 3             ; Interface version
 
-SER_HDR_JUMPTAB         = 4
-SER_HDR_INSTALL         = SER_HDR_JUMPTAB+0     ; INSTALL routine
-SER_HDR_UNINSTALL       = SER_HDR_JUMPTAB+2     ; UNINSTALL routine
-SER_HDR_PARAMS          = SER_HDR_JUMPTAB+4     ; PARAMS routine
-SER_HDR_GET             = SER_HDR_JUMPTAB+6     ; GET routine
-SER_HDR_PUT             = SER_HDR_JUMPTAB+8     ; PUT routine
-SER_HDR_PAUSE           = SER_HDR_JUMPTAB+10    ; PAUSE routine
-SER_HDR_UNPAUSE         = SER_HDR_JUMPTAB+12    ; UNPAUSE routine
-SER_HDR_STATUS          = SER_HDR_JUMPTAB+14    ; STATUS routine
+;------------------------------------------------------------------------------
+; The SER API version, stored SER_HDR::VERSION
 
-SER_HDR_JUMPCOUNT       = 8                     ; Number of jump vectors
+SER_API_VERSION         = $02
 
 ;------------------------------------------------------------------------------
-; Offsets into the struct passed to ser_params
+; ser_params
 
-SER_PARAMS_BAUDRATE     =       0       ; Baudrate
-SER_PARAMS_DATABITS     =       1       ; Number of data bits
-SER_PARAMS_STOPBITS     =       2       ; Number of stop bits
-SER_PARAMS_PARITY       =       3       ; Parity setting
-SER_PARAMS_HANDSHAKE    =       4       ; Type of handshake to use
+.struct SER_PARAMS
+        BAUDRATE        .byte           ; Baudrate
+        DATABITS        .byte           ; Number of data bits
+        STOPBITS        .byte           ; Number of stop bits
+        PARITY          .byte           ; Parity setting
+        HANDSHAKE       .byte           ; Type of handshake to use
+.endstruct
 
 ;------------------------------------------------------------------------------
 ; Serial parameters
 
 ; Baudrate
 SER_BAUD_45_5           =       $00
-SER_BAUD_50                    =       $01
+SER_BAUD_50             =       $01
 SER_BAUD_75             =       $02
-SER_BAUD_110                   =       $03
-SER_BAUD_134_5                 =       $04
+SER_BAUD_110            =       $03
+SER_BAUD_134_5          =       $04
 SER_BAUD_150            =       $05
-SER_BAUD_300                   =       $06
-SER_BAUD_600                   =       $07
-SER_BAUD_1200                  =       $08
+SER_BAUD_300            =       $06
+SER_BAUD_600            =       $07
+SER_BAUD_1200           =       $08
 SER_BAUD_1800           =       $09
-SER_BAUD_2400                  =       $0A
-SER_BAUD_4800                  =       $0B
-SER_BAUD_9600                  =       $0C
-SER_BAUD_19200                 =       $0D
-SER_BAUD_38400                 =       $0E
-SER_BAUD_57600                 =       $0F
-SER_BAUD_115200                =       $10
-SER_BAUD_230400                =       $11
+SER_BAUD_2400           =       $0A
+SER_BAUD_3600           =       $0B
+SER_BAUD_4800           =       $0C
+SER_BAUD_7200           =       $0D
+SER_BAUD_9600           =       $0E
+SER_BAUD_19200          =       $0F
+SER_BAUD_38400          =       $10
+SER_BAUD_57600          =       $11
+SER_BAUD_115200         =       $12
+SER_BAUD_230400         =       $13
+SER_BAUD_31250          =       $14
+SER_BAUD_62500          =       $15
+SER_BAUD_56_875         =       $16
 
 ; Data bit settings
-SER_BITS_5                     =       $00
-SER_BITS_6                     =       $01
-SER_BITS_7                     =       $02
-SER_BITS_8                     =       $03
+SER_BITS_5              =       $00
+SER_BITS_6              =       $01
+SER_BITS_7              =       $02
+SER_BITS_8              =       $03
 
 ; Stop bit settings
-SER_STOP_1                     =       $00
-SER_STOP_2                     =       $01
+SER_STOP_1              =       $00
+SER_STOP_2              =       $01
 
 ; Parity
-SER_PAR_NONE                   =       $00
-SER_PAR_ODD                    =       $01
-SER_PAR_EVEN                   =       $02
-SER_PAR_MARK                   =       $03
-SER_PAR_SPACE                  =       $04
+SER_PAR_NONE            =       $00
+SER_PAR_ODD             =       $01
+SER_PAR_EVEN            =       $02
+SER_PAR_MARK            =       $03
+SER_PAR_SPACE           =       $04
 
 ; Handshake
 SER_HS_NONE             =       $00    ; No handshake
 SER_HS_HW               =       $01    ; Hardware (RTS/CTS) handshake
 SER_HS_SW               =       $02    ; Software handshake
 
-; Bit masks to mask out things from the status returned by rs232_status
-SER_STATUS_PE                  =       $01     ; Parity error
-SER_STATUS_FE                  =       $02     ; Framing error
-SER_STATUS_OE           =       $04    ; Overrun error
-SER_STATUS_DCD                 =       $20     ; NOT data carrier detect
-SER_STATUS_DSR                 =       $40     ; NOT data set ready
+; Bit masks to mask out things from the status returned by ser_status
+SER_STATUS_PE           =       $01     ; Parity error
+SER_STATUS_FE           =       $02     ; Framing error
+SER_STATUS_OE           =       $04     ; Overrun error
+SER_STATUS_DCD          =       $20     ; NOT data carrier detect
+SER_STATUS_DSR          =       $40     ; NOT data set ready
 
 ;------------------------------------------------------------------------------
 ; Variables
 
-               .global _ser_drv                         ; Pointer to driver
+        .global _ser_drv                         ; Pointer to driver
 
 ;------------------------------------------------------------------------------
 ; Driver entry points
 
         .global ser_install
         .global ser_uninstall
-        .global ser_params
+        .global ser_open
+        .global ser_close
         .global ser_get
         .global ser_put
-        .global ser_pause
-        .global ser_unpause
         .global ser_status
-
-
+        .global ser_ioctl
+        .global ser_irq
 
 ;------------------------------------------------------------------------------
-; ASM functions
+; C callable functions
 
+        .global _ser_load_driver
         .global _ser_unload
         .global _ser_install
         .global _ser_uninstall
-        .global _ser_params
+        .global _ser_open
+        .global _ser_close
         .global _ser_get
         .global _ser_put
-        .global _ser_pause
-        .global _ser_unpause
         .global _ser_status
+        .global _ser_ioctl
 
-
-
+        .global _ser_clear_ptr