From 619b215260ccb2db384df6a6c4a6ccaace2a77cb Mon Sep 17 00:00:00 2001 From: Oliver Schmidt Date: Sat, 1 Jun 2013 00:11:31 +0200 Subject: [PATCH] Added library reference em_libref to EMD interface. Occasionally dynamically drivers suffer from not being to refer to content in the C library. Therefore I added a mechanism to allow a C library for a certian target to define a symbol that will be handed over to dynamic drivers for that target. Then the drivers can use their refernce to that symbol to access content in the C library. --- asminc/em-kernel.inc | 21 +++++++++++---------- libsrc/apple2/emd/a2.auxmem.s | 26 +++++++++++++++----------- libsrc/apple2/libref.s | 8 ++++++++ libsrc/atari/emd/atr130.s | 26 +++++++++++++++----------- libsrc/atari/libref.s | 8 ++++++++ libsrc/c128/emd/c128-georam.s | 24 ++++++++++++++---------- libsrc/c128/emd/c128-ram.s | 24 ++++++++++++++---------- libsrc/c128/emd/c128-ram2.s | 24 ++++++++++++++---------- libsrc/c128/emd/c128-ramcart.s | 24 ++++++++++++++---------- libsrc/c128/emd/c128-reu.s | 24 ++++++++++++++---------- libsrc/c128/emd/c128-vdc.s | 26 +++++++++++++++----------- libsrc/c128/libref.s | 8 ++++++++ libsrc/c16/emd/c16-ram.s | 24 ++++++++++++++---------- libsrc/c16/libref.s | 8 ++++++++ libsrc/c64/emd/c64-c256k.s | 24 ++++++++++++++---------- libsrc/c64/emd/c64-dqbb.s | 24 ++++++++++++++---------- libsrc/c64/emd/c64-georam.s | 24 ++++++++++++++---------- libsrc/c64/emd/c64-isepic.s | 24 ++++++++++++++---------- libsrc/c64/emd/c64-ram.s | 24 ++++++++++++++---------- libsrc/c64/emd/c64-ramcart.s | 24 ++++++++++++++---------- libsrc/c64/emd/c64-reu.s | 24 ++++++++++++++---------- libsrc/c64/emd/c64-vdc.s | 24 ++++++++++++++---------- libsrc/c64/emd/dtv-himem.s | 24 ++++++++++++++---------- libsrc/c64/libref.s | 8 ++++++++ libsrc/cbm510/emd/cbm510-ram.s | 24 ++++++++++++++---------- libsrc/cbm510/libref.s | 8 ++++++++ libsrc/cbm610/emd/cbm610-ram.s | 24 ++++++++++++++---------- libsrc/cbm610/libref.s | 8 ++++++++ libsrc/em/em-kernel.s | 11 ++++++++++- libsrc/geos-cbm/emd/geos-vdc.s | 24 ++++++++++++++---------- libsrc/geos-cbm/system/libref.s | 8 ++++++++ 31 files changed, 382 insertions(+), 224 deletions(-) create mode 100644 libsrc/apple2/libref.s create mode 100644 libsrc/atari/libref.s create mode 100644 libsrc/c128/libref.s create mode 100644 libsrc/c16/libref.s create mode 100644 libsrc/c64/libref.s create mode 100644 libsrc/cbm510/libref.s create mode 100644 libsrc/cbm610/libref.s create mode 100644 libsrc/geos-cbm/system/libref.s diff --git a/asminc/em-kernel.inc b/asminc/em-kernel.inc index 1df969225..313bfc0bf 100644 --- a/asminc/em-kernel.inc +++ b/asminc/em-kernel.inc @@ -39,28 +39,29 @@ .struct EMD_HDR ID .byte 3 ; Contains 0x65, 0x6d, 0x64 ("emd") VERSION .byte 1 ; Interface version + LIBREF .addr ; Library reference JUMPTAB .struct - INSTALL .word ; INSTALL routine - UNINSTALL .word ; UNINSTALL routine - PAGECOUNT .word ; PAGECOUNT routine - MAP .word ; MAP routine - USE .word ; USE routine - MAPCLEAN .word ; MAPCLEAN routine - COPYFROM .word ; COPYFROM routine - COPYTO .word ; COPYTO routine + 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 ;------------------------------------------------------------------------------ ; The EMD API version, stored in EMD_HDR::VERSION -EMD_API_VERSION = $00 +EMD_API_VERSION = $01 ;------------------------------------------------------------------------------ ; The asm equivalent to the C em_copy structure .struct EM_COPY - BUF .word ; Memory buffer to copy from or to + 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 diff --git a/libsrc/apple2/emd/a2.auxmem.s b/libsrc/apple2/emd/a2.auxmem.s index ecf78fc37..0ceb083b9 100644 --- a/libsrc/apple2/emd/a2.auxmem.s +++ b/libsrc/apple2/emd/a2.auxmem.s @@ -20,16 +20,20 @@ .byte $65, $6d, $64 ; "emd" .byte EMD_API_VERSION ; EM API version number -; Jump table. +; Library reference - .word INSTALL - .word DEINSTALL - .word PAGECOUNT - .word MAP - .word USE - .word COMMIT - .word COPYFROM - .word COPYTO + .addr $0000 + +; Jump table + + .addr INSTALL + .addr UNINSTALL + .addr PAGECOUNT + .addr MAP + .addr USE + .addr COMMIT + .addr COPYFROM + .addr COPYTO ; ------------------------------------------------------------------------ ; Constants @@ -69,11 +73,11 @@ INSTALL: ; rts ; ------------------------------------------------------------------------ -; DEINSTALL routine. Is called before the driver is removed from memory. +; UNINSTALL routine. Is called before the driver is removed from memory. ; Can do cleanup or whatever. Must not return anything. ; -DEINSTALL: +UNINSTALL: rts diff --git a/libsrc/apple2/libref.s b/libsrc/apple2/libref.s new file mode 100644 index 000000000..507c9887b --- /dev/null +++ b/libsrc/apple2/libref.s @@ -0,0 +1,8 @@ +; +; Oliver Schmidt, 2013-05-31 +; + + .export em_libref + .import _exit + +em_libref := _exit diff --git a/libsrc/atari/emd/atr130.s b/libsrc/atari/emd/atr130.s index b3c31a205..7d663e446 100644 --- a/libsrc/atari/emd/atr130.s +++ b/libsrc/atari/emd/atr130.s @@ -43,16 +43,20 @@ .byte $65, $6d, $64 ; "emd" .byte EMD_API_VERSION ; EM API version number -; Jump table. +; Library reference - .word INSTALL - .word DEINSTALL - .word PAGECOUNT - .word MAP - .word USE - .word COMMIT - .word COPYFROM - .word COPYTO + .addr $0000 + +; Jump table + + .addr INSTALL + .addr UNINSTALL + .addr PAGECOUNT + .addr MAP + .addr USE + .addr COMMIT + .addr COPYFROM + .addr COPYTO ; ------------------------------------------------------------------------ ; Constants @@ -191,11 +195,11 @@ INSTALL: rts ; ------------------------------------------------------------------------ -; DEINSTALL routine. Is called before the driver is removed from memory. +; UNINSTALL routine. Is called before the driver is removed from memory. ; Can do cleanup or whatever. Must not return anything. ; -DEINSTALL: +UNINSTALL: rts diff --git a/libsrc/atari/libref.s b/libsrc/atari/libref.s new file mode 100644 index 000000000..507c9887b --- /dev/null +++ b/libsrc/atari/libref.s @@ -0,0 +1,8 @@ +; +; Oliver Schmidt, 2013-05-31 +; + + .export em_libref + .import _exit + +em_libref := _exit diff --git a/libsrc/c128/emd/c128-georam.s b/libsrc/c128/emd/c128-georam.s index 0c106f406..f2de80916 100644 --- a/libsrc/c128/emd/c128-georam.s +++ b/libsrc/c128/emd/c128-georam.s @@ -27,16 +27,20 @@ .byte $65, $6d, $64 ; "emd" .byte EMD_API_VERSION ; EM API version number -; Jump table. - - .word INSTALL - .word UNINSTALL - .word PAGECOUNT - .word MAP - .word USE - .word COMMIT - .word COPYFROM - .word COPYTO +; Library reference + + .addr $0000 + +; Jump table + + .addr INSTALL + .addr UNINSTALL + .addr PAGECOUNT + .addr MAP + .addr USE + .addr COMMIT + .addr COPYFROM + .addr COPYTO ; ------------------------------------------------------------------------ ; Constants diff --git a/libsrc/c128/emd/c128-ram.s b/libsrc/c128/emd/c128-ram.s index 02979a6dc..f382e9b87 100644 --- a/libsrc/c128/emd/c128-ram.s +++ b/libsrc/c128/emd/c128-ram.s @@ -25,16 +25,20 @@ .byte $65, $6d, $64 ; "emd" .byte EMD_API_VERSION ; EM API version number -; Jump table. - - .word INSTALL - .word UNINSTALL - .word PAGECOUNT - .word MAP - .word USE - .word COMMIT - .word COPYFROM - .word COPYTO +; Library reference + + .addr $0000 + +; Jump table + + .addr INSTALL + .addr UNINSTALL + .addr PAGECOUNT + .addr MAP + .addr USE + .addr COMMIT + .addr COPYFROM + .addr COPYTO ; ------------------------------------------------------------------------ ; Constants diff --git a/libsrc/c128/emd/c128-ram2.s b/libsrc/c128/emd/c128-ram2.s index 9fb8a2836..8a0ba0fac 100644 --- a/libsrc/c128/emd/c128-ram2.s +++ b/libsrc/c128/emd/c128-ram2.s @@ -28,16 +28,20 @@ .byte $65, $6d, $64 ; "emd" .byte EMD_API_VERSION ; EM API version number -; Jump table. - - .word INSTALL - .word UNINSTALL - .word PAGECOUNT - .word MAP - .word USE - .word COMMIT - .word COPYFROM - .word COPYTO +; Library reference + + .addr $0000 + +; Jump table + + .addr INSTALL + .addr UNINSTALL + .addr PAGECOUNT + .addr MAP + .addr USE + .addr COMMIT + .addr COPYFROM + .addr COPYTO ; ------------------------------------------------------------------------ ; Constants diff --git a/libsrc/c128/emd/c128-ramcart.s b/libsrc/c128/emd/c128-ramcart.s index 0bf1072de..6d6a91bbe 100644 --- a/libsrc/c128/emd/c128-ramcart.s +++ b/libsrc/c128/emd/c128-ramcart.s @@ -26,16 +26,20 @@ .byte $65, $6d, $64 ; "emd" .byte EMD_API_VERSION ; EM API version number -; Jump table. - - .word INSTALL - .word UNINSTALL - .word PAGECOUNT - .word MAP - .word USE - .word COMMIT - .word COPYFROM - .word COPYTO +; Library reference + + .addr $0000 + +; Jump table + + .addr INSTALL + .addr UNINSTALL + .addr PAGECOUNT + .addr MAP + .addr USE + .addr COMMIT + .addr COPYFROM + .addr COPYTO ; ------------------------------------------------------------------------ ; Constants diff --git a/libsrc/c128/emd/c128-reu.s b/libsrc/c128/emd/c128-reu.s index b1a979cb5..094ad1d39 100644 --- a/libsrc/c128/emd/c128-reu.s +++ b/libsrc/c128/emd/c128-reu.s @@ -25,16 +25,20 @@ .byte $65, $6d, $64 ; "emd" .byte EMD_API_VERSION ; EM API version number -; Jump table. - - .word INSTALL - .word UNINSTALL - .word PAGECOUNT - .word MAP - .word USE - .word COMMIT - .word COPYFROM - .word COPYTO +; Library reference + + .addr $0000 + +; Jump table + + .addr INSTALL + .addr UNINSTALL + .addr PAGECOUNT + .addr MAP + .addr USE + .addr COMMIT + .addr COPYFROM + .addr COPYTO ; ------------------------------------------------------------------------ ; Constants diff --git a/libsrc/c128/emd/c128-vdc.s b/libsrc/c128/emd/c128-vdc.s index 29dbb4569..dd28ae774 100644 --- a/libsrc/c128/emd/c128-vdc.s +++ b/libsrc/c128/emd/c128-vdc.s @@ -23,16 +23,20 @@ .byte $65, $6d, $64 ; "emd" .byte EMD_API_VERSION ; EM API version number -; Jump table. +; Library reference - .word INSTALL - .word DEINSTALL - .word PAGECOUNT - .word MAP - .word USE - .word COMMIT - .word COPYFROM - .word COPYTO + .addr $0000 + +; Jump table + + .addr INSTALL + .addr UNINSTALL + .addr PAGECOUNT + .addr MAP + .addr USE + .addr COMMIT + .addr COPYFROM + .addr COPYTO ; ------------------------------------------------------------------------ ; Constants @@ -141,11 +145,11 @@ settestadr2: jmp vdcsetsrcaddr ; ------------------------------------------------------------------------ -; DEINSTALL routine. Is called before the driver is removed from memory. +; UNINSTALL routine. Is called before the driver is removed from memory. ; Can do cleanup or whatever. Must not return anything. ; -DEINSTALL: +UNINSTALL: ;on C128 restore font and clear the screen? rts diff --git a/libsrc/c128/libref.s b/libsrc/c128/libref.s new file mode 100644 index 000000000..507c9887b --- /dev/null +++ b/libsrc/c128/libref.s @@ -0,0 +1,8 @@ +; +; Oliver Schmidt, 2013-05-31 +; + + .export em_libref + .import _exit + +em_libref := _exit diff --git a/libsrc/c16/emd/c16-ram.s b/libsrc/c16/emd/c16-ram.s index 98ba5e909..1d7d41ae0 100644 --- a/libsrc/c16/emd/c16-ram.s +++ b/libsrc/c16/emd/c16-ram.s @@ -24,16 +24,20 @@ .byte $65, $6d, $64 ; "emd" .byte EMD_API_VERSION ; EM API version number -; Jump table. - - .word INSTALL - .word UNINSTALL - .word PAGECOUNT - .word MAP - .word USE - .word COMMIT - .word COPYFROM - .word COPYTO +; Library reference + + .addr $0000 + +; Jump table + + .addr INSTALL + .addr UNINSTALL + .addr PAGECOUNT + .addr MAP + .addr USE + .addr COMMIT + .addr COPYFROM + .addr COPYTO ; ------------------------------------------------------------------------ ; Constants diff --git a/libsrc/c16/libref.s b/libsrc/c16/libref.s new file mode 100644 index 000000000..507c9887b --- /dev/null +++ b/libsrc/c16/libref.s @@ -0,0 +1,8 @@ +; +; Oliver Schmidt, 2013-05-31 +; + + .export em_libref + .import _exit + +em_libref := _exit diff --git a/libsrc/c64/emd/c64-c256k.s b/libsrc/c64/emd/c64-c256k.s index f559bf7f3..8508b8b56 100644 --- a/libsrc/c64/emd/c64-c256k.s +++ b/libsrc/c64/emd/c64-c256k.s @@ -22,16 +22,20 @@ .byte $65, $6d, $64 ; "emd" .byte EMD_API_VERSION ; EM API version number -; Jump table. - - .word INSTALL - .word UNINSTALL - .word PAGECOUNT - .word MAP - .word USE - .word COMMIT - .word COPYFROM - .word COPYTO +; Library reference + + .addr $0000 + +; Jump table + + .addr INSTALL + .addr UNINSTALL + .addr PAGECOUNT + .addr MAP + .addr USE + .addr COMMIT + .addr COPYFROM + .addr COPYTO ; ------------------------------------------------------------------------ ; Constants diff --git a/libsrc/c64/emd/c64-dqbb.s b/libsrc/c64/emd/c64-dqbb.s index fcfeaeb9b..c06a83daf 100644 --- a/libsrc/c64/emd/c64-dqbb.s +++ b/libsrc/c64/emd/c64-dqbb.s @@ -22,16 +22,20 @@ .byte $65, $6d, $64 ; "emd" .byte EMD_API_VERSION ; EM API version number -; Jump table. - - .word INSTALL - .word UNINSTALL - .word PAGECOUNT - .word MAP - .word USE - .word COMMIT - .word COPYFROM - .word COPYTO +; Library reference + + .addr $0000 + +; Jump table + + .addr INSTALL + .addr UNINSTALL + .addr PAGECOUNT + .addr MAP + .addr USE + .addr COMMIT + .addr COPYFROM + .addr COPYTO ; ------------------------------------------------------------------------ ; Constants diff --git a/libsrc/c64/emd/c64-georam.s b/libsrc/c64/emd/c64-georam.s index 0c106f406..f2de80916 100644 --- a/libsrc/c64/emd/c64-georam.s +++ b/libsrc/c64/emd/c64-georam.s @@ -27,16 +27,20 @@ .byte $65, $6d, $64 ; "emd" .byte EMD_API_VERSION ; EM API version number -; Jump table. - - .word INSTALL - .word UNINSTALL - .word PAGECOUNT - .word MAP - .word USE - .word COMMIT - .word COPYFROM - .word COPYTO +; Library reference + + .addr $0000 + +; Jump table + + .addr INSTALL + .addr UNINSTALL + .addr PAGECOUNT + .addr MAP + .addr USE + .addr COMMIT + .addr COPYFROM + .addr COPYTO ; ------------------------------------------------------------------------ ; Constants diff --git a/libsrc/c64/emd/c64-isepic.s b/libsrc/c64/emd/c64-isepic.s index a2a2e4783..67a33ecf6 100644 --- a/libsrc/c64/emd/c64-isepic.s +++ b/libsrc/c64/emd/c64-isepic.s @@ -22,16 +22,20 @@ .byte $65, $6d, $64 ; "emd" .byte EMD_API_VERSION ; EM API version number -; Jump table. - - .word INSTALL - .word UNINSTALL - .word PAGECOUNT - .word MAP - .word USE - .word COMMIT - .word COPYFROM - .word COPYTO +; Library reference + + .addr $0000 + +; Jump table + + .addr INSTALL + .addr UNINSTALL + .addr PAGECOUNT + .addr MAP + .addr USE + .addr COMMIT + .addr COPYFROM + .addr COPYTO ; ------------------------------------------------------------------------ ; Constants diff --git a/libsrc/c64/emd/c64-ram.s b/libsrc/c64/emd/c64-ram.s index 1c2961591..b73ccc547 100644 --- a/libsrc/c64/emd/c64-ram.s +++ b/libsrc/c64/emd/c64-ram.s @@ -24,16 +24,20 @@ .byte $65, $6d, $64 ; "emd" .byte EMD_API_VERSION ; EM API version number -; Jump table. - - .word INSTALL - .word UNINSTALL - .word PAGECOUNT - .word MAP - .word USE - .word COMMIT - .word COPYFROM - .word COPYTO +; Library reference + + .addr $0000 + +; Jump table + + .addr INSTALL + .addr UNINSTALL + .addr PAGECOUNT + .addr MAP + .addr USE + .addr COMMIT + .addr COPYFROM + .addr COPYTO ; ------------------------------------------------------------------------ ; Constants diff --git a/libsrc/c64/emd/c64-ramcart.s b/libsrc/c64/emd/c64-ramcart.s index b4192e74b..d424024c7 100644 --- a/libsrc/c64/emd/c64-ramcart.s +++ b/libsrc/c64/emd/c64-ramcart.s @@ -26,16 +26,20 @@ .byte $65, $6d, $64 ; "emd" .byte EMD_API_VERSION ; EM API version number -; Jump table. - - .word INSTALL - .word UNINSTALL - .word PAGECOUNT - .word MAP - .word USE - .word COMMIT - .word COPYFROM - .word COPYTO +; Library reference + + .addr $0000 + +; Jump table + + .addr INSTALL + .addr UNINSTALL + .addr PAGECOUNT + .addr MAP + .addr USE + .addr COMMIT + .addr COPYFROM + .addr COPYTO ; ------------------------------------------------------------------------ ; Constants diff --git a/libsrc/c64/emd/c64-reu.s b/libsrc/c64/emd/c64-reu.s index 133e0af03..c397a739d 100644 --- a/libsrc/c64/emd/c64-reu.s +++ b/libsrc/c64/emd/c64-reu.s @@ -24,16 +24,20 @@ .byte $65, $6d, $64 ; "emd" .byte EMD_API_VERSION ; EM API version number -; Jump table. - - .word INSTALL - .word UNINSTALL - .word PAGECOUNT - .word MAP - .word USE - .word COMMIT - .word COPYFROM - .word COPYTO +; Library reference + + .addr $0000 + +; Jump table + + .addr INSTALL + .addr UNINSTALL + .addr PAGECOUNT + .addr MAP + .addr USE + .addr COMMIT + .addr COPYFROM + .addr COPYTO ; ------------------------------------------------------------------------ ; Constants diff --git a/libsrc/c64/emd/c64-vdc.s b/libsrc/c64/emd/c64-vdc.s index a69c68f15..cd09d33f4 100644 --- a/libsrc/c64/emd/c64-vdc.s +++ b/libsrc/c64/emd/c64-vdc.s @@ -27,16 +27,20 @@ .byte $65, $6d, $64 ; "emd" .byte EMD_API_VERSION ; EM API version number -; Jump table. - - .word INSTALL - .word UNINSTALL - .word PAGECOUNT - .word MAP - .word USE - .word COMMIT - .word COPYFROM - .word COPYTO +; Library reference + + .addr $0000 + +; Jump table + + .addr INSTALL + .addr UNINSTALL + .addr PAGECOUNT + .addr MAP + .addr USE + .addr COMMIT + .addr COPYFROM + .addr COPYTO ; ------------------------------------------------------------------------ ; Constants diff --git a/libsrc/c64/emd/dtv-himem.s b/libsrc/c64/emd/dtv-himem.s index 555b0b95a..62bc2007b 100644 --- a/libsrc/c64/emd/dtv-himem.s +++ b/libsrc/c64/emd/dtv-himem.s @@ -26,16 +26,20 @@ .byte $65, $6d, $64 ; "emd" .byte EMD_API_VERSION ; EM API version number -; Jump table. - - .word INSTALL - .word UNINSTALL - .word PAGECOUNT - .word MAP - .word USE - .word COMMIT - .word COPYFROM - .word COPYTO +; Library reference + + .addr $0000 + +; Jump table + + .addr INSTALL + .addr UNINSTALL + .addr PAGECOUNT + .addr MAP + .addr USE + .addr COMMIT + .addr COPYFROM + .addr COPYTO ; ------------------------------------------------------------------------ ; Constants diff --git a/libsrc/c64/libref.s b/libsrc/c64/libref.s new file mode 100644 index 000000000..507c9887b --- /dev/null +++ b/libsrc/c64/libref.s @@ -0,0 +1,8 @@ +; +; Oliver Schmidt, 2013-05-31 +; + + .export em_libref + .import _exit + +em_libref := _exit diff --git a/libsrc/cbm510/emd/cbm510-ram.s b/libsrc/cbm510/emd/cbm510-ram.s index 65ebbddf8..df7e17dc7 100644 --- a/libsrc/cbm510/emd/cbm510-ram.s +++ b/libsrc/cbm510/emd/cbm510-ram.s @@ -24,16 +24,20 @@ .byte $65, $6d, $64 ; "emd" .byte EMD_API_VERSION ; EM API version number -; Jump table. - - .word INSTALL - .word UNINSTALL - .word PAGECOUNT - .word MAP - .word USE - .word COMMIT - .word COPYFROM - .word COPYTO +; Library reference + + .addr $0000 + +; Jump table + + .addr INSTALL + .addr UNINSTALL + .addr PAGECOUNT + .addr MAP + .addr USE + .addr COMMIT + .addr COPYFROM + .addr COPYTO ; ------------------------------------------------------------------------ ; Constants diff --git a/libsrc/cbm510/libref.s b/libsrc/cbm510/libref.s new file mode 100644 index 000000000..507c9887b --- /dev/null +++ b/libsrc/cbm510/libref.s @@ -0,0 +1,8 @@ +; +; Oliver Schmidt, 2013-05-31 +; + + .export em_libref + .import _exit + +em_libref := _exit diff --git a/libsrc/cbm610/emd/cbm610-ram.s b/libsrc/cbm610/emd/cbm610-ram.s index 8f71e405c..6131d0093 100644 --- a/libsrc/cbm610/emd/cbm610-ram.s +++ b/libsrc/cbm610/emd/cbm610-ram.s @@ -24,16 +24,20 @@ .byte $65, $6d, $64 ; "emd" .byte EMD_API_VERSION ; EM API version number -; Jump table. - - .word INSTALL - .word UNINSTALL - .word PAGECOUNT - .word MAP - .word USE - .word COMMIT - .word COPYFROM - .word COPYTO +; Library reference + + .addr $0000 + +; Jump table + + .addr INSTALL + .addr UNINSTALL + .addr PAGECOUNT + .addr MAP + .addr USE + .addr COMMIT + .addr COPYFROM + .addr COPYTO ; ------------------------------------------------------------------------ ; Constants diff --git a/libsrc/cbm610/libref.s b/libsrc/cbm610/libref.s new file mode 100644 index 000000000..507c9887b --- /dev/null +++ b/libsrc/cbm610/libref.s @@ -0,0 +1,8 @@ +; +; Oliver Schmidt, 2013-05-31 +; + + .export em_libref + .import _exit + +em_libref := _exit diff --git a/libsrc/em/em-kernel.s b/libsrc/em/em-kernel.s index 9c1342964..21203d250 100644 --- a/libsrc/em/em-kernel.s +++ b/libsrc/em/em-kernel.s @@ -4,7 +4,7 @@ ; Common functions of the extended memory API. ; - .import return0 + .import return0, em_libref .importzp ptr1 .include "em-kernel.inc" @@ -55,6 +55,15 @@ _em_install: dey bpl @L0 +; Set the library reference + + ldy #EMD_HDR::LIBREF + lda #em_libref + sta (ptr1),y + ; Copy the jump vectors ldy #EMD_HDR::JUMPTAB diff --git a/libsrc/geos-cbm/emd/geos-vdc.s b/libsrc/geos-cbm/emd/geos-vdc.s index 7064a78fc..60a805c4e 100644 --- a/libsrc/geos-cbm/emd/geos-vdc.s +++ b/libsrc/geos-cbm/emd/geos-vdc.s @@ -21,16 +21,20 @@ .byte $65, $6d, $64 ; "emd" .byte EMD_API_VERSION ; EM API version number -; Jump table. - - .word INSTALL - .word UNINSTALL - .word PAGECOUNT - .word MAP - .word USE - .word COMMIT - .word COPYFROM - .word COPYTO +; Library reference + + .addr $0000 + +; Jump table + + .addr INSTALL + .addr UNINSTALL + .addr PAGECOUNT + .addr MAP + .addr USE + .addr COMMIT + .addr COPYFROM + .addr COPYTO ; ------------------------------------------------------------------------ ; Constants diff --git a/libsrc/geos-cbm/system/libref.s b/libsrc/geos-cbm/system/libref.s new file mode 100644 index 000000000..507c9887b --- /dev/null +++ b/libsrc/geos-cbm/system/libref.s @@ -0,0 +1,8 @@ +; +; Oliver Schmidt, 2013-05-31 +; + + .export em_libref + .import _exit + +em_libref := _exit -- 2.39.5