diff options
| author | B. Watson <urchlay@slackware.uk> | 2026-04-06 07:28:16 -0400 |
|---|---|---|
| committer | B. Watson <urchlay@slackware.uk> | 2026-04-06 07:28:34 -0400 |
| commit | 2953b35cea6515a5de73bba798583bbb4146bdce (patch) | |
| tree | d11deb8703bb0fc425ef48e5de0811d620dba12a /src/txbuf.s | |
| parent | a17902373dc3fd2f06f0796ed2621109cb4acdd3 (diff) | |
| download | fujinet-chat-2953b35cea6515a5de73bba798583bbb4146bdce.tar.gz | |
Rewrite txbuf_append_chr() in asm. 6795 bytes free.
Diffstat (limited to 'src/txbuf.s')
| -rw-r--r-- | src/txbuf.s | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/txbuf.s b/src/txbuf.s new file mode 100644 index 0000000..4783660 --- /dev/null +++ b/src/txbuf.s @@ -0,0 +1,29 @@ +;; void txbuf_append_chr(char c) { +;; tx_buf[txbuflen++] = c; +;; } + +; compiles to 45 bytes. routine below is 29 bytes (~33% smaller) + + tx_buf = $a200 ; MUST agree with src/rxtxbuf.h! + + .import _txbuflen + .export _txbuf_append_chr + .importzp sreg ; avoid ptr1 & friends, callers may use + +_txbuf_append_chr: + tax + lda #<tx_buf + clc + adc _txbuflen + sta sreg + lda #>tx_buf + adc _txbuflen+1 + sta sreg+1 + ldy #0 + txa + sta (sreg),y + inc _txbuflen + bne @ret + inc _txbuflen+1 +@ret: + rts |
