Added em_use
git-svn-id: svn://svn.cc65.org/cc65/trunk@1719 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
@@ -44,11 +44,12 @@ EMD_HDR_INSTALL = EMD_HDR_JUMPTAB+0 ; INSTALL routine
|
|||||||
EMD_HDR_DEINSTALL = EMD_HDR_JUMPTAB+2 ; DEINSTALL routine
|
EMD_HDR_DEINSTALL = EMD_HDR_JUMPTAB+2 ; DEINSTALL routine
|
||||||
EMD_HDR_PAGECOUNT = EMD_HDR_JUMPTAB+4 ; PAGECOUNT routine
|
EMD_HDR_PAGECOUNT = EMD_HDR_JUMPTAB+4 ; PAGECOUNT routine
|
||||||
EMD_HDR_MAP = EMD_HDR_JUMPTAB+6 ; MAP routine
|
EMD_HDR_MAP = EMD_HDR_JUMPTAB+6 ; MAP routine
|
||||||
EMD_HDR_MAPCLEAN = EMD_HDR_JUMPTAB+8 ; MAPCLEAN routine
|
EMD_HDR_USE = EMD_HDR_JUMPTAB+8 ; USE routine
|
||||||
EMD_HDR_COPYFROM = EMD_HDR_JUMPTAB+10 ; COPYFROM routine
|
EMD_HDR_MAPCLEAN = EMD_HDR_JUMPTAB+10 ; MAPCLEAN routine
|
||||||
EMD_HDR_COPYTO = EMD_HDR_JUMPTAB+12 ; COPYTO routine
|
EMD_HDR_COPYFROM = EMD_HDR_JUMPTAB+12 ; COPYFROM routine
|
||||||
|
EMD_HDR_COPYTO = EMD_HDR_JUMPTAB+14 ; COPYTO routine
|
||||||
|
|
||||||
EMD_HDR_JUMPCOUNT = 7 ; Number of jump vectors
|
EMD_HDR_JUMPCOUNT = 8 ; Number of jump vectors
|
||||||
|
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
; Offsets into the em_copy structure
|
; Offsets into the em_copy structure
|
||||||
@@ -70,6 +71,7 @@ EM_COPY_COUNT = 5
|
|||||||
.global emd_deinstall
|
.global emd_deinstall
|
||||||
.global emd_pagecount
|
.global emd_pagecount
|
||||||
.global emd_map
|
.global emd_map
|
||||||
|
.global emd_use
|
||||||
.global emd_commit
|
.global emd_commit
|
||||||
.global emd_copyfrom
|
.global emd_copyfrom
|
||||||
.global emd_copyto
|
.global emd_copyto
|
||||||
@@ -81,6 +83,7 @@ EM_COPY_COUNT = 5
|
|||||||
.global _em_deinstall
|
.global _em_deinstall
|
||||||
.global _em_pagecount
|
.global _em_pagecount
|
||||||
.global _em_map
|
.global _em_map
|
||||||
|
.global _em_use
|
||||||
.global _em_commit
|
.global _em_commit
|
||||||
.global _em_copyfrom
|
.global _em_copyfrom
|
||||||
.global _em_copyto
|
.global _em_copyto
|
||||||
|
|||||||
@@ -90,6 +90,15 @@ void* __fastcall__ em_map (unsigned page);
|
|||||||
* em_commit, the old contents of the memory window may be lost!
|
* em_commit, the old contents of the memory window may be lost!
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
void* __fastcall__ em_use (unsigned page);
|
||||||
|
/* Tell the driver that the memory window is associated with a given page.
|
||||||
|
* This call is very similar to em_map. The difference is that the driver
|
||||||
|
* does not necessarily transfer the current contents of the extended
|
||||||
|
* memory into the returned window. If you're going to just write to the
|
||||||
|
* window and the current contents of the window are invalid or no longer
|
||||||
|
* use, this call may perform better than em_map.
|
||||||
|
*/
|
||||||
|
|
||||||
void __fastcall__ em_commit (void);
|
void __fastcall__ em_commit (void);
|
||||||
/* Commit changes in the memory window to extended storage. If the contents
|
/* Commit changes in the memory window to extended storage. If the contents
|
||||||
* of the memory window have been changed, these changes may be lost if
|
* of the memory window have been changed, these changes may be lost if
|
||||||
|
|||||||
@@ -58,6 +58,7 @@ typedef struct {
|
|||||||
void* deinstall; /* DEINSTALL routine */
|
void* deinstall; /* DEINSTALL routine */
|
||||||
void* pagecount; /* PAGECOUNT routine */
|
void* pagecount; /* PAGECOUNT routine */
|
||||||
void* map; /* MAP routine */
|
void* map; /* MAP routine */
|
||||||
|
void* use; /* USE routine */
|
||||||
void* mapclean; /* MAPCLEAN routine */
|
void* mapclean; /* MAPCLEAN routine */
|
||||||
void* copyfrom; /* COPYFROM routine */
|
void* copyfrom; /* COPYFROM routine */
|
||||||
void* copyto; /* COPYTO routine */
|
void* copyto; /* COPYTO routine */
|
||||||
|
|||||||
@@ -29,6 +29,7 @@
|
|||||||
.word DEINSTALL
|
.word DEINSTALL
|
||||||
.word PAGECOUNT
|
.word PAGECOUNT
|
||||||
.word MAP
|
.word MAP
|
||||||
|
.word USE
|
||||||
.word COMMIT
|
.word COMMIT
|
||||||
.word COPYFROM
|
.word COPYFROM
|
||||||
.word COPYTO
|
.word COPYTO
|
||||||
@@ -79,6 +80,13 @@ PAGECOUNT:
|
|||||||
ldx pagecount+1
|
ldx pagecount+1
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
; ------------------------------------------------------------------------
|
||||||
|
; USE: Tell the driver that the window is now associated with a given page.
|
||||||
|
; The GeoRAM cartridge does not copy but actually map the window, so USE is
|
||||||
|
; identical to MAP.
|
||||||
|
|
||||||
|
USE = MAP
|
||||||
|
|
||||||
; ------------------------------------------------------------------------
|
; ------------------------------------------------------------------------
|
||||||
; MAP: Map the page in a/x into memory and return a pointer to the page in
|
; MAP: Map the page in a/x into memory and return a pointer to the page in
|
||||||
; a/x. The contents of the currently mapped page (if any) may be discarded
|
; a/x. The contents of the currently mapped page (if any) may be discarded
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
.word DEINSTALL
|
.word DEINSTALL
|
||||||
.word PAGECOUNT
|
.word PAGECOUNT
|
||||||
.word MAP
|
.word MAP
|
||||||
|
.word USE
|
||||||
.word COMMIT
|
.word COMMIT
|
||||||
.word COPYFROM
|
.word COPYFROM
|
||||||
.word COPYTO
|
.word COPYTO
|
||||||
@@ -114,6 +115,15 @@ MAP: sta curpage
|
|||||||
ldx #>window ; Return the window address
|
ldx #>window ; Return the window address
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
; ------------------------------------------------------------------------
|
||||||
|
; USE: Tell the driver that the window is now associated with a given page.
|
||||||
|
|
||||||
|
USE: sta curpage
|
||||||
|
stx curpage+1 ; Remember the page
|
||||||
|
lda #<window
|
||||||
|
ldx #>window ; Return the window
|
||||||
|
rts
|
||||||
|
|
||||||
; ------------------------------------------------------------------------
|
; ------------------------------------------------------------------------
|
||||||
; COMMIT: Commit changes in the memory window to extended storage.
|
; COMMIT: Commit changes in the memory window to extended storage.
|
||||||
|
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
.word DEINSTALL
|
.word DEINSTALL
|
||||||
.word PAGECOUNT
|
.word PAGECOUNT
|
||||||
.word MAP
|
.word MAP
|
||||||
|
.word USE
|
||||||
.word COMMIT
|
.word COMMIT
|
||||||
.word COPYFROM
|
.word COPYFROM
|
||||||
.word COPYTO
|
.word COPYTO
|
||||||
@@ -138,6 +139,15 @@ MAP: sta curpage
|
|||||||
ldx #>window ; Return the window address
|
ldx #>window ; Return the window address
|
||||||
done: rts
|
done: rts
|
||||||
|
|
||||||
|
; ------------------------------------------------------------------------
|
||||||
|
; USE: Tell the driver that the window is now associated with a given page.
|
||||||
|
|
||||||
|
USE: sta curpage
|
||||||
|
stx curpage+1 ; Remember the page
|
||||||
|
lda #<window
|
||||||
|
ldx #>window ; Return the window
|
||||||
|
rts
|
||||||
|
|
||||||
; ------------------------------------------------------------------------
|
; ------------------------------------------------------------------------
|
||||||
; COMMIT: Commit changes in the memory window to extended storage.
|
; COMMIT: Commit changes in the memory window to extended storage.
|
||||||
|
|
||||||
|
|||||||
@@ -29,6 +29,7 @@
|
|||||||
.word DEINSTALL
|
.word DEINSTALL
|
||||||
.word PAGECOUNT
|
.word PAGECOUNT
|
||||||
.word MAP
|
.word MAP
|
||||||
|
.word USE
|
||||||
.word COMMIT
|
.word COMMIT
|
||||||
.word COPYFROM
|
.word COPYFROM
|
||||||
.word COPYTO
|
.word COPYTO
|
||||||
@@ -79,6 +80,13 @@ PAGECOUNT:
|
|||||||
ldx pagecount+1
|
ldx pagecount+1
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
; ------------------------------------------------------------------------
|
||||||
|
; USE: Tell the driver that the window is now associated with a given page.
|
||||||
|
; The GeoRAM cartridge does not copy but actually map the window, so USE is
|
||||||
|
; identical to MAP.
|
||||||
|
|
||||||
|
USE = MAP
|
||||||
|
|
||||||
; ------------------------------------------------------------------------
|
; ------------------------------------------------------------------------
|
||||||
; MAP: Map the page in a/x into memory and return a pointer to the page in
|
; MAP: Map the page in a/x into memory and return a pointer to the page in
|
||||||
; a/x. The contents of the currently mapped page (if any) may be discarded
|
; a/x. The contents of the currently mapped page (if any) may be discarded
|
||||||
|
|||||||
@@ -29,6 +29,7 @@
|
|||||||
.word DEINSTALL
|
.word DEINSTALL
|
||||||
.word PAGECOUNT
|
.word PAGECOUNT
|
||||||
.word MAP
|
.word MAP
|
||||||
|
.word USE
|
||||||
.word COMMIT
|
.word COMMIT
|
||||||
.word COPYFROM
|
.word COPYFROM
|
||||||
.word COPYTO
|
.word COPYTO
|
||||||
@@ -109,6 +110,14 @@ MAP: sta curpage ; Remember the new page
|
|||||||
ldx #>window ; Return the window address
|
ldx #>window ; Return the window address
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
; ------------------------------------------------------------------------
|
||||||
|
; USE: Tell the driver that the window is now associated with a given page.
|
||||||
|
|
||||||
|
USE: sta curpage ; Remember the page
|
||||||
|
lda #<window
|
||||||
|
ldx #>window ; Return the window
|
||||||
|
rts
|
||||||
|
|
||||||
; ------------------------------------------------------------------------
|
; ------------------------------------------------------------------------
|
||||||
; COMMIT: Commit changes in the memory window to extended storage.
|
; COMMIT: Commit changes in the memory window to extended storage.
|
||||||
|
|
||||||
|
|||||||
@@ -29,6 +29,7 @@
|
|||||||
.word DEINSTALL
|
.word DEINSTALL
|
||||||
.word PAGECOUNT
|
.word PAGECOUNT
|
||||||
.word MAP
|
.word MAP
|
||||||
|
.word USE
|
||||||
.word COMMIT
|
.word COMMIT
|
||||||
.word COPYFROM
|
.word COPYFROM
|
||||||
.word COPYTO
|
.word COPYTO
|
||||||
@@ -137,6 +138,15 @@ MAP: sta curpage
|
|||||||
ldx #>window ; Return the window address
|
ldx #>window ; Return the window address
|
||||||
done: rts
|
done: rts
|
||||||
|
|
||||||
|
; ------------------------------------------------------------------------
|
||||||
|
; USE: Tell the driver that the window is now associated with a given page.
|
||||||
|
|
||||||
|
USE: sta curpage
|
||||||
|
stx curpage+1 ; Remember the page
|
||||||
|
lda #<window
|
||||||
|
ldx #>window ; Return the window
|
||||||
|
rts
|
||||||
|
|
||||||
; ------------------------------------------------------------------------
|
; ------------------------------------------------------------------------
|
||||||
; COMMIT: Commit changes in the memory window to extended storage.
|
; COMMIT: Commit changes in the memory window to extended storage.
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ S_OBJS = em-kernel.o \
|
|||||||
em_map.o \
|
em_map.o \
|
||||||
em_pagecount.o \
|
em_pagecount.o \
|
||||||
em_unload.o \
|
em_unload.o \
|
||||||
|
em_use.o
|
||||||
|
|
||||||
|
|
||||||
all: $(C_OBJS) $(S_OBJS)
|
all: $(C_OBJS) $(S_OBJS)
|
||||||
|
|||||||
@@ -23,13 +23,14 @@ _em_drv: .res 2 ; Pointer to driver
|
|||||||
; Jump table for the driver functions.
|
; Jump table for the driver functions.
|
||||||
.data
|
.data
|
||||||
emd_vectors:
|
emd_vectors:
|
||||||
emd_install: jmp $0000
|
emd_install: jmp return0
|
||||||
emd_deinstall: jmp $0000
|
emd_deinstall: jmp return0
|
||||||
emd_pagecount: jmp $0000
|
emd_pagecount: jmp return0
|
||||||
emd_map: jmp $0000
|
emd_map: jmp return0
|
||||||
emd_commit: jmp $0000
|
emd_use: jmp return0
|
||||||
emd_copyfrom: jmp $0000
|
emd_commit: jmp return0
|
||||||
emd_copyto: jmp $0000
|
emd_copyfrom: jmp return0
|
||||||
|
emd_copyto: jmp return0
|
||||||
|
|
||||||
; Driver header signature
|
; Driver header signature
|
||||||
.rodata
|
.rodata
|
||||||
|
|||||||
17
libsrc/em/em_use.s
Normal file
17
libsrc/em/em_use.s
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
;
|
||||||
|
; Ullrich von Bassewitz, 2002-11-29
|
||||||
|
;
|
||||||
|
; void* __fastcall__ em_use (unsigned page);
|
||||||
|
; /* Tell the driver that the memory window is associated with a given page.
|
||||||
|
; * This call is very similar to em_map. The difference is that the driver
|
||||||
|
; * does not necessarily transfer the current contents of the extended
|
||||||
|
; * memory into the returned window. If you're going to just write to the
|
||||||
|
; * window and the current contents of the window are invalid or no longer
|
||||||
|
; * use, this call may perform better than em_map.
|
||||||
|
; */
|
||||||
|
|
||||||
|
|
||||||
|
.include "em-kernel.inc"
|
||||||
|
|
||||||
|
_em_use = emd_use ; Use driver entry
|
||||||
|
|
||||||
Reference in New Issue
Block a user