]> git.sur5r.net Git - cc65/blobdiff - asminc/em-kernel.inc
atari5200: fix COLOR defines' names
[cc65] / asminc / em-kernel.inc
index c5c21421baee98f00ce140e9ed5f6e1f00d29afe..e7cdf9a700f31df657ee85003ec563fb8c122471 100644 (file)
 
 
 ;------------------------------------------------------------------------------
-; Driver header stuff
+; The driver header
+
+.struct EMD_HDR
+        ID      .byte   3       ; Contains 0x65, 0x6d, 0x64 ("emd")
+        VERSION .byte   1       ; Interface version
+        LIBREF  .addr           ; Library reference
+        JUMPTAB .struct
+            INSTALL     .addr   ; INSTALL routine
+            UNINSTALL   .addr   ; UNINSTALL routine
+            PAGECOUNT   .addr   ; PAGECOUNT routine
+            MAP         .addr   ; MAP routine
+            USE         .addr   ; USE routine
+            MAPCLEAN    .addr   ; MAPCLEAN routine
+            COPYFROM    .addr   ; COPYFROM routine
+            COPYTO      .addr   ; COPYTO routine
+        .endstruct
+.endstruct
 
-EMD_HDR_ID              = 0                     ; 0x65, 0x6d, 0x64 ("emd")
-EMD_HDR_VERSION         = 3                     ; Interface version
-
-EMD_HDR_JUMPTAB         = 4
-EMD_HDR_INSTALL         = EMD_HDR_JUMPTAB+0     ; INSTALL routine
-EMD_HDR_UNINSTALL       = EMD_HDR_JUMPTAB+2     ; UNINSTALL routine
-EMD_HDR_PAGECOUNT       = EMD_HDR_JUMPTAB+4     ; PAGECOUNT routine
-EMD_HDR_MAP             = EMD_HDR_JUMPTAB+6     ; MAP routine
-EMD_HDR_USE             = EMD_HDR_JUMPTAB+8     ; USE routine
-EMD_HDR_MAPCLEAN        = EMD_HDR_JUMPTAB+10    ; MAPCLEAN routine
-EMD_HDR_COPYFROM        = EMD_HDR_JUMPTAB+12    ; COPYFROM routine
-EMD_HDR_COPYTO          = EMD_HDR_JUMPTAB+14    ; COPYTO routine
+;------------------------------------------------------------------------------
+; The EMD API version, stored in EMD_HDR::VERSION
 
-EMD_HDR_JUMPCOUNT       = 8                     ; Number of jump vectors
+EMD_API_VERSION         = $02
 
 ;------------------------------------------------------------------------------
-; Offsets into the em_copy structure
+; The asm equivalent to the C em_copy structure
 
-EM_COPY_BUF             = 0
-EM_COPY_OFFS            = 2
-EM_COPY_PAGE            = 3
-EM_COPY_COUNT           = 5
+.struct EM_COPY
+        BUF     .addr           ; Memory buffer to copy from or to
+        OFFS    .byte           ; Offset into page
+        PAGE    .word           ; Starting page to copy from or to
+        COUNT   .word           ; Number of bytes to copy
+        UNUSED  .byte           ; Make the size 8 bytes
+.endstruct
 
 ;------------------------------------------------------------------------------
 ; Variables
 
-               .global _em_drv                         ; Pointer to driver
+        .global _em_drv                         ; Pointer to driver
 
 ;------------------------------------------------------------------------------
 ; Driver entry points
-
+             
         .global emd_install
         .global emd_uninstall
         .global emd_pagecount
         .global emd_map
         .global emd_use
         .global emd_commit
-       .global emd_copyfrom
+        .global emd_copyfrom
         .global emd_copyto
 
 ;------------------------------------------------------------------------------
 ; ASM functions
 
-       .global _em_unload
-       .global _em_install
-       .global _em_uninstall
-       .global _em_pagecount
-       .global _em_map
-        .global _em_use          
-       .global _em_commit
-       .global _em_copyfrom
-       .global _em_copyto
+        .global em_clear_ptr
 
+;------------------------------------------------------------------------------
+; C callable functions
+
+        .global _em_load_driver
+        .global _em_unload
+        .global _em_install
+        .global _em_uninstall
+        .global _em_pagecount
+        .global _em_map
+        .global _em_use
+        .global _em_commit
+        .global _em_copyfrom
+        .global _em_copyto