SweetCX16
SweetCX16
My attempt to modify your source for cc65.
Yes, I know I should FORK your repo and push an update to it and do a merge request... blah blah blah. My brain is reeling from even considering trying this out in the first place. Excuses excuses.
I've probably broken it too. I'll load it and try to poke at it (no pun intended) with the debugger and see what I can try to do.
SweetCX16.s
SWEETCX16.PRG
build
SweetCX16
Okay I will start with a SET. It looks like R1 is safe for this, so I can do SET R1, and let's see, let's give it the value $1541.
I'll use your binary, which loads to $4000, and I'll make sure to load in the data before I load the binary too.
And I'll put the "program" in $0700.
I think that would look something like this:
$0700: $11 ; SET R1
$0701: $41
$0702: $15
$0703: $00 ; RTN
$0704: $02 ; 6502 BRK
Then I poke $00 $07 into R15:
$0020: $00
$0021: $07
Then sys $4000.
Then peek $02 and $03 and hope that $41 and $15 are there?
![Screen Shot 2022-01-04 at 12.42.01 PM.png](<fileStore.core_Attachment>/monthly_2022_01/1854632271_ScreenShot2022-01-04at12_42_01PM.thumb.png.58455c880ace1285799634246ddfd440.png)
SweetCX16
On 1/4/2022 at 12:40 AM, rje said:
SweetCX16.asm line 72 should be $0400, not $04000, yes?
Yes. That looks like a regression. Back then, I was primarily developing in VICE emulating a 65C02 in a C64, so the $CC00 branch saw more testing.
SweetCX16
So I was looking at the opcode set for SWEET16, and reading the descriptions, and thinking about SUB versus CPR.
SUB does a twos-complement add. CPR does a binary subtract. The code in fact overlaps significantly:
***
SUB: LDY $0 ;RESULT TO R0
CPR: SEC ;NOTE Y REG = 13*2 FOR CPR
LDA R0L
SBC R0L,X
STA R0L,Y ;R0-RX TO RY
LDA R0H
SBC R0H,X
SUB2: STA R0H,Y
TYA ;LAST RESULT REG*2
ADC $0 ;CARRY TO LSB
STA R14H
RTS
***
So my question is this: maybe I can free up an opcode slot by not having SUB? Especially if CPR puts its result in R13, and is therefore accessible as a difference value.
Haven't thought it through fully, but it seems that the two values are related enough. Of course perhaps Woz did this because there wasn't another op that he wanted badly enough to get rid of SUB?
-
- Posts: 508
- Joined: Sat Jul 11, 2020 3:30 pm
SweetCX16
On 1/6/2022 at 7:20 PM, rje said:
So I was looking at the opcode set for SWEET16, and reading the descriptions, and thinking about SUB versus CPR.
SUB does a twos-complement add. CPR does a binary subtract. The code in fact overlaps significantly:
***
SUB: LDY $0 ;RESULT TO R0
CPR: SEC ;NOTE Y REG = 13*2 FOR CPR
LDA R0L
SBC R0L,X
STA R0L,Y ;R0-RX TO RY
LDA R0H
SBC R0H,X
SUB2: STA R0H,Y
TYA ;LAST RESULT REG*2
ADC $0 ;CARRY TO LSB
STA R14H
RTS
***
So my question is this: maybe I can free up an opcode slot by not having SUB? Especially if CPR puts its result in R13, and is therefore accessible as a difference value.
Haven't thought it through fully, but it seems that the two values are related enough. Of course perhaps Woz did this because there wasn't another op that he wanted badly enough to get rid of SUB?
No, there's a transcription error there. SUB: LDX $0
SUB is used if you want to subtract the register pointed to by Y from R0. CPR can be used to subtract a register pointed to by Y from a register pointed to by X. One would be using R0 as the minuend often enough that it's worthwhile to keep those two bytes there.
SweetCX16
On 1/8/2022 at 1:24 AM, Ed Minchau said:
No, there's a transcription error there. SUB: LDX $0
Wait wait, this is an error? This is the "source" of the source. It's wrong?
http://www.6502.org/source/interpreters/sweet16.htm#Sweet_Sixteen_Source_sheldon
Ahhh, it IS a transcription error!
The original was LDY #$0. Wow!
And here's Woz' article in Byte magazine... the source of that page on 6502.org. The LDY $#0 is on page 152, about halfway down.
https://archive.org/details/BYTE_Vol_02-11_1977-11_Sweet_16/page/n153/mode/1up
This listing has that line correct. But, I suppose I have to check the remaining lines for errors!
http://www.easy68k.com/paulrsm/6502/SW16RB.TXT
-
- Posts: 508
- Joined: Sat Jul 11, 2020 3:30 pm
SweetCX16
On 1/8/2022 at 6:19 PM, rje said:
Wait wait, this is an error? This is the "source" of the source. It's wrong?
http://www.6502.org/source/interpreters/sweet16.htm#Sweet_Sixteen_Source_sheldon
Ahhh, it IS a transcription error!
The original was LDY #$0. Wow!
And here's Woz' article in Byte magazine... the source of that page on 6502.org. The LDY $#0 is on page 152, about halfway down.
https://archive.org/details/BYTE_Vol_02-11_1977-11_Sweet_16/page/n153/mode/1up
This listing has that line correct. But, I suppose I have to check the remaining lines for errors!
http://www.easy68k.com/paulrsm/6502/SW16RB.TXT
Well now I don't know. I was looking at the Sweet16.s linked on Tuesday. Guess I'm going to have to look through everything now too.