]> git.sur5r.net Git - cc65/commitdiff
Added "popptr1" which is of common use to save some bytes.
authorIrgendwerA8 <c.krueger.b@web.de>
Sun, 20 May 2018 13:30:18 +0000 (15:30 +0200)
committerIrgendwerA8 <c.krueger.b@web.de>
Sun, 20 May 2018 13:30:18 +0000 (15:30 +0200)
35 files changed:
libsrc/apple2/devicedir.s
libsrc/apple2/extra/iobuf-0800.s
libsrc/apple2/lseek.s
libsrc/apple2/rwcommon.s
libsrc/atari/dio_stc.s
libsrc/atari/siocall.s
libsrc/atmos/read.s
libsrc/atmos/write.s
libsrc/cbm/c_save.s
libsrc/cbm/sysrename.s
libsrc/common/_swap.s
libsrc/common/getcwd.s
libsrc/common/longjmp.s
libsrc/common/memchr.s
libsrc/common/memcmp.s
libsrc/common/memcpy.s
libsrc/common/strcmp.s
libsrc/common/stricmp.s
libsrc/common/strncat.s
libsrc/common/strncmp.s
libsrc/common/strncpy.s
libsrc/common/strnicmp.s
libsrc/common/strpbrk.s
libsrc/common/strstr.s
libsrc/conio/vcprintf.s
libsrc/dbg/dbgsupp.s
libsrc/geos-common/drivers/fio_module.s
libsrc/pce/memcpy.s
libsrc/runtime/popptr1.s [new file with mode: 0644]
libsrc/runtime/steaxspi.s
libsrc/telestrat/write.s
libsrc/tgi/tgi_bar.s
libsrc/tgi/tgi_popxy.s
libsrc/zlib/adler32.s
libsrc/zlib/crc32.s

index dea2ba8c5aa46109c4fcd64984308b460ffcbcbe..de6bad5f2c3b0dc52df568be6295992a69300f9a 100644 (file)
@@ -5,7 +5,7 @@
 ;
 
         .export         _getdevicedir
-        .import         popax, popa
+        .import         popptr1, popa
 
         .include        "zeropage.inc"
         .include        "errno.inc"
@@ -17,9 +17,7 @@ _getdevicedir:
         stx     ptr2+1
 
         ; Save buf
-        jsr     popax
-        sta     ptr1
-        stx     ptr1+1
+        jsr     popptr1
 
         ; Set buf
         sta     mliparam + MLI::ON_LINE::DATA_BUFFER
index 0ad7a751fe50f73af3027f1f0db41dc96ef091e4..c7a9dae2e22a80a2239207c91202178e3e79ab7d 100644 (file)
@@ -8,7 +8,7 @@
         .constructor    initiobuf
         .export         iobuf_alloc, iobuf_free
         .import         __STARTUP_RUN__
-        .import         incsp2, popax
+        .import         incsp2, popptr1
 
         .include        "zeropage.inc"
         .include        "errno.inc"
@@ -41,9 +41,7 @@ initiobuf:
 iobuf_alloc:
         ; Get and save "memptr"
         jsr     incsp2
-        jsr     popax
-        sta     ptr1
-        stx     ptr1+1
+        jsr     popptr1
 
         ; Search table for free entry
         ldx     #$00
index 73f4136be835dfadee2435489bb9f0b0a804c707..22bcbee306d5527f14d14be6f7b762e13847f0c0 100644 (file)
@@ -5,7 +5,7 @@
 ;
 
         .export         _lseek
-        .import         popax
+        .import         popax, popptr1
 
         .include        "zeropage.inc"
         .include        "errno.inc"
@@ -18,9 +18,7 @@ _lseek:
         stx     tmp2
 
         ; Get and save offset
-        jsr     popax
-        sta     ptr1
-        stx     ptr1+1
+        jsr     popptr1
         jsr     popax
         sta     ptr2
 
index 3180a875d092880a786658488e4ab07aae2646af..e5fd9ae9021af9c453b2960df9ee623ecbdcba23 100644 (file)
@@ -3,7 +3,7 @@
 ;
 
         .export         rwprolog, rwcommon, rwepilog
-        .import         popax
+        .import         popax, popptr1
 
         .include        "zeropage.inc"
         .include        "errno.inc"
@@ -17,9 +17,7 @@ rwprolog:
         stx     ptr2+1
 
         ; Get and save buf
-        jsr     popax
-        sta     ptr1
-        stx     ptr1+1
+        jsr     popptr1
 
         ; Get and process fd
         jsr     popax
index 52b3af4a610d36ca3d2e5bd0ff1caca5bc0b1bd3..70dd16088dfcd3988e5e9417d056f0790e9e00d3 100644 (file)
         .export         _dio_log_to_phys
         .include        "atari.inc"
         .importzp       ptr1,ptr2,ptr3
-        .import         popax,__oserror
+        .import         popax, popptr1, __oserror
 
 .proc   _dio_log_to_phys
 
         sta     ptr2
         stx     ptr2+1          ; pointer to output structure
 
-        jsr     popax
-        sta     ptr1
-        stx     ptr1+1          ; save pointer to input data
+        jsr     popptr1         ; save pointer to input data      
 
         jsr     popax
         sta     ptr3
index 3db37753f75ce389a17fd9dc7f28d2a928663a00..0465a6a3e89704afa28a34f0338875e16f8d1cf7 100644 (file)
@@ -16,7 +16,7 @@
 
         .export         __sio_call
         .include        "atari.inc"
-        .import         popa,popax
+        .import         popa, popax, popptr1
         .import         sectsizetab,__oserror
         .importzp       ptr1
 
@@ -31,9 +31,7 @@
         sta     DAUX1           ; set sector #
         stx     DAUX2
 
-        jsr     popax
-        sta     ptr1
-        stx     ptr1+1
+        jsr     popptr1
 
         ldy     #sst_flag
         lda     (ptr1),y
index c44dc85846769eea1bd44e1ec7fd747d7e781f11..83aa8024e86093c3f3cd81c3e337a667b1fe0d43 100644 (file)
@@ -9,7 +9,7 @@
         .export         _read
         .constructor    initstdin
 
-        .import         popax
+        .import         popax, popptr1
         .importzp       ptr1, ptr2, ptr3
         .forceimport    disable_caps
 
@@ -26,9 +26,7 @@
         eor     #$FF
         sta     ptr2+1          ; Remember -count-1
 
-        jsr     popax           ; get buf
-        sta     ptr1
-        stx     ptr1+1
+        jsr     popptr1         ; get buf
         jsr     popax           ; get fd and discard
 
 L1:     inc     ptr2
index c6399f2bf7c3573377cb1ce586d4bd7c896d1a66..7865b569866478e9b419dd48e5468fdb606b4c15 100644 (file)
@@ -7,7 +7,7 @@
 ;
 
         .export         _write
-        .import         popax
+        .import         popax, popptr1
         .importzp       ptr1, ptr2, ptr3, tmp1
 
         .include        "atmos.inc"
@@ -23,9 +23,7 @@
         eor     #$FF
         sta     ptr2+1          ; Remember -count-1
 
-        jsr     popax           ; get buf
-        sta     ptr1
-        stx     ptr1+1
+        jsr     popptr1         ; get buf
         jsr     popax           ; get fd and discard
 L1:     inc     ptr2
         bne     L2
index dfdb7df42c85f40f0ff9c0c6800ccdd99fc12b3c..0597e9401a87c6de27ecf8728838d0b95397d1d7 100644 (file)
@@ -6,16 +6,14 @@
 
         .export         _cbm_k_save
         .import         SAVE
-        .import         popax
+        .import         popptr1
         .importzp       ptr1, tmp1
 
 
 _cbm_k_save:
         sta     tmp1            ; store end address
         stx     tmp1+1
-        jsr     popax           ; pop start address
-        sta     ptr1
-        stx     ptr1+1
+        jsr     popptr1         ; pop start address
         lda     #ptr1
         ldx     tmp1
         ldy     tmp1+1
index 86cb370112348e53991e7266b4dec7f9b836b0df..f79bf720aaf1faea6121c3e141f907deddc61dcb 100644 (file)
@@ -9,7 +9,7 @@
         .import         fnparse, fnadd, fnparsename
         .import         opencmdchannel, closecmdchannel
         .import         writefndiskcmd, readdiskerror
-        .import         popax
+        .import         popptr1
 
         .import         fncmd, fnunit
         .importzp       ptr1
         lda     #'='
         jsr     fnadd
 
-        jsr     popax
-        sta     ptr1
-        stx     ptr1+1
-        ldy     #0
+        jsr     popptr1
+        ; ldy     #0              Y=0 guaranteed by popptr1
         jsr     fnparsename     ; Parse second filename
         bne     done
 
index a16aecc52545073b0dffae3605d0b0b0f6c9d1ef..9ad771de172e40d9b6876faad01347aa65481d5a 100644 (file)
@@ -5,7 +5,7 @@
 ;
 
         .export         __swap
-        .import         popax
+        .import         popax, popptr1
         .importzp       ptr1, ptr2, ptr3
 
 
@@ -19,13 +19,11 @@ __swap: eor     #$FF
         sta     ptr2
         stx     ptr2+1
 
-        jsr     popax           ; Get p
-        sta     ptr1
-        stx     ptr1+1
+        jsr     popptr1         ; Get p
 
 ; Prepare for swap
 
-        ldy     #$00
+        ; ldy     #$00          is guaranteed by popptr1
 
 ; Swap loop
 
index b3cfbefcff37d362a9e7d30aa36d92590567cf51..c14df63a1ad9632bafa5047b501864e013019528 100644 (file)
@@ -6,7 +6,7 @@
 
         .export         _getcwd
 
-        .import         popax
+        .import         popptr1
         .import         __cwd
         .importzp       ptr1, ptr2
 
         eor     #$FF
         sta     ptr2+1
 
-        jsr     popax           ; Get buf
-        sta     ptr1
-        stx     ptr1+1          ; Save buf
+        jsr     popptr1         ; Get buf to ptr1
 
 ; Copy __cwd to the given buffer checking the length
 
-        ldy     #$00
+        ; ldy     #$00          is guaranteed by popptr10
 loop:   inc     ptr2
         bne     @L1
         inc     ptr2+1
index e9bac42e626fea7538ab8f174a4b04aa91af5a09..91606a44233dd48716786d7157f9f5f25a643592 100644 (file)
@@ -6,7 +6,7 @@
 ;
 
         .export         _longjmp
-        .import         popax
+        .import         popptr1
         .importzp       sp, ptr1, ptr2
 
 _longjmp:
@@ -16,10 +16,8 @@ _longjmp:
         bne     @L1
         inc     ptr2            ; 0 is illegal, according to the standard ...
                                 ; ... and, must be replaced by 1
-@L1:    jsr     popax           ; get buf
-        sta     ptr1
-        stx     ptr1+1
-        ldy     #0
+@L1:    jsr     popptr1         ; get buf
+        ; ldy     #0            is guaranteed by popptr1
 
 ; Get the old parameter stack
 
index 1b60cbf73e5fee9db3dc394b3fb0be5477750a52..de39a04f95f2953c7f686ba69b915a72c207d6fb 100644 (file)
@@ -5,7 +5,7 @@
 ;
 
         .export         _memchr
-        .import         popax, return0
+        .import         popax, popptr1 return0
         .importzp       ptr1, ptr2
 
 
         sta     ptr2+1          ; Save ones complement of n
         jsr     popax           ; get c
         pha
-        jsr     popax           ; get p
-        sta     ptr1
-        stx     ptr1+1
 
-        ldy     #$00
+        jsr     popptr1         ; get p
+
+        ; ldy     #$00            is guaranteed by popptr1
         pla                     ; Get c
         ldx     ptr2            ; Use X as low counter byte
 
index 25628127a889aa482caed455edf09f783d6be372..93a2c28dc8d49a7fd746fab29159111ee746c508 100644 (file)
@@ -5,7 +5,7 @@
 ;
 
         .export         _memcmp
-        .import         popax, return0
+        .import         popax, popptr1, return0
         .importzp       ptr1, ptr2, ptr3
 
 _memcmp:
@@ -24,14 +24,12 @@ _memcmp:
         jsr     popax           ; Get p2
         sta     ptr2
         stx     ptr2+1
-        jsr     popax           ; Get p1
-        sta     ptr1
-        stx     ptr1+1
+        jsr     popptr1         ; Get p1
 
 ; Loop initialization
 
+        ;ldy     #$00           ; Initialize pointer (Y=0 guaranteed by popptr1)
         ldx     ptr3            ; Load low counter byte into X
-        ldy     #$00            ; Initialize pointer
 
 ; Head of compare loop: Test for the end condition
 
index c0c5e56d0e4657bfa52fa5f0b6da82ec7e8fbca5..1ee53be07c5512d21fa46de9f971e1f010020536 100644 (file)
@@ -11,7 +11,7 @@
 ;
 
         .export         _memcpy, memcpy_upwards, memcpy_getparams
-        .import         popax
+        .import         popax, popptr1
         .importzp       sp, ptr1, ptr2, ptr3
 
 ; ----------------------------------------------------------------------
@@ -64,12 +64,11 @@ memcpy_getparams:               ; IMPORTANT! Function has to leave with Y=0!
         sta     ptr3
         stx     ptr3+1          ; save n to ptr3
 
-        jsr     popax
-        sta     ptr1
-        stx     ptr1+1          ; save src to ptr1
+        jsr     popptr1         ; save src to ptr1
 
                                 ; save dest to ptr2
-        ldy     #1              ; (direct stack access is three cycles faster
+        iny                     ; Y=0 guaranteed by popptr1, we need '1' here...                        
+                                ; (direct stack access is three cycles faster
                                 ; (total cycle count with return))
         lda     (sp),y
         tax
index 189ce8fa7a9f7df8f7d3d8f0affad61db0a9094d..8939163b1825d89a924a880086d081dd996d388e 100644 (file)
@@ -5,16 +5,14 @@
 ;
 
         .export         _strcmp
-        .import         popax
+        .import         popptr1
         .importzp       ptr1, ptr2
 
 _strcmp:
         sta     ptr2            ; Save s2
         stx     ptr2+1
-        jsr     popax           ; Get s1
-        sta     ptr1
-        stx     ptr1+1
-        ldy     #0
+        jsr     popptr1         ; Get s1
+        ;ldy     #0             ; Y=0 guaranteed by popptr1
 
 loop:   lda     (ptr1),y
         cmp     (ptr2),y
index 501d0b6256b29a9d52cb47dc5d1039d9462f4e48..384e78e3184582fcced22a1bd65ee5d7f237fab1 100644 (file)
@@ -6,7 +6,7 @@
 ;
 
         .export         _stricmp, _strcasecmp
-        .import         popax
+        .import         popptr1
         .import         __ctype
         .importzp       ptr1, ptr2, tmp1
 
@@ -16,10 +16,8 @@ _stricmp:
 _strcasecmp:
         sta     ptr2            ; Save s2
         stx     ptr2+1
-        jsr     popax           ; get s1
-        sta     ptr1
-        stx     ptr1+1
-        ldy     #0
+        jsr     popptr1         ; get s1
+        ; ldy     #0            ; Y=0 guaranteed by popptr1
 
 loop:   lda     (ptr2),y        ; get char from second string
         tax
index 457e39e2558b88aef1885a167f822760eb4a80aa..caa6804fc65a1969db35264fb94cad4306e2dc80 100644 (file)
@@ -6,7 +6,7 @@
 ;
 
         .export         _strncat
-        .import         popax
+        .import         popax, popptr1
         .importzp       ptr1, ptr2, ptr3, tmp1, tmp2
         .macpack        cpu
         
@@ -17,9 +17,7 @@ _strncat:
     eor #$FF
     sta tmp2
     
-    jsr popax       ; get src
-    sta ptr1
-    stx ptr1+1
+    jsr popptr1     ; get src
 
     jsr popax       ; get dest
     sta ptr3        ; remember for function return
index 1035e15b82f4d2172f919a4fa860f43f21e7321d..bff1f09110bd86c24cd824126bf7632ef62ca788 100644 (file)
@@ -5,7 +5,7 @@
 ;
 
         .export         _strncmp
-        .import         popax
+        .import         popax, popptr1
         .importzp       ptr1, ptr2, ptr3
 
 
@@ -28,13 +28,11 @@ _strncmp:
         jsr     popax           ; get s2
         sta     ptr2
         stx     ptr2+1
-        jsr     popax           ; get s1
-        sta     ptr1
-        stx     ptr1+1
+        jsr     popptr1         ; get s1
 
 ; Loop setup
 
-        ldy     #0
+        ;ldy     #0               Y=0 guaranteed by popptr1
 
 ; Start of compare loop. Check the counter.
 
index 042f9e28b625be52b1d4be99c3eaeead708aad57..e6cafd990c2942e7d6263ac0e3a125a841a1aeb2 100644 (file)
@@ -5,7 +5,7 @@
 ;
 
         .export         _strncpy
-        .import         popax
+        .import         popptr1
         .importzp       ptr1, ptr2, tmp1, tmp2, tmp3
 
 .proc   _strncpy
@@ -16,9 +16,7 @@
         eor     #$FF
         sta     tmp2            ; Store -size - 1
 
-        jsr     popax           ; get src
-        sta     ptr1
-        stx     ptr1+1
+        jsr     popptr1         ; get src
         jsr     popax           ; get dest
         sta     ptr2
         stx     ptr2+1
index b1f973e3a030788b5fa841bf5737f71c19e70c9f..6a5de09e47ea7cc7916f9b642bf425310ce8976c 100644 (file)
@@ -7,7 +7,7 @@
 ;
 
         .export         _strnicmp, _strncasecmp
-        .import         popax, __ctype
+        .import         popax, popptr1, __ctype
         .importzp       ptr1, ptr2, ptr3, tmp1
 
         .include        "ctype.inc"
@@ -32,13 +32,11 @@ _strncasecmp:
         jsr     popax           ; get s2
         sta     ptr2
         stx     ptr2+1
-        jsr     popax           ; get s1
-        sta     ptr1
-        stx     ptr1+1
+        jsr     popptr1         ; get s1
 
 ; Loop setup
 
-        ldy     #0
+        ; ldy     #0            Y=0 guaranteed by popptr1
 
 ; Start of compare loop. Check the counter.
 
index 5d1482913d73f0366f8707de12bb0b8e7c601b18..afe90ecabdca753e25b26ba77a3a921452814071 100644 (file)
@@ -5,17 +5,15 @@
 ;
 
         .export         _strpbrk
-        .import         popax, return0
+        .import         popax, popptr1, return0
         .importzp       ptr1, ptr2, tmp1, tmp2, tmp3
 
 _strpbrk:
         jsr     popax           ; get s2
         sta     ptr2
         stx     ptr2+1
-        jsr     popax           ; get s1
-        sta     ptr1
-        stx     ptr1+1
-        ldy     #$00
+        jsr     popptr1         ; get s1
+        ; ldy     #$00           Y=0 guaranteed by popptr1
 
 L1:     lda     (ptr1),y        ; get next char from s1
         beq     L9              ; jump if done
index 55e2def03e4f55cb143f5c30f6ef186008503fa8..84f633245f155965971a5fcd7aff39078e1907c8 100644 (file)
@@ -5,7 +5,7 @@
 ;
 
         .export         _strstr
-        .import         popax
+        .import         popptr1
         .importzp       ptr1, ptr2, ptr3, ptr4, tmp1
 
 _strstr:
@@ -13,13 +13,11 @@ _strstr:
         stx     ptr2+1
         sta     ptr4            ; Setup temp copy for later
 
-        jsr     popax           ; Get haystack
-        sta     ptr1
-        stx     ptr1+1          ; Save haystack
+        jsr     popptr1         ; Get haystack to ptr1
 
 ; If needle is empty, return haystack
 
-        ldy     #$00
+        ; ldy     #$00            Y=0 guaranteed by popptr1
         lda     (ptr2),y        ; Get first byte of needle
         beq     @Found          ; Needle is empty --> we're done
 
index 06eab44211968d6fe3b2ea3b910b37e0b24d6242..3a9ddf9d77dd4135a1e40adc22da0027ee7d59d1 100644 (file)
@@ -5,7 +5,7 @@
 ;
 
         .export         _vcprintf
-        .import         pushax, popax
+        .import         pushax, popax, popptr1
         .import         __printf, _cputc
         .importzp       sp, ptr1, ptr2, ptr3, tmp1
 
@@ -54,9 +54,7 @@ out:    jsr     popax           ; count
         eor     #$FF
         sta     outdesc+7
 
-        jsr     popax           ; buf
-        sta     ptr1
-        stx     ptr1+1
+        jsr     popptr1         ; buf
 
         jsr     popax           ; d
         sta     ptr3
index 9f044c728e1e13562f12e9dafca87d2aac47a634..07ab9e25a8d8b0cfeae294ae9465507b28df4e6a 100644 (file)
@@ -6,7 +6,7 @@
 
         .export         _DbgInit
         .export         _DbgSP, _DbgCS, _DbgHI
-        .import         popax, return0, _DbgEntry, _set_brk, _end_brk
+        .import         popptr1, return0, _DbgEntry, _set_brk, _end_brk
         .import         _DbgBreaks
         .import         _brk_pc
         .import         __ZP_START__            ; Linker generated
@@ -170,9 +170,7 @@ L12:    ldy     #1              ; Force != 0
         .export         _DbgIsBreak
 
 _DbgIsBreak:
-        jsr     popax           ; Get address
-        sta     ptr1
-        stx     ptr1+1
+        jsr     popptr1         ; Get address
         ldx     #0
 L20:    lda     _DbgBreaks+3,x  ; Get bk_use
         beq     L21             ; Jump if not set
index b757e6bd84058acdf5a93ef822f86c4fddfde827..e655f0ceccd13e526bd4d7f23988bf686303db17 100644 (file)
@@ -13,7 +13,7 @@
 FILEDES         = 3             ; first free to use file descriptor
 
             .importzp ptr1, ptr2, ptr3, tmp1
-            .import addysp, popax
+            .import addysp, popax, poptr1
             .import __oserror
             .import _FindFile, _ReadByte
             .export _open, _close, _read
@@ -37,9 +37,7 @@ _open:
 @parmok:
         jsr popax               ; Get flags
         sta tmp1
-        jsr popax               ; Get name
-        sta ptr1
-        stx ptr1+1
+        jsr popptr1             ; Get name
             
         lda filedesc            ; is there a file already open?
         bne @alreadyopen
index 14977dee0ade1b7b20be7f657e7d699b1af30a7e..98db6a96439f03e1ec1818eb1f22b55e8029fe3d 100644 (file)
@@ -17,7 +17,7 @@
         .export         _memcpy
         .export         memcpy_increment, memcpy_transfer, memcpy_getparams
 
-        .import         incsp2, popax
+        .import         incsp2, popax, popptr1
         .importzp       sp, ptr1, ptr2, ptr3
 
 
@@ -81,13 +81,11 @@ memcpy_getparams:
         jsr     incsp2                  ; drop src address
         jmp     popax                   ; get pointer; return it as result
 
-@L1:    jsr     popax
-        sta     ptr1
-        stx     ptr1+1                  ; save src
+@L1:    jsr     popptr1                 ; save src
 
 ; (Direct stack access is six cycles faster [total cycle count].)
 
-        ldy     #1                      ; save dest
+        iny                             ; (Y=0 by popptr1, need '1' here) save dest
         lda     (sp),y                  ; get high byte
         tax
         lda     (sp)                    ; get low byte
diff --git a/libsrc/runtime/popptr1.s b/libsrc/runtime/popptr1.s
new file mode 100644 (file)
index 0000000..64da308
--- /dev/null
@@ -0,0 +1,29 @@
+;
+; Christian Kruger, 20-May-2018
+;
+; CC65 runtime: Pop registers on stack to ptr1 or ptr2 and ptr1.
+; X is untouched, low byte in A, Y is defined to be 0!
+
+        .export         popptr1
+        .import                incsp2
+        .importzp       sp, ptr1
+
+               .macpack cpu
+
+.proc  popptr1                                 ; 14 bytes, 
+
+        ldy     #1
+        lda     (sp),y          ; get hi byte
+        sta            ptr+1           ; into ptr hi
+        dey                                            ; note: apply even for 65C02 to have Y=0 at exit! 
+.if (.cpu .bitand ::CPU_ISET_65SC02)
+        lda     (sp)            ; get lo byte
+.else
+        lda     (sp),y          ; get lo byte
+.endif
+               sta             ptr1                    ; to ptr lo
+
+               jmp             incsp2
+.endproc
+
+
index b85725050e1a87e5feb8c3a76350eabcd1b2ef9b..9686e5c352e7f8f573028986f8aa416d0edd7358 100644 (file)
@@ -6,7 +6,7 @@
 
 
         .export         steaxspidx
-        .import         popax
+        .import         popptr1
         .importzp       sreg, ptr1, tmp1, tmp2, tmp3
 
 
@@ -15,9 +15,7 @@
         sta     tmp1
         stx     tmp2
         sty     tmp3
-        jsr     popax           ; get the pointer
-        sta     ptr1
-        stx     ptr1+1
+        jsr     popptr1          ; get the pointer
         ldy     tmp3
         lda     tmp1
         sta     (ptr1),y
index 8c2bc08f7e6b26f973f41327b76f55739dc26767..30eac9532e61bc6a4b76aea2b36357cb465a2f94 100644 (file)
@@ -2,7 +2,7 @@
 ; jede jede@oric.org 2017-01-22
 
         .export         _write
-        .import         popax
+        .import         popax, popptr1
         .importzp       ptr1, ptr2, ptr3, tmp1
 
         .include        "telestrat.inc"
@@ -19,9 +19,7 @@
         eor     #$FF
         sta     ptr2+1          ; Remember -count-1
 
-        jsr     popax           ; get buf
-        sta     ptr1
-        stx     ptr1+1
+        jsr     popptr1         ; get buf
         jsr     popax           ; get fd and discard
 
         ; if fd=0001 then it stdout
index 476f9d7a4eb4ea5f5e242310f9e8f6ee9659c560..0e424c1f00f4430c610e253ddec7c96712602319 100644 (file)
@@ -8,7 +8,7 @@
         .include        "tgi-kernel.inc"
 
         .importzp       ptr1, ptr2, ptr3, ptr4
-        .import         popax
+        .import         popax, popptr1
 
 
 .proc   _tgi_bar
@@ -24,9 +24,7 @@
         sta     ptr2            ; Y1
         stx     ptr2+1
 
-        jsr     popax
-        sta     ptr1            ; X1
-        stx     ptr1+1
+        jsr     popptr1         ; X1
 
 ; Make sure X1 is less than X2. Swap both if not.
 
index 55b259dab8921c868d2cc4071c95c0c311dc0a6c..40655d413cdfb28e91de72b3039d2deebf888724 100644 (file)
@@ -6,17 +6,14 @@
 
         .include        "tgi-kernel.inc"
 
-        .import         popax
+        .import         popptr1
         .importzp       ptr1, ptr2
 
 .proc   tgi_popxy
 
         sta     ptr2            ; Y
         stx     ptr2+1
-        jsr     popax
-        sta     ptr1            ; X
-        stx     ptr1+1
-        rts
+        jmp     popptr1                        ; X
 
 .endproc
 
index e54e25e776ce55ff9a87895296f48547232dd07e..ccfe2f167a5547ad1616dbaeeb12d0644c678c16 100644 (file)
@@ -7,7 +7,7 @@
 
         .export _adler32
 
-        .import         incsp2, incsp4, popax, popeax
+        .import         incsp2, incsp4, popptr1, popeax
         .importzp       sreg, ptr1, ptr2, tmp1
 
 BASE    =       65521   ; largest prime smaller than 65536
@@ -20,9 +20,7 @@ _adler32:
 @L1:    sta     ptr2
         stx     ptr2+1
 ; ptr1 = buf
-        jsr     popax
-        sta     ptr1
-        stx     ptr1+1
+        jsr     popptr1
 ; if (buf == NULL) return 1L;
         ora     ptr1+1
         beq     @L0
index 26955dbed7257ce57da047210827bdd4b0f44e86..7f06dd383ace428e1b715c1fd65eb216c07ea8f4 100644 (file)
@@ -7,7 +7,7 @@
 
         .export _crc32
 
-        .import         compleax, incsp2, incsp4, popax, popeax
+        .import         compleax, incsp2, incsp4, popptr1, popeax
         .importzp       sreg, ptr1, ptr2, tmp1, tmp2
 
 POLYNOMIAL      =       $EDB88320
@@ -67,9 +67,7 @@ _crc32:
 @L1:    sta     ptr2
         stx     ptr2+1
 ; ptr1 = buf
-        jsr     popax
-        sta     ptr1
-        stx     ptr1+1
+        jsr     popptr1
 ; if (buf == NULL) return 0;
         ora     ptr1+1
         beq     @L0