From 1bf5b4380d4a3f526d5b0a4dbbc78d3449efbc1a Mon Sep 17 00:00:00 2001
From: Oliver Schmidt
Date: Wed, 13 Nov 2013 23:32:49 +0100
Subject: [PATCH] Saved six more bytes ;-)
---
cpu/6502/net/cs8900a.S | 74 ++++++++++++++++++++++--------------------
1 file changed, 38 insertions(+), 36 deletions(-)
diff --git a/cpu/6502/net/cs8900a.S b/cpu/6502/net/cs8900a.S
index 095909dd6..fc4d5d1ca 100644
--- a/cpu/6502/net/cs8900a.S
+++ b/cpu/6502/net/cs8900a.S
@@ -73,8 +73,6 @@ fixup: .byte fixup02-fixup01, fixup03-fixup02, fixup04-fixup03
.byte fixup14-fixup13, fixup15-fixup14, fixup16-fixup15
.byte fixup17-fixup16, fixup18-fixup17, fixup19-fixup18
.byte fixup20-fixup19, fixup21-fixup20, fixup22-fixup21
- .byte fixup23-fixup22, fixup24-fixup23, fixup25-fixup24
- .byte fixup26-fixup25
fixups = * - fixup
@@ -112,7 +110,7 @@ init:
lda reg+1
sta (ptr),y
dey
-
+
; Advance to next fixup location
inx
cpx #fixups
@@ -136,11 +134,10 @@ fixup02:sta isq+1
; Accept valid unicast + broadcast frames
; PACKETPP = $0104, PPDATA = $0D05
lda #$04
- jsr packetpp_01
+ jsr packetpp_a1
lda #$05
ldx #$0D
-fixup03:sta ppdata
-fixup04:stx ppdata+1
+ jsr ppdata_ax
; Set MAC address
; PACKETPP = $0158, PPDATA = MAC[0], MAC[1]
@@ -148,11 +145,10 @@ fixup04:stx ppdata+1
; PACKETPP = $015C, PPDATA = MAC[4], MAC[5]
ldy #$58
: tya
- jsr packetpp_01
+ jsr packetpp_a1
lda mac-$58,y
ldx mac-$58+1,y
-fixup05:sta ppdata
-fixup06:stx ppdata+1
+ jsr ppdata_ax
iny
iny
cpy #$58+6
@@ -161,11 +157,10 @@ fixup06:stx ppdata+1
; Turn on transmission and reception of frames
; PACKETPP = $0112, PPDATA = $00D3
lda #$12
- jsr packetpp_01
+ jsr packetpp_a1
lda #$D3
ldx #$00
-fixup07:sta ppdata
-fixup08:stx ppdata+1
+ jsr ppdata_ax
rts
;---------------------------------------------------------------------
@@ -175,11 +170,11 @@ poll:
; are any valid unicast frames avaliable
; PACKETPP = $0124, PPDATA & $0D00 ?
lda #$24
- jsr packetpp_01
-fixup09:lda ppdata+1
+ jsr packetpp_a1
+fixup03:lda ppdata+1
and #$0D
bne :+
-
+
; No frame ready
tax
rts
@@ -190,13 +185,13 @@ fixup09:lda ppdata+1
; Read receiver event and discard it
; RXTXREG
:
-fixup10:ldx rxtxreg+1
-fixup11:lda rxtxreg
-
+fixup04:ldx rxtxreg+1
+fixup05:lda rxtxreg
+
; Read frame length
; cnt = len = RXTXREG
-fixup12:ldx rxtxreg+1
-fixup13:lda rxtxreg
+fixup06:ldx rxtxreg+1
+fixup07:lda rxtxreg
sta len
stx len+1
sta cnt
@@ -223,10 +218,10 @@ fixup13:lda rxtxreg
; Read bytes into buffer
: jsr adjustptr
:
-fixup14:lda rxtxreg
+fixup08:lda rxtxreg
sta (ptr),y
iny
-fixup15:lda rxtxreg+1
+fixup09:lda rxtxreg+1
sta (ptr),y
iny
bne :-
@@ -249,12 +244,12 @@ send:
; Transmit command
lda #$C9
ldx #$00
-fixup16:sta txcmd
-fixup17:stx txcmd+1
+fixup10:sta txcmd
+fixup11:stx txcmd+1
lda cnt
ldx cnt+1
-fixup18:sta txlen
-fixup19:stx txlen+1
+fixup12:sta txlen
+fixup13:stx txlen+1
; Adjust odd frame length
jsr adjustcnt
@@ -265,8 +260,8 @@ fixup19:stx txlen+1
; Check for avaliable buffer space
; PACKETPP = $0138, PPDATA & $0100 ?
: lda #$38
- jsr packetpp_01
-fixup20:lda ppdata+1
+ jsr packetpp_a1
+fixup14:lda ppdata+1
and #$01
bne :+
@@ -284,10 +279,10 @@ fixup20:lda ppdata+1
; Write bytes from buffer
: jsr adjustptr
: lda (ptr),y
-fixup21:sta rxtxreg
+fixup15:sta rxtxreg
iny
lda (ptr),y
-fixup22:sta rxtxreg+1
+fixup16:sta rxtxreg+1
iny
bne :-
inc ptr+1
@@ -302,10 +297,17 @@ exit:
;---------------------------------------------------------------------
-packetpp_01:
+packetpp_a1:
ldx #$01
-fixup23:sta packetpp
-fixup24:stx packetpp+1
+fixup17:sta packetpp
+fixup18:stx packetpp+1
+ rts
+
+;---------------------------------------------------------------------
+
+ppdata_ax:
+fixup19:sta ppdata
+fixup20:stx ppdata+1
rts
;---------------------------------------------------------------------
@@ -313,10 +315,10 @@ fixup24:stx packetpp+1
skipframe:
; PACKETPP = $0102, PPDATA = PPDATA | $0040
lda #$02
- jsr packetpp_01
-fixup25:lda ppdata
+ jsr packetpp_a1
+fixup21:lda ppdata
ora #$40
-fixup26:sta ppdata
+fixup22:sta ppdata
rts
;---------------------------------------------------------------------