]> git.sur5r.net Git - cc65/blobdiff - libsrc/c128/c128-ram.s
poor man's _toascii routine, contributed by Fatih Aygun
[cc65] / libsrc / c128 / c128-ram.s
index 99a571be5be2270b8a8d81a44f69ef10903507e8..1211c444dad03dfb9c87fdc3786230a350fb143d 100644 (file)
@@ -1,5 +1,6 @@
 ;
-; Extended memory driver for the C128 RAM in bank #1
+; Extended memory driver for the C128 RAM in bank #1. Driver works without
+; problems when statically linked.
 ;
 ; Ullrich von Bassewitz, 2002-12-04
 ;
 ; Driver signature
 
         .byte   $65, $6d, $64           ; "emd"
-        .byte   $00                     ; EM API version number
+        .byte   EMD_API_VERSION                ; EM API version number
 
 ; Jump table.
 
         .word   INSTALL
-        .word   DEINSTALL
+        .word   UNINSTALL
         .word   PAGECOUNT
         .word   MAP
         .word   USE
@@ -45,10 +46,9 @@ PAGES        = (TOPMEM - BASE) / 256
 ; ------------------------------------------------------------------------
 ; Data.
 
-.data
-curpage:        .word   $FFFF           ; Current page number (invalid)
-
 .bss
+curpage:        .res    1               ; Current page number
+
 window:         .res    256             ; Memory "window"
 
 .code
@@ -61,16 +61,19 @@ window:         .res    256             ; Memory "window"
 ;
 
 INSTALL:
-        lda     #<EM_ERR_OK
-        ldx     #>EM_ERR_OK
+        ldx     #$FF
+        stx     curpage
+        stx     curpage+1               ; Invalidate the current page
+        inx
+        txa                             ; A = X = EM_ERR_OK
         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
 
 
@@ -162,16 +165,16 @@ COPYFROM:
         sta     ptr3
         stx     ptr3+1                  ; Save the passed em_copy pointer
 
-        ldy     #EM_COPY_OFFS
+        ldy     #EM_COPY::OFFS
         lda     (ptr3),y
         sta     ptr1
-        ldy     #EM_COPY_PAGE
+        ldy     #EM_COPY::PAGE
         lda     (ptr3),y
         clc
         adc     #>BASE
         sta     ptr1+1                  ; From
 
-        ldy     #EM_COPY_BUF
+        ldy     #EM_COPY::BUF
         lda     (ptr3),y
         sta     ptr2
         iny
@@ -181,7 +184,7 @@ COPYFROM:
         lda     #<ptr1
         sta     FETVEC
 
-        ldy     #EM_COPY_COUNT+1
+        ldy     #EM_COPY::COUNT+1
         lda     (ptr3),y                ; Get number of pages
         beq     @L2                     ; Skip if no full pages
         sta     tmp1
@@ -201,7 +204,7 @@ COPYFROM:
 
 ; Copy the remainder of the page
 
-@L2:    ldy     #EM_COPY_COUNT
+@L2:    ldy     #EM_COPY::COUNT
         lda     (ptr3),y                ; Get bytes in last page
         beq     @L4
         sta     tmp1
@@ -227,16 +230,16 @@ COPYFROM:
 COPYTO: sta     ptr3
         stx     ptr3+1                  ; Save the passed em_copy pointer
 
-        ldy     #EM_COPY_OFFS
+        ldy     #EM_COPY::OFFS
         lda     (ptr3),y
         sta     ptr1
-        ldy     #EM_COPY_PAGE
+        ldy     #EM_COPY::PAGE
         lda     (ptr3),y
         clc
         adc     #>BASE
         sta     ptr1+1                  ; To
 
-        ldy     #EM_COPY_BUF
+        ldy     #EM_COPY::BUF
         lda     (ptr3),y
         sta     ptr2
         iny
@@ -246,7 +249,7 @@ COPYTO: sta     ptr3
         lda     #<ptr1
         sta     STAVEC
 
-        ldy     #EM_COPY_COUNT+1
+        ldy     #EM_COPY::COUNT+1
         lda     (ptr3),y                ; Get number of pages
         beq     @L2                     ; Skip if no full pages
         sta     tmp1
@@ -266,11 +269,11 @@ COPYTO: sta     ptr3
 
 ; Copy the remainder of the page
 
-@L2:    ldy     #EM_COPY_COUNT
+@L2:    ldy     #EM_COPY::COUNT
         lda     (ptr3),y                ; Get bytes in last page
         beq     @L4
         sta     tmp1
-                    
+
         ldy     #$00
 @L3:    lda     (ptr2),y
         ldx     #MMU_CFG_RAM1