;/* */
;/* */
;/* */
-;/* (C) 2002 Ullrich von Bassewitz */
-;/* Wacholderweg 14 */
-;/* D-70597 Stuttgart */
-;/* EMail: uz@musoftware.de */
+;/* (C) 2002-2003 Ullrich von Bassewitz */
+;/* Römerstrasse 52 */
+;/* D-70794 Filderstadt */
+;/* EMail: uz@cc65.org */
;/* */
;/* */
;/* This software is provided 'as-is', without any expressed or implied */
;------------------------------------------------------------------------------
-; 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_DEINSTALL = EMD_HDR_JUMPTAB+2 ; DEINSTALL routine
-EMD_HDR_PAGECOUNT = EMD_HDR_JUMPTAB+4 ; PAGECOUNT routine
-EMD_HDR_MAP = EMD_HDR_JUMPTAB+6 ; MAP routine
-EMD_HDR_MAPCLEAN = EMD_HDR_JUMPTAB+8 ; MAPCLEAN routine
-EMD_HDR_COPYFROM = EMD_HDR_JUMPTAB+10 ; COPYFROM routine
-EMD_HDR_COPYTO = EMD_HDR_JUMPTAB+12 ; COPYTO routine
+;------------------------------------------------------------------------------
+; The EMD API version, stored in EMD_HDR::VERSION
-EMD_HDR_JUMPCOUNT = 7 ; 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_deinstall
+ .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_install
- .global _em_deinstall
- .global _em_pagecount
- .global _em_map
- .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