]> git.sur5r.net Git - cc65/blobdiff - libsrc/serial/ser-kernel.s
don't use constructor to setup runtime stack
[cc65] / libsrc / serial / ser-kernel.s
index 5e76358becb05e88e96e646c2986aca2a622cdb2..d666e94521e6f515c8221ecf6429309fe855b31c 100644 (file)
@@ -6,7 +6,7 @@
 
         .import         return0
         .importzp       ptr1
-       .condes         ser_irq, 2              ; Export as IRQ handler
+               .interruptor    ser_irq, 29     ; Export as high priority IRQ handler
 
         .include        "ser-kernel.inc"
         .include        "ser-error.inc"
@@ -37,6 +37,7 @@ ser_irq:      .byte   $60, $00, $00   ; RTS plus two dummy bytes
 ser_sig:        .byte   $73, $65, $72, SER_API_VERSION  ; "ser", version
 
 
+.code
 ;----------------------------------------------------------------------------
 ; unsigned char __fastcall__ ser_install (void* driver);
 ; /* Install the driver once it is loaded */
@@ -44,9 +45,9 @@ ser_sig:        .byte   $73, $65, $72, SER_API_VERSION  ; "ser", version
 
 _ser_install:
                sta     _ser_drv
-       sta     ptr1
-       stx     _ser_drv+1
-       stx     ptr1+1
+       sta     ptr1
+       stx     _ser_drv+1
+       stx     ptr1+1
 
 ; Check the driver signature
 
@@ -69,10 +70,10 @@ _ser_install:
 
         jsr     ser_install             ; Call driver install routine
 
-        lda     ser_irq+2               ; Check high byte of IRQ vector
+        ldy     ser_irq+2               ; Check high byte of IRQ vector
         beq     @L2                     ; Jump if vector invalid
-       lda     #$4C                    ; Jump opcode
-       sta     ser_irq                 ; Activate IRQ routine
+       ldy     #$4C                    ; Jump opcode
+       sty     ser_irq                 ; Activate IRQ routine
 @L2:    rts
 
 ; Driver signature invalid
@@ -102,6 +103,7 @@ _ser_uninstall:
        lda     #$60                    ; RTS opcode
        sta     ser_irq                 ; Disable IRQ entry point
 
+_ser_clear_ptr:                         ; External entry point
         lda     #0
         sta     _ser_drv
         sta     _ser_drv+1              ; Clear the driver pointer