Added em_use

git-svn-id: svn://svn.cc65.org/cc65/trunk@1719 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
cuz
2002-12-05 18:57:53 +00:00
parent e4d25caa56
commit f7244c4e19
12 changed files with 100 additions and 13 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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 */

View File

@@ -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

View File

@@ -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.

View File

@@ -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.

View File

@@ -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

View File

@@ -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.

View File

@@ -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.

View File

@@ -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)

View File

@@ -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
View 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